sympy.integrate:TypeError:a不是整数

时间:2015-01-23 13:23:32

标签: python sympy

我试图整合这个表达式:

import sympy as sy

def Bra_H_Ket():

   a0=sy.Symbol('a0')
   r=sy.Symbol('r')

   psi=1/r*sy.sin(r)*sy.exp(-(a0*r))
   H_Psi=-1/2*sy.diff(psi,r,r)-1/r*psi
   print("H*Psi:")
   print(H_Psi)
   print
   print("Psi*H*Psi:")
   Psi_H_Psi=4*pi*psi*H_Psi*r**2
   print(Psi_H_Psi)
   print
   Bra_H_Ket=sy.integrate(Psi_H_Psi,(r,-sy.oo,3))
   print("Bra_H_Ket:")
   print(Bra_H_Ket)
   print

但是我收到了这个错误:

<ipython-input-4-b7c2f227f24d> in <module>()
----> 1 Bra_H_Ket()

<ipython-input-3-57b2347da6cd> in Bra_H_Ket()
     15    print(Psi_H_Psi)
     16 
---> 17    Bra_H_Ket=sy.integrate(Psi_H_Psi, (r, -sy.oo ,3))
     18 
     19    print("Bra_H_Ket:")

[...]

C:\Anaconda3\lib\site-packages\sympy\integrals\transforms.py in _rewrite_gamma(f, s, a, b)
    668                 newc = c/p
    669                 if not a.is_Integer:
--> 670                     raise TypeError("a is not an integer")
    671                 for k in range(p):
    672                     gammas += [(newa, newc + k/p)]

TypeError: a is not an integer

同样需要花一些时间来计算一些积分(在我的例子中是象征性的),所以任何建议都可以提供帮助,因为我有很多这样的积分。

1 个答案:

答案 0 :(得分:0)

这是SymPy中的一个错误。见https://github.com/sympy/sympy/issues/8882。我找不到一个好的解决方法。