class Cramer

Public Class Methods

solution1(row1, known_term) click to toggle source
# File lib/cartesius/cramer.rb, line 5
def self.solution1(row1, known_term)
  matrix = Matrix.rows([row1])

  determinant = matrix.determinant
  if determinant.zero?
    raise ArgumentError.new('The determinant is zero!')
  end

  x1 = Rational(
      Matrix.columns([known_term]).determinant,
      determinant
  )

  [x1]
end
solution2(row1, row2, known_term) click to toggle source
# File lib/cartesius/cramer.rb, line 21
def self.solution2(row1, row2, known_term)
  matrix = Matrix.rows([row1, row2])

  determinant = matrix.determinant
  if determinant.zero?
    raise ArgumentError.new('The determinant is zero!')
  end

  x1 = Rational(
      Matrix.columns([known_term, matrix.column(1)]).determinant,
      determinant
  )

  x2 = Rational(
      Matrix.columns([matrix.column(0), known_term]).determinant,
      determinant
  )

  [x1, x2]
end
solution3(row1, row2, row3, known_term) click to toggle source
# File lib/cartesius/cramer.rb, line 42
def self.solution3(row1, row2, row3, known_term)
  matrix = Matrix.rows([row1, row2, row3])

  determinant = matrix.determinant
  if determinant.zero?
    raise ArgumentError.new('The determinant is zero!')
  end

  x1 = Rational(
      Matrix.columns([known_term, matrix.column(1), matrix.column(2)]).determinant,
      determinant
  )

  x2 = Rational(
      Matrix.columns([matrix.column(0), known_term, matrix.column(2)]).determinant,
      determinant
  )

  x3 = Rational(
      Matrix.columns([matrix.column(0), matrix.column(1), known_term]).determinant,
      determinant
  )

  [x1, x2, x3]
end