java - symja 数学解析器无法识别 Abs[x]

标签 java javafx symja

我已经导入了 .jar 文件,但是

DoubleEvaluator engine = new DoubleEvaluator();
engine.defineVariable("x", -1);
engine.evaluate("Abs[x]");

向我抛出一个错误:org.matheclipse.parser.client.math.ArithmeticMathException:EvalDouble#evaluateFunction(FunctionNode) 不可能用于:Abs(x) 和

engine.evaluate("Sin[x]");

没有。这可能是什么原因?

Exception in thread "main" org.matheclipse.parser.client.math.ArithmeticMathException: EvalDouble#evaluateFunction(FunctionNode) not possible for: Abs(x)
at org.matheclipse.parser.client.eval.DoubleEvaluator.evaluateFunction(DoubleEvaluator.java:563)
at org.matheclipse.parser.client.eval.DoubleEvaluator.evaluateNode(DoubleEvaluator.java:493)
at org.matheclipse.parser.client.eval.DoubleEvaluator.evaluate(DoubleEvaluator.java:460)
at javaapplication14.JavaApplication14.main(JavaApplication14.java:24)
Java Result: 1

和示例运行

import org.matheclipse.parser.client.eval.DoubleEvaluator;

public class application {

public static void main(String[] args) {

    DoubleEvaluator engine = new DoubleEvaluator();

    engine.defineVariable("x",-1);
    engine.evaluate("Abs[x]");

}

}

最佳答案

(感谢堆栈跟踪和下载地址)

此问题已在几个小时前得到修复,最新版本应该可以解决该问题:

https://bitbucket.org/axelclk/symja_android_library/downloads/symjaMMA2016-01-09.zip

添加了缺失的 Abs 函数:

FUNCTION_DOUBLE_MAP.put("Abs", new IDouble1Function() {
   public double evaluate(double arg1) {
      return Math.abs(arg1);
   }
 });

看看区别: https://bitbucket.org/axelclk/symja_android_library/diff/symja_android_library/matheclipse-parser/src/main/java/org/matheclipse/parser/client/eval/DoubleEvaluator.java?diff2=c84fa1c92f83&at=master

关于java - symja 数学解析器无法识别 Abs[x],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34698277/

相关文章:

JavaFX - 从 gui 接收事件后返回主线程

java - 如何在 javafx 场景中创建新对象?

java - 字符串位于另一个字符串之上的 TextArea

android - 使用Symja库时Gradle构建卡住了

java - 简单的java挑战的复杂思维,我该如何解决它?

Java语法问题

java - Homebrew Neo4j 未启动

java - 如何用 Symja 解决不等式?

用于查找 { 和数字组合的 Java 正则表达式