C# 将字符串转换为函数
我想在我的应用程序中建立绘制数学函数的可能性。在我正在使用的绘图库(OxyPlot)中,有一个很好的支持。请参见此示例: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) 是 如
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())));
}