Система линейных алгебраических уравнений(Решить методом Зейделя) - Turbo Pascal

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

Решить Методом Зейделя -5x1+x2+x3=-3 2x1+5x2-x3=6 x1+2x2+4x3=7 (x1=x2=x3=1)

Код к задаче: «Система линейных алгебраических уравнений(Решить методом Зейделя) - Turbo Pascal»

textual
uses crt;
const a: array [1..3] of real = (-5,2,1);
      b: array [1..3] of real = (1,5,2);
      c: array [1..3] of real = (1,-1,4);
      f: array [1..3] of real = (-3,6,7);
 
var  i,k,m: integer;
     e: real;
     x1,x2,x3,max: array [0..20] of real;
     b1,c1,f1: array [1..3] of real;
  {   a,b,c,f: array [1..3] of real;   }
     a2,b2,c2,f2: real;
 {Если нужен ручной ввод (убрать массивы констант
  и раскомментировать строки}
 
 }
begin
 clrscr;
{ writeln('Ввод коэффициентов:');
 for i:=1 to 3 do
  begin
   write('a[',i,'] = ');
   readln(a[i]);
   write('b[',i,'] = ');
   readln(b[i]);
   write('c[',i,'] = ');
   readln(c[i]);
   write('f[',i,'] = ');
   readln(f[i]);
  end;  }
 writeln('Введите точность: ');
 readln(e);
 writeln(a[1],'*x1 + ',b[1],'*x2 + ',c[1],'*x3 = ',f[1]);
 writeln(a[2],'*x1 + ',b[2],'*x2 + ',c[2],'*x3 = ',f[2]);
 writeln(a[3],'*x1 + ',b[3],'*x2 + ',c[3],'*x3 = ',f[3]);
 x1[0]:=0;
 x2[0]:=0;
 x3[0]:=0;
 for i:=1 to 3 do
  begin
   if i=1 then
    begin
     b1[i]:=(b[i]/a[i]);
     c1[i]:=(c[i]/a[i]);
     f1[i]:=(f[i]/a[i]);
    end;
   if i=2 then
    begin
     b1[i]:=(a[i]/b[i]);
     c1[i]:=(c[i]/b[i]);
     f1[i]:=(f[i]/b[i]);
    end;
   if i=3 then
    begin
     b1[i]:=(a[i]/c[i]);
     c1[i]:=(b[i]/c[i]);
     f1[i]:=(f[i]/c[i]);
    end;
  end;
 i:=0;
 repeat
   x1[k+1]:=-x2[k]*b1[1]-x3[k]*c1[1]+f1[1];
   x2[k+1]:=-x1[k+1]*b1[2]-x3[k]*c1[2]+f1[2];
   x3[k+1]:=-x1[k+1]*b1[3]-x2[k+1]*c1[3]+f1[3];
   max[0]:=abs(x1[k+1]-x1[k]);
   max[1]:=abs(x2[k+1]-x2[k]);
   max[2]:=abs(x3[k+1]-x3[k]);
   m:=i;
   for i:=0 to 2 do
    if max[i]>max[m] then
     m:=i;
   inc(k);
 until max[m]<e;
 writeln('x[1] = ',x1[k]:3:3);
 writeln('x[2] = ',x2[k]:3:3);
 writeln('x[3] = ',x3[k]:3:3);
 writeln('Итераций: ',k);
 readln;
end.

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

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


СОХРАНИТЬ ССЫЛКУ