echo on % Este script resuelve el Ejercicio 1 de la Practica 2. % Muestra como utlizar los comandos quiver, contour, ode45 y plot. % % Para ejecutarlo es necesario tener el archivo pendulo.m en el mismo % directorio % Pulse para continuar pause [x,y] = meshgrid(-2*pi:.1:2*pi,-2:.1:2); contour(x,y,y.^2/2 + (1-cos(x))) % El comando meshgrid genera una malla donde se evaluara la funcion E(x,y) % para calcular las curvas de nivel. % contour grafica las curvas de nivel % Pulse para continuar pause [x,y] = meshgrid(-2*pi:.8:2*pi,-2:.5:2); hold on quiver(x,y,y,-sin(x)) title('Diagrama de fases del pendulo simple con g/l=1') % Usamos nuevamente meshgrid para definir una malla en donde calcular el % campo (y, -sen(x)). El comando hold on sirve para que el nuevo dibujo se % superponga al anterior. Finalmente, quiver grafica el campo. % Pulse para continuar pause [t,y]=ode45('pendulo', [0 10],[0 .5]'); % ode45 calcula aproximaciones de las % soluciones de dx/dt=pendulo(t,x) en el intervalo [0,2] con dato incial % [0,0.5]. La funcion "pendulo" debe ser definida previamente. El vector t guarda los tiempos en donde fue calculada y la matriz % y guarda los valores de la solucion en dichos tiempos. y(:,1) corresponde % a la primera componente e y(:,2) a la segunda. % Pulse para continuar pause figure plot(y(:,1),y(:,2)); % figure crea una nueva figura y plot dibuja la solucion. % % Para mayor informacion sobre cada uno de estos % comandos, tipear (desde la linea de comandos) help "comando" (ej: help % quiver, help contour, help plot, etc. y/o consultar al docente.) % % Para finalizar calculemos algunas soluciones mas % Pulse para continuar pause hold on [t,y]=ode45('pendulo', [0 15],[.2 1]'); plot(y(:,1),y(:,2)); pause [t,y]=ode45('pendulo', [0 3],[0 0]'); plot(y(:,1),y(:,2)); pause [t,y]=ode45('pendulo', [0 10],[.2 .1]'); plot(y(:,1),y(:,2)); pause [t,y]=ode45('pendulo', [0 12],[-.1 .1]'); plot(y(:,1),y(:,2)); pause [t,y]=ode45('pendulo', [0 12],[0 2]'); plot(y(:,1),y(:,2)); pause [t,y]=ode45('pendulo', [0 12],[0 3]'); plot(y(:,1),y(:,2)); pause % FIN. Pulse para finalizar pause