jueves, 24 de abril de 2014

Simulación cuerda elástica

Realizar la simulación de una cuerda utilizando las ecuaciones del péndulo elástico, como mínimo se deben utilizar 3 eslabones conectados.



Fecha de entrega en clase: Martes 13 de Mayo de 2014

Tarea simulación partículas

Realizar la simulación de una explosión, similar a la que ocurre en el siguiente ejemplo. 





Fecha de entrega:  Martes 6 de Mayo de 2014

martes, 8 de abril de 2014

3er Corte - Pocentajes

Proyectos y trabajos 50 %
Endorphine 10 %
Parcial Final  40 % (Fecha Jueves 15 de Mayo de 2014)

Endorphine simulation - 10% Tercer Corte

El proyecto de simulación sobre Endorphine, será realizado en grupos de 2 personas cómo máximo y deberá ser entregado via link en youtube a mi correo electrónico con plazo máximo Jueves 15 de Mayo a la media noche. En la escena del endorphine deben colocar sus nombres utilizando las herramientas de modelado como cajas o figuras que vienen predeterminadas o en su defecto utilizando MAYA.

Este es el link de Endorphine oficial en el encontraran tutoriales y manuales importantes para que realicen su proyecto:
http://www.naturalmotion.com/middleware/endorphin-2-7/

Este es  uno de los proyectos que me entregaron el semestre pasado para que se guíen:


Este es un link tutorial de como realizar la simulación de personajes en Endorphine:

Simulación sistemas rotacionales (Rueda)

function rotacional
R=1;

% declara variables

time=0:1/10:30;
condicionesiniciales=[0 10];

% desarrolla las ecuaciones diff rk 4 orden
[t,theta]=ode45(@fk,time,condicionesiniciales)
x=R*sin(theta(:,1));
y=-R*cos(theta(:,1));

% Animación graficas

for i=1:length(time)

% plot velocidad angular
pause(1/100)
subplot(2,2,1)
plot(time(i),theta(i,2),'-')
xlabel('tiempo (s)')
ylabel('w (rad/s)')
hold on

% plot rotacion angular
subplot(2,2,2)
plot(time(i),theta(i,1),'-')
xlabel('tiempo (s)')
ylabel('Angulo (rad)')
hold on

% grafico circulo
xc=0; yc=0; r=1; % Centro y radio
n = 50; k=0:n; fi=2*pi*k/n;
xx=xc+r*cos(fi); yy = yc+r*sin(fi);
subplot(2,2,3)
plot(xc,yc,'x',xx,yy);
axis([-2 2 -2 2]), axis equal;
hold on

%plot linea para visualizar la velocidad angular
subplot(2,2,3)
plot([0 x(i)],[0 y(i)])
axis([-2 2 -2 2])
xlabel('x(m)')
ylabel('y(m)')
hold off

end

end

%Ecuacion diferencial

function rk=fk(t,y)
m=2;
b=0.1;
R=1;
rk=[y(2);-(b/(m*R))*y(2)];
end

simulación doble masa

function doblemasa

% declara variables
x1d=5;
x2d=20;
time=0:1/10:120;
condicionesiniciales=[x1d+10 0 x2d+20 0];

y=0*time;

% desarrolla las ecuaciones diff rk 4 orden
[t,x]=ode45(@fk,time,condicionesiniciales);


% graficas

for i=1:length(time)

pause(1/1000)  
    plot(x(i,1)+x1d,0,'ko','Markersize',10,'MarkerFaceColor','green');
    hold all;
    plot(x(i,3)+x2d,0,'ko','Markersize',10,'MarkerFaceColor','red');
    hold off;
    xlabel('DistanciaX(Metros)');
    ylabel('DistanciaY(Metros)');
    grid on;
    axis([-50, 50,-2, 2]);
    drawnow
end

end

function rk=fk(t,x)
m=1;
k1=2;
k2=2;
b=1;
rk=[x(2);-(k1/m)*x(1)-(k2/m)*(x(1)-x(3))-(b/m)*(x(2)-x(4));x(4);-(k2/m)*(x(3)-x(1))-(b/m)*(x(4)-x(2))];
end

lunes, 10 de marzo de 2014

Caída libre con rebotes

function rebote(elasticidad,yo)

v = 0;
dt = 1/10;
tf = 50;
g=-9.81;

times = 0:dt:tf;
x=0*times;
z=0*times;
y = zeros(size(times))

for idx = 1:length(times)
newy = yo + (v+g*dt/2)*dt;
v = v + g*dt;
if newy < 0
newy = 0;
v = -v*elasticidad;
end
y(idx) = newy;
yo = newy;
end

for i=1:length(times)
pause(1/100)  
plot3(x(i),z(i),y(i),'o r','MarkerFaceColor','m')
grid on
axis([-2 2 -2 2 min(y) max(y)])
end

end

lunes, 3 de marzo de 2014

Caida fricción sobre resorte amortiguado

 function total2

clc
 
% solucion caida libre
 
 
time1=0:1/10:5;
condini=[100 0];
x=0*time1;
z=0*time1;
  %Resuelvo las ecuaciones diff
[t,y]=ode45(@cfr,time1,condini);
 %solucion masa resorte
  time2=5:1/10:35;
alturafinal=y(length(y(:,1)),1);
velocidadfinal=y(length(y(:,2)),2);
condicionesiniciales=[alturafinal velocidadfinal];
x2=0*time2;
z2=0*time2;
  % desarrolla las ecuaciones diff rk 4 orden
[t2,y2]=ode45(@fk,time2,condicionesiniciales);
 % Unir programa a simular
  tt=[time1 time2];
yt=[y;y2];
xt=[x x2];
zt=[z z2]
 % graficar resultado
  for i=1:length(tt)
pause(1/100)
subplot(2,2,1)
plot(tt,yt(:,2))
subplot(2,2,2)
plot(tt,yt(:,1))
subplot(2,2,3)
plot3(xt(i),zt(i),yt(i,1),'o r','MarkerFaceColor','m')
grid on
axis([-2 2 -2 2 min(yt(:,1)) max(yt(:,1))])
 end
end
  function rk=cfr(t,y)
% Ecuaciones diferenciales caida libre
 
 
m=2;
b=0.01;
g=-9.81;
rk=[y(2);g-(b/m)*y(2)];
 
end
  function rk=fk(t,y)
m=2;
k=10;
c=1;
g=9.81;
rk=[y(2);g-(k/m)*y(1)-(c/m)*y(2)];
 
end



 

Simulación masa resorte vertical

function resorte_clase

% declara variables

time=0:1/10:30;
condicionesiniciales=[20 0];

x=0*time;
z=0*time;

% desarrolla las ecuaciones diff rk 4 orden
[t,y]=ode45(@fk,time,condicionesiniciales)

y1=-y(:,1)
% graficas

for i=1:length(time)

pause(1/100)
subplot(2,2,1)
plot(time(i),y(i,2),'-')
xlabel('tiempo (s)')
ylabel('velocidad (m/s)')
hold on

subplot(2,2,3)
plot(time(i),y1(i))
xlabel('tiempo (s)')
ylabel('posición (m)')
hold on

subplot(2,2,2)
plot(y(i,2),y1(i))
ylabel('posición (m)')
xlabel('velocidad (m/s)')
hold on

subplot(2,2,4)
plot3(x(i),z(i),y1(i),'o r','MarkerFaceColor','m')
axis([-2 2 -2 2 min(y1)-2 max(y1)+2])
grid on
ylabel('posición (m)')
xlabel('posición (m)')
zlabel('posición (m)')



end

end

function rk=fk(t,y)
m=2;
k=2;
b=0.5;
g=9.81;
rk=[y(2);g-(k/m)*y(1)-(b/m)*y(2)];
end

jueves, 6 de febrero de 2014

Taller Métodos Numéricos Simulación

Entregar en físico el día de clase, Jueves 13 de Febrero de 2014. Los programas de las simulaciones se deben entregar el martes 18 de Febrero de 2014, según corresponda con el listado de clase para el desarrollo del trabajo (par o impar).

Descargar el archivo del taller en el siguiente link:
https://www.dropbox.com/s/soyvyotdb2h11bl/Taller_Ecuaciones_Diferenciales.pdf