次の手順を使用して問題を解決することができます:ブック、ツール、ソフトウェアライブラリ、チュートリアルや他のオフサイトのリソースをお勧めしますか見つけるために私たちを求めて
import org.matheclipse.core.eval.ExprEvaluator;
import org.matheclipse.core.expression.F;
import org.matheclipse.core.interfaces.IExpr;
import org.matheclipse.parser.client.SyntaxError;
import org.matheclipse.parser.client.math.MathException;
public class SymbolicSO43739728 {
public static void main(String[] args) {
try {
ExprEvaluator util = new ExprEvaluator();
// (3/4)*(4/3)*Sqrt(2)*I
IExpr formula = F.Times(F.QQ(3, 4), F.QQ(4, 3), F.Sqrt(F.ZZ(2)), F.CI);
// symbolic evaluation
IExpr result = util.evaluate(formula);
// print: I*Sqrt(2)
System.out.println(result.toString());
// numerical evaluations
result = util.evaluate(F.N(formula));
// I*1.4142135623730951
System.out.println(result.toString());
} catch (SyntaxError e) {
// catch Symja parser errors here
System.out.println(e.getMessage());
} catch (MathException me) {
// catch Symja math errors here
System.out.println(me.getMessage());
} catch (Exception e) {
e.printStackTrace();
} catch (final StackOverflowError soe) {
System.out.println(soe.getMessage());
} catch (final OutOfMemoryError oome) {
System.out.println(oome.getMessage());
}
}
}
質問がオフトピックですスタックオーバーフローのために、彼らは有害な回答やスパムを引き付ける傾向があります。代わりに、問題を説明し、それを解決するためにこれまでに何が行われているかを記述します。 – GhostCat
"オペレータのオーバーロードが嫌いです。" - Javaはオペレータのオーバーロードをサポートしていないため、良いです。 (文字列の連結を容易にするために、Stringクラスだけが '+'演算子のオーバーロードを持っています。) –
評価が遅れても、精度は向上しません。 –