Рассмотрим специальный случай вычисления многочлена. Интерполяционный многочлен Ньютона степени n, определяемый формулой
u [ n ](x) = a n (x – x 0) (x – x 1)…(x – xn – 1) +…+ a n (x – x 0) (x – x 1) + a1 (x – x 0) + a0, (5)
является единственным многочленом степени £ n от x, который принимает предписанные значения y 0, y 1, …, yn в заданных n + 1 различных точках x 0, x 1, …, xn соответственно. После того, как значения постоянных a найдены, интерполяционная формула Ньютона становится удобной для вычислений, так как мы можем, обобщив правило Горнера, записать
u [ n ](x) = ((…(a n (x – xn – 1) + a n – 1)(x – xn – 2) + …)(x – x 1) + a1)*
*(x – x 0) + a 0. (6)
Теперь рассмотрим, как находятся постоянные a в формуле Ньютона. Их можно определить, находя «разделённые разности» и сводя вычисления в следующую таблицу (иллюстрирующую случай n = 3):
y 0
(y 1 – y 0)/(x 1 – x 0) = y¢ 1
y 1 (y 2 – y’ 1)/(x 2 – x 0) = y¢¢ 2
(y 2 – y 1)/(x 2 – x 1) = y¢ 2 (y’’ 3 – y’’ 2)/(x 3 – x 0) = y¢¢¢ 3
y 2 (y 3 – y’ 2)/(x 3 – x 1) = y¢¢ 3
|
|
(y 3 – y 2)/(x 3 – x 2) = y¢ 3
y 3 (7)
Можно доказать, что a0 = y 0, a1 = y’ 1, a2 = y’ 2, и т. д. Следовательно, для нахождения величин может быть использована следующая вычислительная процедура (соответствующая таблице (7)):
Начать с того, что установить (a0, a1, …, a n) (y 0, y 1, …, yn); затем для k = 1, 2, …, n (именно в таком порядке) установить yj (yj – yj – 1)/(xj – xj – k)для j = n, n – 1, …, k (именно в таком порядке).
Если мы хотим вычислить многочлен u (x) степени n сразу для многих значений x, образующих арифметическую прогрессию (т. е. хотим вычислить u (x 0), u (x 0 + h), u (x 0 + 2 h),…), то весь процесс можно после нескольких первых шагов свести к одному только сложению вследствие того факта, что n -я разность от многочлена есть постоянная.
1 Найти коэффициенты b n, …, b1, b0 представления нашего многочлена в виде интерполяционного многочлена Ньютона
u (x) = b n / n! hn (x – x 0 – (n – 1) h)…(x – x 0 – h)(x – x 0) +…+ b2/ 2! h 2* *(x – x 0 – h)(x – x 0) + b1/ h 2 (x – x 0) + b0. (8)
(Это можно сделать, беря повторные разности, в точности так же, как мы определяли выше постоянные a в (5) (надо принять xj = x 0 + jh), с тем исключением, что все деления на xj – xj – k из вычислительной процедуры устраняются.)
2 Установить x x 0.
3 Теперь значением u (x) является b0.
4 Установить b j b j + b j + 1 для j = 0, 1, …, n – 1 (именно в таком порядке). Увеличить x на h и вернуться в шаг 3.