Constructing a Series Solution

We have just one condition left: u(r,0) = u0(r). Since our differential equation is linear, any linear combination of the solutions in the list from the previous section is also a solution.

solution = Apply[Plus,solutionList]

Suppose the initial displacement of the drum from equilibrium is

u0[r_] := r^2 - 1

Then our initial condition becomes

initialDisplacement =

(solution /. {t -> 0}) == u0[r]

The orthogonality relationship for the Bessel functions allows us to find the coefficients, c[i], using the integral formula,

coef = Table[2/BesselJ[1,j0zeroes[[i,1,2]]]^2 *

NIntegrate[r u0[r] BesselJ[0,j0zeroes[[i,1,2]] r],

{r,0,1}],

{i,Length[j0zeroes]}]

Substituting these coefficients into our solution,

seriesTerms = Table[

solutionList[[i]] /.{c[i] -> coef[[i]]},

{i,Length[j0zeroes]}]

These functions represent the fundamental tone and the first 3 overtones for the drum. Let's graph each of these for a radial slice of the drum.

tonePlot = 

Table[Plot[Evaluate[seriesTerms/.{c -> 1}], {r,0,1},

PlotRange -> {-1.2,1.2},

PlotStyle -> {RGBColor[0,0,0],RGBColor[1,0,0],

RGBColor[0,1,0],RGBColor[0,0,1]}],

{t, 0, 2.6, 0.2}];

Notice that the overtones are oscillating at a higher frequency than the fundamental tone. This is what causes the overtones to have a higher pitch. We can use Mathematica to play these tones as a function of t at r = 0. We need to change the value of c, say to c = 500, so that the frequencies will be within the audible range. Just double-click on the sound graphic to hear it play.

Here is the fundamental tone,

tone1 = seriesTerms[[1]]/.{c -> 500, r -> 0};

Play[tone1, {t,0,0.5}];

the first overtone,

tone2 = seriesTerms[[2]]/.{c -> 500, r -> 0};

Play[tone2, {t,0,0.5}];

the second overtone,

tone3 = seriesTerms[[3]]/.{c -> 500, r -> 0};

Play[tone3, {t,0,0.5}];

and the third overtone,

tone4 = seriesTerms[[4]]/.{c -> 500, r -> 0};

Play[tone4, {t,0,0.5}];

We add these components to get the final solution.

seriesSolution = Apply[Plus,seriesTerms]

Here is a graph of the four tones together for c = 1

seriesSolution1 = seriesSolution/.{c -> 1}

drumPlot =

Table[Plot[seriesSolution1, {r,0,1},

PlotRange -> {-1.3,1.3}],

{t, 0, 2.6, 0.2}];

and here is the sound for the four tones added together, with c = 500.

tone = seriesSolution/.{c -> 500, r -> 0};

Play[tone, {t,0,0.5}];

What! That doesn't sound like a drum! The problem is that drumheads are strongly damped and we did not include any damping in our model. The damped solution is shown below. Try playing this sound--feel free to stand up and march if you get the urge.

solutionListDamped = Thread[Times[Array[c,Length[j0zeroes]],

Exp[-a t] Cos[Sqrt[c^2 k^2 - a^2] t] BesselJ[0,k r] /.

j0zeroes]];

solutionDamped = Apply[Plus,solutionListDamped];

seriesTermsDamped = Table[

solutionListDamped[[i]] /.{c[i] -> coef[[i]]},

{i,Length[j0zeroes]}];

seriesSolutionDamped = Apply[Plus,seriesTermsDamped];

tone = seriesSolutionDamped/.{c -> 500, a -> 5, r -> 0};

Play[tone, {t,0,0.5}];

Of course, we cannot stop here. We are obliged to rotate this about the vertical axis and plot the actual drumhead.

Needs["Graphics`ParametricPlot3D`"]

Table[CylindricalPlot3D[seriesSolution1,{r,0,1},{theta,0,2 Pi},

PlotPoints->{10,10}, PlotRange -> {-1.2,1.2}],

{t,0,2.6,.2}];

The extra "wobble" that you see in the animation is due to the first overtone.

Go up to Vibrating Drumhead