Решение систем линейных уравнений методом простой итерации - 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.

Объяснение кода листинга программы

  1. Программа начинается с объявления переменных и постановки задачи.
  2. Затем происходит чтение входных данных: количество неизвестных n, матрицы A и правой части b.
  3. Далее происходит итерационный процесс решения системы линейных уравнений методом простой итерации.
  4. В цикле for i=1 до n происходит суммирование элементов матрицы A, которые не равны i, и вычисление относительной ошибки.
  5. Если сумма больше текущей относительной ошибки, то происходит увеличение счетчика q.
  6. Если q не равно n, то выводится сообщение о том, что итерационный процесс разбежен.
  7. Если q равно n, то вычисляется максимальная ошибка и обновляется значение переменной max.
  8. Затем происходит повторный расчет значения x[1,k] и обновление значения переменной p.
  9. Если новая ошибка больше текущей максимальной ошибки, то обновляется значение переменной max.
  10. Если max больше e, то происходит увеличение k и переход к началу цикла.
  11. Если max меньше или равно e, то выводится решение системы линейных уравнений.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 3.833 из 5
Похожие ответы