📄 d6r1.txt
字号:
implementation
//PROGRAM D6R1
//Driver for routine JACOBI
uses
unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
const
s1='%14.6f'; s2='###';
NP = 3;
var
D,R:array[0..3] of real;
F:TextFile; A,E,V:matrx2;
II,JJ,J,K,KK,LL,L,NROT:integer; RATIO:real;
begin
SetLength(A,4,4);
SetLength(E,4,4);
SetLength(V,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 II:=1 To 3 do
For JJ:=1 To 3 do
E[II, JJ]:=A[II, JJ];
JACOBI(E, NP, D, V, NROT);
//输出计算结果到文件
AssignFile(F, 'd:\delphi_shu\p6\d6r1.dat');
Rewrite(F);
Writeln(F, 'Number of JACOBI rotations: ',FormatFloat(s2,NROT));
Writeln(F);
Writeln(F, ' Eigenvalues:');
For J:=1 To NP do
Writeln(F,Format(s1,[D[J]]));
Writeln(F);
Writeln(F, ' Eigenvectors:');
For J:=1 To NP do
begin
Writeln(F, 'Number ',FormatFloat(s2,J));
Writeln(F,Format(s1,[V[1, J]]),Format(s1,[V[2, J]]),
Format(s1,[V[3, J]]));
end;
Writeln(F);
//Eigenvector test
Writeln(F,' Eigenvector Test');
For J:=1 To NP do
begin
For L:=1 To NP do
begin
R[L]:=0;
For K:=1 To NP do
begin
If K > L Then
begin
KK:=L;
LL:=K;
end
else
begin
KK:=K;
LL:=L;
end;
R[L]:=R[L] + A[LL, KK] * V[K, J];
end;
end;
Writeln(F);
Writeln(F,' Vector Number ',FormatFloat(s2,J));
Writeln(F);
Writeln(F,' Vector Mtrx*Vec. Ratio');
For L:=1 To NP do
begin
RATIO:=R[L] / V[L, J];
Writeln(F,Format(s1,[V[L, J]]),Format(s1,[R[L]]),
Format(s1,[RATIO]));
end;
end;
CloseFile(F);
//屏幕显示计算结果
memo1.Lines.LoadFromFile('d:\delphi_shu\p6\d6r1.dat');
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -