Мета роботи: ознайомлення з прямими методами розв’язування систем лінійних алгебраїчних рівнянь.
Короткі теоретичні відомості
Нехай маємо лінійне алгебраїчне рівняння вигляду А*х=b.
Методи розв’язування систем лінійних алгебраїчних рівнянь поділяються на дві групи:
прямі методи - зводяться до скінченних алгоритмів для обчислення коренів рівнянь. Вони дають розв’язки після виконання відомого для даного n (n – порядок) числа арифметичних операцій.
Ітераційні методи – це методи послідовних наближень.
Класичний метод Гауса полягає у зведенні матриці А до верхньої трикутної матриці за допомогою виключення невідомих х (прямий хід) і одержанні розв’язків з допомогою обернених підстановок (обернений хід).
Число операцій (вартість методу) - EMBED Equation.3 операцій сумування, множення та n операцій ділення.
Більшу частину всього обчислювального процесу займає зведення матриці А до трикутного вигляду. Можливі дві форми зведення матриці А до трикутного вигляду – рядкова та стовпцеві.
Завдання
Розв’язати систему лінійних алгебраїчних рівнянь класичним методом Гауса:
8.3*х1 + (2,62+s)*x2 + 4.1*x3 + 1.9*x4 = -10.55 + b
3.92*х1 + 8.45*x2 + (7.78-s)*x3 + 2.46*x4 = 12.21
3.77*х1 + (7.21+s)*x2 + 8.04*x3 + 2.28*x4 = 15.45 - b
2.21*х1 + (3.65-s)*x2 + 1.69*x3 + 6.99*x4 = -8.35
s=0.2*k, k=3;
b = 0.2*p, p=0
Список ідентифікаторів констант, змінних, процедур і функцій, використаних у програмі
n, m – константи;
l, i, k – змінні типу integer, де l – кількість кроків виключення, і – номер рядка системи, k – номер стовпця;
c, s – змінні типу real, які використовуються при роботі програми;
a[],x[] – масиви типу real;
x[i] – результат роботи програми;
read, writeln – функції вводу і виводу відповідно;
readkey – затримка екрану.
Блок-схема алгоритму програми
Початок
i:=1,n
k:=1,m
aik
l:=1, n-1
c:=all
k:=l+1, n+1
alk:= EMBED Equation.3 EMBED Equation.3
i:=l+1, n
aik:=aik+ail*alk
x n:=- EMBED Equation.3
1
1
i:=(n-1) down to 1
s:=a i, n+1
k:=i+1, n
s:=s+aik*x k
xi:=s
i:=1, n
x i
Кінець
Програма
Program gaus;
const n=4; m=5;
var l, I, k: integer;
c, s: real;
a: array [1..n, 1..m] of real;
x: array [1..n] of real;
begin
for i:=1 to n do
for k:=1 to m do
read (a[i,k]);
for l:=1 to n-1 do
begin
c:=a[l, l];
for k:=l+1 to n+1 do
begin
a[l,k]:=-a[l,k]/c;
for i:=l+1 to n do
a[i,k]:=a[i,k] + a[i,l]*a[l,k];
end;end;
x[n]:=-a[n, n+1]/a[n, n];
for i:=n-1 downto 1 do
begin
s:=a[i, n+1];
for k:=i+1 to n do
s:=s + a[i,k]*x[k];
x[i]:=s;
end;
for i:=1 to n do
writeln (x[i]);
readkey;
end.
Результат виконання програми
8,3
3,22
4,1
1,9
10,55
3,92
8,45
7,18
2,46
-12,21
3,77
7,81
8,04
2,28
-15,45
2,21
3,05
1,69
6,99
8,35
-2,708399218
3,007561108
3,255841418
-1,256668936
Висновок
На даній лабораторній роботі я вивчала методи розв’язування систем лінійних алгебраїчних рівнянь. А саме класичний метод Гауса.
Звіт
до лабораторної роботи № 2
з курсу “Комп’ютерні методи дослідження інформаційних процесів та систем”
на тему “Методи розв’язування систем лінійних алгебраїчних рівнянь”