Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:ДЕЛФИ_ГОТОВО / 03 вар / 03
.PAS program Z3V03;
uses crt;
type
mas = array[1..10] of real;
mat = array[1..10] of mas;
var
i,j,n,kolit: integer;
norm,normx,e: real;
A,Ak,G: mat;
x,xp,r,b,bk,D,sum: mas;
begin
clrscr;
write('‚ўҐ¤ЁвҐ а §¬Ґа®бвм ¬ ваЁжл n='); readln(n);
writeln;
writeln('‚ў®¤ Ёб室®© ¬ ваЁжл бЁб⥬л A:');
for i:=1 to n do
for j:=1 to n do
begin
write('A[',i,',',j,']=');
readln(A[i,j]);
end;
writeln;
writeln('‚ў®¤ ўҐЄв®а b:');
for i:=1 to n do
begin
write('b[',i,']=');
readln(b[i]);
end;
writeln;
writeln('‚ў®¤ з «м®Ј® ўҐЄв®а x:');
for i:=1 to n do
begin
write('x[',i,']=');
readln(x[i]);
end;
writeln;
write('‚ўҐ¤ЁвҐ в®з®бвм ўлзЁб«ҐЁ© e=');
readln(e);
Ak:=A; bk:=b;
for i:=1 to n do
begin
bk[i]:=b[i]/A[i,i];
for j:=1 to n do
if j=i then Ak[i,i]:=0 else Ak[i,j]:=-A[i,j]/A[i,i];
end;
G:=Ak; D:=bk;
for i:=1 to n do
begin
sum[i]:=0;
for j:=1 to n do
sum[i]:=sum[i]+abs(G[i,j]);
end;
norm:=sum[1];
for i:=2 to n do
if norm<sum[i] then norm:=sum[i];
if norm>=1 then
begin
writeln('“б«®ўЁҐ б室Ё¬®бвЁ Ґ ўлЇ®«Ґ®');
writeln('Ќ®а¬ ',norm:8:3,'>=1');
exit;
end;
kolit:=0;
repeat
xp:=x;
for i:=1 to n do
begin
x[i]:=D[i];
for j:=1 to n do
x[i]:=x[i]+G[i,j]*x[j];
end;
for i:=1 to n do
begin
sum[i]:=0;
for j:=1 to n do
sum[i]:=sum[i]+abs(x[i]-xp[i]);
end;
normx:=sum[1];
for i:=2 to n do
if normx<sum[i] then normx:=sum[i];
kolit:=kolit+1;
until normx<=e;
for i:=1 to n do
begin
r[i]:=0;
for j:=1 to n do
r[i]:=r[i]+A[i,j]*x[j];
r[i]:=r[i]-b[i];
end;
writeln;
writeln('‚лў®¤ Ёб室®© ¬ ваЁжл A:');
for i:=1 to n do
begin
for j:=1 to n do
write(A[i,j]:8:3);
writeln;
end;
writeln;
writeln('‚лў®¤ ўҐЄв®а b:');
for i:=1 to n do
write(b[i]:8:3);
writeln;
writeln;
writeln('“б«®ўЁҐ б室Ё¬®бвЁ ўлЇ®«Ґ®');
writeln('Ќ®а¬ ',norm:8:3,' ¬ҐмиҐ 1');
writeln;
writeln('‚лў®¤ Ї®«г祮Ј® аҐиҐЁп x:');
for i:=1 to n do
write(x[i]:8:3);
writeln;
writeln;
writeln('Љ®«ЁзҐбвў® ЁвҐа жЁ©: ',kolit);
writeln;
writeln('‚лў®¤ ўҐЄв®а -Ґўп§ЄЁ r:');
for i:=1 to n do
write(r[i]:9:7);
writeln;
readln;
end.
uses crt;
type
mas = array[1..10] of real;
mat = array[1..10] of mas;
var
i,j,n,kolit: integer;
norm,normx,e: real;
A,Ak,G: mat;
x,xp,r,b,bk,D,sum: mas;
begin
clrscr;
write('‚ўҐ¤ЁвҐ а §¬Ґа®бвм ¬ ваЁжл n='); readln(n);
writeln;
writeln('‚ў®¤ Ёб室®© ¬ ваЁжл бЁб⥬л A:');
for i:=1 to n do
for j:=1 to n do
begin
write('A[',i,',',j,']=');
readln(A[i,j]);
end;
writeln;
writeln('‚ў®¤ ўҐЄв®а b:');
for i:=1 to n do
begin
write('b[',i,']=');
readln(b[i]);
end;
writeln;
writeln('‚ў®¤ з «м®Ј® ўҐЄв®а x:');
for i:=1 to n do
begin
write('x[',i,']=');
readln(x[i]);
end;
writeln;
write('‚ўҐ¤ЁвҐ в®з®бвм ўлзЁб«ҐЁ© e=');
readln(e);
Ak:=A; bk:=b;
for i:=1 to n do
begin
bk[i]:=b[i]/A[i,i];
for j:=1 to n do
if j=i then Ak[i,i]:=0 else Ak[i,j]:=-A[i,j]/A[i,i];
end;
G:=Ak; D:=bk;
for i:=1 to n do
begin
sum[i]:=0;
for j:=1 to n do
sum[i]:=sum[i]+abs(G[i,j]);
end;
norm:=sum[1];
for i:=2 to n do
if norm<sum[i] then norm:=sum[i];
if norm>=1 then
begin
writeln('“б«®ўЁҐ б室Ё¬®бвЁ Ґ ўлЇ®«Ґ®');
writeln('Ќ®а¬ ',norm:8:3,'>=1');
exit;
end;
kolit:=0;
repeat
xp:=x;
for i:=1 to n do
begin
x[i]:=D[i];
for j:=1 to n do
x[i]:=x[i]+G[i,j]*x[j];
end;
for i:=1 to n do
begin
sum[i]:=0;
for j:=1 to n do
sum[i]:=sum[i]+abs(x[i]-xp[i]);
end;
normx:=sum[1];
for i:=2 to n do
if normx<sum[i] then normx:=sum[i];
kolit:=kolit+1;
until normx<=e;
for i:=1 to n do
begin
r[i]:=0;
for j:=1 to n do
r[i]:=r[i]+A[i,j]*x[j];
r[i]:=r[i]-b[i];
end;
writeln;
writeln('‚лў®¤ Ёб室®© ¬ ваЁжл A:');
for i:=1 to n do
begin
for j:=1 to n do
write(A[i,j]:8:3);
writeln;
end;
writeln;
writeln('‚лў®¤ ўҐЄв®а b:');
for i:=1 to n do
write(b[i]:8:3);
writeln;
writeln;
writeln('“б«®ўЁҐ б室Ё¬®бвЁ ўлЇ®«Ґ®');
writeln('Ќ®а¬ ',norm:8:3,' ¬ҐмиҐ 1');
writeln;
writeln('‚лў®¤ Ї®«г祮Ј® аҐиҐЁп x:');
for i:=1 to n do
write(x[i]:8:3);
writeln;
writeln;
writeln('Љ®«ЁзҐбвў® ЁвҐа жЁ©: ',kolit);
writeln;
writeln('‚лў®¤ ўҐЄв®а -Ґўп§ЄЁ r:');
for i:=1 to n do
write(r[i]:9:7);
writeln;
readln;
end.