You are on page 1of 28

Institucin:

Espoch
ESCUELA:
Ingeniera automotriz
FACULTAD:
Mecnica
Carrera:
Ingeniera automotriz (3ero a)
NOMBRE:
Edgar Javier loor Solrzano (1672)
Asignatura:
Computacin ii
Docente:
Ing. Alexandra Pazmio Armijos
Tema:
Creacin de una interfaz con MATLAB
FECHA:
23- 01 2015

INTRODUCCIN

La fsica engloba un sinnmero de temas, pero sin duda alguna, el tema central de esta,
es la cinemtica.
La cinemtica es una rama de la fsica, la cual se encarga del estudio del movimiento de
los cuerpos, y entre sus movimientos encontraremos los tres ms importantes:
movimiento rectilneo, movimiento circular y movimiento parablico.
En este proyecto se hizo uso de la interfaz de desarrollo de Matlab, denominada
GUIDE, para as poder crear un programa que nos permita resolver ejercicios sobre
estos temas, dando como resultado los datos necesarios para que se produzcan estos
movimientos.
Bsicamente este programa est orientado para aquellos estudiantes que inician en los
temas mencionados, ya que podr ir ingresando sus datos e ir comparando si la
resolucin de sus ejercicios est bien, adems este programa cuenta con la animacin de
las grficas que se dan en estos movimientos, lo que lo hace un programa muy prctico
y verstil.

OBJETIVOS
OBJETIVO GENERAL
Aprender a desarrollar un programa en la interfaz de Matlab, a partir de los conocimientos
adquiridos durante todo el semestre.

OBJETIVOS ESPECIFICOS

Disear un programa que solucione ejercicios referentes a las materias de


ingeniera.

Investigar y entender la creacin de una interfaz grfica, para facilitar la


creacin de cualquier programa.

Explicar el desarrollo de las interfaces.

Aplicar las interfaces creadas en la resolucin de ejercicios, para despus


comprobar su funcionamiento.

MARCO TEORICO

LA CIINEMATICA
La cinemtica es una rama de la fsica dedicada al estudio del movimiento de los
cuerpos en el espacio, sin atender a las causas que lo producen. Por tanto la cinemtica
slo estudia el movimiento en s, a diferencia de la dinmica que estudia las
interacciones que lo producen.
La cinemtica est regida por tres movimientos principales:

El movimiento rectilneo
El movimiento parablico
Y el movimiento circular

El movimiento rectilneo
El movimiento rectilneo es aquel cuya trayectoria que describe el mvil es una lnea
recta. Pueden existir dos tipos de movimiento rectilneo, el movimiento rectilneo
uniforme y el movimiento rectilneo uniformemente variado, el primero se caracteriza
en que su velocidad siempre ser constante, sea no cambia, se mueve con la misma
velocidad durante todo el recorrido, teniendo una aceleracin igual a cero; mientas que
en el segundo va a haber una variacin de velocidad, y por lo tanto su aceleracin ser
distinta a cero.

A continuacin se presentan las frmulas que se utilizan para resolver este tipo de
movimiento:

El movimiento parablico
Se denomina movimiento parablico a aquel realizado por un objeto cuya trayectoria
describir una parbola. Corresponde con la trayectoria ideal de un proyectil que se
mueve en un medio que no ofrece resistencia al avance y que est sujeto a un campo
gravitatorio uniforme.
Puede ser analizado como la composicin de dos movimientos rectilneos: un
movimiento rectilneo uniforme horizontal y un movimiento rectilneo uniformemente
acelerado vertical.
En este movimiento la aceleracin no depende del tiempo (la cual es constante), pero la
velocidad y la posicin del cuerpo s que dependen del tiempo. En el tiro parablico son
de inters la altura mxima y el desplazamiento horizontal conseguido.
La altura mxima se alcanza cuando la componente vertical vy de la velocidad se hace
cero.

En los ejercicios de aplicacin, para encontrar los diferentes resultados se hace uso de
las siguientes formulas:

El movimiento circular
Un movimiento circular es el que se basa en un eje de giro y radio constante, por lo cual
la trayectoria es una circunferencia.
Este tipo de movimiento puede ser, al igual que el movimiento rectilneo, uniforme o
uniformemente variado. En el primer caso se mantiene constante el mdulo de la
velocidad angular, no as su direccin ni su sentido; pero en el segundo caso hay una
variacin en su velocidad angular.

Los ejercicios de este tipo de movimiento, pueden ser resueltos mediantes las siguientes
formulas:

ENTORNO DE DESARROLLO DE UNA INTERFAZ CON GUIDE


GUIDE, son las siglas en ingles de Graphical User Interfase Development
Environment, el cual es un conjunto de herramientas que posee MATLAB, con la
finalidad de disear una GUI, las cuales son fciles y rpidas de crear ya que MATLAB
nos ahorra tiempo mediante los diferentes controles que posee.

Una vez que se desplieguen los botones con las distintas opciones, el usuario puede
proceder a la edicin de la ventana de trabajo GUI, presionando cualquier de estos para
ejecutar su respectiva accin, este proceso se lo conoce como funcin Callback.
Al usar el entorno de desarrollo GUIDE se obtendrn dos archivos:

Un archivo con extensin .fig, el cual es el que contiene la descripcin completa


de la GUI creada, en si este es un archivo binario.
Y un archivo con extensin .m, el cual es un archivo de texto, que contiene un
litado de plantillas, el cual se usa en la decodificacin de las funciones
Callback.

Es importante saber, que para trabajar posteriormente con nuestra GUI, los archivos .fig
y .m debern estar guardados con el mismo nombre y estar ubicados en el mismo
directorio.
Para abrir el entorno de desarrollo GUIDE, se lo puede hacer de dos maneras:
La primera forma es haciendo clic sobre el icono de GUIDE, que se encuentra en la
parte superior de la ventana de MATLAB. La segunda manera es escribiendo en la lnea
de comandos, el comando guide, y posteriormente dar enter.

Despus de haber utilizado cualquiera de las dos formas anteriores, aparecer una
ventana, la cual nos presenta la opcin de seleccionar una plantilla para nuestra GUI que
crearemos o su vez podemos abrir alguna GUI ya existente.

Despus de abrir la opcin encerrada en un crculo, no aparecer la ventana de diseo de


nuestra interfaz, con la que empezaremos a trabajar, segn nuestro gusto.

DESARROLLO DE LAS INTERFACES


Para el desarrollo de cada interfaz, primero se procedi a su diseo, lo que se realiza en
la ventana denominada GUIDE.

Luego de haber diseado la apariencia de cada una de las interfaces, viene lo ms


importante, lo cual es programarla para su funcionamiento, a continuacin se realizara
de las funciones que ms se utilizaron.
1. GET. Esta funcin se utiliza para obtener un valor de un determinado objeto, su
sintaxis es:
A=get(handles.nombre_del objeto,parmetro)
En donde A es la variable en donde se guardara el valor que se obtiene del
objeto, y el parmetro es la propiedad de donde obtendremos ese objeto, ya sea
un nmero, letra, etc.
La palabra handles, significa manejar, lo que indica que podremos utilizar ese
valor.
2. SET. Esta funcin se utiliza para designar valores a un parmetro especfico de
un objeto, su sintaxis es:
set(handles.nombre_del_objeto,parametro,A)
Lo que significa que le estamos dando a un determinado objeto, el valor que se
encuentra en la variable A.
3. str2double. Se utiliza cuando se quiere obtener un valor numrico, ya que al
obtener un valor no se sabe si estemos tomando un valor numrico o de cadena,
es por ello que cuando se requiere obtener un valor numrico se utiliza la
siguiente sintaxis:
A= str2double (get(handles.nombre_del objeto,parmetro))
4. if. Permite realizar una comparacin entre valores de objetos.

5. imread . Sirve para leer una imagen, la imagen deber estar guardada en el
mismo directorio que la interfaz, su sintaxis es:
a=imread('nombre_de_la_imagen.formato_de_la_imagen')
Estas son las funciones que se requerir para trabajar, a continuacin daremos una breve
explicacin de cmo realizamos cada interfaz.

INTERFAZ DEL MOVIMIENTO RECTILINEO


Lo primero que hay que saber es que lo que vamos a programar en
cada interfaz son los push button que creamos, en esta interfaz se
crearon tres botones, para programar cada uno de estos se hace clic
derecho sobre uno y se escoge la opcin VIEW CALLBACKS y
luego se escoge CALLBACK, y se procede a programar.

- El botn CALCULAR, sirve para que se muestre todos los resultados numricos de
la interfaz, su cdigo de programacin es:
% --- Executes on button press in calcular.
function calcular_Callback(hObject, eventdata, handles)
M1=get(handles.menu2,'Value');
M2=get(handles.menu3,'Value');
Vi=str2double(get(handles.vo,'String'));
Vf=str2double(get(handles.vf,'String'));
Tf=str2double(get(handles.tf,'String'));
t=linspace(0,Tf,5);
ac=(Vf-Vi)/Tf;
es=(Vi.*t)+(0.5*ac*t.^2);
if M1==M2&M1~=1
set(handles.text13,'String',t(1));
set(handles.text14,'String',t(2));
set(handles.text15,'String',t(3));
set(handles.text16,'String',t(4))
set(handles.text17,'String',t(5));
set(handles.text28,'String',es(1));
set(handles.text33,'String',es(2));
set(handles.text34,'String',es(3));
set(handles.text35,'String',es(4));
set(handles.text36,'String',es(5));
set(handles.text38,'String',ac);
set(handles.menu4,'Value',M1);
elseif M1==2&M2==3
T1ac=3.28*ac;
T1es=3.28.*es;
set(handles.text13,'String',t(1));
set(handles.text14,'String',t(2));
set(handles.text15,'String',t(3));
set(handles.text16,'String',t(4))
set(handles.text17,'String',t(5));
set(handles.text28,'String',T1es(1));
set(handles.text33,'String',T1es(2));
set(handles.text34,'String',T1es(3));
set(handles.text35,'String',T1es(4));
set(handles.text36,'String',T1es(5));
set(handles.text38,'String',T1ac);
set(handles.menu4,'Value',M2);
elseif M1==3&M2==2

T2ac=0.304*ac;
T2es=0.304.*es;
set(handles.text13,'String',t(1));
set(handles.text14,'String',t(2));
set(handles.text15,'String',t(3));
set(handles.text16,'String',t(4))
set(handles.text17,'String',t(5));
set(handles.text28,'String',T2es(1));
set(handles.text33,'String',T2es(2));
set(handles.text34,'String',T2es(3));
set(handles.text35,'String',T2es(4));
set(handles.text36,'String',T2es(5));
set(handles.text38,'String',T2ac);
set(handles.menu4,'Value',M2);
end

Como vemos en M1 y M2, estamos obteniendo el valor de la posicin que se


escoger en los objetos menu2 y menu3, ya que al ser un popupmenu se escoger
un elemento de las diferentes opciones que tenga cada uno, y ese elemento tendr un
valor de posicin.
En Vi, Vf y Tf, estamos tomando el valor numrico que se escriba en el objeto, es
por ello que se toma su parmetro String en el cual se coloca un valor editable, y se
hace uso de str2double. Se crea un vector de elementos t (intervalo de tiempo), y se
realizan un conjunto de operaciones con los valores que se tienen y los resultados se los
guarda en las variable ac y es (aceleracin y espacio), luego como se puede observar
se hace uso de una funcin de comparacin, if, en donde compararemos los valores de
M1 y M2, esto nos sirve ya que los valores descritos en estas variables, corresponde
a las posiciones de las unidades que se utilizaran para ingresar nuestros valores, y la
unidades de nuestros resultados, sea que dependiendo de las unidades de ingreso y
salida que seleccionemos, el ciclo tomara un camino realizando las distintas
conversiones, y guardara los resultados en los diferentes objetos, usando set..
- El botn GRAFICAR, sirve para que se muestre la grfica a partir de los resultados
obtenidos, su cdigo de programacin es:
% --- Executes on button press in graficar.
function graficar_Callback(hObject, eventdata, handles)
a1=str2double(get(handles.text13,'String'));
a2=str2double(get(handles.text14,'String'));
a3=str2double(get(handles.text15,'String'));
a4=str2double(get(handles.text16,'String'));
a5=str2double(get(handles.text17,'String'));
b1=str2double(get(handles.text28,'String'));
b2=str2double(get(handles.text33,'String'));
b3=str2double(get(handles.text34,'String'));
b4=str2double(get(handles.text35,'String'));
b5=str2double(get(handles.text36,'String'));
tiempo=[a1 a2 a3 a4 a5];
espacio=[b1 b2 b3 b4 b5];
for i=1:length(tiempo);
plot(handles.axes1,tiempo(1:i),espacio(1:i))
pause(0.6)
end

Para graficar tomamos los valores que se mostraran en cada una de las casillas de los
resultados, como son datos numricos hacemos uso de str2double, y se los procede a
guardar en cada una de las variable que se observan.
Creamos un vector tiempo con los valores de las variables a1, a2, a3, a4, a5, y otro
vector espacio con los valores b1, b2, b3, b4,b5. El ciclo for se lo utiliza para que
vaya graficando cada punto de los vectores mencionados, tomndolos en pareja.
La sintaxis para graficar es: plot(handles.nombre_del_axes,x,y), o tambin plot(,x,y);
el primero se lo puede utilizar cuando tengamos uno o varias grficas, pero el segundo
solo es posible utilizarlo solo si tenemos una grafica, en este caso utilizamos la primera
forma, ya que como se mencion nos da el mismo resultado cuando tengamos una o
varias grficas.
Otra cosa que se observa es que aparece al graficar tiempo(1:i),espacio(1:i), lo que se
trata de obtener poniendo esto es que cuando el ciclo comience me va a graficar el par
de ordenadas desde la 1er posicin hasta la posicin i, lo que hace que la grfica tenga
una animacin, pero este ciclo va a ir tan rpido que no vamos a ver la animacin es por
eso que hacemos uso de pause(n), para que as n ser el tiempo en que se demore en
graficar cada punto.
- El botn BORRAR, sirve para que se borren todos los datos que se visualicen en la
interfaz, su cdigo de programacin es:
% --- Executes on button press in borrar.
function borrar_Callback(hObject, eventdata, handles)
set(handles.vo,'String',' ');
set(handles.vf,'String',' ');
set(handles.tf,'String',' ');
set(handles.text13,'String',' ');
set(handles.text14,'String',' ');
set(handles.text15,'String',' ');
set(handles.text16,'String',' ');
set(handles.text17,'String',' ');
set(handles.text28,'String',' ');
set(handles.text33,'String',' ');
set(handles.text34,'String',' ');
set(handles.text35,'String',' ');
set(handles.text36,'String',' ');
set(handles.text38,'String',' ');
set(handles.menu2,'Value',1);
set(handles.menu3,'Value',1);
set(handles.menu4,'Value',1);
plot(handles.axes1,0,0)

Se observa que se utiliza la misma sintaxis que se usa para ingresar un valor en un
objeto, pero en este caso, en vez de insertar un valor numrico u otro, lo que estamos
insertando es un espacio en blanco, el cual se lo coloca entre comillas, para que as los
valores que se encuentra en esos objetos se reemplacen por lo que est entre las
comillas.
Para los popupmenus, lo que hacemos es que al editar sus opciones, al principio en la
edicin de la interfaz, en la posicin uno dejamos un espacio en blanco, y entonces en
esta parte del borrado lo que hacemos es ingresarles el valor de 1, para que as el
popupmenu se coloque en esa posicin.

Para borrar lo que se encuentra dibujado en la grfica, lo que hacemos es, definir el
axes a borrar, y ordenarle que se dibuje un punto en las coordenadas (0,0), y as solo se
presentara un pequeo punto, el cual es indivisible para la vista.
INTERFAZ DEL MOVIMIENTO PARABOLICO
Como se mencion lo que vamos a programar en cada interfaz
son los push button que creamos, en esta interfaz se crearon
tambin tres botones.

- El botn CALCULAR, sirve para que se muestre todos los


resultados numricos de la interfaz, su cdigo de programacin es:
% --- Executes on button press in calcular.
function calcular_Callback(hObject, eventdata, handles)
vo=str2double(get(handles.edit2,'String'));
x=str2double(get(handles.edit3,'String'));
c=get(handles.menu,'Value');
if c==2&c~=1
g=9.8;
tv=(2*vo*sind(x))/g;
s=((2*vo^2)*sind(x)*cosd(x))/g;
H=(g*(tv)^2)/8;
vx=vo*cosd(x);
vy=(vo*sind(x))-(g*tv);
vf=sqrt((vx^2)+(vy^2));
set(handles.menu2,'Value',c);
set(handles.menu3,'Value',c);
set(handles.text13,'String',tv);
set(handles.text14,'String',s);
set(handles.text15,'String',H);
set(handles.text16,'String',vx);
set(handles.text17,'String',vy);
set(handles.text18,'String',vf);
elseif c==3&c~=1
g=32.2;
tv=(2*vo*sind(x))/g;
s=((2*vo^2)*sind(x)*cosd(x))/g;
H=(g*(tv)^2)/8;
vx=vo*cosd(x);
vy=(vo*sind(x))-(g*tv);
vf=sqrt((vx^2)+(vy^2));
set(handles.menu2,'Value',c);
set(handles.menu3,'Value',c);
set(handles.text13,'String',tv);
set(handles.text14,'String',s);
set(handles.text15,'String',H);
set(handles.text16,'String',vx);
set(handles.text17,'String',vy);
set(handles.text18,'String',vf);
end

En este caso lo que hacemos primero es obtener los valores que se escribirn como
datos de entrada, y se procede a guardarlos en las variables vo, x (velocidad inicial,

ngulo). Aqu tambin en esta interfaz existe un popupmenu, del cual obtendremos su
valor de posicin, que se presentara al elegir las unidades de los datos de entrada.
Al tener en el popupmenu solo tres opciones realizamos un comparacin con el valor
que se le asigne a c haciendo uso de la funcin if,(se puede notar que aparece if
c==2&c~=1, se coloca as ya que en la posicin uno del popupmenu hay un espacio en
blanco que despus nos servir para hacer uso del botn borrar).
Dependiendo del valor de c la funcin tomara un camino, y realizara el debido
proceso, para luego usando set insertar los resultados en los diferentes objetos, para ser
visualizados.

- El botn GRAFICAR, sirve para que se muestre la grfica a partir de los resultados
obtenidos, su cdigo de programacin es:
% --- Executes on button press in graficar.
function graficar_Callback(hObject, eventdata, handles)
me=get(handles.menu,'Value');
vo1=str2double(get(handles.edit2,'String'));
x1=str2double(get(handles.edit3,'String'));
tv1=str2double(get(handles.text13,'String'));
s1=str2double(get(handles.text14,'String'));
H1=str2double(get(handles.text15,'String'));
vx1=str2double(get(handles.text16,'String'));
vy1=str2double(get(handles.text17,'String'));
vf1=str2double(get(handles.text18,'String'));
if me==2
g=9.8;
t=0:0.01:tv1;
for i=1:length(t);
d=(vo1*cosd(x1))*t(i);
a(i)=d;
h=((vo1*sind(x1))*t(i))-((0.5)*g*(t(i))^2);
b(i)=h;
plot(a(1:i),b(1:i),'or')
axis([0 (s1+0.1) 0 H1]);
pause(0.02)
end
elseif me==3
g=32.2;
t=0:0.01:tv1;
for i=1:length(t);
d=(vo1*cosd(x1))*t(i);
a(i)=d;
h=((vo1*sind(x1))*t(i))-((0.5)*g*(t(i))^2);
b(i)=h;
plot(a(1:i),b(1:i),'or')
axis([0 (s1+0.1) 0 H1]);
pause(0.02)
end
end

Para graficar tomamos los valores que se mostraran en cada una de las casillas en los
text static de los resultados, como son datos numricos hacemos uso de str2double, y

se los procede a guardar en cada una de las variables me, vo1, x1, tv1, s1, H1, vx1,
vy1, vf1.
Aqu nuevamente hacemos uso de la funcin if, esto debido a que si se escoge como
unidades de entrada m/s (sea me toma un valor de 2) la gravedad tomara un valor de
9.8, pero si se escoge ft/s (me=3) tomara un valor de 32.2.
Como se mencion en la anterior interfaz de movimiento rectilneo, se puede usar
cualquiera de las dos sintaxis para graficar, en este caso se tom la segunda forma, al
existir un solo axes, y nuevamente hacemos uso del ciclo for para realizar una
animacin de la grfica, y colocamos una pausa para que se grafique cada punto.
Tambin puedo darle un diseo a la grafica a dibujarse en este caso la lnea la edito para
que se vea en forma de crculos vacios y de un color rojo (or).
- El botn BORRAR, sirve para que se borren todos los datos que se visualicen en la
interfaz, su cdigo de programacin es:
% --- Executes on button press in borrar.
function borrar_Callback(hObject, eventdata, handles)
set(handles.edit2,'String',' ');
set(handles.edit3,'String',' ');
set(handles.menu,'Value',1);
set(handles.menu2,'Value',1);
set(handles.menu3,'Value',1);
set(handles.text13,'String',' ');
set(handles.text14,'String',' ');
set(handles.text15,'String',' ');
set(handles.text16,'String',' ');
set(handles.text17,'String',' ');
set(handles.text18,'String',' ');
plot(handles.axes2,0,0)

Hacemos lo mismo que se hizo anteriormente, insertarnos un espacio en blanco, el cual


se lo coloca entre comillas, para que as los valores que se encuentra en esos objetos se
reemplacen por lo que est entre las comillas, sea nada.
Y para el popupmenus, lo que hacemos es darle un valor de 1, lo que significa que
tomara la posicin 1, y en aquella posicin dejamos un espacio en blanco, para que al
presionar borrar todo, se quede automticamente en blanco el espacio.
Para borrar lo que se encuentra dibujado en la grfica, solo definimos el axes a borrar,
y realizar lo mismo que se hizo anteriormente ordenarle que se dibuje un punto en las
coordenadas (0,0).
INTERFAZ DEL MOVIMIENTO CIRCULAR
En esta interfaz se realiz lo mismo que con las otras dos interfaces, ya
que posee los mismos botones.

- El botn CALCULAR, sirve para que se muestre todos los resultados


numricos de la interfaz, su cdigo de programacin es:

% --- Executes on button press in pushbutton1.


function pushbutton1_Callback(hObject, eventdata, handles)
r=str2double(get(handles.edit1,'String'));
t=str2double(get(handles.edit2,'String'));
wo=str2double(get(handles.edit3,'String'));
wf=str2double(get(handles.edit4,'String'));
e=get(handles.popupmenu1,'Value');
f=get(handles.popupmenu2,'Value');
if e==2&f==2&f~=1
r=r;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
elseif e==3&f==3&f~=1
r=r;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
elseif e==4&f==4&f~=1
r=r;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
elseif e==2&f==3&f~=1
r=r*3.28;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
elseif e==2&f==4&f~=1
r=r*100;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);

set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
elseif e==3&f==2&f~=1
r=r*0.304;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
elseif e==3&f==4&f~=1
r=r*30.48;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
elseif e==4&f==2&f~=1
r=r*0.01;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
elseif e==4&f==3&f~=1
r=r*0.0328;
aa=(wf-wo)/t;
da=(wo*t)+(0.5*aa*t^2);
at=aa*r;
set(handles.popupmenu4,'Value',f);
set(handles.edit6,'String',r);
set(handles.edit7,'String',t);
set(handles.edit8,'String',wo);
set(handles.edit9,'String',wf);
set(handles.edit10,'String',da);
set(handles.edit11,'String',aa);
set(handles.edit12,'String',at);
end

El procedimiento es el mismo que en las otras interfaces, obtener los valores de que se
ingresan al principio y guardarlo en las variables correspondientes, para luego ser
usados.

Luego se nota la existencia de dos popupmenu, de donde se obtendr su valor, para


mediante usando la funcin if, compararlo y as esta nos envi por el camino que se
elija y realizar los debidos procesos, para luego guardar los resultados en las diferentes
casillas, como ya sabemos, usando set.
- El botn GRAFICAR, muestre la grfica a partir de los resultados obtenidos, su
cdigo de programacin es:
% --- Executes on button press in pushbutton3.
function pushbutton3_Callback(hObject, eventdata, handles)
r=str2double(get(handles.edit6,'String'));
x=linspace(-r,r,100);
y=sqrt((r^2)-x.^2);
for i=1:length(x);
plot(handles.axes6,x(1:i),y(1:i),'or',x(1:i),-y(1:i),'or',0,0,'*k')
pause(0.1)
end

Para graficar tomamos el valor de uno de los resultados, como es un dato numrico
hacemos uso de str2double, y se los procede guarda en la variable r, luego creamos
un vector que va de desde -r hasta r con 100 valores, en donde utilizaremos cada valor
de ese vector para formar otro vector x, para ello haciendo uso de la ecuacin de la
circunferencia, y as darle forma a la grfica.
Se us el ciclo for para animar la grfica, aqu observamos que hacemos uso de la
segunda forma de sintaxis para graficar, sea poniendo el nombre del axes, ya existen
dos axes (para la grfica y uno de imagen de fondo) adems nos damos cuenta de que
existen tres pares ordenados para graficarse: (x(1:i),y(1:i),'or',x(1:i), -y(1:i),'or',0,0,'*k'),
esto se debe a que como es una circunferencia, entonces la grfica seria simtrica, pero
con sentido contrario (por eso se pone -y), as se dibujara en ambos lados y en el
ltimo se coloca 0,0 porque este sera el punto centro de la circunferencia.
Podemos tambin dar un diseo a las lneas de la grfica ('or', '*k').

- El botn BORRAR, sirve para que se borren todos los datos que se visualicen en la
interfaz, su cdigo de programacin es:
% --- Executes on button press in pushbutton2.
function pushbutton2_Callback(hObject, eventdata, handles)
set(handles.popupmenu1,'Value',1);
set(handles.popupmenu2,'Value',1);
set(handles.popupmenu4,'Value',1);
set(handles.edit6,'String',' ');
set(handles.edit7,'String',' ');
set(handles.edit8,'String',' ');
set(handles.edit9,'String',' ');
set(handles.edit10,'String',' ');
set(handles.edit11,'String',' ');
set(handles.edit12,'String',' ');
set(handles.edit1,'String',' ');
set(handles.edit2,'String',' ');

set(handles.edit3,'String',' ');
set(handles.edit4,'String',' ');
plot(handles.axes6,0,0)

El procedimiento es el mismo que los anteriores, insertarnos un espacio en blanco, el


cual se lo coloca entre comillas, para que as los valores que se encuentra en esos
objetos se reemplacen por lo que est entre las comillas.
Y para el popupmenus, lo que hacemos es darle un valor de 1, lo que significa que
tomara la posicin 1, y quede automticamente en blanco el espacio.
Para borrar lo que se encuentra dibujado en la grfica, solo definimos el axes a borrar,
y ordenarle que se dibuje un punto invisible en las coordenadas (0,0).
INTERFAZ DEL MENU
Esta interfaz se crea para poder desde aqu llamar a las otras
interfaces, como se observa existe un botn para para llamar
a cada una.
Cada botn se lo programa haciendo clic derecho sobre uno
y se escoge la opcin VIEW CALLBACKS y luego se
escoge CALLBACK, y al programarlo solo se coloca el
nombre que se guard la interfaz que se quiere llamar.

Para poner una imagen de fondo se coloca primero un axes de fondo y se lo expande
por todo la ventana, y se lo programa:
% --- Executes just before MENU is made visible.
function MENU_OpeningFcn(hObject, eventdata, handles, varargin)
a=imread('calavera.jpg');
image(a)
axis off

En donde la imagen se la guarda en la variable a, usando funcin imread, para leer la


imagen, y por ltimo se define el fondo mediante image(a), que ejecuta la accin. Para
que el fondo de la ventana se visualice de mejor manera, se apaga el axes, mediante
axes off.

GUIA DE USUARIO DEL PROGRAMA


Primero que nada, este programa requiere el ingreso de unos datos de entrada, con los
cuales se podr encontrar, los otros datos, luego dentro del programa existen diferentes
botones , los cuales nos ayudan a interactuar con este, en donde podemos proceder
desde graficar el movimiento que hallamos elegido, hasta borrar los datos ingresados
para realizar un nuevo clculo. Algo muy importante con lo que cuenta este programa es
se pueden elegir las unidades de la entrada, y en algunos casos hasta las de salida de
datos.
El programa se lo puede ejecutar de dos maneras, ya sea si lo tenemos como ejecutable
(ejecutarlo en cualquier computadora sin la necesidad de Matlab), o en su defecto si
solo tenemos los archivos de extensin .m y .fig, ejecutamos el archivo que diga
MENU.m, y all nos aparecer el cdigo del programa, para luego hacer clic en el
botn Run de Matlab y as se ejecutara el programa.

Luego de ejecutar el programa, se presentara la siguiente pantalla, en el cual se elegir


con que movimiento vamos a trabajar.

Habiendo tres opciones, y dependiendo de que elijamos, nos puede aparecer lo


siguiente:
MOVIMIENTO RECTILINEO
Si elegimos la opcin de MOVIMIENTO RECTILINEO, se nos desplegara la siguiente
ventana:

Como observamos existen cuatro paneles, en donde se agrupan lo necesario para


ejecutar el programa.

Entrada de datos

Aqu se ingresan los datos que se requieran, en donde


-

Vo, es la velocidad con la que inicia el cuerpo su movimiento.

Vf, es la velocidad con la que el cuerpo finaliza su movimiento.


Tf, es el tiempo en el que el cuerpo se demorar en realizar el movimiento

Aqu se puede observar, que existe un men desplegable, en los cuales ingresaremos las
unidades de la Vo y la Vf

Salida de datos

Aqu en este panel es en donde obtendremos nuestros resultados, para ello es necesario
elegir las unidades en las que queramos que se nos muestre el espacio que recorri el
cuerpo, mas as no es necesario que elijamos las unidades de la aceleracin, ya que estas
se mostrara automticamente, dependiendo de que unidad elijamos anteriormente para
nuestro resultado.
Tambin podemos observar la presencia de un recuadro denominado Grafica de
espacio vs tiempo, aqu se podr visualizar la grfica de lo mencionado en el ttulo, la
cual ser una especie de curva, ya que es la que tuene relacin con la variacin de
velocidad con respecto al tiempo.

Operacin

En este panel se sitan los distintos botones, con los cuales se interactuara con el
programa.
-

Calcular, permite que se ejecute el programa para mostrar los resultados.


Graficar, permite que la grfica se visualice.
Borra todo, nos permite borrar todo el contenido del programa, para iniciar un
nuevo clculo.

Instrucciones

Como su nombre nos indica, este panel se refiere a las instrucciones para poder ejecutar
el programa de una forma correcta, por eso es necesario seguir paso a paso este.

MOVIMIENTO PARABOLICO
Si elegimos la opcin de MOVIMIENTO RECTILINEO, se nos desplegara la
siguiente ventana:

Como podemos observar, en esta ventana se presentan los mismos paneles, que en la
anterior ventana, siendo:

Entrada de datos
Vo, es la velocidad con la que inicia el cuerpo su movimiento.
Angulo, es el angulo con el que el cuerpo parte, esto tomando como referencia el
suelo.

Aqu se puede observar, que existe un men desplegable, en los cuales ingresaremos las
unidades de la Vo.

Salida de datos

Se nos desplegaran todos los resultados:


-

Tiempo de vuelo de cuerpo, sea el tiempo que se demora desde que inicia hasta

que cae nuevamente al suelo.


Espacio recorrido, es la distancio que se hace desde el punto de inicio hasta el

punto de cada.
Altura mxima alcanzada, es el punto ms alto que alcanza al lanzarse el cuerpo.
Velocidad horizontal en x, es la componente en x del vector de la velocidad

inicial.
Velocidad vertical en y, es la componente en y del vector de la velocidad

inicial.
Velocidad cundo toca el suelo, es la velocidad con la que el cuerpo llega al final
del vuelo.

Tambin podemos observar que aqu en este panel aparecen dos mens
desplegables, en donde no es necesario elegir las unidades para nuestros resultados,
ya que estas saldrn automticamente al elegir las unidades de ingreso de datos.

Operacin

En este panel se sitan los distintos botones, con los cuales se interactuara con el
programa.
-

Calcular, permite que se ejecute el programa para mostrar los resultados.


Graficar, permite que la grfica se visualice.
Borra todo, nos permite borrar todo el contenido del programa, para iniciar un
nuevo clculo.

Instrucciones

Como su nombre nos indica, este panel se refiere a las instrucciones para poder ejecutar
el programa de una forma correcta, por eso es necesario seguir paso a paso este.

MOVIMIENTO CIRCULAR (MCUV)


Si elegimos esta opcin, se nos desplegar:

Como podemos observar, en esta ventana se presentan los mismos paneles, que en la
anterior ventana, siendo:

Entrada de datos
Radio, es el radio que forma el cuerpo al moverse en un movimiento circular.
T, es el tiempo de movimiento, desde que parte hasta que finaliza
Wo, es la velocidad angular inicial con la que parte el cuerpo.
Wf, es la velocidad angular final con la que termina el cuerpo

Aqu se puede observar, que existe un men desplegable, en los cuales ingresaremos las
unidades del radio.

Salida de datos

Se nos desplegaran todos los resultados:


-

Radio
Tiempo
Velocidad angular inicial
Velocidad angular final
Desplazamiento angular, siento el espacio recorrido por el cuerpo.
Aceleracin angular, siendo la aceleracin con la que se mueve el cuerpo.
Aceleracin tangencial, siendo un vector que est sobre la tangente del punto de
la circunferencia y cuyo sentido es igual al de giro.

Tambin podemos observar que aqu en este panel aparecen dos mens
desplegables, en donde en el primero elegiremos las unidades a las que quisiramos
transformar nuestro radio, pero en el segundo no es necesario elegir las unidades
para nuestros resultados, ya que estas saldrn automticamente al realizar el paso
anterior.

Operacin

En este panel se sitan los distintos botones, con los cuales se interactuara con el
programa.

Calcular, permite que se ejecute el programa para mostrar los resultados.


Graficar, permite que la grfica se visualice.
Borra todo, nos permite borrar todo el contenido del programa, para iniciar un
nuevo clculo.
Instrucciones

Indica los pasos para poder ejecutar el programa de una forma correcta, por eso es
necesario seguir paso a paso este.

DEMOSTRACION DEL FUCIONAMIENTO DE LAS INTERFACES

MOVIMIENTO RECTILINEO

MOVIMIENTO PARABOLICO

MOVIMIENTO CIRCULAR (MCUV)

CONCLUSIONES

Para la creacin de cualquier interfaz es necesario tener conocimientos previos, ya que


en esto se har uso de todo lo aprendido anteriormente.
En esta ocasin, haciendo uso de todo lo aprendido se cre una interfaz que permite que
el estudiante que empieza con el estudio de los temas mencionados sobre los tipos de
movimiento en fsica, ya que esta es una interfaz que simula lo comn que aparece en
este tipo de ejercicios.
Al final se compararon los resultados que se obtuvieron en las interfaces, con resultados
obtenidos aparte, y se pudo comprobar que ambos coincidan.

BIBLIOGRAFIA
https://www.youtube.com/watch?v=VgPp0hvUFyw
https://www.youtube.com/watch?v=D3iMp1hn1N8
tutorial de axes en guide en Matlab
https://www.youtube.com/watch?v=Yw8r-LpzG6g
Vallejo. Jorge, Fisica basica, pags.105-144, 1999, Ecuador-Riobamba.
http://es.wikipedia.org/wiki

You might also like