MathGroup Archive 2012

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: SortBy won't order irrationals


This behavior is precisely as described in the documentation:

"Sort treats powers and products specially, ordering them to
correspond to terms in a polynomial."

FullForm[Sqrt[2]]

=> Power[2,Rational[1,2]]

Adding an N to your SortBy function isn't that much of a trouble is
it?

In case of Sort you could use Less as the ordering function.

Cheers -- Sjoerd


Check out Stackoverflow's Mathematica tag: http://stackoverflow.com/questions/tagged/mathematica
or better, help out with the new dedicated Mathematica Q&A site on
StackExchange.
It's almost in private beta, but needs just a few extra people to kick
off and participate. Go to:
http://area51.stackexchange.com/proposals/37304/mathematica?referrer=EJOMFcZOBpAIDM_
9uBjtlA2

On Jan 6, 10:18 am, Chris Young <c... at comcast.net> wrote:
> Have to use N[ ] on them first. Combined with Sort's refusal to accept
> multiple keys, this is extremely exasperating.
>
> In[1218]:= ptsIrr =
>  {
>   {0, 2}, {1, Sqrt[2]}, {2, 2},
>   {4, 1}, {Sqrt[5], 1}, {6, 1}, {Sqrt[3], 1},
>   {7, 0}, {-1, 0}
>   }
>
> Out[1218]= {{0, 2}, {1, Sqrt[2]}, {2, 2}, {4, 1}, {Sqrt[5], 1}, {6,
>   1}, {Sqrt[3], 1}, {7, 0}, {-1, 0}}
>
> In[1219]:= sortIrrY = SortBy[ptsIrr, #[[2]] &]
>
> Out[1219]= {{-1, 0}, {7, 0}, {4, 1}, {6, 1}, {Sqrt[3], 1}, {Sqrt[5],
>   1}, {0, 2}, {2, 2}, {1, Sqrt[2]}}
>
> In[1220]:= sortIrrYN = SortBy[ptsIrr // N, #[[2]] &]
>
> Out[1220]= {{-1., 0.}, {7., 0.}, {1.73205, 1.}, {2.23607, 1.}, {4.,
>   1.}, {6., 1.}, {1., 1.41421}, {0., 2.}, {2., 2.}}
>
> In[1221]:= sortIrrYN2 = SortBy[ptsIrr, N[#[[2]]] &]
>
> Out[1221]= {{-1, 0}, {7, 0}, {4, 1}, {6, 1}, {Sqrt[3], 1}, {Sqrt[5],
>   1}, {1, Sqrt[2]}, {0, 2}, {2, 2}}




  • Prev by Date: Re: DirectoryStack[] not showing top directory stack item
  • Next by Date: Re: How to plot divergence of gradient as contour
  • Previous by thread: Re: SortBy won't order irrationals
  • Next by thread: Re: JordanDecompose[]