📄 unit2.pas
字号:
unit Unit2;
interface
uses
unit1;
Procedure BALANC(var A:matrx2; N:integer);
Procedure ELMHES(var A:matrx2; N:integer);
implementation
Procedure BALANC(var A:matrx2; N:integer);
Label 1,2,3;
var
I,J:integer;
RADIX,SQRDX,C,R,LAST,G,F,S:real;
begin
RADIX:=2 ;
SQRDX:=Sqr(RADIX);
1: Last:=1;
For I:=1 To N do
begin
C:=0;
R:=0;
For J:=1 To N do
begin
If J <> I Then
begin
C:=C + Abs(A[J, I]);
R:=R + Abs(A[I, J]);
end;
End;
If (C <> 0) And (R <> 0) Then
begin
G:=R / RADIX;
F:=1;
S:=C + R;
2: If C < G Then
begin
F:=F * RADIX;
C:=C * SQRDX;
GoTo 2;
end;
G:=R * RADIX;
3: If C > G Then
begin
F:=F / RADIX;
C:=C / SQRDX;
GoTo 3;
end;
If (C + R) / F < 0.95 * S Then
begin
Last:=0;
G:=1 / F;
For J:=1 To N do
A[I, J]:=A[I, J] * G;
For J:=1 To N do
A[J, I]:=A[J, I] * F;
end;
end;
end;
If Last = 0 Then GoTo 1;
End;
Procedure ELMHES(var A:matrx2; N:integer);
var
M,J,I:integer; X,Y:real;
begin
If N > 2 Then
begin
For M:=2 To N - 1 do
begin
X:=0 ;
I:=M;
For J:=M To N do
begin
If Abs(A[J, M - 1]) > Abs(X) Then
begin
X:=A[J, M - 1];
I:=J;
end;
end;
If I <> M Then
begin
For J:=M - 1 To N do
begin
Y:=A[I, J];
A[I, J]:=A[M, J];
A[M, J]:=Y;
end;
For J:=1 To N do
begin
Y:=A[J, I];
A[J, I]:=A[J, M];
A[J, M]:=Y;
end;
end;
If X <> 0 Then
begin
For I:=M + 1 To N do
begin
Y:=A[I, M - 1];
If Y <> 0 Then
begin
Y:=Y / X;
A[I, M - 1]:=Y;
For J:=M To N do
A[I, J]:=A[I, J] - Y * A[M, J];
For J:=1 To N do
A[J, M]:=A[J, M] + Y * A[J, I];
end;
end;
end;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -