迭代法解線性方程組-數(shù)值分析實驗報告_第1頁
迭代法解線性方程組-數(shù)值分析實驗報告_第2頁
迭代法解線性方程組-數(shù)值分析實驗報告_第3頁
迭代法解線性方程組-數(shù)值分析實驗報告_第4頁
迭代法解線性方程組-數(shù)值分析實驗報告_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上數(shù)學與計算科學學院數(shù)值分析 課程設計題 目: 迭代法解線性方程組 專 業(yè): 信息與計算科學 學 號: -24 姓 名: 譚 孜 指導教師: 郭 兵 成 績: 二零一六年 六月 二十日一 、前言:(目的和意義) 1.實驗目的  掌握用迭代法求解線性方程組的基本思想和步驟。 了解雅可比迭代法,高斯-賽德爾法和松弛法在求解方程組過程中的優(yōu)缺點。  2.實驗意義    迭代法是用某種極限過程去逐步逼近線性方程組精確解的方法,它是解高階稀疏方程組的重要方法。迭代法的基本思想是用逐次逼近的方法求解線性方程組。比較雅可比迭代法,高斯

2、-賽德爾迭代方法和松弛法,舉例子說明每種方法的試用范圍和優(yōu)缺點并進行比較。二、數(shù)學原理:設有方程組 將其轉(zhuǎn)化為等價的,便于迭代的形式 (這種轉(zhuǎn)化總能實現(xiàn),如令),并由此構造迭代公式 式中B稱為迭代矩陣,f稱為迭代向量。對任意的初始向量,由式可求得向量序列,若,則就是方程或方程的解。此時迭代公式是收斂的,否則稱為發(fā)散的。構造的迭代公式是否收斂,取決于迭代矩陣B的性1.雅可比迭代法基本原理設有方程組 矩陣形式為,設系數(shù)矩陣A為非奇異矩陣,且從式中第i個方程中解出x,得其等價形式 取初始向量,對式應用迭代法,可建立相應的迭代公式: 也可記為矩陣形式: 若將系數(shù)矩陣A分解為A=D-L-U, 式中 ,

3、, 。則方程Ax=b變?yōu)?得 于是 于是式中中的 。式和式分別稱為雅克比迭代法的分量形式和矩陣形式,分量形式用于編程計算,矩陣型式用于討論迭代法的收斂性。2.高斯賽德爾迭代法高斯賽德爾(Gauss-Seidel)迭代法,其迭代公式為 (i=1,2,n)也可以寫成矩陣形式 仍將系數(shù)矩陣A分解為 則方程組變?yōu)?得 將最新分量代替為舊分量,得 即 于是有 所以 3.超松弛迭代法設已知第k次迭代向量,及第k+1次迭代向量的前i-1個分量,(j=1,2,i-1),現(xiàn)在研究如何求向量的第i個分量。 首先,有高斯賽德爾迭代法求出一個值,記為 (i=1,2,n)再將第k次迭代向量的第i個分量與進行加權平均,得

4、,即: 于是的SOR迭代公式 (i=1,2,n) 或 (i=1,2,n) 當=1時,式即為高斯賽德爾迭代法;當0<<1時,式稱為低松弛方法,當某些方程組用高斯賽德爾迭代法不收斂時,可以用低松弛方法獲得收斂;當>1時,式稱為超松弛方法,可以用來提高收斂速度。將式寫成矩陣的形式,得: 即 于是得SOR迭代的矩陣表示 式中 3、 舉例說明及代碼例1:解下面方程組.(雅克比迭代方法、高斯-賽德爾和松弛法的比較)解:先計算迭代矩陣: BJ與BG的特征值跟收斂半徑為 所以,用雅可比迭代法求解,迭代過程收斂,而用高斯-塞德爾迭代法求解,迭代過程發(fā)散。取x0=(0;0;0),為達到精度10-

5、5,取w=0.1。雅可比迭代法松弛法3184代碼:1. 雅可比迭代法function x,k=jacobi(A,b,x0,esp) %k為迭A=input('Input A=');b=input('Input b=');x0=input('Input x0=');esp=1.0e-5;k=0;n=length(b);x=x0;while max(abs(b-A*x0)>esp&k<=500; for i=1:nsum=0;for j=1:nif j=isum=sum+A(i,j)*x0(j); endendx(i)=(b(i)

6、-sum)/A(i,i); endx0=x;k=k+1;if k>500fprintf('迭代達到上限')returnendendkInput A=1 2 -2;1 1 1;2 2 1;Input b=1 1 1'Input x0=0 0 0'運行結(jié)果:k = 3ans = -3 3 12.高斯-賽德爾迭代法clear;clc;A=1 2 -2;1 1 1;2 2 1;b=1 1 1'N=length(b);%解向量的維數(shù)fprintf('庫函數(shù)計算結(jié)果:');x=inv(A)*b%庫函數(shù)計算結(jié)果x=zeros(N,1);%迭代初始

7、值%-(A=D-E-F)-D=diag(diag(A);E=-tril(A,-1);%下三角F=-triu(A,1);%上三角B=inv(D-E)*F;g=inv(D-E)*b;eps=0.0001;%相鄰解的距離小于該數(shù)時,結(jié)束迭代%-開始迭代-for k=1:1000%最大迭代次數(shù)為100fprintf('第%d次迭代:',k);y=B*x+g;fprintf('n與上次計算結(jié)果的距離(2范數(shù)):%f?n',norm(x-y)2); if norm(x-y)<epsbreak;endx=yendx 運行結(jié)果:(因為發(fā)散結(jié)果不能確定)3.松弛迭代法w=0

8、.1;dalt=1.0e-5;A=1 2 -2;1 1 1;2 2 1;b=1 1 1'r=size(b);a=b;x0=zeros(3,1);x=x0;r=r(1);m=0;e=1;for t=1:ra(t)=A(t,t);A(t,t)=0;A(t,:)=A(t,:)/a(t);endb=b./a;root=0 x'while e>daltroot=m;e=0;for i=1:rt=x(i);x(i)=(1-w)*x(i)+w*(b(i)-A(i,:)*x);root=root x(i);t=abs(x(i)-t);if t>ee=t;endendrootm=m+

9、1;end運行結(jié)果:root = 184.0000 -3.0001 3.0000 1.0000例2:(超松弛法)達到同樣的精度10-5,松弛因子的不同,會使得收斂速度大大不同(w取1.01.9)代碼:w=1;dalt=1.0e-5;A=4 1 1 1;1 -4 1 1;1 1 -4 1;1 1 1 -4;b=1;1;1;1;r=size(b);a=b;x0=zeros(4,1);x=x0;r=r(1);m=0;e=1;for t=1:ra(t)=A(t,t);A(t,t)=0;A(t,:)=A(t,:)/a(t);endb=b./a;root=0 x'while e>daltro

10、ot=m;e=0;for i=1:rt=x(i);x(i)=(1-w)*x(i)+w*(b(i)-A(i,:)*x);root=root x(i);t=abs(x(i)-t);if t>ee=t;endendrootm=m+1;end運行結(jié)果整理:松弛因子迭代次數(shù)松弛因子迭代次數(shù)1.071.6321.181.73368(不收斂)1.2101.81946(不收斂)1.3131.91372(不收斂)1.4171.523例3:用三種方法分別計算下列方程組并進行比較:解: 雅克比迭代法1) 改寫成等價形式 2) 構造迭代公式,即為雅可比迭代公式 3) 取初始向量,即代入上式,求出 依次迭代,計算

11、結(jié)果如下表:要求精度迭代次數(shù)方程組的近似解0.017(1.0994,1.1994,1.2993)0.0019(1.0999,1.1999,1.2999)0.000113(1.1000,1.2000,1.3000) 高斯-賽德爾迭代法 1) 原方程組改為等價方程組 2) 構造迭代公式,即為高斯-賽德爾迭代公式 3) 取初始向量,即代入上式,求出 迭代計算下去,得下表.要求精度迭代次數(shù)方程組的近似解0.014(1.0931,1.1957,1.2978)0.0015(1.0991,1.1995,1.2997)0.00017(1.1000,1.2000,1.3000)超松馳迭代法(取松馳因子). 利用

12、SOR方法,構造迭代公式與高斯-賽德爾方法相同,初值為.迭代計算結(jié)果列于下表.要求精度迭代次數(shù)方程組的近似解0.015(1.0986,1.1998,1.0331)0.0017(1.0999,1.2000,1.2999)0.00018(1.1000,1.2000,1.3000)代碼:1.雅可比迭代法function x,k=jacobi(A,b,x0,esp) %k為迭A=input('Input A=');b=input('Input b=');x0=input('Input x0=');esp=1.0e-5;k=0;n=length(b);x=

13、x0;while max(abs(b-A*x0)>esp&k<=500; for i=1:nsum=0;for j=1:nif j=isum=sum+A(i,j)*x0(j); endendx(i)=(b(i)-sum)/A(i,i); endx0=x;k=k+1;if k>500fprintf('迭代達到上限')returnendendkInput A=10 -1 -2;-1 10 -2;-1 -1 5;Input b=7.2 8.3 4.2'Input x0=0 0 0'運行結(jié)果:k = 13ans = 1.1000 1.2000

14、1.30002.高斯-賽德爾迭代法clear;clc;A=10 3 1;2 -10 3;1 3 10;b=14 -5 14'N=length(b);%解向量的維數(shù)fprintf('庫函數(shù)計算結(jié)果:');x=inv(A)*b%庫函數(shù)計算結(jié)果x=zeros(N,1);%迭代初始值%-(A=D-E-F)-D=diag(diag(A);E=-tril(A,-1);%下三角F=-triu(A,1);%上三角B=inv(D-E)*F;g=inv(D-E)*b;eps=0.0001;%相鄰解的距離小于該數(shù)時,結(jié)束迭代%-開始迭代-for k=1:100%最大迭代次數(shù)為100fprin

15、tf('第%d次迭代:',k);y=B*x+g;fprintf('n與上次計算結(jié)果的距離(2范數(shù)):%f?n',norm(x-y)2); if norm(x-y)<epsbreak;endx=yendx 運行結(jié)果: k= 7x = 1.0000 1.0000 1.00003.松弛迭代法w=1.3;dalt=1.0e-2;A=10,-1,-2;-1,10,-2;-1,-1,5;b=7.2,8.3,4.2'r=size(b);a=b;x0=zeros(3,1);x=x0;r=r(1);m=0;e=1;for t=1:ra(t)=A(t,t);A(t,t

16、)=0;A(t,:)=A(t,:)/a(t);endb=b./a;root=0 x'while e>daltroot=m;e=0;for i=1:rt=x(i);x(i)=(1-w)*x(i)+w*(b(i)-A(i,:)*x);root=root x(i);t=abs(x(i)-t);if t>ee=t;endendrootm=m+1;end運行結(jié)果:root = 0 0 0 0root = 0 0.9360 1.2007 1.6475root = 1.0000 1.2396 1.3083 1.2602root = 2.0000 1.0618 1.1522 1.2896r

17、oot = 3.0000 1.1025 1.2120 1.3069root = 4.0000 1.1026 1.1985 1.2982root = 5.0000 1.0986 1.1998 1.3001例4:用三種方法分別計算下列方程組并進行比較:解: 雅克比迭代法2) 改寫成等價形式 2) 構造迭代公式,即為雅可比迭代公式 3) 取初始向量,即代入上式,求出 依次迭代,計算結(jié)果如下表:要求精度迭代次數(shù)方程組的近似解0.0121(1.1986,1.3939,1.5977,0.7962)0.00132(1.1996,1.3998,1.5994,0.7999)0.000153(1.2000,1.4

18、000,1.6000,0.8000) 高斯-賽德爾迭代法 1) 原方程組改為等價方程組 2) 構造迭代公式,即為高斯-賽德爾迭代公式 3) 取初始向量,即代入上式,求出 迭代計算下去,得下表.要求精度迭代次數(shù)方程組的近似解0.018(1.1880,1.3843,1.5873,0.7936)0.00114(1.1991,1.3988,1.5990,0.7995)0.000119(1.1999,1.3999,1.5999,0.7999)超松馳迭代法(取松馳因子). 利用SOR方法,構造迭代公式與高斯-賽德爾方法相同,初值為.迭代計算結(jié)果列于下表.要求精度迭代次數(shù)方程組的近似解0.016(1.196

19、1,1.3984,1.5987,0.7994)0.0018(1.1998,1.4000,1.6002,0.8000)0.000112(1.2000,1.4000,1.6000,0.8000)代碼:1.雅可比迭代法function x,k=jacobi(A,b,x0,esp) %k為迭A=input('Input A=');b=input('Input b=');x0=input('Input x0=');esp=1.0e-2;k=0;n=length(b);x=x0;while max(abs(b-A*x0)>esp&k<=5

20、00; for i=1:nsum=0;for j=1:nif j=isum=sum+A(i,j)*x0(j); endendx(i)=(b(i)-sum)/A(i,i); endx0=x;k=k+1;if k>500fprintf('迭代達到上限')returnendendkInput A=2 -1 0 0;-1 2 -1 0;0 -1 2 -1;0 0 -1 2;Input b=1 0 1 0'Input x0=1 1 1 1'運行結(jié)果:k = 21ans = 1.1986 1.3939 1.59770.79622.高斯-賽德爾迭代法clear;clc;

21、A=2 -1 0 0;-1 2 -1 0;0 -1 2 -1;0 0 -1 2;b=1 0 1 0'N=length(b);%解向量的維數(shù)fprintf('庫函數(shù)計算結(jié)果:');x=inv(A)*b%庫函數(shù)計算結(jié)果x=ones(N,1);%迭代初始值%-(A=D-E-F)-D=diag(diag(A);E=-tril(A,-1);%下三角F=-triu(A,1);%上三角B=inv(D-E)*F;g=inv(D-E)*b;eps=0.01;%相鄰解的距離小于該數(shù)時,結(jié)束迭代%-開始迭代-for k=1:100%最大迭代次數(shù)為100fprintf('第%d次迭代:

22、',k);y=B*x+g;fprintf('n與上次計算結(jié)果的距離(2范數(shù)):%f?n',norm(x-y)2); if norm(x-y)<epsbreak;endx=yendx 運行結(jié)果:k= 8x = 1.1880 1.3843 1.58730.79363.松弛迭代法w=1.4;dalt=1.0e-2;A=2 -1 0 0;-1 2 -1 0;0 -1 2 -1;0 0 -1 2;b=1 0 1 0'r=size(b);a=b;x0=ones(4,1);x=x0;r=r(1);m=0;e=1;for t=1:ra(t)=A(t,t);A(t,t)=0;A(t,:)=A(t,:)/a(t);endb=b./a;root=0 x'while e>daltroot=m;e=0;for i=1:rt=x(i);x(i)=(1-w)*x(i)+w*(b(i)-A(i,:)*x);root=root x(i);t

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論