廣東省湛江市第七中學(xué)(524034) 關(guān)文恬
基于Excel VBA的求一次函數(shù)解析式的解法設(shè)計—以圖象經(jīng)過兩整點的一次函數(shù)為例
廣東省湛江市第七中學(xué)(524034) 關(guān)文恬
函數(shù)是中學(xué)數(shù)學(xué)重要的解題工具.在初中,一次函數(shù)是函數(shù)教學(xué)的起始部分,而“圖象經(jīng)過兩整點求一次函數(shù)y=kx+b的解析式”是一次函數(shù)教學(xué)的基本內(nèi)容.為了促使學(xué)生借助計算機自主高效地學(xué)習(xí)這個基本內(nèi)容,本文通過分析它的解法原理,由此編寫VBA小程序,計算并輸出k、b的值,得到一次函數(shù)的解析式,從而在Excel上實現(xiàn)解法的設(shè)計.
我們知道,一次函數(shù)的圖象是一條直線,而兩點確定一條直線.當(dāng)已知一次函數(shù)的圖象經(jīng)過兩點時,那么這個一次函數(shù)的解析式就可以用待定系數(shù)法進行求解,如下例:
例已知點A(x1,y1)、B(x2,y2),求圖象經(jīng)過A、B兩點的一次函數(shù)的解析式.
解:用待定系數(shù)法設(shè)這個一次函數(shù)的解析式為,分別把 A(x1,y1)、B(x2,y2)代入 y=kx+b,得當(dāng)時,解得,
可見,一次函數(shù)y=kx+b的解析式由A(x1,y1)、B(x2,y2)的橫縱坐標(biāo)確定.只要確定x1,x2,y1,y2的值,由計算出k、b的值,便可得到一次函數(shù)y=kx+b的解析式.但在Excel上問題的關(guān)鍵不是k、b的值計算而是輸出.
由上面可知,當(dāng)x1,x2,y1,y2為實數(shù)時,則k、b為實數(shù)或無意義,其結(jié)果在電腦上的表現(xiàn)形式可能顯得較為復(fù)雜;當(dāng)x1,x2,y1,y2都為整數(shù)時,y2-y1、x2-x1和x2y1-x1y2都是整數(shù),則k、b為有理數(shù)(整數(shù)或分數(shù))或無意義.為了使問題顯得不太復(fù)雜,也考慮《數(shù)學(xué)課程標(biāo)準》對學(xué)生的計算要求,本文所討論的兩整點都是指橫縱坐標(biāo)都是整數(shù)的點,因此,在有意義的情況下此時k、b為整數(shù)或分數(shù),那在Excel中如何輸出有理數(shù)呢?下面對k在Excel中的輸出形式進行分析,而b的處理方法與k一樣.為了方便敘述,令m=y2-y1,n=x2-x1.
1.當(dāng)k為整數(shù)時
當(dāng)m除以n所得的余數(shù)r為0時,則k為整數(shù).Excel VBA可用代碼“r=mModn”求出r的值.當(dāng)r=0時,是一個整數(shù).如當(dāng)已知的兩整點為A(-3,5)、B(2,-5)時,由“r=(-5-5)Mod(2-(-3))”得r=0,k為整數(shù),則可用VBA代碼“k=(-5-5)/(2-(-3))”計算k的值是-2,再用語句“MsgBox k”輸出k的值.
2.當(dāng)k為分數(shù)時
當(dāng)m除以n所得的余數(shù)r不為0時,則k為分數(shù),此時處理分數(shù)k的表示形式較為復(fù)雜.如當(dāng)點A、B的坐標(biāo)分別為(-2,2)和 (4,-8)時,由“r=(-8-2)Mod(4-(-2))”得 r=-4,為分數(shù).由式子筆算的過程中,我們發(fā)現(xiàn)兩個問題.其一,分數(shù)在 Excel上是以“-1.66667”的形式顯示的,此時輸出k的值不符合要求,那以何種形式輸出它?可用VBA代碼“k=-5&"/"&3”表示 (即輸出時顯示“k=-5/3”).其二,分數(shù)不是最簡分數(shù)還需進行約分,那如何進行約分?我們知道,10和6的最大公約數(shù)為2,分子分母同除以2便得到“-5/3”,那如何在Excel上找分子分母的最大公約數(shù)?
為了解決分數(shù)約分的問題,我們首先了解“輾轉(zhuǎn)相除法”,下面看它的一個定理:
定理[1]設(shè) a,b(a0),q1,q2,···,qn,qn+1;r1,r2,···,rn,rn+1均為整數(shù),且滿足以下等式:
其中 0 ≤ rn+1< rn< ···< r1< |a|.若 rn+1=0,則(a,b)=rn.
圖1
可見,輾轉(zhuǎn)相除法是尋找分子分母(這里它們都是整數(shù))的最大公約數(shù)的一個方法,找出最大公約數(shù)后,分數(shù)的約分問題便可迅速解決.輾轉(zhuǎn)相除法的一個程序框圖如上圖1所示.
那如何實現(xiàn)這個計算流程呢?我們可用VBA代碼來實現(xiàn),下面就是輾轉(zhuǎn)相除法的一個VBA代碼:
在上面,本文介紹了k、b值的計算及可能的輸出形式,還介紹了輾轉(zhuǎn)相除法的定理及它的一個VBA代碼.有此作鋪墊,便可著手在Excel VBA上對本文所說的解法進行設(shè)計.
1.首先根據(jù)提示輸入點A(x1,y1)、B(x2,y2)的坐標(biāo)
2.由上面的分析,k的可能輸出形式有正整數(shù)k1、負整數(shù)k2、正分數(shù)k3、負分數(shù)k4;而b的可能輸出形式有0、正整數(shù)b1、負整數(shù)b2、正分數(shù)b3、負分數(shù)b4.設(shè)計VBA代碼分別輸出k、b的值(它們組合共有20種可能情況),即可得出一次函數(shù)的解析式y(tǒng)=kx+b.
3.圖象經(jīng)過兩整點求一次函數(shù)解析式的解法代碼
基于上面解法的思路,利用輾轉(zhuǎn)相除法定理,本文編寫以下的解法代碼及代碼解釋:
在Excel中運行這個小程序時,我們可根據(jù)提示輸入點A的橫坐標(biāo)-3,縱坐標(biāo)7;輸入點B的橫坐標(biāo)2,縱坐標(biāo)-3,便可得到圖象經(jīng)過點A、B的一次函數(shù)解析式y(tǒng)=-2x+1.同樣,我們可根據(jù)提示輸入點A的橫坐標(biāo)-1,縱坐標(biāo)5;輸入點B的橫坐標(biāo)2,縱坐標(biāo)-8,便可得到圖象經(jīng)過點A、B的一次函數(shù)解析式 y=(-13/3)x+2/3.當(dāng)然,y=(-13/3)x+2/3表示的意思在Excel上以“-4.33333333333333”的形式顯示,而不是慣用的分數(shù)形式,只好用“-13/3”代替).
當(dāng)有了這個VBA小程序,我們可把它保存到教室的多媒體電腦上供學(xué)生自主學(xué)習(xí)本節(jié)內(nèi)容,也可在課堂上作班內(nèi)各學(xué)習(xí)小組合作學(xué)習(xí)自主出題比賽的“裁判”,以促小組間的良性競爭.實際教學(xué)表明,學(xué)生對這種教法感到新穎,學(xué)習(xí)本節(jié)內(nèi)容興趣大增.
當(dāng)然,編寫VBA代碼是VBA程序員的一個專業(yè)話題,實際上編寫VBA代碼要花費大量的時間和精力.對于中學(xué)教師,我們不必要、也不可能把每個數(shù)學(xué)教學(xué)內(nèi)容都編寫VBA代碼用于教學(xué)上,但只要我們能挑選合適的數(shù)學(xué)話題作為嘗試,做到適可而止,這種方法對于數(shù)學(xué)教學(xué)還是有很大的幫助作用的.
[1]林國泰,司徒永顯,鄺會雄,初等代數(shù)研究教程[M],廣州:暨南大學(xué)出版社,1996年第71頁.
中學(xué)數(shù)學(xué)研究(廣東)2017年14期