我想重新整理一个复杂的表达式,简化的形式可以表示为:
i, j, N = symbols("i j N", integers=True, finite=True, nonnegative=True)
a, b, c, d, e = symbols("a b c d e", cls=IndexedBase)
expr = (Sum(a[i] * Sum(b[i] * d[j], (j, 1, N)) * c[i], (i, 1, N))
+ Sum(a[i] * Sum(b[i] * e[j], (j, 1, N)) * c[i], (i, 1, N)))
expr
理想情况下,我想转换为如下所示:
我以前没有使用过
replace
,但看起来它对于这种类型的操作可能很有用。不幸的是,我的尝试没有正确捕获虚拟变量:
ws1, ws2, ws3, wd1, wd2, wl1 = symbols("ws1 ws2 ws3 wd1 wd2 wl1", cls=Wild)
expr.replace(
Sum(ws1 * Sum(ws3, (wd1, 1, wl1)), (wd2, 1, wl1)) * ws2,
Sum(ws1 * ws2 * ws3, (wd1, 1, wl1), (wd2, 1, wl1))
)
想知道是否有人可以提供任何建议?