[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.
>Quoting Ryan Krauss <ryanlists at gmail.com>:
>>Any other ideas?
>>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.
>>>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.
>>>>>SciPy-user mailing list
>>>>>SciPy-user at scipy.net
>>>>SciPy-user mailing list
>>>>SciPy-user at scipy.net
>>SciPy-user mailing list
>>SciPy-user at scipy.net
>SciPy-user mailing list
>SciPy-user at scipy.net

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



More information about the SciPy-user mailing list