上一个随笔,我介绍了全排列的递归求解,其中还有排列的逆序数等代码,这次我来介绍如何使用全排列计算行列式的值。
使用全排列求行列式的值,简单的描述就是:
对这个行列式每一行选取一个数,这些数处于行列式的不同的列,将这些数相乘,结果记为A_1
将这些数的列标按行标从上到下的顺序排列,如果这个排列的逆序数为偶数,A_1加个正号+A_1,否则加个负号-A_1
由排列组合知识我们知道我们一共能从行列式中取出n!种情况。他们的和就是行列式的值
(刚开始用博客园,没找到插入latex的地方,我就截个图了。。。)
可见,我们需要实现以下功能:
1. 定义矩阵类
2. 获得矩阵列标的全排列
3. 对每个排列,在矩阵的每一行取一个数,并计算这个排列的逆序数,决定符号
4. 计算取出的数的求积,综合以上操作,求出行列式的值
逐个实现!
1. 首先,类定义的代码分别如下(成员函数逐一介绍):
public classMatrix {/*** author:ZhaoKe
* college: CUST*/
public introw;public intcolumn;public double[][] elements;publicMatrix() {t