Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторна робота №3 методичка.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
354 Кб
Скачать
☆

Хід роботи Поліноміальна регресія

Одна з найбільш відомих апроксимацій — поліноміальна. У системі 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 котра представляє собою сильно деформовано синусоїду.