Oscilaciones forzadas en un sistema formado por partículas unidas por muelles (III)

Fuerza periódica

Con rozamiento

En la parte inferior de la figura, se muestran mediante vectores las fuerzas que actúan sobre cada una de las partículas, fijarse en aquellas que corresponden a las interacciones mutuas.

{ m 1 d 2 x 1 d t 2 = F 1 (t)+ k 2 ( x 2 x 1 )+ λ 2 ( v 2 v 1 ) k 1 x 1 λ 1 v 1 m 2 d 2 x 2 d t 2 = F 2 (t) k 2 ( x 2 x 1 ) λ 2 ( v 2 v 1 ) k 3 x 2 λ 3 v 2 { m 1 d 2 x 1 d t 2 +( λ 1 + λ 2 ) d x 1 dt λ 2 d x 2 dt +( k 1 + k 2 ) x 1 k 2 x 2 = F 1 (t) m 2 d 2 x 2 d t 2 λ 2 d x 1 dt +( λ 2 + λ 3 ) d x 2 dt k 2 x 1 +( k 2 + k 3 ) x 2 = F 2 (t)

En forma matricial escribimos

( m 1 0 0 m 2 )( d 2 x 1 d t 2 d 2 x 2 d t 2 )+( λ 1 + λ 2 λ 2 λ 2 λ 2 + λ 3 )( d x 1 dt d x 2 dt )+ ( k 1 + k 2 k 2 k 2 k 2 + k 3 )( x 1 x 2 )=( F 1 (t) F 2 (t) )

Donde M, C y K son las matrices simétricas masa, rozamiento y constantes de los muelles.

Calculamos los valores propios y los vectores propios de la matriz M-1·K.

>> [V,D]=eig(inv(M)*K)

La matriz diagonal D contiene en su diagonal principal los cuadrados de las frecuencias de los modos normales de vibración, ω1 y ω2.

Los vectores columna de la matriz V son los vectores propios correspondientes a cada uno de los valores propios. Modificamos la matriz V multiplicando cada vector propio por un factor de escala, de modo que se cumpla

M g = ( V ) T · M · V = ( 1 0 0 1 ) K g = ( V ) T · K · V = ( ω 1 2 0 0 ω 2 2 )

Definimos un espacio u(t) de modo que

x(t)=V·u(t) x ˙ (t)=V· u ˙ (t) x ¨ (t)=V· u ¨ (t)

La ecuación diferencial del movimiento en forma vectorial se transforma en

M·V· u ¨ (t)+CV· u ˙ (t)+KV·u(t)=F ( V ) T ·M·V· u ¨ (t)+ ( V ) T ·CV· u ˙ (t)+ ( V ) T ·KV·u(t)= ( V ) T ·F M g · u ¨ (t)+ C g · u ˙ (t)+ K g ·u(t)=f(t) M g =( 1 0 0 1 ) K g =( ω 1 2 0 0 ω 2 2 ) C g = ( V ) T ·CV

El problema que aparece ahora es que la matriz Cg habitualmente no es diagonal, con los cual no se pueden desacoplar las ecuaciones diferenciales del movimiento de las partículas.

Ejemplo

Continuando con el ejemplo del apartado anterior: Sea el sistema de dos partículas de masas m1=2 y m2=1, unidas por muelles de constantes k1=6, k2=3 y k3=0. Sobre la segunda partícula actúa una fuerza de la forma F2(t)=2·cos(ωf t), sobre la primera no actúa ninguna fuerza F1(t)=0. Los coeficientes de las fuerza de rozamiento son: λ1=λ2=1, λ3=0

( 2 0 0 1 )( d 2 x 1 d t 2 d 2 x 2 d t 2 )+( 2 1 1 1 )( d x 1 dt d x 2 dt )+( 9 3 3 6 )( x 1 x 2 ) =( 0 2·cos( ω f t) )

syms t wf;
M=sym([2,0;0,1]);
K=sym([9,-3;-3,3]);
C=sym([2,-1;-1,1]);
[V,D]=eig(inv(M)*K);
W=diag(sqrt(D)); %vector de las frecuencias propias
%calcula una nueva matriz V
for i=1:length(W)
    r=V(:,i)'*M*V(:,i);
    V(:,i)=V(:,i)/sqrt(r);
end

%comprobación
Mg=V'*M*V
Kg=V'*M*V
Cg=V'*C*V
%vector fuerza
F=sym([0;2*cos(wf*t)]);
f=V'*F

En la ventana de comandos vemos que Mg y Kg son matrices diagonales pero no lo es Cg

Mg =
[ 1, 0]
[ 0, 1]
Kg =
[ 3/2, 0]
[   0, 6]
Cg =
[       1/3, 2^(1/2)/6]
[ 2^(1/2)/6,       5/3]
f =
 (2*2^(1/2)*3^(1/2)*cos(t*wf))/3
         (2*3^(1/2)*cos(t*wf))/3
>> V
V = 
[ (2^(1/2)*3^(1/2))/6, -3^(1/2)/3]
[ (2^(1/2)*3^(1/2))/3,  3^(1/2)/3]

C g =( 1 3 2 6 2 6 5 3 )

La matriz Cg se diagonaliza mediante el procedimiento denominado balance de energía, que viene descrito en textos de Vibraciones Mecánicas.

C g =( c 1 0 0 c 2 ) c 1 = ( X 1 ) T ·C· X 1 ( X 1 ) T · X 1 c 2 = ( X 2 ) T ·C· X 2 ( X 2 ) T · X 2

donde X1 y X2 son los vectores columna de la matriz V de los vectores propios modificada, que hemos calculado anteriormente.

V = ( 6 6 3 3 6 3 3 3 )

>> V(:,1)'*C*V(:,1)/(V(:,1)'*V(:,1))
ans =2/5
>> V(:,2)'*C*V(:,2)/(V(:,2)'*V(:,2))
ans =5/2

Se ha hecho la matriz Cg diagonal

C g =( 2 5 0 0 5 2 )

Las nuevas ecuaciones diferenciales desacopladas en el espacio u son

d 2 u 1 d t 2 + 2 5 d u 1 dt + 3 2 u 1 = 2 6 3 cos( ω f t) d 2 u 2 d t 2 + 5 2 d u 2 dt +6 u 2 = 2 3 3 cos( ω f t)

Las condiciones iniciales en el espacio u se escriben en forma matricial

u ( 0 ) = ( V ) T · M · x ( 0 ) u ˙ ( 0 ) = ( V ) T · M · x ˙ ( 0 )

En el estado estacionario, la soluciones particulares de estas ecuaciones diferenciales tienen la forma

ui=Auicos(ωf t)+Buisin(ωf t), i=1,2

Obtendremos los valores de Aui y Bui haciendo que cumpla cada una de las ecuaciones diferenciales

A u1 = 2 6 3 ( 3 2 ω f 2 ) ( 3 2 ω f 2 ) 2 + ( 2 5 ω f ) 2 B u1 = 2 6 3 ( 2 5 ω f ) ( 3 2 ω f 2 ) 2 + ( 2 5 ω f ) 2 A u2 = 2 3 3 ( 6 ω f 2 ) ( 6 ω f 2 ) 2 + ( 5 2 ω f ) 2 B u2 = 2 3 3 ( 5 2 ω f ) ( 6 ω f 2 ) 2 + ( 5 2 ω f ) 2

Mediante la transformación x=V·u, obtenemos las posiciones x1(t) y x2(t) de cada una de las dos partículas en función del tiempo

xi=Axicos(ωf t)+Bxisin(ωf t), i=1,2

Amplitud de las oscilaciones en función de la frecuencia ωf

La amplitud Ai de la oscilación de cada una de las partículas es

A i = A xi 2 + B xi 2

Elaboramos un script que nos permita experimentar con distintos valores de los coeficientes de la fuerza de rozamiento λ1=λ2=c, λ3=0.

syms t wf c;
M=sym([2,0;0,1]);
K=sym([9,-3;-3,3]);
C=sym([2*c,-c;-c,c]);
C=subs(C,c,sym(0.1));

[V,D]=eig(inv(M)*K);
W=diag(sqrt(D)); %vector de frecuencias propias
%calcula una nueva matriz V
for i=1:length(W)
    r=V(:,i)'*M*V(:,i);
    V(:,i)=V(:,i)/sqrt(r);
end
%vector fuerza
F0=sym([0;2]);
f0=V'*F0;
n=length(M);
for i=1:n
    Cg(i,i)= V(:,i)'*C*V(:,i)/(V(:,i)'*V(:,i));
    A(i)=f0(i)*(D(i,i)-wf^2)/((D(i,i)-wf^2)^2+(Cg(i,i)*wf)^2);
    B(i)=f0(i)*Cg(i,i)*wf/((D(i,i)-wf^2)^2+(Cg(i,i)*wf)^2);
    %u(i)=A(i)*cos(wf*t)+B(i)*sin(wf*t);
end
Ax=V*[A',B'];

hold on
color=['b','r','g'];
for i=1:n
    modulo(i)=sqrt(dot(Ax(i,:),Ax(i,:)));
    h=ezplot(modulo(i),[0,3]);
    set(h,'color',color(i))
end
title('Amplitudes')
ylabel('A1,A2')
xlabel('\omega_f')
grid on
hold off

Por ejemplo para c=0.1 (figura más abajo) observamos dos picos, el primero muy agudo próximo a la frecuencia ω1=1.22 y otro muy pequeño próximo a la frecuencia ω2=2.45. Este segundo pico, desaparece cuando se incrementa el rozamiento, por ejemplo para c=1.

Para c=1

Se cambia la línea de código, C=subs(C,c,sym(1));

Posición de las partículas en función del tiempo

El siguiente script nos permite representar las posiciones x1(t) y x2(t) de cada una de las dos partículas en el estado estacionario en función del tiempo para una frecuencia de la fuerza oscilante ωf

syms t wf c;
M=sym([2,0;0,1]);
K=sym([9,-3;-3,3]);
C=sym([2*c,-c;-c,c]);
C=subs(C,c,sym(1)); %cambiar el rozamiento c

[V,D]=eig(inv(M)*K);
%calcula una nueva matriz V
for i=1:length(W)
    r=V(:,i)'*M*V(:,i);
    V(:,i)=V(:,i)/sqrt(r);
end
%vector fuerza
F0=sym([0;2]);
f0=V'*F0;

n=length(M);
for i=1:n
    Cg(i,i)= V(:,i)'*C*V(:,i)/(V(:,i)'*V(:,i));
    A(i)=f0(i)*(D(i,i)-wf^2)/((D(i,i)-wf^2)^2+(Cg(i,i)*wf)^2);
    B(i)=f0(i)*Cg(i,i)*wf/((D(i,i)-wf^2)^2+(Cg(i,i)*wf)^2);
    u(i)=A(i)*cos(wf*t)+B(i)*sin(wf*t);
end
x=V*u';

 %cambiar la frecuencia wf de la fuerza oscilante
 x=subs(x,wf,sym(sqrt(3/2)));
%representación gráfica
color=['b','r','g'];
hold on
for i=1:n
    h=ezplot(x(i),[0,12]);
    set(h,'color',color(i))
end
title('Dos osciladores acoplados, forzados')
ylabel('x1,x2')
xlabel('t')
grid on
hold off

Para la frecuencia ωf=ω1 y para c=1, obtenemos la siguiente representación gráfica

El estado transitorio y su evolución hacia el estado estacionario

En el siguiente script resolvemos la ecuación diferencial de cada oscilador en el espacio u, donde las ecuaciones diferenciales del movimiento de cada partícula están desacopladas, del mismo modo que se hizo para las oscilaciones forzadas.

d 2 y d t 2 +2g dy dt + ω 0 2 y= f ci cos( ω f t) y= u i ω 0 2 =D(i,i)2g= C g (i,i) f ci =f0(i) y 0 = u i (0) y ˙ (0)= u ˙ i (0)

El coeficiente de rozamiento se ha establecido en c=1, la frecuencia de la fuerza oscilante en ω f = ω 1 = 3 2

syms t wf c;
M=sym([2,0;0,1]);
K=sym([9,-3;-3,3]);
C=sym([2*c,-c;-c,c]);
C=subs(C,c,sym(1)); %cambiar el rozamiento c

[V,D]=eig(inv(M)*K);
W=diag(sqrt(D)); %vector de frecuencias propias
%calcula una nueva matriz V
for i=1:length(W)
    r=V(:,i)'*M*V(:,i);
    V(:,i)=V(:,i)/sqrt(r);
end
%la matriz C se hace diagonal
n=length(M);
for i=1:n
    Cg(i,i)= V(:,i)'*C*V(:,i)/(V(:,i)'*V(:,i));
end
%vector fuerza
F0=sym([0;2]);
f0=V'*F0;

%condiciones iniciales
x0=sym([0;0]);
xp0=sym([0;0]);
u0=V'*M*x0;
up0=V'*M*xp0;

%resuelve las ecuaciones diferenciales desacopladas
syms g fc w0 y0 v0;
eq='D2y+2*g*Dy+w0^2*y=fc*cos(wf*t)';
y=dsolve(eq,'y(0)=y0','Dy(0)=v0');
for i=1:n
    u(i)=subs(y,{g w0 fc y0 v0},{Cg(i,i)/2 W(i) f0(i) u0(i) up0(i)});
end
x=V*u';
%cambiar la frecuencia de la fuerza oscilante
x=subs(x,wf,sym('sqrt(3/2)')) 

%representación gráfica
color=['b','r','g'];
hold on
for i=1:n
    h=ezplot(x(i),[0,30]);
    set(h,'color',color(i))
end
title('Dos osciladores acoplados, forzados')
ylabel('x1,x2')
xlabel('t')
grid on
hold off

Resolución numérica de las ecuaciones del movimiento

Elaboramos el siguiente script para resolver el sistema de ecuaciones diferenciales que describe el movimiento de cada partícula, con las condiciones iniciales especificadas

d 2 x 1 d t 2 = ( λ 1 + λ 2 ) m 1 d x 1 dt + λ 2 m 1 d x 2 dt ( k 1 + k 2 ) m 1 x 1 + k 2 m 1 x 2 + F 1 (t) m 1 d 2 x 2 d t 2 = λ 2 m 2 d x 1 dt ( λ 2 + λ 3 ) m 2 d x 2 dt + k 2 m 2 x 1 ( k 2 + k 3 ) m 2 x 2 + F 2 (t) m 2 t=0{ x 1 =0 d x 1 dt =0 { x 2 =0 d x 2 dt =0

Sea el sistema de dos partículas de masas m1=2 y m2=1, unidas por muelles de constantes k1=6, k2=3 y k3=0. Los coeficientes de la fuerza de rozamiento λ1=λ2=c, λ3=0, con c=1. Se aconseja cambiar el valor de c y ver el efecto sobre el estado transitorio del oscilador. La frecuencia de la fuerza oscilante se ha establecido en ω f = ω 1 = 3 2 . Se aconseja cambiar este valor.

Para utilizar la función ode45 de MATLAB es necesario transformar el sistema de dos ecuaciones diferenciales de segundo orden en cuatro de primer orden, denominando x1=y1, dx1/dt=y2, x2=y3 y dx2/dt=y4

{ d y 1 dt = y 2 d y 2 dt = ( λ 1 + λ 2 ) m 1 y 2 + λ 2 m 1 y 4 ( k 1 + k 2 ) m 1 y 1 + k 2 m 1 y 3 + F 1 (t) m 1 d y 3 dt = y 4 d y 4 dt = λ 2 m 2 y 2 ( λ 2 + λ 3 ) m 2 y 4 + k 2 m 2 y 1 ( k 2 + k 3 ) m 2 y 3 + F 2 (t) m 2

En el script resolvemos el sistema de dos ecuaciones diferenciales de segundo orden, mediante la función ode45 de MATLAB

function acoplados_3
    y0=[0,0,0,0]; %condiciones iniciales
    tspan=[0,30];
    [t,y]=ode45(@modoamortiguada,tspan,y0);

    hold on
    plot(t,y(:,1),'b')
    plot(t,y(:,3),'r')
    hold off
    grid on
    xlabel('t')
    ylabel('x1,x2');
    title('osciladores acoplados, forzados')

    function f=modoamortiguada(t,y)
        m1=2;
        m2=1;
        k1=6;
        k2=3;
        k3=0;

        c=1;  %coeficiente de la fuerza de rozamiento
        c1=c;
        c2=c;
        c3=0;

        wf=sqrt(3/2); %frecuencia de la fuerza oscilante
        F2=2*cos(wf*t);
        F1=0;

        f=[y(2);(-(c1+c2)*y(2)+c2*y(4)-(k1+k2)*y(1)+k2*y(3)+F1)/m1;...
            y(4);(-(c2+c3)*y(4)+c2*y(2)-(k3+k2)*y(3)+k2*y(1)+F2)/m2];
    end

end

Obtenemos una gráfica similar a la figura anterior, aunque la amplitud final en el estado estacionario difiere un poco del calculado de modo exacto.

Referencia

Lecture 21: MODAL ANALYSIS OF UNDAMPED FORCED MDOF SYSTEMS