数值分析第二次实习报告.docVIP

  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)通过编程计算实践,体会和理解Lagrange插值公式、Newton插值公式、分段插值公式和Hermite插值公式。 (2)通过编程计算实践,搞清Larange插值、Newton插值、分段插值和Hermite插值的基本计算流程。 (3)通过编程计算实践,掌握和提高Newton插值、Hermite插值算法流程的控制技术。 (4)通过各种方法对同一题目的求解,体会各种方法的精度差异。 二、实习步骤: (1)分别画出Lagrange插值公式、Newton插值公式、分段插值公式和Hermite插值公式的算法流程图。 (2)分别用Lagrange插值公式和Newton插值公式通过编程计算函数f(x)的近似值。 已知对于f(x),有数据表如下: xi 0 0.5 1.0 2.0 f(xi) 1.00000 1.64872 2.71828 7.38906 ① 对对x0=0,x1=0.5利用线性插值计算f(0.25)的近似值;对x0=0.5,x1=1利用线性插值计算f(0.75)的近似值; ② x0=0,x1=0.5 ,x2=2利用二次插值计算f(0.25)和f(0.75)的近似值; ③ x0=0,x1=0.5 ,x2=2求f(x)的Hermite插值多项式; ④ 析和比较各插值算法的精度差异; (3) 通过编程计算函数f(x)的近似值。已知对与f(x)= x^(0.5),有数据表如下: xi 2.0 2.1 2.2 2.3 2.4 f(xi) 1.414214 1.449138 1.483340 1.516575 1.549193 ① 算各阶插值多项式在不同点的值:f(2.05) ,f(2.15), f(2.45); ② 用分段线性插值和分段抛物线插值计算(1)中的函数值; ③ 析和比较算法的效率差异和精度差异(同时注意插值点的位置与精度之间的关系); (4)不同方式方法编程给出计算拉格朗日插值和牛顿插值的算法,分析和比较两种算法的编程难易以及算法的效率差异和总计算量之间的关系; 三、算法流程图: (一)拉格朗日插值程序算法流程图 (二)牛顿插值法程序流程图 (三)分段插值法流程图 (四)Hermite插值法流程图 四、编程计算f(x)= e^(x)的近似值 (一)Lagrange插值: (1)拉格朗日插值程序算法描述 (1)程序开始; (2)定义两个数组a[100],b[100]; (3)输入插值节点控制数n; (4)输入n+1个插值点; (5)输入所求插值点的x值,然后执行一下程序; for(i=0;i=n;i++) { tmp=1; for(j=0;j=n;j++) if(i=j)continue; else tmp=tmp*(x-a[j])/(a[i]-a[j]); f=f+tmp*b[i]; (6)输出所得到插值点的值f_x; (7)程序结束。 (2)拉格朗日插值程序源代码 #includeiostream #includecmath using namespace std; int main() { int i,j,n; double a[100],b[100]; cout请输入插值节点控制数:nendl; cinn; cout请输入n+1个插值点:endl; for(i=0;i=n;i++) { cina[i]b[i]; } double f,x,tmp; cout请输入所求函数值对应的x点endl; cinx; f=0; for(i=0;i=n;i++) { tmp=1; for(j=0;j=n;j++) if(i==j)continue; else tmp=tmp*(x-a[j])/(a[i]-a[j]); f=f+tmp*b[i]; } cout所求函数值为f_x=fendl; return 0; (二)Newton插值: (1)牛顿插值算法描述 (1)输入:插值截点控制数n,插值序列(xi,yi),要计算的函数点x0; (2)形成差商表d[k](k=1,2,……n); (3)置初始值t=1,newton=f(x0); (4)i=1,2,……n t=(u-x(i-1))*t, newton=newton+t*g[i] (5)输出f(u)的插值N(u)=newton。 (2)牛顿插值法程序源代码 #includeiostream #includecmath using namespace std; int main() { int i,j,n; double a[100],b[100]; cout请输入插值节点控制数:nendl; cinn; cout请输入n+1个插值点:endl; for(i=0

文档评论(0)

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

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

1亿VIP精品文档

相关文档