|
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
[index] Algebra::AlgebraicParser(Class of Evaluation of Algebraic Expression) File Name:
SuperClass:
Included Module:none. Class Methods:
Methods:none. Specification:EvaluationThe value of variable is obtained by the class method indeterminate of ring. The value of numeral is the return value of the class method indeterminate of ring.ground. 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 Algebra::AlgebraicParser.eval("x * y - x^2 + x/8", A) #=> 7*11 - 7**2 + 7/8 = 28 indeterminate of Integer is defined as following: def Integer.indeterminate(x) eval(x) end in algebra-supplement.rb which is required by algebraic-parser.rb IdentifierIdentifier is "a alphabet + some digits". For example, "a13bc04def0" is interpreted as "a13 * b * c04 * d * e * f0". OperationsThe order of strength of operations: ; intermediate evaluation +, - sum, difference +, - unary +, unary - *, / product, quotient (juxtaposition) product **, ^ power Example:In Algebra::Polynomial and Algebra::MPolynomial, indeterminate andground are defined suitably. So we can obtain the value of strings as following: require "algebraic-parser" require "rational" require "m-polynomial" F = Algebra::MPolynomial(Rational) p Algebra::AlgebraicParser.eval("- (2*y)**3 + x", F) #=> -8y^3 + x In Algebra::MPolynomial, indeterminate resists the objects representing variables in order that they appear. So we may set the order, using `;'. F.variables.clear p Algebra::AlgebraicParser.eval("x; y; - (2*y)**3 + x", F) #=> x - 8y^3 |