矩阵与数值分析上机实验报告.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
矩阵与数值分析上机实验报告

实验一设,分别编制从小到大和从大到小的顺序程序分别计算并指出两种方法计算结果的有效位数。1.程序代码从小到大(从大到小)顺序求解#include stdio.h#include math.h#define N 10000//S1000000时 #define N 1000000void main(){float j;float Sn=0.0;//double Sn=0.0for(j=2;j=N;j++) //从大到小的顺序时 for(j=N;j=2;j--){Sn=Sn+1000000.0/(j*j-1);}printf(Sn=%f,Sn);}2.实验结果Sn为 double类型时(精度16位):从小到大输出结果是S10000=749900.004999S1000000=749999.000001从大到小输出结果是S10000=749900.005000S1000000=749999.000001Sn为float类型时(精度为7位):从小到大输出结果是S10000=749849.13500S1000000=749849.125001从大到小输出结果是S10000=749899.989583S1000000=749998.9895833.实验分析1)当使用精度较高的数据类型计算时,从大到小与从小到大计算没有太大区别2)当使用精度较低时,计算的先后顺序对结果影响很大,当N=10000时,两个计算结果差为50.854538;当N=1000000时,两个计算结果差为149.874582.3)造成是因为从小到大计算过程中,大的数加小的数时,把小数的舍入结果为0,产生了大数吃小数的现象。舍入误差较大。而从大到小计算过程,先安排小的数参加运算,获得了较高的精度。4)两种运算的精度分别是:以double数据类型从大到小的计算结果作为精确值,分别计算float类型的有效位数从小到大计算:S10000的有效位数为:3位S1000000有效位数是:3位从大到小计算:S10000的有效数位为:7位S1000000有效位数是:7位实验二解线性方程组,分别利用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组,其中常向量为维随机生成的列向量,系数矩阵具有如下形式,其中为阶矩阵,为阶单位矩阵,迭代法计算停止的条件为:,给出时的不同迭代步数.(一)用Jacobi迭代法解线性方程组1.程序代码#include stdafx.h#include stdio.h#include stdlib.h#include math.h#include time.h#include stdlib.h//using namespace std;#define N 20void main(){double A[N*N][N*N]={0};double B[N*N]={0};double X1[N*N]={0};double X2[N*N]={0};double temp=0.0;double maxErr=0.0;double err;bool flag=1;inti;int j;//构造矩阵Afor(i=0;iN*N;i=i+N){for (j=i;ji+N;j++){A[j][j]=4;if (ji+N-1){A[j+1][j]=-1;A[j][j+1]=-1;}if(j+NN*N){A[j+N][j]=-1;A[j][j+N]=-1;}}}//构造常数项B矩阵for(i=0;iN*N;i++){B[i]=1+(int)(10.0*rand()/(RAND_MAX+1.0)); //0~10之间的随机数printf(%f\n,B[i]);}//构造迭代常数矩阵Bfor(i=0;iN*N;i++){B[i]=B[i]/A[i][i];}//构造迭代矩阵Afor(i=0;iN*N;i=i+N){for (j=i;ji+N;j++){if (ji+N-1){A[j+1][j]=-A[j+1][j]/A[j][j];A[j][j+1]=-A[j][j+1]/A[j][j];}if(j+NN*N){A[j+N][j]=-A[j+N][j]/A[j][j];A[j][j+N]=-A[j][j+N]/A[j][j];}A[j][j]=0;}}//计算int count=0;//记录迭代次数while(true){count++;//迭代X的值,如果flag为1,则把结果写入X2中;如果flag为0,把结果写入X1中if(flag==1){flag=0;//flag=0表示结果写入X2for(i=0;iN*N;i++){temp=0;for(j=0;jN*N;j++){temp+=A[i][j]*X1[j];}X2[i]=temp+B[i];}}else {flag=1;//表

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档