Re: I wish Descending Order Result
- To: mathgroup at smc.vnet.net
- Subject: [mg24011] Re: I wish Descending Order Result
- From: Hartmut Wolf <hwolf at debis.com>
- Date: Tue, 20 Jun 2000 03:07:29 -0400 (EDT)
- Organization: debis Systemhaus
- References: <8ice31$9vm@smc.vnet.net> <8ihslq$l5m@smc.vnet.net> <8ikbs4$qai@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Dear Allan and Jens, last year I responded to a similar question by George Szpiro. The idea was to just define a *printing* order. This might comply to the wishes of the applicant; the advantage is, that processing will not be effected. I then had proposed: In[2]:= Unprotect[Plus] In[3]:= Format[Literal[Plus][expr_]] := Infix[#, "+"] &@ With[{expoes = Function[term, Exponent[term, #] & /@ Variables[expr]], newExp = Delete[#1, Last[Position[#1, Max[#1]]]] &}, Module[{so}, so[_, {}] := True; so[x1_, x2_] := With[{m1 = Max[x1], m2 = Max[x2]}, If[m1 == m2, so[newExp[x1], newExp[x2]], m1 > m2]]; Sort[List @@ Expand[expr], so[expoes[#1], expoes[#2]] &]]] In[4]:= Protect[Plus] with that we get In[5]:= Expand[(1 + 2 a + 3 b)^3] Out[5]= \!\(\* InterpretationBox[\(8\ a\^3 + 27\ b\^3 + 36\ a\^2\ b + 54\ a\ b\^2 + 12\ a\^2 + 27\ b\^2 + 36\ a\ b + 6\ a + 9\ b + 1\), Infix[ { Times[ 8, Power[ a, 3]], Times[ 27, Power[ b, 3]], Times[ 36, Power[ a, 2], b], Times[ 54, a, Power[ b, 2]], Times[ 12, Power[ a, 2]], Times[ 27, Power[ b, 2]], Times[ 36, a, b], Times[ 6, a], Times[ 9, b], 1}, "+"], Editable->False]\) (If you like to paste this to the notebook). Now for your test we get: In[7]:= Expand[(1 + x)^2] Out[7]= \!\(\* InterpretationBox[\(x\^2 + 2\ x + 1\), Infix[ { Power[ x, 2], Times[ 2, x], 1}, "+"], Editable->False]\) In[8]:= x (1 + x + x^2) Out[8]= \!\(\* RowBox[{"x", " ", RowBox[{"(", InterpretationBox[\(x\^2 + x + 1\), Infix[ { Power[ x, 2], x, 1}, "+"], Editable->False], ")"}]}]\) In[9]:= Expand[%] Out[9]= \!\(\* InterpretationBox[\(x\^3 + x\^2 + x\), Infix[ { Power[ x, 3], Power[ x, 2], x}, "+"], Editable->False]\) In[10]:= D[%%, x] Out[10]= \!\(\* InterpretationBox[\(3\ x\^2 + 2\ x + 1\), Infix[ { Times[ 3, Power[ x, 2]], Times[ 2, x], 1}, "+"], Editable->False]\) (Again, best to be pasted to the notebook; for your convenience this is the last result in InputForm: Out[10]= Infix[{3*x^2, 2*x, 1}, "+"] ) Kind regards, Hartmut Allan Hayes schrieb: > > Jens, > > I have used your suggestion to get a solution that deals with deeper > polynomial parts > > $Post = # //. (x_Plus /; PolynomialQ[x] :> > Infix[Reverse[List @@ x], "+"]) & > > Unfortunately, although this is fine for appearence, for further computation > we run into problems analogous to those with Matrix form and other wrappers: > > x(1 + x + x^2) > > Expand[%] > > D[%%] > > $Post = . > > So, what to do? > > -- > Allan > --------------------- > Allan Hayes > Mathematica Training and Consulting > Leicester UK > www.haystack.demon.co.uk > hay at haystack.demon.co.uk > Voice: +44 (0)116 271 4198 > Fax: +44 (0)870 164 0565 > > "Jens-Peer Kuska" <kuska at informatik.uni-leipzig.de> wrote in message > news:8ihslq$l5m at smc.vnet.net... > > Hi, > > > > $Post = If[Head[#] === Plus && PolynomialQ[#], > > Infix[Reverse[List @@ #], "+"], #] & > > > > ? > > > > Regards > > Jens > > > > Choi sungkwon wrote: > > > > > > In Mathmatica, > > > > > > When I Typing > > > Expand[(1 x)^2] > > > Then Mathmatica Wrote 1 2 x x^2 > > > > > > But I Wish the result to > > > x^2 2 x 1 > > > ie Descending Order Result for x > > > > > > What can I do > >