我一直在搜索文档,但我被卡住了: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
答案 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)