PDF

closures.html
closures.mws
●
●
CCC functions
❍
arcsin, arccos, arctanh
❍
arctan, arccot, arcsinh
Exceptions
❍
arccsc, arcsec
❍
arccoth
❍
arccsch
❍
arccosh and arcsech
Closures of branch cuts for elementary functions in Maple 7.
Robert M. Corless
August 1, 2001
This worksheet looks at the closures of the Maple implementations of the elementary functions on their branch cuts, by experiment. Done during the Celebration
of Light, Vancouver; reflections of fireworks bouncing off the glass buildings in front of me, thunder and cheers echoing all around.
I emphasize that this worksheet explores Maple's implementations: other computer algebra systems may differ, not usually in the placement of the branch cut but
perhaps on the closures.
> restart;
> plots[setoptions](axes=BOXED,colour=BLACK,scaling=CONSTRAINED);
plots[setoptions3d](axes=BOXED,style=PATCHNOGRID);
The routine "compar" takes a function "f", a point "a", and a direction "dir" (meant to be a signed zero). If f(a+dir)-f(a) is zero then f is continuous at a in the
direction dir. The routine returns four lists, checking out +/-a +/- dir.
> compar := proc( f, a, dir )
print( evalf([a,dir,f(a+dir)-f(a)]),
evalf([a,-dir,f(a-dir)-f(a)]),
evalf([-a,dir,f(-a+dir)-f(-a)]),
evalf([-a,-dir,f(-a-dir)-f(-a)]) )
end proc;
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (1 of 21)9/14/2004 5:10:14 AM
closures.html
>
CCC functions
CCC means ``counter-clockwise closure'' and in these cases the rule holds.
arcsin, arccos, arctanh
The branch cuts for these three functions are the segments of the real axis larger than 1 in magnitude (separately verified by plotting the imaginary parts).
> compar( arcsin, 2., 0.*I );
> plot3d( Im(arcsin(x+I*y)), x=-2..2, y=-1..1, colour=Re(arcsin(x+I*y)) );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (2 of 21)9/14/2004 5:10:14 AM
closures.html
> compar( arccos, 2, 0.*I );
> plot3d( Im(arccos(x+I*y)), x=-2..2, y=-1..1, colour=Re(arccos(x+I*y)) );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (3 of 21)9/14/2004 5:10:14 AM
closures.html
> compar( arctanh, 2, 0.*I );
> plot3d( Im(arctanh(x+I*y)), x=-2..2, y=-1..1, colour=Re(arctanh(x+I*y)) );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (4 of 21)9/14/2004 5:10:14 AM
closures.html
> N := 5;
The following hand-coded call to "plot" indicates graphically which side the cuts are closed on, by the presence of tick-marks.
> plot( [[t,0,t=-3..-1],[t,0,t=1..3],
seq([-(1+i/N),t,t=0..0.2], i=0..2*N),
seq([(1+i/N),-t,t=0..0.2], i=0..2*N)],
view=[-3..3,-3..3] );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (5 of 21)9/14/2004 5:10:14 AM
closures.html
>
arctan, arccot, arcsinh
The branch cuts for these three functions are the segments of imaginary axis larger than 1 in magnitude.
> compar( arctan, 2*I, 0. );
> plot3d( Re(arctan(x+I*y)), x=-1..1,y=-3..3, colour=Im(arctan(x+I*y)) );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (6 of 21)9/14/2004 5:10:14 AM
closures.html
> compar( arccot, 2*I, 0. );
> plot3d( Re(arccot(x+I*y)), x=-1..1,y=-3..3, colour=Im(arccot(x+I*y)) );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (7 of 21)9/14/2004 5:10:14 AM
closures.html
> compar( arcsinh, 2*I, 0. );
> plot3d( Re(arcsinh(x+I*y)), x=-1..1,y=-3..3, colour=Im(arcsinh(x+I*y)) );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (8 of 21)9/14/2004 5:10:14 AM
closures.html
> N := 5;
> plot( [[0,t,t=-3..-1],[0,t,t=1..3],
seq([-t,-(1+i/N),t=0..0.2], i=0..2*N),
seq([t,(1+i/N),t=0..0.2], i=0..2*N)],
view=[-3..3,-3..3] );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (9 of 21)9/14/2004 5:10:14 AM
closures.html
>
Exceptions
arccsc, arcsec
These two functions have branch cuts on the real line between -1 and 1, and a closure switch at 0.
> compar( arccsc, 1/2, 0.*I );
> plot3d( Im(arccsc(x+I*y)), x=-2..2, y=-1..1, colour=Re(arccsc(x+I*y)) );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (10 of 21)9/14/2004 5:10:14 AM
closures.html
> compar( arcsec, 1/2, 0.*I );
> plot3d( Im(arcsec(x+I*y)), x=-2..2, y=-1..1, colour=Re(arcsec(x+I*y)) );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (11 of 21)9/14/2004 5:10:14 AM
closures.html
> N := 5;
> plot( [[t,0,t=-1..0],[t,0,t=0..1],
seq([-(i/N),-t,t=0..0.15], i=0..N),
seq([(i/N),t,t=0..0.15], i=0..N)],
view=[-2..2,-2..2] );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (12 of 21)9/14/2004 5:10:14 AM
closures.html
> arccsc(0); arccsc(0.*I); arccsc(-0.*I); arccsc(0.+0.*I); arccsc(-0.+0.*I);
Error, (in arccsc) numeric exception: division by zero
> arcsec(0);
Error, (in arcsec) numeric exception: division by zero
arccoth
This is the same as the above two, except the closure is different: it is closed on top.
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (13 of 21)9/14/2004 5:10:14 AM
closures.html
> compar( arccoth, 1/2, 0.*I );
> compar( arccoth, 2, 0.*I ):
> plot3d( Im(arccoth(x+I*y)), x=-2..2, y=-1..1, colour=Re(arccoth(x+I*y)) );
> N := 5;
> plot( [[t,0,t=-1..1],[t,0,t=0..1],
seq([(i/N),t,t=0..0.15], i=-N..N)],
view=[-2..2,-2..2] );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (14 of 21)9/14/2004 5:10:14 AM
closures.html
arccsch
This is closed counterclockwise about each singularity, and has a closure switch at 0.
> compar( arccsch, I/2, 0. );
> plot3d( Re(arccsch(x+I*y)), x=-1..1, y=-2..2, colour=Im(arccsch(x+I*y)));
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (15 of 21)9/14/2004 5:10:14 AM
closures.html
> N := 5;
> plot( [[0,t,t=-1..0],[0,t,t=0..1],
seq([t,-(i/N),t=0..0.15], i=0..N),
seq([-t,(i/N),t=0..0.15], i=0..N)],
view=[-2..2,-2..2] );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (16 of 21)9/14/2004 5:10:14 AM
closures.html
arccosh and arcsech
These are the true oddballs. The branch cuts are not symmetric.
> compar( arccosh, 2, 0.*I );
> compar( arccosh, 1/2, 0.*I );
> plot3d( Im(arccosh(x+I*y)), x=-2..2, y=-1..1, orientation=[-70,60], colour=Re(arccosh(x+I*y)) );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (17 of 21)9/14/2004 5:10:14 AM
closures.html
> N := 5;
> plot( [[t,0,t=-2..1],
seq( [-1-i/N,t,t=0..0.15], i=0..N ),
seq( [-i/N, t, t=0..0.15], i=0..N ),
seq( [i/N,t,t=0..0.15], i=0..N ) ],
view=[-2..2,-2..2] );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (18 of 21)9/14/2004 5:10:14 AM
closures.html
> compar( arcsech, 2, 0.*I );
> compar( arcsech, 1/2, 0.*I );
> plot3d( Im(arcsech(x+I*y)), x=-2..2, y=-1..1, orientation=[-70,60], colour=Re(arcsech(x+I*y)) );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (19 of 21)9/14/2004 5:10:14 AM
closures.html
> N := 5;
> plot( [[t,0,t=-2..0],[t,0,t=1..2],
seq( [-1-i/N,-t,t=0..0.15], i=0..N ),
seq( [-i/N, -t, t=0..0.15], i=0..N ),
seq( [1+i/N,-t,t=0..0.15], i=0..N ) ],
view=[-2..2,-2..2] );
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (20 of 21)9/14/2004 5:10:14 AM
closures.html
>
>
>
>
http://www.mapleapps.com/powertools/EssentialMaple7/html/closures.html (21 of 21)9/14/2004 5:10:14 AM