我们知道tan
函数的图像应该为一系列的从
[
−
π
2
,
π
2
]
\left[-\cfrac{\pi}{2}, \cfrac{\pi}{2}\right]
[−2π,2π]以及同这个周期内函数图像类似的图像一直向后循环,tan
函数在自变量区间
[
−
π
2
,
π
2
]
\left[-\cfrac{\pi}{2}, \cfrac{\pi}{2}\right]
[−2π,2π]内的图像为:
import numpy as np
import matplotlib.pyplot as plt
x = np.linspace(-np.pi / 2, np.pi / 2, 101)
y = np.tan(x)
plt.figure()
plt.plot(x, y)
plt.ylim([-3, 3])
ax = plt.gca()
ax.set_aspect(1)
plt.show()
然而当我们只用Python
作图时,我们会发现,会得到一条连接上下极致的图像,比如我们做
[
0
,
2
π
]
\left[0, 2\pi\right]
[0,2π]内的图像,我们会得到如下图所示的结果。
如上图所示,为两个黑色框包裹起来的区域,很丑,并且不符合tan
函数真实的图像,那么对于这个问题该如何处理呢?我们可以采用如下代码来避免这一问题。
import numpy as np
import matplotlib.pyplot as plt
end_vertex = 2 * np.pi
loop_start = np.pi / 2
plt.figure()
x1 = np.linspace(0, loop_start, 101)
y1 = np.tan(x1)
plt.plot(x1[:-1], y1[:-1], color="magenta")
for i in range(int(end_vertex // np.pi)):
if end_vertex - (loop_start + np.pi) < 0:
x2 = np.linspace(loop_start, end_vertex, 101)
else:
x2 = np.linspace(loop_start, loop_start + np.pi, 101)
loop_start += np.pi
y2 = np.tan(x2)
plt.plot(x2[1:-1], y2[1:-1], color="magenta")
plt.ylim([-3, 3])
ax = plt.gca()
ax.set_aspect(1)
plt.show()
得到的图像如下:
如果大家觉得有用,就请点个赞吧~