-1

入力で定義された関数の定積分を計算するプログラムについて考えています。

許容される入力は、"+,-,*,^" 演算子と "Sin,Cos,Tg,Ctg,Log" 三角関数の組み合わせです。例:

2*x^2+x^(log(5+Sin(x)+1)*x^5)/(Tg(Log(x)))

唯一難しいのは、入力文字列を解析することです。そのようなメソッドは製品として期待されます:

public static double customFunc(double x,...)
{
     return <client input>;
}

私の例では:

public static double customFunc(double x,...)
{
     return 2*x^2+x^(log(5+Sin(x)+1)*x^5)/(Tg(Log(x)));
}

だから、どうすればいいのかわからない...ヒント、サンプル、アイデア、または解決策はありますか?

4

2 に答える 2

1

独自のパーサーを作成する場合は、ANTLRを強くお勧めします。これは優れた解析ツールであり、特に独自のロジックで囲みたい場合に役立ちます。ここには、非常に役立つ一連のチュートリアル ビデオもあります。

于 2013-03-29T14:00:00.730 に答える
0

アイデアを提供できると思います。

関数文字列を解析し、演算子を分離する必要があります。

Map を使用して、演算子を Java 関数にマップできます。

+ to +
Sin to Math.sin(x)
etc.

次に、StringBuilder で計算を行う Java 行を作成します。

どういうわけか、作成した Java 行を実行します。それは私がどうしたらいいかわからない部分です。

于 2013-03-29T13:59:52.200 に答える