Vous êtes sur la page 1sur 75

Universidad de Antioquia

Introducción
Facultad de Ciencias Exactas y Naturales Variables y Formatos

Departamento de Matemáticas Vectores y Matrices


Gráficos
∗ Cálculos Avanzados
Programación
∗ EDO Numérica

Introducción a Matlab
R ∗ EDP Numérica

Página Web

Página de Abertura

Este documento fue escrito por profesores del Departamento de JJ II


Matemáticas de la Universidad de Antioquia y generado a partir de un
archivo LATEX compilado con pdfLATEX, utilizando el paquete pdfscreen.sty . J I

Página 1 de 75

Copyleft c 2006. Departamento de Matemáticas, Universidad de Antioquia. Regresar


Este documento puede ser distribuido y/o modificado bajo los términos de la
Licencia de Documentación Libre GNU, Versión 1.2 o cualquier otra versión
Pantalla Completa
posterior publicada por la Free Software Foundation. Documentación completa
de la licencia es incluida en GNU Free Documentation License.
Cerrar

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

ningún toolbox ) oscila en torno de los US$2000.


Cerrar

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

Deberá aparecer una ventana con ejemplos de las funcionalidades de JJ II


Matlab. La columna de la izquierda contiene un menú con varias de-
J I
mostraciones. Elija alguna de las opciones y haga clic donde crea necesario.
Página 7 de 75

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

Las operaciones aritméticas son realizadas en el siguiente orden de pri-


Página de Abertura
oridad: potenciación (∧), división (/), producto (∗), y suma (+) y resta
(−). Ası́ por ejemplo JJ II

>> 5/10*2+5 J I
ans =
Página 8 de 75
6
Regresar

mientras que Pantalla Completa

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

>> ans Página 9 de 75


ans =
0.7500 Regresar

Pantalla Completa

Podemos utilizar ans en cálculos posteriores


Cerrar

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

produce como resultado ans = 0 (falso) mientras que Página 10 de 75

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

da falso. Otra operación lógica es el O excluyente (xor). La tabla de


verdad para todos estos operadores es mostrada a continuacón JJ II

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

En el caso de variables numéricas, Matlab presenta por defecto los Página 13 de 75


contenidos de las variables aproximados a 4 cifras decimales. El usuario
puede modificar el formato con el que se presentan los contenidos de tales Regresar

variables con el comando format, como se muestra en el siguiente ejemplo,


Pantalla Completa
sin olvidar que esto no modifica los contenidos de las variables ni la manera
como Matlab ejecuta internamente los computos. Cerrar

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

short e punto flotante, 5 dı́gitos 3.1416e+000


Página de Abertura
long e punto flotante, 15 dı́gitos 3.141592653589793e+000
short g punto fijo o flotante, 5 dı́gitos 3.1416 JJ II
long g punto fijo o flotante, 15 dı́gitos 3.14159265358979
short eng 5 dı́gitos, potencias múltiplos de 3 3.1416e+000 J I
long eng 16 dı́gitos, potencias múltiplos de 3 3.14159265358979e+000
Página 14 de 75
Para regresar al formato estándar ejecutamos simplemente el comando
format: Regresar

>> format Pantalla Completa

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

asigna a la variable x el valor de 6. El punto y coma (;) al final de la Regresar


definición de x previene que Matlab muestre el contenido de la variable.
Si queremos ver su contenido Pantalla Completa

Cerrar

Abandonar
>> x
x = Introducción
6 Variables y Formatos
Vectores y Matrices

También podemos modificar variables propias de Matlab: Gráficos


∗ Cálculos Avanzados

>> pi = 3.14 Programación


∗ EDO Numérica
pi =
∗ EDP Numérica
3.1400

Página Web

¿Cómo recuperar pi? El comando clear borra el contenido de una


Página de Abertura
variable, en este caso la asignación que hicimos:
JJ II
>> clear pi
>> pi J I
ans =
3.1416 Página 16 de 75

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

Si queremos información más detallada de nuestras variables utilizamos Gráficos


∗ Cálculos Avanzados
el comando whos:
Programación
>> whos ∗ EDO Numérica
Name Size Bytes Class ∗ EDP Numérica

Página Web
a 1x1 8 double array
x 1x1 8 double array
Página de Abertura

Grand total is 2 elements using 16 bytes JJ II

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

y para la función arcotangente J I

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

Reference page in Help browser Página de Abertura


doc sin
JJ II

Para acceder a un listado con información detallada de las funciones J I


elementales (elementary functions) implementadas en Matlab
Página 20 de 75

>> help elfun Regresar

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

Otra forma de ingresar un vector columna (la transpuesta de un vector


Regresar
fila)
Pantalla Completa

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

Esta intrucción genera un vector de componentes del 1 al 18 por incre- J I


mento de a 2 mientras que
Página 23 de 75

>> 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

3.2. Comandos Especiales con Vectores JJ II

Existen instrucciones que permiten generar vectores especiales y que rea- J I


lizan tareas sobre los vectores, entre ellos tenemos:
Página 24 de 75

>> 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

>> length(d) % nos da el numero de componentes de d


Regresar
ans =
3
Pantalla Completa

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

>> x=[4 6 3 3]; y=[2 6 -2 -3]; Regresar

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

Para multiplicarlos componente a componente, es decir x(i) ∗ y(i), em- J I


pleamos las operaciones punto, esto es:
Página 28 de 75

>> x.*y Regresar


ans =
8 36 -6 -9 Pantalla Completa

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

mientras que Página 29 de 75

>> x*y’ Regresar


ans =
29 Pantalla Completa

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

>> h=[2 3 4];


Página de Abertura

podemos construir la siguiente matriz JJ II

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

>> E=rand(3,2) % genera una matriz 3x2 aleatoria Página 31 de 75


E =
0.9501 0.4860 Regresar

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

>> H(2,:) % extrae la segunda fila de H Página de Abertura

ans =
JJ II
-5 6 7
J I

>> H(:,3) % extrae la tercera columna de H Página 34 de 75

ans =
Regresar
5
7
Pantalla Completa
-6
Cerrar

Abandonar
En general, la sintaxis para extraer componentes, filas y columnas son:

• A(i,j) = extrae la componente de la fila i columna j de la matriz A Introducción


Variables y Formatos
• A(i,:) = extrae la fila i de la matriz A Vectores y Matrices

• A(:,j) = extrae la columna j de la matriz A Gráficos


∗ Cálculos Avanzados

3.6. Operaciones con Matrices Programación


∗ EDO Numérica
Siempre que esté definida la operación podemos sumar, restar, multiplicar ∗ EDP Numérica
matrices, resolver sistemas de ecuaciones Ax = b, etc.
Página Web

>> A=[1 3 4; 6 8 -2]; B=[2 -1 -3;-5 -2 -4]; F=[2 3;5 -1];


Página de Abertura

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

>> A.^2 Página de Abertura

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

En este caso, el resultado obtenido es 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
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

>> title(’Ejemplos iniciales’) % coloca titulo al gráfico 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 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

>> plot(x,y,’r’,x,z,’+’) 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 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

>> help axis Regresar

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

4.5. Gráficos 3D Página 50 de 75

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

>> edit Página de Abertura

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

mandos, escribiendo el nombre del programa sin la extensión (.m) y opri-


Pantalla Completa
miendo la tecla enter. Al ser invocado, Matlab ejecutará los comandos
contenidos en el archivo en el orden en que aparecen. Cerrar

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

disp(’hola mundo’); % muestra el mensaje Programación


∗ EDO Numérica
∗ EDP Numérica
Copiemos el código en el editor de Matlab y salvemos el archivo como,
por ejemplo, holamundo.m. El script lo ejecutamos desde la ventana de Página Web
comandos
Página de Abertura

>> 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

y y M se conservan. Por ejemplo


Cerrar

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

function [salida] = nombre de la función(entrada) Página de Abertura

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

• nombre de la función: es el nombre de la función que el usuario


Regresar
elija, por ejemplo mayor en el ejemplo anterior.
• entrada: son los argumentos de entrada de la función, puede ser uno Pantalla Completa

o varios como en el ejemplo de la función mayor.


Cerrar

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

Ası́ por ejemplo Cerrar

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

Si el valor de expresion es igual a valor 1 entonces bloque 1 es eje- Pantalla Completa

cutado, si es igual a valor 2 entonces bloque 2 es ejecutado y si el valor


Cerrar

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

>> trig(’tan’,pi/3) Página 67 de 75

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

El siguiente código calcula el número de años requeridos para que un


Página de Abertura
capital de U$1000 se incremente a U$10000 al 6% anual de interés.
JJ II
>> p = 1000; annos = 0;
>> while p < 10000 J I
annos = annos + 1;
p = p*(1 + 0.06); Página 68 de 75

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

soluciones numéricas de problemas de valor inicial de ecuaciones diferen- Variables y Formatos

ciales ordinarias. Vectores y Matrices


Vamos a considerar ecuaciones de la forma Gráficos
  ∗ Cálculos Avanzados
x(n) = F t, x, x0 , . . . , x(n−1) (1)
Programación
∗ EDO Numérica
Por medio del cambio de variable
∗ EDP Numérica
0 (n−2) (n−1)
x1 = x, x2 = x , . . . , xn−1 = x , xn = x (2)
Página Web
la ecuación (1) se puede escribir como un sistema de n ecuaciones diferen-
ciales de primer orden de la forma (note la similaridad con (1)) Página de Abertura

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

Empezemos escribiendo entonces la función F(t, x) como una función JJ II


de Matlab que salvaremos como F.m:
J I
function dx = F(t,x,flag,delta,gama,omega)
dx = zeros(2,1) Página 72 de 75

dx(1) = x(2)
Regresar
dx(2) = delta*x(2)+x(1)-x(1)^3+gama*cos(omega*t)
Pantalla Completa

Habiendo definido F(t, x) utilizamos el comando ode45 cuya sintaxis es Cerrar

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

• init es la condición inicial. Programación


∗ EDO Numérica
• option son opciones pasadas al solver ∗ EDP Numérica

• p1,p2,... son parámetros adicionales. Página Web

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

>> plot(t,x(:,1)) Página de Abertura

>> 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

Vous aimerez peut-être aussi