package gaodai;
import java.util.List;
/**
* N阶行列式计算
* @author 邱万迟
*
*/
public class DeterminantCalculation {
public DeterminantCalculation(List> determinant){
this.determinant = determinant;
this.sign = 1;
}
private List> determinant;
private int sign;
private int caculateTimes;
/**
* 转置
*/
public void transpose(){
int lineNum = determinant.size();
int columnNum = determinant.get(0).size();
for(int i = 0; i < lineNum; i++){
for(int j = i; j < columnNum; j++){
double t = determinant.get(i).get(j);
determinant.get(i).set(j,determinant.get(j).get(i));
determinant.get(j).set(i,t);
}
}
}
/**
* 获取行列式的值
* @return
*/
public double getValue(){
double temp = 1.0;
for(int i = 0; i < determinant.size(); i++){
temp *= determinant.get(i).get(i);
}
return Math.round((temp * getSign()) * 100)/100.0;
}
/**
* a行与b行互换(两行互换)
* @param determinant 行列式
* @param a 行号
* @param b 行号
* @throws Exception
*/
public void changeLine(int a,int b) throws Exception{
if(a < 1 || a > determinant.size() || b < 1 || b > determinant.size()){
throw new Exception("输入的行号不合法");
}
List aLine = determinant.get(a - 1);
List bLine = determinant.get(b - 1);
determinant.set(a - 1, bLine);
determinant.set(b - 1, aLine);
changeSign();
System.out.println("第" &#