ІТЕРАЦІЙНІ МЕТОДИ РОЗВ’ЯЗУВАННЯ СИСТЕМ ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
ІКТА
Факультет:
Не вказано
Кафедра:
Кафедра захисту інформації

Інформація про роботу

Рік:
2013
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Комп’ютерні методи дослідження інформаційних процесів та систем

Частина тексту файла (без зображень, графіків і формул):

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ”ЛЬВІВСЬКА ПОЛІТЕХНІКА ” ІКТА кафедра захисту інформації ЗВІТ до лабораторної роботи №3 з курсу: Комп'ютерні методи дослідження інформаційних процесів і систем на тему: “ ІТЕРАЦІЙНІ МЕТОДИ РОЗВ’ЯЗУВАННЯ СИСТЕМ ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ ” Варіант 11 Львів – 2010 Мета роботи – ознайомлення з ітераційними методами розв’язування систем лінійних алгебраїчних рівнянь. Ітераційні методи розв’язування систем лінійних алгебраїчних рівнянь  До ітераційних методів належать: метод простої ітерації, метод Зейделя, метод верхньої релаксації та інші. Метод простої ітерації. Нехай дано лінійну систему  (1) Розглянемо матриці    Тоді систему (1) можна записати у вигляді матричного рівняння  (2) Будемо вважати, що діагональні коефіцієнти  (і = 1, 2,…, n). Розв’яжемо перше рівняння системи (1) відносно , друге відносно  і т.д. Тоді одержимо еквівалентну систему  (3) де  , при ; , при ; ; ;  Іноді кажуть, що система (3) зведена до нормального вигляду. Введемо матриці ( та (   Систему (3) запишемо у вигляді  (4) Систему (3) будемо розв’язувати методом послідовних наближень. За нульове наближення позначимо, наприклад, стовпчик вільних членів . Далі послідовно будуємо матриці-стовпці:  – перше наближення  – друге наближення і т.д. Будь-яке (k + 1)-е наближення обчислюється за формулою: , (k = 0, 1, 2, …) (5) В розгорнутому вигляді . Якщо послідовність наближень  має границю , (6) то ця границя є розв’язком системи (3). На практиці ітераційний процес припиняють, коли , де ( – гранична абсолютна похибка. 2. Завдання: Розв’язати систему лінійних алгебраїчних рівнянь методом простої ітерації.  S = 0.2*k b = 0.2*p k = 2 p = 1 3. Блок-схема алгоритму програми: початок f(x) i=0;i<n i++ ні j=0;j<n ні j++ так i == j так A[i, j] := 0 A[i, j]:=f(x) b[i]:=f(x) i=0;i<n; i++ ні так j=0;j<n; ні j++ S:=S+f(x) k = X[i]; X[i] = b[i] + S; S = 0; так |X[i] – k|>E i=0;i<n; i++ ні x[i] кінець f(x) = -a[i, j] / a[i, i] f(x) = b[i] / a[i, i] f(x) = A[i, j] * X[j] Блок-схема алгоритму метода Main( ). початок I.Iterac() кінець 5. Список ідентифікаторів констант, змінних, процедур і функцій, використаних в програмі: i,j – змінні, що застосовуються в циклах для позначення рядків та стовпців. n – змінна, що містить розмір створеного масиву. E – похибка обчислень. S – змінна, що містить значення суми добутку коефіцієнтів і початкових наближень елементів рядку. I.Iterac()- функція, в якій відбувається виведення вихідної системи на екран, знаходження допоміжних коефіцієнтів, обчислення коренів системи рівнянь і виведення їх на екран. . 6. Остаточно відлагоджений текст програми згідно з отриманим завданням мовами С: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Lab_3 { double s, p, k; int i, j; int n = 4; double E = 0.0001; double S = 0; public Lab_3(double y, double z) { s = 0.2 * y; p = 0.2 * z; } public void Iterac() { double[,] a ={{8.3,2.62+s,4.1,1.9}, {3.92,8.45,7.78-s,2.46}, {3.77,7.21+s,8.04,2.28}, {2.21,3.65-s,1.69,6.99}}; double[] b = { -10.55 + p, 12.21, 15.45 - p, -8.35 }; double[,] A = new double[n, n]; double[] X = new double[n]; Console.Clear(); Console.WriteLine(@" Розв'язок системи лінійних алгебраїчних рівнянь методом простої ітерації"); Console.WriteLine("\n"); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (j == 3) Console.Write("{0} x{1} ", a[i, j], j + 1); else { Console.Write("{0} x{1}", a[i, j], j + 1); Console.Write(" + "); } } Console.Write(" = " + b[i]); Console.WriteLine("\n"); } for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { if (i == j) A[i, j] = 0; else A[i, j] = -a[i, j] / a[i, i]; } b[i] = b[i] / a[i, i]; } for (i = 0; i < n; i++) X[i] = b[i]; do { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) S += A[i, j] * X[j]; k = X[3]; X[i] = b[i] + S; S = 0; } } while (Math.Abs(X[3] - k) > E); Console.WriteLine("\nКорені рівняння:\n"); for (i = 0; i < n; i++) Console.WriteLine("x{0}={1}", i + 1, X[i]); } } class Program { public static void Main() { Lab_3 I = new Lab_3(1, 1); I.Iterac(); Console.ReadLine(); } } } 7. Результати виконання програми / 8.Висновок: На цій лабораторній роботі я ознайомився з ітераційними методами розв’язування систем лінійних алгебраїчних рівнянь. Розробив програму для розв’язку систем лінійних алгебраїчних рівнянь методом простої ітерації.
Антиботан аватар за замовчуванням

16.01.2013 12:20

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!