0. 引論
在工程中,很多的問題都可以歸結為求解一組偏微分方程。描述如下:在某一個區域\(\Omega\)中,物理量\(u={u_1,u_2,\cdots,u_n}\)滿足一組控制方程,並且在邊界上滿足若干條件:
控制方程利用兩個微分算子來表示\(A(u),B(u)\)。
以上的問題,只有在求解域比較簡單,控制方程形式比較特殊的時候才能求出解析表達,一般情況下,工程問題中的求解域是比較復雜的,控制方程往往是高階非線性的,這個時候,只能借助於數值求解。偏微分方程的數值解法,常見的有有限元法,有限差分法,有限體積法等。這些數值解法的基本思想是用有限的自由度插值逼近真實解。不管哪一種數值方式,偏微分方程系統離散之后,形成的是常微分方程組或者代數方程組。
在工程中,對於時間維度往往是特別對待的,含有時間項的問題稱為非定常問題,也叫瞬態問題,這類問題在空間離散之后,形成的是關於時間的常微分方程,然后利用一些推進求解的方法,將時間維度離散,轉換成純粹的代數方程。而控制方程不含時間項的問題稱為穩態問題,對於穩態問題,將控制方程在空間離散之后,形成代數方程組。
可見,不論是那種問題,最后求解的是代數方程組。因此,如何准確高效的求解代數方程組就顯得至關重要。這一部分的內容在數值分析里面有詳細的介紹,對於工程師來說,一般不必去了解里面艱深的理論,但是,每一種求解方法的適用范圍,求解速度,收斂性等重要特征,最好還是要了解。這樣才能在使用的時候不至迷茫。
代數方程組可以簡記為如下的形式:
還可以表示成為矢量的形式:
當系數矩陣A與變量u的取值沒有關系時,問題是線性的,否在,是非線性問題。眾所周知,非線性問題的求解是困難的!!
常用的線性方程組求解方法有:
- 直接法
-
- 高斯消去法、矩陣三角分解法(直接分解法、平方根方法、追趕法)
- 迭代法
-
- 雅可比迭代、高斯-賽德爾迭代、超松弛法、塊迭代法、共軛梯度法、最速下降法
常用的非線性方程組的求解方法有:
- 迭代法
-
- 二分法、不動點迭代、牛頓法、簡化牛頓法、牛頓下山法、弦截法、拋物線法
- 多變量不動點迭代法、牛頓法
這里主要介紹牛頓法的一些特性。
2. 牛頓法
2.1 單變量牛頓法
對於單變量的牛頓法,大家已經很熟悉了,這里做一點簡要的回顧。
方程
給定初值\(x^0\),利用迭代關系式:
經過一定次數的迭代,就可以收斂到其精確值\(x^*\)。
牛頓法存在兩個問題:
- 當函數的二階導數在精確解的鄰域內小於0時,無法收斂到精確解。
- 當初值與精確解相差較大時,收斂困難。
2.2 多變量牛頓法
對於多變量牛頓法,其形式可以利用泰勒公式來推導。有\(F(u)=0\),假設其精確解為\(u^*\),則有:
將F(u)在精確解處展開,如下:
因為精確解是不知道的,所以,利用一個初值代替:
對於方程(10)所示的迭代式,影響其收斂性的一個重要指標是其Hesse矩陣。Hesse矩陣定義如下:
對於多變量牛頓法,\(G(u)\)滿足Lipschitz條件:
且\(G(u^*)\)正定,當\(u^0\)充分接近\(u^*\)時,迭代是收斂的,且是二階收斂。
牛頓法的優點:收斂速度快
缺點:計算量大,收斂條件嚴格。
3. 簡化牛頓法
牛頓法具有收斂速度快的特點,但是其缺點也很明顯:一是牛頓法計算量很大,每次都要計算Hesse矩陣和\(F(x)\),並且Hessen矩陣有時計算較為困難。二是要求迭代初值在精確解附近,不然很難收斂。針對上面的問題,有一些改進的牛頓法。這里最為常用的是簡化牛頓法(又稱平行弦法)和牛頓下山法。
3.1 平行弦法
迭代式為:
其中,\(C=\frac{1}{f'(x_0)}\) 。該方法要求迭代式的一階導數范數小於1才是局部收斂,且是線性收斂。
3.2 牛頓下山法
在迭代過程中,滿足單調遞減的要求的迭代方法稱作下山法。即要求迭代過程中,始終有:
迭代式:
其中,\(\lambda(0<\lambda \le 1)\)稱為下山因子。選擇下山因子的時候,從\(\lambda=1\)開始,逐次減半進行試算,直到下降條件(14)成立為止。