You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ps...@apache.org on 2004/05/17 07:57:38 UTC

cvs commit: jakarta-commons/math/xdocs/userguide linear.xml

psteitz     2004/05/16 22:57:38

  Modified:    math/xdocs/userguide linear.xml
  Log:
  Added missing sections.
  
  Revision  Changes    Path
  1.8       +74 -4     jakarta-commons/math/xdocs/userguide/linear.xml
  
  Index: linear.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons/math/xdocs/userguide/linear.xml,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- linear.xml	29 Feb 2004 18:50:10 -0000	1.7
  +++ linear.xml	17 May 2004 05:57:38 -0000	1.8
  @@ -28,17 +28,87 @@
       <section name="3 Linear Algebra">
         <subsection name="3.1 Overview" href="overview">
           <p>
  -          This is yet to be written. Any contributions will be gratefully accepted!
  +           Currently, numerical linear algebra support in commons-math is 
  +           limited to basic operations on real matrices and solving linear systems.
           </p>
         </subsection>
         <subsection name="3.2 Real matrices" href="real_matrices">
           <p>
  -          This is yet to be written. Any contributions will be gratefully accepted!
  +          The <a href="../apidocs/org/apache/commons/math/linear/RealMatrix.html">
  +          RealMatrix</a> interface represents a matrix with real numbers as 
  +          entries.  The following basic matrix operations are supported:
  +          <ul>
  +          <li>Matrix addition, subtraction, mutiplication</li>
  +          <li>Scalar addition and multiplication</li>
  +          <li>Inverse and transpose</li>
  +          <li>Determinants and singularity testing</li>
  +          <li>LU decomposition</li>
  +          <li>Norm and Trace</li>
  +          <li>Operation on a vector</li>
  +          </ul>   
           </p>
  +        <p>
  +         Example:
  +         <source>
  +// 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();
  +n.setData(matrixData2); 
  +
  +// Note: both constructor and setData make
  +// Fresh copies of input double[][] arrays
  +
  +// 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();
  +		 </source>
  +        </p>         
         </subsection>
         <subsection name="3.3 Solving linear systems" href="solve">
           <p>
  -          This is yet to be written. Any contributions will be gratefully accepted!
  +          The <code>solve()</code> methods of the <code>RealMatrix</code> interface
  +          support solving linear systems of equations.  In each case, the 
  +          <code>RealMatrix</code> represents the coefficient matrix of the system.
  +          For example, to solve the linear system
  +          <pre>
  +           2x + 3y - 2z = 1
  +           -x + 7y + 6x = -2
  +           4x - 3y - 5z = 1
  +          </pre>
  +          Start by creating a RealMatrix to store the coefficients
  +          <source>
  +double[][] coefficientsData = {{2, 3, -2}, {-1, 7, 6}, {4, -3, -5}};
  +RealMatrix coefficients = new RealMatrixImpl(coefficientsData);
  +          </source>
  +          Next create a <code>double[]</code> array to represent the constant
  +          vector and use <code>solve(double[])</code> to solve the system
  +          <source>
  +double[] constants = {1, -2, 1};
  +double[] solution = coefficients.solve(constants);
  +          </source>
  +          The <code>solution</code> array will contain values for x 
  +          (<code>solution[0]</code>), y (<code>solution[1]</code>), 
  +          and z (<code>solution[2]</code>) that solve the system.
  +        </p>
  +        <p>
  +          If the coefficient matrix is not square or singular, an 
  +          <a href="../apidocs/org/apache/commons/math/linear/InvalidMatrixException.html">
  +          InvalidMatrixException</a> is thrown.
  +        </p>
  +        <p>
  +          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 
  +          <code>solve(RealMatrix),</code> which returns a matrix with column
  +          vectors representing the solutions.
           </p>
         </subsection>
       </section>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org