Multivariable Continuity Greg Warrington - warrings@wfu.eduEvaluate the worksheet by selecting "Edit->Execute->Worksheet" from the menu above.This sheet contains several animations. Scroll down to each and read the accompanying explanatory text.restart: with(LinearAlgebra): with(plots): with(plottools): xlim := 1: ylim := 1: setoptions3d(font=[TIMES,BOLD,18],titlefont=[TIMES,BOLD,18]):nf := 20: getpt1 := proc(t,h) if (h < 1) then return [(1-t/nf),(1-t/nf)^2,0]; else return [(1-t/nf),(1-t/nf)^2, ((1-t/nf)^2 - (1-t/nf)^4)/((1-t/nf)^2 + (1-t/nf)^4)]; fi; end proc: getpt2 := proc(t,h) if (h < 1) then return [0,(1-t/nf),0]; else return [0,(1-t/nf),-1]; fi; end proc: getpt3 := proc(t,h) if (h < 1) then return [(1-t/nf)^2,(1-t/nf),0]; else return [(1-t/nf)^2,(1-t/nf),1/2]; fi; end proc: parab := spacecurve([t,t^2,0],t=-1..1,color=BLACK,thickness=2): vparab := spacecurve([t^2,t,0],t=-1..1,color=BLACK,thickness=2): cur1 := display([seq(sphere(getpt1(t,1),0.05,style=PATCHNOGRID,color=BLUE), t = 0..nf-1)],insequence=true): cur1shad := display([seq(sphere(getpt1(t,0),0.05,style=PATCHNOGRID,color=BLACK), t = 0..nf)],insequence=true): cur2 := display([seq(sphere(getpt2(t,1),0.05,style=PATCHNOGRID,color=BLUE), t = 0..nf)],insequence=true): cur2shad := display([seq(sphere(getpt2(t,0),0.05,style=PATCHNOGRID,color=BLACK), t = 0..nf)],insequence=true): cur3 := display([seq(sphere(getpt3(t,1),0.05,style=PATCHNOGRID,color=BLUE), t = 0..nf)],insequence=true): cur3shad := display([seq(sphere(getpt3(t,0),0.05,style=PATCHNOGRID,color=BLACK), t = 0..nf)],insequence=true): surf := plot3d((x^2-y^2)/(x^2 + y^2),x=-xlim..xlim,y=-xlim..xlim,style=PATCHNOGRID): xyp := plot3d(0,x=-xlim..xlim,y=-xlim..xlim,style=WIREFRAME,color=BLACK,grid=[10,10]): surf2 := plot3d(x*y^2/(x^2 + y^4),x=-xlim..xlim,y=-xlim..xlim,style=PATCHNOGRID): surf4 := plot3d(3*x^2*y/(x^2 + y^2),x=-xlim..xlim,y=-xlim..xlim,style=PATCHNOGRID):This animation shows what happens as you take the limit of a function of two variables along some curve C.The black parabola indicates the curve C. Click on the picture and then move the slider that appears above.The black dot moves along the curve and the blue dot indicates the value of the function that that point.In this case, the limit as (x,y) -> (0,0) is 1 (because that's the z value of the blue dot) even the the function starts acting very strangely near the origin.Compare what happens here to the example below.display({cur1,cur1shad,surf,xyp,parab},axes=BOXED);If we approach along positive y-axis, we get a limit of 0 as can be seen from this animation.display({cur2,cur2shad,surf,xyp},axes=BOXED);Here's another random example.display({cur3,cur3shad,surf2,xyp},axes=BOXED);This picture can be used to get a sense of why the definition of differentiability we use is a reasonable one.Roughly: the function is continuous if, for any requested height of the cylinder (myeps), you can make the cylinder thin enough (mydel) to ensure that the surface intersects the sides of the cylinder rather than the top or bottom. Of course, you also want the function to be continuous at the point in question.You can change the values of myeps and mydel below and then regenerate the plot (by pressing enter)to convince yourself that this function is continuous at the point lying at the center of the cylinder.myeps := 1/8: mydel := 1/8: mycyl := cylinder([0,0,-myeps], mydel, 2*myeps,transparency=0.9, thickness=1,style=LINE,color=black): ctop := cylinder([0,0,-myeps], mydel, 0.01,color=black,style=HIDDEN): cbot := cylinder([0,0,myeps], mydel, 0.01,color=black,style=HIDDEN): display({ctop,cbot,mycyl,surf4},axes=BOXED);I don't remember precisely what I wanted to say here, but it's a nice picture.plot3d(x^3*y^2/(1-x*y),x=-4..4,y=-4..4,numpoints=1000);