经典数学函数图鉴:让每一条曲线都经得起坐标查验

16 张可交互的经典函数图像:线性、二次、三次、反比例、根式、绝对值、指数、对数、三角、反三角、双曲、sigmoid、高斯、取整。用 function-plot 的区间算术精确绘制,滚轮缩放、悬停读坐标。附精确性质速查表和工具选型指南。

你随手搜到的函数图像,很多是”示意图”——渐近线附近糊过去,关键点的位置全凭画师手感。但函数图像本质上不是”画”出来的,而是出来的:给定 x,y 有唯一确定的值,图上每一个点都应当经得起坐标查验。这篇给你 16 张经得起查验的经典函数图,以及”用什么工具、为什么这些工具能做到精确”的答案。

先看图:16 张可交互的函数图鉴

下面每张图都可以滚轮缩放、拖拽平移;鼠标贴近曲线时会显示该点的精确坐标 (x, y)。图中的散点是关键坐标(顶点、极值点、恒过点),虚线是渐近线或 π 的整数倍刻度。

嫌 iframe 里滚动不方便,可以在新标签页打开完整图鉴

覆盖的 16 个函数族:一次、二次、三次、反比例、根式(x\sqrt{x}x3\sqrt[3]{x})、绝对值、指数、对数、互为反函数(exe^xlnx\ln x)、正弦余弦、正切、反三角、双曲函数、sigmoid 与 tanh、高斯函数、取整函数。

“画得准”到底难在哪

把函数画准,朴素做法是”采样连线”:取一串 x,算出 y,把点连起来。这个做法在三种地方必然翻车——理解了这三种翻车,你就知道该怎么挑工具了。

1. 渐近线会被错误连线。y=tanxy = \tan x 时,采样点跨过 x=π/2x = \pi/2 的瞬间,y 从 +∞ 一侧跳到 −∞ 一侧。傻连线的工具会在渐近线处画出一条不存在的竖线。很多教材插图和 Excel 图表就是这么错的。

2. 陡峭处采样不够就失真。 y=1/xy = 1/x 在 0 附近变化极快,均匀采样 100 个点,靠近 0 的那一段只分到两三个点,曲线被拉成折线。

3. 间断点被抹平。 y=xy = \lfloor x \rfloor 在每个整数处跳跃,采样连线会把台阶画成斜坡。

成熟工具对付这三个问题的思路只有两种:要么自适应加密采样(在变化剧烈处自动多算点,matplotlib + 足够密的 numpy 网格、Desmos 都是这个路子),要么区间算术(interval arithmetic:不算”点”,而是算”x 在这个小区间内时 y 的取值范围”,渐近线和间断点在数学上被真实处理,不存在’连错线’的可能)。上面图鉴用的 function-plot 就是区间算术派——这也是为什么正切图里渐近线两侧干干净净。

工具怎么选

“能精准画函数的成熟工具”不止一个,它们的适用场景不同:

工具适合场景特点
Desmos快速探索、教学演示浏览器打开就用,输入公式即出图,可加滑块动态调参
GeoGebra几何 + 函数综合、课堂除函数外还能做尺规作图、动态几何
matplotlib (Python)论文插图、批量出图、完全可控代码可复现,配合 numpy 想采样多密就多密
function-plot网页里嵌可交互函数图基于 d3,区间算术处理渐近线,本文图鉴所用
gnuplot / Wolfram Alpha命令行老兵 / 顺带要解析性质gnuplot 脚本化极强;Wolfram 还能顺带给你极值、积分

一句话决策:自己随手看用 Desmos;要放进网页用 function-plot;要进论文或报告用 matplotlib。

如果你想用 matplotlib 复现同款精确图,核心就三件事:采样够密、间断点处主动断开、关键点单独标注。以 tanx\tan x 为例:

import numpy as np
import matplotlib.pyplot as plt

x = np.linspace(-2*np.pi, 2*np.pi, 4000)   # 采样够密
y = np.tan(x)
y[np.abs(np.diff(y, prepend=y[0])) > 10] = np.nan  # 跳变处断开,避免假竖线

fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(x, y, lw=1.5)
ax.set_ylim(-4, 4)
ax.grid(True, alpha=0.3)
for k in (-3, -1, 1, 3):                   # 渐近线单独画虚线
    ax.axvline(k*np.pi/2, ls='--', lw=0.8, color='gray')
ax.plot([0, np.pi/4], [0, 1], 'o', color='k', ms=4)  # 关键点 (0,0)、(π/4,1)
plt.show()

精确性质速查表

图看完,把每族函数”必须记住的精确事实”收在一张表里——这些就是图鉴里散点标出的坐标。

函数定义域值域必记关键点 / 渐近线
y=kx+by = kx + bR\mathbb{R}R\mathbb{R}(0,b)(0, b)(b/k,0)(-b/k, 0)
y=a(xh)2+ky = a(x-h)^2 + kR\mathbb{R}a>0a>0[k,+)[k, +\infty)顶点 (h,k)(h, k),对称轴 x=hx = h
y=x33xy = x^3 - 3xR\mathbb{R}R\mathbb{R}极大 (1,2)(-1, 2),极小 (1,2)(1, -2)
y=1/xy = 1/xx0x \neq 0y0y \neq 0渐近线:两条坐标轴
y=xy = \sqrt{x}[0,+)[0, +\infty)[0,+)[0, +\infty)(0,0)(0,0)(1,1)(1,1);x3\sqrt[3]{x} 定义域是全体实数
y=xy = \lvert x \rvertR\mathbb{R}[0,+)[0, +\infty)x=0x=0 处尖角,不可导
y=axy = a^xR\mathbb{R}(0,+)(0, +\infty)恒过 (0,1)(0, 1);渐近线 y=0y = 0
y=logaxy = \log_a x(0,+)(0, +\infty)R\mathbb{R}恒过 (1,0)(1, 0);渐近线 x=0x = 0
y=sinx, cosxy = \sin x,\ \cos xR\mathbb{R}[1,1][-1, 1]周期 2π2\pi;cosx=sin(x+π/2)\cos x = \sin(x + \pi/2)
y=tanxy = \tan xxπ/2+kπx \neq \pi/2 + k\piR\mathbb{R}周期 π\pi;渐近线 x=π/2+kπx = \pi/2 + k\pi
y=arctanxy = \arctan xR\mathbb{R}(π/2,π/2)(-\pi/2, \pi/2)渐近线 y=±π/2y = \pm\pi/2
y=coshxy = \cosh xR\mathbb{R}[1,+)[1, +\infty)最低点 (0,1)(0, 1),悬链线形状
σ(x)=11+ex\sigma(x) = \frac{1}{1+e^{-x}}R\mathbb{R}(0,1)(0, 1)中心 (0,0.5)(0, 0.5);tanhx=2σ(2x)1\tanh x = 2\sigma(2x) - 1
φ(x)=ex2/22π\varphi(x) = \frac{e^{-x^2/2}}{\sqrt{2\pi}}R\mathbb{R}(0,12π](0, \frac{1}{\sqrt{2\pi}}]峰值 (0,0.3989)(0, 0.3989);拐点 x=±1x = \pm 1
y=xy = \lfloor x \rfloorR\mathbb{R}Z\mathbb{Z}台阶 [k,k+1)[k, k+1),整数点跳跃

收尾

带走一个可复用的判断标准:看到一张函数图,先看两处——渐近线附近有没有假竖线,间断点有没有被抹成斜坡。这两处干净,图才可信;这两处糊掉的图,坐标多半也不可信。下次你自己画图,记得挑一个区间算术或自适应采样的工具,而不是”连点成线”碰运气。