常微分方程的解线性方程组的迭代法.docx

上传人:b****7 文档编号:10696989 上传时间:2023-02-22 格式:DOCX 页数:23 大小:105.45KB
下载 相关 举报
常微分方程的解线性方程组的迭代法.docx_第1页
第1页 / 共23页
常微分方程的解线性方程组的迭代法.docx_第2页
第2页 / 共23页
常微分方程的解线性方程组的迭代法.docx_第3页
第3页 / 共23页
常微分方程的解线性方程组的迭代法.docx_第4页
第4页 / 共23页
常微分方程的解线性方程组的迭代法.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

常微分方程的解线性方程组的迭代法.docx

《常微分方程的解线性方程组的迭代法.docx》由会员分享,可在线阅读,更多相关《常微分方程的解线性方程组的迭代法.docx(23页珍藏版)》请在冰豆网上搜索。

常微分方程的解线性方程组的迭代法.docx

常微分方程的解线性方程组的迭代法

实验五解线性方程组的迭代法

【实验内容】

对1、设线性方程组

2、设对称正定系数阵线性方程组

3、三对角形线性方程组

试分别选用Jacobi迭代法,Gauss-Seidol迭代法和SOR方法计算其解。

【实验方法或步骤】

1、体会迭代法求解线性方程组,并能与消去法加以比较;

2、分别对不同精度要求,如

由迭代次数体会该迭代法的收敛快慢;

3、对方程组2,3使用SOR方法时,选取松弛因子ω=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;

4、给出各种算法的设计程序和计算结果。

程序:

用雅可比方法求的程序:

function[x,n]=jacobi(A,b,x0,eps,varargin)

ifnargin==3

eps=1.0e-6;

M=200;

elseifnargin==5

M=varargin{1};

end

D=diag(diag(A));

L=-tril(A,-1);

U=-triu(A,1);

B=D\(L+U);

f=D\b;

x=B*x0+f;

n=1;

whilenorm(x-x0)>=eps

x0=x;

x=B*x0+f;

n=n+1;

if(n>=M)

diso('不收敛!

')

return;

end

end

解1的程序为A=[42-3-1210000;86-5-3650100;42-2-132-1031;0-215-13-1194;-426-167-3323;86-8571726-35;02-13-425301;1610-11-917342-122;462-713920124;00-18-3-24-863-1;],b=[51232346133819-21]'

A=

Columns1through4

42-3-1

86-5-3

42-2-1

0-215

-426-1

86-85

02-13

1610-11-9

462-7

00-18

Columns5through8

2100

6501

32-10

-13-11

67-33

71726

-4253

17342-1

13920

-3-24-86

Columns9through10

00

00

31

94

23

-35

01

22

124

3-1

 

b=

5

12

3

2

3

46

13

38

19

-21

>>x0=ones(10,1);

>>[x,n]=Jacobi(A,b,x0)

得到的结果为Warning:

FunctioncallJacobiinvokesinexactmatchd:

\MATLAB7\work\jacobi.m.

不收敛!

x=

1.0e+124*

-0.1794

-0.3275

-0.7094

1.5990

1.0311

0.3291

0.2464

4.3905

0.4927

-2.6574

 

n=

200即迭代了200次而且可能不收敛

A=

42-404200

22-121320

-4-1141-8-356

0-216-1-4-33

21-8-1224-10-3

43-3-44111-4

025-3-101142

0063-3-4219

 

b=0

-6

20

23

9

-22

-15

45

>>x0=ones(8,1);

>>[x,n]=Jacobi(A,b,x0)

不收敛!

x=

1.0e+047*

0.9627

1.0084

-0.4954

-0.5979

0.3097

0.6872

-0.0666

-0.2629

 

n=200此方程可能不收敛

A=[4-100000000;-14-10000000;0-14-1000000;00-14-100000;000-14-10000;0000-14-1000;00000-14-100;000000-14-10;0000000-14-1;00000000-14;],b=[75-1326-1214-45-5]'

A=

Columns1through5

4-1000

-14-100

0-14-10

00-14-1

000-14

0000-1

00000

00000

00000

00000

Columns6through10

00000

00000

00000

00000

-10000

4-1000

-14-100

0-14-10

00-14-1

000-14

 

b=

7

5

-13

2

6

-12

14

-4

5

-5

>>x0=ones(10,1);

>>[x,n]=Jacobi(A,b,x0)

x=

2.0000

1.0000

-3.0000

0.0000

1.0000

-2.0000

3.0000

0.0000

1.0000

-1.0000

 

n=22得到结果为迭代了22次得到近似解为x=2.00001.0000-3.00000.00001.0000-2.00003.00000.00001.0000-1.0000

用高斯赛德尔源程序

function[x,n]=gauseidel(A,b,x0,eps,M)

ifnargin==3

eps=1.0e-6;

M=200;

elseifnargin==4

M=200;

elseifnargin<3

error

return;

end

D=diag(diag(A));

L=-tril(A,-1);

U=-triu(A,1);

G=(D-L)\U;

f=(D-L)\b;

x=G*x0+f;

n=1;

whilenorm(x-x0)>=eps

x0=x;

x=G*x0+f;

n=n+1;

if(n>=M)

disp('Warning:

不收敛!

');

return;

end

end

解上面3个方程组的程序分别为

第一个方程A=[42-3-1210000;86-5-3650100;42-2-132-1031;0-215-13-1194;-426-167-3323;86-8571726-35;02-13-425301;1610-11-917342-122;462-713920124;00-18-3-24-863-1;],b=[51232346133819-21]'

A=

42-3-1210000

86-5-3650100

42-2-132-1031

0-215-13-1194

-426-167-3323

86-8571726-35

02-13-425301

1610-11-917342-122

462-713920124

00-18-3-24-863-1

 

b=

5

12

3

2

3

46

13

38

19

-21

x0=zeros(10,1);

>>[x,n]=gauseidel(A,b,x0)

Warning:

不收敛!

x=

1.0e+247*

0.0165

-0.0271

0.2202

-0.4576

-0.5951

0.3138

-0.4381

2.2450

0.0413

7.4716

 

n=200即迭代200次后此方程可能不收敛

方程2的程序为A=[42-404200;22-121320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219;],b=[0-620239-22-1545]'

A=

42-404200

22-121320

-4-1141-8-356

0-216-1-4-33

21-8-1224-10-3

43-3-44111-4

025-3-101142

0063-3-4219

 

b=

0

-6

20

23

9

-22

-15

45

>>x0=zeros(8,1);

>>[x,n]=gauseidel(A,b,x0)

x=

3.5441

-4.8877

1.9482

0.4525

1.4283

-1.1606

-0.1081

1.6743

 

n=

44即在迭代44次后可求的方程的近似解

第3个的程序为>>A=[4-100000000;-14-10000000;0-14-1000000;00-14-100000;000-14-10000;0000-14-1000;00000-14-100;000000-14-10;0000000-14-1;00000000-14;],b=[75-1326-1214-45-5]'

A=

4-100000000

-14-10000000

0-14-1000000

00-14-100000

000-14-10000

0000-14-1000

00000-14-100

000000-14-10

0000000-14-1

00000000-14

 

b=

7

5

-13

2

6

-12

14

-4

5

-5

>>x0=zeros(10,1);

>>[x,n]=gauseidel(A,b,x0)

x=

2.0000

1.0000

-3.0000

-0.0000

1.0000

-2.0000

3.0000

-0.0000

1.0000

-1.0000

 

n=12在迭代12次后得到方程的近似解

用超松弛迭代的源程序为function[x,n]=SOR(A,b,x0,w,eps,M)

ifnargin==4

eps=1.0e-6;

M=200;

elseifnargin<4

error

return

elseifnargin==5

M=200;

end

if(w<=0||w>=2)

error;

return;

end

D=diag(diag(A));

L=-tril(A,-1);

U=-triu(A,1);

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

f=w*inv((D-L*w))*b;

x=B*x0+f;

n=1;

whilenorm(x-x0)>=eps

x0=x;

x=B*x0+f;

n=n+1;

if(n>=M)

disp('Warning:

不收敛!

');

return;

end

end

解第一个方程组选取抄松弛因子为1程序为:

A=[42-3-1210000;86-5-3650100;42-2-132-1031;0-215-13-1194;-426-167-3323;86-8571726-35;02-13-425301;1610-11-917342-122;462-713920124;00-18-3-24-863-1;],b=[51232346133819-21]'

A=

42-3-1210000

86-5-3650100

42-2-132-1031

0-215-13-1194

-426-167-3323

86-8571726-35

02-13-425301

1610-11-917342-122

462-713920124

00-18-3-24-863-1

 

b=

5

12

3

2

3

46

13

38

19

-21

x0=[0000000000]';

[x,n]=SOR(A,b,x0,1)

Warning:

不收敛!

x=

1.0e+247*

0.0165

-0.0271

0.2202

-0.4576

-0.5951

0.3138

-0.4381

2.2450

0.0413

7.4716

 

n=

200迭代次数太多可能不收敛

解第2个的程序为A=[42-404200;22-121320;-4-1141-8-356;0-216-1-4-33;21-8-1224-10-3;43-3-44111-4;025-3-101142;0063-3-4219;],b=[0-620239-22-1545]'

A=

42-404200

22-121320

-4-1141-8-356

0-216-1-4-33

21-8-1224-10-3

43-3-44111-4

025-3-101142

0063-3-4219

 

b=

0

-6

20

23

9

-22

-15

45

>>x0=[00000000]';

[x,n]=SOR(A,b,x0,0.8)

x=

3.5441

-4.8877

1.9482

0.4525

1.4283

-1.1606

-0.1081

1.6743

 

n=

52得到结果为迭代了52次得到近似解松弛因子为0.8

[x,n]=SOR(A,b,x0,0.9)

x=

3.5441

-4.8877

1.9482

0.4525

1.4283

-1.1606

-0.1081

1.6743

 

n=

47得到结果为迭代了47次得到近似解松弛因子为0.9

>[x,n]=SOR(A,b,x0,1)

x=

3.5441

-4.8877

1.9482

0.4525

1.4283

-1.1606

-0.1081

1.6743

 

n=

44得到结果为迭代了44次得到近似解松弛因子为1.0

 

解第3个的程序为>>A=[4-100000000;-14-10000000;0-14-1000000;00-14-100000;000-14-10000;0000-14-1000;00000-14-100;000000-14-10;0000000-14-1;00000000-14;],b=[75-1326-1214-45-5]'

A=

4-100000000

-14-10000000

0-14-1000000

00-14-100000

000-14-10000

0000-14-1000

00000-14-100

000000-14-10

0000000-14-1

00000000-14

 

b=

7

5

-13

2

6

-12

14

-4

5

-5

>>x0=[0000000000]';

>>[x,n]=SOR(A,b,x0,0.8)

x=

2.0000

1.0000

-3.0000

-0.0000

1.0000

-2.0000

3.0000

-0.0000

1.0000

-1.0000

 

n=19即迭代了19次得到方程的近似解松弛因子为0.8

>>[x,n]=SOR(A,b,x0,0.9)

x=

2.0000

1.0000

-3.0000

-0.0000

1.0000

-2.0000

3.0000

-0.0000

1.0000

-1.0000

 

n=16即迭代了16次得到方程的近似解松弛因子为0.9

[x,n]=SOR(A,b,x0,1)

x=

2.0000

1.0000

-3.0000

-0.0000

1.0000

-2.0000

3.0000

-0.0000

1.0000

-1.0000

 

n=12即迭代了12次得到方程的近似解松弛因子为1

 

(注:

可编辑下载,若有不当之处,请指正,谢谢!

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

当前位置:首页 > 人文社科 > 教育学心理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1