我正在尝试求解这个二阶常线性微分方程 使用 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))
你知道我做错了什么吗?
最佳答案
结果打印为
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))
关于python - 使用 SymPy 求解二阶常线性微分方程的意外结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53971293/