Построение кубического сплайна
Задача: построить кубический сплайн по 6 точкам.
Таблица зависимости значений функции от аргумента
X |
1 |
1,2 |
1,4 |
1,6 |
1,8 |
2 |
Y |
0,9 |
1,9 |
3,2 |
3,8 |
5,1 |
6,1 |
Вычисления:
Некоторая функция f(x) задана на отрезке [a,b], разбитом на части [xi-1,xi]. На каждом таком отрезке функция S(x) есть полином третьей степени Si(x), коэффициенты которого надо определить. Запишем для удобства Si(x) в виде:
S i (x)= a i + b i (x- x i-1 )+ c i (x- x i-1 ) 2+ d i (x- x i-1 ) 3
Вычисление коэффициентов ai, bi, ci, di
Обозначим hi=xi-xi-1
Формулы для вычисления коэффициентов:
аi=y i-1
hi*C i-1 +2(h i -+h i+1 ) *c i+ h i *c i+1 =3(y i - y i-1 /h i - ( y i-1 - y i-2 /h i-1 ))
b i=(y i - y i-1 )/h i -h i /3*( c i+1 +2*c i )
Коэффициенты нам известны из таблицы значений функции. Коэффициенты можно вычислить методом прогонки. После нахождения можно вычислить , а после этого
Таким образом мы найдем все коэффициенты и сможем составить уравнения сплайнов для каждого отрезка [xi-1,xi].
Составим систему уравнений для вычисления , она будет состоять из 6 уравнений
0 ,8 С 2 +0,2 С 3= 4,5
0,2 С 2 +0,8 С 3+0,2 С 4 =-10,5
0,2 С 3 +0,8 С 4+0,2 С 5 =10,5
0,2 С 4 +0,8 С 5= -4,5
Коэффициенты записываем :
a |
b |
c |
f |
0 |
0,8 |
0,2 |
4,5 |
0,2 |
0,8 |
0,2 |
-10,5 |
0,2 |
0,8 |
0,2 |
10,5 |
0,2 |
0,8 |
0 |
-4,5 |
Затем по формулам :
И решаем :
А 1=- c1 / b 1 =-0,25
B 1=d1 / b 1 =5,625
А 2=- c2 / (a 2*A1 + b 2 )=-0,26667
B 2= (d2 - a 2*A1 )/( (a 2*A1 + b 2 )=-15,5
А 3=- c3 / (a 3*A2 + b 3 )=-0,26786
B 3= (d3 - a 3*A2 )/( (a 3*A2 + b 3 )=18,21429
А 4=0 ,т.к. с4 =0
B 4= (d4 - a 4*A3)/( (a 4*A3 + b 4 )=-10,9091
Обратный ход:
С5 = B4 =-10,9091
С4 =A3* С3+ B3 =21,136364
С3=A2* С2+ B2 =-21,136364
С2=A1* С1 + B1 =10,9091
С 1= С 6=0
Невязки:
r 0=0.00000000001
r 1=0.00000000000
r 2=-0.00000000000
r 3=-0.00000000000
r 4=0.00000000001
r 5=0.00000000000
Коэффициенты:
а 1=0,9 b 1=4,2727 d 1= 18,1818 c 1=0
а 2=1,9 b 2=6,45455 d 2== 53,40909 c2 = 10,9091
а 3=3,2 b 3=4,4091 d 3= 70,4091 c3 =-21,136364
а 4=3,8 b 4=4,4091 d 4=-53,40909 c4 =21,136364
а 5=5,1 b 5=6,45455 d 5=18,1818 c5 = -10,9091
а 6=6,1 b 6=0 d 6= 0 c 6=0
Находим полином третьей степени:
S 1(x)=0,9+4,2727*(x-1) +0*(x-1) 2 +18,1818*(x-1) 3=
= -21,5545+58,8182* x -54,545 *x2 +18,1818*x3
S 2(x)=1,9+6,4545*(x-1,2) +10,9*(x-1,2) 2 -53,40909*(x-1,2) 3=
= 102,1545-250,4555* x-203,1818*x2 -53,40909*x3
S 3(x)=3,2+4,40901*(x-1,4) -21,1364*(x-1,4) 2+70,4545*(x-1,4) 3 =
= -237,727+477,8636* x-317,0455*x2 +70,4545*x3
S 4(x)=3,8+4,409091*(x-1,6) +21,1364*(x-1,6 )2-53,40909*(x-1,6) 3=
= 269,6182-473,409* x+277,5*x2 -53,40909*x3
S 5(x)=5,1+6,4545*(x-1,8) -10,9091*(x-1,8) 2 +18,1818*(x-1,8) 3=
=-147,9+222,4545* x- 109,091*x2+18,1818*x 3
По этим многочленам построим график в Excel
Решение системы линейных алгебраических уравнений методом прогонки с помощью программы Excel:
a |
b |
c |
d |
A |
B |
c |
|
|
|
|
|
|
|
0 |
0,8 |
0,2 |
4,5 |
-0,25 |
5,625 |
10,90909 |
0,2 |
0,8 |
0,2 |
-10,5 |
-0,26667 |
-15,5 |
-21,1364 |
0,2 |
0,8 |
0,2 |
10,5 |
-0,26786 |
18,21429 |
21,13636 |
0,2 |
0,8 |
0 |
-4,5 |
0 |
-10,9091 |
-10,9091 |
Вычислено верно.
Вычислить значение функции х0=1,5
Задача: Вычислить значение функции х0=1,5 использую полученную аппроксимирующую функции:
N(1,5 )=-125 *(1,5)5 +937,5 *(1,5)4 -2770,8333 *(1,5)3 +4031,2498 *(1,5)2 -2880,21624*1,5+808,199944=3,500246
Вычисляем значение функции х0=1,5 использую полученную аппроксимирующую функцию методом наименьших квадратов :
y=5,17x-4,257=5,17*1,5-4,257=3,498
Вычисляем значение функции х0=1,5 использую полученную полином третьей степени S(x):
S (1,5)=3,5001