Вторая пачка часть 61
29); за¬т¬ем по¬лагаем k = 2 - и определяем эле-мен¬ты вто¬рой стрки и т.д. Когда k = n, тогда най¬де¬ны все эл嬬мен¬ты матриц S и D, а следовательно и S*. За¬тем последовательно вы-пол¬ня¬¬ем вы¬чис¬ления (1.28):
S* Z = F; D Y = Z; S X = Y
обыч¬ным ходом по формулам
(1.30)
при i = 2, 3, ..., n.
Попутно заметим, что определитель матрицы А можно вычислить из выражения
. (1.31)
Этот метод экономичен, требует n3/3 ариф¬м嬬тических действий и при больших n ( n > 50) вдвое бы¬стрее метода Га¬усса. Если за основу про¬цедуры при¬нять алгоритм П5.6 Дья¬конова [1987], то тогда метод квад¬ратного кор¬ня мо¬жет быть ре¬а¬¬ли¬зован c помощью сле¬дующей про¬це-ду¬ры:
PROCEDURE KVK (M, N : INTEGER;
AA: ARRAY OF REAL; BB : ARRAY OF REAL;
VAR C: ARRAY OF REAL);
TYPE MAS1=ARRAY [0..4] OF REAL;
MAS=ARRAY [0..4] OF MAS1;
VAR A : MAS; J, K, I : INTEGER; S, C1 : REAL;
BEGIN
I := 0;
FOR J := 1 TO M DO
FOR K := 1 TO N DO
BEGIN INC (I); A[J,K] := AA [I]; END;
FOR J := 1 TO N DO
BEGIN
FOR K := J TO N DO
BEGIN
S := 0.0;
FOR I := 1 TO M DO S := S + A[I,J] * A[I,K];
C[K] := S;
END;
C1 := 0.0;
FOR I := 1 TO M DO С1 := C1 + A[I,J]*BB[I];
FOR I := J TO N DO A[I,J] := C[I];
C[J] := C1;
END;
A[1,1] := SQRT (A[1,1]);
FOR J := 2 TO N DO A[1,J] := A[J,1] / A[1,1];
FOR I := 2 TO N DO
BEGIN
S := 0.0;
FOR K := 1 TO I-1 DО S := S + A[K,I]*A[K,I];
A[I,I] := SQRT (A[I,I] - S);
FOR J := I+1 TO N DO
BEGIN
S := 0.0;
FOR K := 1 TO I-1 DO
S := S + A[K,I]*A[K,J];
A[I,J] := (A[J,I] - S) / A[I,I];
END;
END;
C[1] := C[1] / A[1,1];
FOR I := 2 TO N DO
BEGIN S := 0.0;
FOR K := 1 TO I-1DO
S := S + A[K,I] * C[K];
C[I] := (C[I] - S) / A[I,I];
END;
C[N] := C[N] / A[N,N];
FOR I := N-1 DOWNTO 1 DO
BEGIN S := 0.0;
FOR K := I+1 TO N DO S := S + A[I,K] * C[K];
C[I] := (C[I] - S) / A[I,I];
END;
ЕND
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа