- •Чисельні методи
- •Загальні положення
- •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 Завдання до лабораторної роботи
- •Варіанти завдань
2.4 Приклад
2.4.1 Покроковий розв’язок за допомогою метода Гауса
2.4.2 Приклад функції, що реалізує зворотній хід методу Гауса
function X=backward(A,B) // Знаходимо розв’язок системи – вектор X, А – верхня трикутна матриця
n=length(B)
X=zeros(n,1) // Формує масив нулів [n х 1]
X(n)=B(n)/A(n,n) // Ділимо праву частину останнього рівняння системи на коефіцієнт при x лівої частини рівняння
for k=n-1:-1:1
X(k)=(B(k)-A(k,k+1:n)*X(k+1:n))/A(k,k) // Використовуючи попередньо обчислені х знаходимо розв’язки системи
end
end
A = [-0.87 0.27 -0.22 -0.18 -1.21;
-0.21 -1 -0.45 0.18 0.33;
0.12 0.13 -0.33 0.18 0.48;
0.33 -0.41 0 -1 1.21;]
X=backward(A,B)
Результат:
A =
-0.8700 0.2700 -0.2200 -0.1800
0 -1.0652 -0.3969 0.2234
0 0 -0.4227 0.1903
0 0 0 -1.1188
B =
-1.2100 0.6221 0.4108 0.6017
X =
1.7332
-0.2445
-1.2140
-0.5378
2.5 Зміст звіту
Завдання;
Текст програми;
Результати розрахунків;
Перевірка за допомогою стандартних функцій MatLab;
Перевірка за допомогою підстановки розв’язку у систему;
Висновок відносно оцінки точності обраного методу.
Лабораторна робота №3 розв’язок нелінійних рівняннь
3.1 Побудування графіка в Matlab
Графіки в MatLab будуються в окремих вікнах. В одому вікні можна побудувати як один так і декілько графіков.
Треба знати, що MatLab будує графіки функцій за рядом точок, з’єднуючи їх відрізками прямих. Отже треба задати інтервал аргумента х з шагом (наприклад х=0:0.1:10), f потім використати команду побудування графіків plot (наприклад plot(sin(x))). Також відзначимо що функції можуть бути задані змінними, що не мають чітко вказаного аргумента у вигляді у(х):
>> y=sin(x);
Така можливість обумовлена тим, що змінні є векторними. Тож можна використати ще одну із форм функції plot, яка дає можливість побудувати відразу декілько графіків:
>> plot(x1,y1,x2,y2,x3,y3)
де х1, х2, х3 – вектори аргументів функції, а у1, у2, у3 – вектори значень функції, графіки яких будуються.
3.2 Розв’язок рівняннь засобами Matlab
fzero('имя',x0), fzero('имя',x0,eps), fzero ('имя', x0, eps , trace), fzero ('имя', x0, eps, trace,p1,...,p10) – пошук дійсних коренів функції однієї змінної при начальному приближенні х0 (можна взятии й у формі [a,b] при умовіf(a) x f(b) < 0) з відносною заданною похибкою; trace=1 – виведення проміжних результатів. Використовується метод дихотоммії, хорд і зворотньої квадратичної інтерполяції.
Процес пошуку кореня можна побачити з приклада: >>> fzero('sin',6,[],1)
Func evals x f(x) Procedure
1 6 -0.279415 initial
2 5.83029 -0.437567 search
3 6.16971 -0.113236 search
4 5.76 -0.499642 search
5 6.24 -0.0431719 search
6 5.66059 -0.583146 search
7 6.33941 0.0561963 search
Looking for a zero in the interval [5.6606, 6.3394]
8 6.27974 -0.00344052 interpolation
9 6.28319 1.70244e-006 interpolation
10 6.28319 -3.35667e-012 interpolation
11 6.28319 -2.44921e-016 interpolation
12 6.28319 2.41961e-015 interpolation
ans = 6.28318530717959
>> 2*pi
ans = 6.28318530717959