[SciPy-user] transcendental root finding

Nils Wagner nwagner at mecha.uni-stuttgart.de
Wed Nov 9 09:42:39 CST 2005


Paul Cristini wrote:
>There is also a method based on winding number integrals
>Classical algorithms for finding roots are not that efficient because you
>often need to have good initial guesses. The best way is to use Davies
>algorithm. You need to define a contour in the complex plane and then you
>can find in a first step the numer of roots which are inside your contour and
>then the roots.
>B. Davies 1986, Locating the zeros of an analytic function, J. Comput. Phys.
>66 36-49.
>I experienced myself this algorithm and it is really great. In that way you
>are really sure that you are not missing any root.
>The only problem is that you have to go the complex plane and take care of
>possible branch cuts.
>
>Paul
>
>Quoting Ryan Krauss <ryanlists at gmail.com>:
>
>  
>>Any other ideas?
>>
>>Ryan
>>
>>On 11/8/05, Ryan Krauss <ryanlists at gmail.com> wrote:
>>    
>>>I have not tried that.  I will think about that one.  It sounds interesting.
>>>
>>>Ryan
>>>
>>>On 11/8/05, Nils Wagner <nwagner at mecha.uni-stuttgart.de> wrote:
>>>      
>>>>On Tue, 8 Nov 2005 15:34:06 -0500
>>>>  Ryan Krauss <ryanlists at gmail.com> wrote:
>>>>        
>>>>>Does anyone out there have a robust algorithm for
>>>>>finding all of the
>>>>>roots of a transcendental equation within a certain
>>>>>range of the
>>>>>independent variable.  I wrote one myself that takes a
>>>>>vector of
>>>>>guesses that are used in optimize.newton.  I am trying
>>>>>to use this
>>>>>algoritm as part of a root locus finding tool.  Each
>>>>>initial guess
>>>>>would represent a branch of the locus and I was hoping
>>>>>to stay on the
>>>>>branch as a gain is slowly increased.  For at least one
>>>>>of my branches
>>>>>this isn't going very well and newton converges to
>>>>>another nearby
>>>>>solution on some occassions.
>>>>>
>>>>>Any thoughts?
>>>>>
>>>>>          
>>>>Have you tried a homotopy approach
>>>>
>>>>H(x,t) = (1-t) g(x) + t f(x) = 0
>>>>t \in [0,1]
>>>>
>>>>f(x) is your transcendental equation
>>>>g(x) is a simpler function with known zeros.
>>>>You start with t=0 and increase t until t=1.
>>>>
>>>>For t=1 you will hopefully find a solution of f(x)=0.
>>>>
>>>>Nils
>>>>
>>>>        
>>>>>Ryan
>>>>>
>>>>>_______________________________________________
>>>>>SciPy-user mailing list
>>>>>SciPy-user at scipy.net
>>>>>http://www.scipy.net/mailman/listinfo/scipy-user
>>>>>          
>>>>
>>>>_______________________________________________
>>>>SciPy-user mailing list
>>>>SciPy-user at scipy.net
>>>>http://www.scipy.net/mailman/listinfo/scipy-user
>>>>
>>>>        
>>_______________________________________________
>>SciPy-user mailing list
>>SciPy-user at scipy.net
>>http://www.scipy.net/mailman/listinfo/scipy-user
>>
>>    
>
>
>
>_______________________________________________
>SciPy-user mailing list
>SciPy-user at scipy.net
>http://www.scipy.net/mailman/listinfo/scipy-user
>  

Here are more references

Kravanja, Sakurai, Van Barel
On locating clusters of zeros of analytic functions
BIT 1999 Vol. 39 No. 4 646--682

Kravanja, Van Barel
A derivative-free algorithm for computing zeros of analytic functions
Computing 1999 Vol. 63 69--91

Nils

 




More information about the SciPy-user mailing list