Python:插入似然函数的值范围总是返回相同的值

2024-04-20 04:44:49 发布

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

我正在写一个程序来计算一个似然函数。我试图拟合的参数是I。这是我的函数:

#loglikelihood
def like_xe(I):
    model=(0.1535*(Z/A)*((charge*c/v_array)**2))*(np.log((2*m_e*(gamma_array**2)*(v_array**2)*(w_array)/((I*1.6E-6)**2)))-(2*(v_array/c_speed)**2))
return np.sum(((-0.5*np.log(2*np.pi*xe_un))-((xe_sp-(model))/(2*xe_un**2))))

“数组”都是数据数组,长度都是50。然后,我想计算出0.0001到0.001之间的1000个I值的似然函数,并从这些数据中提取似然函数的最大值。你知道吗

I_list=np.arange(1E-4,0.001,1000)
like_val=[0 for like in range(len(I_list))]
for like in range(len(I_list)):
    like_val[like]=like_xe(I_list[like])

仅返回[-169.58003268336941]。显然,这是不正确的。我是怎么处理这个问题的?可能是因为它只读取一次return语句吗?你知道吗

编辑:更改了np.arange公司至np.L空间. 这将创建一个大小正确的数组,但是,它完全包含值-169.58003268336941。你知道吗


Tags: 数据函数logformodelreturnnpval
1条回答
网友
1楼 · 发布于 2024-04-20 04:44:49

你知道吗np.arange公司开始,停止,迈步。1e-4和0.0001之间的步长为1000表示1值。你知道吗

>> np.arange(1E-4,0.001,1000)
array([ 0.0001])

将此替换为np.L空间你应该得到一个更好的迭代:

>> np.linspace(1E-4,0.001,10)
array([ 0.0001,  0.0002,  0.0003,  0.0004,  0.0005,  0.0006,  0.0007,
    0.0008,  0.0009,  0.001 ])

(为了简洁起见,设置为10而不是1000)

https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html

相关问题 更多 >