陳 亮,馬艷芳(.淮北師范大學(xué)數(shù)學(xué)科學(xué)學(xué)院,安徽淮北35000;.淮北師范大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,安徽淮北35000)
?
應(yīng)用Mathematica軟件解決兩類矩陣問題
陳亮1,馬艷芳2
(1.淮北師范大學(xué)數(shù)學(xué)科學(xué)學(xué)院,安徽淮北235000;2.淮北師范大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,安徽淮北235000)
摘要:整數(shù)矩陣和置換矩陣是矩陣?yán)碚撝蟹浅V匾膬深惥仃?,文章通過整數(shù)矩陣的判定和求解矩陣的全體置換這兩個(gè)實(shí)例,介紹Mathematica軟件在矩陣計(jì)算中的應(yīng)用,顯示出Mathematica軟件在科學(xué)計(jì)算中的優(yōu)勢.
關(guān)鍵詞:Mathematica;整數(shù)矩陣;置換矩陣
矩陣?yán)碚撟鳛閿?shù)學(xué)的一個(gè)重要分支,具有極其豐富的內(nèi)容,在現(xiàn)代各個(gè)科技領(lǐng)域,如最優(yōu)化理論、數(shù)值分析、運(yùn)籌學(xué)、力學(xué)、電學(xué)、系統(tǒng)工程、管理科學(xué)與工程以及穩(wěn)定性理論等學(xué)科都有十分重要的應(yīng)用,很多問題最終都轉(zhuǎn)化成矩陣的運(yùn)算與求解,因此,學(xué)習(xí)和掌握矩陣的理論與計(jì)算,是非常十分重要的意義[1].
矩陣計(jì)算所要研究的主要問題,是根據(jù)各種科學(xué)與工程問題所得到的矩陣的特點(diǎn),設(shè)計(jì)出相應(yīng)的快速、簡便、可靠的算法,其中最具有挑戰(zhàn)性的問題就是大規(guī)模或超大規(guī)模的計(jì)算問題,所以必須使用數(shù)學(xué)工具軟件進(jìn)行計(jì)算.目前,世界主流的數(shù)學(xué)軟件主要有Matlab、Maple、Mathematica等,他們的優(yōu)點(diǎn)也各有千秋.其中Mathematica軟件內(nèi)容豐富、功能強(qiáng)大、界面友好、使用簡單方便,無論將它作為教學(xué)輔助工具,還是科研計(jì)算工具,都是十分理想的.而且,Mathematica軟件在計(jì)算過程中,不但能夠得到問題的數(shù)值解,還能夠得到問題的解析解,這是其他數(shù)學(xué)工具軟件,如Matlab、Maple所不具備的[2].
整數(shù)矩陣和置換矩陣是兩類非常特殊的矩陣,它們在實(shí)際生活中應(yīng)用非常廣泛.在矩陣計(jì)算中,由于這兩類矩陣的計(jì)算技巧較強(qiáng),因此在實(shí)際運(yùn)算過程中,如果能用數(shù)學(xué)工具軟件進(jìn)行計(jì)算,其意義將是非常巨大的.本文主要應(yīng)用Mathematica軟件來解決整數(shù)矩陣和置換矩陣的相關(guān)計(jì)算問題.
1.1整數(shù)矩陣的定義與性質(zhì)
整數(shù)矩陣的計(jì)算在實(shí)際應(yīng)用中十分廣泛.所謂整數(shù)矩陣是指矩陣的所有元素都是整數(shù)的矩陣,它具有很多重要的性質(zhì)[3].
性質(zhì)1整數(shù)矩陣的代數(shù)和以及乘積仍然是整數(shù)矩陣.
性質(zhì)2整數(shù)矩陣的伴隨矩陣是整數(shù)矩陣.
性質(zhì)3若整數(shù)矩陣A可逆,則其逆A-1仍然是整數(shù)矩陣的等價(jià)條件為|| A=±1.
通過對整數(shù)矩陣的研究,可以討論整系數(shù)不定方程的解、整系數(shù)線性方程組的整數(shù)解以及群與環(huán)上的相關(guān)問題.
1.2判斷整數(shù)矩陣
對于實(shí)際問題中產(chǎn)生的矩陣,無法判斷其是否為整數(shù)矩陣,此時(shí)可用Mathematica軟件進(jìn)行判斷:
算法的源代碼:
A={{7,5,3,1},{2,4,8,6},{17.2,15,23,21},{12,14,18,16}};
Data1=Flatten[A];k=0;
For[i=1,i<=Length[Data1],i++,
If[IntegerQ[Data1[[i]]](*Data1[[i]]==Round[Data1[[i]]]*),
{k=k+1,If[k==Length[Data1],Print[“All elements of A are Integers,A is an integral ma?trix.”]]},
{d=Dimensions[A],m=d[[1]],n=d[[2]],
If[Mod[i,n]==0,{k=Quotient[i,m],l=d[[2]]},{k=Quotient[i,m]+1,l=Mod[i,n]}]
Print[“A[”,k,“,”,l,“]is not an Integer!”],Print[“A is not an integral matrix”]}
]]
運(yùn)行后,結(jié)果為:A[3,1]is not an Integer!A is not an integral matrix.
經(jīng)過修改,還可以利用這個(gè)算法驗(yàn)證向量或集合中的元素是否為整數(shù),這在實(shí)際問題中是非常有意義的.
2.1置換矩陣的定義及應(yīng)用
在數(shù)學(xué)中的矩陣論里,置換矩陣是一種元素只由0和1組成的方陣.置換矩陣的每一行和每一列都恰好有一個(gè)1,其余的系數(shù)都是0.
群論中,一個(gè)置換群是一個(gè)給定集的置換構(gòu)成的群,其群作用是群中的置換的復(fù)合,它在對稱性和組合論以及數(shù)學(xué)的其他很多分支中有應(yīng)用[4-5].注意到所有置換的群是對稱群;置換群通常是指對稱群的一個(gè)子群.在一個(gè)n次對稱群中,由于n置換一共有n!個(gè),n階的置換矩陣也有n!個(gè).這n!個(gè)置換矩陣構(gòu)成一個(gè)關(guān)于矩陣乘法的群,群單位元為單位矩陣.
置換矩陣是雙隨機(jī)矩陣的一種.伯克霍夫-馮·諾伊曼定理說明每個(gè)雙隨機(jī)矩陣都是同階的置換矩陣的凸組合,并且所有的置換矩陣構(gòu)成雙隨機(jī)矩陣集合的所有端點(diǎn).因此,如何得到一個(gè)矩陣的全體置換矩陣,是一個(gè)值得研究的問題.
2.2矩陣的全體置換
在線性代數(shù)中,當(dāng)一個(gè)矩陣乘上一個(gè)置換矩陣時(shí),所得到的是原來矩陣的橫行(置換矩陣在左)或縱列(置換矩陣在右)經(jīng)過置換后得到的矩陣.根據(jù)這個(gè)思路,很多學(xué)者編寫出相應(yīng)的Mathematica算法[2],但這些算法只能得到矩陣的一個(gè)或幾個(gè)置換矩陣,而無法得到全體置換矩陣.
對于矩陣的全體置換,可以看作是矩陣中所有元素進(jìn)行全排列后重新構(gòu)成的矩陣.全排列的算法,很多軟件提出很多算法,這里僅僅利用Mathematica軟件中的Permutations[]函數(shù),很方便的就給出矩陣的全體置換矩陣.
算法的源代碼:
A={{1,2,3},{9,8,7},{4,5,6}};
Data2=Permutations[Flatten[A]];
For[i=1,i<=Factorial[Dimensions[A][[1]]*Dimensions[A][[2]]],i++,
{B={},F(xiàn)or[j=1,j<=Length[Data2[[i,All]]],j=j+Dimensions[A][[2]],
{B=Append[B,Take[Data2[[i,All]],{j,j+Dimensions[A][[2]]-1}]]}]
Print[“No.”,i,“”,Data2[[i,All]],“,”,MatrixForm[B]]}
]
由于計(jì)算的結(jié)果較多,所以這里就不呈現(xiàn),有興趣的讀者可以自己運(yùn)行.
需要說明的是,Permutations[]對機(jī)器的內(nèi)存要求較高,當(dāng)所排列的元素?cái)?shù)量較多時(shí)(如數(shù)量為12,實(shí)驗(yàn)機(jī)器配置為:Inter?Core?i5-4590 CPU,4G RAM,Win7 64-Bit,Mathematica 9.0),會提醒“現(xiàn)有內(nèi)存不滿足這個(gè)要求”的提示.
通過上面的分析可以看到,Mathematica軟件是矩陣計(jì)算非常有用的工具,只需要通過簡單的幾行命令,就可以快速準(zhǔn)確地求出整數(shù)矩陣和置換矩陣的結(jié)果.這里僅僅介紹Mathematica軟件在計(jì)算方面的優(yōu)勢,其軟件作圖以及人機(jī)交互等功能沒有介紹,有興趣的讀者可以深入探討.
從本文可以看出,利用好數(shù)學(xué)工具軟件,可以把教育工作者和科技工作者從繁重的計(jì)算中解放出來,將精力投入到創(chuàng)新性的科研工作中去.
說明:本文中的程序都經(jīng)過了Mathematica 9.0環(huán)境的驗(yàn)證.
參考文獻(xiàn):
[1]GOLUB G,LOAN C.Matrix Computations(3rd Edition)[M].Johns Hopkis University Press,1996.
[2]丁大正.Mathematica基礎(chǔ)與應(yīng)用[M].北京:電子工業(yè)出版社,2013.
[3]張景曉.整數(shù)矩陣的性質(zhì)及應(yīng)用[J].重慶理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,24(4):117-119.
[4]LINDNER M,STRANG G.The main diagonal of a permutation matrix[J].Linear Algebra and its Applications,2013,439 (3):524–537.
[5]CIGLER G.Permutation-like matrix groups[J].Linear Algebra and its Applications,2007,422(2/3):486-505.
Solving Two Matrix Problems by Using Mathematica
CHEN Liang1,MA Yanfang2
(1.School of Mathematics Science,Huaibei Normal University,235000,Huaibei,Anhui,China;2.School of Computer Science and Technology,Huaibei Normal University,235000,Huaibei,Anhui,China)
Abstract:Integral matrices and permutation matrices are the two kinds of important matrices in matrix theory. We solve two matrix problems using mathematica in this paper.One is how to determine whether some matrix is integral matrix and the other is to generate all permutations of some given matrix.Some applications of mathematica in matrix computation are introduced,which shows the superiority of mathematicain scientific computation.
Key words:mathematica;integral matrix;permutation matrix
作者簡介:陳亮(1977-),男,江蘇鹽城人,博士,副教授,主要從事數(shù)值計(jì)算等方面的研究.
基金項(xiàng)目:國家自然科學(xué)基金項(xiàng)目(61300048);安徽省自然科學(xué)基金項(xiàng)目(1308085QF117,1508085MA14);安徽省高校省級自然科學(xué)研究重點(diǎn)項(xiàng)目(KJ2014A223);2014年安徽省高校優(yōu)秀青年人才支持計(jì)劃;安徽省高等教育振興計(jì)劃重大教學(xué)改革研究項(xiàng)目(2014ZDJY058);安徽省教育廳質(zhì)量工程項(xiàng)目(2012GXK058);淮北師范大學(xué)教學(xué)研究項(xiàng)目(JY13231,JY14148)
收稿日期:2015-02-02
中圖分類號:O 151.2
文獻(xiàn)標(biāo)識碼:C
文章編號:2095-0691(2016)01-0083-03