Académique Documents
Professionnel Documents
Culture Documents
Introducción
Facultad de Ciencias Exactas y Naturales Variables y Formatos
Introducción a Matlab
R ∗ EDP Numérica
Página Web
Página de Abertura
Página 1 de 75
Abandonar
Acerca de Introducción a Matlab
R
Introducción
(Bajo construcción)
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
Página 2 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
1. Introducción
1.1. El nombre Introducción
Variables y Formatos
Matlab, acrónimo en inglés de Matrix laboratory, es un sistema inte- Vectores y Matrices
ractivo de programación para realizar cálculos numéricos con vectores y
Gráficos
matrices. Como su nombre lo sugiere, Matlab está diseñado para la ∗ Cálculos Avanzados
resolución de problemas que pueden ser enunciados en términos de matrices,
Programación
como lo son la solución numérica de sistemas de ecuaciones lineales, el
∗ EDO Numérica
cálculo de autovalores y autovectores, la factorización de matrices, etc.
∗ EDP Numérica
Matlab incorpora un sencillo y eficiente lenguaje de programación
que, junto con sus capacidades gráficas, hacen de él una herramienta muy Página Web
útil para el desarrollo de experimentos numéricos. Muchos de estos pro-
gramas vienen con el sistema, son funciones “internas” (built-in functions) Página de Abertura
diseñadas para resolver problemas generales y otros conforman librerı́as
especializadas (toolboxes) para resolver problemas más concretos. JJ II
Una ventaja de Matlab es la sencillez de su lenguaje de programación:
J I
muchos programas que resultan difı́ciles de implementar en lenguajes como
C, Fortran, etc, se implementan con relativa facilidad en Matlab. Por
Página 3 de 75
supuesto, un programa en C resulta ser generalmente mucho más eficiente
que en Matlab. Una desventaja de Matlab es su alto valor comercial: Regresar
Matlab
R
es una marca registrada de The MathWorks, Inc. y por ejemplo
el costo de una licencia comercial de Matlab 7.1 Service Pack 3 (sin Pantalla Completa
Abandonar
1.2. Descripción del software
El usuario puede iniciar Matlab haciendo doble clic sobre el ı́cono de Introducción
Matlab o invocando la aplicación desde el menú de Inicio de Windows. Al Variables y Formatos
ejecutarse Matlab, deberá aparecer una ventana como la que se muestra Vectores y Matrices
a continuación. Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
Página 4 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
Partes a destacar del entorno de trabajo de Matlab:
Introducción
1. Ventana de Comandos o Consola (Command Windows)
Variables y Formatos
Es la ventana principal por medio de la cual el usuario se comu-
Vectores y Matrices
nica con Matlab. El prompt (>>) indica que matlab está listo para
Gráficos
recibir comandos, desde realizar operaciones básicas entre números
∗ Cálculos Avanzados
(ver sección 2, Variables y Formatos) hasta invocar programas que
el propio usuario realice (ver sección 6, Programación). Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
Página 5 de 75
Regresar
2. Directorio Actual de Trabajo (Current Directory)
Pantalla Completa
El directorio actual de trabajo es una ruta que Matlab utiliza como
punto de referencia. Cualquier archivo de Matlab que el usuario Cerrar
Abandonar
desee ejecutar debe estar ubicado en el directorio de trabajo excepto
en la situación descrita en 3. Una manera rápida de ver o cambiar el
Introducción
directorio de trabajo es por medio del campo mostrado en la figura.
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
Por defecto, el directorio de trabajo es C:\MATLAB7\work donde el 7
∗ EDP Numérica
hace referencia a la versión de Matlab. En este ejemplo, los archivos
del Current Directory aparecen listados en la figura. Página Web
Página de Abertura
JJ II
J I
Página 6 de 75
Regresar
Pantalla Completa
Tres de ellos son archivos de Matlab (M-files), archivos con ex-
tensión .m y pueden ser invocados desde la linea de comandos. Cerrar
Abandonar
3. Camino de búsqueda (Search Path)
El Search Path es una lista de directorios que Matlab utiliza para Introducción
buscar archivos relacionados con Matlab (M-files entre ellos). Si un Variables y Formatos
archivo de Matlab no se encuentra en el directorio actual, pero el di- Vectores y Matrices
rectorio donde se encuentra ubicado el archivo hace parte del Search
Gráficos
Path, entonces el usuario puede ejecutarlo sin problemas desde con- ∗ Cálculos Avanzados
sola.
Programación
∗ EDO Numérica
Finalmente, escriba el comando demo en la ventana de comandos y
∗ EDP Numérica
oprima la tecla enter:
Página Web
>> demo
Página de Abertura
Regresar
Pantalla Completa
Cerrar
Abandonar
2. Variables y Formatos
2.1. Operadores Aritméticos Introducción
Variables y Formatos
El primer uso básico que le podemos dar a la ventana de comandos de Vectores y Matrices
Matlab es el de una calculadora, ingresamos los valores a operar y opri-
Gráficos
mimos la tecla enter: ∗ Cálculos Avanzados
Programación
>> 3+4
∗ EDO Numérica
ans =
∗ EDP Numérica
7
Página Web
>> 5/10*2+5 J I
ans =
Página 8 de 75
6
Regresar
Cerrar
Abandonar
>> 5/(10*2+5)
ans = Introducción
0.2000 Variables y Formatos
Vectores y Matrices
Gráficos
Adicional a la operación de divisón (/), existe en Matlab una ope-
∗ Cálculos Avanzados
ración de división “por izquierda” (\), como muestra el siguiente ejemplo.
Programación
∗ EDO Numérica
>> 4\3
∗ EDP Numérica
ans =
0.7500 Página Web
Página de Abertura
Observemos que los resultados de los cálculos son almacenados por de-
fecto en la variable ans (del inglés, answer ). Si queremos ver el contenido JJ II
de la variable, escribimos ans en la linea de comandos y oprimimos enter:
J I
Pantalla Completa
Abandonar
>> 3^2 + 4*ans
ans = Introducción
12 Variables y Formatos
Vectores y Matrices
Como consecuencia de esta última operación, el contenido de la variable Gráficos
ans es modificado nuevamente. ∗ Cálculos Avanzados
Programación
2.2. Operadores de Comparación ∗ EDO Numérica
∗ EDP Numérica
Existen en Matlab seis operadores de comparación: igual a (==), dife-
rente de (∼=), menor que (<), mayor que (>), menor o igua a (<=) y Página Web
mayor o igual a (>=). Por ejemplo
Página de Abertura
>> 1 == 2
ans = JJ II
0
J I
Regresar
>> 1 < 2
ans =
Pantalla Completa
1
Cerrar
Abandonar
produce como resultado ans = 1 (verdadero). Observemos que al igual
que con los operadores aritméticos, para los operadores de relación el orden
Introducción
importa:
Variables y Formatos
Vectores y Matrices
>> 1>2==2<3
Gráficos
ans = ∗ Cálculos Avanzados
1
Programación
∗ EDO Numérica
∗ EDP Numérica
produce 1 (verdadero) mientras que
Página Web
>> 1>2==(2<3)
ans = Página de Abertura
0
JJ II
J I
produce 0 (falso).
Página 11 de 75
2.3. Operadores Lógicos
Regresar
Los operadores lógicos son el Y (&), el O ( | ) y la negación (∼). Matlab
le da prioridad primero a ∼, luego a & y finalmente a |. Asi por ejemplo Pantalla Completa
Cerrar
Abandonar
>> 0&11
ans = Introducción
1 Variables y Formatos
Vectores y Matrices
Gráficos
da verdadero (cualquier valor distinto de cero es considerado verdadero) ∗ Cálculos Avanzados
y
Programación
∗ EDO Numérica
>> 0&(11) ∗ EDP Numérica
ans =
0 Página Web
Página de Abertura
J I
A B A&B A|B ∼A xor(A, B)
0 0 0 0 1 0 Página 12 de 75
0 1 0 1 1 1
1 0 0 1 0 1 Regresar
1 1 1 1 0 0
Pantalla Completa
Cerrar
Abandonar
2.4. Formato de Variables
Además de ans, existen otro tipo de variables en Matlab cuyo contenido Introducción
se encuentra pre determinado. Por ejemplo la variable pi almacena el valor Variables y Formatos
3.14159 . . . Vectores y Matrices
Gráficos
>> pi ∗ Cálculos Avanzados
ans = Programación
3.1416 ∗ EDO Numérica
∗ EDP Numérica
√
y la variable i almacena el valor de −1. Página Web
Página de Abertura
>> i
ans = JJ II
0 + 1.0000i
J I
Abandonar
>> format long
>> pi Introducción
ans = Variables y Formatos
3.14159265358979 Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Otros tipos de formatos se presentan en la siguiente tabla.
Programación
∗ EDO Numérica
Tipo Formato Ejemplo ∗ EDP Numérica
short punto fijo, 5 dı́gitos 3.1416
long punto fijo, 15 dı́gitos 3.14159265358979 Página Web
Cerrar
Abandonar
2.5. Definición de Variables
El usuario puede definir su propias variables. Mientras que el operador == Introducción
nos permite determinar cuando el contenido de dos variables es el mismo, Variables y Formatos
como se mostró en la sección Operadores de Comparación, el operador = Vectores y Matrices
nos permite asignarle un valor a una variable: lo que se encuentre al lado Gráficos
derecho del igual es asignado a lo que se encuentre al lado izquierdo del ∗ Cálculos Avanzados
igual. Por ejemplo Programación
∗ EDO Numérica
>> a = 2 ∗ EDP Numérica
a =
2 Página Web
Página de Abertura
asigna el valor de 2 a la variable a o también
JJ II
>> x = 2*3;
J I
>>
Página 15 de 75
Cerrar
Abandonar
>> x
x = Introducción
6 Variables y Formatos
Vectores y Matrices
Página Web
Regresar
Si estamos interesados en borrar todas las variables que hemos definido,
entonces debemos usar el comando clear all. Otro comando de gran Pantalla Completa
utilidad es who, el cual lista todas las variables que hemos definido:
Cerrar
Abandonar
>> who
Your variables are: Introducción
a x Variables y Formatos
Vectores y Matrices
Página Web
a 1x1 8 double array
x 1x1 8 double array
Página de Abertura
J I
La utilidad de varios comandos se puede inferir fácilemente a partir de
su nombre como es el caso de clear o who; para otros comandos, como pwd, Página 17 de 75
cuya utilidad quizá no es inmediatamente, el comando help nos puede ser
de gran ayuda. Por ejemplo Regresar
Pantalla Completa
Cerrar
Abandonar
>> help pwd
PWD Show (print) current working directory. Introducción
PWD displays the current working directory. Variables y Formatos
Vectores y Matrices
S = PWD returns the current directory in the string S. Gráficos
∗ Cálculos Avanzados
See also cd.
Programación
∗ EDO Numérica
Reference page in Help browser
∗ EDP Numérica
doc pwd
Página Web
nos da información del comando en cuestión: pwd (del inglés, present Página de Abertura
working directory) nos muestra el directorio actual de trabajo.
Para acceder a un listado de comandos de carácter general JJ II
J I
>> help general
Página 18 de 75
Regresar
2.6. Funciones Elementales
Además de las cuatro operaciones aritméticas básicas y de de los coman- Pantalla Completa
dos ya vistos, Matlab incorpora una serie de funciones internas (built-in
Cerrar
Abandonar
functions) como lo son las funciones matemáticas básicas seno, coseno,
tangente, exponecial y logarı́tmo entre otras.
Introducción
Ası́, por ejemplo, para la función coseno
Variables y Formatos
Vectores y Matrices
>> cos(pi)
Gráficos
ans = ∗ Cálculos Avanzados
-1
Programación
∗ EDO Numérica
∗
para la función exponencial EDP Numérica
Página Web
>> exp(1)
ans = Página de Abertura
2.7183
JJ II
Página 19 de 75
>> 4*atan(1)
ans = Regresar
3.1416
Pantalla Completa
Cerrar
Abandonar
Si deseamos información de alguna función interna de Matlab, por
ejemplo seno, utilizamos el comando help:
Introducción
Variables y Formatos
>> help sin Vectores y Matrices
SIN Sine.
Gráficos
SIN(X) is the sine of the elements of X. ∗ Cálculos Avanzados
Programación
See also asin, sind.
∗ EDO Numérica
∗ EDP Numérica
Overloaded functions or methods (...)
help sym/sin.m Página Web
Pantalla Completa
Cerrar
Abandonar
2.7. Ejercicios
Resuelva los siguientes ejercicios. Introducción
Variables y Formatos
1. Vectores y Matrices
Gráficos
2.
∗ Cálculos Avanzados
3. Programación
∗ EDO Numérica
4.
∗ EDP Numérica
5.
Página Web
Página de Abertura
JJ II
J I
Página 21 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
3. Vectores y Matrices
3.1. Edición de Vectores Introducción
Variables y Formatos
Las instrucciones para editar vectores por componentes en Matlab son: Vectores y Matrices
Gráficos
>> x = [1 4 6 8] % vector fila ∗ Cálculos Avanzados
x = Programación
1 4 6 8 ∗ EDO Numérica
∗ EDP Numérica
Página Web
>> y = [3;6;9;1] % vector columna
y = Página de Abertura
3
6 JJ II
9
1 J I
Página 22 de 75
Cerrar
Abandonar
>> w = [13 45 32 1]’
y = Introducción
13 Variables y Formatos
45 Vectores y Matrices
32 Gráficos
1 ∗ Cálculos Avanzados
Programación
∗
Si deseamos editar vectores de más componentes, tenemos las siguientes EDO Numérica
∗
instrucciones: EDP Numérica
Página Web
>> z = 1:2:18
z = Página de Abertura
1 3 5 7 9 11 13 15 17
JJ II
>> zz = 35:-1:1;
Regresar
Pantalla Completa
genera un vector de componentes 35, 34, . . . , 1. La sintaxis de la in-
strucción es: Cerrar
Abandonar
>> variable = valor inicial:incremento:valor final
Introducción
Variables y Formatos
También podemos emplear la instrucción linspace cuya sintaxis es
Vectores y Matrices
Gráficos
>> linspace(valor inicial, valor final, número de puntos) ∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
>> v = linspace(1,2,5)
v =
Página Web
1.0000 1.2500 1.5000 1.7500 2.0000
Página de Abertura
>> b = ones(1,4)
Regresar
v =
1 1 1 1 Pantalla Completa
Cerrar
Abandonar
que genera un vector fila de unos de 4 componentes y
Introducción
>> a = ones(4,1) Variables y Formatos
a = Vectores y Matrices
1
Gráficos
1 ∗ Cálculos Avanzados
1
Programación
1
∗ EDO Numérica
∗ EDP Numérica
que genera un vector columna de unos de 4 componentes. Si queremos
Página Web
generar vectores de ceros en lugar de unos:
Página de Abertura
>> c = zeros(1,5)
c = JJ II
0 0 0 0 0
J I
Página 25 de 75
Para generar vectores con entradas aleatorias
Regresar
Pantalla Completa
Cerrar
Abandonar
>> d = rand(3,1)
d = Introducción
0.2311 Variables y Formatos
0.6068 Vectores y Matrices
0.4860 Gráficos
∗ Cálculos Avanzados
Programación
>> max(d) % extrae la mayor componente ∗ EDO Numérica
ans = ∗ EDP Numérica
0.6068
Página Web
Página de Abertura
>> min(d) % extrae la menor componente
ans = JJ II
0.2311
J I
Página 26 de 75
Cerrar
Abandonar
Si queremos extraer simplemente una entrada o varias entradas de un
vector empleamos las siguientes instrucciones
Introducción
Variables y Formatos
>> d(3) Vectores y Matrices
ans =
Gráficos
0.4860 ∗ Cálculos Avanzados
Programación
∗ EDO Numérica
>> d([1 3]) % extrae la primera y tercera componente ∗ EDP Numérica
ans =
0.2311 Página Web
0.4860
Página de Abertura
JJ II
3.3. Operaciones con Vectores
J I
Para realizar las operaciones con vectores es necesario que ellos tengan el
mismo numero de elementos, consideremos los vectores: Página 27 de 75
Pantalla Completa
Podemos sumarlos y restarlos
Cerrar
Abandonar
>> x+y
ans = Introducción
6 12 1 0 Variables y Formatos
Vectores y Matrices
Gráficos
>> x-y ∗ Cálculos Avanzados
ans = Programación
2 0 5 6 ∗ EDO Numérica
∗ EDP Numérica
Página Web
>> 3*x
ans = Página de Abertura
12 18 9 9
JJ II
Cerrar
Abandonar
>> x./y
ans = Introducción
2.0000 1.0000 -1.5000 -1.0000 Variables y Formatos
Vectores y Matrices
Gráficos
>> x.^2 ∗ Cálculos Avanzados
ans =
Programación
16 36 9 9 ∗ EDO Numérica
∗ EDP Numérica
Si queremos multiplicar directamente se produce un error ya que la
Página Web
multiplicación (como matrices) no está definida
Página de Abertura
>> x*y
??? Error using == mtimes JJ II
Inner matrix dimensions must agree.
J I
Cerrar
Abandonar
3.4. Edición de Matrices
Una matriz se edita por filas, asi: Introducción
Variables y Formatos
>> A = [2 -1 3;4 6 -1;2 -1 -3] Vectores y Matrices
A = Gráficos
2 -1 3 ∗ Cálculos Avanzados
4 6 -1
Programación
2 -1 -3 ∗ EDO Numérica
∗ EDP Numérica
Si tenemos el vector
Página Web
J I
>> B=[A;h]
B =
Página 30 de 75
2 -1 3
4 6 -1 Regresar
2 -1 -3
2 3 4 Pantalla Completa
Cerrar
Abandonar
3.5. Comandos Especiales con Matrices
También existen instrucciones en Matlab que construyen matrices simi- Introducción
lares a las de los vectores: Variables y Formatos
Vectores y Matrices
>> C=ones(2) % genera una matriz 2x2 de unos Gráficos
C = ∗ Cálculos Avanzados
1 1 Programación
1 1 ∗ EDO Numérica
∗ EDP Numérica
Página Web
>> D=zeros(2,3) % genera una matriz 2x3 de ceros
C = Página de Abertura
0 0 0
0 0 0 JJ II
J I
0.2311 0.8913
Pantalla Completa
0.6068 0.7621
Cerrar
Abandonar
>> F=eye(3) % genera la matriz identidad de orden 3
F = Introducción
1 0 0 Variables y Formatos
0 1 0 Vectores y Matrices
0 0 1 Gráficos
∗ Cálculos Avanzados
Programación
>> diag(F) % extrae la diagonal principal de F ∗ EDO Numérica
F = ∗ EDP Numérica
1
1 Página Web
1
Página de Abertura
JJ II
>> diag([1 2 3]) % genera una matriz diagonal
J I
F =
1 0 0 Página 32 de 75
0 2 0
0 0 3 Regresar
Pantalla Completa
Si tenemos la matriz
Cerrar
Abandonar
>> G = [2 -5 8;-2 6 -7;5 7 -6]
G = Introducción
2 -5 8 Variables y Formatos
-2 6 -7 Vectores y Matrices
5 7 -6 Gráficos
∗ Cálculos Avanzados
Programación
>> tril(G) % obtiene la triangular inferior de G ∗ EDO Numérica
G = ∗ EDP Numérica
2 0 0
-2 6 0 Página Web
5 7 -6
Página de Abertura
JJ II
>> triu(G) % obtiene la triangular superior de G
J I
G =
2 -5 8 Página 33 de 75
0 6 -7
0 0 -6 Regresar
Pantalla Completa
¿Qué obtenemos con la instrucción diag(diag(G))?
Cerrar
Abandonar
>> size(G) % obtiene el orden de la matriz
ans = Introducción
3 3 Variables y Formatos
Vectores y Matrices
Gráficos
>> H=G’ % obtiene la transpuesta de G ∗ Cálculos Avanzados
H =
Programación
2 -2 5 ∗ EDO Numérica
-5 6 7 ∗ EDP Numérica
8 -7 -6
Página Web
ans =
JJ II
-5 6 7
J I
ans =
Regresar
5
7
Pantalla Completa
-6
Cerrar
Abandonar
En general, la sintaxis para extraer componentes, filas y columnas son:
JJ II
>> C=A+B
J I
C =
3 2 1 Página 35 de 75
1 6 -6
Regresar
Pantalla Completa
Cerrar
Abandonar
>> D=A-B
D = Introducción
-1 4 7 Variables y Formatos
11 10 2 Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
>> E=A*B’
Programación
E = ∗ EDO Numérica
-13 -27 ∗ EDP Numérica
10 -38
Página Web
ans =
JJ II
1 9 16
36 64 4 J I
Página 36 de 75
>> A.*B
Regresar
ans =
2 -3 -12
Pantalla Completa
-30 -16 8
Cerrar
Abandonar
>> det(F) % obtiene el determinante de F
ans = Introducción
-17 Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
>> inv(F) % obtiene la inversa de F
ans = Programación
0.0588 0.1765 ∗ EDO Numérica
0.2941 -0.1176 ∗ EDP Numérica
Página Web
17
Para resolver el sistema F x = : Página de Abertura
34
JJ II
>> F\[17;34]
J I
ans =
7.0000
Página 37 de 75
1.0000
Regresar
Pantalla Completa
Cerrar
Abandonar
4. Gráficos
Cada vez que Matlab realiza un gráfico se abre una nueva ventana llamada Introducción
Figure 1, para activarla y ver los resultados es necesario dar clic sobre ella Variables y Formatos
ya que esta se minimiza al volver a la ventana del Command Windows. Si Vectores y Matrices
queremos tener mas de una ventana de graficos abierta es necesario emplear Gráficos
la instruccı́on figure. ∗ Cálculos Avanzados
Programación
4.1. Grafica Simple ∗ EDO Numérica
∗ EDP Numérica
Una primer forma de graficar en Matlab es tomando un conjunto de pares
ordenados (xi , yi ) y representarlos empleando el comando plot, para ello es Página Web
necesario crear dos vectores x y y de igual longitud. Por ejemplo grafique-
mos Página de Abertura
y = exp (x) sen (2x) , para 0 ≤ x ≤ 10.
JJ II
Las instrucciones en Matlab son
J I
>> x=0:0.1:10;
Página 38 de 75
>> y=sin(x).*exp(x/10);
>> plot(x,y)
Regresar
Pantalla Completa
y la figura obtenida se muestra a continuación
Cerrar
Abandonar
Introducción
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
Para representar dos gráficas en el mismo plano coordenado empleamos
J I
>> z=cos(x).*exp(x/10);
Página 39 de 75
>> plot(x,y,x,z)
Regresar
Cerrar
Abandonar
Introducción
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
En forma similar podemos representar mas de una gráfica dentro del
mismo plano coordenado. J I
Página 40 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
4.2. Etiquetas y Tı́tulo
Introducción
>> plot(x,y,x,z)
Variables y Formatos
>> xlabel(’x’) % coloca una etiqueta al eje x
>> ylabel(’y’) % coloca una etiqueta al eje y Vectores y Matrices
Página Web
Página de Abertura
JJ II
J I
Página 41 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
Si queremos colocar tı́tulos sobre cada curva empleamos la instrucción
text. La sintaxis es text(x,y,’texto’). Para las curvas anteriores
Introducción
Variables y Formatos
>> plot(x,y,x,z)
Vectores y Matrices
>> text(8,2.3,’exp(x)sin(2x)’)
Gráficos
>> text(8,-2.8,’cos(x)exp(x/10)’)
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
Página 42 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
4.3. Estilos y Colores
Para especificar los colores y los estilos de lı̀nea damos un argumento adi- Introducción
cional al plot. A continuación graficamos y en rojo y z con signo +. Variables y Formatos
Vectores y Matrices
Página Web
Página de Abertura
JJ II
J I
Página 43 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
Los argumentos opcionales adicionales al plot después de cada pareja
de vectores son:
Introducción
Variables y Formatos
Simbolo Color Simbolo Estilo de lı́nea Vectores y Matrices
y amarillo . punto Gráficos
m magenta o cı́rculo ∗ Cálculos Avanzados
c cien x marca x Programación
r rojo + más ∗ EDO Numérica
g verde * estrella ∗ EDP Numérica
b azul - lı́nea sólida
w blanco : lı́nea punteada Página Web
k negro -. lı́nea punto raya
-- lı́nea de trazos Página de Abertura
JJ II
Tenga en cuenta que puede utilizar al mismo tiempo sı́mbolo y color,
es decir J I
Página 44 de 75
>> plot(x,z,’m*’)
Regresar
Pantalla Completa
Cerrar
Abandonar
Introducción
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
Si queremos aproximar ceros de una función es necesario tener una
cuadricula que nos lo permita, para ello se emplea la instrucción grid on J I
despues del plot ası́
Página 45 de 75
Regresar
>> plot(x, sin(x)-x/10), grid on
Pantalla Completa
Cerrar
Abandonar
Introducción
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
y si queremos especificar un rango para los ejes para la búsqueda de ceros
empleamos la instrucción axis([xmin,xmax,ymin,ymax]). J I
Para tener mas opciones para los ejes tenemos la ayuda en linea
Página 46 de 75
Pantalla Completa
Cerrar
Abandonar
4.4. Manipulación de Gráficos
Para incluir más de una gráfica en una ventana sin tener que listar todos Introducción
los vectores en una misma lı́nea empleamos hold on: Variables y Formatos
Vectores y Matrices
>> x=-2:0.1:2; y=sin(x); z=cos(x).*exp(x); Gráficos
∗ Cálculos
>> plot(x,y,’r*’) Avanzados
>> hold on Programación
>> plot(x,z,’c+’) ∗ EDO Numérica
>> hold off ∗ EDP Numérica
>> figure % activa una nueva ventana de grafico
Página Web
Página de Abertura
JJ II
J I
Página 47 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
La instrucción subplot(m,n, p) subdivide la ventana de la figura ac-
tual en una matriz m × n planos coordenados activando el p − ésimo plano.
Introducción
Las subgráaficas se numeran de izquierda a derecha por medio de las filas.
Variables y Formatos
Consideremos el siguiente ejemplo:
Vectores y Matrices
Gráficos
>> x=linspace(0,2*pi,100); ∗ Cálculos Avanzados
>> y=sin(2*x); z=cos(3*x); w=sin(x).*cos(x); q=tan(x);
Programación
>> subplot(2,2,1) % selecciona la subgrafica superior izquierda
∗ EDO Numérica
>> plot(x,y); title(’sin(2x)’)
∗ EDP Numérica
>> subplot(2,2,2) % selecciona la subgrafica
>> plot(x,z); title(’cos(3x)’) Página Web
>> subplot(2,2,3) % selecciona la subgrafica inferior izquierda
>> plot(x,w); title(’sin(x)cos(x)’) Página de Abertura
>> subplot(2,2,4) % selecciona la subgrafica inferior derecha
>> plot(x,q); title(’tan(x)’) JJ II
>> figure % activa una nueva ventana de grafico
J I
Página 48 de 75
El resultado obtenido es
Regresar
Pantalla Completa
Cerrar
Abandonar
Introducción
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
La instrucción fplot permite graficar funciones en forma simbólica, es
decir, sin necesidad de crear las parejas de puntos. Página 49 de 75
Regresar
>> fplot(’sin(x)/x’,[-10 10])
Pantalla Completa
Cerrar
Abandonar
Introducción
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
También es posible dar un rango en y, es decir, emplear la instrucción
fplot(’fun’,[xmin xmax ymin ymax]). J I
Matlab proporciona una variedade de funciones para visualizar datos 3D. Regresar
Empleamos la instrucción plot3(x,y,z) donde x, y y z son vectores.
Pantalla Completa
Cerrar
Abandonar
>> t=0:pi/50:10*pi;
>> plot3(sin(t),cos(t),t) Introducción
>> title(’Helix’),xlabel(’sin(t)’),ylabel(’cos(t)’),zlabel(’t’) Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
Página 51 de 75
Regresar
El primer paso para generar una gráfica de malla de una función z = Pantalla Completa
f (x, y), es generar matrices X y Y formadas respectivamente por filas
Cerrar
Abandonar
y columnas repetidas, en algún rango de las variables x y y. Con la in-
strucción [X,Y]=meshgrid(x,y) se crean X y Y matrices que representan
Introducción
una rejilla ractangular de puntos en el plano xy. Para generar las imagenes
Variables y Formatos
empleamos X y Y con z = f (X, Y ) y finalmente empleamos la instrucción
Vectores y Matrices
mesh(X,Y,z)
Gráficos
∗ Cálculos Avanzados
>> x=-2:0.1:2; y=x;
>> [X,Y]=meshgrid(x,y); Programación
∗
>> z=sqrt(4-X.^2-Y.^2); EDO Numérica
>> mesh(X,Y,z) ∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
Página 52 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
>> figure,w=sqrt(4-X.^2+Y.^2);
>> mesh(X,Y,w) Introducción
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
Página 53 de 75
Regresar
Una grafica de superficie se obtiene por medio de la instrucción surf
que tienen los mismos argumentos de mesh Pantalla Completa
Cerrar
Abandonar
>> surf(X,Y,z)
Introducción
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
Página 54 de 75
Regresar
>> surf(X,Y,w)
Pantalla Completa
Cerrar
Abandonar
Introducción
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
Página 55 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
∗
5. Cálculos Avanzados
Introducción
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
Página 56 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
6. Programación
6.1. La idea detrás . . . Introducción
Variables y Formatos
Un programa en Matlab es básicamente un archivo plano sin formato Vectores y Matrices
(archivo ASCII) con extensión (.m) que contiene una serie de comandos de
Gráficos
Matlab. ∗ Cálculos Avanzados
Existen dos clases de programas en Matlab: archivos de comandos
Programación
(scripts) y funciones (functions). Estos archivos se pueden generar y editar
∗ EDO Numérica
con cualquier editor de textos. Nosotros utilizaremos el editor de textos que
∗ EDP Numérica
viene por defecto en Matlab y que puede ser invocado con el comando
edit desde la consola Página Web
JJ II
o haciendo doble clic sobre el ı́cono de la hoja en blanco que aparece debajo
de File, en la ventana principal de Matlab. J I
Página 57 de 75
Regresar
Pantalla Completa
Deberá entonces emerger una ventana como la que se muestra a con-
tinuación. Cerrar
Abandonar
Introducción
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
6.2. Archivos de comandos (Scripts)
Página 58 de 75
Un script es un archivo con extensión (.m) que contiene comandos de
Matlab. El usuario puede invocar el programa desde la linea de co- Regresar
Abandonar
Como un primer ejemplo, y para seguir la tradición, consideremos el
programa Hola Mundo cuyo código aparece a continuación
Introducción
Variables y Formatos
close all; % cierra todas las ventanas
Vectores y Matrices
clear all; % borra todas las variables
Gráficos
clc; % limpia la pantalla
∗ Cálculos Avanzados
>> holamundo
JJ II
El resultado es J I
Página 59 de 75
hola mundo
>>
Regresar
Pantalla Completa
Como segundo ejemplo, consideremos ahora el código mostrado a con-
tinuación Cerrar
Abandonar
% Calcula el maximo entre dos numeros
Introducción
x = 3; Variables y Formatos
y = -5; Vectores y Matrices
if (x>y) Gráficos
M=x; % si x es mayor que y, a M se le asigna x ∗ Cálculos Avanzados
else
Programación
M=y; % en caso contrario, a M se le asigna y ∗ EDO Numérica
end
∗ EDP Numérica
disp(’el maximo es’)
disp(M) Página Web
Página de Abertura
Este programa calcula el mayor número entre 3 y −5. Salvemos lo como
maximo.m y ejecutemos lo desde la ventana de comandos. JJ II
J I
>> maximo
el maximo es Página 60 de 75
3
Regresar
Observemos que después de su ejecución, los valores de las variables x, Pantalla Completa
Abandonar
>> x
x = Introducción
3 Variables y Formatos
Vectores y Matrices
Gráficos
6.3. Funciones ∗ Cálculos Avanzados
Las funciones son como scripts un poco más complejos: aceptan argumen- Programación
∗
tos (como las funciones matemáticas) y son compiladas la primera vez que EDO Numérica
son utilizadas en una sesión dada. ∗ EDP Numérica
Como ejemplo inicial, consideremos el siguiente código que convierte el
Página Web
script maximo.m en una función.
Página de Abertura
% Funcion que calcula el maximo entre dos numeros
JJ II
function M=mayor(x,y)
J I
if (x>y)
M=x; % si x es mayor que y, a M se le asigna x Página 61 de 75
else
M=y; % en caso contrario, a M se le asigna y Regresar
end
Pantalla Completa
Cerrar
Abandonar
A diferencia de los scripts, la primera linea del código (que no es
comentario) de una función empieza con la palabra function. En este
Introducción
caso, la función definida es llamada mayor y es recomendable que salvemos
Variables y Formatos
el archivo con el nombre de la función, i.e., mayor.m.
Vectores y Matrices
Gráficos
>> mayor(17,43)
∗ Cálculos Avanzados
ans =
43 Programación
∗ EDO Numérica
∗ EDP Numérica
Observemos que después de su ejecución, los valores de las variables x,
y y M no se conservan, son variables locales. Por ejemplo Página Web
Página de Abertura
>> y
??? Undefined function or variable ’y’. JJ II
J I
Observemos también que los argumentos son necesarios
Página 62 de 75
>> mayor
Regresar
??? Input argument "x" is undefined.
Error in == mayor at 4
Pantalla Completa
if (x>y)
Cerrar
Abandonar
Matlab muestra que el error aparece en la linea 4 del programa donde
aparece la instrucción if (x>y).
Introducción
Observemos que la primera linea del programa es un comentario y nos
Variables y Formatos
dice el propósito de la función. El usuario puede acceder a dicha infor-
Vectores y Matrices
mación desde la consola:
Gráficos
∗ Cálculos Avanzados
>> help mayor
Funcion que calcula el maximo entre dos numeros Programación
∗ EDO Numérica
∗ EDP Numérica
Finalmente recordemos que la primera linea (que no es un comentario)
de una función debe ser de la forma Página Web
donde
JJ II
• [salida]: son los valores de salida de la función, puede ser sólo uno
J I
(en cuyo caso los corchetes no son necesarios) como en el ejemplo ya
visto o pueden ser varios como en el caso de funciones vectoriales. Página 63 de 75
Abandonar
6.4. Condicionales
Matlab incorpora las estructuras de control básicas (condicionales y bu- Introducción
cles) que un lenguaje de programación requiere con el fin de controlar el Variables y Formatos
flujo de ejecución de las instrucciones de un programa. Las sentencias Vectores y Matrices
condicionales permiten realizar una operación según se cumpla o no una Gráficos
determinada condición. ∗ Cálculos Avanzados
El código de la función mayor utiliza la sentencia condiconal if-else- Programación
if. Su sintaxis general es de la forma ∗ EDO Numérica
∗ EDP Numérica
if condicion_1
bloque_1 Página Web
elseif condicion_2
Página de Abertura
bloque_2
.
JJ II
.
. J I
else
bloque_final Página 64 de 75
end
Regresar
Pantalla Completa
Si la condición 1 es verdadera, se ejecuta el bloque de sentencias 1, de
lo contrario, se ejecuta el bloque de sentencias 2, etc. Por ejemplo Cerrar
Abandonar
>> t = rand(1);
>> if t > 0.75 Introducción
s = 0; Variables y Formatos
elseif t < 0.25 Vectores y Matrices
s = 1; Gráficos
else ∗ Cálculos Avanzados
s = 1 - 2*(t-0.25);
Programación
end ∗ EDO Numérica
∗ EDP Numérica
¿Cuál es el valor de t y s? La función signo dada a continuación ilustra
Página Web
también el uso del condicional if-else-if.
Página de Abertura
function sgn = signo(x)
if x > 0 JJ II
sgn = 1;
elseif x < 0 J I
sgn = -1;
Página 65 de 75
else
sgn = 0;
Regresar
end
Pantalla Completa
Abandonar
>> signo(-0.75)
ans = Introducción
-1 Variables y Formatos
Vectores y Matrices
Gráficos
Otra sentencia condicional con la que cuenta Matlab es el switch. ∗ Cálculos Avanzados
Su sintaxis general es de la forma
Programación
∗ EDO Numérica
switch expresion ∗ EDP Numérica
case valor_1
bloque_1 Página Web
case valor_1
bloque_2 Página de Abertura
.
. JJ II
.
J I
otherwise
bloque_final Página 66 de 75
end
Regresar
Abandonar
de ningún valor i coincide con expresion entonces bloque final es eje-
cutado. A continuación un ejemplo.
Introducción
Variables y Formatos
function y = trig(func,x) Vectores y Matrices
switch func
Gráficos
case ’sin’ ∗ Cálculos Avanzados
y = sin(x);
Programación
case ’cos’
∗ EDO Numérica
y = cos(x);
∗ EDP Numérica
case ’tan’
y = tan(x); Página Web
otherwise
error(’Funcion no definida’) Página de Abertura
sgn = 0;
end JJ II
J I
ans =
Regresar
1.7321
Pantalla Completa
Cerrar
Abandonar
6.5. Bucles
Los bucles (while y for) permiten repetir las mismas operaciones sobre Introducción
distintos datos. La sintaxis general del while es la siguiente Variables y Formatos
Vectores y Matrices
while condicion Gráficos
bloque ∗ Cálculos Avanzados
end
Programación
∗ EDO Numérica
Si condicion es verdadera, bloque es ejecutado. Después de su eje- ∗ EDP Numérica
cución, condicion es evaluada de nuevo. Si es verdadera, bloque es ejecu-
tado nuevamente y ası́ sucesivamente hasta que condicion sea falsa. Página Web
end
Regresar
>> annos
annos =
Pantalla Completa
40
Cerrar
Abandonar
La sintaxis general del for es la siguiente
Introducción
for variable = expresion_1:expresion_2 Variables y Formatos
bloque Vectores y Matrices
end Gráficos
∗ Cálculos Avanzados
Programación
Por ejemplo para calcular el valor de cos x con x variando desde cero ∗ EDO Numérica
hasta π/2 en incrementos de π/10 podemos utilizar ∗ EDP Numérica
Página Web
>> for n = 0:5
y(n+1) = cos(n*pi/10); Página de Abertura
end
>> y JJ II
y =
J I
1.0000 0.9511 0.8090 0.5878 0.3090 0.0000
Página 69 de 75
Los bucles deberı́an ser evitados siempre que sea posible y sustitui- Regresar
dos por expresiones vectorizada que resultan ser mucho más rápidas. Una
Pantalla Completa
solución vectorizada del problema anterior es dada por el código presentado
a continuación. Cerrar
Abandonar
>> for n = 0:5
>> y = cos(n*pi/10) Introducción
y = Variables y Formatos
1.0000 0.9511 0.8090 0.5878 0.3090 0.0000 Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Finalmente, tres comandos que complementan a los bucles: break,
Programación
continue y return.
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
Página 70 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
∗
7. EDO Numérica
En esta sección utilizaremos el comando ode45 de Matlab para hallar Introducción
x0 = F(t, x) (3) JJ II
donde J I
Página 71 de 75
x = [x1 x2 · · · xn ]T y F(t, x) = [x2 x3 · · · F (t, x1 , . . . xn )]T
Regresar
En general, consideraremos sistemas de la forma (3) donde
Pantalla Completa
T T
x = [x1 x2 · · · xn ] y F(t, x) = [f1 (t, x) f2 (t, x) · · · fn (t, x)] Cerrar
Abandonar
Como ejemplo inicial consideremos la ecuacioón de Duffing
Introducción
x00 + δx0 − x + x3 = γ cos ωt (4)
Variables y Formatos
Se trata de una ecuación de segundo orden no lineal que que describe las Vectores y Matrices
oscilaciones de un resorte no lineal. Es también un ejemplo de un sistema Gráficos
dinámico que exhibe un comportamiento caótico. ∗ Cálculos Avanzados
Observemos que (4) se puede expresar como (3) con
Programación
F (t, x1 , x2 ) = −δx2 + x1 − x31 + γ cos ωt, ∗ EDO Numérica
∗ EDP Numérica
es decir,
Página Web
x01
x2
= F(t, x) =
x02 −δx2 + x1 − x31 + γ cos ωt, Página de Abertura
dx(1) = x(2)
Regresar
dx(2) = delta*x(2)+x(1)-x(1)^3+gama*cos(omega*t)
Pantalla Completa
Abandonar
ode45(Fcn,tspan,init,options,p1,p2,...)
Introducción
donde
Variables y Formatos
• Fcn es el nombre de la función. Vectores y Matrices
Gráficos
• tspan es el intervalo de la solución. ∗ Cálculos Avanzados
Por ejemplo, si queremos resolver (4) con condiciones iniciales x(0) = Página de Abertura
−1, x0 (0) = 1 y parámetros δ = −0.15, γ = 0.3 y ω = 1 utilizamos
JJ II
ode45(’F’,[0,100],[-1,1],[],-0.15,0.3,1)
J I
La solución numérica obtenida por el solver (ode45) puede ser almace-
Página 73 de 75
nada en variables de salida para uso posterior.
Regresar
>> [t,x] = ode45(’F’,[0,100],[-1,1],[],-0.15,0.3,1);
Pantalla Completa
Cerrar
Abandonar
Observemos que la primera columna de x contiene x1 que es la solución
de (4) (ver (2)).
Introducción
Para graficar las soluciones
Variables y Formatos
Vectores y Matrices
>> plot(t,x)
Gráficos
>> legend(’x_1’,’x_2’) ∗ Cálculos Avanzados
>> xlabel(’t’)
Programación
>> ylabel(’x_1’,’x_2’)
∗ EDO Numérica
∗ EDP Numérica
Si deseamos graficar sólo la solución de (4)
Página Web
>> xlabel(’t’)
JJ II
>> ylabel(’x’)
>> title(’\delta=-0.15,\gamma=0.3,\omega=1’)
J I
Página 74 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar
∗
8. EDP Numérica
Introducción
Variables y Formatos
Vectores y Matrices
Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica
∗ EDP Numérica
Página Web
Página de Abertura
JJ II
J I
Página 75 de 75
Regresar
Pantalla Completa
Cerrar
Abandonar