On 2014-06-21, David Ingerman <[email protected]> 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 <[email protected] <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 <[email protected] <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 [email protected].
To post to this group, send email to [email protected].
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