0

编辑:我发现即使我尝试在评估()方法中使用最简单的表达式,即 1+1,它也做不到。它给了我运行时错误。

我下载了 symja_android_library.jar 文件,并将其添加到我的类路径中。我的代码如下:

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(false);
                        IExpr result;
                        result = util.evaluate("d(x^2,x)");
                        System.out.println(result.toString());
                        result = util.evaluate("integrate(sin(x)^5,x)");
                        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();
                }
        }
}

问题是,两种“.evauate()”方法都在控制台输出中出现错误,说明“行中的语法错误:1 - ')' 预期。集成(sin(x)^5,x),带有插入符号指向逗号。有人可以帮助我使用正确的语法吗?我试过 1. 删除逗号和“x”,2. 用“)”替换逗号,但这些都不起作用。谢谢!

4

3 回答 3

0

这绝不是一个合理的解释,但这很有效,应该能让你在工作中取得进展

ScriptEngine fScriptEngine = fScriptManager.getEngineByExtension("m");
try {
    String evaledResult = (String) fScriptEngine.eval("D[x^2,x]");
    System.out.println(evaledResult);
} catch (Exception e) {
    e.printStackTrace();
}

结果:2*x

这个 API 的文档非常薄弱。我必须通读他们的 JUnit 测试才能把它放在一起......

我使用的表达式也适用于EvalUtils,尽管它返回的结果略有不同。

结果:Times[2, x]

于 2013-12-17T18:14:10.230 回答
0

试试这个

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

                        EvalUtilities util = new EvalUtilities(true);
                        IExpr result;
                        result = util.evaluate("d(x^2)");
                        System.out.println(result.toString());
                        result = util.evaluate("integrate[sin[x]^5,x]");
                        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.getMessage();
                }
        }

我认为EvalUtilities有一些问题,但我修复了“行中的语法错误:1 - ')' 预期”问题。

于 2013-12-17T18:20:58.130 回答
0
ScriptEngine fScriptEngine = fScriptManager.getEngineByExtension("m");

为什么上面的代码返回null?

于 2014-02-06T10:21:47.017 回答