【发布时间】:2023-03-09 23:12:01
【问题描述】:
我正在使用scipy.optimize.curve_fit 来拟合我拥有的一些数据的曲线。在大多数情况下,曲线似乎非常适合。出于某种原因,当我打印出来时,pcov = inf。
我真正需要的是计算与我正在拟合的参数相关的误差,即使它确实给了我协方差矩阵,我也不知道该怎么做。
适合的模型是:
def intensity(x,R_out,R_in,K_in,K_out,a,b,c):
K_in,K_out = abs(0.0),abs(K_out)
if x<=R_in:
return 2*R_out*(K_out*np.sqrt(1-x**2/R_out**2)-
(K_out-0.0)*np.sqrt(R_in**2/R_out**2-x**2/R_out**2)) + c
elif x>=R_in and x<=R_out:
return K_out*2*R_out*np.sqrt(1-x**2/R_out**2) + c
elif x>R_out:
return c
intensity_vec = np.vectorize(intensity)
def intensity_vec_self(x,R_out,R_in,K_in,K_out,a,b,c):
y = np.zeros(x.shape)
for i in range(len(y)):
y[i]=intensity_vec(x[i],R_out,R_in,K_in,K_out,a,b,c)
return y
有 400 个数据点,如果您认为有帮助,我可以把它放在这里。
总而言之,我无法让 curve_fit 打印出我的 pcov 并且需要帮助以找出原因以及是否可以这样做。
另外,如果它是一个快速的解释,我想知道如何使用pcov 数组来获得与我的适合相关的错误。
谢谢
【问题讨论】:
标签: python scipy mathematical-optimization curve-fitting