DoubleStudent.mws

Double Integrals

Viewing the Construction

Notes to Students:

This lab is designed for you to visually capture the essence of double integrals by the usage of animations. You should focus on the connections between the single variable 2-D Riemann Rectangle Approximation Method and the new 3-D approach for functions of two variables.

Approximate time: 30 minutes

Introduction:

Remember from Calculus I that we wished to determine the area beneath the graph of a non-negative function. This led to the Riemann Rectangle Method for approximating integrals. As we progressed we learned that the integral over a finite interval produced a net accumulation (or signed area). We spent a significant amount of time devoted to partitioning a region, utilizing various rectangle schemes (right-hand, left-hand, and midpoint), and then discovered the elegant Fundamental Theorem of Calculus approach. In Calculus II we took our new found knowledge and determined the volumes of certain solids either by creating disks/washers or shells. We also determined volumes by summing up cross-sectional slices. Throughout both of these two endeavors we used refinements of length and the notion of limits to produce the desired outcome. Double integrals are akin to such processes and are relatively easy to work with. The question we seek to address is outlined below:

"Given a function of two variables, say, f(x,y), that is continuous and non-negative on a region, R, in the xy-plane, find the volume of the solid enclosed between the surface defined by f(x,y) and the region, R."

It is important to note the analogy to the area question from Calculus I.

"Given a function of one variable, say, f(x), that is continuous and non-negative over a closed interval [a,b], find the area enclosed beneath the function, f(x), and above the horizontal axis on the interval [a, b]."

Our scheme of partitioning, limiting, and computing are inherently identical. The following sections will explore the procedures in greater depth and should be used in conjunction to your text and lecture notes.

The Double Integral over a Rectangle:

Multi-variable calculus deals with functions of more than one variable. Such a case is the surface defined as f(x,y). We note that for each ordered pair that is in f's domain, we obtain a function output. The output is an ordered triple and is of the form (x, y, f(x,y)) = (x, y, z).

Suppose we wish to determine the volume beneath a given surface, f(x, y) , and the xy-plane over a closed rectangle defined as:

R = [a, b] x [c, d]. A sample surface is shown below:

[Maple Bitmap]

If f(x,y) is non-negative and continuous for all ordered pairs in R, then we can approximate the desired volume by stacking "columns" of determined heights below the surface and computing the sum of the column volumes. A simple diagram of this is shown below:

[Maple Bitmap]

It is important to note the 2-D to 3-D analogy.

Volume Example 1:(Animated)

The following example shows the surface defined as:

[Maple OLE 2.0 Object]

over the rectangle [0,2] x [0,2]. The code will produce the approximate volume and the Maple computed double integral. Place the cursor in the red restart and press "Enter". Click on the picture and use the Animation Toolbar at the top of the screen to run the animation.

> restart:with(plots):with(plottools):
f:=(x,y)->16-x^2-2*y^2:
surface:=plot3d(f(x,y),x=0..2,y=0..2,style=wireframe,grid=[10,10],shading=none,color=blue,axes=normal,thickness=2):
delx:=0.2:
dely:=0.2:
xnum:=ceil(2/delx):
ynum:=ceil(2/dely):
xvals:=[seq(i*delx,i=0..xnum)]:
yvals:=[seq(i*dely,i=0..ynum)]:
columns:=[seq(seq(cuboid([xvals[i],yvals[j],0],[xvals[i+1],yvals[j+1],f(0.5*delx+xvals[i],0.5*dely+yvals[j])]),j=1..nops(yvals)-1),i=1..nops(xvals)-1)]:
frames:=[surface,seq(display(columns[1..4*k],surface,view=[0..2,0..2,0..16]), k=1..nops(columns)/4),display(columns,surface,view=[0..2,0..2,0..16])]:
display(frames,insequence=true,view=[0..2,0..2,0..16],title="Approximate Volume",titlefont=[TIMES,BOLD,14],labels=["x","y","z"],orientation=[40,68],color=grey);
approximate_volume:=add(add(f(0.5*delx+xvals[i],0.5*dely+yvals[j])*delx*dely,j=1..nops(yvals)-1), i=1..nops(xvals)-1);
computed_volume:=Int(Int(f(x,y),y=0..2),x=0..2)=evalf(int(int(f(x,y),y=0..2),x=0..2));

Warning, the name changecoords has been redefined

[Maple Plot]

approximate_volume := 48.040000

computed_volume := Int(Int(16-x^2-2*y^2,y = 0 .. 2)...

>

Note the close agreement between the approximating volume and the exact volume. Furthermore, we integrated with respect to y first. There is much more to be said about the order of integration and how the heights for the columns were determined but these questions are best discussed in the classroom setting. Further examples of surfaces and their approximating volumes follow along with a student problem set. Enjoy the examples and think about what each one is showing.

>

Further Examples: (Animated)

Example 2.

The second example is the function:

[Maple OLE 2.0 Object]

on the rectangle [0,3] x [0,3].

What figure and approximating value would you expect the code to produce? Run the code and compare it with your conjecture.Place the cursor in the red restart and press "Enter".

> restart:with(plots):with(plottools):
f:=(x,y)->9-x^2-y^2:
surface:=plot3d(f(x,y),x=0..3,y=0..3,style=wireframe,grid=[10,10],shading=zhue,axes=normal,thickness=2):
delx:=0.3:
dely:=0.3:
xnum:=ceil(3/delx):
ynum:=ceil(3/dely):
xvals:=[seq(i*delx,i=0..xnum)]:
yvals:=[seq(i*dely,i=0..ynum)]:
columns:=[seq(seq(cuboid([xvals[i],yvals[j],0],[xvals[i+1],yvals[j+1],f(0.5*delx+xvals[i],0.5*dely+yvals[j])]),j=1..nops(yvals)-1),i=1..nops(xvals)-1)]:
frames:=[surface,seq(display(columns[1..4*k],surface,view=[0..3,0..3,0..9]), k=1..nops(columns)/4),display(columns,surface,view=[0..3,0..3,0..9])]:
display(frames,insequence=true,view=[0..3,0..3,0..9],title="Approximate Volume",titlefont=[TIMES,BOLD,14],labels=["x","y","z"],orientation=[40,68],color=grey);
approximate_volume:=add(add(f(0.5*delx+xvals[i],0.5*dely+yvals[j])*delx*dely,j=1..nops(yvals)-1), i=1..nops(xvals)-1);
computed_volume:=Int(Int(f(x,y),y=0..3),x=0..3)=evalf(int(int(f(x,y),y=0..3),x=0..3));

Warning, the name changecoords has been redefined

[Maple Plot]

approximate_volume := 27.135000

computed_volume := Int(Int(9-x^2-y^2,y = 0 .. 3),x ...

>

Are the results consistent with what you previously know?

Can you determine why this is an overestimate?

Example 3:

This last example takes a bit of a more complicated figure and shows the same visual dynamics for approximating the volume. The surface is defined as:

[Maple OLE 2.0 Object]

over the same rectangle, namely [0,3] x [0,3]. Consider how the cosine function should affect the surface. Place the cursor in the red restart and press "Enter".

> restart:with(plots):with(plottools):
f:=(x,y)->cos(0.5*(x^2+y^2))+5:
surface:=plot3d(f(x,y),x=0..3,y=0..3,style=patch,grid=[10,10],shading=zhue,axes=normal,thickness=2):
delx:=0.3:
dely:=0.3:
xnum:=ceil(3/delx):
ynum:=ceil(3/dely):
xvals:=[seq(i*delx,i=0..xnum)]:
yvals:=[seq(i*dely,i=0..ynum)]:
columns:=[seq(seq(cuboid([xvals[i],yvals[j],0],[xvals[i+1],yvals[j+1],f(0.5*delx+xvals[i],0.5*dely+yvals[j])]),j=1..nops(yvals)-1),i=1..nops(xvals)-1)]:
frames:=[surface,seq(display(columns[1..4*k],surface,view=[0..3,0..3,0..9]), k=1..nops(columns)/4),display(columns,surface,view=[0..3,0..3,0..9])]:
display(frames,insequence=true,view=[0..3,0..3,0..9],title="Approximate Volume",titlefont=[TIMES,BOLD,14],labels=["x","y","z"],orientation=[40,68],color=grey);
approximate_volume:=add(add(f(0.5*delx+xvals[i],0.5*dely+yvals[j])*delx*dely,j=1..nops(yvals)-1), i=1..nops(xvals)-1);
computed_volume:=Int(Int(f(x,y),y=0..3),x=0..3)=evalf(int(int(f(x,y),y=0..3),x=0..3));

Warning, the name changecoords has been redefined

[Maple Plot]

approximate_volume := 44.34163511

computed_volume := Int(Int(cos(.5*x^2+.5*y^2)+5,y =...

>

Procede to the Student Problem Set.

Student Problem Set:

There are 5 surfaces listed below. Use the code that appears at the end of the list adjusting the /*Function Line to produce each surface and its approximate volume.Write down the two values and make sure you examine the figure by rotating it.

Surface 1:

[Maple OLE 2.0 Object]

Surface 2:

[Maple OLE 2.0 Object]

Surface 3:

[Maple OLE 2.0 Object]

Surface 4:

[Maple OLE 2.0 Object]

Surface 5:

[Maple OLE 2.0 Object]

> restart:with(plots):with(plottools):
f:=(x,y)->place your function here:
/*Function Line
surface:=plot3d(f(x,y),x=0..3,y=0..3,style=patch,grid=[10,10],shading=zhue,axes=normal,thickness=2):
delx:=0.3:
dely:=0.3:
xnum:=ceil(3/delx):
ynum:=ceil(3/dely):
xvals:=[seq(i*delx,i=0..xnum)]:
yvals:=[seq(i*dely,i=0..ynum)]:
columns:=[seq(seq(cuboid([xvals[i],yvals[j],0],[xvals[i+1],yvals[j+1],f(0.5*delx+xvals[i],0.5*dely+yvals[j])]),j=1..nops(yvals)-1),i=1..nops(xvals)-1)]:
frames:=[surface,seq(display(columns[1..4*k],surface,view=[0..3,0..3,0..9]), k=1..nops(columns)/4),display(columns,surface,view=[0..3,0..3,0..9])]:
display(frames,insequence=true,view=[0..3,0..3,0..9],title="Approximate Volume",titlefont=[TIMES,BOLD,14],labels=["x","y","z"],orientation=[40,68],color=grey);
approximate_volume:=add(add(f(0.5*delx+xvals[i],0.5*dely+yvals[j])*delx*dely,j=1..nops(yvals)-1), i=1..nops(xvals)-1);
computed_volume:=Int(Int(f(x,y),y=0..3),x=0..3)=evalf(int(int(f(x,y),y=0..3),x=0..3));

>