機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
四點(diǎn)二次插值的單片機(jī)匯編程序?qū)崿F(xiàn)
四點(diǎn)二次插值的單片機(jī)匯編程序?qū)崿F(xiàn)
 更新時(shí)間:2009-9-8 16:44:09  點(diǎn)擊數(shù):0
【字體: 字體顏色

    在微機(jī)化的儀器儀表控制軟件中,特別是快速控制軟件中,或因直接計(jì)算過于復(fù)雜,或因只有經(jīng)驗(yàn)數(shù)據(jù)沒有理論公式,常采用查表插值法計(jì)算某些數(shù)據(jù)。
    一般適合于插值法的函數(shù)是光滑性較好的函數(shù)。所謂“光滑性較好”是指以下兩個(gè)方面:
    ◆連續(xù)且盡量高階地可導(dǎo):
    ◆其泰勒展開式中高次項(xiàng)的絕對(duì)值較小。
    采用多項(xiàng)式插值時(shí),若提高多項(xiàng)式次數(shù),除了增加計(jì)算量(在高速實(shí)時(shí)控制的程序中,計(jì)算速度是很重要的問題)外,從數(shù)學(xué)上看還有若干缺點(diǎn),故實(shí)際應(yīng)用中一般不用太高的次數(shù)。拋物線插值(三點(diǎn)二次插值)是常用的一種。
    提高精度的另一途徑是增加節(jié)點(diǎn)密度。對(duì)于三點(diǎn)二次插值,節(jié)點(diǎn)密度若能提高二倍,則截?cái)嗾`差大約可以縮小到原來的1/8。但是這樣一來數(shù)據(jù)表的容量也要加大二倍,因此在容量和精度間存在著矛盾。
    本文介紹一種“四點(diǎn)二次插值”算法,與普通三點(diǎn)=次插值相比,節(jié)點(diǎn)密度不變,計(jì)算量也差不多,但精度(最大誤差限)大致相當(dāng)于節(jié)點(diǎn)密度提高二倍的效果。
    四點(diǎn)二次插值的思想是:計(jì)算(xk,xk+1)區(qū)間的插值時(shí),用(xk-1,xk,)的三點(diǎn)二次插值結(jié)果和(xk,xk+1)的三點(diǎn)二次插值結(jié)果相平均,作為最后結(jié)果。若采用等距節(jié)點(diǎn),間距為h,根據(jù)這個(gè)思想,不難推出以下計(jì)算公式:

    與普通的三點(diǎn)二次插值法對(duì)比,可以看出計(jì)算量差不多(乘法次數(shù)相同,除以4可以用移位實(shí)現(xiàn))。
    下面粗略分析其精度。
    二次插值誤差余項(xiàng)應(yīng)有三個(gè)零點(diǎn),此法中xk和k+1是其兩個(gè)零點(diǎn)。顯然,如果第三個(gè)零點(diǎn)在x1和xk+1的中點(diǎn)處,則其精度和節(jié)點(diǎn)密度提高二倍后的三點(diǎn)二次插值法相同。
    設(shè)(xk-1,xk,xk+1)的三點(diǎn)二次插值誤差余項(xiàng)為R1(x),(xk,xk+1xk+2)的三點(diǎn)二次插值誤差余項(xiàng)為R2(x)則四點(diǎn)二次插值的誤差余項(xiàng)為

    系數(shù)K(ξ1′,ξ2)反映中點(diǎn)xm處四點(diǎn)二次插值的誤差,比原來三點(diǎn)二次插值的誤差減小的程度。若f'''(x)是常數(shù),則k(ξ1,ξ2)=0,因而R(xm)=0。也就是說,R(z)第三個(gè)零點(diǎn)在xm處,達(dá)到上文所述的效果。
    對(duì)于比較光滑的函數(shù),f'''(x)在小區(qū)間內(nèi)不會(huì)變化太大,故k(ξ1,ξ2)式中的分子絕對(duì)值應(yīng)較小。若K(ξ1,ξ2)近于0,則R(xm)也近于0,R(x)的零點(diǎn)仍在xm附近,效果與上述接近。可以證明(限于篇幅.證明略),只要f'''(ξ1)與f'''(ξ)之比在O.5~2之間,則第三個(gè)零點(diǎn)必然在xk和xk+1之間。
    若K(ξ1,)絕對(duì)值較大即f'''(ξ2)與f'''(ξ2)之比距1較遠(yuǎn)),或,f'''(ξ1)與,f…(ξ2)反號(hào),則零點(diǎn)不在中點(diǎn)附近,此時(shí)精度并沒有明顯提高,但不會(huì)比原來的情況差。這必然是K(ξ1,ξ2)式中的分母絕對(duì)值太小,也就是說,是處在,f'''(x)過零或近于零的區(qū)域。
    對(duì)于較光滑的函數(shù),原三點(diǎn)二次插值法的截?cái)嗾`差大致正比于其三階導(dǎo)數(shù),因此三階導(dǎo)數(shù)較大的區(qū)域也是精度最差的區(qū)域。f'''(x)過零或近于零的區(qū)域中,誤差本來就遠(yuǎn)小于其它區(qū)域。綜上所述,四點(diǎn)二次插值法與之相比,在三階導(dǎo)數(shù)較大的區(qū)域,精度大致改進(jìn)到相當(dāng)于節(jié)點(diǎn)密度提高二倍后的三點(diǎn)二次插值法;在三階導(dǎo)數(shù)近于0的區(qū)域,則不會(huì)比原來三點(diǎn)二次插值法差。從實(shí)用的角度,可以說已經(jīng)實(shí)現(xiàn)了上文所說的效果。
    另外,還可以指出,這個(gè)算法中的v1、v2都是由數(shù)據(jù)表中相鄰項(xiàng)的差值產(chǎn)生的,絕對(duì)值常常較小,故乘法常可以采用低精度乘。這一點(diǎn)在以較低檔的微處理器構(gòu)成的應(yīng)用系統(tǒng)中是有實(shí)際意義的。如下面AVR單片機(jī)的程序中,結(jié)果是雙字節(jié)精度,但其中乘法為單字節(jié)。
    下面將給出以MCS-96單片機(jī)匯編語言和AVR單片機(jī)匯編語言編寫的程序?qū)嵗?BR>    實(shí)例中,取間隔h為2的整數(shù)冪。這樣,定點(diǎn)形式的自變量只要采用簡單的移位,即可以得出整數(shù)的k和純小數(shù)的“,作為下列程序的入口參數(shù)。在MCS一96單片機(jī)的程序中,k和u均取雙字節(jié);在AVR單片機(jī)的程序例中,k和u均取單字節(jié),但結(jié)果為雙字節(jié)。
    這是一個(gè)應(yīng)用程序中用來查幾種數(shù)據(jù)表的子程序。因?yàn)檫@些表都是增函數(shù),故下面設(shè)計(jì)中認(rèn)定“[v2×u′+v1]必為正”。表中相鄰項(xiàng)的差,符合程序注釋中的要求(特別是第二個(gè)例子vl、v2為單字節(jié)),否則程序需要適當(dāng)調(diào)整。
    說明:以下y′、yO加、yl和y2即上文中的fxk-1),f(xk),f(xk+1)和f(xk+2)。
    MCS一96和AVR單片機(jī)匯編語言插值算法程序見本刊網(wǎng)站www.dpj.com.cn。

  • 上一篇: 在Bank Switch基礎(chǔ)上實(shí)現(xiàn)大程序和數(shù)掘空間
  • 下一篇: 沒有了
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1