您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > 2014级硕士研究生数值分析上机实习报告(答案)
哈尔滨工业大学(威海)实验报告纸-1-2014级硕士研究生数值分析上机实习(第一次)姓名:学号:学院:实习题目:分别用二分法和Newton迭代法求方程02010223xxx的根.实习目的:掌握两种解法,体会两种解法的收敛速度.实习要求:用C程序语言编程上机进行计算,精确到8位有效数字.报告内容:1.确定实根的个数以及所在区间.2.将最后两次计算结果填入下表(保留8位数字):方法kkx1k1kx二分法Newton法3.实习过程中遇到哪些问题?如何解决?有何心得体会?哈尔滨工业大学(威海)实验报告纸-2-4.两种解法的计算程序(此页写不下时可以加页):【二分法】#includestdio.h#includemath.hfloatgetvalue(floatx){returnx*x*x+2*x*x+10*x-20;}voidmain(){floata=0,b=2,c;c=(a+b)/2;while(fabs(getvalue(c))0.00001&&fabs(a-b)0.00001){if(getvalue(c)*getvalue(b)0)a=c;if(getvalue(a)*getvalue(c)0)b=c;c=(a+b)/2;}printf(%0.7f\n,c);}【牛顿迭代法】#includestdio.h#includemath.hmain(){floatx,f,f1;x=8;//x的初值可为任意值do{f=x*x*x+2*x*x+10*x-20;f1=3*x*x+4*x+10;x=x-f/f1;}while(fabs(f)0.000001);printf(x=%f,f=%f\n,x,f);}哈尔滨工业大学(威海)实验报告纸-3-2014级硕士研究生数值分析上机实习(第二次)姓名:学号:学院:实习题目:计算8阶三对角矩阵)235.0,274.1,235.0(tridiagA的行列式.实习目的:掌握计算行列式的方法.实习要求:首先选择一种算法,然后用C程序语言编程上机进行计算.报告内容:1.简单描述所采用的算法:2.计算结果:A3.实习过程中遇到哪些问题?如何解决?有何心得体会?哈尔滨工业大学(威海)实验报告纸-4-4.写出C语言计算程序(此页写不下时可以加页):#includestdio.h#includemath.hintmain(){intn,i,j,k,m,l,SwarpNum=0;doublea[10][10],b,temp,result=1;printf(输入行列式阶数:);scanf(%d,&n);printf(输入各值:\n);for(i=0;in;i++){for(j=0;jn;j++)scanf(%lf,&a[i][j]);}for(k=0;kn-1;k++){if(a[k][k]==0){for(m=n-1;mk;m--){if(a[m][k]!=0){for(l=0;ln;l++){temp=a[k][l];a[k][l]=a[m][l];a[m][l]=temp;}SwarpNum++;break;}}}for(i=k+1;in;i++){b=-a[i][k]/a[k][k];for(j=k;jn;j++)a[i][j]=a[k][j]*b+a[i][j];}printf(\n);}for(i=0;in;i++)for(j=0;jn;j++){if(i==j)哈尔滨工业大学(威海)实验报告纸-5-result*=a[i][j];}result=pow(-1,SwarpNum)*result;printf(result=%f\n\n,result);return0;}哈尔滨工业大学(威海)实验报告纸-6-2014级硕士研究生数值分析上机实习(第三次)姓名:学号:学院:实习题目:分别用Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组9.14.35.16.84.22.78.17.27.64.38.91.2zyxzyxzyx实习目的:感受两种迭代法的收敛速度.实习要求:首先构造收敛的Jacobi迭代法和Gauss-Seidel迭代法,然后用C程序语言编程上机进行求解,初始值均取为0,精确到4位小数.报告内容:1.写出收敛的Jacobi迭代法和Gauss-Seidel迭代法:哈尔滨工业大学(威海)实验报告纸-7-2.将最后一次迭代次数k与相应的迭代结果填入下表迭代法k)(kx)(ky)(kzJacobiGauss-Seidel3.实习过程中遇到哪些问题?如何解决?有何心得体会?4.C语言计算程序:Jacobi迭代法#includestdio.h#includemath.hintfunction(floaty[3],floatx[3]);/*判断是否收敛*/floatx[3]={0,0,0},z;/*定义初始向量x*/inti,j,k,n=3;main(){floata[3][3]={{8.6,1.5,3.4},{2.1,9.8,3.4},{2.7,1.8,7.2}},b[3]={1.9,6.7,2.4};floaty[3],sum;intflag;for(k=0;k100;k++)/*迭代的次数*/{for(i=0;in;i++){sum=0;for(j=0;jn;j++){if(j!=i)sum=sum+a[i][j]*x[j];}y[i]=(b[i]-sum)/a[i][i];/*算出该迭代时的y[i]*/}for(i=0;in;i++){printf(x%d=%-10.6f,i+1,y[i]);}哈尔滨工业大学(威海)实验报告纸-8-printf(\n);flag=function(y,x);/*调用函数function*/if(flag==1)/*结束循环*/break;}}intfunction(floaty[3],floatx[3])/*判断是否收*/{intflag=0;/*标志主函数中的循环是否要结束*/z=fabs(y[0]-x[0]);for(i=0;in;i++)if(zfabs(y[i]-x[i]))z=fabs(y[i]-x[i]);if(z10e-6){flag=1;printf(diedaidecishushik=%d\n,k+1);/*输出得到最后结果迭代的次数*/printf(zuihoudejieguoshi:\n);for(i=0;in;i++)printf(x%d=%-10.6f,i+1,y[i]);/*输出方程组的解*/printf(\n);}elsefor(i=0;in;i++)/*将y[i]的值赋给x[i]进行下一步的迭代*/x[i]=y[i];return(flag);}}Gauss-Seidel迭代法#includestdio.h#includemath.h#includeiostream.h#defineN3doubleCompare(doublea[N],doubleb[N]){doublec=0;inti;for(i=0;i=N-1;i++)c+=fabs(a[i]-b[i]);returnc;}voidGauss_seidel(doubleA[N][N],doublex[N],doubleb[N],doubleprecesion){inti,j,k;doublex2[N],x3[N],sum;for(i=0;i=N-1;i++){x2[i]=x[i];x3[i]=x[i];}k=1;//k为迭代次数while(1){for(i=0;i=N-1;i++){sum=0;for(j=0;j=N-1;j++){if(j!=i)sum+=A[i][j]*x2[j];}x[i]=(b[i]-sum)/A[i][i];x2[i]=x[i];}//输出每一次迭代的结果printf(第%d次迭代:\n,k);printf(x3=);for(i=0;i=N-1;i++)printf(%lf,x3[i]);printf(\n);printf(x=);for(i=0;i=N-1;i++)printf(%lf,x[i]);printf(\n);//判断是否达到度迭代精if(Compare(x3,x)=precesion){printf(达到迭代精度的方程组的解为:\n);printf(x=);哈尔滨工业大学(威海)实验报告纸-9-for(i=0;i=N-1;i++)printf(%lf,x[i]);printf(\n);break;}else{for(i=0;i=N-1;i++)x3[i]=x[i];k++;continue;}}}voidmain(){doubleA[N][N]={{8.6,1.5,3.4},{2.1,9.8,3.4},{2.7,1.8,7.2}},x[N]={0},b[N]={1.9,6.7,2.4};Gauss_seidel(A,x,b,1e-10);}哈尔滨工业大学(威海)实验报告纸-10-2014级硕士研究生数值分析上机实习(第四次)姓名:学号:学院:实习题目:分别用复化梯形公式和复化Simpson公式计算积分dxxxIx20e2sin的近似值nI和mS.实习目的:体会两种复化求积公式的收敛性与收敛速度.实习要求:用C程序语言编程上机进行计算,结果要有八位有效数字.报告内容:1.写出求nI和mS的复化求积公式:2.写出具有八位有效数字的计算结果:n;nI=m;mS=3.实习过程中遇到哪些问题?如何解决?有何心得体会?哈尔滨工业大学(威海)实验报告纸-11-4.C语言计算程序(此页写不下时可以加页):
本文标题:2014级硕士研究生数值分析上机实习报告(答案)
链接地址:https://www.777doc.com/doc-5662562 .html