Python Taylor系列sin函数图

时间:2018-11-02 15:11:39

标签: python matplotlib

我正在尝试使用带有Jupyter笔记本的python绘制泰勒级数sin(x)图。我创建了一个短函数。该图形将正确显示,直到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 :(得分:1)

发表评论后,您澄清了,您不需要一个点,而是一条水平线。在这种情况下,您只需输入一个具有相同值2.7的x网格即可。

为此,您首先使用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.scatters=60只是一个大标志。

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

enter image description here

答案 1 :(得分:0)

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轴上添加标量。

答案 2 :(得分:0)

我认为

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

会工作。当x是线性空间且y3仅是一个数字时,您将无法绘制(x,y3)。

此外,sin函数的泰勒逼近仅在区间(-pi,pi)中起作用。