MathNet.Symbolics Algebraic.Expand в порядке убывания?
С 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
по убыванию, а не по возрастанию?
2 ответа
Вы можете получить латексный вывод с соответствующим поставщиком формата:
Console.WriteLine("LaTeX.Format: " + LaTeX.Format(expanded));
Лучшее, что я могу получить, - это использовать Summands
чтобы получить их, и переверните список. К сожалению+
знак теряется в процессе:
Console.WriteLine("Summands: " + string.Join("+", Algebraic.Summands(expanded).Reverse().Select(Infix.Format)));
Numerics.Polynomial имеет ToString(), который возвращает строку в возрастающей форме и
ToStringDescending(формат строки, IFormatProvider formatProvider) Форматирует многочлен в порядке убывания, например "x^3 + 2.0x^2 - 4.3"
который возвращает строку в убывающем виде.