Three Application Cases of MATLAB Integrated with Linear Algebra
This article discusses the importance of applying MATLAB software to the teaching of linear algebra and analyzes the challenges that may be encountered in the teaching process. Through three specific cases of linear algebra applications, it demonstrates the effectiveness of MATLAB software in teaching, providing a reference for how to better utilize MATLAB in the teaching of linear algebra.
Linear Algebra
线性代数是一门应用性很强、理论高度抽象的数学课程。在新工科的大背景下,线性代数越来越多地应用到工程、经济、信息等各个领域上,这种“需求牵引”使得它的重要性大大提高;另一方面,几十年来计算机软硬件的飞速发展,极大的提高了以线性代数为理论基础的科学计算能力,作为“技术推动”,用软件工具加强线性代数教学就显得十分重要
MATLAB是一款由MathWorks公司开发的多功能数值计算软件,具备强大的图形用户界面和丰富的内置函数库,能够进行高效的数值分析和可视化处理,广泛应用于工程计算、数据分析、算法开发、模型设计等领域,是科研和工程教育中不可或缺的工具。
近三十年来,在线性代数教学中引入MATLAB一直是该课程教学模式改革的一个重点课题
2009年,西安电子科技大学负责的教育部“使用信息技术工具改造课程项目”——用MATLAB和建模实践改造工科线性代数子项目带动了全国18所高等院校进行教学改革,并取得了很好的教学效果和社会影响
下面分别举例说明MATLAB在线性代数中的应用案例。
借助计算机实现动漫技术是一项新兴的极具竞争力的产业。线性代数理论在该技术中起到非常重要的作用。比如把一个空间物体用多个顶点图形合成,把物体的动作分别用各个顶点的位置变化来表述,再把这些顶点在两个时间点之间的位移进行插补,使得动作可以用较小的步长连续实现,最后把立体形象投影到屏幕上。在这个过程中,很多环节都和线性代数知识相关。实际问题很复杂,以下给出一个简单平面运动的插补案例
(2) 构造微变化矩阵,通过动画描述(1)中大写字母A的运动过程。
解:(1) 用矩阵X来描述平面坐标系中的一个闭合图形(即刚体),X的第i个列向量表示图形第i个顶点的坐标。为了实现刚体的平移及旋转运算,给矩阵X添加元素值都为1的一行,使矩阵X的形状为3 × n (图形共有n-1个顶点)。
若有矩阵: , ,且: ,
可以证明,矩阵Y1是刚体X沿x轴正方向平移c1,沿y轴正方向平移c2后的结果;矩阵Y2是刚体X以坐标原点为中心逆时针旋转t弧度的结果
x | 0 | 4 | 6 | 10 | 8 | 5 | 3.5 | 6.1 | 6.5 | 3.2 | 2 | 0 |
y | 0 | 14 | 14 | 0 | 0 | 11 | 6 | 6 | 4.5 | 4.5 | 0 | 0 |
构造刚体矩阵 旋转矩阵 及平移矩阵 。
在MATLAB的M文件编辑器中编写程序11-1.m
% 刚体的平面运动close allX=[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];%构造旋转矩阵Y=M*R*X; %通过线性变换计算移动后的刚体矩阵plot(X(1,:),X(2,:)); %绘制原来刚体hold onaxis equalfill(Y3(1,:),Y3(2,:),'black'); %绘制旋转及平移后刚体grid on,hold off |
在MATLAB命令窗口中输入:11-1。
绘制图形如
(2) 空心A图形(X矩阵)经过N次微运动变化到实心A图形(Y矩阵),可以理解为用微变化矩阵K对X进行了N次左乘,即: ,则有 ,则微运动变化矩阵可以用MATLAB命令求得: ,即K是对矩阵(M*R)开N次方的结果。
在MATLAB的M文件编辑器中编写程序l1-2.m
clear,close allX=[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]; %构造旋转矩阵Y=M*R*X; %通过线性变换计算移动后的刚体矩阵plot(X(1,:),X(2,:)) %画出原始图形axis([-10,30,0,36]) %设置显示范围hold on,grid onaxis equalN=8; %设置分解次数K=(M*R)^(1/N); %构造微变换矩阵Qs=X;for i=1:N-1Qs=K*Qs; %求出一次微转动后图形矩阵F=fill(Qs(1,:),Qs(2,:),'r');pause(1) %画出微转动后图形%set(F,{'LineStyle'},{'none'})%F=fill(Qs(1,:),Qs(2,:),'w'); %消隐图形%set(F,{'LineStyle'},{'none'})endfill(Y(1,:),Y(2,:),'k') %画出最后图形hold off |
在MATLAB命令窗口中输入:l1-2。
MATLAB绘制出字母A经过8次微运动变化过程图,如
在目标与背景的红外辐射特性研究中,常常要分析太阳的辐射因素,而太阳因子的计算是一个非常重要的工作(太阳因子是面元的外法向与太阳光线夹角的余弦值)。以下给出一个利用线性代数知识和MATLAB软件计算建筑物表面太阳因子的应用案例。
例2 假设有一个半球形状的建筑物,计算其外表面各面元的太阳因子。
解:首先建立建筑物的几何模型,并进行网格划分,如
建立固定在地面的坐标系,x轴为北方向,y轴为东方向,z为竖直向上方向。 值分别取0˚、10˚、20˚、……70˚、80˚九个不同的值; 值分别取0˚、10˚、20˚、……、340˚、350˚三十六个不同的值。把半球表面分为9 × 36 = 324个小面元,容易得到这324个面小元的外法向向量:
若已知某时刻太阳的高度角
和方位角
,如
最后,把每个面元的外法向向量和此时的太阳方向向量进行内积运算,从而求出该时刻每个面元的太阳因子。
在MATLAB的M文件编辑器中编写程序l2.m。
% 将9×36个面元的外法线方向向量放入三维数组v中。for i=1:9for j=1:36v(i,j,1)=cos((i-1)*10*pi/180)*cos((j-1)*10*pi/180);v(i,j,2)=cos((i-1)*10*pi/180)*sin((j-1)*10*pi/180);v(i,j,3)=sin((i-1)*10*pi/180);endends_theta=25; %给太阳的高度角赋值。s_alpha=75; %给太阳的方位角赋值。s_v=[cos(s_theta*pi/180)*cos(s_alpha*pi/180),cos(s_theta*pi/180)*sin(s_alpha*pi/180),sin(s_theta*pi/180)];%计算此时太阳的方向向量s_v。%根据两个向量的内积来计算9×36个面元的太阳因子,用2维数组d_g来存放。for i=1:9for j=1:36d_g(i,j)=[v(i,j,1),v(i,j,2),v(i,j,3)]*s_v';endend%让太阳因子为负值的点变为0(即太阳照射不到的位置)for i=1:9for j=1:36if d_g(i,j)<0 d_g(i,j)=0; endendend |
在MATLAB命令窗口中输入:l2。在MATLAB命令窗口中输入:12。即可以计算出半球形建筑物表面所有面元该时刻的太阳因子,具体数据放入了数组d_g中。太阳因子数据的获得,为下一步建筑物表面红外辐射特性的研究奠定了基础。
线性代数的矩阵运算常常可以解决生活中的很多问题,下面这个案例是一个关于旅行路线统计的问题。
例题3:李博士从西安要到a、b、c、d、e五个国家去旅行,规定在每一个国家只能停留在一个城市。
解:构造两个相邻国家之间旅行路线矩阵。
从西安到a国的情况可以用下表或矩阵A描述:
a1 | a2 | a3 | |
西安 | 2 | 3 | 1 |
从a国到b国的情况可以用下表或用矩阵B描述:
b1 | b2 | |
a1 | 3 | 1 |
a2 | 2 | 2 |
a3 | 0 | 3 |
从b国到c国的情况可以用下表或用矩阵C描述:
c1 | c2 | c3 | c4 | |
b1 | 3 | 3 | 1 | 0 |
b2 | 0 | 0 | 2 | 2 |
从c国到d国的情况可以用下表或矩阵D描述:
d1 | d2 | d3 | |
c1 | 2 | 1 | 0 |
c2 | 1 | 2 | 3 |
c3 | 0 | 0 | 3 |
c4 | 0 | 0 | 2 |
从d国到e国的情况可以用下表或用矩阵E描述:
e1 | e2 | e3 | e4 | e5 | |
d1 | 2 | 4 | 5 | 0 | 0 |
d2 | 0 | 0 | 3 | 0 | 0 |
d3 | 0 | 0 | 2 | 2 | 2 |
根据矩阵乘法规则,知 ,12和11分别代表从西安到b国的b1和b2两个不同城市的路线总数,于是有A*B*C*D*E的乘积代表从西安到e国e1、e2、e3、e4和e5五个不同城市的路线总数。
M文件编辑器中编写程序11-3.m。
A=[2,3,1];B=[3,1;2,2;0,3];C=[3,3,1,0;0,0,2,2];D=[2,1,0;1,2,3;0,0,3;0,0,2];E=[2,4,5,0,0;0,0,3,0,0;0,0,2,2,2];X=A*B*C*D*Esum(X) |
在MATLAB命令窗口中输入:l1-3。
最后输出为:
X =
216 432 1372 508 508
ans =
3036
即从西安到E国家5个不同城市的路线总数由X给出,5个城市的路线总和为3036条路线。
上述实例涵盖了线性代数的核心概念,包括矩阵乘法、线性变换和向量空间等,它们是多个学科领域的基础,如计算机科学、红外物理学和运筹学等。这些实例不仅展示了线性代数在解决实际问题中的应用能力,而且更重要的是,它们启发了学生利用矩阵进行建模的思维方式,让学生意识到在自己的专业领域内,线性代数是一个强大的工具,配合MATLAB的计算能力,不仅能简化运算,还能够解决各种复杂问题。
西安电子科技大学中央教改专项“线性代数课程智能化学习系统建设”(项目号:20901230005)。
*通讯作者。