数值分实验.doc

  1. 1、本文档共24页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
完全原创! 计算机106 李凯周 102538 实验一 舍入误差与数值稳定性 实验目的与要求: 通过上机编程,复习巩固以前所学程序设计语言及上机操作指令 通过上机计算,了解舍入误差所引起的数值不稳定性 实验内容: 通过正反两个实例的计算,了解利用计算机进行数值计算中舍入误差所引起的数值不稳定性,深入理解初始小的舍入误差可能造成误差积累从而对计算结果的巨大影响。 通过实际编程,了解运算次序对计算结果的影响,了解实数运算符合的结合律和分配律在计算机里不一定成立。 实验题目: 结果分析: 由输出结果可得,由于舍入误差的积累,递减法的精度明显高于递加法。 实验心得: 由于舍入误差的存在,误差在递归运算中会积累,可以采用使用高精度的数据类型来减小误差。 实验二 插值法 目的与要求: 熟悉拉格朗日插值多项式和牛顿插值多项式,注意其不同特点; 实验内容: 通过拉格朗日插值和牛顿插值多项式的两个实例的计算,了解两种求解方法,分析他们的优缺点。 实验题目: 按下列数据 作五次插值,并求x=0.46,x=0.55,x=0.60时的函数近似值 编写一个用牛顿前插公式计算函数值的程序,要求先输出差分表,再计算x点的函数值,并应用于下面的问题: 求x=21.4时的三次插值多项式的值 用事后估计法控制精度 实验题目: 用龙贝格方法上机计算(按学号尾数mod 3 选择): 源程序: #include stdio.h #include stdlib.h #include math.h double romberg(double (*f)(double), double a, double b,double e) { int i, j ; double *temp ; double result ; double h ; int n ; temp = (double *)calloc(5,sizeof(double)) ; temp[0] = ((*f)(a)+(*f)(b))*(b-a)/2.0 ; h=b-a ; n=1 ; for(i=0;i5-1;i++) { result=0 ; h/=2.0 ; n*=2 ; for(j=1;jn;j+=2) { result+=(*f)((a*j+b*(n-j))/n) ; } temp[i+1]=temp[i]/2.0+h*result ; } for(i=0;i5-1;i++) temp[i]=temp[i+1]*4.0/3.0-temp[i]/3.0 ; for(i=0;i5-2;i++) temp[i]=temp[i+1]*16.0/15.0-temp[i]/15.0 ; for(i=0;i5-3;i++) temp[i]=temp[i+1]*64.0/63.0-temp[i]/63.0 ; while (fabs(temp[0]-temp[1])e) //控制精度 { for (i=0;i4;i++) { temp[i]=temp[i+1]; } result=0 ; h/=2.0 ; n*=2 ; for(j=1;jn;j+=2) { result+=(*f)((a*j+b*(n-j))/n) ; } temp[4]=temp[3]/2.0+h*result ; temp[3]=temp[4]*4.0/3.0-temp[3]/3.0 ; temp[2]=temp[3]*16.0/15.0-temp[2]/15.0 ; temp[1]=temp[2]*64.0/63.0-temp[1]/63.0 ; } result=temp[0]; free(temp) ; return result ; } #define M_PI_2 1.57079632679489661923 double fun(double x) { return sin(2*cos(x))*sin(x)*sin(x) ; } void main(void) { printf(romberg =%f\r\n,romberg(fun,0,M_PI_2,0.000001)) ; getchar() ; } 运行结果: 结果分析: 程序只在屏幕上打印了输出结果,而有关romberg算法的函数调用有最后一个参数作为精度控制。 实验四 常微分方程数值解法 目的与要求: 熟悉求解常微分方程初值问题的有关方法和理论,主要是欧拉法和改进欧拉法 ; 会编制上述方法

文档评论(0)

kaiss + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档