TransWikia.com

How do you format a polynomial output so the coefficients and variables aren't combined into a fraction?

Mathematica Asked on January 5, 2021

Suppose a computation gives the polynomial as its output. I’d like to know how to format the output similarly to the input line of the screenshot below.

Mathematica’s output likes to combine fractions, and when the expressions are much more involved and symbolic, this makes it more difficult to read off.

Thanks in advance!

How do I get Mathematica to format the output like the input is formatted

2 Answers

Mma has its internal rules concerning the order of the terms in expressions. It is possible, but very difficult to override this order. Generally, it is not recommended.

Nevertheless, I often use such transformations on the very last stage of my calculations in order to bring the expression to the form most comfortable to look at. This may be important to reduce errors and simplify work.

Here is your expression:

expr = 5/32*x + 7/11*x^5

enter image description here

You might do something like this

expr /. a_*x^n_. :> HoldForm[a]*HoldForm[x^n]/. HoldForm[x^1] :> HoldForm[x]

enter image description here

Try.

Do not forget that after this action it is impossible to make any further operations unless you remove the HoldForm by applying ReleaseHold[%]to the result.

Have fun!

Answered by Alexei Boulbitch on January 5, 2021

As per @Alexei's suggestion to use HoldForm, here's a function that formats a polynomial the way I was looking for. In this case it's for hard-coded 3 variables, but could probably be straightforwardly extended to use the length of var to do so automatically:

formatPolynomial[poly_, vars_ : {p, q, pdq}] := Module[{ dim, coeffs, output },
    dim = Max[Cases[CoefficientRules[poly, vars], v_?VectorQ :> Total[v], 2]] + 1;
    coeffs = CoefficientList[poly, vars, {dim, dim, dim}];
    output = Sum[coeffs[[i, j, k]] Subscript[tmp, i - 1, j - 1, k - 1], {i, 1, 
 dim, 1}, {j, 1, dim, 1}, {k, 1, dim, 1}];
    output = output /. {a_ Subscript[tmp, n_, m_, l_] :> HoldForm[a] Subscript[tmp, n, m,l]} /. {Subscript[tmp, n_, m_, l_] :> vars[[1]]^n vars[[2]]^m vars[[3]]^l} /. {a_ HoldForm[b_] :> HoldForm[({b} // MatrixForm)] a};
    output
]

This gives output so the coefficients of individual monomials (which I'm looking for) are easily identifiable: enter image description here

Answered by Jaffe42 on January 5, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP