[SciPy-user] transcendental root finding
Paul Cristini
paul.cristini at univ-pau.fr
Wed Nov 9 09:29:45 CST 2005
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
>
More information about the SciPy-user
mailing list