Выполнить «обратный ход» в решении системы уравнений методом Гаусса - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д