Beruflich Dokumente
Kultur Dokumente
2. Práctica
2.1.Introducción
En esta práctica se pretende dar una introducción al manejo del programa
MATLAB. Éste es un programa de cálculo numérico que sirve en sus funciones más
básicas, para trabajar con matrices. En las siguientes prácticas se utilizará este programa
para realizar la simulación cinemática de mecanismos, por lo que se realizarán cálculos
matriciales para calcular la posición, velocidad y aceleración de los mecanismos a estudio.
Por tanto en esta práctica de introducción se pretende conocer y utilizar los comandos de
MATLAB que se utilizarán en las siguientes prácticas.
2.2.Funcionamiento de MATLAB
A la hora de utilizar MATLAB es muy importante trabajar en un directorio
concreto en el que tengamos los ficheros que vamos a ir construyendo. En cada fichero
crearemos una función y así tendremos un programa con varios módulos bien
diferenciados, de forma que cada módulo realice una tarea concreta.
2.3.Programas modulizados
A la hora de realizar cualquier programa de ordenador, ya sea en el código que sea,
dividir el código en módulos es crucial. En la medida de lo posible, hay que intentar crear
funciones que dependan de algún parámetro y sean simples y muy utilizadas dentro del
programa general. En Matlab, varias funciones pueden ser escritas en un mismo fichero,
pero es más limpio y claro escribir cada función en un fichero diferente.
Para ello hay que crear los ficheros y escribir una función en cada uno de ellos. Es
conveniente que el fichero tenga el mismo nombre que la función que tiene dentro.
(Definición de funciones):
Página 64
Por ejemplo, si queremos realizar un programa que nos calcule la n-ésima potencia
de un número m, podemos preparar el siguiente programa:
principal.m
x=0:1:9;
e=3;
y=zeros(10);
for i=1:1:10
y(i)=mi_exponente(x(i),e);
end
plot(x,y)
mi_exponente.m
function r=mi_exponente(m,n)
r=1;
for i=1:n
r=r*m;
end
2.4.Comandos
MATLAB es un lenguaje de programación en el que muchas funciones ya están
programadas. Podríamos realizar un programa para la realización de un producto de dos
matrices. También podríamos programar la resolución de un sistema lineal de ecuaciones o
la solución por mínimos cuadrados de un sistema incompatible; pero estas funciones ya
están implementadas. A los lenguajes de programación en los que existen muchas
funciones que realizan tareas complicadas se los llama: lenguajes de alto nivel. MATLAB
es uno de estos lenguajes.
En esta sección se va a realizar un listado de comandos de MATLAB con una
breve descripción de para qué sirven y como se utilizan. Además se proporcionará una
referencia a un documento libre en la red en la que aparece toda la información que se
necesita para aprender a utilizar MATLAB. El documento se titula:
“Aprenda MATLAB 6.1 como si estuviera en primero” y está accesible en la
siguiente dirección web:
http://mat21.etsii.upm.es/tayuda/ayudainf/index.htm
2.5.Listado de comandos
2.5.1.Introducción al programa:
2.5.2.help:
Las matrices pueden sumarse, restarse, multiplicarse, trasponerse, etc. Los símbolos que se
utilizan en MATLAB puedes encontrarlos en:
Página 23
2.5.9.Matrices predefinidas:
Existen varias matrices predefinidas como la matriz identidad eye(n), la matriz llena de
unos ones(3,2), y la matriz de ceros zeros(1,4)
Página 29
Podemos obtener la dimensión de matrices con la orden size(m) o de vectores con la orden
length(v). El resultado será un escalar o una matriz de números. Para obtener la diagonal de
una matriz se utiliza la orden diag(m).
Página 30
Las funciones seno, coseno y tangente tiene la siguiente sintaxis: sin(x), cos(x), tan(x)
Página 38
2.5.13.Programación en MATLAB:
Al igual que otros lenguajes de programación, MATLAB cuenta con varias instrucciones
para controlar el flujo del programa en base a bucles o sentencias condicionales. Las más
comúnmente utilizadas son las sentencias: if, for, while, y break. Su sintaxis es la
siguiente:
SENTENCIA IF
En su forma más simple, la sentencia if se escribe en la forma siguiente:
if condicion
sentencias
end
if condicion1
bloque1
elseif condicion2
bloque2
elseif condicion3
bloque3
else % por defecto para cuando no se cumplan las condiciones 1,2,3
bloque4
end
SENTENCIA FOR
La sentencia for repite un conjunto de sentencias un número predeterminado de veces. La
siguiente construcción ejecuta sentencias para valores de i de 1 a n, variando de uno en
uno.
for i=1:n
sentencias
end
for i=1:m
for j=1:n
sentencias
end
end
SENTENCIA WHILE
donde condición puede ser una expresión vectorial o matricial. Las sentencias se siguen
ejecutando mientras haya elementos distintos de cero en condición, es decir, mientras haya
algún o algunos elementos true. El bucle se termina cuando todos los elementos de
condición son false (es decir, cero).
SENTENCIA BREAK
La sentencia break hace que se termine la ejecución del bucle más interno de los
que comprenden a dicha sentencia.
Página 39
MATLAB dispone de cuatro funciones básicas para crear gráficos 2-D. Estas funciones se
diferencian principalmente por el tipo de escala que utilizan en los ejes de abscisas y
ordenadas. Estas cuatro funciones son las siguientes:
plot(): crea un gráfico a partir de vectores y/o columnas de matrices, con escalas
lineales sobre ambos ejes. Es la función de representación más utilizada y merece la pena
conocer a fondo su potencial. Página 91
loglog(): ídem con escala logarítmica en ambos ejes.
semilogx(): ídem con escala lineal en el eje de ordenadas y logarítmica en el eje de
abscisas.
semilogy(): ídem con escala lineal en el eje de abscisas y logarítmica en el eje de
ordenadas.
Existen además otras funciones orientadas a añadir títulos al gráfico, a cada uno de los
ejes, a dibujar una cuadrícula auxiliar, a introducir texto, etc. Estas funciones son las
siguientes:
title('título'): añade un título al dibujo.
xlabel('tal'): añade una etiqueta al eje de abscisas. Con xlabel off desaparece.
ylabel('cual'): añade una etiqueta al eje de ordenadas. Con ylabel off desaparece.
Página 90
Como ejemplo de las posibilidades que ofrece esta función, se puede aplicar el siguiente
guión:
» x=[-4*pi:pi/20:4*pi];
» plot(x,sin(x),'r',x,cos(x),'g')
» title('Función seno(x) -en rojo- y función coseno(x) -en verde-')
» xlabel('ángulo en radianes'), figure(gcf)
» ylabel('valor de la función trigonométrica'), figure(gcf)
» axis([-12,12,-1.5,1.5]), figure(gcf)
» axis('equal'), figure(gcf)
» axis('normal'), figure(gcf)
» axis('square'), figure(gcf)
» axis('off'), figure(gcf)
» axis('on'), figure(gcf)
» axis('on'), grid, figure(gcf)
2.6.Resultados a entregar
- Programa de cálculo para elevar un número m a la n-ésima potencia.
(Código incluido en esta práctica).
- Programar el algoritmo de Newton para resolver la siguiente ecuación
para una precisión de x de 10-5.
f ( xk )
o xk + 1 = xk −
f ′( x k )
o ex − 2 = 0