实验二 拉格朗日插值龙格现象
数值分析实验报告--实验2--插值法

1 / 21数值分析实验二:插值法1 多项式插值的震荡现象1.1 问题描述考虑一个固定的区间上用插值逼近一个函数。
显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。
我们自然关心插值多项式的次数增加时, 是否也更加靠近被逼近的函数。
龙格(Runge )给出一个例子是极著名并富有启发性的。
设区间[-1,1]上函数21()125f x x=+ (1)考虑区间[-1,1]的一个等距划分,分点为n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为201()()125nn ii iL x l x x ==+∑(2)其中的(),0,1,2,,i l x i n =是n 次拉格朗日插值基函数。
实验要求:(1) 选择不断增大的分点数目n=2, 3 …. ,画出原函数f(x)及插值多项式函数()n L x 在[-1,1]上的图像,比较并分析实验结果。
(2) 选择其他的函数,例如定义在区间[-5,5]上的函数x x g xxx h arctan )(,1)(4=+=重复上述的实验看其结果如何。
(3) 区间[a,b]上切比雪夫点的定义为 (21)cos ,1,2,,1222(1)k b a b ak x k n n π⎛⎫+--=+=+ ⎪+⎝⎭(3)以121,,n x x x +为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析2 / 21原因。
1.2 算法设计使用Matlab 函数进行实验, 在理解了插值法的基础上,根据拉格朗日插值多项式编写Matlab 脚本,其中把拉格朗日插值部分单独编写为f_lagrange.m 函数,方便调用。
1.3 实验结果1.3.1 f(x)在[-1,1]上的拉格朗日插值函数依次取n=2、3、4、5、6、7、10、15、20,画出原函数和拉格朗日插值函数的图像,如图1所示。
Matlab 脚本文件为Experiment2_1_1fx.m 。
可以看出,当n 较小时,拉格朗日多项式插值的函数图像随着次数n 的增加而更加接近于f(x),即插值效果越来越好。
实验二 插值法

实验二 插值法实验2.1(多项式插值的振荡现象)问题提出:考虑一个固定的区间上用插值逼近一个函数。
显然拉格朗日插值中使用的节点越多,插值多项式的次数就越高。
我们自然关心插值多项式的次数增加时,)(x L n 是否也更加靠近被逼近的函数。
龙格(Runge )给出一个例子是极著名并富有启发性的。
设区间[-1,1]上函数22511)(xx f +=实验内容:考虑区间[-1,1]的一个等距划分,分点为 n i nix i ,,2,1,0,21 =+-= 则拉格朗日插值多项式为 201()()125nn ii iL x l x x ==+∑其中的n i x l i ,,2,1,0),( =是n 次拉格朗日插值基函数。
实验要求:(1) 选择不断增大的分点数目n=2,3….,画出原函数f(x)及插值多项式函数)(x L n 在[-1,1]上的图像,比较并分析实验结果。
(2)选择其他的函数,例如定义在区间[-5,5]上的函数x x g x xx h arctan )(,1)(4=+=重复上述的实验看其结果如何。
(3)区间[a,b]上切比雪夫点的定义为 1,,2,1,)1(2)12(cos 22+=⎪⎪⎭⎫⎝⎛+--++=n k n k a b a b x k π 以121,,+n x x x 为插值节点构造上述各函数的拉格朗日插值多项式,比较其结果,试分析原因。
实验2.2(样条插值的收敛性)问题提出:多项式插值是不收敛的,即插值的节点多,效果不一定就好。
对样条函数插值又如何呢?理论上证明样条插值的收敛性是比较困难的,但通过本实验可以验证这一理论结果。
实验内容:请按一定的规则分别选择等距或者非等距的插值节点,并不断增加插值节点的个数。
考虑实验2.1中的函数或选择其他你有兴趣的函数。
实验要求:(1)随节点个数增加,比较被逼近函数和样条插值函数误差的变化情况。
分析所得结果并与拉格朗日多项式插值比较(可以用MATLAB 的函数“spline”作此函数的三次样条插值,取n=10、20,分别画出插值函数及原函数的图形)。
实验二、拉格朗日插值法

‘linear’ : 线性插值; ‘spline’ : 三次样条插值; ‘cubic’ : 立方插值。 缺省时: 分段线性插值。
9
例:在1-12的11小时内,每隔1小时测量一次温度,测 得的温度依次为:5,8,9,15,25,29,31,30,22,25, 27,24。试估计每隔1/10小时的温度值。
15
例:测得平板表面3*5网格点处的温度分别为: 82 81 80 82 84 79 63 61 65 81 84 84 82 85 86 试作出平板表面的温度分布曲面z=f(x,y)的图形。 1.先在三维坐标画出原始数据,画出粗糙的温度分布曲图. 输入以下命令: x=1:5; y=1:3; [x,y]=meshgrid(x,y); t=[82 81 80 82 84;79 63 61 65 81;84 84 82 85 86]; mesh(x,y,t) 2.以平滑数据,在x、y方向上每隔0.2个单位的地方进行插值.
课堂任务:
1、用MATLAB实现拉格朗日插值法; 2、用MATLAB分析龙格现象,绘制教材40页图2-5; 3、用自己编写的程序做课后题: 48页:2题. 50页:3题 (1).
用MATLAB作插值计算
一维插值函数:
yi=interp1(x,y,xi,'method')
xi处的插 值结果 插值节点 被插值点 插值方法
h=1:12; t=[5 8 9 15 25 29 31 30 22 25 27 24]; h1=1:0.1:12;
t1=interp1(h,t,h1,'spline')
plot(h1,t1)
10
例 已知飞机机翼下轮廓线上数据如下,求x每改变0.1时的y 值。
计算方法拉格朗日插值

2012~ 2013学年第 2学期 计算方法 教案 计1101/02,1181 开课时间:2012-02第二章 插值法知识点:拉格朗日插值法,牛顿插值法,误差,龙格现象,分段插值。
1.背景实践活动中,表现事务变化的信息往往只是一些离散点值,例如 每个6小时记录一次温度,以此反映一天的气温变化状况,如下表图能从已知这些离散点值信息知道10时的气温是多少吗?如果能通过这些离散点值找到气温变化的规律,也就是说能找到一个反映气温变化规律的“原”函数,就可以知道10时的气温是多少。
但我们能采集到的信息只有这些离散点值,时常给不出反映气温变化规律“原”函数的解析表达式,怎么办?通常可以用近似的办法解决这个问题,办法是构造一个通过所有离散点值的“近似”函数,用这个“近似”函数逼近“原”函数。
如图构造这个“近似”函数的方法称为插值方法。
时间/时温度。
C24.3623.81231.51831.024253432302826242220时间(时)温度(。
C )3432302826242220温度(。
C )2012~ 2013学年第 2学期计算方法教案计1101/02,1181 开课时间:2012-022.概念实际问题中,能采集到的信息只是一些离散点值{x i,f(x i)}(i=0,1,2,…n),时常给不出一个函数f(x)的解析表达式,因之,转而考虑选择一个简单的函数ϕ(x)近似替代(原来)f(x)。
定义:设f(x)为定义在区间[a,b]上的函数,x0,x1,…,x n为[a,b]上的互异点,y i=f(x i)。
若存在一个简单函数ϕ(x),满足(插值条件)ϕ(x i)=f(x i),i=0,1,…,n。
则称 ϕ(x)为f(x)插值函数,f(x)为被插函数,点x0,x1,…,x n为插值节点,点{x i,f(x i)},i=0,1,2,…n为插值点。
若用ϕ(x)≈f(x),则计算f(x)就转换为计算 ϕ(x)。
插值需要解决:插值函数是否存在唯一;插值函数如何构造;插值函数与被插函数的误差估计和收敛性。
数值分析实验报告2——Runge现象

数值分析课程实验报告——插值逼近题目一.Runge 函数的插值1. Runge 函数Runge 函数的表达式为:21()125R x x =+ 其在[-1,1]区间上的函数图像如图1.1。
在课程学习中我们知道,对Runge 函数进行高次插值时有可能在两端出现不收敛的情况,即Runge 现象。
下面将分别用四种不同的插值方法在[-1,1]区间上对Runge 函数进行插值,并分析是否产生Runge 现象,比较插值效果。
图1.1.Runge 函数在[-1,1]区间的函数图像2.Newton 插值首先根据课本上的Newton 插值算法进行编程(代码略)。
核心思想就是用符号变量进行中间运算,以便将最终的插值函数用符号表达式表示出来,并进一步生成图像。
此处插值节点选择为等距插值节点,即:0.1(0,1,2,,)i x ih i =-+= (20)其中h=0.1。
插值曲线与原曲线的对比如图1.2(蓝色为原曲线,红色为插值曲线)。
从图中看出,在区间中部,二者吻合较好;但在区间两端二者则产生了明显偏差,甚至可以达到一个非常大的数值(e20量级)。
因此,在等距节点的20次Newton 插值下,产生了明显的Runge 现象。
图1.2.Newton 插值曲线与原曲线对比3. Lagrange 插值此处同样是根据Lagrange 插值的具体算法进行编程。
但插值节点不再是等距分布,而是如下形式:21cos()(0,1,2,,)42i i x i π+==…20 插值曲线与原曲线的对比如图1.3(蓝色为原曲线,红色为插值曲线)。
从图中看出,插值曲线与原曲线吻合的很好,没有产生明显的Runge 现象。
对比产生了明显Runge 现象的20次Newton 插值,Lagrange 插值的最高次数虽然也是20,但由于此处的插值节点不是等距分布的(事实上,此处采用的插值节点正是Chebyshev 多项式的零点),而是中间疏两边密,因此两侧较密的节点很好地抑制了Runge 现象。
拉格朗日龙格现象

实 验 报 告一.实验名称:拉格朗日插值的龙格现象二.实验目的:理解高阶插值的病态性,观察拉格朗日插值的龙格现象。
三.实验内容:在区间[-5,5]上取节点数n=11,等距离h=1的节点为插值点,对于函数25()1f x x =+ 进行拉格朗日插值,把f(x)与插值多项式的曲线花在同一张图上。
四. 实验基础知识及原理:1)拉格朗日插值函数定义:对某个多项式函数,已知有给定的k + 1个取值点:其中对应著自变数的位置,而对应著函数在这个位置的取值。
假设任意两个不同的x j 都互不相同,那麼应用拉格朗日插值公式所得到的拉格朗日插值多项式为:其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为:[3] 拉格朗日基本多项式的特点是在 上取值为1,在其它的点 上取值为0。
2)龙格现象:在计算方法中,有利用多项式对某一函数的近似逼近,这样,利用多项式就可以计算相应的函数值。
一般情况下,多项式的次数越多,需要的数据就越多,而预测也就越准确。
但是在有的情况下,并非取节点(日期数)越多多项式就越精确。
3)matlab:MATLAB 是矩阵实验室(Matrix Laboratory )的简称,是美国MathWorks 公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB 和Simulink 两大部分。
该实验中可利用matlab 的绘图功能将拉格朗日函数跟原函数显示出来,通过对比得出实验结论。
五. 具体实验过程1. 用matlab的editor将老师提供的拉格朗日插值的调用函数编辑为一个m文件lagrange.m2.在脚本窗口中输入以下命令:执行上面的命令可以得到输出的曲线如下:在以下图中可以看到相应变量的数据值:通过龙格现象可知,并不是插值多项式的次数越高(即插值节点越多)精度就越高,在这个实验中插值函数在两个端点处发生剧烈的波动,造成较大的误差,从数值计算上可解释为高次插值多项式的计算会带来舍入误差的增大,从而引起计算失真,因此,实际应用时,我们一般只用一次、二次最多是三次插值多项式,若想提高插值精度,我们可以采用分段插值。
拉格朗日多项式插值

拉格朗日多项式插值法浅析摘要拉格朗日插值多项式是一种最常见的多项式插值法,也是一种最常用的逼近工具。
“学以致用 ”是每一门学科都致力追求的境界,数学自然也不例外。
下面,探讨拉格朗日插值法的基本原理、如何构造拉格朗日多项式、拉格朗日多项式的误差界,并用 MATLAB 程序来实现这一数学算法的自动化,为复杂的分析研究提供了一条数学算法的捷径。
【关键词】:拉格朗日多项式 算法实现 MATLAB在科学研究和实际的工程设计中,几乎所有的问题都可以用)(x f y =来表示其某种内在规律的数量关系。
但理想化的函数关系在实际工程应用中是很难寻找 的,对于那些没有明显解析式的函数关系表达式则只能通过实验观察的数据,利用多项式对某一函数的进行逼近,使得这个逼近函数能够反映)(x f 的特性,而且利用多项式就可以简便的计算相应的函数值。
例如我们不知道气温随日期变化的具体函数关系,但是我们可以测量一些孤立的日期的气温值,并假定此气温随日期变化的函数满足某一多项式。
这样,利用已经测的数据,应用待定系数法便可以求得一个多项式函数f (x )。
应用此函数就可以计算或者说预测其他日期的气温值。
一般情况下,多项式的次数越多,需要的数据就越多,而预测也就越 准确。
当然,构造组合多项式方法比较多,如线性方程求解、拉格朗日系数多项式以及构造牛顿多项式的分段差分和系数表等等,这里只对拉格朗日多项式插值法进行深入探讨。
一、拉格朗日多项式插值算法基本原理函数)(x f y =在区间[a,b]上有定义,在是[ a,b]上取定的 N + 1个互异节点, 且在这些点处的函数值)(0x f , )(1x f ,…,)(n x f 为已知, 即 yi =f (xi ) , (N i ...1,0=),若存在一个和)(x f 近似的函数)(x P N ,满足)()(i i N x f x P = (N i ...1,0=) (1)则称 φ(x) 为 f (x) 的一个插值函数, 点i x 为插值节点,(1)称为插值条件, 区间[a,b]称为插值区间, 而误差函数)()(x P x f E N N -=称为插值余项。
拉格朗日插值公式的证明及其应用

拉格朗日插值公式的证明及其应用一、拉格朗日插值公式的证明:假设给定n+1个不同的数据点(x0, y0), (x1, y1), ..., (xn, yn),其中xi不等于xj,i≠j。
我们要找到一个满足这些数据点的多项式函数P(x),使得P(xi) = yi,i = 0, 1, ..., n。
设P(x)的表达式为P(x) = a0 + a1x + a2x^2 + ... + anxn,其中a0, a1, ..., an是待确定的系数。
由于希望P(x)满足P(xi) = yi,可以得到以下等式:a0 + a1x0 + a2x0^2 + ... + anx0^n = y0a0 + a1x1 + a2x1^2 + ... + anx1^n = y1...a0 + a1xn + a2xn^2 + ... + anx0n = yn将这些等式进行展开,可以得到如下的一个线性方程组:a0 + a1x0 + a2x0^2 + ... + anx0^n = y0a0 + a1x1 + a2x1^2 + ... + anx1^n = y1...a0 + a1xn + a2xn^2 + ... + anx0n = yn我们令Li(x)表示一个满足Li(xi) = 1,Li(xj) = 0 (j≠i)的多项式函数。
将P(x)的表达式代入上述的线性方程组,我们可以得到以下等式:y0Li(x) + y1Li(x) + ... + ynLi(x) = P(x)将P(x)表示成等于数据点的线性组合的形式,即拉格朗日插值公式的形式。
二、拉格朗日插值公式的应用:1.数据拟合:拉格朗日插值公式可以通过已知的数据点,得到一个满足数据点的多项式函数。
通过拟合已有数据,可以进行数据的预测和预估。
2.函数逼近:对于已知的函数,可以通过拉格朗日插值公式插值得到一系列的数据点。
这样可以将原函数进行逼近,并在所插入的数据点上进行具体的计算。
3.误差估计:通过拉格朗日插值公式得到的多项式函数可以作为原函数的近似函数。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汕 头 大 学 实 验 报 告
学院: 工学院系: 计算机系专业: 计算机科学与技术年级:2010
姓名: 林金正学号:2010101032完成实验时间: 5月24日
一.实验名称:拉格朗日插值的龙格现象
二.实验目的:
通过matlab 处理,观察拉格朗日插值的龙格现象.
三.实验内容:
(1)学习matlab 的使用
(2)以实验的方式,理解高阶插值的病态性,观察拉格朗日插值的龙格现象。
四.实验时间、地点,设备:
实验时间:5月24日
实验地点:宿舍 实验设备:笔记本电脑
五,实验任务
在区间[-5,5]上取节点数n=11,等距离h=1的节点为插值点,对于函数2
5()1f x x =+进行拉格朗日插值,把f(x)与插值多项式的曲线花在同一张图上。
六.实验过程
拉格朗日插值函数定义:
对某个多项式函数,已知有给定的k + 1个取值点:
其中对应著自变数的位置,而对应著函数在这个位置的取值。
假设任意两个不同的xj 都互不相同,那麼应用拉格朗日插值公式所得到的拉格朗日插值多项式为:
其中每个为拉格朗日基本多项式(或称插值基函数),其表达式为:
[3]
拉格朗日基本多项式
的特点是在上取值为1,在其它的点上取值为0。
1.使用matlab,新建function.m 文件,使用老师所给代码,构建拉格朗日函数.
%lagrange.m
function y=lagrange(x0,y0,x)
n=length(x0);
m=length(x);
fori=1:m
z=x(i);s=0;
for k=1:n
L=1;
for j=1:n
if j~=k
L=L*(z-x0(j))/(x0(k)-x0(j));
end
end
s=s+L*y0(k);
end
y(i)=s;
end
y;
程序解释:
(x0,y0):已知点坐标
x:所求点的横坐标,
y:由(x0,y0)所产生的插值函数,以x 为参数,所的到的值
2.再一次新建function.m 文件.
构建自定义函数:25()1f x x
=
+ %f.m
function y = f(x)
y = 5/(1+x*x);
end
3.在脚本窗口中输入:
>>a = [-10:0.2:10]
>>for I = 1:length(a)
b(i) = f(a(i))
end ;%画出原函数(a,b)
>>c = [-5:1:5]
>>for i = 1:length( c)
d(i) = f(c(i))
end;%获取插值坐标(c,d)
>>e = [-5:0.2:5]
>>z = largange(c,d,e);%获取插值坐标函数(e,z) >>plot(a,b,’r-‘,e,z);%画图
过程及插图
七:实验所得:
这次实验是我初步学会Matlab的使用,学会新建function函数,在matlab命令窗口敲入一些基础的命令,同时更深刻地了解了拉格朗日插值的龙格现象。