文档介绍:目录
拉格朗日插值多项式的C程序算法 1
1引言 1
1
2
2
2拉格朗日插值法 3
3
4
4
3牛顿插值法 5
: 5
: 5
4C程序设计 6
: 7
7
5程序检测 12
12
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 puting 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;
1引言
插值法是一种古老的数学研究方法,他的产生来自与社会的生产实践活动。在我国,早在一千多年前的隋唐时期,制定历法时,就应用了二次插值的方法。隋朝刘焯将等距节点二次插值应用于天文计算。但是,终究没有形成系统的理论。插值理论都是10世纪微积分产生以后渐渐发展起来的。拉格朗日插值和牛顿插值都是优秀的重要研究成果。《数值分析》[1]对此作了详细介绍,最近50多年来计算机技术的飞速发展和广泛应用,以及轻重工业等各方面实际问题的需要,促使插值法得到了更进一步的发展。
之前也有不少关于拉格朗日插值和牛顿插值的C程序算法,但是,经过实际运用发现都有各种各样的缺点,主要分为以下两种:
1、每次只能执行一次,算完一次之后,就会出现“press anykey to continue”,从而没法在进行下一次的计算;
2、没有纠错功能,通常情况下,为了计算的精确,我们这一个程序一般只用于计算20组以内的(即不超过20个节点的),当超过之后,会产生较大误差,甚至用户输入负组数之后,程序崩溃,即程序的健壮性没有设计好;
本算法在尽量弥补这两个不足的同时,也注意尽量优化程序,使占用的资源和运算的时间不会明显增加。
在实际生活中,我们常用来表示某种内在的数量关系,其中很多数据可以通过实验或观测得到。这样虽然在给定的区间上是存在的,但是也仅仅能够得到上的一系列点的函数值。但这也只能刻画有限的情形。
为了研究函数整体的变化规律,以及实际的需要,我们往往要求出不再上的情形。因此我们常常会试着找出一个既能方便运算,又能和比较接近的函数。为了计算的方便,我们一般选一类比较简单的函数作为,使得满足=。这样确定的函数就是我们想要得到的插值函数。
《拉格朗日平均插值法》[2]介绍,当一些实际问题用数学函数关系来描述时,往往没有明显的解析表达式,只能根据实验观测或其他途径提供一些离散点处的函数值和导数,有时尽管有表达式,却比较复杂,不便于研究和使用。对此,人们希望构造一个简单的连续函数p(x)来近似替代所考察的函数f(x),使问题得到简化。
用代数多项式作为研究插值的工具,进而得出较为精确结