Метод Гаусса

Суть метода состоит в следующем. Вначале квадратную матрицу коэффициентов при неизвестных преобразуют в верхне-треугольную матрицу (прямой ход). Для этого сначала первое неизвестное исключают из второго и последующих уравнений системы, затем второе неизвестное исключают из третьего и последующих уравнений и так далее. Таким образом, в последнем уравнении остается только одно неизвестное. Для реализации прямого хода используют следующие известные правила:

- любое уравнение системы можно умножить на постоянный коэффициент;

- можно сложить два любых уравнения системы и результат записать вместо одного из этих уравнений.

На втором этапе последовательно вычисляют значения всех неизвестных, начиная с последнего (обратный ход).

Рассмотрим применение метода Гаусса на примере. Пусть имеем такую систему из трех уравнений:

 

 

Для исключения первого неизвестного из второго уравнения умножим первое уравнение на (-a21/a11), т.е. на –0,5. Первое уравнение примет вид

-2x1 – 0,5x2 + 0,5x3 = -1,5.

Сложив его со вторым уравнением исходной системы (2.2), получим

– 2,5x2 + 1,5x3 = -0,5.

Можно заметить, что неизвестное x1 в данном уравнении отсутствует.

Для исключения первого неизвестного из третьего уравнения системы (2.2) умножим первое уравнение этой системы на (-a31/a11), т.е. на –0,25. Первое уравнение примет вид

-x1 – 0,25x2 + 0,25x3 = -0,75.

Сложив его с третьим уравнением исходной системы (2.2), получим

-1,25x2 + 2,25x3 = 4,25.

Можно заметить, что и в этом уравнении неизвестное x1 отсутствует.

Таким образом, система (2.2) примет вид

4x1 + x2 – x3 = 3

-2,5x2 + 1,5x3 = -0,5(2.3)

-1,25x2 + 2,25x3 = 4,25

Теперь исключим неизвестное x2 из третьего уравнения системы (2.3), сложив его со вторым уравнением системы (2.3), умноженным на –0,5. Получим систему

4x1 + x2 – x3 = 3

-2,5x2 + 1,5x3 = -0,5(2.4)

1,5x3 = 4,5

Прямой ход закончен, исходная матрица коэффициентов приведена к верхне-треугольному виду. В третьем уравнении системы (2.4) присутствует только неизвестное x3. Теперь легко осуществить обратный ход, т.е. вычислить неизвестные. Из третьего уравнения вычислим x3, далее его значение подставим во второе уравнение и вычислим x2, а затем из первого уравнения найдём x1. Получим ответ: x1 = 1; x2 = 2; x3 = 3.Задача решена.

Программа для решения СЛАУ методом Гаусса может иметь такой вид:

program SLAU1; {Решение системы линейных уравнений методом Гаусса}

uses crt;

const n=3;

var a:array [1..n,1..n] of real;

b,x: array [1..n] of real;

i,j,k: integer; c,s: real;

Begin

{Ввод исходных данных}

for i:=1 to n do

Begin

writeln (‘Введите коэффициенты уравнения’,i);

for j:=1 to n do read (a[i,j]);

writeln (‘Введите свободный член уравнения’,i);

readln (b[i]);

end;

{Прямой ход}

for k:=1 to n-1 do

Begin

for i:=k+1 to n do

Begin

c:=-a[i,k]/a[k,k]; a[i,k]:=0;

for j:= k+1 to n do a[i,j]:=a[i,j]+c*a[k,j];

b[i]:=b[i]+c*b[k];

end;

end;

{Oбратный ход}

x[n]:=b[n]/a[n,n];

for i:=n-1 downto 1 do

Begin

s:=0;

for j:=i+1 to n do s:= s+a[i,j]*x[j];

x[i]:=(b[i]-s)/a[i,i];

end;

{Вывод результатов}

writeln (‘Решение системы’);

for i:=1 to n do write (x[i]:8:4);

writeln;

End.