不清楚为什么在Python(Sympy)中表达式被计算为0

问题描述 投票:0回答:1

我的代码中有两行

print(expr.subs(t,2*l))
print(simplify(expr.subs(t,2*l)))

产量

2*Sum(2**(-2*j + 2*l + 1)*2**(2*j + 2*l - 3)*(l + 1)**2*factorial(-j + 2*l + 1)*factorial(j + 2*l - 1)/((-j + l + 1)*(j + l - 1)*factorial(j)*factorial(2 - j)*factorial(-2*j + 2*l + 1)*factorial(2*j + 2*l - 3)), (j, 0, 0))

0

第一个命令工作正常,表达式也应该是这样,但不知何故第二个命令的输出是 0。 当我手动计算这个加倍总和时,它不是 0。总和中只有一项(因为 j 从 0 到 0)。 有人能解释一下为什么最后一个命令返回 0 吗?

python sympy
1个回答
0
投票
  • 您有被零除或其他一些未定义的行为:

  • expr.subs(l, 3)
    有效:

from sympy import symbols, factorial, Sum, simplify

j, l = symbols('j l')

expr = 2 * Sum(
    2 ** (-2 * j + 2 * l + 1) * 2 ** (2 * j + 2 * l - 3) * (l + 1) ** 2 *
    factorial(-j + 2 * l + 1) * factorial(j + 2 * l - 1) /
    ((-j + l + 1) * (j + l - 1) * factorial(j) * factorial(2 - j) * factorial(-2 * j + 2 * l + 1) * factorial(2 * j + 2 * l - 3)), (j, 0, 0))

S = expr.subs(l, 3)

print(S, simplify(S))

打印

2*Sum(16*2**(7 - 2*j)*2**(2*j + 3)*factorial(7 - j)*factorial(j + 5)/((4 - j)*(j + 2)*factorial(j)*factorial(2 - j)*factorial(7 - 2*j)*factorial(2*j + 3)), (j, 0, 0)) 40960
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.