- •Запорізький національний технічний університет
- •Чисельні методи
- •Використння MatLab
- •Методичні вказівки
- •До лабораторних робіт з курсу
- •«Обчислювальна техніка та програмування за фахом» (Частина 1)
- •Затверджено
- •2.1 Мета роботи 13
- •Зміст та оформлення лабораторних робот
- •Лабораторна робота №1 Програмування в середовищі Matlab
- •1.1 Мета роботи
- •1.2 Завдання до лабораторної роботи
- •1.3 Основні теоретичні відомості
- •1.3.3 Введення і виведення інформації в діалоговому режимі
- •1.3.4 Організація повторення дій
- •1.4 Індивідуальні завдання до лабораторної роботи
- •Контрольні питання
- •Лабораторна робота № 2 Рішення нелінійних рівнянь методами половинного розподілу та хорд
- •2.1 Мета роботи
- •2.2 Завдання до лабораторної роботи
- •Основні теоретичні відомості
- •2.3.1 Методи ітераційного уточнення коренів нелінейних рівнянь
- •2.3.2 Функції MatLab для вирішення нелінійних рівнянь
- •2.4 Індивідуальні завдання до лабораторної роботи
- •2.5 Завдання на самостійну роботу
- •2.6 Контрольні питання
- •Лабораторна робота № 3 Рішення нелінійних рівнянь методами Ньютона та простих итерацій
- •3.1 Мета роботи.
- •3.2 Завдання до лабораторної роботи
- •3.3 Основні теоретичні відомості
- •Метод простої ітерації (метод послідовних повторень)
- •Індивідуальні завдання до лабораторної роботи
- •Лабораторная работа №4 Тема: Рішення систем лінійних алгебраічних рівнянь
- •Прямі методи і їх реалізація в пакеті MatLab
- •Ітераційні методи і їх реалізація в пакеті MatLab
- •4.4 Індивідуальні завдання до лабораторної роботи
- •6.5 Контрольні питання
- •Список літератури
- •Додаток а Індивідуальні завдання до робіт № 4, 5
- •Додаток б. Варіанти завдань для підготовки до модульного контролю по темі «Розв’язання нелінійних рівнянь»
Прямі методи і їх реалізація в пакеті MatLab
В прямих (або точних) методах кількість арифметичних дій, потрібних для отримання розв’язку x системи (4.1) є скінченним числом.
Істотним недоліком прямих методів є накопичення похибок в процесі, оскільки обчислення на будь-якому етапі використовують результати попередніх операцій. Це особливо небезпечно для великих систем, коли різко зростає загальне число операцій, а також для погано обумовлених систем, дуже чутливим до похибок.
Метод Гаусса
Розглянемо метод Гаусса розв’язання системи рівнянь. Прямий хід складається з m-1 кроків виключення.
1
Крок. Виключимо невідоме
із
рівнянь з номерами
j
= 2,3,..m. Припустимо, що
.
Називатимемо його провідним елементом
1-го кроку.
Знайдемо
величини
,
звані
множниками 1-го кроку. Віднімемо послідовно
з другого, третього, ...m-го
рівнянь системи перше рівняння, помножене
відповідно на
.
В
результаті 1-го кроку отримаємо
еквівалентну систему рівнянь:
Аналогічно проводяться слідуючи кроки. Після (m-1)-го кроку виключення отримаємо систему рівнянь
,
матриця якої є верхньою трикутною. На цьому обчислення прямого ходу закінчуються.
Зворотний
хід. Із
останнього рівняння системи знаходимо
.
Підставляючи
знайдене значення
в
передостаннє рівняння, отримаємо
.
Далі
послідовно знаходимо невідомі:
,
i=m-1,
m-2,
…, 1.
Метод Гаусса доцільно використовувати для вирішення систем з щільно заповненою матрицею і порядком системи n ≤ 100. Число арифметичних операцій приблизно рівне (2/3)n2 .
Метод заснований на обчислені оберненої матриці А-1
Система записується у вигляді АХ=В. Тоді, якщо помножити обидві частини цього векторного рівняння зліва на обернену матрицю А-1, отримаємо
Х = А-1В.
Проте, якщо не використовувати економічних схем для обчислення оберненої матриці, цей спосіб також непридатний для практичного вирішення лінійних систем при великих n(наприклад для n =10).
Метод Крамера
Менш трудомістким є метод Крамера, у якому значення невідомих можна отримати за допомогою формули
,
i = 1, 2, … , n,
де матриця Ai формується з матриці A заміною її і-го стовпця на стовпець вільних членів
Можна спробувати використовувати це правило для вирішення систем рівнянь довільного порядку. Проте при великому числі рівнянь потрібно буде виконати величезне число арифметичних операцій. Кількість арифметичних операцій N =(n+1)(n*n!-1)+n. Вже коли n =50, такий об’єм обчислень практично недоступний сучасним комп’ютерам.
Реалізація прямих методів в системі MatLab
У системі MatLab для задачі вирішення системи лінійних рівнянь алгебри, одній з популярних в обчислювальній математиці, передбачені навіть "елементарні" операції.
Так для вирішення системи AX=B (A - матриця коефіцієнтів розмірності n*n, B- вектор правих частин розмірності n, Х векторів-стовпець невідомих) можна використовувати команду зворотного розподілу "\". Наприклад, для розв’язання системи
x1+2 x2+3 x3 = 3 5 x1+4 x2+3 x3 = 9 3 x1+4 x2+3 x3 = 6
задаємо матрицю коефіцієнтів і вектор правої частини
>> A=[1 2 3; 5 4 3; 3 4 3]
A = |
1 |
2 |
3 |
5 |
4 |
3 |
|
3 |
4 |
3 |
>> B=[3 ; 9 ; 6 ]
B = |
3 |
9 |
|
6 |
и виконати
>>X=A\B
Алгоритм розв’язання СЛАР за допомогою оператора \ у MatLab визначається структурою матриці коефіцієнтів системи. Під простотою рішення ховається досить серйозний аналіз структури матриці і використання кращого по точності і швидкодії алгоритму (метод Гаусса, розкладання Холецкого і ін.).
Для отримання оберненої матриці передбачена операція піднесення до ступеня -1 і функція inv(A):
>> A=[1 2 3; 5 4 3; 3 4 3]
|
||||||||||||
>> C=inv(A)
|
||||||||||||
Нагадаємо, що обернення матриці може виявитися корисним при вирішенні системи AX=B у вигляді X=A-1B:
>> B=[3 ; 9 ; 6 ]
|
|||||||
>> X=inv(A)*B
|
Системи з погано обумовленими матрицями
Розглянемо простий приклад: потрібно знайти розв’язок системи:
Розв’язання в MatLab:
>>A=[2 3 3
4 2 3
6 5 6];
>>B=[8;7;7];
>>x=A\b
Warning: Matrix is close to singular or badly scaled.
Results may be inaccurate.
x=1.e+016*
0.9007
1.8014
-2.4019
У командне вікно виводиться попередження про те, що матриця вироджена або погано обумовлена, і розв’язок x. Розв’язок невірний, в чому нескладно переконатися перевіркою, помноживши А на х.
Спроможність
знаходження розв’язку системи лінійних
рівнянь алгебри визначається числом
обумовленості матриці. Перед розв’язуванням
системи має сенс обчислити число
обумовленості матриці системи за
допомогою вбудованої функції cond,
задавши аргументом матрицю А,
де cond(A)=
- відносне число обумовленості системи.
Якщо число обумовленості більше 10, то система є погано обумовленою, оскільки можливе сильне зростання похибки результату.
