Diferencia entre revisiones de «Sistema resorte-masa (Grupo 8)»

De MateWiki
Saltar a: navegación, buscar
(Energía mecánica)
(Página blanqueada)
Línea 1: Línea 1:
Muchos modelos de vibraciones se modelizan con sistemas de
 
muelles y masas. Consideramos aquí un ejemplo simple formado por tres muelles y dos masas unidos
 
a dos paredes que se deslizan libremente sobre un plano horizontal, como se muestra en la figura:
 
  
                                      [[Archivo: Resortemasa.jpg]]
 
 
=='''Modelización del sistema de ecuaciones'''==
 
Modelizamos el sistema de ecuaciones diferenciales para el desplazamiento de ambas masas desde la posición de equilibrio. El sistema quedará en función de las posiciones de las masas, x1 y x2.
 
Suponemos que deslizan sobre una superficie horizontal y lisa, por lo que despreciamos la fuerza de rozamiento. Por tanto, las únicas fuerzas a tener en cuenta son las fuerzas que ejercen los muelles.
 
Según la Ley de Hooke, la fuerza ocasionada por un muelle es proporcional a su elongación.<br />
 
Así para nuestro sistema las fuerzas que actúan sobre la masa 1 son: :
 
<math> F1=-k1x1 </math> :
 
<math> F2=k2(x2-x1) </math>
 
Sobre la masa 2: :
 
<math> F3=-k2(x2-x1) </math> :
 
<math> F4=-k3x2 </math>
 
Donde k1, k2 y k3 son las constantes elásticas de cada muelle.
 
 
Aplicando la segunda ley de Newton, <math> F=mx'' </math>, nos queda un sistema de ecuaciones diferenciales de segundo orden:
 
<math> m1x1''=-k1x1+k2(x2-x1)</math>:
 
<math> m2x2''=-k2(x2-x1)-k3x2</math>
 
 
=='''Resolución del sistema'''==
 
Suponemos:<br />
 
* Las masas m1=2kg, m2=1kg.<br />
 
* Las constantes de los muelles k1=4N/m, k2=2N/m, k3=1N/m.<br />
 
* Las posiciones en el equilibrio x1=2, X2=4.
 
El sistema que se obtiene :
 
<math> x1''=-3x1+x2</math>:
 
<math> x2''=2x1-3x2</math>
 
===Supuesto 1===
 
Para t=0, se desplazan las masas 1 y 1,5 respectivamente y se sueltan repentinamente. Lo resolvemos mediante dos métodos.
 
====''Método de Newmark''====
 
{{matlab| codigo=
 
clear all
 
 
t0=0;
 
tN=10;
 
N=100;
 
h=(tN-t0)/N;
 
t=t0:h:tN;
 
 
beta=1/4;
 
gamma=1/2;
 
 
a1=-3; b1=0; c1=1; d1=0;
 
a2=2; b2=0; c2=-3; d2=0;
 
 
A=[0 1 0 0; 0 0 0 0; 0 0 0 1; 0 0 0 0 ];
 
B=[a1 b1 c1 d1; 0 0 0 0; a2 b2 c2 d2; 0 0 0 0];
 
C=[0 0 0 0; a1 b1 c1 d1; 0 0 0 0; a2 b2 c2 d2];
 
D=((h^2)*beta)*B+(h*gamma)*C;
 
F=eye(4)-D;
 
 
x10=1; z10=0; x20=1.5; z20=0;
 
X(:,1)=[x10; z10; x20; z20];
 
Y=X(:,1);
 
 
for n=1:N
 
  Y=(eye(4)+(h*A)+((h^2)*((1/2)-beta))*B+(h*(1-gamma))*C)*Y;
 
  X(:,n+1)=F\Y;
 
  Y=X(:,n+1);
 
end
 
 
%Solución real
 
Y1=1/2*[((3*sqrt(2)+4)/4)*cos(sqrt(3-sqrt(2))*t)-((3*sqrt(2)-4)/4)*cos(sqrt(3+sqrt(2))*t)];
 
Y2=((3*sqrt(2)+4)/(4*sqrt(2)))*cos(sqrt(3-sqrt(2))*t)+((3*sqrt(2)-4)/(4*sqrt(2)))*cos(sqrt(3+sqrt(2))*t);
 
 
%Representación gráfica
 
figure(1)
 
hold on
 
d=2+X(1,:);
 
e=4+X(3,:);
 
plot(d,t,'x')%Solución real
 
plot(e,t,'x')%Solución real
 
f=2+Y1;
 
g=4+Y2;
 
plot(f,t)%Solución aproximada
 
plot(g,t)%Solución aproximada
 
hold off
 
}}
 
 
Obtenemos la siguiente gráfica tiempo-posición:
 
 
[[Archivo:Newmark2.jpg]]
 
====''Método Runge-Kutta''====
 
Para aplicar el Método de Runge-Kutta es necesario descomponer el sistema en cuatro ecuaciones de primer orden:
 
<math> x1'=z1</math>:
 
<math>z1'=x1''=-3x1+x2</math>:
 
<math>x2'=z2</math>:
 
<math>z2'=x2''=2x1-3x2</math>
 
{{matlab|codigo=
 
clear all
 
 
t0=0;
 
tN=10;
 
N=100;
 
h=(tN-t0)/N;
 
t=t0:h:tN;
 
 
A=[0 1 0 0;-3 0 1 0;0 0 0 1;2 0 -3 0];
 
 
x01=1; z01=0; x02=1.5; z02=0;
 
x1(1)=x01; z1(1)=z01; x2(1)=x02; z2(1)=z02;
 
X=[x01;z01;x02;z02];
 
 
for n=1:N
 
k1=A*X;
 
k2=A*(X+1/2*h*k1);
 
k3=A*(X+1/2*h*k2);
 
k4=A*(X+h*k3);
 
X=X+h/6*(k1+2*k2+2*k3+k4);
 
x1(n+1)=X(1);
 
z1(n+1)=X(2);
 
x2(n+1)=X(3);
 
z2(n+1)=X(4);
 
end
 
 
%Solución real
 
Y1=1/2*[((3*sqrt(2)+4)/4)*cos(sqrt(3-sqrt(2))*t)-((3*sqrt(2)-4)/4)*cos(sqrt(3+sqrt(2))*t)];
 
Y2=((3*sqrt(2)+4)/(4*sqrt(2)))*cos(sqrt(3-sqrt(2))*t)+((3*sqrt(2)-4)/(4*sqrt(2)))*cos(sqrt(3+sqrt(2))*t);
 
 
%Representación gráfica
 
figure(1)
 
hold on
 
d=2+x1;
 
e=4+x2;
 
plot(d,t,'x')%Solución real
 
plot(e,t,'x')%Solución real
 
f=2+Y1;
 
g=4+Y2;
 
plot(f,t)%Solución aproximada
 
plot(g,t)%Solución aproximada
 
hold off
 
}}
 
Obtenemos la siguiente gráfica tiempo-posición:
 
 
[[Archivo:Rungekutta281.jpg ‎]]
 
 
====''Observaciones''====
 
Se observa que la gráfica es igual para ambos métodos. La diferencia a simple vista no se aprecia, pero Runge-Kutta es un método de cuarto orden y por tanto más preciso que el de Newmark, que es de segundo orden.
 
===Supuesto 2===
 
En este caso, partimos de las masas en la posición de equilibrio y con velocidad inicial v=1m/s en el mismo sentido. Aplicamos ambos métodos de la misma forma, sólo cambian las condiciones iniciales.
 
====''Método de Newmark''====
 
{{matlab|codigo=
 
clear all
 
 
t0=0;
 
tN=10;
 
N=100;
 
h=(tN-t0)/N;
 
t=t0:h:tN;
 
 
beta=1/4;
 
gamma=1/2;
 
 
a1=-3; b1=0; c1=1; d1=0;
 
a2=2; b2=0; c2=-3; d2=0;
 
 
A=[0 1 0 0; 0 0 0 0; 0 0 0 1; 0 0 0 0 ];
 
B=[a1 b1 c1 d1; 0 0 0 0; a2 b2 c2 d2; 0 0 0 0];
 
C=[0 0 0 0; a1 b1 c1 d1; 0 0 0 0; a2 b2 c2 d2];
 
D=((h^2)*beta)*B+(h*gamma)*C;
 
F=eye(4)-D;
 
 
x10=0; z10=1; x20=0; z20=1;
 
X(:,1)=[x10; z10; x20; z20];
 
Y=X(:,1);
 
 
for n=1:N
 
  Y=(eye(4)+(h*A)+((h^2)*((1/2)-beta))*B+(h*(1-gamma))*C)*Y;
 
  X(:,n+1)=F\Y;
 
  Y=X(:,n+1);
 
end
 
 
%Solución real
 
Y1=1/2*[((sqrt(2)+2)/(2*sqrt(3-sqrt(2))))*sin(sqrt(3-sqrt(2))*t)-((sqrt(2)-2)/(2*sqrt(3+sqrt(2))))*sin(sqrt(3+sqrt(2))*t)];
 
Y2=((sqrt(2)+2)/(2*sqrt(2)*sqrt(3-sqrt(2))))*sin(sqrt(3-sqrt(2))*t)+((sqrt(2)-2)/(2*sqrt(2)*sqrt(3+sqrt(2))))*sin(sqrt(3+sqrt(2))*t);
 
 
%Representación gráfica
 
figure(1)
 
hold on
 
d=2+X(1,:);
 
e=4+X(3,:);
 
plot(d,t,'x')%Solución real
 
plot(e,t,'x')%Solución real
 
f=2+Y1;
 
g=4+Y2;
 
plot(f,t)%Solución aproximada
 
plot(g,t)&Solución aproximada
 
hold off
 
}}
 
 
Obteniendo la gráfica tiempo-posición:
 
 
[[archivo: Newmark3a.jpg ]]
 
====''Método de Runge-Kutta''====
 
{{matlab| codigo=
 
clear all
 
 
t0=0;
 
tN=10;
 
N=100;
 
h=(tN-t0)/N;
 
t=t0:h:tN;
 
 
A=[0 1 0 0;-3 0 1 0;0 0 0 1;2 0 -3 0];
 
 
x01=0; z01=1; x02=0; z02=1;
 
x1(1)=x01; z1(1)=z01; x2(1)=x02; z2(1)=z02;
 
X=[x01;z01;x02;z02];
 
 
for n=1:N
 
k1=A*X;
 
k2=A*(X+1/2*h*k1);
 
k3=A*(X+1/2*h*k2);
 
k4=A*(X+h*k3);
 
X=X+h/6*(k1+2*k2+2*k3+k4);
 
x1(n+1)=X(1);
 
z1(n+1)=X(2);
 
x2(n+1)=X(3);
 
z2(n+1)=X(4);
 
end
 
 
%Solución real
 
Y1=1/2*[((sqrt(2)+2)/(2*sqrt(3-sqrt(2))))*sin(sqrt(3-sqrt(2))*t)-((sqrt(2)-2)/(2*sqrt(3+sqrt(2))))*sin(sqrt(3+sqrt(2))*t)];
 
Y2=((sqrt(2)+2)/(2*sqrt(2)*sqrt(3-sqrt(2))))*sin(sqrt(3-sqrt(2))*t)+((sqrt(2)-2)/(2*sqrt(2)*sqrt(3+sqrt(2))))*sin(sqrt(3+sqrt(2))*t);
 
 
%Representación gráfica
 
figure(1)
 
hold on
 
d=2+x1;
 
e=4+x2;
 
plot(d,t,'x')%Solución real
 
plot(e,t,'x')%Solución real
 
f=2+Y1;
 
g=4+Y2;
 
plot(f,t)%Solución aproximada
 
plot(g,t)%Solución aproximada
 
hold off
 
}}
 
 
Obteniendo la gráfica tiempo-posición:
 
 
[[archivo: Rungekutta3a8.jpg ]]
 
===Supuesto 3===
 
En este caso, partimos de las masas en la posición de equilibrio y con  velocidad inicial v=1m/s en sentidos opuestos. Aplicamos ambos métodos de la misma forma, sólo cambian las condiciones iniciales.
 
====''Método de Newmark''====
 
{{matlab|codigo=
 
clear all
 
 
t0=0;
 
tN=10;
 
N=100;
 
h=(tN-t0)/N;
 
t=t0:h:tN;
 
 
beta=1/4;
 
gamma=1/2;
 
 
a1=-3; b1=0; c1=1; d1=0;
 
a2=2; b2=0; c2=-3; d2=0;
 
A=[0 1 0 0; 0 0 0 0; 0 0 0 1; 0 0 0 0 ];
 
B=[a1 b1 c1 d1; 0 0 0 0; a2 b2 c2 d2; 0 0 0 0];
 
C=[0 0 0 0; a1 b1 c1 d1; 0 0 0 0; a2 b2 c2 d2];
 
D=((h^2)*beta)*B+(h*gamma)*C;
 
F=eye(4)-D;
 
 
x10=0; z10=1; x20=0; z20=-1;
 
X(:,1)=[x10; z10; x20; z20];
 
Y=X(:,1);
 
 
for n=1:N
 
  Y=(eye(4)+(h*A)+((h^2)*((1/2)-beta))*B+(h*(1-gamma))*C)*Y;
 
  X(:,n+1)=F\Y;
 
  Y=X(:,n+1);
 
end
 
 
%Solución real
 
Y1=1/2*[((-sqrt(2)+2)/(2*sqrt(3-sqrt(2))))*sin(sqrt(3-sqrt(2))*t)-((-sqrt(2)-2)/(2*sqrt(3+sqrt(2))))*sin(sqrt(3+sqrt(2))*t)];
 
Y2=((-sqrt(2)+2)/(2*sqrt(2)*sqrt(3-sqrt(2))))*sin(sqrt(3-sqrt(2))*t)+((-sqrt(2)-2)/(2*sqrt(2)*sqrt(3+sqrt(2))))*sin(sqrt(3+sqrt(2))*t);
 
 
%Representación gráfica
 
figure(1)
 
hold on
 
d=2+X(1,:);
 
e=4+X(3,:);
 
plot(d,t,'x')%Solución real
 
plot(e,t,'x')%Solución real
 
f=2+Y1;
 
g=4+Y2;
 
plot(f,t)%Solución aproximada
 
plot(g,t)%Solución aproximada
 
hold off
 
}}
 
 
Obteniendo la gráfica tiempo-posición:
 
 
[[archivo: Newmark3b.jpg ‎]]
 
====''Método de Runge-Kutta''====
 
{{matlab|codigo=
 
clear all
 
t0=0;
 
tN=10;
 
N=100;
 
h=(tN-t0)/N;
 
t=t0:h:tN;
 
 
A=[0 1 0 0;-3 0 1 0;0 0 0 1;2 0 -3 0];
 
 
x01=0; z01=1; x02=0; z02=-1;
 
x1(1)=x01; z1(1)=z01; x2(1)=x02; z2(1)=z02;
 
X=[x01;z01;x02;z02];
 
 
for n=1:N
 
k1=A*X;
 
k2=A*(X+1/2*h*k1);
 
k3=A*(X+1/2*h*k2);
 
k4=A*(X+h*k3);
 
X=X+h/6*(k1+2*k2+2*k3+k4);
 
x1(n+1)=X(1);
 
z1(n+1)=X(2);
 
x2(n+1)=X(3);
 
z2(n+1)=X(4);
 
end
 
 
%Solución real
 
Y1=1/2*[((-sqrt(2)+2)/(2*sqrt(3-sqrt(2))))*sin(sqrt(3-sqrt(2))*t)-((-sqrt(2)-2)/(2*sqrt(3+sqrt(2))))*sin(sqrt(3+sqrt(2))*t)];
 
Y2=((-sqrt(2)+2)/(2*sqrt(2)*sqrt(3-sqrt(2))))*sin(sqrt(3-sqrt(2))*t)+((-sqrt(2)-2)/(2*sqrt(2)*sqrt(3+sqrt(2))))*sin(sqrt(3+sqrt(2))*t);
 
 
%Representación gráfica
 
figure(1)
 
hold on
 
d=2+x1;
 
e=4+x2;
 
plot(d,t,'x')%Solución real
 
plot(e,t,'x')%Solución real
 
f=2+Y1;
 
g=4+Y2;
 
plot(f,t)%Solución aproximada
 
plot(g,t)%Solución aproximada
 
hold off
 
}}
 
 
Obteniendo la gráfica tiempo-posición:
 
 
[[archivo: Rungekutta3b8.jpg ]]
 
=='''Sistema de una masa'''==
 
Suponemos ahora que el sistema tiene una masa, es decir desenganchamos la masa 2 de manera que nos queda un muelle y una masa. Suponemos también que el sistema está sumergido en un medio viscoso que provoca un amortiguamiento proporcional a la velocidad de la masa con coeficiente c=1.
 
Modelizamos este sistema con los mismos parámetros para la masa y el muelle. Nos queda la ecuación:
 
<math>x''=-(1/2)x'-2x</math>
 
===''Método de Newmark''===
 
{{matlab|codigo=
 
clear all
 
 
t0=0;
 
tN=10;
 
N=1000;
 
h=(tN-t0)/N;
 
t=t0:h:tN;
 
 
beta=1/4;
 
gamma=1/2;
 
 
A=[1+2*h^2*beta h^2*beta/2; 2*gamma*h 1+gamma*h/2];
 
B=[1+h^2+2*h^2*beta h-(h^2)/4+(1/2)*h^2*beta; -2*h+2*gamma*h 1-h/2+gamma*h/2];
 
 
y0=0; z0=1;
 
y(1)=y0; z(1)=z0;
 
Y=[y(1);z(1)];
 
   
 
for n=1:N
 
    Y=A\(B*Y);
 
    y(n+1)=Y(1);
 
    z(n+1)=Y(2);
 
end
 
 
figure(1)
 
d=2+y;
 
plot(d,t);
 
hold on
 
}}
 
 
Obteniendo la gráfica tiempo-posición:
 
 
[[archivo: Newmark4.jpg ]]
 
===''Método de Runge-Kutta''===
 
Descomponemos la ecuación de segundo orden en dos ecuaciones de primer orden, quedando el sistema:
 
<math>x'=z</math>:
 
<math>z'=x''=-2x-(1/2)z</math>
 
{{matlab|codigo=
 
clear all
 
 
t0=0;
 
tN=10;
 
N=1000;
 
h=(tN-t0)/N;
 
t=t0:h:tN;
 
 
A=[0 1; -2 -1/2];
 
 
x01=0; z01=1;
 
x1(1)=x01; z1(1)=z01;
 
X=[x01;z01];
 
 
for n=1:N
 
k1=A*X;
 
k2=A*(X+1/2*h*k1);
 
k3=A*(X+1/2*h*k2);
 
k4=A*(X+h*k3);
 
X=X+h/6*(k1+2*k2+2*k3+k4);
 
x1(n+1)=X(1);
 
z1(n+1)=X(2);
 
end
 
 
figure(1)
 
hold on
 
d=2+x1;
 
plot(d,t)
 
hold off
 
}}
 
 
Obteniendo la gráfica tiempo-posición:
 
 
[[archivo:Rungekutta482.jpg ‎]]
 
 
===''Energía mecánica''===
 
Estudiamos ahora la evolución de la energía mecánica en el tiempo.
 
La fórmula general es:
 
<math> E=Ec+Ep=(1/2)mx'^2+(1/2)kx^2</math>
 
Particularizando en este caso:
 
<math>E=x'^2+2x^2=z^2+2x^2</math>
 
 
Utilizamos la solución del Runge-Kutta anterior y obtenemos la gráfica energía-tiempo en escala logarítmica:
 
 
[[archivo:Energia6585.jpg]]
 
 
Al incrementar el coeficiente de amortiguamiento "c", la energía decae más rápidamente. Esto se debe a que cuanto mayor es la viscosidad del medio, más rápido se disipa la energía, volviendo antes la masa a la posición de equilibrio.
 
 
<br />
 
 
--[[Usuario:Belen.jn|Belen.jn]] ([[Usuario discusión:Belen.jn|discusión]]) 14:45 4 mar 2013 (CET)
 

Revisión del 20:05 18 abr 2013