Ітераційні методи розвязування СЛАР

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

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

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

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

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА» ІКТА кафедра ЗІ             ЗВІТ До лабораторної роботи №3 з курсу: «Комп’ютерні методи дослідження інформаційних процесів і систем» на тему: «Ітераційний метод для розв’язування систем лінійних алгебраїчних рівнянь» Варіант №1           Мета роботи – ознайомлення з ітераційними методами розв’язування систем лінійних алгебраїчних рівнянь.   ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ Розв’язати систему лінійних алгебраїчних рівнянь ітераційний методом.   / / Блок-схема програми Текст прогами using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication25 { class Program { static void Main(string[] args) { Iterations xD = new Iterations(); xD.Initialization(); xD.PerevirkaZbizhnosti(); xD.SomeCalculations(); xD.Checking(); Console.ReadKey(); } } class Iterations { public int k, p, kil; public double s, b, rez, E; public double[] x0 = new double[4]; public double[] x1 = new double[4]; public double[] e = new double[4]; static public double[,] a; public double[,] alpha; public double[] beta; public void Initialization() { Console.Write("\n Введiть заданий коефiцiєнт k = "); k = int.Parse(Console.ReadLine()); Console.Write("\n Введiть заданий коефiцiєнт p = "); p = int.Parse(Console.ReadLine()); s = 0.2 * k; b = 0.2 * p; E = 0.0001; a = new double[,]{{ 30.3, 12.62+s, 4.1, 1.9, -10.55+b}, {3.92, 8.45, -(1.78-s), 1.4, 12.21} {3.77, 1.21+s, 8.04, 0.28, 15.45-b}, {2.21, 3.65-s, 1.69, 9.99, -8.35}}; alpha = new double[a.GetLength(0), a.GetLength(0)]; beta = new double[a.GetLength(0)]; } public void SomeCalculations() { for (int i = 0; i < a.GetLength(0); i++) { for (int j = 0; j < a.GetLength(0); j++) { if (i != j) alpha[i, j] = -(a[i, j] / a[i, i]); } } for (int i = 0, j = (a.GetLength(1) - 1); i < a.GetLength(0); i++) beta[i] = (a[i, j] / a[i, i]); for (int i = 0; i < beta.GetLength(0); i++) x0[i] = beta[i]; do { for (int i = 0; i < alpha.GetLength(0); i++) { x1[i] = beta[i]; for (int j = 0; j < alpha.GetLength(0); j++) x1[i] = x1[i] + x0[j] * alpha[i,j]; e[i] = Math.Abs(x1[i] - x0[i]); x0[i] = x1[i]; } kil++; } while (!(e[0] < E && e[1] < E && e[2] < E && e[3] < E)); } public void PerevirkaZbizhnosti() { for (int i = 0; i < a.GetLength(0); i++) { rez = 0; for (int j = 0; j < a.GetLength(0); j++) if ( i != j) rez += Math.Abs(a[i,j]); if (rez > Math.Abs(a[i,i])) Console.WriteLine("Умови збiжностi не виконуються"); } } public void Checking() { Console.WriteLine("Коренi рiвняння:"); foreach (int x in x1) Console.Write("\t" + x); double z = x1[0] * a[0, 0] + x1[1] * a[0, 1] + x1[2] * a[0, 2] + x1[3] * a[0, 3]; double z1 = x1[0] * a[1, 0] + x1[1] * a[1, 1] + x1[2] * a[1, 2] + x1[3] * a[1, 3]; double z2 = x1[0] * a[2, 0] + x1[1] * a[2, 1] + x1[2] * a[2, 2] + x1[3] * a[2, 3]; double z3 = x1[0] * a[3, 0] + x1[1] * a[3, 1] + x1[2] * a[3, 2] + x1[3] * a[3, 3]; if (((int)z == (int)a[0, 4]) && ((int)z1 == (int)a[1, 4]) && ((int)z2 == (int)a[2, 4]) && ((int)z3) == ((int)a[3, 4])) Console.WriteLine("\nСЛАР розв'язана вiрно!!!"); Console.WriteLine("Кiлькiсть iтерцiй = " + kil); } } } Результат роботи програми /
Антиботан аватар за замовчуванням

28.05.2013 18:19

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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