【问题标题】:SymPy Taylor expansion for functions symbols函数符号的 SymPy 泰勒展开
【发布时间】:2017-04-02 21:46:57
【问题描述】:

如何在 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 + ...

这对于线性化非线性微分方程或微扰理论非常有用。

【问题讨论】:

    标签: sympy symbolic-math maxima taylor-series


    【解决方案1】:

    您可以将f(x) 临时替换为y 等符号,对该符号执行扩展,然后再替换回来。这是一个独立的示例:

    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)

    【讨论】:

      猜你喜欢
      • 2020-01-05
      • 1970-01-01
      • 2017-06-14
      • 2013-10-09
      • 2014-06-11
      • 2021-07-10
      • 2019-05-27
      • 2020-04-10
      • 2014-07-11
      相关资源
      最近更新 更多