МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ЗВІТ
до лабораторної роботи №2
з курсу:
«Комп'ютерні методи дослідження інформаційних процесів і систем»
на тему:
«МЕТОД ГАУССА ДЛЯ РОЗВ’ЯЗУВАННЯ СИСТЕМ
ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ»
Львів – 2015
Мета роботи – ознайомлення з прямими методами розв’язування систем лінійних алгебраїчних рівнянь.
Короткі теоретичні відомості:
Прямі методи розв’язування систем лінійних алгебраїчних рівнянь
Класичний метод Гаусса.
Розглянемо систему рівнянь четвертого порядку:
(1)
Зауважимо, що елементи вектора-стовпчика вільних членів занесені в матрицю коефіцієнтів А.
Будемо вважати, що . З першого рівняння знаходимо х1:
, (2)
де , .
З допомогою рівняння (2) можна виключити з решти рівнянь, для чого достатньо підставити (2) для в друге, третє і четверте рівняння системи. Це і є першим кроком – кроком виключення невідомого .
,
Перехід від початкової системи
до новоствореної
відбувається за такою формулою:
Другий крок – виключення невідомого відбувається аналогічно:
Третій крок – виключення невідомого
,
;
Останнє рівняння можна переписати у вигляді:
або .
Отже, в результаті прямого ходу одержимо систему рівнянь:
Знаходження невідомих проводиться в оберненому ході методу Гаусса шляхом зворотніх підстановок.
Якщо п – кількість рівнянь (порядок) системи, то програмування обчислювального процесу проводиться так:
L – кількість кроків виключення ;
j – позначення другого індексу при визначенні α ;
і – номер рядка системи ;
k – номер стовпця.
Завдання:
Розв’язати систему лінійних алгебраїчних рівнянь методом Гаусса.
Блок-схема алгоритму програми:
початок
1
f(x)
x1:=f(x)
ні
k<3 k:=k+4
так
i<k+1
i:=i+1
ні
так
j>=k ні
j:=j-4
так
a[i,j]:= f(x)
f(x)
i>=0
i:=i-1
ні
j>i
j:=j-1
x[i]:= f(x)
x[i]:=f(x)
так
i<k+1
i:=i+1
так
x1,x2,x3,x4
Список ідентифікаторів констант, змінних, процедур і функцій:
x1,x2,x3,x4 – змінні, які використовуються для знаходження коренів
рівнянь системи.
i,j – змінні, що застосовуються в циклах для позначення
рядків та стовпців.
n – константа, означає кількість стовпців вихідної матриці.
s, p – константи, що використовують для визначення
коефіцієнтів вихідних рівнянь.
mas() - функція, в якій відбувається виведення вихідної
системи на екран, знаходження допоміжних
коефіцієнтів, обчислення коренів системи рівнянь і
виведення їх на екран.
Текст програми
using System;
class B
{
double s, p;
double[] x = new double[4];
int i, j, k;
public B(int a, int d)
{
s = 0.2 * a;
p = 0.2 * d;
}
public void mas()
{
double[,] a ={{8.3,2.62+s,4.1,1.9,10.55+p},
{3.92,8.45,7.78-s,2.46,12.21},
{3.77,7.21+s,8.04,2.28,15.45-p},
{2.21,3.65-s,1.69,6.99,-8.35}};
Console.Clear();
Console.WriteLine("\n");
for (i = 0; i < 4; i++)
{
for (j = 0; j < 5; j++)
{
if (j == 3)
Console.Write("{0} x{1} ", a[i, j], j + 1);
else if (j == 4)
Console.Write(" = " + a[i, j]);
else
{
Console.Write("{0} x{1}", a[i, j], j + 1);
Console.Write(" + ");
}
}
Console.WriteLine("\n");
}
for (k = 0; k < 3; k++)
{
for (i = k + 1; i < 4; i++)
{
for (j = 4; j >= k; j--)
{
a[i, j] = a[i, j] - (a[k, j] / a[k, k]) * a[i, k];
}
}
}
for (i = 3; i >= 0; i--)
{
for (j = 3; j > i; j--)
x[i] = x[i] + a[i, j] * x[j];
x[i] = (1.0 / a[i, i]) * (a[i, 4] - x[i]);
}
for (i = 0; i < 4; i++)
Console.WriteLine("x{0}={1}", i + 1, x[i]);
}
}
class program
{
public static void Main()
{
B g = new B(4, 3);
g.mas();
Console.ReadKey();
}
}
Результати виконання програми
Висновок:
Я ознайомився з прямими методами розв’язування систем лінійних алгебраїчних рівнянь. Розробив програму для розв’язання системи лінійних алгебраїчних рівнянь класичним методом Гаусса.