函数符号的 SymPy 泰勒展开式
SymPy Taylor expansion for functions symbols
如何在 SymPy 中对函数符号进行泰勒展开?
例如
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 中执行此操作。在 Maxima 中,我可以定义一个依赖关系,例如
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 + ...
这对于线性化非线性微分方程或微扰理论非常有用。
您可以暂时用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_cubic
是 f(x)**3/6 - f(x) + Derivative(f(x), x, x)
如何在 SymPy 中对函数符号进行泰勒展开?
例如
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 中执行此操作。在 Maxima 中,我可以定义一个依赖关系,例如
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 + ...
这对于线性化非线性微分方程或微扰理论非常有用。
您可以暂时用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_cubic
是 f(x)**3/6 - f(x) + Derivative(f(x), x, x)