线性代数第四章:矩阵不仅仅是n×m个数

什么是矩阵

矩阵是对向量的扩展

(12345678910111213141516)\begin{pmatrix} 1 & 2 & 3 & 4 \\ 5 & 6 & 7 & 8 \\ 9 & 10 & 11 & 12 \\ 13 & 14 & 15 & 16 \end{pmatrix}

在前面我们了解到向量是对数的扩展,一个向量表示一组数。

上面展示一个 4×44\times 4 矩阵(4 行 4 列)。

  • 矩阵是对向量的扩展,一个矩阵表示一组向量;
  • 横着看就是行向量,竖着看就是列向量;
  • 行数等于列数,是方阵;
  • 3×43 \times 4 代表 3 行 4 列

A=(a11a12a13a14a21a22a23a24a31a32a33a34)A= \begin{pmatrix} a_{11} & a_{12} & a_{13} & a_{14} \\ a_{21} & a_{22} & a_{23} & a_{24} \\ a_{31} & a_{32} & a_{33} & a_{34} \end{pmatrix}

上述公式就是一个矩阵,其中元素们的下标第一位数是行数,第二位数是列数

矩阵就是表格

生活中常见的矩阵就是表格,比如:

行向量代表每个同学的各门科目的分数,列向量代表每门科目的分数。

矩阵的其他应用

当然,除了上述对矩阵的解释,矩阵更多的被应用在表示一组变换一个空间

实现矩阵

新建 Matrix.py

from .Vector import Vector

class Matrix:

def __init__(self, list2d):
self._values = [row[:] for row in list2d]

def row_vector(self, index):
"""返回矩阵的第index个行向量"""
return Vector(self._values[index])

def col_vector(self, index):
"""返回矩阵的第index个列向量"""
return Vector([row[index] for row in self._values])

def __getitem__(self, pos):
"""返回矩阵pos位置的元素"""
r, c = pos
return self._values[r][c]

def size(self):
"""返回矩阵的元素个数"""
r, c = self.shape()
return r * c

def row_num(self):
"""返回矩阵的行数"""
return self.shape()[0]

__len__ = row_num

def col_num(self):
"""返回矩阵的列数"""
return self.shape()[1]

def shape(self):
"""返回矩阵的形状: (行数, 列数)"""
return len(self._values), len(self._values[0])

def __repr__(self):
return "Matrix({})".format(self._values)

__str__ = __repr__

矩阵的基本运算

矩阵加法

假设:

A=(a11a12a1ca21a22a2car1ar2arc)B=(b11b12b1cb21b22b2cbr1br2brc)A= \begin{pmatrix} a_{11} & a_{12} & \ldots & a_{1 c} \\ a_{21} & a_{22} & \ldots & a_{2 c} \\ \ldots & \ldots & \ldots & \ldots \\ a_{r 1} & a_{r 2} & \ldots & a_{r c} \end{pmatrix} \quad B=\begin{pmatrix} b_{11} & b_{12} & \ldots & b_{1 c} \\ b_{21} & b_{22} & \ldots & b_{2 c} \\ \ldots & \ldots & \ldots & \ldots \\ b_{r 1} & b_{r 2} & \ldots & b_{r c} \end{pmatrix}

则:

A+B=(a11+b11a12+b12a1c+b1ca21+b21a22+b22a2c+b2car1+br1ar2+br2arc+brc)A+B=\begin{pmatrix} a_{11}+b_{11} & a_{12}+b_{12} & \ldots & a_{1 c}+b_{1 c} \\ a_{21}+b_{21} & a_{22}+b_{22} & \ldots & a_{2 c}+b_{2 c} \\ \ldots & \ldots & \ldots & \ldots \\ a_{r 1}+b_{r 1} & a_{r 2}+b_{r 2} & \ldots & a_{r c}+b_{r c} \end{pmatrix}

矩阵乘法

假设:

A=(a11a12a1ca21a22a2car1ar2arc)A= \begin{pmatrix} a_{11} & a_{12} & \ldots & a_{1 c} \\ a_{21} & a_{22} & \ldots & a_{2 c} \\ \ldots & \ldots & \ldots & \ldots \\ a_{r 1} & a_{r 2} & \ldots & a_{r c} \end{pmatrix}

则:

kA=(ka11ka12ka1cka21ka22ka2ckar1kar2karc)k \cdot A=\begin{pmatrix} k \cdot a_{11} & k \cdot a_{12} & \ldots & k \cdot a_{1 c} \\ k \cdot a_{21} & k \cdot a_{22} & \ldots & k \cdot a_{2 c} \\ \ldots & \ldots & \ldots & \ldots \\ k \cdot a_{r 1} & k \cdot a_{r 2} & \ldots & k \cdot a_{r c} \end{pmatrix}


   转载规则


《线性代数第四章:矩阵不仅仅是n×m个数》 Harbor Zeng 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
知识图谱如何存储在neo4j里面 知识图谱如何存储在neo4j里面
下载和安装 首先,前往官网下载系统所匹配的版本 https://neo4j.com/download-center/#community Neo4j Desktop 需要注意的是,有个 Neo4j Desktop 可以使用,支持多平台,他内部与 neo4j server 是通过自有协议 bolt 连接起来的,看起来大概是这个样子,端口也是 7687,而不是我们平时通过浏览器 http 协议的
2020-12-29
下一篇 
线性代数第三章:向量的高级话题 线性代数第三章:向量的高级话题
规范化 上篇中我们提到了向量的方向性,其实向量除了方向还有大小。 u⃗=(3,4)\vec{u}=(3,4)u=(3,4),问 u⃗\vec uu 的大小是多少? 在二维平面中,我们可以根据勾股定理得,u⃗\vec uu 的大小 ∥u⃗∥=32+42=5\|\vec u\|=\sqrt{3^2+4^2}=5∥u∥=32+42​=5,其中 ∥u⃗∥\|\vec u\|∥u∥ 也叫向量的模。 之所
2020-09-08
  目录