?? d1r8.txt
字號:
implementation
//PROGRAM D1R8
//Driver for routine SVBKSB,SVDCMP
uses
unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
A,U,V:matrx2;
X,B,W:Array[0..5] of real;
I,J,K:Integer; WMAX,WMIN:real;
F:TextFile;
const
s1='%10.1f'; s2='%13.4f'; N = 5; N2 = 10;
begin
SetLength(A,6,6);
SetLength(U,6,6);
SetLength(V,6,6);
//輸入已知的方程組的系數矩陣
A[1, 1]:=1.4;A[1, 2]:=2.1;A[1, 3]:=2.1;A[1, 4]:=7.4;A[1, 5]:=9.6;
A[2, 1]:=1.6;A[2, 2]:=1.5;A[2, 3]:=1.1;A[2, 4]:=0.7;A[2, 5]:=5;
A[3, 1]:=3.8;A[3, 2]:=8 ;A[3, 3]:=9.6;A[3, 4]:=5.4;A[3, 5]:=8.8;
A[4, 1]:=4.6;A[4, 2]:=8.2;A[4, 3]:=8.4;A[4, 4]:=0.4;A[4, 5]:=8;
A[5, 1]:=2.6;A[5, 2]:=2.9;A[5, 3]:=0.1;A[5, 4]:=9.9;A[5, 5]:=7.7;
//輸入已知的方程組的右端向量B
B[1]:=1.1; B[2]:=1.6;
B[3]:=4.7; B[4]:=9.1;
B[5]:=0.1;
//輸出計算結果到文件
AssignFile(F, 'd:\delphi_shu\p1\d1r8.dat');
Rewrite(F);
Writeln(F, '已知的方程組的右端向量B');
For I:= 1 To N do
Writeln(F,Format(s1,[B[I]]));
For I:=1 To N do
For J:=1 To N do
U[I,J]:=A[I,J];
SVDCMP(U,N,N,W,V);
WMAX:=0;
For K:=1 To N do
If W[K] > WMAX THEN WMAX:=W[K];
//dEFINE 'small'
WMIN:=WMAX*0.1E-6;
//Zero the 'small' singular values
For K:=1 To N do
If W[K] < WMIN THEN W[K]:=0;
SVBKSB(U,W,V,N,N,B,X);
Writeln(F, '計算出的方程組的解');
For I:= 1 To N do
Writeln(F,Format(s2,[X[I]]));
Writeln(F, '將計算出的解乘以系數矩陣的結果');
For I:=1 To N do
begin
B[I]:=0;
For J:=1 To N do
begin
B[I]:=B[I] + A[I,J]*X[J];
end;
end;
For I:= 1 To N do
Writeln(F,Format(s1,[B[I]]));
CloseFile(F);
//屏幕顯示計算結果
memo1.Lines.LoadFromFile('d:\delphi_shu\p1\d1r8.dat');
end;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -