2015-09-15 3 views
1

У меня есть дифференциальное уравнение, определяемое в SymPy (0.7.6.1), например:Найти порядок дифференциального уравнения в SymPy

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

Контекста: Для педагогической цели, я написал решатель для постоянного коэффициента линейной однородной ОДЫ. Он находит характеристическое уравнение и решает его с помощью Sympy's roots. В настоящее время я должен передать заказ ODE вручную рядом с самим ODE, что неудобно.

ответ

1

Вы можете использовать ode_order. Это дает вам порядок дифференциального уравнения по отношению к функции:

>>> ode_order(eq, y) 
2 
+0

Спасибо. Он документирован в модуле Solvers, а не в ODE, что затрудняет его поиск. – Adrien

Смежные вопросы