Quick Navigator

 Search Site Miscellaneous Server Agreement Year 2038 Credits

# Manual Reference Pages  -  MATH::CEPHES::MATRIX (3)

.ds Aq ’

### 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>