Завдання на лабораторну роботу.
Лабораторна робота № 5.
Інтерполяційні поліноми Лагранжа. Сплайн-інтерполяція.
Мета роботи:познайомитися з методами інтерполяції складних функцій, реалізувати заданий за варіантом метод інтерполяції у середовищі МatLAB.
Завдання до виконання роботи:Доповнити систему МatLAB файлом, що реалізує заданий метод інтерполяції (відповідно до варіанту).
Теоретичні відомості.
Інтерполяційний поліном Лагранжа.Французький математик Жозеф Луї Лагранж (1736-1813 р.р.) запропонував для побудови інтерполяційних поліномів наступний метод. Для двох вузлових точок (х0, у0), (х1, у1) він записав:
(5.2)
Відношення при уі називаються коефіцієнтами Лагранжа. Побудуємо коефіцієнти Лагранжа для n точок. Особливість їх побудови полягає у виключенні з ряду різниць, що перемножуються у чисельнику і знаменнику, різниці зі значенням хі після знаку “–”. Для n точок коефіцієнт Лагранжа запишемо у загальному вигляді так:
(5.3)
Інтерполяційний поліном Лагранжа має вигляд:
(5.4)
Він дозволяє досить просто побудувати наближення функції по відомим вузловим точкам.
При сплайн-інтерполяції зберігається умова проходження наближуючої функції через вузлові точки. Сплайн (spline) переводиться з англійської, як глучка лінійка. Сплайн-функції різняться ступенем поліному, що зображає функцію. Сутністю сплайн-інтерполяції є моделювання фрагментів заданої функції рядом поліномів низького ступеню. Прикладом такого інтерполювання є кусково-лінійне інтерполювання (рис. 5.1), де кожна з функцій будується по двом сусіднім вузловим точкам. Такий же принцип побудови зберігається і для формування поліномів вищих порядків, тільки кількість точок, на основі яких будується кожен з поліномів може бути більшою. Так, наприклад, для кусково-квадратичного поліному на проміжку [x0, xN] береться кожен інтервал [x2k, x2k+2] для побудови на ньому квадратичного поліному. Але при побудові такого сплайну кривизна в парних вузлах різко змінюється, що відбивається на якості аппроксимації.
Найбільш оптимальною на даний момент є кусково-кубічна сплайн-інтерполяція. Вона широко застосовується у системах комп‘ютерної графіки та системах проектування з використанням комп‘ютера (CAD-системах).
За допомогою цього виду інтерполяції можливо побудувати гладку криву, що проходить через задані точки.
Загальний вираз для кубічної сплайн-функції Sk(x) має вигляд:
, (5.5)
кубічний поліноми для утворення сплайн-функції будується по трьом сусіднім точкам за загальною формулою:
(5.6)
де hk = xk+1 - xk , mk = S’’(xk), uk = 6(dk – dk-1), де в свою чергу dk = (yk+1 – yk)/hk .
При отриманні сплайн функції будуються N-1 рівнянь з N+1змінними. Для їх розв‘язання систему треба доповнити двома додатковими рівняннями. В якості таких рівнянь вибирають обмеження в крайніх точках сплайну (див. табл. 5.1).
Таблиця 5.1
Обмеження в крайніх точках кубічного сплайну.
№ | Тип сплайну | Обмеження в крайніх точках |
Зімкнений кубічний сплайн (найкращий, якщо відомі похідні): задається S’(x0), S’(xn) | ![]() ![]() | |
Природній кубічний сплайн (“релаксована крива”) | m0 = 0, mN = 0 | |
Екстраполювання S’’(х) в крайніх обмежуючих точках | ![]() ![]() | |
S’’(х) постійна біля крайніх точок | m0 = m1 , mN = mN-1 | |
Задання S’’(х) в кожній крайній точці | m0 = S’’(x0) , mN = S’’(xN) |
Розглянемо побудову зімкненого кубічного сплайну. Якщо відома перша похідна у початковій точці, можна обчислити m0 і перше рівняння прийме вигляд:
2(h0 + h1)m1 + h1m2 = u1 – h0m0 (5.7)
Аналогічно обчислюємо останнє рівняння:
hN-2mN-2 + 2(hN-2 + hN-1)mN-1 = uN-1 – hN-1mN . (5.8)
Отримуємо тридіагональну лінійну систему рівнянь:
(5.9)
Коефіцієнти сплайну обчислюємо за формулами:
(5.10)
Для зручності обчислень кожен кубічний сплайн доцільно записувати у формі вкладених перемножень:
(5.11)
Завдання на лабораторну роботу.
Побудувати поліном Лагранжа для функції заданої таблично (відповідно до варіанту). Побудувати по цим же точкам кубічний сплайн. Побудувати функції для обох поліномів і на окремому графіку – функцію, що зображає різницю занчень у невузлових точках (прораховувати значення не менш, як у 3-х невузлових точках між кожними двома вузлами).
Варіант | Координати вузлових точок | Тип кубічного сплайну | ||||
(1, 3) | (3, 7) | (6, 9) | (10, 8) | (14, 11) | Зімкнений | |
Лістинг програми
Функція обчислення поліному Лагранжа:
function f = Lagrange(X,Y,t)
f = 0;
n = 5;
for i = 1:n
l=1;
for j = 1:n
if not (j==i)
l = l*(t-X(j))/(X(i)-X(j));
end
end
f = f+l*Y(i);
end
Функція побудови графіка за допомогою полінома Лагранжа та сплайн інтерполяції:
function PlotAll(X,Y,k)
step = (X(5)-X(1))/k;
H(1) = X(1);
S(1) = Spline(X,Y,H(1));
L(1) = Lagrange(X,Y,H(1));
for i = 2:k+1
H(i) = H(i-1)+step;
S(i) = Spline(X,Y,H(i));
L(i) = Lagrange(X,Y,H(i));
end
plot(H,S,'r',H,L,'b',X,Y,'black')
Функція обчислення кубічної сплайн-функції:
function s=Spline(X,Y,x)
dx0 = (Y(2)-Y(1))/(X(2)-X(1));
dxn = (Y(5)-Y(4))/(X(5)-X(4));
for i = 1:4
H(i) = X(i+1)-X(i)
D(i) = (Y(i+1)-Y(i))/H(i)
if i~=1
U(i) = 6*(D(i)-D(i-1))
end
end
U(1) = (3/H(1))*(D(1)-dx0)
U(5) = (3/H(4))*(dxn-D(4))
A = zeros(5)
A(1,1) = H(1)+H(2)
A(1,2) = (H(1)+H(2))/2
for i = 2:4
A(i,i-1) = H(i-1)
A(i,i) = 2*(H(i-1)+H(i))
A(i,i+1) = H(i)
end
A(5,4) = (H(1)+H(2))/2
A(5,5) = H(1)+H(2)
M = U/A
for k = 1:4
if (x<=X(k+1))
break
end
end
w = x-X(k)
s0 = Y(k)
s1 = D(k)-H(k)*(2*M(k)+M(k+1))/6
s2 = M(k)/2
s3 = (M(k+1)-M(k))/(6*H(k))
s = ((s3*w+s2)*w+s1)*w+s0
Результати роботи програм
На рис.1 наведені графіки функцій, отриманих в результаті застосування сплайн інтерполяції та поліному Лагранжа щодо вихідних даних. Червоним кольором позначена функція сплайн інтерполяції, червоним – Лагранжа. На рис.2 наведено графік різниці функцій Лагранжа та сплайн інтеополяції.
Рис.1. Отримані графіки
Рис.2. Різниця значень
Висновок: на цій лабораторній роботі було розглянуто методи інтерполяції складних функцій, було побудовано функції за заданими вузловими точками.