王文革 趙龍
漸開線函數(shù)表的程序化處理
王文革 趙龍
(山東科技職業(yè)學(xué)院 濰坊 261053)
采用牛頓迭代法對(duì)齒輪漸開線函數(shù)表進(jìn)行程序化處理,把反漸開線函數(shù)的求值過程編制成子程序,可避免查閱漸開線函數(shù)表,這樣在用計(jì)算機(jī)編制程序?qū)X輪進(jìn)行優(yōu)化設(shè)計(jì)和齒形加工進(jìn)行有關(guān)數(shù)值計(jì)算時(shí)可以直接調(diào)用,本程序用VisualBasic語言編制。
漸開線函數(shù)表;程序化;牛頓迭代法;VisualBasic語言
在齒輪設(shè)計(jì)、加工過程中經(jīng)常用到齒形漸開線函數(shù)θ=tgα-α,其中θ為齒形曲線上某點(diǎn)對(duì)應(yīng)的漸開線展角,α為該點(diǎn)的壓力角,漸開線函數(shù)θ=tgα-α為超越函數(shù),不能通過普通計(jì)算求值,特別是已知展角θ求壓力角α的情況,因此,一般的機(jī)械設(shè)計(jì)資料都提供漸開線函數(shù)表,方便使用者查閱,對(duì)表中沒有的數(shù)據(jù)要進(jìn)行插值計(jì)算,精度與效率都比較低。在用計(jì)算機(jī)編程對(duì)齒輪傳動(dòng)優(yōu)化設(shè)計(jì)或齒形加工進(jìn)行有關(guān)計(jì)算時(shí),查表法更是限制了程序的編制,因此有必要對(duì)漸開線函數(shù)表進(jìn)行程序化處理,方便編制程序?qū)X輪優(yōu)化設(shè)計(jì)和進(jìn)行齒形數(shù)值計(jì)算。
1.1 函數(shù)構(gòu)造及有解判斷
對(duì)于已知展角θ(θ=θ0θ0為大于零的已知數(shù))求壓力角α,根據(jù)漸開線函數(shù)得到θ0=tgα-α,為此構(gòu)造函數(shù)f(α)=tgα-α-θ0,則在f(α)=0時(shí)的自變量值即為所求的壓力角α值,根據(jù)壓力角的定義和正切函數(shù)的定義域和值域可知f(α)的定義域?yàn)閇0,π/2),值域?yàn)閇-θ0,+∞),所以f(α)=tgα-α-θ0的圖像與 x軸有交點(diǎn),即方程 tgα-α-θ0=0 有解。
1.2 f(α)的單調(diào)性研究
對(duì)f(α)求一次導(dǎo)數(shù)得到f′(α)=1/cos2α-1,在α∈[0,π/2]范圍內(nèi),可知f′(α)≥0,所以f(α)為單調(diào)遞增函數(shù),結(jié)合前述1可知α有唯一解。
1.3 f(α)的凸凹性研究
對(duì)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ī)則
對(duì)于如圖1所示的函數(shù)圖像可用牛頓迭代法求f(α)=0時(shí)的自變量α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時(shí)迭代終止,j為預(yù)先給定的小正數(shù)。
2.2 迭代起始點(diǎn)的確定
圖2
從圖 2 可以看出,迭代起始點(diǎn)(α1,0)必須在(α0,0)的右側(cè),即必須有α1>α0,迭代才能順利進(jìn)行,可以通過驗(yàn)算是否有f(α1)>0判斷α1>α0是否成立,起始點(diǎn)的具體確定可采用二分法,首先取區(qū)間[0,π/2)的中點(diǎn)π/4,驗(yàn)算f(π/4)>0是否成立,如果成立,以(π/4,f(π/4))點(diǎn)為迭代初始點(diǎn),如果不成立取區(qū)間[π/4,π/2)的中點(diǎn)繼續(xù)驗(yàn)算,直到找到f(α>0)的點(diǎn)作為迭代起始點(diǎn)。
(1)展角θ以10進(jìn)制數(shù)輸入。
(2)迭代終止精度以一個(gè)接近于零的小正數(shù)表示,根據(jù)程序使用實(shí)踐,當(dāng)?shù)萰=10-4時(shí)計(jì)算結(jié)果精度已超過查表精度;當(dāng)終止精度j=10-8時(shí),因f′(α)=1/cos2α-1趨近于零,αi+1=αi-f(αi)/f′(αi)會(huì)發(fā)生溢出從而出現(xiàn)卡機(jī)現(xiàn)象,所以,程序運(yùn)行使用時(shí)可輸入10-4-10-7間的小正數(shù)作為迭代終止條件,為防止誤輸入造成卡機(jī),在輸入精度后加入了一條判斷語句:“If j<=0.0000001 Then j=0.0000001”即 j值過小或錯(cuò)誤輸入時(shí),程序自動(dòng)設(shè)定迭代精度為j=10-7。
(3)壓力角α以10進(jìn)制度數(shù)、度分秒和弧度三種方式輸出,重新計(jì)算時(shí),精度值可重新輸入,也可使用原精度值。運(yùn)行界面及結(jié)果如圖3所示。
圖3
[1]林卓然.VisualBasic程序設(shè)計(jì)教程[M].北京:電子工業(yè)出版社,2004.
[2]鄭文緯,等.機(jī)械原理[M].北京:高等教育出版社,1997.
[3]黃家驤.優(yōu)化方法與機(jī)械優(yōu)化設(shè)計(jì)[M].廣州:華南工學(xué)院出版社,1986.
TN112
A
1004-7344(2016)33-0282-01
2016-11-13