- •Запорізький національний технічний університет
- •Зміст та оформлення лабораторних робот
- •Лабораторна робота № 1 Рішення нелінійних рівнянь методами половинного розподілу та хорд
- •1.1 Мета роботи
- •1.2 Завдання на лабораторну роботу
- •Основні теоретичні відомості
- •1.3.2 Функції MatLab для рішення нелінійних рівнянь
- •Індивідуальні завдання до лабораторної роботи
- •1.5 Завдання на самостійну роботу
- •1.6 Контрольні питання
- •Лабораторна робота № 2 Рішення нелінійних рівнянь методами Ньютона та простих итерацій
- •2.1 Мета роботи.
- •2.2 Завдання на лабораторну роботу
- •2.3 Основні теоретичні відомості
- •2.3.2 Метод простої ітерації (метод послідовних повторень)
- •Індивідуальні завдання до лабораторної роботи
- •2.5 Завдання на самостійну роботу
- •2.6 Контрольні питання
- •Лабораторна робота №3 Тема: рішення систем лінійних алгебраїчних рівнянь
- •3.1 Мета роботи
- •3.2 Порядок виконання лабораторної роботи
- •3.3 Основні теоретичні відомості
- •3.3.1 Прямі методи і їх реалізація в пакеті MatLab
- •3.3.2 Ітераційні методи і їх реалізація в пакеті MatLab
- •Контрольні питання
- •Лабораторна робота №4 Тема: Побудова 3d- графіків у системі matlab
- •4.1 Мета роботи
- •4.2 Порядок виконання лабораторної роботи
- •4.3 Основні теоретичні відомості
- •Сохранение в файлах графических изображений matlab
- •4.5 Завдання на самостійну роботу
- •4.6 Контрольні питання
- •5 Лабораторна робота №5 Тема: Решение систем нелинейных уравнений
- •5.1 Мета роботи.
- •5.3.3 Метод простых итераций
- •Рішення систем нелінійних рівнянь за допомогою функції fsolve
- •5.4 Индивидуальные задания к лабораторной работе
- •5.5 Завдання на самостійну роботу
- •5.6 Контрольні питання
- •Список літератури
Зміст та оформлення лабораторних робот
Лабораторні роботи з дисципліни “ Обчислювальна техніка та програмування за фахом ” мають мету вивчення чисельних методів, які застосовуються при розв’язуванні інженерних задач за фахом, практичного закріплення знань з основ алгоритмізації та програмування, а також вивчення можливостей системи MatLab для розв’язання означених задач. Для виконання лабораторних робот передбачається використання знань, що отримані в курсах “Обчислювальна техніка та програмування” та “Вища математика”.
В умовах кредитно-модульної системи навчальна дисципліна “ Обчислювальна техніка та програмування за фахом ” у 3-ому семестрі відповідає: 32 годинам лабораторних робот та 38 годинам самостійної роботи.
По кожній лабораторній роботі оформлюється звіт, він мусить відповідати діючим стандартам ЗНТУ. Загальна структура звіту по лабораторній роботі винна бути такою:
тема роботи;
формулювання задачі;
ручний розрахунок за формулами алгоритму метода, що досліджується;
текст програми;
протокол розв’язування задачі (в вигляді скрипта) за допомогою: а) власних програм; б)команд та функцій системи MatLab;
протокол, що містить отриманні результати ;
висновки.
Лабораторна робота № 1 Рішення нелінійних рівнянь методами половинного розподілу та хорд
1.1 Мета роботи
Вивчення чисельних методів рішення нелінійних рівнянь та придбання практичних навиків роботи в системі MatLab.
1.2 Завдання на лабораторну роботу
Для виконання лабораторної роботи необхідно:
1. Вивчити алгоритми ітераційних методів(половинного розподілу та хорд).
2. Скласти програми-функції для знаходження коренів будь-якого нелінійного рівняння методами половинного розподілу та хорд з заданою точністю.
3. Виконати в MatLab індивідуальні завдання наведені в розділі 1.4 та завдання на самостійну роботу – розділ 1.5.
4. Зберегти результати роботи (програми, протоколи обчислень, графіки).
5. Скласти звіт.
Основні теоретичні відомості
Найбільш загальний вигляд нелінійного рівняння:
f(x)= 0, (1.1)
де
функція f(x) визначена і безперервна на
кінцевому або
Коренем
рівняння називається таке значення
,
при якому
.
Корінь
називається простим, якщо
,
інакше корінь називається кратним. Ціле
число k
називається кратністю кореня, якщо при
x =
разом з функцією дорівнюють нулю її
похідні до (k-1|)
порядку включно:
Постановка
задачі
обчислення наближеного значення кореня
із
точністю ε: знайти таке значення x, що
.
Рішення
задачі розбивається на два етапи: на
першому етапі здійснюють локалізацію
кореня, на другому етапі проводять
ітераційне уточнення кореня. На етапі
локалізації кореня знаходять достатньо
вузькі відрізки (або відрізок, якщо
корінь єдиний), які містять один і лише
один корінь рівняння
.
На другому етапі обчислюють
наближене значення кореня із заданою
точністю. Часто замість відрізка
локалізації досить вказати початкове
наближення до кореня.
Методи ітераційного уточнення кореня
Метод бісекції (розподілу навпіл)
Нехай
[а,b] – відрізок локалізації. Припустимо,
що функція f(x) безперервна на [а,b] і на
кінцях набуває значень різних знаків
.
Алгоритм
методу розподілу навпіл полягає в
побудові послідовності вкладених
відрізків, на кінцях яких функція набуває
значень різних знаків. Кожен наступний
відрізок отримують діленням навпіл
попереднього. Опишемо один крок ітерацій
методу. Нехай на
k-ом кроці
знайдений відрізок
такий, що
.
Знайдемо середину відрізка
.
Якщо
,
то
– корінь і задача вирішена. Якщо ні, то
из двух половин відрізка вибираємо той,
на кінцях якого функція має протилежні
знаки:
,
якщо
,
,
якщо
,
Рисунок 1.1 – Метод розподілу навпіл
Критерій
закінчення ітераційного процесу:
якщо довжина відрізку локалізації
менша
, то ітерації припиняють і як значення
кореня із заданою точністю приймають
середину відрізка.
Теорема
про збіжність методу бісекцій.
Нехай функція f(x) безперервна на [а,b] і
на кінцях набуває значень різних знаків
.
Тоді
метод сходиться і справедлива оцінка
погрішності:
.
З останнього равенства легко отримати апріорну оцінку кількості кроків, необхідних для досягнення заданої точності:
звідки
отримуємо
Приклад програми-функції, яка вирішує рівняння методом розподілу навпіл, наведений в Лістингу 1.1.
Лістинг 1.1. Файл Bisection|.m
function [x,k]=Bisection(f,a,b,eps)
%Data Input f – ім’я функції;
% a і b – ліва і права границі інтервалу локалізації;
% eps – точність;
%Data Output x – корінь;
% k – кількість ітерацій.
Ya= feval(f,a); yb= feval(f,b);
if ya*yb>0
error(‘[a, b] не є інтервалом локалізації’);
end;
k=0;
while abs(a-b)>eps
k=k+1; x=(a+b)/2; fx=feval(f,x);
if fx==0
break;
elseif fa*fx<0
b=x; fb=fx;
else
a=x; fa=fx;
end;
end;
Метод хорд
В деяких випадках декілька більшою швидкістю збіжності володіє метод хорд, у якого на другому етапі при виборі чергового наближення усередині відрізка, що містить корінь, враховується величина нев’язки на кінцях відрізка: точка вибирається ближче до того кінця, де нев’язка менша.
Геометричний
сенс полягає в заміні кривої
хордою. Чергове
наближення знаходиться
як точка пересічення хорди із
віссю
Рисунок 1.2 – Метод хорд
Якщо [a,b] – відрізок, що містить корінь, то рівняння хорди
Для
точки пересічення
хорди із
віссю
маємо
,
береться
за чергове наближення до кореню. Далі
вибирається той з
проміжків, на кінцях якого функція має
значення різних знаків, і т.д. При цьому,
якщо функція
і її друга похідна
зберігають знак на даному проміжку, то
отримані наближення сходитимуться до
кореню монотонно.
В
цьому випадку у|
всіх отриманих проміжків один кінець
буде спільним,
саме той, на якому збігаються знаки
функції і другої похідної. Цей кінець
називають нерухомим, а протилежний
кінець відрізку приймають за початкове
наближення до кореню. Нехай
с – той з кінців відрізку
,
для якого виконується умова
,
а
-
початкове значення (протилежний кінець
відрізку), тоді ітерації проводимо по
формулі:
,
k=0,1,2,…
