Loading [MathJax]/jax/output/SVG/jax.js

Алгоритм Горнера

Для того чтобы понять принцип работы алгоритма (который также называют «схемой Горнера» или «методом Горнера»), разберемся, что с его помощью можно делать, откуда берется этот алгоритм, как именно и почему он работает.

    Алгоритм Горнера помогает решать две алгебраические задачи:

  1. Решение уравнений высших степеней;
  2. Работа с многочленами.

Все это можно делать и без использования алгоритма, однако его преимущество заключается в скорости.

Выведем схему Горнера

Пусть нам нужно найти корни многочлена P(x), то есть решить уравнение P(x)=0. P(x) представим в виде: ni=0aixi=anxn+an1xn1++ a1x+a0. Решение может осуществляться методами, которые используют производные (если нам нужно найти только действительные корни), а также любыми итерационными способами. Последний требует многократного вычисления значений многочлена.

По следствию из теоремы Безу, многочлен P(x) можно представить в виде: P(x)=(xx0)Q(x)+R(x), где Q(x)  результат деления P(x) на (xx0), R(x)  остаток от этого деления. Обозначим Q(x) как bn1xn1+bn2xn2++b0. Перепишем наш многочлен: anxn+an1xn1++a1x+a0P(x)(xx0)(bn1xn1+bn2xn2++b0)Q(x)+R(x). Для того чтобы вычислить значения многочлена, нам необходимо при заданном x=x0 найти степени xk0, (k=¯1,n), результаты умножить на коэффициенты (bn1,bn2,,b0), а получившееся сложить. Однако, чтобы ускорить процесс и вдвое сократить количество умножений, можно воспользоваться алгоритмом Горнера. Выведем его.

Алгоритм берет свое начало из теоремы Безу, которая звучит так: если многочлен P(x) разделить на двучлен (xx0), то остаток от этого деления будет равен значению P(x) на элементе x0, т.е. (остаток)R(x)=P(x0).

В тождестве (1) умножим (xx0) на Q(x). Получаем anxn+an1xn1++a1x+a0bn1xn+bn2xn1++b0xx0bn1xn1x0bn2xn2x0b0+R(x). Теперь приравняем коэффициенты при одинаковых степенях x: bn1=an; bn2=an1+x0bn1; ; R(x)=a0+x0b0. Приходим к исходному: R(x)=P(x0). Результаты оформим в виде таблицы:

an an1 a0
x0 bn1 bn2 R(x)

Эта таблица и есть схемой Горнера.

Замечание: помимо значения остатка R(x), алгоритм дает нам Q(x) (неполное частное). Также, если остаток R(x)=0, то x0 корень многочлена P(x).

Далее, с помощью примеров, рассмотрим, как алгоритм работает на практике.

Примеры решения задач

  1. Разделить многочлен P5(x)=x58x4+7x34x2+16x+24 на (x2).
    Решение
  2. Определить кратность корня x0=1 многочлена P5(x)=x58x3+14x29x+2.
    Решение
  3. При каких значениях A и B многочлен P4(x)=Ax4+Bx2+1 делится на (x1)2?
    Решение
  4. Дан многочлен P4(x)=x4(2+i)x3(3+2i)x+5 над полем \usepackageamsfontsC. Разделить его с остатком на (xx0), где x0=1i, попутно вычислив P4(x0).
    Решение

Почему алгоритм Горнера работает?

После ознакомления с примерами решения задач, можно приступить к изучению данного вопроса. Представим многочлен уже привычным нам образом P(x)=anxn+an1xn1++a1x+a0. Сделаем самое очевидное действие — вынесем x за скобки: x(anxn1+an1xn2++a1)+a0. Если мы повторим это действие n1 раз, то получим x(x(xn1(anx+an1)+)+a1)+a0. Алгоритм Горнера работает вне зависимости от того, какая степень у многочлена — схема универсальна. Посмотрим на примере. P7(x)=x7+5x62x5x4+3x28x+11==x(x6+5x52x4x3+3x8)+11==x(x(x5+5x42x3x2+3)8)+11==x(x(x(x4+5x32x2x+0)+3)8)+11==x(x(x(x(x3+5x22x1)+0)+3)8)+11==x(x(x(x(x(x2+5x2)1)+0)+3)8)+11==x(x(x(x(x(x(n1)=(71)=6(x+5)2)1)+0)+3)8)+11==x(x(x(x(x(x((1x)+5)2)1)+0)+3)8)+11. Отсюда видим, для того чтобы посчитать выражение (2), мы должны 1 (коэффициент перед x7) умножить на x, результат прибавить к 5 (коэффициент перед x6), опять умножить на x и т.д. То есть мы делаем все то, что и в схеме Горнера.

Почему разложение P(x)=(xx0)Q(x)+R(x) — верно? Начнем с арифметики. Возьмем какое-то натуральное число a. Как гласит нам основная теорема арифметики, его всегда можно представить в виде произведения двух других чисел с остатком, то есть a=sq+r. Например, 7=23+1, 8=42+0. Разложение такого типа единственно, причем 0r<s.

Тоже самое происходит и с многочленами. Допустим, мы хотим разделить многочлен P(x) на Q(x) с остатком. Значит P(x) можно записать как P(x)=S(x)Q(x)+R(x), где 0degR(x)<degQ(x).

Если Q(x)=(xx0) (линейный многочлен), то его степень — единица. Тогда результатом деления любого многочлена на линейный, будет какой-то новый многочлен степени на единицу меньше, и остаток — многочлен нулевой степени (любое число в степени 0  это 1). Следовательно, остатком всегда будет просто число. Именно его мы ищем в схеме Горнера в конце каждой строки.

Дополнительные примеры решения задач

  1. Разложить многочлен P6(x)=x6+6x5+3x428x39x2+54x27 по степеням (x1).
    Решение
  2. Найти все рациональные корни многочлена P7(x)=9x7+3x623x5+4x45x3+23x213x+2.
    Решение

Алгоритм Горнера

Тест на проверку знаний по теме «Алгоритм Горнера»

Смотрите также

  1. Алгебра: Теоремы и алгоритмы: учеб. пособие / Н. И. Яцкин. — Иваново: Иван. гос. ун-т, 2006. — 506с. (c.383-394, 501-503)
  2. Основы численных методов: Учебник для вузов/В.М.Вержбицкий. — М.: Высш. шк., 2002. — 840c. (с.272-275)
  3. Личный конспект, составленный на основе лекций Белозерова Г.С.

6.3 Интегрирование рациональных функций.

Рациональной функцией (или дробью) называется функция вида
f(x)=P(x)Q(x),
где P(x) и Q(x) – многочлены. Если степень числителя меньше степени знаменателя, то рациональная дробь называется правильной. Ясно, что каждая рациональная дробь может быть представлена в виде
P(x)Q(x)=R(x)+P1(x)Q(x),
где R(x) – многочлен, а дробь P1(x)Q(x) – правильная. Поскольку интегралы от многочленов вычисляются совсем просто, то мы будем рассматривать методы интегрирования правильных дробей.

Будем различать следующие четыре вида дробей:

  • Axa, где A, a — постоянные.
  • A(xa)k, где A, a — постоянные, k=2,3
  • Mx+Nx2+px+q, где M, N, p, q – постоянные, квадратный трехчлен в знаменателе не имеет действительных корней.
  • Mx+N(x2+px+q)k, где M, N, p, q – постоянные, квадратный трехчлен в знаменателе не имеет действительных корней.

Покажем как вычисляются интегралы от каждой из этих дробей.

  • axadx=Aln|xa|+C.
  • a(xa)kdx=Ak11(xa)k1+C.
  • Mx+Nx2+px+qdx. Для вычисления этого интеграла представим подынтегральное выражение в виде
    Mx+Nx2+px+q=M2(2x+p)+NpM2x2+px+q=M22x+px2+px+q+NpM2x2+px+q.
    Для вычисления интеграла от первого слагаемого справа, очевидно, достаточно выполнить замену t=x2+px+q. Тогда получим
    2x+px2+px+q=ln(x2+px+q)+C.
    Для вычисления интеграла от второго слагаемого справа выделим полный квадрат в знаменателе, т.е. представим знаменатель в виде x2+px+q=(x+p2)2+qp24. Поскольку квадратный трехчлен в знаменателе не имеет действительных корней, то его дискриминант p24q<0. Обозначим a2=qp24. Выполняя замену x+p2=t, получим
    1x2+px+qdx=1(x+p2)2+a2dx=dtt2+a2=1a2dtt2a2+1==1ad(ta)(ta)2+1=1aarctgta+C.
    Возвращаясь теперь к старой переменной, получим исходный интеграл.
  • Mx+N(x2+px+q)k. Для вычисления этого интеграла, как и в предыдущем случае, представим подынтегральное выражение в виде
    Mx+N(x2+px+q)k=M2(2x+p)+NpM2(x2+px+q)k==M22x+p(x2+px+q)k+Npm2(x2+px+q)k.
    Для вычисления интеграла от первого слагаемого справа, очевидно, достаточно выполнить замену t=x2+px+q. Тогда получим
    2x+p(x2+px+q)kdx=1k+1(x2+px+q)k+1+C.
    Для вычисления интеграла от второго слагаемого, как и в предыдущем случае, выделим полный квадрат из квадратного трехчлена в знаменателе. Тогда после замены переменной t=x+p2 он сведется к интегралу вида dt(t2+a2)k. Обозначим этот интеграл через Ik и выведем рекуррентную формулу для вычисления этого интеграла. Будем применять формулу интегрирования по частям. Имеем
    Ik=dt(t2+a2)k=[u=1(t2+a2)k,dv=dtdu=2kt(t2+a2)k+1,v=t]==t(t2+a2)k+2kt2(t2+a2)k+1dt=t(t2+a2)k+2kt2+a2a2(t2+a2)k+1dt==t(t2+a2)k+2kdt(t2+a2)k2ka2dt(t2+a2)k+1==t(t2+a2)k+2kIk2ka2Ik+1.
    Отсюда находим
    Ik+1=12ka2[t(t2+a2)k+(2k1)Ik](k=1,2,).
    При этом, как мы уже вычислили ранее,
    I1=dtt2+a2=1aarctgta+C.
    Итак, и в этом случае мы получили правило вычисления интеграла от дроби четвертого вида.

Из основной теоремы алгебры следует, что каждый многочлен с действительными коэффициентами может быть представлен в виде произведения конечного числа линейных сомножителей вида xa и квадратичных сомножителей вида x2+px+q, где p24q<0. Именно, справедливо равенство
Q(x)=A(xa1)k1(xar)kr(x2+p1x+q1)m1(x2+psx+qs)ms,(1)
где ki и mi – целые неотрицательные числа.
С использованием этого представления можно показать, что справедлива следующая

Теорема. Пусть P(x)Q(x) – правильная дробь, знаменатель которой допускает разложение (1). Тогда эта дробь единственным образом может быть представлена в виде суммы простых дробей, т.е.
P(x)Q(x)=ri=1kij=1Aij(xai)j+ri=1mij=1Mijx+Nij(x2+Pix+qi)j.

Выше уже показано, что интеграл от каждой простой дроби выражается через элементарные функции. Таким образом, справедлива

Теорема. Каждая рациональная дробь имеет первообразную, которая выражается через элементарные функции, а именно, с помощью рациональных функций, логарифмической функции и арктангенса.

Метод Остроградского. Этот метод интегрирования рациональных дробей предназначен для выделения рациональной части из интеграла от рациональной функции. Именно, используя представление (1), интеграл от правильной дроби представляется в виде
P(x)Q(x)==P(x)A(xa1)k1(xar)kr(x2+p1x+q1)m1(x2+psx+qs)msdx==Rk1++kr+2(m1++ms)r2s1(x)dxA(xa1)k11(xar)kr1(x2+p1x+q1)m11(x2+psx+qs)ms1++Sr+2r1(x)A(xa1)(xar)(x2+p1x+q1)m11(x2+psx+qs)dx,
где многочлены Rk1++kr+2(m1++ms)r2s1(x) и Sr+2s1(x) степени k1++kr+2(m1++ms)r2s1 и r+2s1 соответственно имеют неопределенные коэффициенты. Эти коэффициенты находятся затем из условия равенства производных левой и правой частей записанного равенства. Таким образом, вычисление интеграла от правильной дроби сводится к вычислению интеграла от другой правильной дроби, у которой в знаменателе все множители в первой степени. Такой интеграл вычисляется, как указано выше, путем разложения подынтегрального выражения
на простые дроби. Тем самым отпадает необходимость в использовании полученной выше рекуррентной формулы для вычисления интегралов от простой дроби четвертого типа.

Примеры решения задач

  1. Найти неопределенный интеграл I=2x23x+3x32x2+xdx.
    Решение

    Разложим знаменатель на множители: x32x2+x=x(x1)2. Тогда подынтегральная функция представима в виде

    2x23x+3x(x1)2=Ax+Bx1+C(x1)2,
    где A, B, C – постоянные коэффициенты. Для их нахождения приведем выражение справа к общему знаменателю и, приравнивая числители полученных дробей, найдем

    2x23x+3=A(x1)2+Bx(x1)+Cx.

    Поскольку это тождество имеет место при всех x, кроме x=0,x=1, то коэффициенты этих многочленов при одинаковых степенях x равны. Приравнивая их, получаем линейную систему уравнений

    x2:A+B=2x:2AB+C=3x0:A=3}

    Решая эту систему, находим A=3, B=1, C=2. Подставляя эти значения в разложение подынтегральной функции и вычисляя соответствующие интегралы, получаем
    I=3ln|x|ln|x1|2x1+C=ln|x|3|x1|2x1+C.

  2. Найти неопределенный интеграл I=xdxx3+1dx.
    Решение

    Как и в предыдущем примере, разложим на множители знаменатель:

    x3+1=(x+1)(x2x+1).
    Раскладываем подынтегральное выражение с неопределнными коэффициентами
    xx3+1=Ax+1+Mx+Nx2x+1,
    откуда x=A(x2x+1)+(Mx+N)(x+1). Приравнивая коэффициенты при одинаковых степенях x, составляем линейную систему для нахождения чисел A, M, N:
    x2:0+A+M,x:1=A+M+N,x0:0=A+N.}
    Решая эту систему, находим A=13,M=N=13. Поэтому
    I=13ln|x+1|+13x+1x2x+1dx==13ln|x+1|+162x1x2x+1dx+12dxx2x+1==13ln|x+1|+16ln(x2x+1)+12dx(x12)2+34==13ln|x+1|+16ln(x2x+1)+13arctg23(x12)+C.

  3. Найти неопределенный интеграл (x219x+6)(x1)(x2+5x+6)dx
    Решение

    Разложим знаменатель на множители: (x1)(x2+5x+6)=(x1)(x2)(x3). Тогда подынтегральная функция представима в виде:
    x219x+6(x1)(x2+5x+6)=Ax1+Bx+2+Cx+3
    Для нахождения A,B и C приведем выражение справа к общему знаменателю и, приравнивая числители полученных дробей, найдем
    A(x2+5x+6)+B(x2+2x3)+c(x2+x2)=x219x+6
    Приравнивая коэффициенты при одинаковых степенях x, составляем систему линейных уравнений для нахождения чисел A,B,C
    x2:1=A+B+Cx:19=5A+2B+Cx0:6=6A3B2C}
    Решаем систему, получаем значения A=1;B=16;C=18. Возвращаемся к изначальному интегралу и находим окончательное решение
    (1x116x+2+18x+3)dx=ln|x1|16ln|x+2|+18ln|x+3|+C.

  4. Найти неопределенный интеграл x26x+8x3+8dx
    Решение

    По формуле суммы кубов раскладываем знаменатель на множители, используя формулу сокращенного умножения a3+b3=(a+b)(a2ab+b2)
    x26x+8x3+8dx=x26x+8(x+2)(x22x+4)dx.
    Методом неопределенных коэффициентов разложим подынтегральную функцию в сумму элементарных дробей
    Ax+2+Bx+Cx22x+4=x26x+8(x+2)(x22x+4).
    Приводим дробь к общему знаменателю
    A(x22x+4)+B(x2+2x)+C(x+2)=x26x+8
    Составим и решим систему
    x2:A+B=1x:2A+2B+C=6x0:4A+2C=8}
    Подставим значения A=2, B=1, C=0 в функцию и найдем интеграл
    (2x+2xx22x+4)dx=2dxx+2+12d(x22x+4)dxx22x+4==2ln|x+2|12d(x22x+4)x22x+4dxx22x+1+3==2ln|x+2|12ln(x22x+4)d(x1)(x1)2+(3)2==2ln|x+2|12ln(x22x+4)13arctg(x13)+C.

Интегрирование рациональных функций

Тест на тему: Интегрирование рациональных функций

Литература:

Смотрите также:

 

Следствия из основной теоремы алгебры. Канонические разложения.



Задача 1

Разложить на линейные (неприводимые) множители полином latexf(x)=x36x2+11x6.

Спойлер

Спойлер

Спойлер

Задача 2

Разложить на неприводимые вещественные множители многочлен latexf(x)=x6+27.

Спойлер

Спойлер

Спойлер

Задача 3

Построить полином по заданной таблице значений, пользуясь формулой Лагранжа:

0 1 2 3
x 1 2 3 4
y 2 1 4 3

Спойлер

Спойлер

Рекомендуемая литература:

  1. (Теоретические сведения) А. Г. Курош «Курс высшей алгебры», Издание 9, 1968 года, стр. 147-161
  2. (Практические задания) Д. К. Фадеев, И. С. Соминский «Сборник задач по высшей алгебре», Издание 10, 1972 года, стр. 83-110
  3. Курош А. Г. «Курс высшей алгебры» девятое издание, 1968 года, стр. 147-166
  4. Белозеров Г.С. Конспект лекций

Канонические разложения.


Таблица лучших: Следствия из основной теоремы. Канонические разложения.

максимум из 30 баллов
Место Имя Записано Баллы Результат
Таблица загружается
Нет данных