MathGroup Archive 1998

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

Search the Archive

RE: algebraic solutions




Daniel wrote:
 ----------
|
|I'm a fairly novice Mathematica user, and I'm having a problem.  I
asked |a more experienced user and he could solve it, either.  I hope
there is |a solution and that you all can help. |
|I want to find the roots of the following equation: |
|    z^5  + 2z^3 - p + 1 = 0
|
|I want to solve for z in terms of p.  Now, if I pick some random number
|for p, I can get mathematica to solve for z, but I cant get a solution
|in terms of p.  Alternatively, I would like to be able to plot this
|function with p included as part of the vertical axis. |

What you are trying to get is a closed form solution for a fifth order 
polynomial.
This can only be done if you are satisfied with horribly complicated 
expressions in terms of Elliptic functions.  Mathematica will not do it
for  you.  I think the designers figured such a solution is of no
practical use. 
 For degrees higher than five it gets even worse.  This is a famous fact
in  mathematics.

Now for plotting the roots.
I only had one real root for any value of (p) that I looked at.  I
suppose  you want to plot the roots in the complex plane.  This can be
done, but the  programming involved is a little deep.  I will give some
explanation.

Using Version 3.0.1 under Windows 95 I selected: Cell
    - Default Output Format Type
          - OutputForm
This ensures the format is easy to read after I past into this e-mail.

The line below is a function that finds all roots for a given value of
(p). As an example I find all roots for (p=3). In[1]:=
sln[p_]:=NRoots[ z^5  + 2z^3 - p + 1 == 0,z]; sln[3]

Out[1]=
z == -0.629144 - 0.766896 I ||

  z == -0.629144 + 0.766896 I ||

  z == 0.18215 - 1.49682 I ||

  z == 0.18215 + 1.49682 I || z == 0.893987


The next line makes a list of the roots for (p=3). In[2]:=
Apply[#2&,List@@sln[3],{1}]

Out[2]=
{-0.629144 - 0.766896 I, -0.629144 + 0.766896 I,

  0.18215 - 1.49682 I, 0.18215 + 1.49682 I, 0.893987}

Now I define a function "RootsFound[p_]". This function presents each
root as  {Re[root], Im[root]}. In[3]:=
RootsFound[p_]:=Apply[{Re[#2],Im[#2]}&,
          List@@NRoots[z^5+2 z^3-p+1==0,z],{1}] In[4]:=
RootsFound[3]

Out[4]=
{{-0.629144, -0.766896}, {-0.629144, 0.766896},

  {0.18215, -1.49682}, {0.18215, 1.49682},

  {0.893987, 0}}

Now I make a table of data that contains the roots for RootsFound[-100],
RootsFound[-98], RootsFound[-96], .... , RootsFound[100] In[5]:=
data=Table[RootsFound[p],{p,-100,100,2}];


The line below makes a plot of the roots in the complex plane. In[6]:=
PlotedRoots=MapThread[ListPlot[#,PlotJoined->True,
               DisplayFunction->Identity]&,data];

Show[PlotedRoots,DisplayFunction->$DisplayFunction]

Out[6]
  - Graaphics Not Shown -


Ted Ersek




  • Prev by Date: Re: Previous variable affects "/."
  • Next by Date: RE: are nested patterns imposs
  • Prev by thread: Re: algebraic solutions
  • Next by thread: Re: algebraic solutions