为什么SymPy不能取代指数?

时间:2018-05-09 16:38:26

标签: sympy

简单示例:

from sympy import *
n = symbols('n',integer=True)
x,y = symbols('x,y')
expression = exp(I*n*x)
expression.subs(exp(I*n),y)
#>> exp(I*n*x)

为什么SymPy不会将exp(I*x)替换为y**n?它反过来完全正常(用y替换y**n中的exp(I*x)以提供exp(I*n*x))。是否有一个黑客来完成这个?

1 个答案:

答案 0 :(得分:1)

如果要替换的表达式并未完全出现在表达式中,则

subs可能无法正常工作。

一种解决方法是使用replace模式匹配来替换更通用的模式

>>> a = Wild('a')
>>> expression.replace(exp(I*n*a), y**a)
y**x