Fractales Con Matlab PDF
Fractales Con Matlab PDF
Fractales Con Matlab PDF
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.
realmin eps
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.
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
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
13
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.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