DevioLabавтоматичне керування капіталом
ПРАЦЮЄ 24/7
КРИПТОВАЛЮТИ · АКЦІЇ · 10 БІРЖ

Портфель, який керується автоматично

DevioLab підбирає стратегії, відстежує ринки та автоматизує купівлю і продаж активів. Кількість доступних криптовалют, акцій і торгових можливостей зростає щодня.

10підключених біржCrypto + Stocksв одному портфелі24/7автоматичний контроль

Звіт до лабораторної роботи №3 з курсу: «Комп’ютерні методи дослідження інформаційних процесів та систем»

Оригінальна назва роботи

Звіт до лабораторної роботи №3 з курсу: "Комп’ютерні методи дослідження інформаційних процесів та систем" на тему: «ІТЕРАЦІЙНІ МЕТОДИ РОЗВ’ЯЗУВАННЯ СИСТЕМ ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ »

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

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

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

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

Про що ця робота

У звіті наведено розв'язання систем лінійних алгебраїчних рівнянь ітераційними методами. Реалізовано алгоритм на мові C# для обчислень на ЕОМ.

У роботі розглядаються

  • Чисельні методи
  • Системи лінійних рівнянь
  • Метод Зейделя
  • Ітераційні методи
  • Програмування на C#

Зміст і розділи

  1. Мета роботи
  2. Завдання до лабораторної роботи
  3. Текст програми
  4. Результат роботи
Для кого:Студенти технічних спеціальностей вищих навчальних закладів
Викладачі:Лужецька

Ключові поняття

СЛАРметод Зейделяітераційний методматрицядіагональна переважаючапохибкаC#консольна програмакорені рівняння

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ, МОЛОДІ ТА СПОРТУ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ "ЛЬВІВСЬКА ПОЛІТЕХНІКА" Звіт до лабораторної роботи №3 з курсу: "Комп’ютерні методи дослідження інформаційних процесів та систем" на тему: «ІТЕРАЦІЙНІ МЕТОДИ РОЗВ’ЯЗУВАННЯ СИСТЕМ ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ » Мета роботи – ознайомлення з ітераційними методами розв’язування систем лінійних алгебраїчних рівнянь. ЗАВДАННЯ ДО ЛАБОРАТОРНОЇ РОБОТИ Розв’язати систему лінійних алгебраїчних рівнянь методами простої ітерації або Зейделя.  ,    Текст програми using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { do { try { Console.WriteLine("-----------------------------------------------------------\nSolving systems of linear equations by Gauss-Seidel method\n-----------------------------------------------------------\nEnter dimension of the matrix:"); int n = int.Parse(Console.ReadLine()); double[,] a = new double[n, n]; double[] b = new double[n]; double[] x = new double[n]; //нулевые приближения for (int i = 0; i < n; i++) { x[i] = 0; } Console.WriteLine("===========================================================\nTo enter data from the keyboard - press 1\nTo enter random data - press 2"); int key = int.Parse(Console.ReadLine()); switch (key) { case 1: { for (int i = 0; i < n; i++) //ввод коэффицентов { for (int j = 0; j < n; j++) { Console.WriteLine("Enter the element from position [" + (i + 1) + "," + (j + 1) + "]:"); a[i, j] = double.Parse(Console.ReadLine()); } } for (int j = 0; j < n; j++) //ввод значений { Console.WriteLine("Enter the value from position [" + (j + 1) + "]:"); b[j] = double.Parse(Console.ReadLine()); } } break; case 2: { Random r = new Random(); for (int i = 0; i < n; i++) //ввод коэффицентов { for (int j = 0; j < n; j++) { a[i, j] = r.Next(-50, 50); Console.WriteLine("The element from position [" + (i + 1) + "," + (j + 1) + "]: " + a[i, j]); } } for (int j = 0; j < n; j++) //ввод значений { b[j] = r.Next(-50, 50); Console.WriteLine("The value from position [" + (j + 1) + "]: " + b[j]); } } break; default: Console.WriteLine("Input error.\n==========================================================="); break; } Console.WriteLine("==========================================================="); GaussZeidel test = new GaussZeidel(a, b, 500, n, x); bool IsDiagonal = test.DiagonallyDominant(); if (IsDiagonal == true) { Console.WriteLine("The matrix has the property of diagonal dominance\n==========================================================="); } else { Console.WriteLine("The matrix does not have the property of diagonal dominance\n==========================================================="); } test.algoritm(); for (int j = 0; j < n; j++) { Console.WriteLine("X" + (j + 1) + " = " + test.roots[j]); } Console.WriteLine("The number of iterations: " + test.k + "\n===========================================================\nPress Esc to exit or any key to continue"); } catch (Exception ex) { Console.WriteLine(ex.ToString()); } } while (Console.ReadKey().Key != ConsoleKey.Escape); } } public class GaussZeidel { public static double epsilon = 0.01; //точность вычисления public int n, k, N; //N -допустимое число итераций, n - размерность квадратной матрицы коэффицентов, k-количество итераций public double s, Xi, diff = 1; //s - сумма, величина погрешности public double[,] matrix; //матрица коэффицентов public double[] value; //матрица значений public double[] roots; //матрица корней public bool diagonal; public GaussZeidel(double[,] matrix, double[] value, int N, int n, double[] roots) { this.matrix = matrix; this.N = N; this.value = value; this.n = n; this.roots = roots; } public bool DiagonallyDominant() { for (int i = 0; i < n; i++) { double sum = 0; for (int j = 0; j < n; j++) { if (i != j) { sum += Math.Abs(matrix[i, j]); } } if (Math.Abs(matrix[i, i]) >= sum) { diagonal = true; break; } else { diagonal = false; } } return diagonal; } public void algoritm() { k = 0; while ((k <= N) && (diff >= epsilon)) { k = k + 1; for (int i = 0; i < n; i++) { s = 0; for (int j = 0; j < n; j++) { if (i != j) { s += matrix[i, j] * roots[j]; } } Xi = (value[i] - s) / matrix[i, i]; diff = Math.Abs(Xi - roots[i]); roots[i] = Xi; } } } } } Результат роботи /
Допоможи студентському архіву

Ми допомогли тобі — допоможи наступному студенту

Файл ще не обрано

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

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

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

Admin

26.02.2023 12:38

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