]>
Book Contents Previous Section 8.5 Solution of Linear and Polynomial Equations Next Section 8.7 Laplace Transforms Book Index

## 8.6 Limits

To compute a limit, you must specify a functional expression, limit a variable, and a limiting value for that variable. If you do not specify a direction, Axiom attempts to compute a two-sided limit.

Issue this to compute the limit

limit((x**2 - 3*x + 2)/(x**2 - 1),x = 1)

-1 2

Type: Union(OrderedCompletion Fraction Polynomial Integer,...)

Sometimes the limit when approached from the left is different from the limit from the right and, in this case, you may wish to ask for a one-sided limit. Also, if you have a function that is only defined on one side of a particular value, limit:one-sided vs. two-sided you can compute a one-sided limit.

The function log(x) is only defined to the right of zero, that is, for x>0. Thus, when computing limits of functions involving log(x), you probably want a ``right-hand'' limit.

limit(x * log(x),x = 0,"right")

0

Type: Union(OrderedCompletion Expression Integer,...)

When you do not specify `` right'' or `` left'' as the optional fourth argument, limit tries to compute a two-sided limit. Here the limit from the left does not exist, as Axiom indicates when you try to take a two-sided limit.

limit(x * log(x),x = 0)

[leftHandLimit="failed",rightHandLimit=0]

Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"), rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)

A function can be defined on both sides of a particular value, but tend to different limits as its variable approaches that value from the left and from the right. We can construct an example of this as follows: Since y 2 is simply the absolute value of y, the function y 2/y is simply the sign ( +1 or -1) of the nonzero real number y. Therefore, y 2/y=-1 for y<0 and y 2/y=+1 for y>0.

This is what happens when we take the limit at y=0. The answer returned by Axiom gives both a ``left-hand'' and a ``right-hand'' limit.

limit(sqrt(y**2)/y,y = 0)

[leftHandLimit=-1,rightHandLimit=1]

Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"), rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)

Here is another example, this time using a more complicated function.

limit(sqrt(1 - cos(t))/t,t = 0)

[leftHandLimit=-1 2,rightHandLimit=1 2]

Type: Union(Record(leftHandLimit: Union(OrderedCompletion Expression Integer,"failed"), rightHandLimit: Union(OrderedCompletion Expression Integer,"failed")),...)

You can compute limits at infinity by passing either limit:at infinity +∞ or -∞ as the third argument of limit.

To do this, use the constants %plusInfinity and %minusInfinity.

limit(sqrt(3*x**2 + 1)/(5*x),x = %plusInfinity)

3 5

Type: Union(OrderedCompletion Expression Integer,...)
limit(sqrt(3*x**2 + 1)/(5*x),x = %minusInfinity)

-3 5

Type: Union(OrderedCompletion Expression Integer,...)

You can take limits of functions with parameters. limit:of function with parameters As you can see, the limit is expressed in terms of the parameters.

limit(sinh(a*x)/tan(b*x),x = 0)

a b

Type: Union(OrderedCompletion Expression Integer,...)

When you use limit, you are taking the limit of a real function of a real variable.

When you compute this, Axiom returns 0 because, as a function of a real variable, sin(1/z) is always between -1 and 1, so z*sin(1/z) tends to 0 as z tends to 0.

limit(z * sin(1/z),z = 0)

0

Type: Union(OrderedCompletion Expression Integer,...)

However, as a function of a complex variable, sin(1/z) is badly limit:real vs. complex behaved near 0 (one says that sin(1/z) has an essential singularity essential singularity at z=0). singularity:essential

When viewed as a function of a complex variable, z*sin(1/z) does not approach any limit as z tends to 0 in the complex plane. Axiom indicates this when we call complexLimit.

complexLimit(z * sin(1/z),z = 0)

"failed"

Type: Union("failed",...)

Here is another example. As x approaches 0 along the real axis, exp(-1/x**2) tends to 0.

limit(exp(-1/x**2),x = 0)

0

Type: Union(OrderedCompletion Expression Integer,...)

However, if x is allowed to approach 0 along any path in the complex plane, the limiting value of exp(-1/x**2) depends on the path taken because the function has an essential singularity at x=0. This is reflected in the error message returned by the function.

complexLimit(exp(-1/x**2),x = 0)

"failed"

Type: Union("failed",...)

You can also take complex limits at infinity, that is, limits of a function of z as z approaches infinity on the Riemann sphere. Use the symbol %infinity to denote ``complex infinity.''

As above, to compute complex limits rather than real limits, use complexLimit.

complexLimit((2 + z)/(1 - z),z = %infinity)

-1

Type: OnePointCompletion Fraction Polynomial Integer

In many cases, a limit of a real function of a real variable exists when the corresponding complex limit does not. This limit exists.

limit(sin(x)/x,x = %plusInfinity)

0

Type: Union(OrderedCompletion Expression Integer,...)

But this limit does not.

complexLimit(sin(x)/x,x = %infinity)

"failed"

Type: Union("failed",...)
Book Contents Previous Section 8.5 Solution of Linear and Polynomial Equations Next Section 8.7 Laplace Transforms Book Index