矩阵行列式计算
来源:互联网 发布:小筱邸数据 编辑:程序博客网 时间:2024/04/30 07:16
矩阵行列式计算
要求矩阵行列式,需要通过初等变换使得矩阵变为三角矩阵,然后对角线元素之积就是矩阵行列式的值。但是一般的初等变换可能导致浮点数的产生从而影响精度。因此这里使用辗转相除法进行初等变换。
本算法是将其转化为上三角矩阵。因此从第一行开始,处理第
对于第
http://blog.csdn.net/zhoufenqin/article/details/7779707
本题多了个取模的部分。。。
#include<bits/stdc++.h>using namespace std;typedef long long ll;int n;ll mod;ll a[207][207];ll getRet(){ ll ret=1; for(int i=0;i<n;i++) { if(a[i][i]<0) { ret=-ret; for(int k=i;k<n;k++) a[i][k]=-a[i][k]; } for(int j=i+1;j<n;j++) { for(int k=i;k<n;k++) a[i][k]%=mod,a[j][k]%=mod; while(a[j][i]) { if(a[j][i]<0) { ret=-ret; for(int k=i;k<n;k++) a[j][k]=-a[j][k]; } ll t=a[i][i]/a[j][i]; for(int k=i;k<n;k++) a[i][k]=(a[i][k]-t*a[j][k])%mod; for(int k=i;k<n;k++) swap(a[i][k],a[j][k]); ret=-ret; } } if(a[i][i]==0) return 0; ret=ret*a[i][i]%mod; } return (ret+mod)%mod;}int main(){ ios::sync_with_stdio(false);cin.tie(0); while(cin>>n>>mod) { for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>a[i][j]; cout<<getRet()<<endl; } return 0;}
0 0
- ACM矩阵行列式计算
- 复数矩阵计算行列式
- 矩阵行列式的计算
- 矩阵行列式计算
- GSL矩阵计算之行列式
- GSL计算矩阵的行列式值
- GSL计算矩阵的行列式值
- GSL矩阵计算之行列式2
- 矩阵行列式
- 行列式计算
- 行列式计算
- 行列式计算
- 计算n阶行列式和方阵逆矩阵
- c++实现4阶矩阵或行列式的计算
- 朴素的矩阵行列式计算之C++实现
- 使用vector实现矩阵,并计算N阶矩阵的行列式
- 矩阵求逆及行列式求值 - 未来再来添点更多矩阵计算功能
- 求解矩阵行列式
- Java.NET小例子
- OSI七层模型
- 天池大数据竞赛口碑商家客流量预测——时序预测(python-numpy-arima)
- transaction事务小结
- Clean Code 第一张--经典箴言
- 矩阵行列式计算
- Windows下Anaconda中安装tensorflow
- zookeeper的应用场景
- java基础 —— 数据结构
- 数据双向绑定的分析和简单实现
- Linux学习记录
- 2的次幂
- 知识库--微信开发(126)
- 非常全的java开源学习资料