2016-11-18 142 views
3

如何對SymPy中的函數符號執行泰勒展開?SymPy Taylor擴展功能符號

例如

from sympy import * 
ode = f(x).diff(x, 2) - sin(f(x)) 

我們想通過做這樣

ode.series(f, 0, 1) 

的東西來獲得類似

f(x).diff(x, 2) - f(x) 

來線性微分方程,但我想不出它瞭解如何在SymPy中執行此操作。在千里馬,我可以這樣定義

depends(y, x); 
ode: diff(y, x, 2) - sin(y); 
taylor(ode, y, 0, 8); 

的依賴,它會導致

'diff(y,x,2) - y + y^3/6 - y^5/120 + y^7/5040 + ... 

這可能是線性化非線性微分方程或微擾理論中非常有用。

回答

2

您可以暫時用y等符號代替f(x),對該符號進行擴展,然後替換回來。這裏是一個自包含例如:

from sympy import * 
var('x y') 
f = Function('f') 
ode = f(x).diff(x, 2) - sin(f(x)) 
ode_linear = series(ode.subs(f(x), y), y, 0, 2).removeO().subs(y, f(x)) 
ode_cubic = series(ode.subs(f(x), y), y, 0, 4).removeO().subs(y, f(x)) 

結果,ode_linear-f(x) + Derivative(f(x), x, x)ode_cubicf(x)**3/6 - f(x) + Derivative(f(x), x, x)