Professional Documents
Culture Documents
Лабораторна Робота 3 (Частина 2)
Лабораторна Робота 3 (Частина 2)
1
x2 a23
( 2)
x3 a24
( 2)
x4 b2( 2) , (4)
a2(1j) b2(1)
де a2( 2j) (1)
, b2( 2) (1)
, ( j 2 ).
a22 a22
Виключаючи тепер x2 таким же способом, яким виключали x1 , прийдемо до
наступної системи рівнянь:
a33
( 2)
x3 a34
( 2)
x4 b3( 2) ,
( 2) (5)
a43 x3 a44 x4 b4 ,
( 2) ( 2)
де aij( 2) aij(1) ai(21) a2( 2j) ; bi( 2) bi(1) ai(21) b2( 2) , (i, j 3) .
Поділивши коефіцієнти першого рівняння системи (5) на a33
(2)
0 , одержимо
рівняння
x3 a34
( 3)
x4 b3(3) , (6)
a3( 2j )
b3( 2)
де a3(3j) ( 2) ( 2)
, ( j 3 ).
, b3(3)
a33 a33
Виключаючи тепер x3 аналогічним чином, будемо мати рівняння
(3)
a44 x4 b4(3) , (7)
де
aij(3) aij( 2) ai(22) a2(3j) , bi(3) bi( 2) ai(22) b2(3) , (i, j 4) .
Звідси знаходимо
b4(3)
x4 ( 3)
b4( 4) .
a44
Решта невідомих послідовно знаходяться із рівнянь (6), (4), (2):
x3 b3(3) a34
( 3)
x4 ,
x2 b2 a23 x3 a24
( 2) ( 2) (3)
x4 ,
x1 b1(1) a12
(1)
x2 a13
(1)
x3 a14
(1)
x4 .
Таким чином, алгоритм методу Гаусса зводиться до приведення матриці системи (1)
до трикутного вигляду (прямий хід) і послідовного визначення невідомих x4 , x3 , x2 , x1
(зворотний хід).
Аналогічним чином метод Гаусса застосовується до розв’я-зування систем лінійних
алгебраїчних рівнянь, що містять n рівнянь з n невідомими.
LU метод розв’язку СЛАР.
2
3
Ітераційні методи розв’язування систем лінійних алгебраїчних рівнянь. Метод
простої ітерації
При великій кількості невідомих схема методу Гаусса, яка дає точний розв’язок
системи стає досить складною. Тому іноді зручніше користуватися наближеними
методами. Одним із таких методів є метод простої ітерації.
Нехай потрібно знайти розв’язок лінійної системи
a11 x1 a12 x2 a1n xn b1 ,
a21 x1 a22 x2 a2 n xn b2 ,
(8)
. . . . . . . . . . . . . . . . . . . . . . . . . .
an1 x1 an 2 x2 ann xn bn .
Ввівши в розгляд матриці
a11 a12 a1n x1 b1
a a22
a2 n
x2 b
A 21 , X , B 2 ,
an1 an 2 ann xn bn
систему (8) можна записати у вигляді:
4
AX B . (9)
Припускаючи, що діагональні елементи
aii 0 ( i 1, n ),
розв’яжемо перше рівняння системи (8) відносно x1 , друге – відносно x2 і т.д. Тоді
отримаємо еквівалентну систему
x1 1 11x2 13 x3 1n xn ,
x x x x ,
2 2 21 1 23 3 2n n
(10)
xn n n1 x1 n 2 x2 n , n 1 xn 1 ,
bi a
де i , ij ij , при i j і ij 0 при i j ( i, j 1, n ).
aii aii
Ввівши в розгляд матриці
11 12 1n 1
22 2 n
21 і 2,
n1 n 2 nn n
систему (10) можна записати в матричній формі:
X X . (11)
Розв’язок системи (11) будемо знаходити методом послідовних наближень. За
початкове (нульове) наближення приймемо, наприклад, стовпчик вільних членів X (0) .
Далі послідовно знаходимо інші наближення:
X (1) X ( 0 ) (перше наближення),
X ( 2 ) X (1) (друге наближення) і т.д.
Взагалі кажучи, будь-яке (k 1) -е наближення обчислюють за формулою:
X ( k 1) X ( k ) ( k 0, 1, 2, ). (12)
Якщо послідовність наближень X , X , X , …, X ( 0) (1) ( 2) (k )
, … має границю
X lim X ( k ) , то ця границя і буде розв’язком системи (11).
k
5
Виберемо довільним чином початкові наближення коренів x1(0) , x2(0) , …, xn(0) . Далі,
вважаючи, що k -ті наближення xi(k ) коренів відомі, згідно методу Зейделя будуємо (k 1) -
і наближення за формулами:
n
x1( k 1) 1
j 1
(k )
1jxj ;
n
x2( k 1) 2 21x1( k 1)
j 2
(k )
2 jxj ;
...............................
i 1 n
xi( k 1) i
j 1
( k 1)
ij x j j i
(k )
ij x j ;
...............................
n 1
xn( k 1) n
j 1
( k 1)
nj x j nn xn( k ) .
k 1
X X
* (k )
. (15)
1
Для оцінки точності обчислень методом Зейделя можна вико-ристати оцінки (14) і
(15) або більш точну
k
| xi xi( k ) | max | x (j1) x (j0) | , ( i 1, n ),
1 j
n
|
j i
ij |
де max i 1
m
.
|
i
1 ij |
j 1
6
x φ 1 ( x, y )
y φ 2 ( x, y )
Припустимо, що розв'язок систем (16) міститься на деякому замкнутому прямокутнику D, і
при чому він є єдиним ( D {( x * , y * ) : a1 x * b1 , a2 y * b2 } ). Вибравши в якості
початкового наближення довільну точку ( x 0 , y 0 ) D , і використавши формули:
x k 1 φ1 ( x k , y k )
y k 1 φ 2 ( x k , y k )
отримаємо послідовність точок ( xk , yk ), k=0,1,2,…, яка збігається до шуканого розв'язку системи
(16). Умова збіжності методу ітерації та умова зупинки ітераційного процесу із заданою точністю
ε має вигляд:
| x k 1 x k | ε
(17)
| y k 1 y k | ε
Чисельний метод Ньютона для розв’язання систем нелінійних рівнянь.
Розглянимо систему, яка складається з двох рівнянь, серед яких є хоча б одне нелінійне:
f ( x, y ) 0
(18)
g ( x, y ) 0
де f(x,y) та g(x,y) неперервні та диференційовні функції.
Розв'язок даної системи будемо шукати використовуючи метод Ньютона. Для цього,
припустимо, що нам вже відоме п-е наближення x n , y n для невідомих х та у. Більш точне
наближення xn1 , y n1 , згідно методу Ньютона, можна отримати наступним чином. Покладемо
xn1 xn Δxn , yn1 yn Δyn (19)
і підставимо дані значенняч у систему (18). В результаті отримаємо:
f ( x n Δx n , y n Δy n ) 0,
g ( x n Δx n , y n Δy n ) 0
Далі, розклавши функції f(x,y) та g(x,y) в околі точки з координатами ( x n , y n )у ряд
Тейлора, та обмежившись лише лінійними членами відносно Δxn , Δy n , будемо мати:
f ( x n Δx n , y n Δy n ) f ( x n , y n ) Δx n f x ( x n , y n ) Δy n f y ( x n , y n ) 0,
(20)
g ( x n Δx n , y n Δy n ) g ( x n , y n ) Δx n g x ( x n , y n ) Δy n g y ( x n , y n ) 0
Система (20) являє собою систему рівнянь відносно невідомих приростів Δxn , Δy n . Для
зручності, перепишемо її у наступному вигляді:
Δx n f x ( x n , y n ) Δy n f y ( x n , y n ) f ( x n , y n ),
(21)
Δx n g x ( x n , y n ) Δy n g y ( x n , y n ) g ( x n , y n )
Дану систему можна розв'язати будь-яким з відомих нам методів, наприклад методом
Гауса або Крамера (відносяться до точних чисельних методів). В нашому випадку доцільніше
скористатись методом Крамера, виходячи з того, що розмірність матриці не є великою. Отже,
ввівши позначення для функцій та для частинних похідних у точках
, розв'язок системи
(21) можна записати у наступному вигляді:
fn f yn f xn f n
gn g yn g gn
Δx n , Δy n xn
f xn f yn f xn f yn
g xn g yn g xn g yn
7
Далі, знайдені значення Δxn , Δy n підставляємо в формули (19) і отримуємо наступне (п+1)
-е наближення.
Таким чином, застосування методу Ньютона для знаходження розв'язку системи
нелінійних рівнянь призводить до вирішення сукупності систем лінійних рівнянь виду (21). Однак
для забезпечення збіжності методу Ньютона до шуканого рішення необхідно вдало вибрати
початкове наближення, яке найчастіше визначають графічним способом.
Ітераційний процес знаходження розв'язку системи (18) за методом Ньютона є нескінченним.
Тому для знаходження розв'язку з заданою точністю ε, як правило теж використовують умову
зупинки (17).
Завдання.
Завдання 1. (Прямі методи розв’язання СЛАР). Розв’язати систему лінійних
алгебраїчних рівнянь Axb запропонованими методами. Порівняти дані методи за
кількістю операцій.
А) методом Гауса;
Б) за допомогою LU-розкладу.
8
9
10
Завдання 2. (Ітераційні методи розв’язання СЛАР). Розв’язати систему лінійних
алгебраїчних рівнянь Axb запропонованими методами з точністю до 10-6. (Матриці A і b
брати як в завданні 1):
1) методом Якобі; 2
2) методом Зейделя.
Завдання 3. (Чисельні методи розв’язання системи нелінійних рівнянь). Розв’язати
систему нелінійних рівнянь методом простої ітерації з точністю до 10-6.
Варіант 1 Варіант 2 Варіант 3
0.3x 0.6 y 8.5 x 1 0,
2 0.5 x 0.6 y 8.5 x 3 0, 2 x 2 6.2 y 16.4 x 1 0,
2 y 0.06 x3 1 0. 3 y 0.07( x 2) 2 2 0. 2 y 0.08 x 0.4 0.
Варіант 4 Варіант 5 Варіант 6
0.3x 2 0.4 y 1.3x 0.7 0, 2 x 2 0.7 y 5.2 x 2 0, 0.3 x 1 2.7 y 3.2 x 0.5 0,
3 3
2.5 y 0.01 x 1 4.3 0. 4 y 0.07 x 1 0. 2 y 0.6 x 3 0.
Варіант 7 Варіант 8 Варіант 9
5.3x 0.9 y 2 x 0.4 0,
2 1.3x 2.5 y 4 x 0.5 0,
2 6.3x3 7.5 y 4.2 x 2.5 0,
0.9 y 3 0.5 x y 2 0. 1.9 y 2 0.6 x y 7 0. 1.8 y 3 7.6 x y 10 0.
Варіант 10 Варіант 11 Варіант 12
8.3x 1.5 y 5.2 x 7.5 0,
3 2 sin x 3 y 1, 3 sin x 2 y 1.4,
2.5 y 3 3.8 x y 5 0. x cos y 2. 2 x 1.5 cos y 3.
Варіант 13 Варіант 14 Варіант 15
1.2 sin x 1.7 y 2.3, 1.3 sin x 1.6 y 2.4, 1.9 sin x 2.1y 3.4,
0.3x 1.4 cos y 0.1. 0.4 x 1.3 cos y 0.2. 0.4 x 0.7 cos y 1.8.
Варіант 16 Варіант 17 Варіант 18
1.4 sin y 1.2 x 3.1, 1.7 sin y 1.8 x 4.3, 1.8 sin y 1.9 x 4.4,
0.5 y 1.2 cos x 0.3. 0.8 y 0.3 cos x 1.5. 0.9 y 0.4 cos x 1.6.
Варіант 19 Варіант 20
1.5 sin y 1.1x 4.3, 1.6 sin y 1.7 x 4.2,
0.6 y 1.4 cos x 0.7. 0.7 y 1.8 cos x 0.5.
Завдання 4. (Чисельні методи розв’язання системи нелінійних рівнянь). Розв’язати
систему нелінійних рівнянь методом Ньютона з точністю до 10-6.
Завдання 5. Розв’язати СЛАР та нелінійне рівняння засобами Simulink.
Скласти програму для обчислення даного завдання у MatLab+Simulink. Фрагмент
програмного коду, що забезпечує основні обчислення, у вигляді скріншотів разом із
розрахунками вставити у звіт лабораторної роботи.
11
Зробити висновки (порівняти методи за кількістю ітерацій).
Завдання 1
А) Для розв’язку задачі методом Гауса маємо
0.80 x1 0.10 x2 0.10 x3 1840,
0.20 x1 0.70 x2 0.10 x3 1860, (1)
0.05x 0.05x 0.90 x 236.
1 2 3
12
Маємо результат:
Маємо результат:
13
Завдання 2
А) Розв’яжемо (1) методом простих ітерацій (методом Якобі). Для даної системи
виконуються умови збіжності ітераційного процесу: | 0.8 || 0.1 | | 0.1 |, | 0.7 || 0.2 | | 0.1 |,
| 0.9 || 0.05 | | 0.05 | . Тому розв’яжемо перше рівняння системи (1) відносно х1, друге –
відносно х2, а третє – відносно х3:
1
x1 0.80 (1840 0.10 x2 0.10 x3 ),
x1( k 1) 2300 0.1250 x2( k ) 0.1250 x3( k ) ,
1
x2 (1860 0.20 x1 0.10 x3 ), або x2( k 1) 2657.1429 0.2857 x1( k ) 0.1429 x3( k ) , (2)
0.70 ( k 1)
x3 262.2222 0.0556 x1 0.0556 x2 .
(k ) (k )
1
x3 0.90 (236 0.05 x1 0.05 x2 ).
За нульові наближення приймемо відповідні значення вільних членів системи (2):
x1 2300 .0000 , x20 2657 .1429 , x30 262 .2222 .
0
14
Результат роботи програми:
15
Б) Розв’яжемо систему лінійних алгебраїчних рівнянь Axb методом Зейделя з
точністю до цілих. Оскільки для даної системи виконуються умови збіжності ітераційного
процесу, розв’яжемо перше рівняння системи (*) відносно х1, друге – відносно х2, а третє –
відносно х3, матимемо:
16
x1( k 1) 2300 0.1250 x2( k ) 0.1250 x3( k ) ,
( k 1) ( k 1)
x2 2657.1429 0.2857 x1 0.1429 x3 ,
(k )
(18)
( k 1) ( k 1) ( k 1)
x3 262.2222 0.0556 x1 0.0556 x2 .
За нульові наближення приймемо відповідні значення вільних членів системи (18):
x 2300 .0000 , x2( 0 ) 2657 .1429 , x3( 0 ) 262 .2222 .
(0)
1
17
Завдання 3
Розв’язати систему нелінійних рівнянь 2-го порядку методом ітерацій. Якщо система
має вигляд:
0.2 x 2 0.5 y 4.3x 1.7 0,
3.5 y 0.02 x 1 2.3 0.
1) Знайдемо розв’язок методом ітерацій. Для цього запишемо систему у вигляді:
x 0.3953 0.0465x 2 0.1163 y,
y 0.6571 0.0057 x 1.
Якщо побудувати графік цих рівнянь (рис. 1), матимемо наближені значення
x0 0.3, y0 0.6 .
Рис. 1.
18
Перевіримо умови збіжності методу:
φ1 0.3953 0.1163 y 0.0465x2 , φ 2 0.6571 0.0057 x 1 ,
φ1 φ1 φ 2 φ 2
0.0279, 0.1163, 0.0034, 0
x x0 y0 y x0 y0
x x0 y0 y x0 y0
φ1 φ 2
Тому q1 0.0279 0.0034 0.0313 ,
x x0 y0 x x0 y0
φ1 φ 2
q2 0.1163 0 0.1163 .
y x0 y0
y x0 y0
19
Завдання 4
Для зручності обчислень та реалізації даного методу у Matlab, представимо
приклад розв’язку нелінійної системи вручну.
Додаток. Розв’язати систему нелінійних рівнянь 2-го порядку методом Ньютона.
Якщо система має вигляд:
0.2 x 2 0.5 y 4.3x 1.7 0,
3.5 y 0.02 x 1 2.3 0.
Позначимо:
F1 0.2 x 2 0.5 y 4.3 x 1.7, F2 3.5 y 0.02 x 1 2.3 .
Знайдемо похідні цих функцій:
0.01
F1x 0.4 x 4.3, F1y 0.5 F2x F2y 3.5
x 1
При x0 0.3, y0 0.6 : F1x 4.18, F1y 0.5 F2x 0.012 F2y 3.5 .
(0) (0) (0) (0)
Δ
0
(0) 0.3396
F2 F2y
y ( 0)
0.2167 3.5
F1x
(0)
F1
(0)
4.18 0.128
Δ0x 0.9044
F2x
(0)
F2
(0)
0.012 0.2167
Δ0y Δ0
h0 0.0232, l0 x 0.0618 ;
Δ0 Δ0
x1 x0 h0 0.3232, y1 y0 l0 0.6618 .
| x0 x1 | 0.023 0.01,| y0 y1 | 0.062 0.01 .
4.1707 0.5
Δ1 14.5914 ,
0.0122 3.5
0.0001 0.5
Δ1y 0.004
0.000002 3.5
20
4.1707 0.000108
Δ1x 0.000011
0.0122 0.000002
h1 2.59 105 , l1 7.59 107 ;
x2 x1 h1 0.3233, y2 y1 l1 0.6618 .
| x2 x1 | 0.01,| y2 y1 | 0.01.
Отже, x* 0.3233, y* 0.6618.
Завдання 5
Додаток. Для розв’язку лінійних систем та рівнянь (лінійних та нелінійних) може
використовуватись Simulink.
Simulink – середовище графічного програмування на основі Matlab. Призначений
для моделювання, імітації та аналізу динамічних систем. Його основний інтерфейс – це
інструмент для побудови графічних блок-схем та їх налаштування.
Для цього запускаємо Matlab, запускаємо Simulink, створити нову модель Simulink.
Для розв’язку лінійних рівнянь можуть знадобитися наступні блоки:
21
Як приклад, розв’язати лінійну систему в Simulink можна наступним чином:
Отримаємо:
22
Також, для кращого засвоєння матеріалу, можете скористатися Matlab help та наступними
посиланнями:
Розв’язок лінійних систем:
https://www.youtube.com/watch?v=08Q-1k3bl84
Розв’язок нелінійних систем:
https://www.youtube.com/watch?v=A_AZd09Rml8
23