今天,我决定用Python编写简单的程序,以便在考试前进行练习。首先,我想画罪恶和因为阴谋,这不是那么困难。但后来,我决定挑战自己,画出切线。
import pylab as p
x= p.arange(-1.0,1.0,0.1)
y= (p.sin(2*p.pi*x)) / (p.cos(2*p.pi*x))
p.plot(x,y,'g-',lw=1)
p.show()它回来了..。呃..。这是:

正如你所看到的,它看起来更像ECK图,而不是切线图。有人知道怎么回事吗?
发布于 2014-01-18 13:38:28
如果增加x中的点数,
import pylab as p
import numpy as np
x = p.linspace(-1.0, 1.0, 1000)
y = (p.sin(2 * p.pi * x)) / (p.cos(2 * p.pi * x))
p.plot(x, y, 'g-', lw=1)
p.show()你会得到这样的东西:

注意y-range有多大。Matplotlib无法显示切线曲线中的许多小值,因为范围太大了。
通过忽略渐近线附近极大的值,可以改善地块。用Paul's workaround来处理无症状,
import pylab as p
import numpy as np
x = p.linspace(-1.0, 1.0, 1000)
y = (p.sin(2 * p.pi * x)) / (p.cos(2 * p.pi * x))
tol = 10
y[y > tol] = np.nan
y[y < -tol] = np.nan
p.plot(x, y, 'g-', lw=1)
p.show()你会得到

发布于 2014-01-18 13:38:35
import pylab as p
x= p.arange(-1.0,1.0,0.01) # <- 0.01 step size.
y= (p.sin(2*p.pi*x)) / (p.cos(2*p.pi*x))
# y = p.tan(2*p.pi*x)
p.plot(x,y,'g-',lw=1)
p.ylim([-4, 4]) # <- Restricting the ylim so we don't see the ~inf values.
p.show()如果不设置ylim,这将是结果。(数值接近无穷大)

结果与设置ylim。

https://stackoverflow.com/questions/21204740
复制相似问题