Escolar Documentos
Profissional Documentos
Cultura Documentos
PRACTICAS DE LABORATORIO
Facultad de ingeniera
Ingeniera elctrica
Practica N1
Introduccin a MATLAB
Prof. MSc. Marcos Ponce Jara
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
NDICE
1.
1.2.
1.3.
1.4.
Polinomios ........................................................................................................................ 8
1.5.
1.6.
1.7.
2.
Introduccin a la Practica..................................................................................................... 18
3.
4.
5.
6.
7.
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
1. Introduccin a Matlab
Matlab es un programa de clculo matemtico muy flexible y potente, con posibilidades
grficas para la presentacin de los datos, por lo que se utiliza en muchos campos de la
ciencia y la investigacin como herramienta de clculo matemtico.
Puede ser utilizado como simple calculadora matricial, pero su inters principal radica en
los cientos de funciones tanto de propsito general como especializadas que posee, as como
en sus posibilidades para la visualizacin grfica. MATLAB posee adems un lenguaje de
programacin propio, muy prximo a los habituales en clculo numrico (Fortran, C,) que
permite al usuario escribir sus propios scripts (conjunto de comandos escritos en un fichero,
que se pueden ejecutar con una nica orden) para resolver un problema concreto y tambin
escribir nuevas funciones con, por ejemplo, sus propios algoritmos. MATLAB dispone,
adems, de numerosas Toolboxes, que le aaden funcionalidades especializadas.
Los comandos y funciones que se describen a continuacin funcionan generalmente en
todas las versiones de MATLAB, aunque algunos slo lo hacen en las versiones ms
modernas y otros han quedado obsoletos. En este ltimo caso las versiones ms modernas
disponen de otros comandos o funciones que los sustituyen. Algunos de ellos estn
disponibles bajo botones o mens en las nuevas versiones.
NOTA: En este documento se recogen unos pocos ejemplos de entre las inmensas
posibilidades que ofrece Matlab. Se deben consultar las ayudas de Matlab u otros
documentos si se desea un conocimiento ms amplio. Se deben utilizar y modificar
los ejemplos aqu incluidos para adquirir las destrezas bsicas que permitirn
utilizar el programa como herramienta para la asignatura.
1.1.
>> a=2
a= 2
>> b=3
b=3
>> suma=a+b
suma =
5
O simplemente:
>> 2+3
ans =
5
>> ans
ans =
5
Si se quiere ver el nombre de todas las variables que se estn utilizando se pueden usar
los comandos whos.
Prof. MSc. Ing. Marcos Ponce Jara
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
Con save se pueden guardar todas las variables que se estn utilizando en el
workspace para recuperarlas en cuanto se necesiten (>>save mydata). O se pueden guardar
solamente las variables que nos interesan seleccionndolas en el workspace, haciendo clic
derecho y seleccionando save as. Las variables guardadas aparecern en la parte derecha de
la pantalla en la ventana current forlder (mydata y mydata2).
Para borrar variables que estamos utilizando y que quizs ya no son tiles para el
propsito que perseguimos se utiliza el comando clear. En nuestro caso hemos borrado
las variables: suma y ans que guardamos anteriormente (>>clear suma y >>clear ans).
Para borrar todo el contenido solo se introduce el comando >>clear. Para recuperar nuestro
trabajo guardado >>load mydata.
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
El comando help proporciona ayuda y combinado con otro comando, ayuda sobre ese
comando en concreto (p.ej. help who). Para abandonar el programa se pueden usar los
comandos quit o exit.
1.2.
Matlab maneja matrices, y como casos particulares de las mismas, vectores fila y vectores
columna. En la siguiente figura podemos observar la manera de representar una matriz y de
cmo conocer su dimensin:
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
(2, 3)) o utilizar parte de la misma (matriz (1:3, 2: end)) o hacer que parte de nuestra matriz
sea cero (matriz_2 (1:2,:) =0 )
En caso de tener dos matrices 3x3, A y B, las operaciones que podramos realizar entre
ellas son: A+B, A*B, A^3, det (A) (encuentra el determinante de la matriz), entre otras.
1.3.
Vectores complejos
Obsrvese que la unidad imaginaria puede representarse tanto con i como con j. La
utilizacin del operador de multiplicacin * es necesaria casi siempre, caso contrario
recibiremos un error: Undefined function or variable 'bi' o Not enough input arguments.
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
Tenemos varias funciones para trabajar con nmeros imaginarios dentro de Matlab, por
ejemplo: real (complejo) nos retornar la parte real de nmero o imag (complejo) nos
retornar el imaginario. Caso parecido tendremos con las instrucciones isreal ( ), pero en
este caso retornar 0 cuando sea complejo, caso contrara retornar un 1. Por otro lado para
encontrar su mdulo utilizamos el comando abs ( ) Supongamos que para este ejemplo a =
1 +3* i; b = 1; c = i
Para conseguir el argumento se aplica el comando angle ( ), el cual nos arroja el ngulo
en radianes. Aplicar este comando es lo mismo que hacer atan (imag(a)/real(a))
Si queremos el ngulo expresado en grados debemos utilizar rad2deg ( ). Hay que notar
que tambin existe la funcin inversa deg2rad ( ). Por tanto si queremos convertir un nmero
complejo a forma polar se puede realizar en dos pasos:
En este punto podra resultar interesante poder observar la representacin grfica de los
complejos en el plano. Mediante la funcin polar (angle ( ), abs ( ), *r). Esta funcin
recibe dos argumentos, el primero es el argumento del nmero complejo a representar, y el
segundo su mdulo. El tercer argumento es opcional, no obstante sirve para representar de
forma ms clara donde se encontrara el punto en cuestin, en este caso se representar
mediante un asterisco de color rojo.
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
NOTA: obviamente "i", "j", "ans", "pi", "help", "sin", etc. son nombres que ya estn
definidos para variables, constantes, comandos o funciones de Matlab y no se deben usar
para nombrar nuevas funciones o variables del usuario. Matlab distingue entre
maysculas y minsculas!
1.4.
Polinomios
Matlab nos brinda una serie de funciones para trabajar con los polinomios. Estos son
introducidos al programa en forma de vector y siguiendo las siguientes reglas:
Tienen que estar ordenados en forma decreciente por su grado
Deben de estar presentes todos los coeficiente, aun cuando su valor es 0
>> a = [ 1 1 1 ] x2 + x +1
>> a = [ 2 0 1 3 ] 2x3 + 0 x2 + x + 3
Las funciones bsicas que encontramos para trabajar con polinomios se resumen a
continuacin:
1. roots (p): Obtiene races de un polinomio dado
Calcula las races de un polinomio cuyos coeficientes son elementos del vector p.
Ejemplo: q(x)=x2 -5x +6
Prof. MSc. Ing. Marcos Ponce Jara
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
5. Producto escalar: Multiplica los calores de dos vectores dados uno a uno.
Es importante recalcar el uso del . antes del vector a, ya que esto significa termino por
termino. Para obtener el producto escalar de estos dos vectores se realiza:
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
8. Suma y Resta
Para poder sumar y restar polinomios tenemos que tener presente que ambos vectores
tienen que tener la misma dimensin, caso contrario el programa nos dar error. Por tanto
antes realizar estas operaciones tendremos que rellenar con ceros los vectores que no tengan
la misma dimensin.
Universidad Laica
Eloy Alfaro de Manab
1.5.
Anlisis Numrico
Ingeniera Electrica
Los scripts de MATLAB deben guardarse en un fichero con sufijo .m para ser
reconocidos. Para ejecutar un script que est en el directorio de trabajo, basta escribir su
nombre (sin el sufijo) en la lnea de comandos.
Una funcin (habitualmente denominadas M-funciones en MATLAB), es un programa
con una "interfase" de comunicacin con el exterior mediante argumentos de entrada y de
salida. Las funciones MATLAB responden al siguiente formato de escritura (la clusula end
del final no es obligatoria, excepto en el caso de funciones anidadas, que se explica ms
adelante):
function [argumentos de salida] = nombre(argumentos de entrada)
% comentarios % ....
instrucciones (normalmente terminadas por ; para evitar eco en pantalla) ....
end (opcional salvo en las funciones anidadas)
Las funciones deben guardarse en un fichero con el mismo nombre que la funcin y sufijo
.m. Se pueden incluir en el mismo fichero otras funciones, denominadas subfunciones, a
continuacin de la primera, pero slo sern visibles para las funciones del mismo fichero.
Tambin es posible definir funciones anidadas, esto es, funciones insertadas dentro del
cdigo de otras funciones. (Se exponen aqu para conocer su existencia. Su utilizacin es
delicada.)
%**************************%
%Ejemplo de una funcin anudada%
%**************************%
funcion z = tresxcuadrado(x)
funcin [y]=cuadrado(x)
end
z=3*cuadrado(x);
end
1.6.
Representacin Grfica 2D
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
Graficas 2D:
Los grficos 2D que permite crear Matlab son curvas planas y superficiales, posibilitando
la agrupacin y la superposicin, adems de trabajar con colores, rejillas, marcos, etc.
Para realizar grficas de funciones de una variable del tipo y=f(x), primero tenemos que
crear una tabla de valores de la variable para despus dibujar la funcin. Por ejemplo,
queremos dibujar la grfica de la funcin y=sen(x).
Primero creamos una tabla vector (el vector x), en este caso creamos 200 puntos con
valores entre 0 y 2*pi mediante el comando linspace (xmin, xmax, n). Esta funcin nos
permitir definir un vector x con un rango de variacin que deseemos para pintar la funcin.
>>x=linspace (0, 2*pi, 200);
Ahora calculamos los valores de y
>> y = sin(x);
Y por ltimo dibujamos la figura:
>>plot (x, y)
Por defecto lo que hemos hecho es dibujar 200 puntos de la funcin en el intervalo [0,
2*pi], y posteriormente el programa los ha unido mediante segmentos. Si el nmero de
puntos es lo suficientemente grande, como es el caso, no se aprecian los vrtices.
Tambin es posible dibujar una funcin con el comando fplot (f(x), [xmin, xmax]).
As, este comando admite como argumento un nombre de funcin o de un fichero .m en el
que est definida la funcin. En el ejemplo evaluaremos la funcin sin(x) con valores que
van de 0 a 2*pi con una amplitud de -1 a 1.
>>fplot (sin(x)', [0, 2*pi, -1, 1])
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
Los ejes que aparecen por defecto en una grfica tambin se pueden modificar. Con el
comando >>axis ([-2 2 -1 1]), conseguiremos que la grfica aparezca en una regin acotada
por nosotros.
Se pueden dibujar tantas grficas como se quieran en una misma figura. Si ya tenemos
dibujada una, y generamos una nueva grfica, en principio la figura anterior es sustituida por
la nueva. Sin embargo, utilizando el comando >>hold on, se mantendr la anterior, con todas
sus propiedades, y se podr dibujar encima una nueva. Para desactivar el comando anterior
se usa el comando >>hold off. Otra forma de hacerlo es dibujar desde el principio dos
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
grficas juntas, por ejemplo, vamos a dibujar las grficas de las funciones y=sen(x) e y=sen(x
+ pi/3) en la misma grfica.
Generamos las tablas
>>x = linspace (0, 2*pi, 300);
>>y = sin (x);
>>z = sin (x + pi/3);
Y ahora dibujamos
>>plot (x, y, r-, x, z, g), grid on;
Adems de esto existen diversas posibilidades para el etiquetado de las grficas. Vamos
a ver un ejemplo:
>>x = linspace (-3, 3, 500);
>>y = exp (-x. ^2);
>>z = 2*exp (-x. ^2)
>>plot (x, y, -, x, z, )
>>title (campana de Gauss)
>>xlabel (Eje de Abscisas)
>>ylabel (Eje de Ordenadas)
>>legend (exp(-x^2), 2*exp(-x^2))
Universidad Laica
Eloy Alfaro de Manab
1.7.
Anlisis Numrico
Ingeniera Electrica
Bucle FOR
o bien
for i=vectorValores
sentencias
end
donde vectorValores es un vector con los distintos valores que tomar la variable i.
En el siguiente ejemplo se presenta el caso ms general para la variable del bucle
(valor_inicial: incremento: valor_final); el bucle se ejecuta por primera vez con i=n, y luego
i se va reduciendo de 0.2 en 0.2 hasta que llega a ser menor que 1, en cuyo caso el bucle se
termina:
for i=n:-0.2:1
sentencias
end
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
end
end
Una de las caractersticas principales de los bucles for, como hemos observado, la
constituye la variable del bucle (variable). Esta variable va tomando valores entre inicio y
final de paso en paso. Cada vez que se ejecuta el bucle, variable toma un valor diferente. Al
inicio del bucle, variable es igual a inicio. La segunda vez, variable es igual a inicio+paso, y
as sucesivamente, hasta que al final variable es igual a final. Si se omite el paso, MATLAB
entiende que el paso es igual a uno.
Es muy importante mantener unas ciertas cuestiones de estilo de programacin. Por eso,
deben sangrarse o indentarse adecuadamente todas las sentencias que se ejecuten dentro del
bucle, segn se ha hecho en el programa anterior. El editor de Matlab lo hace
automticamente.
Ejecucin del programa paso paso (Debuggin Points)
Muchas veces, cuando usamos el bucle for, queremos saber exactamente que estamos
calculando en cada momento para de esta manera comprobar que nuestro programa funciona
correctamente. Para ello hay un comando en llamado Set Breakpoint.
Creamos un script que nos calcule el factorial de un nmero mediante un bucle for.
n=4;
resultado=1;
for k=1:4
resultado=resultado*k;
end
disp(resultado)
Sealamos con el puntero del ratn la segunda lnea y pulsamos el botn derecho del ratn, en el
men que aparece elegimos Set Breakpoint.
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
Corremos el script pulsando en el botn flecha de color verde, Run. El script se detiene
en la segunda lnea (establecida como breakpoint).
Se pulsa la tecla F10 (o en el men Debug->Step) para correr el programa paso a paso y
se sita el puntero del ratn sobre la variable resultado para ver los valores que va tomando.
La flecha horizontal de color verde nos indica la lnea que se est ejecutando
Cuando la flecha verde apunta hacia abajo, MATLAB termina la ejecucin del programa.
Alternativamente, eliminando el punto y coma del final de la cuarta lnea, podemos ver
en la ventana de comandos los valores que va tomando la variable resultado, a medida que
se ejecuta el bucle for.
resultado
resultado
resultado
resultado
=
=
=
=
1
2
6
24
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
2. Introduccin a la Practica
Matlab es una herramienta que se utilizar como eje transversal para la resolucin y
comprobacin de resultados tericos presentados en clase. De la misma manera nos ser de
vital importancia para la resolucin de las prcticas, las cuales irn creciendo en complejidad
a medida que se avance en la asignatura.
Una vez revisados e interiorizados todos los conceptos descritos en el apartado anterior,
se proceder a realizar una serie de ejercicios en los que intervendrn muchos de los
conceptos y comandos descritos.
Esta primera prctica es de carcter introductorio y busca sentar las bases para la
utilizacin de este programa informtico en prcticas posteriores de mayor complejidad. El
problema planteado se basa en la utilizacin del bucle FOR para el clculo del factorial de
un nmero cualquiera; para ello se tendr que utilizar un script donde guardaremos el cdigo
de nuestro programa. El archivo que se cree tiene que tener forma de funcin, de tal forma
que ese se pueda llamar desde el Command Windows y se pueda reutilizar de forma
anidada en cualquier otro programa que se cree.
3. Objetivos de la practica
Cada grupo de estudiantes es responsable del correcto uso de los equipos informticos
presentes en los laboratorios.
En caso de detectar el funcionamiento defectuoso de algn equipo se debe comunicar al
profesor encargado para ser corregido lo ms pronto posible.
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
En este primer ejercicio se ver una sencilla aplicacin de los bucles for: Clculo
del factorial de un nmero mediante un bucle FOR.
n
5
Resultado=
resultado
i
1
Segunda iteracin
Resultado=
Nota: para crear una funcin y poder llamarla desde la ventana Command Windows de
MATLAB el archivo .m tiene que tener el mismo nombre que la funcin. Para utilizarla,
se escribir por ejemplo: >> fact (3).
Se tomaran las siguientes variables para programar la funcin:
Universidad Laica
Eloy Alfaro de Manab
Anlisis Numrico
Ingeniera Electrica
II.
Escriba el cdigo del mismo programa pero que realice el factorial desde n hasta 1,
de -1 en -1.
El programa principal tiene que ser una funcin: function resultado=factDec(n), de
forma que este se pueda llamar desde el la ventana de comandos de MATLAB.
III.
Nota: para este caso se tiene que utilizar la condicin IF antes de entrar en el bucle
FOR. Tambin se tiene que utilizar la palabra reservada nargin como condicin del
comando IF; la cual indica el nmero de valores pasados a la funcin como parmetros.
(consultar >> help if / help nargin / help return)
b) Ampli el programa anterior (cree otra funcin facDec3( )) para que en el caso de
pasarle la funcin con valores negativos nos muestre el siguiente mensaje y nos de como
resultado -1:
>> facDec3(-10)
El parmetro a introducir tiene que ser estrictamente positivo
ans =
1