



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
牛顿插值算法与实现牛顿真是牛,拉格朗日插值法只能算是数学意义上的插值,从插值基函数的巧妙选取,已经构造性的证明了插值法的存在性和惟一性,但是从实现的角度看并不很好,而牛顿很好的解决了这个问题。牛顿插值是基于下面这些的公式:fx0,x1,.xk=(fx1,.xk-fx0,.xk-1)/(xk-x0)fx=f(x)f(x)=fx0+fx0,x1(x-x0)+fx0,x1,x2(x-x0)(x-x1)+.fx0,.xn(x-x0).(x-xn-1)+Rn(x)前两个是均差的递推关系式,而后一个就是牛顿插值公式,其中N(x)=f(x)-Rn(x),即目标多项式,Rn(x)是n阶插值余项,我们就是用N(x)去近似f(x)。可以构造这样一个均方差表:xk f(xk) 一阶均差 二阶均差 .x0 f(x0)x1 f(x1) fx0,x1x2 f(x2) fx1,x2 fx0,x1,x2.如果有n个点插值,表会有(n*n)/2+n个表项,如果直接编程会有O(n*n)的空间复杂度,编程时做个简单的改进,不难发现在这个表中只有部分数据有用,对角线(斜行)它们是目标值,用来表示多项式的,左边的两纵行(实际上只需要x一行)以及最底下的一行,表示当前插值的状态。经过改进后只需要O(n)的空间复杂度。两个过程:1,新增加一个点时的更新。只须更新最底下一行数据,其递推关系由均差公式给出,最后算出高一队的均差值,需时O(n)2,插入点完成后如何计算多项式在另外给定点的值N(x)。由牛顿插值公式,最终的表达式为:N(x)=fx0+fx0,x1(x-x0)+fx0,x1,x2(x-x0)(x-x1)+.fx0,.xn(x-x0).(x-xn-1)如果直接将它展开,再算实在麻烦,实际上大可不必这样做,还记得多项式求值的秦九韶算法吗?将多项式叠起来,从内层括号往外一层层拨开,n次多项多的计算,只需要做n次乘法,同样的思想,将上式改写成:N(x)=fx0+(x-x0)fx0,x1+(x-x1)fx0,x1,x2+(x-x2).fx0,.xn-1+(x-xn-1)fx0,.xn.就可以同样简单的计算了,时间复杂度O(n)综合起来的性能:对于n个点的插值,产生多项式的时间复杂度是O(n*n),最终进行一个点的计算的时间复杂度是O(n)。C+代码实现/ file: newton.h#ifndef NEWTON_DEF_#define NEWTON_DEF_class CNewtondouble *f2;double *x;int max;int n;public:CNewton(int MaxN);/MaxN 为最大插值点数 可任意设定CNewton();void InsertPoint(double X,double Y);double GetValue(double X);#endif/ file: newton.cpp#include newton.h#include assert.h#include math.h#ifndef NULL#define NULL 0#endifCNewton:CNewton(int MaxN)max=MaxN+1;n=0;x=new doublemax;f0=new doublemax;f1=new doublemax;assert(x!=NULL);assert(f0!=NULL);assert(f1!=NULL);CNewton:CNewton()if(x)deletex;if(f0)deletef0;if(f1)deletef1;void CNewton:InsertPoint(double X,double Y)int i;double fw;assert(nmax);/重复点检查for(i=0;in;+i)if(fabs(X-xi)1e-5)return;/如果确保不会有重复点可删去上面语句xn=X;fw=Y;for(i=1;i=0;-i)s=s*(X-xi)+f0i;return s;/ file: test cpp#include newton.h#include iostream.hint main(void)int n;double x,y;CNewton nt(20);cout输入插入点个数(nn;for(int i=1;i=n;+i)cout输入第ix;couty;nt.Insert
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年学历类自考专业(法律)国际私法-民法学参考题库含答案解析(5卷)
- 2025年学历类自考专业(工商企业管理)国际企业管理-金融理论与实务参考题库含答案解析(5卷)
- 2025年学历类自考专业(国贸)概率论与数理统计(经管类)-国际技术贸易参考题库含答案解析(5卷)
- 2025年学历类自考专业(公共关系)现代谈判学-企业文化参考题库含答案解析(5卷)
- 2025瓶装水销售合同
- 2025年学历类成考高起点英语-英语参考题库含答案解析(5卷)
- 2025年学历类成考专升本-医学综合参考题库含答案解析(5卷)
- 2025年医卫类放射医学(师)-相关专业知识参考题库含答案解析(5卷)
- 2025年医卫类医学检验(师)基础知识-相关专业知识参考题库含答案解析(5卷)
- 2025年医卫类内科主治医师相关专业知识-基础知识参考题库含答案解析(5卷)
- 商户收单业务培训
- 高校辅导员培训PPT课件:班干部的选任与培训
- 26个英文字母书写动态演示课件
- 分镜头脚本设计-课件
- 拧紧知识培训课件
- 非参数统计课件
- 区妇联家庭教育工作的调研报告
- 强直性脊柱炎中医治疗
- 劳保用品发放表格及管理
- 江苏省盐城市各县区乡镇行政村村庄村名居民村民委员会明细
- 深锥沉降槽地面倒装工法
评论
0/150
提交评论