沈建武
【摘要】本文主要講解利用VB編程解決數(shù)學(xué)課程里的利潤(rùn)最大值問(wèn)題,引導(dǎo)學(xué)生加強(qiáng)題意分析,結(jié)合數(shù)學(xué)知識(shí),建立數(shù)學(xué)模型,然后根據(jù)數(shù)學(xué)模型設(shè)計(jì)算法并利用程序設(shè)計(jì)語(yǔ)言編程解決實(shí)際問(wèn)題。
【關(guān)鍵詞】VB 數(shù)學(xué)模型 If語(yǔ)句 For循環(huán)
【中圖分類號(hào)】G632.4 【文獻(xiàn)標(biāo)識(shí)碼】A 【文章編號(hào)】2095-3089(2017)30-0075-02
在數(shù)學(xué)課程里,學(xué)生常常會(huì)遇到較為復(fù)雜繁瑣的實(shí)際問(wèn)題,學(xué)生一時(shí)難以求解,而運(yùn)用計(jì)算機(jī)編程解決往往會(huì)變得有效、便捷多。在編程解決具體問(wèn)題中應(yīng)引導(dǎo)學(xué)生把實(shí)際問(wèn)題抽象為數(shù)學(xué)模型,我們除已知的數(shù)學(xué)概念、數(shù)學(xué)公式可直接利用外,還可根據(jù)題意建立方程組、不等式組、函數(shù)式、運(yùn)算式、遞推式等等。
一、結(jié)合具體問(wèn)題,理清解題思路
問(wèn)題:某太陽(yáng)能設(shè)備廠在計(jì)劃期內(nèi)擬生產(chǎn)甲、乙、丙三種適銷產(chǎn)品,每件銷售利潤(rùn)分別為4萬(wàn)元、3萬(wàn)元、2萬(wàn)元。按工藝規(guī)定,甲、乙、丙三種產(chǎn)品都需要在A、B、C、D四種不同的設(shè)備上加工,其中甲產(chǎn)品生產(chǎn)需在A、B、C、D四種設(shè)備上加工的臺(tái)時(shí)數(shù)分別為2、1、4、0;乙產(chǎn)品為2、2、0、4;丙產(chǎn)品為1、1、0、0。已知A、B、C、D四種設(shè)備在計(jì)劃期內(nèi)有效使用臺(tái)時(shí)數(shù)分別為12、8、16、12。如何安排生產(chǎn)可使利潤(rùn)最大?
通過(guò)問(wèn)題描述不難看出這是個(gè)典型的線性規(guī)劃問(wèn)題,我們主要通過(guò)構(gòu)造相應(yīng)的目標(biāo)函數(shù)來(lái)求得生產(chǎn)利潤(rùn)最大值。
1. 分析問(wèn)題
設(shè)甲、乙、丙三種產(chǎn)品的產(chǎn)量分別為x、y、z件,利潤(rùn)總額為f(x, y, z),根據(jù)題意,構(gòu)造x、y、z變量的約束條件應(yīng)滿足如下不等式組:
構(gòu)造以x、y、z為變量的目標(biāo)函數(shù)f(x, y, z)=4x+3y+2z,計(jì)算f(x, y, z)值的可行域。
2. 加強(qiáng)題意分析,尋找解題思路和方法
根據(jù)不等式組可知,x、y、z是自然數(shù)且滿足:0≤x≤4,0≤y≤3,0≤z≤8。這樣,可采用窮舉的方法,在許可的范圍內(nèi)尋找適當(dāng)?shù)膞、y、z,求出利潤(rùn)總額f(x, y, z)一系列的值,這一系列值的集合即為f(x, y, z)的可行域。在可行域的一系列f(x, y, z)值中找出最大f_max值,即為所求的生產(chǎn)利潤(rùn)最大。
以上所述為解決線性規(guī)劃問(wèn)題的一般思路,學(xué)生容易理解,但實(shí)際求解時(shí)需做大量的判斷和計(jì)算,人工計(jì)算非常繁瑣,一時(shí)半刻求不出正確的答案;若編寫程序讓計(jì)算機(jī)完成,則可充分發(fā)揮計(jì)算機(jī)運(yùn)算速度快、計(jì)算準(zhǔn)確的特點(diǎn)。
二、VB語(yǔ)言實(shí)現(xiàn)數(shù)學(xué)中的關(guān)鍵問(wèn)題
1. 約束條件的實(shí)現(xiàn)
VB中的If語(yǔ)句很方便的實(shí)現(xiàn)約束條件的判斷,其中多個(gè)不等式應(yīng)同時(shí)成立正好可用VB中的邏輯運(yùn)算符And(與運(yùn)算:當(dāng)兩個(gè)操作數(shù)同時(shí)為真時(shí),結(jié)果才為真)相連接。
2. VB中For循環(huán)可表示x、y、z的變化
根據(jù)題意和分析不等式組可知,x可從0變化到4,y可從0變化到3,z可從0變化到8,在程序設(shè)計(jì)中應(yīng)對(duì)x、y、z值作離散化處理,本題中,x,y,z∈N(N表示自然數(shù)),故可將x、y、z的變化量設(shè)為1,利用VB提供的For語(yǔ)句三重循環(huán)可以方便地表示x、y、z變化。
3. 目標(biāo)函數(shù)f(x, y, z)最大值的求解
利潤(rùn)總額f(x, y, z)是一系列值的集合,用VB編程求其中的最大值f_max。
①把滿足不等式組的x、y、z代入f(x, y, z)=4x+3y+2z中求出一系列值存放在定義的數(shù)組f中。
②開(kāi)始假設(shè)利潤(rùn)總額最大值f_max=0
③利用VB的三重for循環(huán)依次取出存放在數(shù)組f中的數(shù)并與f_max比較大小,若f_max< f(x, y, z),則f_max= f(x, y, z),直至循環(huán)結(jié)束,最后f_max中存放的就是f(x, y, z)中的最大值,從而得出利潤(rùn)總額的最大值。
三、VB程序設(shè)計(jì)
本程序的界面非常簡(jiǎn)單,只需一個(gè)窗體(Form1)、一個(gè)命令按鈕(Command1)即可,命令按鈕的單擊事件過(guò)程代碼如下(單引號(hào)后面為程序代碼注釋):
Private Sub Command1_Click()
Dim x, y, z As Integer
Dim x_max, y_max, z_max, f_max As Integer
Dim f(4, 3, 8) As Integer '定義存放函數(shù)f (x,y,z)值的數(shù)組f
'把滿足不等式組的x、y、z代入 f (x,y,z)=4x+3y+2z中求值存入數(shù)組
For x = 0 To 4
For y = 0 To 3
For z = 0 To 8
If (2 * x + 2 * y + z <= 12) And (x + 2 * y + z <= 8) Then
f(x, y, z) = 4 * x + 3 * y + 2 * z
Else
f(x, y, z) = 0
End If
Next z
Next y
Next x
f_max = 0 '初始化最大值變量f_max為0
'依次取出數(shù)組f (x,y,z) 中所有的值,找出最大值存放在變量f_max
For x = 0 To 4
For y = 0 To 3
For z = 0 To 8
If f_max < f(x, y, z) Then
f_max = f(x, y, z)
x_max = x
y_max = y
z_max = z
End If
Next z
Next y
Next x
Print "當(dāng)x="; x_max; ",y="; y_max; ",z="; z_max; "時(shí),"
Print " f (x,y,z)的最大值="; f_max
End Sub
運(yùn)行程序,單擊命令按鈕(Command1),立即在窗體上顯示結(jié)果如圖所示。
若想探究目標(biāo)函數(shù)f(x, y, z)中具體有哪些值,可在程序代碼“f(x, y, z) = 4 * x + 3 * y + 2 * z”后面回車換行輸入“Print f(x, y, z)”,運(yùn)行程序,單擊命令按鈕(Command1),窗體上會(huì)分行顯示下列數(shù)值:0、2、4、6、8、10、12、14、16、3、5、7、9、11、13、15、6、8、10、12、14、9、11、13、4、6、8、10、12、14、16、18、7、9、11、13、15、17、10、12、14、16、13、15、8、10、12、14、16、18、20、11、13、15、17、19、14、16、18、17、12、14、16、18、20、22、15、17、19、21、18、20、16、18、20、22、24、19、21、23、22,最后再顯示上圖所示最大值信息。
通過(guò)本文的敘述不難看出,編寫程序求解數(shù)學(xué)中相對(duì)復(fù)雜的線性規(guī)劃問(wèn)題很方便、快捷,而且程序設(shè)計(jì)的通用性強(qiáng),對(duì)于不同的線性規(guī)劃問(wèn)題,只需要改變x、y、z的變化范圍、約束條件和目標(biāo)函數(shù)即可,所以計(jì)算機(jī)程序設(shè)計(jì)實(shí)現(xiàn)數(shù)值計(jì)算也成為數(shù)學(xué)建模的常用方法,這不僅能快速、準(zhǔn)確的得到計(jì)算結(jié)果,同時(shí)也為問(wèn)題的求解提供了新的思路。
參考資料:
[1]信息技術(shù)(選修1)算法與程序設(shè)計(jì),廣東教育出版社.
[2]普通高中數(shù)學(xué)新課程標(biāo)準(zhǔn)(實(shí)驗(yàn)),中華人民共和國(guó)教育部.
[3]楊振山等.大學(xué)計(jì)算機(jī)基礎(chǔ)簡(jiǎn)明教程[M].北京:高等教育出版社.
[4]李佐鋒.數(shù)學(xué)建模[M].中國(guó)廣播電視大學(xué)出版社 .endprint