矩阵
基本概念
一个 $ n imes m $ 的矩阵是 $ n $ 行 $ m $ 列的举行整列,一般由数组成,下面是一个 $ 2 imes 3 $ 的矩阵. $$ egin{pmatrix}1&2&34&5&6 end{pmatrix} $$
单位矩阵 $$ I = egin{pmatrix} 1 & cdots & 0 vdots & ddots &vdots 0 & cdots &1end{pmatrix} $$ ,也就是对角线上为1,其他都为0的矩阵.
基本运算
矩阵加法
每行每列各个数各自相加
矩阵乘法
设 $ A $ 是 $ n imes m $ 的矩阵, $ B $ 是 $ m imes p $ 的矩阵,他们的乘积 $ C $ 是一个 $ n imes m $ 的矩阵, 其中
矩阵的幂
矩阵的转置
$ n imes m $ 的矩阵 $ A $ 的转置 $ A^T $ 是个 $ m imes n $ 的矩阵, 可以通过 $ A $ 交换行列得到.
矩阵的逆
只有 $ n imes n $ 的可能存在逆, 矩阵 $ A $ 的逆 $ B $ 满足
如果 $ B $ 存在,则 $ B $ 是唯一的,一般记做 $ A^{-1} $
性质
- 矩阵惩罚满足分配率,结合律,不一定满足交换律
- 矩阵假发满足交换律和结合率
算法
矩阵满足结合律,所以在求矩阵的幂的时候可以使用快速幂加速
行列式
基本概念
行列式是一个定义域为 $ n imes n $ 的矩阵, 值域为一个标量的函数, 通常记为 $ det(A) $
行列式也可以表示为 $ n $ 维广义欧几里得空间中的有向体积.
一个 $ n imes n $ 的行列式定义为 $$ det(A) = sum_{sigma in S_n}(-1){n(sigma)}prod_{i=1}na_{i,sigma(i)} $$
其中 $ S_n $ 表示集合 $ {1,2,3 cdots, n} $ 上置换的全体, $ n(sigma) $ 是对一个置换中逆序对的个数,逆序对的定义为满足 $ 1 le i < j le n $ 且 $ sigma(i) > sigma(j) $ 的 $ (i,j) $
性质
- 若矩阵中一行或者一列为0,那么该行列式的值为0
- 若矩阵中有一行有公因子k, 那么可以提出k, 使得 $ D=kD_1 $
- 若矩阵中有一行可以拆分成两个数之和,那么该行列式可以拆分成两个行列式相加(剩余的行和列不发生改变)
- 交换矩阵的两行,行列式取反
- 将一行的 $ k $ 倍加到另一行上,行列式不变
- 转置,行列式不变
- 有上述性质可以得到,如果该矩阵是上三角或者下三角矩阵时,行列式的值等于对角线的乘积
解线性方程组
基本概念
解线性方程组即求解方程组
也可以表示为 $ Ax = B $ , 其中 $ A $ 是 $ m imes n $ 的矩阵, $ x $ 是 $ n $ 维列向量, $ b $ 是 $ m $ 维列向量, 即
算法
- 高斯消元(Gaussian elimination)
矩阵的初等变换:
互换矩阵两行(列),用非零常熟乘某一行(列),某行(列)的 $ k $ 倍加到矩阵的另一行(列)(避免精度损失)
则上述方程组可以用一个增光矩阵表示.
于是我们只要进行初等变换使得上述矩阵称为上三角矩阵就行了.
- 克莱姆法则(Cramer rule)
当 $ A $ 为 $ n imes n $ 的矩阵时,可用Cramer rule进行求解, 方程的解为:
其中 $ D $ 是 $ A $ 的行列式, $ D_i $ 是将 $ A $ 中第 $ i $ 列替换成 $ b $ 后得到的矩阵的行列式.
例如上述列子中,求解 $ x_2 $ , 已知: $$ D = egin{pmatrix} 1 & 1 & 1 1 & 1 & 2 1 & 2 & 3 end{pmatrix} = -1, Degin{pmatrix} 1 & 1 & 1 1 & 2 & 2 1 & 6 & 3 end{pmatrix} = -3 $$
立刻就可以得到: $$ x_2 = frac{D_2}{D} = 3 $$
用途
- 求解可逆矩阵的逆矩阵:
对于一个 $ n imes n $ 的非奇异矩阵, 在矩阵右侧补上一个 $ n imes n $ 的单位矩阵, 对于这个 $ n imes (2n) $ 的矩阵进行高斯消元, 使得这个矩阵左侧变成一个 $ n imes n $ 的单位矩阵.这是右侧的 $ n imes n $ 的矩阵就是原矩阵的逆矩阵
2. 同模方程组也可使用高斯消元, 在除法时用乘逆元代替. 偶遇只有在模素数时, 非零数的逆元才唯一, 所以, 素数模才能保证有唯一解
3. 求解行列式的值.消成上三角矩阵就OK.
Expand
- 由于在消元过程中需要用到除法, 所以会有浮点运算精度问题, 不同的消元顺序可能会导致较大的差异, 推荐使用绝对值较大的主元进行消元, 能达到比较好的效果
- 可以使用辗转相除法进行消元,这样做可以保证稀疏为整数.
多项式
基本概念
给定一个数域 $ R $ , 变量 $ x $ , 一元多项式的形式是:
其中 $ a_i in R $ , 并且 $ a_n ot= 0 $
多项式中次数最高的项称为首项,首项的系数等于1的多项式称作首一多项式
多项式加法: 对应次数系数做加法.例如:
多项式乘法: 两个多项式的每一项都相乘, 例如:
性质
- $ (1 + x)^n = sum_{i=0}^n inom{n}{i}x^i $
- $ n $ 个点可以唯一确定一个 $ n $ 次多项式
- 一个 $ n $ 次多项式有 $ n $ 个负数根
算法
用牛顿迭代法求解方程的根
选择一个靠近多项式 $ f(x) $ 零点的点 $ x_0 $ 作为迭代初值, 计算 $ f(x_0) $ 和 $ mathop{{f}'}(x_0) $ , 解方程:
其中 $ i_1,i_2,cdots $ 是一个 $ n $ -的排列, $ i_j $ 表示将 $ j $ 位置上的元素换到了 $ i_j $ 位置.这样一个变换称作 $ n $ 次置换, 形成的群称作 $ n $ 次置换群. 所有的 $ n $ 次置换形成的群记做 $ S_n $ ,例如 $ S_3=left{ egin{pmatrix} 1&2&3 1 &2 &3 end{pmatrix}egin{pmatrix} 1&2&3 1 &3 &2 end{pmatrix}egin{pmatrix} 1&2&3 2 &1 &3 end{pmatrix}egin{pmatrix} 1&2&3 2 &3 &1 end{pmatrix}egin{pmatrix} 1&2&3 3 &1 &2 end{pmatrix}egin{pmatrix} 1&2&3 3 &2 &1 end{pmatrix} ight} $
还有一种表示置换的方法,若 $ (i_1,i_2,cdots,i_k) $ 满足 $ f(i_j)=i_{j+1} $ , 则称 $ (i_1,i_2,cdots,i_k) $ 为一个循环节, 显然, 一个置换可以拆成若干个循环节,所以可以将置换用循环节表示.
例如 $ S_3 $ 在这种情况下可以表示为 $ S_3={(1)(2)(3),(1)(2,3),(1,2)(3),(1,2,3),(1,3,2),(1,3)(2)} $
群作用
设 $ G $ 为群, $ S $ 为集合,考虑一个映射.
若此映射满足:
(a) $ 1_G circ x = x, forall x in S $
(b) $ (gh) circ x = g circ (h circ x), forall x in S, forall g, h in G $
则成映射 $ circ $ 是 $ G $ 上的一个群作用
$ S_3 $ 在 $ T = {a,b,c} $ 上有群作用 $ circ $ :
例如对于 $ f = egin{pmatrix} 1 & 2 & 3 2 & 3 & 1 end{pmatrix} $ , $ f circ a=f(a)=b, f circ b = f(b) = c, f circ c = f(c) = a $