Practica1

Anuncio
Practica 1. Introducción a MATLAB
David Rozado Fernández
Informática Aplicada - Grado en Ingenierı́a Quı́mica, UAM, 2009/2010
1
Fecha en la que se deberı́a haber completado la practica
Grupo A: 19 de Febrero
Grupo B: 26 de Febrero
2
Objetivos
Al finalizar esta práctica se deberı́an haber adquirido conocimientos sobre los siguientes temas de programación
en MATLAB:
• Funcionalidad básica de la herramienta MATLAB
• Variables y operaciones aritméticas
3
Introducción
3.1
¿Que es MATLAB?
MATLAB es la abreviatura de MATrix LABoratory (laboratorio de matrices). Se trata de un software matemático
para cálculo cientı́fico (aritmético y simbólico) basado en matrices. MATLAB ofrece un entorno de desarrollo
integrado (IDE) muy versátil con un lenguaje de programación propio (lenguaje M). MATLAB está disponible
para sistemas operativos Windows, Unix y Apple Mac OS X. Entre sus prestaciones básicas se hallan:
• Realizar cálculos aritméticos (como una calculadora).
• Realizar calculo simbólico (con la posibilidad de hacer operaciones como derivar funciones, calcular primitivas, etc) y exacto.
• Programar en un lenguaje no compilado (script).
• Realizar gráficos en dos y tres dimensiones.
• La representación de datos y funciones.
• La implementación de algoritmos.
• La creación de interfaces de usuario (GUI).
• La comunicación con programas en otros lenguajes y con otros dispositivos hardware.
Las capacidades de MATLAB se pueden ampliar con las llamadas ”cajas de herramientas” o toolboxes.
Ası́, por ejemplo, se pueden utilizar toolboxes de Matemáticas y Optimización, Estadı́stica y Análisis de datos,
Diseño de sistemas de control y análisis, Procesado de señal y comunicaciones, Procesado de imagen, Pruebas y
medidas, Biologı́a computacional, Redes Neuronales Artificiales, Modelado y análisis financiero, Desarrollo de
aplicaciones o informes y conexión a bases de datos.
En esta primera práctica de la asignatura se va llevar a cabo un tutorial que abarcará los aspectos básicos
del entorno MATLAB: comandos básicos, operaciones aritméticas, etc.
1
3.2
Lenguajes interpretados o de scripting
En Informática se entiendo por un ’script’ a una serie de órdenes escritas en un determinado lenguaje. Estas
ordenes se pasan a un intérprete para que las ejecute. El interprete es a su vez una capa de software que
transforma estas órdenes en una serie de instrucciones en lenguaje maquina que se envı́an al hardware para
ser ejecutadas. A nivel formal, un script no cumplen la definición de programa porque no es ejecutable por si
mismo. Un programa se comunica directamente con el sistema operativo mientras que un script lo hace con un
intérprete que a su vez envı́a comandos al sistema operativo o al hardware. En este proceso de comunicación
el programa no es el script, el archivo de código, sino el intérprete, que lee lı́nea por lı́nea el código y que no
ejecuta la siguiente orden hasta que no ha terminado con la anterior.
Esta es la diferencia principal entre los lenguajes basados en código fuente de los lenguajes de scripting.
Los primeros son C, C++, Fortran, Ada, Cobol, Pascal... El código fuente escrito es transformado por un
compilador en un archivo ejecutable binario que sólo es capaz de entender el ordenador.
Los lenguajes de scripting de uso general más conocidos son: Java, Perl, Python y Ruby. Java es un producto
creado por la empresa Sun Microsystems. Python, Perl y Ruby son también lenguajes scripting pero pertenecen
al denominado Software Libre.
Existe una gran variedad en los lenguajes de scripting orientado a matemáticas. Matlab, Maple, Mathematica, Scilab, Octave, Euler, O-Matrix, R o S son lenguajes de scripting. Los más conocidos son Matlab,
Mathematica y Maple.
No debemos considerar Matlab como únicamente un lenguaje de scripting. El scripting cientı́fico es una
gran herramienta que hay que dominar independientemente del programa. Una vez hayamos aprendido a usar
Matlab es posible que se tengamos que aprender a utilizar R, orientado a análisis de datos, Scilab u otros
muchos. Tareas que nos resultaran relativamente fáciles una vez nos hayamos familiarizado con Matlab.
Un lenguaje interpretado se parece a una herramienta que todos conocemos perfectamente, una calculadora.
Esta analogı́a no es del todo correcta pero explica perfectamente el uso de Matlab. En el fondo es una calculadora
programable con unas posibilidades casi infinitas. Si a esto se suma un lenguaje intuitivo y una gran biblioteca
de funciones el resultado es una herramienta verdaderamente útil para ingenieros y cientı́ficos. Esta manera de
trabajar no es un invento de Matlab, los lenguajes interpretados ya existı́an mucho antes. Lo que sı́ es novedoso
es basar la arquitectura del lenguaje en conceptos matemáticos; entre ellos uno muy importante: la función.
Mientras los lenguajes clásicos se basan en subrutinas o objetos, Matlab dispone de una biblioteca formada
exclusivamente por funciones. Este diseño tan simple es lo que ha llevado Matlab a su éxito, que no es ni mas
ni menos que un acercamiento matemático a la programación orientada a matemáticas.
3.3
Entorno MATLAB
Matlab como programa no se limita a un intérprete en una consola, es un entorno de desarrollo al completo o (IDE
por sus siglas en ingles). La disposición del entorno es altamente configurable con cada usuario decidiendo que
ventanas quiere tener activas en el espacio de trabajo. Al iniciar Matlab nos aparecerá por defecto generalmente
la ventana principal con la consola, el navegador de variables y el historial de comandos. Evidentemente lo más
importante es la consola o MATLAB Command Window que permite la ejecución ”en lı́nea” de comandos
y funciones MATLAB. Todo lo demás, aunque útil, es prescindible y configurable. La figura 1 muestra una
configuración posible del entorno de desarrollo MATLAB en un sistema Unix. Una de las caracterı́sticas más
importantes del entorno es el diálogo de tı́tulo ’Current Directory’, o ’Directorio de trabajo’. En el siguiente
tema aprenderemos que como Matlab se basa en funciones almacenadas en un árbol de directorios es muy
importante decirle qué directorio estamos utilizando para trabajar. Si no lo hacemos Matlab encontrará todas
las funciones propias del entorno pero no las que estemos escribiendo. El menú ’Desktop’ contiene las opciones
de la ventana principal. Podemos escoger entre la vista por defecto de la figura, ver sólo el intérprete, utilizar
vista con pestañas, etc. El menú Debug nos permite ’trackear’ un programa paso a paso en busca de errores.
La ventana principal no es más que la consola con algunas herramientas adicionales. Para completar un
entorno de desarrollo son necesarios dos elementos más: un editor y un navegador de ayuda. El primero aparece
cuando editamos un archivo .m desde el gestor de archivos o cuando creamos uno nuevo desde la ventana
principal. Su función es facilitar la creación de archivos de código Matlab y para ello cuenta con ’Syntax
Highlighting’, tabulado automático, soporte para debugging. . .
Hay dos modos de trabajo con MATLAB:
• Trabajo interactivo, donde el usuario realiza una consulta (escribe una operación) en la consola (command
2
Figure 1: Entorno MATLAB Matlab Environment
window) y el programa la ejecuta;
• Trabajo programado (con archivos .m), donde el usuario genera uno o varios ficheros con conjuntos de
instrucciones MATLAB, que se pueden ejecutar repetidas veces (con distintos datos) desde el modo interactivo. De esta forma, el usuario puede incrementar las funciones disponibles en MATLAB, añadiendo
las suyas propias.
En esta primera practica nos centraremos en el trabajo interactivo.
4
4.1
Comandos, variables y funciones básicas en MATLAB
Tutorial
Arrancad MATLAB y realizad el siguiente tutorial en su ventana de comandos (MATLAB Command Window).
Uno de los comandos mas útiles de MATLAB es el comando ’help’. El comando ’help’ muestra ayuda sobre las
librerı́as y funciones de MATLAB, ası́ como explicaciones sobre aspectos de la sintaxis del lenguaje de programación M. De este modo, por ejemplo, si se ejecuta:
>> help matlab/general
se obtiene un listado de todos los comandos de propósito general de MATLAB: comandos para la obtención de
3
información y ayuda sobre la herramienta, gestión de variables en el espacio de trabajo (workspace), edición y
gestión de ficheros .m, establecimiento de la ruta (path) de trabajo, uso de comandos del sistema operativo, y
depuración de funciones y programas.
El sı́mbolo >> es el prompt de MATLAB e indica que esta listo para aceptar ordenes. Para ejecutar una
orden basta con escribirla y pulsar la tecla ENTER.
>> 2 + 3
ans =
5
El nombre que se asigna por defecto a la variable de salida es ans (abreviatura del inglés, answer):
>> ans
ans =
5
Si el cálculo se asigna a una variable, el resultado queda almacenado en ella:
>> x = 2 + 3
x=
5
Para conocer el valor de una variable, basta teclear su nombre en la linea de comandos de MATLAB:
>> x
x=
5
Si se añade un punto y coma (;) al final de la instrucción, la máquina no muestra la respuesta...
>> y = 5 ∗ 4;
... lo cual no quiere decir que no se haya llevado a cabo el calculo y la asignación del resultado a la variable y.
Si ahora tecleamos en el interprete de comandos:
>> y
y=
20
Las operaciones se evalúan por orden de prioridad: primero las potencias, después las multiplicaciones y
divisiones y, finalmente, las sumas y restas. Las operaciones de igual prioridad se evalúan de izquierda a
derecha:
>> 2/4 ∗ 3
ans =
1.5000
>> 2/(4 ∗ 3)
ans =
0.1667
Cuando escribimos programas complejos en ficheros del tipo .m, a veces es necesario o útil documentar el
porque o el como de un determinado comando o algoritmo escrito. Utilizando el sı́mbolo ’%’ todo lo escrito a
4
la derecha de este sı́mbolo en un fichero .m o en la consola de comandos es considerado un comentario y el
interprete lo ignora.
>> x = 3% el interprete no toma en consideracion lo que yo escribo despues de%
ans =
3
MATLAB proporciona acceso a las funciones matemáticas habituales. Ası́, por ejemplo, la función coseno,
exponencial. . . :
>> cos(pi) % pi es una variable con valor predeterminado en MATLAB de 3.14159...
ans =
-1
>> exp(1) % Función exponencial evaluada en 1, es decir, el número e
ans =
2.7183
Además de la variable pi , MATLAB tiene otras variables con valor predeterminado; éste se pierde si se les
asigna otro valor distinto. Por ejemplo:
>> eps % Épsilon de la máquina. Obsérvese que MATLAB trabaja en doble precisión
ans =
2.2204e-016
>> eps = 7
eps =
7
Otro ejemplo de función matemática: la raı́z cuadrada; como puede verse, trabajar con complejos no da
ningún tipo de problema. La unidad imaginaria se representa en MATLAB como i o j, variables con dicho
valor como predeterminado:
>> sqrt(−4)
ans =
0+ 2.0000i
Es comando ’help’ nos da mas información sobre cualquier función de MATLAB:
>> help sqrt
El usuario puede controlar el número de decimales con que aparece en pantalla el valor de las variables, sin
olvidar que ello no está relacionado con la precisión con la que se hacen los cálculos, sino con el aspecto con
que éstos se muestran:
>> 1/3
ans =
0.3333
>> f ormat long
>> 1/3
ans =
0.33333333333333
>> f ormat % Vuelve al formato estándar que es el de 4 cifras decimales
5
Para conocer las variables que se han usado hasta el momento:
>> who
Your variables are:
ans eps x y
o, si se quiere más información (obsérvese que internamente MATLAB trabaja con variables de tipo array, una
estructura que analizaremos de forma detallada en la próxima practica):
>> whos
Name Size Bytes Class
ans 1x1 8 double array
eps 1x1 8 double array
x 1x1 8 double array
y 1x1 8 double array
Grand total is 4 elements using 32 bytes
Para eliminar una variable de la memoria:
>> clear y
>> who
Your variables are:
ans eps x
Investigar y entender el resultado de ejecutar los siguientes comandos en el interprete de comandos de MATLAB.
Haced uso del comando help cuando sea necesario y ejecutarlos de izquierda a derecha y de arriaba a abajo:
diary sesion.txt;
y = 1 + exp(2 * cos(x));
addpath
tic
dir
delete
abs(-1)
str = ’Hola Mundo’
str(2)
i = sqrt(-4)
plot([1 2 3 4],[1 4 9 16])
5
x=2
y
removepath
toc
cd
beep
floor(3.8)
mayu = upper(str)
str(25)
imag(i)
5 == 5
x = 2;
who
helpwin
sin(pi/2)
cd ..
clear
log(exp(1))
minu = lower(str)
str(3:9)
real(i)
5==4
xˆ3
path
helpbrowser
diary off;
copyfile
range = 1:0.1:3
pause(2)
str(1)
ver
im=4+5i
exit
Material a entregar
Esta primera practica de forma excepcional no sera evaluada. El objetivo de esta practica es que el alumno
se familiarice con el uso de MATLAB. La realización de esta practicara es altamente recomendable ya que su
comprensión facilitará la realización de las siguientes practicas que si serán evaluadas.
6
Descargar