Epsilon-Delta Limits Tutorial

Albert Y. C. Lai, trebla [at] vex [dot] net

Logic

The definition of function limits goes:

limxc f(x) = L
iff
for all ε>0:
exists δ>0:
for all x:
if 0<|x-c|<δ then |f(x)-L|<ε

This section outlines how to prove statements of this form. The next few sections have solved examples.

The outermost “for all ε>0” says that in the proof, ε is an unknown given. We can think of ε as an input value; the proof has to work for all inputs, and therefore we are not to choose or assume its value, except for what the statement promises, i.e., we can assume ε>0 (and implicitly ε is a real number). On the other hand, we can use ε and the promise as a given in the rest of the proof. For example, if the proof relies on 1/ε>0, it is valid because it comes from the promised ε>0.

One level down, “exists δ>0” says that our proof must choose a value for δ, and the chosen value must satisfy δ>0 and the rest of the statement. Because incidentally “exists δ>0” appears nested under “for all ε>0”, our value for δ can use ε as a given, too. In general, δ can use everything given in the outer context, including ε and the assumption ε>0 because of the outer “for all ε>0”, including f and c because they come from the question, including arithmetic operators and their facts because they are pervasive. To illustrate, in a solved example below, δ is chosen to be ε/3 — using only outer ε and pervasive division and 3. To prove δ>0, which is ε/3>0, we only take the outer ε>0 and apply a pervasive fact. But δ cannot use the x from the innermost “for all x” — that x is one level inner and is not part of the outer context.

The innermost “for all x” says that x is an unknown given. Again, normally it means we are not to choose or assume its value. Looking further into the rest of the statement, it says “if 0<|x-c|<δ then …”. Combining, we can assume that x satisfies 0<|x-c|<δ. This is actually pretty strange and to our advantage: the assumption depends on δ, which is our choice. So superficially, we don't have control over x; looking deeper, we do have control over δ, which indirectly controls x by confining it to 0<|x-c|<δ. So we can't nail down x but we can shrink its range. This will come to our rescue in some proofs.

Under all this context, we are to prove |f(x)-L|<ε.

To recap, we are given unknown ε>0; under this we choose δ>0; under this we are given unknown x, but we have indirect influence through 0<|x-c|<δ; under this we prove |f(x)-L|<ε.

So far I have only described our obligation; I have not said what strategies will help. Here is my usual strategy: I go ahead and try to connect |f(x)-L|<ε with the given 0<|x-c|<δ. This is despite not having chosen δ yet; it is my key because I use this process to help me discover a good choice for δ. Usually I discover something like: I can deduce |f(x)-L|<ε from 0<|x-c|<ε/3, and this works for all ε>0 and for all x, so the two “for all”s are satisfied; and now if I choose δ=ε/3, the connection is complete (and it is easy to verify ε/3>0 given ε>0).

Basic Solved Examples

Linear Function

Prove limx→2 3x+1 = 7

As said, my strategy is to try to connect |3x+1-7|<ε with 0<|x-2|<stuff, then I will know what to choose for δ. By “connect” I mean: |3x+1-7|<ε is deduced from 0<|x-2|<stuff. There are two ways I can prove and write the connection.

One way:

0<|x-2|<stuff
hence
hence
|3x+1 - 7| < ε

The other way:

|3x+1 - 7| < ε
when
when
0<|x-2|<stuff

I will mostly work with and write in the “when” order. It shows that a good choice for δ can be found almost methodologically, in fact this order shows the method. So here it goes:

|3x+1 - 7| < ε
when
|3x - 6| < ε
when
|x-2| < ε/3
when
0 < |x-2| < ε/3
 
choose δ=ε/3

Most steps are just simplifications, thus preserving equivalence (and thus I could say “iff” in place of “when”). Only the last “when” does not preserve equivalence, but it is legal — considering “when” — and I do it just for the desired form 0<|x-2|<stuff.

Some people stubbornly insist on proofs in the “forward” “hence” order, even though the “when” order with the word “when” clearly written is just as valid and easily checkable, even though it is the order people secretly use to find δ, even though it is goal-oriented and pedagogically superior for many tasks. Fortunately, Javascript enables us to pay them lip service: simply click to obtain their pompous order; click again to restore our candid order.

Cancelling

Prove limx→1 (x2-1)/(x-1) = 2

|(x2-1)/(x-1) - 2| < ε
when
|(x+1)(x-1)/(x-1) - 2| < ε

Wouldn't it be nice to just cancel the two (x-1)'s? But this is only legal when x-1≠0. Let's suppose this condition (legal in the “when” direction) to enable cancelling.

|(x+1)(x-1)/(x-1) - 2| < ε
when
|(x+1)(x-1)/(x-1) - 2| < ε and x-1≠0
when
|(x+1) - 2| < ε and x-1≠0
when
|x-1| < ε and x-1≠0
when
0 < |x-1| < ε
 
choose δ=ε

You may object that cancelling is a one-way street, even of the wrong direction. But I am doing this: given x-1≠0, the following identity is a two-way street, it says “=”:

(x+1)(x-1)/(x-1) = (x+1)

Here is the proof again, in one piece, with a “reverse” button:

|(x2-1)/(x-1) - 2| < ε
when
|(x+1)(x-1)/(x-1) - 2| < ε
when
|(x+1)(x-1)/(x-1) - 2| < ε and x-1≠0
when
|(x+1) - 2| < ε and x-1≠0
when
|x-1| < ε and x-1≠0
when
0 < |x-1| < ε
 
choose δ=ε

Quadratic function

Prove limx→1 x2+x+1 = 3

First I rewrite x2+x+1 - 3 into a polynomial in terms of (x-1). This is obvious and not obvious: It is obviously desirable, it is just not obvious how. The good news is it can be done.

|x2+x+1 - 3| < ε
when
|x2+x-2| < ε
when
|(x+2)(x-1)| < ε
when
|((x-1)+3)(x-1)| < ε
when
|(x-1)2 + 3(x-1)| < ε

Next, I split up the two terms. (And then each term can be associated with ε/2.) But the two terms are under the same absolute value. The only safe way to split is through the triangle inequality:

|B+C| ≤ |B|+|C|

and the logic of using it in detail, working on general B and C first:

|B+C| < ε
when
|B+C|≤|B|+|C| and |B|+|C|<ε
when
(true statement) and |B|+|C|<ε
when
|B|+|C|<ε
when
|B|<ε/2 and |C|<ε/2

Check the logic. In particular, the first step is not a logical equivalence, but it is legal because I just need “when”. The same is said about the last step. This is an example of performing substantial non-equivalent steps in limit proofs. We usually have to do some substantial non-equivalent steps for questions more interesting than the linear function example.

Applying this to B=(x-1)2 and C=3(x-1), jumping steps because I have done them once:

|(x-1)2 + 3(x-1)| < ε
when (several steps)
|(x-1)2|<ε/2 and |3(x-1)|<ε/2
when
|x-1|2<ε/2 and 3|x-1|<ε/2
when
|x-1|<√(ε/2) and |x-1|<ε/6

This says |x-1| is less than two numbers, combined by “and”. This is equivalent to saying: |x-1| is less than the minimum of the two numbers, and that is our δ:

|x-1|<√(ε/2) and |x-1|<ε/6
when
|x-1| < min(√(ε/2),ε/6)
when
0 < |x-1| < min(√(ε/2),ε/6)
 
choose δ=min(√(ε/2),ε/6)

Here is a summary of the proof in one piece and its “reverse” button:

|x2+x+1 - 3| < ε
when
|(x-1)2 + 3(x-1)| < ε
when (triangle inequality)
|x-1|2 + 3|x-1| < ε
when
|x-1|2<ε/2 and 3|x-1|<ε/2
when
|x-1|<√(ε/2) and |x-1|<ε/6
when
|x-1| < min(√(ε/2),ε/6)
when
0 < |x-1| < min(√(ε/2),ε/6)
 
choose δ=min(√(ε/2),ε/6)

Bounded function times diminishing function

Prove limx→0 x sin(x+5) = 0

The main idea is |x sin(x+5)| = |x-0| |sin(x+5)|, here |sin(x+5)| can be replaced by its upperbound 1.

|x sin(x+5) - 0| < ε
when
|x| |sin(x+5)| < ε
when
|x|<ε and |sin(x+5)|≤1
when
|x|<ε and (true statement)
when
|x|<ε
when
0<|x-0|<ε
 
choose δ=ε

That has been too easy. So let me contrive a malicious function, a piecewise function. Define:

g(x) = sin(x+5) if |x|<2; tan(x) otherwise

Prove limx→0 x g(x) = 0

|x g(x) - 0| < ε
when
|x| |g(x)| < ε

This time the extra idea is that when x is near 0, g(x) = sin(x+5), so we can continue. To be precise, we want |x|<2. We can go ahead and add this constraint on the next line. The “when” order allows it. And as explained in the logic section, we have indirect control over x through our control of δ, so we just have to find how to tweak δ for this.

|x||g(x)|<ε
when
|x||g(x)|<ε and |x|<2
when
|x||sin(x+5)|<ε and |x|<2
when (we did this before)
|x|<ε and |x|<2
when
0<|x-0|<ε and 0<|x-0|<2
when
0<|x-0|<min(ε,2)
 
choose δ=min(ε,2)

So the additional constraint |x|<2 is legal by finding a suitable δ.

Here is the proof in one piece and its “reverse” button:

|x g(x) - 0| < ε
when
|x| |g(x)| < ε
when
|x||g(x)|<ε and |x|<2
when
|x||sin(x+5)|<ε and |x|<2
when (we did this before)
|x|<ε and |x|<2
when
0<|x-0|<ε and 0<|x-0|<2
when
0<|x-0|<min(ε,2)
 
choose δ=min(ε,2)


I have more Math Homework Help