for i:=n downto 1 do
begin
SUM:=0;
for j:=i+1 to n do
SUM:=SUM+a[i,j]*x[j];
x[i]:=(b[i]-SUM);
end;
stat:=1;
end;
end.
Текстмодуля (U_iter):
unit u_ITER;
interface
uses UN_VVOD;
procedure ITER (a:matrix; b:vector; n:integer;eps:real;
var x:vector; var stat:integer);
implementation
procedure iter;
var i,j:integer;
r,SUM,max:real;
x0:vector;
begin
for i:=1 to n do
begin
Sum:=0;
for j:=1 to n do
if j<>i then sum:=sum+a[i,j];
end;
if abs(a[i,j])<sum then
begin
writeln;
writeln('Ne shoditsya');
readln;
stat:=0;
exit;
end;
for i:=1 to n do
begin
for j:=1 to n do
if j<>i then a[i,j]:=a[i,j]/a[i,i];
b[i]:=b[i]/a[i,i];
a[i,i]:=0;
x0[i]:=b[i];
end;
repeat
for i:=1 to n do
begin
sum:=0;
for j:=1 to n do
sum:=sum+a[i,j]*x0[j];
x[i]:=sum+b[i];
end;
max:=0;
for i:=1 to n do
begin
r:= abs(x[i]-x0[i]);
if r>max then max:=r;
x0[i]:=x[i];
end;
until max<=eps;
end;
end.
Текстмодуля (U_koren):
unit U_Koren;
interface
uses UN_VVOD;
var
S:matrix;
y:vector;
i,j,m:integer;
sum:real;
procedure Koren(a:matrix; b:vector; n:integer; eps:real;
var x:vector; var stat:integer);
implementation
procedure Koren;
begin
for i:= 1 to n do
for j:= 1 to n do
if a[i,j]<>a[j,i] then
begin
writeln; writeln('Can not use this method for Matrix A');
stat:=0; readln; halt;
end;
S[1,1]:=sqrt(abs(a[1,1]));
for j:=2 to n do S[1,j]:=a[1,j]/S[1,1];
for i:=2 to n do
begin
sum:=0;
for m:=1 to i-1 do sum:=sum+sqr(S[m,i]);
S[i,i]:=sqrt(abs(a[i,i]-sum));
for j:=1 to n do
begin
sum:=0;
for m:=1 to i-1 do sum:=sum+S[m,i]*S[m,j];
if(i>j) then S[i,j]:=0 else S[i,j]:=(a[i,j]-sum)/S[i,i];
end;
end;
writeln('treugolnay matrica');
for i:=1 to n do
begin
for j:=1 to n do write(s[i,j]:6:2);
writeln
end;
y[1]:=b[1]/s[1,1];
for i:=2 to n do
begin
sum:=0;
for m:=1 to i-1 do sum:=sum+s[m,i]*y[m];
y[i]:=(b[i]-sum)/s[i,i];
end;
for i:=n downto 1 do
begin
sum:=0;
for m:=i+1 to n do
sum:=sum+s[i,m]*x[m];
x[i]:=(y[i]-sum)/s[i,i];
end;
writeLn(' y x');
for i:=1 to n do writeLn(y[i]:10:5, ' ',x[i]:10:5);
readln;
end;
end.
Текст модуля (U_mkk):
Unit U_MKK;
interface
uses u_from;
procedure koren(A:Matrix;b:vector;var x:vector);
implementation
procedure koren;
var t:Matrix; k,i,j,i1:integer; s,n,r:real; y,e:vector;
l:array [Index] of integer;
begin
for i:=1 to mmax do
begin
for j:=1 to mmax do
begin
if i=j then
begin
if i=1 then
begin
t[1,1]:=sqrt(abs(a[1,1]));
if a[1,1]<0 then l[1]:=-1 else l[1]:=1;
end
else
begin
s:=0;i1:=i-1;
for k:=1 to i1 do
begin
r:=sqr(t[k,i]); if l[k]=-1 then r:=-r;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.