计算N维的简并状态

时间:2018-05-13 20:03:37

标签: python python-3.x

试图推广退化状态的计算,(来自量子力学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()函数顶部是其他尝试的一部分,你可以忽略它)

0 个答案:

没有答案