Modos de vibración de una membrana rectangular
Vamos a estudiar las oscilaciones transversales de una membrana rectangular de lados a y b.
La ecuación diferencial del movimiento ondulatorio es
Condiciones iniciales y de contorno
Con las siguientes condiciones iniciales:
y de contorno:
La deformación Ψ(x,y,t) de la membrana en su contorno es nula para cualquier instante t
Modos de vibración
Supondremos que la solución de la ecuación diferencial del movimiento ondulatorio se puede expresar como producto
Introducciendo Ψ(x,y,t) en la ecuación diferencial del movimiento ondulatorio
Como el miembro izquierdo depende solamente de t y el derecho solamente de x e y, entonces, igualamos ambos a una constante que denominaremos -ω2.
Aplicamos el método de separación de variables a la segunda ecuación diferencial
Dividimos entre el producto H·W.
Como el miembro izquierdo depende solamente de x y el derecho solamente de y, entonces, igualamos ambos a una constante que denominaremos -q2.
Las dos ecuaciones diferenciales tienen soluciones conocidas
Las condiciones de contorno imponen que los cuatro lados de la membrana estén fijos en todo momento:
Para cada par de valores m y n tenemos la frecuencia del modo de vibración ωm,n
Los primeros modos de vibración de una membrana rectangular. 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
m=2; %modo de vibración m,n n=1; %Dimensiones de la placa rectangular a=1, b=1 [x,y] = meshgrid(0:0.01:1); z = sin(m*pi*x).*sin(n*pi*y); surf(x,y,z) xlabel('x') ylabel('y') zlabel('z') title('Modos de vibración de una membrana rectangular')
La solución de la ecuación diferencial dependiente del tiempo es tambien conocida
La solución de la ecuación diferencial correspondiente al modo m, n de vibración de la membrana es
En este script cremos una animación. Cada imagen generada (frame) se guarda en el vector F.
m=2; %modo de vibración m,n n=1; [x,y] = meshgrid(0:0.01:1); j=0; P=2/sqrt(m^2+n^2); %periodo de las oscilaciones for t=0:P/20:P z = sin(m*pi*x).*sin(n*pi*y)*sin(2*pi*t/P); surf(x,y,z) xlabel('x') ylabel('y') zlabel('z') axis([0 1 0 1 -1 1]); j=j+1; F(j) = getframe; end
Mediante el comando movie reproducimos la animación cuatro veces.
>> movie(F,4)
Alternativamente, podemos crear un fichero de imágenes GIF que muestran una animación
m=2; %modo de vibración m,n n=1; [x,y] = meshgrid(0:0.01:1); P=2/sqrt(m^2+n^2); %periodo de las oscilaciones fichero = 'placa_r.gif'; for t=0:P/20:P z = sin(m*pi*x).*sin(n*pi*y)*sin(2*pi*t/P); surf(x,y,z) xlabel('x') ylabel('y') zlabel('z') axis([0 1 0 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
Solución completa
La solución general que satisface las condiciones de contorno es la superposición
Esta ecuación describe todos los posibles modos de vibración de la membrana. 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 Amn y Bmn.
Consideremos una membrana cuadrada de lado a, que en el instante inicial t=0, tiene la forma
Representamos la función z=xy(a-x)(a-y)
a=1; %lado del cuadrado x=0:0.02:a; y=0:0.02:a; [X,Y]=meshgrid(x,y); Z=(X.*Y).*((a-X).*(a-Y)); mesh(X,Y,Z); xlabel('X') ylabel('Y') zlabel('Z') view(60,64)
Como la membrana está en reposo en el instante t=0, los coeficientes Bmn=0. Calculamos los coeficientes Amn
Integramos por partes
Evaluamos la integral entre los límites, superior a e inferior 0
Los coeficientes Amn valen
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
Comprobamos que la forma inicial de la membrana se obtiene para t=0. Tomaremos n, m=10 términos del desarrollo en serie
function membrana_1 a=1; %membrana cuadrada c=1; %velocidad ondas t=0; %forma inicial de la membrana x=0:0.02:a; y=0:0.02:a; [X,Y]=meshgrid(x,y); Z=onda(X,Y); mesh(X,Y,Z); xlabel('X') ylabel('Y') zlabel('Z') view(60,64) function z=onda(x,y) z=0; for n=0:10 for m=0:10 z=z+sin((2*m+1)*x*pi/a).*sin((2*n+1)*y*pi/a)* cos(c*pi*t*sqrt((2*m+1)^2+(2*n+1)^2)/a)/((2*m+1)^3*(2*n+1)^3); end end z=z*64*a^4/pi^6; end end
La frecuencia angular mínima , para n, m=0, el periodo máximo es 2π/ω00. Creamos un fichero GIF para producir una animación de la vibración de la membrana durante este tiempo
function membrana_2 a=1; %membrana cuadrada c=1; %velocidad ondas tFin=sqrt(2); %tiempo final x=0:0.02:a; y=0:0.02:a; [X,Y]=meshgrid(x,y); fichero = 'placa_t.gif'; for t=0:0.1:tFin z=onda(X,Y, t); surf(x,y,z) xlabel('x') ylabel('y') zlabel('z') axis([0 1 0 1 -0.065 0.065]); frame=getframe; im = frame2im(frame); [imind,cm] = rgb2ind(im,256); if t==0 imwrite(imind,cm,fichero,'gif','DelayTime',0,'loopcount',tFin); else imwrite(imind,cm,fichero,'gif','DelayTime',0,'writemode','append'); end end function z=onda(x,y, t) z=0; for n=0:10 for m=0:10 z=z+sin((2*m+1)*x*pi/a).*sin((2*n+1)*y*pi/a)* cos(c*pi*t*sqrt((2*m+1)^2+(2*n+1)^2)/a)/((2*m+1)^3*(2*n+1)^3); end end z=z*64*a^4/pi^6; end end
Referencias
M. M. Smirnov. problemas de ecuaciones de la física matemática. Editorial Mir Moscú. 1976. Problema 122, enunciado, pág. 41, solución, pág. 111