JOVANA
Explore Library Glossary Getting Started Three Levels Fields How it works Mission
Join the mission
All guides

擬線性方程與特徵曲線

當一階偏微分方程的係數被允許依賴於未知函數本身時,特徵線就不再是固定的道路,而會隨著它所承載的解一起彎曲。我們將看到這個微小的改變如何開啟真正的非線性行為。

規則上的一個小小放寬

在上一份指南中,你在最友善的場域認識了特徵線法:一個像 a(x,y) u_x + b(x,y) u_y = c(x,y) 這樣的一階線性偏微分方程,其中係數 a 與 b 只是位置的函數。由於它們從不去看未知函數 u,你可以先把整張特徵曲線的網絡畫出來,再把資料沿著它們倒進去。道路在任何車輛抵達之前就已鋪好。

擬線性方程只做了一個改變,而且這改變小得令人放鬆警惕。一階導數 u_x 與 u_y 仍然線性地出現——沒有 u_x 的平方,沒有 u_x u_y 的乘積——但它們的係數現在被允許依賴於 u 本身。一般的雙變數形式是 a(x,y,u) u_x + b(x,y,u) u_y = c(x,y,u)。把它和線性情形並排比較,唯一的差別就是 a 與 b 裡多坐了那個 u。

把同一座階梯的三個梯級並排看會很有幫助。線性方程的係數 a(x,y) 與 b(x,y) 完全無視 u。半線性方程只讓右邊看得到 u——a(x,y) u_x + b(x,y) u_y = c(x,y,u)——所以特徵線仍然事先固定。擬線性方程再進一步,讓 a 與 b 本身也依賴於 u。當你從線性讀到半線性再讀到擬線性,u 一步步滲入方程更深處,特徵線也逐漸失去它對解的獨立性。

多出來的那個 u 改變了下游的一切。方程現在能對自己的解產生回饋:資訊傳播得多快,取決於正在被承載的數值。這是通往真正非線性行為的門戶——逐漸變陡的波、相交的特徵線,最終是震波——這也正是為什麼這份指南會夾在溫和的線性故事與即將到來的戲劇性故事之間。

特徵常微分方程,如今相互耦合

機制和之前一樣,但有一個轉折。我們用一個輔助變數 s 來參數化一條特徵曲線,並問:當我們沿著它前進一步時,x、y 與解值 u 是如何一起移動的?把偏微分方程逐項對應,便得到特徵常微分方程系統:dx/ds = a、dy/ds = b、du/ds = c。前兩條方程在平面上描出曲線;第三條把它抬升到正確的高度。

dx/ds = a(x,y,u)
dy/ds = b(x,y,u)     <-- a and b now contain u
du/ds = c(x,y,u)
和線性情形相同的三條常微分方程——但 a 與 b 讀取了 u,使它們相互耦合。

關鍵的差別在這裡。在線性情形中,dx/ds 與 dy/ds 對 u 一無所知,所以你可以單獨積分前兩條方程、得到曲線,之後才把 u 沿著它承載過去。如今 a 與 b 含有 u,於是三條方程全都糾纏在一起——不知道數值就找不到曲線,不知道曲線也找不到數值。它們必須被當成一個耦合系統同時求解。

為何是一張曲面,而非只是曲線

看清正在發生什麼,最乾淨的方式是停止思考公式,改為思考一個形狀。一個解 u = u(x,y) 和一張漂浮在 (x,y) 平面之上的曲面是同一回事:在每個位置,曲面的高度就是解值。建構解,意味著把這張曲面編織出來,而特徵線就是你用來編織它的絲線。

這個幾何是精確的,值得牢牢記住。把 a u_x + b u_y = c 改寫為 a u_x + b u_y - c = 0。曲面 u = u(x,y) 的法向量是 (u_x, u_y, -1),而這條方程說向量 (a, b, c) 垂直於該法向量——也就是說,(a, b, c) 在每一點都相切於曲面。但由常微分方程 dx/ds = a、dy/ds = b、du/ds = c 可知,(a, b, c) 恰恰是某條特徵線的切線方向。因此每條特徵曲線都完全落在解曲面之內。它們被縫進了曲面裡。

這幅圖讓整個方法變得誠實。要建構曲面,你取一條初始資料曲線——一條已在空間中畫好的絲線——並穿過它的每一點放出一條特徵線。這群特徵線掃出整張曲面,就像梳齒掃出一片薄布。單獨一條絲線永遠填不滿一張曲面,這正是為什麼沿單一條特徵線指定資料會失敗:它只給你一條線,卻要你交出一片布。

一個可以手算的工作範例

取最簡單、真正的一階擬線性方程:u_t + u u_x = 0,也就是柏格斯方程的無黏形式。把它讀成一個傳輸方程,其承載速度就是 u 本身——剖面較高的部分比較矮的部分移動得更快。讓我們跑一遍特徵線,看著後果浮現。

  1. 寫下特徵常微分方程。以 (x, t) 為平面、方程為 u_t + u u_x = 0,系統是 dt/ds = 1、dx/ds = u、du/ds = 0。(我們把 t 的係數取為 1。)
  2. 讀 du/ds = 0:數值 u 沿每條特徵線保持為常數。因此 u 在 t = 0 起始時是什麼值,它沿著自己的曲線就永遠保持那個值。
  3. 因為 u 在曲線上是常數,dx/ds = u 便是一個固定數字,於是特徵線是一條直線:x = x0 + u(x0,0) t。它的斜率由它起點處的初始值決定。
  4. 現在想像兩個起點:一個資料值較大,另一個就在前方、資料值較小。大值的線較快,小值的線較慢——於是快的線追上慢的線。特徵線相交了。

這就是非線性一階偏微分方程的全部劇情之縮影。在第一次相交時刻之前,光滑解完美無瑕。到了相交處,兩條特徵線把兩個不同的 u 值送到同一點 (x, t)——而單值解無法同時遵守兩者。上一節的那張曲面將不得不對自己摺疊,在同一個位置取兩個高度,而這是任何函數圖形都做不到的。

這個梯級真正教你的事

退一步,留意世界觀的轉變。對線性方程而言,特徵曲線是一張由係數畫定的固定地圖,解只不過是在固定道路上運送的貨物。對擬線性方程而言,貨物與道路是同一件事:你承載的數值決定道路通往何處。這個回饋正是一切非線性意外的源頭。

這也重新框定了早先梯級中的一個習慣。在常微分方程裡,通解攜帶任意常數,而資料固定了那些常數。對偏微分方程而言,通解攜帶任意函數,而資料——這裡是沿曲線指定的數值——才是釘住該選哪個函數的東西。下一份指南會把這點講精確:並非每條資料曲線都行得通,而把好曲線與壞曲線區分開來的規則,就是非特徵條件。