[Mathematica] Formatting output of polynomials

Click For Summary
SUMMARY

This discussion addresses formatting polynomials in Mathematica to achieve a specific output style. The user, Jack, seeks to display a polynomial in a standard form with parentheses around each term, such as (-2-7z)+(8-2z^2)w+(4+5z)w^2+(-9-3z)w^3+(-5z^2-5z^3)w^4. The provided solution utilizes the CoefficientRules function to extract coefficients and format them accordingly using Row for display. The final output is primarily for visualization purposes, aiding in the relationship between algebraic expressions and their geometric interpretations.

PREREQUISITES
  • Familiarity with Mathematica programming language
  • Understanding of polynomial representation in algebra
  • Knowledge of functions like CoefficientRules and Row in Mathematica
  • Basic concepts of algebraic geometry
NEXT STEPS
  • Explore advanced formatting options in Mathematica using InterpretationBox
  • Learn about custom display functions in Mathematica for polynomials
  • Investigate the use of TraditionalForm for different types of mathematical expressions
  • Study the relationship between algebraic expressions and their geometric interpretations in depth
USEFUL FOR

Mathematica users, mathematicians, educators, and anyone involved in visualizing polynomial expressions for better understanding of algebraic concepts.

jackmell
Messages
1,806
Reaction score
54
Hi guys,

I seem to still be having problems formatting polynomials in a standard way in Mathematica. I generate them randomly and would like them output using Print in a particular format. Say I have:

theFunction=-2 + w^3 (-9 - 3 z) - 7 z + w^2 (4 + 5 z) + w (8 - 2 z^2) +
w^4 (-5 z^2 - 5 z^3)

I can for example use TraditionalForm to get:

w^4 \left(-5 z^3-5 z^2\right)+w^3 (-3 z-9)+w^2 (5 z+4)+w \left(8-2 z^2\right)-7 z-2

but that's really not the way I want it. I'd like to output it in the form:

(-2-7z)+(8-2z^2)w+(4+5z)w^2+(-9-3z)w^3+(-5z^2-5z^3)w^4

with the parenthesis. I've tried CoefficientList to get the coefficients directly and then put the polynomial back together the way I want it but Mathematica changes it and doesn't keep the parenthesis around the w^0 term and will also place the w^n term first in some of the terms. Here's the code I'm using to generate the polynomials:

Code:
degree = 5;
bitsize = 5;
thenumber = 
  IntegerDigits[RandomInteger[{1, 2^(bitsize (degree + 1))}], 2, 
   bitsize (degree + 1)];
orderTable = Table[0, {degree + 1}];
mylist = Table[
   aseq = Take[thenumber, {bitsize (n - 1) + 1, bitsize n}];
   atemp = Table[If[aseq[[j]] != 0,
      RandomInteger[{-9, 9}] Power[z, j - 1], "A"], {j, 1, bitsize}];
   Subscript[a, n - 1] = Plus @@ DeleteCases[atemp, _String]
   , {n, 1, degree + 1}];

theFunction = Plus @@ Table[Subscript[a, n] w^n, {n, 0, degree}]
TraditionalForm[theFunction]

You guys have any ideas how to change it so that I can Print the output in the form I described above?
Thanks,
Jack
 
Last edited:
Physics news on Phys.org
Here's a quick hack

Code:
polyForm[poly_, var_] := 
 Module[{coeffs = CoefficientRules[poly, var] // Sort},
  Interpretation[Row[Table[Row[{"(", coeff[[2]], ")", w^coeff[[1, 1]] /. 1 -> ""}], 
                                     {coeff, coeffs}], "+"], poly]]

Then

Code:
theFunction = -2 + w^3 (-9 - 3 z) - 7 z + w^2 (4 + 5 z) + 
                              w (8 - 2 z^2) + w^4 (-5 z^2 - 5 z^3);

polyForm[theFunction, w]
(-2 - 7 z) + (8 - 2 z^2) w + (4 + 5 z) w^2 + (-9 - 3 z) w^3 + (-5 z^2 - 5 z^3) w^4

It's only really for displaying the polynomial, since the `Interpretation` thing only works for cutting and pasting (that is `t = polyForm[poly, var]` does not work). If you worked at a lower level with `InterpretationBox` then you could get it working more smoothly.
 
Last edited:
Ok. That works fine. I only want it for displaying. The reason is so that I can easily relate the algebra to the geometry whereas when it's not in that easy-to-recognize form sometimes I mis-interpret the geometry based on the algebra only to realize after some work that I didn't notice a term.

Thanks!
 

Similar threads

  • · Replies 4 ·
Replies
4
Views
2K
  • · Replies 8 ·
Replies
8
Views
2K
  • · Replies 7 ·
Replies
7
Views
2K
  • · Replies 1 ·
Replies
1
Views
2K
  • · Replies 10 ·
Replies
10
Views
2K
  • · Replies 6 ·
Replies
6
Views
3K
  • · Replies 5 ·
Replies
5
Views
4K
  • · Replies 1 ·
Replies
1
Views
1K
  • · Replies 2 ·
Replies
2
Views
2K
  • · Replies 6 ·
Replies
6
Views
2K