График функции sin ряда Питона Тейлора - PullRequest
0 голосов
/ 02 ноября 2018

Я пытаюсь нарисовать график sin (x) серии Тейлора, используя python с блокнотом Jupyter. Я создал короткую функцию. График будет отображаться правильно до y2, но не будет работать на y3. Трудно нарисовать график со значением x = 2.7 в y3. Я не знаю, как исправить y3.

Это мой код:

import numpy as np
import matplotlib.pyplot as plt
import numpy as np

def f(x) :
   result = x - x**3/6 + x**5/120 
   return result

x = np.linspace(0.0, 7.0, 100)
y = np.sin(x)
y2 = x - x**3/6 + x**5/120
y3 = f(2.7)

plt.title("taylor sin graph")
plt.xlim(0, 7+0.2)
plt.ylim(-5, 5+1)

plt.plot(x, y, label='sin(x)')
plt.plot(x, y2, label='x=0')
plt.plot(x, y3, label='x=2.7')

plt.legend()
plt.show()

Я хочу добавить y3 здесь:

enter image description here

Ответы [ 3 ]

0 голосов
/ 02 ноября 2018

Я думаю

plt.plot([2.7], [y3], '-o', label='x=2.7')

будет работать. Вы не можете построить (x, y3), когда x - это пробел, а y3 - только одно число.

Кроме того, приближение Тейлора функции sin работает только в интервале (-pi, pi).

0 голосов
/ 02 ноября 2018

После вашего комментария выяснилось, что вам нужна не одна точка, а горизонтальная линия. В этом случае вы можете просто ввести х-сетку с тем же значением 2.7.

Для этого вы сначала определяете массив, содержащий значения 2.7, используя np.ones(100) * 2.7, а затем просто передаете его в функцию.

y3 = f(2.7*np.ones(100))
plt.plot(x, y3, label='x=2.7')

enter image description here

Для построения одной точки на x=2.7 есть два пути (среди возможных других).

Первый вариант - просто указать два числа x-y и построить график с использованием маркера как

plt.plot(2.7, y3, 'bo', label='x=2.7')

Второй вариант - использовать plt.scatter. s=60 просто иметь большой маркер.

plt.scatter(2.7, y3, s=60, label='x=2.7')

enter image description here

0 голосов
/ 02 ноября 2018
import numpy as np
import matplotlib.pyplot as plt
import numpy as np

def f(x) :
   result = x - x**3/6 + x**5/120 
   return result

x = np.linspace(0.0, 7.0, 100)
y = np.sin(x)
y2 = x - x**3/6 + x**5/120
y3 = f(2.7)

plt.title("taylor sin graph")
plt.xlim(0, 7+0.2)
plt.ylim(-5, 5+1)

plt.plot(x, y, label='sin(x)')
plt.plot(x, y2, label='x=0')
plt.plot(2.7, y3, label='x=2.7', marker=11)

plt.legend()
plt.show()

Вы должны добавить точку - не массив по оси x, а скаляр по оси y.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...