我一直试图让Symja在我的Eclipse项目中工作大约一个星期,但到目前为止还没有成功。看到无数的运行时错误让我感到非常沮丧,所以我希望有人愿意帮我解决这个问题。
首先,我使用Project-> Properties-> Java Build Path-> Add External JARs将symja_android_library.rar添加到我的类路径中,然后尝试运行简单的派生计算。我得到一个erorr说没有找到“com.google.common.base.Predicate”,所以我google了这个JAR并安装了它。它现在被称为“番石榴”,但是,我使用相同的过程将它添加到我的类路径中。现在,我可以在我的类路径中看到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项目中进行符号集成和派生。我会走错路吗?我需要做些什么来解决这个问题?
我对逐步解决方案感兴趣。我试图在其他问题上解决这个问题,但回答者没有回复我对他们答案的评论,所以我无法做到很远。我让人们用他们认为有效的代码做出回应,所以我知道有办法让它起作用,我只是无法弄清楚它是什么。
答案 0 :(得分:1)
我知道已经有一段时间,但也许我的评论可以帮助其他人。
您的输入字符串错误。函数d(导数)的调用有两个参数。第一个是你想要推导的术语,第二个是变量。所以你的输入字符串应该是“d(x ^ 3,x)”。
集成的输入字符串应该类似于“integration(term,{variable,min,max})”
有一个在线演示,你可以尝试表达式