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

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

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

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

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

解线性方程组的迭代法

数值分析实验报告书

 

课题3解线性方程组的迭代法

 

A.问题提出

对所列的线性方程组

X[1]

X[2]

X[3]

X[4]

X[5]

X[6]

X[7]

X[8]

X[9]

X[10]

5

12

3

2

3

46

13

38

19

-21

=

*

4,-1,0,0,0,0,0,0,0,0

-1,4,-1,0,0,0,0,0,0,0

0,-1,4,-1,0,0,0,0,0,0

0,0,-1,4,-1,0,0,0,0,0

0,0,0,-1,4,-1,0,0,0,0

0,0,0,0,-1,4,-1,0,0,0

0,0,0,0,0,-1,4,-1,0,0

0,0,0,0,0,0,-1,4,-1,0

0,0,0,0,0,0,0,-1,4,-1

0,0,0,0,0,0,0,0,-1,4

=

0

-6

6

23

11

-22-15

45

X[1]

X[2]

X[3]

X[4]

X[5]

X[6]

X[7]

X[8]

*

4,2,-4,0,2,4,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

 

分别采用Jacobi迭代法,Gauss-Seidel迭代法和SOR迭代法求解。

B.要求

.分别对不同的精度要求,如e=10^-3,10^-4,10^-5,利用所需的迭代次数体会该迭代法的收敛快慢。

.使用SOR方法时,选取松弛因子w=0.8,0.91,1.2等,试找出你所选用松弛因子的最佳值。

.编制出各种迭代法的程序并给出计算结果。

C.实现方法(C++源代码)

#include

#include

#include

usingnamespacestd;

doublemax(doublearray[10]);

doublegs(doublex[10],doublee);

doublesor(doublex[10],doublee,doublew);

doublejacobi(doublee);

doublea[10][10]={4,-1,0,0,0,0,0,0,0,0,

-1,4,-1,0,0,0,0,0,0,0,

0,-1,4,-1,0,0,0,0,0,0,

0,0,-1,4,-1,0,0,0,0,0,

0,0,0,-1,4,-1,0,0,0,0,

0,0,0,0,-1,4,-1,0,0,0,

0,0,0,0,0,-1,4,-1,0,0,

0,0,0,0,0,0,-1,4,-1,0,

0,0,0,0,0,0,0,-1,4,-1,

0,0,0,0,0,0,0,0,-1,4};

intb[10]={7,5,-13,2,6,-12,14,-4,5,-5};

voidmain()

{

doublem,n;

inti;

doublex2[10];

cout<<"输入迭代精度"<

cout<<"e=";cin>>m;

cout<<"输入sor松弛因子"<

cout<<"w=";cin>>n;

cout<<"输入初解"<

for(i=0;i<10;i++)

cin>>x2[i];

jacobi(m);

sor(x2,m,n);

gs(x2,m);

}

doublemax(doublearray[10])

{

doublea=array[0];

inti;

for(i=1;i<10;i++)

{

if(a

a=array[i];

}

returna;

}

doublejacobi(doublee)

{

inti,j,k;

doubler,sum=0;

doublec[10]={0,0,0,0,0,0,0,0,0,0};

doublex[10]={0,0,0,0,0,0,0,0,0,0};

doublex0[10]={0,0,0,0,0,0,0,0,0,0};

for(k=1;;k++)

{

for(i=0;i<10;i++)

{

for(j=0;j<10;j++)

{

sum=a[i][j]*x0[j]+sum;

}

x[i]=x0[i]+((b[i]-sum)/a[i][i]);

c[i]=x[i]-x0[i];

if(c[i]<0)

c[i]=-c[i];

sum=0;

}

r=max(c);

if(r

{for(i=0;i<10;i++)

cout<<"x["<

cout<<"雅克比迭代次数为"<

return0;

}

else

for(i=0;i<10;i++)

x0[i]=x[i];

}

}

doublegs(doublex[10],doublee)

{

inti,k,j;

doubler,sum=0;

doublex0[10]={0};

doublec[10]={0};

for(k=1;;k++)

{

for(i=0;i<10;i++)

{

for(j=0;j<10;j++)

{

sum=a[i][j]*x0[j]+sum;

}

x[i]=x0[i]+((b[i]-sum)/a[i][i]);

c[i]=fabs(x[i]-x0[i]);

x0[i]=x[i];

sum=0;

}

r=max(c);

if(r

{

for(i=0;i<10;i++)

cout<<"x["<

cout<<"高斯—塞德尔迭代法迭代次数="<

return0;

}

}

}

doublesor(doublex[10],doublee,doublew)

{

inti,k,j;

doubler,sum=0;

doublex0[10]={0};

doublec[10]={0};

doublem;

for(k=1;;k++)

{

for(i=0;i<10;i++)

{

for(j=0;j<10;j++)

{

sum=a[i][j]*x0[j]+sum;

}

m=w*((b[i]-sum)/a[i][i]);

x[i]=m+x0[i];

c[i]=fabs(m);

x0[i]=x[i];

sum=0;

}

r=max(c);

if(r

{for(i=0;i<10;i++)

cout<<"x["<

cout<<"逐次超松弛迭代法迭代步数="<

return0;

}

}

}

D.运行结果(截图)

.

 

.

 

.

 

.

E.迭代法程序运行结果分析

就以上结果分析,在相同的迭代精度下,GS迭代法和SOR迭代法的迭代次数明显少于Jacobi迭代法的迭代次数。

这说明,GS和SOR迭代法比Jacobi迭代法具有更加快速的收敛性。

而对比这几次迭代结果,SOR松弛因子对SOR迭代法的收敛速度和收敛结果与精确解的近似程度有比较大的影响,根据这几次的地待发运行结果分析,当SOR的松弛因子W=1.1时,SOR迭代法的收敛速度是最快的。

 

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

当前位置:首页 > 工程科技 > 能源化工

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

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