logo search
Пос_бник АМО

Практичне заняття 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. Отже, щоб програма будувала апроксимуючі поліноми, досить прибрати символ % на початку відповідного оператора.