Package jline.api.sym
Interface SymEngine
- All Known Implementing Classes:
SageRestEngine
public interface SymEngine
Computer algebra operations LINE needs, as seen by the JAR.
Java has no computer algebra system, so every operation here is delegated
to an external engine; SageRestEngine is the SageMath implementation
and is resolved by SymEngines. Expressions cross the interface as
plain ASCII infix strings, e.g. "2*x1 - 3*x2", which is the format
SolverCTMC.symbolicGeneratorResult.getSymbolicEntry already
produces.
Expression strings are not comparable across codebases: the
symbol numbering x1..xE follows event enumeration order, and printed normal
forms depend on the engine version. Compare by substituting values with
eval(java.util.List<java.lang.String>, java.util.Map<java.lang.String, java.lang.Double>) and comparing numbers.
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic classSymbolic stationary distribution of a CTMC.static classSymbolic analysis of a fluid vector field.static classExact parametric sensitivity, following Trivedi and Bobbio (2017), Sec. -
Method Summary
Modifier and TypeMethodDescriptionExact parametric sensitivity of a steady-state reward.Differentiates expressions.double[]Substitutes values for symbols and evaluates.Jacobian, LaTeX form and equilibria of a fluid vector field.booleanTrue if the engine answers a health probe.name()Name of the backing engine, e.g.Rewrites expressions into a normal form.Symbolic stationary distribution of a CTMC, pi Q = 0 with sum(pi) = 1.
-
Method Details
-
name
String name()Name of the backing engine, e.g. "sage". -
isAvailable
boolean isAvailable()True if the engine answers a health probe. -
solveCTMC
Symbolic stationary distribution of a CTMC, pi Q = 0 with sum(pi) = 1.- Parameters:
Q- generator entries as expression strings, row majorsymbols- the symbols appearing in Q, e.g. x1..xE- Returns:
- the solution, with pi also split over a common denominator
- Throws:
IOException- if the engine is unreachable or rejects the request
-
ctmcSensitivity
SymEngine.Sensitivity ctmcSensitivity(String[][] Q, List<String> symbols, String theta, List<String> reward) throws IOException Exact parametric sensitivity of a steady-state reward.- Parameters:
Q- generator entries as expression strings, row majorsymbols- the symbols appearing in Qtheta- the symbol to differentiate with respect toreward- reward rate per state, or null for the distribution alone- Returns:
- the sensitivity of the distribution and, if a reward is given, of its mean
- Throws:
IOException- if the engine is unreachable or rejects the request
-
simplify
Rewrites expressions into a normal form.- Parameters:
exprs- the expressionsform- one of simplify, factor, together, cancel, expand, latex- Returns:
- the rewritten expressions, in the input order
- Throws:
IOException- if the engine is unreachable or rejects the request
-
diff
Differentiates expressions.- Parameters:
exprs- the expressionsvariable- the differentiation variableorder- the order of the derivative, at least 1- Returns:
- the derivatives, in the input order
- Throws:
IOException- if the engine is unreachable or rejects the request
-
eval
Substitutes values for symbols and evaluates.- Parameters:
exprs- the expressionsassignment- value of each symbol- Returns:
- the numeric values, NaN where a free symbol remains
- Throws:
IOException- if the engine is unreachable or rejects the request
-
fluidODEs
SymEngine.FluidODEs fluidODEs(List<String> rhs, List<String> vars, List<String> want) throws IOException Jacobian, LaTeX form and equilibria of a fluid vector field.- Parameters:
rhs- the right hand side of dx/dt, one expression per state variablevars- the state variable nameswant- any of jacobian, latex, equilibria- Returns:
- the requested items
- Throws:
IOException- if the engine is unreachable or rejects the request
-