Hi William,

I just stumbled over this message and found that the following is even 
faster:

var('t')
W(t)=95*sqrt(t)*sin(t/6)^2
R(t)=275*sin(t/3)^2
F = (W-R)._fast_float_('t')
def A(t):
  return 1200 + numerical_integral(F,0,t)[0]

plot(A, (t,0,18))

For reasons I have still not understood, fast_float works faster if the 
variables are set in quotation marks. I still can't find anything about 
fast_float in the Sage Reference Manual. For example, I would like to 
know how something like this is handled:

var('a t')
F = fast_float(a*t^2 + a*t + a, 'a', 't')

How would I plot F or find its root for a fixed a? plot(F(1,t),(t,-1,1)) 
does not work, nor does find_root(F(1,t), -1, 1).

Thanks for your help!

Stan

William Stein wrote:
> On Mon, Mar 30, 2009 at 2:16 PM, Jason Grout
> <jason-s...@creativetrax.com> wrote:
>   
>> Chris Seberino wrote:
>>     
>>> In a new sage session...
>>> (Notice the A(t) function returns values just fine.  Why doesn't plot
>>> () like it?)
>>>
>>> sage: W(t)=95*sqrt(t)*sin(t/6)^2
>>>
>>> sage: R(t)=275*sin(t/3)^2
>>>
>>> sage: def A(t):
>>> ....:              return 1200 + numerical_integral(W(x)-R(x),0,t)[0]
>>> ....:
>>>
>>> sage: A(0)
>>> 1200.0
>>>
>>> sage: A(18)
>>> 1309.788183281373
>>>
>>> sage: plot(A(t),(t,0,18))
>>> ---------------------------------------------------------------------------
>>> TypeError                                 Traceback (most recent call
>>> last)
>>>
>>> /home/seb/<ipython console> in <module>()
>>>
>>> /home/seb/<ipython console> in A(t)
>>>
>>> /usr/local/sage-3.4-linux-PentiumM-ubuntu-8.04.1-i686-Linux/local/lib/
>>> python2.5/site-packages/sage/gsl/integration.so in
>>> sage.gsl.integration.numerical_integral (sage/gsl/integration.c:1953)
>>> ()
>>>
>>> TypeError: a float is required
>>>       
>> That's weird.  A workaround for now is the following:
>>     
>
> It's not a weird -- A is a function, not a symbolic expression, so the
> right syntax is:
>
> plot(A, (t,0,18))
>
> Doing
>
>   plot(A(t), (t,0,18))
>
> should never work.
>
> By the way, doing this is massively faster (10000 times faster?)
>
> W(t)=95*sqrt(t)*sin(t/6)^2
> R(t)=275*sin(t/3)^2
> F = (W-R)._fast_float_(t)
> def A(t):
>   return 1200 + numerical_integral(F,0,t)[0]
>
> plot(A, (t,0,18))
>
> William
>
> William
>
> >
>   


--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-support@googlegroups.com
To unsubscribe from this group, send email to 
sage-support-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to