HEATS 发表于 2010-9-13 22:22:16

一种新型的线性分段插值法的研究

<STRONG>1 引言</STRONG>
<H1><FONT size=2></FONT></H1>
<DD>在工业生产实践中,系统误差是不可避免而又必须加以校准的。对其较典型的处理是用模型法的非线性校正,即对系统误差进行理论分析和数学处理以建立起系统误差模型,再以此模型确定校正算法和数学表达式。作者在进行系统误差非线性校正中,除采用了传统的分段线性插值法,还根据具体情况采用了作者命名为逐次逼近线性插值法进行处理。通过对两种方法结果的比较,认为逐次逼近线性插值法效果良好,具有一定的实用价值。线性化处理软件编程法分三种方法:计算法、查表法、插值法;其中,插值法又分分段线性插值法、二次插值法、分段曲线拟合法、实验曲线的自动拟合法等。下面先简介分段线性插值法。<BR>
<TABLE align=right>
<TBODY>
<TR align=middle>
<TD><FONT size=2><IMG src="http://www.chmcw.com/upload/news/RCL/13220_y7oahm2007129151952.gif"><BR><B>图1</B></FONT></TD></TR></TBODY></TABLE>
<H1><FONT size=2>2 分段线性插值法</FONT></H1>
<DD>此法较为常用,基本方法就是将y=f(x)曲线分成几段直线代替曲线。如图1示。
<DD>设非线性函数y=f(x)在区间是单调的。过点(x<SUB>0</SUB>,f(x<SUB>0</SUB>)),(x<SUB>m</SUB>,f(x<SUB>m</SUB>))作直线U=F(x)=Ax+B,则在直线段区间中,其拟合误差:
<TABLE align=center>
<TBODY>
<TR align=middle>
<TD rowSpan=3><FONT size=2><FONT face=symbol>D</FONT>=</FONT>
<TD><FONT size=2>F(<SPAN style="TEXT-DECORATION: overline">x</SPAN>)-f(<SPAN style="TEXT-DECORATION: overline">x</SPAN>)</FONT>
<TR height=1 bgColor=#006600>
<TD><FONT size=2></FONT>
<TR align=middle>
<TD><FONT size=2>f(<SPAN style="TEXT-DECORATION: overline">x</SPAN>)</FONT></TD></TR></TBODY></TABLE>
<DD>若该段最大误差点不大于允许误差时,可用直线U=F(x)拟合曲线u=f(x),否则可将区间再细分分化为两个子区间,分别作折线进行误差判断。这样按上述方法不断进行区间划分,直至各子区间m(x)均满足为止。
<DD>由于输入-输出函数的非线性,且要求各子区间的拟合最大误差满足△<SUB>max</SUB>≤δ,因而各子区间长度不一。这就涉及到了区间划分问题。分段线性插值法使用优选法进行区间划分,即使用系数0.618。如图1所示,从x<SUB>m</SUB>处向低值截取x<SUB>k</SUB>=0.618(x<SUB>m</SUB>-x<SUB>0</SUB>)的一段为第二区间,(x<SUB>0</SUB>,x<SUB>k</SUB>)为第一区间。连接点(x<SUB>k</SUB>,f(x<SUB>k</SUB>)),(x<SUB>m</SUB>,f(x<SUB>m</SUB>)),既得区间的拟合折线为:
<DD>F<SUB>1</SUB>=A<SUB>1</SUB>x+B<SUB>1</SUB>
<DD>A<SUB>1</SUB>=(f(x<SUB>m</SUB>)-f(x<SUB>k</SUB>))/(x<SUB>m</SUB>-x<SUB>k</SUB>),B<SUB>1</SUB>=f(x<SUB>m</SUB>)-A<SUB>1</SUB>x<SUB>1m</SUB>
<DD>依次类推,可知第i个子区间的拟合折线为:
<DD>F<SUB>i</SUB>=A<SUB>i</SUB>x+B<SUB>i</SUB>
<DD>A<SUB>i</SUB>=(f(x<SUB>(i+1)m</SUB>)-f(x<SUB>im</SUB>))/(x<SUB>(i+1)m</SUB>-x<SUB>im</SUB>),B<SUB>i</SUB>=f(x<SUB>im</SUB>)-A<SUB>i</SUB>x<SUB>im</SUB>
<DD>若f(x)为非单调曲线,则可先通过df/dx=0求出各极点,以便化为单调区,再在各单调区间应用上述方法进行拟合。<BR>
<TABLE align=right>
<TBODY>
<TR align=middle>
<TD><FONT size=2><IMG src="http://www.chmcw.com/upload/news/RCL/13220_k4sadc200712915200.gif"><BR><B>图2 二分法分段线性插值法</B></FONT></TD></TR></TBODY></TABLE>
<H1><FONT size=2>3 逐次逼近线性插值法</FONT></H1>
<DD>作者在对分段线性插值法的作用中发现,该法中公式的系数取0.618,这对均匀数组来说易引起编程错觉。如在求区间段中,当m-k=2时,X=x-0.618(x-x),则x<X<X,在数组中区间可化为(X,X)或(X,X)。若在区间(X,X)内,其最大误差超过允许值,程序须进行再划分,这时若不进行强制性分段处理,则易进入死循环,且难被编程者发现。故作者根据数组的特点和编程者的习惯进行了改进,使用0.5系数代替0.618,但经编程求解后发现简单的替换使得分段区间的数目急剧增多。针对这种情况,作者进行了连续分段划分,寻求较少分段区间数。具体原理如下。<DD>若数组个数为m+1个,则在区间(x,x)范围内,令X=x-0.5(x-x)进行第一次划分,若X=x或x<X<X,令X=X,再对区间段区间。其软件流程图如图2所示。<H1>4 方法比较
<H1><FONT size=2></FONT></H1>
<DD>用以上两种方法分别对采集数组进行了公差为0.001mm,0.015mm和0.002mm的区间计算,所得折线公式数(区间数)如下表所示。<BR>
<TABLE border=1 cellSpacing=0 borderColorLight=#006600 borderColorDark=#ffffff cellPadding=0 bgColor=#e5ebba align=right>
<TBODY>
<TR align=middle>
<TD bgColor=#c5cb9a><FONT size=2>δ</FONT>
<TD rowSpan=3><FONT size=2>0.001</FONT>
<TD rowSpan=3><FONT size=2>0.015</FONT>
<TD rowSpan=3><FONT size=2>0.002</FONT>
<TR align=middle>
<TD bgColor=#c5cb9a><FONT size=2>区间数</FONT>
<TR align=middle>
<TD bgColor=#c5cb9a><FONT size=2>方法</FONT>
<TR align=middle>
<TD bgColor=#c5cb9a><FONT size=2>分段线性插值法</FONT>
<TD><FONT size=2>73</FONT>
<TD><FONT size=2>27</FONT>
<TD><FONT size=2>13</FONT>
<TR align=middle>
<TD bgColor=#c5cb9a><FONT size=2>逐次分段线性插值法</FONT>
<TD><FONT size=2>75</FONT>
<TD><FONT size=2>29</FONT>
<TD><FONT size=2>13</FONT></TD></TR></TBODY></TABLE>
<H1><FONT size=2>5 结束语</FONT></H1>
<DD>由上述实验数据可以看出,逐次逼近线性插值法效果同传统分段线性插值法基本相同,分段区间较少,线性化良好,其思维方式符合编程习惯,编程清晰,具有一定的实用价值。该法为非线性校正又增添了一种新的可供选择的方案。 </DD>
               
页: [1]
查看完整版本: 一种新型的线性分段插值法的研究

中国磨床技术论坛
论 坛 声 明 郑重声明:本论坛属技术交流,非盈利性论坛。本论坛言论纯属发表者个人意见,与“中国磨削技术论坛”立场无关。 涉及政治言论一律删除,请所有会员注意.论坛资源由会员从网上收集整理所得,版权属于原作者. 论坛所有资源是进行学习和科研测试之用,请在下载后24小时删除, 本站出于学习和科研的目的进行交流和讨论,如有侵犯原作者的版权, 请来信告知,我们将立即做出整改,并给予相应的答复,谢谢合作!

中国磨削网