我正在编写一个代码,获取一些数据,并使用一个带有5个未知参数的模型来拟合数据。你知道吗
我给出了这些参数的一些初始值。我最小化了数据和模型(chi^2函数)之间的差异,并且优化.最小化函数以获得这些参数的最佳拟合值。你知道吗
我在Jupyter笔记本和python脚本中运行代码。然而,结果却不同。Jupyter笔记本更适合。在python脚本中,拟合不是很好,未知参数的结果值似乎与初始值没有太大变化(有些参数保持不变)
我试着看了两个不同版本的优化.最小化安装在Jupyter(0.19.1)和python(0.18.0)中的函数。你知道吗
我检查了参数的值,但这两个函数的值都相同(都是由我设置的,也是默认值)。你知道吗
似然函数:
def ds_lnlike(par, logm, d, d_err):
logms, ds1, ds2, a1, a2 = par
model= np.log(10)*(ds1*10**((a1 + 1)*(logm - logms)) + ds2*10**((a2 +1)*(logm - logms)))/np.e**(10**(logm - logms))
return -0.5*np.sum(((d-model)**2)/d_err**2)
你知道吗优化.最小化地址:
nll = lambda *args: -model.ds_lnlike(*args)
result = op.minimize(nll, [logms[j], ds1[j], ds2[j], a1[j], a2[j]], args=(x, y, dy), method='TNC', bounds = ((7,13),(0, 0.1),(0, 0.1), (-2, 4), (-2, -1)), tol=1.0e-4)
logms[j], ds1[j], ds2[j], a1[j], a2[j] = result["x"]
初始值:10.7 1.0e-3 0.5e-3 -0.5 -1.5
Jupyter值:1.07708741e+01, 6.59697230e-03, 9.48211306e-04, -3.37329546e-01, -1.57843904e+00
python值:10.699999999999999, 0.0062248066587528919, 0.0012695745516126539, -0.5, -1.5
目前没有回答
相关问题 更多 >
编程相关推荐