C# 将字符串转换为函数

C# 将字符串转换为函数,c#,string,function,C#,String,Function,我想在我的应用程序中建立绘制数学函数的可能性。在我正在使用的绘图库(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) 是 如

我想在我的应用程序中建立绘制数学函数的可能性。在我正在使用的绘图库(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)

如果有人能指导我在字符串(例如写在文本框中)和调用方法之间的转换,我将非常高兴,该方法内部包含所示语法

编辑:函数系列(a,…)
a
中的第一个参数是
Func

EDIT2:有没有办法对编译器说,嘿,相信我,
“x=>5*x*x”
是一个Func,照字面理解

比如:

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

这里我有一个部分解决方案:

        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())));
        }
var expresionData=new List();
正则表达式模式=新正则表达式(“[x]”);
对于(int i=0;i<100;i++)
{
字符串a=pattern.Replace(ExpresionString,i.ToString());
NCalc.exp表达式=新的NCalc.exp表达式(a);
Add(新数据点(i,Double.Parse(exp.Evaluate().ToString()));
}
我在这里做一个小技巧:我将类型化字符串中的每个“x”转换为I,然后计算表达式并添加点。相当慢。我仍然对最初的问题很感兴趣:


如何将字符串转换为
Func(或者让编译器照字面意思理解)。

简单介绍一下。。NCalc是一个很好的选择。谢谢你的建议,我会选择NCalc,如果不太需要问Simon的话,你能给我提供世界上最简单的例子吗?因为我在NCalc的简要文档中找不到我的必需品。在示例中,它们只是计算从字符串解析的表达式的结果。我想把字符串转换成Func。你认为NCalc有可能吗?
        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())));
        }