优化.最小化功能,Jupyter笔记本和python的区别?

2024-06-28 19:30:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个代码,获取一些数据,并使用一个带有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


Tags: 数据函数代码模型a2参数modela1