c# - 将字符串转换为函数

标签 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)

   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;

最佳答案

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

        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 >(或者让编译器按字面意思理解)。

关于c# - 将字符串转换为函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18564866/

相关文章:

c# - 使用 libgit2sharp 从分支中提取最新版本

java - java中同一个字符串的不同名称

python - 如何修改已经打印的文本?

JavaScript 在按钮上无法正常工作

c# - 删除文本文件中的行并替换字符串

c# - 仅使用 POCO 的项目上的 TypeLite?

java - 当 else 语句将错误消息输出为字符串时,JUnit 测试方法

c - 如何在字符串前添加减号? (在 C 中)

调用另一个函数的 JavaScript 函数

c# - 核心 2.1 signalR 成功连接但客户端为空