微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sympy EDO dsolve中如何写符号变量

如何解决sympy EDO dsolve中如何写符号变量

下午好,

我来到这里是因为我注意到 dsolve() 在 sympy 中的结果有些异常。

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)+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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。