Добавил:
Diryabuh
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Лабы / _labs / var13chisleniemetodi / laba 1 Реш Лин Ур / GAUSSFIL
.PAS Program metodGauss;{Џа®Ја ¬¬ ЇЁб ”Ё«ЁЇЇ®ўл¬ Ђ¤аҐҐ¬ ЈагЇ ђќ0301
—Ёб«ҐлҐ ¬Ґв®¤л « Ў 1 ¬Ґв®¤ ѓ гбб }
Uses crt;
Const n1 = 3;
n2 = 4;
{
n1 - chislo strok
n2 - chislo stolbcov
}
Type Imas = array[1..n1+1] Of Real;
Tmas = array[1..n2] Of Imas;
Procedure masIn (Var a:Tmas; const n1,n2:integer);
Var i,j:Integer;
Begin
For i:=1 To n1 Do
For j:=1 To n2 Do
Begin
Write('a(',i,',',j,')=');
Readln(a[i,j]);
End;
For i:=1 To n1 Do
If a[i,i]=0 Then
Begin
Writeln('ЌҐ ўлЇ®«Ґл гб«®ўЁп ЇаЁўЁ¤ҐЁп ¬ ваЁжл');
Readln;
Break;
End;
writeln('Џ®§¤а ў«пҐ¬ ¬ ббЁў ўўҐ¤с. Џа®¤®«¦Ёвм?');
readln;
clrscr;
end;
procedure masout(Var a:tmas; const n1, n2:integer);
var i,j:integer;
Begin
for i:=1 to n1 do begin writeln;
for j:=1 to n2 do begin
write (a[i,j]:0:3,' ');
end;
end;
end;
Procedure Gauss (Var a:Tmas; Const n1,n2:Integer);
Var i,j,k,n:Integer;
t:Real;
Begin
For i:=1 To n1-1 Do
Begin
t:=a[i,i];
For k:=1 To n2 Do
a[i,k]:=a[i,k]/t;
For n:=i+1 To n1 Do
Begin
t:=a[n,i];
For j:=1 To n2 Do
a[n,j]:=a[n,j]-t*a[i,j];
writeln('Џа®¬Ґ¦гв®з п ¬ ваЁж ');
masout(a,n1,n2);
readln;
End;
End;
End;
Procedure Res(Const a:Tmas; Const n1:Integer; Var x:Imas);
Var i,k:Integer;
s:Real;
Begin
x[n1]:=a[n1,n1+1]/a[n1,n1];
For i:=n1-1 DownTo 1 Do
Begin
s:=0;
For k:=i+1 To n1 Do
s:=s+a[i,k]*x[k];
x[i]:=a[i,n1+1]-s;
End;
End;
Var j:integer;
a:Tmas;
x:Imas;
Begin {Main}
clrscr;
masIn(a,n1,n2);
writeln('€б室 п ¬ ваЁж :');
masOut(a,n1,n2);
readln;
Gauss(a,n1,n2);
Res(a,n1,x);
writeln;
write('ЋвўҐв: ');
For j:=1 To n1 Do
Write('x',j,'=',x[j]:0:3,' ');
Readln;
End.
—Ёб«ҐлҐ ¬Ґв®¤л « Ў 1 ¬Ґв®¤ ѓ гбб }
Uses crt;
Const n1 = 3;
n2 = 4;
{
n1 - chislo strok
n2 - chislo stolbcov
}
Type Imas = array[1..n1+1] Of Real;
Tmas = array[1..n2] Of Imas;
Procedure masIn (Var a:Tmas; const n1,n2:integer);
Var i,j:Integer;
Begin
For i:=1 To n1 Do
For j:=1 To n2 Do
Begin
Write('a(',i,',',j,')=');
Readln(a[i,j]);
End;
For i:=1 To n1 Do
If a[i,i]=0 Then
Begin
Writeln('ЌҐ ўлЇ®«Ґл гб«®ўЁп ЇаЁўЁ¤ҐЁп ¬ ваЁжл');
Readln;
Break;
End;
writeln('Џ®§¤а ў«пҐ¬ ¬ ббЁў ўўҐ¤с. Џа®¤®«¦Ёвм?');
readln;
clrscr;
end;
procedure masout(Var a:tmas; const n1, n2:integer);
var i,j:integer;
Begin
for i:=1 to n1 do begin writeln;
for j:=1 to n2 do begin
write (a[i,j]:0:3,' ');
end;
end;
end;
Procedure Gauss (Var a:Tmas; Const n1,n2:Integer);
Var i,j,k,n:Integer;
t:Real;
Begin
For i:=1 To n1-1 Do
Begin
t:=a[i,i];
For k:=1 To n2 Do
a[i,k]:=a[i,k]/t;
For n:=i+1 To n1 Do
Begin
t:=a[n,i];
For j:=1 To n2 Do
a[n,j]:=a[n,j]-t*a[i,j];
writeln('Џа®¬Ґ¦гв®з п ¬ ваЁж ');
masout(a,n1,n2);
readln;
End;
End;
End;
Procedure Res(Const a:Tmas; Const n1:Integer; Var x:Imas);
Var i,k:Integer;
s:Real;
Begin
x[n1]:=a[n1,n1+1]/a[n1,n1];
For i:=n1-1 DownTo 1 Do
Begin
s:=0;
For k:=i+1 To n1 Do
s:=s+a[i,k]*x[k];
x[i]:=a[i,n1+1]-s;
End;
End;
Var j:integer;
a:Tmas;
x:Imas;
Begin {Main}
clrscr;
masIn(a,n1,n2);
writeln('€б室 п ¬ ваЁж :');
masOut(a,n1,n2);
readln;
Gauss(a,n1,n2);
Res(a,n1,x);
writeln;
write('ЋвўҐв: ');
For j:=1 To n1 Do
Write('x',j,'=',x[j]:0:3,' ');
Readln;
End.
Соседние файлы в папке laba 1 Реш Лин Ур
