DevioLab CRYPTO TRADING AUTOMATION
LIVE
AUTOMATED CRYPTO TRADING • BINANCE
Автоматизуйте свій криптопортфель
Торгові боти DevioLab аналізують крипторинок, автоматично відкривають і закривають позиції та керують вашим портфелем на Binance 24/7.
CRYPTO 80 Bots
BINANCE Spot Trading
TRADING 24 / 7
Спробувати DevioLab
deviolab.com

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

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

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

Рік:
2016
Тип роботи:
Звіт до лабораторної роботи
Предмет:
СП

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

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА” Кафедра ЕОМ / ЗВІТ до лабораторної роботи № 5 з дисципліни " AЛГОРИТМИ ТА МЕТОДИ ОБЧИСЛЕНЬ" МЕТА РОБОТИ Повторити метод матричного множення. ЗАВДАННЯ НА ЛАБОРАТОРНУ РОБОТУ Реалізувати стандартний алгоритм матричного множення і запрограмувати метод Гауса (розв'язок системи лінійних алгебраічних рівнянь). Результат виконання програми. / Текст програми: using System; namespace Lab5 { class Program { // Вивід системи рівняннь static void sysout(double [,]a, double [] y, int n) { Console.WriteLine("Система рiвняння:"); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { Console.Write("{0}*x{1}", a[i,j],j); if (j < n - 1) { Console.Write(" + "); } } Console.WriteLine(" = {0}", y[i]); } return; } static void gauss(double [,] a, double [] y, int n) { double[] x = new double[n]; double max; int k, index; const double eps = 0.00001; // точність k = 0; while (k < n) { // Пошук рядка з максимальним a[i][k] max = Math.Abs(a[k,k]); index = k; for (int i = k + 1; i < n; i++) { if (Math.Abs(a[i,k]) > max) { max = Math.Abs(a[i,k]); index = i; } } // Перестановка рядків if (max < eps) { // немає ненульових діагональних елементів Console.WriteLine("Рiшення отримати неможливо через нульового стовпчика "); Console.WriteLine("{0} матриця A",index); } for (int j = 0; j < n; j++) { double temp1 = a[k,j]; a[k,j] = a[index,j]; a[index,j] = temp1; } double temp2 = y[k]; y[k] = y[index]; y[index] = temp2; // Нормализация рівняннь for (int i = k; i < n; i++) { double temp3 = a[i,k]; if (Math.Abs(temp3) < eps) continue; // для нульового коефіцієнта пропустити for (int j = 0; j < n; j++) { a[i,j] = a[i,j] / temp3; } y[i] = y[i] / temp3; if (i == k) continue; for (int j = 0; j < n; j++) { a[i,j] = a[i,j] - a[k,j]; } y[i] = y[i] - y[k]; } k++; } Console.WriteLine(""); Console.WriteLine("Результат:"); //зворотня підстановка for (k = n-1; k >= 0; k--) { //double[] res = new double[k]; x[k] = y[k]; for (int i = 0; i < k; i++) { y[i] = y[i] - a[i,k] * x[k]; } } for (int i = 0; i < n; i++) { Console.WriteLine("x[{0}]= {1}",i, y[i]); } } static void Main(string[] args) { double[] x, y; Console.Write("Введiть кiлькiсть рiвнянь: "); int n = Convert.ToInt32(Console.ReadLine()); double[,] a = new double[n,n]; x = new double[n]; y = new double[n]; for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { Console.Write("a[{0},{1}]=", i, j); a[i,j]= Convert.ToDouble(Console.ReadLine()); } } Console.WriteLine(""); for (int i = 0; i < n; i++) { Console.Write("y[{0}]=", i); y[i] = Convert.ToDouble(Console.ReadLine()); } Console.WriteLine(""); sysout(a, y, n); gauss(a, y, n); Console.ReadKey(); } } } Висновок: На даній лабораторній роботі я повторив метод матричного множення.
Антиботан аватар за замовчуванням

29.03.2016 08:02

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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