计算行列式(C++)
来源:互联网 发布:java什么是反射 编辑:程序博客网 时间:2024/04/30 02:38
利用等值变换,
将左下角元素化为0(若对角不为1元素下方元素为1交换两行.)
结果为主对角之积
源码:
#include<iostream>#include<iomanip>using namespace std;//By Vove.class Determinant{public: Determinant(){ n=9; for(int i=0;i<9;i++) for(int j=0;j<9;j++) s[i][j]=0; } void Display(); bool Cal_result(); void Input(); void Out_result();private: int n; float s[9][9]; float result;};int Find(float temp[9][9],int i,int n);void Swap(float temp[9][9],int i,int j,int n);int main(){ cout<<"\t\t\t-------行列式计算--------"<<endl<<endl; while(1){ Determinant D; D.Input(); D.Cal_result(); D.Out_result(); } return 1;}void Determinant::Input(){ cout<<"行列数:"; cin>>n; cout<<endl<<"输入行列式:"<<endl; for(int i=0;i<n;i++) for(int j=0;j<n;j++) cin>>s[i][j]; cout<<"原式:"<<endl; Display();}bool Determinant::Cal_result(){ for(int i=0;i<n-1;i++){ if(s[i][i]){//对角线元素不为0 if(s[i][i]!=1.0) if(int j=Find(s,i,n)){ Swap(s,i,j,n); Display();} for(int m=i+1;m<n;m++){ if(s[m][i]){ float temp=-(s[m][i])/s[i][i]; for(int p=0;p<n;p++){//R(m)+tempRi s[m][p]=s[m][p]+temp*s[i][p]; } if(temp>0) cout<<"R"<<m+1<<"+"<<temp<<"R"<<i+1<<":"<<endl; else cout<<"R"<<m+1<<temp<<"R"<<i+1<<":"<<endl; Display(); } else continue; } } else {//若对角线元素为0 int m; for(m=i+1;m<n;m++){// if(s[m][i]){//使对角线元素非0 for(int p=0;p<n;p++)//Ri+Rm s[i][p]=s[m][p]+s[i][p]; break; } else continue; } if(m==n){ result=0; return true; } cout<<"R"<<i+1<<"+"<<"R"<<m+1<<endl; Display(); i--; } } float sum=s[0][0]; for(i=1;i<n;i++) sum=sum*s[i][i]; result=sum; return true;}int Find(float temp[9][9],int i,int n){ for(int m=i+1;m<n;m++) if(temp[m][i]==1.0) return m; return 0;}void Swap(float temp[9][9],int i,int j,int n){ cout<<"R"<<i+1<<"<-->R"<<j+1<<endl; for(int m=0;m<n;m++){ temp[i][m]+=temp[j][m]; temp[j][m]=temp[i][m]-temp[j][m]; temp[i][m]-=temp[j][m]; }}void Determinant::Display(){ for(int i=0;i<n;i++){ cout<<"|"; for(int j=0;j<n;j++) cout<<setw(8)<<s[i][j]; cout<<" |"<<endl; } cout<<endl;}void Determinant::Out_result(){ cout<<"="<<result<<endl<<endl;}
阅读全文
0 0
- 计算行列式(C++)
- [C++]N阶行列式计算
- n阶行列式计算----c语言实现(完结)
- 行列式计算
- 行列式计算
- 行列式计算
- 计算行列式(高斯消元?+Java+工具)
- n阶行列式计算Python和C语言实现
- 对行列式的计算
- 行列式计算(模拟递归)
- 行列式计算程序设计
- 计算行列式值
- 行列式的定义计算
- 计算n阶行列式
- ACM矩阵行列式计算
- 计算n阶行列式
- 计算N级行列式
- 复数矩阵计算行列式
- 创建线程
- 内存问题的排查工具和方法– Clang的AddressSanitizer
- 延时执行
- 北方多校十四场_Easy Number_二分+容斥原理
- ZJCoj qwb与支教 ( 容斥+二分
- 计算行列式(C++)
- Java学习笔记---枚举
- MySQL CPU 使用率高的原因和解决方法(来自aliyun官方文档)
- 应用数据管理工具类
- 队列组处理网络图片合成/水印
- Autoreleasepool
- Leetcode Week14
- ZJCoj qwb has a lot of Coins ( 博弈
- 逆矩阵(初等变换法)C++