MathGroup Archive 2000

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

Search the Archive

Re: cubic polynomial

  • To: mathgroup at smc.vnet.net
  • Subject: [mg22683] Re: [mg22646] cubic polynomial
  • From: Andrzej Kozlowski <andrzej at tuins.ac.jp>
  • Date: Sat, 18 Mar 2000 01:27:57 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

on 3/17/00 3:10 PM, Andrzej Kozlowski at andrzej at tuins.ac.jp wrote:

> on 3/17/00 5:48 AM, Andrzej Kozlowski at andrzej at tuins.ac.jp wrote:
> 
>> on 3/16/00 3:11 PM, E.Carletti1 at E.Carletti1 at lse.ac.uk wrote:
>> 
>>> 
>>> I have a problem: I want to solve this equation:
>>> 
>>> x^3+(3c-1)(x^2)-4cx-4(c^2)=0 with respect to x.
>>> 
>>> It has to have a real solution because it is continuous
>>> in x. c is a positive parameter.
>>> If i solve it numerically, plugging numbers for c, then it is fine. But
>>> I would like an analytical solution: in this case i get only one
>>> solution which should give me a real value for x (the other two are
>>> imaginary) but
>>> it has a square root with all negative members (all terms with c, which
>>> is positive, with a sign - in front of it, so immaginary). How is that
>>> possible? What procedure does mathematica use to solve cubic expression?
>>> 
>>> How can I express the expression in a nicer way to get rid of these
>>> negative terms? My feeling is that the programm is not able to simplify
>>> the expression for the solution.
>>> Could you please help me? if I write the expression I find in the paper
>>> I am writing, noone will believe it is real!
>>> And even more funny, if I plug number into the solution I find for x, it
>>> comes the same number as I plug numbers directly into the function I
>>> want to solve, except for the last part which is an imaginary number
>>> which shoult tend to zero.
>>> What is going on?
>>> 
>>> Thank your for your help
>>> 
>>> Elena Carletti
>>> Financial Markets Group
>>> LSE
>>> Houghton Street
>>> London WC2A 2AE
>>> 
>>> Tel. 0044 (0)20 7955 7896
>>> Fax 0044 (0) 20 7242 1006
>>> 
>>> 
>>> 
>> 
>> I am afraid this your problem is as unsolvable as it is typical. Mathematica
>> solves cubic equations using the famous formula attributed to the 16 century
>> Italian mathematician Cardano (though actually it was discovered by another
>> 16th century Italian Tartaglia). This formula (and another one for fourth
>> degree equations discovered by Cardano) inevitably involves complex numbers
>> even when the roots are real.
>> 
>> For example consider the following equation:
>> x^3 + x^2 - 12 x - 6 == 0
>> 
>> This has three real roots. You can see this just by looking at the graph
>> Plot[x^3 + x^2 - 12 x - 6, {x, -4, 4}]
>> 
>> (I personally prefer a different proof. Just evaluate
>> In[3]:=
>> Experimental`CylindricalAlgebraicDecomposition[x^3 + x^2 - 12 x - 6 == 0, x]
>> Out[3]=
>> 3     2
>> x == Root[#1  + #1  - 12 #1 - 6 & , 1] ||
>> 
>> 3     2
>> x == Root[#1  + #1  - 12 #1 - 6 & , 2] ||
>> 
>> 3     2
>> x == Root[#1  + #1  - 12 #1 - 6 & , 3]
>> 
>> This shows that all three roots must be real!)
>> 
>> 
>> Now look at the answer Solve gives
>> 
>> In[4]:=
>> Solve[x^3 + x^2 - 12 x - 6 == 0, x]
>> 
>> Out[4]=
>> 1               37
>> {{x -> -(-) + ------------------------- +
>> 3                          1/3
>> 3 (26 + 9 I Sqrt[617])
>> 
>> 1                     1/3
>> - (26 + 9 I Sqrt[617])   },
>> 3
>> 
>> 1       37 (1 + I Sqrt[3])
>> {x -> -(-) - ------------------------- -
>> 3                          1/3
>> 6 (26 + 9 I Sqrt[617])
>> 
>> 1                                     1/3
>> - (1 - I Sqrt[3]) (26 + 9 I Sqrt[617])   },
>> 6
>> 
>> 1       37 (1 - I Sqrt[3])
>> {x -> -(-) - ------------------------- -
>> 3                          1/3
>> 6 (26 + 9 I Sqrt[617])
>> 
>> 1                                     1/3
>> - (1 + I Sqrt[3]) (26 + 9 I Sqrt[617])   }}
>> 6
>> 
>> All roots look complex, though we know they are real. In general it is
>> impossible to give an expression for arbitrary real roots of polynomial
>> equations in terms of radicals without using complex numbers, although one
>> can 
>> give such expressions if one does not insist on using radicals. In the above
>> case one can give real expressions for the roots using trigonometric
>> functions: for example the first root above is actually equal to
>> 
>> 
>> 1    2              1        9 Sqrt[617]
>> -(-) + - Sqrt[37] Cos[- ArcTan[-----------]]
>> 3    3              3            26
>> and one can find similar real expressions for all of the others.
>> 
>> If your equation involves parameters the situation is even more confusing.
>> You 
>> may get roots which seem to involve complex numbers and others which appear
>> to 
>> be real. But actually which one is real and which is not will depend on the
>> values of the parameters, and in fact for certain values the roots that look
>> complex may turn out to be real while those which look real may result in
>> complex values. 
>> 
>> The moral is that if you want to use algebraic solutions of equations you
>> simply can't avoid complex numbers. This is exactly what Tartaglia and
>> Cardano 
>> discovered and this is the reason why they invented what they called
>> "imaginary" numbers.
> 
> --
> 
> When I wrote my first reply to this message I forgot to consider the equation
> that caused the original posting. To determine the real roots of an algebraic
> equation the best way is, in my opinion, to use on eof the most powerful
> functions in Mathematica 4.0 as follows:
> 
> In[1]:=
> Experimental`CylindricalAlgebraicDecomposition[
> x^3 + 3*c*x^2 - x^2 - 4*c*x - 4*c^2 == 0, {c, x}]
> Out[1]=
> 3         2     2               2
> c < 0 && x == Root[#1  + 3 c #1  - #1  - 4 c #1 - 4 c  & ,
> 
> 1] || c == 0 && (x == 0 || x == 1) ||
> 
> 3         2     2
> c > 0 && (x == Root[#1  + 3 c #1  - #1  - 4 c #1 -
> 
> 2
> 4 c  & , 1] || x ==
> 
> 3         2     2               2
> Root[#1  + 3 c #1  - #1  - 4 c #1 - 4 c  & , 2] ||
> 
> 3         2     2               2
> x == Root[#1  + 3 c #1  - #1  - 4 c #1 - 4 c  & , 3])
> 
> What this means is this. If c<0 then there is only one real root, which, as a
> Root object can be described as Root[#1^3 + 3*c*#1^2 - #1^2 - 4*c*#1 - 4*c^2 &
> , 1]. If you want to express it in terms of radicals you can do so:
> 
> In[3]:=
> ToRadicals[Root[#1^3 + 3*c*#1^2 - #1^2 - 4*c*#1 - 4*c^2 & ,
> 1]]
> Out[3]=
> 1             1            3       2
> - (1 - 3 c) + - Power[-27 c  + 27 c  + 9 c +
> 3             3
> 
> 5      4    3
> 6 Sqrt[3] Sqrt[-27 c  - 9 c  - c ] + 1, 1/3] -
> 
> 2
> (-9 c  - 6 c - 1) /
> 
> 3       2
> (3 Power[-27 c  + 27 c  + 9 c +
> 
> 5      4    3
> 6 Sqrt[3] Sqrt[-27 c  - 9 c  - c ] + 1, 1/3])
> 
> If c==0 then there are just two possible real roots, x==0 and x==1. And if c>0
> then the real root is just one of the roots of the original equation! Which
> one? That, of course, depends, on the value of c.
> 
> 
> Andrzej Kozlowski
> Toyama International University
> JAPAN
> http://sigma.tuins.ac.jp
> 


I have to send a correction to the last part of the above message. Writing
in a hurry I misinterpreted the meaning of Mathematica's answer: which is
that when c>0 all three roots are real. So when c<0 there is just one real
root, for c=0 two and c<0 all three roots are real.
-- 
Andrzej Kozlowski
Toyama International University
JAPAN
http://sigma.tuins.ac.jp




  • Prev by Date: Re: Re: Suppressing display of LogPlots
  • Next by Date: Re: cubic polynomial
  • Previous by thread: Re: cubic polynomial
  • Next by thread: Re: cubic polynomial