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

2024-05-16 14:58:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用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]

Tags: import参数npfit边界funcvaluesprint