ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.04.2021
Просмотров: 769
Скачиваний: 1
Из вида остаточного члена следует, что повышение степени интерпо-
ляционного многочлена уменьшает погрешность, однако из-за неясного
поведения
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
21
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
22
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:
23
Рис. 8. Графики исходной (
f
(
x
) = ln
x
−
sin
2
x
−
e
x
) и интерполирующей
функций
> for i from 0 to N do
# построение таблицы значений функции в узлах интерполяции
x[i] := x0+h*i; y[i] := yf(x[i])
end do:
# Процедура построения конечных разностей
> DeltaY := proc (k, i)
# k — порядок i-той конечной разности
if k = 1 then return y[i+1]-y[i]
else
return DeltaY(k-1, i+1)-DeltaY(k-1, i)
end if;
end proc;
# Процедура создания интерполяционного многочлена в форме Нью-
тона
> Ntn:=proc(x)
# x — неизвестная переменная в интерполяционном многочлене
local S, A , i, j, t;
# S — переменная, для накопления суммы слагаемых (многочлен
Ньютона)
# A — слагаемое в интерполяционном многочлене
# i, j — переменные циклов
global N,h,x0;
t:=(x-x0)/h;
S:=0;
for i from 0 to N do
if i=0 then A:=y[i]
else
A:=DeltaY(i,0)/i!;
24
for j from 1 to i do
A:=evalf(A*(t-j+1)) # получение слагаемых
end do;
end if;
# накопление всех слагаемых — образование многочлена Ньютона
S:=S+A;
end do;
return S;
end proc;
# сравнение функции с построенным интерполяционным многочле-
ном
> plot([Ntn(x),yf(x)],x=0..3);
Рис. 9. Графики исходной функции
f
(
x
) = sin
x
ln
x
и интерполирующей
функции
4.
Численное интегрирование
Пусть на отрезке
[
a, b
]
задана функция
y
=
f
(
x
)
. Разобьем отрезок
на
n
элементарных отрезков
[
x
i
−
1
, x
i
]
(
i
= 1
,
2
, ..., n
). На каждом из этих
отрезков выберем произвольную точку
ξ
i
и составим сумму произведений
значения функции
f
(
ξ
i
)
на длину отрезка
∆
x
i
:
S
n
=
n
X
i
=1
f
(
ξ
i
)∆
x
i
,
(45)
S
n
– интегральная сумма.
Определенным интегралом от функции
f
(
x
)
на отрезке
[
a, b
]
называ-
ется предел интегральной суммы при неограниченном увеличении числа
25