Example #1
0
void test_matrix (int length) {

	printf ("\nTesting Square Matrix Of Order %i\n\n", length);

		double matrix_tmp[length*length]; // First Matrix; // First Matrix

		int i = 0; // For Loop Variable

		double k = 1.0;

		matrix_print(matrix_tmp, length);


		printf ("\n[*] Adding Numbers:\n");

		for ( i = 0; i < length*length; i++) {

				printf ("[k=%lf] Number[%i] = ", k, i);

				matrix_tmp[i] = k;

				printf (" %lf  (expected: [%lf])", matrix_tmp[i], k);

				k = k+1;

				printf ("	OK\n");
				printf (" K+1=%lf\n\n\n", k);

		}

		for ( i = 0; i < length; i++) {

			printf ("\nNumber[%i] = %lf", i, matrix_tmp[i]);

		}

		printf ("\n[*] Matrix Print:\n\n");


		matrix_print(matrix_tmp, length);

		printf ("\n[*]Determinant Calculation:");

		double det1 = matrix_det (matrix_tmp, length);

		printf ("	OK \n");

		printf ("Calculated Determinant = %lf\n", det1);


}
Example #2
0
int main( int argc, char ** argv)  {
  rng_type * rng   =  rng_alloc( MZRAN , INIT_DEV_RANDOM );
  matrix_type * A  =  matrix_alloc( 12 , 12 );
  matrix_type * B  =  matrix_alloc( 12 , 12 );
  matrix_random_init( A , rng );
  matrix_assign( B , A );
  matrix_pretty_print( A , "    A " , "%8.4f" );
  

#ifdef WITH_LAPACK
  matrix_inv( B );
  printf("\n");
  matrix_pretty_print( B , "inv(A)" , "%8.4f" );
  matrix_inplace_matmul( B , A );
  printf("\n");
  matrix_pretty_print( B , "    I " , "%8.4f" );
  {
    matrix_type * A3 = matrix_alloc(3,3);
    matrix_random_init( A3 , rng );
    matrix_iset( A3 , 0 , 0 , sin(0.98));
    printf("matrix_det3:%g  ",matrix_det3( A3 ));
    printf("matrix_det:%g \n",matrix_det( A3 ));
  }

  {
    matrix_type * A4 = matrix_alloc(4,4);
    matrix_random_init( A4 , rng );
    matrix_iset( A4 , 0 , 0 , sin(0.98));
    printf("matrix_det4:%g  ",matrix_det4( A4 ));
    printf("matrix_det:%g \n",matrix_det( A4 ));
  }
#endif

  matrix_free( A );
  matrix_free( B );
  rng_free( rng );
}
Example #3
0
void test_det3() {
  matrix_type * m = matrix_alloc(3  , 3 );
  rng_type * rng = rng_alloc(MZRAN , INIT_DEV_URANDOM ); 
  matrix_random_init( m , rng );

  {
    double det3 = matrix_det3( m );
    double det = matrix_det( m );

    test_assert_double_equal( det , det3 );
  }

  matrix_free( m );
  rng_free( rng );
}
Example #4
0
Matrix matrix_inv(const Matrix& A){
  int nrows = A.size();
  int ncols = A[0].size();
  assert(nrows== 2);
  assert(ncols == 2);

  Matrix inv(nrows, std::vector<double>(ncols));
  double det = matrix_det(A);

  inv[0][0] = A[1][1]/det;
  inv[0][1] = -A[0][1]/det;
  inv[1][0] = -A[1][0]/det;
  inv[1][1] = A[0][0]/det;
  return inv;
}
Example #5
0
void test_det4() {
  matrix_type * m = matrix_alloc(4  , 4 );
  rng_type * rng = rng_alloc(MZRAN , INIT_DEV_URANDOM ); 
  for (int i=0; i < 10; i++) {
    matrix_random_init( m , rng );
    {
      double det4 = matrix_det4( m );
      double det = matrix_det( m );
   
      test_assert_double_equal( det , det4 );
    }
  }

  matrix_free( m );
  rng_free( rng );
}
Example #6
0
// invertieren mit Adjunkter
struct mat matrix_invertieren_adjunkte(struct mat matrix_in)
{
    double det;
    struct mat tmp;
    tmp.spalten = matrix_in.spalten;
    tmp.zeilen = matrix_in.zeilen;
    tmp.matrix = (double *) calloc(tmp.zeilen * tmp.spalten, sizeof(double));
    if(tmp.matrix == NULL) alloc_fail();

    tmp=matrix_adjunkte(matrix_in);
    det=matrix_det(matrix_in);
    if(det > -FLOATNULL && det < FLOATNULL) // Wenn Determinante == 0
    {
        tmp.zeilen = tmp.spalten = 0;
        return tmp;
    }
    det=1/det;

    return(matrix_skalaprodukt(tmp,det));
}