Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОМ_лаб_укр.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3 Мб
Скачать
☆

2.2. Алгоритмічна і програмна реалізація метода Гауса

При реалізації прямого ходу метода Гауса виконується перетворення елементів матриці коефіцієнтів системи А і вектора вільних членів рівнянь В відповідно до формул (2.10).

Алгоритм містить не менше трьох основних циклів, що вкладені один в один. Їх індекси відповідають індексам в (2.10): зовнішній цикл - вибір чергового кроку виключення невідомих ( ) і опорного елемента у відповідному рядку і стовпці. Перевірка його на умови (2.11) і перестановка, за необхідності, рядків матриці А і елементів масиву вільних членів (що відповідає перестановці рівнянь системи). Середній цикл - вибір рівняння системи, із якого виключається невідоме ( ). Визначається номер -го рядка матриці А та елемента масиву В, які потрібно перетворювати. Внутрішній цикл - реалізація формул (2.10) при вибраних k та i (j = k, …, n).

В результаті виконання прямого Гауса в двомірному масиві матриці коефіцієнтів А розташується еквівалентна верхня трикутна матриця, тобто відмінними від нуля будують тільки діагональні і наддіагональні елементи.

На зворотному ході реалізуються формули (2.13) і (2.15). В результаті його виконання обчислюються значення елементів вектора невідомих Х, які є розв’язком системи рівнянь. Вони містяться в полі масиву вільних членів системи В.

Алгоритм метода Гауса (прямий і зворотний хід) показаний на рис. 2.1. Програмна реалізація алгоритмів показана на рис. 2.2.

М4: Так

1. Зовнішній цикл. Вибір кроку виключення невідомих;

2. Перевірка умов (2.11);

3. Вибір рівняння системи, із якого виключаються невідомі;

4. Реалізація формул (2.10).

Рис. 2.1.а. Алгоритм метода Гауса. Прямий хід.

5. Реалізація формули (2.13);

6. Реалізація формули(2.15).

Рис. 2.1.б. Алгоритм метода Гауса. Зворотний хід.

  1. Прямий хід методу Гауса

Begin

l:=k;

for j:=k+1 to n do

if(abs(A[l,k]) < abs(A[j,k])) then l:=j;

if A[l,k]<>0 then goto m3;

goto m10;

m3: if l=k then goto m4;

m4: for i:=k+1 to n do

Begin

cm:=A[i,k]/A[k,k];

A[i,k]:=0;

For j:=k+1 to n do

A[i,j]:=A[i,j]-cm*A[k,j];

b[i]:=b[i]-cm*b[k];

End;

m10:End;

…

  1. Зворотний хід методу Гауса. Реалізуються формули (2.13) і (2.15).

...

B[n]:=b[n]/A[n,n];

For k:=n-1 downto 1 do

Begin

S:=0;

For j:=k+1 to n do

S:=s+A[k,j]*b[j];

B[k]:=(b[k]-s)/A[k,k];

End;

… … …

Рис. 2.2. Програмна реалізація алгоритмів Гауса

Результати обчислень, що є розв’язком системи лінійних рівнянь розміщуються в масиві В.