Chronology Current Month Current Thread Current Date
[Year List] [Month List (current year)] [Date Index] [Thread Index] [Thread Prev] [Thread Next] [Date Prev] [Date Next]

[Physltest] [Phys-L] Re: pulse on a vertical rope



Carl Mungan wrote:

Our equation is:

d^2y/dt^2 = gx*d^2y/dx^2 + g*dy/dx [1]

and we seek a traveling wave solution of the form:

y = sum_i {b_i f(k_i x) cos(w_i t)} [2]

where b_i is a generalized Fourier coefficient
(i=1,2,3,...). I am assuming the string starts
displaced and at rest, so I have dropped the
phase constants in the cosine.

The solution is Bessel's functions of zeroth order:

f(k_i x) = J0(sqrt[k_i x]) [3]

The equation is correct, but I hesitate to say the solution "is"
a Bessel function. Kissing cousin, yes, but that sqrt is important.

where k_i = 4*w_i*w_i/g. We fit to the boundary
values (node at the top end x=L), giving k_i =
N_i*N_i/L where N_i is the i-th zero of the
Bessel function (N_1 = 2.405, N_2 = 5.520, etc).

So now I can explicitly write out y(x,t) given
values for b_i. To be explicit, suppose I form a
small Gaussian pulse.

So far so good.

Now for the last step. While the pulse disperses
as it moves along the string, I can still
recognize a peak to the pulse, since I chose a
Gaussian.

Maybe.

How do I figure out the speed v of the pulse?

Good question. I don't have a very good answer, but here's the
best I can do (for now at least). To my mind, the fundamental
notion of a traveling wave is connected to the *first*-order
differential equation

(d/dt) phi = c (d/dx) phi [5]

which expresses rather directly that phi, whatever it is, moves
from one place to a neighboring place as time advances. That is,
a time-shift is c times a space-shift. (This equation is not to
be confused with the canonical wave equation, which is second-order.)

If equation [5] holds exactly (as it does for, say, light in
free space) it is usually easy to show that it holds. OTOH,
life is much harder when it holds only approximately, which is
the best we can hope for in the case of the vertical rope. You
can do some sort of overlap integral to show that there is a big
zeroth-order overlap between the time-shifted wave and the
space-shifted wave ... and then you get to try to figure out
what the higher-order correction terms mean, for instance they
might mean that the wave just shrinks in amplitude (as it must
for an outgoing expanding wave) and/or there could be dispersion
that smears out the wave packet, and/or there could be nonlinearity
that sharpens up the wave packet (up to and including forming a
shock).

In principle, I could just plot the above
solution in Mathematica and look at where the
peak is located for different instants in time.

That may be easier said than done, depending on how sharp
the initial Gaussian was, where it was located, now long
you want to follow it for, et cetera.

But is there an analytical way to get this? I'm
still assuming that in the end the answer will
come out to be approximately:

v = sqrt(gx). [4]

But I'd like to see this starting from [2] and improve on this approximation.

We agree that you can get [4] without bothering with [2] or [3]. We
also agree that it is acutely annoying that [4] suggests fairly well-behaved
waves, while the full equation of motion predicts nasty dispersion.

The closest I can come to reconciling the two approaches is to note that
[4] is an approximation that cannot possibly be valid within a wavelength
or so of the free end.

Earlier I wrote:

1) The whole discussion of dispersion relations and group velocity is
a bit fishy. The usual derivation that gives dw/dk as the group
velocity is predicated on the equation of motion being translationally
invariant ... which is not the case with the equations we have been
considering.

This stands in contrast to things like the waveguide equation, Schrödinger
equation, massive Klein-Gordon equation, etc., where the equation of motion
is translationally invariant, yet dispersive.

If the equation of motion is not translationally invariant, you have to
work pretty hard just to express elementary things like conservation of
wave-momentum.

... Can you help me fill in the details that lead from [1] to [4]?

Not much direct help, sorry.

But I can shed some more light on [1] through [3]. I cobbled up a little
perl program to carry out the generalized Fourier transform, including
doing the integrals to calculate the coefficients, then using the coefficients
to build the series that represents the chosen function. In the example,
I chose a square pulse.

Initially I had an initially-static square wavefunction, corresponding to
holding the rope in the chosen shape and just letting go. But this was
just too ugly. For one thing, the pulse immediately spread out and
split for reasons having nothing to do with dispersion, just simply
because the wave equation has left-running and right-running waves, and
the static shape projects onto both equally. So I went back and gave
it some upward velocity.

Giving it velocity means using more than just cos(w_i t) in the series.
You could use polar coordinates as Carl suggested, i.e. amplitude and
phase, but I prefer to use the phasor representation, i.e. sine terms
as well as cosine terms in the series. (The phasor representation is
linear, while polar coordinates require nonlinear things like arctangents.)

One thing I did do on purpose, to make it obvious that there's lots of
dispersion, was to start my square pulse at the free end. If the
pulse had started at the top end, where there's lots of tension,
it would have been much better behaved, especially at early times.

Take a look at the directory
http://www.av8n.com/physics/rope/

The files there include:
movie.gif -- a 200-frame movie, showing the evolution of the
wavefunction over time.
frame-1000.png -- the initial conditions, i.e. the first frame of
the movie.
six-components.png -- The lowest six eigenfunctions, scaled to unity
at the origin.
six-normalized.png -- The same six eigenfunctions, scale to have unit
norm.
rope -- The program that generated all of the above.

The program is 200+ lines of perl. Please don't give me grief about the
code. I know it's not well written and not well commented. It's stream
of semi-consciousness. I might clean it up some over the next few days.
I'm not sure why I wrote it in perl as opposed to C++, since for the same
cost as downloading the perl interpreter you can download a copy of Cygwin
and have a much more powerful environment. Programs this big and this
compute-intensive ought to be written in C++. "Experience allows you to
recognize a mistake when you've made it again."

The part of the code that you would have to change to implement a
Gaussian initial condition is the part that most needs to be thrown
out and redesigned.

Also note: when we talk about orthogonality: the functions [3] are
orthogonal under the elementary measure Integral...dx, in contrast
to actual Bessel functions, which are orthogonal under the "polar"
measure Integral... r dr -- as you can verify analytically by the
obvious change-of-variables in the orthogonality integral. I knew
this was going to happen, but I also wrote some code to verify it,
as a check on the correctness of my algorithms. Also the fact that
my computed coefficients correctly reconstruct the chosen square-wave
(with only a little high-frequency ringing) is a fairly powerful
validity check.
_______________________________________________
Phys-L mailing list
Phys-L@electron.physics.buffalo.edu
https://www.physics.buffalo.edu/mailman/listinfo/phys-l