1 #include "../inc/matrix.h"
5 #include <boost/numeric/ublas/operation.hpp>
6 #include <boost/numeric/ublas/vector_proxy.hpp>
7 #include <boost/numeric/ublas/matrix_proxy.hpp>
8 #include <boost/numeric/ublas/vector.hpp>
9 #include <boost/numeric/ublas/triangular.hpp>
19 SymMatrix5x5 InvertMatrix5x5(SymMatrix5x5 input)
21 using namespace boost::numeric::ublas;
23 matrix<double> A(input);
30 matrix<double> B(5,5);
32 for (
unsigned int i = 0; i < A.size1(); i++)
36 lu_substitute<const matrix<double>,matrix<double> >(A,B);
41 double determinant(Matrix3x3 a)
43 double det = -a(0,2)*a(1,1)*a(2,0) + a(0,1)*a(1,2)*a(2,0) + a(0,2)*a(1,0)*a(2,1) - a(0,0)*a(1,2)*a(2,1) - a(0,1)*a(1,0)*a(2,2) + a(0,0)*a(1,1)*a(2,2);
48 Matrix3x3 InvertMatrix(Matrix3x3 a)
50 using namespace boost::numeric::ublas;
57 double det = determinant( a );
63 for (
short j=0;j<3;j++)
65 for (
short i=0;i<3;i++)
69 matrix<double> c(2,2);
71 for (
short ii=0;ii<3;ii++)
76 for (
short jj=0;jj<3;jj++)
87 double tempdet = (c(0,0)*c(1,1)) - (c(1,0)*c(0,1));
89 inverse(j,i) = (pow(-1.0,i+j+2.0) * tempdet)/det;
119 Matrix2x2 InvertMatrix2(Matrix2x2 a)
122 double det = (a(0,0)*a(1,1))-(a(0,1)*a(1,0));
123 inverse(0,0) = a(1,1)/det;
124 inverse(0,1) = -a(0,1)/det;
125 inverse(1,0) = -a(1,0)/det;
126 inverse(1,1) = a(0,0)/det;