- •Чисельні методи
- •Загальні положення
- •1 Операції з наближеними величинами
- •1.1 Основні терміни і визначення
- •1.2 Робота в MatLab
- •1.2.1 Інтерфейс MatLab
- •1.2.2 Сценарії
- •1.3 Теорія
- •1.3.1 Змінні. Символьні змінні
- •1.3.2 Частинна похідна в точці
- •1.3.3 Основні функції
- •1.4 Порядок виконання роботи а) Для функції №1 з табл.1.1 оцініть відносну та абсолютну похибку обчислення значень функції f в точці (a, b, c). Визначите кількість правильних знаків результату.
- •1.5 Приклад
- •2 Рішення систем лінійних алгебраїчних рівнянь
- •2.1 Теоретичні відомості
- •2.2 Робота в MatLab
- •2.2.1 Введення матриць до MatLab
- •2.2.3 Оператори MatLab
- •2.2.4 Розв’язок матриць стандартними засобами MatLab
- •2.3 Завдання
- •Варіанти завдань:
- •2.4 Приклад
- •2.4.1 Покроковий розв’язок за допомогою метода Гауса
- •2.4.2 Приклад функції, що реалізує зворотній хід методу Гауса
- •Лабораторна робота №3 розв’язок нелінійних рівняннь
- •3.1 Побудування графіка в Matlab
- •3.2 Розв’язок рівняннь засобами Matlab
- •3.3 Завдання до лабораторної работи
- •3.5 Контрольні питання
- •Лабораторна работа 4 Рішення нелінійних рівнянь
- •Варіанти завдання
- •Лабораторна робота № 5 Апроксимація функцій
- •5.1 Робота в Matlab
- •5.1.1. Функція polyfit(X, y, n) - Апроксимація даних поліномом
- •5.1.2. Polyval - Розрахунок полінома
- •5.1.3. Interpft - Апроксимація періодичної функції,
- •5.1.4. Spline - Інтерполяція функції однієї змінної кубічним сплайном
- •5.1.5. Diff - Розрахунок кінцевих різниць та наближене диференціювання
- •5.2 Короткі теоритичні відомості
- •5.2.1. Інтерполяційний многочлен Лагранжа
- •5.2.2. Таблиця різниць
- •5.2.3. Інтерполяційний многочлен Ньютона
- •5.3 Завдання до лабораторної роботи
- •Варіанти завдань
Лабораторна робота № 5 Апроксимація функцій
5.1 Робота в Matlab
5.1.1. Функція polyfit(X, y, n) - Апроксимація даних поліномом
Синтаксис:
p = polyfit(x, y, n)
Опис:
Функція p = polyfit(x, y, n) знаходить коефіцієнти полінома p(x) ступені n, котрий апроксимує функцію y(x) у якості методу найменших квадратів. Виходом є рядок p довжиною n +1, що вміщує коефіцієнти апроксимуючого поліному.
Приклад:
Розглянемо апроксимацію функції помилки erf(x), яка є обмеженою зверху функцією, у той час як апроксимуючі поліноми необмежені, що призводить до помилок апроксимації.
x = (0:0.1:2.5)'; y = erf(x);
розрахуємо коефіцієнти апроксимуючого полінома степеня 6:
p = polyfit(x, y, 6) p = 0.0084 -0.0983 0.4217 -0.7435 0.1471 1.1064 0.0004
розрахуємо значення полінома у точках сітки:
f = polyval(p, x);
сформуємо наступну таблицю даних:
table = [x y f y-f] table =
0 |
0 |
0.0004 |
-0.0004 |
0.1000 |
0.1125 |
0.1119 |
0.0006 |
0.2000 |
0.2227 |
0.2223 |
0.0004 |
0.3000 |
0.3286 |
0.3287 |
-0.0001 |
0.4000 |
0.4284 |
0.4288 |
-0.0004 |
.... |
.... |
.... |
.... |
2.1000 |
0.9970 |
0.9969 |
0.0001 |
2.2000 |
0.9981 |
0.9982 |
-0.0001 |
2.3000 |
0.9989 |
0.9991 |
-0.0003 |
2.4000 |
0.9993 |
0.9995 |
-0.0002 |
2.5 000 |
0.9996 |
0.9994 |
0.0002 |
З таблиці видно, що на відрізку [0 2.5] точність апроксимації знаходиться у межах 3-4 знаків; побудуємо графіки функції та апроксимуючого полінома на відрізку [0 5].
x = (0:0.1:5)'; y = erf(x); f = polyval(p, x); plot(x, y, 'ob', x, f, '-g'), » axis([0 5 0 2])
З аналізу графіка випливає, що апроксимація за межами відрізка [0 2.5] розходиться.
Алгоритм:
Апроксимація поліномом пов’язана з розрахунком матриці Вандермонда V, елементами якої є базисні функції
,
та з подальшим розв’язком системи лінійних рівнянь
Vp = y.
Користувач може самостійно внести зміни в М-файл polyfit, щоб застосувати інші базисні функції.
5.1.2. Polyval - Розрахунок полінома
Синтаксис:
y = polyval(p, s) Y = polyval(p, S)
Опис:
Функція y = polyval(p, s), где p = [p1 p2 ... pn pn+1] - вектор коефіцієнтів полінома p(x) = p1xn + p2xn-1 + ... + pnx + pn+1, розраховує значення цього полінома у точці x = s.
Функція Y = polyval(p, S), де S - одномірний або двумірний масив, розраховує значення цього полінома для кожного елементу масива, тому size(Y) = size(V).
Приклад:
Розрахуємо значення полінома p(x) = 3x2 + 2x +1 у точці x = 5.
p = [3 2 1] p = 3 2 1 y = polyval(p, 5) y = 86