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

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

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

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

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

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

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

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

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

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

У лабораторній роботі розглянуто ітераційні методи розв’язування систем лінійних алгебраїчних рівнянь. Наведено реалізацію програми мовою C# для розрахунків методом Зейделя.

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

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

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

  1. Теоретичні відомості
  2. Завдання
  3. Список ідентифікаторів та змінних
  4. Блок-схема алгоритму програми
  5. Текст програми
  6. Виконання програми
  7. Висновок
Для кого:Студенти технічних спеціальностей вищих навчальних закладів
Викладачі:Викладач кафедри захисту інформації

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

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

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

Міністерство освіти і науки України Національний університет «Львівська політехніка» Кафедра захисту інформації / Звіт Про виконання лабораторної роботи № 3 з дисципліни: «Комп'ютерні методи дослідження інформаційних процесів і систем» Варіант 1 До ітераційних методів належать: метод простої ітерації, метод Зейделя, метод верхньої релаксації та інші. Метод Зейделя Є система лінійних алгебраїчних рівнянь, що зведена до нормального вигляду . Тоді за методом Зейделя, вибираючи вектор початкових наближень  (як правило, це стовпець вільних членів  ), уточнення значень невідомих проводять наступним чином: 1) перше наближення:  2) k + 1 наближення  k = 0, 1, 2, … . Таким чином ітераційний процес подібний до методу простих ітерацій, однак уточнені значення  одразу ж підставляються в наступні рівняння:  – метод Зейделя. Іншими словами, метод Зейделя відрізняється від методу простої ітерації тим, що при обчисленні  на “k+1”-му кроці враховуються значення , ,  , обчислені на цьому самому кроці. Слід сподіватись, що ітерації за методом Зейделя дадуть при тому ж числі кроків більш точні результати, ніж за методом простої ітерації. Або така ж точність буде досягнута за менше число кроків, оскільки чергові значення невідомих визначаються тут більш точно ітераційний процес припиняється. Якщо візьмемо систему  для якої точний розв’язок  Обчислення проведемо згідно формул:  . За початкове наближення вибираємо вектор  Достатні умови збіжності ітераційного методу Зейделя  для всіх  і якщо хоча б для одного і ця нерівність строга  . Завдання Розв’язати систему лінійних алгебраїчних рівнянь методом Зейделя.  , k = 0;  p = 0; Список індентифікаторів, змінних, функцій, використаних у блок-схемі алгоритму і програмі, та їх пояснення double – тип з плаваючою точкою подвійної точності; if-else - умовний оператор; while - оператор циклу з передумовою; public – модифікатор доступу, члени якого доступні з будь-якого місця програми ; Main() – головна функція; Abs (x)- повертає абсолютне значення x; int – тип з 32-бітовим цілим числом з знаком. Блок-схема алгоритму програми - + + - Текст програми using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Laboratorna_robota3 { class Labwork { public int i; public int j; public int n = 4; public double m; public double k; public double p; public double f; public double t; public double S; public double Sum1 = 0; public double Sum2 = 0; public double E = 0.0001; public double[,] A; public double[] x; public double[,] a; public double[] b; public void koeficienty() { Console.Write("введiть k="); k = Convert.ToInt32(Console.ReadLine()); Console.Write("введiть p="); p = Convert.ToInt32(Console.ReadLine()); S = 0.2 * k; t = 0.2 * p; } public void print() { for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { Console.Write(a[i, j] + "x" + (j + 1)); Console.Write("+"); } Console.WriteLine("=" + b[i]); } Console.WriteLine(); } public void Zejdell_metod() { a = new double[n, n]; b = new double[n]; A = new double[n, n]; x = new double[n]; a[1, 0] = 3.3; a[1, 1] = (12.62+S); a[1, 2] = 4.1; a[1, 3] = 1.9; a[0, 0] = 3.92; a[0, 1] = 8.45; a[0, 2] = (1.78-S); a[0, 3] = 1.4; a[2, 0] = 3.77; a[2, 1] = (1.21 + S); a[2, 2] = 8.04; a[2, 3] = 0.28; a[3, 0] = 2.21; a[3, 1] = (3.65 - S); a[3, 2] = 1.69; a[3, 3] = 9.99; b[0] = -10.55+t; b[1] = 12.21; b[2] = (15.45 - t); b[3] = -8.35; vuvid(); Console.ReadLine(); Console.WriteLine("Розв’язок системи лiнiйних рiвнянь методом Зейделя:"); Console.WriteLine(); print(); 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]; //ділення матриці вільних членів на елементи гол.діагоналі початкової матриці } Console.WriteLine(); Console.WriteLine("Початкове наближення:"); for (i = 0; i < n; i++) { Console.WriteLine("x" + (i + 1) + "=" + x[i]); } int v = 0; do { m = 0; v = v + 1; for (i = 0; i < n; i++) { Sum1 = 0; Sum2 = 0; for (j = 0; j < i; j++) { Sum1 += A[i, j] * x[j]; } for (j = i; j < n; j++) { Sum2 += A[i, j] * x[j]; } f = x[i]; x[i] = b[i] + Sum1 + Sum2; if ((Math.Abs((x[i] - f)) > m)) m = (Math.Abs(x[i] - f)); } } while (m > E); Console.WriteLine(); Console.WriteLine("Кiлькiсть iтерацiй:"); Console.WriteLine(+v); Console.WriteLine(); Console.WriteLine("кiнцевий результат:"); for (i = 0; i < n; i++) { Console.WriteLine("x" + (i + 1) + "=" + x[i]); } Console.ReadLine(); } public void vuvid() { Console.WriteLine("Вивід елементів матриці"); for (i = 0; i < n; i++) { for (j = 0; j < n; j++) { Console.Write(a[i, j] + "\t"); } Console.WriteLine(); } Console.WriteLine(); Console.WriteLine("Вивід вільних елементів"); for (i = 0; i < n; i++) { Console.WriteLine(b[i]); } } } class Program { static void Main(string[] args) { Labwork got = new Labwork(); got.koeficienty(); got.Zejdell_metod(); } } } Виконання програми / Висновок На цій лабораторній роботі я ознайомився з ітераційними методами роз’язування систем лінійних алгебраїчних рівнянь .
Допоможи студентському архіву

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

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

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

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

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

Admin

26.02.2023 12:38

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