?? svdfit.txt
字號:
Procedure SVDFIT(X,Y,SIG:array of real; NDATA:integer;var A:array of real;
MA:integer;var U, V:matrx2;var W:array of real;
MP, NP:integer;var CHISQ:real; FUNCS:string);
var
B:array[0..1000] of real; AFUNC:array[0..50] of real;
I,J:integer; TMP,WMAX,THRESH,SUM1:real;
const
TOL=0.00001;
begin
For I:=1 To NDATA do
begin
If FUNCS = 'FPOLY' Then FPOLY(X[I], AFUNC, MA);
If FUNCS = 'FLEG' Then FLEG(X[I], AFUNC, MA);
TMP:=1 / SIG[I];
For J:=1 To MA do
U[I, J]:=AFUNC[J] * TMP;
B[I]:=Y[I] * TMP;
end;
SVDCMP(U, NDATA, MA, W, V);
WMAX:=0;
For J:=1 To MA do
If W[J] > WMAX Then WMAX:=W[J];
THRESH:=TOL * WMAX;
For J:=1 To MA do
If W[J] < THRESH Then W[J]:=0;
SVBKSB(U, W, V, NDATA, MA, B, A);
CHISQ:=0;
For I:=1 To NDATA do
begin
If FUNCS = 'FPOLY' Then FPOLY(X[I], AFUNC, MA);
If FUNCS = 'FLEG' Then FLEG(X[I], AFUNC, MA);
SUM1:=0;
For J:= 1 To MA do
SUM1:=SUM1 + A[J] * AFUNC[J];
CHISQ:=CHISQ + Sqr((Y[I] - SUM1) / SIG[I]);
end;
end;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -