试图推广退化状态的计算,(来自量子力学n1 ^ 2 + n2 ^ 2 + n3 ^ 2 =能量),但不能正确地进行迭代。 创建以全零开头的大小为N的列表。然后想慢慢迭代该列表的每个数字,将该列表中每个数字的平方加在一起,并检查它们是否等于给定的数字。如果没有,请将数字增加一,然后再次检查。
def sqsum(a):
return sum(a[i]**2 for i in range(len(a)))
def degeneracy(n,E):
import numpy as np
a=[0]*n #creates a list of zeroes of size n [0,0,0,....]
z=0 #used to count number of degenerate states
print(a, "original")
EE=int(np.floor(np.sqrt(E)))
for i in range(len(a)): #iterates through list a[]
print(i)
if a[i]<=EE:
for j in a:
sum=0
print(a)
sum+=a[j]*a[j]
if sum == E:
print("sum equals", sum)
z+=1
a[i]+=1
print("Total number of degenerate states is", z)
问题是我可以获取列表中的第一个数字来进行迭代 [0,0,0] [1,0,0] [2,0,0]等等,但我也想迭代其他数字,然后让它在一个点后重置。 [1,0,0],[1,1,0],[1,1,1],[2,0,0],[2,1,0],[2,1,1],[0 ,1,0]。 如果有人能帮助我找出循环,那就太好了。 *编辑(woops,实现了sqsum()函数顶部是其他尝试的一部分,你可以忽略它)