本文涉及知识点
1 二阶行列式及三阶行列式
行列式的行列一定相等。
∣ a 11 a 12 a 21 a 22 ∣ = a 11 a 22 − a 12 a 21 , 即主对角线减副对角线 \begin{vmatrix} a_{11}&a_{12}\\ a_{21}&a_{22}\\ \end{vmatrix}=a_{11}a_{22}-a_{12}a_{21},即主对角线减副对角线 a11a21a12a22 =a11a22−a12a21,即主对角线减副对角线
∣ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ∣ = a 11 = f ( 1 ) + f ( 2 ) + f ( 3 ) − g ( 1 ) − g ( 2 ) − g ( 3 ) f ( i ) = a 1 i + a 2 ( i + 1 ) a 3 ( i + 2 ) , g ( i ) = a 1 i a 2 ( i − 1 ) a 3 ( i − 2 ) 扩充一下令 a i j = a i ( j − 3 ) , j > 3 ; a i j = a i ( j + 3 ) , j < 1 \begin{vmatrix} a_{11}&a_{12}&a_{13}\\ a_{21}&a_{22}&a_{23}\\ a_{31}&a_{32}&a_{33}\\ \end{vmatrix}=a_{11}=f(1)+f(2)+f(3)-g(1)-g(2)-g(3)\\ f(i)=a_{1i}+a_{2(i+1)}a_{3(i+2)},g(i)=a_{1i}a_{2(i-1)}a_{3(i-2)}扩充一下令a_ij=a_i(j-3),j>3;a_ij = a_i(j+3),j < 1 a11a21a31a12a22a32a13a23a33 =a11=f(1)+f(2)+f(3)−g(1)−g(2)−g(3)f(i)=a1i+a2(i+1)a3(i+2),g(i)=a1ia2(i−1)a3(i−2)扩充一下令aij=ai(j−3),j>3;aij=ai(j+3),j<1
2 全排列及其逆序
把n个不同的元素排成一列,叫做这n个元素的全排列(简称排列)。
一个排列中所有逆序的总数叫做这个排列的逆序数。逆序数为奇数的排列叫做奇排列,逆序数为偶数的排列叫做偶排列。
3 n阶行列式的定义
∣ a 11 a 12 a 13 a 21 a 22 a 23 a 31 a 32 a 33 ∣ = ∑ ( − 1 ) t a 1 p 1 a 2 p 2 a 3 p 3 \begin{vmatrix} a_{11}&a_{12}&a_{13}\\ a_{21}&a_{22}&a_{23}\\ a_{31}&a_{32}&a_{33}\\ \end{vmatrix}=\sum (-1)^ta_{1p1}a_{2p2}a_{3p3} a11a21a31a12a22a32a13a23a33 =∑(−1)ta1p1a2p2a3p3
其中t为排列 p 1 p 2 p 3 的逆序数, ∑ 表示对 1 , 2 , 3 三个数的所有排列 p 1 , p 2 , p 3 取和 p_1p_2p_3的逆序数,\sum 表示对1,2,3三个数的所有排列p_1,p_2,p_3取和 p1p2p3的逆序数,∑表示对1,2,3三个数的所有排列p1,p2,p3取和。
n阶行列式,记作
∣ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋮ a n 1 a n 2 ⋯ a n n ∣ \begin{vmatrix} a_{11}&a_{12}&\cdots &a_{1n}\\ a_{21}&a_{22}&\cdots&a_{2n}\\ \vdots&\vdots& &\vdots\\ a_{n1}&a_{n2}&\cdots&a_{nn}\\ \end{vmatrix} a11a21⋮an1a12a22⋮an2⋯⋯⋯a1na2n⋮ann
简记作 d e t ( a i j ) ,其中 a i j 为行列式 D 的 ( i , j ) 元 det(a_{ij}),其中a{ij}为行列式D的(i,j)元 det(aij),其中aij为行列式D的(i,j)元。
特别地: ∣ a ∣ = a \begin{vmatrix}a\end{vmatrix}=a a =a
上三角行列式:主对角线以下全部是0。下三角行列式,主对角线以上全为0。上三角行列式=主对角线行列式之积,下三角行列式=主对角线之积。
4 对换
在排列中,将任意两个元素对调,其余的元素不动,这种做出新排列的手续叫做对换。将相邻两个元素对换,叫做相邻对换。
定理1 一个排列中的任意两个元素对换,排列改变奇偶性。
证明 : 相邻对换改变奇偶性,逆序对加一或减一。将 a i 和 a i + n a_i和a_{i+n} ai和ai+n交换,相当于:一,将a_i向右相邻对换n次,新下标变成i+n。二, a i + n a_{i+n} ai+n的下标变成i+n-1,向左相邻对换n-1次。共进行了2n-1次相邻对换,奇数次相邻对换。
证明2 : a i 需向右移动 n 次, a i + n 需要左移 n 次。 a i 到 a i + n 之间共 n − 1 个数,左移、右移各一次。 a_i需向右移动n次,a_{i+n}需要左移n次。a_i到a_{i+n}之间共n-1个数,左移、右移各一次。 ai需向右移动n次,ai+n需要左移n次。ai到ai+n之间共n−1个数,左移、右移各一次。所有元素下标共变化:2n+2(n-1)。一次相邻对换,下标变换2,故共相邻对换2n-1次。
推论 奇排列变成标准排列的对换次数为奇数,偶排列变成标准排列的对换次数为偶数。
定理2 n阶行列式也可以定义为:
D = ∑ ( − 1 ) t a p 1 1 a p 2 2 ⋅ a p n n D=\sum (-1)^t a_{p_11}a_{p_2 2}\cdot a_{p_n n} D=∑(−1)tap11ap22⋅apnn 其中t 为行排列 p 1 p 2 ⋅ p n p_1p_2\cdot p_n p1p2⋅pn的逆序对。
5 行列式的性质
D = ∣ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋮ a n 1 a n 2 ⋯ a n n ∣ , D T = ∣ a 11 a 21 ⋯ a n 1 a 12 a 22 ⋯ a n 2 ⋮ ⋮ ⋮ a 1 n a 2 n ⋯ a n n ∣ D=\begin{vmatrix} a_{11}&a_{12}&\cdots &a_{1n}\\ a_{21}&a_{22}&\cdots&a_{2n}\\ \vdots&\vdots& &\vdots\\ a_{n1}&a_{n2}&\cdots&a_{nn}\\ \end{vmatrix} ,D^T=\begin{vmatrix} a_{11}&a_{21}&\cdots &a_{n1}\\ a_{12}&a_{22}&\cdots&a_{n2}\\ \vdots&\vdots& &\vdots\\ a_{1n}&a_{2n}&\cdots&a_{nn}\\ \end{vmatrix} D= a11a21⋮an1a12a22⋮an2⋯⋯⋯a1na2n⋮ann ,DT= a11a12⋮a1na21a22⋮a2n⋯⋯⋯an1an2⋮ann
行列式 D T D^T DT称为行列式D的转置行列式。
性质1 行列式与它的转置行列式相等。
性质2 互换行列式的两行(列),行列式变号。
性质3 行列式的某一行(列)中所有的元素乘以通一数k,等于用数k乘此行列式。
性质4 : 行列式中如果有两行(列)元素成比例,则此行列式等于零。
性质5 : 若行列式的某一列的元素都是两数之和,例如第i列都是两数之和。则等于两个行列式之和。即D=D1+D2
D = ∣ a 11 a 12 ⋯ a 1 i + a 1 i ′ ⋯ a 1 n a 21 a 22 ⋯ a 2 i + a 2 i ′ ⋯ a 2 n ⋮ ⋮ ⋮ a n 1 a n 2 ⋯ a n i + a n i ′ ⋯ a n n ∣ D=\begin{vmatrix} a_{11}&a_{12}&\cdots& a_{1i}+a'{1i}&\cdots&a{1n}\\ a_{21}&a_{22}&\cdots& a_{2i}+a'{2i}&\cdots&a{2n}\\ \vdots&\vdots& &\vdots\\ a_{n1}&a_{n2}&\cdots& a_{ni}+a'{ni}&\cdots&a{nn}\\ \end{vmatrix} D= a11a21⋮an1a12a22⋮an2⋯⋯⋯a1i+a1i′a2i+a2i′⋮ani+ani′⋯⋯⋯a1na2nann
D 1 = ∣ a 11 a 12 ⋯ a 1 i ⋯ a 1 n a 21 a 22 ⋯ a 2 i ⋯ a 2 n ⋮ ⋮ ⋮ a n 1 a n 2 ⋯ a n i ⋯ a n n ∣ D 2 = ∣ a 11 a 12 ⋯ a 1 i ′ ⋯ a 1 n a 21 a 22 ⋯ a 2 i ′ ⋯ a 2 n ⋮ ⋮ ⋮ a n 1 a n 2 ⋯ a n i ′ ⋯ a n n ∣ D1=\begin{vmatrix} a_{11}&a_{12}&\cdots& a_{1i}&\cdots&a_{1n}\\ a_{21}&a_{22}&\cdots& a_{2i}&\cdots&a_{2n}\\ \vdots&\vdots& &\vdots\\ a_{n1}&a_{n2}&\cdots& a_{ni}&\cdots&a_{nn}\\ \end{vmatrix} D2=\begin{vmatrix} a_{11}&a_{12}&\cdots& a'{1i}&\cdots&a{1n}\\ a_{21}&a_{22}&\cdots& a'{2i}&\cdots&a{2n}\\ \vdots&\vdots& &\vdots\\ a_{n1}&a_{n2}&\cdots& a'{ni}&\cdots&a{nn}\\ \end{vmatrix} D1= a11a21⋮an1a12a22⋮an2⋯⋯⋯a1ia2i⋮ani⋯⋯⋯a1na2nann D2= a11a21⋮an1a12a22⋮an2⋯⋯⋯a1i′a2i′⋮ani′⋯⋯⋯a1na2nann
性质6 把行列式的某一行(列)的各元素乘以同一个数后加到另一行(列)对应的元素上去,行列式不变。
证明:拆分两个行列式,第二个行列式行(列)相同,故值为0。
例10 :D=D1D2。

D 1 = ∣ a 11 ⋯ a 1 k ⋮ ⋮ ⋮ a k 1 ⋯ a k k ∣ , D 2 = ∣ b 11 ⋯ a 1 n ⋮ ⋮ ⋮ b n 1 ⋯ b n n ∣ D1=\begin{vmatrix} a_{11}&\cdots&a_{1k}\\ \vdots&\vdots& \vdots\\ a_{k1}&\cdots&a_{kk}\\ \end{vmatrix}, D2=\begin{vmatrix} b_{11}&\cdots&a_{1n}\\ \vdots&\vdots& \vdots\\ b_{n1}&\cdots&b_{nn}\\ \end{vmatrix} D1= a11⋮ak1⋯⋮⋯a1k⋮akk ,D2= b11⋮bn1⋯⋮⋯a1n⋮bnn
注意 :k不一定等于n。
证明:对D1和D进行相同的行变换,使得D1是下三角行列式。对D2和D进行相同的行变换,使得D2是下三角行列式。D,D1,D2的值不变。由于D,D1,D2都是下三角行列式,故D=D1D2。
6 行列式按行(列)展开
在n阶行列式中,把(i,j)元 a i j a_{ij} aij所在的第i行和第j列划去后,留下来的n-1阶行列式叫做(i,j)元 a i j a_{ij} aij的余子式,记作 M i j M_{ij} Mij;记
A i j = ( − 1 ) i + j M i j , A_{ij}=(-1)^{i+j}M_{ij}, Aij=(−1)i+jMij, A i j A_{ij} Aij叫做元 a i j 的代数余子式 a_{ij}的代数余子式 aij的代数余子式。
引理 一个n阶行列式,如果其中第i行所有元素除(i,j)元 a i j a_{ij} aij外都为零,那么这行列式等于 a i j a_{ij} aij与它的代数余子式的乘积,即
D = a i j A i j D=a_{ij}A_{ij} D=aijAij
定理3 行列式等于它的任一行(列)的各元素与其对应的代数余子式乘积之和。
D = a i 1 A i 1 + a i 2 A i 2 + ⋯ + a i n A i n ( i = 1 , 2 ⋅ , n ) , D = a 1 j A 1 j + a 2 j A 2 j + ⋯ + a n j A n j ( j = 1 , 2 ⋅ , n ) , D=a_{i1}A_{i1}+a_{i2}A_{i2}+\cdots + a_{in}A_{in} (i=1,2\cdot ,n),\\ D=a_{1j}A_{1j}+a_{2j}A_{2j}+\cdots + a_{nj}A_{nj} (j=1,2\cdot ,n), D=ai1Ai1+ai2Ai2+⋯+ainAin(i=1,2⋅,n),D=a1jA1j+a2jA2j+⋯+anjAnj(j=1,2⋅,n),
证明 :D= D 1 + D 2 + ⋯ D n D_1+D_2+\cdots D_n D1+D2+⋯Dn,除第i行外, D j D_j Dj其它行等于D, D j ( i , j ) = a ( i , j ) D_j(i,j)=a(i,j) Dj(i,j)=a(i,j)第i其它列为0。
例12 证明范德蒙德行列式。
D n = ∣ 1 1 ⋯ 1 x 1 x 2 ⋯ x n x 1 2 x 2 2 ⋯ x n 2 ⋮ ⋮ ⋮ x 1 n − 1 x 2 n − 1 ⋯ x n n − 1 ∣ = Π n ≥ i > j ≥ 1 ( x i − x j ) D_n=\begin{vmatrix} 1&1&\cdots&1\\ x_1&x_2&\cdots&x_n\\ x_1^2&x_2^2&\cdots&x_n^2\\ \vdots&\vdots&&\vdots\\ x_1^{n-1}&x_2^{n-1}&\cdots&x_n^{n-1}\\ \end{vmatrix}=\Pi_{n\ge i > j \ge 1}(x_i-x_j) Dn= 1x1x12⋮x1n−11x2x22⋮x2n−1⋯⋯⋯⋯1xnxn2⋮xnn−1 =Πn≥i>j≥1(xi−xj)
数学归纳法证明 : D 2 D_2 D2显然成立。我们假定 D n − 1 D_{n-1} Dn−1成立。从第n行开始,后行减去前行的 x 1 x_1 x1倍,有
∣ 1 1 1 ⋯ 1 0 x 2 − x 1 x 3 − x 1 ⋯ x n − 1 0 x 2 ( x 2 − x 1 ) x 3 ( x 3 − x 1 ) ⋯ x n ( x n − x 1 ) ⋮ ⋮ ⋮ ⋮ 0 x 2 n − 2 ( x 2 − x 1 ) x 3 n − 2 ( x 3 − x 1 ) ⋯ x n n − 2 ( x n − x 1 ) ∣ \begin{vmatrix} 1&1&1& \cdots& 1\\ 0 &x_2-x_1& x_3-x1&\cdots& x_n-1\\ 0 &x_2(x_2-x1)&x_3(x_3-x_1)&\cdots& x_n(x_n-x1)\\ \vdots&\vdots&\vdots&&\vdots\\ 0&x_2^{n-2}(x_2-x_1)&x_3^{n-2}(x_3-x_1)& \cdots& x_n^{n-2}(x_n-x_1) \end{vmatrix} 100⋮01x2−x1x2(x2−x1)⋮x2n−2(x2−x1)1x3−x1x3(x3−x1)⋮x3n−2(x3−x1)⋯⋯⋯⋯1xn−1xn(xn−x1)⋮xnn−2(xn−x1)
从第二列到第n列分别提取 ( x 2 − x 1 ) , ( x 3 − x 1 ) , ⋯ ( x n − x 1 ) (x_2-x_1),(x_3-x_1),\cdots (x_n-x_1) (x2−x1),(x3−x1),⋯(xn−x1) ,提取后D变成D',D'= a 11 A 11 , A 11 a_{11}A_{11},A_{11} a11A11,A11就是n-1阶范德蒙德行列式。
推论 行列式某一行(列)的元素与另外一行(列)的对应元素的代数余子式乘积之和等于0。
a i 1 A j 1 + a i 2 A j 2 + ⋯ a i n A j n = 0 , i ≠ j , a 1 i A 1 j + a 2 i A 2 j + ⋯ a n j A n j = 0 , i ≠ j , a_{i1}A_{j1}+a_{i2}A_{j2}+\cdots a_{in}A_{jn}=0,i \neq j,\\ a_{1i}A_{1j}+a_{2i}A_{2j}+\cdots a_{nj}A_{nj}=0,i \neq j, ai1Aj1+ai2Aj2+⋯ainAjn=0,i=j,a1iA1j+a2iA2j+⋯anjAnj=0,i=j,
证明: D'第i行等于D的第j行,其它行等于D对应行。D'按第i行展开就是上式,D'有相同的行,故其值为0。
7 克拉默法则
含有n个未知数 x 1 , x 2 , ⋯ , x n x_1,x_2,\cdots,x_n x1,x2,⋯,xn的n 个线性方程的方程组
{ a 11 x 1 + a 12 x 2 + ⋯ + a 1 n x n = b 1 , a 21 x 1 + a 22 x 2 + ⋯ + a 2 n x n = b 2 , ⋯ a n 1 x 1 + a n 2 x 2 + ⋯ + a n n x n = b n , \begin{cases} a_{11}x_1+a_{12}x_2+\cdots + a_{1n}x_n=b_1,\\ a_{21}x_1+a_{22}x_2+\cdots + a_{2n}x_n=b_2,\\ \cdots \\ a_{n1}x_1+a_{n2}x_2+\cdots + a_{nn}x_n=b_n,\\ \end{cases} ⎩ ⎨ ⎧a11x1+a12x2+⋯+a1nxn=b1,a21x1+a22x2+⋯+a2nxn=b2,⋯an1x1+an2x2+⋯+annxn=bn,
克拉默法则 如果线性方程组的系数行列式不等于0,即:
∣ a 11 ⋯ a 1 n ⋮ ⋮ a n 1 ⋯ a m n ∣ ≠ 0 \begin{vmatrix} a_{11}& \cdots & a_{1n}\\ \vdots&&\vdots\\ a_{n1}& \cdots & a_{mn}\\ \end{vmatrix}\neq 0 a11⋮an1⋯⋯a1n⋮amn =0
那么方程组有唯一解 x 1 = D 1 D , x 2 = D 2 D , ⋯ , x n = D n D x_1=\frac {D_1}{D},x_2=\frac {D_2}{D},\cdots ,x_n=\frac {D_n}{D} x1=DD1,x2=DD2,⋯,xn=DDn
D i D_i Di的第i列是常数b,其它列和D相同。
定理4 如果线性方程组的系数行列式D ≠ 0 \neq 0 =0,则一定有解,且有唯一解。
定理4' :如果线性方程组无解或有两个不同的解,则它系数行列式为0。
常数项 b 1 , b 2 ⋯ b n b_1,b_2\cdots b_n b1,b2⋯bn全为0,则称方程组为齐次线性方程组;否则称为非齐次线性方程组。
定理5 :如果齐次线性方程的系数行列式 D ≠ 0 D \neq 0 D=0,则只有唯一解,即0解。
定理5':如果齐次方程组有非零解,则它的系数行列式必为零。

扩展阅读
| 算法为骨,CAD为魂 |
|---|
| 亲士工具箱:支持中望CAD2024、AutoCad2013及以上,多年承接CAD项目的精华 |
| 工作中遇到的问题,可以按类别查阅鄙人的算法文章,请点击《算法与数据汇总》。 |
| 学习算法:按章节学习《喜缺全书算法册》,大量的题目和测试用例,打包下载。重视操作 |
| 活到老,学到老。明朝中后期,大约50%的进士能当上堂官(副部及更高);能当上堂官的举人只有十余人。 |
| 子墨子言之:事无终始,无务多业。也就是我们常说的专业的人做专业的事。 |
视频课程
先学简单的课程,请移步CSDN学院,听白银讲师(也就是鄙人)的讲解。
https://edu.csdn.net/course/detail/38771
如何你想快速形成战斗了,为老板分忧,请学习C#入职培训、C++入职培训等课程
https://edu.csdn.net/lecturer/6176
测试环境
操作系统:win7 开发环境: VS2019 C++17
或者 操作系统:win10 开发环境: VS2022 C++17
如无特殊说明,本算法用**C++**实现。
