       Re: Is there a way to rewrite Roots[#n] result in easier to read form?

• To: mathgroup at smc.vnet.net
• Subject: [mg80351] Re: [mg80315] Is there a way to rewrite Roots[#n] result in easier to read form?
• From: DrMajorBob <drmajorbob at bigfoot.com>
• Date: Sat, 18 Aug 2007 05:38:27 -0400 (EDT)
• References: <17134341.1187333659867.JavaMail.root@m35>

```ToRadicals will (sometimes) eliminate Root objects, but that will
generally make things MORE complicated, not less. There are some things

First I suggest avoiding subscripts (for ease in posting Q&A, if nothing
else):

Clear[x, y]
ode11 = y'[x] ==
1/Sqrt[a*x^4 + a*x^3 + a*x^2 + a*x + a]
y[x_] = y[x] /. First@DSolve[ode11, y[x], x];

There are 36 instances of Root in the result, but only four are distinct:

Cases[y[x], _Root, \[Infinity]];
% // Length
roots = %% // Union

36

{Root[a + a #1 + a #1^2 + a #1^3 + a #1^4 &, 1],
Root[a + a #1 + a #1^2 + a #1^3 + a #1^4 &, 2],
Root[a + a #1 + a #1^2 + a #1^3 + a #1^4 &, 3],
Root[a + a #1 + a #1^2 + a #1^3 + a #1^4 &, 4]}

Hence we can simplify display of y[x] this way:

displayable = y[x] /. Root[_, k_] :> r[k]

C - (2 EllipticF[
ArcSin[Sqrt[((x - r) (r - r))/((x - r) (r -
r))]], ((r - r) (r - r))/((r -
r) (r - r))] (x -
r)^2 Sqrt[((-r + r) (x - r))/((x - r) (-r +
r))] (r -
r) Sqrt[((x - r) (r - r) (x - r) (r -
r))/((x - r)^2 (r - r)^2)])/(Sqrt[
a + x (a + x (a + x (a + x a)))] (-r +
r) (r - r))

If, at any time, you still want to display subscripts, it's simple enough
to do so:

displayable /. {a[k_] :> Subscript[a, k], r[k_] :> Subscript[r, k],
C[k_] :> Subscript[c, k]}

Subscript[c, 1] - (2 EllipticF[
ArcSin[Sqrt[((x - Subscript[r, 1]) (Subscript[r, 2] - Subscript[
r, 4]))/((x - Subscript[r, 2]) (Subscript[r, 1] - Subscript[
r, 4]))]], ((Subscript[r, 2] - Subscript[r, 3]) (Subscript[r,
1] - Subscript[r, 4]))/((Subscript[r, 1] - Subscript[r,
3]) (Subscript[r, 2] - Subscript[r, 4]))] (x - Subscript[r,
2])^2 Sqrt[((-Subscript[r, 1] + Subscript[r, 2]) (x - Subscript[
r, 3]))/((x - Subscript[r, 2]) (-Subscript[r, 1] + Subscript[r,
3]))] (Subscript[r, 1] - Subscript[r,
4]) Sqrt[((x - Subscript[r, 1]) (Subscript[r, 1] - Subscript[r,
2]) (x - Subscript[r, 4]) (Subscript[r, 2] - Subscript[r,
4]))/((x - Subscript[r, 2])^2 (Subscript[r, 1] - Subscript[r,
4])^2)])/(Sqrt[
Subscript[a, 0] +
x (Subscript[a, 1] +
x (Subscript[a, 2] +
x (Subscript[a, 3] + x Subscript[a, 4])))] (-Subscript[r,
1] + Subscript[r, 2]) (Subscript[r, 2] - Subscript[r, 4]))

y[x] is still intact, but you can also retrieve the long-form result as

displayable /. Thread[r /@ Range -> roots];
y[x] == %

True

I hope that helps.

Bobby

On Fri, 17 Aug 2007 00:52:15 -0500, Nasser Abbasi <nma at 12000.org> wrote:

> Hello;
> This is Mathematica 6.01
>
> Is there a way to make the output of the following DSolve more readable?
> It
> contains lots of Root[] with #n in it.
>
>
> Remove["Global`*"]
> ode11 = Derivative[y][x] -
>      1/Sqrt[Subscript[a, 4]*x^4 + Subscript[a, 3]*x^3 +
>         Subscript[a, 2]*x^2 + Subscript[a, 1]*x + Subscript[a, 0]] ==
>     0;
> DSolve[ode11, y[x], x]
>
> here is a pic of the output:
>
> http://12000.org/tmp/081507/output.PNG
>
> I understand what #'s are for, but was wondering if the output can be
> written using more 'traditional' form so it will easier to read? i.e
> having
> the polynomial whose Roots are being called for, to be explicitly written
> out or something along those lines?...I tried Simplify[].
>
> thanks,
> Nasser
>
>
>

--
DrMajorBob at bigfoot.com

```

• Prev by Date: Re: 3DPlot in Mathematica 6
• Next by Date: Re: What determines what is assigned to Out[]?
• Previous by thread: Re: Is there a way to rewrite Roots[#n] result in easier to read form?
• Next by thread: generalized 2d IFS for D_n Cartan group using MathWorld DihedralGroupMatrices