Хід роботи Поліноміальна регресія
Одна з найбільш відомих апроксимацій — поліноміальна. У системі MATLAB визначені функції апроксимації даних поліномами по методу найменших квадратів — поліноміальної регресії. Це виконує функція, наведена нижче:
polyfit(x.y.n) — повертає вектор коефіцієнтів полінома р(х) ступені n, який з найменшою середньоквадратичною погрішністю апроксимує функцію y(х). Результатом є вектор-рядок довжиною n+1, що містить коефіцієнти полінома в порядку зменшення ступенів х и y рівно n+1, то реалізується звичайна поліноміальна апроксимація, при якій графік полінома точно проходить через вузлові крапки з координатами (х.у), що зберігаються у векторах х і y. А якщо ні, то точного збігу графіка з вузловими крапками не спостерігається;
[p.S] = polyfit(x.y.n) — повертає коефіцієнти полінома р і структуру S для використання разом з функцією polyval з метою оцінювання або прогнозування погрішності;
[p.S] = polyfit(x,y,n,mu) – повертає коефіцієнти полінома р і структуру S для використання разом з функцією polyval з метою оцінювання або передбачення погрішності, але так, що відбувається центрування (нормування) і масштабування х, xnorm = (х - mu(l))/mu(2), де mu(l) = mean(x) і mu(2) = std(x). Центрування й масштабування не тільки поліпшують властивості степеневого багаточлена, одержуваного за допомогою polyval, але й значно підвищують якісні характеристики самого алгоритму апроксимації.
Приклад
>> x=(-3:0.2:3)';
>> y=sin(x);
>> p=polyfit(x,y,3);
>> x=(-4:0.2:4)';
>> y=sin(x);
>> f=polyval(p,x);
>> plot(x,y,'o',x,f)
Рис. 2.3 – Результат дослідження
Графік апроксимуючого полінома третьому ступеня показаний на малюнку суцільною лінією, а крапки вихідної залежності позначені кружками. На жаль, при ступені полінома понад 5 погрішність поліноміальної регресії (і апроксимації) сильно зростає і її застосування без центрування й масштабування стає ризикованим. При поліноміальній регресії вузлові крапки не лягають точно на графік полінома, оскільки їх наближення до нього є найкращим у змісті мінімального середньоквадратичного відхилення.
Інтерполяція рядом Фур’є
Під інтерполяцією звичайно мають на увазі обчислення значень функції f(x) у проміжках між вузловими крапками. Лінійна, квадратична й поліноміальна інтерполяція реалізуються при поліноміальній апроксимації. А для періодичних (і особливо для гладких періодичних) функцій гарні результати може дати їхня інтерполяція тригонометричним рядом Фур'є. Для цього використовується наступна функція:
interpft(x.n) — повертає вектор y, що містить значення періодичної функції, визначені в n рівномірно розташованих крапках. Якщо length(x)= m; і х має інтервал дискретизації dx, то інтервал дискретизації для y становить dy=dx*m/n, причому n не може бути менше, ніж m. Якщо X — матриця, interpft оперує стовпцями X, повертаючи матрицю Y з таким же числом стовпців, як і в X, але з n рядками. Функція y=interpft(x.n.dim) працює або з рядками, або зі стовпцями залежно від значення параметра dim.
>> x=0:10;
>> y=sin(x).^3;
>> x1=0:0.1:10; y1=interpft(y,101);
>> x2=0:0.01:10; y2=sin(x2).^3;
>> plot(x1,y1, 'r'),hold on,plot(x,y, 'b',x2,y2)
Рисунок 3.4 – Інтерполяція рядом Фур’є
На малюнку ілюструється ефективність даного методу інтерполяції на прикладі функції sin(x).^3 котра представляє собою сильно деформовано синусоїду.
