王 嵐
(福建廣播電視大學(xué),福建福州,350003)
組合設(shè)計(jì)是離散數(shù)學(xué)的一個(gè)重要分支?!督M合設(shè)計(jì)理論》課程中的許多內(nèi)容[1-3](如:拉丁方設(shè)計(jì)、區(qū)組設(shè)計(jì)、正交設(shè)計(jì)等等)常常會(huì)涉及到大量繁瑣的矩陣運(yùn)算。若采用傳統(tǒng)的“黑板——粉筆”教學(xué)方式手工演算,既費(fèi)時(shí)又費(fèi)力,還極易出錯(cuò)。因此,一般只能選擇相對簡單的例子進(jìn)行講解,而計(jì)算復(fù)雜的舉例就較難展示計(jì)算過程;同時(shí),所得出的計(jì)算結(jié)果也不易于驗(yàn)證其正確與否。這些都在一定程度上影響了學(xué)生對學(xué)習(xí)內(nèi)容的理解和運(yùn)用。隨著計(jì)算機(jī)技術(shù)的普及和發(fā)展,計(jì)算機(jī)輔助教學(xué)已越來越成為提高教學(xué)質(zhì)量與效率,加深學(xué)生對所學(xué)知識(shí)的理解的一種有效手段。
根據(jù)《組合設(shè)計(jì)理論》課程教學(xué)內(nèi)容的特點(diǎn),本文選取MATLAB軟件包作為其輔助教學(xué)工具。MATLAB是矩陣實(shí)驗(yàn)室(Matrix Laboratory)的簡稱,是美國The Math Works公司出品的一款成熟的商業(yè)數(shù)學(xué)軟件包。[4]一方面,MATLAB軟件包具有十分強(qiáng)大的數(shù)值計(jì)算功能,支持各種類型的矩陣演算,并能夠高效迅速地得出計(jì)算結(jié)果;另一方面,MATLAB軟件包內(nèi)置的作圖功能可將計(jì)算結(jié)果以圖形圖像的方式直觀地展示出來。此外,MATLAB語言的語法簡單,易于上手,有利于輔助教學(xué)的推廣。以下本文將以《組合設(shè)計(jì)理論》中的經(jīng)典內(nèi)容——阿達(dá)瑪矩陣的構(gòu)造為例,著重介紹如何運(yùn)用MATLAB軟件包來實(shí)現(xiàn)《組合設(shè)計(jì)理論》課程的輔助教學(xué)。
1867年,英國數(shù)學(xué)家詹姆斯·約瑟夫·西爾維斯特從正交性思想出發(fā),提出了阿達(dá)瑪矩陣,至今已經(jīng)有一百多年的歷史。由于阿達(dá)瑪矩陣具有正交特性,使得它在多面體理論、編碼理論、通信理論[5]、數(shù)字信號(hào)處理等領(lǐng)域有許多重要的應(yīng)用。
現(xiàn)給出阿達(dá)瑪矩陣的數(shù)學(xué)定義如下:
定義1設(shè)Hn為一個(gè)以±1為元素的n×n方陣,如果H滿足:
則稱Hn為一個(gè)n階阿達(dá)瑪矩陣。
從阿達(dá)瑪矩陣的定義出發(fā),不難得出矩陣的階數(shù)n一定是4的倍數(shù)(一階和二階阿達(dá)瑪矩陣除外)。
本例最為簡單,可以直接調(diào)用MATLAB標(biāo)準(zhǔn)工具箱中的hadamard()函數(shù)。在MATLAB的命令窗口(Command Window)中輸入語句“hadam ard(8)”即可得到結(jié)果,如下圖所示:
圖1 構(gòu)造8階阿達(dá)瑪矩陣
由于n=44=43+1,因此本例可以通過佩利構(gòu)造法I[6]進(jìn)行求解,具體的MATLAB代碼如下:
圖2 佩利構(gòu)造法I構(gòu)造44階阿達(dá)瑪矩陣
需要注意的是,如果此例直接調(diào)用MATLAB自帶的hadamard()函數(shù)將導(dǎo)致運(yùn)行出錯(cuò),如下圖所示:
圖3 MATLAB運(yùn)行出錯(cuò)
運(yùn)行出錯(cuò)的原因在于MATLAB標(biāo)準(zhǔn)工具箱的hadamard()函數(shù)對n有一定限制,即要求阿達(dá)瑪矩陣階數(shù)n只能在以下三個(gè)正整數(shù)集合中取值:
此例同樣無法直接調(diào)用MATLAB自帶的hadamard()函數(shù)。但由于 n=76=2×(37+1),因此本例可以通過佩利構(gòu)造法II[6]進(jìn)行求解,具體的MATLAB代碼如下:
圖4 佩利構(gòu)造法II構(gòu)造76階阿達(dá)瑪矩陣
通過上面幾句簡單的MATLAB語言,即可得到76階阿達(dá)瑪矩陣。我們還可以利用MATLAB強(qiáng)大的畫圖功能展示矩陣的全貌(其中,1用白色方格表示,-1用黑色方格表示),如下圖所示:
圖5 76階阿達(dá)瑪矩陣
同樣地,36階阿達(dá)瑪矩陣也可用佩利構(gòu)造法II[6]進(jìn)行求解。但為了避免與上一節(jié)的內(nèi)容重復(fù),本節(jié)將采用拉丁方陣的方法構(gòu)造36階阿達(dá)瑪矩陣。在Command Window中輸入MATLAB代碼如下圖所示:
圖6 拉丁方方法構(gòu)造36階阿達(dá)瑪矩陣
通過簡單計(jì)算,我們發(fā)現(xiàn)佩利構(gòu)造法I和佩利構(gòu)造法II都無法構(gòu)造出176階阿達(dá)瑪矩陣。但是,借助已經(jīng)構(gòu)造好的8階阿達(dá)瑪矩陣和44階阿達(dá)瑪矩陣,我們可以構(gòu)造出176階阿達(dá)瑪矩陣。求解過程共分為五個(gè)步驟,完整的MATLAB代碼如下圖所示:
圖7 構(gòu)造176階阿達(dá)瑪矩陣
T-序列與阿達(dá)瑪矩陣有密切關(guān)系。文獻(xiàn)[3]指出,如果存在4個(gè)長度為n的T-序列,那么必定存在4n階的阿達(dá)瑪矩陣。
現(xiàn)考慮給定一個(gè)T-序列如下:
通過執(zhí)行以下的MATLAB程序,可得出相應(yīng)的阿達(dá)瑪矩陣。
圖8 根據(jù)T-序列構(gòu)造阿達(dá)瑪矩陣
通過以上幾個(gè)例子,我們可以充分體會(huì)到MATLAB的強(qiáng)大數(shù)值計(jì)算功能和畫圖功能,使求解大規(guī)模組合設(shè)計(jì)問題成為可能,同時(shí)還能夠直觀展示矩陣的全貌。因此,MATLAB軟件包輔助《組合設(shè)計(jì)理論》課程教學(xué),既能有效地縮短計(jì)算時(shí)間,提高計(jì)算正確率,同時(shí)也使抽象、枯燥的高等數(shù)學(xué)課程學(xué)習(xí)變得直觀、形象,從而增強(qiáng)學(xué)生學(xué)習(xí)和應(yīng)用數(shù)學(xué)的興趣。
[1]Marshall Hall.Combinatorial theory[M].2nd Edition.New York:A Wiley Inter Science Publication,1998.
[2]Douglas R.Stinson.Combinatorial Designs:Constructions and Analysis[M].New York:Springer-Verlag,2004.
[3]沈?yàn)?組合設(shè)計(jì)理論[M].第一版.上海:上海交通大學(xué)出版社,1996.
[4]張志涌.精通 MATLAB6.5版[M].北京:北京航空航天大學(xué)出版社,2004.
[5]羅新民,薛少麗,田琛.現(xiàn)代通信原理[M].北京:高等教育出版社,2008.
[6]R.E.A.C.Paley,On Orthogonal Matrices[J].Math.Phys.1933,(12):311-320.