版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章Mathematica矩阵运算5.1向量与矩阵5.2矩阵运算5.3矩阵操作在Mathematica中,向量与矩阵都以列表的形式存储,向量对应着一维列表,矩阵对应着二维嵌套列表。列表操作函数可用于向量和矩阵操作,且任意符号和数值都可以作为矩阵元素参与矩阵运算。本章将介绍借助于Mathematica软件进行矩阵运算的方法,主要包括向量与矩阵定义、矩阵基本运算、矩阵变换和线性方程组求解等。矩阵代数是量子计算的主要数学工具,已经成为推动微观领域建模的重要数学方法。第五章Mathematica矩阵运算5.4解线性方程组5.5特征值与特征向量5.6矩阵对角化在Mathematica中,向量与矩阵都以列表的形式存储,向量对应着一维列表,矩阵对应着二维嵌套列表。列表操作函数可用于向量和矩阵操作,且任意符号和数值都可以作为矩阵元素参与矩阵运算。本章将介绍借助于Mathematica软件进行矩阵运算的方法,主要包括向量与矩阵定义、矩阵基本运算、矩阵变换和线性方程组求解等。矩阵代数是量子计算的主要数学工具,已经成为推动微观领域建模的重要数学方法。5.1向量与矩阵FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.称为行列矩阵,简称矩阵。当m=n时,相应的矩阵称为n阶矩阵或者n阶方阵。当且仅当两个相同大小的向量对应位置的元素相等时,两个向量才是相等的。同样地,当且仅当两个相同大小的矩阵所有对应位置的元素相等时,两个矩阵才是相等的。在Mathematica中,向量和矩阵都是以列表的形式存储,一个向量就是一个一维列表,而一个矩阵可由一个二层嵌套列表定义,且每个子列表的元素个数要相同,因为每个子列表对应着矩阵的一行,矩阵的每行应具有相同数目的元素。一般地,可通过构造一个列表手动输入一个向量或者矩阵,也可以利用内建的制表函数或者专用矩阵生成函数来构造向量和矩阵。5.1向量与矩阵5.1.1列表与矩阵(1)单层列表(向量)的输入方法单层列表:“变量名={e1,e2,…,en}”。其中,ei,i=1,2,…,n表示列表元素。输入一个变量名保存列表。一般地,变量名可为英文小写字母开头的符号串,也可以为希腊字符等,但是不能以数字开头;此外,由于下划线“_”在Mathematica中有特殊含义(用作模式匹配),因此,变量名中不应使用下划线。等号“=”为赋值符号,又称为“立即赋值符号”,即赋值是立即完成的;相对而言,“:=”称为延时赋值符号,每次调用或引用“变量”时才进行赋值操作,常用于自定义函数中。列表花括号“{}”括起来,列表元素间用逗号“,”分隔。在Mathematica中,“空格”表示乘号,因此,列表元素不能用“空格”分隔,但是,列表元素可以用逗号“,”加零个或多个“空格”分隔。向量与矩阵均可以列表的形式输入其中元素的方法直接构造,其中的元素可以是整数、实数、复数或各种符号。向量和矩阵的输入方法如下:5.1向量与矩阵5.1.1列表与矩阵(2)二层嵌套列表(矩阵)的输入方法二层嵌套列表:“变量名={{a11,a12,…,a1n},{a21,a22,…,a2n},…,{am1,am2,…,amn}}”,其中,aij,i=1,2,…,m,j=1,2,…,n为列表元素。可以对单层列表或二层嵌套列表施加MatrixForm函数,使列表以矩阵的形式显示,其中,单层列表以列向量的形式显示,二层嵌套列表以m行n列的数据表显示。向量与矩阵均可以列表的形式输入其中元素的方法直接构造,其中的元素可以是整数、实数、复数或各种符号。向量和矩阵的输入方法如下:例5-1将列表视为向量或矩阵,如图5-1所示在图5-1中,“In[1]”得到一维列表v1,如“Out[1]”所示;“In[2]”将v1以列向量的形式显示,如“Out[2]”所示。这里,MatrixForm函数用于将列表以向量或矩阵的形式显示,并为显示的列表添加左右括号。“In[3]”输入一个新的列表v2,如“Out[3]”所示,v2表明列表元素可以取数值或符号;“In[4]”输入一个二维嵌套列表mt,即矩阵,并以矩阵形式显示,如“Out[4]”所示。一般地,可以视为向量或矩阵的列表的情况有:(1)一维列表可以视为列向量;(2)二维嵌套列表,当它的子列表元素个素相同时,才可以视为矩阵。此时,可以用MatrixQ函数判定嵌套列表是否为矩阵。5.1向量与矩阵5.1.2向量与矩阵函数Mathematica集成了丰富的向量与矩阵处理函数,利用其内置函数可创建规则的向量与矩阵。表5-1和表5-2分别列出了常用的构造向量和矩阵的内置函数,其中Table函数最为常用,即可以构造向量,也可以构造矩阵。例5-2使用Table函数和Array函数构造向量,如图5-2所示在图5-2中,“In[25]”使用Table函数构造了向量{3,6,9,12},如“Out[25]”所示;“In[26]”使用Table函数构造向量,每个元素为2i,i的取值为2依步长2增至10,得到的向量如“Out[26]”所示。“In[27]”使用了纯函数“2#+3&”借助于Array生成了向量{5,7,9,11},如“Out[27]”所示。这里,纯函数“2#+3&”中,“&”为纯函数定义符,即纯函数以“&”结尾,其中的“#”表示函数形参;在“In[27]”中,“形参”取值从1按步长1至4,对于每个参数的取值,计算“2×参数的值+3”,故得到如“Out[27]”所示结果。“In[28]”中定义了函数f,“In[29]”使用f函数和Array数组创建了一维向量,如“Out[29]”所示。例5-3利用表5-2中的函数构造矩阵,如图5-3所示在图5-3中,“In[31]”使用Table构造了一个3×5的矩阵mt1,如“Out[31]”所示;“In[32]”为自定义函数f(x,y),“In[33]”使用自定义函数f和Array函数生成矩阵mt2(与mt1相同),如“Out[33]”所示;“In[34]”生成三阶单位矩阵,如“Out[34]”所示;“In[35]”以列表{1,3,5,7}为对角线生成对角阵mt4,如“Out[35]”所示。从上述例子可知,Table函数是最常用的构造向量和矩阵的函数,并且可利用Table函数构造出一些特殊类型的矩阵,如表5-3所示例5-4用表5-3所示方法构造一些特殊矩阵,如图5-4所示在图5-4中,“In[36]”调用“Clear["`*"]”清除已创建的全局变量的值;“In[37]”生成一个3×3的全0矩阵,如“Out[37]”所示;“In[40]”生成一个4×5的全1矩阵,如“Out[40]”所示;“In[42]”生成一个3×4的单位下三角阵(非0元素设为1),如“Out[42]”所示;“In[43]”生成一个4×4的单位上三角阵(非0元素设为1),如“Out[43]”所示。5.1向量与矩阵5.1.3向量与矩阵判定在Mathematica中,向量用单层列表表示,矩阵用二维嵌套列表表示,单个数值或符号称为标量。表5-4列举了常用的向量与矩阵判定函数。例5-5向量或矩阵判定函数典型实例如图5-5所示在图5-5中,“In[45]”用Range函数生成一个列表v1,如“Out[45]”所示;“In[46]”使用VectorQ函数判定v1是否为向量,返回结果为True,如“Out[46]”所示,表明v1为向量;“In[47]”判定v1的第一个元素是否为数,返回值True,如“Out[47]”所示,表明v1的第一个元素为数值。“In[48]”使用MatrixQ函数判别v1是否为矩阵,返回结果为False,如“Out[48]”所示,表明v1不是矩阵。在Mathematica中,向量和矩阵的概念区分严格。“In[49]”调用Dimensions函数得到向量v1的大小,如“Out[49]”所示。“In[50]”生成一个3行2列的矩阵mt1,如“Out[50]”所示;“In[51]”使用MatrixQ判定mt1是否为矩阵,返回True,如“Out[51]”所示;“In[52]”调用Dimensions函数返回mt1的维数,如“Out[52]”所示。5.2矩阵运算FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.Mathematica具有强大的矩阵运算能力,这里重点介绍常用的矩阵运算,包括矩阵的加法、减法、乘法、矩阵行列式、矩阵转置和矩阵求逆等。5.2.1标量运算在Mathematica中,标量与向量和标量与矩阵的运算主要有加法和数乘运算等,这两种运算作用于列表中的每个元素。5.2.2矩阵算术运算两个向量(或矩阵)求和运算要求参与运算的两个向量(或矩阵)具有相同的大小(即行数和列数)。向量(或矩阵)的点积(或乘法)运算用“.”运算符或Dot运算函数,对于两个矩阵的乘法而言,要求第一个矩阵的列数等于第二个矩阵的行数。三维向量的叉乘用“×”运算符或Cross函数。此外,Outer函数用于计算向量或矩阵的外积。例5-6标量运算典型实例如图5-6所示。在图5-6中,“In[54]”生成了一个2行3列的矩阵mt1,如“Out[54]”所示。“In[55]”将mt1与10相加,此时,10与mt1的每个元素相加,计算结果如“Out[55]”所示;“In[56]”将10与mt1相乘,即10与mt1的每个元素相乘,计算结果如“Out[56]”所示。同理,“In[57]”至“In[59]”反映了标量与向量的加法和数乘运算。例5-7典型向量和矩阵运算实例如图5-7所示在图5-7中,“In[87]”输入两个向量v1和v2;“In[88]”计算这两个向量的和,对应位置的元素相加,结果如“Out[88]”所示;“In[89]”计算向量v1和v2的乘积,对应位置的元素相乘,结果如“Out[89]”所示;“In[90]”和“In[91]”均计算向量v1和v2的点积,得到结果8,如“Out[90]”和“Out[91]”所示。“In[92]”定义矩阵a和b;“In[93]”和“In[94]”均计算a和b的矩阵乘法(两个相同大小的矩阵的标量乘法使用“*”运算符),结果如“Out[93]”和“Out[94]”所示。“In[95]”定义了两个三维向量b1和b2,“In[96]”和“In[97]”计算b1和b2的叉积,其结果如“Out[96]”和“Out[97]”所示,其中“In[96]”中的“×”用“Esc键+cross+Esc键”输入。5.2矩阵运算FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.5.2.3典型矩阵运算Mathematica集成了大量的矩阵处理函数,表5-5列举了常用的矩阵运算函数例5-8常用矩阵运算函数典型实例如图5-8和图5-9所示在图5-8中,“In[2]”输入一个2行3列的矩阵a1,如“Out[2]”所示;“In[3]”求矩阵a1的转置矩阵a2,如“Out[3]”所示;“In[4]”输入一个3行3列的方阵a3,如“Out[4]”所示;“In[5]”计算了矩阵a3的行列式的值,结果为26,如“Out[5]”所示。下面图5-9在图5-8的基础上,展示了另一些矩阵运算函数的用法实例在图5-9中,矩阵a3来自于图5-8。“In[7]”求矩阵a3的子式构造的矩阵,如“Out[7]”所示,其第(i,j)位置处的元素为a3中删除第n-i+1行和第m-j+1列后的矩阵的行列式的值,这里的n表示行数,m表示列数。“In[8]”计算矩阵a3的迹,计算结果如“Out[8]”所示;“In[10]”求a3的逆阵,结果如“Out[10]”所示;“In[12]”计算a3的3次幂,结果如“Out[12]”所示;“In[26]”计算Exp[a3],其结果如“Out[26]”所示。在图5-9中,矩阵求逆函数Inverse、矩阵的幂函数MatrixPower和矩阵指数函数MatrixExp只能对方阵进行运算。5.3矩阵操作FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.5.3.1矩阵合成在Mathematica中,集成了一些矩阵调整函数,例如,可借助于Join函数合并多个矩阵,借助于Partition函数将向量格式化为矩阵。矩阵作为二维嵌套列表,其元素可以替换或删除。本节将重点介绍矩阵的拼接和元素修改等操作。在Mathematica中,常用的矩阵合成函数如表5-6所示例5-9典型矩阵合成函数应用实例如图5-10所示在图5-10中,“In[30]”和“In[31]”生成两个向量a1和a2,分别如“Out[30]”和“Out[31]”所示;“In[32]”调用Join函数将向量a1和a2合并为一个向量,如“Out[32]”所示。“In[34]”和“In[35]”生成两个矩阵b1和b2,分别如“Out[34]”和“Out[35]”所示;“In[36]”按列扩展将b1和b2合并为一个矩阵,如“Out[36]”所示;“In[37]”按行扩展将b1和b2合并为一个矩阵,如“Out[37]”所示。5.3矩阵操作FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.5.3.2矩阵元素操作列表的元素操作符“[[]]”可以用于矩阵元素的操作,此外,Mathematica还提供了矩阵元素操作函数,如表5-7所示。5.3.2矩阵元素操作FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.表5-7中的各个函数均有对应的元素操作符“[[]]”的实现方法。这里设a为一个3×3的矩阵,如下所示:表5-7中的各个函数的操作举例如下,并给出了相应的元素操作符“[[]]”的实现方法:(1)Part[a,2]得到矩阵a的第2行元素组成的列表,即{4,5,6}。等价于:“a[[2]]”。(2)Take[a,2]得到矩阵a的前2行的元素组成的列表,即{{1,2,3},{4,5,6}}。等价于:“a[[1;;2]]”。5.3.2矩阵元素操作(4)Take[a,2,2]得到矩阵a的第1至2行和第1至2列的元素组成的列表,即{{1,2},{4,5}}。等价于:“a[[1;;2,1;;2]]”。(5)Drop[a,2]得到a删除前2行后的列表,即{{7,8,9}}。等价于:“b=a;b[[1;;2]]=Nothing;b”。向矩阵中的某些位置元素赋值Nothing,表示删除矩阵中的这些位置的元素。(6)Drop[a,{2}]得到a删除第2行后的列表,即{{1,2,3},{7,8,9}}。等价于:“b=a;b[[2]]=Nothing;b”。(7)Drop[a,{2,3}]得到a删除第2行至第3行后的列表,即{{1,2,3}}。等价于:“b=a;b[[2;;3]]=Nothing;b”。(8)Drop[a,2,2]得到a删除第1至2行和第1至2列后的列表,即{{9}}。等价于:“b=a[[3;;-1,3;;-1]]”。5.3.2矩阵元素操作(9)Delete[a,2]得到a删除第2行后的列表,即{{1,2,3},{7,8,9}}。等价于:“b=a;b[[2]]=Nothing;b”。(10)Delete[a,{{1},{3}}]得到a删除第1行和第3行后的列表,即{{4,5,6}}。等价于:“b=a;b[[{1,3}]]=Nothing;b”。下面介绍一下表5-7中的函数典型用法实例例5-10矩阵元素操作典型实例如图5-11所示。在图5-11中,“In[39]”生成一个3行3列的矩阵a;“In[40]”读取矩阵a的第2行元素,如“Out[40]”所示;“In[41]”读取矩阵a的前2行元素,如“Out[41]”所示;“In[42]”删除矩阵a的第2行元素,如“Out[42]”所示;“In[43]”返回矩阵a的对角线元素,如“Out[43]”所示;“In[44]”删除矩阵a的第一行,结果如“Out[44]”所示。需要注意的是,所有的读取操作和删除操作均不改变原始矩阵的值,这里图5-11中矩阵a在操作前后保持不变。5.4解线性方程组FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.5.3.2矩阵元素操作在Mathematica中,可借助于LinearSolve函数求解线性方程组的特解(Solve函数可以求得通解)。LinearSolve函数的典型语法为:LinearSolve[a,b]求得线性方程组ax=b的一个特解。Solve函数求解的结果如图5-12所示在图5-12中,“In[56]”使用Solve函数求解方程组(1),方程组中的各个方程用“&&”符号连接,结果如“Out[56]”所示,表明方程组(1)具有唯一解。“In[57]”生成方程组(1)的系数矩阵a1和常数向量b1;“In[59]”使用方程组(1)的矩阵表示求解,结果如“Out[59]”所示,说明方程组(1)具有唯一解{1,2,3}。“In[60]”生成方程组(2)的系数矩阵a2和常数向量b2;“In[62]”使用方程组(2)的矩阵形式求解该方程组,解集如“Out[62]”所示,说明方程组(2)无解。“In[69]”生成方程组(3)的系数矩阵a3和常数向量b3;“In[71]”使用方程组(3)的矩阵形式求解该方程组,解集如“Out[71]”所示,方程组(3)有无穷多解,x作为自由变量。使用LinearSolve函数求解方程组(1)至(3)的结果如图5-13所示在图5-13中,“In[72]”求解方程组(1),得到唯一解{1,2,3},如“Out[72]”所示;“In[73]”求解方程组(2),提示方程组(2)无解,如“Out[73]”所示。“In[75]”求解方程组(3),得到其一个特解,如“Out[75]”所示;“In[77]”调用NullSpace求得矩阵a3的零空间的基,即方程组a3.{x,y,z}=0的基础解系的基向量,如“Out[77]”所示;然后,“In[78]”求得方程(3)的解集,如“Out[78]”所示,这里“First[x0]”返回x0的第一个元素。下面通过行初等变换将方程组的增广矩阵化为简化阶梯形形式,从而可以直观地求解方程组的解集。在Mathematica中,使用RowReduce函数化简矩阵,其典型语法为:使用LinearSolve函数求解方程组(1)至(3)的结果如图5-13所示RowReduce[矩阵]求“矩阵”的行约化形式。通地RowReduce函数进行行约化求解方程组的方法称为Gauss-Jordan法,如图5-14所示。这种方法既适合于求解微型线性方程组,也适用于超大型线性方程组求解。在图5-14中,矩阵a1、a2和a3以及向量b1、b2和b3来自于图5-12,分别为线性方程组(1)至(3)的系数矩阵和常数向量,这两者可组成线性方程组的增广矩阵。在“In[86]”中,先调用Transpose函数将{b1}转化为列矩阵,这里,{b1}为包含了b1的二层嵌套列表(即只有一行元素的矩阵);然后,调用Join函数将a1和{b1}水平方向上合并为一个矩阵,即方程组(1)的增广矩阵;最后,调使用LinearSolve函数求解方程组(1)至(3)的结果如图5-13所示用RowReduce函数行约化了方程组(1)的增广矩阵,如“Out[86]”所示,从“Out[86]”可知方程组(1)仅有唯一解,因为增广矩阵的行约化矩阵为满秩矩阵。同理,“In[87]”行约化了方程组(2)的增广矩阵,如“Out[87]”所示,从“Out[87]”中可得到“0=1”的悖论,故方程组(2)无解。“In[88]”行约化了方程组(3)的增广矩阵,如“Out[88]”所示,从“Out[88]”可知,矩阵的秩小于自变量的个数,即方程组(3)具有无穷多个解。5.5特征值与特征向量FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.5.3.2矩阵元素操作若A为n阶方阵,如果对于数,存在非零向量v使得Av=λv成立,则称λ为A的一个特征值,v是A的对应与λ的特征向量。由Av=λv可得(λE-A)v=0,由于v不等于0,故Det[λE-A]=0,此式为A的特征方程,是的n次方程,在复数域内有n个根,Det[λE–A]称为A的特征多项式,矩阵λE-A称为特征矩阵。矩阵的特征值和特征向量是表征矩阵性态的首要属性。在Mathematica中,求解特征值与特征矩阵相关的函数如表5-8所示。例5-12以如下矩阵为例,求解其特征值与特征向量,如图5-15所示。在图5-15中,“In[101]”输入3行3列的矩阵a,如“Out[101]”所示;“In[102]”计算得到矩阵a的特征值,如“Out[102]”所示;“In[103]”计算得到矩阵a的特征向量,如“Out[103]”所示;“In[104]”计算得到矩阵a的特征值及其相对应的特征向量,如“Out[104]”所示,这里的特征值和特征向量是按位置对应的,在“Out[104]”中,特征向量组成了一个矩阵{{3,1,4},{1,0,1},{0,-1,2}},而特征值组成了向量{3,2,0},每个特征值对应着特征向量矩阵的一行,按位例5-12以如下矩阵为例,求解其特征值与特征向量,如图5-15所示。置对应,即第一个特征值对应着第一个特征向量,第二个特征值对应着第二个特征向量,依次类推;如果某个特征值的特征向量为0向量,则在特征向量矩阵的相应行处为0向量。“In[105]”返回矩阵a的特征多项式,如“Out[105]”所示。5.6矩阵对角化FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.对于n阶方阵A,如果存在一个可逆矩阵P,使得AP=PD或A=PDP-1,其中D是对角矩阵,那么称矩阵A可对角化。当n阶矩阵A具有n个线性无关的特征向量时,则矩阵A是可对角化的。P的列是由A的特征向量组成的矩阵,D的主对角线上的元素由各个特征向量对应的特征值组成。FirstImpressionMaurisquamdolor,cursusatportaet,luctusegetpurus.Nunctemporluctusinterdum.例5-13以如下矩阵a为例,将其对角化,如图5-16所示例5-13以如下
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年体育测试题搜题答案
- 招聘特效师试题及答案
- 招聘社工试题及答案
- 2026自荐考试操作系统模拟题及答案 零基础也能快速提分
- 招聘3D模型师面试题及答案
- 小松(中国)秋招面试题及答案
- 2026届珠海市中考化学模拟预测题(含答案解析)
- 辽宁体育产业集团秋招面笔试题及答案
- 2025-2026学年贵州省铜仁市八年级(上)期末语文试卷(含详细答案解析)
- 2026上海华东师范大学开放教育学院教师发展学院校内外招聘1人备考题库含答案详解
- 2026宝洁(中国)秋招面试题及答案
- 服务保障协议范本
- 2026年贵州高考化学真题解析含答案
- 会诊转诊制度培训
- 冷作工培训课件
- 员工底薪提成合同模板(3篇)
- 2025年郑州电力高等专科学校单招职业技能考试题库附答案
- 赠从弟其二刘桢课件
- 党的二十届四中全会学习试题
- 肿瘤化疗脑患者注意力缺陷计算机化认知训练方案
- 委托验资合同范本
评论
0/150
提交评论