- •До виконання лабораторних робіт з дисципліни
- •6.010104 «Професійна освіта (за профілем)»
- •Кривий Ріг – 2014
- •Завдання Для даної матриці виконати такі дії:
- •Порядок виконання роботи
- •Результат виконання роботи
- •Контрольні питання
- •Теоретичні відомості
- •Кінцевий результат виконання роботи
- •Контрольні питання
- •Лабораторна робота 3
- •Завдання
- •Теоретичні відомості
- •Порядок виконання лабораторної роботи
- •Лабораторна робота №4
- •Теоретичні відомості
- •Порядок виконання роботи
- •Лабораторна робота №5
- •Завдання
- •Теоретичні відомості
- •Лабораторна робота №6
- •Теоретичні відомості
- •Порядок виконання роботи:
- •Звіт повинен містити:
- •Запитання до роботи.
- •Лабораторна робота №8
- •Теоретичні відомості
- •Завдання
- •Варіанти завдань:
- •Контрольні питання
- •Лабораторна робота №9
- •Теоретичні відомості
- •Хід роботи
- •Завдання
Хід роботи
Поліноміальна регресія
Одна з найбільш відомих апроксимацій — поліноміальна. У системі 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 для визначення функції наближення
