On Dec 25, 2007 9:18 AM, David Joyner <[EMAIL PROTECTED]> wrote:
>
> Hi:
>
> (a) I'm not sure if this is a bug or something missing, but it seems
> to me it should be easy to plot y=arccsc(x) in SAGE, since it
> is a basic function of trigonometry and calculus. Two problems:
> (1) it seems arccsc is not defined,

It is acsc, just like asin, etc.   This works fine:

sage: show(plot(acsc, 1,2))

> (2) after defining it, it does not seem easy to plot it:
>
> sage: acsc = lambda x: CDF(x,0).arccsc()
> sage: acsc(1.1)
> 1.14109666064
> sage: acsc(1.9)
> 0.554261834452
> sage: P = plot(RR(acsc(x)),1,2)

RR(acsc(x)) makes no sense; you're pluggin a symbolic variable into
a lambda function, then trying to convert the result to a real field element.
You meant to do

sage: acsc = lambda x: float(abs(CDF(x,0).arccsc()))
sage: show(plot(acsc, 1,2))

Sorry sage is so hard to use!  What can we learn from the above?
The main problem is acsc versus arccsc, which caused confusion.
Should we change the names of the "arc" functions to arc* instead of a*?

Maple: uses arcsin:
sage: maple.eval('arcsin(1)')
'1/2*Pi'
sage: maple.eval('asin(1)')
'asin(1)'

Mathematica: uses ArcSin:
sage: mathematica.eval('ASin[1]')
        ASin[1]
sage: mathematica.eval('ArcSin[1]')

        Pi
        --
        2

Maxima: Uses asin (which is why we currently do):
sage: maxima.eval('arcsin(1)')
'arcsin(1)'
sage: maxima.eval('asin(1)')
'%pi/2'


If nobody strongly objects in a day or two, I'll open a trac ticket
to change a*'s to arc*'s.  Better now than later.   And if something
like this is confusing David Joyner, then it's to be taken seriously.

> ---------------------------------------------------------------------------
> <type 'exceptions.TypeError'>             Traceback (most recent call last)
>
> /home/wdj/sagestuff/sage-2.8.7.rc1/<ipython console> in <module>()
>
> /home/wdj/sagestuff/sage-2.8.7.rc1/<ipython console> in <lambda>(x)
>
> /home/wdj/sagestuff/sage-2.8.7.rc1/complex_double.pyx in
> sage.rings.complex_double.ComplexDoubleField_class.__call__()
>
> /home/wdj/sagestuff/sage-2.8.7.rc1/complex_double.pyx in
> sage.rings.complex_double.ComplexDoubleElement.__init__()
>
> <type 'exceptions.TypeError'>: a float is required
>
> (b) In fact, what I'd like to do is plot in SAGE what calculus teachers draw
> frequently on the board: not just one branch of arccsc but rather
> several of them: ie, the plot of y=csc(x) over say -2\pi to 2*\pi,
> flipped about the 45^o line. Is this easy to do?

This will do it.  I hope it isn't too ugly:

sage: v = [(csc(x),x) for x in srange(-2*float(pi),2*float(pi),0.1) if x]
sage: show(line(v), xmin=-20, xmax=20)

The tricks above:
   (1) use float(pi) so the iteration through the range of inputs is very fast
   (2) don't evaluate csc at 0.
   (3) use a line and flip the order of the points in the graph.
   (4) use xmin, xmax, since otherwise one large value will through
off the whole graph.

William

>
> - David Joyner
>
> Can anyone see what I'm doing wrong here?
>
> - David Joyner
>
> >
>



-- 
William Stein
Associate Professor of Mathematics
University of Washington
http://wstein.org

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sage-support
URLs: http://sage.math.washington.edu/sage/ and http://sage.scipy.org/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to