我正在尝试使用带有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
答案 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')
要在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')
答案 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)中起作用。