4646:label: la_se
4747
4848\begin{aligned}
49-
50- y_1 = a_{11} x_1 + a_{12} x_2 + \cdots + a_{1k} x_k \\
49+ y_1 = a_{11} x_1 + a_{12} x_2 + \cdots + a_{1k} x_k \\
5150 \vdots \\
5251 y_n = a_{n1} x_1 + a_{n2} x_2 + \cdots + a_{nk} x_k
5352\end{aligned}
5453```
5554
5655这里的目标是在已知 $a_ {11}, \ldots, a_ {nk}$ 和 $y_1, \ldots, y_n$ 的情况下,求解"未知数" $x_1, \ldots, x_k$。
5756
58- 在考虑这类问题时,我们首先必须考虑以下至少一些问题:
57+ 在研究这类问题时,我们需要考虑以下几个基本问题:
5958
60- * 解是否真的存在?
61- * 是否实际上存在多个解,如果是,我们应该如何解释它们?
62- * 如果不存在解,是否存在最佳的"近似"解?
63- * 如果解存在,我们应该如何计算它?
59+ * 这个方程组是否有解?
60+ * 如果有解,解是唯一的吗?如果有多个解,这意味着什么?
61+ * 如果没有精确解,是否可以找到一个最优的近似解?
62+ * 如果解存在,有什么有效的方法可以求出它?
6463
6564这些都是线性代数所要解决的问题。
6665
67- 在本讲中,我们将介绍线性和矩阵代数的基础知识,包括理论和计算两个方面 。
66+ 本讲将介绍线性代数和矩阵运算的基础知识 。
6867
69- 我们承认这与 [ 这篇讲座 ] ( https://python-programming.quantecon.org/numpy.html ) 有一些重叠,那里首次解释了NumPy数组的操作 。
68+ 我们将同时关注理论基础和实际计算 。
7069
71- 请注意,这节课比大多数课程更偏重理论,包含了我们在后续应用中将会用到的背景知识 。
70+ 虽然本讲与我们在 [ 之前的讲座 ] ( https://python-programming.quantecon.org/numpy.html ) 中已经介绍过NumPy数组的基本操作有所重合,但这里我们将从更理论的角度来探讨线性代数 。
7271
73- 让我们先从一些导入语句开始:
72+ 这些理论知识将为我们后续的应用打下重要基础。
7473
7574``` {code-cell} ipython
7675import matplotlib.pyplot as plt
@@ -95,19 +94,19 @@ from scipy.linalg import inv, solve, det, eig
9594
9695我们可以根据需要将这些序列横向或纵向书写。
9796
98- (稍后,当我们需要执行某些矩阵运算时,区分这两种写法将变得必要 )
97+ (在后面讨论矩阵运算时,区分横向和纵向表示将变得很重要 )
9998
100- 所有$n$维向量的集合用$ \mathbb R^n$表示 。
99+ 我们用$ \mathbb R^n$表示所有$n$维向量的集合 。
101100
102- 例如, $\mathbb R^2$是平面,而$\mathbb R^2$中的向量就是平面上的一个点 。
101+ 以 $\mathbb R^2$为例,它代表二维平面,其中的每个向量都对应平面上的一个点 。
103102
104- 传统上,向量在视觉上被表示为从原点指向某点的箭头 。
103+ 在几何上,我们通常将向量画成一个从原点出发的箭头 。
105104
106- 下图以这种方式表示了三个向量
105+ 让我们看看下面这个例子,其中画出了三个不同的向量:
107106
108107``` {code-cell} ipython
109108fig, ax = plt.subplots(figsize=(10, 8))
110- # Set the axes through the origin
109+ # 设置通过原点的轴
111110for spine in ['left', 'bottom']:
112111 ax.spines[spine].set_position('zero')
113112for spine in ['right', 'top']:
@@ -306,26 +305,26 @@ ax.plot(z, x, y, 'k-', lw=2, alpha=0.5)
306305ax.plot(y, z, x, 'k-', lw=2, alpha=0.5)
307306
308307
309- # Fixed linear function, to generate a plane
308+ # 固定线性函数,生成平面
310309def f(x, y):
311310 return α * x + β * y
312311
313- # Vector locations, by coordinate
312+ # 向量位置,按坐标
314313x_coords = np.array((3, 3))
315314y_coords = np.array((4, -4))
316315z = f(x_coords, y_coords)
317316for i in (0, 1):
318317 ax.text(x_coords[i], y_coords[i], z[i], f'$a_{i+1}$', fontsize=14)
319318
320- # Lines to vectors
319+ # 连接向量的线
321320for i in (0, 1):
322321 x = (0, x_coords[i])
323322 y = (0, y_coords[i])
324323 z = (0, f(x_coords[i], y_coords[i]))
325324 ax.plot(x, y, z, 'b-', lw=1.5, alpha=0.6)
326325
327326
328- # Draw the plane
327+ # 绘制平面
329328grid_size = 20
330329xr2 = np.linspace(x_min, x_max, grid_size)
331330yr2 = np.linspace(y_min, y_max, grid_size)
@@ -338,7 +337,7 @@ plt.show()
338337
339338#### 示例
340339
341- 如果 $A$ 只包含一个向量 $a_1 \in \mathbb R ^2$,那么它的张成只是 $a_1$ 的标量倍数,即通过 $a_1$ 和原点的唯一直线。
340+ 如果 $A$ 只包含一个向量 $a_1 \in \mathbb R ^2$,那么它的张成空间只是 $a_1$ 的标量倍数,即通过 $a_1$ 和原点的唯一直线。
342341
343342如果 $A = \{ e_1, e_2, e_3\} $ 由 $\mathbb R ^3$ 的* 标准基向量* 组成,即
344343
@@ -365,7 +364,7 @@ e_3 :=
365364\end{bmatrix}
366365$$
367366
368- 那么 $A$ 的张成就是整个 $\mathbb R ^3$,因为对于任意的 $x = (x_1, x_2, x_3) \in \mathbb R ^3$,我们可以写成
367+ 那么 $A$ 的张成就是整个 $\mathbb R^3$,因为对于任意的 $x = (x_1, x_2, x_3) \in \mathbb R^3$,我们可以写成
369368
370369$$
371370x = x_1 e_1 + x_2 e_2 + x_3 e_3
383382``` {index} single: Vectors; Linear Independence
384383```
385384
386- 正如我们将看到的,找到具有相对较大张成空间的向量族通常是很有必要的,这样许多向量就可以通过对少数向量进行线性运算来描述 。
385+ 在实际应用中,我们经常需要找到一组能够张成较大空间的向量。这样做的好处是,我们可以用这少数几个向量的线性组合来表示更多的向量 。
387386
388- 对于一组向量要具有较大的张成空间,我们需要的条件就是所谓的线性无关 。
387+ 要使一组向量能张成较大的空间,这组向量需要满足一个重要条件 -- 线性无关 。
389388
390389具体来说,在$\mathbb R ^n$中的一组向量$A := \{ a_1, \ldots, a_k\} $被称为
391390
392- * * 线性相关的* ,如果$A$的某个真子集与$A$具有相同的张成空间 。
393- * * 线性无关的* ,如果它不是线性相关的 。
391+ * * 线性相关的* ,如果集合中至少有一个向量可以表示为其他向量的线性组合 。
392+ * * 线性无关的* ,如果集合中任何一个向量都不能表示为其他向量的线性组合 。
394393
395- 换句话说,如果没有向量对张成空间是多余的,那么这组向量就是线性无关的,否则就是线性相关的 。
394+ 这个概念可以通过一个简单的例子来理解 。
396395
397- 为了说明这个概念,回想 {ref}` 图示<la_3dvec> ` 展示了 $\mathbb R ^3$中向量 $\{ a_1, a_2\} $的张成空间是一个经过原点的平面 。
396+ 让我们回到 {ref}` 图示<la_3dvec> ` 中的例子,其中 $\mathbb R ^3$中的两个向量 $\{ a_1, a_2\} $张成了一个经过原点的平面 。
398397
399- 如果我们再取第三个向量 $a_3$并形成集合 $\{ a_1, a_2, a_3\} $,这个集合将会是
398+ 如果我们添加第三个向量 $a_3$,那么新的集合 $\{ a_1, a_2, a_3\} $的性质将取决于$a_3$的位置:
400399
401- * 如果$a_3$位于该平面内,则线性相关
402- * 否则线性无关
400+ * 如果$a_3$落在$a_1$和$a_2$张成的平面上,那么$a_3$可以表示为$a_1$和$a_2$的线性组合,因此这三个向量是线性相关的
401+ * 如果$a_3$不在该平面上,那么它不能表示为$a_1$和$a_2$的线性组合,因此这三个向量是线性无关的
403402
404- 作为这个概念的另一个说明,由于 $\mathbb R ^n$可以由 $n$个向量张成(参见上文关于标准基向量的讨论),在 $\mathbb R ^n$中任何包含$m > n$个向量的集合必定线性相关 。
403+ 一个重要的性质是:在 $\mathbb R ^n$中,任何超过 $n$个向量的集合必定是线性相关的。这是因为 $\mathbb R ^n$最多需要$n$个向量就能完全张成(就像我们之前看到的标准基向量那样) 。
405404
406- 以下陈述等价于 $A := \{ a_1, \ldots, a_k\} \subset \mathbb R ^n$的线性独立性 :
405+ 数学上,向量集合 $A := \{ a_1, \ldots, a_k\} \subset \mathbb R ^n$的线性无关性可以用以下两种等价方式来表述 :
407406
408- 1 . $A$中的任何向量都不能由其他元素的线性组合表示 。
409- 1 . 如果对于标量 $\beta_1, \ldots, \beta_k$,有 $\beta_1 a_1 + \cdots \beta_k a_k = 0$,那么$\beta_1 = \cdots = \beta_k = 0$ 。
407+ 1 . 集合中的任何向量都不能写成其他向量的线性组合 。
408+ 2 . 当且仅当所有系数 $\beta_1, \ldots, \beta_k$都为零时,线性组合 $\beta_1 a_1 + \cdots + \beta_k a_k$等于零向量 。
410409
411- (第一个表达式中的零是 $\mathbb R ^n$的原点 )
410+ (这里的零向量指的是 $\mathbb R ^n$中所有分量都是0的向量 )
412411
413412(la_unique_reps)=
414413### 唯一表示
415414
416- 关于线性独立向量集合的另一个优点是,其张成空间中的每个元素都可以唯一地表示为这些向量的线性组合 。
415+ 线性独立向量集合的一个重要性质是唯一表示性:其张成空间中的每个向量都可以用唯一的一组系数来表示 。
417416
418- 换句话说,如果 $A := \{ a_1, \ldots, a_k\} \subset \mathbb R ^n$是线性独立的,且
417+ 具体来说,假设 $A := \{ a_1, \ldots, a_k\} \subset \mathbb R ^n$是线性独立的,且向量$y$可以表示为:
419418
420419$$
421- y = \beta_1 a_1 + \cdots \beta_k a_k
420+ y = \beta_1 a_1 + \cdots + \beta_k a_k
422421$$
423422
424- 那么其他任何系数序列 $\gamma_1 , \ldots, \gamma_k$ 都不会产生相同的向量 $y$ 。
423+ 那么这组系数$\beta_1 , \ldots, \beta_k$是唯一的 。
425424
426- 事实上,如果我们也有 $y = \gamma_1 a_1 + \cdots \gamma_k a_k$,
427- 那么
425+ 也就是说,不存在另一组不同的系数$\gamma_1, \ldots, \gamma_k$使得:
426+
427+ $$
428+ y = \gamma_1 a_1 + \cdots + \gamma_k a_k
429+ $$
430+
431+ 这一点可以通过反证法证明。如果存在这样两组不同的系数,那么:
428432
429433$$
430434(\beta_1 - \gamma_1) a_1 + \cdots + (\beta_k - \gamma_k) a_k = 0
431435$$
432436
433- 线性独立性现在意味着对所有 $i$ 都有 $\gamma_i = \beta_i$。
437+ 由线性独立性可知,这种情况只可能在$\beta_i = \gamma_i$ $(i=1,\ldots,k)$时发生。
438+
439+ 这与我们假设两组系数不同相矛盾。
434440
435441## 矩阵
436442
482488\gamma A =
483489\gamma
484490\begin{bmatrix}
485-
486491a_{11} & \cdots & a_{1k} \\
487492 \vdots & \vdots & \vdots \\
488493 a_{n1} & \cdots & a_{nk}
525530
526531如果$A$和$B$是两个矩阵,那么它们的乘积$A B$的第$i,j$个元素是由$A$的第$i$行与$B$的第$j$列的内积得到的。
527532
528- 有许多教程可以帮助你理解这个运算,比如[ 这个] ( https://www.mathsisfun.com/algebra/matrix-multiplying.html ) ,或者[ 维基百科页面] ( https://en.wikipedia.org/wiki/Matrix_multiplication ) 上的讨论。
529-
530533如果$A$是$n \times k$矩阵,$B$是$j \times m$矩阵,那么要使$A$和$B$可以相乘,我们需要$k = j$,且得到的矩阵$A B$是$n \times m$的。
531534
532535作为可能最重要的特例,考虑将$n \times k$矩阵$A$与$k \times 1$列向量$x$相乘。
@@ -541,7 +544,6 @@ A x =
541544 a_{11} & \cdots & a_{1k} \\
542545 \vdots & \vdots & \vdots \\
543546 a_{n1} & \cdots & a_{nk}
544-
545547\end{bmatrix}
546548\begin{bmatrix}
547549 x_{1} \\
@@ -556,7 +558,7 @@ A x =
556558```
557559
558560``` {note}
559- $A B$ 和 $B A$ 通常不是同一个东西 。
561+ 矩阵乘法不满足交换律,也就是说, $A B$ 和 $B A$ 的结果通常是不同的 。
560562```
561563
562564另一个重要的特殊情况是单位矩阵。
@@ -597,7 +599,7 @@ A.shape
597599
598600有许多便捷的函数可用于创建常见矩阵(零矩阵、全1矩阵等)--- 参见[ 这里] ( https://python-programming.quantecon.org/numpy.html#creating-arrays ) 。
599601
600- 由于运算默认按元素执行,标量乘法和加法具有非常自然的语法
602+ 由于运算默认按元素执行,标量乘法和加法的语法具有非常自然
601603
602604``` {code-cell} ipython3
603605A = np.identity(3)
635637
636638你可以验证,当$b$为零向量时,函数$f(x) = A x + b$满足这个性质,而当$b$非零时则不满足。
637639
638- 事实上,已 [ 知 ] ( https://en.wikipedia.org/wiki/Linear_map#Matrices ) $f$是线性的,当且 * 仅当 * 存在矩阵 $A$使得对所有的$x$都有$f(x) = Ax$。
640+ 事实上我们知道, $f$是线性的当且仅当存在矩阵 $A$使得对所有的$x$都有$f(x) = Ax$。
639641
640642## 求解方程组
641643
@@ -689,7 +691,7 @@ for ax in axes:
689691
690692 ax.plot(x, y, 'k-', lw=2, label='$f$')
691693 ax.fill_between(x, ya, yb, facecolor='blue', alpha=0.05)
692- ax.vlines([0], ya, yb, lw=3, color='blue', label='range of $f$')
694+ ax.vlines([0], ya, yb, lw=3, color='blue', label='$f$的值域 ')
693695 ax.text(0.04, -0.3, '$0$', fontsize=16)
694696
695697ax = axes[0]
777779``` {index} single: Matrix; Determinants
778780```
779781
780- 关于方阵的另一个简短说明是,每个这样的矩阵都有一个唯一的数,称为矩阵的 * 行列式* ——你可以在 [ 这里] ( https://en.wikipedia.org/wiki/Determinant ) 找到它的表达式 。
782+ 每个方阵都有一个与之唯一对应的数值,这个数值被称为矩阵的 * 行列式* 。行列式的具体计算方法可以在 [ 这里] ( https://baike.baidu.com/item/%E8%A1%8C%E5%88%97%E5%BC%8F/2010180 ) 找到 。
781783
782784如果矩阵$A$的行列式不为零,我们就说$A$是* 非奇异的* 。
783785
@@ -875,11 +877,14 @@ A @ x # 应该等于y
875877solve(A, y) # 产生相同的解
876878```
877879
878- 观察我们如何通过 ` inv(A) @ y ` 或使用 ` solve(A, y) ` 来求解 $x = A^{-1} y$。
880+ 我们可以通过两种方式求解线性方程 $x = A^{-1}y$:
879881
880- 后一种方法使用不同的算法(LU分解),在数值上更稳定,因此几乎总是应该优先选择。
882+ 1 . 使用` inv(A) @ y ` 显式计算逆矩阵
883+ 2 . 使用` solve(A, y) ` 直接求解方程
881884
882- 要获得最小二乘解$\hat x = (A'A)^{-1}A'y$,使用` scipy.linalg.lstsq(A, y) ` 。
885+ 第二种方法基于LU分解,数值稳定性更好,是更推荐的方法。
886+
887+ 如果需要求解最小二乘问题$\hat x = (A'A)^{-1}A'y$,可以使用` scipy.linalg.lstsq(A, y) ` 。
883888
884889(la_eigen)=
885890## {index}` 特征值 <single: Eigenvalues> ` 和{index}` 特征向量 <single: Eigenvectors> `
900905
901906则我们称$\lambda$是$A$的* 特征值* ,而$v$是* 特征向量* 。
902907
903- 因此,$A$的特征向量是指当应用映射$ f(x) = Ax$时,$v$仅仅被缩放的向量 。
908+ 换句话说,特征向量是那些经过线性变换$ f(x) = Ax$后,方向保持不变、只是长度发生变化的向量 。
904909
905- 下图显示了两个特征向量(蓝色箭头)及其在$A$下的像(红色箭头) 。
910+ 下图中,蓝色箭头表示两个特征向量,红色箭头表示它们经过变换后的结果 。
906911
907- 正如预期的那样,每个向量 $v$ 的像 $Av$ 只是原向量的缩放版本
912+ 可以看到,每个特征向量 $v$经过变换后得到的 $Av$都与原向量指向相同的方向,只是长度改变了
908913
909914``` {code-cell} ipython3
910915---
@@ -917,6 +922,7 @@ evals, evecs = eig(A)
917922evecs = evecs[:, 0], evecs[:, 1]
918923
919924fig, ax = plt.subplots(figsize=(10, 8))
925+
920926# 设置通过原点的坐标轴
921927for spine in ['left', 'bottom']:
922928 ax.spines[spine].set_position('zero')
@@ -969,7 +975,6 @@ plt.show()
9699751 . $A$ 的行列式等于所有特征值的乘积。
9709761 . $A$ 的迹(主对角线上元素的和)等于所有特征值的和。
9719771 . 如果 $A$ 是对称矩阵,那么它的所有特征值都是实数。
972-
9739781 . 如果$A$是可逆的,且$\lambda_1, \ldots, \lambda_n$是它的特征值,那么$A^{-1}$的特征值是$1/\lambda_1, \ldots, 1/\lambda_n$。
974979
975980第一个陈述的一个推论是:矩阵可逆当且仅当它的所有特征值都不为零。
10051010
10061011当然,如果 $B$ 是方阵且可逆,我们可以将广义特征值问题转化为普通特征值问题 $B^{-1} A v = \lambda v$,但情况并非总是如此。
10071012
1008- ## 进阶主题
1013+ ## 进阶概念
10091014
1010- 我们通过简要介绍几个其他重要主题来结束讨论 。
1015+ 我们通过简要介绍几个其他重要概念来结束讨论 。
10111016
10121017### 级数展开
10131018
@@ -1310,10 +1315,7 @@ $$
13101315\begin{aligned}
13111316 v(x) &= - x'A'PAx - 2u'B'PAx - u'(Q + B'PB) u\\
13121317 &= - x'A'PAx + x'A'PB(Q + B'PB)^{-1}B'PAx \\
1313-
1314- $$
1315- \begin{aligned}
1316- &= -x'[ A'PA - A'PB(Q + B'PB)^{-1}B'PA] x
1318+ &= -x'[A'PA - A'PB(Q + B'PB)^{-1}B'PA] x
13171319\end{aligned}
13181320$$
13191321
0 commit comments