Sympy:指数的乘积而非指数的和

3
我正在寻找如何告诉SymPy使用指数乘积而不是指数和。也就是说,当前它给出的是exp(a+b),而我想要得到的是exp(a) * exp(b)。这应该有一个相当简单的方法,但我似乎找不到它。

2
你能发布一下你正在使用的具体的sympy调用吗? - ErikR
你必须使用sympy吗?你能在没有它的情况下运行计算吗? - duhaime
1个回答

2
你可以使用expand()函数,以乘法基数的形式展示表达式,而不是指数和的形式:
>>> from sympy import *
>>> a, b = symbols('a b')
>>> expr = exp(a + b)
>>> expr
exp(a + b)
>>> expr.expand()
exp(a)*exp(b)

这个函数的文档在这里,下面总结了相关部分:

sympy.core.function.expand(e, deep=True, modulus=None, power_base=True, power_exp=True, mul=True, log=True, multinomial=True, basic=True, **hints)

使用给定的提示方法扩展表达式。

除非明确设置为False,否则将评估提示。可用的提示有:basiclogmultinomialmulpower_basepower_exp......

显然,power_exp是相关的提示。

power_exp

Expand addition in exponents into multiplied bases.

>>> exp(x + y).expand(power_exp=True)
exp(x)*exp(y)
>>> (2**(x + y)).expand(power_exp=True)
2**x*2**y
将其设为False会使表达式保持不变:
>>> expr.expand(power_exp=False)
exp(a + b)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接