On a homework assignment, I am being asked to write a Matlab program that will approximate all the roots of a degree 4 polynomial of the form:

$x^4 + ax^3 +bx^2 +cx -1$

where $a,b,c$ are random real numbers.

I am not allowed to use any prebuilt methods like roots, eig, etc. We are expected to be able to do this using root finding techniques we've used in class (Newton's method, bisection method, etc).

My problem is that for each of those methods, we either need an interval in which the root must exist (a la bisection) or else a good first guess (a la Newton's method). However, I am not sure how to come up with these. This is made more difficult by the fact that they want all the roots, so we have to be careful that our interval doesn't contain multiple roots or that our initial guess isn't too close to multiple roots.

So far my only idea is to find the turning points of the polynomial and use those to construct intervals, but that would require finding the zeros of a degree three polynomial which is also not easy. Can someone offer advice/ hint in the right direction?

  • 2
    $\begingroup$ This article can be interesting for you en.wikipedia.org/wiki/Durand%E2%80%93Kerner_method $\endgroup$ – Raffaele Sep 25 '17 at 20:00
  • $\begingroup$ Thank you, you are a lifesaver! $\endgroup$ – EJ701 Sep 26 '17 at 4:15
  • $\begingroup$ You could also use Bairstow's method to find the real quadratic factors and solve them using the usual solution formula for quadratic equations. $\endgroup$ – LutzL Sep 26 '17 at 10:22

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.