C++ 矩阵求逆
各位高手,本人有个亟待解决的问题,就是矩阵求逆中如何实现求矩阵的行列式与伴随矩阵中的元素,其中矩阵为自行输入,恳请指点,感激不尽!
[解决办法]
我这里没有伴随矩阵的计算啊,就这两个
行列式计算
#include <algorithm>#include <iostream>#include <fstream>#include <sstream>#include <vector>#include <cmath>using namespace std;int factorial(int step)//阶乘{ int result = 1; for(int i = 2; i < step+1; i++) result *= i; return result;}bool reversekeyindex(int *permutate,int step)//逆序数{ int num = 0; for(int i = 0; i < step; i++) { for(int j = 0; j < i; j++) if(permutate[i] < permutate[j]) num++; } if(num%2) return false; else return true;}int getdata(vector<double> &vec,_TCHAR* filename)//获取矩阵{ ifstream ifs(filename); int count; double temp; while(!ifs.eof()) { ifs>>temp; vec.push_back(temp); } ifs.close(); return count = sqrt(static_cast<double>(vec.size()));}int _tmain(int argc, _TCHAR* argv[]){ vector<double> vec; int step = getdata(vec, argv[1]); int *permutate = new int[step]; for(int i = 0; i < step; i++) permutate[i] = i; int result = 0; for(int i = 0; i < factorial(step); i++) { int temp = 1; for(int j =0 ; j < step; j++) { temp *= vec[j*step+permutate[j]]; } if(!reversekeyindex(permutate, step)) temp = -temp; result += temp; prev_permutation(permutate, permutate+step); } cout<<result<<endl; delete[] permutate; return 0;}