Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Métodos Numéricos
Curso 2015-2016
Objetivos de la práctica
El objetivo principal de esta práctica es utilizar la potencia de Matlab para realizar
cálculos directos de forma interactiva. Para alcanzar dicho objetivo, a lo largo de la
práctica nos dedicaremos a:
− Conocer el entorno de trabajo de Matlab.
− Realizar operaciones elementales con matrices y vectores.
− Realizar cálculos más complejos con las funciones de biblioteca predefinidas.
− Construir gráficos 2D para representar los valores almacenados en vectores y
matrices.
− Familiarizarnos con la ayuda on-line que proporciona Matlab.
Introducción a Matlab
¿Qué es Matlab?
Matlab es el acrónimo de “MATrix LABoratory”. Se trata de una aplicación
informática interactiva desarrollada para realizar cálculos científicos y de ingeniería
basados en matrices. Matlab fue creado en los años 70, por Cleve Moler, para
proporcionar un acceso a las librerías numéricas LINPACK y EISPACK sin necesidad de
usar Fortran como lenguaje de programación. Desde 1984, se comercializa por
MathWorks y a día de hoy es muy utilizado por estudiantes, científicos e ingenieros en
universidades, centros de investigación, ingenierías y en la industria.
Matlab integra facilidades de cálculos numéricos con vectores y matrices,
herramientas de visualización gráfica de los datos y un lenguaje de programación de
altas prestaciones y de alto nivel muy popular en el ámbito de la computación
científica. Actualmente, consta de:
− El lenguaje de Matlab: Es un lenguaje de programación de alto nivel modular y
estructurado, compuesto por sentencias de control, funciones, estructuras de
datos y utilidades de entrada/salida. Dispone además de herramientas
necesarias para ofrecer una programación orientada a objetos. El lenguaje de
Matlab acorta los tiempos de desarrollo de aplicaciones informáticas, aunque
los programas suelen ser más lentos que los desarrollados con otros lenguajes
como C o Fortran, por tratarse de un lenguaje interpretado.
− El entorno de trabajo: Está formado por un conjunto de herramientas que
permiten utilizar Matlab como usuario o como programador. Entre esas
herramientas se encuentran la Ventana de Comandos, el Espacio de Trabajo, el
–1–
Historial de Comandos, el Editor del Camino de Búsqueda, el Directorio Actual,
el Editor de Funciones, el Depurador de Funciones, etc.
− La biblioteca de funciones matemáticas: Está compuesta por una amplia
colección de algoritmos numéricos que implementan desde funciones
elementales (sumatorios, funciones trigonométricas, etc.) hasta funciones más
sofisticadas (resolución de sistemas de ecuaciones, cálculo de valores propios,
mínimos cuadrados, interpolación, ecuaciones diferenciales, etc.).
− Los gestores de gráficos: Matlab incluye comandos de alto nivel para crear
gráficos bidimensionales y tridimensionales y para diseñar interfaces gráficos
de usuario.
− La API (Application Program Interface) de Matlab: Es una librería que permite
integrar a Matlab con otros lenguajes de programación como C, C++ o Fortran.
− Toolboxes o paquetes de ampliación: Se trata de paquetes compuestos por
funciones aplicables a determinados campos de la ingeniería. A modo de
ejemplo, se incluyen paquetes de aplicación matemática en general (cálculo
simbólico, estadística, optimización, redes neuronales, etc.), de bases de datos,
de adquisición de datos, de procesamiento de la señal, de procesamiento de
imágenes, del área financiera, de simulación de sistemas dinámicos, de análisis
y diseño de sistemas de control, etc.
–2–
Los componentes más importantes del entorno de trabajo, algunos de los cuales
pueden verse directamente en la Figura 1, son:
− La Ventana de Comandos (Command Window) y la Línea de Órdenes (>>).
− El Espacio de Trabajo (Workspace).
− El Historial de Comandos (Command History).
− El Directorio Actual (Current Folder) y el contenido del mismo.
− El Editor de Funciones y Depurador de Errores (Editor & Debugger).
− El Editor del Camino de Búsqueda (Search Path).
− El Editor de Preferencias (Preferences).
− La Ayuda (Help).
–3–
escribir directamente expresiones o instrucciones, seguidas de Intro, que Matlab
ejecuta:
>> 2+3*6
ans = 20
Operador Descripción
+ Suma.
- Resta.
* Producto.
/ División.
^ Potencia.
Variables y expresiones
En lugar de operar directamente con números, cabe la posibilidad de trabajar con
variables. Se trata de espacios de la memoria del ordenador en los que se almacena
información y a los que se accede a través de un nombre. Habitualmente en Matlab,
una variable es el nombre que se le da a una entidad numérica, que puede ser una
matriz, un vector o un escalar y sobre la cual se realizan las operaciones. El valor de la
variable (e incluso el tipo de datos que almacena) puede variar en una misma sesión de
trabajo de Matlab, o incluso durante la ejecución de un programa. Toda variable debe
ser inicializada antes de utilizarla. Por ejemplo, el comando
>> x=2
crea una variable que se llama x y que almacena el valor 2. Las variables en Matlab
pueden almacenar:
− Valores numéricos: Por defecto se corresponden con números reales con doble
precisión (double).
− Caracteres: Incluyen letras, números, espacios y numerosos símbolos: +, -, *, /,
(, ), [, ], ‘‘, etc.
− Valores lógicos o “booleanos”: Se corresponde con los valores lógicos 1 o 0.
Matlab incluye las variables true (que vale 1) y false (que vale 0).
El nombre de una variable puede estar compuesto, como mucho, por 63 caracteres,
con las siguientes características:
–4–
− Como caracteres válidos, tenemos:
Letras mayúsculas (A, …, Z) o minúsculas (a, …, z).
Números (del 0 al 9).
Símbolo de subrayado (_).
− El primer carácter debe ser una letra.
− No se admiten espacios.
− Se distingue entre mayúsculas y minúsculas.
Matlab contiene variables ya definidas, tales como ans, pi, inf, realmax, realmin,
true, false, etc.:
>> pi
ans =
3.1416
en cuyo caso, el resultado se asigna a una variable interna de Matlab denominada ans.
Se trata de una variable especial que recoge el resultado, no almacenado en ninguna
variable, de la última expresión que se evalúa.
Por defecto, se da una expresión por concluida cuando el usuario pulsa Intro. Si se
desea que una expresión continúe en la línea siguiente, se debe terminar la línea con
puntos suspensivos (...):
>> x=(7*5)-(4*3) ...
–5–
+12
x = 35
Si, por el contrario, se desea introducir más de un comando en la misma línea, éstos
se separarán mediante comas (,) o puntos y coma (;).
Si una expresión termina en punto y coma (;), su resultado se calcula, pero no se
muestra por pantalla. De esta forma, evitamos que se llene la pantalla de información
no deseada, si se trata por ejemplo de resultados intermedios o si estamos trabajando
con matrices de gran tamaño. Si en algún momento queremos saber el valor del
resultado, escribimos el nombre de la variable y pulsamos el Intro.
>> z=2*5/3;
>> z
z = 3.3333
El Espacio de Trabajo
El Espacio de Trabajo en Matlab es una zona de memoria accesible desde la Línea
de Órdenes que contiene el conjunto de variables almacenadas en la memoria del
ordenador y definidas por el usuario en la sesión de trabajo actual. Nótese que, puesto
que se encuentran en la memoria, todas ellas se perderán cuando se cierre la sesión
actual de Matlab. El contenido de nuestro espacio de trabajo lo tenemos accesible en
todo momento en el denominado Workspace, situado en la parte superior derecha de
nuestro entorno de trabajo.
Antes de visualizar el contenido actual del Espacio de Trabajo ejecutaremos las
siguientes instrucciones:
>> A=rand(3)
>> B=inv(A)
>> C=A*B
Como se puede apreciar, el Espacio de Trabajo muestra las variables que acabamos
de crear. Si hacemos doble clic con el ratón sobre el nombre de alguna de las variables
se desplegará otra ventana, mostrando el valor almacenado y pudiendo modificar de
manera muy sencilla el contenido de la misma.
Debe quedar claro que estas variables desaparecerán cuando cerremos la sesión
actual de Matlab. Si deseamos guardar todas las variables para usarlas en sesiones
futuras, podemos almacenar el espacio de trabajo en un fichero mediante el botón
Save Workspace de la pestaña HOME o escribiendo el comando save en la ventana de
comandos, acompañado del nombre del fichero. Dicho fichero deberá tener de
manera obligatoria la extensión .mat. Si por el contrario deseamos cargar en memoria
las variables que formaban parte de un espacio de trabajo grabado previamente en un
fichero, usaremos la opción Open de la pestaña HOME o escribiremos, en la ventana
de comandos, el comando load seguido del nombre del fichero.
–6–
Algunos otros comandos útiles son who, que muestra el nombre de todas las
variables almacenadas en memoria y whos, que muestra el nombre y el tipo de todas
las variables almacenadas en memoria. Ejemplo:
>> who
Your variables are:
A B C ans x y z
>> whos
Name Size Bytes Class
A 3x3 72 double array
B 3x3 72 double array
C 3x3 72 double array
ans 1x1 8 double array
x 1x1 8 double array
y 1x1 8 double array
z 1x1 8 double array
Por otro lado, en algunas ocasiones nos interesará eliminar alguna o todas las
variables del Espacio de Trabajo, bien porque son variables temporales de cálculos
intermedios que ya no vamos a utilizar y conviene liberar memoria, bien porque vamos
a comenzar otro trabajo completamente independiente, o por muchas otras razones.
Para ello, Matlab dispone del comando clear. Si sólo deseamos borrar alguna variable,
lo haremos añadiendo al comando clear el nombre de la variable que deseamos
eliminar. Por ejemplo:
>> clear C
elimina sólo la variable C del Espacio de Trabajo. Si en cambio deseamos borrar todas
las variables, vaciando el Espacio de Trabajo, debemos escribir simplemente el
comando clear:
>> clear
Ejercicio: Calcular el área y la longitud de una circunferencia de radio=3.5. Las fórmulas a
emplear para calcular el área (A) y la longitud (L) de la circunferencia serán las
siguientes:
A = π r2
L = 2 πr
Por último, si deseamos guardar los comandos que vamos a ejecutar en una sesión
de trabajo, y sus resultados, emplearemos el comando diary, acompañado del nombre
del fichero de texto. Habitualmente, a dichos ficheros diario se les incluye la extensión
dia, con el objetivo de identificarlos fácilmente:
>> diary nombre_fichero.dia
>> instrucciones
…
>> diary off
–7–
El Historial de Comandos
El Historial de Comandos (Command History), situado en la parte inferior derecha
de nuestro entorno de trabajo, como se muestra en la Figura 3, nos muestra una
relación de las instrucciones utilizadas recientemente en la Ventana de Comandos,
agrupadas por sesiones de trabajo.
Si pinchamos con el botón derecho del ratón sobre una o más instrucciones de
dicho Historial (ver Figura 4), obtendremos un menú compuesto por diferentes
opciones:
− Ejecutar (Evaluate Selection).
− Cortar al portapapeles (Cut).
− Copiar al portapapeles (Copy).
− Borrar la selección del historial (Delete Selection).
− Borrar hasta la selección (Delete to Selection).
− Seleccionar todo (Select All), etc.
–8–
A partir de dicho Historial, podemos editar o ejecutar rápidamente una instrucción
anterior. De igual modo, podemos también acceder a instrucciones pasadas mediante
las teclas o del cursor. Es posible filtrar las instrucciones que nos aparecen al
pulsar las teclas o escribiendo previamente parte de la instrucción.
El Editor de Preferencias
Mediante el botón Preferences de la pestaña HOME, el Editor de Preferencias
permite modificar múltiples opciones de trabajo, tal y como se indica en la Figura 5. A
modo de ejemplo, la lista desplegable llamada Numeric format, dentro del apartado
Command Window, especifica el formato de visualización de los valores numéricos en
la Ventana de Comandos (ver Figura 5), todos ellos explicados en la Tabla 2. Cabe
destacar que el almacenamiento de los valores numéricos y los cálculos no se ven
afectados.
Figura 5: Aspecto del Editor de Preferencias tras seleccionar la opción Command Window.
–9–
Operaciones con matrices
La mejor manera de comenzar con Matlab es aprender a gestionar matrices. En
Matlab, el tipo de datos básico es la matriz, una tabla rectangular de números
organizados en filas y columnas. Matrices especiales en este aspecto son las matrices
de 1x1, que son escalares, y las matrices de una sola fila o una sola columna, que son
vectores. Las operaciones se han diseñado de forma que trabajar con matrices se haga
del modo más natural posible.
Habitualmente, se utilizan mayúsculas para las matrices y minúsculas para los
vectores y los escalares. Aunque no se trata de una obligación, este criterio ayuda a
determinar el tipo de datos de una variable sólo por el nombre.
Creación de matrices
Para crear una matriz, no es necesario definir su tamaño de antemano. Matlab lo
determinará en función de sus elementos y de su disposición. Introduciremos los
elementos entre corchetes, fila a fila separadas por punto y coma o por la tecla Intro.
Los elementos de una misma fila los separamos por comas o por espacios en blanco.
Por ejemplo, para crear una matriz de 3x3 y asignarla a la variable A, teclearemos lo
siguiente:
>> A=[1 2 3; 4 5 6; 7 8 9]
A=
1 2 3
4 5 6
7 8 9
Las asignaciones entre matrices se hacen directamente, sin que sea necesario
copiarlas elemento a elemento, como ocurre en los lenguajes de programación
convencionales. Por ejemplo,
>> B=A'
B=
1 4 7
2 5 8
3 6 9
– 10 –
asigna a la variable B la matriz traspuesta de A.
Del mismo modo a como ocurría con matrices, para crear un vector tampoco es
necesario definir su tamaño de antemano. Matlab lo determinará de nuevo a partir de
sus elementos y de su disposición. En caso de tratarse de un vector fila (de tamaño
1xn), introducimos los elementos entre corchetes, separados por comas o por espacios
en blanco. Por otro lado, si se trata de un vector columna (de tamaño nx1),
introducimos los elementos entre corchetes, separados por punto y coma o por la
tecla Intro.
Por ejemplo, la instrucción:
>> v=[1 3 5 7 9]
v = 1 3 5 7 9
Del mismo modo, es posible incorporar nuevos elementos a una matriz ya creada:
>> A(4,2)=11
A =
1 2 3
4 5 6
7 8 9
0 11 0
>> A=[A [-1 -3 -5 -7]']
A =
– 11 –
1 2 3 -1
4 5 6 -3
7 8 9 -5
0 11 0 -7
2
Ejercicio: Evaluar la función y=x +3x cuando x toma valores de números enteros
comprendidos entre -2 y 2.
– 12 –
La resolución de un sistema de ecuaciones lineales requiere una explicación
adicional. Considérese el siguiente sistema de ecuaciones:
Ax = b
donde A es una matriz cuadrada invertible y donde x y b son vectores columna. La
resolución de este sistema de ecuaciones puede escribirse de las dos formas
siguientes:
>> x=inv(A)*b
>> x=A\b
– 13 –
zeros(f,c) Forma una matriz de ceros de f filas y zeros(2,3) 0 0 0
c columnas.
0 0 0
ones(n) Forma una matriz de unos de tamaño ones(2) 1 1
nxn.
1 1
ones(f,c) Forma una matriz de unos de f filas y ones(2,3) 1 1 1
c columnas.
1 1 1
rand(n) Forma una matriz de números rand(2) 0.9 0.6
aleatorios entre 0 y 1, con distribución
uniforme, de tamaño nxn. 0.2 0.4
rand(f,c) Forma una matriz de números rand(2,3) 0.8 0.4 0.8
aleatorios entre 0 y 1, con distribución 0.7 0.0 0.4
uniforme, de f filas y c columnas.
linspace(i,f,n) Genera un vector fila con n valores linspace(1,9,5) 1 3 5 7 9
igualmente espaciados entre i y f.
Ejercicio: Averiguar (si es posible, sin introducir el comando en Matlab), los vectores que
generan las siguientes expresiones:
linspace(2,11,2)
linspace(1,25,4)
– 14 –
tril(A) Crea una matriz triangular inferior a 8 0 0
partir de A.
4 9 0
7 8 6
det(A) Devuelve el determinante de una 591
matriz A cuadrada.
inv(A) Calcula la matriz inversa de A. 0.17 0.02 -0.07
-0.11 0.05 0.10
-0.05 -0.08 0.11
0 0 − 1 2
1 1 1
1 1 − 1 2
A= 1 − 1 1 y B=
1 2 3 1 1 0 3
1 2 − 1 3
– 15 –
En caso de que el parámetro de entrada a cualquiera de las anteriores funciones
fuera una matriz, se devolverá un vector fila formado por los resultados de aplicar
dichas funciones a cada una de las columna de la matriz.
Funciones matemáticas elementales
Matlab consta de multitud de funciones orientadas a la resolución de los problemas
numéricos que aparecen en ingeniería, algunas de las cuales están recogidas en la
Tabla 7.
el cual crea un vector entre 1 y 9 con incrementos de 1.5. Obsérvese como, en este
ejemplo, el valor final no forma parte del vector. Es posible que a veces dicho
incremento inc no aparezca, entendiéndose de manera implícita que su valor es 1. Así
por ejemplo, el comando:
>> x=[2:1:5]
– 16 –
a fin de crear un vector entre 2 y 5 con incrementos de uno en uno.
Por defecto, el resultado es siempre un vector fila, como ya hemos comentado. Si se
desea obtener un vector columna, basta con trasponer el resultado. El siguiente
ejemplo, genera una tabla de senos y cosenos recurriendo para ello a dos funciones
trigonométricas de Matlab:
>> x=[0: 0.01: 2*pi]'
>> y=sin(x)
>> z=cos(x)
>> TABLA=[x y z]
El empleo de los dos puntos en matrices es todavía más útil y potente. Vamos a
verlo con varios ejemplos, implementados sobre una matriz 6x6. La función magic, que
a continuación se emplea, crea una matriz cuadrada que verifica que los elementos de
cualquier fila, de cualquier columna o incluso los de la diagonal suman lo mismo.
>> D=magic(6)
D =
35 1 6 26 19 24
3 32 7 21 23 25
31 9 2 22 27 20
8 28 33 17 10 15
30 5 34 12 14 16
4 36 29 13 18 11
Dos puntos aislados representan “todos los elementos”. Por ejemplo, el siguiente
comando extrae todos los elementos de la 3ª fila:
>> D(3, :)
ans =
31 9 2 22 27 20
Para acceder a la última fila o columna, puede emplearse la palabra end en lugar de
su número. Por ejemplo, para extraer la última fila completa:
>> D(end, :)
ans =
4 36 29 13 18 11
– 17 –
12 14 16
13 18 11
También se pueden extraer conjuntos disjuntos de filas/columnas utilizando
corchetes [ ]. Por ejemplo, el comando siguiente extrae las filas 1, 2 y 5:
>> D([1 2 5],:)
ans =
35 1 6 26 19 24
3 32 7 21 23 25
30 5 34 12 14 16
Gráficos bidimensionales
La visualización gráfica es imprescindible para presentar todo tipo de información y
facilitar la comprensión de la misma, la cual puede proceder de multitud de disciplinas
relacionadas con las ciencias y la ingeniería. Podemos visualizar la evolución de una
variable, identificar tendencias, máximos, mínimos, detectar errores en medición de
datos (puntos aislados), etc.
Matlab ofrece unas buenas prestaciones gráficas, poniendo a disposición de los
usuarios una serie de facilidades que permiten:
− Visualizar gráficas en 2D y en 3D.
− Dibujar gráficos de líneas, barras, escaleras, sectores, histogramas, etc.
− Generar gráficas con ejes lineales, logarítmicos, etc.
– 18 –
− Dibujar rectas y polígonos.
− Personalizar la apariencia deseada (tipo de fuente del texto y su tamaño, tipo,
color y grosor de las líneas, etc.) mediante leyendas, títulos, etiquetas, escalado
de los ejes, etc.
Las operaciones gráficas se realizan en un tipo especial de ventanas. Hay comandos
que abren una ventana nueva y otros que utilizan la ya existente, sustituyendo lo que
se encuentra en ella o añadiendo nuevos elementos.
Función Descripción
plot Gráfico de líneas.
bar Gráfico de barras verticales.
pie Gráfico circular (o de sectores).
De ellas, la más utilizada es la función plot, que crea un gráfico a partir de dos
vectores, de idénticas dimensiones, creados previamente con los valores en los ejes de
abscisas y ordenadas del conjunto de puntos a dibujar, utilizando una escala lineal para
ambos ejes. La curva se construye mediante segmentos de rectas que unen puntos
cuyas coordenadas están definidas por los vectores de entrada a la función. La sintaxis
de la función es la siguiente:
plot(x,y)
x: Vector con los valores en el eje de abscisas.
y: Vector con los valores en el eje de ordenadas.
Adicionalmente, la función plot permite dibujar todo tipo de funciones matemáticas
de la forma y=f(x). Para ello:
− Creamos un vector, con los valores en el eje x, en el intervalo donde se
representa la función. La distancia entre los elementos de este vector debe ser
pequeña, ya que los puntos se unen mediante rectas.
− Creamos un vector y tras evaluar la función f(x) para el vector x anterior.
− Dibujamos la función con el comando plot.
Por ejemplo:
>> x=[0:0.01:2*pi];
>> y=sin(x);
>> plot(x,y)
– 19 –
Figura 6: Representación gráfica de la función seno.
Por defecto la curva se dibuja en color azul, con trazado continuo, pero admite
otras opciones mediante la siguiente sintaxis, en la cual aparece un tercer parámetro
denominado estilo:
plot(x,y,'estilo')
x: Vector con los valores en el eje de abscisas.
y: Vector con los valores en el eje de ordenadas.
estilo: Cadena de 1, 2 o 3 caracteres que permite definir el tipo de línea, el color y
el tipo de marca.
-0.2*x
Ejercicio: Representar gráficamente la función y=2*sin(x)*e en el intervalo [0,20]
mediante la función plot. Emplear un incremento de 0.1 para generar el vector x
Función Acción
title('titulo') Añade un título al gráfico.
xlabel('rotulo') Añade un rótulo al eje de abscisas. Se elimina con xlabel off.
ylabel('rotulo') Añade un rótulo al eje de ordenadas. Se elimina con ylabel off.
text(x,y,'texto') Introduce un texto en las coordenadas especificadas.
gtext('texto') Introduce un texto en el lugar en el que se pinche con el ratón.
– 20 –
legend('leyenda1' Define una leyenda para las distintas líneas, barras, etc. que
,'leyenda2', ...) representan los datos.
grid on Dibuja una cuadrícula en el gráfico. Se elimina con grid off.
hold on Habilita la visualización de diferentes gráficas en la misma ventana.
Se deshabilita con hold off.
axis([xmin xmax Determina los límites de los ejes x e y a partir de los valores mínimos
ymin ymax]) y máximos indicados.
Ejercicio: Visualizar, sobre una misma ventana, las funciones seno y coseno en el intervalo
[0, 4π]. La función seno se dibujará en color azul y la función coseno en color
rojo. Incorporar a los gráficos cuantas propiedades se estimen convenientes
(título del gráfico, rótulos para los ejes, leyendas, cuadrícula, etc.), empleando
para ello las funciones mostradas en la Tabla 9.
Figura 7: Opciones mostradas tras pinchar con el botón derecho del ratón sobre la gráfica.
– 21 –
Ejercicio: Modificar los parámetros del gráfico anterior mediante el comando Edit Plot del
menú Tools.
Por último, conviene destacar que es también posible añadir nuevos elementos
sobre un gráfico, a partir de las múltiples opciones desplegadas al escoger la opción
Insert del menú, como nos muestra la Figura 8.
La ayuda de Matlab
Existen varias formas de acceder a información on-line acerca de Matlab. De todas
ellas, vamos a centrarnos sólo en las tres siguientes:
− El comando help.
− El visualizador de ayuda de funciones.
− La ventana de ayuda.
El comando help
Es el método más básico para obtener ayuda acerca de la sintaxis y el uso de una
función concreta. La información se muestra directamente en la ventana del entorno
de trabajo. Por ejemplo:
>> help det
DET Determinant.
DET(X) is the determinant of the square matrix X.
Use COND instead of DET to test for matrix singularity.
– 22 –
El visualizador de ayuda de funciones
Se accede a él pinchando con el ratón sobre el botón fx que aparece a la izquierda
del prompt (>>) de la ventana de comandos (ver Figura 9).
La ventana de ayuda
Proporciona acceso a un amplio rango de información de ayuda y de referencia
consultable a modo de un navegador web. Se accede a ella por medio de la opción
Documentation de la lista desplegable Help de la pestaña HOME, o tecleando en la
línea de órdenes el comando:
>> doc
– 23 –