Skip to content

Commit

Permalink
2021-05-07 10:20:42
Browse files Browse the repository at this point in the history
  • Loading branch information
wizardforcel committed May 7, 2021
1 parent c411fa2 commit 957b754
Show file tree
Hide file tree
Showing 52 changed files with 2,953 additions and 22 deletions.
80 changes: 58 additions & 22 deletions SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -154,25 +154,61 @@
+ [十分钟上手 Pandas](docs/da/151.md)
+ [一维数据结构:Series](docs/da/152.md)
+ [二维数据结构:DataFrame](docs/da/153.md)
+ [线性代数](docs/linalg/README.md)
+ [第一讲:方程组的几何解释](docs/linalg/chapter01.md)
+ [第二讲:矩阵消元](docs/linalg/chapter02.md)
+ [第三讲:乘法和逆矩阵](docs/linalg/chapter03.md)
+ [第四讲:$A$ 的 $LU$ 分解](docs/linalg/chapter04.md)
+ [第五讲:转换、置换、向量空间R](docs/linalg/chapter05.md)
+ [第六讲:列空间和零空间](docs/linalg/chapter06.md)
+ [第七讲:求解$Ax=0$,主变量,特解](docs/linalg/chapter07.md)
+ [第八讲:求解$Ax=b$:可解性和解的结构](docs/linalg/chapter08.md)
+ [第九讲:线性相关性、基、维数](docs/linalg/chapter09.md)
+ [第十讲 四个基本子空间](docs/linalg/chapter10.md)
+ [第十一讲:矩阵空间、秩1矩阵和小世界图](docs/linalg/chapter11.md)
+ [第十二讲:图和网络](docs/linalg/chapter12.md)
+ [第十三讲:复习一](docs/linalg/chapter13.md)
+ [第十四讲:正交向量与子空间](docs/linalg/chapter14.md)
+ [第十五讲:子空间投影](docs/linalg/chapter15.md)
+ [第十六讲:投影矩阵和最小二乘](docs/linalg/chapter16.md)
+ [第十七讲:正交矩阵和Gram-Schmidt正交化法](docs/linalg/chapter17.md)
+ [第十八讲:行列式及其性质](docs/linalg/chapter18.md)
+ [第十九讲:行列式公式和代数余子式](docs/linalg/chapter19.md)
+ [第二十讲:克拉默法则、逆矩阵、体积](docs/linalg/chapter20.md)
+ [第二十一讲:特征值和特征向量](docs/linalg/chapter21.md)
+ [第二十二讲:对角化和$A$的幂](docs/linalg/chapter22.md)
+ [第二十三讲:微分方程和$e^{At}$](docs/linalg/chapter23.md)
+ [第二十四讲:马尔科夫矩阵、傅里叶级数](docs/linalg/chapter24.md)
+ [第二十五讲:复习二](docs/linalg/chapter25.md)
+ [第二十六讲:对称矩阵及正定性](docs/linalg/chapter26.md)
+ [第二十七讲:复数矩阵和快速傅里叶变换](docs/linalg/chapter27.md)
+ [第二十八讲:正定矩阵和最小值](docs/linalg/chapter28.md)
+ [第二十九讲:相似矩阵和若尔当形](docs/linalg/chapter29.md)
+ [第三十讲:奇异值分解](docs/linalg/chapter30.md)
+ [第三十一讲:线性变换及对应矩阵](docs/linalg/chapter31.md)
+ [第三十二讲:基变换和图像压缩](docs/linalg/chapter32.md)
+ [第三十三讲:单元检测3复习](docs/linalg/chapter33.md)
+ [第三十四讲:左右逆和伪逆](docs/linalg/chapter34.md)
+ [第三十五讲:期末复习](docs/linalg/chapter35.md)
+ 机器学习
+ [第1章_基础知识](docs/ml/1.md)
+ [第2章_K近邻算法](docs/ml/2.md)
+ [第3章_决策树算法](docs/ml/3.md)
+ [第4章_朴素贝叶斯](docs/ml/4.md)
+ [第5章_逻辑回归](docs/ml/5.md)
+ [第6章_支持向量机](docs/ml/6.md)
+ [第7章_集成方法](docs/ml/7.md)
+ [第8章_回归](docs/ml/8.md)
+ [第9章_树回归](docs/ml/9.md)
+ [第10章_KMeans聚类](docs/ml/10.md)
+ [第11章_Apriori算法](docs/ml/11.md)
+ [第12章_FP-growth算法](docs/ml/12.md)
+ [第13章_PCA降维](docs/ml/13.md)
+ [第14章_SVD简化数据](docs/ml/14.md)
+ [第15章_大数据与MapReduce](docs/ml/15.md)
+ [第16章_推荐系统](docs/ml/16.md)
+ [为何录制教学版视频](docs/why-to-record-study-ml-video.md)
+ [2017-04-08_第一期的总结](docs/report/2017-04-08.md)
+ [第1章_基础知识](docs/ml/1.md)
+ [第2章_K近邻算法](docs/ml/2.md)
+ [第3章_决策树算法](docs/ml/3.md)
+ [第4章_朴素贝叶斯](docs/ml/4.md)
+ [第5章_逻辑回归](docs/ml/5.md)
+ [第6章_支持向量机](docs/ml/6.md)
+ [第7章_集成方法](docs/ml/7.md)
+ [第8章_回归](docs/ml/8.md)
+ [第9章_树回归](docs/ml/9.md)
+ [第10章_KMeans聚类](docs/ml/10.md)
+ [第11章_Apriori算法](docs/ml/11.md)
+ [第12章_FP-growth算法](docs/ml/12.md)
+ [第13章_PCA降维](docs/ml/13.md)
+ [第14章_SVD简化数据](docs/ml/14.md)
+ [第15章_大数据与MapReduce](docs/ml/15.md)
+ [第16章_推荐系统](docs/ml/16.md)
+ [为何录制教学版视频](docs/why-to-record-study-ml-video.md)
+ [2017-04-08_第一期的总结](docs/report/2017-04-08.md)
+ [PyTorch](docs/pytorch/README.md)
+ [PyTorch 简介](docs/pytorch/01.md)
+ [1.1 – Why PyTorch?](docs/pytorch/02.md)
Expand Down Expand Up @@ -201,10 +237,10 @@
+ [5.3 – Dropout 防止过拟合](docs/pytorch/25.md)
+ [5.4 – Batch Normalization 批标准化](docs/pytorch/26.md)
+ 深度学习入门
+ [反向传递](docs/dl/反向传递.md)
+ [CNN原理](docs/dl/CNN原理.md)
+ [RNN原理](docs/dl/RNN原理.md)
+ [LSTM原理](docs/dl/LSTM原理.md)
+ [反向传递](docs/dl/反向传递.md)
+ [CNN原理](docs/dl/CNN原理.md)
+ [RNN原理](docs/dl/RNN原理.md)
+ [LSTM原理](docs/dl/LSTM原理.md)
+ [自然语言处理](docs/nlp/README.md)
+ [前言](docs/nlp/0.md)
+ [1 语言处理与 Python](docs/nlp/1.md)
Expand Down
51 changes: 51 additions & 0 deletions docs/linalg/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# MIT 18.06 线性代数笔记

> 课程:[麻省理工公开课:线性代数](http://open.163.com/special/opencourse/daishu.html)
>
> 作者:[子实](https://github.com/zlotus)
>
> 通过代码行数衡量开发进程就好比用重量来衡量飞机制造进度。——比尔·盖茨
* [在线阅读](https://linalg.apachecn.org)
* [在线阅读(Gitee)](https://apachecn.gitee.io/mit-18.06-linalg-notes/)
* [ApacheCN 机器学习交流群 629470233](http://shang.qq.com/wpa/qunwpa?idkey=30e5f1123a79867570f665aa3a483ca404b1c3f77737bc01ec520ed5f078ddef)
* [ApacheCN 学习资源](http://www.apachecn.org/)

## 联系方式

### 负责人

* [飞龙](https://github.com/wizardforcel): 562826179

### 其他

* 在我们的 [apachecn/mit-18.06-linalg-notes](https://github.com/apachecn/mit-18.06-linalg-notes) github 上提 issue.
* 发邮件到 Email: `[email protected]`.
* 在我们的 [组织学习交流群](http://www.apachecn.org/organization/348.html) 中联系群主/管理员即可.


## 下载

### PYPI

```
pip install mit-18.06-linalg-notes
mit-18.06-linalg-notes <port>
# 访问 http://localhost:{port} 查看文档
```

### NPM

```
npm install -g mit-yiba-lingliu-linalg-notes
mit-yiba-lingliu-linalg-notes <port>
# 访问 http://localhost:{port} 查看文档
```

### Docker

```
docker pull apachecn0/mit-18-06-linalg-notes
docker run -tid -p <port>:80 apachecn0/mit-18-06-linalg-notes
# 访问 http://localhost:{port} 查看文档
```
36 changes: 36 additions & 0 deletions docs/linalg/SUMMARY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
+ [MIT 18.06 线性代数笔记](README.md)
+ [第一讲:方程组的几何解释](chapter01.md)
+ [第二讲:矩阵消元](chapter02.md)
+ [第三讲:乘法和逆矩阵](chapter03.md)
+ [第四讲:$A$ 的 $LU$ 分解](chapter04.md)
+ [第五讲:转换、置换、向量空间R](chapter05.md)
+ [第六讲:列空间和零空间](chapter06.md)
+ [第七讲:求解$Ax=0$,主变量,特解](chapter07.md)
+ [第八讲:求解$Ax=b$:可解性和解的结构](chapter08.md)
+ [第九讲:线性相关性、基、维数](chapter09.md)
+ [第十讲 四个基本子空间](chapter10.md)
+ [第十一讲:矩阵空间、秩1矩阵和小世界图](chapter11.md)
+ [第十二讲:图和网络](chapter12.md)
+ [第十三讲:复习一](chapter13.md)
+ [第十四讲:正交向量与子空间](chapter14.md)
+ [第十五讲:子空间投影](chapter15.md)
+ [第十六讲:投影矩阵和最小二乘](chapter16.md)
+ [第十七讲:正交矩阵和Gram-Schmidt正交化法](chapter17.md)
+ [第十八讲:行列式及其性质](chapter18.md)
+ [第十九讲:行列式公式和代数余子式](chapter19.md)
+ [第二十讲:克拉默法则、逆矩阵、体积](chapter20.md)
+ [第二十一讲:特征值和特征向量](chapter21.md)
+ [第二十二讲:对角化和$A$的幂](chapter22.md)
+ [第二十三讲:微分方程和$e^{At}$](chapter23.md)
+ [第二十四讲:马尔科夫矩阵、傅里叶级数](chapter24.md)
+ [第二十五讲:复习二](chapter25.md)
+ [第二十六讲:对称矩阵及正定性](chapter26.md)
+ [第二十七讲:复数矩阵和快速傅里叶变换](chapter27.md)
+ [第二十八讲:正定矩阵和最小值](chapter28.md)
+ [第二十九讲:相似矩阵和若尔当形](chapter29.md)
+ [第三十讲:奇异值分解](chapter30.md)
+ [第三十一讲:线性变换及对应矩阵](chapter31.md)
+ [第三十二讲:基变换和图像压缩](chapter32.md)
+ [第三十三讲:单元检测3复习](chapter33.md)
+ [第三十四讲:左右逆和伪逆](chapter34.md)
+ [第三十五讲:期末复习](chapter35.md)
96 changes: 96 additions & 0 deletions docs/linalg/chapter01.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@

# 第一讲:方程组的几何解释

我们从求解线性方程组来开始这门课,从一个普通的例子讲起:方程组有$2$个未知数,一共有$2$个方程,分别来看方程组的“行图像”和“列图像”。

有方程组$\begin{cases}2x&-y&=0\\-x&+2y&=3\end{cases}$,写作矩阵形式有$\begin{bmatrix}2&-1\\-1&2\end{bmatrix}\begin{bmatrix}x\\y\end{bmatrix}=\begin{bmatrix}0\\3\end{bmatrix}$,通常我们把第一个矩阵称为系数矩阵$A$,将第二个矩阵称为向量$x$,将第三个矩阵称为向量$b$,于是线性方程组可以表示为$Ax=b$。

我们来看行图像,即直角坐标系中的图像:


```python
%matplotlib inline
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
import seaborn as sns

x = [-2, 2, -2, 2]
y = [-4, 4, 0.5, 2.5]

fig = plt.figure()
plt.axhline(y=0, c='black')
plt.axvline(x=0, c='black')

plt.plot(x[:2], y[:2], x[2:], y[2:])

plt.draw()
```


![png](img/chapter01_1_0.png)



```python
plt.close(fig)
```

上图是我们都很熟悉的直角坐标系中两直线相交的情况,接下来我们按列观察方程组$x\begin{bmatrix}2\\-1\end{bmatrix}+y\begin{bmatrix}-1\\2\end{bmatrix}=\begin{bmatrix}0\\3\end{bmatrix}$(我们把第一个向量称作$col_1$,第二个向量称作$col_2$,以表示第一列向量和第二列向量),要使得式子成立,需要第一个向量加上两倍的第二个向量,即$1\begin{bmatrix}2\\-1\end{bmatrix}+2\begin{bmatrix}-1\\2\end{bmatrix}=\begin{bmatrix}0\\3\end{bmatrix}$。

现在来看列图像,在二维平面上画出上面的列向量:


```python
from functools import partial

fig = plt.figure()
plt.axhline(y=0, c='black')
plt.axvline(x=0, c='black')
ax = plt.gca()
ax.set_xlim(-2.5, 2.5)
ax.set_ylim(-3, 4)

arrow_vector = partial(plt.arrow, width=0.01, head_width=0.1, head_length=0.2, length_includes_head=True)

arrow_vector(0, 0, 2, -1, color='g')
arrow_vector(0, 0, -1, 2, color='c')
arrow_vector(2, -1, -2, 4, color='b')
arrow_vector(0, 0, 0, 3, width=0.05, color='r')

plt.draw()
```


![png](img/chapter01_4_0.png)



```python
plt.close(fig)
```

如图,绿向量$col_1$与蓝向量(两倍的蓝绿向量$col_2$)合成红向量$b$。

接着,我们继续观察$x\begin{bmatrix}2\\-1\end{bmatrix}+y\begin{bmatrix}-1\\2\end{bmatrix}=\begin{bmatrix}0\\3\end{bmatrix}$,$col_1,col_2$的某种线性组合得到了向量$b$,那么$col_1,col_2$的所有线性组合能够得到什么结果?它们将铺满整个平面。

下面进入三个未知数的方程组:$\begin{cases}2x&-y&&=0\\-x&+2y&-z&=-1\\&-3y&+4z&=4\end{cases}$,写作矩阵形式$A=\begin{bmatrix}2&-1&0\\-1&2&-1\\0&-3&4\end{bmatrix},\ b=\begin{bmatrix}0\\-1\\4\end{bmatrix}$。

在三维直角坐标系中,每一个方程将确定一个平面,而例子中的三个平面会相交于一点,这个点就是方程组的解。

同样的,将方程组写成列向量的线性组合,观察列图像:$x\begin{bmatrix}2\\-1\\0\end{bmatrix}+y\begin{bmatrix}-1\\2\\-3\end{bmatrix}+z\begin{bmatrix}0\\-1\\4\end{bmatrix}=\begin{bmatrix}0\\-1\\4\end{bmatrix}$。易知教授特意安排的例子中最后一个列向量恰巧等于等式右边的$b$向量,所以我们需要的线性组合为$x=0,y=0,z=1$。假设我们令$b=\begin{bmatrix}1\\1\\-3\end{bmatrix}$,则需要的线性组合为$x=1,y=1,z=0$。

我们并不能总是这么轻易的求出正确的线性组合,所以下一讲将介绍消元法——一种线性方程组的系统性解法。

现在,我们需要考虑,对于任意的$b$,是否都能求解$Ax=b$?用列向量线性组合的观点阐述就是,列向量的线性组合能否覆盖整个三维向量空间?对上面这个例子,答案是肯定的,这个例子中的$A$是我们喜欢的矩阵类型,但是对另一些矩阵,答案是否定的。那么在什么情况下,三个向量的线性组合得不到$b$?

——如果三个向量在同一个平面上,问题就出现了——那么他们的线性组合也一定都在这个平面上。举个例子,比如$col_3=col_1+col_2$,那么不管怎么组合,这三个向量的结果都逃不出这个平面,因此当$b$在平面内,方程组有解,而当$b$不在平面内,这三个列向量就无法构造出$b$。在后面的课程中,我们会了解到这种情形称为**奇异****矩阵不可逆**

下面我们推广到九维空间,每个方程有九个未知数,共九个方程,此时已经无法从坐标图像中描述问题了,但是我们依然可以从求九维列向量线性组合的角度解决问题,仍然是上面的问题,是否总能得到$b$?当然这仍取决于这九个向量,如果我们取一些并不相互独立的向量,则答案是否定的,比如取了九列但其实只相当于八列,有一列毫无贡献(这一列是前面列的某种线性组合),则会有一部分$b$无法求得。

接下来介绍方程的矩阵形式$Ax=b$,这是一种乘法运算,举个例子,取$A=\begin{bmatrix}2&5\\1&3\end{bmatrix},\ x=\begin{bmatrix}1\\2\end{bmatrix}$,来看如何计算矩阵乘以向量:

* 我们依然使用列向量线性组合的方式,一次计算一列,$\begin{bmatrix}2&5\\1&3\end{bmatrix}\begin{bmatrix}1\\2\end{bmatrix}=1\begin{bmatrix}2\\1\end{bmatrix}+2\begin{bmatrix}5\\3\end{bmatrix}=\begin{bmatrix}12\\7\end{bmatrix}$
* 另一种方法,使用向量内积,矩阵第一行向量点乘$x$向量$\begin{bmatrix}2&5\end{bmatrix}\cdot\begin{bmatrix}1&2\end{bmatrix}^T=12,\ \begin{bmatrix}1&3\end{bmatrix}\cdot\begin{bmatrix}1&2\end{bmatrix}^T=7$。

教授建议使用第一种方法,将$Ax$看做$A$列向量的线性组合。
Loading

0 comments on commit 957b754

Please sign in to comment.