偏微分方程的數值方法

數值耗散/數值擴散(numerical diffusion)

想像用一個低階格式把一個尖銳的脈衝——又高又窄的尖峰——推過網格。許多步之後,尖峰變得更矮更寬,像被抹糊了一樣。原本的偏微分方程並未要求這種抹糊;是格式自己無中生有的。這種虛假、由格式造成的平滑化就是數值耗散:數值方法表現得彷彿方程多了一個其實並不存在的擴散項。

這個假擴散從何而來?正出自截斷誤差。像迎風對流這類一階格式,其主誤差項結果長得正像一個二階導數項 d^2u/dx^2,係數是一個正比於網格尺寸的小正數——而正的二階導數項「就是」擴散項。於是格式悄悄而精確地在解一個略有不同的方程 u_t + a u_x = (數值黏性) u_xx,它會擴散。當主誤差項改為三階導數(奇數階項)時,它的表親就是數值色散:不同的傅立葉模態以略微錯誤的速度行進,於是尖銳的前緣不只是模糊,還會拖出尾隨的波紋。修正方程正是揭示一個格式究竟受哪一種困擾的工具。

這裡是真正的取捨,而非純粹的缺陷。少量的數值耗散有穩定作用,能撫平困擾不穩定或高階格式於震波附近的虛假振盪——這正是穩健的迎風方法刻意帶耗散的原因。但耗散過多會把每個尖銳特徵抹成糊狀,毀掉你在意的震波與接觸間斷。高階格式減少數值耗散,卻易在間斷附近過衝,這正是通量限制器與 TVD 格式所要管理的張力。

用一階迎風格式對流一個方波脈衝:幾百步後,尖銳的邊緣圓鈍成平滑的斜坡,高度也下降——修正方程顯示該格式加入了 (a h /2)(1 - c) 的有效黏性,其中 c 是庫朗數,只有在 c 恰為 1 時才消失。

一階迎風格式抹糊方波脈衝;這抹糊正是格式隱藏的黏性。

數值耗散未必是壞事——它正是讓迎風與 TVD 格式能捕捉震波而不振盪的穩定成分。真正的功夫在於:只在震波附近加恰好足夠的量,而在平滑區域一點都不加。

又称
artificial diffusionnumerical dissipationnumerical dispersion人工耗散數值色散