Linear Algebra Matrix Vector

发布于 2024-06-20 00:36:06 字数 4946 浏览 33 评论 0

目标:

掌握矩阵 (Matrix) 和向量 (Vector)


Matrice: (rectangular array of numbers written between square brackets.) 矩阵是一个 m 行 n 列的数字集合,为了表示改数据集,将其放在一对方括号中。 例如:

$$\begin{bmatrix}
1 & 2 & 3 \ 2 & 6 & 3 \ 4 & 4 & 2
\end{bmatrix}$$

或者,这也是一个矩阵

$$\begin{bmatrix}
1 & 2 & 3 \ 2 & 6 & 3 \end{bmatrix}$$

上面这两种都是 2D 或者二维(two dimensional array)数组。矩阵的维数可以写成行_列的形式。第一个矩阵维数是 3_3,第二个矩阵维数可以写成 2_3。维度 m_n 的矩阵记做

$$R^{2 \times 3}$$

矩阵的元素是矩阵中的每一个数字。对于一个矩阵 A,第 i 行 j 列的元素记为(注意索引从 1 开始):

$$A_{ij}$$

向量

向量是矩阵的一种特例:只有一列的矩阵。例如

$$y = \begin{bmatrix}
1 \ 2 \ 4
\end{bmatrix}$$

这是一个向量,由于它有 3 行,它被称为 3 维向量。 需要注意的是:

  • 在编程语言中一些索引会从 0 开始,但是在数学中,都是从 1 开始的。
  • 在矩阵的表示中经常使用大写字母表示矩阵或者向量。而小写字母表示它们的元素。不和谐的表示并不会错,只是人们习惯这样表示。

Addition and Scalar Multiplication

目标:

  • 矩阵的加法和乘法
  • 数字和矩阵的乘法,也就是向量的乘法

加法

矩阵的加法是将连个矩阵的每个元素逐一相加,的到一个新的矩阵。矩阵的加法要求两个矩阵维度相同,否则无法相加。

$$\begin{bmatrix} a & b \newline c & d \newline \end{bmatrix} +\begin{bmatrix} w & x \newline y & z \newline \end{bmatrix} =\begin{bmatrix} a+w & b+x \newline c+y & d+z \newline \end{bmatrix}$$

$$\begin{bmatrix} a & b \newline c & d \newline \end{bmatrix} - \begin{bmatrix} w & x \newline y & z \newline \end{bmatrix} =\begin{bmatrix} a-w & b-x \newline c-y & d-z \newline \end{bmatrix}$$

数字和矩阵的乘法 除法

乘法

实数和矩阵的乘法是一个和矩阵因子相同形状的矩阵。实数和矩阵的每一个元素相乘得到结果矩阵相应位置的元素值。

$$\begin{bmatrix} a & b \newline c & d \newline \end{bmatrix} _ x =\begin{bmatrix} a_x & b_x \newline c_x & d*x \newline \end{bmatrix}$$

$$3 \times \begin{bmatrix} 1 & 0 \ 2 & 5 \ 3 & 1 \end{bmatrix} = \begin{bmatrix} 3 & 0 \ 6 & 15 \ 9 & 3 \end{bmatrix} = \begin{bmatrix} 1 & 0 \ 2 & 5 \ 3 & 1 \end{bmatrix} \times 3$$

除法

矩阵除以一个整数相当于乘以这个数的倒数。

$$\begin{bmatrix} 4 & 0 \ 6 & 3 \end{bmatrix} / 4 = \frac1{4}\begin{bmatrix} 4 & 0 \ 6 & 3 \end{bmatrix}$$

注意

  • 矩阵的除法被看做是乘法的变形。
  • 不存在整数除以矩阵的情况,这种做法没有意义

算数符号优先级(combination of operands)

矩阵运算的优先级沿用了数字计算的符号优先级。

  • 括号优先级最高
  • 没有括号时,先乘除,后加减。想用优先级的运算符从左到右计算。

numpy 时间

A = numpy.mat([[1, 2, 4], [5, 3, 2]])
B = numpy.mat([[1, 3, 4], [1, 1, 1]])

s = 2

add_AB = A + B

sub_AB = A - B

mult_As = A * s

div_As = A / s

add_As = A + s


print(add_AB, '\n')

print(sub_AB, '\n')

print(mult_As, '\n')

print(div_As, '\n')

print(add_As, '\n')

矩阵相乘

两个矩阵相乘

$$\begin{bmatrix} a & b \newline c & d \newline e & f \end{bmatrix} _\begin{bmatrix} x \newline y \newline \end{bmatrix} =\begin{bmatrix} a_x + b_y \newline c_x + d_y \newline e_x + f*y\end{bmatrix}$$


numpy 时间

# mat 函数用于生成矩阵
A = numpy.mat([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
v = numpy.mat([[1], [1], [1]])
Av = A * v

print(Av)

# 如果是数组,就要用特殊的函数进行点乘。或者改变数据类型
A = numpy.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
v = numpy.array([[1], [1], [1]])
Av = numpy.dot(A, v)
# Mul = A * v 是各对应项相乘。
print(Av)

# 函数不管数据类型是什么,都进行矩阵乘法,而 multiply 则不管数据类型是什么都进行
# 点乘(对应位置元素相乘)
# 数据类型不同的时候(一个数数组,一个是矩阵),默认按照矩阵乘法。

应用

矩阵的乘法对于一次性打包大量运算非常有用。

矩阵乘法的性质

  • 普通数字或者标量的乘法是可交换的,但是矩阵乘法不是。可交换是指 a _ b = b _ a
  • 矩阵乘法满足结合律 A * (B * C) = A * (B * C)

单位矩阵(identity matrix)

单位在这里指不会变化,在普通数字中,1 是单位数,因为 1 乘以任何数都不改变他们的值。同样,在矩阵乘法中也存在镇这种现象,只不过单位不再是一个数字,而是一个矩阵,矩阵乘法中也存在这这样的矩阵。被称为单位矩阵(identity matrix) 。

单位矩阵是主对角线上是 1,其他都是 0 的 n*n 矩形矩阵。 记做$$I 或者 I_{n \times n}$$。例如:

$$I = \begin{bmatrix} 1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 1 \end{bmatrix}$$

For any Matrix A

$$A_{m \times n} \times I_{n \times n} = I_{m \times m} \times A_{m \times n} = A$$


numpy 时间

# 默认生成的是浮点数,要想生成整数需要特备指定
I1 = numpy.eye(2, dtype=numpy.int)
I2 = numpy.identity(2, dtype=numpy.int)

逆和转置(inverse and transpose)

对于普通的数字,单位 1 是很特殊的,对于数字 a,存在着 a _ b = 1,我们都知道 b = 1 / a。并不是所有的数字都有逆,例如 0 就没有。那么,在矩阵的乘法运算中,是否也存在着这种现象呢?类似的,我们把两个相乘得到单位矩阵的矩阵称为互逆矩阵。 如果 A 是一个 m _ n 的矩阵,并且具有逆,那么:

$$A A^{-1} = A^{-1}A = I$$

注意

  • 只有方形矩阵才有逆矩阵
  • 全零矩阵也没有逆矩阵
  • 没有逆矩阵的矩阵被称为奇异矩阵,或者叫退化矩阵

转置

矩阵的转置是将矩阵的行编程矩阵的列,如果 A 是一个 m _ n 的矩阵,如果 B 是 A 的转置矩阵,则 B 是一个 n _ m 大小的矩阵,并且$$A_{ij} = B_{ji}$$。A 的转置矩阵 B 记做:$$A^T$$。对于矩阵的转置,可以看做沿着主对角线,即$$A_{ii}$$翻转的结果。


numpy 时间

# 矩阵的逆用对象的.I 返回
# 矩阵的转置使用.T 获得
A = numpy.mat([[1,2,0], [0,5,6], [7,0,9]])

B = A.T
C = A.I
print(B)
print(C)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

甜`诱少女

暂无简介

文章
评论
28 人气
更多

推荐作者

李珊平

文章 0 评论 0

Quxin

文章 0 评论 0

范无咎

文章 0 评论 0

github_ZOJ2N8YxBm

文章 0 评论 0

若言

文章 0 评论 0

南…巷孤猫

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文