计算方法论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
****学校课程考查论文
课程名称:《计算方法》
学院:
专业:
班级:
姓名:
学号:
论文题目:《我对拉格朗日公式的认识》成绩:
我对拉格朗日公式的认识
一、问题背景
(一)背景
在生产和科研中出现的函数是多种多样的,常常会遇到这样的情况:在某个实际问题中,虽然可以断定所考虑的函数在区间[a,b]上存在且连续,但却难以找出它的解析表达式,只能通过实验和观测得到在有限个点的函数值(即一张函数表)。显然,要利用这张函数表来分析函数的性态,甚至直接求出其他一些点的函数值可能是非常困难的。在有些情况
下,虽然可以写出函数的解析表达式,但由于结构相当复杂,使用起来很不方便。插值法是解决此类问题的一种比较古老的、然而却是目前常用的方法。
许多实际问题中都用函数来表示某种内在联系或规律,而不少函数都只能通过实验和观测来了解。如对实践中的某个物理量进行观测,在若干个不同的地方得到相应的观测值,拉格朗日插值法可以找到一个多项式,其恰好在各个观测的点取到观测到的值。这样的多项式称为拉格朗日插值多项式。
(二)相关数学知识
插值法利用函数f (x)在某区间中若干点的函数值,作出适当的特定函数,在这些点上取已知值,在区间的其他点上用这特定函数的值作为函数f (x)的近似值。如果这特定函数是多项式,就称它为插值多项式。
在多项式插值中,最常见、最基本的问题是:一次数不超过n次的代
数多项式P n(x)=a0+a1x+…+a n x (1)
使P n(x i)=y i (2)
其中,a0,a1,…a n为实数;x i,y i意义同前。
插值多项式的存在唯一性:若节点x0,x1,x2…x n互不相同,则(2)式满足插值条件式的n次多项式(1)存在且唯一。
可以写出n+1个n次多项式。容易看出,这组多项式仅与节点的取法有关,我们称之为n次插值基函数。
二、方法综述
某多项式函数,已知给定的k+1个取值点:(x0,y1)…(x k,y k),其中x i对应着自变量的位置,而y i对应着函数在这个位置的取值。
假设任意两个不同的x j都互不相同,那么应用拉格朗日插值公式所得到的拉格朗日插值多项式为:
其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为:
(x)+(x)+…+(x)
拉格朗日基本多项式l j(x)的特点是在x j上取值为1,在其它的点x i,i≠j上取值为0。
当n=1时,即得线性插值公式L1(x)=y0+y1又叫线性插值;
当n=2时,又可得抛物线插值公式
L 2(x)=y 0 +y 1 +y 0
又叫三点插值或二次插值。
三、 程序设计
(一)
n,x,,(i=0,1,
(二)程序:
以下题为例:
从函数表
出发,用拉格朗日插值法计算f(0.15),f(0.31),f(0.47)
程序如下:
#include
void main( )
{ int j,k,n;
float p,x,y;
float a[6]={0.0,0.1,0.195,0.3,0.401,0.5};
float b[6]={0.39894,0.39693,0.39142,0.38138,
0.36812,0.35206}; //定义函数数组
printf("Please enter:x,n\n");
scanf("%f ,%d",&x,&n); //输入需要求得值
y=0;
for(k=0;k<=n;k++)
{ p=1;
for(j=0;j<=n;j++)
{ if(k!=j) //判断k与j是否相等
p=p*(x-a[j])/(a[k]-a[j]);
//应用Lagrange插值多项式
}
y=y+p*b[k];
}
printf("x=%.2f,y=%.5f\n",x,y); //输出x,y
}
(三)程序运行
运行结果如下:(截屏)
四、综合分析
拉格朗日插值法的公式结构整齐紧凑,在理论分析中十分方便。
然而在计算中,当插值点增加或减少一个时,所对应的基本多项式就需要全部重新计算,于是整个公式都会变化,非常繁琐,这时可以用重心拉格朗日插值法或牛顿插值法来代替;此外,当插值点比较多的时候,拉格朗日插值多项式的次数可能会很高,因此具有数值不稳定
的特点,也就是说尽管在已知的几个点取到给定的数值,但在附近却会和“实际上”的值之间有很大的偏差,解决的办法是分段用较低次数的插值多项式。