ImageVerifierCode 换一换
格式:DOCX , 页数:45 ,大小:100.62KB ,
资源ID:20858273      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20858273.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(《矩阵与数值分析》课程数值实验报告文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

《矩阵与数值分析》课程数值实验报告文档格式.docx

1、4.输出最后的求解结果。1.3程序代码本程序是用C+语言在Microsoft visual C+编译环境下编译和运行的。由于代码太长,程序代码见附录11.4 计算结果:1)Gauss消去法求解结果:1. 当矩阵阶数n=10,即附录1程序代码中的N设为10时,运行程序得到如下结果:消去之前的a和b: 6 1 0 0 0 0 0 0 0 0 | 7 8 6 1 0 0 0 0 0 0 0 | 15 0 8 6 1 0 0 0 0 0 0 | 15 0 0 8 6 1 0 0 0 0 0 | 15 0 0 0 8 6 1 0 0 0 0 | 15 0 0 0 0 8 6 1 0 0 0 | 15 0

2、 0 0 0 0 8 6 1 0 0 | 15 0 0 0 0 0 0 8 6 1 0 | 15 0 0 0 0 0 0 0 8 6 1 | 15 0 0 0 0 0 0 0 0 8 6 | 14请选择消元方法:1 (由键盘输入数字1,并回车)第1次消元结果: 6 1 0 0 0 0 0 0 0 0 | 7 0 4.6667 1 0 0 0 0 0 0 0 | 5.6667第9次消元结果: 0 4.6667 1 0 0 0 0 0 0 0 |5.6667 0 0 4.2857 1 0 0 0 0 0 0 |5.2857 0 0 0 4.1333 1 0 0 0 0 0 |5.1333 0 0

3、0 0 4.0645 1 0 0 0 0 |5.0645 0 0 0 0 0 4.0317 1 0 0 0 |5.0317 0 0 0 0 0 0 4.0157 1 0 0 |5.0157 0 0 0 0 0 0 0 4.0078 1 0 |5.0078 0 0 0 0 0 0 0 0 4.0039 1 |5.0039 0 0 0 0 0 0 0 0 0 4.002 | 4.002求解结果:X10=1 1 1 1 1 1 1 1 1 1 2.当矩阵阶数n=84,即程序代码中的N为84时,将附录1程序中N的值改为84,运行程序得到如下结果:(由于此时矩阵太大,消元过程和1类似,所以省略写出。)X

4、84=1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.999998 1 0.999992 1.00002 0.999969 1.00006 0.999878 1.00024 0.999512 1.00098 0.998047 1.00391 0.992188 1.01562 0.968752 1.0625 0.875008 1.24998 0.500031 1.99994 -0.999878 4.99976 -6.99951 16.999 -30.998 64.9961 -126.992 256.984

5、 -510.969 1024.94 -2046.87 4096.74 -8190.47 16383.9 -32764.5 65531 -131055 262097 -524127 1.048e+006 -2.09498e+006 4.18586e+006 -8.35533e+006 1.66451e+007 -3.30281e+007 6.50077e+007 -1.25821e+008 2.34867e+008 -4.02629e+008 5.36838e+008 2)Gauss列主元消去法求解结果:消去之前的A和b:2 (由键盘输入数字2,并回车) 0 -3.5 -0.75 0 0 0 0

6、 0 0 0 | -4.25 8 6 1 0 0 0 0 0 0 0 | 15 0 8 6 1 0 0 0 0 0 0 | 15 0 0 8 6 1 0 0 0 0 0 | 15 0 0 0 8 6 1 0 0 0 0 | 15 0 0 0 0 8 6 1 0 0 0 | 15 0 0 0 0 0 8 6 1 0 0 | 15 0 0 0 0 0 0 8 6 1 0 | 15 0 0 0 0 0 0 0 8 6 1 | 15 0 0 0 0 0 0 0 0 8 6 | 14 0 0 0 0 0 0 0 0 0 -0.015617 |-0.015617求解结果:X84=1 1 1 1 1 1 1

7、 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0.999999 1 0.999997 1.5结果分析:1.当n=10时,用Gauss消去法和Gauss列主元消去法得到的值解和精确解全吻合,此时无论Gauss消法法还是列主元消去法求解,可以得到理想结果。2.当n=84,即矩阵阶数过大时,可以看出此时用Gauss消元法得到的数值解结果与精确解结果相去

8、甚远,误差很大。这就是因为当矩阵太大时,在消元过程中出现了小数做除数的情形,在计算过程中的舍入误差使解的面目全非了。而用Gauss列主元消元法得到的数值解与精确解仍然可以很好的吻合,所以比较Gauss消去法与Gauss列主元消去法求解方程组可知,后者能有效避免消元过程中的小主元做除数,从而使求解精度更高。附录1:#includeiomanipusing namespace std;#define N 10 /N表示矩阵大小void Set_value(double aN,double *b);void Gauss_Array(double (*a)N,double *b,double* X);

9、 /Gauss消元求解函数void Select_main(double aN,double *b,int i);void Selectmain_Array(double (*a)N,double *b,double* X); /Gauss列主元消去法void display(double aN,double *b); /输出当前(A | b)的函数int main() double ANN,bN; Set_value(A,b); /初始化系数矩阵A和右端向量b double XN; /向量X用于存求解结果 int choice; coutchoice; switch(choice) case

10、 1: Gauss_Array(A,b,X);break; case 2: Selectmain_Array(A,b,X); default:cout输入有误!;exit(0); XN= for(int i=0;iN;i+) coutXi return 0;void Set_value(double aN,double *b) for(int j=0;jj+) aij=0; if(j=i-1) aij=8; if(j=i) aij=6; if(j=i+1) aij=1; bi=15; if(i=0) bi=7; if(i=N-1) bi=14; display(a,b);void Gauss_

11、Array(double (*a)N,double *b,double* X)N-1; for(int I=i+1;II+) /每次消元过程 if(aii=0) /如果对角线元素出现为0的情况,则矩阵奇异,退出程序 cout矩阵奇异! exit(0); double L=aIi/aii; for(int j=i; aIj=aIj-L*aij; bI=bI-L*bi;第i+1=0;k-) /倒序求解方程 if(akk=0) /如果消元后对角线元素出现为0的情况,则矩阵奇异,退出程序 coutk;m-) sum+=akm*Xm; Xk=(bk-sum)/akk;void Select_main(d

12、ouble aN,double *b,int j) int maxi=j; double max=ajj; for(int i=j;i+) /查找列主元 if(fabs(aij)fabs(max) max=aij; maxi=i; if(maxi!=j) /将列主元所在行放至列首 double Temp=bj; bj=bmaxi; bmaxi=Temp; for(int m=j;mm+) double temp=ajm; ajm=amaxim; amaxim=temp;void Selectmain_Array(double (*a)N,double *b,double* X) Select_

13、main(a,b,i); exit(0);次消元: /输出每次消元结果 if(akk=0) /如果消元后对角线元素出现为0的情况,则矩阵奇异,退出程序 double sum=0;void display(double (*a)N,double *b) /输出系数矩阵A和b for(int j=0;setw(6)setprecision(5)aij/控制输出的数据宽度和精度|bi二、用Jacobi和Gauss-Seidel迭代法求解方程组2.1. 问题(a) 选取不同的初始向量和不同的右端向量,给定迭代误差要求,用Jacobi和Gauss-Seidel迭代法计算,观测得出的迭代向量序列是否收敛。

14、若收敛,记录迭代次数,分析计算结果并得出你的结论。(b) 选定初始向量,如取将的主对角线元素成倍增长若干次,非主对角元素不变,每次用Jacobi法计算,要求迭代误差满足,比较收敛速度,分析现象并得出你的结论。2.2.算法描述1)算法基本思路1Jacobi迭代法基本思路:,设A=(aij)nxn是可逆矩阵,对其移移项和变形后可得如下迭代格式:然后,取定一个初始向量如x(0)=(0,0,0)T,带入上式开始迭代,然后如果达到迭代精度则停止迭代,即得到方程的数值解。2. Guass-Seidel迭代法基本思路:Guass-Seidel迭代法是对Jacobi迭代法(1)做出如下改进:其余同Jacobi

15、迭代法。2) 算法实现步骤:1.用题目中已知的系数矩阵初始化矩阵A,并输入不同的右端向量b和不同的初始向量x(0);2.选择迭代方式:1.Jacobi迭代法 2.GaussSeidel迭代法;当选择1时,按照迭代格式(1)开始迭代,并给定迭代误差,同时在每次迭代结束后输出此时的迭代结果,以便观测和检查;当选择2时,按照迭代格式(2)开始迭代,并给定迭代误差,同时在每次迭代结束后输出此时的迭代结果,以便观测和检查;3.如果达到给定迭代误差则迭代停止,得到方程数值解,并输出。2.3. 程序代码本程序是用C+语言在Microsoft visual C+编译环境下编译和运行的,由于代码太长,程序代码见

16、附录22.4计算结果a)对问题a的求解结果如下:1.当输入的右端向量b=1, 1, 1 ,1, 1, 1 ,1, 1 ,1 ,1 ,1 ,1 ,1, 1, 1 ,1 ,1 ,1 ,1 ,1T;初始向量x(0)= 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0, 0, 0 T时,用Jacobi迭代法求解,得到如下结果:请选择迭代方式:1.Jacobi迭代法 2.GaussSeidel迭代法第1次迭代结果:X1=0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.

17、333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 0.333333 第15次迭代结果:X15=0.481632 0.573409 0.632792 0.65209 0.660932 0.664294 0.665702 0.66626 0.666483 0.66656 0.66656 0.666483 0.66626 0.665702 0.664294 0.660932 0.65209 0.632792 0.573409 0.48163

18、2 第16次迭代结果:X16=0.481634 0.573412 0.632797 0.652096 0.660939 0.664302 0.66571 0.666269 0.666492 0.666569 0.666569 0.666492 0.666269 0.66571 0.664302 0.660939 0.652096 0.632797 0.573412 0.481634 迭代精度达到要求,迭代停止!迭代结果为X162.同样输入右端向量b=1, 1, 1 ,1, 1, 1 ,1, 1 ,1 ,1 ,1 ,1 ,1, 1, 1 ,1 ,1 ,1 ,1 ,1T;初始向量x(0)= 0 ,

19、0 ,0 ,0 ,0 ,0 ,0 ,0 ,0, 0 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,0, 0, 0 T时,用G-S迭代法求解,得到如下结果:X1=0.333333 0.388889 0.425926 0.436728 0.441615 0.44333 0.444023 0.444281 0.444382 0.44442 0.444435 0.444441 0.444443 0.444444 0.444444 0.444444 0.444444 0.444444 0.444444 0.444444 第10次迭代结果:X10= 0.481629 0.573406 0.632791 0.

20、652091 0.660934 0.664298 0.665708 0.666268 0.666492 0.666571 0.666573 0.666497 0.666274 0.665716 0.664308 0.660944 0.652101 0.632801 0.573415 0.481636 第11次迭代结果:X11= 0.481634 0.573412 0.632798 0.652098 0.660941 0.664305 0.665715 0.666274 0.666498 0.666576 0.666576 0.666499 0.666276 0.665718 0.664308

21、0.660945 0.652101 0.632801 0.573415 0.481636 迭代结果为X11b)对问题b)的求解结果如下:选取初始向量和右端向量分别为,将的主对角线元素成倍增长若干次,非主对角元素不变,每次选用Jacobi迭代法计算,要求迭代误差满足,将程序中表示倍数的M取1时,迭代次数为23次,能达到迭代误差精度要求;当M取2时,迭代次数为13次,能达到迭代误差精度要求;当M取3时,迭代次数为10次,能达到迭代误差精度要求;当M取4时,迭代次数为9次,能达到迭代误差精度要求;当M取5时,迭代次数为8次,能达到迭代误差精度要求;当M取7时,迭代次数为8次,能达到迭代误差精度要求;当M取8时,迭代次数为7次,能达到

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

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