簡體   English   中英

用SymPy解二階常線性微分方程的意外結果

[英]Unexpected result for solving ordinary linear differential equation of second order with SymPy

我正在嘗試解決這個二階普通線性微分方程 \\ ddot {s} + k ^ 2s = 0 使用SymPy並獲得意外結果。

import sympy as sym
k, t = sym.symbols('k, t') 
s = sym.Function('s')

diff_eq = sym.Eq(s(t).diff(t, 2) + s(t) * k**2, 0) # everything fine here, when I print this I get what I expected.

solution_diff_eq = sym.dsolve(diff_eq, s(t))  
print(solution_diff_eq)

哪些印刷品

Eq(s(t), C1*exp(-I*k*t) + C2*exp(I*k*t))

但是, 我期望解決方案 s = A \\ sin {kt} + B \\ cos {kt}

有任何想法我做錯了嗎?

結果打印為

Eq(s(t), C1*exp(-I*k*t) + C2*exp(I*k*t))

這是正確的,因為I是虛構單位。 您可能更喜歡實數形式,但是沒有通知sympy,並且以指數項的總和生成了最簡單的形式,尤其是因為不清楚k是否為實數。

如果您明確指出k是通過

k = sym.Symbol('k', real=True, positive=True) 

正如您所期望的,該解決方案實際上是真實的形式

Eq(s(t), C1*sin(k*t) + C2*cos(k*t))

暫無
暫無

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

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