Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
7
Добавлен:
04.06.2015
Размер:
2.46 Кб
Скачать
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.