我在忙着写一些同情代码来处理虚数符号表达式。
首先,我想让它把x和y作为实数,找到x=y的解。所以我可以这样做。
x, y = sympy.symbols("x y", real=True)
print(sympy.solve([x-sympy.I*y]))
(SymPy solve接受值列表,所有值都必须为0。所以x-iy=0=>;x=iy)。SymPy会正确地告诉我
[{x: 0, y: 0}]
但是,如果我这样做(理论上相同):
x, y = sympy.symbols("x y")
print(sympy.solve([x-sympy.I*y, sympy.im(y), sympy.im(x)]))
现在辛皮告诉我
[{re(y): y, re(x): I*y, im(x): 0, x: I*y, im(y): 0}]
这在技术上是正确的,但并没有为我做任何事。这只是SymPy中的一个限制吗,或者我可以通过这样约束复数x和y来得到x=y=0吗?
下面是一个例子,说明如何更一般地解决问题。我使用了一个提示,即使用实际的虚构字符将是一个麻烦,并使用collect_const()函数来执行缩减。
因为SymPy比复数更擅长于简化实数对,所以下面的策略有帮助:为实部/虚部设置实数变量,然后从中形成复数。
现在x和y可以作为复杂的变量在一个方程中使用,比如你的
输出:
0 0
。相关问题 更多 >
编程相关推荐