Вторая пачка часть 51
После выполнения всех циклов получим верх¬¬нюю тре¬угольную матрицу А системы (1.24), ко¬то¬рая легко ре¬шается обратным ходом по фор¬му¬лам (1.25). Если при прямом ходе коэффициент аjj ока¬зал¬ся ра¬вен нулю, то пе¬ре-ста¬нов¬кой строк пе¬ремеща¬ем на глав¬ную ди¬а¬го-наль не¬ну¬ле¬вой эле¬мент и про¬дол¬жа¬ем расчет.
Если предположить, что аjj ? 0, то тогда можно при¬м嬬нить подпрограмму GAUS, ре¬ша¬ю-щую сис¬те¬му из n ли¬не鬬ных уравнений. Это одна из под¬про¬грамм, тра¬ди¬ци¬он¬но ис¬поль¬зу¬ю-ща¬яся в биб¬ли¬о¬теках стандартных про¬грамм для ЕС-ЭВМ. Ее пе¬ревод на язык PASCAL вы¬полнен ав¬то¬ра¬ми.
Формальные параметры процедуры. Входные: n (тип in¬te¬ger) - порядок системы; а (тип real) - мас¬сив ко¬эф¬фи¬ц謬ентов системы размером n?n; b (тип real) - массив-стрка свободных чле¬нов. Выход¬ные: х (тип real) - мас-сив-строка, в который по¬ме¬ща¬ется р嬬шение системы.
PROCEDURE GAUS (N:INTEGER; A : MAS; B : MAS1;
VAR X : MAS1);
TYPE MST = ARRAY [1..N] OF REAL;
MSS = ARRAY [1..N] OF MST;
VAR A1 : MSS; B1 : MST;
I, J, M, K : INTEGER; H : REAL;
BEGIN
FOR I := 1 TO N DO
BEGIN
B1[I] := B[I];
FOR J := 1 TO N DO
A1 [I,J] := A[I,J];
END;
FOR I := 1 TO N-1 DO
FOR J := I+1 TO N DO
BEGIN
A1[J,I] :=- A1[J,I] / A1[I,I];
FOR K := I+1 TO N DO
A1[J,K] := A1 [J,K] + A1[J,I]*A1[I,K];
B1[J] := B1[J] + B1[I]*A1[J,I];
END;
X[N] := B1[N] / A1[N,N];
FOR I := N-1 DOWNTO 1 DO
BEGIN
H := B1[I];
FOR J := I+1 TO N DO
H := H - X[J]*A1[I,J];
X[I] := H / A1[I,I];
END;
END.
Если контроль за невырожденностью мат-ри¬цы А не¬об¬ходим, то можно предложить воспользоваться другой про¬це¬ду¬рой GAUS1.
В отличие от первой процедуры здесь в вы¬ход¬ных па¬раметрах есть переменная tol, воз-вра¬ща¬ю¬щая 0 при нор¬¬мальном завершении работы про¬це¬ду¬ры, или 1, ес¬ли на главной диагонали один из эле¬ментов ра¬вен 0, или 2, если матрица А раз¬мер¬ностью боль¬ше, чем 50?50.
PROCEDURE GAUS1 (N:INTEGER; A : MAS; B : MAS1;
VAR X : MAS1; VAR TOL : INTEGER);
TYPE MST = ARRAY [1
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа