朱艷
摘要:《計算方法》課程對于培養學生數值計算思想、應用科學計算解決實際問題的能力起著重要的作用。該文結合自己的教學實踐和科研工作,以雅克比(Jacobi)迭代法、高斯-德塞爾(Gauss-Seidel)迭代法及逐次超松弛(SOR)迭代法內容為例,引入鞍點問題,提高教學的廣度和深度。
關鍵詞:計算方法;Jacobi迭代法;Gauss-Seidel迭代法;SOR迭代法;教學案例
中圖分類號:0241 文獻標識碼:A 文章編號:1009-3044(2018)04-0107-02
A Teaching Case of Computational Method
ZHU Yan
(Qujing Normal University, Qujing 655011, China)
Abstract: Computational method curriculum plays an important role in cultivating students numerical calculation thinking and the ability to use scientific computing to solve practical problems. Based on teaching experiences and scientific research, Jacobi, Gauss-Seidel and successive over relaxation(SOR) iterative method as examples, the saddle point problem is introduced in order to improve the breadth and depth of teaching.
Key words: Computational method; Jacobi iterative method; Gauss-Seidel iterative method; SOR iterative method; Teaching case
1 概述
科學與工程的許多領域如流體力學,高階微分方程求解,計算電磁學,最優化問題和油藏模擬等都涉及到大規模稀疏線性方程組的求解.計算方法課程中迭代法就是求解這類方程組的最基本的方法,迭代是數值分析中通過從一個初始估計出發尋找一系列近似解來解決問題(一般是解方程或者方程組)的過程,為實現這一過程所使用的方法統稱為迭代法。經典迭代法有雅克比迭代法,高斯-賽德爾迭代法,逐次超松弛迭代法等。文[1]結合教學實踐討論《計算方法》課中應用數學軟件MATLAB進行“曲線擬合”教學的一個案例,本文將探討在《計算方法》課程中講授雅克比(Jacobi)迭代法、高斯-德塞爾(Gauss-Seidel)迭代法及逐次超松弛(SOR)迭代法時將科研與教學相結合的一個案例。
文[2]考慮求解下面線性方程組
其中是非奇異矩陣,,是未知向量,是已知向量.對任意分裂,若矩陣是非奇異,則基于此分裂的迭代法可以表示為
,.
不失一般性,假設,,可以將分裂為
,
其中為單位矩陣,和分別為矩陣的嚴格下三角矩陣和嚴格下三角矩陣,則基于上式分裂的迭代法為
,
其中,此方法稱為Jacobi迭代法。
若,此方法稱為Gauss-Seidel迭代法。
若,是松弛參數.此方法稱為SOR迭代法(若,SOR法就為Gauss-Seidel法)。
將經典迭代法與科研成果結合在一起,介紹應用迭代法求解鞍點問題,使學生能較深刻認識到迭代法在求解大型稀疏線性方程組的意義,培養學生思考問題、解決問題的能力。
2 鞍點問題
現在考慮鞍點系統
,
其中對稱正定,滿秩,即秩()=,向量且。
, (1)
其中與是非奇異矩陣。
鞍點問題廣泛的存在于流體力學, 電磁學, 線性彈性力學, 帶有限制條件的二次優化, 最小二乘問題等應用領域中。解決鞍點問題的方法一種就是基于矩陣分裂的迭代法,在式(1)中令,(),即為著名的有Uzawa算法:
該方法簡單, 易于計算機實現, 但該方法每一步迭代需要計算矩陣的逆, 對大型線性方程組來說這是不現實的。為克服該缺點, 文[4]給出了改進算法,在式(1)中令,(),即
算法2.1:
在式(1)中令,(),可得另一迭代算法
算法2.2:
3 數值例子
本小節,給出一個數值例子。
例[3]:考慮矩陣:
和矩陣:
此數值例子中令, IT為迭代步數及,分別表示參數,上界.在實驗中,取初始值為,當相對殘差小于停止迭代,即, 其中,。相應的數值結果在下列表中。
根據表1,顯然在選取適當的參數時,算法2.1[4] 和算法2.2迭代步數要少于Uzawa算法,然而, 當不變而接近于0.038,算法 2.2 迭代步數少于算法2.1[4]。
4 結論
計算方法是在理工科各專業大學本科及研究生中開設的一門計算量大、算法多、實踐性比較強的專業課. 要系統完善地讓學生理解和掌握這門課程的理論、方法及實質精髓, 提高這門課程的教學效果,教師在授課時候盡量將教學科研結合一起,讓學生理解前人在這方面所做的大量工作及目前這門課程的發展情況, 從側面激發學生學習的興趣, 努力把所學理論應用于實際中,從而增強教學效果, 提高教育質量。
參考文獻:
[1] 唐家德.應用MATLAB進行《計算方法》教學的一個案例[J].電腦知識與技術(學術交流),2007(11):1473-1476.
[2] 張誠堅,高健,何南忠.計算方法[M].北京:高等教育出版社,1999.33-38.
[3] K. Arrow, L. Hurwicz, H. Uzawa, Studies in Nonlinear Programming[M].Stanford University Press, Stanford, 1958.
[4] X.F. Ling, X.Z. Hu. On the iterative algorithm for large sparse saddle point problems[J]. Appl. Math. Comput., 2006,178: 372-379.