python) 曲线拟合(参数估计)

时间:2021-05-18 06:10:57

标签: python parameters estimation

我正在尝试使用 python 进行参数估计,但有一些麻烦。

每当我改变初始值或边界时,参数的值就会改变。

我知道初始值和边界会影响参数值但波动太大。

而且预测值和真实值的差异也太大了。

你能告诉我我该怎么做吗?

from scipy.optimize import curve_fit
import numpy as np


E= np.array([(3.652,3.604,3.53,3.47,3.373,3.265,3.205,3.128,3.022,2.957,2.881,2.8,2.707,2.661,2.586,2.494),(0.728,0.727,0.725,0.724,0.722,0.719,0.718,0.717,0.715,0.714,0.712,0.711,0.709,0.708,0.707,0.706),(0.0029375,0.002895295,0.002851811,0.002809605,0.0027674,0.002723916,0.002681711,0.002639505,0.002596021,0.002553816,0.002511611,0.002468126,0.002425921,0.002383716,0.002340232,0.002298026)])

def func(E,a,b):
    return (a*b*E[0,:]*E[1,:])/((1+b*E[1,:])**2)

guess= ([0.005,5])
popt, pcov = curve_fit(func, E[:2,:], E[2,:], guess, bounds=(0,[100,100]), maxfev=10000)

print(popt)
print(pcov)

#true values = [a : 0.0055 ± 0.00055, b : 5.52 ± 0.57]
#predicted values = [ a : 6.2364958e-02, b:1.0000000e+02]

0 个答案:

没有答案
相关问题