Take the 2-minute tour ×
Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. It's 100% free, no registration required.

Given a real valued trigonometric polynomial,

$$ f(x) = \sum_{k=0}^{n} a_k \cos(k x + \phi_k) $$

what is the current fastest numerical method to find the roots of the polynomial for a given error? I have just come across the Durand-Kerner method, are there any others?

share|improve this question
    
I added the numerical-methods tag; it's the most important one here. Also, there is scicomp.SE site, and it really needs more questions to graduate... –  user53153 Jan 15 '13 at 23:27
    
Thanks, shall I repost it there or perhaps get a mod to move it? –  geometrikal Jan 16 '13 at 1:59
    
Up to you, of course... you did get an answer here after I bumped and retagged the question. You can always request migration by flagging your question. –  user53153 Jan 16 '13 at 2:28
    
Have put a new question over at scicomp, with some changes. Thanks for the bump! –  geometrikal Jan 16 '13 at 2:44
add comment

1 Answer

up vote 2 down vote accepted

For finding the roots of an algebraic polynomial, I swear by the Jenkins-Traub algorithm, which I've found in practice to be both faster and more robust than alternatives. The only downside is that Jenkins-Traub is rather complicated if you must implement it yourself. Codes are available online, for instance I've used this C++ implementation: http://www.crbond.com/download/misc/rpoly.cpp

I would therefore use the standard substitution $y=e^{ix}$ to turn the trigonometric polynomial into an algebraic polynomial of degree $2n$, and then apply Jenkins-Traub.

share|improve this answer
    
Thanks, that was just the start I needed. I didn't realise there had been so much work done on this. –  geometrikal Jan 16 '13 at 2:08
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.