线性方程组迭代解法.docx

上传人:b****1 文档编号:2144669 上传时间:2023-05-02 格式:DOCX 页数:18 大小:44.94KB
下载 相关 举报
线性方程组迭代解法.docx_第1页
第1页 / 共18页
线性方程组迭代解法.docx_第2页
第2页 / 共18页
线性方程组迭代解法.docx_第3页
第3页 / 共18页
线性方程组迭代解法.docx_第4页
第4页 / 共18页
线性方程组迭代解法.docx_第5页
第5页 / 共18页
线性方程组迭代解法.docx_第6页
第6页 / 共18页
线性方程组迭代解法.docx_第7页
第7页 / 共18页
线性方程组迭代解法.docx_第8页
第8页 / 共18页
线性方程组迭代解法.docx_第9页
第9页 / 共18页
线性方程组迭代解法.docx_第10页
第10页 / 共18页
线性方程组迭代解法.docx_第11页
第11页 / 共18页
线性方程组迭代解法.docx_第12页
第12页 / 共18页
线性方程组迭代解法.docx_第13页
第13页 / 共18页
线性方程组迭代解法.docx_第14页
第14页 / 共18页
线性方程组迭代解法.docx_第15页
第15页 / 共18页
线性方程组迭代解法.docx_第16页
第16页 / 共18页
线性方程组迭代解法.docx_第17页
第17页 / 共18页
线性方程组迭代解法.docx_第18页
第18页 / 共18页
亲,该文档总共18页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

线性方程组迭代解法.docx

《线性方程组迭代解法.docx》由会员分享,可在线阅读,更多相关《线性方程组迭代解法.docx(18页珍藏版)》请在冰点文库上搜索。

线性方程组迭代解法.docx

线性方程组迭代解法

实验六:

线性方程组迭代解法

1)实验目的

•熟悉Matlab编程;

•学习线性方程组迭代解法的程序设计算法

2)实验题目

1.研究解线性方程组Ax=b迭代法收敛速度。

A为20阶五对角距阵

要求:

(1)选取不同的初始向量x0及右端向量b,给定迭代误差要求,用雅可比迭代和高斯-赛德尔迭代法求解,观察得到的序列是否收敛?

若收敛,记录迭代次数,分析计算结果并得出你的结论。

(2)用SOR迭代法求解上述方程组,松弛系数ω取1<ω<2的不同值,在

时停止迭代.记录迭代次数,分析计算结果并得出你的结论。

2.给出线性方程组

,其中系数矩阵

为希尔伯特矩阵:

假设

若取

分别用雅可比迭代法及SOR迭代(

)求解,比较计算结果。

3)实验原理与理论基础

1.雅克比(Jacobi)迭代法算法设计:

①输入矩阵a与右端向量b及初值x(1,i);

②按公式计算得

2.高斯――赛得尔迭代法算法设计:

1.输入矩阵a与右端向量b及初值x(1,i).

2.

(i=1,2,…,n)

3.超松驰法算法设计:

①输入矩阵a与右端向量b及初值x(1,i)。

4)实验内容

第一题实验程序:

1.雅克比迭代法:

function[]=yakebi(e)

%输入矩阵a与右端向量b。

fori=1:

20

a(i,i)=3;

end

fori=3:

20

forj=i-2

a(i,j)=-1/4;

a(j,i)=-1/4;

end

end

fori=2:

20

forj=i-1

a(i,j)=-1/2;

a(j,i)=-1/2;

end

end

b=[2.21.71.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.72.2];

k=1;

n=length(a);

fori=1:

n

x(1,i)=1;%数组中没有第0行。

end

whilek>=1

fori=1:

n

m=0;

%此步也可以用ifj~=i条件判定一下。

forj=1:

(i-1)

m=m+a(i,j)*x(k,j);

end

forj=(i+1):

n

m=m+a(i,j)*x(k,j);

end

x(k+1,i)=(b(i)-m)/a(i,i);

end

l=0;

%判定满足条件使循环停止迭代。

fori=1:

n

l=l+abs(x(k+1,i)-x(k,i));

end

ifl

break

end

k=k+1;

end

%输出所有的x的值。

x(k+1,:

k

2.高斯—赛德尔迭代法:

function[]=gaoshisaideer(e)

fori=1:

20

a(i,i)=3;

end

fori=3:

20

forj=i-2

a(i,j)=-1/4;

a(j,i)=-1/4;

end

end

fori=2:

20

forj=i-1

a(i,j)=-1/2;

a(j,i)=-1/2;

end

end

b=[2.21.71.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.72.2];

k=1;

n=length(a);

fori=1:

n

x(1,i)=0;%数组中没有第0行。

end

whilek>=1

fori=1:

n

p=0;q=0;

forj=1:

(i-1)

p=p+a(i,j)*x(k+1,j);

end

forj=(i+1):

n

q=q+a(i,j)*x(k,j);

end

x(k+1,i)=(b(i)-q-p)/a(i,i);

end

l=0;

%判定满足条件使循环停止迭代。

fori=1:

n

l=l+abs(x(k+1,i)-x(k,i));

end

ifl

break

end

k=k+1;

end

%输出所有的x的值。

x(k+1,:

k

3.SOR迭代法程序:

function[]=caosongci(e,w)

fori=1:

20

a(i,i)=3;

end

fori=3:

20

forj=i-2

a(i,j)=-1/4;

a(j,i)=-1/4;

end

end

fori=2:

20

forj=i-1

a(i,j)=-1/2;

a(j,i)=-1/2;

end

end

b=[2.21.71.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.72.2];

k=1;

n=length(a);

fori=1:

n

x(1,i)=0;%数组中没有第0行。

end

whilek>=1

ifw>=2||w<=1

'请重新输入w的值,w在1与2之间';

break

end

fori=1:

n

p=0;q=0;

forj=1:

(i-1)

p=p+a(i,j)*x(k+1,j);

end

forj=i:

n

q=q+a(i,j)*x(k,j);

end

x(k+1,i)=x(k,i)+w*(b(i)-q-p)/a(i,i);

end

l=0;

%判定满足条件使循环停止迭代。

fori=1:

n

l=l+abs(x(k+1,i)-x(k,i));

end

ifl

break

end

k=k+1;

end

%输出所有的x的值。

x(k+1,:

k

第二题实验程序:

1.雅克比迭代法:

functionX=p211_1_JJ(n)

Hn=GET_Hn(n);

b=GET_b(n);

temp=0;

X0=zeros(1,n);

X_old=zeros(1,n);

X_new=zeros(1,n);

disp('NowJacobimethod!

');

disp('Startwiththevectorthat(0,0,0,...)^T');

fori=1:

n

fork=1:

n

X_old=X_new;

temp=0;

forj=1:

n

if(j~=i)

temp=temp+Hn(i,j)*X_old(j);

end

end

X_new(i)=(b(i)-temp)/Hn(i,i);

end

end

X=X_new;

end

2.SOR迭代法:

functionX=p211_1_SOR(n,w)

Hn=GET_Hn(n);

b=GET_b(n);

temp01=0;

temp02=0;

X0=zeros(1,n);

X_old=zeros(1,n);

X_new=zeros(1,n);

disp('NowSuccessiveOverRelaxtionmethod!

');

disp('Startwiththevectorthat(0,0,0,...)^T');

fori=1:

n

fork=1:

n

X_old=X_new;

temp01=0;

temp02=0;

forj=1:

n

if(j

temp01=temp01+Hn(i,j)*X_new(j);

end

if(j>i)

temp02=temp02+Hn(i,j)*X_old(j);

end

end

end

X_new(i)=w*(b(i)-temp01-temp02)/Hn(i,i)+X_old(i);

end

X=X_new;

end

5)实验结果

第一题实验结果:

1.雅克比迭代法:

输入:

>>b=[2.21.71.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.72.2];

yakebi(0.00001)

结果:

ans=

Columns1through12

0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000

Columns13through20

0.99990.99980.99950.99890.99700.99410.97870.9793

k=

12

2.高斯—赛德尔迭代法:

此时初值全取1;

输入:

>>b=[2.21.71.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.72.2];

>>gaoshisaideer(0.00001)

结果:

ans=

Columns1through12

0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000

Columns13through20

0.99990.99980.99950.99890.99700.99410.97870.9793

k=

14

此时初值全取1;

输入:

>>b=[2.51.91.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.51.92.5];

gaoshisaideer(0.00001)

结果:

ans=

Columns1through12

1.09691.07071.02191.01031.00391.00161.00061.00031.00011.00011.00011.0001

Columns13through20

1.00031.00061.00161.00391.01031.02191.07071.0969

k=

14

3.SOR迭代法:

>>caosongci(0.00001,1.1)

ans=

Columns1through12

0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000

Columns13through20

0.99990.99980.99950.99890.99700.99410.97870.9793

k=

11

>>caosongci(0.00001,1.2)

ans=

Columns1through12

0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000

Columns13through20

0.99990.99980.99950.99890.99700.99410.97870.9793

k=

12

>>caosongci(0.00001,1.3)

ans=

Columns1through12

0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000

Columns13through20

0.99990.99980.99950.99890.99700.99410.97870.9793

k=

15

>>caosongci(0.00001,1.4)

ans=

Columns1through12

0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000

Columns13through20

0.99990.99980.99950.99890.99700.99410.97870.9793

k=

19

>>caosongci(0.00001,1.5)

ans=

Columns1through12

0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000

Columns13through20

0.99990.99980.99950.99890.99700.99410.97870.9793

k=

25

>>caosongci(0.00001,1.6)

ans=

Columns1through12

0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000

Columns13through20

0.99990.99980.99950.99890.99700.99410.97870.9793

k=

34

>>caosongci(0.00001,1.7)

ans=

Columns1through12

0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000

Columns13through20

0.99990.99980.99950.99890.99700.99410.97870.9793

k=

47

>>caosongci(0.00001,1.8)

ans=

Columns1through12

0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000

Columns13through20

0.99990.99980.99950.99890.99700.99410.97870.9793

k=

73

>>caosongci(0.00001,1.9)

ans=

Columns1through12

0.97930.97870.99410.99700.99890.99950.99980.99991.00001.00001.00001.0000

Columns13through20

0.99990.99980.99950.99890.99700.99410.97870.9793

k=

150

第二题实验结果:

1.雅克比迭代法:

>>p211_1_JJ(6)

NowJacobimethod!

Startwiththevectorthat(0,0,0,...)^T

ans=

2.45001.10360.62650.40600.28310.2071

>>p211_1_JJ(8)

NowJacobimethod!

Startwiththevectorthat(0,0,0,...)^T

ans=

2.71791.41010.85240.58090.42210.31980.24970.1995

>>p211_1_JJ(10)

NowJacobimethod!

Startwiththevectorthat(0,0,0,...)^T

ans=

Columns1through9

2.92901.66621.05170.74230.55540.43150.34450.28070.2325

Column10

0.1951

2.SOR迭代法:

n=6,ω=1,1.25,1.5的时候

>>p211_1_SOR(6,1)

NowSuccessiveOverRelaxtionmethod!

Startwiththevectorthat(0,0,0,...)^T

ans=

2.45001.10360.62650.40600.28310.2071

>>p211_1_SOR(6,1.25)

NowSuccessiveOverRelaxtionmethod!

Startwiththevectorthat(0,0,0,...)^T

ans=

3.06250.23100.87040.33890.31410.2097

>>p211_1_SOR(6,1.5)

NowSuccessiveOverRelaxtionmethod!

Startwiththevectorthat(0,0,0,...)^T

ans=

3.6750-1.10092.0106-0.39940.7670-0.0384

与n=8,ω=1,1.25,1.5的时候

>>p211_1_SOR(8,1)

NowSuccessiveOverRelaxtionmethod!

Startwiththevectorthat(0,0,0,...)^T

ans=

2.71791.41010.85240.58090.42210.31980.24970.1995

>>p211_1_SOR(8,1.25)

NowSuccessiveOverRelaxtionmethod!

Startwiththevectorthat(0,0,0,...)^T

ans=

3.39730.48871.08980.50620.45010.32030.25730.2042

>>p211_1_SOR(8,1.5)

NowSuccessiveOverRelaxtionmethod!

Startwiththevectorthat(0,0,0,...)^T

ans=

4.0768-0.94242.2923-0.27530.92520.05780.40710.1275

与n=10,ω=1,1.25,1.5的时候

>>p211_1_SOR(10,1)

NowSuccessiveOverRelaxtionmethod!

Startwiththevectorthat(0,0,0,...)^T

ans=

Columns1through9

2.92901.66621.05170.74230.55540.43150.34450.28070.2325

Column10

0.1951

>>p211_1_SOR(10,1.25)

NowSuccessiveOverRelaxtionmethod!

Startwiththevectorthat(0,0,0,...)^T

ans=

Columns1through9

3.66120.70981.28350.66170.58070.42990.35060.28440.2363

Column10

0.1984

>>p211_1_SOR(10,1.5)

NowSuccessiveOverRelaxtionmethod!

Startwiththevectorthat(0,0,0,...)^T

ans=

Columns1through9

4.3935-0.79582.5326-0.15231.07200.15650.50500.20410.2819

Column10

0.1766

6)实验结果分析与小结

本次实习主要是学会应用雅克比迭代法、高斯—赛德尔迭代法、SOR迭代法三种迭代法,并且了解三种迭代法的性质以及迭代精度等。

第一题中取的b对于雅克比迭代法、高斯――赛得尔迭代法都是收敛的,对于相同的初值与右端向量明显可以看出高斯――赛得尔迭代法比雅克比迭代法快。

由第二题可得出对于SOR迭代方法选择不同的松弛因子,收敛次数大大不同,而当松弛因子为1.1时,在同等条件下迭代最快。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2