Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пос_бник АМО.doc
Скачиваний:
24
Добавлен:
12.07.2019
Размер:
992.26 Кб
Скачать

Практичне заняття 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 точках з координатами xifiі=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.

Побудувати апроксимуючий сплайн складніше, ніж інтерполюючий. Але він може добре згладжувати випадкові похибки значень функції у вузлах. Ми переконаємось у цьому під час виконання лабораторної роботи.