测量曲线插直程序
发布时间:2011/10/5 11:52:49 访问次数:1133
2.1.4 三次样条函数插值法
图2.8三次样条函数原理
如果各样点之间为三次曲线,则画出的曲线由各段三次曲线拼接而成,且每个采样点处的两段三次曲线的一阶、二阶导数连续,这在数学上称为三次样条函数,其原理如图2.8所示。利用微处理器处理三次样条函数比较复杂,甚至难以实现。这时可以使用诸如MATLAB等强有力的数学工具计算出样条函数的各次系数,利用这些系数就可以编写出高效的用户插值程序。设有0,1,2,…,n个采样点,则n个三次多项式的通用形式为 H101C (2.8)
Si(x)=aix2,+bx2+cix+bi=1,2,3...,n
三次样条函数Si(x)在区间[xi-xi,xi,]上的三次式常用两种方法表示,一种是设Si(x)=yi,S"(x)=M'hi-xi-xi-1得到m的表达式;另一种是设S(xi)yi,S"(XI)=Mi,hi=xi-xi-1,得到M的表达式。对于M的表达式,因S(x)在[Xi-1,Xi]上是三次式,s"(x)是一次式,s"(xi-1)=Mi-1,S“(xi)=Mi,按线性插值公式可得到
xi-x x-xi-1
S"(x)_____Mi-1+____Mi
hi hi (2.9)
对式(2.9)积分两次可得三次样条函数的M表达式:
hi2Mi-1 Xi-x hi2Mi-1 x-xi-1
1 -_______ _____+[yi-_______]______
s(x)=__[(xi-x)3Mi-1+(x-xi-1)3M]+[yi-1 6 ] hi 6 hi
6hi xE[Xi-1,xi],i=1.2...,n (2.10)
可见,要确定三次样条函数S(x),只需确定Mi。为此,需用到S(x)的光滑性。既然三次样条函数的二阶导数连续,当然一阶导数也连续,故在中间节点xi(i=1,2...,n-1)处应有S'(XI)=S'+(Xi),这样可以得到Mi满足的n-1个方程:
(2.11)
对于两个边界点有S"(xo)=Mo,s"(x)=M"。这样就得到要求解n+1个M值的n+1个方程。由此可y(x)构造某点处的二阶导数表示的三次样条插值函数可分为以下三步。
①根据S"(X)的连续性及其为线性函数的特点,将s"(x)表示为线性函数,再根据S(x)的连续性及插值条件,写出S"(x)用够Mi(i=1,2...,n)表示的形式。H1053
②根据S'(x)在节点Xi(i=1,2,...,n-1)处的连续性及边界条件,导出含Mi(i=1,2,...,n)的n+l阶线性方程组。
③之解Mi(i=1,2,...,n)的线性方程组,将得到的Mi代入[Xi一l,xi]的表达式,即得到似节点处二阶导数表示的三次样条函数。
采用MATLAB求解三次样条函数对应的Mi(i=1,2...,n)的程序流程图如图2.9所示。
图2.9样条函数插值程序流程图
线性插值法比较简单,但精度不高;三次样条函数插值法比较精确,但计算量大;二次抛物线插值法精度较高,计算量适中。在实际应用中,可根据被测量(如温度)与测量值(经A/D转换得到的电压值)之间关系曲线的特征选取合适的插值方法。为避免采用高次插值法,可在测量曲线曲率变化比较大的地方增加测试点,这样就可以采用线性插值法。例如,在比色测温系统中,采样点测试误差很小,且硅光电池特性曲线的中间大部分近似线性,故采用线性插值法。但对于某些情况,要给出更多的测量点有困难时,就必须根据实际情况在不同的区段选取不同的插值方法。H11A817A3SD
三种插值方法均属计算法,所取段数越多,计算精度越高。但是,这不仅增加计算量,而且也会产生计算误差。此外,在某些检测系统中,有些参数的计算非常复杂,需要用较长的计算程序,占用较多的微处理器内存单元,此时可利用查表法进行处理。
2.1.4 三次样条函数插值法
图2.8三次样条函数原理
如果各样点之间为三次曲线,则画出的曲线由各段三次曲线拼接而成,且每个采样点处的两段三次曲线的一阶、二阶导数连续,这在数学上称为三次样条函数,其原理如图2.8所示。利用微处理器处理三次样条函数比较复杂,甚至难以实现。这时可以使用诸如MATLAB等强有力的数学工具计算出样条函数的各次系数,利用这些系数就可以编写出高效的用户插值程序。设有0,1,2,…,n个采样点,则n个三次多项式的通用形式为 H101C (2.8)
Si(x)=aix2,+bx2+cix+bi=1,2,3...,n
三次样条函数Si(x)在区间[xi-xi,xi,]上的三次式常用两种方法表示,一种是设Si(x)=yi,S"(x)=M'hi-xi-xi-1得到m的表达式;另一种是设S(xi)yi,S"(XI)=Mi,hi=xi-xi-1,得到M的表达式。对于M的表达式,因S(x)在[Xi-1,Xi]上是三次式,s"(x)是一次式,s"(xi-1)=Mi-1,S“(xi)=Mi,按线性插值公式可得到
xi-x x-xi-1
S"(x)_____Mi-1+____Mi
hi hi (2.9)
对式(2.9)积分两次可得三次样条函数的M表达式:
hi2Mi-1 Xi-x hi2Mi-1 x-xi-1
1 -_______ _____+[yi-_______]______
s(x)=__[(xi-x)3Mi-1+(x-xi-1)3M]+[yi-1 6 ] hi 6 hi
6hi xE[Xi-1,xi],i=1.2...,n (2.10)
可见,要确定三次样条函数S(x),只需确定Mi。为此,需用到S(x)的光滑性。既然三次样条函数的二阶导数连续,当然一阶导数也连续,故在中间节点xi(i=1,2...,n-1)处应有S'(XI)=S'+(Xi),这样可以得到Mi满足的n-1个方程:
(2.11)
对于两个边界点有S"(xo)=Mo,s"(x)=M"。这样就得到要求解n+1个M值的n+1个方程。由此可y(x)构造某点处的二阶导数表示的三次样条插值函数可分为以下三步。
①根据S"(X)的连续性及其为线性函数的特点,将s"(x)表示为线性函数,再根据S(x)的连续性及插值条件,写出S"(x)用够Mi(i=1,2...,n)表示的形式。H1053
②根据S'(x)在节点Xi(i=1,2,...,n-1)处的连续性及边界条件,导出含Mi(i=1,2,...,n)的n+l阶线性方程组。
③之解Mi(i=1,2,...,n)的线性方程组,将得到的Mi代入[Xi一l,xi]的表达式,即得到似节点处二阶导数表示的三次样条函数。
采用MATLAB求解三次样条函数对应的Mi(i=1,2...,n)的程序流程图如图2.9所示。
图2.9样条函数插值程序流程图
线性插值法比较简单,但精度不高;三次样条函数插值法比较精确,但计算量大;二次抛物线插值法精度较高,计算量适中。在实际应用中,可根据被测量(如温度)与测量值(经A/D转换得到的电压值)之间关系曲线的特征选取合适的插值方法。为避免采用高次插值法,可在测量曲线曲率变化比较大的地方增加测试点,这样就可以采用线性插值法。例如,在比色测温系统中,采样点测试误差很小,且硅光电池特性曲线的中间大部分近似线性,故采用线性插值法。但对于某些情况,要给出更多的测量点有困难时,就必须根据实际情况在不同的区段选取不同的插值方法。H11A817A3SD
三种插值方法均属计算法,所取段数越多,计算精度越高。但是,这不仅增加计算量,而且也会产生计算误差。此外,在某些检测系统中,有些参数的计算非常复杂,需要用较长的计算程序,占用较多的微处理器内存单元,此时可利用查表法进行处理。
热门点击