About Us Home Contributors License Components Sandbox Math Overview Proposal Developers Guide Javadoc Tasks: To Do User Guide Contents Overview Statistics Data Generation Linear Algebra Numerical Analysis Special Functions Utilities Complex Numbers Distributions Project Documentation About Math Project Info Project Reports Development Process General Information Charter Volunteering Contributing Patches Releasing Components Jakarta Community Get Involved Mailing Lists Access CVS Repositories Commons Resources (Unofficial) Wiki Japanese Translation Korean Translation Related Apache Commons DB Commons XML Commons | ### 3 Linear Algebra #### 3.1 Overview Currently, numerical linear algebra support in commons-math is limited to basic operations on real matrices and solving linear systems. #### 3.2 Real matrices The RealMatrix interface represents a matrix with real numbers as entries. The following basic matrix operations are supported: Matrix addition, subtraction, mutiplication Scalar addition and multiplication Inverse and transpose Determinants and singularity testing LU decomposition Norm and Trace Operation on a vector Example:
    // Create a real matrix with two rows and three columns
    double[][] matrixData = { {1d,2d,3d}, {2d,5d,3d}};
    RealMatrix m = new RealMatrixImpl(matrixData);

    // One more with three rows, two columns
    double[][] matrixData2 = { {1d,2d}, {2d,5d}, {1d, 7d}};
    RealMatrix n = new RealMatixImpl(matrixData2);

    // Note: constructor makes a
    // Fresh copy of the input double[][] array

    // Now multiply m by n
    RealMatrix p = m.multiply(n);
    System.out.println(p.getRowDimension()); // 2
    System.out.println(p.getRowDimension()); // 2

    // Invert p
    RealMatrix pInverse = p.inverse();
#### 3.3 Solving linear systems The `solve()` methods of the `RealMatrix` interface support solving linear systems of equations. In each case, the `RealMatrix` represents the coefficient matrix of the system. For example, to solve the linear system
               2x + 3y - 2z = 1
               -x + 7y + 6x = -2
               4x - 3y - 5z = 1
Start by creating a RealMatrix to store the coefficients
    double[][] coefficientsData = {{2, 3, -2}, {-1, 7, 6}, {4, -3, -5}};
    RealMatrix coefficients = new RealMatrixImpl(coefficientsData);
Next create a `double[]` array to represent the constant vector and use `solve(double[])` to solve the system
    double[] constants = {1, -2, 1};
    double[] solution = coefficients.solve(constants);
The `solution` array will contain values for x (`solution[0]`), y (`solution[1]`), and z (`solution[2]`) that solve the system. If the coefficient matrix is not square or singular, an InvalidMatrixException is thrown. It is possible to solve multiple systems with the same coefficient matrix in one method call. To do this, create a matrix whose column vectors correspond to the constant vectors for the systems to be solved and use `solve(RealMatrix),` which returns a matrix with column vectors representing the solutions.