我的代码中有两行
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 吗?
您有被零除或其他一些未定义的行为:
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