1

使用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降序而不是升序的结果?

4

2 回答 2

1

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

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

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

Console.WriteLine("Summands: " + string.Join("+", Algebraic.Summands(expanded).Reverse().Select(Infix.Format)));
于 2020-02-06T13:44:01.107 回答
0

Numerics.Polynomial 具有 ToString() 以升序形式返回字符串,并且

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

以降序形式返回字符串。

于 2020-02-10T18:21:35.697 回答