【课程学习】行列式
讲真我也只是记得这个概念了,计算方法什么的都不太记得了,真是对不起我线性代数的老师。大概也是因为现在都是用的矩阵的运算,行列式接触的比较少吧。不过原来学习过的基础还在,复习起来还是很快的。
行列式的概念
二阶行列式
行列式是一种基本的数学工具,行列式理论是由求解n元线性方程组的实际需要建立、发展起来的。
行列式是有一个数值的,最简单的是二阶行列式,二阶行列式计算有一个很简单的公式:
$$
\left|\begin{array}{cccc}
a_{11} & a_{12}\\
a_{21} & a_{22} \end{array}\right|= a_{11}a_{22}-a_{12}a_{21}
$$
余子式和代数余子式
在提到n阶行列式之前先提一下余子式和代数余子式的概念。
- 余子式:将$a_{ij}$所在的第i行和第j列的所有元素从原先的行列式中划去得到的行列式即为$a_{ij}$的余子式。
- 代数余子式:在余子式前面添加符号$(-1)^{i+j}$。
我暂时还没找到相关的直接计算的matlab函数,但自己写来也不难,尤其是后面逆矩阵时候还有直接计算的公式。
拉普拉斯定理
对于高阶的行列式来说,它们的值可以通过低阶的行列式得出,这就是拉普拉斯定理。所以说虽然三阶的行列式也有对角线公式,但是我也没有记,还是更倾向于用公式直接推,也方便得很。拉普拉斯公式如下:
$$D=a_{i1}A_{i1}+a_{i2}A_{i2}+…+a_{in}A_{in}$$
或
$$D=a_{1j}A_{1j}+a_{2j}A_{2j}+…+a_{nj}A_{nj}$$
就是指高阶的行列式的值等于它的某一行或者某一列的值乘以它们的代数余子式。所以我们在计算的时候通常会选择0比较多的那一行或者一列进行计算。
而且需要注意的是对于一阶行列式,它的值就等于它的元素本身,而不是元素的绝对值。
在matlab里面可以直接用det()函数求一个n阶行列式的值。
>> A=[1,2,3;4,5,2;3,2,4]
A =
1 2 3
4 5 2
3 2 4
>> det(A)
ans =
-25
行列式的性质
行列式的性质和矩阵很像,但是不如矩阵随性,。这些性质可以帮助我们更好的求解行列式,具体如下:
- 行列式与它的转置行列式相等。
- 互换行列式的两行(列),行列式变号。
推论:如果行列式有两行(列)完全相同,则此行列式为零。 - 行列式的某一行(列)中所有的元素都乘以同一数k,等于用数k乘此行列式。
- 行列式中如果有两行(列)元素成比例,则此行列式等于零。
- 把行列式的某一列(行)的各元素乘以同一数然后加到另一列(行)对应的元素上去,行列式不变。
- 行列式的某一列(行)的各元素与另一列(行)对应的元素的代数余子式之积为零。
方阵的行列式
方阵的行列式具有如下的性质:
- $|A^T|=|A|$
- $|kA|=k^n|A|$
- $|AB|=|A||B|$
- $|AB|=|BA|$
克拉默法则
上文中有提到,行列式的产生和多元方程组的求解有关,而这就要提到克拉默法则了。对于一个方程组:
$$
\begin{equation}
\left\{
\begin{aligned}
a_{11}x_1+a_{12}x_2+…+a_{1n}x_n=b_1\\
a_{21}x_1+a_{22}x_2+…+a_{2n}x_n=b_1\\
…\\
a_{n1}x_1+a_{n2}x_2+…+a_{nn}x_n=b_1\\
\end{aligned}
\right.
\end{equation}$$
当$b_1,b_2,…,b_n$不全为0时,这个方程组就叫非齐次线性方程组;而当$b_1,b_2,…,b_n$全为0时,这个方程组叫齐次线性方程组。
对于上面这种形式的方程组,我们有一种很好的求解变量值的方法——克拉默法则。当然克拉默法则有使用的前提:所有系数组成的行列式D不能为0,仅适用于未知向量个数由于方程个数相等的方程组。
当$D\neq0$时,此方程组有唯一解:
$$x_i=\frac{D_i}{D}$$
其中$D_i$表示用列向量$[b_1,b_2,…,b_n]$替换D中第$i$列得到的行列式。
但是在matlab就不用这么麻烦了,直接使用\就好,结果依次对应不同变量的值。
>> A=[1,2,3;4,5,2;3,2,4];
>> B=[1;2;2];
>> A\B
ans =
0.4000
0.0000
0.2000