在 IDL 中使用 MPFIT 拟合用户定义的函数
Fitting user defined function with MPFIT in IDL
我正在尝试将以下形式的衰减指数函数拟合:A1 - A1exp(-x/A2) 到一组 (x,y) 值,在 y 值上带有误差条。我正在使用 IDL MPFIT 函数来执行此非线性拟合。
function gfunct, xsig, A
return, A[0] - A[0]*exp(-xsig/A[1])
end
pro makeit
xsig=[0d0,4d0,12d0,48d0]
ysig=[0d0,19d0,30d0,36d0]
err=dblarr(1,4)
err[0]=0.000001d0
err[1]=0.5d0*0.4219d0*19d0
err[2]=0.5d0*0.2154d0*30d0
err[3]=0.5d0*0.1279d0*36d0
A = [39d0,10.96d0]
result = MPFITFUN('gfunct', xsig, ysig, err, start)
end
但是这段代码给我一个错误:
MPFITFUN: ERROR: must pass parameters in P or PARINFO
谁能帮我确定功能块的正确语法?我尝试使用 svdfit 但它不能用于像这样的函数,A[1] 在指数中。
谢谢!
MPFITFUN 的调用顺序是
parms = MPFITFUN(MYFUNCT, X, Y, ERR, start_params, ...);
这意味着你应该这样称呼它:
result = MPFITFUN('gfunct', xsig, ysig, err, A)
因为 "A" 包含您最初的猜测。
我正在尝试将以下形式的衰减指数函数拟合:A1 - A1exp(-x/A2) 到一组 (x,y) 值,在 y 值上带有误差条。我正在使用 IDL MPFIT 函数来执行此非线性拟合。
function gfunct, xsig, A
return, A[0] - A[0]*exp(-xsig/A[1])
end
pro makeit
xsig=[0d0,4d0,12d0,48d0]
ysig=[0d0,19d0,30d0,36d0]
err=dblarr(1,4)
err[0]=0.000001d0
err[1]=0.5d0*0.4219d0*19d0
err[2]=0.5d0*0.2154d0*30d0
err[3]=0.5d0*0.1279d0*36d0
A = [39d0,10.96d0]
result = MPFITFUN('gfunct', xsig, ysig, err, start)
end
但是这段代码给我一个错误:
MPFITFUN: ERROR: must pass parameters in P or PARINFO
谁能帮我确定功能块的正确语法?我尝试使用 svdfit 但它不能用于像这样的函数,A[1] 在指数中。 谢谢!
MPFITFUN 的调用顺序是
parms = MPFITFUN(MYFUNCT, X, Y, ERR, start_params, ...);
这意味着你应该这样称呼它:
result = MPFITFUN('gfunct', xsig, ysig, err, A)
因为 "A" 包含您最初的猜测。