FunctionAdvisor/branch_cuts - Maple Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Mathematics : FunctionAdvisor : FunctionAdvisor/branch_cuts

FunctionAdvisor/branch_cuts

returns the branch cuts of a given mathematical expression

 

Calling Sequence

Parameters

Description

Examples

References

Calling Sequence

FunctionAdvisor(branch_cuts, expression, plot = ..., options=value)

Parameters

branch_cuts

-

literal name; 'branch_cuts'

expression

-

The name of mathematical function, or a mathematical expression, involving +, , ^, possibly fractional powers and mathematical functions calls

plot = ...

-

optional, the right-hand-side can be 2D, 3D or 32D, also 2d', 3d, 32d, to respectively plot the branch cuts in 2D, 3D or 3D projected on the 2D (x, y) plane with black and white contrast

parameters = ...

-

optional, the right-hand-side can be a set or list of names parametrizing the expression

method = ...

-

optional, the right hand side can be any of Standard, RealVariables, ComplexVariable to performing intermediate steps solving for the complex variable of for its real and imaginary parts

options = value

-

optional, any of the options supported by 2D and 3D plots

Description

• 

The FunctionAdvisor(branch_cuts, expression) command returns the branch cuts or segments of discontinuity of a given mathematical expression, if any, or the string "No branch cuts" when there are none. If the information necessary to perform the calculation is not available, FunctionAdvisor returns NULL, depending on the case including informative related messages.

• 

The expression indicated can be just the name of a mathematical function, e.g. arcsin, or a mathematical function call like arcsinx, or a whole mathematical expression, involving compositions between +, *, ^, possibly fractional powers, with every mathematical function call for which FunctionAdvisor knows the branch cuts, with no restrictions to the level of nesting in the expression.

• 

CAVEAT 1: Depending on the mathematical expression, there is a situation where the program cannot guarantee an exhaustive list of branch cuts. This happens, typically, when a non-rational expression needs to be algebraically inverted, and the system can only invert it using RootOf, which means, basically, that the system does not know how many roots are around or exactly where they are located). Example: arctanJ2z1+zz3+1, where J2z1+z is the BesselJ function.

• 

CAVEAT 2: Depending on the mathematical expression, the algebraic cuts returned may contain some spurious cuts in the sense that the expression is actually continuous over the those cuts. You can determine this by visualizing the expression cuts directly, by using the options plot = 3D or  plot = 32D (the spurious cuts are not visualized as discontinuities) and comparing with the 2D plot where these spurious cuts are shown together with the real discontinuities of the expression.

  

Note: In Maple, by convention, when you say, for instance, z <= 1, it is implicitly assumed that Im(z) = 0.

• 

Regarding the 3D plots, they are generated with plotcompare, they are centered at the origin, and the options used by default are scale_range = Pi, orientation = [-115, 81, 7], and grid = [200, 200] in order to display the cuts sharply. Depending on the case, centering at the origin may not be appropriate - to override that use the option shift_range explained in plotcompare. Likely, the default value for orientation may not visualize the discontinuities optimally - you can then rotate the plot with the mouse or use the option orientation = [a, b, c] explained in plot3D options. The high value used for grid may slowdown the visualization - to override speeding up use the option grid = [a, b] with smaller values of a and b; typically 50 would suffice. In all cases the array of plots is assigned to the variable _P so that it can be accessed for subsequent manipulation.

• 

The option 32D is as the option 3D but for orientation = [-90, 0, 0], style = surface and shading = zgrayscale, so that the 3D plot is viewed from above, projected over the 2D (x, y) plane, as a smooth surface and with black and white contrast. The resulting visualization is similar to the one obtained using plot = 2D, but it has the advantage that it is free of the spurious cuts mentioned above in CAVEAT 2, and helps visualizing the branch points by contrast (see the last example).

• 

The algebraic calculation is by default performed using the method so-called Standard; other optional choices for method are RealVariables and ComplexVariable. These methods and their limitations are discussed in the reference (at the end). Briefly summarized, given a mathematical expression involving functions f&lsqb;i&rsqb;pz where pz is rational or involve fractional powers of z,

1. 

Obtain the branch cuts C&lsqb;j&rsqb;z of f&lsqb;i&rsqb;z

2. 

Set z&equals;iy&plus;x and compute two expressions, Rx&comma;y&equals;Repx&comma;y and Ix&comma;y&equals;Impx&comma;y

3. 

For each C&lsqb;i&rsqb;pz, set px&comma;y&equals;R&plus;Ii and solve for x&comma;y

4. 

Reintroduce z, resulting in algebraic expressions G&lsqb;k&rsqb;z&equals;... for each cut Cj of f&lsqb;i&rsqb;pz

5. 

Take for branch cuts of the given expression the union of the G&lsqb;k&rsqb;z

  

This approach can produce spurious branch cuts due to the denesting of powers at the time of solving for x and y or because of the intersection of cuts of different parts of an expression. Some of these spurious cuts can be detected automatically and are removed before returning the sequence of cuts for the given expression.

Examples

The FunctionAdvisor knows about the branch cuts of the mathematical functions in general

FunctionAdvisorbranch_cuts&comma;arcsin

arcsinz&comma;z1&comma;1z

(1)

FunctionAdvisorbranch_points&comma;arcsin

arcsinz&comma;z&in;1&comma;1&comma;&infin;&plus;&infin;I

(2)

FunctionAdvisorbranch_cuts&comma;BesselJ

BesselJa&comma;z&comma;a::NotintegerAndz<0

(3)

FunctionAdvisorbranch_cuts&comma;exp

&ExponentialE;z&comma;No branch cuts

(4)

The branch cuts are sometimes compactly expressed in terms of RealRange or ComplexRange; in these cases converting the result to relation may be of help to figure out where the cuts are

FunctionAdvisorbranch_cuts&comma;arccot

arccotz&comma;z&in;ComplexRange&infin;I&comma;I&comma;z&in;ComplexRangeI&comma;&infin;I

(5)

convert&comma;relation

arccotz&comma;z=0AndzAndz−1&comma;z=0And1zAndz

(6)

Note that the output of FunctionAdvisor involves local variables, to avoid conflict with the related global variables you may be using. So,

has&comma;z

false

(7)

To have the output using global variables, pass the function call, not just the function's name; you could use any variable, not just z

FunctionAdvisorbranch_cuts&comma;arccotz

arccotz&comma;z&in;ComplexRange&infin;I&comma;I&comma;z&in;ComplexRangeI&comma;&infin;I

(8)

has&comma;z

true

(9)

You can also plot general mathematical expressions; to have also a plot of the branch_cuts pass use plot = ... where the right-hand-side can be either 2D or 3D

lnz3

12lnz3

(10)

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;3.

12lnz3&comma;z<0&comma;z=3z3Andz<0&comma;z=3z3And0<z

(11)

These 3D plots are constructed with plotcompare using its option expression_plot. You can rotate the two 3D plots above with the mouse; there you see in which of the real or imaginary parts of the expression (10) are the branch cuts located, in this example only in the imaginary part.

A 2D plot of the same cuts

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;2.

12lnz3&comma;z<0&comma;z=3z3Andz<0&comma;z=3z3And0<z

(12)

A similar visualization is obtained viewing the related 3D plot from above, projected over the (x, y) plane, with black and white contrast, using the plot = 32D option

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;32.

12lnz3&comma;z<0&comma;z=3z3Andz<0&comma;z=3z3And0<z

(13)

Each of the plots above can also be rotated with the mouse. The option plot = 32D is particularly useful when there are spurious branch cuts, indistinguishable from the real branch cuts when using plot = 2D.

All the optional arguments of plot (for 2D), plotcompare and plot3D (for 3D) can be used

arcsin2z1z2

arcsin2zz2&plus;1

(14)

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;3.&comma;orientation&equals;118&comma;50&comma;10

arcsin2zz2&plus;1&comma;1<z&comma;z<1&comma;&real;z&equals;124&Im;z2&plus;2&comma;&real;z&equals;124&Im;z2&plus;2

(15)

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;2.

arcsin2zz2&plus;1&comma;1<z&comma;z<1&comma;&real;z&equals;124&Im;z2&plus;2&comma;&real;z&equals;124&Im;z2&plus;2

(16)

To see how this 2D plot is related to the 3D plot use the option plot = 32D and rotate the plot in the right window using the mouse:

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;32.

arcsin2zz2&plus;1&comma;1<z&comma;z<1&comma;&real;z&equals;124&Im;z2&plus;2&comma;&real;z&equals;124&Im;z2&plus;2

(17)

arctanz&plus;arctanz2arctanz1&plus;z1z3

arctanz&plus;arctanz2arctanzz&plus;1z3&plus;1

(18)

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;3.&comma;orientation&equals;110&comma;67&comma;24

arctanz&plus;arctanz2arctanzz&plus;1z3&plus;1&comma;z=0And1z&comma;z=0Andz−1&comma;z=zAnd22z&comma;z=zAndz22&comma;z=zAnd22z&comma;z=zAndz22&comma;z=z2+1And22zAndz<0&comma;z=z2+1Andz22And0<z&comma;z=z2+1And−1zAndz<32&comma;z=z2+1Andz1And32<z&comma;z=z2+1And22zAndz<32&comma;z=z2+1Andz22And32<z

(19)

2arccosh3&plus;2z32arccosh12&plus;5z3z&plus;4

2arccosh1&plus;23z2arccosh12&plus;5z3z&plus;12

(20)

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;3.

2arccosh1&plus;23z2arccosh12&plus;5z3z&plus;12&comma;z<92&comma;−3<z0&comma;−4<z<−3

(21)

A classic example in the theory of branch cut calculation is that of Kahan's teardrop:

2arccosh2z&plus;3z&plus;327z&plus;4

2arccosh1&plus;23z2arccosh12&plus;5z3z&plus;122arccosh2z&plus;3z&plus;327z&plus;108

(22)

This expression is equal to zero for all values of z in the complex plane except for a small teardrop shaped region over the negative real axis, as shown in the 3D plot on the right (you can rotate it with the mouse). To see just the plot, without the display of the algebraic description of the cuts, end the input with colon ':'

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;3.&comma;shift_range&equals;3&comma;scale_range&equals;2&comma;orientation&equals;124&comma;20&comma;14&colon;

A 2D visualization with black and white contrast obtained viewing the 3D plot from above: change 3D by 32D in the input line above; try rotating this image using the mouse:

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;32.&comma;shift_range&equals;3&comma;scale_range&equals;2&colon;

As an example where a spurious cut is present due to intersection of cuts of different parts of the expression, consider lnz&plus;1, which has a cut from infinity to -1, and lnz1 has this cut infinity to 1, and take their difference:

lnz&plus;1lnz1

lnz&plus;1lnz1

(23)

Computing the cuts of the sub-expressions as mentioned in the Description we arrive at this result and 2D plot of the cuts

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;2.

lnz&plus;1lnz1&comma;−1z<1

(24)

So according to this result and plot, there is a cut or discontinuity for this expression from infinity to 1. Looking at the 3D visualization of the discontinuity, however, we see that it is only from -1 to 1

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;3.&comma;orientation&equals;112&comma;80&comma;15&colon;

Another way of removing the spurious cuts from the visualization, also contrasting the branch points at the extremes of the cut, is using the option plot = 32D,

FunctionAdvisorbranch_cuts&comma;&comma;plot&equals;32.&colon;

You can experiment furthermore by rotating the plots above with the mouse.

References

  

England M., Bradford R., Davenport J.H., Wilson, D. "Understanding branch cuts of expressions". http://opus.bath.ac.uk/32511/

  

Cheb-Terrab, E.S. "The function wizard project: A Computer Algebra Handbook of Special Functions". Proceedings of the Maple Summer Workshop, University of Waterloo, Ontario, Canada, 2002.

See Also

branch points

ComplexRange

convert[relation]

discont

fdiscont

FunctionAdvisor

FunctionAdvisor/branch_points

FunctionAdvisor/singularities

FunctionAdvisor/topics

iscont

plot

plot3D

plots[plotcompare]

RealRange

 


Download Help Document

Was this information helpful?



Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam