林昌華,楊 巖
(重慶理工大學(xué)機(jī)械工程學(xué)院,重慶 400054)
工程設(shè)計(jì)及CAD過程中涉及到大量的數(shù)據(jù)查詢和處理工作。工程設(shè)計(jì)資料或手冊(cè)中的數(shù)據(jù)往往沒有公式表達(dá)的函數(shù)關(guān)系,而是以表格或者線圖的形式給出,有的待查數(shù)據(jù)可能處于相鄰2個(gè)節(jié)點(diǎn)數(shù)據(jù)之間,有的數(shù)據(jù)則在對(duì)應(yīng)的線圖上。如何快速、準(zhǔn)確地取出待查數(shù)據(jù),實(shí)現(xiàn)對(duì)設(shè)計(jì)資料和數(shù)據(jù)的自動(dòng)化處理,是高效、精準(zhǔn)、快捷完成設(shè)計(jì)工作的關(guān)鍵。無論是對(duì)于表格節(jié)點(diǎn)間區(qū)域數(shù)據(jù)的獲取或是線圖數(shù)據(jù)的處理,拉格朗日插值法的應(yīng)用都較好地解決了工程設(shè)計(jì)及其CAD中的這一問題。
插值法的基本原理:在插值點(diǎn)附近選取若干合適的節(jié)點(diǎn),過這些節(jié)點(diǎn)構(gòu)造一個(gè)簡(jiǎn)單的插值函數(shù)y=p(x),在所選數(shù)據(jù)區(qū)間用插值函數(shù)作為原來函數(shù)f(x)的近似表達(dá)式,然后計(jì)算插值函數(shù)p(x)的值以代替原函數(shù)f(x)的值,使得f(xi)=p(xi),i=1,2,3,…,n成立。由此可見,插值法的實(shí)質(zhì)是根據(jù)已知的節(jié)點(diǎn)數(shù)據(jù)或線圖上某些已知點(diǎn)的數(shù)據(jù)構(gòu)造一個(gè)既簡(jiǎn)單又具有足夠精度的插值函數(shù)p(x),并利用該插值函數(shù)快速獲取原函數(shù)在對(duì)應(yīng)位置的數(shù)據(jù),這種利用若干節(jié)點(diǎn)來構(gòu)造插值函數(shù)的方法稱為拉格朗日插值法。
在原函數(shù)f(x)上取插值節(jié)點(diǎn)數(shù)為n+1,分別為(x0,y0)、(x1,y1)、(x2,y2)、…、(xn,yn),拉格朗日插值多項(xiàng)式的表達(dá)式為
拉格朗日插值法的一個(gè)特例就是僅用2個(gè)節(jié)點(diǎn)(x1,y1)、(x2,y2)來構(gòu)造插值。由于所表達(dá)的函數(shù)為線性函數(shù),所以兩點(diǎn)插值通常又稱為線性插值。線性插值公式構(gòu)造如下
圖1為線性插值幾何示意圖。從圖1可以看出,這種插值的結(jié)果往往會(huì)產(chǎn)生一定的誤差。在要求精確數(shù)據(jù)的某些情況下,這樣的誤差顯然難以滿足設(shè)計(jì)要求。但線性插值公式構(gòu)造簡(jiǎn)單,可直接編入程序中計(jì)算求值,當(dāng)節(jié)點(diǎn)間隔較小或?qū)?jié)點(diǎn)之間的數(shù)據(jù)精度無特別要求時(shí),這種插值結(jié)果是能滿足一般設(shè)計(jì)要求的。因此在工程設(shè)計(jì)數(shù)據(jù)處理過程中,特別是需要查取相鄰兩點(diǎn)之間數(shù)據(jù)時(shí)大量使用了線性插值。
圖1 線性插值幾何示意圖
采用3個(gè)插值節(jié)點(diǎn)得到的是二次插值多項(xiàng)式,即拋物線插值。相對(duì)于線性插值,拋物線插值稍微復(fù)雜一些,但插值精度較高,因此在CAD數(shù)據(jù)處理時(shí)應(yīng)用也很廣泛。
拋物線插值最好選取距離插值點(diǎn)最近的個(gè)節(jié)點(diǎn)以減小插值誤差。查找到插值點(diǎn)所在區(qū)間后,判斷它與前后兩點(diǎn)間的距離。如果距離后一點(diǎn)近,則取后面兩點(diǎn)與前面一點(diǎn)進(jìn)行插值(見圖2(a);如果距離前一點(diǎn)近,則取前面兩點(diǎn)和后面一點(diǎn)進(jìn)行插值(見圖2(b))。
圖2 拋物線插值
帶傳動(dòng)設(shè)計(jì)時(shí),需要根據(jù)小帶輪包角大小來查取包角修正系數(shù)Kα,見表1。表1的包角值往往是位數(shù)為0和5的整數(shù),如果實(shí)際包角值在某2個(gè)節(jié)點(diǎn)區(qū)域內(nèi),就必須插值檢索。
表1 小帶輪包角修正系數(shù)Kα
利用Auto LISP編程,可將表中節(jié)點(diǎn)上的包角和包角系數(shù)分別放在2個(gè)表變量中,根據(jù)給定的實(shí)際包角值先檢索出左右相鄰的節(jié)點(diǎn)值,再通過線性插值確定實(shí)際的包角修正系數(shù)。
包角檢索函數(shù)定義如下:
(setq ab1(nth i ab)ab2(nth(+i 1)ab)));按條件循環(huán)檢索出所需數(shù)據(jù),再代入公式進(jìn)行插值計(jì)算(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))));輸出插值結(jié)果
算例1 取小帶輪包角α1=148°,執(zhí)行函數(shù)(bjka 148),得到包角系數(shù) Kα=0.916;若取包角α1=162°,執(zhí)行函數(shù)(bjka 162),將檢索出包角系數(shù) Kα=0.954。
漸開線齒輪齒根彎曲強(qiáng)度計(jì)算時(shí),需要根據(jù)齒輪齒數(shù)z(zv)查取齒形系數(shù)YFa,由于齒數(shù)為30以后的數(shù)據(jù)跨距增大,故可采用拋物線插值檢索齒輪齒形系數(shù),見表2。
表2 齒形系數(shù)YFa
設(shè)定拋物線插值自變量x為變參,其取值范圍為30~100,將表2中數(shù)據(jù)寫入檢索程序中。為了保證兩端區(qū)間的插值節(jié)點(diǎn)數(shù)及其檢索的有效性,在數(shù)據(jù)表2個(gè)端點(diǎn)各增加1個(gè)節(jié)點(diǎn)(29,2.53)和(150,2.14)。程序定義如下:
算例2 取齒輪齒數(shù)z=57,執(zhí)行函數(shù)(pwxcz 57),檢索得到齒形系數(shù)YFa=2.292。在計(jì)算機(jī)上可以查詢到插值節(jié)點(diǎn)對(duì)應(yīng)的自變量值為xa=50,xb=60,xc=70,表明插值點(diǎn)更靠近節(jié)點(diǎn)(60,2.28),故以該點(diǎn)及其相鄰的兩個(gè)節(jié)點(diǎn)構(gòu)造了拋物線插值。
如果齒輪齒數(shù)z=53,執(zhí)行函數(shù)(pwxcz 53),將得到齒形系數(shù)YFa=2.3052。查詢到插值節(jié)點(diǎn)為 xa=45,xb=50,xc=60,表明插值點(diǎn)更靠近(50,2.32),故以該點(diǎn)及其相鄰的2個(gè)節(jié)點(diǎn)構(gòu)造拋物線插值函數(shù)。由此可知,構(gòu)造拋物線插值的3個(gè)插值節(jié)點(diǎn)的選取是根據(jù)插值點(diǎn)在同一區(qū)間(如50~60)自變量與中間節(jié)點(diǎn)的距離遠(yuǎn)近確定的。
在工程設(shè)計(jì)數(shù)據(jù)中,有很多參數(shù)間的關(guān)系是用曲線圖來表示的。如齒輪動(dòng)載系數(shù)曲線表明了齒輪動(dòng)載系數(shù)與速度和制造精度的關(guān)系;動(dòng)壓滑動(dòng)軸承潤(rùn)滑油流量系數(shù)線圖(見圖3)表明的是潤(rùn)滑油流量系數(shù)q/(ψvBd)與相對(duì)偏心率χ和軸承寬徑比B/d之間的關(guān)系。對(duì)于這些曲線線圖或由曲線表示的數(shù)據(jù),通??捎美窭嗜詹逯祦頇z索。
圖3 滑動(dòng)軸承潤(rùn)滑油流量系數(shù)
為了構(gòu)造圖3所示曲線的拉格朗日插值函數(shù),可在每一根寬徑比對(duì)應(yīng)的曲線上取出若干個(gè)點(diǎn),分別將其節(jié)點(diǎn)值賦給表變量xi和yi,然后根據(jù)測(cè)定的節(jié)點(diǎn)個(gè)數(shù)確定循環(huán)次數(shù),進(jìn)行相應(yīng)的插值運(yùn)算,最后輸出自變量相對(duì)應(yīng)的函數(shù)值。程序定義如下:
算例3 設(shè)滑動(dòng)軸承寬徑比B/d=0.6,偏心率 χ=0.713,執(zhí)行函數(shù)(fx 0.7130.6),得到潤(rùn)滑油流量系數(shù)值 Y(x)=0.20131。若取寬徑比B/d=0.9,偏心率 χ=0.847,執(zhí)行函數(shù)(fx 0.8470.9),將得到潤(rùn)滑油流量系數(shù)值Y(x)=0.14663。
通過與線圖對(duì)比,可見檢索結(jié)果與線圖上對(duì)應(yīng)值是完全吻合的。需要說明的是,上述定義的拉格朗日插值函數(shù)是一個(gè)通用程序,可用于其他類似的線圖或數(shù)表。函數(shù)中表變量xi,yi中的節(jié)點(diǎn)數(shù)據(jù)可以根據(jù)具體情況更換。每一條曲線上所取插值節(jié)點(diǎn)數(shù)可相同,也可不同,節(jié)點(diǎn)取多取少基本上沒有限制。程序執(zhí)行時(shí)主要由函數(shù)(length xi)根據(jù)表變量的個(gè)數(shù)進(jìn)行循環(huán)搜索,并輸出檢索結(jié)果。
隨著計(jì)算機(jī)應(yīng)用技術(shù)的普及,現(xiàn)代設(shè)計(jì)方法在工程中的應(yīng)用越來越廣泛。高效快捷的設(shè)計(jì)對(duì)工程數(shù)據(jù)的獲取或處理提出了更高的要求。本研究利用AutoLISP中的表變量?jī)?chǔ)存節(jié)點(diǎn)數(shù)據(jù)以及表處理函數(shù)的檢索功能,將拉格朗日插值法應(yīng)用于工程CAD中,較好地解決了節(jié)點(diǎn)區(qū)域數(shù)據(jù)和曲線線圖數(shù)據(jù)的檢索和獲取問題,不僅將工程設(shè)計(jì)人員從重復(fù)繁雜的數(shù)據(jù)查詢和設(shè)計(jì)計(jì)算中解放出來,而且大大加快了設(shè)計(jì)速度。
[1]濮良貴,紀(jì)明剛.機(jī)械設(shè)計(jì)[M].8版.北京:高等教育出版社,2006:291-297.
[2]萬(wàn)小利,高志.計(jì)算機(jī)輔助機(jī)械設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2005:49-55.
[3]林昌華,邢海斌.基于AutoLISP的復(fù)雜數(shù)據(jù)程序化處理[J].重慶理工大學(xué)學(xué)報(bào):自然科學(xué)版,2012(1):42-46.
[4]林昌華,楊巖.基于遞歸定義的Auto LISP編程及應(yīng)用[J].現(xiàn)代制造工程,2004(12):50 -52.
[5]李志宏.使用AutoLISP程序進(jìn)行數(shù)據(jù)文件處理[J].林業(yè)建設(shè),2008(4):61 -62.
[6]李建霞,肖啟敏.非圖形數(shù)據(jù)結(jié)構(gòu)在AutoLISP程序進(jìn)行數(shù)據(jù)文件處理[J].煤礦機(jī)械,2004(3):62-64.