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.

Reply via email to