📄 fit.txt
字号:
Procedure FIT(X, Y:array of real; NDATA:integer; SIG:array of real;
var MWT:integer; var A, B, SIGA, SIGB, CHI2, Q:real);
var
I,J:integer; SX,SY,ST2,SS,WT,SXOSS,T,SIGDAT:real;
begin
SX:=0;
SY:=0;
ST2:=0;
B:=0;
If MWT <> 0 Then
begin
SS:=0;
For I:=1 To NDATA do
begin
WT:=1 / (Sqr(SIG[I]));
SS:=SS + WT;
SX:=SX + X[I] * WT;
SY:=SY + Y[I] * WT;
end;
end
Else
begin
For I:=1 To NDATA do
begin
SX:=SX + X[I];
SY:=SY + Y[I];
end;
SS:=NDATA;
end;
SXOSS:=SX / SS;
If MWT <> 0 Then
begin
For I:=1 To NDATA do
begin
T:=(X[I] - SXOSS) / SIG[I];
ST2:=ST2 + T * T;
B:=B + T * Y[I] / SIG[I];
end;
end
Else
begin
For I:=1 To NDATA do
begin
T:=X[I] - SXOSS;
ST2:=ST2 + T * T;
B:=B + T * Y[I];
end;
end;
B:=B / ST2;
A:=(SY - SX * B) / SS;
SIGA:=Sqrt((1 + SX * SX / (SS * ST2)) / SS);
SIGB:=Sqrt(1 / ST2);
CHI2:=0;
If MWT = 0 Then
begin
For I:=1 To NDATA do
CHI2:=CHI2 + Sqr(Y[I] - A - B * X[I]);
Q:=1;
SIGDAT:=Sqrt(CHI2 / (NDATA - 2));
SIGA:=SIGA * SIGDAT;
SIGB:=SIGB * SIGDAT
end
Else
begin
For I:=1 To NDATA do
CHI2:=CHI2 + Sqr((Y[I] - A - B * X[I]) / SIG[I]);
Q:=GAMMQ(0.5 * (NDATA - 2), 0.5 * CHI2);
end;
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -