ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 06.04.2021
Просмотров: 106
Скачиваний: 1
В результате получаем
N
(
x
) =
N
(
x
0
+
th
) =
y
0
+
t
∆
y
0
+
t
(
t
−
1)
2!
∆
2
y
0
+
...
+
+
t
(
t
−
1)
...
(
t
−
n
+ 1)
n
!
∆
n
y
0
.
(16)
Полученное выражение называется первым интерполяционным много-
членом Ньютона для интерполирования вперед. Оно справедливо на всем
отрезке
[
x
0
, x
n
]
, но для уменьшения ошибок округления разумно исполь-
зовать его только для левой половины рассматриваемого отрезка.
Полученная формула для интерполирования вперед практически
неудобна для интерполирования функции вблизи конца отрезка. В этом
случае используют формулу для многочлена Ньютона для интерполиро-
вания назад, которую мы сейчас и получим.
Интерполирующий полином запишем в следующем виде:
N
(
x
) =
a
0
+
a
1
(
x
−
x
n
) +
a
2
(
x
−
x
n
)(
x
−
x
n
−
1
) +
...
+
a
n
(
x
−
x
x
)(
x
−
x
n
−
1
)
...
(
x
−
x
1
)
.
(17)
Из условия совпадения значения многочлена и функции в узлах находим:
N
(
x
n
) =
y
n
⇒
a
0
=
y
n
,
N
(
x
n
−
1
) =
y
n
−
1
⇒
y
n
+
a
1
(
−
h
) =
y
n
−
1
⇒
a
1
=
y
n
−
y
n
−
1
h
=
∆
y
n
−
1
h
.
Аналогично находим
a
2
=
y
n
−
2
y
n
−
1
+
y
n
−
2
2
h
2
=
∆
2
y
n
−
2
2
h
2
,
и в общем случае, применяя метод математической индукции, можно
строго доказать, что
a
k
=
∆
k
y
n
−
k
k
!
h
k
.
Подставляя найденные коэффициенты в (17), получаем
N
(
x
) =
y
n
+
∆
y
n
−
1
1!
h
(
x
−
x
n
) +
∆
2
y
n
−
2
2!
h
2
(
x
−
x
n
)(
x
−
x
n
−
1
) +
...
+
+
∆
n
y
0
n
!
h
n
(
x
−
x
n
)
...
(
x
−
x
1
)
.
(18)
6
Делая замену
t
=
x
−
x
n
h
, окончательно находим
N
(
x
) =
N
(
x
n
+
th
) =
y
n
+
t
∆
y
n
−
1
+
t
(
t
+ 1)
2!
∆
2
y
n
−
2
+
...
+
+
t
(
t
+ 1)
...
(
t
+
n
−
1)
n
!
∆
n
y
0
.
(19)
Формула (19) – второй интерполяционный многочлен Ньютона для ин-
терполирования назад.
Отметим, что существует один и только один интерполяционный мно-
гочлен при заданном наборе узлов интерполяции. Формулы Лагранжа,
Ньютона и др. порождают один и тот же многочлен, разница состоит в
алгоритме их построения.
3.3.
Точность интерполяции
Значения интерполяционного многочлена
y
=
ϕ
(
x
)
и рассматривае-
мой функции
y
=
f
(
x
)
в узлах
x
=
x
i
,
(
i
= 0
,
1
, ..., n
)
в точности совпада-
ют. Если исследуемая функция — многочлен степени
n
, то
f
(
x
)
≡
ϕ
(
x
)
.
В остальных случаях разность
R
(
x
) =
f
(
x
)
−
ϕ
(
x
)
6
= 0
.
Очевидно, что
R
(
x
)
есть погрешность интерполяции и называется оста-
точным членом интерполяционной формулы. Можно показать, что оста-
точный член интерполяционного многочлена Лагранжа имеет вид
R
L
(
x
) =
(
x
−
x
0
)(
x
−
x
1
)
...
(
x
−
x
n
)
(
n
+ 1)!
f
(
n
+1)
(
x
0
)
.
(20)
В этой формуле
f
(
n
+1)
(
x
0
)
– производная
(
n
+ 1)
-го порядка функции
f
(
x
)
в некоторой точке
x
0
∈
[
x
0
, x
n
]
.
Из анализа (20) следует, что погрешность интерполяции тем выше,
чем ближе точка
x
лежит к концам отрезка
[
x
0
, x
n
]
. Если же использо-
вать интерполяционный многочлен вне отрезка
[
x
0
, x
n
]
, то погрешность
возрастает очень заметно.
Остаточный член интерполяцинного многочлена Ньютона для случая
равноотстоящих узлов следует из (20)
R
N
(
x
) =
t
(
t
−
1)
...
(
t
−
n
)
(
n
+ 1)!
f
(
n
+1)
(
x
0
)
h
n
+1
,
t
=
x
−
x
0
h
.
(21)
7
Из вида остаточного члена следует, что повышение степени интерпо-
ляционного многочлена уменьшает погрешность, однако из-за неясного
поведения
f
(
n
+1)
(
x
)
возможны проблемы. Поэтому на практике для по-
вышения точности целесообразно уменьшать шаг и выбирать специаль-
ное расположение узлов (например, сгущая их к концам отрезка). При
этом, как правило, стараются использовать многочлены малой степени.
3.4.
Задания для самостоятельной работы
Построить интерполяционный многочлен по заданным таблицам
а) в форме Лагранжа;
б) в форме Ньютона.
1.
x
i
0.2
0.5
1
y
i
0.2386693308 0.7294255386 1.841470985
x
i
1.5
2
2.2
y
i
3.247494987
4.909297427
5.648496404
2.
x
i
6.0
6.3
6.6
y
i
34.286714820 39.701203180 41.70367307
x
i
6.75
6.9
7.5
y
i
41.13764565
39.41511178
20.43623661
3.
x
i
2.2
2.4
2.8
y
i
2.4114988830 2.2626062840 2.057777659
x
i
3.2
3.4
3.8
y
i
2.001705224
2.033201807
2.209032288
4.
x
i
2.0
2.2
2.4
y
i
2.9835460860 4.0403875470 4.756899984
x
i
2.6
2.8
3.2
y
i
4.373250602
2.640288276
-1.283458022
5.
x
i
0.1
0.3
0.5
y
i
9.9833416650
3.283557852
1.917702154
x
i
0.7
1.1
1.5
y
i
1.314729974
0.7365350083 0.4433311052
8
6.
x
i
4.0
4.3
4.5
y
i
2.4323981290 2.3608144630 2.348313255
x
i
4.6
4.7
4.9
y
i
2.351940650
2.361751112
2.398498400
7.
x
i
1.4
1.6
1.8
y
i
2.4323981290 4.2961499960 5.844778271
x
i
2.2
2.4
2.6
y
i
8.719672866
9.428320962
9.134725689
8.
x
i
2.0
2.3
2.9
y
i
3.4864546310 4.0469158410 5.932133517
x
i
3.2
3.8
5.0
y
i
7.354448569
11.55532021
29.73936426
9.
x
i
0.2
0.4
0.6
y
i
0.6896558743
1.390438928
1.774466077
x
i
0.8
1.0
1.2
y
i
1.503270954
0.3836039536 -1.469219613
10.
x
i
1.2
1.25
1.35
y
i
4.168650116
4.426278450
3.896391075
x
i
1.40
1.45
1.50
y
i
2.748858752 0.7599941296 -2.194454593
3.5.
Примеры процедур в среде Maple
3.5.1.
Построение интерполяционного многочлена Лагранжа
Для наглядности, построим таблицу значений функции, аналитиче-
ский вид которой известен.
> restart;
> f:=x-> ln(x)-(sin(x))ˆ 2-exp(x); # аналитический вид функции
> n:=5; # количество шагов
> x0:=1; # первый узел интерполирования
> sh:=0.2; # шаг интерполирования
# задание узлов интерполирования и значений функции в этих узлах
> for i from 0 to n do
9
x[i]:=x0+sh*i; y[i]:=f(x[i]);
end do;
# Процедура создания интерполяционного многочлена в форме Лагран-
жа
> lagr:=proc(n,x,y,xx)
# n — количество узлов интерполяции (степень интерполяционного
многочлена)
# x — узлы интерполяции
# y — значения функции в узлах интерполяции
# xx — неизвестная переменная в интерполяционном многочлене
local i,j,s,sl;
# i, j — переменные циклов
# sl — слагаемое в интерполяционном многочлене
# s — переменная, для накопления суммы слагаемых (многочлен
Лагранжа)
s:=0;
for i from 1 to n do sl:=y[i];
for j from 1 to n do
# получение слагаемых
if (i<>j) then sl:=sl*(xx-x[j])/(x[i]-x[j]); end if;
end do;
# накопление всех слагаемых — образование многочлена Лагранжа
s:=s+sl;
end do;
return s;
end proc;
> poll:=z-> lagr(n,x,y,z);
# сравнение функции с построенным интерполяционным многочле-
ном
> plot([f(x),poll(x)],x=0..2);
3.5.2.
Построение интерполяционного многочлена Ньютона
Для наглядности, построим таблицу значений функции, аналитиче-
ский вид которой известен.
> restart;
# представление функции в аналитическом виде
> yf :=x->sin(x)*ln(x);
# количество шагов, первый узел и шаг интерполирования
> N := 20: x0 := 1: h := 0.2:
10