使用积分函数拟合数据

时间:2017-08-28 11:24:34

标签: python integration curve-fitting

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

0 个答案:

没有答案