Modos de vibración de una membrana circular

Consideremos una membrana circular de radio a, que está fija por su borde. La ecuación del movimiento ondulatorio en coordenadas polares se escribe.

2 Ψ t 2 = c 2 ( 2 Ψ ρ 2 + 1 ρ Ψ ρ + 1 ρ 2 2 Ψ φ 2 )

Simetría radial

Estudiamos primero, el caso más sencillo, las soluciones Ψ(r,t)independientes del ángulo φ.

2 Ψ t 2 = c 2 ( 2 Ψ ρ 2 + 1 ρ Ψ ρ )

Condiciones iniciales y de contorno

Las condiciones de contorno son

Ψ(a,0)=0t0

Las condiciones iniciales son:

t=0{ Ψ(ρ,0)= Ψ 0 (ρ) Ψ(ρ,t) t | t=0 = Ψ ˙ 0 (ρ)

Modos de vibración

Aplicamos el procedimiento de separación de variables

Ψ(ρ,t)=R(ρ)·T(t)

Sustituimos en la ecuación diferencial

1 T(t) · d 2 T d t 2 = c 2 R(ρ) ( d 2 R d ρ 2 + 1 ρ dR dρ )

Como el miembro izquierdo depende solamente de t y el derecho solamente de ρ, entonces, igualamos ambos a una constante que denominaremos -ω2.

1 T(t) · d 2 T d t 2 = c 2 R(ρ) ( d 2 R d ρ 2 + 1 ρ dR dρ )= ω 2 { d 2 R d ρ 2 + 1 ρ dR dρ + ω c 2 2 R=0 d 2 T d t 2 + ω 2 T(t)=0

Definimos una nueva variable x=ω·ρ/c.

d 2 R d x 2 + 1 x dR dx +R=0 x 2 d 2 R d x 2 +x dR dx + x 2 R=0

Esta es la ecuación de Bessel de orden cero. La solución de esta ecuación es

R=C· J 0 (x)+D· Y 0 (x)

Como Y0(x) se hace infinito cuando s se aproxima a cero, el coeficiente D deberá ser cero.

R(ρ)= J 0 ( ω c ρ )

La condición de contorno implica que para todo t, Ψ(a,t)=0 por lo que R(a)=0. Las raíces de la ecuación

J0(α)=0 con α=ω·a/c.

son α1=2.405, α2=5.520, α3=8.654,.... Los sucesivos valores de α determinan las frecuencias ω1, ω2 .... ωn, de los distintos modos de vibración.

Representamos gráficamente J0(x)

>> x=linspace(0,20,200);
>> plot(x,besselj(0,x),'b')
>> xlabel('x')
>> ylabel('y')
>> title('Raíces de J_0')
>> grid on

Con la herramienta Data cursor, determinamos los valores aproximados de las raíces: 2.4, 5.5, 8.6, 11.8, 14.9...

La función raices calcula las raíces múltiples de la función f(x) buscando los intervalos en los que dicha función cambia de signo y utilizando la función MATLAB fzero para encontrarlas

function r = raices(f, x)
    y=f(x);
    indices=find(y(1:end-1).*y(2:end)<0);
    r=zeros(1,length(indices));
    for k=1:length(indices)
        r(k)=fzero(f, [x(indices(k)), x(indices(k)+1)]);
    end
end
>> x=linspace(0,20,20);
>> raices(@(x) besselj(0,x),x)
ans =    2.4048    5.5201    8.6537   11.7915   14.9309   18.0711

La diferencia entre dos raíces consecutivas se aproxima a π.

Representamos el tercer modo de vibración

%raíces
x=linspace(0,20,20);
f=@(x) besselj(0,x);
alfa=raices(f,x);

a=1; %radio de la membrana circular
r=0:0.01:1;
ang=0:pi/50:2*pi;
[r,ang]=meshgrid(r,ang);
x=r.*cos(ang);
y=r.*sin(ang);
z=besselj(0,alfa(3)*r/a); %tercer modo
surf(x,y,z)
xlabel('x')
ylabel('y')
zlabel('z')
title('Vibración de una membrana circular')

La solución de la ecuación diferencial dependiente del tiempo es tambien conocida

d 2 T d t 2 + ω 2 ·T=0 T n (t)= A n cos( ω n t)+ B n sin( ω n t)

La solución de la ecuación diferencial correspondiente al modo n de vibración de la membrana circular es

Ψ n (ρ,t)= R n (ρ) T n (t)= J 0 ( α n a ρ )( A n cos( ω n t)+ B n sin( ω n t) )

Solución completa

La solución general que satisface las condiciones de contorno es la superposición

Ψ(ρ,t)= n=1 Ψ n (ρ,t) = n=1 J 0 ( α n a ρ )( A n cos( ω n t)+ B n sin( ω n t) )

Esta ecuación describe todos los posibles modos de vibración de la membrana circular. La vibración particular que experimenta la membrana está únicamente determinada por las condiciones iniciales, que a su vez determinan los valores de las constantes An y Bn.

Ψ (ρ,0)= n=1 J 0 ( α n a ρ ) A n

Utilizamos las propiedades de las funciones de Bessel para calcular el coeficiente An

0 a ρ Ψ (ρ,0) J 0 ( α n a ρ )dρ= n=1 A n 0 a ρ J 0 ( α n a ρ ) J 0 ( α m a ρ )dρ 0 a ρ Ψ (ρ,0) J 0 ( α n a ρ )dρ= a 2 n=1 A n 0 1 u J 0 ( α n u ) J 0 ( α m u )du A n = 2 a 2 J 1 2 ( α n ) 0 a ρ Ψ (ρ,0) J 0 ( α n a ρ )dρn=1,2,3...

Téngase en cuenta que αn son las raíces de la ecuación J0(x)=0

Del mismo modo, procedemos para calcular los coeficientes Bn

Ψ(ρ,t) t | t=0 = n=1 J 0 ( α n a ρ ) ω n B n B n = 2 a 2 J 1 2 ( α n ) ω n 0 a ρ( Ψ(ρ,t) t | t=0 ) J 0 ( α n a ρ )dρn=1,2,3...

Condiciones iniciales, t=0

Consideremos una membrana de radio a, que en el instante inicial t=0, tiene la forma de paraboloide de revolución

Ψ (ρ,0)=A( 1 ρ 2 a 2 )

Representamos la superficie de revolución dada por la función z=1-x2/a2

a=1; %radio de la membrana
x=linspace(0, a, 50);
z=1-x.^2/a^2; 
[X,Y,Z]=cylinder(z);
mesh(X,Y,Z);
xlabel('X'); ylabel('Y'); zlabel('Z') 
title('Paraboloide')
view(110,40)

Como la membrana está en reposo en el instante t=0, los coeficientes Bn=0. Calculamos los coeficientes An

A n = 2 a 2 J 1 2 ( α n ) 0 a ρA( 1 ρ 2 a 2 ) J 0 ( α n a ρ )dρ n=1,2,3...

Teniendo en cuenta el resultado de las integrales

0 a x J 0 (x)·dx=a J 1 (a) 0 a x 3 J 0 (x)·dx=2 a 2 J 0 (a)+( a 3 4a ) J 1 (a)

>> syms x a;
>> int(besselj(0,x)*x,x,0,a)
ans =a*besselj(1, a)
>> int(besselj(0,x)*x^3,x,0,a)
ans =2*a^2*besselj(0, a) - 4*a*besselj(1, a) + a^3*besselj(1, a)

Llegamos al siguiente resultado

A n = 2A a 2 J 1 2 ( α n ) { 0 a ρ J 0 ( α n a ρ )dρ 1 a 2 0 a ρ 3 J 0 ( α n a ρ )dρ }= 2A a 2 J 1 2 ( α n ) { a 2 α n 2 x J 1 (x) | 0 α n 1 a 2 a 4 α n 4 ( 2 x 2 J 0 (x)+( x 3 4x ) J 1 (x) ) | 0 α n }= 2A a 2 J 1 2 ( α n ) { a 2 α n J 1 ( α n ) a 2 α n 4 ( 2 α n 2 J 0 ( α n )+( α n 3 4 α n ) J 1 ( α n ) ) }= 8A α n 3 J 1 ( α n )

Téngase en cuenta que αn son las raíces de la ecuación J0(x)=0

La solución de la ecuación diferencial del movimiento ondulatorio con las condiciones de contorno especificadas (bordes fijos) y la froma inicial de la membrana en reposo es

Ψ(ρ,t)=8A n=1 J 0 ( α n a ρ ) α n 3 J 1 ( α n ) cos( c α n a t )

Comprobamos que la forma inicial de la membrana se obtiene para t=0. Tomaremos varias raíces de la ecuación J0(α)=0

function membrana_4
    a=1; %radio de la membrana
    c=1; %velocidad de propagación
    t=0; %instante inicial
    %raíces
    x=linspace(0,20,20);
    f=@(x) besselj(0,x);
    alfa=raices(f,x);

    x=linspace(0, a, 50);
    z=onda(x);
    [X,Y,Z]=cylinder(z);
    mesh(X,Y,Z);
    xlabel('X'); ylabel('Y'); zlabel('Z') 
    title('Paraboloide')
    view(110,40)

    function z=onda(x)
        z=0;   
        for n=1:length(alfa)
            z=z+besselj(0,alfa(n)*x/a)*cos(c*alfa(n)*t/a)/
(alfa(n)^3*+besselj(1,alfa(n)));
        end
        z=z*8;
    end

    function r = raices(f, x)
        y=f(x);
        indices=find(y(1:end-1).*y(2:end)<0);
        r=zeros(1,length(indices));
        for k=1:length(indices)
            r(k)=fzero(f, [x(indices(k)), x(indices(k)+1)]);
        end
    end
end

Modos de vibración de una membrana circular (solución general)

Consideremos una membrana circular de radio a, que está fija por su borde. La ecuación del movimiento ondulatorio se escribe.

2 Ψ t 2 = c 2 ( 2 Ψ ρ 2 + 1 ρ Ψ ρ + 1 ρ 2 2 Ψ φ 2 )

Aplicamos el método de separación de variables y sustituimos en la ecuación diferencial

Ψ(ρ,t)=F(ρ,φ)·T(t) 1 T(t) · d 2 T d t 2 = c 2 F(ρ,φ) ( 2 F ρ 2 + 1 ρ F ρ + 1 ρ 2 2 F φ 2 )= ω 2

Como el miembro izquierdo depende solamente de t y el derecho solamente de r y φ, entonces, igualamos ambos a una constante que denominaremos -ω2.

{ 2 F ρ 2 + 1 ρ F ρ + 1 ρ 2 2 F φ 2 + ω 2 c 2 F=0 d 2 T d t 2 + ω 2 T(t)=0

Aplicamos el método de separación de variables a la primera ecuación diferencial

F(ρ,φ)=R(ρ)·Φ(φ) Φ(φ)( ρ 2 d 2 R d ρ 2 +ρ dR dρ )+R(ρ) d 2 Φ d φ 2 + ω 2 c 2 ρ 2 R(ρ)Φ(φ)=0 1 R(ρ) ( ρ 2 d 2 R d ρ 2 +ρ dR dρ + ω 2 c 2 ρ 2 R(ρ) )= 1 Φ(φ) d 2 Φ d φ 2 = m 2

Obteniendo el sistema de ecuaciones diferenciales

{ d 2 R d ρ 2 + 1 ρ dR dρ +( ω 2 c 2 m 2 ρ 2 )R=0 d 2 Φ d φ 2 + m 2 Φ=0

Multiplicamos la primera por ρ2 y hacemos el cambio de variable x=ρω/c. Obtenemos la ecuación de Bessel

x 2 d 2 y d x 2 +x dy dx +( x 2 m 2 )y=0 y=A J m (x)+B Y m (x)

La solución del sistema de dos ecuaciones diferenciales es

{ R(ρ)= C ρ J m ( ω c ρ )+ D ρ Y m ( ω c ρ ) Φ(φ)= C φ cos(mφ)+ D φ sin(mφ)

Donde m es un número entero m=0,1,2,3...

Como Y(ρ) se hace infinito cuando ρ se aproxima a cero, el coeficiente Dρ deberá ser cero, como en el caso anterior.

Representamos las primeras funciones Jm(x), para m=0,1,2,3

hold on
for m=0:3
    fplot(@(x) besselj(m,x),[0,20],'displayName',num2str(m))
end
hold off
xlabel('x')
ylabel('y')
title('J_m')
legend('-DynamicLegend','location','Best')
grid on

Como la función radial R(r) se hace cero cuando r=a en el borde de la membrana circular. Calculamos las raíces de 1,2,3...n de la función Jm(x) que denominaremos αm,n, Los sucesivos valores de α·R/c determinan las frecuencias ωm1, ωm2 .... ωmn, de los distintos modos de vibración.

x=linspace(0,20,20);
for m=0:3;
    alfa=raices(@(x) besselj(m,x),x);
    disp([m,alfa])
end
    0         2.4048    5.5201    8.6537   11.7915   14.9309   18.0711
    1.0000    3.8317    7.0156   10.1735   13.3237   16.4706   19.6159
    2.0000    5.1356    8.4172   11.6198   14.7960   17.9598
    3.0000    6.3802    9.7610   13.0152   16.2235   19.4094

Las primeras raíces de las funciones de Bessel Jm(x) son

J0(x) J1(x) J2(x)
2.4048 3.8317 5.1356
5.5201 7.0156 8.4172
8.6537 10.1735 11.6198
11.7915 13.3237 14.7960
14.9309 16.4706 17.9598
18.0711 19.6159 21.1170

El modo de vibración m,n se describe por la función

Ψ m,n (ρ,φ,t)= J m ( α m,n ρ R )·( C n cos(mφ)+ D n sin(mφ) )·( A n cos( ω m,n t)+ B n sin( ω m,n t) ) m=0,1,2,...n=1,2,3...

Los primeros modos de vibración de una membrana circular. Las líneas en color rojo señalan los nodos, los puntos de la membrana que no vibran para un modo particular. Más abajo, veremos la representación en 3D de los distintos modos (m,n) de vibración

Los nodos corresponden a las raíces de la ecuación

J m ( α m,n ρ a )=0

Consideremos el caso n=2. Supongamos que hemos calculado las raíces (véase la tabla más arriba) α01=5.5201 (segunda raíz de J0(x)), α11=7.0156 (segunda raíz de J1(x)), α21=8.4172 (segunda raíz de J2(x))

alfa=[5.5201,7.0156,8.4172];
for m=0:2
    f=@(x) besselj(m,alfa(m+1)*x);
    r=fzero(f, 0.5);
    disp(r)
end

Radios ρ/a de los nodos

    0.4356
    0.5462
    0.6101

Consideremos el caso n=3. Supongamos que hemos calculado las raíces (véase la tabla más arriba) α02=8.6537 (tercera raíz de J0(x)), α12=10.1735 (tercera raíz de J1(x)), α22=11.6198 (tercera raíz de J2(x))

alfa=[8.6537,10.1735,11.6198];
for m=0:2
    f=@(x) besselj(m,alfa(m+1)*x);
    r1=fzero(f, 0.2);
    r2=fzero(f, 0.8);
    disp([r1,r2])
end

Radios ρ/a de los nodos

    0.2779    0.6379
    0.3766    0.6896
    0.4420    0.7244

Representamos el modo de vibración de la membrana circular, para m=1 y para n=3, tercera raíz de J1(x)

Ψ m,n (ρ,φ,t)= J m ( α m,n ρ a )·cos(mφ)·cos( ω m,n t)

La función seno se podría poner en vez de coseno.

alpha=10.1735; % raiz n=3 de J1(x) 
R=1; %radio de la membrana circular
r=0:0.01:R;
ang=0:pi/50:2*pi;
[r,ang]=meshgrid(r,ang);
x=r.*cos(ang);
y=r.*sin(ang);
fichero = 'placa_c.gif';
P=1;
m=1; %modo de vibración
n=3;
for t=0:P/20:P
    z = besselj(m,alpha*r/R).*cos(m*ang)*cos(2*pi*t/P);
    surf(x,y,z)
    xlabel('x')
    ylabel('y')
    zlabel('z')
    title('Vibración de una membrana circular')
    axis([-1 1 -1 1 -1 1]);
    
    frame=getframe;
    im = frame2im(frame);
    [imind,cm] = rgb2ind(im,256);
    if t==0
        imwrite(imind,cm,fichero,'gif','DelayTime',0,'loopcount',inf);
    else
        imwrite(imind,cm,fichero,'gif','DelayTime',0,'writemode','append');
    end
end

Modos de vibración de un anillo

Supongamos una membrana en forma de anillo de radio exterior a y radio interior b

Partimos de la solución de las dos ecuaciones diferenciales, que hemos deducido en el apartado titulado 'Modos de vibración de una membrana circular (solución general)'

{ R(ρ)= C ρ J m ( ω c ρ )+ D ρ Y m ( ω c ρ ) Φ(φ)= C φ cos(mφ)+ D φ sin(mφ)

La función R(r) se tiene que hacer cero para ρ=a y para ρ=b. Obtenemos un sistema homogéneo de dos ecuaciones con dos incógnitas C y D.

{ C J m ( ω c a )+D Y m ( ω c a )=0 C J m ( ω c b )+D Y m ( ω c b )=0

Despejamos C en la primera ecuación y lo sustituimos en la segunda, obteniendo una ecuación trascendente en x=ω/c

J m ( ω c a ) Y m ( ω c b ) Y m ( ω c a ) J m ( ω c b )=0

a=4; %radios
b=2;
x=linspace(0,10,20);
for m=0:3;
    f=@(x) bessely(m,x*b).*besselj(m,x*a)-besselj(m,x*b).*bessely(m,x*a);
    k=raices(f,x);
    disp([m,k])
end
         0    1.5615    3.1367    4.7091    6.2807    7.8520    9.4231
    1.0000    1.5983    3.1562    4.7222    6.2906    7.8599    9.4297
    2.0000    1.7035    3.2139    4.7614    6.3202    7.8837    9.4496
    3.0000    1.8644    3.3080    4.8261    6.3692    7.9231    9.4825

La solución R(ρ) es

R mn (ρ)= Y m ( ω mn c b ) J m ( ω mn c ρ ) J m ( ω mn c b ) Y m ( ω c ρ )

Comprobamos que cumple R(a)=0 y R(b)=0.

La solución completa es similar a la membrana circular, excepto en la parte radial, que ya hemos determinado

Ψ m,n (ρ,φ,t)={ Y m ( ω mn c b ) J m ( ω mn c ρ ) J m ( ω mn c b ) Y m ( ω c ρ ) }· ( C n cos(mφ)+ D n sin(mφ))·( A n cos( ω m,n t)+ B n sin( ω m,n t)) m=0,1,2,...n=1,2,3...

Representamos el modo de vibración de la membrana, para m=1 y para n=3, la raíz de la ecuación transcendente es ω13/c=4.7222 (segunda fila, cuarta columna de la tabla)

Ψ m,n (ρ,φ,t)={ Y m ( ω mn c b ) J m ( ω mn c ρ ) J m ( ω mn c b ) Y m ( ω c ρ ) }·cos(mφ)·cos( ω m,n t)

alfa=4.722232462741136;  
a=4; %radios del anillo circular
b=2;
r=b:0.01:a;
ang=0:pi/50:2*pi;
[r,ang]=meshgrid(r,ang);
x=r.*cos(ang);
y=r.*sin(ang);
fichero = 'anillo_c.gif';
P=1;
m=1; %modo de vibración
n=3;
for t=0:P/20:P
    z = (bessely(m,alfa*b)*besselj(m,alfa*r)-besselj(m,alfa*b)*bessely(m,alfa*r))
.*cos(m*ang)*cos(2*pi*t/P);
    surf(x,y,z)
    xlabel('x')
    ylabel('y')
    zlabel('z')
    title('Vibración de anillo circular')
     
    frame=getframe;
    im = frame2im(frame);
    [imind,cm] = rgb2ind(im,256);
    if t==0
        imwrite(imind,cm,fichero,'gif','DelayTime',0,'loopcount',inf);
    else
        imwrite(imind,cm,fichero,'gif','DelayTime',0,'writemode','append');
    end
end

Referencias

M. M. Smirnov. Problemas de ecuaciones de la física matemática. Editorial Mir Moscú. 1976. Problema 113, enunciado, pág. 39, solución, págs. 105