Решение систем линейных уравнений методом простой итерации - Turbo Pascal

Формулировка задачи:

Решить систему линейных уравнений методом простой итерации

Код к задаче: «Решение систем линейных уравнений методом простой итерации - Turbo Pascal»

textual
program  metod_prostoi_iterachii;
     label 1;
 
var
    a,x:array[1..200,1..200] of real;
    b:array[1..200] of real;
    n,i,j,q,k:integer;
     sum, max,p,e:real;
 
begin
   writeln(' введіть к-ть  невідомих n<200');
   read(n);
 
  writeln(' введіть  ел.  матриці  А ');
  for i:=1 to n do
  for j:=1 to n do
    begin
   readln(a[i,j]);
    end;
 
writeln(' введіть ел.  в-ра  b');
 for i:=1 to n do
  begin
readln(b[i]);
  end;
 
writeln(' введіть відносну похибку');
readln(e);
 
q:=0;
    for i:=1 to n do
    begin
    sum:=0;
    for j:=1 to n do
     if j<>i then sum:=sum+a[i,j];
     
     if a[i,i]>sum then q:=q+1;
     end;
    
 if q<>n then  writeln('Iтераційний процес розбіжний')
     else
     
begin
     for i:=1 to n do
     x[i,1]:=b[i]/a[i,i];        
         
 k:=2;
           1 : for i:=1 to n do
                 begin
                   x[i,k]:= x[i,1];
                
                 for j:=1 to n do
                   if i<>j then
                   x[i,k]:= x[i,k]+(-a[i,j]/a[i,i])*x[j,k-1];
                 end;
      
       max:=abs(x[1,k]-x[1,k-1]);
          for i:=2 to n do
          if  abs(x[i,k]-x[i,k-1])>max  then
            max:=abs(x[i,k]-x[i,k-1]);
        
p:=x[1,k];
        for i:=2 to n do
        if abs(x[i,k])>p then 
            p:=abs(x[i,k]);
     
 if max/p>e then
      begin
        k:=k+1;
        goto 1;
      end
       
else
       
begin
       writeln('розвязок СЛАР:');
       for i:=1 to n do
       writeln('x[',i,']=',x[i,k]:4:7);
       end;
     
  end;
end.
Эта работа вам не подошла?

Вы всегда можете заказать любую учебную работу у наших авторов от 20 руб.

12   голосов, оценка 3.833 из 5


СДЕЛАЙТЕ РЕПОСТ