Vases in Calculus

Helmut Knaust, Department of Mathematical Sciences, UTEP, El Paso TX 79968
hknaust@utep.edu
01/23/2012

Preparations

A vase of height 30 cm is filled with water in 5 seconds at a constant flow rate.

t denotes time (in sec), d(t) is the depth of the water (in cm) after t seconds.

Different values for b yield different vase shapes. Pick b between 0 and 3.

b=2.2;
f[x_]=(800+Integrate[b(x-7)(x-23),x]);
vol=Integrate[f[x]^2,{x,0,30}];
pic1=RevolutionPlot3D[{f[x],0,x},{x,0,30},Mesh->None,PlotRange->All,BoxRatios->{1,1,1.25},Boxed->False,Axes->{False,False,False},PlotStyle->Directive[Red,Opacity[.3]]];
pic2=Graphics3D[{Red,Opacity[.3],EdgeForm[None],Cylinder[{{0,0,0},{0,0,.011}},f[0]]}];
vase=Show[{pic1,pic2}];Off[Solve::ratnz];
sols=Solve[vol t/5==Integrate[f[x]^2,{x,0,d}],d];
d[t_]=sols[[1,1,2]];
gra=Plot[d[t],{t,0,5},BaseStyle->{Bold,16},PlotStyle->{Thick,Blue},AxesLabel->{"t","d(t)"},Epilog->{Dashed,Line[{{4,0},{4,d[4]},{0,d[4]}}]}];
GraphicsGrid[{{vase,gra}},ImageSize->700]

First Animation: Vases of Different Shapes

mov[b_]:=(f[x_]=(800+Integrate[b(x-7)(x-23),x]);
vol=Integrate[f[x]^2,{x,0,30}];
pic1=RevolutionPlot3D[{f[x],0,x},{x,0,30},Mesh->None,PlotRange->All,BoxRatios->{1,1,1.25},Boxed->False,Axes->{False,False,False},PerformanceGoal->"Quality",PlotStyle->Directive[Red,Opacity[.3]]];
pic2=Graphics3D[{Red,Opacity[.3],EdgeForm[None],Cylinder[{{0,0,0},{0,0,.011}},f[0]]}];
vase=Show[{pic1,pic2}];Off[Solve::ratnz];
sols=Solve[vol t/5==Integrate[f[x]^2,{x,0,d}],d];
d[t_]=sols[[1,1,2]];
gra=Plot[d[t],{t,0,5},BaseStyle->{Bold,16},PlotStyle->{Thick,Blue},AxesLabel->{"t","d(t)"},Epilog->{Dashed,Line[{{4,0},{4,d[4]},{0,d[4]}}]}];
GraphicsGrid[{{vase,gra}},ImageSize->640])

A sample frame:

mov[1.]

SetDirectory[NotebookDirectory[]]
Export["vases.swf",Table[mov[b],{b,0,3,.025}],"FrameRate"->18,"RepeatAnimation"->False]

Second Animation: Water Is Poured Into a Vase

mv2[b_]:=(f[x_]=(800+Integrate[1.9(x-7)(x-23),x]);
vol=Integrate[f[x]^2,{x,0,30}];Off[Solve::ratnz];
sols=Solve[vol t/5==Integrate[f[x]^2,{x,0,d}],d];
d[t_]=sols[[1,1,2]];
pic1a=RevolutionPlot3D[{f[x],0,x},{x,0,d[b]},Mesh->None,PlotRange->All,BoxRatios->{1,1,1.25},Boxed->False,Axes->{False,False,False},PerformanceGoal->"Quality",PlotStyle->Directive[Blue,Opacity[.99]]];
pic1b=RevolutionPlot3D[{f[x],0,x},{x,d[b],30},Mesh->None,PlotRange->All,BoxRatios->{1,1,1.25},Boxed->False,Axes->{False,False,False},PerformanceGoal->"Quality",PlotStyle->Directive[Red,Opacity[.3]]];
pic1c=Graphics3D[{Blue,Opacity[.99],EdgeForm[None],Cylinder[{{0,0,d[b]},{0,0,d[b]+.011}},f[d[b]]]}];
pic2=Graphics3D[{Red,Opacity[.3],EdgeForm[None],Cylinder[{{0,0,0},{0,0,.011}},f[0]]}];
vase=Show[{pic1b,pic1a,pic1c},ImageSize->320,BaseStyle->{14,Bold},ViewPoint->Front,PlotLabel->Row[{NumberForm[b,{3,1}]," sec"}]])

mv2[2]

Export["vase.swf",Table[mv2[b],{b,5/90.,5,5/90.}],"FrameRate"->18,"RepeatAnimation"->False]