Limits Student Lab
Notes to Student:
This lab has many animations to help you get an intuitive feel for the limiting process. It is important for you to focus on the dynamic nature of the lab. Limits are about movement and how a change in one value affects another value. Calculus has been often described as the mathematics of change. Keep that in mind throughout this lab for it is crucial in laying down a good foundation for later topics.
Introduction:
The limiting process is at the very heart of calculus and without it the foundation of calculus quickly unravels.The animations of this lab are all designed to help you visualize the limiting process . This process hinges on examining how a change in one quantity affects another quantity. How functions behave as we alter permissable domain values will be explored closely throughout the lab and you should focus on the big picture concept of each section.
Objectives Defined:
The purpose of this module is to improve the student's conceptual and computational understanding of limits. These goals will be achieved by
1. Demonstrating the informal definition of limits through graphical representations and converging/diverging sequences.
2. Exploring when limits fail to exist at a point.
3. Demonstrating through animation the usage and elements of the "Squeeze/Sandwhich Theorem".
4. Examining the precise definition of limit.
5. Providing student problem sets.
The Process of Limiting Values (Obj.1): Animated
Two Sided Limits
When one discusses limits one is really describing a covariational process between inputed values and their respective outputs. If we are interested in how a function's outputs behave as we approach a designated input value then we are describing a limiting process. Consider the following limit problem.
Although the problem is not defined at x = 1, we can still determine the limit as discussed in class. The animation below will give you a graphical look at the limiting process. Pay particular note to the left and right-hand limit sequences. Place the cursor in the red restart code word and press "Enter". Click on the picture and use the animation controls at the top to run the animation. BE PATIENT for the code to set.
>
restart:with(plots):with(plottools):
Digits:=5:
f:=x->(x^2-1)/(x-1):
*/ Function examined (graph 1).
h:=0.9:
n:=50:
a:=1.0005:
graph:=display(pointplot({[a,f(a)],[a,0]},symbol=circle,symbolsize=15),plot(f(x),x=(a-(h+signum(h)*1))..(a+(h+signum(h)*1)),thickness=3,color=green)):
rightpt:=display(seq(pointplot([a+(n-i)/(n/h),0],symbol=circle,symbolsize=18,color=blue),i=0..n-1),insequence=true):
leftpt:=display(seq(pointplot([a-(n-i)/(n/h),0],symbol=circle,symbolsize=18,color=blue),i=0..n-1),insequence=true):
fright:=display(seq(textplot([a+1.9,2,cat("f(x)right = ",convert(f(a+(n-i)/(n/h),4),string))],color=BLUE,font=[TIMES,ROMAN,12]),i=0..n-1),insequence=true):
fleft:=display(seq(textplot([a-1.9,2,cat("f(x)left= ",convert(f(a-(n-i)/(n/h),4),string))],color=BLUE,font=[TIMES,ROMAN,12]),i=0..n-1),insequence=true):
xleft:=display(seq(textplot([0.7,-1,cat("x-left = ",convert(evalf(a-(n-i)/(n/h),4),string))],color=BLUE,font=[TIMES,ROMAN,12]),i=0..n-1),insequence=true):
xright:=display(seq(textplot([2,-1,cat("x-right=",convert(evalf(a+(n-i)/(n/h),4),string))],color=BLUE,font=[TIMES,ROMAN,12]),i=0..n-1),insequence=true):
cright:=display(seq(ellipse([a+(n-i)/(n/h),f(a+(n-i)/(n/h))], 0.08,0.1,color=red,filled=true),i=0..n-1),insequence=true):
cleft:=display(seq(ellipse([a-(n-i)/(n/h),f(a-(n-i)/(n/h))],0.08,0.1,color=red,filled=true),i=0..n-1),insequence=true):
heading:=display(textplot([1,3.5,`Two-Sided Limit`],color=magenta,font=[TIMES,ROMAN,14])):
display(cright,cleft,graph,xleft,xright,rightpt,leftpt,fright,fleft,heading):Digits:=5:
g:=x->sqrt(x,symbolic):
*/ Function examined (graph 2).
h:=0.5:
a:=0.0000005:
graph2:=display(pointplot({[a,g(a)],[a,0]},symbol=circle,symbolsize=15),plot(g(x),x=0..(a+(h+signum(h)*1)),thickness=3,color=green)):
rightpt2:=display(seq(pointplot([a+(n-i)/(n/h),0],symbol=circle,symbolsize=18,color=blue),i=0..n-1),insequence=true):
fright2:=display(seq(textplot([a+0.8,2,cat("g(x)=",convert(g(a+(n-i)/(n/h),4),string))],color=BLUE,font=[TIMES,ROMAN,12]),i=0..n-1),insequence=true):
xright2:=display(seq(textplot([0.8,-1,cat("x-right=",convert(evalf(a+(n-i)/(2*n/h),4),string))],color=BLUE,font=[TIMES,ROMAN,12]),i=0..n-1),insequence=true):
cright2:=display(seq(ellipse([a+(n-i)/(n/h),g(a+(n-i)/(n/h))], 0.03,0.06,color=red,filled=true),i=0..n-1),insequence=true):
heading2:=display(textplot([0.8,3.2,`One-Sided Limit (Square Root Function)`],color=magenta,font=[TIMES,ROMAN,14])):
display(cright2,graph2,xright2,rightpt2,fright2,heading2):
display(cright,cleft,graph,xleft,xright,rightpt,leftpt,fright,fleft,heading);
Warning, the name changecoords has been redefined
>
Notice that the function has a limit value of 2 even though f(1) is not defined because x = 1 is not in the domain.
The above example demonstrates the informal definition of limit and can be expressed in words as:
" The limit of f(x) at a point , a , is a finite number, L, if as x gets close to a , f(x) gets close to L".
We write this symbolically as:
iff
If as we let x approach a value "a" the left-hand and right-hand function outputs approach the same value, then we say the limit is that common value. As mentioned in the above example "a" need not be in the domain of the function. We are concerned about how the heights of the function behave for x near "a". Limits fail to exist when the left-hand function heights do not approach the same value as the right-hand function heights. They also fail to exist if the function increases/decreases without bound (i.e. gets infinitely large or small) or the function oscillates like in sin(1/x).
>
One-Sided Limits
Many functions have a restricted domain. This can create what we call "one-sided limits". Place the cursor in the red display and press "Enter". Once agian, you can use the animation toolbox after you click on the picture.
> display(cright2,graph2,xright2,rightpt2,fright2,heading2);
>
When Limits Fail to Exist (Obj.2): Animated
When Limits Fail to Exist
The following are several examples of when limits fail to exist. Examine each one closely.
Jump Discontinuity Function Example
Some limits fail to exist because the function has a jump discontinuity near the point of question. Consider the piecewise function defined as
Place the cursor in the red restart and press "Enter". You can use the animation toolbox after you click on the picture.
>
restart:with(plots):with(plottools):Digits:=5:
g:=x->1/x^2:
f:=x->piecewise(x<3,-x+2,x>=3,sin(x)+6):
h:=1:b:=3:
n:=50:
a:=0.0005:
graph1:=display(pointplot({[a+3,f(a+3)],[a+3,0]},symbol=circle,symbolsize=15),plot(f(x),x=b+a-(b+signum(b)*1)..(b+a+(b+signum(b)*1)),thickness=3,color=blue,view=[0..10,-1..10],title="Limit Fails to Exist\nFunction has Jump Discontinuity",discont=true,titlefont=[TIMES,BOLD,16])):
rightpt1:=display(seq(pointplot([3+a+(n-i)/(n/b),0],symbol=circle,symbolsize=18,color=red),i=0..n-1),insequence=true):
leftpt1:=display(seq(pointplot([3+a-(n-i)/(n/b),0],symbol=circle,symbolsize=18,color=red),i=0..n-1),insequence=true):
cright1:=display(seq(ellipse([3+a+(n-i)/(n/b),f(3+a+(n-i)/(n/b))], 0.08,0.3,color=black,filled=true),i=0..n-1),insequence=true):
cleft1:=display(seq(ellipse([3+a-(n-i)/(n/b),f(3+a-(n-i)/(n/b))], 0.08,0.3,color=black,filled=true),i=0..n-1),insequence=true):
graph2:=display(pointplot({[a,g(a)],[a,0]},symbol=circle,symbolsize=15),plot(g(x),x=a-(h+signum(h)*1)..(a+(h+signum(h)*1)),thickness=3,color=green,view=[-1..1,-1..100],title="Limit Fails to Exist\nF(x) Unbounded",titlefont=[TIMES,BOLD,16])):
rightpt2:=display(seq(pointplot([a+(n-i)/(n/h),0],symbol=circle,symbolsize=18,color=blue),i=0..n-1),insequence=true):
leftpt2:=display(seq(pointplot([a-(n-i)/(n/h),0],symbol=circle,symbolsize=18,color=blue),i=0..n-1),insequence=true):
cright2:=display(seq(ellipse([a+(n-i)/(n/h),g(a+(n-i)/(n/h))], 0.04,1.2,color=black,filled=true),i=0..n-1),insequence=true):
cleft2:=display(seq(ellipse([a-(n-i)/(n/h),g(a-(n-i)/(n/h))], 0.04,1.2,color=black,filled=true),i=0..n-1),insequence=true):
display(cright2,cleft2,graph2,leftpt2,rightpt2):
display(cright1,cleft1,graph1,leftpt1,rightpt1);
Warning, the name changecoords has been redefined
>
The next example shows ....
Unbounded Function Example
Some limits fail to exist because the function is unbounded near the point of question. The animation
below shows a function where the limit does not exist because the function,
f(x) =
grows without bound as x approaches zero from both sides. Place the cursor in the red
display
and press "Enter". Once agian, you can use the animation toolbox after you click on the picture.
> display(cright2,cleft2,graph2,leftpt2,rightpt2);
>
Student Problem Set .
Directions : Write your answers in the space available. You may use a calculator to aid in your exploration.
#1. What does f(a) = L mean?
#2. What does
mean?
#3. How do you informally decide if a limit at a point exists?
#4. Create a function that satisfies
= L, but the function is not defined for the point x =
a
.
#. 5 Determine the following limits by examining a table of values approaching from both sides of the point, a . Be ready to discuss the graph in general and defend your analysis.
Squeeze Theorem (Obj.3): Animated
The Squeeze Theorem
The Squeeze/Sandwich Theorem is a technique to determine limits by bounding the given function, f(x), both above and below by some other known functions.
The example coded below has
sin(
)
bounded above
by
p1(x) =
and bounded below by
p2(x) = -(
)
.
The animation shows that as x approaches zero, the oscillating f(x) is "squeezed/sandwiched" by the bounding functions. Place the cursor in the red
restart
and press "Enter".
>
restart:with(plots):with(plottools):
Digits:=5:
f:=x->x^2*sin(Pi/x):p1:=x->x^2:p2:=x->-(x^2):
h:=1:
n:=50:
a:=0.0005:
b:=a^2*sin(Pi/a):
graph:=display(plot(p1(x),x=-1..1,thickness=2),plot(p2(x),x=-1..1,thickness=2),plot(f(x),x=(a-(h+signum(h)*1))..(a+(h+signum(h)*1)),thickness=3,color=green,view=[-1...1,-1.5..1.5],title="SqueezeTheorem",titlefont=[TIMES,ROMAN,14])):cright:=display(seq(ellipse([a+(n-i)/(n/h),f(a+(n-i)/(n/h))],0.02,0.04,color=black,filled=true),i=0..n-1),insequence=true):
cleft:=display(seq(ellipse([a-(n-i)/(n/h),f(a-(n-i)/(n/h))],0.02,0.04,color=black,filled=true),i=0..n-1),insequence=true):
p1left:=display(seq(ellipse([a-(n-i)/(n/h),p1(a-(n-i)/(n/h))],0.02,0.04,color=black,filled=true),i=0..n-1),insequence=true):
p2left:=display(seq(ellipse([a-(n-i)/(n/h),p2(a-(n-i)/(n/h))],0.02,0.04,color=black,filled=true),i=0..n-1),insequence=true):
p1right:=display(seq(ellipse([a+(n-i)/(n/h),p1(a+(n-i)/(n/h))],0.02,0.04,color=black,filled=true),i=0..n-1),insequence=true):
p2right:=display(seq(ellipse([a+(n-i)/(n/h),p2(a+(n-i)/(n/h))],0.02,0.04,color=black,filled=true),i=0..n-1),insequence=true):
display(cright,p1left,cleft,graph,p2left,p1right,p2right);
Warning, the name changecoords has been redefined
>
Epsilon-Delta Animation (Obj.4): Animated
The formal definition of limit is expressed in terms of absolute values and is commonly written as:
Let f(x) be defined for all x in some open interval containing the number a , with the
possible exception that f(x) need not be defined at a. We write:
if given any number
> 0
we can find a number
> 0
such that
We can animate the limiting process and observe the relationships between delta, epsilon, and the curve. The two bands you see help you focus in on the area of interest. Place the cursor in the red restart command and press "Enter" to obtain the figure upon which to animate.
>
restart:with(plots):with(plottools):
f:=1/x;
a:=2:
L:=limit(f,x=a):
W:=1.8:
epsilon:=0.5:
step:=.8:
N:=40:
epsilonmin:=step^N*epsilon:
left:=a-W:
right:=a+W:
top:=evalf(L+W):
bottom:=evalf(L-W):spread:=50:k:='k':
for k from 1 to N do
s:= solve(abs(f-L)=epsilon):Num_roots:=nops([s]):
for i from 1 to Num_roots do
if type(s[i],float) then
spread:=spread,abs(s[i]-a):
fi:od:
delta:=evalf(min(spread)):
pf:=plot([L+epsilon,f,L-epsilon],x=left..right,color=[red,black,red],thickness=[1,3,1]):
fright:=textplot([-1.5,0.9,cat("L+epsilon = ",convert(evalf(L+epsilon,4),string))],color=red,font=[TIMES,BOLD,12]): fleft:=textplot([-1.5,.2,cat("L-epsilon = ",convert(evalf(L-epsilon,4),string))],color=red,font=[TIMES,BOLD,12]):
deltagap:=textplot([4.2,-0.4,cat("delta = ",convert(evalf(min(spread),4),string))],color=magenta,font=[TIMES,BOLD,12]):
p1:=inequal({y<=L+epsilon,y>=L-epsilon},x=left..right,y=bottom..top,optionsexcluded=(color=white),optionsfeasible=(color=blue)):
p2:=inequal({x>=a-delta,x<=a+delta},x=a-delta..a+delta,y=bottom..top,optionsfeasible=(color=yellow),optionsexcluded = (color=white)):
p[k]:=plots[display](deltagap,fright,fleft,pf,p2,p1,view=[-3...6,-1..2]):
epsilon:=step*epsilon:
od:
plots[display](p[j]$j=2..N,insequence=true,title="Epsilon-Delta",titlefont=[TIMES,BOLD,14]);
Notice how the change in
will result in a change in
.
Warning, the name changecoords has been redefined
>
Student Problem Set.
Directions : Write your answers in the space available. You may use a calculator to aid in your exploration.
#1. Explain with proper grammer and mathematical symbolism what
means.
#2. Consider the function
Find a number
such that
< 0.2 whenever
<
.
#3. Prove the following limits using the epsilon-delta method.
A.
= 17 B.
= 4.
#4. Suppose a manufacturer wishes to create a disk with area 500 square inches within an error tolerance of 5 square inches either too large or too small. What is an appropriate delta value for the radius?
#5. Prove that
=
.
#6. Compute the limit algebraically.
#7. Compute the limit algebraically.
#8. Compute the limit.
#9. Use the Squeeze Theorem to find
if
.
#10. If
, determine whether
exists.