我正试图写一个for循环,用导数法计算误差线。公式相对简单,但是我的代码在向量/数组大小方面似乎遇到了错误。在我的代码中有很多定义的向量,我已经检查了它们的长度。for循环的所有输入都是1x25大小的数组。你知道吗
我尝试过将for循环中的索引从范围(1,25)更改为范围(0,24),但似乎不起作用。你知道吗
# Creating vectors
dfdvg = np.zeros(25)
dfdxi0 = np.zeros(25)
sigsquare = np.zeros(25)
vgerr = vrs
xi0err = xi0s
Asq = np.zeros(25)
Bsq= np.zeros(25)
sig = np.zeros(25)
# calculating derivatives and error vectors
for i in range(0,24):
dfdvg[i] = (np.multiply(rms[:,i],delta[:,i]))**-1
dfdxi0[i] = -vr[:,i]/(vr[:,i]*(np.power(delta[:,i],2)))
Asq[i] = np.power(np.multiply(dfdvg[i],vgerr[i]),2)
Bsq[i] = np.power(np.multiply(dfdxi0[i],xi0err[i]),2)
sigsquare[i] = Asq[i] + Bsq[i]
sig[i] = np.power(sigsquare[i],0.5)
q = np.power(np.multiply(rms,delta),-1)
left = np.multiply(vg,q)
right = -(beta*H)/(3*(1+zeff))
我想要的是“sig”向量,表示每个索引的传播错误。你知道吗
问题不在于数组的维数,而在于形状。不幸的是你没有写所有的数组。关键是,如果您可以只使用数组(25)而不是(1,25),那么一切都可以正常工作:
(最后一行代码似乎不相关)
因此,在我看来,最好的选择是重塑阵列:
相关问题 更多 >
编程相关推荐