在Python中绘制正切图(matplotlib)

Szc*_*son 4 python plot matplotlib

今天我决定用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()
Run Code Online (Sandbox Code Playgroud)

它返回...呃...这个:

在此输入图像描述

正如您所看到的,它看起来更像是 ECK 图而不是正切图。有谁知道出了什么问题吗?

unu*_*tbu 6

如果增加 中的点数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()
Run Code Online (Sandbox Code Playgroud)

你会得到这样的东西: 在此输入图像描述

注意它变得有多大y-range。Matplotlib 无法显示正切曲线中的许多小值,因为范围太大。

可以通过忽略渐近线附近的极大值来改进该图。使用保罗的解决方法来处理渐近线,

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()
Run Code Online (Sandbox Code Playgroud)

你得到

在此输入图像描述