林昌華,楊 巖
(重慶理工大學機械工程學院,重慶 400054)
工程設計及CAD過程中涉及到大量的數據查詢和處理工作。工程設計資料或手冊中的數據往往沒有公式表達的函數關系,而是以表格或者線圖的形式給出,有的待查數據可能處于相鄰2個節點數據之間,有的數據則在對應的線圖上。如何快速、準確地取出待查數據,實現對設計資料和數據的自動化處理,是高效、精準、快捷完成設計工作的關鍵。無論是對于表格節點間區域數據的獲取或是線圖數據的處理,拉格朗日插值法的應用都較好地解決了工程設計及其CAD中的這一問題。
插值法的基本原理:在插值點附近選取若干合適的節點,過這些節點構造一個簡單的插值函數y=p(x),在所選數據區間用插值函數作為原來函數f(x)的近似表達式,然后計算插值函數p(x)的值以代替原函數f(x)的值,使得f(xi)=p(xi),i=1,2,3,…,n成立。由此可見,插值法的實質是根據已知的節點數據或線圖上某些已知點的數據構造一個既簡單又具有足夠精度的插值函數p(x),并利用該插值函數快速獲取原函數在對應位置的數據,這種利用若干節點來構造插值函數的方法稱為拉格朗日插值法。
在原函數f(x)上取插值節點數為n+1,分別為(x0,y0)、(x1,y1)、(x2,y2)、…、(xn,yn),拉格朗日插值多項式的表達式為

拉格朗日插值法的一個特例就是僅用2個節點(x1,y1)、(x2,y2)來構造插值。由于所表達的函數為線性函數,所以兩點插值通常又稱為線性插值。線性插值公式構造如下

圖1為線性插值幾何示意圖。從圖1可以看出,這種插值的結果往往會產生一定的誤差。在要求精確數據的某些情況下,這樣的誤差顯然難以滿足設計要求。但線性插值公式構造簡單,可直接編入程序中計算求值,當節點間隔較小或對節點之間的數據精度無特別要求時,這種插值結果是能滿足一般設計要求的。因此在工程設計數據處理過程中,特別是需要查取相鄰兩點之間數據時大量使用了線性插值。

圖1 線性插值幾何示意圖
采用3個插值節點得到的是二次插值多項式,即拋物線插值。相對于線性插值,拋物線插值稍微復雜一些,但插值精度較高,因此在CAD數據處理時應用也很廣泛。
拋物線插值最好選取距離插值點最近的個節點以減小插值誤差。查找到插值點所在區間后,判斷它與前后兩點間的距離。如果距離后一點近,則取后面兩點與前面一點進行插值(見圖2(a);如果距離前一點近,則取前面兩點和后面一點進行插值(見圖2(b))。

圖2 拋物線插值
帶傳動設計時,需要根據小帶輪包角大小來查取包角修正系數Kα,見表1。表1的包角值往往是位數為0和5的整數,如果實際包角值在某2個節點區域內,就必須插值檢索。

表1 小帶輪包角修正系數Kα
利用Auto LISP編程,可將表中節點上的包角和包角系數分別放在2個表變量中,根據給定的實際包角值先檢索出左右相鄰的節點值,再通過線性插值確定實際的包角修正系數。
包角檢索函數定義如下:

(setq ab1(nth i ab)ab2(nth(+i 1)ab)));按條件循環檢索出所需數據,再代入公式進行插值計算(setq y1(nth i kab)y2(nth(+i 1)kab))(setq yy(-y2 y1)xx(/(-ab2 bjiao)(-ab2 ab10.0)))(setq ka1(-y2(*yy xx))));輸出插值結果
算例1 取小帶輪包角α1=148°,執行函數(bjka 148),得到包角系數 Kα=0.916;若取包角α1=162°,執行函數(bjka 162),將檢索出包角系數 Kα=0.954。
漸開線齒輪齒根彎曲強度計算時,需要根據齒輪齒數z(zv)查取齒形系數YFa,由于齒數為30以后的數據跨距增大,故可采用拋物線插值檢索齒輪齒形系數,見表2。

表2 齒形系數YFa
設定拋物線插值自變量x為變參,其取值范圍為30~100,將表2中數據寫入檢索程序中。為了保證兩端區間的插值節點數及其檢索的有效性,在數據表2個端點各增加1個節點(29,2.53)和(150,2.14)。程序定義如下:


算例2 取齒輪齒數z=57,執行函數(pwxcz 57),檢索得到齒形系數YFa=2.292。在計算機上可以查詢到插值節點對應的自變量值為xa=50,xb=60,xc=70,表明插值點更靠近節點(60,2.28),故以該點及其相鄰的兩個節點構造了拋物線插值。
如果齒輪齒數z=53,執行函數(pwxcz 53),將得到齒形系數YFa=2.3052。查詢到插值節點為 xa=45,xb=50,xc=60,表明插值點更靠近(50,2.32),故以該點及其相鄰的2個節點構造拋物線插值函數。由此可知,構造拋物線插值的3個插值節點的選取是根據插值點在同一區間(如50~60)自變量與中間節點的距離遠近確定的。
在工程設計數據中,有很多參數間的關系是用曲線圖來表示的。如齒輪動載系數曲線表明了齒輪動載系數與速度和制造精度的關系;動壓滑動軸承潤滑油流量系數線圖(見圖3)表明的是潤滑油流量系數q/(ψvBd)與相對偏心率χ和軸承寬徑比B/d之間的關系。對于這些曲線線圖或由曲線表示的數據,通常可用拉格朗日插值來檢索。

圖3 滑動軸承潤滑油流量系數
為了構造圖3所示曲線的拉格朗日插值函數,可在每一根寬徑比對應的曲線上取出若干個點,分別將其節點值賦給表變量xi和yi,然后根據測定的節點個數確定循環次數,進行相應的插值運算,最后輸出自變量相對應的函數值。程序定義如下:

算例3 設滑動軸承寬徑比B/d=0.6,偏心率 χ=0.713,執行函數(fx 0.7130.6),得到潤滑油流量系數值 Y(x)=0.20131。若取寬徑比B/d=0.9,偏心率 χ=0.847,執行函數(fx 0.8470.9),將得到潤滑油流量系數值Y(x)=0.14663。
通過與線圖對比,可見檢索結果與線圖上對應值是完全吻合的。需要說明的是,上述定義的拉格朗日插值函數是一個通用程序,可用于其他類似的線圖或數表。函數中表變量xi,yi中的節點數據可以根據具體情況更換。每一條曲線上所取插值節點數可相同,也可不同,節點取多取少基本上沒有限制。程序執行時主要由函數(length xi)根據表變量的個數進行循環搜索,并輸出檢索結果。
隨著計算機應用技術的普及,現代設計方法在工程中的應用越來越廣泛。高效快捷的設計對工程數據的獲取或處理提出了更高的要求。本研究利用AutoLISP中的表變量儲存節點數據以及表處理函數的檢索功能,將拉格朗日插值法應用于工程CAD中,較好地解決了節點區域數據和曲線線圖數據的檢索和獲取問題,不僅將工程設計人員從重復繁雜的數據查詢和設計計算中解放出來,而且大大加快了設計速度。
[1]濮良貴,紀明剛.機械設計[M].8版.北京:高等教育出版社,2006:291-297.
[2]萬小利,高志.計算機輔助機械設計[M].北京:機械工業出版社,2005:49-55.
[3]林昌華,邢海斌.基于AutoLISP的復雜數據程序化處理[J].重慶理工大學學報:自然科學版,2012(1):42-46.
[4]林昌華,楊巖.基于遞歸定義的Auto LISP編程及應用[J].現代制造工程,2004(12):50 -52.
[5]李志宏.使用AutoLISP程序進行數據文件處理[J].林業建設,2008(4):61 -62.
[6]李建霞,肖啟敏.非圖形數據結構在AutoLISP程序進行數據文件處理[J].煤礦機械,2004(3):62-64.