我正在编写一些 SymPy 代码来处理带有虚数的符号表达式。
首先,我想让它把 x 和 y 作为实数并找到 x=iy 的解。所以我可以按如下方式执行此操作。
x, y = sympy.symbols("x y", real=True)
print(sympy.solve([x-sympy.I*y]))
(SymPy 求解采用一个值列表,所有值都必须为 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)]))
然后现在 SymPy 告诉我
[{re(y): y, re(x): I*y, im(x): 0, x: I*y, im(y): 0}]
这在技术上是正确的,但并没有为我完成一切。这只是 SymPy 中的一个限制,还是我可以通过以这种方式约束复数 x 和 y 来得到 x=y=0 ?
由于 SymPy 比复数更擅长简化实数对,因此以下策略会有所帮助:为实部/虚部设置实变量,然后从它们形成复变量。
from sympy import *
x1, x2, y1, y2 = symbols("x1 x2 y1 y2", real=True)
x = x1 + I*x2
y = y1 + I*y2
现在 x 和 y 可以用作方程(例如您的方程)中的复变量
sol = solve([x-I*y, im(y), im(x)])
print(x.subs(sol[0]), y.subs(sol[0]))
Output: 0 0
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)