我正在将 lcapy 与 sympy 一起使用,并尝试处理电路中的复数。
我有以下同情表达:
import sympy
from lcapy import j
expr = sympy.parse_expr('L*w_0*(C*R*w_0 - I)')
expr
输出:
L⋅w₀⋅(C⋅R⋅w₀ - ⅉ)
上面的expr
是一个复数表达式,其中ⅉ
是虚数。我可以使用 sympy 并从 expr
中删除括号,以便以更规范的复数形式查看它吗?
w₀^2⋅R⋅L⋅C - ⅉ⋅w₀⋅L
sympy 支持处理复数吗?我想得到 expr
的参数应该是:
arctan(L⋅w₀ / w₀^2⋅R⋅L⋅C)
isympy
会议中):
In [13]: expr
Out[13]: L⋅w₀⋅(C⋅R⋅w₀ - ⅈ)
In [14]: expr.expand()
Out[14]:
2
C⋅L⋅R⋅w₀ - ⅈ⋅L⋅w₀
编辑
atan2(im(expr), re(expr))
https://docs.sympy.org/latest/modules/functions/elementary.html
细化变量:
In [53]: C,L,R,w_0=symbols('C L R w_0',real=True, positive=True)
In [54]: expr=L*w_0*(C*R*w_0-I)
In [55]: expr
Out[55]: L⋅w₀⋅(C⋅R⋅w₀ - ⅈ)
In [56]: expr.expand()
Out[56]:
2
C⋅L⋅R⋅w₀ - ⅈ⋅L⋅w₀
In [57]: im(_),re(_)
Out[57]:
⎛ 2⎞
⎝-L⋅w₀, C⋅L⋅R⋅w₀ ⎠
现在 atan2
已简化:
In [59]: atan2(*_)
Out[59]:
⎛ 1 ⎞
-atan⎜──────⎟
⎝C⋅R⋅w₀⎠
并且 arg
也做同样的事情:
In [60]: arg(_56)
Out[60]: arg(C⋅R⋅w₀ - ⅈ)
In [62]: arg(expr)
Out[62]: arg(C⋅R⋅w₀ - ⅈ)
In [77]: arg(expr)._eval_rewrite_as_atan2(expr)
Out[77]:
⎛ 1 ⎞
-atan⎜──────⎟
⎝C⋅R⋅w₀⎠