✓
ℂ
实验 01

复变函数 · 定义域着色

复函数 \(f:\mathbb C\to\mathbb C\) 需要四维才能画出图像。定义域着色在点 \(z\) 处涂一种颜色:色相表示辐角 \(\arg f(z)\),明暗条纹表示 \(\log|f(z)|\) 的等高线。所有颜色汇聚成“风车”的地方就是零点或极点 —— 绕一圈色相转过几次,就是它的阶数(辐角原理)。

拖动平移 · 滚轮缩放
ℳ
实验 02

分形 · Mandelbrot 与 Julia

迭代 \(z_{n+1}=z_n^2+c\)。固定 \(z_0=0\)、让 \(c\) 变化,有界的 \(c\) 组成 Mandelbrot 集;固定 \(c\)、让 \(z_0\) 变化,得到 Julia 集。在左图上移动:右侧 Julia 集随 \(c\) 实时变形,细线是 \(0\) 的迭代轨道。轻点锁定 / 解锁 \(c\),滚轮放大,拖动平移。

Mandelbrot 集
Julia 集
试试 \(c\approx -0.7269+0.1889i\)、\(c\approx-0.8+0.156i\) 附近
ℱ
实验 03

傅里叶级数 · 本轮

把闭曲线看作复值周期函数 \(f(t)=\sum_{n} c_n e^{2\pi i n t}\),\(c_n=\int_0^1 f(t)e^{-2\pi i n t}dt\)。每一项都是一个匀速旋转的圆 —— 托勒密的“本轮”以傅里叶分析的形式复活。在画布上按住拖动画任意图形,看圆如何复现它。

在此绘制闭合曲线
ẋ
实验 04

常微分方程 · 相图

二维自治系统 \(\dot x=f(x,y),\ \dot y=g(x,y)\) 的每条解都是相平面上的一条流线。数千个粒子按四阶龙格–库塔法流动,亮度表示速率。观察汇、源、鞍点、中心,以及 Van der Pol 方程中吸引一切的极限环。轻点画布投放粒子;参数 \(a\) 可在表达式中使用。

轻点投放粒子
∇
实验 05

多元微积分 · 曲面与梯度

曲面 \(z=f(x,y)\) 在每一点有切平面 \(z=f+f_x(x-x_0)+f_y(y-y_0)\),梯度 \(\nabla f\) 指向上升最快的方向。拖动旋转、滚轮缩放;悬停显示切平面、梯度与高斯曲率;双击曲面放下小球,看它沿 \(-\nabla f\) 滚向局部极小 —— 机器学习中“梯度下降”的几何图像。

拖动旋转 · 双击放置小球
Σ
实验 06

泰勒级数 · 多项式逼近

\(f(x)=\sum_{k\ge0}\frac{f^{(k)}(a)}{k!}(x-a)^k\)。系数由截断幂级数自动微分精确算出。拖动横轴上的蓝色圆点改变展开点 \(a\)。试试 \(\frac{1}{1+x^2}\):它在实轴上处处光滑,级数却只在 \(|x|<1\) 收敛 —— 因为复平面上 \(\pm i\) 处有极点。实数的谜题,答案在复数里。

拖动蓝点改变展开中心
λ
实验 07

线性代数 · 线性变换

矩阵的两列就是基向量 \(\hat\imath,\hat\jmath\) 的去向。拖动绿色和红色箭头的端点:网格随之变形,蓝色区域的有向面积就是行列式;虚线是特征向量方向;单位圆被映成椭圆,其半轴长就是奇异值。

拖动箭头端点
χ
实验 08

拓扑 · 参数曲面

曲面由参数方程 \(\mathbf r(u,v)\) 给出。曲面的正面涂蓝、反面涂白:在环面上两种颜色永不相遇;而在莫比乌斯带和克莱因瓶上,沿着走一圈就会从蓝色走到白色 —— 它们不可定向。最后一个预设展示悬链面到螺旋面的等距变形:曲面弯曲而不拉伸,每一刻都是极小曲面(平均曲率 \(H=0\))。

拖动旋转 · 滚轮缩放
ζ
实验 09

黎曼 ζ 函数 · 临界线

\(\zeta(s)=\sum_{n\ge1}n^{-s}\) 经解析延拓定义在整个复平面(\(s\ne1\))。黎曼猜想断言:所有非平凡零点都落在临界线 \(\operatorname{Re}s=\tfrac12\) 上。上图画出 \(t\mapsto\zeta(\sigma+it)\) 在复平面上的轨迹:当 \(\sigma=\tfrac12\) 时,曲线一次又一次精确地穿过原点;把 \(\sigma\) 拖离 \(\tfrac12\),它就再也碰不到原点。下图是 \(|\zeta(\sigma+it)|\)。这里用 Borwein 交错级数加速算法计算 \(\eta(s)\),再由 \(\zeta=\eta/(1-2^{1-s})\) 得到 \(\zeta\)。

在下方图上移动查看 ζ(σ+it)
□
实验 10

偏微分方程 · 波动方程

二维波动方程 \(u_{tt}=c^2\Delta u-\gamma u_t\) 的有限差分数值解。轻点或拖动水面激起波纹。在双缝预设中,平面波穿过两条狭缝后相互叠加,形成明暗相间的干涉条纹;在透镜预设中,凸透镜区域的波速较慢,波前因此弯折并会聚 —— 折射的本质。

轻点或拖动激起波纹
θ
实验 11

混沌 · 双摆

由拉格朗日方程导出的双摆运动方程对初值极其敏感。这里同时释放许多个双摆,它们的初始角度只相差 \(\Delta\theta\)。起初它们像一根摆一样同步摆动;几秒后,微小的差异被指数放大,整束摆像烟花一样散开 —— 蝴蝶效应。最大李雅普诺夫指数 \(\lambda>0\) 是混沌的标志:\(|\delta(t)|\approx|\delta_0|e^{\lambda t}\)。

轻点画布重新释放
𝒩
实验 12

概率 · 高尔顿板与中心极限定理

每颗小球经过 \(n\) 排钉子,每次以概率 \(p\) 向右、\(1-p\) 向左。落入第 \(k\) 格的概率是二项分布 \(\binom nk p^k(1-p)^{n-k}\)。中心极限定理:当 \(n\) 增大时它趋于正态分布 \(\mathcal N\big(np,\,np(1-p)\big)\) —— 蓝色曲线。无数独立的小随机性,叠加出一条确定的钟形曲线。

小球数:0
lim
实验 13 · 高数

两个重要极限

极限关心的是无限接近时的趋势。让 \(h\) 逐渐缩小,同时观察 \(x=-h\) 和 \(x=+h\) 两侧的函数值。图中纵轴是 \(f(x)-L\),虚线 \(0\) 代表参考极限;开启“局部放大”,继续观察越来越小的差异。

左侧:x = −h右侧:x = +h虚线:f(x) − L = 0

从左右两侧,靠近同一个值

表格保留 10 位小数,极小差异可能被四舍五入;数值实验帮助观察趋势,不能代替证明。

距离 h左侧 f(−h)右侧 f(+h)
为什么第一重要极限等于 1?

用单位圆的面积比较,在 \(0<|x|<\pi/2\)(弧度)时有

\[\cos x\le\frac{\sin x}{x}\le1.\]

当 \(x\to0\),左右两端都趋于 1。由夹逼定理,\(\sin x/x\to1\)。而 \(\sin(-x)/(-x)=\sin x/x\),所以左右极限一致。

实验 14 · 高数

导数与切线 · 从割线到瞬时变化率

拖动曲线上的点,或调节 \(x_0\) 与间隔 \(h\)。蓝点是 \(P\),青点是 \(Q\);当两点逐渐靠近,割线的斜率趋近切线斜率。可以从左右两侧观察同一个导数。

拖动蓝点改变 x₀ · 滑块调整两点间隔
观察与思考

\[f\prime(x_0)=\lim_{h\to0}\frac{f(x_0+h)-f(x_0)}h.\]当 h = 0 时商式本身没有定义,此时画布直接显示由解析导数得到的切线。比较左右趋近,能更清楚地区分“点的函数值”和“局部变化率”。

实验 15 · 高数

黎曼和 · 用矩形逼近有向面积

用有限个矩形估计曲线下的有向面积。切换左端点、中点和右端点取样,增加分割数 \(n\),比较近似值与定积分。横轴下方的矩形贡献负面积。

增加分割数 · 比较不同取样方式
观察与思考

\[\int_a^b f(x)\,dx=\lim_{n\to\infty}\sum_{i=1}^n f(\xi_i)\,\Delta x.\]这三个连续函数都满足黎曼可积性。对奇函数在对称区间积分时,正负贡献相消;定积分并不总等于图形的几何面积。

实验 16 · 高数

ε–δ · 把“足够接近”变成精确定义

橙色横带是允许的函数值误差,蓝色竖带是你选择的自变量范围。调节 \(\delta\),让竖带内、去掉中心点后的整段曲线都落入横带。判定采用解析误差界,不依赖有限个采样点。

横带限制函数值 · 竖带限制自变量
观察与思考

\[\forall\varepsilon>0,\ \exists\delta>0:\quad0<|x-a|<\delta\Rightarrow |f(x)-L|<\varepsilon.\]线性函数的误差界是 2δ;平方函数在 a=1 的误差界是 2δ+δ²;正弦函数在 a=0 的误差上界是 sin(min(δ,π/2))。这三个例子的边界上确界不在开邻域内取到。

实验 17 · 数值与优化

牛顿迭代 · 让切线带你找到零点

从初始点 \(x_0\) 出发,在曲线上作切线,取它与横轴的交点作为下一次近似。逐步推进,观察收敛、零导数以及两点循环。初始点不同,迭代的命运也可能不同。

逐步作切线 · 观察与横轴的交点

迭代记录

nxₙ|f(xₙ)|
观察与思考

\[x_{n+1}=x_n-\frac{f(x_n)}{f\prime(x_n)}.\]牛顿法不保证从任意起点收敛。导数过小时不能继续除法;f(x)=x³−2x+2 从 0 出发会在 0 与 1 之间循环。

实验 18 · 概率

蒙特卡洛 · 从随机点里估算 π

在正方形内均匀随机撒点,用落在单位圆内的比例估算 \(\pi\)。青点在圆内,橙点在圆外。样本增多通常让估计更稳定,但误差不会每一次都单调减小。

青色:圆内 · 橙色:圆外
观察与思考

\[\widehat\pi=4\,\frac{N_{\mathrm{in}}}{N}.\]单位圆面积为 π,边长为 2 的正方形面积为 4。独立均匀抽样下,由大数定律,样本比例趋近面积比;这是概率估计,不是 π 的精确计算。

实验 19 · 数值与优化

最小二乘 · 寻找误差最小的直线

拖动散点,拟合直线会随之改变;点击空白可添加点。比较普通数据、离群点与竖直点列,观察为什么我们最小化的是竖直残差的平方和,以及什么时候斜率无法确定。

拖动点改变数据 · 点击空白添加点
观察与思考

\[\min_{a,b}\sum_i\big(y_i-(ax_i+b)\big)^2,\qquad a=\frac{\sum_i(x_i-\bar x)(y_i-\bar y)}{\sum_i(x_i-\bar x)^2},\quad b=\bar y-a\bar x.\]这里拟合的是 y 对 x 的普通最小二乘,残差按竖直方向测量,不是点到直线的垂直距离。

实验 20 · 概率

贝叶斯更新 · 证据如何改变判断

设想一个识别稀有目标的检测器。调节目标的先验比例、检出率和非目标排除率,比较“被标记为目标”和“确实是目标”的区别。基率很低时,误报可能占据被标记样本的大多数。

蓝色:真目标 · 橙色:非目标误报 · 人数为期望值
观察与思考

\[P(A\mid B)=\frac{P(B\mid A)P(A)}{P(B\mid A)P(A)+P(B\mid A^c)P(A^c)}.\]A 表示确实是目标,B 表示被检测器标记。检出率是 P(B|A),非目标排除率是 1−P(B|Aᶜ)。本实验用假设参数演示条件概率。

实验 21 · 图论

最短路径 · 看见 Dijkstra 的每一次选择

选择起终点,逐步查看已确定的节点和暂定距离。点击边可选择它,再调整权重。打开编辑模式后,点击空白添加节点,依次点击两个节点连边;图中的边是无向边,权重与画面长度相互独立。

点击边调整权重 · 编辑模式可添加节点和连边

当前各点的距离

节点暂定距离状态
观察与思考

每一步选择尚未确定、暂定距离最小的节点,再尝试更新它的邻居。由于所有权重非负,选中节点的最短距离此后不会再改善;这正是 Dijkstra 算法成立的关键。橙色为本步节点,青色为已确定节点,蓝色线段表示最终最短路径。

实验 22 · 实变函数

康托函数 · 几乎处处不动,却从 0 走到 1

每轮删去保留区间的中间三分之一,把函数在缺口上压平。增加构造层数,观察阶梯如何形成;拖动橙色观察点,比较平台与上升段。下方横条展示保留集合,读数显示当前有限近似 \(F_n\),不是极限函数的精确求值。

拖动观察点 · 调节层数看阶梯形成
观察与思考

\[\lambda(C_n)=\left(\frac23\right)^n\longrightarrow0,\qquad F(1)-F(0)=1.\]保留区间共 2ⁿ 个,每个长 3⁻ⁿ;有限近似在它们内部的斜率为 (3/2)ⁿ,在删去的开区间上为 0。极限康托集的勒贝格测度为 0,极限函数 F 连续、单调不减,且在康托集的补集上局部恒定,因此 F′=0 几乎处处。\[\int_0^1 F\prime(x)\,dx=0\ne F(1)-F(0).\]这里的导数积分是勒贝格积分,零测异常集上的赋值不影响积分。由导数积分恢复函数还需要额外条件,例如绝对连续性;康托函数不满足。有限折线的斜率不能直接当成极限函数的导数。