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