Сюжет / Преобразование выражения, полученного от sympy: ряд Тейлора с помощью matplotlib
Я пытаюсь построить функцию sin (x) / x и приближение Тейлора к ней. я использую python 3 и pyzo - первый сюжет работает, но у меня проблемы с преобразованием серии, идущей из модуля sympy, в пустое выражение, которое будет работать.
import numpy as np
import matplotlib.pyplot as plt
import sympy as sp
from sympy.abc import x
x = np.linspace(-10, 10, 100)
y = np.sin(x)/x #first function
plt.plot(x, y, 'k') #this is working fine
### this is a code that removes the "0(x**something)" part of
the series at the end
я нашел это здесьhttp://pastebin.com/ZNQakWP7
def series(expr, x, x0, n, removeO=False):
"""
sympy bugs avoided
"""
# expr_series = expr.series(x, x0, n)
# return expr_series.removeO() if removeO else expr_series
expansion = list()
for t in expr.lseries(x, x0):
p = t.as_coeff_exponent(x)[1]
if p < n:
expansion.append(t)
else:
break
if not removeO:
expansion.append(sp.O(x**n))
return sp.Add(*expansion)
### my code continued ####
y_t=series(sp.sin(x)/x,x,0,6,removeO=True)
если я смотрю на y_t сейчас я получаю это приближение
out: x**4/120 - x**2/6 + 1
Теперь я пытаюсь преобразовать это в NumPy, чтобы построить его, как я сделал с первой функцией.
f_t = lambdify(x, y_t,modules=['numpy'])
x = np.linspace(-10, 10, 100) #i do this because x has
#been a symbolic variable before
plt.plot(x, y_t, 'b') #this is where the problem occurs
я получаю первый график и второе сообщение об ошибке:
File "<console>", line 1, in <module>
File "F:\pyzo2013_0_2_2\lib\site-packages\matplotlib\pyplot.py", line 2832, in plot
ret = ax.plot(*args, **kwargs)
File "F:\pyzo2013_0_2_2\lib\site-packages\matplotlib\axes.py", line 3998, in plot
for line in self._get_lines(*args, **kwargs):
Как я могу реализовать свою идею построить что-то, идущее от sympy? У меня была еще одна идея - преобразовать sympy из серии в строку, а затем как-то разобрать это в пустышку. Буду благодарен за любую помощь здесь!