1. 引言
线性代数是一门实用性很强的基础课程,航空、建筑、计算机、经济、金融等等相关学科都需要大量的线性代数知识。但是,在目前国内教材里,关于线性代数的应用内容涉及很少,甚至没有涉及。
随着矩阵阶数的增加,线性代数中各种运算的运算量将会剧增,所以利用计算机软件实现线性代数运算是当今线性代数教学改革的必要内容。国内大多教材缺少了这方面内容,虽然个别新教材加入了MATLAB软件内容,但其与线性代数知识分离,并没有很好地把线性代数理论与MATLAB软件深度融合。
本文分别介绍了三个精彩的线性代数应用案例,并用MATLAB软件进行计算和绘图,并对结果进行了分析讨论。
2. 刚体的平面运动
用矩阵X来描述平面坐标系中的一个闭合图形(即“刚体”),X的列向量表示图形n个顶点的坐标。为了实现刚体的平移及旋转运算,给矩阵X添加元素值都为1的一行,使矩阵X的形状为3 × n。
若有矩阵:
,
,且:
,
可以证明,矩阵
是刚体X沿x轴正方向平移
,沿y轴正方向平移
后的结果;矩阵
是刚体X以坐标原点为中心逆时针旋转t弧度的结果 [1] 。
例1. 表1给出大写字母A的11个顶点坐标值,其中最后一列与第一列相同,表示一个完整的闭合
图形。对图形A先逆时针旋转
,然后向上移动30,再向右移动20,并绘制移动前后的图形。

Table 1. Vertex coordinates of letter A
表1. 字母A的顶点坐标
解:构造刚体矩阵
,
旋转矩阵
及平移矩阵
。
在MATLAB的M文件编辑器中编写程序l1.m
% 刚体的平面运动
close all
X=[0,4,6,10,8,5,3.5,6.1,6.5,3.2,2,0;0,14,14,0,0,11,6,6,4.5,4.5,0,0;ones(1,12)];
% 构造原刚体矩阵
M=[1,0,20;0,1,30;0,0,1]; %构造平移转矩阵
R=[cos(3*pi/4),-sin(3*pi/4),0;sin(3*pi/4),cos(3*pi/4),0;0,0,1];
%构造旋转矩阵
Y3=M*R*X; %通过线性变换计算移动后的刚体矩阵
plot(X(1,:),X(2,:)); % 绘制原来刚体
hold on
axis equal
fill(Y3(1,:),Y3(2,:),'black'); % 绘制旋转及平移后刚体
grid on
hold off
在MATLAB命令窗口中输入:l1
绘制图形如图1所示。

Figure 1. Letter A before and after moving
图1. 字母A移动前后图形
3. 情报检索
现代情报检索技术是在矩阵理论的基础上发展起来的。情报中心的数据库中存放着大量文件,我们希望从中搜索到与自己特定关键词相匹配的文件。假设数据库中包含了n个文件,而搜索所用的关键词有m个,把关键词排序,我们就可以把数据库表示为m × n矩阵
,称矩阵
为搜索矩阵。若第i个关键词出现在第j个文件中,则矩阵
的第i行第j列元素为1,否则为0。用于搜索的关键词清单可用m维列向量
表示,称为关键词搜索向量。如果关键词清单中第i个关键词在搜索列中出现,则
的第i个元素就为1,否则就为0。当确定了搜索矩阵
和搜索向量
后,进行线性变换运算:
,其中向量y即为检索结果 [1] 。
例2. 若数据库包含以下四个书名:线性代数,线性代数及其应用,线性代数与解析几何,矩阵代数及其应用。而有五个搜索关键词:几何,代数,线性,矩阵,应用。请写出搜索矩阵
。如果某读者输入的关键词为“代数,矩阵”,请写出关键词搜索向量
,并计算搜索结果向量
,最后说明搜索结果向量的含义。
解:当第i个关键词出现在第j本书名上时,矩阵
的元素
就等于1,否则就等于0。表2给出了搜索矩阵构造表。

Table 2. Search matrix table of Information retrieval
表2. 情报检索搜索矩阵表
根据表2得搜索矩阵为
,关键词搜索向量为
,用MATLAB计算搜索结果向量
。在MATLAB命令窗口输入:
A=[0,0,1,0;1,1,1,1;1,1,1,0;0,0,0,1;0,1,0,1]
x=[0;1;0;1;0]
y=A'*x
计算结果为:
y =
1
1
1
2
的各个分量表示各书与关键词搜索向量
的匹配程度,即
的第k个分量表示第k本书所含关键词的个数,
的第四个分量是2,说明第四本书包含了两个关键词,故第四本数匹配程度最高。
4. 细菌转换
人口迁移问题、基因突变问题、细菌转换问题等都属于线性代数的同一类应用实例,此类问题的解决方法是先构造转换矩阵,然后根据相似对角化来求矩阵的高次幂,最后利用MATLAB软件计算和分析结果 [1] 。
例3. 李博士培养了一罐细菌,在这个罐子里存放着A、B、C三类不同种类的细菌,最开始A、B、C三种细菌分别有108、2 × 108、3 × 108个。它们每天都要发生类型转化,转化情况如下:A类细菌一天后有5%的变为B类细菌、15%的变为C细菌;B类细菌一天后有30%的变为A类细菌、10%的变为C类细菌;C类细菌一天后有30%的变为A类细菌、20%的变为B类细菌。请问一周后李博士的A、B、C类细菌各有多少个?随着时间的增加,细菌数量会不会保持一个稳定状态?
解:表3给出了第n天与第n + 1天三种细菌相互变换情况。

Table 3. Table of conversion of three bacteria
表3. 三种细菌相互变换情况表
用向量
来表示第n天三种细菌的个数,即
;用向量
来表示第n+1天三种细菌的个数,即
,那么根据表3有矩阵关系:
,设
,则有:
,其中
。在MATLAB命令窗口输入:
p=[0.8,0.3,0.3;0.05,0.6,0.2;0.15,0.1,0.5]
x0=10^8*[1;2;3]
x7=p^7*x0
计算结果为
x7 =
357968750
112555355
129475895
的三个元素分别为一周后李博士A、B、C三种细菌数量。
为了进一步分析细菌数量与天数n的函数关系,可以利用矩阵相似对角化理论来计算
。因为矩阵P有互不相同的三个特征值:1,0.5和0.4,则一定存在可逆矩阵Q,使得:
,其中
为对角阵,对角线元素即为1,0.5,0.4。则有
,其中Q为P的线性无关特征列向量所构成的矩阵。于是有:
。在MATLAB的M文件编辑器中编写程序l2.m:
% 分析n天后三种细菌数量
P=[0.8,0.3,0.3;0.05,0.6,0.2;0.15,0.1,0.5];% 构造细菌转换矩阵
x0=10^8*[1;2;3]; % 构造细菌初始值向量
[Q,lamda]=eig(P); % 计算P的特征值和特征向量
syms n % 定义符号变量n
xn=Q*lamda^n*inv(Q)*x0 % 计算n天后细菌值向量
在MATLAB命令窗口输入:l2
计算结果为:
xn =
360000000 − 260000000*(1/2)^n
390000000*(1/2)^n − 300000000*(2/5)^n + 110000000
300000000*(2/5)^n − 130000000*(1/2)^n + 130000000
从计算结果可以看出:当n越大,(1/2)n和(2/5)n就越趋近于零,通过试算得,当
时,李博士的细菌分布就保持恒定不变了,结果为:
。
5. 结论
线性代数的应用是线性代数教学中的一个重要环节,西安电子科技大学从2005年起对线性代数教学进行了持续性的改革探索,改革的重点就是把线性代数应用融入线性代数的理论教学中,并利用MATLAB软件来完成矩阵模型的数值计算和绘图分析。
“实用大众线性代数(MATLAB版)”慕课就是我们长期改革探索所取得成果的一部分 [2] 。该课程于2016年10月10日在中国大学MOOC平台上线,至今已经连续播放5期,学员总数近六万人,获得了广大学员的高度好评,并于2017年12月获国家首批精品在线开放课程。该课程特点就是把线性代数理论知识、线性代数的应用实例及MATLAB软件深度融合,把学生带进了一个“学以致用”的创新境界。