Prof. J.M. Dı́az Báñez. Departamento de Matemática Aplicada II. Universidad de Sevilla
1
argumentos escalares y vectoriales. Además, Matlab maneja con facilidad números
complejos y, utiliza indistintamente la i y la j para representar el número imaginario
unidad.
Conviene precisar que los paréntesis “( )” y los corchetes “[ ]” tienen significados bien
distintos en Matlab. Los primeros se utilizan para evaluar funciones y los segundos para
definir vectores o matrices.
Ejercicio resuelto. (a) Determine el valor de la raı́z cuadrada del logaritmo neperiano
del seno de cinco.
(b) Compruebe que 3-4-5 son las dimensiones de un triángulo rectángulo.
>> sqrt(log(sin(5)))
>> sqrt(3^2+4^2)-5
Ejercicio. Ejecute las órdenes clock, date y calendar. Interprete las respuestas pro-
porcionadas por Matlab y limpie posteriormente la pantalla.
Formatos numéricos. Para visualizar los resultados, Matlab ofrece varias posibili-
dades aunque, por defecto, representa los números en pantalla con redondeo a cuatro cifras
decimales. También decide si representa un número en notación convencional (coma fija)
o en notación cientı́fica (coma flotante). Los números enteros que tengan menos de nueve
cifras siempre se representan en coma fija. La orden para la representación en pantalla es
format y admite, entre otras, las siguientes opciones:
2
Ejercicio. Ejecute las órdenes realmax y realmin para conocer exactamente el rango
real en el que se mueven los números que manaja Matlab.
Path Browser. Matlab puede llamar a una gran variedad de funciones, tanto propias
como programadas por los usuarios. A veces, puede incluso haber funciones distintas que
tienen el mismo nombre. Por tanto, es interesante saber como Matlab busca cualquier
función que se le pida que ejecute. La clave es el camino de búsqueda (search path) que
el programa utiliza cuando encuentra el nombre de una función. El search path es una
lista de directorios que se puede ver y modificar mediante la orden path, o utilizando el
Path Browser (Submenú Set Path en el menú File).
3
directorio. Ejecutando cd .., se sube un nivel en la jerarquı́a de directorios.
Matrices y Vectores
Matrices y vectores. En Matlab se trabaja fundamentalmente con matrices. De
hecho, para Matlab, los números son simplementes matrices cuadradas de orden uno.
Las matrices pueden definirse de las siguientes formas:
• Escribir la matriz entre corchetes, colocando las filas una a continuación de otra,
separadas por el simbolo ”;”. Entre los elementos de una misma fila podemos colocar
una coma o dejar un espacio en blanco.
Como es natural, si sólo introducimos una fila tenemos un vector fila. Matlab in-
cluye una orden muy útil para generar vectores cuyas coordenadas están en progresión
4
aritmética. En concreto, la estructura a:b:c crea un vector entre los números a y c, in-
crementando cada coordenada con el número b. Si sólo se escribe a:c se considera que b
es igual a uno.
Ejercicio resuelto.Genere tres vectores cuyos elementos representen una partición del
intervalo [-1,1] en cinco, ocho y diez subintervalos iguales. Con las tres primeras co-
ordenadas de cada uno de ellos, genere las tres filas de una matriz 3 × 3 y calcule el
determinante de dicha matriz y de su traspuesta.
>> u=-1:2/5:1, v=-1:2/8:1, w=-1:2/10:1
>> A=[-1, -0.6, -0.2
-1, -0.75, -0.5
-1, -0.8, -0.6]
>> B=A’
>> det(A), det(B)
>> A = [1 1 1 1; 1 2 2 2 ; 1 2 3 3 ; 1 2 3 4 ]
>> A(2:3,1:4)
>> A(2:3,:)
5
>> A([2 3],[1 2 3 4])
>> A([1 4],:)=[]
Ejercicio. Defina la matriz A cuadrada de orden 15 tal que todos sus elementos son nulos,
salvo la primera fila y la primera columna, las cuales toman los valores, respectivamente
de la columna o fila en que se encuentran.
Gráficas en Matlab
La ventana gráfica de Matlab. Para mostrar las correspondientes gráficas, Matlab
abre una nueva ventana, la denominada ventana de figura. Si ya hubiera una ventana
de figura, se borra la ventana de figura actual y se dibuja en ella la nueva gráfica. Para
utilizar dos o más gráficas en diferentes ventanas de figura, se usa la orden figure. La
orden figure(n) muestra o crea, si no la hay, la ventana de figura n-ésima y esta pasa a
ser la ventana de figura activa. La orden close cierra la ventana gráfica activa.
Gráficas bidimensionales. Para obtener gráficas 2-D, Matlab admiten cuatro op-
ciones: gráficas en coordenadas cartesianas, gráficas en coordenadas polares, gráficas de
barras y gráficas de escaleras. La orden para representar datos bidimensionales en co-
ordenadas cartesianas es plot, para crear gráficas en coordenadas polares es polar y,
finalmente, los gráficos de barras y escaleras se generan usando las ordenes bar y stairs,
respectivamente.
La orden plot escala los ejes para ajustar los datos, representa los puntos y, a con-
tinuación, conecta los puntos con una lı́nea recta. También añade una escala numérica y
coloca de forma automática marcas en ambos ejes. Conviene aclarar que lo primero que
se hace al ejecutar la orden plot es eliminar toda la información (lı́neas, ejes,...) sobre la
gráfica anterior, si la hubiere.
6
Ejercicio. Dibuje un polı́gono regular de 20 lados que pueda inscribirse en una circun-
ferencia de radio uno. (Indicación: Evalue plot sobre un vector cuyas componentes sean
números complejos).
Gráficas tridimensionales. Para obtener gráficas 3-D, Matlab admiten tres opciones:
gráficas de lı́neas, gráficas de superficies y gráficas de contorno. La orden básica para
realizar gráficas de lı́neas es plot3, las órdenes para gráficas de superficies son mesh y
surf y, finalmente, para gráficas de contorno es contour.
Gráficas de superficies. La idea es dibujar una función de dos variables sobre un do-
minio rectangular. Supongamos que x e y son dos vectores que contienen las coordenadas
en una y otra dirección de la retı́cula sobre la que se va a dibujar la función. Se comienza
generando dos matrices X (cuyas filas son copias de x) e Y (cuyas columnas son copias de
y) con la orden meshgrid, las cuales representan las coordenadas de todos los puntos del
reticulado. Posteriormente, se calcula la matriz gráfica de datos Z partir de las matrices
de coordenadas X e Y, teniendo en cuenta la función que se trate. Finalmente, la matriz
Z se dibuja con la orden mesh o la orden surf. Ambas órdenes dibujan la función en
perspectiva y la diferencia entre ellas está en el “llenado” de color de las células generadas
por el mallado.
p p
Ejercicio resuelto. Dibuje en un cuadrado la función “sombrero” z=sen( x2 + y 2 )/ x2 + y 2 .
>> u=-8:0.5:8;v=u;
>> [U,V]=meshgrid(u,v);
>> r=sqrt(U.^2+V.^2)+eps;w=sin(r)./r;
>> mesh(w)
7
Archivos en Matlab
Comentarios generales. Para trabajar con datos de gran tamaño, o bien para diseñar
nuevas funciones en Matlab, es completamente imprescindible trabajar con archivos y,
por tanto, con el editor de texto de Matlab. Los archivos adicionales que Matlab
utiliza básicamente son aquellos con extensión “*.m” y una parte importante de cada
sesión con Matlab es crear y refinar este tipo de archivos. Atendiendo a su uso, los
M-archivos suelen dividirse en dos grandes grupos: archivos de instrucciones o tipo script
y archivos de funciones.
Como se comentó, Matlab dispone de un editor excelente que facilita enormemente
el trabajo con los M-archivos. En concreto, el editor muestra con diferentes colores los
diferentes tipos o elementos constituyentes de las órdenes (en verde los comentarios, en
rojo las cadenas de caracteres, ...). Además, el editor se preocupa también de que las
comillas o paréntesis que se abran tengan el correspondiente elemento de cierre.
Para acceder al editor desde la ventana principal de Matlab, basta pulsar el menú
File y después New/ M-file (si se desea crear un archivo nuevo), o bien pulsar el menú
File y después Open M-file... (si se desea abrir un archivo ya existente). El manejo de
esta nueva ventana es totalmente intuitiva.
Ejercicio resuelto. Abra un archivo usando el editor de Matlab, escriba en él una
matriz cuadrada de orden 2 y guarde dicho archivo en el directorio actual con el nombre
“prueba.m”.
Pulsar: File → New → M-file
Escribir: A=[1 2; 2 1]
Pulsar ‘‘Guardar como’’
En ‘‘Nombre de Archivo’’ escribir ‘‘prueba.m’’
Con la pesta~ na ‘‘Guardar en’’, situarse en C:\Matlab5.2
Pulsar \Guardar"
8
Escribir en un archivo:
A=diag(3*ones(20,1));
A=A+diag(ones(19,1),1);
A=A+diag(ones(19,1),-1);
Guardar en ‘‘datos.m’’
Ejecutar el archivo y escribir en Matlab
>> det(A)
Abrir ‘‘datos.m’’
A=A-diag(3*ones(20,1));
A=A+diag(1:20);
Guardar ‘‘datos.m’’
Ejecutar el archivo y escribir en Matlab
>> det(A)
Archivos de funciones. Los M-archivos de funciones son los que permiten incremen-
tar la colección de funciones que ejecuta Matlab. Es decir, se pueden crear funciones
especı́ficas para algún problema concreto y, a partir de su introducción, dichas funciones
tienen el mismo rango que las funciones del sistema y se ejecutan de igual forma. Las
variables en los archivos de funciones son locales, es decir, no afectan a los valores de las
variables que se hayan creado durante la sesión de trabajo con Matlab.
Se aconseja que el nombre de un archivo de función sea el nombre de la función
seguido, obviamente, de la extensión “*.m”. La estructura de un archivo de este tipo es
la siguiente: la primera lı́nea comienza con la orden de Matlab function seguida del
nombre de la función que queramos definir junto con los argumentos de entrada y salida
separados por comas. Es decir,
A continuación, puede haber diversas lı́neas de comentario que han de estar precedidas
necesariamente por el sı́mbolo “%”. Conviene decir que son precisamente estas lı́neas las
que aparecerán en pantalla al usar la orden help. Finalmente aparece el programa, esto
es, las instrucciones necesarias para poder evaluar la función.
Tanto los argumentos de entrada como los de salida no son obligatorios y, si no apare-
cen, no hace falta escribir los correspondientes corchetes o paréntesis.
9
hold off;
Ejercicio. Diseñe una función que devuelva el producto escalar de dos vectores x e y de
Rn . Los argumentos de entrada deben ser los vectores x e y. Además, el correspondiente
archivo debe incluir algunas lı́neas de comentario.
Ejercicio. Diseñe una función que calcule el factorial de un número natural n. El argu-
mento de entrada debe ser dicho número n.
Programación en Matlab
La orden for. La sintaxis para la utilización de esta orden de control es
for “variable”=“vector”
“instrucciones sobre la variable” .
end
El significado es el siguiente: mientras la “variable” recorre los valores del “vector”, se
realizan las “instrucciones” descritas, con la “variable” tomando dichos valores. Matlab
permite anidar varias órdenes for.
Ejercicio resuelto. Diseñe una función que devuelva el término n-ésimo de la iteración
xn+1 = x2n − 2xn , x0 = 4.
Obtenga x1 , x15 y x50 .
Crear un archivo ‘‘iter.m’’
function z=iter(n)
x=4;
for k=1:n
x=x^2-2*x;
end
z=x;
En Matlab
>> iter(1)
>> iter(15)
>> iter(50)
Ejercicio. Dada una matriz cuadrada de orden n, diseñe una función usando la in-
strucción for, que sume los elementos de mayor módulo de cada una de las columnas de
dicha matriz.
Ejercicio. Usando dos instrucciones for anidadas, genere la matriz cuadrada A, definida
por
A(i, j) = i2 j, i, j = 1, ..., 10.
10
¿Sabrı́a generar A sin usar ninguna instrucción for?
Ejercicio resuelto. Diseñe una función sobre los números enteros que asigna el valor 1
a los números pares y positivos, el valor -1 a los números impares y positivos y el valor
cero a los números restantes.
function paridad=paridad(n)
if n<=0
paridad=0;
elseif rem(n,2)==0
paridad=1;
else
paridad=-1;
end
Ejercicio. Diseñe una función que calcule todos los divisores de un número natural dado.
Ejercicio. Diseñe una función que calcule todos los números naturales perfectos menores
que uno dado. Un número natural se dice perfecto si dicho número es la suma de todos
sus divisores menos él.
11
precmaq=1;
while (1+precmaq)>1
precmaq=precmaq/2;
end
precmaq = 2*precmaq
xn+1 = xn + xn−1 , x1 = x2 = 1;
12