On 2014-06-22, David Ingerman <daviddavif...@gmail.com> wrote: > Thank you, that makes sense. My Python function is not continuous though, > has poles, so I'll probably have to plot it to find its zeros...
you might perhaps try finding a pole p by solving 1/f(x)=0, and regularise f by multiplying f with (x-p)i^m, for appropriate m. Repeat until all the poles in the interval are taken care of. Similarly you can divide f by (x-r)^k for a zero r. In effect this amounts to finding a Pade approximation of f. (no idea how well this behaves in practice) > > On Saturday, June 21, 2014 1:21:06 AM UTC-7, Dima Pasechnik wrote: >> >> On 2014-06-21, David Ingerman <davidd...@gmail.com <javascript:>> wrote: >> > Thank you, that's helpful. Is there a way to get all roots of a Python >> > function on an interval? >> >> I never heard of robust procedures for such a task, and doubt they are >> even possible (think about roots of sin(1/x) on [0,1]). >> Certainly you can partition the interval into pieces >> and try finding root in each subinterval where the function has >> different signs on its ends. >> >> >> >> scipy has a variety of root-finding methods implemented. You >> can do >> sage: import scipy.optimize >> and then read on >> sage: scipy.optimize.brentq? >> (the method called by Sage's find_root) >> >> >> > >> > On Friday, June 20, 2014 2:10:38 AM UTC-7, Dima Pasechnik wrote: >> >> >> >> On 2014-06-20, David Ingerman <davidd...@gmail.com <javascript:>> >> wrote: >> >> > Thank you, so what to do for Python function? Matlab had general >> >> purpose >> >> > 'optim(f)' if my memory is right... >> >> >> >> you can e.g. use find_root(); this is a numerical thing that accepts >> >> Python functions. Here is an example: >> >> >> >> sage: def f(x): >> >> return x-cos(x) >> >> ....: >> >> sage: find_root(f,0,1) >> >> 0.7390851332151559 >> >> sage: >> >> >> >> > >> >> > On Wednesday, June 11, 2014 1:50:10 AM UTC-7, Dima Pasechnik wrote: >> >> >> >> >> >> On 2014-06-10, David Ingerman <davidd...@gmail.com <javascript:>> >> >> wrote: >> >> >> > >> >> >> > How to solve([f(x)==0],x) for a function "f(x)" defined in a >> .sage >> >> >> file? >> >> >> > >> >> >> > The error message: TypeError: Cannot evaluate symbolic expression >> to >> >> a >> >> >> > numeric value. >> >> >> >> >> >> what is f(x) ? >> >> >> solve() won't work for a Python function, it needs a symbolic >> >> >> expression, e.g. >> >> >> >> >> >> sage: type(sin(x)) >> >> >> <type 'sage.symbolic.expression.Expression'> >> >> >> sage: >> >> >> >> >> >> > >> >> >> > Thank you... >> >> >> > >> >> >> >> >> >> >> >> > >> >> >> >> >> > >> >> > -- You received this message because you are subscribed to the Google Groups "sage-support" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-support+unsubscr...@googlegroups.com. To post to this group, send email to sage-support@googlegroups.com. Visit this group at http://groups.google.com/group/sage-support. For more options, visit https://groups.google.com/d/optout.