Вторая пачка часть 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
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz