首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >用SymPy求解二阶线性常微分方程的意外结果

用SymPy求解二阶线性常微分方程的意外结果
EN

Stack Overflow用户
提问于 2018-12-30 00:28:32
回答 1查看 101关注 0票数 1

我在试着解这个二阶线性常微分方程

使用SymPy,并得到意外的结果。

代码语言:javascript
复制
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)

哪种打印

代码语言:javascript
复制
Eq(s(t), C1*exp(-I*k*t) + C2*exp(I*k*t))

但是,solution I expected

你知道我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-30 03:06:44

结果打印为

代码语言:javascript
复制
Eq(s(t), C1*exp(-I*k*t) + C2*exp(I*k*t))

这是正确的,因为I是虚数单位。您可能更喜欢实数形式,但是sympy没有被告知这一点,并生成了最简单的形式作为指数项的和,特别是在不清楚k是否实际是真实的情况下。

如果您通过以下方式明确表示k是一个正实数

代码语言:javascript
复制
k = sym.Symbol('k', real=True, positive=True) 

正如您所期望的,解决方案实际上是真实的形式。

代码语言:javascript
复制
Eq(s(t), C1*sin(k*t) + C2*cos(k*t))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53971293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档