0

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

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) 是我在别处定义的函数。我将 ret_m 和 alpha_m 作为参数传递给 gamma(这些参数已用数值初始化)。gamma 函数返回一个大小为 1X600 的数组。
2. x 是从文件中提取的 1X600 数组。

4

0 回答 0