
Algebra::AlgebraicParser

(ʸŪɾ饹)

ե̾:

  algebraic-parser.rb

ѡ饹:

  Object

󥯥롼ɤƤ⥸塼:

ʤ

饹᥽å:

Algebra::AlgebraicParser.eval(string, ring)
    string λ§黻 ring Ƿ׻ޤ
   

᥽å:

ʤ



ɾμ

ѿͤϡѿ̾Ȥ ring Υ饹᥽å indeterminate ΰ
Ϥ졢ͤȤɾޤޤͤ ring.ground Υ饹᥽
 indterminate ɾޤ
require "algebraic-parser"
class A
  def self.indeterminate(str)
    case str
    when "x"; 7
    when "y"; 11
    end
  end
  def A.ground
    Integer
  end
end
p Algebraic::AlgebraicParser.eval("x * y - x^2 + x/8", A)
    #=> 7*11 - 7**2 + 7/8 = 28

ǡInteger  indeterminate  algebraic-parser.rb  require Ƥ
algebra-supplement.rb ǼΤ褦Ƥޤ
def Integer.indeterminate(x)
  eval(x)
end

̻

̻Ҥϡֱѻ1ʸܿ0ʸʾפޤä
"a13bc04def0"

ϡ
"a13 * b * c04 * d * e * f0"

Ȳᤵޤ

黻

黻Ҥμ夤¤٤ޤ
;       ɾ
+, -    , 
+, -    ñ +, ñ -
*, /    , 
    
**, ^   



饹 Algebra::Polynomial饹 Algebra::MPolynomial ˤŬڤ
indeterminate, ground ƤޤäƼΤ褦ʸɾǤ
ޤ
require "algebraic-parser"
require "rational"
require "m-polynomial"
F = Algebra::MPolynomial(Rational)
p Algebra::AlgebraicParser.eval("- (2*y)**3 + x", F) #=> -8y^3 + x

Algebra::MPolynomial Ǥϡindeterminate ѿɽ륪֥ȤϿ
ΤǡϿ礬ѿ֤νˤʤޤä ; Ȥäѿɾ
ˤäơѹ򤹤Ǥޤ
F.variables.clear
p Algebra::AlgebraicParser.eval("x; y; - (2*y)**3 + x", F) #=> x - 8y^3
