數(shù)值求解波動方程 [2]
周期邊界條件
????????上一篇忘記說另外一個常用的邊界條件了,? 就是循環(huán)邊界.? 它對應著連續(xù)函數(shù)里的周期條件:??,? 其中
是周期.? 在使用有限差分法截斷計算區(qū)間時,? 邊界外部的點重新映射到計算區(qū)間內,? 即?
?和
?(julia 索引).? 一般來說,? 循環(huán)邊界必定成對出現(xiàn) (即波可以從兩邊穿過邊界到達另一邊),? 但也可以實現(xiàn)波從一邊穿過邊界但另一邊不能穿過.? 下面是循環(huán)邊界的實現(xiàn)例子:


數(shù)值求解的兩個問題
????????在上圖可以看到數(shù)值求解的一個問題.? 上圖使用的相速度?,? 并且初值條件為
和?
,? 利用已知的一維波動方程的數(shù)學解 (見《數(shù)理方程》),? 可以得出在無限空間里的特解為?
,? 即這是單個向右傳播的波包.
????????觀察上圖,? 除了一個向右傳播的波包,? 還有一個向左傳播的比較毛糙的波包.? 這是由離散化造成的,? 由連續(xù)的初值條件離散化得到求解系統(tǒng)的初狀態(tài)時就已經損失了一部分信息了.? 通過增加網(wǎng)格精度 (即減少 ) 可以緩解這個情況,? 但這意味著?
?也要一并減少以確保不會出現(xiàn)空間數(shù)值不穩(wěn)定,? 也就是計算成本會快速上升.? 下圖是使用兩倍網(wǎng)格精度求相同條件的解:


????????使用數(shù)值求解還需要注意另外一樣東西:??時間數(shù)值不穩(wěn)定和高頻分量.? 在部分情況下,??不可以選擇參數(shù)使得數(shù)值穩(wěn)定,? 那么這時候寧愿時間數(shù)值不穩(wěn)定也不要空間數(shù)值不穩(wěn)定.
????????繼續(xù)以上面循環(huán)邊界的情況為例,? 比較波包寬度為 0.1 和 0.04 兩種情況,? 可以看到波包寬度為 0.04 的情況彌散現(xiàn)象更嚴重.??所以需要選擇合適的精度以處理情景中的高頻分量.

????????但就算選擇參數(shù)恰好是數(shù)值穩(wěn)定的,? 也不代表就能很好地處理高頻分量.? 如下圖所示,? 當選擇??時,? 波包寬度為 0.04 的情況仍然會數(shù)值不穩(wěn)定.


非均勻介質
????????在研究波的傳播時肯定少不了對非均勻介質的研究.? 在原波動方程里的相速度??為常數(shù).? 當在非均勻介質里,? 相速度與空間位置有關,? 表示為
,? 那么相應的波動方程為
.? 形式上與原波動方程相同,? 但因為相速度與位置有關,? 所以離散化后得到的系數(shù)也與位置有關,? 那么離散化后得到
.
????????關于連續(xù)波動方程的反射/透射系數(shù)可以見專欄底部.

????????需要注意應該避免在任意位置上出現(xiàn)空間數(shù)值不穩(wěn)定,? 亦即?.? 最后,? 這種模型實現(xiàn)不適用于連續(xù)變化的介質,? 當連續(xù)變化介質的相速度會被離散化為多層間斷的相速度.? 波會在間斷的相速度處出現(xiàn)反射波 (上圖所示),? 但準確的連續(xù)變化介質是沒有反射波的.? 下圖是一個連續(xù)變化介質的例子,? 可以看到反射波隨著時間越來越大,? 這是極其錯誤的.


非均勻介質的一小點數(shù)學
????????因為《數(shù)理方程》里沒有提到非均勻介質,? 所以這里稍微小提一下.
????????假設無限空間里有兩種介質在 處為界,? 相速度由?
?給出.? 其中?
?為常數(shù).? 假設有波在無窮遠處從左往右傳播,? 那么有?
, 如下:

????????原波動方程的特解為?,? 其中
?為頻率,?
?為波數(shù) (wave number),? 并且有關系
.? 當
時,? 解表示為從左往右傳播的波,? 反之為從右往左,? 那么?
表示為:
其中??為待定系數(shù).
????????在邊界上,? 應有??和
,? 即
????????可以解得??和
,? 其中
?為相位部分,? 不太重要.? 可以由上面的示例進行驗證:
????????下面是整個程序的代碼,? 比之前的也沒改很多東西
