APP下载

应用Mathematica软件解决两类矩阵问题

2016-03-15马艳芳淮北师范大学数学科学学院安徽淮北35000淮北师范大学计算机科学与技术学院安徽淮北35000

陈 亮,马艳芳(.淮北师范大学数学科学学院,安徽淮北35000;.淮北师范大学计算机科学与技术学院,安徽淮北35000)



应用Mathematica软件解决两类矩阵问题

陈亮1,马艳芳2
(1.淮北师范大学数学科学学院,安徽淮北235000;2.淮北师范大学计算机科学与技术学院,安徽淮北235000)

摘要:整数矩阵和置换矩阵是矩阵理论中非常重要的两类矩阵,文章通过整数矩阵的判定和求解矩阵的全体置换这两个实例,介绍Mathematica软件在矩阵计算中的应用,显示出Mathematica软件在科学计算中的优势.

关键词:Mathematica;整数矩阵;置换矩阵

矩阵理论作为数学的一个重要分支,具有极其丰富的内容,在现代各个科技领域,如最优化理论、数值分析、运筹学、力学、电学、系统工程、管理科学与工程以及稳定性理论等学科都有十分重要的应用,很多问题最终都转化成矩阵的运算与求解,因此,学习和掌握矩阵的理论与计算,是非常十分重要的意义[1].

矩阵计算所要研究的主要问题,是根据各种科学与工程问题所得到的矩阵的特点,设计出相应的快速、简便、可靠的算法,其中最具有挑战性的问题就是大规模或超大规模的计算问题,所以必须使用数学工具软件进行计算.目前,世界主流的数学软件主要有Matlab、Maple、Mathematica等,他们的优点也各有千秋.其中Mathematica软件内容丰富、功能强大、界面友好、使用简单方便,无论将它作为教学辅助工具,还是科研计算工具,都是十分理想的.而且,Mathematica软件在计算过程中,不但能够得到问题的数值解,还能够得到问题的解析解,这是其他数学工具软件,如Matlab、Maple所不具备的[2].

整数矩阵和置换矩阵是两类非常特殊的矩阵,它们在实际生活中应用非常广泛.在矩阵计算中,由于这两类矩阵的计算技巧较强,因此在实际运算过程中,如果能用数学工具软件进行计算,其意义将是非常巨大的.本文主要应用Mathematica软件来解决整数矩阵和置换矩阵的相关计算问题.

1 整数矩阵

1.1整数矩阵的定义与性质

整数矩阵的计算在实际应用中十分广泛.所谓整数矩阵是指矩阵的所有元素都是整数的矩阵,它具有很多重要的性质[3].

性质1整数矩阵的代数和以及乘积仍然是整数矩阵.

性质2整数矩阵的伴随矩阵是整数矩阵.

性质3若整数矩阵A可逆,则其逆A-1仍然是整数矩阵的等价条件为|| A=±1.

通过对整数矩阵的研究,可以讨论整系数不定方程的解、整系数线性方程组的整数解以及群与环上的相关问题.

1.2判断整数矩阵

对于实际问题中产生的矩阵,无法判断其是否为整数矩阵,此时可用Mathematica软件进行判断:

算法的源代码:

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”]}

]]

运行后,结果为:A[3,1]is not an Integer!A is not an integral matrix.

经过修改,还可以利用这个算法验证向量或集合中的元素是否为整数,这在实际问题中是非常有意义的.

2 置换矩阵

2.1置换矩阵的定义及应用

在数学中的矩阵论里,置换矩阵是一种元素只由0和1组成的方阵.置换矩阵的每一行和每一列都恰好有一个1,其余的系数都是0.

群论中,一个置换群是一个给定集的置换构成的群,其群作用是群中的置换的复合,它在对称性和组合论以及数学的其他很多分支中有应用[4-5].注意到所有置换的群是对称群;置换群通常是指对称群的一个子群.在一个n次对称群中,由于n置换一共有n!个,n阶的置换矩阵也有n!个.这n!个置换矩阵构成一个关于矩阵乘法的群,群单位元为单位矩阵.

置换矩阵是双随机矩阵的一种.伯克霍夫-冯·诺伊曼定理说明每个双随机矩阵都是同阶的置换矩阵的凸组合,并且所有的置换矩阵构成双随机矩阵集合的所有端点.因此,如何得到一个矩阵的全体置换矩阵,是一个值得研究的问题.

2.2矩阵的全体置换

在线性代数中,当一个矩阵乘上一个置换矩阵时,所得到的是原来矩阵的横行(置换矩阵在左)或纵列(置换矩阵在右)经过置换后得到的矩阵.根据这个思路,很多学者编写出相应的Mathematica算法[2],但这些算法只能得到矩阵的一个或几个置换矩阵,而无法得到全体置换矩阵.

对于矩阵的全体置换,可以看作是矩阵中所有元素进行全排列后重新构成的矩阵.全排列的算法,很多软件提出很多算法,这里仅仅利用Mathematica软件中的Permutations[]函数,很方便的就给出矩阵的全体置换矩阵.

算法的源代码:

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={},For[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]]}

由于计算的结果较多,所以这里就不呈现,有兴趣的读者可以自己运行.

需要说明的是,Permutations[]对机器的内存要求较高,当所排列的元素数量较多时(如数量为12,实验机器配置为:Inter®Core™i5-4590 CPU,4G RAM,Win7 64-Bit,Mathematica 9.0),会提醒“现有内存不满足这个要求”的提示.

3 结论

通过上面的分析可以看到,Mathematica软件是矩阵计算非常有用的工具,只需要通过简单的几行命令,就可以快速准确地求出整数矩阵和置换矩阵的结果.这里仅仅介绍Mathematica软件在计算方面的优势,其软件作图以及人机交互等功能没有介绍,有兴趣的读者可以深入探讨.

从本文可以看出,利用好数学工具软件,可以把教育工作者和科技工作者从繁重的计算中解放出来,将精力投入到创新性的科研工作中去.

说明:本文中的程序都经过了Mathematica 9.0环境的验证.

参考文献:

[1]GOLUB G,LOAN C.Matrix Computations(3rd Edition)[M].Johns Hopkis University Press,1996.

[2]丁大正.Mathematica基础与应用[M].北京:电子工业出版社,2013.

[3]张景晓.整数矩阵的性质及应用[J].重庆理工大学学报(自然科学版),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-),男,江苏盐城人,博士,副教授,主要从事数值计算等方面的研究.

基金项目:国家自然科学基金项目(61300048);安徽省自然科学基金项目(1308085QF117,1508085MA14);安徽省高校省级自然科学研究重点项目(KJ2014A223);2014年安徽省高校优秀青年人才支持计划;安徽省高等教育振兴计划重大教学改革研究项目(2014ZDJY058);安徽省教育厅质量工程项目(2012GXK058);淮北师范大学教学研究项目(JY13231,JY14148)

收稿日期:2015-02-02

中图分类号:O 151.2

文献标识码:C

文章编号:2095-0691(2016)01-0083-03