ÁLGEBRA LINEAL INGENIERÍA INFORMÁTICA Curso 08/09 PRÁCTICA 1 Comenzando con MATLAB 1 Funcionamiento de Matlab MATLAB es un sistema interactivo basado en matrices para cálculos cientı́ficos y de ingenierı́a. El nombre de MATLAB proviene de las iniciales de MATrix LABoratory, ya que el tipo de dato básico con el que trabaja es una matriz. Matlab se puede utilizar en computación matemática, análisis y procesamiento de datos, gráficos, simulaciones, desarrollo de algoritmos, etc. Una vez que hemos iniciado el programa aparece la ventana de comando, aunque podemos abrir otras como: ventana de directorio actual y ventana de histórico de comandos. La ventana de comando es la principal y es conveniente mantenerla abierta siempre como única ventana visible. Help Window (Ventana de ayuda) La ventana de ayuda proporciona toda la documentación para ayudar al usuario en el manejo de la aplicación. Esta ventana se abre directamente desde el menú help que está situado en la barra de herramientas que se encuentra en la ventana principal de MATLAB. Existe otra forma de pedir ayuda y es utilizando el comando help;con él podemos visualizar un buen número de directorios que contienen los nombres de los comandos. Escribiendo help nom, donde nom es el nombre de un comando, nos da información del comando especı́fico cuyo nombre(nom) hemos escrito. Ventana de comando Como hemos mencionado anteriormente la ventana de comando es la ventana principal de MATLAB y se utiliza para ejecutar los comandos, abrir otras ventanas, ejecutar programas realizados por el usuario y gestionar el software de MATLAB. Una vez hayamos entrado en MATLAB veremos aparecer su sı́mbolo >>, también llamado prompt, esto nos indica que MATLAB está esperando un comando. Observaciones • Para teclear un comando el cursor debe estar situado a continuación del prompt. • Una vez tecleado el comando se pulsa la tecla Intro, entonces el comando es ejecutado. Hay que hacer notar que solo se ejecuta el último comando introducido, ya que se ejecuta comando a comando. Veremos más tarde que este problema puede solucionarse. • Puede teclearse más de un comando en una lı́nea, basta separarlos por comas. Cuando se pulsa Intro todos los comandos se ejecutan, de izquierda a derecha. • No es posible ir con el cursor a una lı́nea anterior para hacer una corrección y volver a ejecutar un comando. • Un comando tecleado anteriormente puede volver a ser llamado utilizando las flechas arriba ↑ (comando anterior)y abajo ↓ (comando posterior) de los cursores para encontrar el comando deseado. Una vez encontrado, puede editarse y ejecutarse. Punto y coma (;) Si tecleamos punto y coma (;) al final de un comando hace que la salida no sea visualizada. Si tecleamos varios comandos en la misma lı́nea basta separarlos por (;) en vez de por (,). El sı́mbolo tanto por ciento Cuando se teclea el sı́mbolo tanto por ciento al principio de una lı́nea, MATLAB entiende que todo lo que aparece detrás es un comentario. Dicho comentario puede ir detrás de un comando en la misma lı́nea, éste no tiene ningún efecto sobre la ejecución del comando. El comando clc El comando clc borra la ventana de comandos. Este comando no varı́a nada de lo que se ha hecho anteriormente, por ejemplo, si anteriormente se han definido variables con sus valores asignados, éstas podrán seguir siendo utilizadas. Los comandos tecleados anteriormente pueden seguir siendo recuperados con los cursores, como hemos indicado anteriormente. Formatos de visualización de números Cuando MATLAB visualiza resultados numéricos sigue algunas reglas. Por defecto, si un resultado es entero lo visualiza como entero. Cuando un resultado es real lo visualiza con aproximadamente cuatro dı́gitos a la derecha del punto decimal. Si los dı́gitos significativos en el resultado están fuera de este rango, MATLAB visualiza el resultado en notación cientı́fica similar a las calculadoras. Si queremos que los resultados aparezcan de una forma diferente a la dada por defecto se deberá especificar el formato numérico diferente usando la opción Numeric Format en el menú de Preferencias de la aplicación o escribiendo la orden apropiada en MATLAB. Algunos de estos formatos numéricos son: • format long: 16 dı́gitos • short e : 5 dı́gitos más exponente • long e : 16 dı́gitos más exponente • format bank: 2 dı́gitos decimales • format rat : aproximación racional • format short: visualización por defecto Observación: MATLAB no cambia la representación interna de un número cuando se escogen diferentes formatos, sólo se modifica la visualización del mismo. MATLAB opera siempre por defecto en forma aproximada, por ejemplo >> b=1/6 b= 0.1666 2 Matrices y Matlab 2.1 Manejo de matrices en MATLAB Para introducir una matriz con MATLAB se hace de la forma siguiente: • Los elementos de la matriz se escriben separados por espacios. • Las filas se separan por un punto y coma. • La matriz está metida entre corchetes. Ejemplo: Introducir la matriz [1 -1 1 0; 2 0 0 1;3 1 -1 2] presionar enter y ver de qué forma la presenta en pantalla MATLAB. Para asignar un nombre a una matriz utilizamos el operador de asignación =, de la forma: A=[1 -1 1 0; 2 0 0 1;3 1 -1 2] Observaciones • Todas las filas de la matriz han de tener el mismo número de elementos. • MATLAB distingue entre mayúsculas y minúsculas, por lo tanto la matriz B no es la misma que la b. • El nombre de una matriz puede volverse a utilizar pero tenemos que tener en cuenta que si lo hacemos se pierde el último contenido de dicha matriz. Si queremos cambiar un elemento, por ejemplo el (i, j), se escribe A(i, j) = nuevo valor. A(1, 3) = −5 asigna el valor −5 al elemento que ocupa la posición (1, 3) de la matriz A. Para ver todos los elementos de una matriz basta con teclear solamente el nombre de ella. Si la matriz es muy grande, en pantalla aparecerá dividida en subconjuntos de columnas que aparecerán sucesivamente. Si queremos ver el elemento (i, j) de una matriz A tecleamos A(i,j). El operador (:) en matrices El operador (:) se puede utilizar para presentar los siguientes datos: 1. A(i,:) nos nuestra los elementos de la fila i-ésima de la matriz A . 2. A(:,j) nos nuestra los elementos de la columna j-ésima de la matriz A. 3. A(:,m:n) nos nuestra los elementos entre las columnas m y n de la matriz A. 4. A(m:n,:) nos presenta los elementos entre las filas m y n de la matriz A. 5. La especificación A(m : n, :) puede generalizarse a A(m : q : n)indicando los términos (filas o columnas) desde la posición m hasta la n saltando de q en q EJERCICIO 1. Definir una matriz A de dimensión 4 × 5 y extraer los bloques formados por: 1. la fila cuarta 2. la columna tercera 3. desde la fila 2 a la 4 4. desde la columna 1 a la columna 3 5. las columnas 1,3 y 5 6. las filas 2 y 4 2.2 2.2.1 Generación de matrices Los comandos zeros, ones, eye MATLAB posee instrucciones para generar tipos especiales de matrices como son : la matriz identidad, matriz nula y matrices cuyos elementos son todos unos. Estos comandos son los siguientes: 1. eye(i) presenta en pantalla una matriz identidad de dimensión i × i. 2. t = k ; eye(t) presenta una matriz identidad de dimensión k × k. 3. eye(A) presenta una matriz identidad de la misma dimensión que la matriz A. 4. eye(m,n) presenta una matriz con 1 en la diagonal y 0 en el resto. 5. zeros(m,n) produce una matriz nula de dimensión m × n. 6. ones(m,n) produce una matriz de unos de dimensión m × n. 2.2.2 El comando rand El comando rand produce números pseudoaleatorios en el intervalo (0, 1). La instrucción rand(m,n) genera aleatoriamente una matriz de dimensión m × n ası́ como rand(n) genera una matriz aleatoria de dimensión n × n. Los elementos de todas estas matrices, como hemos dicho anteriormente, pertenecen al intervalo (0, 1). Podemos extender el intervalo de los números, por ejemplo entre 0 y 10, con la instrucción (10*rand(m,n )) Con fix(10*rand(m,n )) obtenemos una matriz de números enteros entre 0 y 9. 2.3 Construcción de matrices por bloques Podemos generar matrices combinando otras matrices de dimensiones más pequeñas, como si de números se tratase, siempre que las dimensiones sean las adecuadas. 1. [A B]: genera la matriz formada por las columnas de A y B. 2. [A; B]: genera la matriz formada por las filas de A seguidas de las de B. 3. [A B; C D]: genera una matriz formada por cuatro bloques. EJERCICIO 2. Construir cuatro matrices aleatorias de números enteros en el intervalo (0, 9) asignándoles las siguientes variables: A de dimensión 3 × 2, B de dimensión 3 × 3, C de dimensión 2 × 3, D de dimensión 2×2. A continuación teclear las siguientes instrucciones observando el resultado obtenido: 1. E = [A B] 2. F = [B; C] 3. G = [A eye(3)] 4. H = [A B; C D] 5. J = [E; zeros(2, 5)] 6. K = [F ones(5, 2)] 2.4 Álgebra matricial Las operaciones que podemos realizar con matrices en el MATLAB son la suma, resta, multiplicación producto por un escalar, cálculo de potencias y la trasposición. La notación utilizada para estas operaciones será: 1. Suma de matrices A + B 2. Resta de matrices A − B 3. Producto de matrices A ∗ B 4. Producto de un escalar por una matriz a ∗ A 5. Potencias A∧ k 6. Trasposición A 0 3 Formas escalonadas de una matriz Sabemos que toda matriz tiene una forma canónica escalonada equivalente. En MATLAB ésta se obtiene con el comando rref( ). EJERCICIO 3. a) Introducir una matriz aleatoria, A, de dimensión 3×4 y obtener su forma escalonada canónica. b) Obtener la forma escalonada canónica de la matriz A0 . c) ¿Qué relación existe entre ambas formas escalonadas? 4 Determinantes En MATLAB el determinante de una matriz cuadrada se puede calcular mediante el comando det( ). 5 Inversas En MATLAB la inversa de una matriz cuadrada, si existe, se puede calcular utilizando el comando inv. También podemos el algoritmo de Gauss-Jordan partiendo de la matriz por bloques [A eye(A)] EJERCICIO 4. Generar una matriz cuadrada aleatoria de orden 7 a) Comprobar si es regular b) En caso de ser regular calcular la inversa mediante los dos procedimientos anteriormente descritos.