![線性方程組的迭代求解java_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/9458d3db-39bd-469b-aaaa-5a2f270ffe84/9458d3db-39bd-469b-aaaa-5a2f270ffe841.gif)
![線性方程組的迭代求解java_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/9458d3db-39bd-469b-aaaa-5a2f270ffe84/9458d3db-39bd-469b-aaaa-5a2f270ffe842.gif)
![線性方程組的迭代求解java_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/9458d3db-39bd-469b-aaaa-5a2f270ffe84/9458d3db-39bd-469b-aaaa-5a2f270ffe843.gif)
![線性方程組的迭代求解java_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/9458d3db-39bd-469b-aaaa-5a2f270ffe84/9458d3db-39bd-469b-aaaa-5a2f270ffe844.gif)
![線性方程組的迭代求解java_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/8/9458d3db-39bd-469b-aaaa-5a2f270ffe84/9458d3db-39bd-469b-aaaa-5a2f270ffe845.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、 線性方程組的迭代求解線性方程組的迭代求解摘要迭代法是一種逐次逼近方法,在使用迭代法解方程組時,其系數(shù)矩陣在計算過程中始終不變。它利用計算機運算速度快、適合做重復性操作的特點,讓計算機對一組指令(或一定步驟)進行重復執(zhí)行。迭代法具有循環(huán)的計算方法,方法簡單,適宜解大型稀疏矩陣方程組本文總結了解線性方程組的三個迭代法,Jacobi迭代法,Gauss-Seidel迭代法,SOR迭代法,并且介紹了軟件JAVA在這方面的應用。關鍵詞:Jacobi迭代法;Gauss-Seidel迭代法;SOR迭代法;計算SOLUTION OF LINEAR EQUATIONS OF ITERATION WITH THE
2、 EXPERIMENTALABSTRACTIteration is a kind of method to solve questions by step-by-step approximation. When we are getting the solution of linear equations by using iteration, the coefficient matrix is always staying the same in computation process. Computer could operate fastly so that it is suitable
3、 for operating again and again. Iteration is easy to operate to solve the large matrix equations by using a calculate method called circulation. This summary understanding of linear equations three kind of iteration, Jacobi iteration, Gauss-Seidel iteration, successive over relaxation method ,and in
4、troduce modern software JAVA in this respect. Key words: Jacobi iteration; Gauss-Seidel iteration; Successive Over Relaxation method ; calculating目 錄 1 迭代法概述.1 1.1迭代法定義11.2迭代法基本原理12 迭代法解線性方程組.12.1雅克比(Jacobi)迭代法.12.2 高斯賽德爾(Gauss-Seidel)迭代法.42.3超松弛(SOR)迭代法.73 總結.9參考文獻.10附錄.11 1 迭代法概述迭代法也稱輾轉法,是一種逐次逼近方法
5、,在使用迭代法解方程組時,其系數(shù)矩陣在計算過程中始終不變。它利用計算機運算速度快、適合做重復性操作的特點,讓計算機對一組指令(或一定步驟)進行重復執(zhí)行,在每次執(zhí)行這組指令(或步驟)時,都從變量的原值推出它的一個新值。迭代法具有循環(huán)的計算方法,方法簡單,適宜解大型稀疏矩陣方程組,在用計算機計算時只需存儲A的非零元素(或可按一定公式形成系數(shù),這樣A就不需要存儲) 1。1.1 迭代法定義(1)對于給定的方程組,用式子 (1-1)逐步代入求近似解的方法稱為迭代法(或稱為一階定常迭代法,這里與B和k無關)(2)如果存在(記作),稱此迭代法收斂,顯然就是方程組的解,否則稱此迭代法發(fā)散。1.2 迭代法基本定
6、理設有方程組,對于任意初始向量及任意f,解此方程組的迭代法(即)收斂的充要條件是.2 迭代法解線性方程組2.1 雅克比(Jacobi)迭代法 2.1.1 Jacobi迭代法的定義設有方程組 (),記作 (2-1) A為非奇異陣且。將A分裂為,其中,。將式(2-1)第i()個方程用去除再移項,得到等價方程組 (), (2-2)簡單記作 ,其中, 對方程組(2-2)應用迭代法,得到(2-1)的迭代公式 (2-3)其中為第k次迭代向量,設已經(jīng)算出,由式(2-3)可計算下一次迭代向量。顯然迭代公式(2-3)的矩陣形式為 (2-4)其中稱為Jacobi方法迭代矩陣。2.1.2 JAVA程序實現(xiàn)Jacob
7、i迭代法編寫java程序用Jacobi迭代法解如下方程組:例1:實驗結果如下圖所示(JAVA程序設計詳見附錄源程序1):2.2 Gauss-Seidel迭代法2.2.1 高斯賽德爾(Gauss-Seidel)迭代法的定義雅克比迭代法的優(yōu)點是公式簡單,迭代矩陣容易計算。在每一步迭代時,用 的全部分量求出的全部分量,因此稱為同步迭代法,計算時需保留兩個近似解和。 但在雅克比迭代過程中,對已經(jīng)計算出的信息未能充分利用,即在計算第i個分量時,已經(jīng)計算出的最新分量沒有被利用。從直觀上看,在收斂的前提下,這些新的分量應比舊的分量更好,更精確一些。因此,如果每計算出一個新的分量便立即用它取代對應的舊分量進行
8、迭代,可能收斂的速度更快,并且只需要儲存一個近似解向量即可。據(jù)此思想可構造高斯賽德爾(Gauss-Seidel)迭代法,其迭代公式為 (i=1,2,n) (2-5) 也可以寫成矩陣形式 仍將系數(shù)矩陣A分解為 則方程組變?yōu)?得 (2-6) 將最新分量代替為舊分量,得 即 于是有 (2-7)所以 因為高斯賽德爾迭代法比雅克比迭代法收斂快,這個結論在多數(shù)情況下是成立的,但也有相反的情況,即高斯賽德爾迭代法比雅克比迭代法收斂慢,甚至還有雅克比迭代法收斂,高斯賽德爾迭代法發(fā)散的情形。2.2.2 JAVA程序實現(xiàn)高斯賽德爾(Gauss-Seidel)迭代法編寫java程序用Gauss-Seidel迭代法解
9、上述例1方程組:實驗結果如下圖所示(JAVA程序設計詳見附錄源程序2):2.3 超松弛(SOR)迭代法2.3.1 超松弛(SOR)迭代法的定義超松弛迭代法(Successive Over Relaxation Method, SOR方法)是高斯賽德爾迭代法的一種改進,是解大型稀疏方程組的有效方法之一。設已知第k次迭代向量,及第k+1次迭代向量的前i-1個分量,(j=1,2,i-1),現(xiàn)在研究如何求向量的第i個分量。 首先,有高斯賽德爾迭代法求出一個值,記為 (i=1,2,n) (2-8)再將第k次迭代向量的第i個分量與進行加權平均,得,即: (2-9)于是的SOR迭代公式 (i=1,2,n)
10、或 (i=1,2,n) 當=1時,式即為高斯賽德爾迭代法;當0<<1時,式稱為低松弛方法,當某些方程組用高斯賽德爾迭代法不收斂時,可以用低松弛方法獲得收斂;當>1時,式稱為超松弛方法,可以用來提高收斂速度。將式寫成矩陣的形式,得: 即 (2-10) 于是得SOR迭代的矩陣表示 (2-11) 其中 2.3.2 JAVA程序實現(xiàn)超松弛(SOR)迭代法編寫java程序用SOR迭代法解上述例1方程組:實驗結果如下圖所示(JAVA程序設計詳見附錄源程序3): 3 總結在數(shù)學課程的學習中,應注重學生數(shù)學計算能力和應用能力的培養(yǎng)。利用數(shù)學軟件來解決課程中的計算和作圖問題,提高學習效率,加深
11、學習興趣。本次課程設計課題是關于我們本學期的課程數(shù)值分析中的迭代求解方程組內(nèi)容,在數(shù)值分析學習中主要使用MATLAB或是C+進行迭代計算,從未使用過JAVA編程進行迭代計算,這次課程設計對我來說也是一項挑戰(zhàn)。編程過程其實也是一個學習的過程,加深了我對JAVA的認識,同時也更督促我在JAVA方面下工夫。在編寫JAVA程序的過程中,遇到很多問題,比如編寫錯誤,或是難以實現(xiàn)目的等。通過網(wǎng)上查找資料,求助同學幫助一起解決問題。意識到自己很大的不足,進步空間很大,需要多練習編程才能在JAVA學習中更進一步。我們在理解掌握數(shù)學理論知識的同時,能借助現(xiàn)代軟件利用迭代法簡單迅速地計算出繁雜的數(shù)學運算結果,大大
12、提高了解題效率和學習效果。參考文獻1 印旻 王行言Java語言與面向對象程序設計(第二版)北京:清華大學出版社,2012.52 李慶揚 王能超數(shù)值分析(第四版)武漢:華中科技大學出版社,2006.73 奧特加J M數(shù)值分析M張麗君 張乃玲,譯北京:高等教育出版社,1983附錄源程序1:package .Test;import java.util.Scanner;public class Jacobi /* * 雅可比迭代法求線性方程組 */static double a; /矩陣A的值static double b; /矩陣B的值static double x; /現(xiàn)在矩陣X的值static
13、double x2; /以前矩陣X的值,以便計算精度static int n; /元數(shù)static double e; /精度public static void IT()int k=0;System.out.println("k x1 x2 x3");System.out.print(k+" ");for(int i=1;i<=n;i+)System.out.print(xi+" ");System.out.println("n");dok+;for(int i=1;i<=n;i+)x2i=xi; f
14、or(int i=1;i<=n;i+) xi=f_x(i); System.out.print(k+" "); for(int i=1;i<=n;i+) System.out.print(xi+" "); System.out.println("n");while(jisuan()>=e);public static double jisuan() /計算精度 double max=0.0;for(int i=1;i<=n;i+)double x3=Math.abs(xi-x2i);if(x3>max)
15、max=x3;return max;public static double f_x(int i)/算迭代式的值double x1=0.0;for(int j=1;j<=n;j+)if(j!=i) x1=x1+aij*x2j;double x2=(bi-x1)/aii;return x2;public static void Print_Jie()/輸出方程組的解System.out.print("方程組的解為:");for(int i=1;i<=n;i+)System.out.print("x"+i+" = "+xi);
16、public static void main(String args) Scanner as=new Scanner(System.in); System.out.println("輸入方程組的元數(shù):"); n=as.nextInt(); a=new doublen+1n+1; b=new doublen+1; x=new doublen+1; x2=new doublen+1; System.out.println("輸入方程組的系數(shù)矩陣a:"); for(int i=1;i<=n;i+) for(int j=1;j<=n;j+) aij
17、=as.nextDouble(); System.out.println("輸入方程組矩陣b:"); for(int i=1;i<=n;i+) bi=as.nextDouble(); System.out.println("輸入精度e:"); e=as.nextDouble(); IT(); Print_Jie();源程序2:import java.util.Scanner;public class Gauss_Seidel /* * 高斯-賽德爾迭代法求線性方程組 */static double a;static double b;static
18、double x;static double x2;static int n;static double e;public static void IT()int k=0;System.out.println("k x1 x2 x3");System.out.print(k+" ");for(int i=1;i<=n;i+)System.out.print(xi+" ");System.out.println("n");dok+;for(int i=1;i<=n;i+)x2i=xi; for(int i
19、=1;i<=n;i+) xi=f_x(i); System.out.print(k+" "); for(int i=1;i<=n;i+) System.out.print(xi+" "); System.out.println("n");while(jisuan()>=e);public static double jisuan()double max=0.0;for(int i=1;i<=n;i+)double x3=Math.abs(xi-x2i);if(x3>max) max=x3;return m
20、ax;public static double f_x(int i)/算迭代式的值double x1=0.0;for(int j=1;j<=n;j+)if(j!=i) x1=x1+aij*xj;double x2=(bi-x1)/aii;return x2;public static void Print_Jie()/輸出方程組的解System.out.print("方程組的解為:");for(int i=1;i<=n;i+)System.out.print("x"+i+" = "+xi);public static vo
21、id main(String args) Scanner as=new Scanner(System.in); System.out.println("輸入方程組的元數(shù):"); n=as.nextInt(); a=new doublen+1n+1; b=new doublen+1; x=new doublen+1; x2=new doublen+1; System.out.println("輸入方程組的系數(shù)矩陣a:"); for(int i=1;i<=n;i+) for(int j=1;j<=n;j+) aij=as.nextDouble()
22、; System.out.println("輸入方程組矩陣b:"); for(int i=1;i<=n;i+) bi=as.nextDouble(); System.out.println("輸入精度e:"); e=as.nextDouble(); IT(); Print_Jie();源程序3:import java.util.Scanner;public class SOR /* * 高松弛迭代法求線性方程組 */static double a;static double b;static double x;static double x2;st
23、atic int n;static double e;public static void IT()int k=0;System.out.println("k x1 x2 x3");System.out.print(k+" ");for(int i=1;i<=n;i+)System.out.print(xi+" ");System.out.println("n");dok+;for(int i=1;i<=n;i+)x2i=xi; for(int i=1;i<=n;i+) xi=f_x(i); System.out.print(k+" "); for(int i=1;i<=n;i+) System.out.print(xi+" "); System.out.println("n");while(jisuan()>=e);public static double jisuan()double max=0.0;for(int i=1;i<=n;i+)double x3=Math.abs(xi-x2i);if(x3>max) max=x
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 借資產(chǎn)合同范本
- 2025年度DAF運輸合同下的貨物運輸保險責任劃分
- 使用土地建房合同范例
- 個人傭金協(xié)議合同范例
- 2024-2030年中國掃描聲學顯微鏡(SAM)行業(yè)發(fā)展監(jiān)測及發(fā)展趨勢預測報告
- 上門宴席服務合同范例
- 勞保服合同范本
- 農(nóng)村房屋征收合同范本
- 2025年度教育培訓機構經(jīng)營權承包合同范本
- 2025年度節(jié)能減排產(chǎn)品銷售代理合同樣本
- Module 2 Unit 2 I dont like ginger. (說課稿)-2024-2025學年外研版(一起)英語二年級上冊
- 2025年新高考語文模擬考試試卷(五) (含答案解析)
- 教育部《中小學校園食品安全和膳食經(jīng)費管理工作指引》專題培訓
- 瞻望病人的護理
- WPS辦公應用職業(yè)技能等級證書(初級)考試復習題庫(含答案)
- 北師大版七年級數(shù)學上冊教材同步課后習題答案
- 大霧天安全行車培訓
- 杭州市2025屆高三教學質量檢測(一模) 英語試題卷(含答案解析)
- 北師大版七年級上冊數(shù)學思維導圖全套
- 人教版三下勞動項目四《蒸蛋羹》教學設計
- 人工智能基礎知識培訓課件
評論
0/150
提交評論