数值分析实验.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文档。上传文档
查看更多
数值分析实验

数值分析实验第二章实验内容:拉格朗日差值问题描述: 利用拉格朗日差值来计算Sin函数的值,并比较插值的值与真实值的误差。计算函数表sinXi,其中Xi=i*3.1415/20,i=0,1,……,10。用一次和二次拉格朗日差值公式对函数表进行差值得L1(Xj),L2(Xj),其中Xj=3.1415*(j+0.5)/20,j=0,1,…….,8。计算函数值Yi=sin(Xj),j=0,1,……,8。计算Ei(1)=yi-L1(Xj);Ei(2)=yi-L2(Xj);i=0,1,….,8.原码算法:#include math.h#include iostream.h#define A 3.141592654int main(){double a[11];cout原始的Sin函数的值是:endl;for(int i=0;i11;i++){a[i]=sin(A*i/20); couta[i]\t;}coutendl固定节点处的一次拉格朗日差值的值是:endl;double b[8];for(int j=0;j8;j++){b[j]=(a[j]+a[j+1])/2; coutb[j]\t;}coutendl固定节点处的二次拉格朗日差值的值是:endl;double c[8];for(int s=0;s8;s++){c[s]=(3*a[s]+6*a[s+1]-a[s+2])/8;coutc[s]\t;}coutendl插值节点出的Sin真值是:endl;double d[8];for(int t=0;t8;t++){d[t]=sin(A*(t+0.5)/20); coutd[t]\t;}double f[8],h[8];coutendl一次拉格朗日插值与真值的误差是:endl;for(int p=0;p8;p++) {f[p]=b[p]-c[p];coutf[p]\t;}coutendl二次拉格朗日插值与真值的误差是:endl;for(int q=0;q8;q++){h[q]=b[q]-d[q];couth[q]\t;}coutendl;return 0;}测试结果:心得: 在使用拉格朗日差值时,如果区间比较大时,而且不适合用高阶拉格朗日差值时,我们可以先利用样条的思想,把大区间分成m小段,然后在每个小区间上使用低阶的拉格朗日差值,这样得到的结果较之前就精确了很多。从程序运行的结果可以看出这样的结论。第三章实验内容:自动选取步长的龙贝格积分问题描述: 利用龙贝格积分程序,自动选取步长计算下面的三个积分:(1)1.110720735(2)0.500000000(3)算法原码:#include iostream.h#include stdio.h#include math.hdouble F1(double x);//被积分函数void LBG(double a,double b,double real);//龙贝格积分函数可输入积分上下限和函//数真值#define n 100#define PI 3.141592654void main(){LBG(0,1,1.110720735);//可以修改函数F1的return值来球不同的函数积分}//龙呗格积分函数体void LBG(double a,double b,double real){int i,j;double h=b-a;double r[3][n]={0.0};r[1][1]=0.5*h*(F1(a)+F1(b));printf(%.7f ,r[1][1]);coutendl;for(i=2;i=n;i++){r[2][1]=0.5*r[1][1];for(int k=1;k=pow(2,i-2);k++)r[2][1]+=F1(a+(k-0.5)*h)*0.5*h;for(j=2;j=i;j++)r[2][j]=r[2][j-1]+(r[2][j-1]-r[1][j-1])/(pow(4,j-1)-1);printf(%.7f ,r[2][i]);for(j=1;j=i;j++){r[1][j]=r[2][j];}if(fabs(r[2][i]-real)0.000001) break;//满足精度要求时,自动跳出coutendl;h=h/2;}}double F1(double x){return (1+x*x)/(1+x*x*x*x);//可修改的函数}测试结果:第一个积分求解情况,真值为1.110720735,控制误差为0.000001.(2)第二个积分求解情况,真值为0.500000000,控制误差为0.000001.(3) 第三个积分求解情况,真值为,控制误差为0.000001.心得: 在求解积分时,由于电脑的字长限制只能表示一部分数据

文档评论(0)

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

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

1亿VIP精品文档

相关文档