有下面两个矩阵A和B,试求A+B和A-B
矩阵A和矩阵B相加减的规则是同行同列的元素进行加减操作,计算结果作为结果矩阵的同行同列的元素。
A+B计算过程如下所示:

A-B计算过程如下所示:

在上面计算A+B的过程中,A[1,1]与B[1,1]相加得7,7作为结果矩阵C[1,1]的值,A[1,2]与B[1,2]相加得5,5作为结果矩阵C[1,2]的值,A[1,3]与B[1,3]相加得1,1作为结果矩阵C[1,3]的值,A[2,1]与B[2,1]相加得11,11作为结果矩阵C[2,1]的值,……,依次类推,求出结果矩阵C。
同理,可以求出A-B的结果矩阵C。
两个矩阵相减,也可以使用加法来解决。我们知道减去一个数,等于加上这个数的相反数。例如:
-1-(-7) = -1 + ((-1)(-7))= 6
求一个数的相反数,可以用-1去乘以这个数,因为互为相反数的两个数的商为-1(0除外)。
两个矩阵相减,也可以这么计算:
A-B = A + (-1)* B
在线性代数中,常数也称为标量,标量是一个单独的数,只有数值没有方向。后面的课程我们会讲到向量,向量是一组数,既有大小也有方向。
标量与矩阵相乘,结果矩阵与原矩阵的行列数相同,其元素的值是原矩阵中每个对应元素与标量相乘的数值。
(-1)* B的计算过程如下所示:

在上面计算-1 * B的过程中,-1与B[1,1]相乘得-8,-8作为结果矩阵D[1,1]的值,-1与B[1,2]相乘得-2,-2作为结果矩阵D[1,2]的值,-1与B[1,3]相乘得1,1作为结果矩阵D[1,3]的值,-1与B[2,1]相乘得-6,-6作为结果矩阵D[2,1]的值,……,依次类推,求出结果矩阵D。
然后,计算A+D,A+D的结果就是A-B的结果。
注意:两个矩阵的加减规则只能用于两个行列数相同的矩阵,当两个矩阵的行列数不同时,不能进行加减操作。
下面我们使用Python语言来实现A+B和A-B的计算过程。
#定义矩阵A和B
A = [[-1,3,2],[5,7,-2],[-3,0,1]]
B = [[8,2,-1],[6,4,0],[-2,3,5]]
#定义矩阵C,存储A+B的结果
C = [[0,0,0],[0,0,0],[0,0,0]]
#定义矩阵D,存储A-B的结果
D = [[0,0,0],[0,0,0],[0,0,0]]
# 遍历A矩阵的行
for i in range(len(A)):
# 遍历A矩阵的列
for j in range(len(A[0])):
C[i][j] = A[i][j] + B[i][j]
D[i][j] = A[i][j] - B[i][j]
#输出C矩阵
for r in C:
print(r)
#输出D矩阵
for r in D:
print(r)
在Python语言中,矩阵可以使用两层嵌套列表来存储。第一层列表元素也是一个列表,第二层列表存储矩阵的元素。使用双重for循环可以遍历矩阵的所有元素。
下面我们使用NumPy库来实现A+B和A-B的计算过程。
import numpy as np
#定义矩阵A和B
A = np.array([[-1,3,2],[5,7,-2],[-3,0,1]])
B = np.array([[8,2,-1],[6,4,0],[-2,3,5]])
#计算A+B
print(A+B)
#计算A-B
print(A-B)
NumPy对矩阵的初始化也是用了两层嵌套列表,计算过程就简单多了,矩阵的加减运算类似两个数的加减运算。