新数值分析报告.docx
- 文档编号:3026813
- 上传时间:2022-11-17
- 格式:DOCX
- 页数:26
- 大小:425.97KB
新数值分析报告.docx
《新数值分析报告.docx》由会员分享,可在线阅读,更多相关《新数值分析报告.docx(26页珍藏版)》请在冰豆网上搜索。
新数值分析报告
微软中国
[此页不打印]
[键入文档副标题]
微软用户
[选取日期]
课题一:
线性方程组的迭代法
一、实验内容
1、设线性方程组
=
x
=(1,-1,0,1,2,0,3,1,-1,2)
2、设对称正定阵系数阵线方程组
=
x
=(1,-1,0,2,1,-1,0,2)
3、三对角形线性方程组
=
x
=(2,1,-3,0,1,-2,3,0,1,-1)
试分别选用Jacobi迭代法,Gauss-Seidol迭代法和SOR方法计算其解。
二、实验要求
1、体会迭代法求解线性方程组,并能与消去法做以比较;
2、分别对不同精度要求,如
由迭代次数体会该迭代法的收敛快慢;
3、对方程组2,3使用SOR方法时,选取松弛因子
=0.8,0.9,1,1.1,1.2等,试看对算法收敛性的影响,并能找出你所选用的松弛因子的最佳者;
4、给出各种算法的设计程序和计算结果。
三、目的和意义
1、通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较;
2、运用所学的迭代法算法,解决各类线性方程组,编出算法程序;
3、体会上机计算时,终止步骤
<
或k>(予给的迭代次数),对迭代法敛散性的意义;
4、体会初始解x
,松弛因子的选取,对计算结果的影响。
四、流程图设计
1、主程序流程图
图1-1主程序流程图
2、Jacobi迭代算法流程:
图1-2Jacobi迭代法流程图
3、Gauss-Seidel迭代算法流程同Jacobi算法,迭代关系式为
图1-3Gauss-Seidol迭代法流程图
4、SOR迭代算法:
图1-4SOR迭代法流程图
五、程序代码
#include
usingnamespacestd;
#defineN40
constintn=10;
intjacobi(float*p,floatb[],floatX[],floatx[],intn);
intGS(float*p,floatb[],floatX[],floatx[],intn);
intSOR(float*p,floatb[],floatX[],floatx[],intn);
voidprint(float*a,intr);
voidmain()
{
floatA[10][10]={4,2,-3,-1,2,1,0,0,0,0,
8,6,-5,-3,6,5,0,1,0,0,
4,2,-2,-1,3,2,-1,1,9,4,
0,-2,1,5,-1,3,-1,1,9,4,
-4,2,6,-1,6,7,-3,3,2,3,
8,6,-8,5,7,17,2,6,-3,5,
0,2,-1,3,-4,2,5,3,0,1,
16,10,-11,-9,17,34,2,-1,2,2,
4,6,2,-7,13,9,2,0,12,4,
0,0,-1,8,-3,-24,-8,6,3,-1};
floata[10]={7,5,-13,2,6,-12,14,-4,5,-5};
floatX1[10]={0,0,0,0,0,0,0,0,0,0};
floatx1[10];
floatB[8][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};
floatb[8]={0,-6,6,23,11,-22,-15,45};
floatX2[8]={0,0,0,0,0,0,0,0};
floatx2[8];
floatC[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};
floatc[10]={7,5,-13,2,6,-12,14,-4,5,-5};
floatx3[10];
floatX3[10]={0,0,0,0,0,0,0,0,0,0};
float*p[3];
p[0]=&A[0][0];
p[1]=&B[0][0];
p[2]=&C[0][0];
cout<<"Jacobi迭代法解第一个方程:
"< jacobi(p[0],a,X1,x1,10); cout<<"Jacobi迭代法解第二个方程: "< jacobi(p[1],b,X2,x2,8); cout<<"Jacobi迭代法解第三个方程: "< jacobi(p[2],c,X3,x3,10); cout<<"Gauss-Seidel迭代法解第一个方程: "< GS(p[0],a,X1,x1,10); cout<<"Gauss-Seidel迭代法解第二个方程: "< GS(p[1],b,X2,x2,8); cout<<"Gauss-Seidel迭代法解第三个方程: "< GS(p[2],c,X3,x3,10); cout<<"SOR迭代法解第一个方程: "< SOR(p[0],a,X1,x1,10); cout<<"SOR迭代法解第二个方程: "< SOR(p[1],b,X2,x2,8); cout<<"SOR迭代法解第三个方程: "< SOR(p[2],c,X3,x3,10); } intjacobi(float*p,floatb[],floatX[],floatx[],intn) { intk,i,j; floatm,R,r,e; cout<<"请输入精度e: "; cin>>e; for(k=0;k { R=0; for(i=0;i { m=0; for(j=0;j { m=m+(*(p+i*n+j))*X[j]; } x[i]=X[i]+(b[i]-m)/(*(p+i*n+i)); r=x[i]-X[i]; if(r<0) r=X[i]-x[i]; if(r>R) R=r; } if(R<=e&&R>0) { print(x,n); cout<<"迭代次数为: "< returnk; } for(j=0;j<10;j++) X[j]=x[j]; } print(x,n); cout<<"迭代次数为: "< cout<<"方程解发散,无法用Jacobi方法解此方程! "< return0; } intGS(float*p,floatb[],floatX[],floatx[],intn) { inti,j,k; floatt,R,r,e; cout<<"请输入精度e: "; cin>>e; for(k=0;k { for(i=0;i { t=0; for(j=0;j { if(j t+=(*(p+i*n+j))*x[j]; if(j>i) t+=(*(p+i*n+j))*X[j]; } x[i]=(b[i]-t)/(*(p+i*n+i)); } for(i=0;i<10;i++) { r=x[i]-X[i]; if(r<0) r=X[i]-x[i]; if(r>R) R=r; } if(R<=e&&R>0) { print(x,n); cout<<"迭代次数为: "< returnk; } for(j=0;j<8;j++) X[j]=x[j]; } print(x,n); cout<<"迭代次数为: "< cout<<"方程解发散,无法用Gauss-Seidel方法解此方程! "< return0; } intSOR(float*p,floatb[],floatX[],floatx[],intn) { inti,j,k; floatt,R,r,e,w; cout<<"请输入松弛因子w(0 "; cin>>w; cout<<"请输入精度e: "; cin>>e; for(i=0;i x[i]=X[i]; for(k=0;k { R=0; for(i=0;i { t=0; for(j=0;j t+=(*(p+i*n+j))*x[j]; r=w*(b[i]-t)/(*(p+i*n+i)); x[i]+=r; if(r<0) r=-r; if(r>R) R=r; } if(R<=e&&R>0) { print(x,n); cout<<"迭代次数为: "< returnk; } } print(x,n); cout<<"迭代次数为: "< cout<<"方程解发散,无法用XOR方法解此方程! "< return0; } voidprint(float*a,intn) { intj; float*t=a; cout<<"x=("; for(j=0;j cout<<*(t+j)<<","; cout<<*(t+j)<<")"< } 六、程序运行截图 七、小结及体会 经过这次试验,我通过上机计算体会迭代法求解线性方程组的特点,并能和消去法比较,并运用所学的迭代法算法,解决各类线性方程组,编出算法程序。 切实体会到了上机计算时,终止步骤 < 或k>(予给的迭代次数),对迭代法敛散性的意义,了解了初始解x ,松弛因子的选取,对计算结果的影响。 在试验中,不同的系数矩阵对上述三种迭代方法有很大影响,会导致结果发散无法得到正常结果。 三种算法的收敛,SOR方法最大,其次Gauss-Seidel方法,Jacobi方法最小,松弛因子的不同也和收敛速度密切相关。 课题二: 数值积分 一、实验内容 选用复合
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数值 分析 报告
![提示](https://static.bdocx.com/images/bang_tan.gif)