首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++ 矩阵求逆,该如何处理

2012-03-26 
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;} 

热点排行