Программа предназначена для получения решения системы линейных алгебраических уравнений
=
методом Гаусса с выбором главного элемента по столбцу.
Вычислительная схема метода:
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.