Class: Cramer

Inherits:
Object
  • Object
show all
Defined in:
lib/cartesius/cramer.rb

Class Method Summary collapse

Class Method Details

.solution1(row1, known_term) ⇒ Object



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 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) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# 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) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
# 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