Sympy:当源于莱布尼茨规则时,Integral(0, (R, b, r)) 没有简化为零

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

我正在积分下微分。由于被积函数并不明确依赖于变量,因此莱布尼茨规则中的相应项不会出现。 然而,sympy 并没有将其简化为零。这是为什么?可以以某种方式强迫它这样做吗? 这阻碍了我今后进一步简化表达。 这是我的 MCVE。

# Test: Check why integrating the null function does not simplify to zero
r = sym.symbols('r', real=True, positive=True)
b = sym.symbols('b', real=True, positive=True)
# Dummy integration variable
R = sym.symbols('R', real=True, positive=True)

# 1. Simple integral... simplifies ok
i1s = sym.simplify(sym.integrate(0, (R, b, r)))
print('i1s =', i1s)

# 2. Integral stemming from Leibniz rule... does not simplify
p = sym.Function('p', real=True)
i2s = sym.simplify(sym.integrate(R*p(R), (R, b, r)))
print('i2s =', i2s)
i3s = sym.simplify(sym.diff(i2s, r))
print('i3s =', i3s)

产生

i1s = 0
i2s = Integral(R*p(R), (R, b, r))
i3s = r*p(r) + Integral(0, (R, b, r))

我会期待

i3s = r*p(r)

注意:

sym.simplify
的所有使用在这里都是多余的。

python sympy symbolic-math numerical-integration
1个回答
0
投票

我在 1.11.1 版本中对此进行了测试,并且 0 项被删除。我不确定这个改变在哪个版本,但你应该考虑升级。现在,您可以将

.doit()
添加到
i3s
行的末尾,让 sympy 计算 0 积分。

© www.soinside.com 2019 - 2024. All rights reserved.