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