矩阵的乘法,是线性代数课中重要的内容,在熟练掌握其计算方法的基础上,还要明白其意义。
1、关于计算方法,一般教材上说的很清楚了,这里我画了一幅图,好象是在一本研究地震动的书上看到,称作“福尔克图”,很容易让初学者记忆和掌握矩阵乘法运算。矩阵A乘B得C,如图把B放在A的右上方,这样即能判断A和B能否相乘,也容易写出C的各元素,因先给学生简单讲了向量内积,所以C的i行j列的元素,就是A的i行向量和B的j列向量的内积。
对于学过C语言的学生,也可介绍矩阵乘法的程序,这是巩固C语言中循环语句和数组的最好的示例了。
Matlab和Python的numpy、scipy中也提供了很方便的矩阵乘法运算方式。
import numpy as np
from numpy import matrix as M
mx1=np.matrix(((1,2,3),(4,5,6),(7,8,9)))
mx2=np.matrix("1,4,5;3,2,1;2,2,1")
print(mx1@mx2)
print(mx1*mx2)
E=M("1,2,3;4,5,6;7,8,9")
print(E@mx2)
编写并行计算,最好也从练习矩阵乘法开始。如下的连接提供了用Fortran+MPI进行并行计算的示例。
http://blog.sciencenet.cn/blog-797552-681003.html
矩阵的乘法,本质上代表线性变换,所以实际应用很广泛。
2、矩阵乘一向量,可以从多个角度来理解和看待,这正体现了数学的抽象中的简捷和直观。 简述如下:
(1)、下图有两种解释,一是把红色的向量变换为绿色的向量,二是把空间进行了变换,绿色的以单位正交基下的空间变成了蓝色的空间,向量在各自空间中的坐标没变。
(2)、下图,A的两个向量,数乘x1,x2,再相加,线性组合成另一向量。
(3)、对于线性方程组也可如下图理解,求直线交点,或求平面、超平面的交点。
3、矩阵乘矩阵,意义也很多,如可理解为两个线性变换的乘,或对一组向量(或点集)所组成的矩阵进行变换,如下是对几个点组成的图形,乘不同的矩阵实现变换。
(1)乘对角阵[2,0; 0,3],进行伸缩。
(2)乘2阶方阵[1.5,0.5; 0.6, 2],伸缩和剪切。
(3)下图乘[cosθ,-sinθ;sinθ,cosθ],θ=3.14159/6,实现了旋转。
(4)下图右上角的平移,是把点坐标,扩展为[x,y,1]’,用3阶矩阵[1,0,3; 0,1,2; 0,0,1]乘实现的。
(5)信号处理,如下图的信号,可以构造一个三对角方阵,对角线元素为1/3,对信号向量实现平滑,即蓝色的信号变为红色的。
(6)在实际应用中,还可以构造各种矩阵对所处理的对象进行变换,如有个例题如下:
书上也没说有啥意义,其实由向量X 构造的矩阵H是个反射阵,很有用的。
矩阵乘法是最基础的运算,掌握好才能更好地理解涉及矩阵运算、线性变换、矩阵分解等。