FILTER:MOVR3,#N1;置循环初值
SORT:MOVR2,03H;循环次数送R2
MOVR0,#SAMP;采样值首址送R0
LOOP:MOVA,R0
INCR0
CLRC
SUBSA. @ R0;yn-yn-1→A
JCDONE;yn
现在要设法找到一个函数g(x),使g(x)在xi(i=0,…,n)处与f(xi)相等,这就是插值问题。满足这个条件的函数g(x)就称为f(x)插值函数,xi被称为插值节点。有了g(x),在以后的计算中就可以用g(x)在区间[a,b]上近似代替f(x)。
在插值法中,g(x)有各种选择方法,由于多项式是最容易计算的一类函数,一般常选择g(x)为n次多项式,并记n次多项式为pn(x),这种插值方法就叫做代数插值,也叫做多项式插值。
现要用一个次数不超过n的代数多项式pn(x)=anxn+an-1xn-1+…+a1x+a0(7-16)
去逼近f(x),使P(x)在节点xi处满足Pn(xi)=f(xi)=yii=0,1,…,n(7-17)
这样,我们只要用已知的xi和yi(i=0,1,…,n)去求解方程组(7-18),就可以求出ai(i=0,1,…,n),从而可以得到Pn(x)。这是求出插值多项式最基本的方法。
由于在实际问题中,xi和yi总是已知的,所以我们可以先离线求出ai,然后按所得到的ai编出一个计算Pn(x)的程序就可以对各输入值xi近似地实时计算f(x)≈Pn(x)。
通常,给出的离散点总是多于求解插值方程组所需要的离散数。因此,在用多项式插值方法求解离散点的插值函数时,首先必须根据所需要的逼近精度来决定多项式的次数。它的具体次数与所要逼近的函数有关,例如函数关系接近线性的,可从中选取两点,用一次多项式来逼近(n=1);接近抛物线的可从中选取三点,用二次多项式来逼近(n=2)……同时,多项式次数还与自变量的范围有关。一般来说,自变量的允许范围越大(即插值区间越大),达到同样精度时的多项式次数也较高。对于无法预先决定多项式次数的情况,可采用试探法,即先选取一个较小的n值,看看逼进误差是否接近所要求的精度,如果误差太大,则把n加1,再试一次,直到误差接近精度要求为止。在满足精度要求的前提下,n不应取得太大,以免增加计算时间。一般最常用的多项式插值是线性插值和抛物线(二次)型插值。
1.线性插值
线性插值是在一组数据(xi,yi)中选取两个有代表性的点(x0,y0)、(x1,y1),然后根据插值原理,求出插值方程:
P1(x)=(x-x1)/(x0-x1)y0+(x-x0)
(x1-x0)y1=α1x+α0(7-19)
式中的待定系数α1和α0:
α1=(y1-y0)/(x1-x0),α0=y0-α1x0(7-20)
当(x0,y0)、(x1,y1)取在非线性特性曲线f(x)或数组的两端点A、B时,线性插值就是最常用的直线方程校正法。
设A、B两点的数据分别为(a,f(a)),(b,f(b)),则根据式(7-20)就可以求出其校正方程P1(x)=α1x+α0,式中P1(x)表示对f(x)的近似值。当xi≠x0、x1时,P1(x)与f(x)有拟合误差Vi,其绝对值:
Vi=|P1(xi)-f(x1)|,i=1,2,…,n
在全部x的取值区间[a,b]中,若始终有Vi<;ε存在,ε为允许的拟合误差,则直线方程P1(x)=α1x+α0就是理想的校正方程。实时测量时,每采样一个值,就用该方程计算P1(x),并把P1(x)当作被测量值的校正值。
下面以镍铬-镍铝热电偶为例,说明这种方程的具体应用。
现要求用直线方程进行非线性校正,允许误差小于3℃。
取A(0,0)和B(20.21,490)两点,按式(7-20)可求得α1≈24.245,α0=0,即P1(x)=24.245x,这就是直线校正方程。可以验证,在两端点,拟合误差为0,而在x=11.38mV时,P1(x)=275.91℃,误差达到最大值4.09(℃)。240~360(℃)范围内拟合误差均大于3(℃)。
显然,对于非线性程度严重或测量范围较宽的非线性特性,采用上述一个直线方程进行校正往往很难满足仪器的精度要求。这时可采用分段直线方程来进行非线性校正。分段后的每一段非线性曲线用一个直线方程来校正,即:
P1i(x)=αi1+α0i,i=1,2,…,N(7-21)
折线的节点有等距与非等距两种取法。