3

アプリケーションに数学関数を描画する機能を組み込みたいと考えています。私が使用しているプロット ライブラリ (OxyPlot) には、それに対する優れたサポートがあります。次の例を参照してください。

y = ax³ + bx² + cx + d = 0

このようにプロットされています:

new FunctionSeries( x => a*x*x*x + b*x*x + c*x + d, /* other stuff, spacing, number of points, etc */ )

三角関数は同じ方法で行われます。

   y = sin(3x) + 5cos(x)

   new FunctionSeries(x => Math.Sin(3*x) + 5*Math.Cos(x) , ....);

文字列(たとえば、テキスト ボックスに記述されたもの) と、示されている構文の内部にあるメソッドの呼び出しとの間の変換について誰かが私を案内してくれたら、とてもうれしいです。

編集: の最初のパラメーターFunctionSeries(a, ....) aFunc<double, double>

EDIT2:コンパイラに言う方法はありますか、ねえ、私"x => 5*x*x"がFuncだと信じて、文字通り受け取ってください

何かのようなもの :

Func<double, double> f = (Func<double, double>)myString;
4

1 に答える 1

0

ここに部分的な解決策があります:

        var expresionData = new List<DataPoint>();
        Regex pattern = new Regex("[x]");

        for (int i = 0; i < 100; i++)
        {
            string a = pattern.Replace(ExpresionString, i.ToString());
            NCalc.Expression exp = new NCalc.Expression(a);
            expresionData.Add(new DataPoint(i,Double.Parse(exp.Evaluate().ToString())));
        }

ここでちょっとしたトリックをしています。入力された文字列の各 'x' を i に変換し、式を評価して点を追加します。かなり遅いです。私はまだ元の質問に非常に興味があります:

Func<double, double文字列を>に変換する方法(または単にコンパイラに文字どおりに解釈させる方法)。

于 2013-09-02T03:38:26.117 に答える