微積分 · 斜率場

斜率場

斜率場在平面每個點畫一小段線,斜率是微分方程在那裡指定的 y′ = f(x, y);每條解曲線都沿著這些小線段前進。拖曳起點,觀察整條解曲線移動,再讓歐拉法沿斜率逐步前進。

01

這個視覺化中的斜率場

一階微分方程 y′=f(x,y)y' = f(x, y) 在平面每個點指定一個斜率。它的斜率場(也稱方向場)在格點上用小線段畫出斜率。解是可微分函數 y(x)y(x),圖形處處與這些線段相切;初值問題則要求通過指定點 P=(x0,y0)P = (x_0, y_0) 的解。當 f 連續,且對 y 滿足局部 Lipschitz 條件時,在某個 x 區間上,每點恰有一條解曲線通過——因此只憑斜率就能決定各條解曲線。

拖曳 P,通過它的整條曲線會連續改變(在解存在的任意閉區間上)。八個預設方程式使用閉式解;自行輸入的方程式則以自適應 Runge–Kutta 法數值計算(Dormand–Prince 5(4),相對容許誤差 10−810^{-8})。若 y′ 只依賴 x,各解只差一個常數:+C+C 就是垂直平移。若只依賴 y,f 的零點就是水平的平衡解,而相鄰兩條平衡解之間的各解曲線互為水平平移。

歐拉法,步長 h
yk+1=yk+h f(xk,yk),xk+1=xk+hy_{k+1} = y_k + h\, f(x_k, y_k), \qquad x_{k+1} = x_k + h

歐拉法沿目前點讀到的斜率,走長度 h 的一步,再重新讀取斜率。本頁從 P 走到終點 X(最後一步縮短,恰好落在 X)。對光滑解,X 處的誤差大致與 h 成正比:紅鍵逐級將 h 減半,每次誤差也約減半,因此相鄰誤差的比值趨近 2。

02

值得觀察的地方

  • 小線段等長,沒有箭頭:只有斜率有意義。斜率場就是捨去每個箭頭長度的向量場 (1,f)(1, f)。
  • 解不一定對每個 x 都存在。對 y′=y2y' = y^2,通過 (0, 1) 的解是 1/(1−x)1/(1-x),x 接近 1 時無界增長;本頁在虛線處停止,不會把它接到另一分支。對 y′=−x/yy' = -x/y,通過 (0, 2) 的解是半圓,在斜率變成垂直的位置結束。歐拉法越過這類位置仍可能給出數字;此時解的值會標為不存在。
  • 沒有 Lipschitz 條件時,解未必唯一:y=0y = 0 與 y=x3y = x^3 都是通過 (0, 0)、滿足 y′=3y2/3y' = 3y^{2/3} 的解;先在 y = 0 停留一陣子再離開的曲線也是解。歐拉法從 (0, 0) 出發,無論步長如何都停在 0。
  • 等斜線是斜率固定的曲線,f(x,y)=cf(x, y) = c;沿著每條等斜線,小線段互相平行,手繪斜率場就是利用這點。取 h = π/n,對 y′=cos⁡xy' = \cos x 從 (0, 0) 用歐拉法走到 π,得到的值恰好是 h。
03

操作方式

  • 按空白處新增另一條解曲線(最多六條);最後操作的點成為 P,也是歐拉法的起點。開啟「平移」後,拖曳會改為移動畫面。
  • 拖曳 x 軸上的 ▲,或轉動它的微調輪,來移動歐拉法終點 X。紅鍵從目前 h 開始;到終點後再按,從 h = 1 重新開始。逼近紀錄視窗會記下每級的值、誤差與比值,即使視窗關閉也會持續收集。
04

相關概念

對 y′=yy' = y 從 (0, 1) 用歐拉法走到 1,會得到 (1+h)1/h(1 + h)^{1/h},也就是複利成長因子。兩個方程式組成的系統則畫成相圖。

延伸閱讀: 維基百科: Slope field (英文); OpenStax, Calculus Volume 2, 4.2 Direction Fields and Numerical Methods (英文).