簡體   English   中英

試圖簡化 SymPy 中的一個頑固表達式 - 復指數/三角空間向量方程

[英]Trying to simplify a stubborn expression in SymPy - complex exponential / trigonometric space vector equation

我正在努力簡化

cos(phi) + cos(phi - 2*pi/3)*e^(I*2*pi/3) + cos(phi - 4*pi/3)*e^(I*4*pi/3)

我知道減少到 1.5e^(I*phi)

我無法讓 SymPy 識別這一點。 我試過simplifytrigsimpexpand等。但似乎沒有任何效果。 有什么建議么?

這是我的代碼:

import numpy as np
%matplotlib inline 
import matplotlib.pyplot as plt

import sympy as sp
from sympy import I 
sp.init_printing()
phi = sp.symbols('\phi', real = True)

vec = sp.cos(phi) + sp.cos(phi - 2*sp.pi/3)*sp.exp(I*2*sp.pi/3) + sp.cos(phi - 4*sp.pi/3)*sp.exp(I*4*sp.pi/3)

vec.simplify()
vec.rewrite(sp.exp).simplify()
vec.rewrite(sp.exp).expand().simplify()

這些都不會產生預期的結果。 我可以手動確認我的結果,方法是將值替換為phi ,如下所示:

sp.simplify(vec.rewrite(sp.exp).simplify() - 3/2*sp.exp(I*phi)).evalf(subs={phi:3})

這並不明顯,但你可以像這樣到達那里:

In [40]: phi = symbols('phi', real=True)

In [41]: e = cos(phi) + cos(phi - 2*pi/3)*E**(I*2*pi/3) + cos(phi - 4*pi/3)*E**(I*4*pi/3)

In [42]: e
Out[42]: 
   -2⋅ⅈ⋅π                         2⋅ⅈ⋅π           
   ───────                        ─────           
      3       ⎛    π⎞               3      ⎛    π⎞
- ℯ       ⋅sin⎜φ + ─⎟ + cos(φ) - ℯ     ⋅cos⎜φ + ─⎟
              ⎝    6⎠                      ⎝    3⎠

In [43]: e.rewrite(exp).expand().rewrite(sin).expand().rewrite(exp)
Out[43]: 
   ⅈ⋅φ
3⋅ℯ   
──────
  2 

這絕對是一個示例,其中手動計算可能比探索如何使用 SymPy 更快。

無論如何,這就是我實現這一目標的方式:

vec.rewrite(exp).simplify().subs(
    root(-1, 6),
    root(-1, 6).rewrite(exp)
).expand().subs(
    I * exp(-5 * I * pi / 6),
    (I * exp(-5 * I * pi / 6)).simplify().rewrite(exp)
).simplify().expand()

# out: 3*exp(I*\phi)/2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM