Sympy 用 Piecewise 简化 Kronecker delta 之和

问题描述 投票:0回答:1
from sympy.abc import i, j, n
from sympy import *
from sympy.concrete.delta import _simplify_delta

x = IndexedBase('x')
U = Sum(KroneckerDelta(i, j, (1, n)) * (x[i] + 1), (i, 1, n))
U1 = Sum(KroneckerDelta(i, j, (1, n)) * Piecewise((x[i] + 1, x[i] > 0), (0, True)), (i, 1, n))
print(simplify(U.doit()))
# output: x[j] + 1  (OK)
print(simplify(U1.doit()))
# output: Sum(Piecewise(((x[i] + 1)*KroneckerDelta(i, j, (1, n)), x[i] > 0), (0, True)), (i, 1, n))
# desired output: Piecewise((x[j] + 1, x[j] > 0), (0, True))

如上所述,我试图简化其中包含分段因子的求和。没有分段可以简化,但是有分段就不行。

相关:Sympy 简化 Kronecker delta 之和

python sympy
1个回答
0
投票

在这种情况下,您可以使用

piecewise_fold

U1

equation 1

piecewise_fold(U1)

equation 2

piecewise_fold(U1).doit()

equation 3

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.