如何在 sympy EDO dsolve 中写入符号变量
How write the symbolic variable in the sympy EDO dsolve
下午好,
我来这里是因为我注意到 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'.
的结果存在差异
如果我的操作方法正确,有人可以指导吗?
解集是等价的:
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
下午好,
我来这里是因为我注意到 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'.
的结果存在差异如果我的操作方法正确,有人可以指导吗?
解集是等价的:
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