实验报告四线性方程组的求解迭代.docx

上传人:b****5 文档编号:14932703 上传时间:2023-06-28 格式:DOCX 页数:27 大小:71.31KB
下载 相关 举报
实验报告四线性方程组的求解迭代.docx_第1页
第1页 / 共27页
实验报告四线性方程组的求解迭代.docx_第2页
第2页 / 共27页
实验报告四线性方程组的求解迭代.docx_第3页
第3页 / 共27页
实验报告四线性方程组的求解迭代.docx_第4页
第4页 / 共27页
实验报告四线性方程组的求解迭代.docx_第5页
第5页 / 共27页
实验报告四线性方程组的求解迭代.docx_第6页
第6页 / 共27页
实验报告四线性方程组的求解迭代.docx_第7页
第7页 / 共27页
实验报告四线性方程组的求解迭代.docx_第8页
第8页 / 共27页
实验报告四线性方程组的求解迭代.docx_第9页
第9页 / 共27页
实验报告四线性方程组的求解迭代.docx_第10页
第10页 / 共27页
实验报告四线性方程组的求解迭代.docx_第11页
第11页 / 共27页
实验报告四线性方程组的求解迭代.docx_第12页
第12页 / 共27页
实验报告四线性方程组的求解迭代.docx_第13页
第13页 / 共27页
实验报告四线性方程组的求解迭代.docx_第14页
第14页 / 共27页
实验报告四线性方程组的求解迭代.docx_第15页
第15页 / 共27页
实验报告四线性方程组的求解迭代.docx_第16页
第16页 / 共27页
实验报告四线性方程组的求解迭代.docx_第17页
第17页 / 共27页
实验报告四线性方程组的求解迭代.docx_第18页
第18页 / 共27页
实验报告四线性方程组的求解迭代.docx_第19页
第19页 / 共27页
实验报告四线性方程组的求解迭代.docx_第20页
第20页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实验报告四线性方程组的求解迭代.docx

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

实验报告四线性方程组的求解迭代.docx

实验报告四线性方程组的求解迭代

浙江大学城市学院实验报告

课程名称科学计算

实验项目名称线性方程组的求解-迭代法

实验成绩指导老师(签名)日期2012-4-6

一.实验目的和要求

1.掌握Jacobi迭代方法.Gauss-Seidel迭代方法.SOR迭代方法的编程思想.能够分别用分量形式和矩阵形式编写相关程序。

2.观察SOR迭代法中松弛因子变化情况对收敛的影响。

3.了解Hilbert矩阵的病态性和作为线性方程组系数矩阵的收敛性。

二.实验内容和原理

编程题2-1要求写出Matlab源程序(m文件).并有适当的注释语句;分析应用题2-2.2-3.2-4要求将问题的分析过程、Matlab源程序和运行结果和结果的解释、算法的分析写在实验报告上。

2-1编程注释

对下述求解线性方程组的Matlab程序添上注释语句.其中

分别为线性方程组的系数矩阵和右端向量;

为迭代初始向量

为容许迭代最大次数.

为迭代终止条件的精度(容许误差).终止条件为前后两次迭代解的差的向量2-范数。

1)Jacobi迭代:

2)Gauss-Seidel迭代:

GaussSeidelmethod(A,b,x0,Nmax,eps)

3)松弛迭代:

SORmethod(A,b,x0,Nmax,eps,w)

 

2-2分析应用题

利用2-1中的程序来分析用下列迭代法解线性方程组:

的收敛性.并求出使

的近似解及相应的迭代次数.其中取迭代初始向量

为零向量。

1)Jacobi迭代法;

2)Gauss-Seidel迭代法;

3)松弛迭代法(松弛因子依次取1.334.1.95.0.95)。

2-3分析应用题

考虑方程组

.其中系数矩阵

为Hilbert矩阵.

选择问题的维数

分别为2、3、5、10.并通过首先给定解再定出右端的办法确定问题.解的给定可以使用函数

定义.并取迭代初始向量

为零向量.迭代误差为

.编写程序:

其中n为Hilbert矩阵的维数.分别构造求解该问题的Jacobi迭代和Gauss-Seidel迭代.看它们是否收敛。

2-4分析应用题

解线性方程组

的解向量.取

.其中

为任一非零的六元向量;编写程序输出结果:

认真观察之.能发现什么有趣的现象?

 

【MATLAB相关函数】

⏹提取(产生)对角阵

v=diag(x)若输入向量x.则输出v是以x为对角元素的对角阵;若输入矩阵x.则输出v是x的对角元素构成的向量

v=diag(diag(x))输入矩阵x.输出v是x的对角元素构成的对角阵.可用于迭代法中从A中提取D。

⏹提取(产生)上(下)三角阵

v=triu(x)输入矩阵x.输出v是x的上三角阵;

v=tril(x)输入矩阵x.输出v是x的下三角阵;

v=triu(x,1)输入矩阵x.输出v是x的上三角阵.但对角元素为0.可用于迭代法中从A中提取U。

v=tril(x,-1)输入矩阵x.输出v是x的下三角阵.但对角元素为0.可用于迭代法中从A中提取L。

⏹矩阵特征值

b=eig(A)输入矩阵A.输出b是A的所有特征值。

⏹范数

n=norm(x)输入x为向量或矩阵.输出为x的2范数;

n=norm(x,p)输入x为向量或矩阵.当p=1,inf时分别输出为x的1.无穷范数;

⏹Hilbert矩阵

h=hilb(n)输出h为n阶Hilbert矩阵

三.操作方法与实验步骤(包括实验数据记录和处理)

2-1编程注释

对下述求解线性方程组的Matlab程序添上注释语句.其中

分别为线性方程组的系数矩阵和右端向量;

为迭代初始向量

为容许迭代最大次数.

为迭代终止条件的精度(容许误差).终止条件为前后两次迭代解的差的向量2-范数。

1)Jacobi迭代:

function[X]=Jacobimethod(A,b,X0,P,Nmax,eps)

%A和b分别为线性方程组的系数矩阵和右端向量;x0为迭代初始向量X0;Nmax为容许迭代最大%次数.eps为迭代终止条件的精度(容许误差).终止条件为前后两次迭代解的差的向量2-范数%P=1.2.inf或’fro.’

%输出的量:

系数矩阵

的值和有关雅可比迭代收敛性的相关信息及AX=b的精确解jX和近似解X

[nm]=size(A);

forj=1:

m

a(j)=sum(abs(A(:

j)))-2*(abs(A(j,j)));

end

fori=1:

n

ifa(i)>=0

disp('请注意:

系数矩阵A不是严格对角占优的.此雅可比迭代不一定收敛')

return

end

end

ifa(i)<0

disp('请注意:

系数矩阵A是严格对角占优的.此方程组由唯一解.且雅可比迭代收敛')

end

fork=1:

Nmax

k

forj=1:

m

X(j)=(b(j)-A(j,[1:

j-1,j+1:

m])*X0([1:

j-1,j+1:

m]))/A(j,j);

end

X,djwcX=norm(X'-X0,P);

xdwcX=djwcX/(norm(X',P)+eps);

X0=X';

X1=A\b;

if(djwcX

disp('请注意:

雅可比迭代收敛.此方程的精确解jX和近似解X如下:

')

return

end

end

if(djwcX>eps)&&(xdwcX>eps)

disp('请注意:

雅可比迭代次数已经超过最大迭代次数Nmax')

end

a,X=X;jX=X1',

end

 

2)Gauss-Seidel迭代:

GaussSeidelmethod(A,b,x0,Nmax,eps)

function[x]=GaussSeidelmethod(A,b,x0,P,Nmax,wucha)

%输入的量:

线性方程组AX=b的系数矩阵A和b.初始向量x0.范数的名称P=1.2.inf或'fro.'.%近似解x的误差(精度)wucha和迭代的最大次数Nmax。

%输出的量:

以系数矩阵

的对角元构成对角矩阵D、A的上三角形矩阵U.但对角

%元为0、A的下三角矩阵L.但对角元为0和有关高斯-赛德尔迭代收敛性的相关信息及其AX=b

%的精确解jx和近似解x。

D=diag(diag(A));

U=-triu(A,1);

L=-tril(A,-1);

dD=det(D);

ifdD==0

disp('请注意:

因为对角矩阵D奇异.所以此方程组无解.')

else

disp('请注意:

因为对角矩阵D非奇异.所以此方程组有解.')

iD=inv(D-L);B2=iD*U;f2=iD*b;jx=A\b;

x=x0;[nm]=size(A);

fork=1:

Nmax

x1=B2*x+f2;djwcx=norm(x1-x,P);

xdwcx=djwcx/(norm(x,P)+eps);

if(djwcx

return

else

k;x1';k=k+1;x=x1;

end

end

if(djwcx

disp('请注意:

高斯-赛德尔迭代收敛.此A的分解矩阵D.U,L和方程组的精确解jx和近似解如下:

')

else

disp('请注意:

高斯-赛德尔迭代的结果没有达到给定的精度.并且迭代次数已经超过最大迭代次数Nmax.方程组的精确解jx和迭代向量x如下:

')

x=x';jx=jx'

end

end

x=x';D,U,L,jx=jx'

 

3)松弛迭代:

SORmethod(A,b,x0,Nmax,eps,w)

function[x]=SORmethod(A,b,x,Nmax,wucha,w)

%输入的量:

线性方程组AX=b的系数矩阵A和b.初始向量x.范数名称P=1.2.inf.或'fro.'.%松弛因子w.近似解x的误差(精度)wucha和迭代的最大次数Nmax。

%输出的量:

谱半径mH.以系数矩阵A的对角元构成的对角矩阵D、A的上三角矩阵U.但对角%元为0、A的下三角矩阵L.但对角元为0.迭代次数i.有关超松弛迭代收敛性的相关信息

%及其AX=b的精确解jx和近似解x。

D=diag(diag(A));U=-triu(A,1);

L=-tril(A,-1);jx=A\b;[nm]=size(A);

iD=inv(D-w*L);B2=iD*(w*U+(1-w)*D);

H=eig(B2);mH=norm(H,inf);

fork=1:

Nmax

iD=inv(D-w*L);B2=iD*(w*U+(1-w)*D);

f2=w*iD*b;x1=B2*x+f2;

x=x1;djwcx=norm(x1-jx,inf);xdwcx=djwcx/(norm(x,inf)+eps);

if(djwcx

disp('谱半径mH,A的分解矩阵D,U,L和方程组的精确解jx.迭代次数i如下:

')

mH,D,U,L,jx=jx',i=k-1,

return

ifi>Nmax

disp('迭代次数已经超过最大迭代次数Nmax.谱半径mH.方程组的精确解jx.迭代次数i如下:

')

mH,D,U,L,jx=jx',i=k-1,

end

end

end

ifmH>=1

disp('请注意:

因为谱半径不小于1.所以超松弛迭代序列发散.')

disp('谱半径mH.A的分解矩阵D,U,L和方程组的精确解jx.迭代次数i和迭代序列x如下:

')

i=k-1,mH,D,U,L,jx,

else

disp('因为谱半径小于1.所以超松弛迭代序列收敛.近似解x如下:

')

end

2-2分析应用题

利用2-1中的程序来分析用下列迭代法解线性方程组:

的收敛性.并求出使

的近似解及相应的迭代次数.其中取迭代初始向量

为零向量。

1)Jacobi迭代法;

2)Gauss-Seidel迭代法;

3)松弛迭代法(松弛因子依次取1.334.1.95.0.95)。

解:

1)>>A=[4-10-100;-14-10-10;0-14-10-1;-10-14-10;0-10-14-1;00-10-14];

b=[0;5;-2;5;-2;6];

X0=[000000]';

X=Jacobimethod(A,b,X0,inf,0.0001,100)

请注意:

系数矩阵A是严格对角占优的.此方程组有唯一解.且雅可比迭代收敛

k=

1

 

X=

01.2500-0.50001.2500-0.50001.5000

 

k=

2

 

X=

0.62501.00000.50001.00000.50001.2500

 

k=

3

 

X=

0.50001.65630.31251.65630.31251.7500

 

k=

4

 

X=

0.82811.53130.76561.53130.76561.6563

 

k=

5

 

X=

0.76561.83980.67971.83980.67971.8828

 

k=

6

 

X=

0.91991.78130.89061.78130.89061.8398

 

k=

7

 

X=

0.89061.92530.85061.92530.85061.9453

 

k=

8

 

X=

0.96261.89790.94901.89790.94901.9253

 

k=

9

 

X=

0.94901.96510.93031.96510.93031.9745

 

k=

10

 

X=

0.98261.95240.97621.95240.97621.9651

 

k=

11

 

X=

0.97621.98370.96751.98370.96751.9881

 

k=

12

 

X=

0.99191.97780.98891.97780.98891.9837

 

k=

13

 

X=

0.98891.99240.98481.99240.98481.9944

 

k=

14

 

X=

0.99621.98960.99481.98960.99481.9924

 

k=

15

 

X=

0.99481.99650.99291.99650.99291.9974

 

k=

16

 

X=

0.99821.99520.99761.99520.99761.9965

 

k=

17

 

X=

0.99761.99830.99671.99830.99671.9988

 

k=

18

 

X=

0.99921.99770.99891.99770.99891.9983

 

k=

19

 

X=

0.99891.99920.99851.99920.99851.9994

 

k=

20

 

X=

0.99961.99890.99951.99890.99951.9992

 

k=

21

 

X=

0.99951.99960.99931.99960.99931.9997

 

k=

22

 

X=

0.99981.99950.99981.99950.99981.9996

 

k=

23

 

X=

0.99981.99980.99971.99980.99971.9999

 

k=

24

 

X=

0.99991.99980.99991.99980.99991.9998

 

k=

25

 

X=

0.99991.99990.99981.99990.99981.9999

 

k=

26

 

X=

1.00001.99990.99991.99990.99991.9999

 

k=

27

 

X=

0.99992.00000.99992.00000.99992.0000

请注意:

雅可比迭代收敛.此方程组的精确解jx和近似解x如下:

X=

0.99992.00000.99992.00000.99992.0000

2)

>>A=[4-10-100;-14-10-10;0-14-10-1;-10-14-10;0-10-14-1;00-10-14];

b=[0;5;-2;5;-2;6];

x0=[000000]';

x=GaussSeidelmethod(A,b,x0,inf,100,0.0001)

请注意:

因为对角矩阵D非奇异.所以此方程组有解.

k=

1

 

ans=

01.2500-0.18751.20310.11331.4814

 

k=

2

 

ans=

0.61331.38480.51731.56100.60681.7810

 

k=

3

 

ans=

0.73641.71510.76431.77690.81831.8956

 

k=

4

 

ans=

0.87301.86390.88411.89380.91331.9494

 

k=

5

 

ans=

0.93941.93420.94441.94930.95821.9756

 

k=

6

 

ans=

0.97091.96840.97331.97560.97991.9883

 

k=

7

 

ans=

0.98601.98480.98721.98830.99031.9944

 

k=

8

 

ans=

0.99331.99270.99381.99440.99541.9973

 

k=

9

 

ans=

0.99681.99650.99701.99730.99781.9987

 

k=

10

 

ans=

0.99841.99830.99861.99870.99891.9994

 

k=

11

 

ans=

0.99931.99920.99931.99940.99951.9997

 

k=

12

 

ans=

0.99961.99960.99971.99970.99981.9999

 

k=

13

 

ans=

0.99981.99980.99981.99990.99991.9999

 

x=

0.9998

1.9998

0.9998

1.9999

0.9999

1.9999

3)

当w=1.334:

A=[4-10-100;-14-10-10;0-14-10-1;-10-14-10;0-10-14-1;00-10-14];

b=[0;5;-2;5;-2;6];

x0=[000000]';

x=SORmethod(A,b,x,100,0.0001,1.334)

谱半径mH,A的分解矩阵D,U,L和方程组的精确解jx.迭代次数i如下:

mH=

0.4305

 

D=

400000

040000

004000

000400

000040

000004

 

U=

010100

001010

000101

000010

000001

000000

 

L=

000000

100000

010000

101000

010100

001010

 

jx=

1.00002.00001.00002.00001.00002.0000

 

i=

0

 

x=

0.9999

2.0000

1.0000

2.0000

1.0000

2.0000

当w=1.95:

>>A=[4-10-100;-14-10-10;0-14-10-1;-10-14-10;0-10-14-1;00-10-14];

b=[0;5;-2;5;-2;6];

x0=[000000]';

x=SORmethod(A,b,x,100,0.0001,1.95)

谱半径mH,A的分解矩阵D,U,L和方程组的精确解jx.迭代次数i如下:

mH=

0.9589

 

D=

400000

040000

004000

000400

000040

000004

 

U=

010100

001010

000101

000010

000001

000000

 

L=

000000

100000

010000

101000

010100

001010

 

jx=

1.00002.00001.00002.00001.00002.0000

 

i=

0

 

x=

1.0000

2.0000

1.0000

2.0000

1.0000

2.0000

当w=0.95:

>>A=[4-10-100;-14-10-10;0-14-10-1;-10-14-10;0-10-14-1;00-10-14];

b=[0;5;-2;5;-2;6];

x0=[000000]';

x=SORmethod(A,b,x,100,0.0001,0.95)

谱半径mH,A的分解矩阵D,U,L和方程组的精确解jx.迭代次数i如下:

mH=

0.5260

 

D=

400000

040000

004000

000400

000040

000004

 

U=

010100

001010

000101

000010

000001

000000

 

L=

000000

100000

010000

101000

010100

001010

 

jx=

1.00002.00001.00002.00001.00002.0000

 

i=

0

 

x=

1.0000

2.0000

1.0000

2.0000

1.0000

2.0000

2-3分析应用题

考虑方程组

.其中系数矩阵

为Hilbert矩阵.

选择问题的维数

分别为2、3、5、10.并通过首先给定解再定出右端的办法确定问题.解的给定可以使用函数

定义.并取迭代初始向量

为零向量.迭代误差为

.编写程序:

其中n为Hilbert矩阵的维数.分别构造求解该问题的Jacobi迭代和Gauss-Seidel迭代.看它们是否收敛。

2-4分析应用题

解线性方程组

的解向量.取

.其中

为任一非零的六元向量;编写程序输出结果:

认真观察之.能发现什么有趣的现象?

 

四.实验结果与分析

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

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

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

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