/* * Matrix Operations: Product, Sum, Difference * * Author : Tom Kimber * */ public abstract class MatrixMath { public static Matrix Product( Matrix m1 , Matrix m2 ) { int n , m ; n = m1.getNumRows( ) ; m = m2.getNumCols( ) ; double x ; x = m1.getEntry( 1 , 1 ) ; Matrix c = new Matrix( n , m , 0.0 ) ; for ( int i = 0 ; i < n ; i++ ) { for( int j = 0 ; j < m ; j++ ) { c.setEntry( i , j , ComputeProductEntry( i , j , m1 , m2 ) ) ; } } return c ; } private static double ComputeProductEntry( int i , int j , Matrix m1 , Matrix m2 ) { double x = 0.0 ; int n , m ; n = m1.getNumCols( ) ; // # of cols of m1 ( must equal # of rows of m2 ) for( int a = 0 ; a < n ; a++ ) { x = x + m1.getEntry( i , a ) * m2.getEntry( a , j ) ; } return x ; } public static Matrix Sum( Matrix m1 , Matrix m2 ) { // m2 is assumed to be the same size as m1 int n , m ; n = m1.getNumRows( ) ; m = m1.getNumCols( ) ; Matrix c = new Matrix( n , m , 0.0 ) ; for( int i = 0 ; i < n ; i++ ) { for ( int j = 0 ; j < m ; j++ ) { c.setEntry( i , j , m1.getEntry( i , j ) + m2.getEntry( i , j ) ) ; } } return c ; } public static Matrix Difference( Matrix m1 , Matrix m2 ) { // m2 is assumed to be the same size as m1 int n , m ; n = m1.getNumRows( ) ; m = m1.getNumCols( ) ; Matrix c = new Matrix( n , m , 0.0 ) ; for( int i = 0 ; i < n ; i++ ) { for ( int j = 0 ; j < m ; j++ ) { c.setEntry( i , j , m1.getEntry( i , j ) - m2.getEntry( i , j ) ) ; } } return c ; } }