Вторая пачка часть 26
Формирование матрицы С(i) и столбца ?i (прцедура VECT).
??? 2. Решение системы С(i) = ?i методом Гаусса (пр¬цедура GAUSS).
??? 3. Определение собственных значений мат¬ри¬цы А (процедура LAMBDA).
??? 4. Определение собственных векторов мат¬ри¬цы А (процедура SVECT).
Если предложенную схему принять за основу, то под¬программы VECT, LАMBDA и SVECT могут вы¬гля¬деть следующим образом.
PROCEDURE VECT (CONST N : INTEGER; A:MAS1;
VAR C: MAS1; VAR B : MAS11);
VAR I,J,K : INTEGER; X : MAS; S : REAL;
BEGIN
FOR I := 1 TO N DO
BEGIN
X[I] := 0.0;
C[I,N] := X[I];
C[N,I] := 0.0;
END;
X[1] := 1.0;
C[1,N] := X[1];
FOR I := 2 TO N+1 DO
BEGIN
FOR J := 1 TO N DO
BEGIN
S := 0.0;
FOR K := 1 TO N DO
S := S + A[J,K]*X[K];
IF I<>N+1 THEN C[J,N+1-I] := S
ELSE B[J] := S;
END;
FOR J := 1 TO N DO
X[J] := C[J,N+1-I];
END;
END.
PROCEDURA LAMBDA (CONST N : INTEGER;E:REAL;
QQ : MAS11; VAR XX : MAS11);
LABEL CONT, CONT1;
VAR I,J,K,NN : INTEGER; Q : ARRAY [0..30] OF REAL;
T,C,P,Q1,D,U,V,F,W,H,Y,Z,L,R,S,X,M : REAL;
A, B, BIG : REAL; DN : BOOLEAN;
BEGIN
K := 1;
DN := FALSE;
NN:= N;
X := 0.0;
BIG := 1.0E-10;
FOR I := 1 TO N+1 DO
Q[I] := QQ[I];
REPEAT
T := 1.0;
C := Q[2] / Q[1];
IF NN =1 THEN
BEGIN
P := -C;
Q1 := 0;
END
ELSE
BEGIN
IF NN = 2 THEN
H := C*C/4.0 - Q[3]/Q[1];
ELSE
BEGIN
M := 10;
C := 4.0;
D := 8.0;
U := 4.0;
F := 1.0;
W := 2.0;
T := 0.0;
V := 8.0;
CONT: IF ABS(M-10.0)<BIG THEN
BEGIN
P := C;
M := 0.0;
Q1 := D;
C := U;
D := V;
U := P;
V := Q1;
Y := C;
Z := D;
F := -F;
END;
M := M + 1.0;
H := 0.0;
Q1 := Q[1];
P := Q[2] - C*Q1;
L := Q1;
CONT1: FOR J := 3 TO NN DO
BEGIN
R := P;
P := Q[J] - C*R - D*Q1;
Q1 := R; R := L;
L := Q1 - C*R - H*D;
H := R;
END;
Q1 := Q[NN+1] - D*Q1;
S := L + C*R;
IF ABS(T)<=BIG THEN
BEGIN
X := D*R;
H := R*X + S*L;
IF ABS(H)<=BIG THEN
GOTO CONT;
END;
C := C + (P*S - Q1*R)/H;
D := D + (P*X+Q1*L)/H;
IF ABS (C-Y+D-Z) < BIG THEN
BEGIN
F := -W;
EXIT;
END;
W := -F;
H := C*C/4
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа