将arbitraty字符串转换为数学表达式

时间:2017-10-14 22:02:10

标签: c# math expression

是否可以将任何字符串(例如“x ^ 2-3x + 4”或“x ^ 3 /(exp(x)-1)”)转换为数学表达式,以便我可以在方法如:

public static void Function(double x, ref double y)
    {
        y = ConvertStringToMathExpression("x^3/(exp(x)-1)");
    }

我知道“将字符串转换为数学表达式”还有其他帖子,但所有这些帖子都要求为已经知道的字符串提供算法。我想在运行时输入数学表达式。

象征性分化是否很难做到?我仍然是c#的初学者,不知道我是否可以这样做。是否有关于如何进行符号区分的体面文档?

1 个答案:

答案 0 :(得分:0)

这是我的代码,也许它可以帮助其他人弄清楚如何使用NCalc:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using NCalc;

public partial class Form1 : Form
{
    public ExpressionString expressi = new ExpressionString("pow([x],3)/(exp(x)-1)");
    public void FunctionInt(double x, double xminusa, double bminusx, ref double y, object obj)
    {
        Expression e = new Expression(expressi.expression, EvaluateOptions.IgnoreCase);
        e.Parameters["x"] = x;
        object result = e.Evaluate();
        y = Convert.ToDouble(result);
    }
}