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


Выходные: x (тип real) - мас¬сив из n дейст¬ви¬тельных чисел (он же вход¬-ной) содержит при вы¬хо¬де из newts при¬бл謬жен-ное зна¬чение решения; k (тип integer) - раз¬ре-шенное ко¬ли¬чес¬т¬¬во итераций. PROCEDURE NEWTS (CONST N: INTEGER; VAR X : ARRAY OF REAL; EPS : REAL; VAR XKIT : INTEGER); VAR Y, X1 : ARRAY [0..2] OF REAL; A : ARRAY [0..4] OF REAL; L, M : ARRAY [0..10] OF INTEGER; J, I, NK : INTEGER; S, D, XX,YY : REAL; BEGIN XKIT := 0; REPEAT FOR J := 1 TO N DO X1[J] := X[J]; XX := X1[1]; YY := X1[2]; FUNCF (N, XX,YY, Y); FUNCG (N, XX,YY, A); MINV (A, N, D, L, M); FOR J := 1 TO N DO BEGIN X[J] := X1[J]; FOR I := 1 TO N DO BEGIN NK := J + N*(I-1); X[J] := X[J] - A[NK]*Y[I]; END; END; INC (XKIT); S := 1.0; FOR J := 1 TO N DO S := S* SQR(X[J]-X1[J]); S := SQRT(S); UNTIL S > EPS; END. Внимание: подпрограмма NEWTS содержит об-рବще¬ние к подпрограмме MINV, которая входит в БСП БЭСМ. Пол¬ный текст по䬬программы приводится ни¬же (п嬬ревод на язык PAS¬CAL выполнен ав¬то¬ра¬ми). PROCEDURE MINV (VAR A : ARRAY OF REAL; N : INTEGER; VAR D : REAL; VAR L, M : ARRAY OF INTEGER); VAR NK,KK,K,IZ,IJ,I,KI,JI,JP, JK, IK, KJ, JQ : INTEGER; BIGA, HOLD : REAL; JR : INTEGER; DN : BOOLEAN; BEGIN D := 1.0; NK := -N; DN := FALSE; FOR K := 1 TO N DO BEGIN INC(NK,N); L[K] := K; M[K] := K; KK := NK + K; BIGA := A[KK]; FOR J := K TO N DO BEGIN IZ := N*(J-1); FOR I := K TO N DO BEGIN IJ := IZ + I; IF (ABS(BIGA)-ABS(A[IJ])) < 0.0 THEN BEGIN BIGA := A[IJ]; L[K] := I; M[K] := J; END; END; END; J :=L[K]; IF J > K THEN BEGIN KI := K - N; FOR I := 1 TO N DO BEGIN INC(KI,N); HOLD := - F[KI]; JI := KI - K + J; A[KI] := A[JI]; A[JI] := HOLD; END; END; I := M [K]; IF I > K THEN BEGIN JP := N*(I-1); FOR J := 1 TO N DO BEGIN JK:= NK + J; JI:= JP + J; HOLD := - A[JK]; A[JK] := A[JI]; A[JI] := HOLD; END; END; IF ABS(BIGA)< 1
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz