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

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ ТА НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ ”ЛЬВІВСЬКА ПОЛІТЕХНІКА ” ІКТА кафедра захисту інформації ЗВІТ до лабораторної роботи №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:01-

Коментарі

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

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

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

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

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

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

Admin

26.02.2023 12:38

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