Ітераційні методи розв’язування систем лінійних алгебраїчних рівнянь

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

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

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

Рік:
2009
Тип роботи:
Звіт про виконання лабораторної роботи
Предмет:
Інші
Група:
БІ

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

Міністерство освіти і науки України Національний університет „ Львівська політехніка “ Кафедра БІ ЗВІТ Про виконання лабораторної роботи №3 на тему: “Ітераційні методи розв’язування систем лінійних алгебраїчних рівнянь” Мета роботи – ознайомлення з ітераційними методами розв’язування систем лінійних алгебраїчних рівнянь. До ітераційних методів належать: метод простої ітерації, метод Зейделя, метод верхньої релаксації та інші. Метод простої ітерації. Нехай дано лінійну систему  (1) Розглянемо матриці    Тоді систему (1) можна записати у вигляді матричного рівняння  (2) Будемо вважати, що діагональні коефіцієнти  (і = 1, 2,…, n). Розв’яжемо перше рівняння системи (1) відносно , друге відносно  і т.д. Тоді одержимо еквівалентну систему  (3) де  , при ; , при ; ; ;  Іноді кажуть, що система (3) зведена до нормального вигляду. Введемо матриці ( та (   Систему (3) запишемо у вигляді  (4) Систему (3) будемо розв’язувати методом послідовних наближень. За нульове наближення позначимо, наприклад, стовпчик вільних членів . Далі послідовно будуємо матриці-стовпці:  – перше наближення  – друге наближення і т.д. Будь-яке (k + 1)-е наближення обчислюється за формулою: , (k = 0, 1, 2, …) (5) В розгорнутому вигляді . Якщо послідовність наближень  має границю , (6) то ця границя є розв’язком системи (3). На практиці ітераційний процес припиняють, коли , де ( – гранична абсолютна похибка. Завдання Розв’язати систему лінійних алгебраїчних рівнянь методом Зейделя: 8.3*х1 + (2,62+s)*x2 + 4.1*x3 + 1.9*x4 = -10.55 + b 3.92*х1 + 8.45*x2 + (7.78-s)*x3 + 2.46*x4 = 12.21 3.77*х1 + (7.21+s)*x2 + 8.04*x3 + 2.28*x4 = 15.45 - b 2.21*х1 + (3.65-s)*x2 + 1.69*x3 + 6.99*x4 = -8.35 s=0.2*k, k=3; b = 0.2*p, p=0 Список ідентифікаторів констант, змінних, процедур і функцій, використаних у програмі j,i,k,m – змінні типу int, які використовуються для роботи циклів; n, g – константи, якими вказую розміри масивів; s,s1,f – змінні типу double які ми використовуємо при роботі програми; a,b – змінні, за допомого яких виконуємо операції з масивами; s – результат перевірки програми; printf, scanf функції вводу і виводу; Блок-схема алгоритму програми: Текст програми: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace KMD_3 { class Program { static void Main() { const int n=4; const int g=1; { int j,i,k,m; double s,s1,f; Random r = new Random(); int S = r.Next(0, 5); int q = r.Next(0, 5); double [,] a = new double[n,n]; double [,] p = new double[n,n]; double [] b = new double[n]; double[] x = new double[n]; { a[0, 0] = 3.3; a[0, 1] = 12.62 + 0.2 * S; a[0, 2] = 4.1; a[0, 3] = 1.9; a[1, 0] = 3.92; a[1, 1] = 8.45; a[1, 2] = 1.78 - 0.2 * S; a[1, 3] = 1.4; a[2, 0] = 3.77; a[2, 1] = 1.21 + 0.2 * S; a[2, 2] = 8.04; a[2, 3] = 0.28; a[3, 0] = 2.21; a[3, 1] = 3.65 - 0.2 * S; a[3, 2] = 1.69; a[3, 3] = 9.99; for (i=0;i<n;i++) for (k=0;k<n;k++) p[i,k]=a[i,k]; b[0] = -10.55 + 0.2 * q; b[1] = 12.21; b[2] = 15.45 - 0.2 * q; b[3] = -8.35; for (k = 0; k < n; k++) { for(i=0;i<n;i++) { Console.Write("{0} ", a[k, i]); } Console.WriteLine("{0}", b[k]); } for (j = 1; j < n; j++) a[0, j] /= a[0, 0]; b[0]/=a[0,0]; for (k=1;k<n;k++) { for (i=k;i<n;i++) for (m=0;m<=k-1;m++) a[i,k]-=a[i,m]*a[m,k]; if (k==(n-1)) goto g; for (j=k+1;j<n;j++) { s1=0; for (m=0;m<=k-1;m++) s1+=a[k,m]*a[m,j]; a[k,j]=(a[k,j]-s1)/a[k,k]; } g:s=0; for (m=0;m<=k-1;m++) s+=a[k,m]*b[m]; b[k]=(b[k]-s)/a[k,k]; } for (i=0;i<n;i++) x[i]=0; x[n-1]=b[n-1]; for (i=n-2;i>=0;i--) { s=0; for (m=i+1;m<n;m++) s+=a[i,m]*x[m]; x[i]=b[i]-s; } for (i=0;i<n;i++) { Console.WriteLine("x= {0}",x[i]); } } for (i=0;i<n;i++) { s=0; for (k = 0; k < n; k++) { s += p[i, k] * x[k]; } Console.WriteLine("s= {0}", s); } Console.ReadLine(); } } } } Результати виконання програми:  Висновок: ознайомився з ітераційними методами розв’язування систем лінійних алгебраїчних рівнянь.
Антиботан аватар за замовчуванням

22.05.2013 21:05-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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