NAME
    Math::Matrix - Multiply and invert Matrices

SYNOPSIS
    use Math::Matrix;

DESCRIPTION
    The following methods are available:

  new

    Constructor arguments are a list of references to arrays of the
    same length. The arrays are copied. The method returns undef in
    case of error.

            $a = new Math::Matrix ([rand,rand,rand],
                                   [rand,rand,rand],
                                   [rand,rand,rand]);

    If you call `new' as method, a zero filled matrix with identical
    deminsions is returned.

  clone

    You can clone a matrix by calling:

            $b = $a->clone;

  size

    You can determine the dimensions of a matrix by calling:

            ($m, $n) = $a->size;

  concat

    Concatenates two matrices of same row count. The result is a new
    matrix or undef in case of error.

            $b = new Math::Matrix ([rand],[rand],[rand]);
            $c = $a->concat($b);

  transpose

    Returns the transposed matrix. This is the matrix where colums
    and rows of the argument matrix are swaped.

  multiply

    Multiplies two matrices where the length of the rows in the
    first matrix is the same as the length of the columns in the
    second matrix. Returns the product or undef in case of error.

  solve

    Solves a equation system given by the matrix. The number of
    colums must be greater than the number of rows. If variables are
    dependent from each other, the second and all further of the
    dependent coefficients are 0. This means the method can handle
    such systems. The method returns a matrix containing the
    solutions in its columns or undef in case of error.

  multiply_scalar

    Multiplies a matrix and a scalar resulting in a matrix of the
    same dimensions with each element scaled with the scalar.

      $a->multiply_scalar(2);  scale matrix by factor 2

  add

    Add two matrices of the same dimensions.

  substract

    Shorthand for `add($other->negative)'

  equal

    Decide if two matrices are equal. Beware of rounding errors!

  slice

    Extract columns:

      a->slice(1,3,5);

  determinant

    Compute the determinant of a matrix.

  dot_product

    Compute the dot product of two vectors.

  absolute

    Compute the absolute value of a vector.

  normalizing

    Normalize a vector.

  cross_product

    Compute the cross-product of vectors.

  print

    Prints the matrix on STDOUT. If the method has additional
    parameters, these are printed before the matrix is printed.

EXAMPLE
            use Math::Matrix;

            srand(time);
            $a = new Math::Matrix ([rand,rand,rand], 
                             [rand,rand,rand], 
                             [rand,rand,rand]);
            $x = new Math::Matrix ([rand,rand,rand]);
            $a->print("A\n");
            $E = $a->concat($x->transpose);
            $E->print("Equation system\n");
            $s = $E->solve;
            $s->print("Solutions s\n");
            $a->multiply($s)->print("A*s\n");

AUTHOR
    Ulrich Pfeifer <pfeifer@ls6.informatik.uni-dortmund.de>

    Brian J. Watson <bjbrew@power.net>

    Matthew Brett <matthew.brett@mrc-cbu.cam.ac.uk>

