simulacion en matlab

12
1 INSTITUTO DE CIENCIAS FISICAS MAESTRÍA EN ENSEÑANZA DE LA FÍSICA FISICA COMPUTACIONAL PROYECTO FINAL David Anzules I. Jose diaz S.

Upload: orlandodiaz11

Post on 13-Jul-2015

1.117 views

Category:

Education


1 download

TRANSCRIPT

Page 1: SIMULACION EN MATLAB

1

INSTITUTO DE CIENCIAS FISICAS

MAESTRÍA EN ENSEÑANZA DE LA FÍSICA

FISICA COMPUTACIONAL

PROYECTO FINAL

David Anzules I. Jose diaz S.

Page 2: SIMULACION EN MATLAB

2

CHOQUE ELASTICO UNIDIMENSIONAL

Es una colisión frontal, es decir, que todo el movimiento es a lo largo de una línea entre dos o más cuerpos en la que éstos no sufren deformaciones permanentes durante el impacto. En una colisión elástica se conservan tanto el momento lineal como la energía cinética del sistema, y no hay intercambio de masa entre los cuerpos, que se separan después del choque

Las dos partículas colisionan de

frente, y abandonan el punto de

colisión con velocidades diferentes

Page 3: SIMULACION EN MATLAB

3

CHOQUE RECTILINEO ELASTICOUna canica de 10.0 g se desliza a la izquierda a 0.400 m/s sobre una acera horizontal deNueva York cubierta de hielo y sin fricción, y tiene un choque elástico de frente con unacanica de 30.0 g que se desliza a la derecha a 0.200 m/s (figura 8.38).

a) Determine la velocidad (magnitud y dirección) de cada canica después del choque.(Puesto que el choque es de frente, los movimientos son en una línea.)

b) Calcule el cambio en el momento lineal (es decir, el momento lineal después del choquemenos el momento lineal antes del choque) para cada canica. Compare los valoresobtenidos.

c) Calcule el cambio de energía cinética (es decir, la energía cinética después del choquemenos la energía cinética antes del choque) para cada canica.

Física Universitaria – Sears - Zemansky Vol 1. Capitulo 8. Ejercicio 8.43

Page 4: SIMULACION EN MATLAB

4

¿Qué ocurre si la colisión tiene lugar a lo largo de una línea recta?

Ecuaciones

Conservación de la

cantidad de movimiento

(ecuación 1)

Necesitamos más ecuaciones para

resolver el problema

Si el choque es

perfectamente

inelástico

Casos intermedios

Coeficiente de restitución

Si el choque es elástico

Conservación energía. cinética

Page 5: SIMULACION EN MATLAB

5

% Física Computacional 2012 ICF-ESPOL

% Física Universitaria Sears –Zemanski.

% Vol 1. Capitulo 8. Problema 8.43

% Choques frontales unidimensionales.

clear;

clc;

disp('Programa Colisiones frontales Elásticas');

%Ingreso de datos:(se deben ingresar los datos del problema)

disp('Ingreso de datos ');

disp('INGRESE:');

m1=input('- masa del cuerpo 1 m1(kg.): ');

v01=input('- velocidad inicial del cuerpo vo1(m/s): ');

d=input('- distancia entre los dos cuerpos d(m): ');

m2=input('- masa del cuerpo 2 m2(Kg.): ');

v02=input('- velocidad inicial del cuerpo 2 vo2(m/s): ');

disp('- coeficiente de restitución de los cuerpos');

e=input(' entre 0 y 1 e: ');

tramos=input('Cuantos tramos para el cálculo: ');

1. INICIO-INGRESO

DESARROLLO DEL PROBLEMA EN MATLAB

Page 6: SIMULACION EN MATLAB

12/13/2012 6

%Proceso para encontrar las velocidades de salida

p0=m1*v01+m2*v02;

v0e=v02-v01;

ek=e*v0e;

ds=-m1-m2;

dv1=-p0-m2*ek;

dv2=m1*ek-p0;

if ds==0

disp('No tiene solución');

else

v1=dv1/ds;

v2=dv2/ds;

end

%Proceso para encontrar la cantidad de movimiento lineal

% y las perdidas de energía

pf=m1*v1+m2*v2;

eco=0.5*m1*v01^2+0.5*m2*v02^2;

ec=0.5*m1*v1^2+0.5*m2*v2^2;

ep=(ec-eco)*100/eco;

%Variaciones de cantidad de momento lineal y energía de cada partícula

cp1=m1*v1-m1*v01;

cp2=m2*v2-m2*v02;

ce1=0.5*m1*(v1^2)-0.5*m1*(v01^2);

ce2=0.5*m2*(v2^2)-0.5*m2*(v02^2);

xa=d*abs(v01)/(abs(v01)+abs(v02));

ta=abs(xa/v01);

2. PROCEDIMIENTO

Page 7: SIMULACION EN MATLAB

7

%Procedimiento para datos de x1 y x2 de

recorrido

% Antes del choque

% Condiciones iniciales para el cuerpo 1 de

entrada

da=xa/tramos;

dt1=ta/tramos;

punto1=1;

t(punto1)=0;

x1(punto1)=0;

x2(punto1)=d;

y1(punto1)=5;

y2(punto1)=5;

while (x1(punto1)<x2(punto1))

punto1=punto1+1;

t(punto1)=t(punto1-1)+dt1;

x1(punto1)=v01*t(punto1);

x2(punto1)=d-abs(v02*t(punto1));

y1(punto1)=5;

y2(punto1)=5;

end

%Procedimiento para sacar los datos de x3 y x4

de salida

%Condiciones iniciales para el cuerpo 1 de salida

(después del choque)

t3=xa/v1;

dt3=dt1;

punto3=1;

x3(punto3)=xa;

x4(punto3)=xa;

y3(punto3)=5;

y4(punto3)=5;

tdc(punto3)=0;

while abs(x3(punto3)-xa)<(xa-da)

punto3=punto3+1;

tdc(punto3)=tdc(punto3-1)+dt3;

x3(punto3)=xa-abs(v1*tdc(punto3));

x4(punto3)=xa+v2*tdc(punto3);

y3(punto3)=5;

y4(punto3)=5;

end

Page 8: SIMULACION EN MATLAB

12/13/2012 8

%Salida

%Menú de opciones

op=1;

while op<3

disp('MENU DE OPCIONES')

disp('1. Mostrar Resultados numéricos');

disp('2. Gráficas de posiciones antes y después del choque');

disp('3. Simulación del movimiento de los cuerpos');

disp('4. Salir');

op=input('escoja una opción 1 o 2 -> : ');

switch op

3. SALIDA-RESULTADOS

Page 9: SIMULACION EN MATLAB

9

4.PRESENTACION RESULTADOS NUMERICOS

case 1

%Proceso salida

disp('***** RESULTADOS: *****');

disp('La Velocidad de salida del:');

fprintf('- cuerpo 1 es v1(m/s) :%6.4f\n',v1);

fprintf('- cuerpo 2 es v2(m/s) :%6.4f\n',v2);

disp('La cantidad de movimiento:');

fprintf('- inicial en kg.m/s es:%6.4f\n',p0);

fprintf('- final en kg.m/s es:%6.4f\n',pf);

disp('La Energia Cinética: ');

fprintf('- inicial en Joule es:%6.4f\n', eco);

fprintf('- final en Joule es:%6.4f\n', ec);

disp('La VARIACION de:');

fprintf('- energía perdida en J es:%6.4f\n', ep);

fprintf('- momento lineal del cuerpo 1 en Kg.m/s es:%6.4f\n',cp1);

fprintf('- momento lineal del cuerpo 2 en Kg.m/s es:%6.4f\n',cp2);

fprintf('- energía del cuerpo 1 en J es:%6.6f\n',ce1);

fprintf('- energía del cuerpo 2 en J es:%6.6f\n',ce2);

disp(' Recorridos de los cuerpos: ');

fprintf('- El cuerpo 1 recorre xa(m)= %6.4f en un tiempo ta(s)= %6.4f \n',xa,ta);

fprintf('- El cuerpo 2 recorre xb(m)= %6.4f en un tiempo tb(s)= %6.4f \n',d-xa,ta);

Page 10: SIMULACION EN MATLAB

10

5.PRESENTACION DE GRAFICAScase 2

% Graficas

subplot(3,2,1);

plot(t,x1);

title('Posición cuerpo 1 vs tiempo x1=v01t');

ylabel('Posición x1 (m)');

grid on;

subplot(3,2,3);

plot(t,x2,'r');

title('Posición cuerpo 2 vs tiempo x2=v02t');

ylabel('Posición x2 (m)');

grid on;

subplot(3,2,5);

plot(t,x1,t,x2,'r');

title('Posición del cuerpo 1 y 2 vs tiempo');

xlabel('tiempo t(s)');

ylabel('Posición x1 x2 (m)');

grid on;

subplot(3,2,4);

plot(tdc,x4,'r');

title('Posición cuerpo 2 vs tiempo x4=v2t');

ylabel('Posición x4 (m)');

grid on;

subplot(3,2,2);

plot(tdc,x3);

title('Posición cuerpo 1 vs tiempo x3=v1t');

ylabel('Posición x3 (m)');

grid on;

subplot(3,2,6);

plot(tdc,x3,tdc,x4,'r');

title('Posición del cuerpo 1 y 2 vs tiempo');

xlabel('tiempo t(s)');

ylabel('Posición x3 x4 (m)');

grid on;

Page 11: SIMULACION EN MATLAB

11

case 3

% Animación

plot(x1,y1,x2,y2,x3,y3,x4,y4);

axis([0 (1.3*d) 0 (2*max(y1))]);

xlabel('x');

ylabel('y');

hold on;

%salida animación cuerpo 1 y 2

n=length(x1);

z=length(x3);

%Antes del choque

punto1=1;

while punto1<=n

plot(x1(punto1),y1(punto1),'ro','LineWidth',18);

axis([0 max(x4) 0 (2*max(y1))]);

hold on;

plot(x2(punto1),y2(punto1),'go','LineWidth',12);

Foto2(punto1)=getframe;

hold off;

punto1=punto1+1;

end

punto3=1;

while punto3<=z

%Después del choque

plot(x3(punto3),y3(punto3),'ro','LineWidth',18);

axis([0 max(x4) 0 (2*max(y1))]);

hold on;

plot(x4(punto3),y4(punto3),'go','LineWidth',12);

Foto2(punto3+n)=getframe;

hold off;

punto3=punto3+1;

end

movie(Foto2);

case 4

disp(' **** Gracias por considerar esta simulación ****');

otherwise

disp('********* OPCION NO VALIDA, INTENTE DE

NUEVO*****');

end

end

6.PRESENTACION DE ANIMACION

Page 12: SIMULACION EN MATLAB

12

FIN