SymPy:泰勒系列使用x以外的变量?

时间:2017-02-11 16:19:02

标签: python sympy

我一直在搜索文档,但我被卡住了:SymPy似乎假设变量“x”,即使我只声明了“t”和“y(t)”。我让它给我一个y(t)的系列,这就是我得到的......

>>> from sympy import *
>>> var('t')
t
>>> y = Function("y")
>>> s = y(t).series(t, 0, 4)
>>> pprint(s)
                             ⎛  2      ⎞│         ⎛  3      ⎞│           
                           2 ⎜ d       ⎟│       3 ⎜ d       ⎟│           
                          t ⋅⎜───(y(x))⎟│      t ⋅⎜───(y(x))⎟│           
                             ⎜  2      ⎟│         ⎜  3      ⎟│           
         ⎛d       ⎞│         ⎝dx       ⎠│x=0      ⎝dx       ⎠│x=0    ⎛ 4⎞
y(0) + t⋅⎜──(y(x))⎟│    + ────────────────── + ────────────────── + O⎝t ⎠
         ⎝dx      ⎠│x=0           2                    6                 

如何用d / dt而不是d / dx得到泰勒级数,用y(t)代替y(x)?

(顺便说一句,尝试用t代替x不起作用,因为x甚至没有定义,所以你得到一个错误)

编辑:为了澄清,这就是我想要的:

>>> pprint(s)
                             ⎛  2      ⎞│         ⎛  3      ⎞│           
                           2 ⎜ d       ⎟│       3 ⎜ d       ⎟│           
                          t ⋅⎜───(y(t))⎟│      t ⋅⎜───(y(t))⎟│           
                             ⎜  2      ⎟│         ⎜  3      ⎟│           
         ⎛d       ⎞│         ⎝dt       ⎠│t=0      ⎝dt       ⎠│t=0    ⎛ 4⎞
y(0) + t⋅⎜──(y(t))⎟│    + ────────────────── + ────────────────── + O⎝t ⎠
         ⎝dt      ⎠│t=0           2                    6                 

甚至

>>> pprint(s)
                             ⎛  2      ⎞│         ⎛  3      ⎞│           
                           2 ⎜ d       ⎟│       3 ⎜ d       ⎟│           
                          h ⋅⎜───(y(t))⎟│      h ⋅⎜───(y(t))⎟│           
                             ⎜  2      ⎟│         ⎜  3      ⎟│           
         ⎛d       ⎞│         ⎝dt       ⎠│t=0      ⎝dt       ⎠│t=0    ⎛ 4⎞
y(0) + h⋅⎜──(y(t))⎟│    + ────────────────── + ────────────────── + O⎝h ⎠
         ⎝dt      ⎠│t=0           2                    6                 

1 个答案:

答案 0 :(得分:0)

我猜它不希望 t 作为arg传递

sympy通常使用符号表达式,与函数

略有不同
y = Function("y")
y.series(t, 0, 4)
Out[7]: t

或者用一些东西来实际给出系列术语:

y = sin(t)

y.series(t, 0, 8)
Out[10]: t - t**3/6 + t**5/120 - t**7/5040 + O(t**8)