class Orthogonal_Matrix

Public Class Methods

new(rows, cols, *nums) click to toggle source

Initialize orthogonal matrix (square matrix and its transpose is equal to its inverse).

# File lib/matrix_gem/orthogonal_matrix.rb, line 4
def initialize(rows, cols, *nums)
  if !(Matrix.new rows, cols, *(nums)).orthogonal?
    raise MatrixArgumentError,
    "Can't initialize orthogonal matrix with this values."
  elsif nums.length == 0
      @matrix = identity rows
  else
    @matrix = matrix_with_values nums, cols
  end
end

Public Instance Methods

[]=(i, j, value) click to toggle source

Set element. Raise error if the matrix with new value is not orthogonal.

# File lib/matrix_gem/orthogonal_matrix.rb, line 17
def []=(i, j, value)
  b = copy(self)
  b[i,j] = value
  if b.orthogonal?
    @matrix[i][j] = value
  else
    raise MatrixIndexOutOfRange, 'The matrix must be orthogonal.'
  end
end