LemmaDerivation.mw
Shrinking Sphere Problem
Derivation of General Formula for Intersction of S and S_r,
and Its Projection from the Top of S_r onto the z=0 Plane
Douglas B. Meade
9 February 2007
> |
S := a -> (x-a)^2+y^2+z^2=a^2; # fixed surface |
> |
Sr := r -> x^2+y^2+z^2=r^2; # shrinking sphere |
> |
P := r -> [ 0, 0, r ]; # top of shrinking sphere |
> |
plotP := r -> plot3d( P(r), x=-1..1, y=-1..1, style=point, symbol=circle, symbolsize=10, color=blue ): |
> |
plotS := a -> implicitplot3d( S(a), x= 0..2*a, y=-a..a, z=-a..a,
color=pink, style=patchnogrid, transparency=0.8 ): |
> |
plotSr := r -> implicitplot3d( Sr(r), x=-r..r, y=-r..r, z=-r..r,
color=cyan, style=patchnogrid, transparency=0.8 ): |
> |
P1 := (r,a) -> display( [plotP(r),plotS(a),plotSr(r)],
axes=normal, labels=["x","y","z"], orientation=[45,60] ): |
The intersection between these two spheres is a circle, parallel to the x=0 plane.
> |
Intersection := [allvalues( solve( {S(a),Sr(r)}, {x,y,z} ) )] ; |
The two parts to this solution are the top and bottom of the circle.
> |
x1,r1 :=eval( [x, sqrt(y^2+z^2)], Intersection[1] )[]: |
> |
x2,r2 :=eval( [x, sqrt(y^2+z^2)], Intersection[2] )[]: |
> |
simplify( r1=r2 ) assuming r>0, a>0; |
This shows that Q is the circle
with
.
To construct the projection from the top of the shrinking sphere through Q onto the z=0 plane, parameterize the circle Q according to the angle made the positive y axis
> |
Q := unapply( [ x1, r1*cos(theta), r1*sin(theta) ], [theta,r,a] ): |
> |
plotQ := (r,a) -> spacecurve( Q(theta,r,a), theta=0..2*Pi,
color=gold, thickness=2 ): |
> |
P2 := (r,a) -> display( [plotP(r),plotS(a),plotSr(r),plotQ(r,a)],
axes=normal, labels=["x","y","z"], orientation=[45,60], scaling=constrained ):
|
For each angle theta, the lines passing through P and the point Q(theta) can be parameterized in terms of the (scaled) distance measured along this line.
> |
LinePQ := unapply( expand( (1-alpha)*P(r) + alpha*Q(theta,r,a) ), [alpha,theta,r,a] ); |
![proc (alpha, theta, r, a) options operator, arrow; [1/2*r^2*alpha/a, (-1/4*r^4/a^2+r^2)^(1/2)*cos(theta)*alpha, (-1/4*r^4/a^2+r^2)^(1/2)*sin(theta)*alpha+r-r*alpha] end proc](images/LemmaDerivation_9.gif)
The value of the parameter alpha when these lines hit the z=0 plane are given by
> |
alpha0 := unapply( [simplify( solve( LinePQ(alpha,theta,r,a)[3]=0, alpha ) ) assuming a>0, r>0][],
[theta,r,a] ); |
Thus, the parametric representation of of the projected curve, R, in the z=0 plane is
> |
R := unapply( [simplify( LinePQ(alpha0(theta,r,a),theta,r,a) ) assuming a>0, r>0][], [theta,r,a] ); |
This completes the constructions needed to put all of this together in one animation.
> |
plotR := (r,a) -> spacecurve( R(theta,r,a), theta=0..2*Pi, numpoints=201,
color=red, thickness=1 ): |
> |
P3 := (r,a) -> display( [P2(r,a),plotR(r,a)] ): |
> |
animQ := (r,a) -> animate( spacecurve, [LinePQ(alpha,theta,r,a), alpha=0..alpha0(theta,r,a)], theta=0..2*Pi,
color=blue, thickness=2, orientation=[45,60], background=P3(r,a),
scaling=constrained, frames=41 ): |
These plots already illustrate the rapid convergence of every point on the curves R - except the one on the x-axis - to the origin (as r->0). Let's look at the parametric form of R. The three components are:
> |
X,Y,Z := R(theta,r,a)[]:
x=X;
y=Y;
z=Z; |
Whenever
, these expression are not indeterminate (as r->0) and so
> |
map( limit, [X,Y,Z], r=0, right ); |
But, Maple misses the special case when
:
> |
eval( [X,Y,Z], theta=Pi/2 ); |
The remaining limit to be evaluated is the same one that was encountered in the Shrinking Circle Problem.
> |
map( limit, , r=0, right ) assuming a>0; |
These pointwise limits are nice, but they do no good in determining the limiting curve of the projected curves, R.
The graphical evidence suggests that the limiting curve could be a circle. If so, then the pointwise limits tell us the only possible circle will be the circle passing through both [0,0,0] and
and lying in the z=0 plane. That is,
,
. To confirm this, the first step is to verify for each positive value of r, the projected curve R is a circle:
> |
simplify( (X-2*a)^2 + Y^2 ); |
Now, as r shrinks to zero, the square of the radius clearly increases to
We close with a different animation that shows this convergence.
> |
to3d := transform( (x,y)->[x,y,0] ): |
> |
plotR0 := a -> to3d( implicitplot( (x-2*a)^2+y^2=4*a^2, x=0..4*a, y=-2*a..2*a, color=green ) ): |
> |
animR := a -> animate( P3, [1-r,a], r=0..1, frames=30, numpoints=401, paraminfo=false, background=plotR0(a) ): |