MathNet.Symbolics Algebraic.Expand 降序?

MathNet.Symbolics Algebraic.Expand in descending order?

使用 MathNet.Symbolics 库,我尝试打印具有降幂阶数的多项式:

using mse = MathNet.Symbolics.Expression;
using MathNet.Symbolics;

public void Symbolics()
{
    var x1 = 2;
    var y2 = 3;
    var x2 = 4;

    // (2a+3)(a-4)

    var x = mse.Symbol("x");
    var a = mse.Symbol("x");
    var y = mse.Symbol("y");

    var expression = (x1 * a + y2) * (a - x2);
    var expanded = Algebraic.Expand(expression);
    var firstResult = Infix.Format(expanded);


    Debug.Log("Expression: " + expression);
    Debug.Log("Expanded: " + firstResult);
}

当前输出按升序排列:-12 - 5*x + 2*x^2,但我想要相反的顺序。 我在多项式中尝试了 .ToStringDescending() 函数,但无法在此处运行。

此外,如果可能,输出到 Latex 会很有用,但不是必需的。

我如何得到 Algebraic.Expand 的结果,而不是升序?

您可以使用相应的格式提供程序进行 Latex 输出:

Console.WriteLine("LaTeX.Format: " + LaTeX.Format(expanded));

我能得到的最好的方法是使用Summands 来获取它们并反转列表。遗憾的是 + 标志在这个过程中丢失了:

Console.WriteLine("Summands: " + string.Join("+", Algebraic.Summands(expanded).Reverse().Select(Infix.Format)));

Numerics.Polynomial 有 ToString() returns 升序形式的字符串和

ToStringDescending(字符串格式,IFormatProvider formatProvider) 按降序格式化多项式,例如"x^3 + 2.0x^2 - 4.3"

即returns降序形式的字符串。