Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metodichni_vkazivki_do_vikonannya_laboratornikh...docx
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
5.73 Mб
Скачать

Хід роботи

Поліноміальна регресія

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

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

Рис. 9.3. Результат дослідження

Інтерполяція рядом Фур’є

Під інтерполяцією звичайно мають на увазі обчислення значень функції 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)

Рис. 9.4. Інтерполяція рядом Фур’є

На малюнку ілюструється ефективність даного методу інтерполяції на прикладі функції sin(x).^3 котра представляє собою сильно деформовано синусоїду.

Лінійна інтерполяція та інтерполяція кубічним сплайном

Лінійною інтерполяцією називають інтерполяцію алгебраїчним двочленом функції , заданої у двох крапках і відрізка . У випадку якщо задані значення в декількох крапках, функція заміняється кусочно-лінійною функцією.

Для одномірної інтерполяції таблично заданих функцій в Matlab використовується функція interp1(x,y,xi), яка повертає вектор yi, що містить елементи, відповідні до елементів xi і отримані лінійною інтерполяцією векторів x і y.

Виконаємо інтерполяцію функції графік, що й відображає, отриманої функції:

>> x=[0:0.5:5];

>> y=exp(sin(x));

>> xi=[0:0.01:5];

>> yi=interp1(x,y,xi);

>> plot(x,y,'*',xi,yi);

Рис. 9.5. Графік інтерполюючої функції

Так як при лінійній інтерполяції крапки просто послідовно з'єднуються відрізками прямих, графік кривої, що інтерполює, виходить не гладким. У цьому випадку, набагато кращі результати може дати сплайн-інтерполяція.

В Matlab кубічна сплайн-інтерполяція реалізується наступною функцією:

  • yi = spline(x,y,xi) — використовує вектори х і y аргументи, що містять, функції і її значення, і вектор xi, що задає нові крапки; для знаходження елементів вектора yi використовується кубічна сплайн-інтерполяція;

  • рр = spline(x.y) — повертає рр-форму сплайна, використовувану у функції ppval і інших сплайн-функціях.

Реалізація сплайн-інтерполяції функції :

>> x=[0:5];

>> y=exp(sin(x));

>> xi=[0:0.1:5];

>> yi=spline(x,y,xi);

>> plot(x,y,'*',xi,yi);

Рис. 9.6. Інтерполяція сплайнами

Наближення функцій за допомогою Basic Fitting

Використовуючи лінійну й поліноміальну апроксимації, одержати емпіричні формули для функції y=f(x) , заданої в табличному вигляді:

>> x=[0.75,1.50,2.25,3.00,3.75]

>> y=[2.50,1.20,1.12,2.25,4.28]

>> plot(x,y,'o')

Графік зображено на малюнку:

Для запуску Basic Fitting потрібно перейти до підменю Tools.

Рис. 9.7. Вихідні дані для розрахунків

Рис. 9.8. Приклад застосування Basic Fitting для визначення функції наближення