这仅仅作为我学习中的一个记录,因为目前大一下,码代码快一年了,好像还没有实现过行列式的计算代码,今天正好碰到此类问题,所以进行了代码实现。
目前未发现此代码漏洞,如发现漏洞,欢迎交流。
基于对角线法计算行列式的代码实现
基本原理:(参考(3条消息) 行列式的计算方法(含四种,看完就会!)_肖前辉爱吃烧茄子的博客-CSDN博客_行列式的计算方法https://blog.csdn.net/weixin_46664967/article/details/113621821
代码实现图片如下:
内容:
void cal(){
//原数组data m 行 n 列 当 m == n ,计算行列式
for(int i = 0;i < m; ++i)
for(int j = 0;j < n; ++j){
num[i][j] = data[i][j];
num[i][j + n] = num[i][j];
}//开到了2 * n - 1列多出来的一列别管
int res = 0,ans = 0,tmp = 1;
//计算红色线
for(int j = 0;j < n; ++j){
for(int i = 0;i < m; ++i){
tmp *= num[i][j+i];//列和次数的关系
}
res += tmp;tmp = 1;
}
//计算蓝色线
for(int j = 0;j < n; ++j){
for(int i = 0;i < m; ++i){
tmp *= num[m-i-1][j+i];
}
ans += tmp; tmp = 1;
}
cout<<res - ans<<endl;//输出行列式的值
}
简单验证: