zoukankan      html  css  js  c++  java
  • 基础线性代数大记 (一)前言与行列式的定义


    前言·参考资料

    学完某个知识的时候似乎会进入贤者时间。

    参考资料:

    Bill-Yang的博客

    《信息学竞赛中的线性代数》 -- 董克凡

    《线性代数》 -- __debug

    OI综合题单》 -- command_block


    行列式

    矩阵 (A) 的行列式用 (|A|)({ m det}(A)) 表示。

    定义

    对于一个 n*n 的矩阵 (A)(|A| = sumlimits_{sigma}sign(sigma)a_{1,sigma_1}a_{2,sigma_2}cdots a_{n,sigma_n}) , 其中 (sigma) 为 n 阶排列, (sign(sigma)egin{cases}-1, ;; sigma的逆序对数是奇数 \ +1, ;; sigma的逆序对数是偶数1end{cases})

    等价定义

    [|A| = sum_{j=1}^n(-1)^{i+j}a_{i,j}M_{i,j} ag{$forall1 le i le n$} ]

    其中, (M_{i,j}) 为矩阵 (A) 删去第 i 行与第 j 列后的 n-1 阶矩阵的行列式的值, 称为 A 的余子式。(删去某一行后, 要以被删去行的前一行和后一行每列对接的方式拼接, 删去列类似)

    例子

    对于二元一次方程组

    [left[egin{array}{cccc} a_{11} & a_{12} \ a_{21} & a_{22} end{array} ight] * left[egin{array}{cccc} x_1 \ x_2 end{array} ight] = left[egin{array}{cccc} b_1 \ b_2 end{array} ight] ]

    其解可表示为 (x_1 = dfrac{b_1a_{22}-b_2a_{12}}{a_{11}a_{12}-a_{12}a_{21}})(x_2=dfrac{b_2a_{11}-b_1a_{21}}{a_{11}a_{22}-a_{12}a_{21}})

    用行列式来表示 (a_{11}a_{12}-a_{12}a_{21}) :

    [left|left[egin{array}{cccc} a_{11} & a_{12} \ a_{21} & a_{22} end{array} ight] ight| = a_{11}a_{22}-a_{12}a_{21} ]

    用行列式来表示解:

    [x_1 = frac{ left|left[egin{array}{cccc} b_1 & a_{12} \ b_2 & a_{22} end{array} ight] ight| } { left|left[egin{array}{cccc} a_{11} & a_{12} \ a_{21} & a_{22} end{array} ight] ight| } , ; ; x_2 = frac{ left|left[egin{array}{cccc} a_{11} & b_1 \ a_{21} & b_2 end{array} ight] ight| } { left|left[egin{array}{cccc} a_{11} & a_{12} \ a_{21} & a_{22} end{array} ight] ight| } ]

    性质

    1. (|A| = |A^T|)

    2. (|I| = 1), 推广:(left|left[egin{array}{c} lambda_1 & & 0\ & ddots & \ 0& & lambda_nend{array} ight] ight| = prodlimits_{i=1}^n lambda_i) 。((I) 是矩阵乘法的单位元, 称为单位矩阵, 就是除了左上到右下那条对角线都为 1 之外, 其他元素都为 0 的矩阵)

    3. (|A*B| = |A| * |B|)

    4. (left|left[egin{array}{cccc} A & 0 \ 0 & B end{array} ight] ight| = |A|*|B|)

    5. 若矩阵某一行或某一列的数都表示为两数之和, 则可进行分解:

      (left|left[egin{array}{cccc} a_{11}+b_{11} & cdots & a_{1n}+b{1n} \ a_{21} & cdots & a_{2n} \ vdots & ddots & vdots \ a_{n1} & cdots & a_{nn}end{array} ight] ight| = left|left[egin{array}{cccc} a_{11} & cdots & a_{1n} \ a_{21} & cdots & a_{2n} \ vdots & ddots & vdots \ a_{n1} & cdots & a_{nn}end{array} ight] ight| + left|left[egin{array}{cccc} b_{11} & cdots & b_{1n} \ a_{21} & cdots & a_{2n} \ vdots & ddots & vdots \ a_{n1} & cdots & a_{nn}end{array} ight] ight|)

    6. 对矩阵的某一行或某一列同乘一个数 k 后, 行列式变为原矩阵行列式的 k 倍。

    7. 把矩阵的某一行加上另一行的若干倍或把矩阵某一列加上另一列的若干倍, 行列式不变

    8. 上三角矩阵 满足当 (i>j) 时, (a_{ij}=0)下三角矩阵 满足当 (i<j) 时, (a_{i,j}=0) , 对于这两种矩阵, 行列式为主对角线上元素的乘积。

    9. 互换矩阵的某两行或某两列, 行列式变成原矩阵行列式的 -1 倍, 从这个性质推出, 如果矩阵有某两行或某两列相等, 则其行列式为 0 .

    求值

    利用性质 6~9 , 可以用高斯消元求矩阵的行列式。

    附录:性质的证明

    1. 套第一个定义,显然。

    2. (A={a_{ij}})(B = {b_{ij}}) , 则:

      [|A*B| = sumlimits_{sigma}sign(sigma)[sumlimits_{k=1}^n a_{1k}*b_{ksigma_1}]*[sumlimits_{k=1}^n a_{2k}*b_{ksigma_2}]*cdots*[sumlimits_{k=1}^n a_{nk}*b_{ksigma_n}] \ = cdots \ =[sumlimits_{sigma}sign(sigma)a_{1,sigma_1}a_{2,sigma_2}cdots a_{n,sigma_n}] * [sumlimits_{sigma}sign(sigma)b_{1,sigma_1}b_{2,sigma_2}cdots b_{n,sigma_n}] ]

      我不会证了。

    3. 套第一个定义展开 (|A|*|B|) , 显然。


    1. 这个是下面几个的基础, 证明了这个, 下面几个证明行的情况成立就行了。这个其实比较显然, 要证明 (sumlimits_{sigma}sign(sigma)a_{1,sigma_1}a_{2,sigma_2}cdots a_{n,sigma_n} = sumlimits_{sigma}sign(sigma)a_{sigma_1,1}a_{sigma_2,2}cdots a_{sigma_n,n})

      , 观察 (a_{1,sigma_1}a_{2,sigma_2}cdots a_{n,sigma_n}) , 把这些东西按照第二个下标(即 (sigma_i))从小到大排序, 就成了 (a_{eta_1,1}a_{eta_2,2}cdots a_{eta_n,n}) , 如果 (sigma_i)(sigma_j) 为逆序对, 排序后它们的第一个下标 (j)(i) 也必然构成逆序对。 然后就比较显然了。


    1. 挺显然的
    2. 依然是挺显然的
    3. 根据 4. 和 8. 构造即可
    4. 显然
    5. 按照定义式一看一看, 找找对应关系, 也很显然
  • 相关阅读:
    CCF 201712-4
    图论_最短路径
    图论_查并集
    let和const
    Promise
    实现表单label两端对齐
    始终让footer在底部
    react——使用this.setState({ })修改state状态值
    react——css样式
    react脚手架
  • 原文地址:https://www.cnblogs.com/tztqwq/p/13634028.html
Copyright © 2011-2022 走看看