繁体   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