我试图在python中解一个带渐近模的微分方程。这就是我所做的
from sympy import *
t = sympy.Symbol('t')
k = sympy.Symbol('k')
m = sympy.Symbol('m')
x = sympy.Function('x')(t)
GDE = Eq(m*x.diff(t, 2) + k*x, 0)
solution = dsolve(GDE, x)
display(solution)

现在,我试图得到一个极坐标形式的解,它包含着罪恶,因为和像这幅图一样的复杂术语(i)。在这张图片中,w_n是sqrt(k/m)

我试过了
solution.rewrite(sin) 但是它返回带有双曲函数的表达式,.rewrite(cos)也返回带有双曲函数的表达式。

我也试过
solution.rewrite(sin, cos)但它给出了初步的答案。
有没有办法把这种不带双曲函数的指数型复形转换成极型?
谢谢
发布于 2021-08-18 23:45:36
您应该声明您的符号为实或正等。否则,默认情况下,SymPy假设一个复数:
In [7]: import sympy
In [8]: from sympy import *
...:
...:
...: t = sympy.Symbol('t', real=True)
...: k = sympy.Symbol('k', positive=True)
...: m = sympy.Symbol('m', positive=True)
...: x = sympy.Function('x', real=True)(t)
...:
...: GDE = Eq(m*x.diff(t, 2) + k*x, 0)然后,各种简化将自动发生:
In [9]: sqrt(-k/m)
Out[9]:
ⅈ⋅√k
────
√m
In [10]: exp(t * sqrt(-k/m))
Out[10]:
ⅈ⋅√k⋅t
──────
√m
ℯ
In [11]: exp(t * sqrt(-k/m)).rewrite(cos)
Out[11]:
⎛√k⋅t⎞ ⎛√k⋅t⎞
ⅈ⋅sin⎜────⎟ + cos⎜────⎟
⎝ √m ⎠ ⎝ √m ⎠事实上,在假设集中,dsolve将自动给出sin,cos表单:
In [12]: dsolve(GDE)
Out[12]:
⎛√k⋅t⎞ ⎛√k⋅t⎞
x(t) = C₁⋅sin⎜────⎟ + C₂⋅cos⎜────⎟
⎝ √m ⎠ ⎝ √m ⎠如果没有设置这些假设,仍然可以将表达式操作为sin/cos表单,但是需要一些force=True来覆盖假设检查:
In [25]: s = solution.rhs; s
Out[25]:
_____ _____
╱ -k ╱ -k
-t⋅ ╱ ─── t⋅ ╱ ───
╲╱ m ╲╱ m
C₁⋅ℯ + C₂⋅ℯ
In [26]: s = expand(s, force=True); s
Out[26]:
___ ___
╱ 1 ╱ 1
-ⅈ⋅√k⋅t⋅ ╱ ─ ⅈ⋅√k⋅t⋅ ╱ ─
╲╱ m ╲╱ m
C₁⋅ℯ + C₂⋅ℯ
In [27]: s = s.rewrite(sin); s
Out[27]:
⎛ ⎛ ___⎞ ⎛ ___⎞⎞ ⎛ ⎛ ___⎞ ⎛ ___⎞⎞
⎜ ⎜ ╱ 1 ⎟ ⎜ ╱ 1 ⎟⎟ ⎜ ⎜ ╱ 1 ⎟ ⎜ ╱ 1 ⎟⎟
C₁⋅⎜- ⅈ⋅sin⎜√k⋅t⋅ ╱ ─ ⎟ + cos⎜√k⋅t⋅ ╱ ─ ⎟⎟ + C₂⋅⎜ⅈ⋅sin⎜√k⋅t⋅ ╱ ─ ⎟ + cos⎜√k⋅t⋅ ╱ ─ ⎟⎟
⎝ ⎝ ╲╱ m ⎠ ⎝ ╲╱ m ⎠⎠ ⎝ ⎝ ╲╱ m ⎠ ⎝ ╲╱ m ⎠⎠
In [28]: s = expand(s).collect(s.atoms(sin, cos)); s
Out[28]:
⎛ ___⎞ ⎛ ___⎞
⎜ ╱ 1 ⎟ ⎜ ╱ 1 ⎟
(C₁ + C₂)⋅cos⎜√k⋅t⋅ ╱ ─ ⎟ + (-ⅈ⋅C₁ + ⅈ⋅C₂)⋅sin⎜√k⋅t⋅ ╱ ─ ⎟
⎝ ╲╱ m ⎠ ⎝ ╲╱ m ⎠
In [29]: s = powsimp(s, force=True); s
Out[29]:
⎛ ___⎞ ⎛ ___⎞
⎜ ╱ 1 ⎟ ⎜ ╱ 1 ⎟
(C₁ + C₂)⋅cos⎜√k⋅t⋅ ╱ ─ ⎟ + (-ⅈ⋅C₁ + ⅈ⋅C₂)⋅sin⎜√k⋅t⋅ ╱ ─ ⎟
⎝ ╲╱ m ⎠ ⎝ ╲╱ m ⎠
In [30]: s = powsimp(s, force=True, deep=True); s
Out[30]:
⎛ ___⎞ ⎛ ___⎞
⎜ ╱ k ⎟ ⎜ ╱ k ⎟
(C₁ + C₂)⋅cos⎜t⋅ ╱ ─ ⎟ + (-ⅈ⋅C₁ + ⅈ⋅C₂)⋅sin⎜t⋅ ╱ ─ ⎟
⎝ ╲╱ m ⎠ ⎝ ╲╱ m ⎠https://stackoverflow.com/questions/68839375
复制相似问题