Opened 15 years ago

Closed 15 years ago

#1616 closed enhancement (fixed)

[with bundle, positive review] Change asin to arcsin, etc.

Reported by: William Stein Owned by: Mike Hansen
Priority: major Milestone: sage-2.10.1
Component: calculus Keywords:
Cc: Merged in:
Authors: Reviewers:
Report Upstream: N/A Work issues:
Branch: Commit:
Dependencies: Stopgaps:

Status badges

Description

On Dec 25, 2007 9:18 AM, David Joyner <wdjoyner@gmail.com> 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.

Attachments (4)

calculus20080102.hg (2.3 KB) - added by David Joyner 15 years ago.
1616-1.patch (13.9 KB) - added by Mike Hansen 15 years ago.
1616-2.patch (2.5 KB) - added by Mike Hansen 15 years ago.
1616-3.patch (23.2 KB) - added by Mike Hansen 15 years ago.

Download all attachments as: .zip

Change History (9)

Changed 15 years ago by David Joyner

Attachment: calculus20080102.hg added

comment:1 Changed 15 years ago by Michael Abshoff

Summary: Change asin to arcsin, etc.[with bundle, needs review] Change asin to arcsin, etc.

comment:2 Changed 15 years ago by Mike Hansen

Owner: changed from William Stein to Mike Hansen
Status: newassigned
Summary: [with bundle, needs review] Change asin to arcsin, etc.[with bundle, with negative review] Change asin to arcsin, etc.

There is more work left to be done so that the functions always display as arcsin within Sage as well as making sure to treat them as asin when working with Maxima.

I will be posting a new patch here in the near future.

Changed 15 years ago by Mike Hansen

Attachment: 1616-1.patch added

Changed 15 years ago by Mike Hansen

Attachment: 1616-2.patch added

Changed 15 years ago by Mike Hansen

Attachment: 1616-3.patch added

comment:3 Changed 15 years ago by Mike Hansen

Summary: [with bundle, with negative review] Change asin to arcsin, etc.[with bundle, needs review] Change asin to arcsin, etc.

I just put up three new patches (to be applied in order) which pass -testall for me.

comment:4 Changed 15 years ago by William Stein

Summary: [with bundle, needs review] Change asin to arcsin, etc.[with bundle, positive review] Change asin to arcsin, etc.

Looks good to me.

comment:5 Changed 15 years ago by Michael Abshoff

Resolution: fixed
Status: assignedclosed

Merged all three of mahnsen's patches in Sage 2.10.1.alpha0

Note: See TracTickets for help on using tickets.