МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ «ЛЬВІВСЬКА ПОЛІТЕХНІКА»
ІКТА
кафедра ЗІ
/
ЗВІТ
до лабораторноїроботи №2
з курсу: Комп'ютерні методи дослідження інформаційних
процесів і систем
на тему:“МЕТОД ГАУССА ДЛЯ РОЗВ’ЯЗУВАННЯ СИСТЕМ
ЛІНІЙНИХ АЛГЕБРАЇЧНИХ РІВНЯНЬ”
Варіант 7
Львів 2018
1. Мета роботи:
Мета роботи – ознайомлення з прямими методами розв’язування систем лінійних алгебраїчних рівнянь.
2. Короткі теоретичні відомості:
Прямі методи розв’язування систем лінійних алгебраїчних рівнянь
Класичний метод Гаусса.
Розглянемо систему рівнянь четвертого порядку:
(1)
Зауважимо, що елементи вектора-стовпчика вільних членів занесені в матрицю коефіцієнтів А.
Будемо вважати, що . З першого рівняння знаходимо х1:
, (2)
де , .
З допомогою рівняння (2) можна виключити з решти рівнянь, для чого достатньо підставити (2) для в друге, третє і четверте рівняння системи. Це і є першим кроком – кроком виключення невідомого.
,
Перехідвідпочатковоїсистеми
до новоствореної
відбувається за такою формулою:
Другий крок – виключення невідомого відбувається аналогічно:
Третій крок – виключення невідомого
,
;
Останнє рівняння можна переписати у вигляді:
або .
Отже, в результаті прямого ходу одержимо систему рівнянь:
Знаходження невідомих проводиться в оберненому ході методу Гаусса шляхом зворотніх підстановок.
Якщо п – кількість рівнянь (порядок) системи, то програмування обчислювального процесу проводиться так:
L – кількість кроків виключення ;
j – позначення другого індексу при визначенні α ;
і – номер рядка системи ;
k – номер стовпця.
3. Завдання:
Розв’язати систему лінійних алгебраїчних рівнянь методомГаусса.
4. Блок-схема алгоритму програми:
початок
1
f(x)
x1:=f(x)
ні
k<3k:=k+1
так
i<k+1
i:=i+1
ні
так
j>=k ні
j:=j-1
так
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
кінець
5. Список ідентифікаторів констант, змінних, процедур і функцій, використаних в програмі:
x1,x2,x3,x4 – змінні, які використовуються для знаходження коренів
рівнянь системи.
i,j – змінні, що застосовуються в циклах для позначення
рядків та стовпців.
n– константа, означає кількість стовпців вихідної матриці.
s, p – константи, що використовують для визначення
коефіцієнтів вихідних рівнянь.
mas() - функція, в якій відбувається виведення вихідної
системи на екран, знаходження допоміжних
коефіцієнтів, обчислення коренів системи рівнянь і
виведення їх на екран.
6. Остаточно відлагоджений текст програми згідно з отриманим завданням мовою С#:
usingSystem;
classGauss
{
double s, b;
double[] x = newdouble[4];
int i, j, k;
publicGauss(int a, int d)
{
Console.WriteLine("Введiтькоефiцiєнт k: ");
a = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Введiтькоефiцiєнт p: ");
b = Convert.ToInt32(Console.ReadLine());
s = 0.2 * a;
b = 0.2 * d;
}
publicvoidmas()
{
double[,] a ={{8.3,2.62+s,4.1,1.9,10.55+b},
{3.92,8.45,7.78-s,2.46,12.21},
{3.77,7.21+s,8.04,2.28,15.45-b},
{2.21,3.65-s,1.69,6.99,-8.35}};
Console.Clear();
Console.WriteLine(@" Розв'язок СЛАР класичним методом Гаусса");
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);
elseif (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 < 2; 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];
}
}
}
Console.WriteLine("\n\n\nКоренiрiвнянь:");
for (i = 2; i >= 0; i--)
{
for (j = 2; 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]);
Console.ReadLine();
}
}
classprogram
{
publicstaticvoidMain()
{
Gauss g = newGauss(4, 1);
g.mas();
}
}
7. Результативиконанняпрограми:
/Висновок:
Виконуючи дану лабораторну роботу я онайомився з прямими методами розв’язування систем лінійних алгебраїчних рівнянь.