薛定宇教授大讲堂(卷Ⅲ):MATLAB线性代数运算
上QQ阅读APP看书,第一时间看更新

第1章 线性代数简介

1.1 矩阵与线性方程组

线性代数的研究起源于对线性方程组的求解。线性方程组是科学研究与工程实践中应用最广泛的数学模型,在实际应用中还可能建立更复杂的线性代数方程。为了研究方便,引入矩阵描述代数方程组。本节将给出几个简单的例子,演示数据表格的矩阵表示方法,并说明线性方程组的重要性。

1.1.1 表格的矩阵表示

在人们的日常生活与科学研究中,经常会遇到各种各样的数据表格。如何有效地表示这些表格呢?表格在数学中和计算机上可能有各种各样的表示方法,矩阵是数据表格最有效的表示方法之一。

定义1-1 矩阵的数学形式为

矩阵是线性代数领域重要的数学单元,下面通过例子演示用矩阵表示表格的具体方法。

例1-1 彩色图像的颜色在计算机上有多种表示方法。其中,三原色法是一种重要的颜色表示方法,一种颜色可以理解成由红(R)、绿(G)、蓝(B)三个颜色分量的不同组合构成。常用八种颜色的RGB三原色分量如表1-1所示,试用矩阵表示该表格。

表1-1 常用颜色的RGB分量

如果矩阵的行用于表示三原色,各列分别表示黑色、蓝色、……、白色,则可以用一个3×8的矩阵表示整个表格,这个矩阵的元素排列与表格的数据排列完全一致,即

有了矩阵的数学表达式,用下面的语句将其直接输入MATLAB的工作空间,就可以通过相应的命令对其进行运算了。

从给出的表格可见,品红色是矩阵的第六列,所以可以由下面的命令提取出品红色的红绿蓝颜色分量

      >> c=A (:,6)

例1-2 八大行星的一些参数由表1-2中给出。其中,相对参数都是由地球参数换算得到的,半长轴的单位为AU(Astronomical Unit,天文单位,为149597870700m≈1.5×1011m,地球到太阳的平均距离),自转周期的单位为天。试用矩阵表示这个表格。

表1-2 八大行星的一些参数

观察表1-2可以发现,表格中大部分元素都是数值。除了数值之外还有表头,表格第一列为“名称”。此外,最后一列数据的内容为“无”或“有”。对最后一列进行变换,令“无”为0、“有”为1,则最后一列也是数据。如果只关心这个表格中的数据,不妨用矩阵更简洁地表示这个表格,即

有了矩阵的数学形式,则可以用下面的MATLAB语句进行输入。

本丛书卷I中用到了这个例子,使用MATLAB下的table数据结构表示表1-2。下面给出相应的MATLAB命令。

例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,可以列出下面的线性代数方程。

如果引入矩阵的概念,则可以将线性代数方程写成矩阵形式,即

,则可以写出线性代数方程的标准形式:

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 文献莫勒.MATLAB之父:编程实践(修订版)[M].薛定宇,译.北京:北京航空航天大学出版社,2018.给出了梁平衡问题的应用实例。假设一个梁系统的结构体如图1-1所示,每条线段表示一根梁,每一个圆圈表示一个连接点。假设所有斜线梁的倾斜角度都为45°,且连接点1的水平与垂直方向都固定,连接点8的垂直方向固定,在连接点2,5,6处增加负载。为使得整个架构平衡,试根据各个连接点的水平和垂直方向列出线性代数方程,写出其矩阵方程形式并试图得出方程的解。

图1-1 梁的平面结构

由于连接点1水平与垂直方向都固定了,所以无须为其列写水平方向与垂直方向的平衡方程。现在考虑连接点2,从水平方向看,该连接点受两个力的影响,一个是梁2施加的力,记作f2,另一个是梁6施加的力,记作f6。为使得水平方向平衡,显然需要满足f2=f6,或写作f2f6=0。

再对连接点2的垂直方向进行受力分析,该连接点受梁3的力与外力10,所以相应的平衡方程为f3=10。

为列写方程方便,后面统一设置连接点左边和上面的力为正方向,否则为负方向。

现在分析连接点3处的水平平衡方程:在水平方向该点受f1f4f5三个力的同时作用。其中,f1f5是倾斜方向的力,由于倾斜角为45°,所以应该乘以cos45°=。这样,记,则水平方向的平衡方程为αf1f4αf5=0。再考虑垂直方向的平衡方程,不难看出αf1+f3+αf5=0。

类似地,可以写出连接点4的水平方向平衡方程为f4f8=0,垂直方向平衡方程为f7=0。

连接点5的平衡方程为αf5+f6αf9f10=0,f5+f7+αf9=15。

连接点6的水平、垂直平衡方程分别为f10f13=0和f11=20。

连接点7的水平、垂直平衡方程分别为f8+αf9αf12=0和αf9+f11+αf12=0。

连接点8,由于垂直方向固定,只能列出水平方向的平衡方程为αf12+f13=0。

上面总共列出了13个方程,写成矩阵形式即

采用手工方式求解这样的方程是很困难的,所以应该设法将其送给计算机去求解。后面将介绍具体的求解方法,这里只给出一个演示。

由以上语句可以立即得出:f3=10,f4=−20,f7=0,f8=−20,f11=20,

在例1-5中,未知数的个数与方程的个数是相等的,得出的方程解是唯一的,这类方程又称为洽定方程(consistent equation)。在一些特殊情况下,还应该考虑未知数个数不同的方程。

例1-6 考虑例1-5中的问题。如果不固定连接点1与连接点8,则可以再建立三个方程,试写出其线性代数方程及其矩阵形式。

如果不固定连接点1和连接点8,则这样的结构不能悬空放置,需要在连接点1与连接点8处引入支撑力s1s2,如图1-2所示。

如果连接点1不再固定,则可以写出其水平方向的平衡方程为αf1+f2=s3,垂直方向的平衡方程为αf1=s1;如果不固定连接点8的垂直方向,则可以写出垂直方向的平衡方程为αf12=s2。这样,原来的矩阵方程可以改写成

由以下语句可以直接输入系数矩阵。

由于得到的方程个数大于未知数的个数(A是16×13的长方形矩阵),则该方程称为超定方程(over-determined equations)。如果将未知量s1s2s3写入力向量f,则向量f有16个元素,相应的A矩阵则变成16×16的方阵,方程为恰定方程。

图1-2 修改后的梁平面结构

有了恰定方程,则可以由以下语句直接求解方程的解析解。

求得结果为:

f3=10,f4=−20,f7=0,f8=−20,f11=20,s1=15,

可以看出,在放开几个固定端之后,fi的值保持不变,而si的值可以由新方程解出。将方程的解代入原方程,可以看出满足是原方程的。

超定方程的解有两种可能,一是方程有无穷多解,另一种是方程无解(得出的方程是矛盾方程)。

与超定方程相对应的还有欠定(under-determined)方程,后续本书将讨论这些方程的求解方法。