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

上传人:b****8 文档编号:11914225 上传时间:2023-06-03 格式:DOCX 页数:10 大小:111.92KB
下载 相关 举报
常微分方程的解线性方程组的迭代法.docx_第1页
第1页 / 共10页
常微分方程的解线性方程组的迭代法.docx_第2页
第2页 / 共10页
常微分方程的解线性方程组的迭代法.docx_第3页
第3页 / 共10页
常微分方程的解线性方程组的迭代法.docx_第4页
第4页 / 共10页
常微分方程的解线性方程组的迭代法.docx_第5页
第5页 / 共10页
常微分方程的解线性方程组的迭代法.docx_第6页
第6页 / 共10页
常微分方程的解线性方程组的迭代法.docx_第7页
第7页 / 共10页
常微分方程的解线性方程组的迭代法.docx_第8页
第8页 / 共10页
常微分方程的解线性方程组的迭代法.docx_第9页
第9页 / 共10页
常微分方程的解线性方程组的迭代法.docx_第10页
第10页 / 共10页
亲,该文档总共10页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

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

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

常微分方程的解线性方程组的迭代法.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

4  2  -3  -1

8  6  -5  -3

4  2  -2  -1

0  -2  1  5

-4  2  6  -1

8  6  -8  5

0  2  -1  3

16  10 -11  -9

4  6  2  -7

0  0  -1  8

Columns5through8

2  1  0  0

6  5  0  1

3  2  -1  0

-1  3  -1  1

6  7  -3  3

7  17  2  6

-4  2  5  3

17  34  2  -1

13  9  2  0

-3 -24  -8  6

Columns9through10

0  0

0  0

3  1

9  4

2  3

-3  5

0  1

2  2

12  4

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=

4  2  -4  0  4  2  0  0

2  2  -1  2  1  3  2  0

-4  -1  14  1  -8  -3  5  6

0  -2  1  6  -1  -4  -3  3

2  1  -8  -1  22  4 -10  -3

4  3  -3  -4  4  11  1  -4

0  2  5  -3 -10  1  14  2

0  0  6  3  -3  -4  2  19

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  -1  0  0  0

-1  4  -1  0  0

0  -1  4  -1  0

0  0  -1  4  -1

0  0  0  -1  4

0  0  0  0  -1

0  0  0  0  0

0  0  0  0  0

0  0  0  0  0

0  0  0  0  0

Columns6through10

0  0  0  0  0

0  0  0  0  0

0  0  0  0  0

0  0  0  0  0

-1  0  0  0  0

4  -1  0  0  0

-1  4  -1  0  0

0  -1  4  -1  0

0  0  -1  4  -1

0  0  0  -1  4

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=

4  2  -3  -1  2  1  0  0  0  0

 

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

当前位置:首页 > 经管营销 > 经济市场

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

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