我正在尝试使用包含使用scipy.optimize.curve_fit
的积分的函数来拟合一些数据(下面给出的示例代码)。我想我有两个问题,1)这是用于拟合积分函数的最佳方法,我看到的大部分工作实例都适合简单模型。 2)当运行拟合时,我只得到明确指出的值作为起点,这肯定不是最合适的,我不知道为什么会发生这种情况。任何见解都会非常感激!
import numpy as np
from scipy.optimize import curve_fit
import scipy.integrate as integrate
import csv
x = np.array([ 4.3, 8. , 12. , 16. , 20. , 24. ])
y = np.array([ 1., 0.98863022, 0.94294947, 0.9060894 , 0.83959439,
0.81545772])
def Bfitfunc(T, we, wh):
ph = lambda w: (np.exp(-we * w**2)-np.exp(-wh * w**2))/np.tanh(0.5 * w/T)
phi = integrate.quad(ph, 0, 10)
return np.exp(- 0.5 * phi[0])
vcurve = np.vectorize(Bfitfunc, excluded=set([1]))
best_vals, covar = curve_fit(Bfitfunc, x, y, p0 = np.array([0.001,0.001]))