4
$\begingroup$

I'm studying something through the video Volume of Surface of Revolution.

To be more exact, from the time 26:22 ...

enter image description here

I was able to define the analysis section:

f[x_] := x^2; g[x_] := 4 x;
Plot[{f[x], g[x]}, {x, 0, 4}, PlotTheme -> "Detailed",Filling -> {1 -> {2}}]

enter image description here

I made an attempt using the RevolutionPlot3D function. Which is not exactly what I want, because it did not generate me a solid.

RevolutionPlot3D[{f[x], g[x]}, {x, 0, 4}, {θ, 0, 2 π}, 
 PlotTheme -> "Detailed"]

enter image description here

I imagine the most appropriate function is RegionPlot3D, but I could not define the limits:

RegionPlot3D[
 x^2 + y^2 + z^2 >= x^2 && x^2 + y^2 + z^2 <= 4 x, {x, 0, 4}, {y, -16,
   16}, {z, -16, 16}, PlotTheme -> "Detailed", PlotPoints -> 20, 
 PlotRange -> All]

enter image description here

Finally, as the video instructed me, I was able to get the volume of the solid in question:

volume = N[Integrate[(16*x^2 - 4*x)*Pi, {x, 0, 4}]]

971.799

My question

How should I describe the RegionPlot3D function to get the correct graphic? And is it possible to get the volume of this solid using this function?

$\endgroup$
2
  • $\begingroup$ Related?: (8461). Perhaps useful?: (3051), (55847) $\endgroup$
    – Mr.Wizard
    Commented Jul 6, 2017 at 20:47
  • 1
    $\begingroup$ I thought it would be a duplicate, but I present two limiting functions. $\endgroup$
    – LCarvalho
    Commented Jul 6, 2017 at 21:42

3 Answers 3

4
$\begingroup$
f[x_] := x^2; g[x_] := 4 x;
reg = ImplicitRegion[{f[x]^2 <= y^2 + z^2 <= g[x]^2, 
   0 <= x <= 4}, {{x, 0, 4}, {y, -16, 16}, {z, -16, 16}}]
RegionPlot3D[
 f[x]^2 <= y^2 + z^2 <= g[x]^2 && 0 <= x <= 4, {x, 0, 4}, {y, -16, 
  16}, {z, -16, 16}, PlotPoints -> 100, BoxRatios -> Automatic, 
 Boxed -> False, Mesh -> None, Axes -> False, Background -> White]
Volume[reg]

enter image description here

(2048 π)/15

I have not independently confirmed volume

$\endgroup$
7
  • $\begingroup$ This matches (overlays with) the RevolutionPlot3D if I use {y, -16, 16}, {z, -16, 16}, {x, 0, 4} in RegionPlot3D. $\endgroup$
    – Mr.Wizard
    Commented Jul 7, 2017 at 6:10
  • $\begingroup$ @Mr.Wizard thanks...sorry for being lazy. I could have overlayed and used integration for volume but distracted at present. :) $\endgroup$
    – ubpdqn
    Commented Jul 7, 2017 at 6:12
  • $\begingroup$ I understand how that is. Since I had time I posted a wiki non-answer to illustrate. $\endgroup$
    – Mr.Wizard
    Commented Jul 7, 2017 at 6:27
  • $\begingroup$ @ubpdqn The function I was looking for was ImplicitRegion. I had forgotten this function. But even if I had remembered I could not structure it this way. $\endgroup$
    – LCarvalho
    Commented Jul 7, 2017 at 11:24
  • $\begingroup$ Only the resolution of the graphic is not very clear $\endgroup$
    – LCarvalho
    Commented Jul 7, 2017 at 11:31
5
$\begingroup$

Not an answer, just observations on previous ones. You can make a plot with a single RevolutionPlot3D call like this:

f[x_] := x^2; g[x_] := 4 x;

revPlot = 
  RevolutionPlot3D[{{g[x], x}, {f[x], x}}, {x, 0, 4}, {θ, 0, 2 π}
   , PlotTheme -> "Detailed"
   , BoxRatios -> {1, 1, .7}
   , Mesh -> {0, 12, 0}
   , PlotStyle -> {Opacity[.5], Automatic}
  ]

enter image description here

This matches up nicely with ubpdqn's region if we adjust his code slightly:

regPlot =
 RegionPlot3D[
   f[x]^2 <= y^2 + z^2 <= g[x]^2 && 0 <= x <= 4,
   {y, -16, 16}, {z, -16, 16}, {x, 0, 4}
   , PlotPoints -> 200
   , Mesh -> None
   , PlotStyle -> Red
 ];

Show[regPlot, revPlot]

enter image description here

$\endgroup$
3
$\begingroup$

If I were to interpret your question strictly, I would have no answer. But if I interpret your question as asking for good way to plot the surfaces such that the viewer of the plot can see the structure of the two surfaces, I have the following suggestion that presents the surfaces with a section and a slice cut out, which reveals the internal structure.

f[x_] := x^2
g[x_] := 4 x

{fplot, gplot} =
  MapThread[
    RevolutionPlot3D[#1, {t, 0, 4}, {θ, π/2, 2 π},
      PlotStyle -> {Opacity[.5], Lighter[#2, .25]},
      RevolutionAxis -> "X",
      Mesh -> {{1.8, 2.2}, 12, 12},
      MeshShading -> {{Automatic, None}},
      AxesLabel -> {x, y, z},
      BoxRatios -> {8, 10, 10}] &, {{f[t], g[t]}, {Red, Green}}]

Show[fplot, gplot]

view1

view2

$\endgroup$
1
  • $\begingroup$ Here is the answer from who watched the attached video $\endgroup$
    – LCarvalho
    Commented Jul 7, 2017 at 9:25

Not the answer you're looking for? Browse other questions tagged or ask your own question.