- •Інститут підприємництва та перспективних технологій Матвійчук я.М. Методи та алгоритми обчислень на еом
- •Передмова
- •Розділ 1. Обчислювальний метод та обчислювальний алгоритм
- •Практичне заняття 1. Обрахунок степеневого поліному в системі matlab
- •Практичне заняття 2. Розв’язування систем лінійних рівнянь у системі matlab
- •Лабораторна робота 2. Розв’язування систем лінійних рівнянь у системі matlab
- •Практичне заняття 3. Інтерполяція та апроксимація функції Рунге в системі matlab
- •Лабораторна робота 3. Інтерполяція та апроксимація функції Рунге в системі matlab
- •Практичне заняття 4. Сплайн-інтерполяція та сплайн-апроксимація в системі matlab.
- •Лабораторна робота 4. Сплайн-інтерполяція та сплайн-апроксимація в системі matlab.
- •Практичне заняття 5. Обчислення означених інтегралів у системі matlab
- •Практичне заняття 6. Розв’язування нелінійних рівнянь у системі matlab
- •Лабораторна робота 6. Розв’язування нелінійних рівнянь у системі matlab
- •Практичне заняття 7. Оптимізація функції однієї змінної у системі matlab
- •Лабораторна робота 7. Оптимізація функції однієї змінної у системі matlab
- •Практичне заняття 8. Розв’язування задачі лінійного програмуван ня в системі matlab
- •Практичне заняття 9. Розв’язування системи Ван-дер-Поля в системі matlab.
Практичне заняття 3. Інтерполяція та апроксимація функції Рунге в системі matlab
MATLAB-програма інтерполяції та апроксимації функції Рунге.
%*********************************************************************
%****** Difficultys of interpolation of the Runge function ********
%*********************************************************************
clear;
xx=-5:0.01:5; yy=1./(1+xx.*xx);
for n=2:2:22;
x=-5:(5-(-5))/(n-1):5;
%x=-5:0.05:5;
y=1./(1+x.*x);
[p,s,mu]=polyfit(x,y,n-1);
pol=polyval(p,xx,[],mu); er=max(abs(yy-pol));
plot(xx,yy,’b’, xx,pol,’r’);
title(sprintf('n=%g er=%g',n,er));
pause;
end;
Після очищення робочої області MATLAB утворено вектор xx значень аргумента з малим кроком 0.01 і вектор yy відповідних значень функції Рунге для побудови графіків. Решта програми працює в циклі за індексом n, який задає порядок полінома, тобто степінь n-1.
У векторах x та y задані координати точок інтерполяції. Крок інтерполяції, тобто відстань між сусідніми елементами вектора x, обрано так, щоб кількість вузлів інтерполяції на одиницю перевищувала степінь полінома.
Функція polyfit будує інтерполюючий степеневий поліном, тобто обраховує коефіцієнти полінома і записує їх у вектор р. Для надійного розв’язування відповідної СЛАР функція polyfit обраховує також спеціальні нормуючі параметри та записує їх у вектори s і mu.
Далі функція polyval обчислює і записує у вектор pol значення полінома в усіх точках графіка, враховуючи нормуючі параметри. Обраховано також er – максимальне значення модуля абсолютної похибки інтерполяції.
Графіки функції Рунге та полінома, побудовані у графічному вікні функцією plot, надписуються біжучими значеннями порядку полінома n та похибки er за допомогою функції title (дивись рис. 7).
Функція polyfit здатна будувати як інтерполюючий, так і апроксимуючий степеневий поліном. Якщо кількість вузлів, тобто кількість елементів векторів x та y, перевищує значення n, то відповідний поліном буде апроксимуючим (дивись (3.4)). Оператор, який у тексті програми є коментарем, може задати кількість вузлів, що значно перевищує найбільший порядок полінома – 22. Отже, щоб програма будувала апроксимуючі поліноми, досить прибрати символ % на початку відповідного оператора.
Лабораторна робота 3. Інтерполяція та апроксимація функції Рунге в системі matlab
1. Набрати у системі MATLAB та відлагодити текст програми інтерполяції (апроксимації) функції Рунге.
2. Вивчити наростання похибок інтерполяційного полінома зі збільшенням його степеня.
3. Переконатись у зменшенні похибок апроксимаційного полінома зі збільшенням його степеня.
4. Пояснити всі оператори MATLAB-програми.
Деякі графічні результати роботи програми показані на рис. 7а та 7б.
Перший графік демонструє значні розбіжності між інтерполюючим поліномом 19-го степеня та функцією Рунге у проміжках між вузлами інтерполяції. На другому графіку апроксимуючий поліном того ж степеня значно краще відтворює функцію Рунге.
Контрольні завдання до розділу 3
1. Яка умова існування єдиного розв’язку задачі поліноміальної інтерполяції?
2. Назвіть базисні функції степеневої інтерполяції.
3. В чому полягала проблема Рунге?
4. Чим відрізняється апроксимація степеневим поліномом від інтерполяції степеневим поліномом?
Розділ 4. Сплайн-інтерполяція та сплайн-апроксимація.
Степеневі поліноми можуть добре наближувати лише досить гладкі функції. У разі функцій, що складно поводять себе в інтервалі наближення, універсальним засобом відтворення є сплайни, теорія і практика яких була створена порівняно недавно, у 60-70-ті роки минулого століття.
Ідея сплайн-інтерполяції полягає в побудові поліномів між парами сусідніх вузлів інтерполяції, причому для кожної пари вузлів будується свій поліном. Якщо порядок полінома більше двох, то двох рівнянь у вузлах замало для визначення коефіцієнтів полінома. Невистачаючі рівняння отримують з умов рівності у вузлах похідних сусідніх поліномів.
Найпоширеніший у практиці є кубічний сплайн, де всі поліноми степеневі третього степеня. Складемо рівняння, з яких визначають коефіцієнти кубічного сплайна.
Нехай інтерпольована функція задана у m точках з координатами xi, fi, і=0,...,m. Кубічний сплайн – це послідовність кубічних поліномів
(4.1)
де
.
Загальна кількість коефіцієнтів кубічного сплайна становить 4m.
Умови неперервності сплайна в усіх вузлах – це 2m рівнянь:
. (4.2)
Ще 2(m-1) рівнянь – це умови неперервності першої та другої похідних поліномів у всіх вузлах, крім першого і останнього:
. (4.3)
Невистачаючі 2 рівняння можна отримати з крайових умов на другі похідні першого і останнього поліномів, як правило, нульові:
(4.4)
Рівняння (4.2)-(4.4) утворюють СЛАР порядку 4m, єдиний розв’язок якої – шукані 4m коефіцієнтів сплайна (4.1). Таким чином, з точки зору обчислень кубічна сплайн-інтерполяція не відрізняється від інтерполяції одним поліномом, тільки розмір СЛАР у m раз більший. Але інтерполяція послідовністю поліномів невисокого степеня може як завгодно точно відтворити найскладнішу функцію. Точність відтворення залежить від кількості заданих вузлів (m+1).
Кубічний сплайн має яскраву фізичну аналогію. На пласку дошку нанесемо систему координат і заб’ємо цвяхи у точки, що відповідають вузлам інтерполяції. Вільно розмістимо між цвяхами гнучку сталеву лінійку, щоб вона один раз торкалась кожного цвяха. Лінійка набуде такої форми, що енергія її деформації буде мінімальна. Доведено, що форма лінійки відповідає кубічному сплайну. Звідси походить термін spline – гнучка креслярська лінійка для проведення гладких кривих між точками.
Описаний метод побудови кубічного сплайна можна поширити на сплайн степеня n>0. Кількість коефіцієнтів сплайна – (n+1)m. Ці коефіцієнти треба визначити з такої ж кількості рівнянь. До 2m рівнянь неперервності сплайна додаються (n-1)(m-1) рівнянь неперервності похідних до (n-1)-го порядку, всього – (n+1)m-(n-1) рівнянь. Невистачає (n-1) рівнянь. Їх можна отримати, задаючи нульові значення деяких похідних першого і останнього поліномів у вузлах 0 та m. Маємо СЛАР порядку (n+1)m, єдиний розв’язок якої – шукані коефіцієнти сплайна.
Покажемо тепер, як збудувати апроксимаційний кубічний сплайн (4.1), який не обов’язково проходить через задані точки.
Умови неперервності сплайна (4.2) запишемо як рівність значень сусідніх поліномів у всіх вузлах, крім крайніх:
. (4.5)
Умови (4.3) залишаються без змін. До них можна додати певну кількість крайових умов, подібних до (4.4). Сумарна кількість рівнянь буде перевищувати 3(m-1), але менша за необхідні 4m.
Коефіцієнти сплайна повинні забезпечувати мінімум суми квадратів похибок у вузлах, як це було для апроксимуючого полінома (дивись розд. 3):
. (4.6)
Відомий спеціаліст зі сплайн-апроксимації, американський математик Карл де Бур (Carl de Boor) довів, що і в цьому разі побудова сплайна зводиться до розв’язування СЛАР порядку 4m.
Побудувати апроксимуючий сплайн складніше, ніж інтерполюючий. Але він може добре згладжувати випадкові похибки значень функції у вузлах. Ми переконаємось у цьому під час виконання лабораторної роботи.
