[SciPy-User] Fwd:
nicky van foreest
vanforeest at gmail.com
Sat Feb 18 14:08:46 EST 2012
Hi,
Is there a general routine in numpy/scipy to find the left most root
of a 1-d function? As an example:
import numpy as np
import pylab as pl
grid = np.arange(0, 120., 0.1)
f = 3 - 0.1*grid + np.sin(grid)
#pl.plot(grid, f)
#pl.show()
# simplistic method to find the left root:
# since I know that f(0) > 0:
i = 0
while(f[i]>=0):
i+= 1
print i, grid[i], f[i]
This algorithm works, provided a suitable initial condition, but it
not particularly efficient. I know that there are fast root solvers in
scipy.optimize, but they require to provide an a and b such that f(a)
< 0 < f(b) (or the other way around). In my general case, these bounds
are not easy to obtain (and I can easily create more taxing problems
for which I would like to have a general, robust and efficient method
to find the left-most root).
Thanks
Nicky
More information about the SciPy-User
mailing list