【问题标题】:Sympy euler identity to two equationsSympy欧拉恒等式的两个方程
【发布时间】:2020-09-15 00:37:47
【问题描述】:

我有一个形式为:
?????????^(??????????2)+????????^(????????3)+???????? ^(?????????4)+????????^(????????1)=0

在 sympy 中,我想使用欧拉恒等式将其拆分为两个方程,一个是实数,一个是虚数。

??????cos(????2)+??????cos(????3)+??????cos(????4)+????cos(?? ??1)=0
??????????罪(????2)+??????????罪(????3)+????????罪(????4) +????????sin(????1)=0

到目前为止我已经尝试过:

a, b, c, d = symbols("a b c d")
theta1, theta2, theta3, theta4 = symbols("theta1 theta2 theta3 theta4")
eq1 = Eq(a*exp(I*theta2) + b*exp(I*theta3) + c*exp(I*theta4) +d*exp(I*theta1), 0) 
eq1 = eq1.subs([(a,40), (b,120), (c,80), (d,100), (theta1,0), (theta2, 40 * (pi.evalf()/180))])

lhs_real, lhs_img = eq1.lhs.as_real_imag()
rhs_real, rhs_img = eq1.rhs.as_real_imag()

eq2 = Eq(lhs_real, rhs_real)
eq3 = Eq(lhs_img, rhs_img)

但是我的 eq2 似乎包含实数和虚数。
−120cos(re(????3))sinh(im(????3))+120cos(re(? ???3))cosh(im(????3))−80cos(re(????4))sinh(im(????4))+80cos(re(????4))cosh(im(????4))+130.641777724759 =0

如何使用 Sympy 实现这一目标?
我看过这个问题complex numbers in sympy: resolving Euler's Identity,但 sympy.re 和 sympy.im 不适用于 Sympy 方程。

【问题讨论】:

  • 我没有看到任何虚构的术语(请注意,im(x) 是真实的)。大概你想用real=True 创建符号,这样im(x) = 0

标签: python-3.x sympy


【解决方案1】:

首先,欢迎来到 SO!

如果要将表达式分为实部和虚部,则只能使用实变量 (real=True)。您的示例可以重写为:

import sympy as sy
sy.init_printing()

a_r, b_r, c_r, d_r = sy.symbols('a_r, b_r, c_r, d_r', real=True) 
a_i, b_i, c_i, d_i = sy.symbols('a_i, b_i, c_i, d_i', real=True)
th1, th2, th3, th4 = sy.symbols('theta_1, theta_2, theta_3, theta_4 ', real=True)

# complex numbers:
a, b = (a_r + sy.I*a_i), (a_r + sy.I*a_i)
c, d =  (c_r + sy.I*c_i), (d_r + sy.I*d_i)

xpr0 = (a * sy.exp(sy.I*th2) + b * sy.exp(sy.I*th3) +
        c * sy.exp(sy.I*th4) + d * sy.exp(sy.I*th1))

eq1 = sy.Eq(sy.re(xpr0), 0)
# Gives: -aᵢ⋅sin(θ₂) + aᵣ⋅cos(θ₂) - bᵢ⋅sin(θ₃) + bᵣ⋅cos(θ₃) - cᵢ⋅sin(θ₄) + cᵣ⋅cos(θ₄) - dᵢ⋅sin(θ₁) + dᵣ⋅cos(θ₁) = 0

eq2 = sy.Eq(sy.im(xpr0), 0)
# Gives aᵢ⋅cos(θ₂) + aᵣ⋅sin(θ₂) + bᵢ⋅cos(θ₃) + bᵣ⋅sin(θ₃) + cᵢ⋅cos(θ₄) + cᵣ⋅sin(θ₄) + dᵢ⋅cos(θ₁) + dᵣ⋅sin(θ₁) = 0

【讨论】:

    猜你喜欢
    • 2017-10-31
    • 1970-01-01
    • 2014-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-02-25
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    相关资源
    最近更新 更多