📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
matrx2=array of array of real;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
//PROGRAM D6R4
//Driver for routine TQLI
uses
unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
const
s1='%14.6f'; s2='###'; s3='%9.6f';
NP = 3; TINY = 0.000001;
var
D,E,FF:array[0..3] of real;
F:TextFile; A,C:matrx2;
I,J,K,L,M:integer;
begin
SetLength(A,4,4);
SetLength(C,4,4);
A[1, 1]:=1; A[1, 2]:=2; A[1, 3]:=3;
A[2, 1]:=2; A[2, 2]:=2; A[2, 3]:=3;
A[3, 1]:=3; A[3, 2]:=3; A[3, 3]:=3;
For I:=1 To NP do
For J:=1 To NP do
C[I,J]:= A[I,J];
TRED2(C, NP, D, E);
TQLI(D, E, NP, C);
//输出计算结果到文件
AssignFile(F, 'd:\delphi_shu\p6\d6r4.dat');
Rewrite(F);
Writeln(F, ' Eigenvectors for a real symmetric matrix');
For I:=1 To NP do
begin
For J:=1 To NP do
begin
FF[J]:=0;
For K:=1 To NP do
FF[J]:=FF[J]+A[J,K]*C[K,I];
end;
Writeln(F);
Writeln(F,' Eigenvalue ',FormatFloat(s2,I),' = ',Format(s3,[D[I]]));
Writeln(F);
Writeln(F, ' Vector Matrx * vect. Ratio');
For J:=1 To NP do
begin
if Abs(C[J,I])<TINY then
Writeln(F,Format(s1,[C[J,I]]),Format(s1,[FF[J]]),'div. by 0')
else
Writeln(F,Format(s1,[C[J,I]]),Format(s1,[FF[J]]),
Format(s1,[FF[J]/C[J,I]]));
end;
end;
CloseFile(F);
//屏幕显示计算结果
memo1.Lines.LoadFromFile('d:\delphi_shu\p6\d6r4.dat');
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -