Выполнить «обратный ход» в решении системы уравнений методом Гаусса - Turbo Pascal

Узнай цену своей работы

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

Помогите пожалуйста. Нужно выполнить «обратный ход» в решении системы линейных алгебраических уравнений методом Гаусса. Нужно вводить только элементы матрицы системы, стоящие выше главной диагонали, и вектор свободных членов.

Решение задачи: «Выполнить «обратный ход» в решении системы уравнений методом Гаусса»

textual
Листинг программы
uses crt;
var a:array[1..10,1..10] of real;
    b,x:array[1..10] of real;
    n,i,j,k:byte;
    r,g:real;
begin
clrscr;
randomize;
repeat
write('Количество уравнений от 2 до 10 n=');
readln(n);
until n in [2..10];
writeln('Треугольная матрица и приведенные свободные члены');
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    if j>=i then
     begin
      a[i,j]:=-5+random*10;
      write(a[i,j]:5:2);
     end
    else write(' ':5);
   end;
  b[i]:=-5+random*10;
  writeln(b[i]:7:2);
 end;
{Обратный ход Гаусса, находим корни }
for k:=n downto 1 do {от последней строки к первой}
 begin
  r:=0;
  for j:=k+1 to n do {в строке от главной диагонали вправо}
   begin
    g:=a[k,j]*x[j]; {умножаем коэффициенты на  известные уже корни}
    r:=r+g;         {суммируем}
   end;
  x[k]:=(b[k]-r)/a[k,k];  {из преобразованного прямым ходом свободного члена вычитаем полученную
                           сумму и делим на первый коэффициент (который на главной диагонали)}
 end;
writeln('Корни системы:'); {выводим результат}
for i:=1 to n do
writeln('x[',i,']=',x[i]:6:2);
readln
end.

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


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

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

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