三次样条函数
- 格式:doc
- 大小:88.50 KB
- 文档页数:7
样条插值是一种工业设计中常用的、得到平滑曲线的一种插值方法,三次样条又是其中用的较为广泛的一种。
1. 三次样条曲线原理假设有以下节点1.1 定义样条曲线是一个分段定义的公式。
给定n+1个数据点,共有n个区间,三次样条方程满足以下条件:a. 在每个分段区间(i = 0, 1, …, n-1,x递增),都是一个三次多项式。
b. 满足(i = 0, 1, …, n )c. ,导数,二阶导数在[a, b]区间都是连续的,即曲线是光滑的。
所以n个三次多项式分段可以写作:,i = 0, 1, …, n-1其中ai, bi, ci, di代表4n个未知系数。
1.2 求解已知:a. n+1个数据点[xi, yi], i = 0, 1, …, nb. 每一分段都是三次多项式函数曲线c. 节点达到二阶连续d. 左右两端点处特性(自然边界,固定边界,非节点边界)根据定点,求出每段样条曲线方程中的系数,即可得到每段曲线的具体表达式。
插值和连续性:, 其中i = 0, 1, …, n-1微分连续性:, 其中i = 0, 1, …, n-2样条曲线的微分式:将步长带入样条曲线的条件:a. 由(i = 0, 1, …, n-1)推出b. 由(i = 0, 1, …, n-1)推出c. 由(i = 0, 1, …, n-2)推出由此可得:d. 由(i = 0, 1, …, n-2)推出设,则a. 可写为:,推出b. 将ci, di带入可得:c. 将bi, ci, di带入(i = 0, 1, …, n-2)可得:端点条件由i的取值范围可知,共有n-1个公式,但却有n+1个未知量m 。
要想求解该方程组,还需另外两个式子。
所以需要对两端点x0和xn的微分加些限制。
选择不是唯一的,3种比较常用的限制如下。
a. 自由边界(Natural)首尾两端没有受到任何让它们弯曲的力,即。
具体表示为和则要求解的方程组可写为:b. 固定边界(Clamped)首尾两端点的微分值是被指定的,这里分别定为A和B。
三次样条函数的边界条件
一、第一种边界条件:固定边界条件(也叫夹紧边界条件)
1. 一阶导数边界条件
- 想象一下你在摆弄一个有弹性的东西,在两端你把它的“斜率”给定好了。
比如说,在区间的左端点a和右端点b,你规定了这个三次样条函数在这两点的一阶导数的值,就好像你在这两个端点抓住这个函数,让它按照你规定的倾斜程度开始和结束。
- 就好比你有一个弯曲的小棍,你在小棍的两端规定了它开始和结束弯曲的方向的陡峭程度。
2. 二阶导数边界条件
- 这个呢,就像是你在规定这个函数在边界处的“弯曲程度”。
在端点a和b,你设定了二阶导数的值。
这就好比你在控制小棍在两端的弯曲的曲率,是弯得更厉害还是比较平缓,你说了算。
二、第二种边界条件:自然边界条件
1. 二阶导数为零边界条件
- 这个边界条件很有趣哦。
它就像是你在说这个函数在边界处是比较“平滑”的,没有额外的弯曲。
就好像你在玩一个有弹性的绳子,在两端它没有被拧或者额外弯曲,是很自然地伸展着,所以二阶导数为零,就表示在边界处这个函数的弯曲没有突然的变化。
三、第三种边界条件:周期边界条件
1. 函数值和一阶导数相等边界条件
- 这就像是一个循环的东西。
想象你有一个环形的轨道,三次样条函数就沿着这个轨道走。
在区间的起点a和终点b,函数值是一样的,而且它在这两点的“倾斜程度”(一阶导数)也是一样的。
就好像你在这个环形轨道上,从一个点出发转一圈回来,函数的状态要能无缝对接,就像小火车在环形轨道上跑,回到起点的时候速度(一阶导数)和高度(函数值)都要和出发的时候一样。
三次样条插值函数MATLAB 编程实现三次样条插值函数为()()[)()[]1011,,,,n n n S x x x x S x S x x x x-⎧∈⎪=⎨⎪∈⎩ 利用三次埃尔米特插值函数表示三次样条插值函数,即()()()()())111111,,j j j j j j j j j j j S x y x y x m x m x x x x ααββ++++++⎡=+++∈⎣(0,1,,1j n =-)基函数满足()()()()()()21112111121121111212jj j j j j j j j j j j j j j j j j j jj j j j x x x x x x x x xx xx x x x x x xx xx x x x xx x x x x x xααββ++++++++++++⎛⎫⎛⎫--=+ ⎪⎪ ⎪⎪--⎝⎭⎝⎭⎛⎫⎛⎫--=+ ⎪⎪ ⎪⎪--⎝⎭⎝⎭⎛⎫-=-⎪ ⎪-⎝⎭⎛⎫-=-⎪ ⎪-⎝⎭由上式易得()()()()()()()()()()()()()()1331111331112211112211612612246246j j j j j j j j j j j j j j j j j j j j j j jj j j j j x x x x x x xx x x x x x x x x x x x x xx xx x x x x x x x x ααββ+++++++++++++++''=---+''=-+--+''=---+''=---则有()()()()()()()()()()()111111113333111111122221111661212242466j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j S x y x y x m x m x x x x x y x y x x x x x x x x x x x x x m x m x x x x x x x x x ααββ+++++++++++++++++++''''''''''=+++⎡⎤⎡⎤++⎢⎥⎢⎥=-+-+⎢⎥⎢⎥----⎣⎦⎣⎦⎡⎤++⎢⎥+-+-⎢⎥----⎣⎦)1,j j x x x +⎡⎤⎢⎥⎡∈⎣⎢⎥⎣⎦(0,1,,1j n =-)同理有()()()()()()()()()()()()()()()11111113333111111122221111661212242466j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j j S x y x y x m x m x x x x x y x y x x x x x x x x x x x x x m x m x x x x x x x x x ααββ------------------''''''''''=+++⎡⎤⎡⎤++⎢⎥⎢⎥=-+-+⎢⎥⎢⎥----⎣⎦⎣⎦⎡⎤⎡++⎢⎥+-+-⎢⎥----⎣⎦⎣)1,j j x x x -⎤⎢⎥⎡∈⎣⎢⎥⎦(1,,j n =)根据样条函数二阶导数连续性,即()()100j j j j S x S x +''''+=-(1,,1j n =-)即()()()()()()()()()()()()()()()()111111332211111111113322111166426624j j jj j j j j j j jj j j j j j j j j j j j j j jj j j j j jj j j j j j j j x x y x x y x x x x m m x x x x x x x x x x y x x y x x x x m m x x x x x x x x ++++++++++--------------+++--------=+++----(1,,1j n =-)化简得()()()()()111111111111233j j j j j j j j j j j j j j j j j j jj j xx m x x m x x m x x x x y y y y x x x x +-+--+-++-+--+-+---=-+---(1,,1j n =-)可得线性方程组()()()()()()()()()()0121201023231213121221111110212110211032213221322122233333n n n n n n n n n n n n m m x x x x x x m x x x x x x m x x x x x x m m m x x x x y y y y x x x x x x x x y y y y x x x x y ------⨯+-+⨯⎛⎫ ⎪ ⎪ ⎪---⎛⎫⎪ ⎪--- ⎪ ⎪⎪ ⎪⎪ ⎪ ⎪--- ⎪⎝⎭ ⎪ ⎪ ⎪⎝⎭---+------+---=()()()121112112113n n n n n n n n n n n n n x x x x y y y x x x x ----------⨯⎛⎫⎪ ⎪ ⎪ ⎪⎪⎪ ⎪-- ⎪-+- ⎪--⎝⎭为了使样条插值问题有惟一解,我们在原有方程基础上增加两个边界条件。
摘要求函数在给定区间上的定积分,在微积分学中已给出了许多计算方法,但是,在实际问题计算中,往往仅给出函数在一些离散点的值,它的解析表达式没有明显的给出,或者,虽然给出解析表达式,但却很难求得其原函数。
这时我们可以通过数值方法求出函数积分的近似值。
在用近似值代替真实值时,遇到的问题就是近似值的代数精度是否足够。
当代数精度不足够时,很显然提高插值函数的次数是一种方法,但是考虑到数值计算的稳定性,当次数过高时,会出现龙格现象,用增大n的方法来提高数值积代数精度是不可取的。
正如我们所知道的分段线性插值,逼近程度好,但光滑性差。
分段三次Hermite插值,逼近程度好,光滑性也有所提高,但是需要增加更多的条件,不太实用。
因此,我们将介绍一种结合二者的优点的插值方法——三次样条插值。
本实验将介绍三次样条插值的三弯矩算法。
关键词:龙格现象三弯矩算法代数精度分段三次Hermite插值1、实验目的1) 通过本次实验体会并学习三次样条插值的优点。
2) 通过对三次样条插值进行编程实现,提高自己的编程能力。
3) 用实验报告的形式展现,提高自己在写论文方面的能力。
2、算法流程如果已知函数)(x f y =在节点a =x 0<x 1<⋯<x n =b,y i =f (x i ),i =0,1,2,⋯,n 处的函数值和导数值:n i x f y i i ,,2,1,0),( ==如果)(x S 满足条件:1) S (x )是一个分段的三次多项式且i i y x s =)(;2) S (x )在[a,b]具有二阶连续导数。
则称S (x )是三次样条插值函数。
S (x )的具体形式为:其中S i (x)在[x n−1,x n ]上是三次多项式S i (x )=a i x 3+b i x 2+c i x +d i 由插值条件S (x i )=y i ,i=0,1,2,…,n ,得n+1个条件。
边界条件一:S ′(x 0)=y 0′,S ′(x n )=y n ′边界条件二:S ′′(x 0)=y 0′′,S ′′(x n )=y n ′′边界条件三:假定函数y =f(x)是以b-a 为周期的周期函数,这时要求S(x)也是周期函数,即{S (x 0+0)=S(x n −0)S ′(x 0+0)=S ′(x n −0)S ′′(x 0+0)=S ′′(x n +0)()()()()⎪⎪⎩⎪⎪⎨⎧∈∈∈=-]12,121,01,[,...............][,][,n n n x x x x s x x x x s x x x x s x s针对三种边界条件的求解方法的不同,可以分为三转角算法和三弯矩算法,本实验将介绍和学习三转角算法。