ImageVerifierCode 换一换
格式:DOCX , 页数:15 ,大小:96.13KB ,
资源ID:11483603      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11483603.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数值分析论文几种插值方法的比较.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数值分析论文几种插值方法的比较.docx

1、数值分析论文几种插值方法的比较数值分析论文 几种插值方法的比较1插值法概述插值法是函数逼近的重要方法之一,有着广泛的应用!在生产和实验中,函数或者其表达式不便于计算复杂或者无表达式而只有函数在给定点的函数值(或其导数值) ,此时我们希望建立一个简单的而便于计算的函数,使其近似的代替,有很多种插值法,其中以拉格朗日(Lagrange)插值和牛顿(Newton)插值为代表的多项式插值最有特点,常用的插值还有Hermite插值,分段插值和样条插值.这里主要介绍拉格朗日(Lagrange)插值和牛顿(Newton)插值和埃尔米特插值(Hermite插值)。2插值方法的比较21拉格朗日插值2.1.1基本

2、原理构造次多项式,这是不超过次的多项式,其中基函数: 显然满足 =此时,误差 其中且依赖于,.很显然,当,插值节点只有两个,时 其中基函数 = , = 2.1.2优缺点可对插值函数选择多种不同的函数类型,由于代数多项式具有简单和一些良好的特性,故常选用代数多项式作为插值函数。利用插值基函数很容易得到拉格朗日插值多项式,公式结构紧凑,在理论分析中甚为方便,但当插值节点增减时全部插值基函数均要随之变化,整个公式也将发生变化,这在实际计算中是很不方便的,为了克服这一缺点,提出了牛顿插值可以克服这一缺点。2.1.3数值实验程序如下:#include#define TRUE 1#define FALSE

3、 0#define N 10#define M 2void main(void) double xN,yN,a,lN; int i,j,n,flag; double answer=0.00f; do printf(创建Lagrange插值多项式共用到N组(X,Y)值,请输入N:); scanf(%d,&n); if(n=M) flag=FALSE; else if(nN|n=1) printf(对不起,你输入错误!n请确保你输入的N满足2=N=%d.,N); printf(n); flag=TRUE; while(flag=TRUE); printf(n请输入需要计算的X值:); scanf(

4、%lf,&a); for(i=0;in;i+) printf(请输入第%d组(X,Y)的值:,i+1); scanf(%lf%lf,x+i,y+i); for(i=0;in;i+) li=1.0f; for(j=0;jN;j+) if(i!=j) li*=(a-xj)/(xi-xj); else continue; answer+=li*yi; printf(f(%.3lf)=%lfn,a,answer); 2.2牛顿插值2.2.1基本原理构造n次多项式称为牛顿插值多项式,其中 (二个节点,一阶差商) (三个节点,二阶差商) (n+1个节点,n阶差商)注意:由于插值多项式的唯一性,有时为了避免

5、拉格朗日余项Rn(x)中n+1阶导数的运算,用牛顿插值公式,其中.2.2.2优缺点牛顿插值法具有承袭性和易变性的特点,当增加一个节点时,只要再增加一项就可以了即而拉格朗日插值若要增加一个节点时全部基函数都需要重新算过。牛顿插值法既适合于用来计算函数值,也适合于做理论推导,比如说可用来推导微分方程的数值求解公式。2.2.3数值实验程序如下:#include stdafx.h#includevoid main(int argc,char* argv) int i1,i2,p,j,k,w,n=0; float x100,f100100,f1100,x1,x2,N1,N2=1.0,N3=0.0; pr

6、intf(请输入节点个数w=100: ); scanf(%d,&w); for(n=0;nw;n+) printf(x=); scanf(%f,&xn); printf(f(x)=); scanf(%f,&f1n); for(n=0;nw;n+) fn0=f1n; for(j=1;jn;j+) k=j; for(p=0;kn;k+,p+) fkj=(fkj-1-fk-1j-1)/(xk-xp); printf( xi f(xi) 1阶差商); for(i1=1;i1n-1;i1+) printf( %d阶差商,(i1+1); for(i1=0;i1=0) if(xi1=10&xi1=100)

7、printf(n%.5f ,xi1); else printf(n%.5f ,xi1); else if(xi1=-10) printf(n%.5f ,xi1); else if(xi1=-100) printf(n%.5f ,xi1); else printf(n%.5f ,xi1); for(i2=0;i2=0) if(fi1i210) if(fi1i2=100) printf(%.5f ,fi1i2); else printf(%.5f ,fi1i2); else printf(%.5f ,fi1i2); else if(fi1i2=-10) if(fi1i2=-100) printf(

8、%.5f ,fi1i2); else printf(%.5f ,fi1i2); else printf(%.5f ,fi1i2); printf(nN%d(x)=%.5f+,n-1,f00); for(i1=1;i1n;i1+) for(j=1;jn;j+) if(i1=j) if(fi1j0) printf(%.5f),fi1j); else printf(%.5f,fi1j); for(k=0;kj;k+) printf(x-%.5f),xk); printf(n); if(jn-1) printf( +); printf(输入节点x1(用3次多项式计算), scanf(%f%f,&x1,

9、&x2); for(i1=0;i1xi1) break; if(n-i1)=3) i2=i1; else i1=i1-2; if(i1=0) i2=i1; else i2=i1+1; i1=i2; N1=fi10; for(j=1;j4;j+,i1+) N2=N2*fi1+1i1+1; for(k=i2;ki2+j;k+) N2=N2*(x1-xk); N3=N2+N3; N2=1.0; N3=N1+N3; printf(N3(%.5f)=%.5fn,x1,N3); N3=0.0; N1=f00; for(i1=1;i1n;i1+) for(i2=0;i2i1;i2+) N2=N2*(x2-x

10、i2); N2=N2*fi1i1; N3=N2+N3; N2=1.0; N3=N1+N3; printf(N%d(%.5f)=%.5fn,n-1,x2,N3); 2.3 埃尔米特插值2.3.1基本原理设在个互不相同的节点处,已知 ,.要求插值多项式满足: ,.这类问题与前面的插值问题的区别在于不仅要求在节点上的函数值相等,而且还要求导数也相等,甚至要求高阶导数也相等.求次数不超过的多项式使得: 1),. 2),.类似求Lagrange插值多项式的方法,通过构造基函数的方法.若能够构造出基函数,满足条件 ;,. = ;,.则容易得到如下:=确定基函数,:=,.=,. 插值余项,若在内的阶导数存在

11、,则插值余项满足=,其中且与有关.2.3.2优缺点 Hermite插值多项式具有唯一性和承袭性的特点,对相应于条件的,的组合形式可以找出尽可能多的条件给出的根,根据多项式的总阶数和根的个数写出表达式,但表达式具有唯一性,可以根据尚未利用的条件解出表达式中的待定系数,在这里待定系数法任适用,但插值节点多时比较麻烦.2.3.3数值实验程序如下:#includestruct HINTEPint n;double *x;double *y;double *dy;double t;hp,ha;double hermite(struct HINTEP *hp)int num,i,j;double *x,*

12、y,*dy,pio,z,p,q,s;num=hp-n;x=hp-x;y=hp-y;dy=hp-dy;pio=hp-t;z=2.0;for(i=1;i=num;i+)s=1.0;for(j=1;j=num;j+)if(j!=i) s*=(pio-xj-1)/(xi-1-xj-1);s=s*s;p=0.0;for(j=1;j=num;j+)if(j!=i) p+=1.0/(xi-1-xj-1);q=yi-1+(pio-xi-1)*(dyi-1-2.0*yi-1*p);z+=q*s;return(z);main()double x10=3.0,5.0,8.0,13.0,17.0,25.0,27.0,29.0,31.0,35.0;double y10=7.0,10.0,11.0,17.0,23.0,18.0,13.0,6.0,3.0,1.0;double dy10;int i;struct HINTEP ha=10,x,y,dy,19.0;for(i=0;i=9;i+)dyi=-yi;printf(npio=%6.3f,z=%enn,ha.t,hermite(&ha);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1