王文革 趙龍
漸開線函數(shù)表的程序化處理
王文革 趙龍
(山東科技職業(yè)學(xué)院 濰坊 261053)
采用牛頓迭代法對齒輪漸開線函數(shù)表進(jìn)行程序化處理,把反漸開線函數(shù)的求值過程編制成子程序,可避免查閱漸開線函數(shù)表,這樣在用計算機(jī)編制程序?qū)X輪進(jìn)行優(yōu)化設(shè)計和齒形加工進(jìn)行有關(guān)數(shù)值計算時可以直接調(diào)用,本程序用VisualBasic語言編制。
漸開線函數(shù)表;程序化;牛頓迭代法;VisualBasic語言
在齒輪設(shè)計、加工過程中經(jīng)常用到齒形漸開線函數(shù)θ=tgα-α,其中θ為齒形曲線上某點(diǎn)對應(yīng)的漸開線展角,α為該點(diǎn)的壓力角,漸開線函數(shù)θ=tgα-α為超越函數(shù),不能通過普通計算求值,特別是已知展角θ求壓力角α的情況,因此,一般的機(jī)械設(shè)計資料都提供漸開線函數(shù)表,方便使用者查閱,對表中沒有的數(shù)據(jù)要進(jìn)行插值計算,精度與效率都比較低。在用計算機(jī)編程對齒輪傳動優(yōu)化設(shè)計或齒形加工進(jìn)行有關(guān)計算時,查表法更是限制了程序的編制,因此有必要對漸開線函數(shù)表進(jìn)行程序化處理,方便編制程序?qū)X輪優(yōu)化設(shè)計和進(jìn)行齒形數(shù)值計算。
1.1 函數(shù)構(gòu)造及有解判斷
對于已知展角θ(θ=θ0θ0為大于零的已知數(shù))求壓力角α,根據(jù)漸開線函數(shù)得到θ0=tgα-α,為此構(gòu)造函數(shù)f(α)=tgα-α-θ0,則在f(α)=0時的自變量值即為所求的壓力角α值,根據(jù)壓力角的定義和正切函數(shù)的定義域和值域可知f(α)的定義域為[0,π/2),值域為[-θ0,+∞),所以f(α)=tgα-α-θ0的圖像與 x軸有交點(diǎn),即方程 tgα-α-θ0=0 有解。
1.2 f(α)的單調(diào)性研究
對f(α)求一次導(dǎo)數(shù)得到f′(α)=1/cos2α-1,在α∈[0,π/2]范圍內(nèi),可知f′(α)≥0,所以f(α)為單調(diào)遞增函數(shù),結(jié)合前述1可知α有唯一解。
1.3 f(α)的凸凹性研究
對f′(α)=1/cos2α-1繼續(xù)求導(dǎo)數(shù)得到f″(α)=2sinα/cos3α,在α∈[0,π/2)范圍內(nèi),可知f″(α)≥0,所以f(α)為凹函數(shù)。
1.4 f(α)圖像形態(tài)研究
綜合前面1、2、3的結(jié)論可知在α∈[0,π/2)范圍內(nèi),f(α)的圖像為一條與x軸有交點(diǎn)的單調(diào)遞增凹曲線,如圖1所示。

圖1
2.1 迭代規(guī)則
對于如圖1所示的函數(shù)圖像可用牛頓迭代法求f(α)=0時的自變量α0值,如圖2在曲線上取一點(diǎn),作為迭代起始點(diǎn),過該點(diǎn)作f(α)的切線與橫軸交于(αi+1,0)點(diǎn),過(αi+1,0)點(diǎn)作垂直線與f(α)交于(αi+1,f(αi+1,0)),過該點(diǎn)再做切線,得到新的交點(diǎn)(αi+1,0),如此重復(fù),則αi+1值就無限接近于所求的α0,根據(jù)幾何關(guān)系(如圖2所示)迭代公式為:αi+1=αi-f(αi)/f'(αi),設(shè)定f(αi+1)<j時迭代終止,j為預(yù)先給定的小正數(shù)。
2.2 迭代起始點(diǎn)的確定

圖2
從圖 2 可以看出,迭代起始點(diǎn)(α1,0)必須在(α0,0)的右側(cè),即必須有α1>α0,迭代才能順利進(jìn)行,可以通過驗算是否有f(α1)>0判斷α1>α0是否成立,起始點(diǎn)的具體確定可采用二分法,首先取區(qū)間[0,π/2)的中點(diǎn)π/4,驗算f(π/4)>0是否成立,如果成立,以(π/4,f(π/4))點(diǎn)為迭代初始點(diǎn),如果不成立取區(qū)間[π/4,π/2)的中點(diǎn)繼續(xù)驗算,直到找到f(α>0)的點(diǎn)作為迭代起始點(diǎn)。
(1)展角θ以10進(jìn)制數(shù)輸入。
(2)迭代終止精度以一個接近于零的小正數(shù)表示,根據(jù)程序使用實踐,當(dāng)?shù)萰=10-4時計算結(jié)果精度已超過查表精度;當(dāng)終止精度j=10-8時,因f′(α)=1/cos2α-1趨近于零,αi+1=αi-f(αi)/f′(αi)會發(fā)生溢出從而出現(xiàn)卡機(jī)現(xiàn)象,所以,程序運(yùn)行使用時可輸入10-4-10-7間的小正數(shù)作為迭代終止條件,為防止誤輸入造成卡機(jī),在輸入精度后加入了一條判斷語句:“If j<=0.0000001 Then j=0.0000001”即 j值過小或錯誤輸入時,程序自動設(shè)定迭代精度為j=10-7。
(3)壓力角α以10進(jìn)制度數(shù)、度分秒和弧度三種方式輸出,重新計算時,精度值可重新輸入,也可使用原精度值。運(yùn)行界面及結(jié)果如圖3所示。

圖3
[1]林卓然.VisualBasic程序設(shè)計教程[M].北京:電子工業(yè)出版社,2004.
[2]鄭文緯,等.機(jī)械原理[M].北京:高等教育出版社,1997.
[3]黃家驤.優(yōu)化方法與機(jī)械優(yōu)化設(shè)計[M].廣州:華南工學(xué)院出版社,1986.
TN112
A
1004-7344(2016)33-0282-01
2016-11-13