您的位置:首页 > 其它

矩阵运算的重新理解

2016-02-01 22:27 387 查看

矩阵分块

对矩阵按列分块,再进行线性组合

Ax=(α1,α2,…,αn)⋅⎡⎣⎢⎢⎢⎢x1x2⋮xn⎤⎦⎥⎥⎥⎥=x1α1+x2α2+⋯+xnαn

所以当 x=(1,0,…,0)T 以及其他某一位元素为1,其他元素为0的向量,左乘以某一矩阵 A 时,矩阵向量乘法的结果在于对矩阵某一列的选择

矩阵按行分块:

Ax=⎡⎣⎢⎢⎢⎢⎢βT1βT2⋮βTm⎤⎦⎥⎥⎥⎥⎥⋅x=⎡⎣⎢⎢⎢⎢⎢βT1xβT2x⋮βTmx⎤⎦⎥⎥⎥⎥⎥

或者按行分块的形式如下:

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]


矩阵右乘一个列向量同理可得,不再赘述。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: