Схема на Хорнер за полиноми
Полиномите обикновено се записват във вида
$f(x)=\sum_{k=0}^{n} a_k x^k$
или, член по член,
$f(x)=a_0+a_1x+a_2x^2+\dots+a_nx^n,$
където реалните числа $a_0, a_1, \dots, a_n$ са коефициентите на полинома, а $x$ е променливата.
Когато ${a_n\ne 0},$ казваме, че полиномът е от $n$-та степен, т.е. ${\deg f(x)=n},$ където $n$ е най-високата степен на променливата.
Калкулатор по схемата на Хорнер
Въведете многочлен и делител от вида $x - a$ или $mx + n$: калкулаторът дели по схемата на Хорнер, показва таблицата и всяка стъпка и намира частното, остатъка и стойността на многочлена при $x = a$. При друг делител калкулаторът дели многочлените по обикновения начин. За разлагане на многочлен на множители по схемата на Хорнер използвайте калкулатора за разлагане на множители.
Частно и остатък
Решение стъпка по стъпка
Примери: $(x^4 + 3x^3 + 5x^2 + 7x + 9) : (x - 2)$ $(x^3 - 6x^2 + 11x - 6) : (x - 1)$ $(5x^4 - 2x^3 + 4x^2 - 6x - 7) : (x - 3)$ $(-2x^5 + 3x^4 + x^2 - 4x + 1) : (x + 2)$ $(3x^3 - 5x^2 + 2x + 3) : (2x - 1)$
Как работи схемата на Хорнер
Схемата на Хорнер (наричана още правило на Хорнер или метод на Хорнер) е алгоритъм, който улеснява намирането на стойността на полинома $f(x)$ при дадено ${x=x_0}.$ Полиномът се записва като верига от вложени един в друг изрази от първа степен. За всеки от тях са нужни най-много едно умножение и едно събиране, а резултатът от всяка стъпка се използва в следващата. Със същите пресмятания полиномът се дели на ${x-x_0},$ затова в англоезичната литература методът се нарича и синтетично деление.
За да обясним това, нека запишем стойността на полинома при $x_0$ в общия му вид:
$f(x_0)=a_0+a_1x_0+a_2x_0^2+\dots+a_nx_0^n$
Като изнасяме последователно $x_0$ пред скоби, получаваме записа
$f(x_0)=a_0+x_0(a_1+x_0(a_2+x_0(a_3+\dots+{x_0(a_{n-1}+a_nx_0)\dots)))}$
Алгоритъмът пресмята изразите в скобите един по един, като започва от най-вътрешните скоби и продължава към външните.
Стъпките са следните:
- Полагаме ${k=n}.$
- Полагаме ${b_k=a_k}.$
- Пресмятаме ${b_{k-1}=a_{k-1}+x_0b_k}.$
- Намаляваме $k$ с $1.$
- Ако ${k\ge 1},$ връщаме се към стъпка 3; в противен случай спираме.
Последното получено число е стойността на полинома: ${b_0=f(x_0)}.$
Да вземем например полином от пета степен:
$f(x)=a_0+a_1x+a_2x^2+a_3x^3+a_4x^4+a_5x^5$
Стойността му при ${x=x_0}$ намираме, като го преобразуваме във вида
$f(x_0)=a_0+x_0(a_1+x_0(a_2+x_0(a_3+{x_0(a_4+a_5x_0))))}$
Стъпките на алгоритъма могат да се запишат в таблица:
| $k$ | $b_k$ |
|---|---|
| $5$ | ${b_5=a_5}$ |
| $4$ | ${b_4=a_4+x_0b_5}$ |
| $3$ | ${b_3=a_3+x_0b_4}$ |
| $2$ | ${b_2=a_2+x_0b_3}$ |
| $1$ | ${b_1=a_1+x_0b_2}$ |
| $0$ | ${b_0=a_0+x_0b_1}$ |
Пример. Намерете стойността на полинома ${f(x)=x^4+3x^3+5x^2+7x+9}$ при ${x=2}.$
Решение. Полиномът е от четвърта степен, затова ${n=4}.$ Тук ${x_0=2},$ а коефициентите са ${a_4=1},$ ${a_3=3},$ ${a_2=5},$ ${a_1=7}$ и ${a_0=9}.$
| $k$ | Стъпка | Резултат |
|---|---|---|
| $4$ | ${b_4=1}$ | $1$ |
| $3$ | ${b_3=3+2\cdot 1}$ | $5$ |
| $2$ | ${b_2=5+2\cdot 5}$ | $15$ |
| $1$ | ${b_1=7+2\cdot 15}$ | $37$ |
| $0$ | ${b_0=9+2\cdot 37}$ | $83$ |
Следователно ${f(2)=83}.$
Схемата на Хорнер като таблица
На практика се записват само числата, в таблица с три реда. Тази таблица също се нарича схема на Хорнер. В първия ред са коефициентите на полинома, вляво стои числото $x_0,$ а третият ред се попълва отляво надясно:
$\begin{array}{c|cccc|c} & a_n & a_{n-1} & \cdots & a_1 & a_0 \\ x_0 & & x_0b_n & \cdots & x_0b_2 & x_0b_1 \\ \hline & b_n & b_{n-1} & \cdots & b_1 & b_0\end{array}$
- В първия ред записваме коефициентите по намаляващите степени на $x.$ Ако някоя степен липсва, на нейното място пишем $0.$
- Преписваме първия коефициент в третия ред: ${b_n=a_n}.$
- Умножаваме току-що записаното число по $x_0$ и пишем произведението във втория ред на следващата колона.
- Събираме двете числа в тази колона и записваме сбора под тях, в третия ред.
- Повтаряме стъпки 3 и 4, докато попълним и последната колона.
За полинома ${x^4+3x^3+5x^2+7x+9}$ и ${x_0=2}$ от примера по-горе схемата изглежда така:
$\begin{array}{r|rrrr|r} & 1 & 3 & 5 & 7 & 9 \\ 2 & & 2 & 10 & 30 & 74 \\ \hline & 1 & 5 & 15 & 37 & 83\end{array}$
Последното число в третия ред е стойността на полинома: ${f(2)=83}.$
Деление на полином на двучлен от първа степен
Третият ред на схемата дава не само стойността $f(x_0).$
Нека $b_n, b_{n-1}, \dots, b_1, b_0$ са числата, които схемата на Хорнер дава за полинома $f(x)$ и числото $x_0.$ Тогава
$$f(x)=(x-x_0)\,q(x)+b_0,$$където $q(x)=b_nx^{n-1}+b_{n-1}x^{n-2}+\dots+b_2x+b_1.$
С други думи, $b_n, b_{n-1}, \dots, b_1$ са коефициентите на частното при делението на $f(x)$ на ${x-x_0},$ а последното число $b_0$ е остатъкът.
За проверка разкриваме скобите в дясната страна. Коефициентът пред $x^n$ е ${b_n=a_n},$ а коефициентът пред всяка по-ниска степен $x^k$ е ${b_k-x_0b_{k+1}},$ което е равно на $a_k,$ защото ${b_k=a_k+x_0b_{k+1}}.$
Ако в равенството положим ${x=x_0},$ отново получаваме ${f(x_0)=b_0}.$ Това е теоремата на Безу: остатъкът при деление на полинома $f(x)$ на ${x-x_0}$ е равен на $f(x_0).$
В примера по-горе третият ред е $1,$ $5,$ $15,$ $37$ и $83,$ затова частното е ${x^3+5x^2+15x+37},$ а остатъкът е $83$:
${x^4+3x^3+5x^2+7x+9}={(x-2)(x^3+5x^2+15x+37)}+83$
Пример. Разделете ${f(x)=2x^4-3x^2+5x-7}$ на ${x+2}.$
Решение. Тъй като ${x+2=x-(-2)},$ имаме ${x_0=-2}.$ В полинома няма член с $x^3,$ затова коефициентът пред $x^3$ е $0$ и първият ред е $2,$ $0,$ $-3,$ $5,$ $-7.$
$\begin{array}{r|rrrr|r} & 2 & 0 & -3 & 5 & -7 \\ -2 & & -4 & 8 & -10 & 10 \\ \hline & 2 & -4 & 5 & -5 & 3\end{array}$
Частното е ${2x^3-4x^2+5x-5},$ а остатъкът е $3$:
${2x^4-3x^2+5x-7}={(x+2)(2x^3-4x^2+5x-5)}+3$
Проверка с теоремата на Безу: ${f(-2)}={2\cdot 16-3\cdot 4+5\cdot(-2)-7}={32-12-10-7}={3}.$
Корени и разлагане на множители
Ако остатъкът $b_0$ е $0,$ то ${f(x_0)=0}.$ Числото $x_0$ е корен на полинома и полиномът се дели на ${x-x_0}$ без остатък:
$f(x)=(x-x_0)\,q(x)$
Затова схемата на Хорнер е удобна при разлагане на множители. Ако полином с цели коефициенти има цял корен, този корен е делител на свободния член $a_0.$ Проверяваме делителите на $a_0$ един по един, а схемата на Хорнер всеки път показва дали числото е корен и веднага дава частното. Ако последното число в третия ред не е $0,$ числото не е корен и проверяваме следващия делител.
Пример. Разложете на множители полинома ${x^3-6x^2+11x-6}.$
Решение. Делителите на свободния член са $\pm 1,$ $\pm 2,$ $\pm 3$ и $\pm 6.$ Започваме с ${x_0=1}$:
$\begin{array}{r|rrr|r} & 1 & -6 & 11 & -6 \\ 1 & & 1 & -5 & 6 \\ \hline & 1 & -5 & 6 & 0\end{array}$
Остатъкът е $0,$ значи $1$ е корен и ${x^3-6x^2+11x-6}={(x-1)(x^2-5x+6)}.$ Продължаваме с частното ${x^2-5x+6}$ и ${x_0=2}$:
$\begin{array}{r|rr|r} & 1 & -5 & 6 \\ 2 & & 2 & -6 \\ \hline & 1 & -3 & 0\end{array}$
Остатъкът отново е $0,$ затова ${x^2-5x+6}={(x-2)(x-3)}.$ Следователно
${x^3-6x^2+11x-6}={(x-1)(x-2)(x-3)}$
Рационалните корени се търсят по същия начин: ако несъкратимата дроб $\frac{p}{q}$ е корен на полином с цели коефициенти, то $p$ дели $a_0,$ а $q$ дели старшия коефициент $a_n.$
Повече за целите и рационалните корени има в урока Уравнения от по-висока степен.
Делител от вида mx + n
Със схемата на Хорнер можем да делим и на всеки полином от първа степен ${mx+n}.$ Коренът му е ${x_0=-\frac{n}{m}}$ и ${mx+n=m(x-x_0)},$ затова
$f(x)={(x-x_0)\,q(x)+b_0}={(mx+n)\cdot\frac{q(x)}{m}+b_0}$
Попълваме схемата за $x_0$ и след това делим коефициентите на частното на $m.$ Остатъкът не се променя.
Пример. Разделете ${3x^3-5x^2+2x+3}$ на ${2x-1}.$
Решение. Коренът на делителя е ${x_0=\frac12}.$
$\def\arraystretch{2.3}\begin{array}{r|rrr|r} & 3 & -5 & 2 & 3 \\ \dfrac12 & & \dfrac32 & -\dfrac74 & \dfrac18 \\ \hline & 3 & -\dfrac72 & \dfrac14 & \dfrac{25}{8}\end{array}$
При деление на ${x-\frac12}$ частното е ${3x^2-\frac72x+\frac14},$ а остатъкът е $\frac{25}{8}.$ Делим коефициентите на частното на $2$:
${3x^3-5x^2+2x+3}={(2x-1)\left(\frac32x^2-\frac74x+\frac18\right)}+\frac{25}{8}$
Когато делителят е от втора или по-висока степен, прилагаме общия алгоритъм за деление на полиноми.
Защо да използваме схемата на Хорнер?
Обикновено намираме стойността на полином, като заместим променливата с даденото число и извършим пресмятанията. За целта можем да използваме или да напишем компютърна програма, а това става необходимо, когато работим със сложни полиноми от висока степен.
Начинът, по който компютърът решава една задача, зависи главно от това как вие като програмист му я описвате. Програмата може да пресмята стойността на полинома чрез директно заместване или по схемата на Хорнер. Единствената разлика между двата подхода е скоростта, с която компютърът стига до отговора.
Предимството на схемата на Хорнер е, че намалява броя на умноженията. При директно заместване, ако всяка степен се пресмята отначало, за члена $a_kx^k$ са нужни $k$ умножения, затова за полином от степен $n$ те са общо ${1+2+\dots+n}={\frac{n(n+1)}{2}}.$ Схемата на Хорнер изисква само $n$ умножения и $n$ събирания. За полином от десета степен това са $10$ умножения вместо $55.$ И при двата начина събиранията са $n,$ така че цялата икономия е в умноженията и при полиноми от висока степен програма, която използва схемата на Хорнер, работи значително по-бързо.
Упражнения
Решете задачите със схемата на Хорнер и след това отворете отговорите. Всяка стъпка можете да проверите и с калкулатора по-горе.
1. Намерете $f(3)$ за полинома ${f(x)=2x^3-5x^2+x-7}.$
$\begin{array}{r|rrr|r} & 2 & -5 & 1 & -7 \\ 3 & & 6 & 3 & 12 \\ \hline & 2 & 1 & 4 & 5\end{array}$
${f(3)=5}.$
2. Разделете ${x^4-2x^3+4x-5}$ на ${x-1}.$
Няма член с $x^2,$ затова първият ред е $1,$ $-2,$ $0,$ $4,$ $-5.$
$\begin{array}{r|rrrr|r} & 1 & -2 & 0 & 4 & -5 \\ 1 & & 1 & -1 & -1 & 3 \\ \hline & 1 & -1 & -1 & 3 & -2\end{array}$
Частното е ${x^3-x^2-x+3},$ а остатъкът е $-2.$
3. Намерете остатъка при делението на ${f(x)=x^5-3x^2+2}$ на ${x+1}.$
Тук ${x_0=-1},$ а първият ред е $1,$ $0,$ $0,$ $-3,$ $0,$ $2.$
$\begin{array}{r|rrrrr|r} & 1 & 0 & 0 & -3 & 0 & 2 \\ -1 & & -1 & 1 & -1 & 4 & -4 \\ \hline & 1 & -1 & 1 & -4 & 4 & -2\end{array}$
Остатъкът е $-2.$ Проверка: ${f(-1)}={-1-3+2}={-2}.$
4. Докажете, че $-2$ е корен на ${3x^3+7x^2-4},$ и разложете полинома на множители.
Няма член с $x,$ затова първият ред е $3,$ $7,$ $0,$ $-4.$
$\begin{array}{r|rrr|r} & 3 & 7 & 0 & -4 \\ -2 & & -6 & -2 & 4 \\ \hline & 3 & 1 & -2 & 0\end{array}$
Остатъкът е $0,$ значи $-2$ е корен и ${3x^3+7x^2-4}={(x+2)(3x^2+x-2)}.$ Корените на ${3x^2+x-2}$ са $-1$ и $\frac23,$ затова ${3x^3+7x^2-4}={(x+2)(x+1)(3x-2)}.$
5. Разделете ${4x^3-3x+5}$ на ${2x+1}.$
Тук ${x_0=-\frac12},$ а първият ред е $4,$ $0,$ $-3,$ $5.$
$\def\arraystretch{2.3}\begin{array}{r|rrr|r} & 4 & 0 & -3 & 5 \\ -\dfrac12 & & -2 & 1 & 1 \\ \hline & 4 & -2 & -2 & 6\end{array}$
При деление на ${x+\frac12}$ частното е ${4x^2-2x-2},$ а остатъкът е $6.$ Като разделим коефициентите на частното на $2,$ получаваме ${4x^3-3x+5}={(2x+1)(2x^2-x-1)}+6.$

Меню
Деление на полиноми