Задание 3
По таблице из задания 2 вычислить значение функции в точке x* = ст/30
с помощью интерполяционного полинома Лагранжа, используя первые три точки таблицы;
с помощью интерполяционного полинома Ньютона, используя все точки таблицы.
Это же задание выполнить с использованием ИС Eureka и Scilab.
Пример выполнения задания 4: (вариант а, Nст = 51,
Интерполяция – это частный случай аппроксимации, когда аппроксимирующая кривая проходит через все или через часть точек таблицы.
Поскольку шаг в данной таблице – постоянный (hi = xi+1 – xi = h = const), то для решения задачи интерполяции можно использовать как интерполяционный полином Лагранжа, так и интерполяционный полином Ньютона.
Для наших исходных данных получаем таблицу:
x |
6 |
8 |
10 |
12 |
14 |
y |
2.5 |
4.9 |
8 |
12.1 |
16.9 |
Покажем, как по первым трем точкам (узлам) таблицы построить интерполяционный полином Лагранжа. Степень интерполяционного полинома в данном случае будет равна двум (на единицу меньше числа узлов таблицы).
(1)
Подставляя наши исходные данные в формулу (1), получаем:
Здесь x0 = 6, x1 = 8, x2= 10, y0 = 2.5, y1 = 4.9, y2 = 8.
Раскрыв скобки и приведя подобные члены, получим:
Проверим, проходит ли наш полином через три заданные точки таблицы:
0.087562 – 0.0256 – 0.5 = 2.5, 4.9, 8.
Подставляя теперь в этот полином вместо x число x* = 6 + 51/30 = 7.7, получим:
0.08757.72 – 0.0257.7 – 0.5 4.495
Ответ: , 4.495
Для решения задачи с помощью ИС Eureka в окне Edit набираем строки:
y(x) = c0 + c1*x + c2*x^2
y(6) = 2.5
y(8) = 4.9
y(10) = 8
t = y(6 + 51/30)
После выполнения команды Solve в окне Solution получаем:
c0 = – 0.5
c1 = – 0.025
c2 = 0.0875
t = 4.495375
Maximum error is 4.4408921e-16
Ответ: , 4.495
Для построения полинома четвертой степени, проходящего через пять точек таблицы, воспользуемся формулой первого интерполяционного полинома Ньютона:
( 2 )
Здесь , n! = 1234 …n. (Например, 5!=12345=120).
Построим следующую таблицу конечных разностей:
i |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
1 |
|
|
|
|
|
|
2 |
|
|
|
|
|
|
3 |
|
|
|
|
|
|
4 |
|
|
|
|
|
|
Здесь = – , = – , = – , = – , = – ,
= – , = – , = – , = – ,
= – .
–- это k-я конечная разность ( k = 1, 2, 3, 4). В нашем примере
i |
|
|
|
|
|
|
|
0 |
6 |
2.5 |
2.4 |
0.7 |
0.3 |
– 0.6 |
|
1 |
8 |
4.9 |
3.1 |
1 |
– 0.3 |
|
|
2 |
10 |
8 |
4.1 |
0.7 |
|
|
|
3 |
12 |
12.1 |
4.8 |
|
|
|
|
4 |
14 |
16.9 |
|
|
|
|
= 6, (заданная точка), . Тогда .
Подставляя исходные данные в формулу (2), получим:
+
Ответ:
Чтобы решить эту же задачу с помощью ИС Eureka, в окне Edit набираем строки:
y(x):= c0 + c1*x + c2*x^2 + c3*x^3 + c4*x^4
y(6)=2.5
y(8)=4.9
y(10)=8
y(12)=12.1
y(14)=16.9
t=y(6+51/30)
После выполнения команды Solve в окне Solution получим:
c0 = –12.5
c1 = 5.425
c2 = –0.80625
c3 = 0.625
c4 = –0.015625
t = 4.5105873
Maximum error is 3.0198066e-14
Ответ: –12.5 + 5.425x – 0.8063x2 + 0.625x3 – 0.0156x4,
t =
(Значения коэффициентов округлены до четырех знаков после запятой).
Чтобы решить вторую часть задачи (пункт b) с помощью ИС Scilab, можно воспользоваться программой
clc
xbasc()
x=[6 8 10 12 14];y=[2.5 4.9 8 12.1 16.9 ];nst=51;
n=length(x);a=[];b=[];c=[];
for i=1:n
for j=1:n
a(i,j)=sum(x.^(i+j-2));
end
b(i)=sum(x.^(i-1).*y);
end
c=inv(a)*b
function z=f(t)
z=0;
for i=1:n
z=z+t.^(i-1).*c(i);
end
endfunction
plot2d(x,y,-4)
t=min(x)-.1:.01:max(x)+.1;plot2d(t,f(t))
r=min(x)+nst/30,z1=f(r),plot(r,z1,"*")
err=sum((y-f(x)).^2)
Набрав эту программу в окне редактора и запустив ее на выполнение, в командном окне получим:
c = - 12.5 5.425 - 0.80625 0.0625 - 0.0015625
r = 7.7 z1 = 4.5105873 err = 6.351D-16
Коэффициенты интерполяционного полинома с даны в порядке возрастания степеней; r – точка, в которой необходимо вычислить значение функции (z1), err – сумма площадей квадратов отклонений (0 в задаче интерполяции). В графическом окне строится график интерполинома.
Ответ: ,
4.5106
Для решения первой части задачи (пункт а) третья строка должна выглядеть так:
x=[6 8 10 ];y=[2.5 4.9 8 ];nst=51;
Ответы:
c = - 0.5 - 0.025 0.0875 r = 7.7 z1 = 4.495375 err = 3.564D-23
Ответ: ,
4.4954