高斯-賽德爾迭代法仿真_第1頁
高斯-賽德爾迭代法仿真_第2頁
高斯-賽德爾迭代法仿真_第3頁
高斯-賽德爾迭代法仿真_第4頁
高斯-賽德爾迭代法仿真_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、課程設計報告設計題目: 高斯-賽德爾迭代法仿真 學 院: 電子工程學院 專 業: 班 級: 學 號: 姓 名: 電子郵件: 日 期: 成 績: 指導教師: 西 安 電 子 科 技 大 學電 子 工 程 學 院課 程 設 計 任 務 書學生姓名 指導教師 職稱 學生學號 專業 題目 高斯-賽德爾迭代法仿真 任務與要求:開始日期 完成日期 課程設計所在單位 高斯-賽德爾迭代法仿真中文摘要 大型線性方程組的求解是大規模科學與工程計算的核心。隨著計算機的飛速發展,迭代法已取代直接法成為求解大型線性方程組的最重要的一類方法。而判斷迭代法好壞的標準通常是通過迭代法的收斂速度刻畫的,從而迭代法的收斂速度成為

2、一個很重要的問題,因此我們應該找收斂速度比較快的迭代方法,這樣才有實際價值。因此,本文就通過數值實驗說明,求線性方程組的近似解時,高斯-賽德爾迭代法的收斂速度比雅可比迭代法的收斂速度要快一些。1. 引言隨著科學技術的發展,生產實際中出現了大量的大型稀疏線性代數方程組,同時,用差分方法逼近微分方程的過程中,也需要求解這類線性方程組。因而,研究大型稀疏線性方程組的解法成了人們所關注的焦點。由于迭代法能夠充分利用矩陣的稀疏性,從而節省存儲單元,因而它是解大型稀疏線性代數方程組的比較實用的方法之一。眾所周知,構造一個迭代法,它的收斂性和收斂速度是一個關鍵問題,不收斂的格式自然不能用,而收斂滿的方法同樣

3、由于其費時且不一定能得出結果使得人們無法使用,這樣在實際使用迭代法求解問題時就必須尋求收斂性好且收斂速度較快的方法。20世紀50年代是用數字計算機求解電力系統潮流問題的開始階段,人們普遍采用以節點導納矩陣為基礎的高斯-賽德爾迭代法。這個方法的原理比較簡單,要求的數字計算機的內存量也比較小,適應當時的電子數字計算機制作水平和電力系統理論水平。高斯-賽德爾潮流計算法在牛頓法以及各種解耦法出現以后似乎成了一種邊緣性的方法。但是此方法原理簡單, 編程實現容易, 特別是對于配網潮流有其獨特優勢。 2. 算法:高斯-賽德爾迭代法2.1 算法理論或者思想雅克比迭代法基本思想為對于給定的線性方程組Ax=b,可

4、以用不同的方法把它變為與之等價的行為:x=Bx+f的方程組。選定初值,在反復的迭代中校正方程組根的近似值,并在此過程中求取符合計算精度要求的方程組近似值。高斯-賽德爾迭代法的基本思想跟雅克比迭代法相似。只是在雅克比迭代法中,每次迭代時只用到上次的值,而高斯-賽德爾迭代法充分利用了最新得到的值2.2 算法描述(1)雅可比迭代法設線性方程組 (1)的系數矩陣A可逆且主對角元素均不為零,令 并將A分解成 (2)從而(1)可寫成 令 其中. (3)以為迭代矩陣的迭代法(公式) (4)稱為雅可比(Jacobi)迭代法(公式),用向量的分量來表示,(4)為 (5)其中為初始向量.由此看出,雅可比迭代法公式

5、簡單,每迭代一次只需計算一次矩陣和向量的乘法.在電算時需要兩組存儲單元,以存放及.(2)高斯-賽德爾迭代法由雅可比迭代公式可知,在迭代的每一步計算過程中是用的全部分量來計算的所有分量,顯然在計算第i個分量時,已經計算出的最新分量沒有被利用,從直觀上看,最新計算出的分量可能比舊的分量要好些.因此,對這些最新計算出來的第次近似的分量加以利用,就得到所謂解方程組的高斯塞德(Gauss-Seidel)迭代法.把矩陣A分解成 (6) 其中,分別為的主對角元除外的下三角和上三角部分,于是,方程組(1)便可以寫成 即其中 (7)以為迭代矩陣構成的迭代法(公式) (8)稱為高斯塞德爾迭代法(公式),用 量表示

6、的形式為 (9)由此看出,高斯塞德爾迭代法的一個明顯的優點是,在電算時,只需一組存儲單元(計算出后不再使用,所以用沖掉,以便存放近似解.2.3 算法的時間復雜度由以下程序可以得出此算法的時間復雜度為O(n)2.4 算法的優缺點高斯-賽德爾迭代法的原理比較簡單,要求的數字計算機的內存量也比較小,適應當時的電子數字計算機制作水平和電力系統理論水平。但是高斯-賽德爾潮流算法的也有著其致命缺點那就是收斂速度比較慢,尤其是隨著電力系統的發展,網絡中的節點增多,這個問題將會更加突出。當前高斯-賽德爾只是作為提供初值的一種方法而被使用。先用高斯-賽德爾法進行1-2次迭代,然后再進入牛頓-拉夫遜法的迭代過程。

7、這樣可以充分利用這兩種方法各自的優點來克服兩者各自的缺點。通過在系統中采用這種方法使系統有了一定的穩健性,能夠針對各種不同的網絡進行潮流計算。3. 代碼(1)實驗目的與要求:對于線性方程組1. 用高斯-賽德爾迭代法求此方程組的近似解(終止迭代過程的最大允許迭代次數N,近似解的誤差限eps,均由用戶設定);2. 通過數值實驗說明,求此線性方程組的近似解時,高斯-賽德爾迭代法的收斂速度比雅可比迭代法的收斂速度要快一些。(用同樣精度要求的條件來比較迭代次數)(2)實驗源程序代碼:運用MATLAB軟件編輯M文件如下:function EX()a=input('請輸入系數矩陣a:');b

8、=input('請輸入矩陣b:');N=input('請輸入最大迭代次數N:');esp=input('請輸入近似解的誤差限:');if any(diag(a)=0 error('系數矩陣錯誤,迭代終止!')endD=diag(diag(a);X0=zeros(size(b);x1=0;x2=0;x3=0;X1=x1;x2;x3;h=inv(D)*b;B=inv(D)*(D-a);B1=triu(B);B2=tril(B);k=1;fprintf('高斯-賽德爾迭代法 n');fprintf('第0次迭代得

9、:')disp(X1');while k<=N x1=h(1,1)+B1(1,:)*X0; X1=x1;x2;x3; x2=h(2,1)+B1(2,:)*X0+B2(2,:)*X1; X1=x1;x2;x3; x3=h(3,1)+B2(3,:)*X1; X1=x1;x2;x3; if norm(X1-X0,inf)<esp fprintf('已滿足誤差限。 ') break ; end X0=X1; fprintf('第%2d次迭代得:',k) disp(X1'); k=k+1; endfprintf('滿足誤差限的高

10、斯-賽德爾迭代近似解為:')disp(X1');fprintf('雅可比迭代法 ');t=0;Y0=zeros(size(b);while t<=N Y1=h+B*Y0; if norm(Y1-Y0,inf)<esp fprintf('滿足誤差限 n') break ; end Y0=Y1; fprintf('第%2d次迭代得:',t) disp(Y1'); t=t+1; endfprintf('滿足誤差限的雅可比迭代近似解為:')disp(Y1');fprintf('用高斯-賽德爾迭代法迭代次數為 %d次n用高斯-賽德爾迭代法迭代次數為%d次n',k-1,t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論