我正在计算下面的总和
其中f_j,f_j是之前计算的q的函数,q=sin(theta)where theta varies[0,90],而{}是我计算的每两个元素之间的距离。在
我起初使用了sum()函数,但由于它返回了一个浮点数,所以它不可能正常工作,但由于q在变化,而且没有求和,所以我希望得到一个数组!所以我放弃了。在
我的第二种方法是递归函数来计算这个求和,但是我得到了很多错误,我不知道我的代码有什么问题,因为我认为所有的语法都是正确的,我不知道为什么我一个接一个地得到错误或错误的值!在theta=arange(radians(0.5), radians(40.010), radians(0.03))
q=sin(theta)
f_q_1= 2*exp(-3*pow(q,2))+4*exp(-5*pow(q,2))+1.95
f_q_2=...
.
f_q_i(or j).
atom_positions= open('coordinates.txt','r')
lines = atom_positions.readlines()
for i in range(0, len(lines)):
line = lines[i]
values = line.split(" ")
for j in range(0,len(lines)):
if j<>i:
nextLine = lines[j]
nextLineValues = nextLine.split(" ")
r =sqrt((float(values[5])-float(nextLineValues[5]))**2 + (float(values[6])
-float(nextLineValues[6]))**2+(float(values[7])-float(nextLineValues[7]))**2)
line_len = len(lines)
def I_tot(line_len,i,f_i,f_j,r):
I=0
if i
I=I+(f_i*f_j*sin(q*r)/(q*r))
return I + I_tot(line_len,i,f_i,f_j,r)
else:
return I
else:
plot(2*theta,I_tot)
show()
atom_positions.close()
错误:
^{pr2}$
+这个问题不是以前这里所问的递归求和问题的重复,因为我检查了它们,找不到问题的解决方案。在
我也试过这个功能def I_tot():
I=0
for i in range(0,len(lines)):
I=I+(f_i*f_j*sin(q*r)/(q*r))
return I
但我不知道它是否给出了正确的求和,因为最后得到的图形与我的预期相差甚远,表明这个求和不应该是正确的。在