![薛定宇教授大讲堂(卷Ⅲ):MATLAB线性代数运算](https://wfqqreader-1252317822.image.myqcloud.com/cover/150/29977150/b_29977150.jpg)
第1章 线性代数简介
1.1 矩阵与线性方程组
线性代数的研究起源于对线性方程组的求解。线性方程组是科学研究与工程实践中应用最广泛的数学模型,在实际应用中还可能建立更复杂的线性代数方程。为了研究方便,引入矩阵描述代数方程组。本节将给出几个简单的例子,演示数据表格的矩阵表示方法,并说明线性方程组的重要性。
1.1.1 表格的矩阵表示
在人们的日常生活与科学研究中,经常会遇到各种各样的数据表格。如何有效地表示这些表格呢?表格在数学中和计算机上可能有各种各样的表示方法,矩阵是数据表格最有效的表示方法之一。
定义1-1 矩阵的数学形式为
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P12_14114.jpg?sign=1739318253-aO2dg6fBLItt5ZiCHKexZdAA9ToYO6Ek-0-e3c0ef803a20caa5cb8627ff17372f44)
矩阵是线性代数领域重要的数学单元,下面通过例子演示用矩阵表示表格的具体方法。
例1-1 彩色图像的颜色在计算机上有多种表示方法。其中,三原色法是一种重要的颜色表示方法,一种颜色可以理解成由红(R)、绿(G)、蓝(B)三个颜色分量的不同组合构成。常用八种颜色的RGB三原色分量如表1-1所示,试用矩阵表示该表格。
表1-1 常用颜色的RGB分量
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-T12_14113.jpg?sign=1739318253-LSSo2x9Se5ZzfzXiQuP15RwU7pOAulPX-0-1e1705a5d2752140982453ded80c1c9c)
解 如果矩阵的行用于表示三原色,各列分别表示黑色、蓝色、……、白色,则可以用一个3×8的矩阵表示整个表格,这个矩阵的元素排列与表格的数据排列完全一致,即
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P13_14117.jpg?sign=1739318253-lC38PucTyMSCjGAisbuk8ag8NdUssDBI-0-16a894d3ed92c48b2debebfd4ed2af0a)
有了矩阵的数学表达式,用下面的语句将其直接输入MATLAB的工作空间,就可以通过相应的命令对其进行运算了。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P13_14124.jpg?sign=1739318253-3TPHuIIamE1RbmoE1tmGCwreXkkjBEz3-0-e32cce2195eb9fab90b5d4d2b314dd1d)
从给出的表格可见,品红色是矩阵的第六列,所以可以由下面的命令提取出品红色的红绿蓝颜色分量
>> c=A (:,6)
例1-2 八大行星的一些参数由表1-2中给出。其中,相对参数都是由地球参数换算得到的,半长轴的单位为AU(Astronomical Unit,天文单位,为149597870700m≈1.5×1011m,地球到太阳的平均距离),自转周期的单位为天。试用矩阵表示这个表格。
表1-2 八大行星的一些参数
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-T13_14121.jpg?sign=1739318253-7XXOW1wNS2DSzSLFczjCphAf0KGCD6dL-0-f6de7675ac2721157e11a9f68ecafeba)
解 观察表1-2可以发现,表格中大部分元素都是数值。除了数值之外还有表头,表格第一列为“名称”。此外,最后一列数据的内容为“无”或“有”。对最后一列进行变换,令“无”为0、“有”为1,则最后一列也是数据。如果只关心这个表格中的数据,不妨用矩阵更简洁地表示这个表格,即
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P13_14118.jpg?sign=1739318253-ohyq2D8vJRDkkbvdtnQh5FVu2i2XKN2K-0-0e732ba18dc89ec2191fe1596aac6c03)
有了矩阵的数学形式,则可以用下面的MATLAB语句进行输入。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P14_14128.jpg?sign=1739318253-ysdqYd1Maf3sx1akYnf22ZtNuvnCmA0j-0-468d80b9add4181dce81f192063f3879)
本丛书卷I中用到了这个例子,使用MATLAB下的table数据结构表示表1-2。下面给出相应的MATLAB命令。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P14_14130.jpg?sign=1739318253-lO79W25cqNFSFaIzQoY0LGILzIs4qWmo-0-43033b68b224958f119b2c67d3a9d473)
例1-3 例1-2给出的相对数据是地球数据的倍数。已知地球的质量为5.965×1024kg,试求出其他行星的质量,例如木星的质量。
解 从矩阵的存储看,“相对质量”是矩阵的第二列,第二列的全部元素可以由A(:,2)命令提取。木星是第五行,所以可以用下面的命令计算出各个行星的实际质量,提取第五个元素则为木星的质量,为1.8957×1027kg。
>> M0=5.965e24; M=A(:,2)*M0; M(5)
1.1.2 线性方程组的建立与求解
线性代数的研究起源于线性方程组的列写与求解,本节给出几个例子演示实际问题的线性方程组建模方法。
例1-4 公元4–5世纪的中国古代著名的数学著作《孙子算经》曾给出了鸡兔同笼问题:“今有雉兔同笼,上有三十五头,下有九十四足,问雉兔各几何?”
解 古典数学著作中有各种各样的方法求解鸡兔同笼问题。如果引入代数方程的思维,则假设鸡的个数为x1,兔的个数为x2,可以列出下面的线性代数方程。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P15_14135.jpg?sign=1739318253-bYxWG8SdNt8n4SSc82T2YywmtM3TC6l0-0-8f79a22fcaa4dc826fe66a390a8aa388)
如果引入矩阵的概念,则可以将线性代数方程写成矩阵形式,即
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P15_14137.jpg?sign=1739318253-2aIBDGHDJzFyL4wiZp1UdOZfjSD462q6-0-43778f03c6a768d80b209efddb172e44)
记,则可以写出线性代数方程的标准形式:
Ax=B
(1-1-2)
线性方程在MATLAB下的求解语句为x=A\B,所以由MATLAB命令求解方程,得出x=[23,12]T。方程解的物理含义是,鸡有23个,兔有12个。
>> A=[1 1; 2 4]; B=[35; 94]; x=A\B
此外,还可以由符号运算中解方程的方法(不限于线性代数方程组)求解鸡兔同笼问题,其结果与前面得出的完全一致。
>> syms x y; [x y]=solve(x+y==35, 2*x+4*y==94)
注意:早期版本中,上面的语句可以使用字符串描述方程本身。但新版本不支持这种形式,应该采用符号表达式表示方程。
例1-5 文献给出了梁平衡问题的应用实例。假设一个梁系统的结构体如图1-1所示,每条线段表示一根梁,每一个圆圈表示一个连接点。假设所有斜线梁的倾斜角度都为45°,且连接点1的水平与垂直方向都固定,连接点8的垂直方向固定,在连接点2,5,6处增加负载。为使得整个架构平衡,试根据各个连接点的水平和垂直方向列出线性代数方程,写出其矩阵方程形式并试图得出方程的解。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P15_14148.jpg?sign=1739318253-W87ZU29UCk01B9F3QPd8laX2OxhBNTLJ-0-244715323d1f99984f20ffa94f5f1674)
图1-1 梁的平面结构
解 由于连接点1水平与垂直方向都固定了,所以无须为其列写水平方向与垂直方向的平衡方程。现在考虑连接点2,从水平方向看,该连接点受两个力的影响,一个是梁2施加的力,记作f2,另一个是梁6施加的力,记作f6。为使得水平方向平衡,显然需要满足f2=f6,或写作f2−f6=0。
再对连接点2的垂直方向进行受力分析,该连接点受梁3的力与外力10,所以相应的平衡方程为f3=10。
为列写方程方便,后面统一设置连接点左边和上面的力为正方向,否则为负方向。
现在分析连接点3处的水平平衡方程:在水平方向该点受f1、f4和f5三个力的同时作用。其中,f1与f5是倾斜方向的力,由于倾斜角为45°,所以应该乘以cos45°=。这样,记
,则水平方向的平衡方程为αf1−f4−αf5=0。再考虑垂直方向的平衡方程,不难看出αf1+f3+αf5=0。
类似地,可以写出连接点4的水平方向平衡方程为f4−f8=0,垂直方向平衡方程为f7=0。
连接点5的平衡方程为αf5+f6−αf9−f10=0,f5+f7+αf9=15。
连接点6的水平、垂直平衡方程分别为f10−f13=0和f11=20。
连接点7的水平、垂直平衡方程分别为f8+αf9−αf12=0和αf9+f11+αf12=0。
连接点8,由于垂直方向固定,只能列出水平方向的平衡方程为αf12+f13=0。
上面总共列出了13个方程,写成矩阵形式即
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P16_14154.jpg?sign=1739318253-kWFMy7LfWJKKIOwvI48v4ZUWrrcachEQ-0-2d41b230ed112658f1c06fe88961e0ce)
采用手工方式求解这样的方程是很困难的,所以应该设法将其送给计算机去求解。后面将介绍具体的求解方法,这里只给出一个演示。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P17_14158.jpg?sign=1739318253-IPUpNAWmL6jJw6iij3owUErD4sEBtAJs-0-44d1403018b30a574fafc89567193058)
由以上语句可以立即得出:,
,f3=10,f4=−20,
,
,f7=0,f8=−20,
,
,f11=20,
,
。
在例1-5中,未知数的个数与方程的个数是相等的,得出的方程解是唯一的,这类方程又称为洽定方程(consistent equation)。在一些特殊情况下,还应该考虑未知数个数不同的方程。
例1-6 考虑例1-5中的问题。如果不固定连接点1与连接点8,则可以再建立三个方程,试写出其线性代数方程及其矩阵形式。
解 如果不固定连接点1和连接点8,则这样的结构不能悬空放置,需要在连接点1与连接点8处引入支撑力s1和s2,如图1-2所示。
如果连接点1不再固定,则可以写出其水平方向的平衡方程为αf1+f2=s3,垂直方向的平衡方程为αf1=s1;如果不固定连接点8的垂直方向,则可以写出垂直方向的平衡方程为αf12=s2。这样,原来的矩阵方程可以改写成
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P17_14159.jpg?sign=1739318253-KpKxlg0GxPzgr8DTx0yJxZNK66PdvD7b-0-ffeb204bdd11cd01b35ba1930567ab58)
由以下语句可以直接输入系数矩阵。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P17_14161.jpg?sign=1739318253-Z5s8oL07p64Y9LwfhaBBQB3WTKc8dq2m-0-18d8a6f3c3b0d4ed3e9ccfb01605f99a)
由于得到的方程个数大于未知数的个数(A是16×13的长方形矩阵),则该方程称为超定方程(over-determined equations)。如果将未知量s1、s2与s3写入力向量f,则向量f有16个元素,相应的A矩阵则变成16×16的方阵,方程为恰定方程。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P18_14333.jpg?sign=1739318253-sCs1GqF3mQAMmrWP2zrkniFs2l7h0Zjy-0-dd06afa3e0dbf3b17365a8df1a297be5)
图1-2 修改后的梁平面结构
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P18_14334.jpg?sign=1739318253-2qTzWolVnP7fdjsINcsgFeswbyjtXtQe-0-716840fa5aa776508ec070e7c3b941a8)
有了恰定方程,则可以由以下语句直接求解方程的解析解。
![](https://epubservercos.yuewen.com/2F1B07/16499866904818206/epubprivate/OEBPS/Images/Figure-P18_14338.jpg?sign=1739318253-x4DJAktUBf1YZQbYLRMJcH8Cyqn98hQy-0-a91568bdeff90a28e58342793f5f329c)
求得结果为:
,
,f3=10,f4=−20,
,
,f7=0,f8=−20,
,
,f11=20,
,
,s1=15,
,
。
可以看出,在放开几个固定端之后,fi的值保持不变,而si的值可以由新方程解出。将方程的解代入原方程,可以看出满足是原方程的。
超定方程的解有两种可能,一是方程有无穷多解,另一种是方程无解(得出的方程是矛盾方程)。
与超定方程相对应的还有欠定(under-determined)方程,后续本书将讨论这些方程的求解方法。