- •Хід лекції:
- •Конспект лекційного заняття
- •3.1 Кусково-поліноміальне інтерполювання
- •3.2 Сплайн
- •3.3 Інтерполяційний кубічний сплайн
- •3.4 Рівняння для визначення коефіцієнтів кубічного сплайна
- •3.5 Блок схема
- •3.6 Процедура обчислення коефіцієнтів кубічного сплайна Процедура обчислення коефiцiєнтiв кубiчного сплайна:
- •3.7 Блок-схема табулювання кубічного сплайну
- •3.8 Процедура табулювання кубiчногосплайна
- •Підсумок.
- •Відповіді на запитання студентів
3.4 Рівняння для визначення коефіцієнтів кубічного сплайна
Зауважимо, що умова c1-d1h1=0 збігається з рівнянням (4) при1, i=1 якщо c0=0. Отож, ми отримали замкнуту систему рівнянь для визначення коефіцієнтів кубічного сплайна:
i=1…Ne-1
c0=cNe-1=0
(5)
i=2…Ne-1
(6)
i=1…Ne-1
(7)
Переконаємось у тому, що ця система має єдиний розв’язок. Вилучимо з цих рівнянь змінні bi di i=1…Ne-2. Одержимо систему, що містить тільки ci i=1…Ne-2. Щодо цього розглянемо два сусідніх рівняння:
Віднімаючи від першого рівняння друге, одержимо:
Підставляючи знайдений вираз для bi-bi-1 у праву частину рівняння(7.7.6), одержимо:
(8)
Далі, з рівняння (5) одержуємо:
Підставляючи ці вирази у (8), приходимо до рівняння:
Остаточно, для визначення коефіцієнтів ci , одержуємо систему рівнянь:
(9)
i=1…Ne-2 c0=cNe-1=0
Внаслідок діагональної переваги система (9) має єдиний розв’язок. Системи із тридіагональною матрицею коефіцієнтів, на практиці розв’язують методом, який є значно оптимальнішим за метод Гауса. Його називають методом прогонки. За знайденими коефіцієнтами ci коефіцієнти di і bi визначають за явними формулами:
i=1…Ne-1
(10)
Отож, доведено існування єдиного кубічного сплайна, що відповідає умовам 1–3 і граничним умовам s’’(al)=s’’(bl)=0 .
Блок-схему алгоритму обчислення коефіцієнтів кубічного сплайна, згідно із теорією, яку наведено вище, зображено на рис.1. Ідентифікатором Ma позначено матрицю коефіцієнтів системи лінійних алгебричних рівнянь (11), з якої знаходять невідомі коефіцієнти ci i=1…Ne-1 Вона є тридіагональною. Її структуру подаємо нижче:
=
(11)
3.5 Блок схема
Рис.1. Алгоритм обчислення коефіцієнтів кубічного сплайна
3.6 Процедура обчислення коефіцієнтів кубічного сплайна Процедура обчислення коефiцiєнтiв кубiчного сплайна:
s[i](x)=a[i]+b[i]*(x-Xe[i])+c[i]/2*(x-Xe[i])^2 +d[i]/6*(x-Xe[i])^3
Procedure CubSpln(Xe,Ye: Vector; Ne: Integer; Var a, b,
c, d: Vec);
Type Matrix = Array[1..51,1..51] of Real;
Var h, Y : Vec;
Ma : Matrix;
i, j : Integer;
R, Q : Real;
{$I Progonka.pas}
Begin
Ne := Ne - 1;
{Формування вектора рiзниць h i коефiцiєнтiв a[i] сплайна}
For i := 1 to Ne do
Begin
h[i] := Xe[i] - Xe[i - 1];
a[i] := Ye[i]
End;
{Формування СЛАР з тридіагональною матрицею Ma i вектором правої частини системи Y для обчислення коефiцiєнтiв с[i] сплайна}
For i := 1 toNe - 1 do
For j := 1 toNe - 1 do
If i=j then
Begin
R := h[i]; Q :=h[i + 1];
Ma[i, i] := 2 * (R + Q);
Y[i] := 6*((Ye[i+1]-Ye[i])/Q-(Ye[i]-Ye[i-1])/R)
End Else
Begin
Q := h[i + 1];
Ma[j, i] := 0;
Ma[i + 1, i] := Q;
Ma[i, i + 1] := Q
End;
Progonka(Ma, Y, Ne-1, c); {Розв’язання СЛАР методом прогонки}
c[0] := 0; c[Ne] := 0;
For i:=1 toNe do{Обчислення коефiцiєнтiвd[i] i b[i]}
Begin
R := h[i];
d[i] := (c[i] - c[i-1]) / R;
b[i] := R*c[i]/2 - Sqr(R)*d[i]/6+(Ye[i] - Ye[i-1])/R
End
End;
