Твиты
-Решение СЛАУ методом Гаусса
Завтра, экзамен по предмету "Модели и методы обработки экспериментальных данных" задание было: Составить программу решения систем линейных алгебраических уравнений. Сижу, готовлюсь.
gauss.pas
-
Program zhGauss;
-
Uses Crt;
-
Const n0=10;
-
Type TMatr=array[1..n0,1..n0+1] of Real;
-
TV =array[1..n0] of Real;
-
var
-
Matr:TMatr;
-
i,j,n:integer;
-
Procedure OutPutMtr(Matr:TMatr;n:integer);
-
var i,j:integer;
-
begin
-
for i:=1 to n do begin
-
writeln;
-
for j:=1 to n do
-
write(Matr[i,j]:6:3);
-
end;
-
writeln;
-
end;
-
Procedure Gauss(Matr:Tmatr;Pr:Tv;var V:Tv;p:integer);
-
var i,k,j:Integer;
-
d,s:real;
-
begin
-
for i:=1 to p do
-
Matr[i,n+1]:=pr[i];
-
{Прямой ход}
-
for i:=1 to p do begin
-
d:=Matr[i,i];
-
{writeln('d=',d);}
-
for k:=1 to p+1 do
-
Matr[i,k]:=Matr[i,k]/d;
-
OutPutMtr(Matr,p);
-
readln;
-
for n:=i+1 to p do begin
-
d:=Matr[n,i];
-
for j:=1 to p+1 do
-
Matr[N, j]:= Matr[N, j] - d * Matr[i, j];
-
OutPutMtr(Matr,p);
-
readln;
-
end;
-
end;
-
OutPutMtr(Matr,p);{Обратный ход}
-
v[p]:=Matr[p,p+1]/Matr[p,p];
-
for i:=p-1 downto 1 do begin
-
s:=0;
-
for k:=i+1 to p do
-
s:=s+matr[i,k]*v[k];
-
v[i]:=Matr[i,p+1]-s;
-
end;
-
end;
-
var Pr0,v0,pr1,v:Tv;
-
Sr,D:Tv;
-
mn,ss,dd,s:real;
-
kk,kkk,r,f:integer;
-
begin
-
ClrScr;
-
{ввод свободных членов}
-
n:=4; writeln('Введите правые части');
-
for i:=1 to n do begin
-
readln(r);
-
pr0[i]:=r;
-
end;
-
writeln('Введите матрицу');
-
{Ввод матрицы[1,1],[1,2]...}
-
for i:=1 to n do
-
for j:=1 to n do begin
-
readln(f);
-
Matr[i,j]:=f;end;
-
{For i:=1 to n do Matr[i,i]:=2;}
-
writeln('Исходная матрица');
-
OutPutMtr(Matr,n);
-
writeln('Правые части');
-
for i:=1 to n do
-
write(Pr0[i]:6:3);
-
writeln;
-
Gauss(Matr,Pr0,v0,n);
-
writeln('Результат:');
-
for i:=1 to n do
-
write(v0[i]:6:3);
-
writeln;
-
FOR i:=1 TO N DO begin
-
s:=0;
-
for j:=1 to n do
-
s:=s+matr[i,j]*v0[j];
-
Pr1[i]:=s;
-
end;
-
writeln;
-
writeln('Ошибки');
-
for i:=1 to n do
-
writeln(Pr0[i],' ',Pr1[i]);
-
readln;
-
end.
p/s кодинг не мой.