矩阵分块
对矩阵按列分块,再进行线性组合:
Ax=(α1,α2,…,αn)⋅⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥=x1α1+x2α2+⋯+xnαn
所以当 x=(1,0,…,0)T 以及其他某一位元素为1,其他元素为0的向量,左乘以某一矩阵 A 时,矩阵向量乘法的结果在于对矩阵某一列的选择。
矩阵按行分块:
或者按行分块的形式如下:
xTA=[x1,x2,…,xm]⎡⎣⎢⎢⎢⎢⎢βT1βT2⋮βTm⎤⎦⎥⎥⎥⎥⎥=x1βT1+x2βT2+⋯+xmβTm
注:矩阵右乘一个列向量,是对矩阵的列的线性组合,得一列;矩阵左乘一个行向量是对矩阵行的线性组合,得一行。
理解高斯消元
有了上文矩阵向量的乘法运算的从线性组合的观点的理解,我们将很容易进行下下式的计算:
[1,2,3]⋅⎡⎣⎢1,2,34,5,67,8,9⎤⎦⎥=1⋅[1,2,3]+2⋅[4,5,6]+3⋅[7,8,9]
import numpy
if __name__ == '__main__':
A = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
x = np.array([1, 2, 3])
m, n = A.shape
b = np.zeros(n).astype(int)
for i in range(m):
b += x[i]*A[i]
print(b)
# [30 36 42]
print(x.dot)
# [30 36 42]
矩阵右乘一个列向量同理可得,不再赘述。