我正在尝试使用Python和matplotlib绘制f(x)= 1 / x。目前,我的代码是:
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return 1/x
t1 = np.arange(-4.0, 4.0, 1)
t2 = np.arange(-4.0, 4.0, 0.02)
figure = plt.figure(1)
ax = figure.add_subplot(111)
ax.tick_params(labeltop = True)
ax.set_ylim([-40,40])
plt.plot(t1, f(t1), 'bo', t2, f(t2), 'k')
输出如下:
显然这是不正确的,并且我确定问题是由于Python无法在点x = 0(因为未定义1/0)而计算函数的事实而发生的
是否可以从函数中排除x = 0?
(有一个question与这个差不多,但是我无法用那里的答案解决问题。)
谢谢!
答案 0 :(得分:1)
这是不正确的。它简单地连接了每个点,并且当x + 0处有一个点位于+无限处而另一处是-无限处时,您将获得连接这两个点的直线。最简单的绘制线条的方法是绘制两个图形:一个用于x <0,另一个用于x> 0:
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return 1/x
t1a = np.arange(-4.0, 0, 1)
t1b = np.arange( 0, 4.0, 1)
t2a = np.arange(-4.0, 0, 0.02)
t2b = np.arange( 0, 4.0, 0.02)
figure = plt.figure(1)
ax = figure.add_subplot(111)
ax.tick_params(labeltop = True)
ax.set_ylim([-40,40])
plt.plot(t1a, f(t1a), 'bo', t2a, f(t2a), 'k')
plt.plot(t1b, f(t1b), 'bo', t2b, f(t2b), 'k')
plt.show()
导致: