Unit SLAE; Interface Const nn=100; {максимально допустимая размерность матрицы} Type Matrix = array[1..nn,1..nn] of real; {Матрица с уравнениями} Vector = array[1..nn] of real; {Решения СЛАУ} Function Gauss(n: integer; a: matrix; b: vector; e: double; x: vector): boolean; Implementation {Решение СЛАУ методом Гаусса c заданной точностью} {n - размерность матрицы} {а - матрица без свободных членов} {b - вектор-столбец свободных членов} {e - точность вычислений} {x - вектор-столбец решений матрицы} Function Gauss; Var i,j,k,ind : integer; coef,max,buf: real; Begin {Шаг 1: Прямой ход решения} for i:=1 to n-1 do begin {Ищем строку l с максимальным элементом в k-ом столбце} ind:=0; max:=0; for j:=i to n do begin if abs(a[j,i])>max then begin max:=abs(a[j,i]); ind:=j; end; end; {Если у всех строк от k до n элемент в k-м столбце нулевой, то система не имеет однозначного решения} if ind=0 then begin Gauss:=false; Exit; end; {Пропускаем строчку, если число меньше точности} if maxi then begin {Меняем местами строки с коэффициентами при неизвестных} for k:=1 to n do begin buf:=a[i,k]; a[i,k]:=a[ind,k]; a[ind,k]:=buf; end; {Меняем местами строки со свободными членами} buf:=b[i]; b[i]:=b[ind]; b[ind]:=buf; end; {Преобразуем матрицу} for j:=i+1 to n do begin {Пропускаем строчку, если число меньше точности} if max