📄 d7r8b.txt
字号:
implementation
//PROGRAM D7R8B
//Driver for routine MRQCOF
uses
unit2;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
const
s1='%11.4f'; s2='%8.4f';
NPT = 100; MA = 6; SPREAD = 0.1;
var
COVAR,ALPHA:matrx2;
X,Y,SIG:array[0..100] of real; A,BETA,GUES:array[0..6] of real;
LISTA:array[0..6] of integer;
I,J,MFIT:integer; CHISQ:real;
F:TextFile;
begin
SetLength(COVAR,7,7); SetLength(ALPHA,7,7);
New(ISET); New(GSET);
Iset^:=0; GSET^:=0;
Randomize;
A[1]:=5; A[2]:=2; A[3]:=3;
A[4]:=2; A[5]:=5; A[6]:=3;
GUES[1]:=4.9; GUES[2]:=2.1; GUES[3]:=2.9;
GUES[4]:=2.1; GUES[5]:=4.9; GUES[6]:=3.1;
//First try a sum of two Gaussians
For I:= 1 To NPT do
begin
X[I]:= 0.1 * I;
Y[I]:= 0;
Y[I]:= Y[I] + A[1] * Exp(-Sqr((X[I] - A[1 + 1]) / A[1 + 2]));
Y[I]:= Y[I] + A[4] * Exp(-Sqr((X[I] - A[4 + 1]) / A[4 + 2]));
Y[I]:= Y[I] * (1 + SPREAD * GASDEV);
SIG[I]:= SPREAD * Y[I];
end;
MFIT:=MA;
For I:=1 To MFIT do
LISTA[I]:=I;
For I:=1 To MA do
A[I]:=GUES[I];
MRQCOF(X,Y,SIG,NPT,A,MA,LISTA,MFIT,ALPHA,BETA,MA,CHISQ);
//输出计算结果到文件
AssignFile(F, 'd:\delphi_shu\p7\d7r8B.dat');
Rewrite(F);
Writeln(F,'Matrix ALPHA');
Writeln(F);
For I:=1 To MA do
Writeln(F,Format(s1,[ALPHA[I,1]]),Format(s1,[ALPHA[I,2]]),
Format(s1,[ALPHA[I,3]]),Format(s1,[ALPHA[I,4]]),
Format(s1,[ALPHA[I,5]]),Format(s1,[ALPHA[I,6]]));
Writeln(F);
Writeln(F,'Vector BETA');
Writeln(F);
Writeln(F,Format(s1,[BETA[1]]),Format(s1,[BETA[2]]),
Format(s1,[BETA[3]]),Format(s1,[BETA[4]]),
Format(s1,[BETA[5]]),Format(s1,[BETA[6]]));
Writeln(F);
Writeln(F,' Chi-squared: ',Format(s2,[CHISQ]));
Writeln(F);
//Next fix one line and improve the other
For I:=1 To 3 do
LISTA[I]:=I + 3;
MFIT:= 3;
For I:=1 To MA do
A[I]:=GUES[I];
MRQCOF(X,Y,SIG,NPT,A,MA,LISTA,MFIT,ALPHA,BETA,MA,CHISQ);
Writeln(F,'Matrix ALPHA');
Writeln(F);
For I:=1 To MFIT do
Writeln(F,Format(s1,[ALPHA[I,1]]),Format(s1,[ALPHA[I,2]]),
Format(s1,[ALPHA[I,3]]));
Writeln(F);
Writeln(F,'Vector BETA');
Writeln(F);
Writeln(F,Format(s1,[BETA[1]]),Format(s1,[BETA[2]]),
Format(s1,[BETA[3]]));
Writeln(F);
Writeln(F,' Chi-squared: ',Format(s2,[CHISQ]));
CloseFile(F);
//屏幕显示计算结果
memo1.Lines.LoadFromFile('d:\delphi_shu\p7\d7r8B.dat');
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -