java - 仍然无法让基本的 Symja 评估发挥作用

标签 java math evaluate

我已经尝试让 Symja 在我的 Eclipse 项目中工作大约一周了,但到目前为止还没有成功。看到无数的运行时错误让我感到非常沮丧,所以我希望有人愿意帮助我深入解决这个问题。

首先,我使用“项目”->“属性”->“Java 构建路径”->“添加外部 JAR”将 symja_android_library.rar 添加到我的类路径中,然后尝试运行简单的导数计算。我收到一条错误消息,说找不到“com.google.common.base.Predicate”,所以我用 google 搜索了这个 JAR 并安装了它。它现在称为“guava”,但尽管如此,我还是使用相同的过程将其添加到我的类路径中。现在,我可以在类路径中看到 com.google.common.base.Predicate,这样错误就消失了。不幸的是,我现在收到此错误:

java.lang.NullPointerException
    at org.matheclipse.core.eval.EvalEngine.evalLoop(EvalEngine.java:761)
    at org.matheclipse.core.eval.EvalEngine.evalAST(EvalEngine.java:462)
    at org.matheclipse.core.expression.AST.evaluate(AST.java:1078)
    at org.matheclipse.core.eval.EvalEngine.evalLoop(EvalEngine.java:761)
    at org.matheclipse.core.eval.EvalEngine.evalWithoutNumericReset(EvalEngine.java:268)
    at org.matheclipse.core.eval.EvalEngine.evaluate(EvalEngine.java:287)
    at org.matheclipse.core.eval.EvalEngine.addRules(EvalEngine.java:1069)
    at org.matheclipse.core.eval.interfaces.AbstractFunctionEvaluator.setUp(AbstractFunctionEvaluator.java:46)
    at org.matheclipse.core.reflection.system.Power.setUp(Power.java:394)
    at org.matheclipse.core.expression.Symbol.setEvaluator(Symbol.java:327)
    at org.matheclipse.core.eval.Namespace.setEvaluator(Namespace.java:87)
    at org.matheclipse.core.expression.F.$s(F.java:2693)
    at org.matheclipse.core.convert.AST2Expr.convert(AST2Expr.java:188)
    at org.matheclipse.core.convert.AST2Expr.convert(AST2Expr.java:131)
    at org.matheclipse.core.convert.AST2Expr.convert(AST2Expr.java:133)
    at org.matheclipse.core.eval.EvalEngine.parse(EvalEngine.java:979)
    at org.matheclipse.core.eval.EvalUtilities.evaluate(EvalUtilities.java:42)
    at CalculusExample.main(CalculusExample.java:18)

并且 System.out.println(); 语句似乎正在输出一些内容,因为我得到以下输出:

Times[d, Power[x, 3]]
Times[integrate, sin, Power[x, 5]]

这是我正在运行的代码:

import com.google.*;
import symja_android_library.*;
import static org.matheclipse.core.expression.F.*;
import org.matheclipse.core.eval.EvalUtilities;
import org.matheclipse.core.interfaces.IAST;
import org.matheclipse.core.interfaces.IExpr;
import org.matheclipse.parser.client.SyntaxError;
import org.matheclipse.parser.client.math.MathException;

public class CalculusExample {
    public static void main(String[] args) {
                try {

                        EvalUtilities util = new EvalUtilities(true);

                        IExpr result;

                        result = util.evaluate("d(x^3)");
                        System.out.println(result.toString());

                } catch (SyntaxError e) {

                        System.out.println(e.getMessage());
                } catch (MathException me) {

                        System.out.println(me.getMessage());
                } catch (Exception e) {
                        e.printStackTrace();
                }
        }
}

编辑:我删除了集成,作为简化问题并使搜索答案更容易的一种方法。我现在只想导出。

有人可以向我解释一下为什么会发生这个错误吗?从字面上看,我想做的就是在 Eclipse 项目中进行符号集成和派生。难道我走错路了?我需要做什么来解决这个问题?

我对分步解决方案感兴趣。我试图在其他问题上解决这个问题,但回答者没有回复我对他们答案的评论,所以我没能走得太远。有人用他们说有效的代码回复我,所以我知道有一种方法可以让它发挥作用,但我只是不知道它是什么。

最佳答案

我知道已经有一段时间了,但也许我的评论可以帮助其他人。

您输入的字符串有误。函数 d(导数)的调用有两个参数。第一个是您想要导出的项,第二个是变量。所以你的输入字符串应该是“d(x^3,x)”。

积分的输入字符串应类似于“integrate(term,{variable, min, max})”

有一个在线演示,您可以在其中尝试表达式

symja online demo

关于java - 仍然无法让基本的 Symja 评估发挥作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20667895/

相关文章:

java spring jpa使用entityManager.clear()时没有在数据库表中保存任何内容

javascript - 缩放或缩放从 GPS 纬度/经度获取的 X/Y 像素以适合特定区域

function - 函数式编程中的所有纯函数都是连续的吗?

excel - 在 Excel 和 VBA 中,如何将单元格的值设置为公式结果而不是公式

python - 重新检查 Traceback 中的值

javascript - 在没有严格比较的情况下,哪些值被评估为 true 和 false?

java - 为什么rabbitmq fanout Exchange只能收到一个订阅消息?

java - 当我在 jPA 中使用 persist() 时发生了什么

java - 使用 'gdx-fireapp' 从 Firebase 下载列表会返回具有空字段的对象列表

algorithm - 查找需要排除以匹配预期总和的求和问题的项