0

下午好,

我来这里是因为我注意到 sympy 中 dsolve() 的结果中有一些不寻常的地方。

from sympy import *
from sympy.abc import x,y
import sympy as s
import numpy as np

n = symbols('n', complex=True)

s.init_printing()
f=Function('x')

eq=Derivative(f(x),x,x)+n**2*f(x)
a=dsolve(eq, f(x))

eq2=Derivative(f(x),x,x)+2**2*f(x)
a2=dsolve(eq2, f(x))

display(a.subs(n,2)==a2)

生成的结果为 False。

仅查看“a”的结果,已经可以看到使用符号变量“n”的结果存在差异。

如果我以正确的方式进行操作,有人可以指导吗?

4

1 回答 1

0

解集是等价的:

In [2]: a
Out[2]: 
           -ⅈ⋅n⋅x       ⅈ⋅n⋅x
x(x) = C₁⋅ℯ       + C₂⋅ℯ     

In [3]: a2
Out[3]: x(x) = C₁⋅sin(2⋅x) + C₂⋅cos(2⋅x)

这些只是编写通用解决方案的不同方式。如果您已声明n为真实,则将使用 sin/cos 形式。

这两种形式通过欧拉公式相关: https ://en.wikipedia.org/wiki/Linear_differential_equation#Second-order_case

于 2021-07-21T18:16:49.493 回答