C#求解最简单的方程

时间:2013-09-07 14:38:04

标签: c# solver

在C#中,我正在寻找一种方法来解决这样的简单方程式。 Z = A + B

我正在尝试构建一个类,如果我给出其他2个中的任何一个,它将给我第三个参数。

示例,给定Z=A+B

如果您知道A=3B=6,那么就知道Z=9

如果您知道A=4Z=8,那么就知道B=4

我如何在软件中最好地执行这些任务?

另一个想法是使用数学表达式评估,如ncalc。他们可以解释数学表达式,例如将3*(8+2)转换为30,但不能解决像3*(8+x)=30 - >这样的方程式。 x=2

2 个答案:

答案 0 :(得分:1)

你确定NCalc不会做你需要的吗?看一下http://ncalc.codeplex.com/的示例。

  

定义参数,甚至是动态或表达式

Expression e = new Expression("Round(Pow([Pi], 2) + Pow([Pi2], 2) + [X], 2)");

e.Parameters["Pi2"] = new Expression("Pi * [Pi]");
e.Parameters["X"] = 10;

e.EvaluateParameter += delegate(string name, ParameterArgs args)
  {
    if (name == "Pi")
    args.Result = 3.14;
  };

Debug.Assert(117.07 == e.Evaluate());

请注意这是未经测试的 - 但看起来你可以用NCalc做这样的事情:

var e = new Expression("[A] + [B]"); 
e.Parameters = /* your input */ 
var result = e.Evaluate(); 

答案 1 :(得分:-2)

试用C# Expression Evaluator ,看看它是否符合您的要求。