Class: Seimi::Equation

Inherits:
Object
  • Object
show all
Defined in:
lib/seimi/equation.rb

Defined Under Namespace

Classes: Result

Constant Summary collapse

CHARGE_BALANCE_SYMBOL =
"電荷"

Class Method Summary collapse

Class Method Details

.balance(source) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/seimi/equation.rb', line 42

def balance(source)
  lhs, rhs = split_equation(source)
  lhs_species = parse_species(lhs)
  rhs_species = parse_species(rhs)
  species = lhs_species + rhs_species
  lhs_size = lhs_species.length
  formulas = species.map { |item| Formula.parse(item) }
  elements, matrix = build_matrix(formulas, lhs_size)
  coefficients = nullspace_coefficients(matrix)

  Result.new(
    coefficients: coefficients,
    species: species,
    lhs_size: lhs_size,
    matrix: matrix.map(&:dup),
    elements: elements
  )
end