使用单纯形算法在python中拟合曲线:Routine即使在chi ^ 2不收敛时停止

时间:2014-10-13 08:52:35

标签: python curve-fitting simplex

我正在尝试使用物理模型拟合数据。代码段包含在此处:

from scipy.optimize import fmin as simplex

def chi2(p1,x,y_r):
    chisq = 0.0
    for i in range (len(x)):
        real_f=(np.abs(gamma(tret_m,alpha_m)[i])*(p1[0]*sin(p1[1]*x[i]+p1[2]))+ \
                p1[3]*np.abs((gamma(tret_m,alpha_m)[i]))**2
        if (300>p1[3]>250 and 65>p1[0]>60):#constraining parameters
            chisq += (real_f-y_r[i])**2
        else:
            chisq=1.0e15
    return (chisq)

popt = simplex(chi2, guess1, args=(x,obs),ftol=1.0e-6,maxiter=1000000, maxfun=1000000) 

输出时产生的参数与初始猜测时提供的参数相同(作为guess1传递)!输出显示了这一点(除参数列表外):

  Optimization terminated successfully.
  Current function value: 1000000000000000.000000
  Iterations: 19
  Function evaluations: 170

我可以通过哪些线索运行此函数直到函数值收敛?

编辑:
1. gamma(tret,alpha)是我在其他地方定义的函数。我将tret_m和alpha_m作为参数传递给gamma(这些参数已经用数值初始化)。 gamma函数返回一个大小为1X600的数组 2. x是从文件中提取的1X600数组。

0 个答案:

没有答案