在 Sympy 中查找微分方程的阶数

Find the order of a differential equation in Sympy

我在 Sympy (0.7.6.1) 中定义了一个微分方程,例如:

>>> y = Function('y')
>>> x = Symbol('x')
>>> y0 = y(x)
>>> y1 = y0.diff(x)
>>> y2 = y1.diff(x)
>>> eq = y2 - 2*y1 + y0
>>> eq
                      2      
         d           d       
y(x) - 2*--(y(x)) + ---(y(x))
         dx           2          
                    dx   

我想让 Sympy 告诉我方程式的顺序。我在文档中什么也没找到。我隐隐希望 degree 可能会起作用,但它不起作用:

>>> degree(eq)
1
>>> degree(eq, y)
0

上下文:出于教学目的,我编写了一个常系数线性齐次 ODE 求解器。它找到特征方程并用 Sympy 的 roots 求解。目前我必须在 ODE 本身旁边手动传递 ODE 顺序,这很不方便。

您可以使用 ode_order。这给出了关于函数的微分方程的阶数:

>>> ode_order(eq, y)
2