数值分析课程设计--三次样条插值
- 格式:doc
- 大小:863.50 KB
- 文档页数:33
《数值分析课程设计-三次样条插值》报告掌握三次样条插值函数的构造方法,体会三次样条插值函数对被逼近函数的近似。
三次样条插值函数边界条件由实际问题对三次样条插值在端点的状态要求给出。
以第1 边界条件为例,用节点处二阶导数表示三次样条插值函数,用追赶法求解相关方程组。
通过Matlab 编制三次样条函数的通用程序,可直接显示各区间段三次样条函数体表达式,计算出已给点插值并显示各区间分段曲线图。
引言分段低次样条插值虽然计算简单、稳定性好、收敛性有保证且易在电子计算机上实现,但只能保证各小段曲线在连接处的连续性,不能保证整件曲线的光滑性。
利用样条插值,既可保持分段低次插值多项式,又可提高插值函数光滑性。
故给出分段三次样条插值的构造过程算法步骤,利用Matlab软件编写三次样条插值函数通用程序,并通过数值算例证明程序的正确性。
三次样条函数的定义及特征定义:设[a,b] 上有插值节点,a=x1<x2<…xn=b,对应函数值为y1,y2,⋯yn。
若函数S(x) 满足S(xj) = yj ( j = 1,2, ⋯,n ), S(x) 在[xj,xj+1] ( j =1,2,⋯,n-1)上都是不高于三的多项式(为了与其对应j 从1 开始,在Matlab 中元素脚标从1 开始)。
当S(x) 在 [a,b] 具有二阶连续导数。
则称S(x) 为三次样条插值函数。
要求S(x) 只需在每个子区间[xj,xj+1] 上确定 1 个三次多项式,设为:Sj(x)=ajx3+bjx2+cjx+dj, (j=1,2,⋯,n-1) (1)其中aj,bj,cj,dj 待定,并要使它满足:S(xj)=yj, S(xj-0)=S(xj+0), (j=2,⋯,n-1) (2)S'(xj-0)=S'(xj+0), S"(xj-0)=S"(xj+0), (j=2,⋯,n-1) (3)式(2)、(3)共给出n+3(n-2)=4n-6 个条件,需要待定4(n-1) 个系数,因此要唯一确定三次插值函数,还要附加2个边界条件。
三次样条插值的方法和思路摘要:1.三次样条插值的基本概念2.三次样条插值的数学原理3.三次样条插值的实现步骤4.三次样条插值的优缺点5.三次样条插值在实际应用中的案例正文:在日常的科学研究和工程应用中,我们经常会遇到需要对一组数据进行插值的问题。
插值方法有很多,其中三次样条插值是一种常见且有效的方法。
本文将从基本概念、数学原理、实现步骤、优缺点以及实际应用案例等方面,全面介绍三次样条插值的方法和思路。
一、三次样条插值的基本概念三次样条插值(Cubic Spline Interpolation)是一种基于分段多项式的插值方法。
它通过在各个节点上构建一条三次多项式曲线,使得这条曲线在节点之间满足插值条件,从而达到拟合数据的目的。
二、三次样条插值的数学原理三次样条插值的数学原理可以分为两个部分:一是分段三次多项式的构建,二是插值条件的满足。
1.分段三次多项式的构建假设有一组数据点序列为(x0,y0),(x1,y1),(x2,y2),(x3,y3),我们可以将这些数据点连接起来,构建一条分段三次多项式曲线。
分段三次多项式在每个子区间上都是一个三次多项式,它们之间通过节点值进行连接。
2.插值条件的满足为了使分段三次多项式在节点之间满足插值条件,我们需要在每个子区间上满足以下四个条件:(1)端点条件:三次多项式在区间的端点上分别等于节点值;(2)二阶导数条件:三次多项式在区间内的二阶导数等于节点间的斜率;(3)三阶导数条件:三次多项式在区间内的三阶导数等于节点间的曲率;(4)内部点条件:三次多项式在区间内部满足插值函数的连续性。
通过求解这四个条件,我们可以得到分段三次多项式的系数,从而实现插值。
三、三次样条插值的实现步骤1.确定插值节点:根据数据点的位置,选取合适的节点;2.构建分段三次多项式:根据节点值和插值条件,求解分段三次多项式的系数;3.计算插值结果:将待插值点的横坐标代入分段三次多项式,得到插值结果。
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在矩阵运算上的优势。
数值计算方法作业实验4.3三次样条差值函数实验目的:掌握三次样条插值函数的三弯矩方法实验函数:求和的近似值实验内容:(1) 编程实现求三次样条插值函数的算法,分别考虑不同的边界条件;(2) 计算各插值节点的弯矩值;(3) 在同一坐标系中绘制函数f(x),插值多项式,三次样条插值多项式的曲线比较插值结果。
实验4.5三次样条差值函数的收敛性实验目的:多项式插值不一定是收敛的,即插值的节点多,效果不一定好。
对三次样条插值函数如何呢?理论上证明三次样条插值函数的收敛性是比较困难的,通过本实验可以证明这一理论结果。
实验内容:按照一定的规则分别选择等距或非等距的插值节点,并不断增加插值节点的个数。
实验要求:(1)随着节点个数的增加,比较被逼近函数和三样条插值函数的误差变化情况,分析所得结果并与拉格朗日插值多项式比较;(2)三次样条插值函数的思想最早产生于工业部门。
作为工业应用的例子,考虑如下例子:某汽车制造商根据三次样条插值函数设计车门曲线, 其中一 段数据X k 0 1 23 4 5678910y k 0.00.79 1.532.19 2.713.03 3.27 2.89 3.06 3.19 3.29y k0.80.2算法描述:拉格朗日插值:错误!未找到引用源。
n(x _ X ) 其中错误!未找到引用源。
是拉格朗日基函数,其表达式为:h(x)」j=0 (x i- X j )牛顿插值:N n (x) =f (X g ) f[X o ,X i ](X -xO) f[X o ,X i ,X 2〕(X - xO)(x - X i ) •…f[X g ,X i ...X n ] =(f[X i ,X 2,...X n ] - f [ X 。
,为,..人」)/(X . - X g )三样条插值:所谓三次样条插值多项式Sn(x)是一种分段函数,它在节点Xi(a<X0<X1……<Xn<b)分成的每个小区间[x i-i ,x i ]上是三次多项式,其在此区间 上的表达式如下:f[X °,X i ,X 2,...X n ](X -X °)(X -X i )...(X-Xn J )f [X i , X j ]f (X i ) - f (X j ) X i -X jf [X i , X j ,X k]=其中*.f[X j ,X k ] - f[K ,X j ]X k -X iS(x)二 M 3(X i -x) 6h i.Mi (x —Xy )3 . [ y i - y i4 h i (M i - My)6h i h i 6 h ih i M i 4 h i M iy i- 6)( 6*,皿"]因此,只要确定了 Mi 的值,就确定了整个表达式,Mi 的计算方法如下:i 4式中 Mi= S (X i ).则Mi 满足如下n-1个方程:7 M i 」■ 2M i …冷 M i i = di , i =1,2,...n —'1 常用的边界条件有如下几类:(1)给定区间两端点的斜率 m o ,m n ,即s(x 0) = y 0 =m 0,S(x n ) = y n = m n(2) 给定区间两端点的二阶导数 MO ,Mn,即S (XcH y 。
第四章 多项式插值与函数最佳逼近——曲线拟合之3次样条插值*****(学号) *****(姓名)上机题目要求见教材P195,37题。
一、算法原理题目要求编写第一边界条件的3次样条插值函数的通用程序,同时根据汽车门曲线值点构造三次紧压样条曲线函数()S x 。
其基本原理如下 定义设0{(,)}Nk k k x y =有N+1个点,其中01N a x x x b =<<<<。
如果存在N 个三次多项式()k S x ,系数为,0,1,2,3,,k k k k S S S S 和满足如下性质:23,0,1,2,3()()()()k k k k k k k k S x s s x x s x x s x x =+-+-+- (1)111''111''''111(), 0,1,...,()(), 0,1,...,2()(), 0,1,...,2()(), 0,1,...,2k k k k k k k k k k k k k k S x y for k N S x S x for k N S x S x for k N S x S x for k N +++++++++====-==-==- (2)则成()S x 为三次样条函数。
现证明其存在:由于()S x 是分段三次多项式,其二阶导数是在区间0[,]N x x 内是分段线性的。
根据线性拉格朗日插值"()"()k S x S x =可以表示为:11111"()"()"()k k k k k k k k kx x x x S x S x S x x x x x +++++--=+--(3)用111(),()k k k k k k k m S x m S x x x +++''===-和h 代入上式,得()()11"()k k k k k k km mS x x x x x h h ++=-+- (4)将上式积分两次,会引入两个积分常数,可得到如下形式:()()33111()()()66k k k k k k k k k k km m S x x x x x p x x q x x h h +++=-+-+-+- (5)将1k k x x +和代入上式,并利用11(), ()k k k k k k y S x y S x ++==可得两个方程:2211 ; 66k k k k k k k k k k m my h p h y h q h ++=+=+ (6)求解,k k p q ,并将所得的结果带入方程(5)得()()3311111()66 ()()66k k k k k k kk k k k k kk k k km m S x x x x x h h y m h y m h x x x x h h +++++=--+-+⎛⎫⎛⎫--+-- ⎪ ⎪⎝⎭⎝⎭(7)求式(7)的导数,并化简得1111112()6(),1,...,1,()/k k k k k k k kk k k k k k kh m h h m h m u u d d k N d y y h ---+-++++==-=-=- 其中 (8)由上述方程可得如下方程011121002()h h m h m u h m ++=- (9) 11112()k k k k k k k k h m h h m h m u ---++++= (10)12211112()N N N N N N N N h m h h m u h m -------++=-(11)重组上述方程,得三角线性方程组=HM V ,表示为11111222223223222111N N N N N N N N N m v b c a b c m v a b m v a b c a b m v ---------⎡⎤⎡⎤⎡⎤⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦⎣⎦⎣⎦(12)该式具有严格对角优势。
实验报告:牛顿差值多项式&三次样条问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数21()25f x x作多项式插值及三次样条插值,对每个n 值,分别画出插值函数及()f x 的图形。
实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。
应用所编程序解决实际算例。
实验要求:1. 认真分析问题,深刻理解相关理论知识并能熟练应用; 2. 编写相关程序并进行实验; 3. 调试程序,得到最终结果; 4. 分析解释实验结果; 5. 按照要求完成实验报告。
实验原理:详见《数值分析 第5版》第二章相关内容。
实验内容:(1)牛顿插值多项式1.1 当n=10时:在Matlab 下编写代码完成计算和画图。
结果如下:代码:clear allclcx1=-1:0.2:1;y1=1./(1+25.*x1.^2);n=length(x1);f=y1(:);for j=2:nfor i=n:-1:jf(i)=(f(i)-f(i-1))/(x1(i)-x1(i-j+1));endendsyms F x p;F(1)=1;p(1)=y1(1);for i=2:nF(i)=F(i-1)*(x-x1(i-1));p(i)=f(i)*F(i);endsyms PP=sum(p);P10=vpa(expand(P),5);x0=-1:0.001:1;y0=subs(P,x,x0);y2=subs(1/(1+25*x^2),x,x0);plot(x0,y0,x0,y2)grid onxlabel('x')ylabel('y')P10即我们所求的牛顿插值多项式,其结果为:P10(x)=-220.94*x^10+494.91*x^8-9.5065e-14*x^7-381.43*x^6-8.504e-14*x^5+123.36* x^4+2.0202e-14*x^3-16.855*x^2-6.6594e-16*x+1.0并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。
数值分析三次样条插值函数【问题】对函数f x =ex, x∈[0,1]构造等距节点的三次样条插值函数,对以下两种类型的样条函数1. 三次自然样条2. 满足S′ 0 =1,S′ 1 =e的样条并计算如下误差:max{ f x1 −S x1 ,i=1,…,N} i−i−i这里xi−1为每个小区间的中点。
对N=10,20,40比较以上两组节点的结果。
讨论你的结果。
【三次样条插值】在每一个区间[t1,t2],…,[tn−1,tn]上,S都是不同的三次多项式,我们把在[ti−1,ti]上表示S的多项式记为Si,从而,S0 x x∈[t0,t1]∈[t1,t2] S x = S1 x x…Sn−1 x x∈[tn−1,tn]通过在节点处函数值、一阶导数和二阶导数的连续性可以得到:Si−1 ti = yi= Si ti 1≤i≤ n−1Si−1′ ti = Si′ tix→ti+limS′′ x =zi=limS′′(x) x→ti−再给定z0和zn 的值就构成了4n个条件,而三次样条插值函数共4n个系数,故可以通过这4n个条件求解三次样条函数的系数,从而求得该三次样条插值函数。
特别的,当z0=zn=0 时称为自然三次样条。
文本预览:一、自然三次样条插值【自然三次样条插值算法】1.由上面的分析可知,求解三次样条函数实际上就是求解一个矩阵:u 1h 1h1u2h2h2u3…v1 z1 v2 z2 z3=v3 … z…hn−2 n−2 vn−2 z vn−1 un−1 n−1ih3…hn−3un−2hn−26…其中hi=ti+1−ti,ui=2(hi+hi−1),ui=h(yi+1−yi),vi=bi−bi−1 所以自然三层次样条插值的算法就是在得到端点的函数值,一次导数值和二次导数值,然后根据上述求解矩阵得到v,代入自然三次样条的表达式即可。
2.根据题目中所给出的误差估计,计算在区间中点处的最大误差。
【实验】通过Mathematica编写程序得到如下结果:N=101. 计算得到zi的值为:由此可以得到各个区间的自然三次样条插值函数。
《数值分析》课程设计三次样条插值算法院(系)名称信息工程学院专业班级 09普本信计1班学号 090111073学生姓名宣章然指导教师孔繁民2012年06月08日数值分析课程设计评阅书课程设计任务书2008—2009学年第二学期专业班级: 09普本信计1班学号: 060111060 姓名:宣章然课程设计名称:数值分析设计题目:三次样条插值完成期限:自 2012 年 6 月 8 日至 2012 年 6 月 13 日共 1 周设计依据、要求及主要内容:一、设计目的熟练掌握三次样条插值算法的原理和推导过程,并且能够应用Matlab软件编写相应的程序和使用Matlab软件函数库软件。
二、设计要求(1)用Matlab函数库中相应函数对选定的问题,求出具有一定精度的结果。
(2)使用所用的方法编写Matlab程序求解,对数值结果进行分析。
(3)对于使用多个方法解同一问题的,在界面上设计成菜单形式。
三、设计内容首先构造三次样条插值函数的定义和一般特征,并对实例问题进行实例分析,并总结四、参考文献[1] 黄明游,冯果忱.数值分析[M].北京:高等教育出版社,2008.[2] 马东升,雷勇军.数值计算方法[M].北京:机械工业出版社,2006.[3] 石博强,赵金.MATLAB数学计算与工程分析范例教程[M].北京:中国铁道出版社.2005.[4]郝红伟,MATLAB 6,北京,中国电力出版社,2001[5]姜健飞,胡良剑,数值分析及其MATLAB实验,科学出版社,2004[6]薛毅,数值分析实验,北京工业大学出版社,2005 计划答辩时间:2012年6月18日指导教师(签字):教研室主任(签字):批准日期:年月三次样条插值摘 要分段低次样条插值虽然计算简单、稳定性好、收敛性有保证且易在电子计算机上实现,但只能保证各小段曲线在连接处的连续性,不能保证整件曲线的光滑性。
利用样条插值,既可保持分段低次插值多项式,又可提高插值函数光滑性。
实验报告:牛顿差值多项式&三次样条... . (1)问题:在区间[-1,1]上分别取n=10、20用两组等距节点对龙格函数f (x)---作多项式插25 x 2值及三次样条插值对每个n值,分别画出插值函数矽(x)的图形。
实验目的:通过编程实现牛顿插值方法和三次样条方法,加深对多项式插值的理解。
应用所编程序解决实际算例。
实验要求:1.认真分析问题,深刻理解相关理论知识并能熟练应用;2.编写相关程序并进行实验;3.调试程序,得到最终结果;4.分析解释实验结果;5.按照要求完成实验报告。
实验原理:详见《数值分析第5版》第二章相关容。
实验容:(1)牛顿插值多项式1.1 当 n=10 时:在Matlab下编写代码完成计算和画图。
结果如下:代码:clear allclcx1=-1:0.2:1;y1=1./(1+25.*x1.八2);n=length(x1);f=y1(:);for j=2:nfor i=n:-1:jf(i) = (f(i)-f(i-1))/(x1(i)-x1(i-j+1));endendsyms F x p;F(1)=1;p(1)=y1(1);for i=2:nF(i)=F(i-1)*(x-x1(i-1));p(i)=f(i)*F(i);endsyms PP=sum(p);P10=vpa(expand(P),5);x0=-1:0.001:1;y0=subs(P,x,x0);y2=subs(1/(1+25火x八2),x,x0);plot(x0,y0,x0,y2)grid onxlabel('x')ylabel('y')P10即我们所求的牛顿插值多项式,其结果为:P10(x )=-220.94*x A10+494.91*x A8-9.5065e-14*x A7-381.43*x A6-8.504e-14*x A5+123.36*x A4+2.0202e-14*x A3-16.855*x A2-6.6594e-16*x+1.0并且这里也能得到该牛顿插值多项式的在[-1,1]上的图形,并和原函数进行对比(见Fig.1)。
三次样条插值算法详解下面详细介绍三次样条插值方法的具体步骤:1.数据准备:首先,需要获得一组数据点,这些数据点包含了所需插值曲线的关键信息。
通常情况下,数据点是从实际观测中获得的。
2.区间划分:将插值区间划分为若干个小区间,每个小区间对应一个三次函数。
3. 函数构建:对于每个小区间,在该区间内构建一个三次函数。
这里使用三次多项式进行构建,形如 f(x) = ax^3 + bx^2 + cx + d。
每个小区间内的函数有四个待定系数:a、b、c、d。
4.条件设置:为了确定每个小区间内的函数,需要设置相应的条件。
一般来说,需要满足以下两个条件:(a) 函数值条件:保证每条小区间内的函数值通过对应的数据点。
即,对于每个小区间,函数值满足 f(xi) = yi,其中(xi, yi)表示第i个数据点的横纵坐标。
(b)导数条件:保证每个小区间内函数的导数连续。
这可以通过限制每个小区间内的函数的一阶导数(即斜率)相等来实现。
5.矩阵方程求解:根据上述条件设置,可以得到一个线性方程组,其中待求的系数为未知数。
将上述条件代入方程组中,然后求解该方程组以获得每个小区间内的函数系数。
6.曲线绘制:通过得到的函数系数,可以计算每个小区间内的函数值,并连接这些函数值,最终得到整个插值曲线。
三次样条插值方法是一种非常强大和灵活的插值方法,适用于各种类型的数据点,包括均匀和非均匀间距的数据。
通过调整划分区间的个数,可以控制插值曲线的光滑程度。
一般来说,插值区间越多,插值曲线越平滑,但对输入数据的噪声更敏感。
总结起来,三次样条插值是一种高级的插值方法,通过构建三次函数来逼近数据点,可以产生平滑的插值曲线。
它的基本思想是将插值区间划分为若干个小区间,并在每个小区间内构建一个三次函数。
通过设置函数值条件和导数条件,可以得到一个线性方程组,从而求解出每个小区间内的函数系数。
最终连接每个小区间内的函数值,得到整个插值曲线。
三次样条插值的方法和思路-回复三次样条插值是一种常用的插值方法,它可以在已知的离散数据点上构造出一条光滑的曲线。
这种方法被广泛应用在曲线拟合、图像处理、数据分析等领域。
本文将介绍三次样条插值的方法和思路,并详细阐述每个步骤。
第一步是确定插值段数。
在进行三次样条插值时,首先需要将已知数据点划分成若干个插值段。
插值段越多,插值曲线越接近原始数据,但也会使插值算法复杂度增加。
因此,在确定插值段数时需要权衡精度和计算效率。
第二步是计算每个插值段的系数。
对于每个插值段,我们需要计算出一个三次曲线,该曲线会通过该段的两个端点。
具体的计算方法是,假设有n 个插值点,则有n-1个插值段,每个插值段的系数需要通过以下步骤计算:1. 计算边界条件:这是三次样条插值的关键一步。
我们需要根据已知数据点的性质,来确定边界条件是自然边界、固定边界还是其他类型的边界。
自然边界要求二阶导数在两个端点处为0,即S''(x_0) = S''(x_n) = 0。
固定边界要求插值曲线通过端点的给定导数值,即S'(x_0) = d_0、S'(x_n) = d_n。
2. 构建三对角矩阵:三次样条插值的求解过程可以转化为解线性方程组的问题。
为了解这个方程组,我们需要构建一个三对角矩阵。
其中的对角线元素是2,上下对角线元素是1。
3. 计算方程组的右侧:方程组的右侧是一个n-1维的向量,每个元素对应插值段的边界条件。
对于自然边界,右侧元素都是0;对于固定边界,则通过求解给定的导数值得到。
4. 解线性方程组:将三对角矩阵与右侧向量相乘,即可得到每个插值段的系数。
第三步是构造插值曲线。
在前两步中,我们计算得到了每个插值段的系数。
现在,我们需要将这些系数整合起来,构造出整个插值曲线。
具体的构造方法为,对于第i个插值段,其插值函数可表示为:S_i(x) = a_i + b_i(x - x_i) + c_i(x - x_i)^2 + d_i(x - x_i)^3其中x_i和x_{i+1}为插值段的端点,a_i、b_i、c_i、d_i为第i个插值段的系数。
《数值分析》课程设计三次样条插值算法院(系)名称信息工程学院专业班级 09普本信计1班学号 090111073学生姓名宣章然指导教师孔繁民2012年06月08日数值分析课程设计评阅书课程设计任务书2008—2009学年第二学期专业班级: 09普本信计1班学号: 060111060 姓名:宣章然课程设计名称:数值分析设计题目:三次样条插值完成期限:自 2012 年 6 月 8 日至 2012 年 6 月 13 日共 1 周设计依据、要求及主要内容:一、设计目的熟练掌握三次样条插值算法的原理和推导过程,并且能够应用Matlab软件编写相应的程序和使用Matlab软件函数库软件。
二、设计要求(1)用Matlab函数库中相应函数对选定的问题,求出具有一定精度的结果。
(2)使用所用的方法编写Matlab程序求解,对数值结果进行分析。
(3)对于使用多个方法解同一问题的,在界面上设计成菜单形式。
三、设计内容首先构造三次样条插值函数的定义和一般特征,并对实例问题进行实例分析,并总结四、参考文献[1] 黄明游,冯果忱.数值分析[M].北京:高等教育出版社,2008.[2] 马东升,雷勇军.数值计算方法[M].北京:机械工业出版社,2006.[3] 石博强,赵金.MATLAB数学计算与工程分析范例教程[M].北京:中国铁道出版社.2005.[4]郝红伟,MATLAB 6,北京,中国电力出版社,2001[5]姜健飞,胡良剑,数值分析及其MATLAB实验,科学出版社,2004[6]薛毅,数值分析实验,北京工业大学出版社,2005 计划答辩时间:2012年6月18日指导教师(签字):教研室主任(签字):批准日期:年月三次样条插值摘 要分段低次样条插值虽然计算简单、稳定性好、收敛性有保证且易在电子计算机上实现,但只能保证各小段曲线在连接处的连续性,不能保证整件曲线的光滑性。
利用样条插值,既可保持分段低次插值多项式,又可提高插值函数光滑性。
故给出分段三次样条插值的构造过程、算法步骤,利用MATLAB 软件编写三次样条插值函数通用程序,并通过数值算例证明程序的正确性。
关键字:三次样条 插值函数 MATLAB 编程 收敛性 算法步骤一 三次样条函数定义及特征定义1:若函数2()[,]S x a b C ∈,且在每个小区间上1,j j x x +⎡⎤⎦⎣上是三次多项式,其中01n a x x x b ⋯=<<<= 是给定节点,则称()s x 是节点01,,,n x x x ⋯上的三次样条函数。
若节点jx 上 给定函数值()j j y f x =(0,1,)j n ⋯= ,且()j js x y = (0,1,)j n ⋯= (1.1)成立,则称 ()s x 为三次样条差值函数。
从定义知,要求出()s x ,在每个应小区间1[,]j j x x + 上确定4个待定系数,共有n 个小区间,故应确定4n 个参数,根据()s x 在[,]a b 上二阶导数连续,在节点()1,2,3,,1j x j n ⋯=-处应满足连续性条件(0)(0),j j s x s x -=+''(0)(0),j j s x s x -=+''''(0)(0)j j s x s x -=+ (1.2)共有 3n-3个条件,再加上()s x 满足插值条件(1.1),共有4n-2个条件,因此还需要2个条件才能确定()s x 。
通常可在区间[,]a b 端点0,n a x b x ==上各加一个条件(称边界条件),边界条件可根据实际的问题要求给定。
常见的三种:(1) 已知两端的一节导数值,即{''00''()()n n s x f s x f == (1.3)(2)两端的二阶导数已知,即{''''00''''()()n n s x f s x f == (1.4)特殊情况下的边界条件''''0()()0n s x s x == (1.4)’称为自然边界条件(3)当()f x 是以0nx x - 为周期函数时,则要求()s x 也是周期函数,这时边界条件应满足而此时式中, 这样确定的样条函数称为周期函数。
二 函数推导原理及构造我们采用待定一阶导数的方法即设S(Xj)=Mj,j=0,1,...,n,因为分段三次Hermite插值多项式已经至少是一阶连续可导了,为了让它成为三次样条函数只需确定节点处的一阶导数使这些节点处的二阶导数连续即可!1,,1),0()0(-=+''=-''n i x S x S i i )()()()()(11111010i i i i i i i i h xx i i h x x i i h x x i h x x i h m h m y y x S -+--+-++-++=ϕϕϕϕ第一类三次样条插值问题方程组由于已知:基本方程组化为n-1阶方程组化为矩阵形式1,,1,0,],,[11-=-=∈++n i x x hx x x i i i i i 212)1()(,)1)(12()(-=-+=x x x x x x ϕϕ并整理后得求二阶导数对,)(x S i ,2,,1n -1个未知量个方程共个1,1+-n n 00)(m x S ='nn m x S =')(n n n n n n f g m m '-=+-----111212μλ⎪⎪⎩⎪⎪⎨⎧\这是一个严格对角占优的三对角方程组,用追赶法可以求解!第二类三次样条插值问题的方程组,由于已知:故得:稍加整理得第三类样条插值问题的方程组,由于:立即可得下式:1111022223333422221111222222n n n n n n n n n m g m m g m g m g m g m μλλμλμλλμλμ---------⎛⎫⎛⎫⎛⎫ ⎪⎪ ⎪ ⎪⎪ ⎪ ⎪⎪ ⎪ ⎪⎪ ⎪= ⎪⎪ ⎪⎪⎪ ⎪⎪⎪ ⎪⎪⎪ ⎪⎪⎪ ⎪-⎝⎭⎝⎭⎝⎭00)(M x S =''n n M x S ='')(时,称为自然边界条件00==n M M ⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛--212222121132211n n μλλμλμλ ⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛-n n m m m m m 1210 ⎪⎪⎪⎪⎪⎪⎪⎪⎭⎫ ⎝⎛=-n n g g g g g 1210 nn n n n g m m m =++-211λμ其中::求解这些不同类型的样条插值问题的方程组,我们可得所要待定的一阶导数:再代入S(x)的每一段表达式,就求得三次样条函数的表达式!利用插值(即求过已知有限个数据点的近似函数)的基本原理,用多项式作为研究插值的工具,进行代数插值。
其基本问题是:已知函数f (x)在区间[a,b]上n +1个不同点x0,…,xn 处的函数值 (i = 0,1,…,n),求一个至多n 次多项式ψn(x)使其在给定点处与 f (x)同值,即满足插值条件: ψn(x)= = .许多工程技术中提出的计算问题对插值函数的光滑性有较高要求,如飞机的机翼外形,内燃机的进、排气门的凸轮曲线,都要求曲线具有较高的光滑程度,不仅要连续,而且要有连续的曲率,这就导致了样条插值的产生。
数学上将具有一定光滑性的分段多项式称为样条函数。
具体地说,给定区间[a,b]的一个分划Δ如果函数s(x) 满足:(i )在每个小区间[ ](i=0,1,…,n)上s(x)是k 次多项式; (ii )s(x)在[a,b]上具有k −1阶连续导数。
则称s(x)为关于分划Δ 的k 次样条函数,其图形称为k 次样条曲线。
由于三次样条插值我、函数s(x)的插值节点处的二阶导数存在,因此令各节点处的二阶导数为2211222n n n n n m g m g λμλ--⎪ ⎪=⎪ ⎪ ⎪⎪ ⎪ ⎪ ⎪ ⎪⎪⎝⎭⎝⎭⎪⎪⎭n m m m m ,,,,210 ()()()1111101i i i i i i i h x i i h x x i i h x x i h m h m y -+--+++-++ϕϕ1,......,2,1,0-=n i'()(0,1,...,)k s x m k n == (1.01)根据样条插值函数的定义,三次样条插值函数是s(x)在每一个小区间)1....,1,0](,[]1-=+n k x x k k 上市不超过三次的多项式。
在每一个小区间)1....,1,0](,[]1-=+n k x x k k 上,其二阶导数为线性函数,即''1111()k kkk k k k k x x x x s x m m x x x x ++++--=+-- (1.02)对式(1.02)积分两次,则得到kk k kk k k k k b x x a h x x m h x x m x s +-+-++=++)(6)(6)()(3131 (1.03)其中k k k k k b a x x h ,,1-=+为任意常数。
又根据样条插值函数定义中的条件(3),即k k k y x f x s ==)()( 111)()(+++==k k k y x f x s可以确定ka 与kb 为k a =)(611k k k k k k m m hh y y ---++62k kk k h m y b -= (1.04)将式(1.04)中ka 与kb 的值代入表达式(1.03后,就可以得到样条插值函数)(x s 在区间],[1+k k x x 上的表达式为6))((66)(6)()(2113131k kk k k k k k k k k k k k k k h m y x x m m h h y y h x x m h x x m x s -+----+-+-=++++(1.05)其中km 与1+k m 分别为区间],[1+k k x x 两端点处的二阶导数值。
由此可以看处,只要能确定各点处的二阶导数值k m )1....,1,0(-=n k,则子渠道间上的三次样条插值函数s(x)也确定了。
)(x s 在区间[a,b]上的一阶导数连续,在各节点的左右两子区间上的s(x)虽然不同,但在连接点处的导数存在,即在连接点处的左右导数相等,有)0()0(''+=-k k x s x s(1.06)为了利用条件(2.18),在x 属于],[]1+k k x x 时,县求)('x s 为)(62)(2)()(112121'k k k k k k k kk k k k m m h h y y h x x m h x x m x s ---+-+--=++++(1.07)当x 属于],[1+k k x x 时,11'63)0(++---=+k k k k k k k k m hm h h y y x s(1.08)整理得:)1,.....,2,1(2)1(11-==++-+-n k m m m k k k k k λμμ(1.09)其中1-+=k k kk h h h μ)(61111--+----+=k k k k k k k k k h y y h y y h h λ三 问题的提出上面讨论的分段低次插值函数都有一致收敛性,但光滑性较差,对于像高速飞机的机翼形线,船体放样等型值线往往要求有二阶光滑度,即有二阶连续导数,早期工程师制图时,把富有弹性的细长木条(所谓样条)用压铁固定在样点上,在其他地方让它自由弯曲,然后画下长条的曲线,称为样条曲线。