<var id="fnfpo"><source id="fnfpo"></source></var>
<rp id="fnfpo"></rp>

<em id="fnfpo"><object id="fnfpo"><input id="fnfpo"></input></object></em>
<em id="fnfpo"><acronym id="fnfpo"></acronym></em>
  • <th id="fnfpo"><track id="fnfpo"></track></th>
  • <progress id="fnfpo"><track id="fnfpo"></track></progress>
  • <tbody id="fnfpo"><pre id="fnfpo"></pre></tbody>

  • x
    x

    四點二次插值的單片機匯編程序實現

    發布時間:2010-9-2 09:33    發布者:techshare
    關鍵詞: 插值 , 單片機 , 匯編程序
    在微機化的儀器儀表控制軟件中,特別是快速控制軟件中,或因直接計算過于復雜,或因只有經驗數據沒有理論公式,常采用查表插值法計算某些數據。

    一般適合于插值法的函數是光滑性較好的函數。所謂“光滑性較好”是指以下兩個方面:

    ◆連續且盡量高階地可導;

    ◆其泰勒展開式中高次項的絕對值較小。

    采用多項式插值時,若提高多項式次數,除了增加計算量(在高速實時控制的程序中,計算速度是很重要的問題)外,從數學上看還有若干缺點,故實際應用中一般不用太高的次數。拋物線插值(三點二次插值)是常用的一種。

    提高精度的另一途徑是增加節點密度。對于三點二次插值,節點密度若能提高二倍,則截斷誤差大約可以縮小到原來的1/8。但是這樣一來數據表的容量也要加大二倍,因此在容量和精度間存在著矛盾。 本文介紹一種“四點二次插值”算法,與普通三點=次插值相比,節點密度不變,計算量也差不多,但精度(最大誤差限)大致相當于節點密度提高二倍的效果。

    四點二次插值的思想是:計算(xk,xk+1)區間的插值時,用(xk-1,xk,)的三點二次插值結果和(xk,xk+1)的三點二次插值結果相平均,作為最后結果。若采用等距節點,間距為h,根據這個思想,不難推出以下計算公式:



    與普通的三點二次插值法對比,可以看出計算量差不多(乘法次數相同,除以4可以用移位實現)。

    下面粗略分析其精度。

    二次插值誤差余項應有三個零點,此法中xk和k+1是其兩個零點。顯然,如果第三個零點在x1和xk+1的中點處,則其精度和節點密度提高二倍后的三點二次插值法相同。 設(xk-1,xk,xk+1)的三點二次插值誤差余項為R1(x),(xk,xk+1xk+2)的三點二次插值誤差余項為R2(x)則四點二次插值的誤差余項為



    系數K(ξ1′,ξ2)反映中點xm處四點二次插值的誤差,比原來三點二次插值的誤差減小的程度。若f'''(x)是常數,則k(ξ1,ξ2)=0,因而R(xm)=0。也就是說,R(z)第三個零點在xm處,達到上文所述的效果。

    對于比較光滑的函數,f'''(x)在小區間內不會變化太大,故k(ξ1,ξ2)式中的分子絕對值應較小。若K(ξ1,ξ2)近于0,則R(xm)也近于0,R(x)的零點仍在xm附近,效果與上述接近?梢宰C明(限于篇幅.證明略),只要f'''(ξ1)與f'''(ξ)之比在O.5~2之間,則第三個零點必然在xk和xk+1之間。

    若K(ξ1,)絕對值較大即f'''(ξ2)與f'''(ξ2)之比距1較遠),或,f'''(ξ1)與,f…(ξ2)反號,則零點不在中點附近,此時精度并沒有明顯提高,但不會比原來的情況差。這必然是K(ξ1,ξ2)式中的分母絕對值太小,也就是說,是處在,f'''(x)過零或近于零的區域。

    對于較光滑的函數,原三點二次插值法的截斷誤差大致正比于其三階導數,因此三階導數較大的區域也是精度最差的區域。f'''(x)過零或近于零的區域中,誤差本來就遠小于其它區域。綜上所述,四點二次插值法與之相比,在三階導數較大的區域,精度大致改進到相當于節點密度提高二倍后的三點二次插值法;在三階導數近于0的區域,則不會比原來三點二次插值法差。從實用的角度,可以說已經實現了上文所說的效果。

    另外,還可以指出,這個算法中的v1、v2都是由數據表中相鄰項的差值產生的,絕對值常常較小,故乘法?梢圆捎玫途瘸。這一點在以較低檔的微處理器構成的應用系統中是有實際意義的。如下面AVR單片機的程序中,結果是雙字節精度,但其中乘法為單字節。

    下面將給出以MCS-96單片機匯編語言和AVR單片機匯編語言編寫的程序實例。

    實例中,取間隔h為2的整數冪。這樣,定點形式的自變量只要采用簡單的移位,即可以得出整數的k和純小數的“,作為下列程序的入口參數。在MCS一96單片機的程序中,k和u均取雙字節;在AVR單片機的程序例中,k和u均取單字節,但結果為雙字節。

    這是一個應用程序中用來查幾種數據表的子程序。因為這些表都是增函數,故下面設計中認定“[v2×u′+v1]必為正”。表中相鄰項的差,符合程序注釋中的要求(特別是第二個例子vl、v2為單字節),否則程序需要適當調整。說明:以下y′、yO加、yl和y2即上文中的fxk-1),f(xk),f(xk+1)和f(xk+2)。
    本文地址:http://www.portaltwn.com/thread-25092-1-1.html     【打印本頁】

    本站部分文章為轉載或網友發布,目的在于傳遞和分享信息,并不代表本網贊同其觀點和對其真實性負責;文章版權歸原作者及原出處所有,如涉及作品內容、版權和其它問題,我們將根據著作權人的要求,第一時間更正或刪除。
    您需要登錄后才可以發表評論 登錄 | 立即注冊

    廠商推薦

    • Microchip視頻專區
    • EtherCAT®和Microchip LAN925x從站控制器介紹培訓教程
    • MPLAB®模擬設計器——在線電源解決方案,加速設計
    • 讓您的模擬設計靈感,化為觸手可及的現實
    • 深度體驗Microchip自動輔助駕駛應用方案——2025巡展開啟報名!
    • 貿澤電子(Mouser)專區

    相關在線工具

    相關視頻

    關于我們  -  服務條款  -  使用指南  -  站點地圖  -  友情鏈接  -  聯系我們
    電子工程網 © 版權所有   京ICP備16069177號 | 京公網安備11010502021702
    快速回復 返回頂部 返回列表
    精品一区二区三区自拍图片区_国产成人亚洲精品_亚洲Va欧美va国产综合888_久久亚洲国产精品五月天婷