Вторая пачка часть 27
0 - D;
IF SQRT((Q1-P*C/2)*(Q1-P*C/2)+
P*P*ABS(H))>(E/NN) THEN
GOTO CONT;
T := 0.0; Q[2] := Q[2] - C*Q[1];
FOR J := 3 TO NN-1 DO
Q[J] := Q[J] - C*Q[J-1] - D*Q[J-2];
END;
P := -C/2.0;
Q1 := SQRT(ABS(H));
IF H>= 0.0 THEN
BEGIN
M := P+Q1;
P := P-Q1;
Q1 := 0.0;
END
ELSE
M := P;
XX[K] := M;
INC(K);
END;
XX[K] := P;
INC(K);
IF ABS(T) >1.0E-20 THEN
EXIT;
NN:= NN-2;
IF NN=0 THEN
EXIT;
A := 0.0;
IF SQRT((S-R*C/2)*(S-R*C/2)+
R*R*ABS(H)) <= E THEN
A := 1;
B := 0.0;
IF NN>=2 THEN
B := 1;
IF (A+B)=2 THEN
BEGIN
T := 1.0;
GOTO CONT1;
END;
UNTIL DN;
END.
PROCEDURA SVECT (CONST N : INTEGER; LAM : REAL;
VAR Q:MAS11);
VAR I,J,K : INTEGER; SUM : REAL;
BEGIN
SUM := LAM;
FOR I := 1 TO N DO
BEGIN
SUM := SUM -Q[I];
Q[I] := SUM;
SUM := SUM*LAM;
END;
END.
Процедуру GAUSS (или SINQ), как уже го¬во¬ри¬лось, мож¬но взять из п. 3.1, 3.2.
Опишем формальные параметры процедур.
Процедура VECT. Вхо¬дные: N (тип integer) - раз¬мер мат¬¬¬¬ри¬цы А(n?n) и вычисляемой матрицы С (n?n); А (тип re¬¬al) - исходная матрица А (n?n), для ко¬торой вы¬¬чис¬ляют соб¬-ственные значения и соб¬ст¬вен¬ные веꬬ¬торы. Вы-ходные: С (тип real) - мат¬р謬ца (n?n), оп¬р嬬де¬ля¬ю-щая ко¬эффициенты сис¬¬¬те¬мы, решая ко¬торую на¬-хо¬дим qi; В (тип real) - мат¬ри¬ца (1?n) - стол¬бец сво¬бод¬ных чле¬нов сис¬те¬мы, рବвен по¬след¬не¬му с(n).
Про¬це¬ду¬ра LAMBDA. Входные: N (тип integer) - ра第¬¬мер матрицы А(n?n) и количество собст¬венных зна¬ч嬬¬ний мат¬ри¬цы; q (тип real) - массив (1?n) ко¬эф¬фи¬ци¬ен¬¬тов ха¬раꬬте¬рис-тического урав¬не¬ния для опре¬де¬ле¬ния ?i. Вы¬ход-ные: хх (тип real) - массив (1?n) соб¬ст¬вен¬¬¬ных зна¬че¬ний мат¬ри¬цы А.
Про¬це¬ду¬ра SVECT. Входные: N (тип integer) - коли¬чес¬т¬во соᬬ¬ственных векторов мат-рицы А; LАМ (тип real)- соᬬ¬ст¬венное значение мат¬ри¬цы А
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа