# matrix.rb

Path: | matrix.rb
Last Update: | Sat Jul 19 22:33:44 GMT+10:00 2003

      matrix.rb -
          $Release Version: 1.0$
          $Revision: 1.11 $
          $Date: 1999/10/06 11:01:53 $
          Original Version from Smalltalk-80 version
             on July 23, 1985 at 8:37:17 am
          by Keiju ISHITSUKA

—

      Matrix[[1,2,3],
                :
             [3,4,5]]
      Matrix[row0,
             row1,
              :
             rown]

module ExceptionForMatrix: | Exceptions:
        ErrDimensionMismatch
            number of column/row do not match
        ErrNotRegular
            not a regular matrix
        ErrOperationNotDefined
            specified operator is not defined (yet)

class Matrix

      include ExceptionForMatrix

      Methods:
      class methods:
          Matrix.[](*rows)
              creates a matrix where `rows' indicates rows.
              `rows' is an array of arrays,
              e.g, Matrix[[11, 12], [21, 22]]
          Matrix.rows(rows, copy = true)
              creates a matrix where `rows' indicates rows.
              if optional argument `copy' is false, use the array as
              internal structure of the metrix without copying.
          Matrix.columns(columns)
              creates a new matrix using `columns` as set of colums vectors.
          Matrix.diagonal(*values)
              creates a matrix where `columns' indicates columns.
          Matrix.scalar(n, value)
              creates a diagonal matrix such that the diagal compornents is
              given by `values'.
          Matrix.scalar(n, value)
              creates an n-by-n scalar matrix such that the diagal compornent is
              given by `value'.
          Matrix.identity(n)
          Matrix.unit(n)
          Matrix.I(n)
              creates an n-by-n unit matrix.
          Matrix.zero(n)
              creates an n-by-n zero matrix.
          Matrix.row_vector(row)
              creates a 1-by-n matrix such the row vector is `row'.
              `row' is specifed as a Vector or an Array.
          Matrix.column_vector(column)
              creates a 1-by-n matrix such that column vector is `column'.
              `column' is specifed as a Vector or an Array.
      accessing:
          [](i, j)
              returns (i,j) compornent
          row_size
              returns the number of rows
          column_size
              returns the number of columns
          row(i)
              returns the i-th row vector.
              when the block is supplied for the method, the block is iterated
              over all row vectors.
          column(j)
              returns the jth column vector.
              when the block is supplied for the method, the block is iterated
              over all column vectors.
          collect
          map
              creates a matrix which is the result of iteration of given
              block over all compornents.
          minor(*param)
              returns sub matrix. parameter is specified as the following:
              1. from_row, row_size, from_col, size_col
              2. from_row..to_row, from_col..to_col
      TESTING:
          regular?
              Is regular?
          singular?
              Is singular? i.e. Is non-regular?
          square?
              Is square?
      ARITHMETIC:
          *(m)
              times
          +(m)
              plus
          -(m)
              minus
          /(m)
              self * m.inv
          inverse
          inv
              inverse
          **
              power
      Matrix functions:
          determinant
          det
              returns the determinant
          rank
              returns the rank
          trace
          tr
              returns the trace
          transpose
          t
              returns the transposed
      CONVERTING:
          coerce(other)
          row_vectors
              array of row vectors
          column_vectors
              array of column vectors
          to_a
              converts to Array of Arrays
      PRINTING:
          to_s
              returns string representation
          inspect

class Vector

      include ExceptionForMatrix

      INSTANCE CREATION:
          Vector.[](*array)
          Vector.elements(array, copy = true)
      ACCSESSING:
          [](i)
          size
      ENUMRATIONS:
          each2(v)
          collect2(v)
      ARITHMETIC:
          *(x) "is matrix or number"
          +(v)
          -(v)
      VECTOR FUNCTIONS:
          inner_product(v)
          collect
          map
          map2(v)
          r
      CONVERTING:
          covector
          to_a
          coerce(other)
      PRINTING:
          to_s
          inspect

## Required files

e2mmap.rb

## Classes and Modules

Module ExceptionForMatrix
Class Matrix
Class Vector

[Validate]