Está en la página 1de 16

Fractales con MATLAB

Benjamn Dugnol lvarez


dugnol@ieee.org

Departamento de Matemticas Universidad de Oviedo

Notas para uso de los alumnos de DAO (en construccin) Oviedo, Noviembre de 2000

CONTENIDO:
Captulo 0
Primer contacto con MATLAB

Captulo 1
Vectores y matrices en MATLAB

Captulo 2
Los tipos de datos en MATLAB

Captulo 3
Programacin

Captulo 4
Grficos 2D

Captulo 5
Grficos 3D

Captulo 6
Interfaces grficas de usuario (GUI)

Captulo 0.
Primer contacto con MATLAB
Contenido: 0.1 Introduccin 0.2 Tipos de datos fundamentales en MATLAB 0.3 El espacio de trabajo de MATLAB 0.4 Clculos elementales con MATLAB 0.5 Utilizacin de funciones elementales pre-definidas 0.6 Manejo de ficheros 0.7 Resumen

0.1 Introduccin.El MATLAB es una herramienta interactiva y abierta para computacin cientfica, programacin y visualizacin de datos, desarrollada por The MathWorks, Inc. Originalmente, este sistema fu escrito por Cleve Moler, en 1980, en la Universidad de Mexico, en lenguaje Fortran: El objetivo perseguido era mejorar el interfaz de usuario con la librera de subrutinas LINPACK La versin actual est escrita en lenguaje C por The MathWorks Inc. Adems de la herramianta principal (el MATLAB), este sistema est complementado por numerosas Toolbox, que lo especializan en diversos dominios de trabajo, desde el clculo simblico hasta el proceso de seales y de imgenes, pasando por las finanzas. Bajo Windows 95/98/NT, el programa se arranca desde la correspondiente ventana del men Inicio, mostrando a continuacin un ambiente grfico denominado Ventana de Comandos de MATLAB. Aunque ste es el entorno habitual de trabajo, es posible construir interfaces grficas de usuario (GUI), que permiten integrar la ejecucin de mltiples tareas. Un ejemplo es la ventana MATLAB demos (Figura 2). La versin 5 contiene ms de 500 funciones que son ejecutadas por medio de comandos. El entorno es abierto, entre otras razones, porque muchas de estas funciones se

Figura 1
integran en el sistema por medio de ficheros de texto, tcnicamente denominados ficherosm. Por otra parte, el usuario puede construir sus propios ficheros-m, eventualmente agrupados en nuevos toolbox, aadiendo as nuevas funciones a las ya existentes,

convirtiendo la herramienta en un entorno de trabajo mejor adaptado a las necesidades del utilizador. Como acabamos de sugerir, algunas funciones de MATLAB no estn soportadas por correspondientes ficheros-m: son funciones internas, incluidas en el kernel de MATLAB. Una de estas funciones responde al comando help, que proporciona ayuda en lnea, y puede tener como argumentos a) cualquier otra funcin; b) un subdirectorio o ninguno. En este ltimo caso muestra una serie de tpicos, clasificando los comandos de

Figura 2

Figura 3
5

acuerdo con su finalidad, lo que se consigue agrupando dichos comandos en un mismo subdirectorio. Naturalmente, podemos incluir help como argumento de help (Figura 3). El resultado es, como esperbamos, una explicacin de la utilidad del comando help como ayuda en lnea, junto con los argumentos que, eventualmente, pueden acompaarle. Es conveniente decir que lo que hace el comando help es leer las lneas de comentario que encabezan los ficheros-m, devolvindolas como respuesta a la ventana de comandos de MATLAB. De esta forma, si nuestros propios ficheros-m requieren explicacin sobre su finalidad e instrucciones de uso, el texto correspondiente deber ser incluido como cabecera en aquellos, haciendo preceder en cada lnea (de comentario) el carcter %. En la Figura 4 se muestra el fichero-m del comando help. Como se trata de una funcin interna, slo contiene lneas de comentario. Otro procedimiento para obtener informacin es lookfor, que debe llevar como argumento una cadena de caracteres, y devuelve a la ventana de comandos de MATLAB una lista con todos los ficheros-m cuyas lneas de comentario (de cabecera) contienen a la citada cadena de caracteres. La Figura 5 muestra la respuesta de lookfor cuando se utiliza con el argumento wavelets. Es importante destacar que MATLAB es sensible al uso de maysculas o minsculas. En general, los comandos se denominan mediante una cadena de caracteres que puede incluir letras (minsculas) y nmeros (no el primer carcter). El fichero-m correspondiente debe tener un nombre construido con la cadena que identifica al comando

Figura 4
con la extensin .m.

Figura 5
El abandono del programa MATLAB se puede hacer con los comandos exit , quit o abriendo el men desplegable File y ejecutando la orden Exit MATLAB. Cuando se desea interrumpir una tarea antes de su trmino, se hace con la combinacin ctrl-C.

0.2 Tipos de datos fundamentales en MATLAB


Cuando se ejecuta el comando help datatypes, la respuesta es una lista de los comandos relacionados con todos tipos de datos y de las estructuras que se pueden manejar en MATLAB. En la versin 5.2 existen siete clases fundamentales de datos: double, sparse, char, cell, struct, uint8, inline Estas clases no son sino diferentes formas de guardar informacin. Por el momento hablaremos de dos de ellas, que son double y char. La clase double es adecuada para representar cantidades numricas, que pueden ser nmeros enteros o racionales. Obsrvese que, a diferencia de lo que ocurre en FORTRAN y otros lenguajes de programacin, para los enteros no se hace uso de una clase de datos diferenciada. La equivalencia es la de doble precisin en FORTRAN. Adems de identificar clases de datos, double y char son rdenes de MATLAB que sirven para convertir los datos de una clase a otra, como veremos ms adelante. Existen tres parmetros que gobiernan la precisin del trabajo numrico de MATLAB:

realmin eps

La ms pequea cantidad de punto flotante normalizada. Precisin relativa de punto flotante

2.2251e-308 1.7977e+308 2.2204e-016

realmax La ms grande cantidad de punto flotante normalizada.

Es posible obtener cantidades ms pequeas que realmin y ms grandes que realmax, pero no se consideran numricamente estables (normas IEEE). La cantidad eps se utiliza como tolerancia por defecto en diversas funciones de MATLAB. Con independencia de la representacin interna de cada cantidad, se puede seleccionar el formato de visualizacin mediante el comando format, que permite, entre otras posibilidades, ver 4 dgitos despus del punto decimal (format short, que es la opcin por defecto), 15 dgitos (format long) o dos dgitos despus del punto decimal (format bank). Para cantidades muy grandes o muy pequeas, la opcin e fuerza la aparicin de la notacin exponencial (format short e, format long e). La clase char se usa para almacenar cadenas de caracteres. Antes de seguir, conviene subrayar un concepto fundamental. La denominacin MATLAB es un acrnimo de MATrix LABoratory. De aqu podramos deducir que esta herramienta trabaja bien con matrices. Sin embargo, hay algo ms: TODAS las clases de datos estn organizadas como matrices. Por ejemplo, incluso en el caso de manejar una cantidad numrica, estamos manejando una matriz de una fila y una columna.

Figura 6

La introduccin de valores en variables double o char se efecta atribuyndoles un nombre y, eventualmente, por asignacin. Para construir el nombre de una variable se escribe una cadena de caracteres, letras minsculas y maysculas y nmeros, evitando comenzar por un nmero:

cantidad=22.5 cantidad = 22.5000 palabra='contenido del dato palabra' palabra = contenido del dato palabra
Como es habitual en otros lenguajes, los valores de las cadenas de caracteres se entrecomillan. En la seccin siguiente veremos cmo MATLAB almacena, durante el tiempo que dure la sesin de trabajo, los nombres y los valores de estas variables. El conjunto de caracteres vlidos para construir nombres de variables incluye el carcter _. Como en la mayora de los lenguajes de programacin, en MATLAB existe un cierto nmero de nombres reservados, que caracterizan funciones o valores uso frecuente. En el prrafo 2 se ha hecho referencia a realmin, realmax y eps, y la tabla que sigue muestra otros nombres especiales que no deben ser usados como nombres de variables. Esta tabla no agota dichos nombres, entre otras razones porque faltan los nombres de las funciones de MATLAB.

Nombre reservado pi inf NaN date clock now iyj nargin nargout

Significado El nmero real infinito Not a Number Fecha actual en formato dd-mmm-aaaa Fecha y hora actual en forma de vector Fecha y hora actual en forma de cantidad numrica Nmeros complejos Nmero de argumentos de entrada de una funcin Nmero de argumentos de salida de una funcin

Valor 3.1416

-1

Si a y b son la parte real e imaginaria del complejo z, se puede escribir indisstintamente z=a+bi o z=a+b*i.

0.3 El espacio de trabajo de MATLAB


En cada sesin de MATLAB, queda almacenada en una parcela de memoria temporal la sucesin de lneas de comando en el orden en que son ejecutadas, junto con los nombre de los diferentes tipos de datos (variables) que se utilizan durante la sesin, con su correspondiente valor. Las funciones que precisan argumentos, deben obtener su valor mediante transferencia al ser ejecutadas o bien desde esta parcela de memoria del sistema que se denomina espacio de trabajo de MATLAB. Por ejemplo, considerando la sesin en la que introducimos las variables cantidad y palabra, podemos obtener el contenido del espacio de trabajo (a) ejecutando las rdenes whos, para nombres de variables y valor de las mismas), who, para denominaciones de variables solamente, y

10

(b) pulsando repetidamente la tecla (), para obtener los comandos sucesivos ejecutados durante la sesin, que se convierten, de este modo, en lneas editables. Adems, no debemos olvidar la utilidad del portapapeles de Windows, que se puede usar en la ventana

Figura 7
de comandos de MATLAB. La orden clear permite borrar las variables (y sus contenidos) del espacio de trabajo. Si aadimos como argumento el nombre de una lista de variables, slo esta lista resulta borrada. La orden clear all debe manejarse con mucha precaucin. La orden save nombredesesin, guarda el espacio de trabajo en el disco, en un formato binario especial de MATLAB, con la extensin .mat, siendo el nombre por defecto matlab.mat. Una sesin guardada de esta forma, se puede cargar en el espacio de trabajo mediante la orden load seguida del nombre del correspondiente fichero .mat. Es posible, por otra parte, especificar los nombres de las variables que interesen, de forma que el resto se perdern al terminar la sesin. Finalmente mencionaremos que es posible hacer uso de formatos alternativos a los .mat (Para obtener ms informacin, ejectense las rdenes help save y help load) y ver la seccin 0.6. Anlogamente, la orden diary on almacena todas las lneas de comando emitidas a lo largo del desarrollo de una sesin, as como la mayor parte de los resultados obtenidos en el fichero de texto de nombre diary. Las sesiones sucesivas se aaden unas a continuacin de otras. Esta observacin es importante para la eventualidad de necesitar la ayuda de otro usuario con el fin de localizar la fuente de un error en una tarea de terminada, ya que es posible remitir la secuencia de lneas de comando a travs de un correo electrnico. La orden diary off desactiva la escritura en el fichero, cuyo nombre es susceptible de ser cambiado.

11

0.4 Clculos elementales con MATLAB


Las operaciones elementales suma, multiplicacin, divisin y clculo de exponenciales, funcionan en principio con los smbolos a que estamos acostumbrados en otros lenguajes: Operacin Suma Diferencia Multiplicacin Divisin por la izquierda Divisin por la derecha Expresin exponencial Expresin en MATLAB x+y x-y x*y x/y x\y x^y

En ausencia de parntesis de asociacin, la tabla siguiente muestra las prioridades de los distintos operadores en MATLAB: Prioridad 1 2 3 4 Operador Parntesis de asociacin Expresin exponencial, de izquierda a derecha Multiplicacin y divisin, de izquierda a derecha Adicin y sustracci

12

Por ejemplo, para determinar la superficie comprendida entre un cuadrado de lado la=2 y la circunferencia inscrita, podramos escribir:

Figura 8

area_e=la*la; area_i=pi*(la/2)^2; area_f=area_e-area_i area_f = 0.8584


Observamos la presencia del signo (;) a continuacin de las dos primeras lneas. Esto impide que el sistema devuelva el resultado de cada operacin, en este caso los valores de area_e y area_i. En la tercera lnea de comando no aparece el signo (;), situacin que provoca la aparicin en pantalla del resultado area_f. Cuando se realiza una operacin sin almacenar el resultado en una variable, ste aparece asociado con la variable genrica ans (contraccin de answer). Sin embargo, las cosas no son (afortunadamente) tan sencillas en MATLAB. En el prrafo 2 pusimos de manifiesto que todas las clases de datos estn organizadas como matrices, razn por la cual veremos que aparecen nuevas posibilidades cuando los clculos se realizan sobre estructuras matriciales que no son 1x1.

13

0.5 Utilizacin de funciones elementales pre-definidas


MATLAB contiene una coleccin de funciones pre-definidas que reciben argumentos reales o complejos. Estas funciones tambin se pueden utilizar con matrices, pero su funcionamiento es tan particular en este caso, que resulta preferible hacer un anlisis separado. Funcin pre-definida abs(x) angle(x) asin(x) asinh(x) ceil(x) conj(x) cos(x) erf(x) exp(x) fix(x) floor(x) imag(x) log(x) real(x) round(x) sign(x) sin(x) sinh(x) sqrt(x) tan(x) Tarea Valor absoluto de x o mdulo de x Argumento de nmero (complejo) x Arco del argumento cuyo seno vales x Inversa del seno hiperblico de x Redondea el valor de x hacia +infinito. Conjugado del nmero (complejo) x Coseno de x (funcin circular) Funcin de error Valor de la exponencial de x Redondea el valor de x hacia cero Redondea el valor de x hacia -infinito Parte imaginaria del nmero (complejo) x Logaritmo (neperiano) de x Parte real del nmero (complejo) x Redondea el valor de x hacia el entero ms prximo Igual a 1 si x>0, cero si x=0, -1 si x<0 Seno de x (funcin circular) Seno hiperblico de x Raz cuadrada de x Tangente de x

Esta tabla no agota la coleccin de todas las funciones. Tngase en cuenta, por otra parte, que para las funciones circulares el argumento se expresa en radianes.

14

0.6 Manejo de ficheros


Para conocer el nombre del subdirectorio actual se utiliza la orden pwd ("print working directory") y para cambiar de subdirectorio, la orden cd. El comando dir produce un listado de los ficheros del subdirectorio actual (o del subdirectorio de nombre sd, si se escribe dir sd), y delete nombredefichero elimina el fichero con este nombre. Tanto en un caso como en otro se puede hacer uso del carcter genrico *. Por ejemplo, dir *.m muestra los ficheros-m del subdirectorio actual. En cualquier caso, debe tenerse en cuenta el path asociado con el fichero que se desea manejar. Ejectese help path. En general, las rdenes save y load se utilizan para guardar o recuperar datos en el disco. Por ejemplo, si deseamos generar un fichero con las cantidades numricas 1,2,3, escribimos el vector v=[1 2 3] y ejecutamos save nombredeficherodedatos. Conviene tener en cuenta que, para que todo suceda tal como hemos planeado, en el espacio de trabajo no deber haber otras variables. Si hay otras variables que no deseamos incluir en nuestro fichero, deberemos proceder anter a eliminarlas con la orden clear nombredevariable. El formato por defecto es, como ya hemos adelantado, el binario especial de matlab, que trabaja con la extensin .mat. Si se desea obtener un fichero ascii, el formato de la orden sera el siguiente: save nombredefichero -ascii

0.7 Resumen
A lo largo de este captulo introductorio, hemos revisado brevemente (en algunos casos solamente mencionado) la siguiente lista de rdenes de MATLAB, aqu colocada en orden alfabtico. La recomendacin es explorar con la funcin help (eventualmente con lookfor) cada una de ellas. abs angle ans asin asinh date delete diary cd ceil char clear clock conj cos dir eps erf exit exp fix floor format double help imag inf log lookfor load
15

nargin nargout now path pi pwd quit real realmin realmax round save sinh sign sin sinh sqrt tan who whos

16

También podría gustarte