1. Limited time only! Sign up for a free 30min personal tutor trial with Chegg Tutors
    Dismiss Notice
Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Expressing a root of a cubic polynomial as a series

  1. Oct 31, 2011 #1
    Is there a good way to do this?

    I have an equation, say x^3 - 4*x^2 + 2, so a=1, b=-4, c=0, d=2.

    Is there an easy way to express the largest root of such an equation? In this case, the roots are:


    But I am trying to find an easier way to extract that 3.866 root in such a way that I can express it in terms of as many digits as I want (incrementally, so as to not waste computer memory doing crazy float math). I've tried looking at the wiki entries for cubic functions and Taylor expansions but I feel like I'm hitting a brick wall.

    Apologies if my question is not clear.
  2. jcsd
  3. Oct 31, 2011 #2
    And yes, I'm aware of Newton's Method, but the problem is that it requires me to divide a function by its derivative, which ultimately results in a decimal of infinite length (meaning I have to truncate it and lose information).
  4. Oct 31, 2011 #3
    How about the bisection method? Of course there are also limitations (as with every other numerical method) but it is not as worse as with Newton.
  5. Oct 31, 2011 #4
  6. Oct 31, 2011 #5

    I like Serena

    User Avatar
    Homework Helper

    Just of the top of my head:

    You could calculate the extrema (set derivative to zero).
    Pick a point to the left of the leftmost extrema, calculate the tangent line and intersect it with the x-axis.
    There! A lower bracket.

    If there are no extrema, search left and right with some step, until your signs are different.
    There! A bracket.
  7. Oct 31, 2011 #6
    My problem isn't finding roots -- it's returning arbitrarily long decimal expansions
  8. Oct 31, 2011 #7

    I like Serena

    User Avatar
    Homework Helper

    Ah sorry, my bad.

    Well, you could simply calculate all roots and pick the biggest.

    The solution of [itex]x^3+ax^2+bx+c = 0[/itex] is:

    [itex]Q={a^2-3b \over 9}[/itex]

    [itex]R={2a^3-9ab +27c \over 54}[/itex]

    if [itex]R^2 < Q^3[/itex] then

    [itex]\theta=\arccos(R / \sqrt{Q^3})[/itex]

    [itex]x_1=-2\sqrt Q \cos({\theta \over 3}) - {a \over 3}[/itex]

    [itex]x_2=-2\sqrt Q \cos({\theta + 2\pi \over 3}) - {a \over 3}[/itex]

    [itex]x_3=-2\sqrt Q \cos({\theta - 2\pi \over 3}) - {a \over 3}[/itex]​


    [itex]A=-sgn(R)\left[|R| + \sqrt{R^2-Q^3}\right]^{1 \over 3}[/itex]

    [itex]B=(Q/A) \text{ if } (A \ne 0) \text{ or 0 otherwise}[/itex]

    [itex]x_1=(A+B) - {a \over 3}[/itex]​

  9. Oct 31, 2011 #8
    Right, but I mean how do I then take that sort of formulation and then spit out, say, N digits, where I'm dealing with each digit as a standalone entity?


    for N in range (1, 100):
    return Nth digit of cubic root
  10. Oct 31, 2011 #9

    I like Serena

    User Avatar
    Homework Helper

    Sorry, I finally understand what you're asking, but I've got no clue. :frown:
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook