Вторая пачка часть 186


ВЫЧИСЛЕННЫЕ СОБСТВЕННЫЕ ЗНА-ЧЕНИЯ РАЗМЕЩАЮТСЯ В ПОРЯДКЕ ВОЗРАСТАНИЯ В МАССИВЕ D НА МЕСТЕ ДИАГОНАЛЬНЫХ ЭЛЕМЕНТОВ. СОБСТВЕННЫЕ ВЕКТОРЫ ФОРМИРУЮТСЯ В МАССИВЕ Z [1:N, 1:N] НА МЕСТЕ МАТРИЦЫ ОРТОГОНАЛЬНЫХ ПРЕОБРАЗОВАНИЙ Z. ПРИ РАБОТЕ ПРОЦЕДУРЫ ПРОИСХОДИТ ВЫХОД ПО КОМАНДЕ EXIT, ЕСЛИ ДЛЯ ОПРЕДЕЛЕНИЯ СОБСТВЕННОГО ЗНАЧЕНИЯ ПО¬ТРЕ¬БО¬ВАЛОСЬ БОЛЕЕ 30 ИТЕРАЦИЙ ;) LABEL CONT, ROOT,NEXTIT; VAR I, J, K, L, M : INTEGER; B, C, F, G, H, P, R, S : REAL; BEGIN FOR I := 2 TO N DO E[I-1] := E[I]; FOR I := 1 TO N DO FOR J := 1 TO N DO IF I=J THEN ZA[I,J] := 1.0 ELSE ZA[I,J] := 0.0; E[N] := 0.0; B:= 0.0; F := 0.0; (; ОПРЕДЕЛЕНИЕ САМОГО МАЛЕНЬКОГО ЧИСЛА. ПОЛУЧЕННОЕ ЧИСЛО ЗАВИСИТ ОТ ТИПА ИСПОЛЬЗУЕМОЙ ЭВМ ;) FOR L := 1 TO N DO BEGIN J := 0; H := MASHEPS * (ABS(D[L])+ABS(E[L])); IF B<H THEN B:= H; (;ОПРЕДЕЛЕНИЕ ПРЕНЕБРЕЖИМО МАЛОГО ПОДДИАГОНАЛЬНОГО ЭЛЕМЕНТА. ЗАВИСИТ ОТ ТИПА ИСПОЛЬЗУЕМОЙ ЭВМ;) FOR M := L TO N DO IF ABS(E[M])<=B THEN GOTO CONT; CONT: IF M=L THEN GOTO ROOT; NEXTIT: IF J=30 THEN EXIT; INC(J); (; ФОРМИРОВАНИЕ СДВИГА ;) G := D[L]; P:= (D[L+1]-G) / (2*E[L]); R:= SQRT (P*P+1.0); IF P<0.0 THEN D[L] := E[L]/(P-R) ELSE D[L] := E[L]/(P+R); H := G - D[L]; FOR I := L+1 TO N DO D[I] := D[I] - H; F := F + H; (; QL - ПРЕОБРАЗОВАНИЕ ;) P:= D[M]; C := 1; S := 0; FOR I := M-1 DOWNTO L DO BEGIN G := C*E[I]; H := C*P; IF ABS(P)>=ABS(E[I]) THEN BEGIN C := E[I]/P; R := SQRT(C*C+1); E[I+1] := S*P*R; S := C / R; C := 1.0 / R; END ELSE BEGIN C:= P/E[I]; R := SQRT(C*C+1); E[I+1] := S*E[I]*R; S := 1.0/R; C := C / R; END; P := C*D[I] - S*G; D[I+1] := H + S*(C*G + S*D[I]); (; ФОРМИРОВАНИЕ СОБСТВЕННОГО ВЕКТОРА ;) FOR K := 1 TO N DO BEGIN H := ZA[K,I+1]; ZA[K,I+1] := S*ZA[K,I] + C*H; ZA[K,I] := C*ZA[K,I] - S*H; END; END; E[L] := S*P; D[L] := C*P; IF ABS(E[L])>B THEN GOTO NEXTIT; ROOT: D[L] := D[L] + F; END; (; РАЗМЕЩЕНИЕ СОБСТВЕННЫХ ЗНАЧЕНИЙ И СОБСТВЕННЫХ ВЕКТОРОВ;) FOR I := 1 TO N DO BEGIN K := I; P := D[I]; FOR J := I+1 TO N DO IF D[J] < P THEN BEGIN K:=J; P:=D[J]; END; IF K<>I THEN BEGIN D[K] := D[I]; D[I] := P; FOR J := 1 TO N DO BEGIN P := ZA[J,I]; ZA[J,I] := ZA[J,K]; ZA[J,K] := P; END; END; END; END; {$F+} PROCEDURE TRBAK (N,M1,M2:INTEGER;AZ:MAS1; E:MAS; VAR ZA:MAS1); (; ВЫЧИСЛЕНИЕ СОБСТВЕННЫХ ВЕКТОРОВ ИСХОДНОЙ СИМ¬МЕТ¬РИ¬ЧЕС¬КОЙ МАТРИЦЫ, КОГДА ИЗВЕСТНЫ СОБСТВЕННЫЕ ВЕКТОРЫ ТРЕХ¬ДИАГОНАЛЬНОЙ МАТРИЦЫ, РАЗМЕЩЕННЫЕ В МАССИВЕ Z[1:N,M1:M2]
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz