C++ 矩阵求逆,该如何处理
C++ 矩阵求逆
各位高手,本人有个亟待解决的问题,就是矩阵求逆中如何实现求矩阵的行列式与伴随矩阵中的元素,其中矩阵为自行输入,恳请指点,感激不尽!
------解决方案--------------------
我这里没有伴随矩阵的计算啊,就这两个
行列式计算
各位高手,本人有个亟待解决的问题,就是矩阵求逆中如何实现求矩阵的行列式与伴随矩阵中的元素,其中矩阵为自行输入,恳请指点,感激不尽!
------解决方案--------------------
我这里没有伴随矩阵的计算啊,就这两个
行列式计算
- C/C++ code
#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; }