JEXLライブラリを使用して、さまざまな引数 (たとえば、y=2x+a^2-4*a*x (x=1&a=3)、(x=5&a=-15) など) を使用して数式を計算します。単純な表現ではうまく機能しますが、より難しい表現を使い始めると、うまくいきません。うまく機能するコードは次のとおりです。
JexlEngine jexl = new JexlEngine();
Expression func = jexl.createExpression("x1+x2");
MapContext mc = new MapContext();
mc.set("x1", 2);
mc.set("x2", 1);
System.out.println(func.evaluate(mc)); // prints "3" - GOOD ANSWER!
しかし、これは間違った答えを出力します:
JexlEngine jexl = new JexlEngine();
Expression func = jexl.createExpression("(x1-2)^4+(x1-2*x2)^2");
MapContext mc = new MapContext();
mc.set("x1", 2);
mc.set("x2", 1);
System.out.println(func.evaluate(mc)); // prints "6" - WRONG ANSWER!
私は何を間違っていますか?