Решение системы линейных уравнений методом Гаусса

Программа предназначена для получения решения системы линейных алгебраических уравнений

=

методом Гаусса с выбором главного элемента по столбцу.

Вычислительная схема метода:

a ´ ij = aij , f ´ i = f i ,

k = 1, 2, …, n – 1; i = k + 1, …, n; j = k + 1, …, n.

fi = , i = n, n – 1, …, 1.

x i = f i, i = 1, 2, …, n.

П р о г р а м м а

Program GAUSS;

const nmax = 10;

var A: array [1..nmax,1..nmax] of real;

F: array [1..nmax] of real;

i,j,k,b,n:integer;

e,s:real;

label vyh;

Begin

writeln('решение системы линейных уравнений методом Гаусса');

writeln;

write('введите размерность матрицы А: n=');

readln(n);

writeln('ввод матрицы А:');

for i:=1 to n do

for j:=1 to n do

Begin

write('введите A[',i,',',j,']=');

readln(A[i,j]);

end;

writeln('ввод столбца свободных членов F:');

for i:=1 to n do

Begin

write('введите F[',i,']=');

readln(F[i]);

end;

for i:=1 to n do

A[i,n+1]:=F[i];

Begin

for k:=1 to n do

Begin

e:=0;

j:=k;

b:=0;

for i:=k to n do

if e<abs(A[i,j]) then

Begin

e:=abs(A[i,j]);

b:=i

end;

if e=0 then

Begin

writeln('матрица вырождена');

goto vyh;

end;

if k<b then

Begin

for j:=k to n+1 do

Begin

s:=A[k,j];

A[k,j]:=A[b,j];

A[b,j]:=s

End

end;

for i:=k+1 to n do

Begin

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

for j:=k+1 to n+1 do

A[i,j]:=A[i,j]-s*A[k,j]

end;

end;

end;

for i:=1 to n do

F[i]:=A[i,n+1];

for i:=1 to n do

Begin

b:= n+1-i;

s:=0;

for k:=0 to n-b-1 do

s:=s+F[n-k]*A[b,n-k];

F[b]:=(F[b]-s)/A[b,b]

end;

writeln;

writeln('Р Е З У Л Ь Т А Т');

writeln;

for i:=1 to n do

writeln('x[',i,']=',F[i]:10:5);

vyh:readln;

end.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: