计算3x3矩阵的逆矩阵,不能使用先前的矩阵来计算逆

时间:2017-05-18 19:11:55

标签: c++ matrix inverse

我设法做了决定因素并让一个人进入他们自己的矩阵,这很好。我试图通过制作第二个矩阵" matb"来使用逆。并将其用作反向,如下所示。 mat[3][3]是我声明的矩阵,数字由用户选择,我使用:

#include<math.h>

在顶部,但我不明白为什么我的代码不会让我使用&#34; mat&#34;设置matb

int matb[3][3]= { {(mat[1][1] * mat[2][2]) - (mat[1][2] * mat[2][1]) , (mat[1][2] * mat[2][0]) - (mat[1][0] * mat[2][2]) ,(mat[1][0] * mat[2][1]) - (mat[1][1] * mat[2][0]) } , { (mat[0][2] * mat[2][1]) - (mat[0][1] * mat[2][2]) ,(mat[0][0] * mat[2][2]) - (mat[0][2] * mat[2][0]) ,(mat[0][1] * mat[2][0]) - (mat[0][0] * mat[2][1]) } , { (mat[0][1] * mat[1][2]) - (mat[0][2] * mat[1][1]), (mat[0][2] * mat[1][0]) - (mat[0][0] * mat[1][2]),(mat[0][0] * mat[1][1] )- (mat[0][1] * mat[1][0]) } }; 

这是一长串代码但数学上它是正确的所以我假设它是代码中我做错了。

我没有得到任何编译错误,当我将其打印到屏幕时,它会出现一串字母和数字,并且在进一步计算中使用时,进一步的计算确实非常错误。

这不是重复,因为我不打算打印反转,我只是打印它来检查代码是否正确,它不是。

int matb [3] [3] = {                 {mat [1] [1] * mat [2] [2] - mat [1] [2] * mat [2] [1],mat [1] [2] * mat [2] [0] - mat [1] [0] * mat [2] [2],mat [1] [0] * mat [2] [1] - mat [1] [1] * mat [2] [0]},                 {mat [0] [2] * mat [2] [1] - mat [0] [1] * mat [2] [2],mat [0] [0] * mat [2] [2] - mat [0] [2] * mat [2] [0],mat [0] [1] * mat [2] [0] - mat [0] [0] * mat [2] [1]},                 {mat [0] [1] * mat [1] [2] - mat [0] [2] * mat [1] [1],mat [0] [2] * mat [1] [0] - mat [0] [0] * mat [1] [2],mat [0] [0] * mat [1] [1] - mat [0] [1] * mat [1] [0]}             };

            cout << matb[x][y] << endl;         //somethings wrong, not doing it properly


            for (x = 0; x < 3; x++)
                for (y = 0; y < 3; y++)
            {
                matbt[y][x] = matb[x][y]; // wrong from matb
            }

        inverse = determinant*matbt[3][3];

        cout << inverse << endl;

这是我的代码,其余的是标准的return(0)_getch()ect

0 个答案:

没有答案