Está en la página 1de 10

Prácticas de Universidad Pública de Navarra

TEORÍA DE MÁQUINAS Nafarroako Unibertsitate Publikoa

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

Práctica 2 INTRODUCCIÓN A MATLAB Pag 1


Prácticas de Universidad Pública de Navarra
TEORÍA DE MÁQUINAS Nafarroako Unibertsitate Publikoa

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

Práctica 2 INTRODUCCIÓN A MATLAB Pag 2


Prácticas de Universidad Pública de Navarra
TEORÍA DE MÁQUINAS Nafarroako Unibertsitate Publikoa

Obsérvese que el fichero mi_exponente.m alberga una función de nombre


mi_exponente. Esta función tomará 2 parámetros (m,n), y devolverá un escalar (r). Esta
función se utiliza dentro del fichero principal.m en múltiples ocasiones, y cada vez se
utiliza con diferentes parámetros. Las variables “i” en cada uno de los ficheros son
diferentes y no se confunden. Todo lo que sucede dentro de la función mi_exponente es
independiente del resto del programa.
Debe advertirse también que el código que hay en el fichero principal.m no es una
función sino un procedimiento. Para ejecutar este código, habrá que escribir en MATLAB
el nombre del fichero en el que está el código sin el “.m”, o sea: principal.

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

Práctica 2 INTRODUCCIÓN A MATLAB Pag 3


Prácticas de Universidad Pública de Navarra
TEORÍA DE MÁQUINAS Nafarroako Unibertsitate Publikoa

2.5.Listado de comandos

2.5.1.Introducción al programa:

En el Tema 2 del documento se hace una introducción al programa y al entorno


gráfico del programa. Es interesante leerlo para entender la filosofía del programa y
también su estructura.
Página 2.

2.5.2.help:

La instrucción help proporciona ayuda sobre cualquier otra instrucción de


MATLAB. Para obtener información sobre cualquier instrucción como por ejemplo la
instrucción for, debe escribirse en la ventana de comandos: help for . Es muy interesante
para saber qué hace exactamente cada instrucción y cuál es la sintaxis que hay que utilizar.
Página 6.

2.5.3.Definición de matrices y vectores:

Para definir un vector fila: vf=[1,2,3];


Para definir un vector columna: vc=[1;2;3;];
Para definir una matriz: m=[1,2,3;4,5,6;7,8,9;];
Páginas 21-22

2.5.4.Para acceder a los elementos de una matriz:

m(i,j) apunta al elemento de la fila i y la columna j.


Página 22

2.5.5.Generación de vectores y selección de submatrices:

x=1:2:11 genera el vector x=[1,3,5,7,9,11]; (del 1 al 11 de 2 en 2)


y1=x([1:3]) genera el vector y1 con las tres primeras componentes del vector x

Práctica 2 INTRODUCCIÓN A MATLAB Pag 4


Prácticas de Universidad Pública de Navarra
TEORÍA DE MÁQUINAS Nafarroako Unibertsitate Publikoa

y2=x([1,3]) genera el vector y2 con la primera y tercera componentes del vector x


m=[1:2:5;2:2:6]; general la matriz m=[1,3,5; 2,4,6;];
n1=m(:,2); genera el vector columna n1, con todas las filas de m (:) y la columna 2.
n2=m(:,[1,3]); genera la matriz n2, con las dos filas de m pero sólo con las comunas 1 y 3.
Se recomienda realizar toda esta secuencia de instrucciones con MATLAB o bien las
que aparecen en la sección 3.5.4 del documento.
Página 30

2.5.6.Para calcular la inversa de una matriz:

n=inv(m) representa la inversa de m.


Página 22

2.5.7.Para calcular la solución del sistema Ax=b :

Bien podemos decir que x=inv(A)*b


o bien podemos hacer : x=A\b Página 24
Debemos tener en cuenta que para Matlab no es lo mismo dividir por la izquierda que por
la derecha: y=c*inv(B) es lo mismo que y=c/B (división por la derecha).
Página 25

2.5.8.Operaciones con matrices:

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

Práctica 2 INTRODUCCIÓN A MATLAB Pag 5


Prácticas de Universidad Pública de Navarra
TEORÍA DE MÁQUINAS Nafarroako Unibertsitate Publikoa

2.5.10.Obtener información de dimensión de matrices:

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

2.5.11.Funciones matemáticas elementales que actúan de forma


escalar

Las funciones seno, coseno y tangente tiene la siguiente sintaxis: sin(x), cos(x), tan(x)
Página 38

2.5.12.Funciones matemáticas elementales que actúan vectores y


matrices

Las funciones máximo de un vector o suma de componentes se escriben: max(v), sum(v)


Página 39

Práctica 2 INTRODUCCIÓN A MATLAB Pag 6


Prácticas de Universidad Pública de Navarra
TEORÍA DE MÁQUINAS Nafarroako Unibertsitate Publikoa

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

Existe también la bifurcación múltiple, en la que pueden concatenarse tantas condiciones


como se desee, y que tiene la forma:

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

En el siguiente ejemplo se presenta una estructura correspondiente a dos bucles anidados.


La variable j es la que varía más rápidamente (por cada valor de i, la variable j toma todos
sus posibles valores):

Práctica 2 INTRODUCCIÓN A MATLAB Pag 7


Prácticas de Universidad Pública de Navarra
TEORÍA DE MÁQUINAS Nafarroako Unibertsitate Publikoa

for i=1:m
for j=1:n
sentencias
end
end

SENTENCIA WHILE

La estructura del bucle while es la siguiente:


while condición
sentencias
end

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

Práctica 2 INTRODUCCIÓN A MATLAB Pag 8


Prácticas de Universidad Pública de Navarra
TEORÍA DE MÁQUINAS Nafarroako Unibertsitate Publikoa

2.5.14.Funciones de representación gráfica:

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)

Práctica 2 INTRODUCCIÓN A MATLAB Pag 9


Prácticas de Universidad Pública de Navarra
TEORÍA DE MÁQUINAS Nafarroako Unibertsitate Publikoa

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

Práctica 2 INTRODUCCIÓN A MATLAB Pag 10

También podría gustarte