{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 2.1 标量,向量,矩阵,张量" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "线性代数的内容主要关于这四种对象:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 标量" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "标量表示单独的一个数,通常用斜体小写字母表示,如 $s\\in \\mathbb R, n \\in \\mathbb N$。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 向量" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "向量是一个一维数组,这些数字有一定的顺序,可以通过下标获取对应的值,通常用粗体小写字母表示:$\\mathbf{x} \\in \\mathbb R^n$,表示元素取实数,且有 $n$ 个元素,它的元素用对应的斜体小写字母加下标表示:$x_1$。一般我们将向量写成列向量的形式:\n", "\n", "$$\n", "\\mathbf x = \\begin{bmatrix}\n", "x_1 \\\\\n", "x_2 \\\\\n", "\\cdots \\\\\n", "x_n\n", "\\end{bmatrix}\n", "$$\n", "\n", "有时候我们需要得到一个向量的子集,例如得到第 $1,3,6$ 个元素,那么我们可以令集合 $S = \\{1,3,6\\}$,然后用 $\\mathbf x_{S}$ 来表示这个子集。\n", "\n", "另外,我们用 $-$ 的下标表示去集合的补:$\\mathbf x_{-1}$ 表示除了 $x_1$ 之外 $\\mathbf x$ 中的所有元素,$\\mathbf x_{-S}$ 表示除了 $x_1, x_3, x_6$ 之外 $\\mathbf x$ 中的所有元素。 " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 矩阵" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "矩阵是一个二维数组,每个元素的下标有两个,通常用大写粗体字母表示:$\\mathbf A \\in \\mathbb R^{m\\times n}$ 表示取实值的 $m$ 行 $n$ 列矩阵,其元素用对应的小写斜体字母加下标表示:$A_{1,1}, A_{m,n}$。\n", "\n", "另外,我们用 $:$ 下标表示矩阵的一行或者一列:$\\mathbf A_{i,:}$ 第 $i$ 行,$\\mathbf A_{:,j}$ 第 $j$ 列。\n", "\n", "矩阵可以写成这样的形式:\n", "\n", "$$\n", "\\begin{bmatrix}\n", "A_{1,1} & A_{1,2} \\\\\n", "A_{2,1} & A_{2,2} \\\\\n", "\\end{bmatrix}\n", "$$\n", "\n", "有时候我们需要对矩阵进行逐元素操作,例如将函数 $f$ 应用到 $\\bf A$ 的所有元素上,此时我们用 $f({\\bf A})_{i,j}$ 表示。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 张量" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "张量是超过二维的数组,我们用 $\\sf A$ 表示张量,${\\sf A}_{i,j,k}$ 表示其元素(三维张量情况下)。" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 矩阵转置" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "矩阵的转置操作相当于沿着对角线翻转,定义为:\n", "\n", "$$\n", "\\mathbf A^\\top_{i,j} = \\mathbf A_{i,j}\n", "$$\n", "\n", "矩阵转置的转置等于矩阵本身:\n", "\n", "$$\\bf \\left(A^\\top\\right)^\\top=A$$\n", "\n", "转置将矩阵的形状从 $m\\times n$ 变成了 $n \\times m$。\n", "\n", "向量可以看成是只有一列的矩阵,因此也可以进行转置操作,有时候为了方便,我们可以使用行向量加转置的操作,如:$\\mathbf x=[x_1,x_2,x_3]^\\top$\n", "\n", "标量也可以看出是一行一列的矩阵,其转置等于自己:$a^\\top=a$。" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "### 矩阵加法和数乘" ] }, { "cell_type": "markdown", "metadata": { "collapsed": true }, "source": [ "加法即逐元素相加,要求两个矩阵的形状一样:\n", "\n", "$$\n", "\\mathbf{C = A+B}, C_{i,j}=A_{i,j}+B_{i,j}\n", "$$\n", "\n", "数乘即一个标量与矩阵相乘:\n", "\n", "$$\n", "\\mathbf D = a \\cdot \\mathbf B + c, D_{i,j}=a \\cdot B_{i,j}+c\n", "$$\n", "\n", "有时候我们允许使用一个矩阵和向量相加的形式,得到一个矩阵,把 $\\bf b$ 加到了 $C$ 的每一行上,本质上是构造了一个将 $\\bf b$ 按行复制的一个新矩阵,这种机制叫做 `broadcasting`:\n", "\n", "$$\n", "\\mathbf {C = A + b}, C_{i,j} = A_{i,j} + b_{j}\n", "$$" ] } ], "metadata": { "kernelspec": { "display_name": "Python 2", "language": "python", "name": "python2" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 2 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", "version": "2.7.6" } }, "nbformat": 4, "nbformat_minor": 0 }