我正在写一个程序来计算一个似然函数。我试图拟合的参数是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。你知道吗
你知道吗np.arange公司开始,停止,迈步。1e-4和0.0001之间的步长为1000表示1值。你知道吗
将此替换为np.L空间你应该得到一个更好的迭代:
(为了简洁起见,设置为10而不是1000)
https://docs.scipy.org/doc/numpy/reference/generated/numpy.linspace.html
相关问题 更多 >
编程相关推荐