拉格朗日插值和牛顿插值多项式的C程序算法毕业论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本科生毕业论文

题目: 拉格朗日插值和牛顿插值多项式的C程序算法

原创性声明

本人郑重声明: 所提交的学位论文是本人在导师指导下, 独立进行研究取得的成果. 除文中已经注明引用的内容外, 论文中不含其他人已经发表或撰写过的研究成果, 也不包含为获得**大学或其他教育机构的学位证书而使用过的材料. 对本文的研究做出重要贡献的个人和集体, 均已在文中以明确方式标明. 本人承担本声明的相应责任.

学位论文作者签名: 日期

指导教师签名: 日期

目录

拉格朗日插值多项式的C程序算法 (1)

1引言 (1)

1.1插值问题的提出 (1)

1.2插值法 (2)

1.3插值法思想 (2)

2拉格朗日插值法 (3)

2.1拉格朗日插值法的由来 (3)

2.2n次插值基函数 (4)

2.3拉格朗日插值多项式 (4)

3牛顿插值法 (5)

3.1均差: (5)

3.2牛顿插值多项式: (6)

4C程序设计 (7)

4.1算法设计: (7)

4.2程序源码编写 (8)

5程序检测 (12)

5.1对拉格朗日插值的检测 (12)

5.2对牛顿插值的检测 (13)

总结 (15)

参考文献 (16)

致谢 (17)

摘要

本论文着重研究了用C语言编写程序计算拉格朗日插值和牛顿插值的方法。在前人已有的研究成果的基础上,首先介绍了拉格朗日插值和牛顿插值的思想和方法,通过添加可以循环计算功能和输入非法数值时的纠错功能,改进了已有文献的方法,对其进行了推广,使之更加的合理和完美,并且通过实际的例子进行了具体的验证。最后,总结了一下本论文的主要研究成果和应用前景。

关键词:拉格朗日插值,牛顿插值,C算法,精确解

Abstract

This article discuss the method to calculate Lagrange interpolation and Newton interpolation with C program. Base on the results of predecessors' research, firstly, this article introduces the thoughts and methods of Lagrange interpolation and Newton interpolation. Improving the old method by adding functions which can repeatedly computing interpolation and correct illegal data. Then spreading it and making it more reasonable and perfect, checking it with some examples. Finally, summing up the main results of this article and application prospect.

Key words:Lagrange interpolation; Newton interpolation ; C program;

拉格朗日插值多项式的C 程序算法

1引言

插值法是一种古老的数学研究方法,他的产生来自与社会的生产实践活动。在我国,早在一千多年前的隋唐时期,制定历法时,就应用了二次插值的方法。隋朝刘焯将等距节点二次插值应用于天文计算。但是,终究没有形成系统的理论。插值理论都是10世纪微积分产生以后渐渐发展起来的。拉格朗日插值和牛顿插值都是优秀的重要研究成果。《数值分析》[1]对此作了详细介绍,最近50多年来计算机技术的飞速发展和广泛应用,以及轻重工业等各方面实际问题的需要,促使插值法得到了更进一步的发展。

之前也有不少关于拉格朗日插值和牛顿插值的C 程序算法,但是,经过实际运用发现都有各种各样的缺点,主要分为以下两种:

1、每次只能执行一次,算完一次之后,就会出现“press anykey to continue ”,从而没法在进行下一次的计算;

2、没有纠错功能,通常情况下,为了计算的精确,我们这一个程序一般只用于计算20组以内的(即不超过20个节点的),当超过之后,会产生较大误差,甚至用户输入负组数之后,程序崩溃,即程序的健壮性没有设计好;

本算法在尽量弥补这两个不足的同时,也注意尽量优化程序,使占用的资源和运算的时间不会明显增加。

1.1插值问题的提出

在实际生活中,我们常用()y f x =来表示某种内在的数量关系,其中很多数据可以通过实验或观测得到。这样虽然()f x 在给定的区间[],a b 上是存在的,但

是也仅仅能够得到[],a b 上的一系列点i x 的函数值()i i y f x =(0,1,2,)i n =…,。但这

也只能刻画有限的情形。

为了研究函数整体的变化规律,以及实际的需要,我们往往要求出不再[],a b 上的情形。因此我们常常会试着找出一个既能方便运算,又能和()f x 比较接近的函数()P x 。为了计算的方便,我们一般选一类比较简单的函数作为()P x ,使

得()P x 满足()i P x =()i f x (0,1,2,)i n =…,。

这样确定的函数()P x 就是我们想要得到的插值函数。

1.2插值法

《拉格朗日平均插值法》[2]介绍,当一些实际问题用数学函数关系来描述时,

往往没有明显的解析表达式,只能根据实验观测或其他途径提供一些离散点处的函数值和导数,有时尽管有表达式,却比较复杂,不便于研究和使用。对此,人们希望构造一个简单的连续函数p(x)来近似替代所考察的函数f(x),使问题得到简化。

用代数多项式作为研究插值的工具,进而得出较为精确结果的方法,就是代数插值。当给定一张具有n +1个点的函数表以后,我们要构造一个函数()y f x =,这样的()f x 满足两个条件:第一,()f x 是一个不超过n 次的多项式;第二,在

给定的点i x (0,1,.i n =…,

)上()f x 的值必须与给定的值相同。 设函数()y f x =在区间[],a b 上有定义,且已知在点01n a x x x b ≤<<<≤…上的值0y ,1y ,……,n y 。如果有一个简单的函数()p x ,使得

()i P x =i y ,0,1,.i n =…,

成立,就称()p x 是()F x 的插值函数,点01,,,n x x x 称为插值节点,包含插值节点节点的区间[],a b 称为插值区间,求得函数()p x 的方法称为插值法。

几何意义:从几何上看,插值法就是求曲线y =()p x ,使其通过给定的1n +个点

(,)i i x y ,0,1,.i n =…,

,并用它近似已知曲线y =()f x 。 1.3插值法思想

已知在区间[],a b 上有1n +个点,01n a x x x b ≤<<<≤…

以及他们对应的函数值()i i y f x =(0,1,2,)i n =…,

,下面我们求次数不超过n 的多项式()P x ,使得()i P x =i y (0,1,2,)i n =…,

。 根据已知的条件,我们可以得到关于系数0a ,1a ,……,n a 的1n +元线性方程组

相关文档
最新文档