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


.N*2]OF REAL; MSS = ARRAY [1..N] OF MST; VAR A1 : MSS; I, J, M, K : INTEGER; H : REAL; BEGIN FOR I := 1 TO N DO { ФОРМИРОВАНИЕ ВСПОМОГАТЕЛЬНОЙ МАТРИЦЫ А1 } FOR J := 1 TO N*2 DO IF J<= N THEN A1 [I,J] := A[I,J] ELSE IF I=J-N THEN A1 [I,J] := 1.0 ELSE A1[I,J] :=0.0; TOL := 0; DET := 1; { НАЧАЛЬНЫЕ ЗНАЧЕНИЯ СОNSТ-АНТ} IF N > 50 THEN BEGIN TOL := 2; EXIT; END; IF ABS(A1[N,N]) < 1.0E-10 THEN BEGIN TOL := 1; EXIT; END; FOR I := 1 TO N DO BEGIN IF ABS(A1[I,I])<1.0E-10 THEN BEGIN TOL:= 1; EXIT; END; H := A1[I,I]; DET := DET * H; FOR J := I TO N*2 DO A1[I,J] := A1[I,J] / H; IF I<N THEN FOR J := I+1 TO N DO BEGIN H := A1[J,I]; FOR K := 1 TO N*2 DO A1[J,K] := A1 [J,K] - H*A1[I,K]; END; END; FOR I := N DOWNTO 1 DO FOR K := I-1 DOWNTO 1 DO BEGIN H := A1[K,I]; FOR J:=1 TO 2*N DO A1[K,J] := A1[K,J] - A1[I,J]*H; END; FOR I := 1 TO N DO FOR J := N+1 TO N*2 DO V [I,J-N] := A1[I,J]; END. Формальные параметры про¬цедуры. Входные: А (тип re¬al) - матрица, для которой ищется об¬рат¬¬¬ная; N (тип in¬te¬ger) - размерность матрицы (матрица долж¬на быть квад¬ратной, т.е. размером N?N). Вы¬ход¬ные: tоl (тип re¬al) - це¬лое чис¬ло, ко¬т¬рое при нор¬мальном завершении прце¬ду¬ры равно 0. Ес¬ли при об¬ра¬щении мат¬ри-цы один из ди¬а¬го¬наль¬¬ных элементов стал равен 0, то пр¬ц嬬дура воз¬вра¬щବет зна¬чение дан¬но¬го па-ра¬мет¬¬¬¬ра 1; V (тип real) - об¬ратная для А мат¬ри¬ца; SUМ- оп¬р嬬¬де¬ли¬тель мат¬ри¬цы. В процедуре GAUS_OBR вводится вспо-мо¬га¬тель¬ная ма¬т¬¬ри¬ца А1, размером [N?2*N], в ко¬то¬рой пер¬вая по¬ловина рав¬на введенной мат-ри¬це А, а вто¬рая (от N+1 до N*2) - ед謬ни¬чной. Вы¬пол¬няя пре¬об¬ра¬зо¬вания над пер¬вой по¬ло¬ви-ной матрицы А1 (от 1 до N) для при¬ве¬де¬ния ее к виду единичной матрицы, по¬лу¬ча¬ем во второй половине мат¬ри¬цы А1 матрицу, об¬рат¬ную по от-ношению к А, т
Индекс
Элементарные функции    Линейные уравнения    Нелинейные уравнения    Случайные числа


Hosted by uCoz