Provided by: libmath-cephes-perl_0.5305-6_amd64 bug

NAME

       Math::Cephes::Matrix - Perl interface to the cephes matrix routines

SYNOPSIS

         use Math::Cephes::Matrix qw(mat);
         # 'mat' is a shortcut for Math::Cephes::Matrix->new
         my $M = mat([ [1, 2, -1], [2, -3, 1], [1, 0, 3]]);
         my $C = mat([ [1, 2, 4], [2, 9, 2], [6, 2, 7]]);
         my $D = $M->add($C);          # D = M + C
         my $Dc = $D->coef;
         for (my $i=0; $i<3; $i++) {
           print "row $i:\n";
           for (my $j=0; $j<3; $j++) {
               print "\tcolumn $j: $Dc->[$i]->[$j]\n";
           }
         }

DESCRIPTION

       This module is a layer on top of the basic routines in the cephes math library for
       operations on square matrices. In the following, a Math::Cephes::Matrix object is created
       as

         my $M = Math::Cephes::Matrix->new($arr_ref);

       where $arr_ref is a reference to an array of arrays, as in the following example:

         $arr_ref = [ [1, 2, -1], [2, -3, 1], [1, 0, 3] ]

       which represents

            / 1   2  -1  \
            | 2  -3   1  |
            \ 1   0   3  /

       A copy of a Math::Cephes::Matrix object may be done as

         my $M_copy = $M->new();

   Methods
       coef: get coefficients of the matrix
            SYNOPSIS:

            my $c = $M->coef;

            DESCRIPTION:

           This returns an reference to an array of arrays containing the coefficients of the
           matrix.

       clr: set all coefficients equal to a value.
            SYNOPSIS:

            $M->clr($n);

            DESCRIPTION:

           This sets all the coefficients of the matrix identically to $n.  If $n is not given, a
           default of 0 is used.

       add: add two matrices
            SYNOPSIS:

            $P = $M->add($N);

            DESCRIPTION:

           This sets $P equal to $M + $N.

       sub: subtract two matrices
            SYNOPSIS:

            $P = $M->sub($N);

            DESCRIPTION:

           This sets $P equal to $M - $N.

       mul: multiply two matrices or a matrix and a vector
            SYNOPSIS:

            $P = $M->mul($N);

            DESCRIPTION:

           This sets $P equal to $M * $N. This method can handle matrix multiplication, when $N
           is a matrix, as well as matrix-vector multiplication, where $N is an array reference
           representing a column vector.

       div: divide two matrices
            SYNOPSIS:

            $P = $M->div($N);

            DESCRIPTION:

           This sets $P equal to $M * ($N)^(-1).

       inv: invert a matrix
            SYNOPSIS:

            $I = $M->inv();

            DESCRIPTION:

           This sets $I equal to ($M)^(-1).

       transp: transpose a matrix
            SYNOPSIS:

            $T = $M->transp();

            DESCRIPTION:

           This sets $T equal to the transpose of $M.

       simq: solve simultaneous equations
            SYNOPSIS:

            my $M = Math::Cephes::Matrix->new([ [1, 2, -1], [2, -3, 1], [1, 0, 3]]);
            my $B = [2, -1, 10];
            my $X = $M->simq($B);
            for (my $i=0; $i<3; $i++) {
               print "X[$i] is $X->[$i]\n";
             }

           where $M is a Math::Cephes::Matrix object, $B is an input array reference, and $X is
           an output array reference.

            DESCRIPTION:

           A set of N simultaneous equations may be represented in matrix form as

             M X = B

           where M is an N x N square matrix and X and B are column vectors of length N.

       eigens: eigenvalues and eigenvectors of a real symmetric matrix
            SYNOPSIS:

            my $S = Math::Cephes::Matrix->new([ [1, 2, 3], [2, 2, 3], [3, 3, 4]]);
            my ($E, $EV1) = $S->eigens();
            my $EV = $EV1->coef;
            for (my $i=0; $i<3; $i++) {
              print "For i=$i, with eigenvalue $E->[$i]\n";
              my $v = [];
              for (my $j=0; $j<3; $j++) {
                $v->[$j] = $EV->[$i]->[$j];
              }
              print "The eigenvector is @$v\n";
            }

           where $M is a Math::Cephes::Matrix object representing a real symmetric matrix. $E is
           an array reference containing the eigenvalues of $M, and $EV is a Math::Cephes::Matrix
           object representing the eigenvalues, the ith row corresponding to the ith eigenvalue.

            DESCRIPTION:

           If M is an N x N real symmetric matrix, and X is an N component column vector, the
           eigenvalue problem

             M X = lambda X

           will in general have N solutions, with X the eigenvectors and lambda the eigenvalues.

BUGS

       Please report any to Randy Kobes <randy@theoryx5.uwinnipeg.ca>

COPYRIGHT

       The C code for the Cephes Math Library is Copyright 1984, 1987, 1989, 2002 by Stephen L.
       Moshier, and is available at http://www.netlib.org/cephes/.  Direct inquiries to 30 Frost
       Street, Cambridge, MA 02140.

       The perl interface is copyright 2000, 2002 by Randy Kobes.  This library is free software;
       you can redistribute it and/or modify it under the same terms as Perl itself.