分段插值程序

分段插值程序
分段插值程序

分段插值计算在Matlab 中有现成的程序

解:在matlab 中编写M-文件如下:

x=[1:12];

fx=[12 234 34 -1 34 2 5 23 34 9 45 23]; xi=[1:0.2:12];

y=interp1(x,fx,xi); plot(x,fx,xi,y)

得到如下结果:

12.0000 56.4000 100.8000 145.2000 189.6000 234.0000 194.0000 154.0000 114.0000 74.0000 34.0000 27.0000 20.0000 13.0000 6.0000 -1.0000 6.0000 13.0000 20.0000 27.0000 34.0000 27.6000 21.2000 14.8000 8.4000 2.0000 2.6000 3.2000 3.8000 4.4000 5.0000 8.6000 12.2000 15.8000 19.4000 23.0000 25.2000 27.4000 29.6000 31.8000 34.0000 29.0000 24.0000 19.0000 14.0000 9.0000 16.2000 23.4000 30.6000 37.8000 45.0000 40.6000 36.2000 31.8000 27.4000 23.0000

以下为详细讲解:

0 2 4 6 8 10 12

-50

0 50

100 150

200 250

y

O x

目录

一.问题的重述 (1)

二.问题的分析 (1)

三.问题的假设 (1)

四.分段线性插值原理 (2)

五.问题的求解 (2)

六.插值方法的优劣性分析 (5)

附录 (6)

一.问题的重述

已知2

11

)(x x g +=

,66≤≤-x 用分段线性插值法求插值,绘出插值结果图形,并观察插值误差。

1.在[-6,6]中平均选取5个点作插值

2.在[-6,6]中平均选取11个点作插值

3.在[-6,6]中平均选取21个点作插值

4.在[-6,6]中平均选取41个点作插值

二.问题的分析

在数值计算中,已知数据通常是离散的,如果要得到这些离散点以外的其他点的函数值,就需要根据这些已知数据进行插值。而本题只提供了取样点和原函数g(x).分析问题求解方法如下: (1)利用已知函数式2

11

)(x x g +=

计算取样点X 对应的函数值Y ;将X,Y 作为两个等长的已知向量,分别描述采样点和样本值.因此被插值函数是一个单变量函数,可利用一维插值处理该数据插值问题。一维插值采用的方法通常有拉格朗日多项式插值(本题采用3次多项式插值),3次样条插值法和分段线性插值。

(2)分别利用以上插值方法求插值。以0.5个单位为步长划分区间[-6,6],并将每一点作为插值函数的取样点。再根据插值函数计算所选取样点的函数值。最后再利用所得函数值画出相应的函数图象,并与原函数g(x)的图象进行对比。

三.问题的假设

为了解决上述分析所提到的问题,本题可以作出如下假设:

(1)假设原函数g(x)仅作为求解取样点对应的样点值的函数关系式。而其他各点的函数值都是未知量,叙用插值函数计算。

(2)为了得到理想的对比函数图象,假设g(x)为已知的标准函数。可以选取0.5个单位为步长划分区间[-6,6],分别计算插值函数和标准函数g(x)在该区间的取样点的函数值。画出函数图象进行对比。

四.分段线性插值原理

给定区间[a,b], 将其分割成a=0x <1x <…

k y =f(k x )(k=0,1,…,n)求一个分段函数k I (x),使其满足: (1) h I (k x )=k y ,(k=0,1,…,n) ;

(2) 在每个区间[k x ,1+k x ] 上, h I (x)是个一次函数。

易知, h I (x)是个折线函数, 在每个区间[k x ,1+k x ]上,(k=0,1,…,n)

1111)(++++--+--=

k k

k k

k k k k k h y x x x x y x x x x x I

于是, h I (x)在[a,b]上是连续的,但其一阶导数是不连续的。 于是即可得到如下分段线性插值函数: ∑==n

i i i n x l y x I 0)()(

其中

????

????

?=≤≤--=≤≤--=+++---其他

时舍去时,且当时舍去时,且当00111

11

1n i x x x x x x x i x x x x

x x x l i i i i i i i i i

i i

五.问题的求解

在MATLAB中实现分段线性插值,最近点插值,3次多项式插值,3次样条插值的命令为interp1,其调用格式为: Y1=interp1(X,Y,X1,’method’)

函数根据X,Y的值,计算函数在X1处的值。X,Y是两个等长的已知向量,分别描述采样点和样本值,X1是一个向量或标量,描述欲插值点,Y1是一个与X1等长的插值结果。method是插值方法,包括:

linear:分段线性插值。它是把与插值点靠近的两个数据点用直线连接,然后在直线让选取对应插值点的数

nearest:近点插值法。根据已知两点间的插值点与这两点间的位置远近插值.

当插值点距离前点远时,取前点的值,否则取后点的值。

cubic:3次多项式插值。根据已知数据求出一个3次多项式,然后根据多项式进行插值。

spline:3次样条插值。在每个分段(子区间)内构造一个3次多项式,使其插值函数除满足插值条件外,还要求个节点处具有光滑条件。再根据已知数据求出样条函数后,按照样条函数插值。

运用Matlab工具软件编写代码(见附录),并分别画出图形如下:

(一)在[-6,6]中平均选取5个点作插值:

-10-5

05

10

00.20.40.60.81分段线性插值

-10

-5

0510-0.50

0.513

次样条插值

-10

-5

5

10

00.20.40.60.81

最近点插值

-10

-5

0510

00.20.40.60.813次多项式插值

(二)在[-6,6]中平均选取11个点作插值:

-10-5

05

100

1

-10

-5

051001-10

-5

5

10

01最近点插值

-10

-5

0510

01

(三)在[-6,6]中平均选取21个点作插值:

-10-5

05

1000.20.40.60.81

-10

-5

05

1000.20.40.60.8

1-10

-5

5

10

00.20.40.60.81最近点插值

-10

-5

0510

00.20.40.60.813次多项式插值

(四)在[-6,6]中平均选取41个点作插值

-10-5

05

1000.20.40.60.81

-10

-5

05100

1-10

-5

5

10

0.20.40.60.81最近点插值

-10

-5

0510

13次多项式插值

六.插值方法的优劣性分析

从以上对比函数图象可以看出,分段线性插值其总体光滑程度不够。在数学上,光滑程度的定量描述是函数(曲线) 的k 阶导数存在且连续,则称该曲线具有k 阶光滑性。一般情况下,阶数越高光滑程度越好。分段线性插值具有零阶光滑性,也就是不光滑。3次样条插值就是较低次数的多项式而达到较高阶光滑性的方法。总体上分段线性插值具有以下特点: 优点: 1.分段线性插值在计算上具有简洁方便的特点。

2.分段线性插值与3次多项式插值函数在每个小区间上相对于原函数都有很强的收敛性,(舍入误差影响不大),数值稳定性好且容易在计算机上编程实现等优点

缺点: 分段线性插值在节点处具有不光滑性的缺点(不能保证节点处插值

函数的导数连续),从而不能满足某些工程技术上的要求。而3次样条插值却具有在节点处光滑的特点。

附录:

x1=-6:12/n:6; %在四个问题的解答中,n的取值分别为:4,10,20,40;y=1./(1+x1.^2)

X=-6:1:6

Y=1./(1+X.^2)

y1=interp1(x1,y,X,'linear')

y2=interp1(x1,y,X,'spline')

y3=interp1(x1,y,X,'nearest')

y4=interp1(x1,y,X,'cublic')

subplot(2,2,1);plot(X,Y,'k',X,y1,':.')

title('分段线性插值');grid on;

legend('g(x)','y1')

subplot(2,2,2);plot(X,Y,'k',X,y2,':.')

title('3次样条插值');grid on;

legend('g(x)','y2')

subplot(2,2,3);plot(X,Y,'k',X,y3,':.')

title('最近点插值');grid on;

legend('g(x)','y3')

subplot(2,2,4);plot(X,Y,'k',X,y4,':.')

title('3次多项式插值');grid on;

legend('g(x)','y4')

备注:运行代码时请输入n的值。

分段线性插值法

《数值分析》实验报告 实验序号:实验五 实验名称: 分段线性插值法 1、 实验目的: 随着插值节点的增加,插值多项式的插值多项式的次数也增加,而对于高次的插值容易 带来剧烈的震荡,带来数值的不稳定(Runge 现象)。为了既要增加插值的节点,减小插值 的区间,以便更好的逼近插值函数,又要不增加插值多项式的次数以减少误差,可采用分段 线性插值。 2、 实验内容: 求一个函数?(x )用来近似函数f (x ),用分段线性插值的方法来求解近似函数?(x ) 并画出近似函数图像及原函数图像。 设在区间[a,b]上,给定n+1个插值节点b x x x x a n =<<<<=...210和相应的函数 值n y y y ,...,,10,求一个插值函数)(x ?,满足以下条件: (1) ),...,2,1,0()(n j y x j j ==?; (2) )(x ?在每一个小区间[1,+j j x x ]上是线性函数。 对于给定函数11-,2511)(2≤≤+= x x x f 。在区间[]11-,上画出f (x )和分段线性插值函数)(x ?的函数图像。 1. 分段线性插值的算法思想: 分段线性插值需要在每个插值节点上构造分段线性插值基函数)(x l j ,然后再 作它们的线性组合。分段线性插值基函数的特点是在对应的插值节点上函数值取 1,其它节点上函数值取0。插值基函数如下:

?????≤≤--=其它 ,0,)(101010x x x x x x x x l ???????????≤<--≤≤--=+++---其它 ,0,,)(11 1111j j j j j j j j j j j x x x x x x x x x x x x x x x l ?? ???≤≤--=---其它 ,0,)(111n n n n n n x x x x x x x x l 设在节点a ≤x0

几种常用的插值方法

几种常用的插值方法 数学系 信息与计算科学1班 李平 指导老师:唐振先 摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。 关键词:任意阶多项式插值,分段多项式插值。 引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite 和spine 插值和分段线性插值。 一.任意阶多项式插值: 1.用单项式基本插值公式进行多项式插值: 多项式插值是求通过几个已知数据点的那个n-1阶多项式,即P n-1(X)=A 1+A 2X+…A n X n-1,它是一个单项式基本函数X 0,X 1…X n-1的集合来定义多项式,由已知n 个点(X,Y )构成的集合,可以使多项式通过没数据点,并为n 个未知系数Ai 写出n 个方程,这n 个方程组成的方程组的系数矩阵为Vandermonde 矩阵。 虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde 方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。 2.拉格朗日基本插值公式进行插值: 先构造一组插值函数L i (x ) =011011()()()() ()()()() i i n i i i i i i n x x x x x x x x x x x x x x x x -+-+--------L L L L ,其中i=0,… n.容易看出n 次多项式L i (x )满足L i (x )=1,(i=j );L i (x )=0,(i ≠j ),其中

分段线性插值法

《数值分析》实验报告 实验序号:实验五 实验名称: 分段线性插值法 1、 实验目的: 随着插值节点的增加,插值多项式的插值多项式的次数也增加,而对于高次的插值容易带来剧烈的震荡,带来数值的不稳定(Runge 现象)。为了既要增加插值的节点,减小插值的区间,以便更好的逼近插值函数,又要不增加插值多项式的次数以减少误差,可采用分段线性插值。 2、 实验内容: 求一个函数?(x )用来近似函数f (x ),用分段线性插值的方法来求解近似函数?(x )并画出近似函数图像及原函数图像。 设在区间[a,b]上,给定n+1个插值节点b x x x x a n =<<<<=...210和相应的函数值n y y y ,...,,10,求一个插值函数)(x ?,满足以下条件: (1) ),...,2,1,0()(n j y x j j ==?; (2) )(x ?在每一个小区间[1,+j j x x ]上是线性函数。 对于给定函数11-,2511)(2≤≤+= x x x f 。在区间[]11-,上画出f (x )和分段线性插值函数)(x ?的函数图像。 1. 分段线性插值的算法思想: 分段线性插值需要在每个插值节点上构造分段线性插值基函数)(x l j ,然后再 作它们的线性组合。分段线性插值基函数的特点是在对应的插值节点上函数值取 1,其它节点上函数值取0。插值基函数如下: 设在节点a ≤x0

插值法习题及解答

一、填空题: 1. 满足()a a f x x =,()b b f x x =,()c c f x x =的拉格朗日插值余项为 。 答:()() ()()()3! a b c f R x x x x x x x ξ'''=--- 2.已知函数()f x 的函数值()()()()()0,2,3,5,6f f f f f ,以及均差如下 ()()()()()00,0,24,0,2,35,0,2,3,51,0,2,3,5,60f f f f f ===== 那么由这些数据构造的牛顿插值多项式的最高次幂的系数是 答: 1 二、选择题 1. 通过点()()0011,,,x y x y 的拉格朗日插值基函数()()01,l x l x 满足( ) A .()00l x =0,()110l x = B . ()00l x =0,()111l x = C .()00l x =1,()110l x = D . ()00l x =1,()111l x = 答:D 2.. 已知等距节点的插值型求积公式 ()()35 2 k k k f x dx A f x =≈∑?,那么3 k k A ==∑( ) A .1 B. 2 C. 3 D. 4 答:C 3.过点(x 0,y 0), (x 1,y 1),…,(x 5,y 5)的插值多项式P(x)是( )次的多项式。 (A). 6 (B).5 (C).4 (D).3. 答:B 三、证明题 1. 设 f (x) = (x-1) (x-2) .证明对任意的x 有: f [1, 2, x)]= 1 证明:f [1, 2] = [f (1) – f (2)]/ (1 – 2) = [0 – 0]/ (-1) = 0, 对任意的x 有 F[2, x] = [f (2) – f (x)]/ (2 – x) = [0 – (x-1) (x-2)]/ (2 – x) = (x-1), 所以 f [1, 2, x] = [f (1, 2) - f (2, x)]/ (1 – x) = [0 - (x-1)]/ (1 – x) = 1 2.设 在 上具有二阶连续导数,且 ,求证:

考察分段线性插值

《数值分析》课程设计 题目考察分段线性插值 学生黄立健丁威程发林 指导教师郭阁阳

天津工程师范学院 课程设计任务书 数理系数学班学生黄立健丁威程发林 课程设计课题: 考察分段线性插值 一、课程设计工作日自 2009 年 6 月 22 日至 2009 年 6 月 28 日 二、同组学生:黄立健丁威程发林 三、课程设计任务要求(包括课题来源、类型、目的和意义、基本要求、完成时 间、主要参考资料等): 【来源与意义】 本课题来源于教材第二章插值法,目的是从几何意义掌握分段线性插值的思想,加深对其的理解以及掌握用计算机与Matlab解决相关问题的能力。 【基本要求】 要求自编程序;掌握编程思想,学会一门编程语言;报告要有较强的理论分析;有较强说服力的数据表或图像;对结果进行分析;给出相应结论;鼓励创新; 【参考资料】 1.数值分析,李庆扬,王能超,易大义,2001,清华大学出版社(第四版)。 2.数值方法,关治,陆金甫,2006,清华大学出版社。 3.数值分析与实验学习指导,蔡大用,2001,清华大学出版社。 4.数值分析与实验,薛毅,2005,北京工业大学出版社。 指导教师签字:教研室主任签字:

天津工程师范学院 课程设计评审表系班学生

一、 问题提出: 题目:对2 1 ()1f x x = +在【-5,5】上进行分段线性插值,取不同节点个数n ,得到不同分段线性插值函数。(要求:自编程序,报告有数据表、图像、分析、结论。) 二、 理论基础: 通过学习构造插值公式的方法,以及分析了它们的余项知道了在实际应用插值函数作近似计算时,我们总是希望插值公式余项的绝对值小一些,即使得逼近的精度良好。从插值公式余项表达式()n R x 看,似乎提高插值多项式的次数便可达到 目的,但实际上会产生一称为Runge 现象的畸形现象,如下图所示: 从上图易知:Lagrange 插值多项式只在区间【-3.63,3.63】内收敛。因此我们通过构造分段线性插值的方法(在每个小区间上采用一次Lagrange 插值)来消除Runge 现象。 下面我们构造分段线性插值函数: 易知 在每个子区间 上是一次插值多项式 分段线性插值的余项: 其中: 1[,](0,1,)i i x x i n +=()x ?11111(),i i i i i i i i i i x x x x x y y x x x x x x x ?+++++--=+≤≤--2 ()()()8Mh f x x R x ?-=≤ max ''() a x b M f x ≤≤=

分段线性插值

页眉内容 《数值分析》课程设计 分段线性插值 牛彦坡陈彬冯梦雨 指导教师 天津工程师范学院 课程设计任 考察分段线性插值 、课程设计工作日自2009 年6月22 日至2009 年6月28 日 三、课程设计任务要求(包括课题来源、类型、目的和意义、基本要求、参考资 料等): 来源与意义: 本课题来源于教材第二章插值法,目的是从几何意义掌握分段线性插值的思 想,加深对其的理解以及掌握用计算机与 Matlab 解决相关问题的能力。 基本要求: 要求自编程序;掌握编程思想,学会一门编程语言;报告要有较强的理论分 析;有较强说服力的数据表或图像;对结果进行分析;给出相应结论;鼓励创新; 参考资料: 1. 数值分析,李庆扬,王能超,易大义,2001,清华大学出版社(第四版)。 2. 数值方法,关治,陆金甫,2006,清华大学出版社。 3. 数值分析与实验学习指导,蔡大用,2001,清华大学出版社。 理学 数学0702 班 学生 牛彦坡 陈彬 冯梦雨 课程设计课题: 郭阁阳 、同组学生: 牛彦坡 陈彬 冯梦雨

4. 数值分析与实验,薛毅,2005,北京工业大学出版社。 教研室主任签字: 天津工程师范学院 程设计评审表 数学0702 班 学生牛彦坡陈彬冯梦雨 设计任务完成情况及指导教 师评语 答辩情况 教研室主任: 日期: 指导教师签字: 理学 评定成绩 成绩: 指导教师签字: 日期: 主任签字: 日期:

问题提出: 考察分段线性插值: 对f(x) 丄在(-5,5)上进行分段线性插值,取不同节点个数 n ,得到不同 1 x 分段线性插值函数。(要求:自编程序,报告有数据表、图像、分析、结论。) 虽然matlab 里有直接分段线形插值的函数,但为了对分段插值算法有更明确 的理解,编写该程序是有必要的 需要解决的问题: 1、由已知数据节点编写分段线形插值函数,从而能由所编函数得到非节点的函 数值。 2、比较用不同节点数所得插值函数与真实函数的误差,从而得出节点数与插值 效果的关系 二、理论基础 所谓分段线性插值就是通过插值点用折线段连接起来逼近 f (X )。设已知节 点a=x o vx i v …vx n =b 上的函数值f o , f i ,…,f n ,求一折线函数满足: l h (x)在每个小区间[x k ,X k+1 ]上是线性函数。 则称l h (x)为分段线性插值函数。 模型一:由定义可知l h (x)在每个小区间[X k ,X k+l ]上可表示为 x x k 1 x x k I h (x) = ------- f k ------------------ f k 1 (X k x X k1) X k X k 1 X k 1 X k 模型二:首先确定间隔序列k ,使得: 第二个量是局部变量S ,其定义为: 最后一个量是一阶均差 1o l h (x) C[a,b], 2。 I h (x) f k (k 0,1, n , 3。

五种插值法的对比研究---开题报告

五种插值法的对比研究 1. 选题依据 1.1 选题背景 插值法是一种古老的数学方法,插值法历史悠久。据考证,在公元六世纪时, 我国刘焯(zhuo) 已经把等距二次插值法应用于天文计算。十七世纪时,Newton 和 Gregory(格雷格里) 建立了等距节点上的一般插值公式,十八世纪时,Lagrange(拉格朗日) 给出了更一般的非等距节点插值公式。 而它的基本理论是在微积分产生以后逐渐完善的,它的实际应用也日益增多,特别是在计算机工程中。许多库函数的计算实际上归结于对逼近函数的计算。 1.2 研究的目的和意义 插值法是数值分析中最基本的方法之一。 在实际问题中碰到的函数是各种各样的,有的甚至给不出表达式,只提供了一些离散数据,例如,在查对数表时, 要查的数据在表中找不到,就先找出它相邻的数,再从旁边找出它的修正值, 按一定关系把相邻的数加以修正,从而找出要找的数,这种修正关系实际上就是一种插值。 在实际应用中选用不同类型的插值函数,逼近的效果也不同。在数值计算方法中,我们学习过五种基本的插值方法,即Lagrange 插值、Newton 插值、分段线性插值、分段三次Hermite 插值、样条插值函数。所以通过从这五种插值法的基本思想、特征、性质和具体实例入手,探讨五种插值法的优缺点和适用范围,让学习者能够迅速而准确的解决实际问题,掌握插值法的应用。 2. 研究的方法 从具体实例入手并结合Matlab 在科学计算中的优势,通过实验对它们的精度和效率进行比较分析。 3. 论文结构 3.1 论文的总体结构 第一部分 导言 主要介绍选题的背景、目的及意义、研究现状、文献综述等。 第二部分 五种插值法的基本思想、性质及特点 在数值计算方法中,插值法是计算方法的基础,数值微分、数值积分和微分方程数值解都建立在此基础上。 插值问题的提法是:已知f(x)(可能未知或非常复杂函数)在彼此不同的n+1 个实点0x ,1x ,…n x 处的函数值是f(0x ),f(1x ),…,f(n x ),这时我们简单的说f(x)有n+1 个 离散数据对0n i i )}y ,{(x i .要估算f(x)在其它点x 处的函数值,最常见的一种办法就是插

三次样条插值方法的应用

CENTRAL SOUTH UNIVERSITY 数值分析实验报告

三次样条插值方法的应用 一、问题背景 分段低次插值函数往往具有很好的收敛性,计算过程简单,稳定性好,并且易于在在电子计算机上实现,但其光滑性较差,对于像高速飞机的机翼形线船体放样等型值线往往要求具有二阶光滑度,即有二阶连续导数,早期工程师制图时,把富有弹性的细长木条(即所谓的样条)用压铁固定在样点上,在其他地方让他自由弯曲,然后沿木条画下曲线,称为样条曲线。样条曲线实际上是由分段三次曲线并接而成,在连接点即样点上要求二阶导数连续,从数学上加以概括就得到数学样条这一概念。下面我们讨论最常用的三次样条函数及其应用。 二、数学模型 样条函数可以给出光滑的插值曲线(面),因此在数值逼近、常微分方程和偏微分方程的数值解及科学和工程的计算中起着重要的作用。 设区间[]b ,a 上给定有关划分b x x n =<<<= 10x a ,S 为[]b ,a 上满足下面条件的函数。 ● )(b a C S ,2∈; ● S 在每个子区间[]1,+i i x x 上是三次多项式。 则称S 为关于划分的三次样条函数。常用的三次样条函数的边界条件有三种类型: ● Ⅰ型 ()()n n n f x S f x S ''0'',==。 ● Ⅱ型 ()()n n n f x S f x S ''''0'''',==,其特殊情况为()()0''''==n n x S x S 。 ● Ⅲ型 ()() 3,2,1,0,0==j x S x S n j j ,此条件称为周期样条函数。 鉴于Ⅱ型三次样条插值函数在实际应用中的重要地位,在此主要对它进行详细介绍。 三、算法及流程 按照传统的编程方法,可将公式直接转换为MATLAB 可是别的语言即可;另一种是运用矩阵运算,发挥MATLAB 在矩阵运算上的优势。两种方法都可以方便地得到结果。方法二更直观,但计算系数时要特别注意。这里计算的是方法一的程序,采用的是Ⅱ型边界条件,取名为spline2.m 。 Matlab 代码如下: function s=spline2(x0,y0,y21,y2n,x) %s=spline2(x0,y0,y21,y2n,x) %x0,y0 are existed points,x are insert points,y21,y2n are the second

分段线性插值.doc

摘要 用函数来表示变量间的数量关系广泛应用于各学科领域,但是在实际问题中,往往是通过实验、观测以及计算等方法,得到的是函数在一些点上的函数值。如何通过这些离散数据找到函数的一个满足精度要求且便于使用的近似表达式,是经常遇到的问题。 对于这类问题我们解决的方法为插值法,而最常用也最简单的插值方法就是多项式插值。当然用插值法得到的近似表达式必须满足插值条件即假设给定了n+1个点的自变量的值以及函数值,近似函数必须要过这n+1 (x)通个点。多项式插值,从几何角度看,就是寻求n次代数曲线y=P n 过n+1个点作为f(x)的近似。 但是随着插值节点个数的增加,高次插值多项式的近似效果并不理想。根据大量实验得出,在进行高次多项式插值时,会出现龙格现象。龙格(Runge)现象即当n趋于无穷大时,x在某一邻域内,f(x)收敛,而在这个区域外f(x)发散。 因此,为了解决这样的一个问题,我们可以通过缩小插值区间的办法达到减小误差的目的,所以本实验将针对低次分段插值多项式来做具体的讨论和学习。 关键词:龙格现象分段差值

1、实验目的 1)通过对分段线性插值算法程序的编写,提高自己编写程序的能力 2)体会分段线性插值是如何消除龙格现象的。 3)用实验报告的形式展现,提高自己在写论文方面的能力 2、算法理论 设在节点处的函数值为,i=0,1,,n。为了提高近似程度,可以考虑用分段线性插值来逼近原函数,这时的插值函数为分段函数: 在区间上的线性函数为 误差为: 易见,是平面上以点为节点的折线,有如下的特点: 1.在上为次数不超过一次的多项式; 2.; 3.;

如果,由线性插值的误差公式得到 令,则有 关于整体误差: 可以按如下方式考虑,若记则对任一都有 于是,当时,说明分段线性插值收敛于。 3、数值算例 0.5 0.7 0.9 1.1 1.3 x i y 0.4579 0.644 0.783 0.891 0.964 i

分段线性插值法

《数值分析》实验报告 实验序号:实验五 实验名称: 分段线性插值法 1、 实验目的: 随着插值节点的增加,插值多项式的插值多项式的次数也增加,而对于高次的插值容易带来剧烈的震荡,带来数值的不稳定(Runge 现象)。为了既要增加插值的节点,减小插值的区间,以便更好的逼近插值函数,又要不增加插值多项式的次数以减少误差,可采用分段线性插值。 2、 实验内容: 求一个函数?(x )用来近似函数f (x ),用分段线性插值的方法来求解近似函数?(x )并画出近似函数图像及原函数图像。 设在区间[a,b]上,给定n+1个插值节点b x x x x a n =<<<<=...210与相应的函数值n y y y ,...,,10,求一个插值函数)(x ?,满足以下条件: (1) ),...,2,1,0()(n j y x j j ==?; (2) )(x ?在每一个小区间[1,+j j x x ]上就是线性函数。 对于给定函数11-,2511)(2≤≤+= x x x f 。在区间[]11-,上画出f (x )与分段线性插值函数)(x ?的函数图像。 1. 分段线性插值的算法思想: 分段线性插值需要在每个插值节点上构造分段线性插值基函数)(x l j ,然后再 作它们的线性组合。分段线性插值基函数的特点就是在对应的插值节点上函数值取 1,其它节点上函数值取0。插值基函数如下: ?????≤≤--=其它 ,0,)(101010x x x x x x x x l ???????????≤<--≤≤--=+++---其它 ,0,,)(11 1111j j j j j j j j j j j x x x x x x x x x x x x x x x l ?? ???≤≤--=---其它 ,0,)(111n n n n n n x x x x x x x x l

几种常用的插值方法

数学系 信息与计算科学1班 李平 指导老师:唐振先 摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。 关键词:任意阶多项式插值,分段多项式插值。 引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite 和spine 插值和分段线性插值。 一.任意阶多项式插值: 1.用单项式基本插值公式进行多项式插值: 多项式插值是求通过几个已知数据点的那个n-1阶多项式,即P n-1(X)=A 1+A 2X+…A n X n-1,它是一个单项式基本函数X 0,X 1…X n-1的集合来定义多项式,由已知n 个点(X,Y )构成的集合,可以使多项式通过没数据点,并为n 个未知系数Ai 写出n 个方程,这n 个方程组成的方程组的系数矩阵为Vandermonde 矩阵。 虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde 方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。 2.拉格朗日基本插值公式进行插值: 先构造一组插值函数L i (x ) =011011()()()() ()()()() i i n i i i i i i n x x x x x x x x x x x x x x x x -+-+--------,其中i=0,… n.容易看出n 次多项式L i (x )满足L i (x )=1,(i=j );L i (x )=0,(i ≠j ),其中i=0,1…n ,令L i (x )=0()n i i i y l x =∑这就是拉格朗日插值多项式。与单项式基本 函数插值多项式相比,拉格朗日插值有2个重要优点:首先,建立插值多项式不需要求解方程组;其次,它的估计值受舍入误差要小得多。拉格朗日插值公式结构

lagrange插值分段线性插值matlab代码

Lagrange插值: x=0:3; y=[-5,-6,-1,16]; n=length(x); syms q; for k=1:n fenmu=1; p=1; for j=1:n if(j~=k) fenmu=fenmu*(x(k)-x(j)) p=conv(p,poly(x(j))) end end c(k,:)=p*y(k)/fenmu end a=zeros(1,n); for i=1:n for j=1:n a(i)=a(i)+c(j,i) end end 输出结果: fenmu = -1 p = 1 -1 fenmu = 2 p = 1 -3 2 fenmu = -6 p = 1 -6 11 -6 c = 0.8333 -5.0000 9.1667 -5.0000 fenmu = 1 p = 1 0 fenmu =

-1 p = 1 - 2 0 fenmu = 2 p = 1 -5 6 0 c = 0.8333 -5.0000 9.1667 -5.0000 -3.0000 15.0000 -18.0000 0 fenmu = 2 p = 1 0 fenmu = 2 p = 1 -1 0 fenmu = -2 p = 1 -4 3 0 c = 0.8333 -5.0000 9.1667 -5.0000 -3.0000 15.0000 -18.0000 0 0.5000 -2.0000 1.5000 0 fenmu = 3 p = 1 0 fenmu = 6 p = 1 -1 0 fenmu = 6 p = 1 -3 2 0 c = 0.8333 -5.0000 9.1667 -5.0000 -3.0000 15.0000 -18.0000 0 0.5000 -2.0000 1.5000 0 2.6667 -8.0000 5.3333 0 a =

分段线性插值法

分段线性插值法

————————————————————————————————作者: ————————————————————————————————日期:

《数值分析》实验报告 实验序号:实验五 实验名称: 分段线性插值法 1、 实验目的: 随着插值节点的增加,插值多项式的插值多项式的次数也增加,而对于高次的插值容易带来剧烈的震荡,带来数值的不稳定(Rung e现象)。为了既要增加插值的节点,减小插值的区间,以便更好的逼近插值函数,又要不增加插值多项式的次数以减少误差,可采用分段线性插值。 2、 实验内容: 求一个函数?(x )用来近似函数f (x),用分段线性插值的方法来求解近似函数?(x )并画出近似函数图像及原函数图像。 设在区间[a,b]上,给定n +1个插值节点b x x x x a n =<<<<=...210和相应的函数值n y y y ,...,,10,求一个插值函数)(x ?,满足以下条件: (1) ),...,2,1,0()(n j y x j j ==?; (2) )(x ?在每一个小区间[1,+j j x x ]上是线性函数。 对于给定函数11-,2511)(2≤≤+= x x x f 。在区间[]11-,上画出f (x )和分段线性插值函数)(x ?的函数图像。 1. 分段线性插值的算法思想: 分段线性插值需要在每个插值节点上构造分段线性插值基函数)(x l j , 然后再作它们的线性组合。分段线性插值基函数的特点是在对应的插值节 点上函数值取 1,其它节点上函数值取0。插值基函数如下:

?????≤≤--=其它 ,0,)(101010x x x x x x x x l ???????????≤<--≤≤--=+++---其它 ,0,,)(11 1111j j j j j j j j j j j x x x x x x x x x x x x x x x l ?? ???≤≤--=---其它 ,0,)(111n n n n n n x x x x x x x x l 设在节点a≤x0<x1<…≤b=f(xi),(i=0,1,2,…,n)求折线函数L(x)满足: (1) L (x )∈C [a,b] (2) L(x[i]=y[i]) (3) L(x )在每个小区间(x[i],x[i+1])上是线性 插值函数¢(x )叫做区间[a ,b]上对数据(x[j],y[j ])(j=0,1,2,…,n)的分段区间函数。 利用一介拉格朗日函数,直接得到线性插值函数为: L(x0)=(x-x[1])/x [0]-x [1];(x [0]≤x ≤x[1]) L(x 0)=0(x[1]≤x ≤x[n]) 分段线性方程的表达式: ¢(x )=∑(j=0,..,n)y[j]*L [j](x); 3、实验代码: // LDlg .c pp : im plement ation #include "st daf x.h" #include "L.h" #in clud e "LDlg .h" #if de f _DE BU G #define new DEB UG _NE W #undef TH IS _ ch ar T HIS _FILE [] = __FI LE__; #en dif /////////////////////////////////////////////////////////////////////////////

分段线性插值函数的编程实现

1 问题的提出 对2 1 ()1f x x = +在(-5,5)上进行分段线性插值,取不同节点个数n ,得到不同分段线性插值函数. 虽然MATLAB 里有直接分段线性插值的函数,但为了对分段插值算法有更明确的理解,编写该程序是有必要的. 需要解决的问题: 1、 由已知数据节点编写程序,实现分段线性插值函数,从而能由所编函数得到非节点的函数值. 2、 比较用不同节点数所得插值函数与真实函数的误差,从而得出节点数与插值效果的关系. 2 理论基础 分段线性插值适用于计算简单、光滑性要求不高的插值问题,且其整体逼近 )(x f 的效果较好. 从几何意义上看,分段线性插值就是用折线近似代替曲线错误!未找到引用源。. 设在区间[a,b]上取n+1个点 .a 110b x x x x n n =<<<<=- 函数)(x f 在上述节点处的函数值为 )(y i i x f = ,,2,1,0)(n i = 于是得到n+1个点

). , (, ), , (, , 1 1 0n n y x y x y x ) ( 连接相邻两点错误!未找到引用源。和) , ( 1 1+ +i i y x, , 2,1,0) (n i =,得一折线函数) (x ?,若满足: (1)) (x ?在[a,b]上连续; (2)错误!未找到引用源。) , ,2,1,0 (n i =; (3)) (x ?在每个小区间错误!未找到引用源。上是线性函数, 则称折线函数) (x ?为分段线性插值函数. 模型一: 由分段线性插值函数的定义可知,) (x ?在每个小区间错误!未找到引用源。上可表为 , ) ( 1 1 1 1 + + + + - - + - - = i i i i i i i i y x x x x y x x x x x ? 错误!未找到引用源。)1- , ,2,1,0 (n i =. ) (x ?是一分段函数,若用基函数表示,只需对1 , ,2,1,0- =n i 令 ? ? ? ? ? ? ? ? ? = ≤ ≤ - - = ≤ ≤ - - = + + + - - - ,其他 略去 略去 ) ( , ) ( , ) ( 1 1 1 1 1 1 n i x x x x x x x i x x x x x x x x l i i i i i i i i i i i 显然,() i l x是分段的线性连续函数,且满足 ? ? ? ≠ = = k i k i x l k i,0 ,1 ) ( 于是 ∑ = = n i i i x l y x ), ( ) (?b x a≤ ≤ 模型二:

五种插值法的对比研究开题报告

五种插值法的对比研究 1.选题依据 1.1 选题背景 插值法是一种古老的数学方法,插值法历史悠久。据考证,在公元六世纪时,我国刘焯(zhuo) 已经把等距二次插值法应用于天文计算。十七世纪时,Newton和Gregory(格雷格里) 建立了等距节点上的一般插值公式,十八世纪时,Lagrange(拉格朗日) 给出了更一般的非等距节点插值公式。而它的基本理论是在微积分产生以后逐渐完善的,它的实际应用也日益增多,特别是在计算机工程中。许多库函数的计算实际上归结于对逼近函数的计算。 1.2 研究的目的和意义 插值法是数值分析中最基本的方法之一。在实际问题中碰到的函数是各种各样的,有的甚至给不出表达式,只提供了一些离散数据,例如,在查对数表时,要查的数据在表中找不到,就先找出它相邻的数,再从旁边找出它的修正值,按一定关系把相邻的数加以修正,从而找出要找的数,这种修正关系实际上就是一种插值。在实际应用中选用不同类型的插值函数,逼近的效果也不同。在数值计算方法中,我们学习过五种基本的插值方法,即Lagrange插值、Newton插值、分段线性插值、分段三次Hermite插值、样条插值函数。所以通过从这五种插值法的基本思想、特征、性质和具体实例入手,探讨五种插值法的优缺点和适用范围,让学习者能够迅速而准确的解决实际问题,掌握插值法的应用。 2. 研究的方法

从具体实例入手并结合Matlab 在科学计算中的优势,通过实验对它们的精度和效率进行比较分析。 3. 论文结构 3.1 论文的总体结构 第一部分 导言 主要介绍选题的背景、目的及意义、研究现状、文献综述等。 第二部分 五种插值法的基本思想、性质及特点 在数值计算方法中,插值法是计算方法的基础,数值微分、数值积分和微分方程数值解都建立在此基础上。 插值问题的提法是:已知f(x)(可能未知或非常复杂函数)在彼此不同的n+1 个实点0x ,1x ,…n x 处的函数值是f(0x ),f(1x ),…,f(n x ),这时我们简单的说f(x)有n+1 个离散数据 对0n i i )}y ,{(x i .要估算f(x)在其它点x 处的函数值,最常见的一种办法就是插值,即寻找 一个相对简单的函数y(x),使其满足下列插值条件:y(i x )=f(i x ),i=0,1,…,n.,并以y(x)作为f(x)的近似值.其中y(x)称为插值函数,f(x)称为被插函数。 多项式插值是最常见的一种函数插值.在一般插值问题中,由插值条件可以唯一确定一个次数不超过n 的插值多项式满足上述条件.从几何上看可以理解为:已知平面上n+1 个不同点,要寻找一条次数不超过n 的多项式曲线通过这些点.插值多项式一般有两种常见的表达形式,一个是拉格朗日(Lagrange )插值多项式,另一个是牛顿(Newton )插值多项式. 且Lagrange 插值公式恒等于Newton 插值公式. 分段线性插值与样条插值可以避免高次插值可能出现的大幅度波动现象,在实际应用

分段三次hermite插值

C语言课程设计报告 课程名称:程序设计语言 组员:学号:魏文豪135******** 汤恒 135******** 彭建平135******** 指导教师:李华刚 2015年 12 月 13 日

流程图

代码! #include #include #define m 4 #define n 5 void main() { int i,k; float x[n+1],y[n+1],yy[n+1],h,z[m]; printf("请按行输入一系列的x值:\n"); for(k=0;k=x[k]&&z[i]<=x[k+1]) { h=pow((z[i]-x[k+1])/(x[k]-x[k+1]),2.0)*(1+2*(z[i]-x[k])/(x[k+1]-x[k]))*y[k]+pow( (z[i]-x[k])/(x[k+1]-x[k]),2.0)*(1+2*(z[i]-x[k+1])/(x[k]-x[k+1]))*y[k+1]+pow((z[i ]-x[k+1])/(x[k]-x[k+1]),2.0)*(z[i]-x[k])*yy[k]+pow((z[i]-x[k])/(x[k+1]-x[k]),2.0 )*(z[i]-x[k+1])*yy[k+1]; printf("h(%f)=%f\n",z[i],h); } }

几种常用的插值方法

几种常用的插值方法 数学系信息与计算科学1班平 指导老师:唐振先 摘要:插值在诸如机械加工等工程技术和数据处理等科学研究中有许多直接的应用,在很多领域都要用插值的办法找出表格和中间值,插值还是数值积分微分方程数值解等数值计算的基础。本文归纳了几种常用的插值方法,并简单分析了其各自的优缺点。 关键词:任意阶多项式插值,分段多项式插值。 引言:所谓插值,通俗地说就是在若干以知的函数值之间插入一些未知函数值,而插值函数的类型最简单的选取是代数多项式。用多项式建立插值函数的方法主要用两种:一种是任意阶的插值多项式,它主要有三种基本的插值公式:单项式,拉格朗日和牛顿插值;另一种是分段多项式插值,它有Hermite和spine插值和分段线性插值。 一.任意阶多项式插值: 1.用单项式基本插值公式进行多项式插值: 多项式插值是求通过几个已知数据点的那个n-1阶多项式,即P n-1(X)=A1+A2X+…A n X n-1,它是一个单项式基本函数X0,X1…X n-1的集合来定义多项式,由已知n个点(X,Y)构成的集合,可以使多项式通过没数据点,并为n个未知系数Ai写出n个方程,这n个方程组成的方程组的系数矩阵为Vandermonde 矩阵。 虽然这个过程直观易懂,但它都不是建立插值多项式最好的办法,因为Vandermonde方程组有可能是病态的,这样会导致单项式系数不确定。另外,单项式中的各项可能在大小上有很大的差异,这就导致了多项式计算中的舍入误差。 2.拉格朗日基本插值公式进行插值:

先构造一组插值函数L i (x ) =011011()()()() ()()()() i i n i i i i i i n x x x x x x x x x x x x x x x x -+-+--------,其中i=0,… n.容易看出n 次多项式L i (x )满足L i (x )=1,(i=j );L i (x )=0,(i ≠j ),其中i=0,1…n ,令L i (x )=0()n i i i y l x =∑这就是拉格朗日插值多项式。与单项式基本函 数插值多项式相比,拉格朗日插值有2个重要优点:首先,建立插值多项式不需要求解方程组;其次,它的估计值受舍入误差要小得多。拉格朗日插值公式结构紧凑,在理论分析中很方便,但是,当插值节点增加、减少或其位置变化时全部插值函数均要随之变化,从而整个插值公式的结构也将发生变化,这在实际计算是非常不利的。 3.使用牛顿均差插值公式进行多项式进行插值: 首先,定义均差,f 在xi,xj 上的一阶均差()()[,]j i i j j i f x f x f x x x x -=-,其中(i ≠j)。f 在 x i ,x j ,x k 的二阶均差f[x i ,x j ,x k ]= [,][,] i j j k j k f x x f x x x x --,k 阶均 f[x i …x k ]= 10[][] k i k k f x x f x x x x ---。 由此得出牛顿均值插值多项式的公式为Pn(x)=f[x 0]+f[x 0-x 1](x-x 0)+…+f[x 0,x n ](x-x 0)…(x-x n-1)。实际计算中经常利用下表给出的均差表直接构造牛顿插值公式 , , … …

分段线性插值

1.4分段插值 一.分段线性插值 即用折线代替曲线。设f (x )连续 优点:计算简单,适用于光滑性要求不高的插值问题。 缺点:分段插值函数只能保证连续性,失去了原函数的光滑性。 二.分段三次(Hermite )插值 不少实际插值问题不仅要求函数值相等,而且还要求导数值也相等。这就导致下面的Hermite 插值。 并满足: 从而 由此条件可得: 类似可得的表达式。 下面是matlab 函数pieceline (x ,y ,u )实现分段线性插值多项式的计算。 function v=pline(x,y,u) delta=diff(y)./diff(x); n=length(x); k=ones(size(u)); for j=2:n-1 k(x(j)<=u)=j; end s=u-x(k); v=y(k)+s.*delta(k); 在每个区间 上,用1阶多项式 (直线) 逼近 f (x): ] ,[1+i i x x 1111 1)()(++++--+--=≈i i i i i i i i y x x x x y x x x x x P x f ] ,[for 1+∈i i x x x 记 易证:当 ||max 1i i x x h -=+0→h )()(1x f x P h →一致 给定 000 ,...,;,...,;,...,,n n n x x y y y y ''在 上利用两端点的 y 及 y' 构造3次Hermite 函数。 ] ,[1+i i x x 31111()()()()()i i i i i i i i S x y x y x y x y x ααββ++++=+++' ' 3311'331 1. (), (),(), ()i i i i i i i i S x y S x y S x y S x y ++++====''' 1111111111111()1, ()0, ()0, ()0,()0, ()1, ()0, ()0, ()0, ()0, ()1, ()0, ()0, ()i i i i i i i i i i i i i i i i i i i i i i i i i i i i x x x x x x x x x x x x x x ααββααββααββαα+++++++++++++==============''''''1110, ()0, () 1.i i i i x x ββ+++=='' 1111122()12,2()().i i i i i i i i i i i i x x x x x x x x x x x x x x x x αβ+++++--??? ?=+ ? ?--??? ?-?? =- ?-??

相关文档
最新文档