计算数值方法实验指导书_第1页
计算数值方法实验指导书_第2页
计算数值方法实验指导书_第3页
计算数值方法实验指导书_第4页
计算数值方法实验指导书_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、计算数值方法实验指导书王峥2012-3-8目录目录1一、实验目的1二、实验内容1三、实验要求3四、示例程序3五、实验报告要求7六、参考资料7计算机数值方法实验指导书一、实验目的计算数值方法是一门实践性和实用性都很强的课程,学习的目的在于应用已有的理论基础和技术方法,实现对实际计算问题的计算机求解。本实验配合计算数值方法课堂教学,通过上机实践实验环节,巩固课堂和书本上所学的知识、加强实践能力、提高解决实际计算问题的水平、启发创新思想。其基本目的是:(1) 培养理论联系实际的思路,训练综合运用已经学过的理论和实际知识去分析和解决实际问题的能力。(2) 帮助学生全面消化已学的相关课程内容,深刻理解计

2、算数值方法课程的内涵,培养使用电子计算机进行科学计算和解决问题的能力。(3) 进行基本技能训练和巩固。使学生得到选择算法、编写程序、分析数值结果、写数值试验报告、课堂讨论等环节的综合训练。二、实验内容本实验指导书共包含6个基本实验,要求学生在8个实验课时内完成。为使实验更为有成效,需要写出实验报告,以此可作为计算机数值方法课程成绩评定的参考。(1) 方程求根熟悉使用二分法、迭代法、牛顿法、割线法等方法对给定的方程进行根的求解。选择上述方法中的两种方法求方程:f(x)=x4+2x2-x-4=0在1,1.5内的一个实根,且要求满足精度|x*-xn|<0.5×10-5(2) 线性方程

3、组的直接解法合理利用Gauss消元法、LU分解法、追赶法求解下列方程组: A=285077-69-84-65b=-34984-100-15-31-26-5-95-2530-86-34-430357-217-26-86-7588630-8595-472412-66-114-57-85450-1154340(n=5,10,100,)(3) 线性方程组的迭代解法使用雅可比迭代法或高斯-赛德尔迭代法对下列方程组进行求解。(4)矩阵特征值与特征向量问题使用幂法求A模为最大的特征值及其相应的特征向量。A=2351034361(5)代数插值使用拉格朗日插值法或牛顿插值法求解:已知f(x)在6个点的函数值如下

4、表所示,运用插值方法,求f(0.596)的近似值。x0.400.550.650.800.901.05f(x)0.410750.578150.696750.888111.026521.25386(6) 最小二乘法拟合多项式给定数据点(xi ,yi),用最小二乘法拟合数据的多项式,并求平方误差。xi00.50.60.70.80.91.0yi11.751.962.192.442.713.00三、实验要求(1) 应用结构化程序设计编出通用程序,源程序要有详细的注释和说明;(2) 比较计算结果,分析数值解误差的原因;(3) 实验完成,要求提交实验结果并写出报告,分析计算结果是否符合问题的要求,找出计算成

5、功的原因或计算失败的教训。四、示例程序(1)Gauss消元法#include "stdafx.h"#include "stdio.h"double a1515,a01515;double b15,b015,l15;int n;void displayA()printf("n");for(int j=1;j<=n;j+)for(int i=1;i<=n;i+) printf("a%d%d=%f ",j,i,aji);printf("b%d=%fn",j,bj);for(j=1;j<

6、;=n;j+) printf("l%d=%f ",j,lj);printf("n");void main()FILE *f;int i,j,k;f=fopen("Gaussdata.txt","r");fscanf(f,"%d",&n);for(i=1;i<=n;i+)for(j=1;j<=n;j+)fscanf(f,"%lf",&aij);a0ij=aij;fscanf(f,"%lf",&bi);b0i=bi;disp

7、layA();fclose(f);k=1;dofor(i=1;i<=n;i+)if(i=k) continue;li=a0ik/a0kk;for (j=k+1;j<=n;j+) akj=a0kj/a0kk;bk=b0k/a0kk;for(i=1;i<=n;i+)if(i=k) continue;for(j=k+1;j<=n;j+)aij=a0ij-li*a0kj;bi=b0i-li*b0k;displayA();for(i=1;i<=n;i+)for(j=k+1;j<=n;j+)a0ij=aij;b0i=bi;if(k=n) break;k+;while(1

8、);for(i=1;i<=n;i+)printf("b%2d=%lfn",i,bi);(2)追赶法#include "stdio.h"main()FILE *f;double a15,b15,c15,d15;double t;int i,n;/*/f=fopen("zgf.txt","r");fscanf(f,"%d",&n);fscanf(f,"%lf%lf%lf",&b1,&c1,&d1);for(i=2;i<=n-1;i+)f

9、scanf(f,"%lf%lf%lf%lf",&ai,&bi,&ci,&di);fscanf(f,"%lf%lf%lf",&an,&bn,&dn);fclose(f);/*/c1=c1/b1;d1=d1/b1;for(i=2;i<=n-1;i+)t=bi-ci-1*ai;ci=ci/t;di=(di-di-1*ai)/t;dn=(dn-dn-1*an)/(bn-cn-1*an);for(i=n-1;i>=1;i-) di=di-ci*di+1;printf("n*n"

10、);for(i=1;i<=n;i+)printf("d%2d=%lfn",i,di);(3)最小二乘法#include "stdafx.h"#include "stdio.h"#include "math.h"#define num 10float neiji(float bnum,float cnum) /*内积函数*/ int p;float nj=0;for (p=1;p<num;p+)nj+=cp*bp;return nj;float power(float &a,int n)float

11、 b=1;for(int i=0;i<n;i+)b*=a;return b;float xnum,ynum,sumXnum,sumYnum;void main() int i,j,n,index;char conti;FILE *f;conti=' 'printf("请输入已知点的个数n=n");scanf("%d",&n);printf("请输入x和y:");sumX1=sumY1=0;for(i=1;i<=n;i+) printf("x%d=",i);scanf("

12、%f",&xi);sumX1+=xi;printf("y%d=",i);scanf("%f",&yi);sumY1+=yi;printf("sumX1=%f",sumX1);printf("sumY1=%f",sumY1);printf("请输入拟和次数=");scanf("%d",&index);i = n;sumX0=i;for(i=2;i<=2*index;i+)for(j=1;j<=n;j+)sumXi+=power(xj

13、,i);printf("sumX%d=%f",i,sumXi);for(i=2;i<=index+1;i+)for(j=1;j<=n;j+)sumYi+=power(xj,i-1)*yj;printf("sumY%d=%f",i,sumYi);f=fopen("Gaussdata.txt","w");fprintf(f,"%in",index+1);for(i=0;i<=index;i+)for(j=i;j<=index+i;j+)fprintf(f,"%f ",sumXj);fprintf(f,"%fn",sumYi+1);fclo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论