1、实验13向量行列式矩阵与线性方程组实验2实验13向量行列式矩阵与线性方程组实验学习目标1 会用Mathematica进行向量的计算;2 能用Mathematica进行行列式的计算;3 会利用Mathematica进行矩阵的运算与初等变换;4 能利用Mathematica解线性方程组。 线性代数的数值计算程序并不稀奇,早有大量的算法和软件。然而这里是进行准确的符号运算,学习了本节以后,就可以摆脱繁琐的矩阵运算了。本节介绍用Mathematica实现线性代数运算的各种专用函数,它们基本上满足了线性代数计算的需求。读者将会看到,以下的一些计算功能是十分出色的。但从我国的教材来看,还有个别计算功能没有
2、涉及,留有继续开发的余地。一、 矩阵的输入与输出 在Mathematica中向量和矩阵就是一个表。 a1,a2,an 表示一个向量。a11,a12,a1n,a21,a22,a2n,am1,am2,amn 表示一个m行n列的矩阵,其中每一个子表表示矩阵的一行。1 直接输入矩阵 直接输入矩阵的方法有3种,如下所述。(1) 按表的形式输入矩阵 既然矩阵和向量都是表,表的一般操作对于矩阵和向量仍然适用。但是,按表的格式键入矩阵和向量,会让人很不习惯。因此,Mathematica也提供了矩阵和向量的常规形式的输入、输出方法。(2) 由模板输入矩阵 基本输入模板中有输入2阶方阵的模板,单击该模板输入一个空
3、白的2阶方阵。按“Ctrl +”使矩阵增加一列,按“Ctrl + Enter”使矩阵增加一行。如果矩阵不大,此法较方便。(3) 由菜单输入矩阵 如果输入行、列数较多的矩阵,可以打开主菜单的Input项,其中Create Table/Matrix/Palette可用于建立一个矩阵,单击该项出现一个的对话框。选择Make:Matrix,再输入行数和列数,单击OK按钮,于是一个空白矩阵被输入到工作区窗口。 空白矩阵的每个小方块代表一个元素的位置,光标所在的小方块与众不同,可以用Tab键将光标从一个方块跳到下一个方块,也可以用鼠标选中一个方块。2 以矩阵形式输出矩阵 不管用何种方法输入矩阵,矩阵总是按
4、表的形式输出。这既违背常规,又难于阅读。因此,Mathematica提供了以矩阵形式输出矩阵的函数: MatrixFormlist 将表list按矩阵的形式输出。例1 观察下面矩阵的输出。 In1:= a=1,2,3,4,5,6 Out1= 1,2,3,4,5,6 In2:=MatrixForma Out2 / / MatrixForm= In3:= a=1,2,3,4,5,6 / / MatrixForm Out3 / / MatrixForm= In4:= Out4=1,2,3,4,5,6 In5:= % / MatrixForm Out5 / / MatrixForm= 说明:由上例可以
5、看出,不管输入的形式是否为矩阵,必须使用MatrixForm才能使输出为矩阵形式。这不合习惯且费事,解决的方法是自制一个模板:/ MatrixForm,以便快速输入。 使用函数MatrixForm又会出现另一个问题,可以通过以下例子来说明。例2 观察下面矩阵的输出。 In1:= a= Out1=1,2,3,4 In2:= b= / MatrixForm Out2 / MatrixForm= In3:=Inversea / / MatrixForm Out3 / / MatrixForm= In4:=Inverseb / MatrixForm Out4 / / MatrixForm= Inver
6、se 说明:以上In3和In4是求逆矩阵,Mathematica求出a的逆矩阵,对b却失败!变量a形式上是表,但能被Mathematica作为矩阵处理。而变量b虽然表示常规形式的矩阵,但不能对b进行各种矩阵计算,务必注意。 技巧:使用括号能够改变表达式的含义,解决上述问题。例3 观察下面矩阵的输出 In1:=/ MatrixForm Out1 / MatrixForm= In2:=Inverseb / MatrixForm Out2 / MatrixForm= 应该特别注意Mathematica不区分行向量与列向量,在运算时会自动处理。可以通过函数ColumnFormlist将一个向量显示成列
7、向量。3 用函数建立矩阵 也可以通过函数建立一些有规律的矩阵,除了在讲表时已经介绍过的函数Table外,还有以下专用函数: Arraya,m,n 创建一个m行、n列的矩阵,元素为ai,j。 IdentityMatrixn 创建一个n阶单位矩阵。DiagonalMatrixlist 创建一个对角线上为表list的元素的方阵。例4 观察下面矩阵的输出。 In1:=Arraya,2,3 / MatrixForm Out1 / MatrixForm= In2:=Arraya,2,3,0,0 / MatrixForm Out2 / / MatrixForm= In3:=IdentityMatrix3 /
8、 MatrixForm Out3 / MatrixForm= In4:=DiagonalMatrix1,2,3 / MatrixForm Out4 / MatrixForm= 说明:函数Array加上第三个参数用于规定起始下标,起始下标可以取任何整数。 此外Array可以类似创建有任意层数的表,其调用格式如下: Arraya,n 创建一个元素为ai的有n个元素的表(向量)。 Arraya,n1,n2,n3 创建一个元素为ai1,i2,i3的有n1n2n3个元素的3层表。例5 观察下面矩阵的输出。 In1:=Arraya,5 Out1=a1,a2,a3,a4,a5 In2:=Arraya,2,2
9、,2 Out2=a1,1,1,a1,1,2,a1,2,1,a1,2,2, a2,1,1,a2,1,2,a2,2,1,a2,2,24 提取矩阵的元素 提取或引用矩阵的元素的方法与函数,都已经在表的操作中介绍过,只要注意矩阵是一个2层表而每行是一个子表。还有三个矩阵专用的函数,如下所示: MAll,j 提取矩阵M的第j列元素组成一个表。 TrM,List 提取矩阵M的主对角线元素组成一个表。 DimensionsM 求矩阵M的行、列数。例6 观察下面矩阵运算。 In1:= a=; b=; In3:=bAll,3 / MatrixForm Out3 / MatrixForm= In4:=Tra,Li
10、st Out4=1,4 In5:=Dimensionsa Out5=2,2 In6:=Dimensionsb Out6=2,3二、 矩阵、向量的运算1 加法与数乘 除两个矩阵相加外,还有一个数与矩阵相加,都使用加号。一个数与矩阵相加就是矩阵的每个元素都加上该数,一个数与矩阵相乘就是矩阵的每个元素都乘上该数。例7 已知A=,B=,求(1)A+B,(2)2+A,(3)2A。 解:In1:= a=; b=; a+b / MatrixForm Out3 / MatrixForm= In4:= 2+a / MatrixForm Out4 / MatrixForm= In5:=2a / MatrixFor
11、m Out5 / MatrixForm= 2 乘法 句号作为两个矩阵相乘或两个向量内积的运算符。例8 已知A=,B=,C=(1,2,3),D=(1,-1,1),求(1)AB,(2)CD,(3)AD。 解:In1:=a=; b=; a . b / MatrixForm Out3 / MatrixForm= In4:= c=1,2,3; d=1,-1,1; c . d / MatrixForm Out6 / MatrixForm= 2 In7:= a . d / MatrixForm Out7 / MatrixForm= 说明:上例中求a . d时,Mathematica会自动将d理解为列向量。
12、下面是求两个向量的向量积的函数,其调用格式如下: Crossa,b 求ab。例9 已知向量a=2,1,-1, b=1,-1,2,求ab。 解:In1:= a=2,1,-1; b=1,-1,2; Crossa,b Out3=1,-5,-3 In4:= ab Out4=1,-5,-3 提示:求向量积也可以使用基本输入模板上的小乘号。模板上有两个乘号,容易搞错,大乘号是将对应的元素相乘。3 矩阵的转置 矩阵的转置操作使用函数: TransposeM 将矩阵M转置。 提示:可以将此函数自制成模板。4 求行列式 求一个方阵的行列式使用函数: DetA 求方阵A的行列式。例10 计算行列式:(1) ,(2
13、)。 解:In1:= a=; Deta Out2= -18 In3:= b=; Detb Out3=5+9+32-35 求逆矩阵 求一个方阵的逆矩阵使用函数: InverseA 求A的逆矩阵,自动判断是否可逆。例11 已知A=,求A的逆矩阵。 解:In1:= a=; b=Inversea Out2= In3:= a . b / MatrixForm Out3 / MatrixForm= In4:=a-1 Out4= 注意:a-1不表示逆矩阵。 还有函数: MatrixPowerA,n 求An(其中n为整数),当n=-1时即求逆矩阵。例12 已知A=,求(1)A5,(2)A-1,(3)A0。 解
14、:In1:= a=; MatrixPowera,5 / MatrixForm Out2 / MatrixForm= In3:= MatrixPowera,-1 / MatrixForm Out3 / MatrixForm= In4:= Inversea / MatrixForm Out4 / MatrixForm= In5:= MatrixPowera,0 / MatrixForm Out5 / MatrixForm= 注意:在Mathematica中直接输入符号An是将矩阵A的每个元素求n次幂。6 特征值与特征向量 求矩阵的特征值与对应的特征向量的函数是: EigenvaluesA 求方阵A
15、的全部特征值。 EigenvectorsA 求方阵A的一组线性无关的特征向量。 EigensystemA 求全部特征值和对应的线性无关的特征向量组。例13 求矩阵A=的特征值和特征向量。 解:In1:= a=; Eigenvaluesa Out2=-1,-1,5 In3:=Eigenvectorsa Out3=-1,0,1,-1,1,0,1,1,1 In4:=Eigensystema Out4=-1,-1,5,-1,0,1,-1,1,0,1,1,1 In5:=Eigensystema / MatrixForm Out5 / MatrixForm= 提示:由上例可知,函数Eigensystem最
16、好用,输出的结果含义十分清楚,通常使用这个函数就足够了。如果输入A的元素时使用了小数点,或者参数改为NA,则求近似解。例14 求矩阵A=和B=的特征值和特征向量。 解:In1:= a=; Eigensystema / MatrixForm Out2 / MatrixForm= In3:= EigensystemNa / MatrixForm Out3 / MatrixForm= In4:= Eigensystem / MatrixForm Out3 / MatrixForm= 还有以下特殊情况应当说明,示例如下: In1:= Eigensystem / MatrixForm Out1 / Ma
17、trixForm= 注意:这个例子中属于特征值1的线性无关的特征向量只有一个,这时不能找到n个线性无关的特征向量(不相似于对角矩阵)。遇到这种情况,Mathematica总是补上零向量!但零向量不是特征向量,与常规不一致,不要产生误解。三、 解线性方程组 专门用于解线性方程组的函数有3个: RowReduceM 消元得到矩阵M的行最简形矩阵。 NullSpaceM 求齐次线性方程组M x=0的一个基础解系。 LinearSolveM,b 求线性方程组M x=b的一个特解。例15 求解线性方程组: 。 解:In1:=ab=; a=Takeab,1,3,1,4; b=abAll,5; RowRed
18、uceab / MatrixForm Out4 / MatrixForm= In5:=NullSpacea Out5=1,0,2,1,1,1,0,0 In6:=LinearSolvea,b Out6= 说明:在上例的In1中首先给出了一个线性方程组的增广矩阵ab,再提取前4列得到系数矩阵a,提取第5列得到常数项b。然后利用这三个函数分别求出:行最简形矩阵、导出组的基础解系、非齐次方程组的一个特解,于是给出了线性代数课中人工求解线性方程组的关键结果。 提示:从线性代数的内容知道,最有用的是RowReduce,由它的计算结果就能得到所有答案,不必再使用后两个函数。这个函数还能用于求矩阵的秩和一个极大线性无关部分组。当然也可以用解一般方程组的函数Solve解线性方程组,当方程组有自由未知量时,输出答案时用自由未知量表示其余未知量,也很实用。习题 十三1 已知a=4,-2,4,b=6,-3,2,试求:(1)a b;(2)(3 a - 2 b)(a + 2 b)。2 求下列行列式的值:(1); (2)。3 已知A =,B =,求AB和BA。4 已知A =,I =,求2A2 + 3A + 5I。5 求下列矩阵的秩。(1); (2)。6 解下列方程组。(1);(2) 。7 求下列矩阵的特征值和特征向量。(1); (2)。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1