Энергия и энергетика сегодня

Алгоритм Гаусса-Зейделя

begin

Q:=(-2+sqr(0.5/z)*sqr(4*arctan(1))/4);

for i:=1 to z do y[i]:=1;

retcode:=1;

for Iter:=1 to maxiter do

begin

Rmax:=0;

for i:=1 to z do

begin

if i=1 then

begin

r:=-(q*y[1]+y[z]);

if Rmax<Abs(R) then Rmax:=abs(R);

y[i]:=y[i]+R/q;

end;

if i=z then

begin

r:=-sqrt(z)/2-(y[z-1]+q*y[z]);

if Rmax<ABS(R) then Rmax:=R;

y[i]:=y[i]+r/q;

end;

if (I<>1) and (i<>z) then

begin

r:=-(y[i-1]+q*y[i]+y[i+1]);

if Rmax<abs(r) then Rmax:=r;

y[i]:=y[i]+R/q;

end;

end;

if Rmax<=eps then

begin

retcode:=0;

goto 1;

end;

end;

1: end;

procedure vivod(var y:vector;var z:integer);

var

i:integer;

begin

for i:=1 to z do

writeln (i:1,'=',y[i],);

end;

begin

wod(z,maxiter,eps);

reshen(y,z,retcode,maxiter,eps);

if retcode=0 then vivod(y,z)

else

write('число итераций');

end.

Перейти на страницу: 1 2 3 4 

Back to Top