たとえば、特定の API を使用して、数学関数を動的に解決することは可能ですか?
関数があるとすれば
a = b + c
以下に匹敵するものを書く方法はありますか:
Function func = new Function("a=b+c");
Result result = func.resolve("a=1", "b=?", "c=a");
System.out.println(result.getValue());
理想的にresolve(Object... args)
は、さらに type のクラスを受け入れる必要がありFunction
ます。
編集 1: API は、jBossAS などの Java EE 環境に含める必要があります。
編集 2:実際には、未知の変数が 1 つある方程式を解きたいのですが、ハードコードされた関数は避けたいです。したがって、関数に対して
a+b=c
ハードコーディングされた関数を書きたくない
getA(int b, int c){...}
getB(int a, int c){...}
getC(int a, int b){...}
代わりに、@Beryrium が言うように、式を動的に評価したいと考えています。
編集 3:私は今 symja を試していますが、近づいていると思いますが、構文に問題があります。
try {
F.initSymbols(null);
EvalUtilities util = new EvalUtilities();
StringBufferWriter buf = new StringBufferWriter();
String input = "....";
IExpr result = util.evaluate(input);
OutputFormFactory.get().convert(buf, result);
String output = buf.toString();
System.out.println("Evaluation for " + input + " is " + output);
} catch (final Exception e) {
入力構文について教えてください。
編集4:了解しました:-)入力用
String input = "Solve[{a==10,c==20,a+b==c},{a,b,c}]";
出力は
Evaluation for Solve[{a==10,c==20,a+b==c},{a,b,c}] is {{a->10,c->20,b->10}}