C# 如何使用MathNet.Symbolics获得最终结果?
我正在尝试一种计算行列式的方法。为此,我正在使用MathNet.Symbolics库。一切都很好,直到我遇到一个小问题。我试图从行列式的公式中得到最终结果,在我使用了C# 如何使用MathNet.Symbolics获得最终结果?,c#,equation,math.net,C#,Equation,Math.net,我正在尝试一种计算行列式的方法。为此,我正在使用MathNet.Symbolics库。一切都很好,直到我遇到一个小问题。我试图从行列式的公式中得到最终结果,在我使用了Infix.Format之后,我不知道为什么,但它并没有给ma一个令人满意的结果。它给出的不是最终结果,而是介于两者之间的一个等式。我认为这与方程的一部分在两个括号之间这一事实有关。我该怎么做才能得到最终结果 这是我的密码: using System; using InputMath; using MathNet.Symbolics
Infix.Format
之后,我不知道为什么,但它并没有给ma一个令人满意的结果。它给出的不是最终结果,而是介于两者之间的一个等式。我认为这与方程的一部分在两个括号之间这一事实有关。我该怎么做才能得到最终结果
这是我的密码:
using System;
using InputMath;
using MathNet.Symbolics;
using mns = MathNet.Symbolics.Expression;
namespace MathWizard
{
class Determinants
{
//The final result
public static string fnalResult;
public static void BasicDeterminant()
{
//The inputs before assigning them to theyr specific variable
string[] inputs;
inputs = Console.ReadLine().Split(new char[] { ' ' },StringSplitOptions.RemoveEmptyEntries);
Double x1 = Convert.ToDouble(inputs[0]);
Double y1 = Convert.ToDouble(inputs[1]);
Double x2 = Convert.ToDouble(inputs[2]);
Double y2 = Convert.ToDouble(inputs[3]);
var x = mns.Symbol("x");
var y = mns.Symbol("y");
var firstResult = Infix.Format(x * x1 * 1 + x1 * y2 * 1 + x2 * y * 1 - (x1 * x2 * 1 + 1 * y2 * x + 1 * y * x1));
Console.WriteLine(firstResult);
Console.ReadKey();
}
}
}
这是一个示例输入:
1 3 6 4
输入后,编号将按如下方式分配:
x1 = 1;
y1 = 3;
x2 = 6;
y2 = 4;
运行所有代码后,输出为:
4+x+6*y-(6+4*x+y)
解决此输出后,实际预期结果应为:
-2-3*x+7*yMath.NET符号确实应用了自动简化,但仅根据严格的规则。这就是为什么一些术语被简化并重新排序,但括号不会自动展开 您可以使用符号例程
代数.Expand
强制展开:
var expression = x * x1 * 1 + x1 * y2 * 1 + x2 * y * 1 - (x1 * x2 * 1 + 1 * y2 * x + 1 * y * x1);
var expanded = Algebraic.Expand(expression);
var firstResult = Infix.Format(expanded);
其中firstResult
现在具有预期值(-2)+(-3)*x+5*y
注意:我注意到如果将其格式设置为
-2-3*x+5*y
会更好。在下一个版本中,我将尝试对此进行改进。Math.NET Symbolics确实应用了自动简化,但仅根据严格的规则。这就是为什么一些术语被简化并重新排序,但括号不会自动展开
您可以使用符号例程代数.Expand
强制展开:
var expression = x * x1 * 1 + x1 * y2 * 1 + x2 * y * 1 - (x1 * x2 * 1 + 1 * y2 * x + 1 * y * x1);
var expanded = Algebraic.Expand(expression);
var firstResult = Infix.Format(expanded);
其中firstResult
现在具有预期值(-2)+(-3)*x+5*y
注意:我注意到如果将其格式设置为
-2-3*x+5*y
会更好。我将在下一个版本中对此进行改进。它非常有效!非常感谢您的时间和努力。祝你今天愉快!它就像一个符咒!非常感谢您的时间和努力。祝你今天愉快!