Introducción a la

Economía Matemática en MATLAB
(Versión Preliminar)

Norma Gómez Lida Quintero Diego Corredor Mario González Norman Maldonado Eduardo Sánchez 11 de octubre de 2005

2

Índice general
1. Conceptos Básicos
1.1. ¾Qué es MATLAB ? . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2. Ventanas de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.1. Command Window . . . . . . . . . . . . . . . . . . . . . . . . 1.2.2. Launch Pad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.3. Workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2.4. Command History . . . . . . . . . . . . . . . . . . . . . . . . 1.2.5. Current Directory . . . . . . . . . . . . . . . . . . . . . . . . 1.3. M-File Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.4. Procesos iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5. Otros Conceptos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.1. Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.2. Help y Doc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.5.3. Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

1
1 2 2 3 4 5 6 6 11 16 16 17 19

I

ÁLGEBRA LINEAL
2.1. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.1. Hipermatrices . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.1.2. Tipos de Matrices . . . . . . . . . . . . . . . . . . . . . . . . 2.1.3. Operaciones Básicas entre Matrices . . . . . . . . . . . . . . . 2.1.4. Análisis de una Matriz . . . . . . . . . . . . . . . . . . . . . . 2.1.5. Matrices Factorizables . . . . . . . . . . . . . . . . . . . . . . 2.2. Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2.1. Análisis de un vector . . . . . . . . . . . . . . . . . . . . . . . 2.2.2. Operaciones entre Vectores . . . . . . . . . . . . . . . . . . .
i

27
29
29 31 36 41 43 46 48 48 51

2. Matrices y Vectores

ii

2.2.3. Matrices y Vectores

. . . . . . . . . . . . . . . . . . . . . . .

54 58 59 61 63 64

2.3. Rectas y Planos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.1. Rectas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.2. Planos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.3.3. Distancia entre un punto y un plano . . . . . . . . . . . . . . 2.4. Valores y Vectores Propios . . . . . . . . . . . . . . . . . . . . . . . .

3. Sistemas de Ecuaciones
3.1. Métodos Directos o Analíticos . . . . . . . . . . . . . . . . . . . . . . 3.1.1. Eliminación Gauss-Jordan . . . . . . . . . . . . . . . . . . . . 3.1.2. Método de la Inversa . . . . . . . . . . . . . . . . . . . . . . . 3.1.3. Regla de Cramer . . . . . . . . . . . . . . . . . . . . . . . . . 3.1.4. Factorización de Crout o LU . . . . . . . . . . . . . . . . . . 3.1.5. Factorización de Cholesky . . . . . . . . . . . . . . . . . . . . 3.2. Métodos Indirectos o Numéricos . . . . . . . . . . . . . . . . . . . . . 3.2.1. Matrices Débilmente Condicionadas . . . . . . . . . . . . . . 3.2.2. Gauss-Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.2.3. Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3. Apéndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.1. Gauss-Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.2. Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.3.3. Método de Richardson . . . . . . . . . . . . . . . . . . . . . .

69
70 70 73 74 76 78 79 80 81 83 87 87 89 89

II CÁLCULO
4. Funciones
4.1. Funciones de una Variable . . . . . . . . . . . . . . . . . . . . . . . . 4.1.1. Visualización de funciones de una variable . . . . . . . . . . . 4.1.2. Opciones adicionales para los grácos . . . . . . . . . . . . .

91
93
94 94 99

4.2. Funciones de dos variables . . . . . . . . . . . . . . . . . . . . . . . . 103 4.2.1. Visualización de Funciones de dos variables . . . . . . . . . . 103 4.2.2. Opciones adicionales para los grácos . . . . . . . . . . . . . 108 4.3. Simulaciones en funciones de una variable . . . . . . . . . . . . . . . 114 4.4. Simulaciones en funciones de dos variables . . . . . . . . . . . . . . . 121 4.5. Análisis de Funciones económicas . . . . . . . . . . . . . . . . . . . . 124 Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

iii

5. Derivación

135

5.1. Derivación de primer orden . . . . . . . . . . . . . . . . . . . . . . . 136 5.1.1. polyder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 5.1.2. gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 5.1.3. diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 5.1.4. fjac y fdjac . . . . . . . . . . . . . . . . . . . . . . . . . . 142 5.1.5. Aplicación: Una función de Producción tipo Cobb-Douglas . . 145 5.2. Derivación de orden superior . . . . . . . . . . . . . . . . . . . . . . 147 5.2.1. polyder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 148 5.2.2. gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 5.2.3. diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 5.2.4. fdhess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 5.2.5. Expansión de Taylor . . . . . . . . . . . . . . . . . . . . . . . 156 5.2.6. Aplicación: El Equilibrio en el Modelo de Cournot . . . . . . 157 5.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161 5.4. Apéndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

6. Integración

167

6.1. Integración por Regla del Exponente . . . . . . . . . . . . . . . . . . 168 6.2. Regla del Trapecio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 6.3. Regla de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 6.4. Integrales Dobles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

III

OPTIMIZACIÓN Y DINÁMICA

181
183

7. Concavidad y Convexidad

7.1. Conceptos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 7.1.1. Deniciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184 7.1.2. Criterios de clasicación . . . . . . . . . . . . . . . . . . . . . 185 7.1.3. Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 7.2. Funciones Univariadas . . . . . . . . . . . . . . . . . . . . . . . . . . 188 7.3. Funciones con dos variables (Bivariadas) . . . . . . . . . . . . . . . . 196 7.3.1. Ejemplo 7.3. f (x, y) = x0.5 y 0.5 . . . . . . . . . . . . . . . . . . 206 7.4. Funciones con tres o más variables (Multivariadas) . . . . . . . . . . 208 7.4.1. Ejemplo 7.4. f (x, y, z) = x4 + 3y 4 + 5z . . . . . . . . . . . . . 208 7.4.2. Ejemplo 7.5. f (w, x, y, z) . . . . . . . . . . . . . . . . . . . . . 211

. . . 214 8. . . . . . . . . . . . . . . . . . . .2. . . 217 217 217 233 251 255 . . . . . . . . . . . . Ecuaciones Diferenciales y Dinámica Continua 9. .3. . . . . . . . . . Ejemplos Computacionales . . . . . . . . . .1. .1. . . . .1. . 9. . . Métodos Numéricos .2. . . . . . . . . . .iv 8. . . . . . . .1. . . . . . . .1. . . .1. . . . . . . . .1. . . .1. Aplicaciones Económicas . . . . . Optimización no lineal sin restricciones . 9. . . . Optimización 213 8. . . . . Ecuaciones en Diferencia y Dinámica Discreta . 214 9. . . . . . . . . . . Minimizar . . . . . 9. . . . . Sistemas Dinámicos 9.

. . . . . . . . . . . . . . 4. . . . . . . . . . . . . . . . . . Command Window o Ventana de Comandos . . . . . . . . . . . . . . . . .4. . . . . . . 1. . . . . . . . Current Directory . . . . . . .9. . . . . . . . 2. . . . 1. . . . . . . . . . . 1. .1. . . . . . . 2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1. .Índice de guras 1. . . 2. . . . . . .5. −5) . 4. . . . . . . . . . .1. . . . . . . . . . .3. . . . . . . . .2. . . . . . El vector n es perpendicular a todos los puntos del plano. . . . . . pcon . . 1. Launch Pad . 1. . . . . . . 2. . . . . Malla 3 4 4 5 5 6 7 7 9 17 19 20 22 31 50 51 53 55 58 59 62 86 97 98 99 . . . . . 104 v . . . Help de pcb . . . . . . Ventana de Comandos y Resultados . . . . . . . . . Proyección de a sobre b . . . . . .2. . Workspace . . . .10. 3. . . . . . . . . . . Estructuras pibp. . .12. . .8. . . . .1. .7.7. a) Única Solución b) No Existe Solución c) Innitas soluciones . . . . . . . . . . . . . . . . . . . 1. . . . . . .11. . . . . . 1. Función Cúbica . . . . . . . . . . 2. . . . . . . . . . . . . . . . . . . . . . . . . . 1. . . . . . . . . . . . . . 2. . . . . . . . . . . . . Producto cruz entre a y b . . . . . . . . . . . . . . . Modelo de vías . . . . . . . . . .6. . . Command History . . . . . . . . . . . . . . . . . . . . . . . . . Documentación de clc . .5. . . Función Discontinua en x=1 . . . . . . .13. . . . . . . . . . . . . . . . Distancia entre P1 y P2 . . . . . . . .4. . . . . . . . . 4. Una recta en tercera dimensión . . . . Editor de M-Files . . . . . . . . . . . . . . 2. . . . . . . . . . . . . . . . . . . . . .6. . . . . . Conjunto Inicial de Ventanas . . . . . . . . . . . . . La dirección del vector u = (7. . .2. . . . . . . 1. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .8. . . . .1. . 4. . . . . . . . . . . . .2 . . . . . . . . . . . . . . . . . . Comentarios con % . . .3. . Path de Matlab . . . 2. 1. . . 1. . . . .4. .3. . . . Ejemplo 4. . . . . . . . . . . Hipermatriz de 3 dimensiones . . . .

. . . . . . . . . . . . . . . . Excedente del Productor . .6. . . . . . . . . . . . . . . . . . . . L) = K 3 L 3 1 1 5 . . Ejemplo 4. . . 177 7.15. . Excedente del Consumidor . .8. . . . . y) = x3 − ax2 y + 6xy 2 − y 3 . . . . . . . . . . 108 4. . . . . . . y) = x2 + y 2 y su gradiente a escala distinta . . . .8 . . Simulación del parámetro a en f (x. . . 119 4. 125 4. . . .9. . . . . . . 192 2 2 2 . . . . . . . 111 4. . . . .3. . . . . . .11. . . . 170 6. . . . . . . . . . . . . . . . . . . . .11. . 123 4. . . . . . . . . . . . . . . . . . . . . . . . . 130 5.2.5. . . . . . . . . . . Izquierda: Productividad Marginal del Capital. . . .2. . . . . . . . . . Derecha: Productividad Marginal del Trabajo. Gráca de f (x) = x4 y su derivada . . . . . . . . . . . . . Función Cobb-Douglas . . . . Función CES . . . . . . . . . . . . La función f (x) = 5x 3 − 32 y su aproximación de grado tres . . . . . . . . . La función de producción f (K. . 121 4. . . . . . . . . . 160 6. . . . . . . . . . . . . . . 155 5. . . .7. . . . . . . . . .9 . . . . . . .8. . . . Distintos conjuntos de salida . . . . . . . . . . . . . . . . . . . . . . . . . . .17. . . . . . . . . . . . . . . . . Las dos primeras derivadas de f (x) = x 3 . . . . . . . . . . . . . . .12. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .2. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . El duopolio de Cournot . Derivada de f (x) = x 2 mediante diff . . Ejemplo 4. . . . . . . . . . . . . . . . La función f (x) = x3 + y 3 . . . 139 5. . . . . .7 . . . . . .1. . . . . . . . . . . . . . . . . . . . . . . . . . . Gradiente numérico . 150 5.10. . . Integración Doble . Ejemplo 4. . . . . . . . . . . . . . . . . . . . . . .13. . 114 4. . . . . . . . .1. . . . 172 6. . . . . . . . Punto de Silla .18. . . . . . . 174 6. . . . . . . . . 110 4. Ejemplo 4. . . . . . . . . .5. Comandos para gracar funciones de dos variables . . . . . . . . . . . . Regla del Trapecio . . . . . . . . . . . . . . . . 120 4. . . . . . . . . . .14. . . . 127 4. . . 141 5. .19. . . .vi 4. . . . . Ejemplo 4. . . . . . . . . . . 189 7. . . . . . . . . 129 4. . . . . . Simulación del parámetro a en f (x. .4. .7. Función CES . . .10. . .3. . . . . . . . . . . . . . . . . . . 113 4. . 140 5. . . . . .3. . . . .4. . . . . . . . . . .9. . . . . . 156 5. . . . . 147 5.4 . . . . . . . . . Ejemplo 4. . . 146 5. . . . . . 116 4. . . . . . . . . . . . Gradiente numérico . . . . . . . . .6. . . . . . Regla de Simpson . . . f (x. . 190 7.1. . . . . . . . . . . . . . Método gráco . . 118 4. . .8 . . . . . . . . . . . . . . . . . . . . La función f (x. . . . . . .5. . . . . . . . . . . . . . . . . . . . . . . . y) = x3 − 3xy 2 . . . . . . . . . . . 176 6. Simulación de una función de una variable .16. . . . . . . . . .6 . y) = acos(xy) . . . . 158 5. . La tercera derivada de f (x) = x 3 mediante gradient y directamente 152 5.

. . . . Solución Numérica (h = 0. . . . . ˙ 9. . . . . . . . . . u) . .Concavidad y Convexidad . . . . .8. . . . . . . . Contraste de Tres Condiciones Iniciales con odephas3 . . . . . . a) Diagramas de Fase (t. . 9. . . . . . .2. . . . . . . . . . x) de x = 3 − x . .1. u) . . . . .9. . . . (v. .6. . . ˙ x 9. v) y (t. u) . . Método Gráco . Diagrama de Fase (t. . . . . . . . . .09) . . . . . . . .7. . . . . . 9. . . . . . . . . . . . . . kt ) . . .Cuasiconcavidad y Cuasiconvexidad . Conjuntos Contorno . . Diagrama de Fase (t. . . . . . . . . . . . . . . . . . . . . . Comportamiento de f (x) . . . . . . . . . . . Conjuntos Contorno de f (x) = x2 . . . . . . . v) b) Diagrama de Fase (t.5. . . . . . . Diagrama de Fase (v. . 7. . . . . . Diagrama de Fase (t. . . . .5 . . .1. . Comparación de las Condiciones x0 = −1. . . . . 9. .10. . . . u) b) Diagrama de Fase 9. . .vii 7. . . . .3. .21) . . . . . . .6. . . 9. . . Solución Numérica (h = 0. . .4. . . . . . . . 7. . . . . . . . . . . . . . .5. . .7. .11. . . . . . .4. . . x) de x = b−atx . . . . . 9. . . . . . . 9. . . . Contraste de Dos Condiciones Iniciales con odephas2 . . . . Segunda derivada con fhess . 194 195 196 198 199 8. . .5 y x0 = −0. . . . . . a) Diagrama de Fase (t. .8. . . Método Gráco . 215 9. 232 233 239 240 242 243 244 247 250 251 256 . 7. . . . . . 2 9. . . . . . . . 7. . . . .

viii .

. 2. . . . . . . . . . . .5. . . .1. . . . . . . . . . . . . Rutinas de MATLAB para solucionar IVPs . . . . . . . . . 1. . . . .3. . .1. . . 2. . . . Método Numérico para hallar x . . . . . . . .2. . . .Índice de cuadros 1. . . . . . . . . . . . . . . . . . .4. . . . . Algunos Comandos sobre Cadenas de caracteres Algunos Comandos sobre Estructuras . . . . Algunos Comandos para Matrices Dispersas Operaciones básicas entre matrices . . . . . . . . . . . . . . . . . . . . 2. . . . . . . . . . . . . . . .2. . . 1. . .1. . Comandos para analizar una matriz . . . . . . . .3. . . . Comandos para hipermatrices . . . Matrices generadas automáticamente . . . 12 21 23 25 33 37 38 41 43 9. . . 234 ix . . . Algunos Comandos para objetos Cell Array . 2. . . . .4. . . . . . . . . . . 1. . . . . . . . 2. . .

x .

Administración de empresas o Contaduría. para que tales desarrollos puedan ser utilizados se requiere hacer cálculos matemáticos que en algunas ocasiones llegan a ser bastante complicados e incluso imposibles de realizar analíticamente. en economía y nanzas. ya que utiliza aplicaciones en economía y en nanzas. son desarrollos que necesitan utilizar métodos computacionales para la precisa realización de los cálculos que estos requieren. o nancieros como la valoración de activos nancieros y la cuanticación del riesgo de un portafolio. en la actualidad el uso de los computadores para la solución de problemas se ha convertido en una práctica común dada su gran capacidad de cálculo y precisión en comparación con los métodos tradicionales. los ciclos y el diseño de política económica. Es posible entonces. En general. simulación de sistemas dinámicos. El presente texto ha sido desarrollado por GEDEM (Grupo de Estudios De Economía Matemática) y tiene como objetivo facilitar a los estudiantes de las ciencias económicas un primer acercamiento a la aplicación de métodos computacionales en economía y nanzas. en economía y nanzas. este libro va dirigido a estudiantes de Pregrado de carreras como Economía. Por otro lado. entre otros. Por ejemplo. En la mayoría de los casos los libros que trabajan con herramientas computacionales en estas áreas están dirigidos a estudiantes de Posgrado o de Doctorado. Especícamente. la estimación de modelos econométricos. utilizar métodos computacionales para realizar los cálculos que permitan aplicar los desarrollos teóricos y prácticos que se producen en la academia. se han producido desarrollos teóricos y prácticos para abordar problemas económicos como el crecimiento.Introducción En la academia a diario se producen desarrollos teóricos que más adelante llegan a ser aplicados para la solución de una gran variedad de problemas reales. la calibración de modelos de equilibrio general. En particular. por lo cual pocas veces se enseña xi .

El texto se desarrolla con base en los temas básicos de la economía matemática como son: Sistemas de ecuaciones lineales. La segunda parte del libro está compuesta por los Capítulos 4.Versión Preliminar el uso de herramientas computacionales como MATLAB en los cursos de Pregrado relacionados con economía o nanzas matemáticas. o en Papers de libre acceso por Internet. entre otros). rectas y planos. y luego de ella. junto con sus propiedades (inversa. Debido a las limitaciones en términos de dimensión y de algunos cálculos especícos. El libro comienza con una breve introducción a los conceptos básicos de MATLAB en el capítulo 1. temas como Optimización Dinámica. La primera parte contiene los Capítulos 2 y 3. En el Capítulo 2 se trabajan las Matrices y los Vectores. a partir de lo cual se pueden determinar regiones . En particular. Ecuaciones Diferenciales y en Diferencias Estocásticas. y presenta el análisis de funciones. se estudian los sistemas de ecuaciones y los diferentes métodos computacionales para resolverlos. 5 y 6. y trata los temas relacionados con el Algebra Lineal. En particular. matrices y vectores. traspuesta. Optimización Dinámica con Incertidumbre o Modelos de Equilibrio General Computable no son tratados aquí ya que generalmente estos se trabajan en libros actualmente disponibles en el mercado que van dirigidos a estudiantes de Posgrado o de Doctorado.xii GEDEM . Este libro es tan solo una introducción a la utilización de métodos computacionales en Economía y Finanzas. norma y traza. y en el Capítulo 3. éste se divide en tres partes. en los capítulos 5 y 6 se abandona el método gráco y se procede a analizar una función a partir del cálculo diferencial e integral. cálculo diferencial e integral. acompañado de ejemplos y ejercicios matemáticos y económicos que permiten una plena comprensión del tema. Cada uno de los temas mencionados es tratado en un capítulo en el que se presenta el problema matemático a resolver y su correspondiente desarrollo computacional. funciones. y determinar a partir de este gráco sus propiedades. Existen temas más avanzados que no son objeto de estudio de este libro. optimización "libre" y restringida y sistemas dinámicos. pero es útil en la medida que permite llenar el vacío existente entre las matemáticas básicas que no se suelen enseñar computacionalmente y las matemáticas avanzadas que casi siempre se tratan con este tipo de métodos. en el capítulo 5 se explican en detalle las herramientas disponibles en MATLAB para calcular numéricamente la derivada de una función en un punto o en un conjunto nito de puntos. El capítulo 4 muestra cómo utilizar MATLAB para visualizar grácamente una función de una o de dos variables.

Finalmente en la última parte del libro se estudia el planteamiento computacional de problemas de optimización estática y de sistemas dinámicos. A partir de estos conceptos. Filtro de Kalman y ecuación de Ricatti. Varian ha trabajado herramientas matemáticas básicas y avanzadas utilizadas en economía por medio del lenguaje Mathematica2 . En: Computational Economics. Ed. como por ejemplo C++. en el capítulo 8 se muestra cómo resolver numéricamente en MATLAB problemas de optimización estática. Applied General Equilibrium Modeling with MPSGE as a GAMS Subsystem: An Overview of the Modeling Framework and Syntax. Por ejemplo. C. este último capítulo cierra el libro pero es una buena introducción al planteamiento computacional de problemas de tipo dinámico. mientras que en el capítulo 6 se presentan los diferentes métodos numéricos que se pueden emplear para calcular en MATLAB integrales denidas de cualquier tipo de función. algunos autores han trabajado en otras plataformas computacionales problemas especícos de economía. En este texto hemos decidido trabajar con MATLAB por varias razones: en primer lugar. el capítulo ?? presenta las diferentes formas en que se puede hallar la solución numérica a sistemas dinámicos. muchos autores actualmente trabajan en MATLAB para resolver computacionalmente problemas económicos. lenguajes como Ox o Scilab trabajan de manera similar a MATLAB pero cuentan con la ventaja de ser software de libre acceso. inación y desempleo. Thomas Rutherford ha trabajado la programación de Modelos de Equilibrio General Computable en GAMS-MPSGE1 . Thomas Sargent utiliza MATLAB para modelos de política scal. Así. tanto restringida como no restringida o "libre"Finalmente. unicidad y estabilidad de los equilibrios que pueden tener este tipo de sistemas. Por otro lado. 1 . Otros programas como Econometric Views. Por ejemplo. También. 14:1-46.INTRODUCCION xiii en donde una función crece o decrece además de otras propiedades. Hal R. Thomas (1999). En el capítulo 7 se presentan los métodos numéricos y la utilización de MATLAB para analizar la concavidad y convexidad de una función. SPSS y SAS se enfocan en trabajar computacionalmente la estadística y la econometría. entre Rutherford. Computational Economics and Finance: Modeling and Analysis With Mathematica (Economic & Financial Modeling with Mathematica). FORTRAN o JAVA. Telos. Existen otros programas para realizar cálculos matemáticos. y a partir de ella analizar la existencia. Todos los capítulos se desarrollan computacionalmente utilizando como herramienta MATLAB . Kluwer Academic Piblishers 2 Varian. Hal (1996). y para resolver matemáticamente juegos dinámicos y equilibrios de Nash.

la comunidad de usuarios de MATLAB constantemente está produciendo toolboxes de libre acceso por Internet que permiten utilizar MATLAB para cierto tipo de problemas. com está disponible un Toolbox que permite desarrollar modelos econométricos en MATLAB . CEPR . De esta manera. Harald. como por ejemplo Olivier Blanchard y Finn Kydland. su forma de programar es similar a la de lenguajes tradicionales de programación como C++. corrección o sugerencia por favor enviarla al correo electrónico grupogedem@yahoo. aunque existen programas especializados en el desarrollo de ciertos temas.Versión Preliminar otros. En algunas ocasiones. Uhlig3 desarrolla un conjunto de cheros en MATLAB que permite resolver modelos dinámicos en tiempo discreto no lineales estocásticos. aunque el mismo ya se encuentra registrado ante la Dirección Nacional de Derecho de Autor.spatial-econometrics. Además. utilizar otros programas restringe al usuario en tanto que este solo puede invocar las rutinas.xiv GEDEM . 3 Uhlig. A Toolkit for Analyzing Nonlinear Dynamic Stochastic Models Easily. en http://www. Cualquier comentario. Actualmente el Grupo trabaja en la corrección del mismo. Por ejemplo. MATLAB permite crear y editar rutinas especializadas en la solución de cierto tipo de problemas. Debemos mencionar que esta es una version preliminar del libro. Además de esto. Finalmente. Muchos otros autores trabajan sus cursos en MATLAB . a diferencia de otras herramientas computacionales. MATLAB es muy común en el desarrollo de aplicaciones cientícas en otras ciencias naturales y sociales. En segundo lugar.com. pero no puede editarlas ni vericar o modicar el algoritmo que está programado dentro de ellas. MATLAB también cuenta con aplicaciones que permiten desarrollar en su plataforma este tipo de problemas. y actualmente es utilizado en el Banco de la República para la construcción de Modelos de Equilibrio General Computable.

las redes neuronales. optimización restringida o en más de dos dimensiones. Norman Maldonado1 1. la lógica difusa. datos estadísticos. etc. como la estadística. Desde entonces el software ha extendido su aplicación a diferentes campos especícos. Servicios Financieros y Aeroespacio.. comentarios o sugerencias a grupogedem@yahoo. las nanzas. y actualmente se trabaja con ella en Biotecnología. ecuaciones diferenciales parciales. Estos toolboxes Favor enviar correcciones. variables simbólicas.Capítulo 1 Conceptos Básicos Diego Corredor. permitiendo manipular y solucionar sistemas dinámicos. Comunicaciones. distribuciones de probabilidad.1. es una de las interfaces de mayor uso a nivel mundial. realizando simulaciones de sistemas y estructuras en física. información económica y nanciera. es la abreviatura de MATrix LABoratory. el procesamiento de imágenes y sonido.com Los toolboxes son paquetes de herramientas adicionales que el usuario tiene la posibilidad de adquirir individualmente según sus necesidades particulares. ¾Qué es MATLAB ? MATLAB es un lenguaje de computación técnica de alto nivel y un entorno interactivo para desarrollo de algoritmos. como por ejemplo. MATLAB dispone de un código básico y de varios toolboxes 2 . Electrónica. etc. visualización de datos. 2 1 1 . Medicina. y fue diseñado en los 70 s como una interface que permitía la solución de grandes sistemas de ecuaciones lineales. química y algunas ingenierías. análisis de datos y cálculo numérico. series de tiempo. o librerías especializadas en el manejo y solución de problemas especícos. Este software se caracteriza por realizar sus cálculos utilizando matrices y vectores. permitiendo manipular grandes cantidades de información de manera rápida y sencilla.

los comandos del programa.1.ncsu.1 corresponde a la opción Default de este menú. respectivamente. Ventanas de Matlab Comenzamos por presentar las ventanas más importantes del programa. y por otro lado. En este libro nos centramos en el código básico del programa y en un toolbox de distribución gratuita denominado CompEcon5 aplicado a economía y nanzas. tanto las de MATLAB básico como las de los toolboxes. 1.2. La ventana de comandos trabaja de la siguiente forma: en la última línea que inicia con el símbolo (») se digita la instrucción.2 GEDEM . Al abrir el programa por primera vez. cada una se explica a continuación.1.html y fue desarrollado como complemento del libro Fackler y Miranda (2003) 6 El usuario puede cambiar la disposición de las ventanas en el menú de la barra de herramientas view ⇒ desktop ⇒ layout.com 5 Desarrollado por Paul Fackler y Mario Miranda. Por ejemplo si le decimos √ al programa que realice la siguiente operación: 1 +2 5 . 4 ). primero debemos digitar: Dado que no está preprogramado para hacerlo. 4 3 . Workspace. La página web de The Mathworks Inc. Command Window Esta ventana se encuentra ubicada en la parte derecha de la pantalla. profesores de North Carolina State University y Ohio State University. Existen dos tipos de toolboxes: por un lado se encuentran los toolboxes diseñados por el grupo creador de MATLAB (The MathWorks Inc. e incluso algunos de ellos se pueden bajar de manera gratuita de la página web de Mathworks Inc. y ésta es ejecutada al presionar la tecla `Enter'. y están diseñadas para resolver problemas complejos que el programa inicialmente no puede solucionar 3. Las ventanas desplegadas son: Command Window. 1. luego de ello. en esta misma ventana. La Figura 1. Launch Path. simultáneamente.). Command History y Current Directory6 . es www. En esta ventana también se muestran los resultados de todas las operaciones. se despliega un conjunto de ventanas como el que se observa en la Figura 1. Este toolbox se encuentra disponible en la dirección www4.2.Versión Preliminar son un conjunto de funciones compatibles con el código básico.mathworks. son visualizados los resultados del procedimiento.edu/~pfackler/compecon/download. y en ella son digitados y ejecutados. los toolboxes desarrollados por usuarios comunes del programa con el n de suplir sus propias necesidades (generalmente estos últimos son de libre acceso en Internet.

y desplegando el menú correspondiente a cada elemento . y adquiridos por el usuario. Launch Pad Esta ventana se encuentra ubicada en la esquina superior izquierda de la aplicación. En ella se señala cada uno de los elementos cargados en la iniciación del programa. A través de esta ventana. etc).2. en letra de color rojo.1: Conjunto Inicial de Ventanas (1+sqrt(5))/2 Luego presionamos `Enter'y el resultado es: ans = 1. Así. deben aparecer el código básico del programa y todos los toolboxes creados por The MathWorks Inc. 1. Datafeed Toolbox. Data Acquisition Toolbox.2.1 se observa que se ha cargado MATLAB básico y algunos otros toolboxes (Communication Toolbox. es decir.6180 Si por algún motivo se presenta un error. Filter Design Toolbox. las herramientas de las cuales dispone el usuario para realizar sus cálculos. En la Figura 1.CONCEPTOS BÁSICOS 3 Figura 1. que describe el error que se ha presentado. el programa despliega un mensaje de alerta. Control System Toolbox. Database Toolbox.

2. demos.4 GEDEM .4.3.Versión Preliminar Figura 1. asi como a documentación referente a los elementos cargados.3) se puede acceder fácilmente a tutoriales. Como se observa en la Figura 1. Workspace Esta ventana se encuentra en la misma posición del Launch Pad. en la segunda columna llamada Size se muestra el tamaño de cada variable7 . la especicación del tamaño de la variable es .2: Command Window o Ventana de Comandos Figura 1. y para acceder a ella es necesario hacer click en la pestaña Workspace en la parte izquierda de la pantalla. en esta ventana se muestran todos las variables que el usuario ha denido en la sesión.3: Launch Pad (como se observa en la Figura 1. en la tercera y cuarta columna se encuentran especicados el número 7 Dado que MATLAB trabaja con matrices. 1. herramientas particulares. en la columna Name se muestra el nombre de cada una de las variables.

3. los comandos de cada sesión son almacenados y organizados por fecha.% (Número de las × Número de columnas).5: Command History Como se muestra en la Figura 1. 1.Hora Fecha-. por medio del rótulo %-. Figura 1. Resulta de gran utilidad ya que cualquier comando.4.5. o conjunto de comandos. adicionalmente permite hacer seguimiento de los comandos utilizados en determinado momento y/o procedimiento.2.4: Workspace de bytes que ocupa cada variable y el tipo de variable u objeto8 .CONCEPTOS BÁSICOS 5 Figura 1. Command History Se encuentra ubicada en la parte inferior izquierda de la ventana principal y como su nombre lo indica. su función es la de llevar un historial de los comandos utilizados por el usuario.5. . 8 Los tipos de variables y sus características son presentados en la sección 1. que sea ejecutado en la Ventana de Comandos (o Command Window) puede ser fácilmente recuperado.

a menos que se le especique al programa la ubicación del mismo. como se muestra en la Figura 1. que se encuentra ubicada dentro de la carpeta principal del programa. al igual que los archivos que se encuentran dentro de éste.6. como se observa en la Figura 1.5. si el usuario guarda un archivo en alguna ubicación diferente (por ejemplo C:\Mis documentos). En estos casos no es recomendable utilizar la ventana de Comandos. M-File Editor En algunas ocasiones. Para acceder a Current Directory es necesario hacer click sobre la pestaña Current Directory en la parte inferior izquierda de la pantalla. Esta ventana permite que el usuario observe el directorio sobre el cual está trabajando.2. algunas de ellas las describiremos a lo largo del libro. este no podrá ser abierto ni ejecutado.Versión Preliminar 1. Current Directory También se encuentra en la parte inferior izquierda de la ventana principal. Las anteriores son las ventanas básicas de trabajo. .3.6. 1. es necesario volver a digitar todas las instrucciones.6 GEDEM . el usuario requiere utilizar varias líneas de comandos para solucionar un problema especial. Figura 1. como por ejemplo las ventanas de grácos o las de Demos. Existen otras de uso más especíco.6: Current Directory El lugar especicado por defecto para guardar los archivos del usuario es la carpeta work. pues si algún error ocurre.

esta aparece en color verde. es decir. como se observa en la Figura 1. el Editor de M-Files. Figura 1. File ⇒ New ⇒ M-File. Aparece. Para crear un M-File. para ejecutarlas de manera secuencial (en orden de líneas).CONCEPTOS BÁSICOS 7 La ventana M-le Editor permite digitar los comandos en un programa o M-le que recoge múltiples instrucciones. Figura 1.8: Comentarios con % En esta Figura podemos observar como. . Para insertar un comentario. Cuando se comenta una línea. se debe seleccionar en la parte superior de la Ventana de comandos. un M-le puede complementarse con comentarios. a medida que se va escribiendo el programa. se digita el símbolo  %  y luego se escribe el comentario.7: Editor de M-Files Además de permitir digitar múltiples instrucciones simultáneamente. entonces. líneas que no son leídas por MATLAB pero que sirven para construir de manera organizada estos programas colocando explicaciones luego de una o varias instrucciones.8 Figura 1.7.

Por defecto. Para comentar múltiples líneas.8. que en este caso es C:\MATLAB6p1\work \pcb. 9 . b=sqrt(5). es decir raíz cuadrada de cinco. cuando se necesita quitar los  % de las líneas comentadas. haciendo click sobre el ícono . tercero. presionando la tecla F5. y una vez guardado. Cuando no se ha guardado el archivo. aunque se puede guardar en otra carpeta. no es necesario colocar siempre el símbolo  %  al comienzo de una línea. seleccionando Debug ⇒ Run en la parte superior del Editor de MFiles. Adicionalmente. se utiliza Ctrl+T o en el menú Text se selecciona Uncomment. o seleccionar en la parte superior del editor de MFiles. como se observa en las líneas 3 y 4 de nuestro M-File. De manera similar. % Valor de c c=2. la ubicación del archivo se observa en la parte superior de la pantalla. se deben seleccionar las líneas que se desean comentar y luego de ello presionar Ctrl+R. Todo M-File debe ser guardado en una carpeta para que pueda ser ejecutado. y cuarto. éste desaparece.9 como se observa en la parte superior de la Figura 1. el programa utiliza la carpeta Work para almacenar los archivos. Al generarse un error es posible ubicar donde se cometió.Versión Preliminar se enumera cada renglón o línea en la parte izquierda de la pantalla. en la ventana del editor. Text ⇒ Comment. para realizar comentarios. segundo. (en todas ellas el M-File se guarda automáticamente antes de ser ejecutado): primero. % Valor de b. % Operamos (a+b)/c Un M-File. pues el programa indica la línea en donde éste se encuentra. sino que también se pueden colocar comentarios luego de una instrucción. El comando pcb muestra como realizar la operación ejecutada anteriormente en la ventana de comandos de otra manera: %Para calcular (a+b)/c. al lado de esta ubicación aparece el símbolo  * . se observa que. En este caso se ha guardado el M-File en la carpeta Work con el nombre pcb. puede ejecutarse de cuatro formas distintas.m. tenemos que: % Valor de a a=1.8 GEDEM .

b y c han sido creados.9: Aunque en la Ventana de Comandos solo aparece el valor 1. El segundo es clear. El programa dice en que línea y en que columna se presenta este error. éste no es el único cálculo que el programa ha realizado. Hay dos aspectos del programa que se pueden precisar a partir de la gura 1. es decir. cuando se corren programas que crean matrices muy grandes o realizan cálculos extensos. Figura 1. mostrar los resultados parciales es computacionalmente ineciente). Después de observar la salida es posible ejecutar el M-le varias veces y sigue apareciendo el resultado anterior en la Ventana de Comandos MATLAB dispone de tres comandos para limpiar la pantalla y cerrar ventanas. vemos que las variables a. se puede ir al M-File haciendo doble click sobre el link que aparece en la Ventana de Comandos y luego de ello realizar la corrección. Si observamos el Workspace.6180. El primero es clc. que cierra las ventanas adicionales que se abren al ejecutar ciertas instrucciones. pero solo muestra en la Ventana de Comandos los resultados de aquellas líneas que NO terminan en . Los resultados de la ejecución del programa o M-File que se mostró en la Figura 1.. utilizar . Así. al nal de cada instrucción permite que el programa sólo ejecute las instrucciones sin gastar tiempo en mostrar cálculos parciales o intermedios (Siempre. que limpia la Ventana de Comandos de resultados anteriores. que limpia el Workspace.9. borra todas las variables y objetos creados hasta el momento. aparecen en la Ventana de Comandos de la Figura 1.CONCEPTOS BÁSICOS 9 escribiendo el nombre del M-le en la Ventana de Comandos y presionando Enter. Para corregirlo. se tiene el comando close.9: Ventana de Comandos y Resultados Cuando hay un error en el M-le. como . Finalmente. Lo que ocurre es que el programa ejecuta todas las líneas.8.

en términos computacionales.m que representan funciones . Una función. Hasta ahora hemos visto como los M-les sirven para presentar una sucesión de comandos análoga a la que se haría desde la Ventana de Comandos. Para ilustrar estos conceptos veamos un ejemplo. x2 = −b ± √ b2 − 4ac 2a Podemos crear una función en un M-le de MATLAB .m).Versión Preliminar por ejemplo.10 GEDEM . Todo el código básico de MATLAB y los toolboxes están compuestos de M-les que son utilizados como funciones. Sabemos que las soluciones son: x1 . b y c. nombre corresponde al nombre de la función. recibirá como input o entradas los valores de a. ésta se puede invocar desde la Ventana de Comandos o desde algún otro M-le. sin embargo existen otro tipo de archivos . este tipo de Mles se conocen como cheros de comandos o Scripts . Una vez guardada la función (con el nombre raiz. las nuevas ventanas que contienen grácos. x2=(-b-(sqrt(b^2-4*a*c)))/(2*a).c). y realizando cálculos matemáticos y lógicos genera unas salidas u outputs . Esta función. y generará como output o salidas las 2 raíces o valores de x. es un programa que recibe unas entradas o inputs . Se sugiere que estos tres comandos se coloquen siempre al comienzo de un M-File. se debe colocar la sintaxis: [salidas]=nombre(entradas) donde salidas representa un vector de resultados que arroja la función a partir de las entradas. que calcule las raíces de una ecuación cuadrática. Por ejemplo. En este caso. Para construir una función en un M-le.x2]=raiz(a.b. para hallar las raíces de 2x2 + 4x + 1 = 0 podemos utilizar la función que creamos ejecutando la siguiente instrucción en la Ventana de Comandos: . que llamaremos raiz. x1=(-b+(sqrt(b^2-4*a*c)))/(2*a). La sintaxis es la siguiente: function [x1. Un problema frecuente en álgebra es el de hallar las raíces o valores de x de una ecuación cuadrática de la forma ax2 + bx + c = 0. Luego de esta primera línea deben aparecer otras líneas con las instrucciones para realizar las operaciones matemáticas y lógicas que calculan las salidas u outputs de la función. y debe ser también el nombre con el cual se guarda el M-le donde se construye la función.

c). que se deben colocar al nal de cada segmento. Cuando se colocan los puntos suspensivos de la manera correcta. existen dos formas en que se pueden realizar los cálculos los cálculos. Los métodos analíticos aplican conceptos matemáticos para hallar una solución. Cuando hay líneas que son muy largas.2929 x2 = -1. hay que mencionar una característica adicional de la que disponen los Mles. vamos a solucionar un problema muy sencillo: calcular el valor de x que satisfaga la ecuación x + 5 = 4.7071 Finalmente. Los resultados que se obtienen con esta programación son exactamente los mismos que se obtienen con la anterior. Para entender cómo funciona cada método.. por ejemplo en fórmulas matemáticas bastante complejas. En contraste. Por otro lado.. tanto analíticos como numéricos.. Para ello.1) Como resultado se obtiene: x1 = -0.. Procesos iterativos Existen dos métodos para resolver problemas matemáticos: analíticos y numéricos. los métodos numéricos generalmente asignan valores a las variables involucradas en un problema y evalúan condiciones sobre tales valores para determinar si se ha hallado la solución.5).. /(2*a).4. /(2*a). coloquemos en la primera línea el numerador y en la segunda (separada de la primera con puntos suspensivos) el denominador. x1=(-b+(b^2-4*a*c)^0. así: function [x1. veamos la partición de la fórmula cuadrática mencionada en el ejemplo anterior. MATLAB permite dividir estas líneas mediante tres puntos suspensivos  . para solucionar un problema: manualmente y computacionalmente.x2]=raiz(a. Analíticamente (utilizando álgebra) sabemos que para hallar x debemos colocar to- .x2]=raiz(2. x2=(-b-(b^2-4*a*c)^0.4.5). Por ejemplo. 1.CONCEPTOS BÁSICOS 11 [x1.b.. el programa muestra estos puntos de color azul oscuro.

haciendo la resta 4 − 5. (1) Iteración 1 2 3 4 (2) x -4 -3 -2 -1 (3) x+5 1 2 3 4 (4) = 4 = = = = 4 4 4 4 Cuadro 1. es decir requirió de más recursos (tiempo y programación). Una manera alternativa de resolver este ejercicio es numéricamente. el método numérico. por asignar el valor de -4 a x (Columna 2). Los dos métodos (analítico y numérico) nos permitieron llegar a la solución.1: Método Numérico para hallar x Para construir el cuadro se comenzó. De esta manera. se puede hallar la solución x = −1 por el método analítico. o computacionalmente. Como en la primera iteración no se cumplía la igualdad.Versión Preliminar dos los números a la derecha de la igualdad y dejar solo la variable x a la izquierda. resolviendo este tipo de problemas. y realizando las operaciones manual y/o computacionalmente. utilizando un programa de computador que realice dicha resta. resultó ser poco eciente.1. reescribiendo la ecuación de la forma x = 4−5. Luego. Nótese que este proceso se pudo haber realizado manual o computacionalmente. se realizaron 4 iteraciones para poder hallar el valor de x (x = −1). Una herramienta computacional como MATLAB elimina las limitaciones de cálculo. Este procedimiento se puede realizar manualmente. Realizar este trabajo manualmente implicaría construir un Cuadro similar al 1. En total. Además. fue más fácil realizar manualmente las operaciones requeridas por el método analítico. en la primera la. una vez se asignó este valor a x se evaluó el lado izquierdo de la igualdad (x + 5 ⇒ −4 + 5 = 1. fue necesario volver a realizar otra iteración. En general resulta poco eciente el cálculo manual de las operaciones que requiere un metodo numérico. Columna 3) y se determinó si coincidía con el lado derecho de la igualdad (Columna 4).12 GEDEM . Este proceso es conocido como una iteración (Columna 1). Sin embargo. En este caso. aplicar este método consiste en dar distintos valores a la variable x hasta que se cumpla la igualdad x+5 = 4. esta vez con x = −3. . debemos realizar las operaciones aritméticas necesarias entre los valores que están a la derecha de la igualdad (en este caso restar 5 a 4) para hallar el valor de la variable.

que permiten resolver computacionalemnte procesos iterativos como el del Cuadro 1.1. y realiza operaciones distintas dependiendo de si se cumple o no una condición. si se cumple la condición (if). . se ejecuta el segundo grupo de sentencias (sentencias2). Algunas de estas expresiones utilizadas por MATLAB son if. A continuación explicamos los tres primeros. En caso de omitir else y sus respectivas sentencias (sentencias2) y además no se cumple la condicion. Los bucles permiten repetir las mismas o análogas operaciones sobre datos distintos. for. las cuales permiten trabajar en el computador de la misma manera en que se suele trabajar en un curso de álgebra (despejando variables. se realizan las operaciones que componen el primer grupo de sentencias (sentencias1).CONCEPTOS BÁSICOS 13 En el ejemplo anterior. break. La sentencia if es una bifurcación. Si no se cumple la condición (else). hay algunos problemas que son imposibles de abordar analíticamente y aunque podrían resolverse manualmente utilizando métodos numéricos. cambiando signos. El objetivo de este libro es presentar una herramienta computacional para resolver problemas de economía matemática analítica y numéricamente. Trabajar el método numérico requiere de expresiones conocidas como bifurcaciones y bucles. el método numérico fue un camino largo para hallar la solución. while. try y catch.). Las bifurcaciones permiten realizar una u otra operación según se cumpla o no una determinada condición. Esto no siempre ocurre. más adelante se presentará el resto de las expresiones. La forma general para una condición es: if condicion sentencias1 else sentencias2 end En este caso. se llevaría mucho tiempo realizar todos los cálculos. además es probable que durante el proceso se cometan errores humanos. switch. etc. dado que son los que vamos a trabajar en esta primera parte del libro. Este es muy útil para despejar una o más variables cuando las expresiones en las que éstas se encuentran son complicadas. MATLAB dispone de un toolbox no gratuito llamado Symbolic Toolbox que permite trabajar con este tipo de variables. Para trabajar en MATLAB el método analítico se trabaja con variables simbólicas.García de Jalón (2001).

. vi + a. La forma de la sentencia for en el caso más general es: for i=vi:a:vf sentencias end donde vi es el valor inicial del contador. i toma el valor de 2 y de nuevo. Este proceso se repite n veces. el programa comienza por asignar a i el valor de 1 y realiza todas las operaciones establecidas en las sentencias (Se ha tomado arbitrariamente como contador la variable i. . Su forma más sencilla es: for i=1:n sentencias end En este caso. vf ] que contiene un conjunto de valores que comienzan en vi. . Sin embargo. y realiza de manera repetida una secuencia de operaciones con un determinado conjunto de datos. por ejemplo.Versión Preliminar no se realiza ningún cálculo. y en la solución de un problema por medio de métodos numéricos cada repetición del proceso se llama iteración. (vi + a) + a . A continuación. este contador hubiera podido ser cualquier otra variable. vf es su valor nal y a es la magintud que . la sentencia for es un bucle. la forma general es: if condicion1 sentencias1 elseif condicion2 sentencias2 elseif condicion3 sentencias3 else sentencias4 end Por otro lado. Un caso más general es cuando el contador es un vector de la forma [vi . el contador (en este caso i) no está limitado a tomar valores enteros positivos. . terminan en vf y están separados en intervalos de magnitud a. for a=1:n). se realizan las operaciones. Cuando existen múltiples condiciones.14 GEDEM . Sin embargo.

Con este programa.1:3.4. si no se cumple la condición. La idea es asignar valores a x entre -4 y 4. Luego se continúa con la segunda iteración en donde x toma el valor de -3. En la tercera línea se evalúa.5:0. no siempre se llega a una solución. que en este caso es x+5. la sentencia if termina o rompe el proceso for por medio de la instrucción break. En la primera iteración se asigna a x el valor de -4. for x=-4:1:4 li=x+5 % li=Lado Izquierdo ld=4 % ld=Lado Derecho if li==ld break end.4 0. Vamos a construir un programa que resuelva numéricamente la ecuación x + 5 = 4. encuentra la solución x = −1. . . 3. para colocar en la sentencia for un contador i que contenga los valores 0. caso en el cual se dice que no hay convergencia. la programación debe ser de la forma: for i=0. con este valor de x se evalúa el Lado Izquierdo (li) de la ecuación. si el Lado Izquierdo li es igual al derecho (4). end x En la primera línea se establece que el proceso. y se dene el Lado Derecho (ld=4). MATLAB luego de cuatro iteraciones. utilizando if. Por ejemplo. evaluar el lado izquierdo de la igualdad y vericar si este resultado coincide con el lado derecho. si x hubiera tomado valores de [-4:1:-2] o de [-3.3:0.5 .4 sentencias end Ilustremos estos comandos con el ejemplo anterior. Si se cumple la condición. se va a repetir 9 veces (número de valores entre -4 y 4 con intervalos de magnitud a=1). la sentencia if no hace nada.3 0.2:3.CONCEPTOS BÁSICOS 15 separa los valores del contador i. luego. se repite el proceso. en la segunda línea. En procesos iterativos como el que se acaba de mostrar.5] no se habría llegado . en caso de no cumplir la condición. Por ejemplo. y así sucesivamente hasta que se cumpla la condición o hasta que el programa haya evaluado todos los valores de x.

a menos que se direccione el programa hacia la ubicación de esos archivos. las reglas que se utilizan para la solución de problemas por medio de métodos numéricos son más elaboradas y permiten establecer condiciones para que el problema converja hacia una solución. en donde aparece una Ventana similar a la Figura 1. Por medio de la opción Add Folder. dentro de los valores asignados a x no es posible encontrar la solución x=-1. Otros Conceptos Básicos 1. En el primer caso. Sin embargo. el proceso pasa cerca de la solución asignando a x valores de -1.10. aunque fue útil para ilustrar el uso de las sentencias if y for. colocar el Path que el software trae por defecto o incluir todas las subcarpetas de una carpeta. a pesar de realizar todas las iteraciones. Path En el momento de ejecutar algún chero (M-le).Versión Preliminar a una solución. incluyendo la carpeta Work. La regla de iteración en el anterior ejercicio era trivial y arbitraria. En el segundo caso. se requiere que el archivo se encuentre dentro de alguna carpeta que pueda reconocer el software. se necesita que ésta se encuentre dentro de la ruta de búsqueda del programa.16 GEDEM . no satisfacen de manera estricta la condición x+4=5.1. A pesar de que estos valores son cercanos a la solución x=-1. En realidad.9. es necesario guardar los cambios en el Path orpimiendo el botón Save. 1. En el Path solo están registradas las carpetas del directorio C:\MATLAB6p1. Por ejemplo. se debe ir al menú File⇒ Set Path. cuando x=[-3. cheros en otras carpetas que no estén en el Path no serán reconocidos por MATLAB y generarán errores de ejecución. el programa arroja el siguiente error de ejecución: ??? Undefined function or variable ’pcb’.5.2:3. Judd (1998) y Mora (2001). Una vez agregada la carpeta. Para añadir una carpeta al Path. Otras opciones disponibles en este menú permiten eliminar carpetas del Path. Estas reglas de iteración y métodos numéricos se mencionan más detalladamente en capítulos posteriores 10 . Para que una carpeta pueda ser reconocida.m ubicado en C:\GEDEM\pcb.1 y -0. si se ejecuta el chero pcb.5. .5].5:0. razón por la cual el proceso los descarta como posibles soluciones y nalmente no converge. 10 Se sugiere consultar algunos textos como Fackler (2003). se puede agregar cualquier carpeta al Path.m. cuando x=[-4:1:-2].

ZLABEL.’Property1’.. Al escribir help xlabel en la Ventana de Comandos.) returns the handle to the text object used as the label.5.) sets the values of the specified properties of the xlabel.10: Path de Matlab 1.PropertyValue1.. Por ejemplo.. En la mayoría de casos.2. Help y Doc El comando help permite desplegar la ayuda de cada uno de los comandos y funciones. generalmente aparece la sintaxis del comando y las diferentes opciones que este tiene.. TITLE. xlabel es un comando que permite colocar una etiqueta al eje x de una gráca. se obtiene: XLABEL X-axis label.. Por ejemplo. En esta ayuda. XLABEL(’text’. Las rutinas de MATLAB están organizadas por temas en diferentes carpetas. este comando se utiliza en la Ventana de Comandos y se escribe de la forma help rutina.CONCEPTOS BÁSICOS 17 Figura 1. TEXT. donde rutina se reere al nombre del comando o rutina del que se desea obtener información. en la carpeta C:\MATLAB6p1\toolbox\matlab\sparfun se encuentran todas las rutinas para trabajar con un tipo especial de matrices que veremos . See also YLABEL. XLABEL(’text’) adds text beside the X-axis on the current axis. H = XLABEL(.

que describa tanto los inputs como los outputs de dicha función. % Vector con . esta opción es útil porque permite colocar un comentario que describa la utilidad del programa que se creó. Para colocar una sección de ayuda en cualquier M-le.11. y colocando en él una sección de ayuda. es necesario colocarla al inicio de éste. se obtienen las tres primeras líneas. % Primera Fila 4 5 6] % Segunda Fila B=[5 8].18 más adelante. y que no están separadas por espacios. Las salida de MATLAB al ejecutar help pcb se presenta en la Figura 1. GEDEM . se muestran todos los comandos o rutinas. por ejemplo. dado que todas las ayudas . Por ejemplo. con esta opción se puede diseñar un help similar a los que tienen las rutinas del software. Esto quiere decir que la expresión % Esto ya no es sección de Ayuda no aparece en la salida porque se encuentra separada por un espacio del bloque de líneas consecutivas que tienen el símbolo %. que tienen el signo % al comienzo de la línea. Si el M-le es un programa. Para no entorpecer el trabajo en la Ventana de Comandos. retomando el M-le pcb. en líneas consecutivas comentadas. Si el M-le es una función. MATLAB también permite que el usuario pueda colocar una sección de ayuda (o help) a los M-les que él construya. que sirven para trabajar con matrices dispersas.m creado anteriormente. que son las matrices dispersas. ejecutando en la Ventana de Comandos la instrucción help C:\MATLAB6p1\toolbox\matlab\sparfun.m .Versión Preliminar help también es útil para ver los comandos o rutinas disponibles para trabajar un tema en particular. el M-le quedaría de la forma: % Programa para crear la Matriz A y el Vector B % Creado para el Capítulo de Conceptos Básicos % Ya esta corregido % Esto ya no es sección de Ayuda A=[1 2 3. Ejecutando en la Ventana de Comandos help pcb o help pcb.

donde rutina corresponde al comando o rutina del cual se quiere consultar la documentación. entre ellas colocar títulos o texto en grácas o modicar propiedades de otros objetos.11: Help de pcb Por otro lado. con base en vectores y matrices. en esta ventana aparecen las ayudas de las rutinas del programa y las creadas por el usuario. Esta documentación contiene información más detallada que la especicada en el help sobre la sintaxis y métodos numéricos que utiliza cada rutina.3. Objetos MATLAB . Por ejemplo. trabaja otro tipo de datos (objetos): Cadenas de caracteres.12. La sintaxis del comando es doc rutina. MATLAB despliega la documentación para el comando clc en una ventana nueva. Las funciones para cadenas de caracteres están en el sub-directorio: . Para poder utilizar el comando doc se requiere que el usuario.5. se recomienda trabajar con helpwin rutina. al ejecutar en la Ventana de Comandos doc clc. Estas cadenas tienen múltiples funciones. cuando se utiliza este comando se abre la ventana de ayuda del programa presentando la misma salida que presenta help pero en una ventana diferente. 1. haya instalado además del programa toda la documentación. Figura 1.CONCEPTOS BÁSICOS 19 aparecen en esta ventana. similar a la que aparece en la Figura 1. el comando doc permite consultar la documentación en línea disponible en MATLAB sobre cualquier comando o rutina. durante el proceso de instalación. Una cadena de caracteres es un objeto que contiene caracteres (no necesariamente numéricos).

y cada caracter se almacena en una de las posiciones del vector. el programa coloca la cadena de texto y las comillas en color rojo oscuro. éstas se deben colocar dentro de comillas simples . Así. Por ejemplo. En algunas ocasiones se requiere que algún texto dentro de la cadena de caracteres vaya entre comillas. Para introducirlas en MATLAB . Esta cadena es almacenada en un vector de tamaño 1×5 como un objeto de tipo char array (character array) que ocupa 10 bytes en el Workspace11 . Cuando esto no ocurre. una matriz de caracteres es una matriz cuyas las son cadenas de caracteres. la sintaxis es: Eje x . cada caracter ocupa 2 bytes de memoria.12: Documentación de clc C:\MATLAB6p1\toolbox\matlab\strfun Los caracteres de una cadena se almacenan en un vector. Algunos de los comandos que nos permiten trabajar con cadenas de caracteres 11 En toda cadena de caracteres. para crear la cadena Eje x. para crear la cadena  Eje `x' . dichas comillas se representan por un doble caracter comilla . se debe colocar la instrucción: Eje x . Para ello. es necesario completar con espacios las cadenas (las) más cortas. Por ejemplo. .20 GEDEM . Todas las las de una matriz de caracteres deben tener el mismo número de elementos. Si este procedimiento se realiza de manera adecuada. a partir de ellas se puedan crear matrices de caracteres.Versión Preliminar Figura 1. Como las cadenas de caracteres son almacenadas en vectores la.

) deblank(c1) c1==c2 int2str(a) num2str(a.. (el número de decimales puede ampliarse o reducirse a n).n) str2double(c1) c1=cellstr(C) Crea una matriz de caracteres a partir de las cadenas c1. Devuelve un vector o matriz de unos y ceros. Para ello. Comando Características 21 char(c1.. eliminando los espacios al nal de cada cadena. Convierte un número entero a en cadena de caracteres. Cuando el número tiene decimales.. Argentina. e introduciendo un valor o cadena de caracteres que dena el campo. necesitamos crear el 12 García de Jalón (2001) . Elimina los espacios al nal de una cadena de caracteres c1.2. Estos datos se llaman miembros (members) o campos (elds)12 . respectivamente. Brasil y Paraguay).CONCEPTOS BÁSICOS se presentan en el Cuadro 1. Una estructura (struct) es una agrupación de datos de diferente tipo bajo un mismo nombre. Convierte una cadena de caracteres representando un número real en el número real correspondiente. Convierte un número real a en cadena de caracteres. Cuadro 1. Compara dos cadenas carácter a carácter. Una estructura se dene en MATLAB separando sus campos por puntos. dependiendo de si el elemento es igual o diferente. completando con espacios las cadenas más cortas.. Veamos un ejemplo que ilustre estos conceptos.. Podemos crear una estructura que contenga el PIB per cápita y la participación del consumo dentro del PIB del año 2000 para algunos países latinomaericanos (Colombia.c2.2: Algunos Comandos sobre Cadenas de caracteres Estructuras.. por defecto. Convierte una matriz de caracteres C en un vector de celdas c1.. se almacenan en la cadena solo cuatro cifras decimales. c2.

Robert Summers and Bettina Aten.06 pcon.pcon. Los campos (variable y país) están separados por  .93 pcon. Penn World Table.col=5795.pry=4801. Center for International Comparisons at the University of Pennsylvania (CICUP). Consumo en PIB % col=Colombia % arg=Argentina % bra=Brasil % pry=Paraguay De esta manera se han creado dos estructuras: la primera contiene datos de pib percápita para cuatro países de Latinoamérica y la segunda contiene datos de participación en el consumo para el mismo grupo de países13 . se debe escribir en MATLAB lo siguiente: % Primer Campo: Variable pibp=PIB Percapita pibp. 13 .arg=11729. pcon Se observa en el Workspace que se han creado dos objetos tipo estructura Los datos se han tomado de Alan Heston. la salida de MATLAB debería ser similar a la que se presenta en la Figura 1.pry=77.22 GEDEM .13.14 Variable pcon=Partic.arg=69. Octubre 2002.bra=65. Al invocar en la Ventana de Comandos estas dos estructuras.75 pcon. Para introducir los datos.30 % pry=Paraguay % Segundo Campo: pcon.71 % bra=Brasil pibp. es decir.Versión Preliminar campo Variable (PIB per cápita o participación del consumo). .08 % arg=Argentina pibp.1.bra=7744. Figura 1.col=67.55 % col=Colombia pibp. Version 6. y dentro de este campo. denir otro para País.13: Estructuras pibp. al ejecutar pibp.

.69. pry .CONCEPTOS BÁSICOS 23 (structure array).. bra . Comando e=struct( campo1 .08.67. para crear las dos estructuras del ejemplo anterior (PIB percápita y participación del consumo para algunos países de Latinoamérica.. arg .65. Podemos utilizar el comando struct para crear esta estructura en una sola instrucción.5795. basta con escribir en la Ventana de Comandos pcon.11729.e) Características Permite crear la estructura e en una sola línea Elimina el campo e de la estructura ES Cuadro 1. el software dispone de comandos que sirven para manipular estructuras.. y cada uno de ellos contiene campos relacionados con países de Latinoamérica. así: pibp=struct( col .55. arg .06. arg .5795.col.71. basta con especicar la posición que debe ocupar la estructura dentro de una matriz o un vector. Para ello.77. Algunos de ellos se presentan en el Cuadro 1.11729.7744. que arroja como resultado 67.) rmfield(ES.3. Por ejemplo. que contega la información de estas variables para algunos países de Latinoamérica: % Pib Percapita pibp=struct( col .valor1..4801.. año 2000) y colocar estas estructuras en un vector lat.93. pry . Por ejemplo.3: Algunos Comandos sobre Estructuras Anteriormente creamos la estructura pibp mediante cuatro instrucciones.55.30) Como las estructuras son objetos que permiten almacenar datos. pry .7744..93.71...75.. . para acceder a la participación que tiene el consumo en el PIB de Colombia. bra .. es de esperar que éstas se puedan almacenar en matrices y vectores.30) % Participacion Consumo en PIB pcon=struct( col .4801. bra .08.. Se puede acceder a la información que tiene cualquiera de estos campos escribiendo su ubicación.14) lat(1)=pibp.

55 11729. contiene información sobre la participación del consumo: ans = col: arg: bra: pry: 67.06 65. .71 4801. cadenas de caracteres.93 69.75 77.24 GEDEM . se crea un vector lat con dos columnas que contiene campos (1×2 struct array with fields). Con estas instrucciones. que solo permiten un mismo tipo de datos en todas sus posiciones. este vector contiene el PIB percápita: ans = col: arg: bra: pry: 5795.08 7744. una estructura. contiene un vector de 3×1. En su primera columna (lat(1)). Esto implica que un cell array puede admitir. en su primera posición.14 Vectores o matrices de celdas (cell arrays). ya que permite combinar diferentes tipos de datos (numéricos. Un cell array se crea especicando la posición en que se desea colocar el objeto dentro del cell array y colocando el objeto dentro de llaves { }. Veamos un ejemplo: ca(1)={[3 5 4]}. por ejemplo. y en la cuarta una cadena de caracteres. % Vector en la posicion 1 ca(4)={(’conceptos basicos’)} % Cadena de Caracteres en la posicion 4 En este ejemplo hemos creado un cell array que contiene cuatro objetos: en su primera posición. estructuras) en uno solo. en la segunda y tercera contiene matrices vacías.30 mientras que en la segunda columna (lat(2)).Versión Preliminar lat(2)=pcon. Un cell array es un objeto de tipo más general. en su segunda posición una matriz y en la tercera una cadena de caracteres14 . Nótese que no es 14 Contrario a los otros objetos.

con el proposito de tener mayor eciencia computacional en los cálculos. 15 . Este comando permite que el usuario de MATLAB disponga de varias opciones de formatos en los que desea ver los resultados numéricos. cualquier cálculo posterior a esta instrucción se detiene indenidamente. Algunas veces este último formato utiliza Las totalidad de opciones se pueden ver utilizando el help de format o consultando la documentación. Algunos de los comandos para trabajar con cell arrays se observan en el Cuadro . cuya sintaxis es format opcion. El programa utiliza por defecto el formato short. Comando cell(m. Algunos de ellos son formato short (5 dígitos). El primero es el comando pause. Cuadro 1. cuya sintaxis es pause(n). Computacionalmente resulta ineciente almacenar en la memoria tantos valores de ceros cuando la matriz es de gran tamaño. debemos mencionar dos comandos que son fundamentales para la presentación de resultados numéricos y grácos en MATLAB .n) celldisp(ca) cellplot(ca) iscell(ca) num2cell() cell2struct() struct2cell() Características crea un cell array vacío de m las y n columnas.CONCEPTOS BÁSICOS 25 necesario introducir los elementos de un cell array en orden consecutivo: se pueden introducir en cualquier posición y MATLAB automáticamente crea objetos vacíos en las posiciones en las que no se introdujo ningún elemento. Una matriz dispersa se caracteriza porque la mayoría de los elementos que la componen son ceros.4: Algunos Comandos para objetos Cell Array Matrices dispersas. muestra el contenido de todas las celdas de ca muestra una representación gráca de las distintas celdas indica si ca es un vector de celdas convierte un array numérico en un cell array convierte un cell array en una estructura. Estas rutinas y algunos ejemplos se presentan en detalle en el capítulo 2. MATLAB dispone de rutinas que permiten tratar de manera especial estas matrices. hasta que el usuario oprima alguna tecla. convierte una estructura en un cell array. Para terminar este capítulo. long (15 dígitos) y bank (2 decimales)15 . cuando se utiliza de la forma pause. Este comando permite detener una secuencia de operaciones o procesos por n segundos. El segundo comando es el comando format.

Finalmente.5000e-005 Para efectos prácticos. .26 GEDEM . En la tercera sección se estudian las condiciones sucientes (o de segundo orden) de un problema de optimización (capítulo 7) y los algoritmos para hallar puntos óptimos (capítulo 8). Cálculo y Optimización y Dinámica. se presenta una introducción a la solución numérica de sistemas dinámicos (capítulo ??). En la segunda sección se analiza el comportamiento de una función a partir de herramientas grácas (capítulo 4) y de cálculo diferencial (capítulo 5) e integral (capítulo 6). cuando se digita en la Ventana de Comandos el número 0.Versión Preliminar notación cientíca para satisfacer el requerimiento de colocar 5 dígitos Por ejemplo. En la primera sección se trabaja con los conceptos de Matrices y Vectores (capítulo 2) y Sistemas de Ecuaciones (capítulo 3).000015: ans = 1. la mayoría de los resultados numéricos del libro serán presentados en formato bank. es posible presentar la estructura del libro que se divide en tres secciones: Algebra Lineal. A partir de estos conceptos básicos.

Parte I ÁLGEBRA LINEAL 27 .

.

Matrices Una matriz es un arreglo rectangular de elementos dispuestos en renglones (las) y columnas.. a través del álgebra lineal.   a11 a12 . . a1n    a21 a22 ..Capítulo 2 Matrices y Vectores Lida Quintero. . . 2. .. y en la tercera.. en la segunda. .   . teoría de las ecuaciones diferenciales y en diferencia. En la primera sección examinaremos el manejo básico de las matrices y sus distintas operaciones.. las matrices expresan las relaciones entre los insumos y los productos nales de las diferentes industrias. amn . El estudio del álgebra lineal es útil en áreas importantes para las ciencias económicas tales como teoría de la optimización. utilizando MATLAB .1. Mario González. en modelos económicos como el de Leontie.  . buscando establecer el nivel de producción que satisface una demanda determinada. . a2n   . abordaremos los vectores junto a sus particularidades y operaciones. ofrecen una forma de representar de manera organizada estas relaciones utilizando matrices. Es así como.  . estadística y econometría.. El objetivo de este capítulo es estudiar las características básicas del álgebra lineal. Eduardo Sánchez Existen ciencias en donde el análisis de diferentes situaciones hace necesario encontrar una manera óptima de organizar grandes volúmenes de información. veremos algunas herramientas que facilitan el cálculo de valores y vectores propios.  .. am1 am2 29 . Las matemáticas.

4] O también de la forma: A=[1 3 9. 1 . mientras que las las se diferencian entre sí con punto y coma (. Así. Las matrices deben estar contenidas entre paréntesis angulares [ ] y ser denidas por las. Para referenciar elementos especícos de una matriz. porque dispone de m las y n columnas.30 GEDEM .Versión Preliminar El orden o tamaño de una matriz se dene como el número de las y de columnas que la componen.7.5. En este caso. cadenas de caracteres.) o presionando enter. sin números o caracteres especiales 1 . se separan las componentes de una misma la mediante espacios o comas (. MATLAB utiliza un nombre de variable por defecto (ans de answer) que contiene la respuesta de la última operación.). Ejemplo 2. el elemento aij es aquel que está en la la i y la columna j . Por ejemplo. otras matrices.3. se recomienda que las matrices se denoten con letras mayúsculas.1. Las matrices deben recibir un nombre en MATLAB para que sean almacenadas durante la sesión. no obstante. para introducir elementos tipo cell array 2 . Este nombre puede ser una o varias letras. Generemos computacionalmente la matriz: A2×3 = 1 3 9 7 5 4 Para introducir la matriz A debemos introducir los elementos así: A=[1.7 5 4] MATLAB nos muestra entonces la matriz A: A = 1 3 9 7 5 4 Cuando a la matriz no se le ha asignado un nombre. se hace uso de los corchetes o llaves {}. También podemos especicar un elemento de la matriz indicando la la y la columna en la que se encuentra. tenemos una matriz de orden m × n. etc. utilizamos paréntesis circulares ( ) y. el elemento de la la 1 y columna 2 lo podemos especicar como a12 . por ejemplo. 2 Una matriz de celdas o cell array es un arreglo cuyos elementos son cualquier tipo de variable. es decir.9. números.

La idea básica es introducir cada una de las matrices necesarias para conformar la hipermatriz y.6 6 9]. introducir la posición que cada una de ellas ocupará dentro de la hipermatriz. y sus elementos por espacios.1)=[2 5 6. C(:. en la cual separamos las las por .0 1 1. Por ejemplo. denida como una matriz de más de dos dimensiones. y la información 3 MATLAB permite trabajar hipermatrices de cualquier dimensión.2)=[-4 6 0. la tercera dimensión: la profundidad de la hipermatriz). Hipermatrices Una extensión del concepto de matriz es el concepto de hipermatriz. 2. .4 1 0. cada una con m las y n columnas.1.8 3 5]. generemos una matriz de tamaño (3 × 3 × 2): C(:. m K N Figura 2. En la primera línea se crea una hipermatriz C de 3 dimensiones.:.:.MATRICES Y VECTORES 31 Para efectos prácticos.1.1. simultáneamente. visible en la Figura 2. Por ejemplo. una hipermatriz de 3 dimensiones3 es una hipermatriz de tamaño m × n × xk donde k es el número de matrices del arreglo (es decir. utilizaremos a lo largo de la mayoría del libro la forma de introducir matrices.1: Hipermatriz de 3 dimensiones Para introducir hipermatrices en MATLAB se sigue un procedimiento similar a aquel para introducir una matriz.

1) = 2 5 6 4 1 0 6 6 9 C(:. B=[-4 6 0. Ejemplo 2.32 GEDEM .2. Es así como él obtiene los datos para el crecimiento del PIB. Supongamos que un analista desea organizar una serie de información compuesta por los indicadores macroeconómicos de tres países (P1 . Para ilustrar el uso de estos comandos. De manera similar. ya que queremos crear una hipermatriz que contenga 2 matrices de 3 × 3: C=cat(3. cuya sintaxis es cat(dim.Versión Preliminar que se introduce corresponde a la primera de las dos matrices que conformarán la hipermatriz C. P2 . Los comandos relacionados en el Cuadro 2. veamos un ejemplo.:.8 3 5]. la variación en la Tasa de cambio respecto al EURO. Por ejemplo deniendo las matrices: A=[2 5 6.:.0 1 1.4 1 0. la inación y la variación en el nivel de desempleo: .1 se pueden utilizar con hipermatrices. Como resultado. en la segunda línea se introduce la información correspondiente a la segunda matriz que compone la hipermatriz C. debemos tener presente que esta concatenación se realiza en la tercera dimensión (DIM=3). A2 ).B) Obteniendo la hipermatriz C de (3 × 3 × 2) dimensiones.6 6 9].A. Podemos invocar el comando cat para construir la hipermatriz C que anteriormente habíamos construido. Para ello. Este comando concatena las matrices A y B a lo largo de la dimensión dim. P3 ) durante los últimos dos años (A1 .A.2) = -4 6 0 0 1 1 8 3 5 Otra manera en que se pueden denir hipermatrices es por medio del comando cat. MATLAB crea una matriz de 3 dimensiones así: C(:.B).

:.5 6 5] % ∆ PIB A(:. 4 6 9] % ∆ Inflacion (π) A(:.n) permute(A) ipermute(A) Tamaño de la hipermatriz A Número de dimensiónes de la hipermatriz A Elimina dimensiones iguales a uno Distribuye los elementos de la hipermatriz A en una matriz de tamaño m × n Permuta las dimensiones de la matriz A según los índices del vector v Permutación inversa Cuadro 2.m.:. con el cual obtenemos: ans = 2 3 4 .1) = 5 7 6 5.:.4) = 10 11 7 8 11 10 El tamaño de la matriz A es (2 × 3 × 4).1: Comandos para hipermatrices clear A(:.2) = 6 8 10 7 9 11 A(:.:.2)=[6 8 10.MATRICES Y VECTORES Comando Acción 33 size(A) ndims(A) squeeze(A) reshape(A.:.5 6 5 A(:. 7 9 11] % ∆ TRM A(:.3) = 4 7 10 4 6 9 A(:.5.:.1)=[5 7 6.4)=[10 11 7. 8 11 10] % ∆ Desempleo Esta matriz es almacenada y en el Command Window aparece de la siguiente forma: A(:.:.:. Este tamaño se puede obtener utilizando el comando size con la sintaxis size(A).3)=[4 7 10.

3)=[0. que ésta tiene 24 elementos (2 × 3 × 4).0] B(:. la matriz B que inicialmente es de tres dimensiones la podemos escribir como una de dos dimensiones asi: B2×4 = −3 5 0 7 0 3 2 2 MATLAB dispone del comando squeeze para eliminar dimensiones que son iguales a uno. Esto lo podemos hacer por medio de la sintaxis reshape(A.Versión Preliminar Sabemos también que la matriz A es una matriz de tres dimensiones (2 × 3 × 4). de la forma squeeze(B). una matriz de (12 × 2).2)=[5. una matriz A de tamaño 6 × 4 4 . así: Es posible crear cualquier matriz de tamaño m × n que cumpla la condición m × n = 24. Así. Podemos utilizar el comando reshape para crear. simplicando las dimensiones de una matriz.1)=[-3.2] B(:. ya que eliminando ésta dimensión no se modica el contenido de la matriz B. 4 . que reordena las columnas de la hipermatriz A y crea una matriz de tamaño (6 × 4). del tamaño de la matriz A.4)=[7. y tiene cuatro matrices dos las por una columna (2×1×4).:. obtenemos: ans = -3 5 0 7 0 3 2 2 Otro comando útil en hipermatrices es el comando reshape que distribuye los elementos de la hipermatriz A que contiene m × n × k elementos en una matriz (de dos dimensiones) de tamaño m × n. Sabemos.:. Utilizando el comando ndims de la forma ndims(A) obtenemos: ans = 3 Para ilustrar el uso del comando squeeze utilicemos la matriz B denida por: B(:.:. Aplicando este comando a la matriz B que creamos anteriormente.6. Nótese que en este caso la segunda dimensión de la matriz no es necesaria.:.4).3] B(:.2] La matriz B es de tres dimensiones.34 GEDEM . a partir de la hipermatriz. Por ejemplo.

una matriz que ordene de manera distinta las dimensiones de la matriz A. así: C(:. en las columnas.5 7 4 8 7 8 7 11 6 9 6 11 6 10 10 7 5 11 9 10 En esta matriz encontramos. Finalmente. La sintaxis del primero de estos comandos es permute(A. Podemos utilizar el comando permute para crear una matriz que contenga los mismos elementos de A pero que sea de tamaño (4 × 2 × 3).v). cada uno de los indicadores macroeconómicos y en cada par de las. las dos las siguientes al país P2 y las últimas dos las a P3 .MATRICES Y VECTORES 35 ans = 5 6 4 10 5.:. Como resultado. La sintaxis: v=[3 1 2] C=permute(A. en la segunda dimensión de la matriz C la primera dimensión de la matriz A. Este comando reordena las dimensiones de una matriz A en el orden dado en el vector v. es decir.:. los datos correspondientes a cada uno de los tres países. Siguiendo nuestro ejemplo. vemos como las dos primeras las corresponden al pais P1 . y en la tercera dimensión de la matriz C la segunda dimensión de la matriz A.1) = 5 5.v) indica a MATLAB que coloque en la primera dimensión de la matriz C la dimensión 3 de la matriz A. tenemos una matriz C de tamaño 4 × 2 × 3.5 6 7 4 4 10 8 C(:. tenemos los comandos permute e ipermute. sabemos que la matriz A tiene tres dimensiones y es de tamaño (2 × 3 × 4).2) = 7 6 8 9 7 6 11 11 .

en las columnas. cada una de estas expresiones podría entenderse como la información organizada por país. En esta sección hemos observado como las hipermatrices sirven para manejar información. En este ejemplo. para crear una de estas matrices se introduce el comando especíco del tipo de matriz que queremos.:. se genera un escalar. seguido por su tamaño entre paréntesis circular ()5 con cada una de sus dimensiones separadas por comas6 . al aplicar ipermute a la matriz C volvemos a la matriz inicial A.v).1. sin embargo esta no es su única función.3) = 6 5 10 11 10 9 7 10 Cada una de estas matrices nos dejan analizar los datos de forma distinta. Cuando se especica de la manera A=comando(n). Por su parte. para una hipermatriz de tamaño m × n × k . el programa crea una matriz cuadrada de dos dimensiones (n × n). 2. la sintaxis es A=comando(m. y su sintaxis es ipermute(A.36 GEDEM . las dimensiones también se pueden separar por espacios.Versión Preliminar C(:.2 presentamos los principales comandos para crear diversos tipos de matrices: Matrices Dispersas Un concepto de interés computacional son las matrices dispersas. En general. cada una de ellas tiene. mas adelante veremos el papel que juegan en la construcción del producto cartesiano y de grácas. Asimismo. En el Cuadro 2. . el comando ipermute realiza la operación inversa del comando permute. mientras que con la sintaxis A=comando. Cuando se trabaja con matrices de gran ta5 6 Aunque también es posible con ([ ]) Si se utiliza "([ ])".n.n). los años y las las corresponden a los indicadores.k).2. de la forma A=comando(m. matrices en las que la mayoría de sus componentes son cero. Tipos de Matrices MATLAB ofrece comandos que generan matrices sin necesidad de especicar cada uno de sus elementos. porque se trata de matrices con alguna característica especial.

sino también por el espacio en memoria que estos datos ocupan..2..n. Por esta razón....3 0 0 0. De números aleatorios con distribución normal....n×n.3 para tratar este tipo de matrices. no solo por lo dispendioso que puede resultar digitarlos.2: Matrices generadas automáticamente maño.n. de valor medio 0 y varianza 1.) rand(m..n..) ones(m.) magic(n) Identidad*.) zeros(m.. Unitaria o de Unos. con la propiedad de que todas las las y columnas suman lo mismo**. Consideremos la matriz: D=[0 5 -6 0. De números aleatorios entre 0 y 1.3... sólo matrices cuadradas ** Sólo para matrices cuadradas Cuadro 2. El comando sparse nos permite hacer esta conversión utilizando la sintaxis sparse(D).. MATLAB dispone de los comandos relacionados en el Cuadro 2.4. Ejemplo 2. con distribución uniforme. Nula o de Ceros.3.) randn(m.. Con los números 1. * Este comando no genera hipermatrices..n.MATRICES Y VECTORES Comando Forma una matriz 37 eye(m. de la cual obtenemos: . resulta computacionalmente ineciente almacenar una gran cantidad de entradas de ceros.9 0 -7 0..0 0 0 4] Esta matriz es almacenada en MATLAB de la siguiente forma: D = 0 3 9 0 5 -6 0 0 0 0 0 -7 0 0 0 4 Generemos la matriz dispersa correspondiente a D.n...

j).4) hay elementos diferentes de cero. Forma una matriz dispersa de tamaño i × j con unos en la diagonal principal.m. que implican que es de tamaño m × n. en un empleo eciente de la memoria.Versión Preliminar Características Convierte una matriz D a su forma dispersa.1). Crea una matriz dispersa a partir de: i y j . conoce su valor y sabe que.4) 4 MATLAB .1).3).j) sparse(i. (3. hay ceros. de cualquier otra forma. (3.j. indica que la matriz ha sido guardada de tipo dispersa y. que es el vector de elementos y m y n.3) -7 (4.s]=find(D) . Vector columna con los elementos diferentes de cero de D. Extrae las diagonales especicadas por d (donde d=0 corresponde a la diagonal principal) de la matriz D. Número de elementos diferentes de cero en la matriz D. (1.j) spones(D) spdiags(D) spdiags(D. (1. sabe ahora que en las posiciones (2.j. Veamos otra forma de generar la matriz dispersa de D: [i.3) -6 (3.3: Algunos Comandos para Matrices Dispersas ans = (2. pero reemplaza los elementos diferentes de cero por unos. Genera una matriz con la misma estructura de dispersión de D. La nueva matriz tiene i las y tantas columnas como diagonales diferentes de cero tenga D.3) y (4. Indica las posiciones (en las y columnas) de los elementos diferentes de cero de D.2) 5 (1. en el resto de posiciones. si es cero. eliminando todos los elementos en los que haya cero. Crea una matriz de ceros de tamaño i × j .d) nonzeros(D) [i.n) GEDEM . speye(i.1) 3 (3. s.j]=find(D) nnz(D) issparse(A) Cuadro 2.s.38 Comando sparse(D) sparse(i.2). que indican la posición de los elemetos diferentes de cero en la nueva matriz.1) 9 (1. Si el resultado de esta rutina es uno. Extrae todas las diagonales con elementos diferentes de cero de la matriz D de tamaño (i.

en la la 2 (primer elemento del vector i) columna 1 (primer elemento del vector j). en total.MATRICES Y VECTORES 39 i = 2 3 1 1 3 4 j = 1 1 2 3 3 4 s = 3 9 5 -6 -7 4 Estos tres vectores nos dicen la posición y el valor del elemento en esa posición. b es un vector columna con aquellos elementos diferentes de cero: en otras palabras.j.n) La matriz dispersa S es igual a aquella que encontramos anteriormente. construimos la matriz dispersa: S = sparse(i. Otro comando. entonces. por ejemplo. Para generar la matriz dispersa. está el elemento 3 (primera entrada vector s) y así sucesivamente.m. spones(D): . Así.s. El resultado de a es el número de elementos diferentes de cero en S.n]=size(D) y. Evaluamos la cantidad de elementos de S diferentes de cero: a=nnz(S) y b=nonzeros(S). es igual al vector s que ya habíamos hallado. genera la misma estructura de dispersión de spones(D). spones. es decir. pero cambia los elementos diferentes de cero (el vector b o el vector s) por unos. hacemos que corresponda al tamaño de D: [m. seis.

40 GEDEM .3) (4. Si en este ejemplo a la sintaxis del comando le agregamos un número entero entre -2 y 2. C=spdiags(S) es: C = 9 0 0 0 3 0 0 0 0 0 5 0 0 -7 0 -6 0 4 0 0 Este resultado no es sorprendente: si observamos la matriz D y la comparamos con C vemos que la tercera columna de C es la diagonal principal de D y que las demás columnas de C se corresponden con las diagonales de D.1) (1. Concluimos el análisis de dispersión de D con issparse: si introducimos la sintaxis issparse(S) y el resultado es 1 entonces S es una matriz dispersa. obtenemos cada columna de C o. spdiags permite la construcción de una matriz donde las diagonales con elementos diferentes de cero constituyan las columnas y la cantidad de las equivale a la cantidad de la matriz original. cada diagonal de D.0).Versión Preliminar ans = (2. Por otra parte. en otras palabras. es decir. Así. si introducimos en MATLAB la rutina sparse(3.4) 1 1 1 1 1 1 Ahora bien.2) (1. teniendo en cuenta que 0 es la diagonal principal: C=spdiags(S. en los lugares donde i = j hay unos. El programa no muestra la matriz.2) generamos una matriz de ceros de tamaño 3 × 2.1) (3. por ejemplo speye(3) genera la siguiente matriz dispersa: . pero sí nos indica que ya existe: All zero sparse: 3-by-2 Por último speye genera una matriz dispersa a partir de la matriz identidad.3) (3.

4: Operaciones básicas entre matrices Ejemplo 2.B) rdivide(A. Operación Comando o Función Operador Suma Resta Multiplicación Multiplicación elemento a elemento* Potenciación Potenciación elemento a elemento* División izquierda División izquierda elemento a elemento* División derecha División derecha elemento a elemento* de la matriz plus(A.3) 1 2.7 -5 3.B) mtimes(A.2) 1 (3.B) mldivide(A.n) power(A./B   2 3 −9   A = 7 −5 3  8 −5 8   −5 4 −9   B= 6 2 3 −1 −5 7 Paso 1.8 -5 8] .B) A+B A-B A*B A.3. A ∗ B .2 . ∗ B . Operaciones Básicas entre Matrices Para realizar operaciones básicas entre dos matrices previamente denidas A y B y un escalar n.4.B) ldivide(A. determinemos el valor de A + B . Dadas las matrices A y B y el escalar 2.\B A/B A.4 encontramos las distintas formas de hacer las operaciones básicas.B) mpower(A. es necesario indicar la operación que queremos.B) times(A.B) minus(A. ya sea mediante operadores o por medio de funciones o comandos. A/B y A.B) mrdivide(A.*B A^n A. A.1) 1 (2. A2 . En el Cuadro 2. A./B *Las operaciones elemento a elemento aplican los operadores a cada componente Cuadro 2. Introducimos las matrices en MATLAB : A=[2 3 -9.MATRICES Y VECTORES 41 ans = (1.^n A\B A.1.

1507 -3.-1 -5 7] Paso 2.^2 G = 4 9 81 49 25 9 64 25 64 H=A/B H = -2.6986 -2.2329 .6 2 3. Realizamos las operaciones invocando las rutinas pertinentes: C=A+B C = -3 7 -18 13 -3 6 7 -10 15 D=A*B D = 17 59 -72 -68 3 -57 -78 -18 -31 E=A.3973 -2.2329 -3.7123 -3.4110 -4.Versión Preliminar B=[-5 4 -9.*B E = -10 12 81 42 -10 9 -8 25 56 F=A^2 F = -47 36 -81 3 31 -54 45 9 -23 G=A.42 GEDEM .4521 -4.1918 -1.

/B I = -0. 2.5: Comandos para analizar una matriz Ejemplo 2. le pedimos a MATLAB que multiplicara ambas matrices.5. el programa multiplicó A por A.5.MATRICES Y VECTORES 43 I=A. En el caso de F. el programa hizo la siguiente operación: A ∗ B −1 .1. mientras que en E buscábamos que multiplicara cada elemento de A por el correspondiente en B . mientras que en G elevó cada uno de sus elementos al cuadrado.0000 1.0000 1. En H. Análisis de una Matriz Existen otros comandos en MATLAB que nos permiten extraer información que revela características importantes de las matrices. F y G y H e I? En D.7500 1.0000 -8. analicemos las caracterísiticas de la matriz A: .6667 -2.4000 0.5000 1.5 se resumen los comandos que proveen las propiedades esenciales de una matriz A: Propiedad Operador o Sintaxis del Comando Traspuesta Inversa Determinante Norma Rango Traza Tamaño Dimensiones Número de elementos Elementos de la diagonal Triangular Inferior Triangular Superior A’ inv(A) det(A) norm(A) rank(A) trace(A) size(A) o length(A) ndims(A) numel(A) diag(A) tril(A) triu(A) Cuadro 2.1429 ¾Cuál es la diferencia entre D y E.0000 1. y en I dividió cada componente de A por su correspondiente en B .4. En el Cuadro 2. A partir del Cuadro 2.

Analizamos la matriz A de acuerdo al Cuadro 2.44 GEDEM .0146 0.1262 e=det(A) e = -206 f=norm(A) f = 9.2136 0.0485 0.5: C=A’ C = 1 7 3 3 -5 6 -2 4 4 D=inv(A) D = 0.2767 -0.3 6 4] Paso 2.Versión Preliminar A2×3  1 3 −2   =  7 −5 4  3 6 4  Paso 1.7 -5 4.1165 -0.0097 0.6869 g=rank(A) g = 3 h=trace(A) .0874 -0.0777 -0. Introducimos la matriz A en MATLAB A=[1 3 -2.

MATRICES Y VECTORES 45 h = 0 i=size(A) i = 3 3 j=ndims(A) j = 2 k=numel(A) k = 9 m=diag(A) m = 1 -5 4 N=tril(A) N = 1 0 0 7 -5 0 3 6 4 P=triu(A) P = 1 3 -2 0 -5 4 0 0 4 .

mientras que P es una matriz triangular superior partiendo de la fracción triangular superior de A.U. utilizamos la rutina lu: [L. una matriz U triangular superior y una matriz de permutación P de manera que P A = LU . j nos muestra el número de dimensiones de la matriz y k el número de elementos contenidos en el arreglo. Por otra parte. esta es factorizable si existe una matriz L triangular inferior.5000 . para encontrar los elementos que componen las matrices L.U y P que generan la matriz A a partir del comando lu.0000 0 0 -0. Por ejemplo.0000 -1.6667 3. De acuerdo a g. Factorización LU: PA=LU Dada una matriz cuadrada A. D es la inversa. primero denimos la matriz: A=[1 -2 1. En MATLAB es posible calcular las matrices L. El objeto de estudio de esta sección son tres de las formas de factorizar matrices: la factorización LU.6667 1.2 6 4] Ahora bien. Cholesky y descomposición en valores singulares.3333 0 0 1.1. la traza de la matriz es h y.2500 1. según i.5. U y P .0000 0 -0.0000 U = -3. N es una matriz triangular inferior a partir del fragmento triangular inferior de A. e es el determinante y f es la norma de la matriz. A tiene 3 las y columnas linealmente independientes. Matrices Factorizables Una matriz cuadrada es factorizable cuando puede reescribirse como el producto de dos o más matrices.3333 -0.P]=lu(A) L = 1. C es la transpuesta de A.0000 1.Versión Preliminar De esta forma.46 GEDEM .0000 0 6. para conocer la matriz L y U a partir de una matriz cuadrada. A es de tamaño 3 × 3.-3 1 -1. 2.

1547 Así. Veamos. Descomposición en valores singulares Otra factorización de matrices es la denominada descomposición por valores singulares y es útil a la hora de analizar si un proceso iterativo está convergiendo a una solución.2247 -0. MATLAB nos muestra la matriz U . Al igual que las otras formas de factorización. la idea básica consiste en reexpresar una matriz Am×n como el producto de otras. Debemos aclarar que no todas las matrices son factorizables: sólo aquellas cuyo determinante es diferente de cero. en este caso de la siguiente manera: .8165 0 0 1. simétrica y denida positiva. Cholesky La descomposición de Cholesky factoriza una matriz A.70711 0 0 1.MATRICES Y VECTORES 47 P = 0 1 0 0 0 1 1 0 0 Si operamos los resultados.4142 -0.-1 2 -1. de tal forma que A = U T U . que cumple con la propiedad de que U T ∗ U = A. por ejemplo. tenemos entonces que L∗U = P ∗A. donde U es una matriz triangular inferior con elementos positivos en su diagonal.0 -1 2] Utilizamos entonces el comando chol: U=chol(A) U = 1. Es posible calcular la matriz U a través de la descomposición de Cholesky con el código chol. la descomposición de Cholesky para la siguiente matriz: A=[2 -1 0.

1) Donde U y V son matrices unitarias y S es una matriz diagonal. P1 = (a1 . a2 . a = (a1 . la norma del vector −− −→ −− −→ P1 P2 ..2. nos proporciona el valor de la distancia. por ejemplo para un vector en 2 : v = 2 2 v1 + v2 (2. sin embargo los valores singulares siempre son los mismos aunque aparezcan en diferente orden..1. En general. Su cálculo está basado en el teorema de Pitágoras.2) donde v1 y v2 son los componentes del vector v en el espacio bidimensional. Los elementos aij pertenecientes a la diagonal de la matriz S son denominados valores singulares de A. magnitud y sentido. la norma está dada por: a = a2 + a2 + . para encontrar la distancia d entre dos puntos en 3 . a2 . pueden ser denidos como el segmento de recta entre el origen y un punto que se caracteríza por poseer dirección. b2 . 2.. El concepto de norma es útil en el cálculo de distancias: por ejemplo. el vector es llamado unitario.2.. Vectores Los vectores son tipos especiales de matrices de tamaño n × 1 (vector columna) ó 1 × n (vector la) en el espacio n . . hacemos énfasis en las factorizaciones P A = LU y Cholesky debido a la utilidad que tienen para el análisis y las soluciones de sistemas de ecuaciones. b3 ). + a2 n 1 2 (2. para un vector en n . an ).. 2.48 GEDEM . es decir. Dada la naturaleza de la factorización una matriz A siempre tendrá muchas descomposiciones en valores singulares.Versión Preliminar T Am×n = Um×m Sm×n Vn×n (2. . Aunque existen otros métodos para descomponer matrices. Análisis de un vector Magnitud de un vector La magnitud o norma de un vector v se denota por v y se reere a la longitud del vector. donde P1 P2 = P2 − P1 . Geométricamente. a3 ) y P2 = (b1 .3) Si la norma de un vector es igual a 1.

7489. . 23. bn ) en n se dene como: n d= i=1 (bi − ai )2 (2. donde −− −→ P1 P2 = P2 − P1 : −− −→ p1=[15 23 4] p2=[-9 10 -1] p=p2-p1 Paso 2. Comenzamos por introducir los vectores P1 y P2 y calcular P = P1 P2 . . . la distancia entre dos puntos P1 = (a1 . a2 . Luego.MATRICES Y VECTORES 49 d= (b1 − a1 )2 + (b2 − a2 )2 + (b3 − a3 )2 (2. an ) y P2 = (b1 . utilizamos el comando norm para hallar la distancia entre P1 y P2 : d=norm(p) La distancia entre los puntos P1 y P2 es. Ahora bien.6. Hallar la distancia entre los puntos P1 = (15.4) En general. es el máximo de sus valores singulares. Grácamente se puede representar como la norma del vector p tal como se muestra en la Figura 2. utilizamos el comando norm: c=[8 1 6 5]. 4) y P2 = (−9.5) MATLAB calcula la magnitud de un vector a por medio del comando norm. d=27. 10. −1) Paso 1. . Por ejemplo para hallar la norma del vector c = (8 1 6 5) En primer lugar. b2 . .2250. entonces. cuya sintaxis es norm(a).2 La norma de una matriz A. . la magnitud o norma del vector c es d=11. Ejemplo 2. los valores singulares de una matriz son los elementos de la diagonal de la matriz S que resulta de descomponer la matriz original en un producto de tres matrices tal que: . d=norm(c) Así. creamos el vector cy y luego.

2: Distancia entre P1 y P2 A=U ∗S∗VT [U.S. surge el problema de especicar con respecto a qué eje está determinado el ángulo. cuando b > 0. la dirección es de 90o y cuando b < 0 es de 270o 8 7 z 1 P2 0 10 −1 30 25 0 20 15 10 −5 5 −10 0 5 15 P x y Figura 2.50 GEDEM . De esta manera. Es decir que es equivalente calcular la norma de la matriz o calcular el máximo de la descomposición de A. En 2 . la dirección es el ángulo entre el segmento de recta y el eje x positivo8 . para vectores en 3 y n con n > 3.la dirección del vector depende del signo de b. generalmente se calcula la dirección sólo para vectores en 2 9 Si a = 0. Por esta razón.7 Dirección de un vector La dirección de un vector está determinada por el ángulo entre el segmento de recta que parte del origen (vector) y un eje del espacio en el que éste se encuentra. para un vector l = [a. b] con a = 0.V]=svd(A) .Versión Preliminar 4 P1 3 2 Por medio de la siguiente sintaxis se obtienen las tres matrices: El comando svd calcula la descomposición por valores singulares de la matriz A. la dirección se calcula de la forma9 : En otras palabras se cumple que: norm(A)=max(svd(A)) No obstante.

siempre y cuando su tamaño lo permita. b Veamos. −5) 2. la proyección de un vector. 90 10 120 8 6 150 4 2 30 60 180 0 210 324. por ejemplo. −5). c=-0. es así como para determinar la dirección del vector l se utiliza la sintaxis atan( a ).3: La dirección del vector u = (7.46 grados. la dirección que corresponde al vector u = (7. el calculo de la matriz ortogonal y las matrices creadas a partir de vectores. Así.3.6) Es posible calcular la dirección utilizando la función atan que corresponde a la inversa de la tangente. A continuación veremos aquellas operaciones propias de los vectores: el producto escalar y el producto cruz. así como algunas relaciones entre vectores que utilizan estas operaciones como son el ángulo entre dos vectores. cuyo resultado es un ángulo denido en radianes.como se observa en la Figura 2. a ellos aplican también sus operaciones (ver Cuadro 2.2.4). .MATRICES Y VECTORES 51 tan θ = b a ⇒ θ = tan−1 b a (2. Operaciones entre Vectores Como los vectores son tipos particulares de matrices. introducimos en MATLAB la sintaxis para encontrar la magnitud del ángulo: c=atan(-5/7) La dirección del vector u es.2.46° 330 240 270 300 Figura 2.6202 radianes lo que corresponde a: 324.

7) Para calcular el producto escalar entre dos vectores en MATLAB ..7.. El resultado del comando.8) Para calcular el producto cruz.. b2 .. si los vectores son vectores la. bn ) en lar10 a b es igual a: n..5] Paso 2.2.b) (donde a y b son vectores del mismo tamaño).b) (donde a y b son vectores en tercera dimensión11 )... a2 . y es igual a b’*a si ambos son vectores columna. el producto esca- a b = a1 ∗ b1 + a2 ∗ b2 + . b=[4.2 5) 3: Paso 1. a3 ) y b = (b1 .b) Sólo es aplicable para dos vectores en la misma dimensión.. es decir.Versión Preliminar Producto Escalar Dados dos vectores a = (a1 . con el mismo número de componentes. a2 .7]. cuya sintaxis es c=dot(a.9. b3 ) en 3 . a3 ∗ b1 − a1 ∗ b3 . Ejemplo 2. . Producto Cruz Dados dos vectores a = (a1 .52 GEDEM .. es equivalente a a’*b. Invocamos el comando cross: c=cross(a. Introducimos los vectores a y b: a=[6. . 11 10 MATLAB sólo calcula el producto cruz de vectores en 3 . Determinemos el Producto Cruz de los vectores a y b en a = (6 8 9.8.1. cuya sintaxis es c=cross(a. an ) y b = (b1 . el producto cruz o producto vectorial entre a y b es el vector a × b perpendicular a ambos vectores que esta denido por: a × b = (a2 ∗ b3 − a3 ∗ b2 . + an ∗ bn (2. b2 . MATLAB dispone del comando cross. a1 ∗ b2 − a2 ∗ b1 ) (2. .7) b = (4 1. existe la rutina dot.

9) Para calcular el ángulo en MATLAB .8000 -24.4 observamos los vectores a. es perpendicular tanto a a como a b.4: Producto cruz entre a y b En la Figura 2. junto con la función trigonométrica inversa del coseno (acos) de la forma: acos(dot(l.3600 8.8000 10 3 b a c −4 z −11 −18 −25 0 20 10 0 8 6 2 4 y x Figura 2. Ángulo entre dos vectores Dados dos vectores no nulos e y l. c.MATRICES Y VECTORES 53 El resultado que muestra MATLAB es el producto cruz entre los vectores a y b. que está contenido en el vector c: c = 28.e)/((norm(l)*norm(e)))) . invocamos los comandos relacionados con la norma y el producto escalar. b y vemos como el producto cruz que calculamos. el ángulo θ entre ellos esta determinado por: cos θ = l e l e ⇒ θ = cos−1 l e l e (2.

dos vectores a y b son paralelos si el ángulo entre ellos es 0 o 180 grados 12 . Dados los vectores v = (1.Versión Preliminar Recordemos que podemos clasicar los vectores de acuerdo al ángulo entre ellos: es así como. Invocamos los comandos de producto escalar y norma: proy=(dot(u.1]. y. segundo. es decir. cuando a b = 0.54 GEDEM . 12 Es decir.v)/((norm(v))^2))*v La salida de MATLAB muestra la proyección de v sobre u. Veamos en el siguiente ejemplo el cálculo de una proyección. Matrices y Vectores Utilizando los conceptos y herramientas computacionales que hemos trabajado hasta el momento es posible presentar dos conceptos que se constituyen como corolarios del análisis de matrices y vectores como son los de Matrices Ortogonales y Producto Cartesiano. proy= 1.8. si a = 0 entonces b = α ∗ a para alguna constante α . 1) y u = (1. Ejemplo 2.3. Introducimos los vectores en MATLAB : v=[1. 2).5000 Esta respuesta es grácamente visible en la Figura 2. la proyección de a sobre b está determinada por: proyb a = a b ∗b b 2 (2.5000 1.2] Paso 2. u=[1.2.10) de tal forma que proyb a es un vector paralelo a b y el vector a − proyb a es ortogonal a b. dos vectores a y b son perpendiculares u ortogonales si el ángulo entre ellos es de 90o .5 en la cual vemos como se cumplen las dos condiciones entre los vectores y la proyección. 2 Proyección Dados dos vectores a y b. encontrar proyb a Paso 1. Si alguno de los vectores es nulo el ángulo entre ellos es Π radianes. 2.

dada la matriz Qn×n = [aij ] y la matriz QT = [aji ]. donde I es la matriz identidad). matriz cuyas columnas son vectores que forman una base ortonormal para A. bij = 1 únicamente si i = j . En general. el número de sus columnas es igual al rango de A tal que QT Q = I . Las matrices ortogonales tienen una característica muy particular. Ejemplo 2..5 −0.5 0 0.+ani anj cumple con dos condiciones: primero. y. . segundo.MATRICES Y VECTORES Proyección de (u) en (v) 55 2 Ortogonalidad entre v y u menos la proyeccion 1.5 1 Diferencia entre u y la proyeccion 0. mediante el proceso de Gram-Schmidt13 .5: Proyección de a sobre b Matrices Ortogonales Una matriz A se dice ortogonal si es invertible y AT = A−1 (es decir.9. En otras palabras. Encontremos cuál es la matriz ortogonal de A:   −5 7 4   A =  8 6 −3 9 0 1 Introducimos la matriz A y luego invocamos el código orth: 13 Ver (Grossman 1996). AT A = I . sus columnas son vectores que constituyen una base ortonormal.5 X 1 1. Q=orth(A) recibe como input una matriz cuadrada A y entrega como resultado Q. el producto escalar bij = a1i a1j +a2i a2j +..5 Y 0 −0. MATLAB contiene una rutina que.5 Vector v Vector u Proyección 2 Figura 2. bij = 0 si y sólo si i = j . construye matrices ortogonales a partir de otras matrices del mismo tamaño.

entonces.6443 0.8 6 -3.8375 0. la matriz ortogonal a A: M = -0.5441 -0.0515 -0.56 GEDEM .3) Ahora.4286e-016 .2) f=M(:.7631 Veamos si M es una matriz ortogonal.d) u= 1.d) i= 1.6588 0.9 0 -1] M=orth(A) M es.0000 p=dot(d.f) p= 2.3884 0. Extraigamos sus vectores columna: s=M(:.0000 u=dot(s.s) y= 1.1) d=M(:. veamos si los productos escalares cumplen con las características de una base ortogonal: y=dot(s.3844 0.3878e-016 i=dot(d.Versión Preliminar A=[-5 7 4.5196 -0.

. comprobándose que el producto escalar entre las columnas de A es cero y el producto escalar de cada una de las columnas por ellas mismas es igual a uno: M es. meshgrid replica el vector x n veces.Z]=meshgrid(x.3878e-016 y p=2. Los demás resultados deben vericarse. La sintaxis general del comando es: [X. donde n es el número de componentes del vector x.Y]=meshgrid(x. Consideremos por ejemplo los vectores x = (1. para obtener el producto cartesiano entre vectores o matrices utilizamos el código meshgrid14 . una matriz ortogonal.4286e-016 están expresados en notación cientíca y son muy cercanos a cero. 5.y) obtenemos: X = 1 2 3 1 2 3 1 2 3 Y = 4 4 4 5 5 5 6 6 6 Nótese que meshgrid requiere que los vectores x y y tengan el mismo número de componentes. 6). De manera similar (pero con el vector y traspuesto) se construye la matriz Y. Aplicando meshgrid de la forma [X. 2. 3) y y = (4.Y.z)). El comando meshgrid únicamente sirve para generar matrices a partir de tres vectores (por ejemplo: [X. por tanto. MATLAB permite generar 14 Este comando sirve sólo para vectores en 3 .MATRICES Y VECTORES 57 Recordemos que los números u=1. Matrices creadas a partir de Vectores El producto cartesiano es una operación que sirve para obtener todas las combinaciones posibles entre todos los elementos de dos o más vectores. construyendo una matriz cuadrada X. En MATLAB .y) donde x y y son dos vectores o matrices previamente denidos.Y]=meshgrid(x.y. Así.

cada una constituye un plano y.y. En dos dimensiones (es decir. cada ecuación es un hiperplano en n para todo n > 3.W. en cuyo caso el resultado son hipermatrices. para n dimensiones. en general. si existe solución al sistema. Sin embargo. el cual utilza la misma sintaxis que el comando meshgrid.Y.w.z) La operación que realiza meshgrid es útil principalmente para hallar el producto cartesiano de dos vectores. existen innitas soluciones. diremos que las rectas o los planos se intersecan.X. ecuaciones de dos variables). simplicando su método . Esto es evidente en la Figura 2. el comando tiene restricciones para más de tres dimensiones.x.3. En esta sección estudiaremos con detalle los métodos computacionales usados para el análisis de rectas y planos. y. Rectas y Planos Un sistema de ecuaciones como lo veremos más adelante. Por lo tanto. si no existe solución es porque no existe un punto de corte.Versión Preliminar Figura 2. en tres dimensiones.6 para cada uno de los casos. cuando una de las rectas o los planos es paralelo a otro.Z]=ngrid(v.en esta sección vamos a presentar la idea que yace tras el concepto de sistema de ecuaciones. puede ser solucionado de distintas formas. 2. El uso del comando es extensible al cálculo del producto cartesiano de tres vectores. por ejemplo: [V. MATLAB facilita el cálculo de algunos pasos intermedios. cada ecuación representa una recta. Aunque no existen comandos especícos para su estudio.6: a) Única Solución b) No Existe Solución c) Innitas soluciones el producto cartesiano a partir de más de tres vectores con el comando ndgrid. necesario al gracar funciones en 3 dimensiones.58 GEDEM .

7: Una recta en tercera dimensión Introduciendo la ecuación 2..3.11 en la ecuación 2. f. para hallar la ecuación de la recta el concepto de pendiente se hace inútil y precisamos de un vector que describa una dirección denida de la recta. no obstante. m). l). Supongamos una recta r en n dimensiones que pasa por los puntos P0 = (a... y − b.1.MATRICES Y VECTORES sustancialmente. Rectas Una recta es una sucesión innita de puntos en un espacio.7.. Consideremos la Figura 2. b..12) y tv P PP 0 P0 P P0 x Figura 2.. c.. y. . en ausencia de la pendiente.7.11) P = P0 + P0 P (2. 59 2... es decir.. n) y P = (x. . En tres dimensiones.. z − c. (2. Para establecer la ecuación de una recta en dos dimensiones necesitamos de un punto y la pendiente de la línea o. como observamos en la Figura 2. z. El vector que pasa por estos dos puntos P0 P = (x − a. .. m − n) es paralelo al vector diferente de cero v = (d. e. . existe un escalar t (t ∈ ) tal que P0 P = tv Y. de dos puntos. obtenemos: .12.

8. 7) y P1 = (9. igualamos las tres ecuaciones: t= x−a y−b z−c = = d e f (2. . −2). l           =       x y z . n            + t       d e f .13. es conocido como vector director de una recta. que muestra la dirección de la línea.14) Esta representación de la recta en la ecuación 2. 0. no obstante. e. b. al resolver el sistema matricial de la ecuación 2. tenemos tres ecuaciones: a + td = x b + te = y c + tf = z Al despejar t de cada una de las ecuaciones. donde t (t ∈ ) nos indica qué tanto se necesita para pasar de P0 a P y el vector v . simplemente:          a b c . Introducimos los puntos P0 y P1 como si fueran vectores: .10. . ha desaparecido el parametro t de la ecuación. c) y el vector director v = (d. 6. siguen apareciendo los mismos componentes necesarios para la construcción de una recta: el vector posición P0 = (a. Aunque cambia la forma de la ecuación. el resultado es: y−b z−c x−a t= t= d e f Como t es igual en cada uno de los casos.14 se llama ecuación simétrica o cartesiana. . . −2.13) Estas son las ecuaciones paramétricas de la recta r. .Versión Preliminar P = P0 + tv Que es. Ahora bien. dado que P0 puede tomar cualquier valor dentro de la misma recta. Ejemplo 2. Paso 1. Encontrar la ecuación paramétrica de la recta que pasa por los puntos P0 = (−5. Vale la pena resaltar que existen tantas ecuaciones de una recta como puntos hay sobre ella. f ). m          (2.60 GEDEM . .

La forma más común de hallar la ecuación del plano es determinar un vector diferente de cero y perpendicular al plano.2.-2.15. b.-2]. p1=[9. Un rasgo fundamental del plano es que debe estar en tres dimensiones: áreas en más de tres dimensiones son hiperplanos. z). denimos la ecuación de la recta de la forma: x = −5 + 14t y = 6 − 8t z = 8 − 8t w = 7 − 9t Dado que P0 es un punto que pertenece a la recta. si una recta pasa por dos de sus puntos.MATRICES Y VECTORES 61 p0=[-5. Encontramos el vector director de la recta P0 P1 p0p1=p1-p0 p0p1= 14 -8 -8 -9 Como P0 P1 es el vector director de la recta. f ).15) d(x − a) + e(y − b) + f (z − c) = 0 De la ecuación 2. conocido como normal y correspondiente a n en la denición de Grossman. En la Figura 2.0.7]. Grossman (Grossman 1996) aporta una denición más detallada: sea P un punto en el espacio y n un vector diferente de cero.16 se desprende la forma: (2. Entonces el conjunto de todos los puntos Q para los que P Q · n = 0 constituye un plano en tercera dimensión. es decir: n · P0 P = 0 reemplazando P0 P y n en la ecuación 2. 2.16) . e. y.8 vemos al punto P0 = (a. Paso 2.6. El vector que une estos dos puntos P0 P = (x − a.8.3. c) y a un punto cualquiera P = (x. está incluida dentro de ella. tenemos: (2. z − c) es perpendicular al vector normal n = (d. Planos Un plano es un área en la que. En la Figura ?? observamos qué es grácamente el vector normal. y − b.

−4) Paso 1. Determinar la ecuación del plano que pasa por los puntos P0 = (−4.1] p2=[-1.62 GEDEM . P1 y P2 : p0p1=p1-p0 p0p1= [2.0. P1 = (−2. −2. Ejemplo 2. Hallamos los vectores que pasan por los puntos P0 .11.-2.Versión Preliminar z n P P0 y x Figura 2. −1.8: El vector n es perpendicular a todos los puntos del plano. Introducimos los puntos en MATLAB como si fueran vectores: p0=[-4. 1) y P2 = (−1. La ecuación 2.-1.-1] p1=[-2. 0.17 se llama la ecuación cartesiana de un plano.1.17) Donde g = ad + be + cf . −1). dx + ey + f z = g (2.2] .-4] Paso 2.

c) y el plano dx+ey+f z+g = 0 tenemos la siguiente fórmula: D= |ad + be + cf + g| d 2 + e2 + f 2 (2.18) Veamos en el siguiente ejemplo cómo hallar computacionalmente la distancia entre un punto y un plano. si existen dos planos paralelos. Introducimos el vector normal y el vector contenido en el plano en la ecuación cartesiana (x + 1. Cabe resaltar que.3. el producto cruz entre los dos vectores tiene como resultado cero.3. y + 2.-3] Paso 3.MATRICES Y VECTORES 63 p0p2=p2-p0 p0p2= [3. Usando el punto P = (x. cuya respuesta es el vector normal al plano: c=cross(p0p1. −5) = 0 La ecuación cartesiana de este plano es x−12y +5z = 3. Hallar el producto cruz entre P0 P1 y P0 P2 . . z + 4) · (−1. y + 2. 12.p0p2) c= -1 12 -5 Paso 4. entonces sus vectores normales son paralelos. b. y. En otras palabras. Distancia entre un punto y un plano Para encontrar la distancia D entre un punto P = (a. z) obtenemos el vector P2 P que está incluido en el plano: P2 P = (x + 1. 2.-1. z + 4) Paso 5.

m = 0). y el polinomio que se genera a partir de ella es el polinomio característico. en otras palabras. 2.18: m=sqrt(3^2+(-7)^2+4^2) Paso 3. determinamos el valor del denominador de la ecuación 2. algunas veces sólo conocemos la matriz y. Hallamos primero cuál es el valor de ad + be + cf + g y su valor absoluto: j=(-8*3)+(1*-7)+(3*4)+1 k=abs(j) Paso 2.1. denotado p(λ).64 GEDEM . . nos permite determinar el vector m mediante un escalar λ. Ahora. Sin embargo. tal que λ es real o complejo que cumpla con la siguiente característica: Am = λm (2. Por tanto. dividimos el numerador entre el denominador: d=k/m Así. llegamos a que el valor de la distancia entre el punto y el plano corresponde a d: 2.4.3) y el plano 3x − 7y + 4z + 1 = 0 Paso 1. resulta de despejar m de la ecuación. 15 La ecuación (A − λI). es necesario encontrar el vector que la generó o uno paralelo a él. Para hallarlo. donde I es la matriz identidad. para entender el comportamiento de las variables que ésta representa. Esta condición es conocida como la ecuación característica. Hallemos la distancia entre el punto (-8. Valores y Vectores Propios Cuando solucionamos un sistema de ecuaciones de la forma Ax = b con única solución la transformación lineal de un vector x asigna una imagen a cada uno de sus componentes. Finalmente. establecemos una operación que.19) Para garantizar que m = 0.0925. la matriz generada al operar (A − λI) debe ser singular o.12. su determinante debe ser igual a cero. la solución de15 A − λI nunca debe ser trivial (es decir.Versión Preliminar Ejemplo 2. a partir de una matriz A de n × n.

tal que A*V=V*L. tal que V y L cumplen. Paso 2. Introducimos el input del comando: la matriz A: A=[1 -1 4. .2357 L = 3 0 0 0 -2 0 0 0 1 Cabe resaltar que si se especica sólo una única salida (B=eig(A)). Teniendo ya el input.8165 -0.9428 0.5774 0.5774 -0. el resultado de MATLAB es claro: L es la matriz de valores propios y las columnas de V son sus correspondientes vectores propios.2 1 -1].L]=eig(A) Así. Es a partir de ellos que encontramos el vector m.MATRICES Y VECTORES 65 p(λ) = det(A − λI) = 0 (2.13. invocamos eig para hallar los valores y vectores propios: [V. la propiedad que A*V=V*L. MATLAB calcula valores propios y un vector propio asociado a cada valor por medio del comando eig. en efecto. cuya sintaxis es [V.L]=eig(A). conocido también como el vector propio relativo a λ.3 2 -1.4082 0. Calculemos los vectores propios de la matriz   1 −1 4   A = 3 2 −1 2 1 −1 Paso 1.20) Las raíces de p(λ) son los valores propios asociados a A.5774 -0. V = 0. Este comando recibe la matriz cuadrada con las transformaciones lineales y calculalas matrices L (una matriz diagonal con los valores propios) y V (una matriz cuyas columnas son los vectores propios correspondientes). Observemos cómo trabaja la rutina con el siguiente ejemplo: Ejemplo 2.2357 0. esta corresponde a un vector que contiene únicamente los valores propios de la matriz (matriz L).4082 -0.

La información que describe las unidades vendidas en diferentes meses del año. encuentre una matriz 6 × 2 que contenga en su primera columna la utilidad total y en la segunda columna los impuestos totales durante cada uno de los meses. derecha y potenciación.5) y con cada par de matrices aplique las operaciones de suma. A partir de la hipermatriz A del ejemplo 2.5 2 Enero 4 5 8 3 9 F ebrero 9 8 2 2 6 M arzo 1 2 2 1 9 Abril 8 4 1 8 2 M ayo 8 8 9 5 2 Junio 10 21 9 11 6 Usando multiplicación de matrices.66 GEDEM . división izquierda. Una empresa se especializa en la producción de cinco artículos. la utilidad por unidad vendida y el valor del impuesto por cada uno de los productos son los siguientes: P roducto 1 P roducto 2 P roducto 3 P roducto 4 P roducto 5 U tilidad 22 28 15 20 12 Impuestos 2 8 1 0.     −2 6 −5   4 5 6 9 0 −3     a) A = −1 2 3 B= 8 −4 2    0 1 2 −6 12 7   1 −2 3 10 3 −9 5   b) A = B= 4 5 6 2 −6 4 −3 −2 6 7     16 16 5 15 20 3 −3 −3 −4     c) A = 18 1 27 27 20 11 B= 0 1 1 5 18 20 1 1 27 4 3 4 3. multiplicación.Versión Preliminar Ejercicios 1. resta.2. genere en MATLAB todas las posibles matrices de tamaño 2 × 2. . 2. Analice las propiedades de la matriz B (Ver cuadro 2.

−1.MATRICES Y VECTORES 67 4. 8). 2 ) 5 5 b) u = (3. Genere una matriz aleatoria de distribución uniforme y una matriz cuyas las y columnas sumen todas lo mismo. d) ¾Qué se puede deducir de los puntos anteriores? 6. 3. 3. Halle la norma y dena las características de cada par de vectores. Negativa o Indenida. Encuentre la distancia entre el punto (2. 2) v = ( 3 . Encuentre la ecuación paramétrica de la recta que pasa por los puntos P (−1. Trasponga si es necesario. 2. x). 9. . ¾Para qué valor de x ∈ Z + se cumple que u y v sean ortogonales?. (Ver Mora (2001. 55 . 3. 5. −2. Halle los valores y vectores propios de la matriz   3 2 −2   C =  −3 −1 3  1 2 0 A partir del resultado determine si ésta matriz es Denida Positiva. 2. 7. 2) √ √ c) u = ( 2. 8. b) Halle también los valores y vectores propios a través de operaciones y contrástelos luego con los resultados que da eig. 2) y v = (4. 3) y Q = (0. pág. 38)). Sean u = (3. −1) y el plano x + y + z = 5. y con cada una: a) Halle su polinomio característico a través de operaciones con matrices y vectores en MATLAB . 6) v = (4. 10. halle el ángulo entre ellos y calcule proyv u y proyu v a) u = (3. 0) 5. 5) v = ( 3 2. Con la matriz L = 2 8 5 4 y el vector m = (2. 2) a) Halle la inversa de L b) Multiplique el vector m por la inversa de L c) Ahora aplique división derecha y división izquierda entre L y m.

68 GEDEM .Versión Preliminar .

.2) am1 am2 o. . . La solución al sistema. es necesario encontrar valores de x1 . 1 En el Capítulo 2 sección 2. x2 .. . xn tales que resuelvan: a11 x1 + a12 x2 + .. a12 a22 ..1)       a11 a21 . .. am1 x1 + am2 x2 + . .Capítulo 3 Sistemas de Ecuaciones Norma Gómez.. . + a2n xn = b2 . xn       =     b1 b2 . + a1n xn = b1 a21 x1 + a22 x2 + . + amn xn = bm Este conjunto de ecuaciones. . amn       x1 x2 .. . de manera equivalente: Ax = b (3. . . y b el vector de resultados. . ... . ... es un vector columna que contiene los valores de las incógnitas que satisfacen todas las ecuaciones1 . . en muchos casos para estas ecuaciones. bm       (3.. . . . a1n a2n . . x es el vector de variables. . vimos grácamente que. se puede expresar de forma matricial así: (3. = . Eduardo Sánchez Las relaciones entre diferentes variables que interactúan en un problema pueden representarse en forma de ecuaciones y... . .3.. conocida como vector solución. . ..3) donde A es la matriz de coecientes (las constantes que acompañan a las incógnitas del sistema). . llamado sistema de ecuaciones lineales. cada una de las ecuaciones del sistema 69 ..

El objetivo de este capítulo es presentar las herramientas computacionales que provee MATLAB . se conocen como sistemas homogéneos. . que pueden tener innitos puntos de intersección.4) am1 am2 amn bm Al llevar la matriz ampliada M a una forma escalonada reducida 2 .. caso en el que no existe solución. después de repetir cierto tipo de operaciones previamente establecidas. Por otra parte.. . a1n a2n . . .1. .2 por medio de un procedimiento de operaciones aritméticas ordenadas entre las. están los métodos indirectos (también llamados iterativos o numéricos). Por otro lado.. . Estudiaremos dos criterios de solución: de un lado. transformar una matriz no cuadrada en una aproximación de la matriz identidad . . los sistemas de ecuaciones denidos. . en donde existe sólo un punto de corte. . y segundo.1. . . es la intersección entre ellos (según el caso). basados en los principios del algebra lineal. es decir. soluciona el sistema 3. .1. que brindan resultados exactos con calculos nitos y que pueden ser utilizados sólo si la matriz de coecientes es invertible. cuya sintaxis es rref(M). los sistemas singulares. los sistemas normales denidos cuyo punto de intersección es el origen. denida como M = [A b]:    M =   a11 a21 . los métodos directos o analíticos. fundamentados en las operaciones básicas con matrices.. MATLAB aplica este método con el comando rref. es posible encontrar la solución al sistema 3. si existe.1.1 representa una recta si x ∈ 2 .70 GEDEM . donde M es la matriz ampliada. existe el 3. Métodos Directos o Analíticos 3. que generan una secuencia de aproximaciones a la respuesta del sistema 3. . 3. una única solución.. es decir innitas soluciones. Eliminación Gauss-Jordan Este método.       (3.Versión Preliminar Al resolver un sistema de ecuaciones lineales existen dos casos: primero. o pueden no tener ningún punto de intersección. 2 Llevar una matriz a la forma escalonada reducida signica.1 utilizando la matriz ampliada. un plano si x ∈ 3 o un hiperplano si x ∈ n . b1 b2 .. y su solución. a12 a22 .. Además. para solucionar problemas económicos expresados en forma de sistemas de ecuaciones lineales.

x = −2 y y = 5.1] M1=[A1 b1] Paso 2. Introducimos la matriz de coecientes A2 y el vector de resultados b2 del sistema y. construimos la matriz ampliada M2. A2=[2 1 -1.8.2 1] b1=[8. A1=[1 2.SISTEMAS DE ECUACIONES 71 comando rrefmovie que muestra paso a paso la reducción de la matriz ampliada a su forma reducida.5 4 14] b2=[2. Ejemplo 3.1. Introducimos la matriz de coecientes A1 y el vector de resultados b1 del sistema y. S1 = 1 0 0 1 -2 5 Ejemplo 3. luego. Solucionemos el siguiente sistema de ecuaciones: x + 2y = 8 2x + y = 1 Paso 1. construimos la matriz ampliada M1. Solucionemos el siguiente sistema de ecuaciones singulares: 2x + y − z = 2 3x + 2y + 4z = 8 5x + 4y + 14z = 20 Paso 1. luego. Utilizamos rref: S1=rref(M1) De acuerdo a la respuesta de MATLAB . La sintaxis de este comando es rrefmovie(M).20] M2=[A2 b2] .2. es decir.3 2 4. la única solución al sistema es S1.

Utilizamos rref: S3=rref(M3) El resultado de MATLAB no es coherente dado que la última la indica que la suma de todas las variables multiplicadas por cero es 1. Utilizamos rref: S2=rref(M2) Con el resultado de MATLAB . podemos armar que el sistema tiene innitas soluciones denidas por x − 6z = −4 y y + 11z = 10: S2 = 1 0 0 0 1 0 -6 11 0 -4 10 0 Ejemplo 3.2 0 0 0 1 . podemos concluir que este sistema no tiene solución: S3 = 1 0 0 0 1 0 2.20. luego. A3=[1 1 2.3 -2 7.2 7 3] b3=[9.27] M3=[A3 b3] Paso 2. por esta razsn.Versión Preliminar Paso 2. construimos la matriz ampliada M3. Resolvamos el siguiente sistema de ecuaciones singulares: x + y + 2z = 9 3x − 2y + 7z = 20 2x + 7y + 3z = 27 Paso 1.2 -0.3.72 GEDEM . Introducimos la matriz de coecientes A3 y el vector de resultados b3 del sistema y.

encontrar su inversa de forma analítica puede llegar a ser un proceso muy complejo. . resolviendo la operación: x = A−1 b (3. Método de la Inversa Este método utiliza la inversa de la matriz de coecientes A y el vector de resultados b de un sistema Ax = b. Introducimos la matriz de coecientes A4 y el vector de resultados b4 del sistema. si la matriz es muy grande o dispersa.5) No obstante. con el objetivo de encontrar el vector solución x que satisface el sistema. cuya sintaxis es C=inv(A). recordemos que en los sistemas homogéneos solo hay dos posibles alternativas: la solución trivial. equivalente al sistema 3.2.0 0 4] b4=[0.0 1 -8.4. MATLAB permite calcular la inversa mediante el comando inv. en la cual todas las variables son cero.0] M4=[A4 b4] Paso 2.2.1.0.SISTEMAS DE ECUACIONES 73 Ejemplo 3. o existen innitas soluciones: S4 = 1 0 0 0 1 0 0 0 1 0 0 0 3. Solucionemos el siguiente sistema homogéneo: x + 3y − z = 0 y − 8z = 0 4z = 0 Paso 1. y luego construimos la matriz ampliada M4: A4=[1 3 -1. Utilizamos rref: S4=rref(M4) La solución al sistema es x = y = z = 0.

La sintaxis del comando es a=det(A).3. El desarrollo de la regla de Cramer parte de la matriz de coecientes y el vector de resultados: el procedimiento consiste en reemplazar el vector de resultados en las .4 2 1 ] b=[6. la solución del sistema Ax = b está dada por: x = Cb (3.2] Paso 2.3. Hallamos la inversa de la matriz de coecientes: C=inv(A1) Paso 3.5.6) Ejemplo 3.6667 3.1. Regla de Cramer La regla de Cramer usa el determinante de la matriz de coecientes para llegar a la solución del sistema 3. Solucionemos el siguiente sistema de ecuaciones por el método de la inversa: x + y + 2z = 6 3x + 2y + z = 3 4x + 2y + z = 2 Paso 1.Versión Preliminar Conociendo entonces la inversa de la matriz.3 2 1.6667 2. Establecemos la sintaxis para solucionar el sistema a partir de la inversa: x=C*b La solución al sistema de ecuaciones es: x = -1 1. Introducimos la matriz de coecientes y el vector de resultados correspondiente al sistema: A1=[1 1 2.1. MATLAB calcula el determinante a través del comando det.74 GEDEM .

. a2n . a=det(A) b=[6......2].. dA2=det(A2) A3=[A(:. am1 am2 . Paso 2. amn .SISTEMAS DE ECUACIONES 75 columnas de la matriz de coecientes formando matrices transformadas y calculando los determinantes de cada una de ellas.2:3)]. .y= a11 b1 a21 b2 ... . .A(:. b1 ... . bm . am1 bm a11 a12 a21 a22 .... y y z : x=dA1/a y=dA2/a z=dA3/a El programa muestra así los valores de cada variable que soluciona el sistema: la única solución de este sistema de ecuaciones. am1 am2 a11 a12 a21 a22 . Construimos las matrices trasformadas y calculamos su determinante: A1=[b. a2n . a2n . .. La solución al problema se obtiene al dividir los determinantes de las matrices transformadas sobre el determinnte de la matriz de coecientes así: x= b1 a12 b2 a22 .6. a1n ... . .. ahora por la Regla de Cramer. calculamos su determinante y luego.. .A(:. b2 .. .... .. .....1)... a1n . amn Ejemplo 3.. Calculamos el valor de x........ n = a11 a12 a21 a22 .1:2).. introducimos el vector de resultados: A=[1 1 2.b].. . a1n . . . . dA1=det(A1) A2=[A(:. amn . Paso 1.. a2n .3 2 1. dA3=det(A3) Paso 3. am1 am2 . a1n .. amn . . am1 am2 .b.. Solucionemos el Ejemplo 3..3)]. bm am2 a11 a12 a21 a22 . .5. Introducimos la matriz de coecientes. . a1n ..... a2n ...3.. amn . .4 2 1]..

es: x = U −1 y (3.2 Ax = b. por sustitución hacia atrás o mediante el método de la inversa.6667 3.2. para resolver el sistema 3. denimos un vector y = U x de forma que: (3.8 en la ecuación 3.76 GEDEM .7) Ly = b (3.Versión Preliminar x= -1 y= 1.10) MATLAB proporciona un comando que encuentra las matrices pertinentes a la factorización LU. Existen dos procesos para llegar a estas matrices: el primero de ellos es un método que permite descomponer una matriz de coecientes A de tamaño n×m. equivale a realizar un proceso de sustitución hacia atrás.8) Solucionar el sistema 3.1.6667 z= 2. si reemplazamos la ecuación 3.9) cuya solución.4. lo replanteamos como: LU x = b Asimismo. conocido como factorización LU. sólo se hagan operaciones básicas entre ellas. De esta forma.7 obtenemos el sistema: Ux = y (3. La sintaxis de esta rutina es [L. dado que la matriz L es triangular inferior.8. cuyo input es la . para llegar a la solución del sistema 3. en dos matrices invertibles: L (triangular inferior) y U (triangular superior) de la forma A = LU .U]=lu(A). donde L y U tienen las mismas dimensiones de A. Factorización de Crout o LU Existen métodos directos que descomponen la matriz de coecientes en otras matrices buscando que.

3.5000 0 1.y. siendo el vector x la única solución al sistema de ecuaciones: L= 0. Ejemplo 3.0000 0 0 U= 4. Introducimos la matriz A y el vector b: A=[1 1 2.2500 0.0000 1. Veamos en el siguiente ejemplo cómo trabajar con la factorización LU.5000 .0000 0.0000 0.7500 1.7.0000 1.U.0000 0 1. Solucionemos el sistema del Ejemplo 3.x.5000 2.5 por factorización LU: Paso 1.4 2 1] b=[6.10.SISTEMAS DE ECUACIONES 77 matriz de coecientes (A) y los resultados son una matriz triangular inferior y una matriz triangular superior. Las matrices L y U serán útiles para hallar los valores de los vectores x e y de las ecuaciones 3. Hallamos el valor de y : y=inv(L)*b Paso 4. Hallamos el valor de x: x=inv(U)*y La respuesta de MATLAB es L.7 a 3.U]=lu(A) Paso 3.0000 0 0 y= 2.2] Paso 2.3 2 1. Introducimos la sintaxis del comando para la matriz A: [L.2500 1.0000 1.

0000 1. En caso que la matriz no tenga esta característica recomendamos solucionar el sistema a través de la factorización LU. que soluciona un sistema de ecuaciones lineales al encontrar una matriz triangular superior U tal que U U T = A 3 .13) Para solucionar un sistema de ecuaciones mediante la factorización de Cholesky.Versión Preliminar 4. Así. Esta matriz es conocida como el factor de Cholesky o como la raíz cuadrada de A.11) UT y = b luego. 3 . a partir de la matriz de coecientes. obtenemos: (3.0000 x= -1. Ejemplo 3. la factorización de Cholesky permite reexpresar el sistema Ax = b de la forma: U T U x = U T (U x) = b Al resolver este sistema por sustitución hacia atrás. obtenemos la matriz U y resolvemos las ecuaciomes 3.8.5.13.12) Ux = b (3.12 y 3. similar a la factorización LU porque. Factorización de Cholesky El segundo proceso para descomponer la matriz de coecientes corresponde a la factorización de Cholesky. usamos el comando chol.6667 2.1. por sustitución hacia atrás: (3. cuya sintaxis es U=chol(A).78 GEDEM . Solucionemos el siguiente sistema por Factorización de Cholesky 9x + 2y + 4z = 0 6x + 3y + 3z = 0 5x + 4z = 0 Esta matriz debe ser simétrica y denida positiva para que el sistema tenga solución.6667 3.

Introducimos la matriz A y el vector b que componen el sistema.13 y despejamos el vector x: x=inv(U)*y El programa nos mostrará la matriz U. Estos métodos son especialmente buenos cuando los sistemas tienen un gran número de incógnitas y son difíciles de resolver. Paso 2.3333 1. Calculamos el vector y despejando de la ecuacisn 3.12: y=inv(U’)*b Paso 4. es decir. Métodos Indirectos o Numéricos Los métodos indirectos o numéricos estan diseñados como una secuencia de operaciones que busca encontrar resultados aproximados a la solución de un sistema de ecuaciones lineales.6667 1.2. el vector y y x.6916 3.0].3206 0. A=[9 2 4. b=[0.5986 0 1. .0000 0 0 y= 0 0 0 x= 0 0 0 0.6 3 3.5 0 4]. Reemplazamos el vector y en la ecuación 3. el vector solución del sistema: U= 3. Calculamos el factor de Cholesky utilizando el comando chol: U=chol(A) Paso 3.0.SISTEMAS DE ECUACIONES 79 Paso 1. si la matriz de coecientes y el vector de resultados presentan características particulares.

a través de un proceso iterativo.14) La ecuación 3. queremos encontrar una sucesión de vectores xk que solucionen el sistema 3. en todos los procesos iterativos que se utilizan para resolver sistemas de ecuaciones lineales de la forma Ax = b se utiliza una matriz Q.2. y un número máximo de iteraciones M . Nuestro objetivo es escoger una matriz Q de manera que se calcule fácilmente la sucesión xk y que. dado que x es un vector.Versión Preliminar En general. Matrices Débilmente Condicionadas En los procesos que veremos adelante existe un riesgo.80 GEDEM . por lo general.14.1. . además.14 sugiere un proceso iterativo o regla de iteración que se expresa como: Qxk ⇐ (Q − A)x(k−1) . En este caso. es mayor o igual a 10. estableceremos dos criterios de convergencia que se deberán satisfacer simultáneamente: 1. que permita llegar a la solución más rapidamente. se toma como aproximación inicial la nula o. converja rápidamente a la solución. donde xm = M ax{xi } y α es un número determinado por el investigador que. relacionado con la existencia de sistemas de ecuaciones que presentan matrices de coecientes en las cuales una 4 Este resultado se obtiene al sumar el término Qx a ambos lados de la expresión Ax = b.. en otras palabras. es necesario establecer un vector inicial de valores para x0 . k > 1 En esta regla de iteración. aquella en la que x01 = x02 = . x(k) −x(k−1) xk xm −xm (k) xm (k) (k−1) ≤δ δ ≤ α . escogida de tal forma que el problema original se pueda reescribir como4 : Qx = (Q − A)x + b (3. Nuestro objetivo es presentar dos métodos iterativos para solucionar sistemas de ecuaciones lineales: Gauss-Jacobi y Gauss-Seidel. llamada matriz de descomposición. 3. que puede ser arbitrario pero. comúnmente. En este proceso. La precisión es mayor en cuanto α tenga valores más altos.. = x0n = 0. En todo método iterativo es importante especicar un criterio de convergencia δ . 2.

MATLAB dene un valor inicial arbitrario para el vector x. utiliza una matriz de descomposición Q que debe ser diagonal7 y cuyos elementos corresponden a los de la diagonal principal de A.2. denimos el valor de x como la suma entre el valor inicial y la distancia encontrada. o plantear transformaciones sobre la matriz original. como los ejercicios planteados parten de matrices que no tienen esta característica. resuelve el sistema de ecuaciones de la forma Ax = b. el programa va acercando el valor inicial de x a la solución del problema. es decir. Para hacerlo. 3. Después. utilizando una serie de operaciones repetidas que se valen de la matriz de descomposición como parámetro de convergencia. muy útil cuando A es dispersa.14. es decir cumple: n 5 |Aii | > i=1 i=j |Aij |∀i Las matrices diagonales son aquellas que sólo tienen elementos diferentes de cero en su diagonal principal.2. aunque tanto los ejercicios propuestos. genera grandes cambios en el vector solución. que se encuentra a una distancia δx del vector de variables que solucionan el sistema. El número de operaciones está limitado por la rapidez a la que la norma del vector δx se acerque Para observar la deducción matemática del método y su regla de iteración. Gauss-Jacobi El método de Gauss-Jacobi5 . en tales casos recomendamos utilizar el máximo nivel de precisión del computador. recomendamos ver el apéndice de este capítulo. Como la regla de iteración esta determinada por la matriz de descomposición. es de esperar que haya casos en los cuales la existencia de matrices débilmente condicionadas hagan que la utilización de métodos numéricos sea ineciente. La regla de iteración para este método es: Qxk ⇐ (Q − A)x(k−1) + b Esta ecuación es una transformación de la regla de iteración general denida por la ecuación 3. 7 . la distancia es entonces el cociente entre la ecuación lineal igualada a cero y la matriz de descomposición. 6 Una matriz diagonal dominante es aquella en la cual todos los elementos de la diagonal son mayores al resto de los elementos de la matriz. sólo si la matriz de coecientes A es diagonal dominante6 .SISTEMAS DE ECUACIONES 81 pequeña variación de alguno de sus componentes.

5y + 8z = 8. Por ende. Establecemos la programación de las operaciones que realizará el programa para llegar a una solución. que va de 1 hasta n.82 a un número positivo. Paso 2. Solucionemos el siguiente sistema de ecuaciones normales.0. En este caso. el vector respuesta b.1. para saber cuál es el número de veces que iteró el programa.8. y un vector solución inicial para que el programa empiece a iterar a partir de él. esto sugiere que se ha llegado a una solución en la cual b − Ax = 0. GEDEM . Ejemplo 3. presentamos las operaciones a repetir y la condición para que MATLAB se detenga al llegar a una solución: for it=1:1600 dx=(b-A*x).end end Aquí it=1:n determina el número de veces que se repite esta operación. determinamos el número de veces que debe repetirse el procedimiento.0]. x=[0. utilizamos el vector nulo: A=[2 0 1. Que la norma del vector sea cero implica que todos los valores de δx son positivos y se aproximan a cero. digitamos it y luego enter.9.345.1 2 0.break./Q x=x+dx if norm(dx)<tol. 8 .0 0. se recomiendan más de 1510. Creamos la matriz Q.Versión Preliminar El número de repeticiones puede ser establecido por el usuario y existen casos en donde el número de iteraciones propuestas no son sucientes.5 8].76]. recomendamos utilizar un número de iteraciones alto. A partir del comando for. muy cercano a cero8 . En este ejemplo tomamos n = 1600. haciendo la programación del método de Gauss-Jacobi: 2x + z = 5 x + 2y = 1.345 0. b=[5. Denimos la matriz de coecientes A.76 Paso 1. a partir de la diagonal de la matriz de coecientes: Q=diag(A) Paso 3.

10. Para este ejemplo. cercano a cero. Gauss-Seidel La iteración de Gauss-Seidel9 establece la matriz de descomposición Q como la parte triangular inferior de A incluyendo los elementos de la diagonal. En esta salida aparecen todas las operaciones que hace el programa antes de llegar a una solución. en otras palabras.SISTEMAS DE ECUACIONES 83 tol es un número muy pequeño. 9 . Solucionemos un sistema de ecuaciones cuya matriz de coecientes es diagonal dominante y dispersa: x+z =7 5x + 2y = 4 8z = 2 Para observar la deducción matemática del método y su regla de iteración vea el apéndice matemático de este capítulo. el valor máximo que puede tomar la norma de δx.3.2. menos iteraciones de las ya establecidas. el más pequeño que el software reconoce es sqrt(eps). quizá. el número más grande que sumado a uno da uno). que equivale a la raíz cuadrada del valor de punto otante del programa (es decir. que sirve para establecer el nivel de tolerancia de la solución o.9432 -0. Si MATLAB no entrega la respuesta. La regla de iteración para este método es: Qxk ⇐ (Q − A)x(k−1) + b Aunque la regla de iteración es idéntica a la del método Gauss-Jacobi. la matriz de descomposición no es la misma. A tol se le puede asignar el valor que deseemos.2991 1. bien puede necesitar un mayor número de iteraciones o bien. Veamos en el siguiente ejemplo la diferencia entre este y el método anterior: Ejemplo 3. la solución del sistema es entonces: 1. no obstante.1137 3.

0 0 8].0000 -15. b=[7.5000 0. la regla de iteración y la condición para que el programa se detenga y entregue una solución: tol=sqrt(eps). Denimos la matriz de coecientes A y el vector de resultados b: A=[1 0 0. Resuelva los Ejemplos 3.2 a 3. Paso 2. Solucione Ax = b donde: . Creamos la matriz Q a partir de A. Paso 3. el número de iteraciones y programamos las funciones del método.5 2 0. x=[0.4. x=x+dx if norm(dx)<tol. end end El resultado de la operación.7 utilizando: a) Factorización LU b) ¾Es posible solucionar estos problemas utilizando Cholesky? 2.2500 Ejercicios 1.2].0].84 GEDEM .Versión Preliminar Paso 1. es decir la solución. Especicamos el límite de tolerancia. break. es el vector x: 7. dx=Q\(b-A*x).0. n=1600. for it=1:1600. recordemos que Q debe ser triangular inferior: Q=tril(A).

el sector Z produce zanahoria y el sector A.5 1 7 25 −2 17. 30 unidades de la mercancía 3 y 42 unidades de la mercancía 4. 786. La rma 3 ofrece 43 unidades de la mercancía 1 y 12 unidades de la mercancía 4.15) De la misma forma es posible representar la oferta de este producto por medio de una función de la forma: Qo = 100 + 5p (3. La economía de una ciudad posee dos sectores. La demanda por cierto producto está representada por medio de una función lineal de la forma: Qd = 200 − 5p (3. 4. La rma 1 ofrece 83 unidades de la mercancía 3 y 19 unidades de la mercancía 4.SISTEMAS DE ECUACIONES 85 A= 27 7 −5. La rma 2 ofrece 58 unidades de la mercancía 2. Por último. y 624 unidades monetarias. acero. Cada rma debe alcanzar una meta de ingresos especíca: 943.5 11 1 17.5 −2 27. 554. respectivamente. ¾Cuáles son los precios óptimos para que todas las rmas alcancen su meta de ingresos? 5.16) Utilice un método directo y un método numérico para hallar el precio y la cantidad de equilibrio de mercado de este producto. Para producir .5 b= 1 1 1 1 a) Utilizando descomposición LU b) Gauss-Seidel c) Gauss-Jacobi ¾Cuál procedimiento realiza más iteraciones? 3.5 11 47.5 −5. la rma 4 ofrece 48 unidades de la mercancía 3 y 67 unidades de la mercancía 4. Considere el caso de una economía cuya oferta esta compuesta por cuatro rmas que ofrecen cantidades diferentes de cada mercancía y son precio-aceptantes. Para producir una unidad de zanahoria se necesita 30 % de una unidad de zanahoria y 40 % de una unidad de acero.

los más importantes son: Helados. Figura 3.3 y replantee el problema de la forma AT Ax = AT b.Versión Preliminar una unidad de acero. para ellos. 8. Considere el sistema de ecuaciones del ejemplo 3. sería mucho mejor si escogen el local en la calle con mayor ujo vehicular. Cada uno de estos productos debe pasar por .86 GEDEM . Una empresa de alimentos elabora varios productos. y D. se necesita 50 % de una unidad de zanahoria y 30 % de una unidad de acero. Pasteles de Carne. expresado como un sistema de ecuaciones lineales. El modelo de vías con sus direcciones está indicado en la siguiente gura. ¾Cuántas tienen sentido?. Emparedados de Cordero y Emparedados de Pavo. x3 y x4 . b) ¾Usted que calle escogería para ubicar el local? Explique. Ponqués.Explique. Una empresa desea ubicar uno de sus puntos de venta en una manzana ubicada en una zona exclusiva de la ciudad. 7. ¾A qué resultado llega?. sin embargo. es decir sobre x1 . en la cual se señala el número de vehículos que circulan en una hora y pasan por las intersecciones A. ¾Cuáles son las cantidades de acero y zanahoria que hay que producir para satisfacer las demandas nales? 6.1: Modelo de vías Determine el ujo vehicular por hora sobre cada calle. Pasteles de Pollo. C. Represente esta situación como un ejemplo del Modelo de Leontief y resuelva la ecuación de este modelo. Las demandas nales son 50 unidades de zanahoria y 80 de acero. a) ¾Cuántas soluciones existen?. x2 . B.

¾Cuántas unidades se pueden producir si.18) . 3. 2. 5. 5.17) Qxk = Rx(k−1) + b (3.3. Una unidad de Helado requiere de 3. 1. Empaque y Distribución. Siguiendo la presentación del método de Richardson en el apéndice: a) Solucione uno de los sistemas de ecuaciones presentados en este capítulo describiendo la programación de este método en un M-le. una unidad de Pastel de Carne de 5. 4 y 3. Prueba de Calidad. 2. 3. 8. 3 y 2 horas en cada etapa del proceso. 2950 en Almacenamiento.14: Qx = (Q − A)x + b Esta regla cambia según la propiedad de cada método iterativo. dadas las características de las empresa.? 9. Almacenamiento. evidente en la ecuación 3. una unidad de Ponqué requiere 4. 2380 en Prueba de Calidad. 2. 8.3. 4. 2990 en Elaboración. se disponen de 2970 horas en Compra a Proveedores. Elaboración. 4. 4. 3 y 4 y un Emparedado de Pavo 2.1.17 se reexpresa como: (3. 2. 4. 4 y 5. 2 y 4. 2. 2350 en Empaque y 2350 en Distribución. Los métodos iterativos presentados en este capítulo parten de una matriz de descomposición. b) ¾Cuántas iteraciones realizó su programa? 3. Gauss-Jacobi En el método de iteración de Gauss-Jacobi. 3. la ecuación 3. 4. un Emparedado de Cordero 3.14 puede escribirse como: Qxk = (Q − A)x(k−1) + b si denimos una matriz R = (Q − A). 3. 4.SISTEMAS DE ECUACIONES 87 cada una de las seis etapas de producción de alimentos Compra a Proveedores. una Unidad de Pastel de Pollo 4. Apéndice El uso de métodos iterativos para la solución de un sistema de ecuaciones lineales parte de la regla de iteración denida mediante la transformación del sistema Ax = b. la ecuación 3. 2.

− an1 xn )/a11 x2 = (b2 − a12 x1 − a32 x3 − . para un elemento i cualquiera.19 y.Versión Preliminar El producto de la matriz Q por el vector columna x(k) es un vector columna. . podemos eliminar el término i = j de la sumatoria del segundo miembro. ... Mas aún.21) que es la expresión que nos proporciona las nuevas componentes del vector xk en función del vector anterior x(k−1) en la iteración de Jacobi. − ann xn )/ann Partimos entonces de una aproximación inicial para las soluciones al sistema de ecuaciones y sustituimos estos valores en la ecuación 3. . reemplazar sucesivamente hasta que la solución converja. lo que dejaría la ecuación 3.19 de la forma: (k) aii xi n = j=1 j=i aij xj (k−1) + bi (3. de esta misma forma. = .. en el primer miembro el único término no nulo de la sumatoria es aquel que contiene el elemento diagonal qii. xn = (bn − a1n x1 − a2n x2 − . .19) Si tenemos en cuenta que en la matriz Q todos los elementos fuera de la diagonal son cero. − an2 xn )/a22 .19 para generar una nueva aproximación a la solución del sistema que. el método de Gauss-Jacobi se basa en reescribir el sistema de ecuaciones de la forma: x1 = (b1 − a21 x2 − a31 x3 − . asimismo..20) de donde. el producto de la matriz R por el vector columna x(k−1) es también un vector columna. La ecuación vectorial 3.. es mejor que la aproximación inicial.18 se puede expresar mediante n ecuaciones escalares (una para cada componente del vector). que es precisamente aii.. Esta nueva aproximación se puede sustituir de nuevo en la parte derecha de la ecuación 3. despejando xi k . En resumen. debido a que los elementos de la diagonal de R son cero. bajo ciertas condiciones.88 GEDEM . obtenemos: n xi (k) = (bi − j=1 j=i aij xj (k−1) )/aii (3. se cumple la siguiente expresión: n j=1 qij xj (k) n = − j=1 rij xj (k−1) + bi (3. . de modo que.

23) Si tenemos en cuenta la composición de las matrices Q y R.27: . denimos la matriz R = Q − A.3. del vector Qxk esta determinado por la ecuación: n j=1 (k) aij xj n =− j=1 aij xj (k−1) + bi (3. Planteamos entonces: i j=1 (k) aii xi i−1 (k) aij xj n =− j=i+1 aij xj n (k−1) + bi (3.2. mientras que en el método de Jacobi todas las componentes nuevas del vector se calculan antes de llevar a cabo la sustitución. x2 .24) + j=1 (k) aij xj =− j=i+1 aij xj (k−1) + bi (3.. Método de Richardson Este procedimiento toma como matriz Q a la matriz identidad (I).14 se reescribe de la forma: Qxk = Rx(k−1) + b (3. i. xi−1 .23 son nulos.SISTEMAS DE ECUACIONES 89 3. despejando xi k .26) Observemos que en el método de Gauss-Seidel los valores actualizados de xi sustituyen de inmediato a los valores anteriores. Gauss-Seidel Tal como en el caso anterior. . En el método de Gauss-Seidel los cálculos deben llevarse a cabo en orden porque el nuevo valor xi depende de los valores actualizados de x1 . obtenemos: xi (k) i−1 = (bi − j=1 aij xj − j=i+1 (k) n aij xj (k−1) )/aii (3. mientras que en la parte derecha son nulos todos los sumandos para los que j < i.3.19 es ahora: Ixk = (I − A)x(k−1) + b = x(k−1) + r(k−1) (3. todos los sumandos para los que j > i en la parte izquierda de 3.25) de donde.27) donde r(k−1) es el vector residual denido mediante r(k−1) = b − Ax(k−1) .3. de modo que la ecuación 3..22) Donde un elemento cualquiera.. Replanteemos la ecuación 3. 3. de manera que la ecuación 3.

Versión Preliminar xk = x(k−1) − Ax(k−1) + b = x(k−1) + r(k−1) (3.90 GEDEM .29) .28) en esta ecuación. un elemento cualquiera del vector r(k−1) vendra dado por la expresión: (k−1) ri xi n = bi − i=1 aij xj (k−1) (3.

Parte II CÁLCULO 91 .

.

Por tanto. Una vez denido el espacio. que pueden ser funciones o correspondencias. El álgebra lineal permite construir espacios vectoriales que cumplen con ciertas propiedades (cerradura bajo la suma y bajo la multiplicación por escalar). 93 . conocer los métodos para analizar una función y su planteamiento computacional. En general. así como los cambios que se generan en ella cuando se modican parámetros. Sin embargo. la relación que tiene la acumulación de factores con el crecimiento económico. sobre éste se pueden construir relaciones. no es posible realizar un análisis gráco cuando las funciones tienen más de tres variables. En particular.Capítulo 4 Funciones Norma Gómez. con el objetivo de aplicarlos a la solución de problemas económicos. Este último es el propósito de los capítulos 5 y 6. y este tipo de relaciones se pueden representar mediante funciones. En la primera sección de este capítulo se estudia el concepto de función univariada. en este capítulo se muestra la manera en que podemos utilizar MATLAB para analizar grácamente las propiedades de una función. por lo que es necesario utilizar el cálculo diferencial e integral para estudiar las propiedades de cualquier función. como por ejemplo. es útil para abordar problemas económicos. Este capítulo junto con los dos siguientes tienen como objetivo utilizar herramientas computacionales para el análisis de funciones denidas en espacios vectoriales. y la manera en que podemos gracarla en MATLAB para analizar sus propiedades. algunas variables económicas pueden afectar el comportamiento de otras. Norman Maldonado En la primera parte del libro abarcamos los conceptos básicos de álgebra lineal y el planteamiento computacional de estos en MATLAB .

es una relación que asigna a cada elemento x ∈ X exactamente un elemento y ∈ Y . utilizamos el concepto de curva de nivel para visualizar grácamente los conjuntos contorno de una función de dos variables. 4. Se dice que y es la imagen de x y se notará como f (x). Paso 2.1. visualizamos la función y añadimos características a los grácos. establecemos los valores de la variable de salida en . En particular. colores. es decir. una función de una variable se caracteriza porque cada elemento x ∈ X es un escalar. Así. nombres de los ejes. Por un lado. tales como títulos. cuando cambia el valor de alguno de sus parámetros (simulaciones). realizamos el mismo análisis para funciones con dos variables. se puede crear un m-file en donde se dene la forma de la función.1. ya que este es un conjunto no acotado. se siguen tres pasos: Paso 1. Por la naturaleza numérica del método gráco. 4. entre otros. Por otro lado. En la segunda sección. El dominio (o conjunto de salida) de f es el conjunto X y su recorrido (rango o conjunto de llegada) consta de todas las imágenes f (x) de los elementos x ∈ X . Crear los datos. Finalmente. Una función en MATLAB se puede denir de dos maneras distintas. Visualización de funciones de una variable Para visualizar una función univariada f (x) en MATLAB . respectivamente. estas funciones tienen como conjunto de salida a R y como conjunto de llegada a R (f : R R). La tercera y cuarta sección explican cómo visualizar el cambio de funciones de una y dos variables.1. También. se puede utilizar el comando inline. establecemos las herramientas que ofrece MATLAB para añadir algunas características adicionales al gráco de la función. Funciones de una Variable Una función f de un conjunto X ⊆ R en otro Y ⊆ R (f : X Y ). Crear la función. presentamos el concepto matemático. Por esto. la última sección estudia con estos métodos algunas funciones económicas importantes. no podemos visualizar la función a lo largo de todos los reales. que permite crear cadenas de caracteres con las que se puede representar la forma funcional.Versión Preliminar Además.94 GEDEM .

^3-4*x. e y es un vector que contiene las imágenes de la función para cada valor de x. Por ejemplo. En primer lugar. Para ello. la programación de los pasos 2 y 3 se colocará en m-files nombrados de la forma pejc#. y los marcadores que se colocarán en cada punto. Para los ejemplos del libro. En general. donde f (x) = x3 − 4x2 + 6.’r+:’) graca los vectores x e y con una línea de color rojo (r) punteada (:) y coloca marcadores (+) en cada uno de los puntos (xi . yi ). En la segunda línea se especica la forma funcional. El comando plot permite especicar el color y tipo de la línea que se va a usar. Así. y yi es el elemento i del vector y. donde xi es el elemento i del vector x. abrimos un m-file en MATLAB y escribimos la función de la siguiente forma: function f=ffej0(x). Utilizar el comando plot de MATLAB para gracar. Para ilustrar estos pasos veamos la función f : [−2. donde f indica que es una función. Es importante aclarar que los Pasos 2 y 3 se deben programar en un m-file diferente al m-file en donde se creó la función. los m-files que contienen la función (Paso 1) se nombrarán de la forma fejc#. Paso 3.y. f=x. Este m-file debe ser guardado con el nombre que se asignó a la función. que en este caso es ffej0. recordemos del capítulo 2 que el operador punto que se . plot une con una línea los puntos generados por cada par de elementos (xi . Este comando tiene la sintaxis plot(x. Así. Además. y pejc es su programación o script. fmej3 indica una función (f) utilizada en el capitulo de matrices y vectores (m) en el tercer ejemplo (3).y. generamos numéricamente las imágenes de la función en el dominio. donde x es un vector que contiene los valores del dominio denido en el Paso 2. el tipo de línea y el marcador a utilizar.^2+6.FUNCIONES 95 los que se quiere visualizar la imagen de la función. donde s es una cadena de caracteres que especica el color.y). la sintaxis plot(x. 5] R. Por último. Similarmente. la sintaxis de este comando es plot(x. c el capítulo correspondiente y # el número del ejemplo. yi ). En la primera línea se dene la función ffej0 que tiene como entrada el vector x y como salida el vector f.s). debemos crear la función. utilizando la función que creamos en el Paso 1. ej ejemplo. Esta rutina sólo es útil para funciones univariadas.

-1.Versión Preliminar utiliza en la segunda línea sirve para realizar operaciones elemento a elemento. En MATLAB .1:5]. Como resultado. separados entre sí en 0..1 unidades (-2. utilizando f creada con inline: x=[-2:0.96 GEDEM . MATLAB nos permite dibujar la función por medio de la sintaxis plot(x. en un nuevo chero que llamaremos pej0.^3 toma cada elemento del vector x y lo eleva a la potencia 3..a). en donde creamos los valores de x e y utilizando la función ffej0 así: x=[-2:0. o. 4. En este caso. la instrucción crea un objeto f que contiene la cadena de caracteres x. y añadiendo algunas características adicionales que explicaremos más adelante. y=ffej0(x.1 en una nueva ventana de guras (Figure Window). El vector x contiene valores entre -2 y 5.5]. En MATLAB podemos crearla de la siguiente forma: f=inline(’x. es crear los datos. debemos denir estos valores para x y f(x).9. Ya que el ejemplo nos indica que la función va de los números reales en el intervalo [-2. -1.^2+6 y que por su estructura recibe los valores de un vector x. es decir y=f(a. Para ello.. en x. se introducen los inputs en el orden especicado en el m-file. MATLAB muestra el gráco de la Figura 4. creamos los valores de la variable de salida x.^3-4*x. El siguiente paso. no debe ser programada en un m-file independiente. 5). f=a*x. en el cual la función Para crear las imágenes con un m-file de la forma function f=ffej0(x.x).1:5]. y=f(x). 1 . El comando inline también permite especicar una función. a diferencia de la que acabamos de crear. abrimos un nuevo m-file.8. Esta función.9. y=ffej0(x). Veamos a continuación otro ejemplo. en el momento de utilizarla para crear las imágenes es necesario introducir los inputs en orden alfabético.a).y). expresándola como una cadena de caracteres. por ejemplo. y luego utilizamos alguna de las funciones creadas en el paso 1 para generar los valores de las imágenes f(x).^3-4*x. es decir. y el vector y contiene las imágenes de la función en este intervalo1 .. Luego de crear los datos. Utilizando una función de la forma f=inline(’a*x’). a los números reales.^2+6’). sino en el mismo en donde se colocará la programación de los otros pasos. una vez creada la función.

o. que llamaremos pej3: x=[0.8:0. En un m-file llamado ffej1: function f=ffej1(x). de aquí en adelante todas las funciones se crearán en m-files en vez de utilizar la instrucción inline.1. y=ffej1(x).’r+-’) . Por simplicidad. Crear los datos. Recordemos que en el caso de utilizar inline la función debe ser creada en el mismo m-file de los pasos 2 y 3. f=4./((x-1).y. plot(x. Gracar f (x) = 4 (x−1)2 en el conjunto de salida X = [0. Paso 3.^2)’). En un m-file.25]./((x-1).8.01:1.1: Función Cúbica presenta discontinuidades. Paso 2. % Conjunto de Salida o Dominio % Conjunto de Llegada o Rango En caso de utilizar la función inline f. 1.25]. Crear la función. sólo se debe modicar la segunda línea de la forma y=f(x). Ejemplo 4. Paso 1. Gracar la función. utilizando inline f=inline(’4.FUNCIONES f(x) = x3 − 4x2 + 6 40 97 30 20 f(x) 10 0 −10 −20 −2 −1 0 1 2 3 4 5 x Figura 4.^2).

/ Paso 1.05 1.85 0. la función f es igual a 0 = ∞. y este es denido en MATLAB de tal forma que la función nunca toma esos valores.9 0. Usamos la función creada en el m-file ffej1: Paso 2.5 0 0.Versión Preliminar Como resultado se obtiene una gráca de la función de color rojo (r). Cuando las funciones son discontinuas para ciertos valores del dominio.2 1. En nuestro ejemplo.8:0. y los representa como inf. la gura cambia considerablemente. obtenemos la Figura 4. Gracar f (x) = 4 (x−1)2 con x=[0.5 3 2.1 1. de tal forma que 1 ∈ x y ∞ ∈ y.95 1 1.5 1 0. Veamos qué ocurre con nuestra función cuando 1 no pertenece al dominio.8 0. ∞ ∈ y. x 10 4 4 f(x) = 4/(x−1)2 3. Ejemplo 4. por lo que ∞ no hace parte del rango o conjunto de llegada. En este valor de x.25]. la función toma el valor de inf. Cambiamos el espaciamiento entre los valores del conjunto de salida: .2. Crear la función. podemos ver que en la posición 21 del vector y.013:1.25 x Figura 4.2: Función Discontinua en x=1 Para que esto se observe en la gráca fue necesario denir los elementos del dominio separados por 0. Observemos que esta función presenta 4 una discontinuidad cuando x = 1.98 GEDEM .2. Crear los datos.15 1.01 unidades.5 f(x) 2 1. Añadiendo algunas características al gráco. con línea segmentada (-) y con marcadores (+) en cada punto. MATLAB permite trabajar con valores iguales a ∞.

el programa utiliza por defecto el color azul (b). ciertas fuentes para los títulos. 2 .95 1 1.8 0.’ o-’) x 10 4 f(x) = 4/(x−1)2 16 14 12 10 f(x) 8 6 4 2 0 0.2 El resultado es la Figura 4.3. Gracar la función. las imágenes de los dos puntos más cercanos a 1 generando la gráca de una función aparentemente continua.15 1. Por eso se recomienda siempre asegurarse de incluir en el vector x los valores del dominio donde la función es discontinua. Imagenes Paso 3.1. % Conjunto de Salida o Dominio y=ffej1(x).05 1. El comando plot une con una linea. con línea continua (-) y con marcadores (o) en cada punto.9 0.85 0. sino que tomó valores muy cercanos a 1 (0. como ocurre en esta gura ( ).013:1. para el cual la imagen era ∞.25]. En esta gura. Opciones adicionales para los grácos Hemos observado que las diferentes grácas que han aparecido a lo largo del capítulo tienen ciertas características en los ejes.FUNCIONES 99 x=[0. cuya imagen es diferente a ∞.25 x Figura 4. la función parece ser continua. determinados Cuando no se especica un color.1 1. en donde la función se graca con color azul2 . en la zona de la discontinuidad.9950 y 1. 4. plot(x.2 1.y. Las otras opciones que utiliza por defecto son línea continua (-) y ningún marcador.3: Ejemplo 4.8:0.0080). Esto se debe a que la variable x no tomó el valor de 1.2. % Conjunto de Llegada.

Todos estos aspectos pueden ser programados en MATLAB .2. y a continuación se explicará la manera de modicarlos. text(x. 3 Ver Cuadro 1. Cuando estos no son vectores sino matrices de igual tamaño.z).. la cadena de caracteres debe aparecer en color rojo oscuro.z. legend(’Leyenda’): coloca la cadena de caracteres Leyenda como etiqueta o rótulo de los elementos de un gráco. es necesario especicar coordenadas (x. MATLAB dibuja una línea por columna. Con múltiples elementos.100 GEDEM . ylabel off. donde x e y son vectores de la misma longitud y los puntos de la linea son las coordenadas que forman estos vectores componente a componente.. También se puede colocar texto en formato TEX colocándolo seguido de  \. zlabel(’Z’): coloca la cadena de caracteres Z como etiqueta del eje z. Su sintaxis es line(x.y). Para grácos en 3 dimensiones.Versión Preliminar colores de línea. y desaparece con grid off. La instrucción num2str(a) convierte el valor numérico a en una cadena de caracteres3 . Con grácos en tres dimensiones. line: crea líneas. el texto se repite en cada par de elementos (xi .y.. En la instrucción. zlabel off: quita la etiqueta de los ejes x. ylabel(’Y’): coloca la cadena de caracteres Y como etiqueta del eje y. en grácos de tres dimensiones.y. Para colocar valores de una variable en algún texto se necesita convertirlos primero en cadenas de caracteres. Cuando x e y son vectores.z. texlabel: crea texto en formato TEX. Puede introducirse escribiendo grid on. xlabel off.’Texto’): ubica la cadena de caracteres Texto en las coordenadas (x. grid: crea una malla o cuadrícula en los grácos. yi ). xlabel(’X’): coloca la cadena de caracteres X como etiqueta del eje x.y. respectivamente. ya sean líneas. o posiciones de las guras.y). . title(’Titulo’): añade la cadena de caracteres Titulo en la parte superior del gráco. se deben especicar vectores (o matrices) x.). barras u objetos. la sintaxis es legend(’leyenda1’.’leyenda2’.y.

La instrucción axis on activa los ejes en un gráco. axis ij. c el número de columnas e i es el número de la subventana que quedará activa.i). donde r es el número de las en que se divide la ventana. coloca el origen en la esquina superior izquierda y crea dos ejes i y j. subplot: divide la ventana de guras en las y columnas. Para grácos de dos dimensiones.c.el): especica la rotación de un gráco en tres dimensiones para observar la gura desde un ángulo distinto. y axis off los oculta. . y MATLAB mostrará los valores de az y el de la gura que esté abierta en ese momento. Con el comando axis square los ejes forman un cuadrado (o un cubo). vertical y horizontal respectivamente. con un acimut de 0. En su sintaxis. Algunos comandos colocan rangos predeterminados para los ejes. extendiendo la sintaxis a axis([xmin xmax ymin ymax zmin zmax]). el valor máximo sobre el eje x (xmax). se usa el comando axis normal. el programa coloca la misma escala a todos los ejes. Para restaurar los valores predeterminados de los ejes. crea un par de ejes cuyo origen está en la esquina inferior izquierda (sistema cartesiano tradicional). az representa el acimut (azimuth en inglés) o ángulo horizontal de rotación.el]=view. La sintaxis es subplot (r. y su valor máximo (ymax). Los valores de i van de arriba a abajo y los de j de izquierda a derecha. Para observar el ángulo en el cual se está viendo una gura se utiliza la sintaxis [az. y una elevación de 90◦ . el valor mínimo de las imágenes de la función en el eje y (ymin). Con la instrucción axis equal.5 y una elevación de 30. mientras que view(3) genera una vista con un acimut de -37. axis auto ja los ejes automáticamente según el dominio de la función. Cuando el gráco es de tres dimensiones. La sintaxis es axis([xmin xmax ymin ymax]). Por ejemplo.FUNCIONES 101 axis: controla la escala de los ejes que se introducen en el gráco. es necesario incluir las coordenadas de los valores mínimo y máximo que tomará el eje z (zmin y zmax). El comando view(2). recibe como entrada un vector de cuatro componentes: el valor mínimo del dominio sobre el eje x (xmin). y el es el ángulo de elevación vertical (medidos en grados). genera la vista de la gura en dos dimensiones sobre el plano cartesiano. axis xy. view(az.

bold). entre otras. a la izquierda (left) o en el centro (center). A continuación explicaremos algunas propiedades de los objetos. itálica y oblicua respectivamente. x square diamond v ^ > < pentagram hexagram none). tipo.centimeters. demi. y ’k’ para negro.’. cambia la fuente del texto. la alineación horizontal (horizontalalignment) que tiene como opciones alinear a la derecha (right). fontname. ’c’ para azul verdoso. centimetros . ’r’ para rojo. el tamaño. puntos . normal. line: las opciones que comienzan con line. y con este nombre se pueden modicar sus propiedades. que generan tipos de letra normal. marker: las opciones que comienzan con marker. hacen modicaciones sobre el texto. línea segmentada ’-’ y línea con punto ’-. linewidth modica la amplitud o grosor de la línea del objeto (por defecto es 0. en el medio (middle) y abajo (bottom). el título de un gráco es un objeto que tiene como características. font: las opciones que comienzan con font. italic. entre las opciones normal. alignment: existen dos comandos que modican la alineación de los objetos. Por último. MATLAB almacena el objeto Titulo con el nombre ts. ’y’ para amarillo. línea punteada ’:’. Al colocar la instrucción ts=title(’Titulo’). Por ejemplo. ’g’ para verde. Cada objeto en una gura tiene características o propiedades que se pueden modicar sólo si el objeto recibe un nombre. marker especica algún tipo de marcador (+ o * . y la alineación vertical (verticalalignment) que puede ser arriba (top). fontunits especica la unidad en la que se mide el tamaño de la letra (pulgadas . ’m’ para magenta. color: permite realizar cambios en el color de un objeto. hacen modicaciones sobre los marcadores del objeto. fontsize cambia el tamaño de la letra. la subventana en donde se gracarán las instrucciones inmediatamente posteriores. markersize . fontangle cambia el grado de inclinación de las letras del texto. grosor e inclinación de la letra.inches.102 GEDEM .points o pixeles pixels). MATLAB identica la mayoría de los colores con su inicial en inglés: ’b’ para azul. fontweight permite cambiar el grosor en el tipo de letra (light. linestyle modica el estilo de la línea de un objeto. hacen modicaciones sobre las líneas del objeto. y oblique. Tiene como opciones línea continua ’-’.5).Versión Preliminar es decir.

x2 . Este producto genera como resultado una serie de parejas ordenadas de la forma (xi . Crear la función fej(X. yn ). Dados los conjuntos x = (x1 . por lo que estas funciones tienen como conjunto de salida a R2 y como conjunto de llegada a R (f : R2 R).’v’) MATLAB asigna el valor v a la propiedad p del objeto ob. El primero muestra las propiedades del objeto. 4. 4 . x. mientras que markerfacecolor asigna el color de relleno (en marcadores que son poligonos cerrados. Funciones de dos variables A diferencia de una función de una variable. 4. . el dominio sobre el cual se dene la función f (x. La instrucción get(ob) el programa muestra la conguración actual de las propiedades del objeto ob. Con la instrucción set(ob. . y ∈ R). .’p’. los vectores los denotamos con minúsculas mientras que las matrices con mayúsculas. Crear los datos.FUNCIONES 103 indica el tamaño del marcador. xn ).Y). se utilizan los comandos get y set. en cada uno de los siguientes ejemplos se modicarán las opciones de algunos objetos. Para ilustrar estos comandos. mientras que con la instrucción set(ob) muestra las opciones disponibles para cada propiedad del objeto. markeredgecolor asigna el color del borde del marcador. Así. Visualización de Funciones de dos variables Comencemos por retomar los pasos necesarios para visualizar una función en MATLAB y adaptarlos al caso de funciones con dos variables: Paso 1. . . como por ejemplo o). . una función de dos variables se caracteriza porque el conjunto de salida es el producto cartesiano de los vectores x e y (x × y . cada elemento del conjunto de salida es una pareja ordenada de la forma (xi . Estos tres conjuntos de datos pueden ser vectores o matrices4 de igual dimensión. yi ). yi ) denida por la matriz: Como se estableció en el Capítulo 2. y = (y1 . mientras que el segundo las modica. y) es el producto cartesiano x × y . .2. Paso 2.2. En funciones de dos variables se crean tres conjuntos de datos: las dos variables de salida (x e y ) y la variable de llegada (z ). Para observar o modicar las características de algún objeto ob. y2 . .1.

. . .   . xn yn yn .  . . . .8 0.. (x1 . X= Y = .7 0.9 1 0.104 GEDEM ... y1      x1 x2 ..4 0. .4 0. y1 ) (x2 .8 1 0. y). .5 0. .. se muestra el espacio en donde se visualiza la función de dos variables f (x.5 0.6 0.9 1 y x Figura 4. generando el producto cartesiano necesario para denir el dominio o conjunto de salida de la función. los puntos generados por esta matriz se pueden ver como una malla en la parte izquierda de la Figura 4. yn ) .9 0.  .. yn )       Grácamente. .3 0. así:     x1 x2 . y2   .8 0. .8 0.  .   .6 0.. yn Las matrices X e Y se pueden crear a partir de dos vectores x e y ..1 0 0 0.7 0.4.6 0. .3 0.2 0 0 0..4 0 1 0. En la parte derecha de esta gura.. Cada intersección de las líneas punteadas corresponde a una de las posiciones de la matriz anterior. y2 ) .. . .. x1 x2 .Versión Preliminar       (x1 .9 0.3 0.3 0. y). y el eje vertical corresponde al rango de la función f (x. . xn y1 y1 . ..8 0. y1 ) .5 0..2 0.. xn   y2 y2 .4 0.. y2 ) (x2 .2 0. .4 0. . yn ) (x2 . (xn .2 0.... 1 0. .  .. (xn .4: Malla Podemos reescribir la matriz anterior en dos matrices que contengan los elementos xi e yi respectivamente. .6 0.1 0.2 0. La base de este espacio es el producto cartesiano x × y .6 f(x.7 0.5 0. .1 0.y) 0. En MATLAB esto se hace por medio de la instrucción meshgrid5 cuya sintaxis es: 5 Ver Capítulo 2 . . y1 ) (x1 . (xn .  .7 0. .1 0. y2 ) . .

Y.FUNCIONES 105 [X. . mesh: Dibuja una malla en el espacio R3 que reeja la forma de la función (matriz Z ) a lo largo del dominio denido por las matrices X e Y . . . Z12 ).y) Las parejas ordenadas de elementos X(i. Z ). Y11 .4. Ymn . se dene la matriz Z así: Z=fej(X. z vectores de tamaño 1 × n. . Ym2 . (x2 .Z). (X21 . Y21 . Siendo X. el comando traza una línea que une los puntos (x1 . Z21 ).Y]=meshgrid(x. MATLAB dispone de los siguientes comandos para gracar una función de dos variables: plot3: Este comando es equivalente a plot utilizado para gracar funciones de una variable.Z) dibuja simultáneamente la línea generada por la primera columna (X11 . (Xmn . la instrucción plot3(X. . . . Z1n ). este comando traza en el espacio R3 una línea que une los puntos generados por las columnas de cada uno de los vectores. Así. zn ). z1 ).j) conforman la malla de la parte izquierda de la Figura 4. Z matrices de tamaño m × n. Ym1 . Y22 . la línea generada por la segunda columna (X12 . Y12 . El área que encierra cada cuadrado de la malla es blanca. . La sintaxis de este comando es: mesh(X. Z2n ). Y2n . yn .Y. Y1n . Utilizar un comando para gracar. y). y así sucesivamente hasta la línea generada por la columna n (X1n . este comando dibuja una malla en el espacio R3 que reeja la forma de la función (matriz Z ) a lo largo del dominio . Cuando los elementos a gracar son vectores (x. . y2 .Y.Y) Paso 3. z2 ). .j). Y. . z ). Z . el comando dibuja las líneas generadas por las columnas de las matrices X. (X22 . y1 . Para crear el conjunto de llegada o imágenes de f (x.Z) surf: Al igual que mesh. . Zmn ). Z22 ). (X2n . Z11 ). siendo x. . y. (Xm2 . Y. Las líneas que conforman la malla son dibujadas en colores previamente denidos en el colormap. Zm1 ). (Xm1 . Zm2 ). . Cuando los elementos a gracar son matrices (X. .Y(i. (xn . . y tiene la sintaxis plot3(X. y.Y.

3. Su sintaxis es: clabel(CS.20] × [5. El conjunto de curvas de nivel está dado por los n distintos valores que puede tomar α. Su sintaxis es: [CS.H]=contour3(X.Versión Preliminar denido por las matrices X e Y .H]=contour(X.y=[5:1:20]. Paso 1. Una curva de nivel corresponde a gracar f (x. Ejemplo 4.Z.Y. así: function f=ffej3(x.H) La secuencia de pasos y la utilización de cada comando se ilustran con el siguiente ejemplo. Su sintaxis es: surf(X. La creamos en un m-file llamado ffej3. y H tiene los valores que permiten modicar las propiedades de cada curva de nivel. cada componente de n es un diferente valor de α especicado por el usuario. y) = α. Cuando n es un vector. donde α es una constante. Crear la función. Gracar la función f (x.n) donde CS tiene los cálculos de cada una de las curvas de nivel o contornos (valores de α).Z) contour3: Dibuja un número n de curvas de nivel de la función en el espacio R3 .Z. Las líneas que conforman la malla son de color negro y el área que encierra cada cuadrado de la malla se dibuja a partir de la escala de colores denida por el colormap.y). Crear los datos. f=x+y. necesitamos crear la malla (o dominio) sobre la cual está denida la función. comenzamos por denir los valores para los vectores x e y: x=[5:1:20].Y. Paso 2.20] R. por medio del comando meshgrid. Luego. y) = x + y en el dominio f : [5. Su sintaxis es: [CS. En el chero pej3.106 GEDEM .Y.n) clabel: Coloca etiquetas que indican el valor de α en cada una de las curvas de nivel obtenidas con los comandos contour 3 o contour. así: . contour: Dibuja un número n de curvas de nivel en el espacio R2 (conjunto de salida x × y ).

A partir de esta gura podemos ver que el comando plot solo dibuja líneas mientras que mesh y surf dibujan una malla. mesh(X.Y.5. subplot(2. Paso 3. subplot(2. Utilicemos los diferentes comandos que ofrece MATLAB para visualizar la función f (x.y). que se guardan en la matriz Z: Z=ffej3(X.1) plot3(X. title(’Plot3’). y luego la desactivamos al utilizar la instrucción contour3.Z). grid off Como resultado de esta programación MATLAB nos muestra la Figura 4.2. Ahora.FUNCIONES 107 [X. observamos que cada una de ellas tiene un color diferente dependiendo del valor (α) al que se iguala la función. En el gráco de las curvas de nivel.4). y) = x + y : subplot(2. En este ejemplo activamos la cuadrícula con grid on después de plot3.Y.num2str(n). ya que este desactiva la cuadrícula por defecto.Z. Para los grácos en R3 también es posible utilizar el comando grid.2). subplot(2.’)’]).2.2. surf(X. title(’Mesh’).Y.2.Z). grid on.Y]=meshgrid(x.Y). Gracar. contour3(X.Z). title([’Contour3 (n=’. title(’Surf’).n). n=20. hallamos los valores de las imágenes de la función sobre este conjunto.3). .Y.

negro.2. Opciones adicionales para los grácos Las características de la sección 4.2. 6 .108 Plot3 40 40 GEDEM . amarillo y rojo · flag: Rojo. azul y negro. blanco. Este comando matiza entre un conjunto de colores para cada gura. Esto se puede consultar en la documentación o en la ayuda de este comando. · winter: Azul y verde. · autumn: Rojo y amarillo · summer: Verde y amarillo.2 pueden aplicarse a grácos en tres dimensiones. Una característica adicional de grácos en R3 es el mapa de colores con el que se gracan las supercies.5: Comandos para gracar funciones de dos variables 4. Es posible construír numéricamente colormaps personalizados.y) 20 f(x.y) 20 f(x.y) 20 10 15 10 5 5 20 10 20 15 10 20 15 10 15 10 5 5 20 y x y x Figura 4. que se modica con el comando colormap. · cool: Añil y magenta.y) 20 10 15 10 5 5 20 10 20 15 10 20 15 10 15 10 5 5 20 y x y x Surf 40 40 Contour3 (n=20) 30 30 f(x.1.Versión Preliminar Mesh 30 30 f(x. Los colormaps mas utilizados6 son: · hot: Blanco.

^2-500*(x+y)+. en el título se colocaron símbolos L TEX7 utilizando \: la instrucción \in generó el símbolo ∈ . Para ello.num2str(min(x)). Por esta razón es necesario examinar en detalle el comportamiento de la función en varios dominios.^2+10*y.’. Sin embargo.90] × [−90. según el mapa de colores que se aplique. 3 Ejemplo 4.ylabel(’y’). Paso 2.FUNCIONES 109 Además. f=(1/6)*(x+y). Gracar la función f (x.Y). y) ∈ S .y).4. tenemos la Figura 4.6 aparentemente es creciente a lo largo de todo su dominio8 .34) Como resultado. Para este gráco se utilizaron las instrucciones xlabel. view(50.90] R.y=x.^2+50*x. a cada valor del eje z o eje vertical. Con los siguientes ejemplos se ilustrarán estas opciones.y \in [’.^3+ (3/2)*(x+y). xlabel(’x’). function f=ffej4(x. debido a la escala que se está manejando (valores entre -90 y 90) se pueden estar obviando detalles sobre el comportamiento de la función. Paso 3.y)’).y). [X. el color correspondiente a cada valor de la función.Y]=meshgrid(x. Además. las siguientes instrucciones gracan la misma función en cuatro conjuntos de salida diferentes.Z) title([’ x. Crear los datos en otro m-file llamado pfej4. colorbar. colorbar introduce una barra de colores que permite ver. y) es creciente en su dominio S si para todo (x. y) = 1 (x + y)3 + 2 (x + y)2 − 500(x + y) + 6 10x2 + 10y 2 + 50x. Crear la función en un m-file llamado ffej4.. Z=ffej4(X. ylabel y zlabel para colocar nombres en cada A uno de los ejes. 8 7 .6.num2str(max(x))’]’]). La función de la Figura 4. sobre el dominio f : [−90. 10*x. consultar ?). x=[-90:2:90]. es decir. Recordemos que una función f (x.’. mesh(X..Y. los elementos del gradiente (pendiente) son positivos. Paso 1. Para una mayor explicación de estos símbolos.zlabel(’f(x. Gracar la función.

x4=linspace(-30. Z1=ffej4(X1.4 % Crear los cuatro conjuntos de datos x1=[-90:9:90].n).Y2).y2).70.y)’). . x2=linspace(-70.’.y2=x2.Y2]=meshgrid(x2. Z2=ffej4(X2.zlabel(’f(x.90] GEDEM .y1=x1.view(50.y1). title([’(x. [X3.y3=x3. xlabel(’x’).Versión Preliminar x 10 10 5 x 10 5 8 10 6 8 6 4 4 f(x. [X2.6: Ejemplo 4.Y3]=meshgrid(x3.Y3). % Graficar subplot(2. x3=linspace(-50.ylabel(’y’).y4). ’. [X1.y) \in [’.30.34). [X4.y4=x4.2.50.Y1]=meshgrid(x1.n).Y4).y) 2 2 0 −2 0 −4 −6 −2 −80 −60 −40 −20 0 20 40 60 80 −80 −60 −20 −40 −6 0 20 40 60 80 −4 x y Figura 4. Z3=ffej4(X3.y3).Y1).’]’]).y∈ [−90.num2str(min(x1)).110 x.Y4]=meshgrid(x4.n). Z4=ffej4(X4. n=length(x1).num2str(max(x1)).1) mesh(X1.Y1.Z1).

zlabel(’f(x.34). xlabel(’x’).view(50.view(50.y) 0 −5 f(x. title([’(x.50]×[−50.’num2str(max(x3)).y) \in [’.FUNCIONES 111 subplot(2. ’. title([’(x.y)’).y ∈ [−70.y)’).y)’).2. subplot(2.num2str(min(x4)).2) mesh(X2.90]×[−90. subplot(2. title([’(x.zlabel(’f(x.90] x 10 5 x.’]’]).30] x 10 4 3 15 10 2 1 0 f(x.num2str(min(x3)).34).2.zlabel(’f(x. se presenta la misma función sobre los dominios [−90.view(50.34).50]. xlabel(’x’).’.70]×[−70.y) \in [’.y ∈ [−50.30]×[−30.30]. A medida que se utilizan . ’.70] x 10 5 10 4 5 f(x. [−30.y) \in [’.4) mesh(X4.Y4.’.y ∈ [−30.y) 5 0 −5 −50 50 0 50 −50 0 −20 0 20 −20 0 20 x y x y Figura 4.ylabel(’y’).3) mesh(X3.y) −50 0 50 −50 0 2 0 −2 −50 50 50 0 50 −50 0 x y x y x.num2str(max(x2)).’]’]). x. [−50.90].Z4).’.Y3.’]’]).num2str(max(x4)).ylabel(’y’).Z3). xlabel(’x’).70].ylabel(’y’).2.y ∈ [−90.7. [−70.Y2.Z2).num2str(min(x2)).50] x 10 4 x.7: Distintos conjuntos de salida En la Figura 4.

x=[-30:1:30]. Gracar la función.Y. Z=ffej5(X.4) cn = [-800 -150 0 150 800]. title([’Contour.Versión Preliminar dominios con menor escala (intervalos de x e y más pequeños) se observa que la función tiene una zona decreciente alrededor del punto (x.ylabel(’y’). subplot(2. Crear la función en un m-le llamado ffej5.Z. clabel(c1. Paso 3.Z. subplot(2.h1). xlabel(’x’).Y). 10).y)’).30) title(’Contour3.2.Y. function f=ffej5(x.30] R.[-800 -600 -400 -200 200 400 600 800]). colormap(winter).y).h1]=contour(X.2. clabel(c2.3) [c2.y)’). n = 30’). subplot(2.cn) .112 GEDEM . subplot(2.zlabel(’f(x.1) contour3(X.8).2. sobre el dominio f : [−30.ylabel(’y’). contourf(X. Clabel.2) [c1. y) = x2 − y 2 . y) = (10.y=x. xlabel(’x’).h2). Paso 1.^2)-(y.^2).Y]=meshgrid(x.Y. Ejemplo 4.Z.Y.2.zlabel(’f(x. Clabel’]).Z. xlabel(’x’).h2]=contour(X. Gracar la función f (x. Paso 2. [X.ylabel(’y’).zlabel(’f(x.30] × [−30.5. title([’Contour.y). f=(x. Crear los datos. n=8’]).y)’).

FUNCIONES 113 title([’Contourf’]). Estos comandos también se utilizaron para gracar curvas de nivel predeterminadas (-800 -600 -400 -200 200 400 600 800). La instrucción contourf gracó otras curvas de nivel diferentes (-800 -150 0 150 800).57 28 −1 385. Clabel.7 642.85 0 71 12 8. con su respectiva etiqueta (indicando el valor de α).71 14 400 600 .8.y)’).5 −642. n=8 3 38 20 20 −1 2 43 10 f(x.ylabel(’y’). 14 8.7143 − −642 −10 0 4 .8571 10 30 y x −20 x Contour.zlabel(’f(x.7143 −385 71 4 7 128. n = 30 30 1000 500 20 Contour. Para este gráco denimos un nuevo mapa de colores con el comando colormap(winter). 57 1 14 .5 5 38 .8: Punto de Silla El resultado es la Figura 4.8571 .8571 30 x x Figura 4. xlabel(’x’). Contour3. sin etiquetas. Clabel 30 Contourf 30 −2 00 −800 −600 20 0 −40 −2 00 20 20 0 10 10 400 800 600 800 y 0 y 0 −10 20 0 −10 −20 −30 −30 00 −2 −20 −600 −800 −10 0 −40 −2 0 00 10 20 30 −20 −30 −30 −20 −10 0 10 5.y) 0 y −500 −10 −1000 20 0 −20 −20 20 0 −30 −30 −20 642. 9 En el capítulo 7 se estudiará más a fondo el concepto de conjuntos contorno. pero rellenando sus contornos del mismo color de las curvas9 . Se utilizó contour junto con clabel para gracar 8 curvas de nivel calculadas por MATLAB .

El procedimiento para realizar la simulación parte de los mismos pasos para dibujar una función que hemos trabajado hasta ahora: crear la función.1 0. simulando el parámetro a (el exponente de la variable x) para los valores de 0.1.5 0. A continuación extendemos el anterior ejemplo. Para ilustrar este procedimiento veamos el siguiente ejemplo.14 0.06 0.06 0.4 0. la forma general de la función es f (x) = xa con a ∈ (0.16 0.16 0. crear los datos y gracar.3 .3 0. Sin embargo hay dos modicaciones.08 0. .7 0.04 0.7. En la parte derecha se visualiza la función f (x) = x0.2 0 0 0. En el caso anterior. ahora la función presenta una curvatura mas suave.3 0.Versión Preliminar 4.3.9 se muestra la imagen de f (x) = x0.1 0.2 f(x) 0.02 0.2 x x Figura 4.12 0. ésta debe recibir como entradas.35 f(x) = x0. La segunda requiere que los pasos de crear los datos (especícamente.18 0. y tiende a ser lineal.114 GEDEM .6 y 0. 1). además de las variables. f(x) = x0.04 0.6 0.1 0. Esto se hace para observar el cambio en el comportamiento de la función al modicar (simular) los parámetros.3 f(x) 0.1 0. Estos cambios pueden ser observados estableciendo al interior de las funciones parámetros que puedan tomar diferentes valores.15 0.7 0. donde n es el número de valores del parámetro que se van a simular. que tiene una fuerte curvatura.25 0.7 . 0.14 0.4.2 0. resultado de un cambio en el exponente de la variable (parámetro). Simulaciones en funciones de una variable Una simulación es un ejercicio numérico que modica el valor de uno o varios parámetros de los que depende una función.9.05 0 0 0.02 0.3 y a = 0.18 0. 0.12 0.08 0.9: Simulación de una función de una variable En la parte izquierda de la Figura 4. La primera consiste en que al crear la función. y se simuló el parámetro a para los valores de a = 0. los parámetros. el rango o conjunto de llegada) y gracar se repitan n veces (que pueden separarse por una pausa).

6.’color’.a(i)).1 0.’Fontweight’.’b’) set(xs. y(i.’Fontsize’. set(ts. end % Conjunto de salida % Valores del Parámetro % Numero de valores del parametro % Crear n conjuntos de llegada Se crearon n conjuntos de llegada o rangos. a e y. xs=xlabel(’x’).’FontSize’. Paso 3. para a = {0. % Forma funcional Paso 2.:)=ffej6(x.6.y(i.6 0. que es el número de valores que toma el parámetro a (n=length(a)). for i=1:n.num2str(a(i))]). ts=title([’f(x) = x^a.10. En cada posición i del subplot. para hacer un gráco que tenga dos las y dos columnas.:)) para gracar la imagen de la función cuando el parámetro a toma el valor a(i).y(i. La instrucción y(i.:)=ffej6(x. % Parametro como entrada f=x. a = ’. Gracar la función (repetir n veces): for i=1:n. 0.a).0025:0. 0. 0.18.’Bold’. Crear la función.’FontSize’.i). subplot(2.9].4 0.2]. x=[0:0.i) plot(x.’Bold’) end El comando for repite el proceso 4 veces.ys=ylabel(’f(x)’).a(i)) crea un conjunto de imágenes de la función ffej6 para cada valor del parámetro a. y lo guarda en la la i de la matriz y.1.4.’Bold’) set(ys. Crear los datos.2. se utiliza la instrucción subplot(2.:)). Simular el parámetro a en f (x) = xa .FUNCIONES 115 Ejemplo 4.14. n=length(a). En un m-file: function f=ffej6(x. La salida de MATLAB se muestra en la Figura 4.’Fontweight’. Denimos los valores de x.14.’Fontweight’.9}. . se utiliza plot(x. Paso 1.2. Una vez creados los datos. a=[0.^a. donde n es el número de valores que toma el parámetro (length(a)).

y para los ejes un tamaño de letra 14 y grosor bold.6 f(x) = xa.05 0.05 0.9 0.35 0.1 0. Simular el parámetro a en f (x) = asen(x) Paso 1.15 0.5 0.6 0. .25 0.2 x x f(x) = xa.4 0.2 0.5 0.4 f(x) 0. En un m-file: function f=ffej7(x.2 0.2 0.9 f(x) 0.4 0.1 0. La instrucción num2str(a(i)) convierte el valor numérico a(i) en una cadena de caracteres.1 0. a = 0.05 0.1 0.6 0.05 0. a = 0.1 0.05 0 0 0 0.4 0. En este ejemplo se observa que el bucle for repite el proceso n veces.1 0. a = 0.3 0.10: Ejemplo 4.8 0.7 0.3 0. Aunque este bucle se segmentó para seguir los mismos pasos.2 0. tanto al crear las imágenes como al gracar.116 GEDEM . f=a. a = 0.a).05 0.1 0 0 0. Veamos un ejemplo con la función seno.15 0.ys).15 0.6 Con los comandos xlabel y ylabel se colocaron las etiquetas x y f(x) para los ejes. Con el comando set se dene para el título un tamaño de letra 18.3 f(x) 0 0.7 0.^(sin(x)). por lo que el título cambia para cada valor de a.1 f(x) 0 0.1 0 0.2 0.15 0. para poder modicar sus propiedades.15 0.15 0.2 x x Figura 4.Versión Preliminar f(x) = xa. en una sintaxis mas sencilla se pueden unir estos dos bucles en uno solo.2 0.25 f(x) = xa. Ejemplo 4. grosor bold y color azul.7. Al crear la gura se coloca nombre al título (ts) y a los ejes (xs. Crear la función.

2 unidades.’Fontweight’.10.’:’) pause(2) end Se utiliza un mismo bucle for para crear los rangos y para gracar. Crear los datos. y=ffej7(x.a(i)). A diferencia del ejemplo anterior.ys=ylabel(’f(x)’).num2str(a(i))]). % Eje vertical En este caso a toma valores entre 0. v=[min(x) max(x) -10 10]. la conguración de las características de los ejes se hizo en una sola linea (y no en dos líneas diferentes). axis(v). Denimos los valores de x y a. utilizando el vector [xs.3 0. Simular el parámetro a: for i=1:length(a).y).2:1.11 se muestra simultáneamente el comportamiento de la función para cuatro valores de a (0. espaciados entre si por 0.’Fontsize’.7).[0 0]).01:25]. a=[0. ts=title([’f(x) = a^{sin(x)} a = ’.3 y 1.’r’) set([xs ys].0) al punto (x. grosor bold. y) = (max(x).’FontSize’. xs=xlabel(’x’).ys] en la instrucción set. ls=line([min(x) max(x)].’Fontweight’. Paso 3.7. .’Bold’) set(ls.0). Para el título se establece tamaño de letra 16. Las etiquetas de los ejes tienen tamaño de letra 10. Como resultado MATLAB graca secuencialmente la simulación de la función para ocho valores del parámetro a. x=[1:0.16. por lo que va del punto (x. grosor bold y color rojo.3 1. plot(x.’color’.’linestyle’.7 1.’Bold’. A partir de la línea 7 se modican las propiedades de algunos objetos.FUNCIONES 117 Paso 2. En la Figura 4.3:0. % Escala de los ejes set(ts. y con la instrucción axis(v) se colocó una escala ja al eje vertical de la gráca (entre -10 y 10). Con line se colocó una línea horizontal punteada para representar el eje de las x. y por defecto el color de la letra es negro.7]. y) = (min(x).

Crear la función. con grácos de tres dimensiones.8.7 f(x) 0 −2 −4 −6 −8 −10 5 10 15 20 25 f(x) 0 −2 −4 −6 −8 −10 5 10 15 20 25 x x Figura 4. Gracar. con a = [0. Ejemplo 4.3 10 8 6 4 2 10 8 6 4 2 f(x) = asin(x) a = 1.1:6]. Y=ffej7(X.Versión Preliminar f(x) = asin(x) a = 0. Veamos un ejemplo.11: Ejemplo 4.7 En MATLAB podemos simular una función de una variable para un gran número de valores de su parámetro. Paso 2.Y.1:4].118 f(x) = asin(x) a = 0. [X.7 f(x) 0 −2 −4 −6 −8 −10 5 10 15 20 25 f(x) 0 −2 −4 −6 −8 −10 5 10 15 20 25 x x f(x) = asin(x) a = 1. En el eje z se gracan los valores del parametro (matriz A).A] = meshgrid(x. xs=xlabel(’x’). Podemos utilizar la función ffej7.3 10 8 6 4 2 10 8 6 4 2 GEDEM .zs=zlabel(’a’). 0. Crear los datos.2] Paso 1. Imagenes Paso 3. % Valores de x % Valores del parametro % Dominio % Rango. . en donde los valores del parámetro se colocan en el eje z o eje vertical.ys=ylabel(’f(x)’). mesh(X.A).a). a=[0:0. x=[-10:0. Simular el parámetro a en la función f (x) = asen(x) .A). t=texlabel(’a^{sin(x)}’).

pero a medida que se aleja de este valor.4.’]’]). las oscilaciones característricas de la función seno se hacen más pronunciadas.FUNCIONES 119 ts=title([’f(x) = ’.9. Se observa que para valores de a cercanos a 1 la función tiende a ser lineal.) debido a su extensión.5 a 2 1.4] 4 3. La instrucción title se segmentó en dos renglones con puntos suspensivos (. Además. f(x) = asin(x) a ∈ [0..’ a \in [’.8 La salida de MATLAB se presenta en la Figura 4. 1} . Ejemplo 4.A.’Bold’).12.num2str(max(a)). ’.18.t. Con la instrucción contour(X. 0.5 3 2.. con a = {0.12: Ejemplo 4.num2str(min(a)).14.7.13).’..’Fontweight’..5 0 10 8 6 4 2 −8 0 −10 −4 −6 0 −2 4 2 6 f(x) x Figura 4. Cuando se simulan pocos valores del parámetro de una función. Utilizamos la instrucción A texlabel para colocar la función como una expresión de L TEX y la incluimos dentro del título.Y.’Bold’). utilizando el vector [xs ys zs] en la instrucción set. se conguraron las características de los ejes en una sola línea.’Fontweight’.’FontSize’. 0.5 1 0.1. set([xs ys zs]. set(ts. no es necesario utilizar bucles con subplots para gracar la simulación. Veamos un ejemplo en donde la función que vamos a simular es de forma exponencial.. Simular el parámetro a en la función exponencial f (x) = e(−ax) .40) obtenemos curvas de nivel que muestran el mismo resultado en el plano en donde está denida la función (Figura 4.’Fontsize’.

Gracar la simulación.13: Ejemplo 4.1 0.num2str(a(4))]).:)=ffej9(x.’b -. Denimos los valores de x y a. Paso 2. x=[0:0.ys=ylabel(’f(x)’).y(3.num2str(a(3))]. for i=1:length(a).. % Caracteristicas adicionales grid on.num2str(a(1))]. x.8 Paso 1. .y(2.4 0.’m -’)...’r :’.Versión Preliminar a ∈ [0.[’a = ’.x.120 f(x) = asin(x) 9 8 GEDEM .a(i)).7 1].[’a = ’.. En un m-file: function f=ffej9(x.y(4. y(i. ls = legend([’a = ’. Crear la función..y(1.a)..01:20].:). a=[0.4] 7 6 5 f(x) 4 3 2 1 0 −10 −8 −6 −4 −2 0 2 4 6 x Figura 4.x. Crear los datos. end % Conjuntos de llegada Paso 3. [’a = ’.:). xs=xlabel(’x’).:).’k -’.num2str(a(2))]. p = plot(x. f=exp(-a*x).:).’.

’Bold’.4 0.9 En la Figura 4.4 a = 0.7 0.7 a=1 a = [0.’location’.’Bold’).FUNCIONES 121 ts=title([’f(x) = e^-ax a = [0.1 a = 0.4. según sus colores y tipos de línea. ’verticalalignment’. Se utilizó plot para colocar en una sola gura las cuatro simulaciones.7 1] 0. Para estas simulaciones.’Fontweight’.8 0.12.12.’left’.. Se utilizó legend para colocar una leyenda con las etiquetas de cada simulación.9 0.4 0.’north’).7 1]’]).14 se observa el comportamiento de la función.’times’.6 f(x) 0.4 0.1 0. set([xs ys].1 0.16. set(ls.. ’horizontalalignment’. se sigue el mismo procedimiento que con funciones univariadas.’Fontsize’. 1 f(x) = e−ax a = 0.’Fontweight’. el título se alineó horizontalmente a la izquierda (derecha del usuario) y verticalmente sobre la línea del gráco.’fontname’.’baseline’)..3 0.14: Ejemplo 4. para simular n valores de un parámetro debemos crear la función (incluyendo en las entradas al . Con set. Simulaciones en funciones de dos variables En esta sección estudiaremos la forma de analizar el comportamiento de funciones de dos variables cuando cambia alguno de sus parámetros.1 0 0 2 4 6 8 10 12 14 16 18 20 x Figura 4.. También se utilizó para modicar tamaño y tipo de letra de la leyenda y ubicarla en la parte superior central (north) del gráco.2 0..5 0. set(ts.’FontSize’. Cada simulación se colocó con un tipo de línea y color diferente.. es decir.’fontsize’. 4.

10. ts=title([’f(x.y)’).y) = a^{cos(xy)}. n=length(a).y=x. 0. % de fuente Tamaño de fuente para el titulo Tamaño de fuente para ejes Grosor de letra Tipo de letra for i=1:n.9 2 10]. Crear los datos. .Versión Preliminar parámetro). a = ’. se crearán en un solo bucle los n conjuntos de datos y los n gracos.^(cos(x.i). [X. Paso 2.Y. a=[0.y).122 GEDEM . para a = {0. x=[-2:0.’Fontweight’.y.*y)).Y]=meshgrid(x. Ejemplo 4. En algunos casos. también era posible utilizar hipermatrices (Z(:.fn).a).fw. crear los datos (con n conjuntos de salida) y gracar n veces. for i = 1:n Z{i} = ffej10(X.Z{i}). % fsej=12. function f=ffej10(x.ys=ylabel(’y’). mesh(X. para hacer la sintaxis mas sencilla. set(ts.Y. % fn=’Times’.2.num2str(a(i))]).fst.’Fontname’. y) = acos(xy) .9.:. % fw=’demi’.i)). subplot(2. 2. Crear la función con el parámetro a.’Fontsize’. Debido a que todos los conjuntos de llegada son del mismo tamaño. 10}. f=a.1:2]. Simular el comportamiento de la función f (x. Paso 3. Gracar la función % Parametros fst=14.a(i)).1. Paso 1.1 0. xs=xlabel(’x’). end % Conjunto de Salida % Valores del parametro % n Conjuntos de Llegada Para guardar las n matrices Z se utilizaron cell-arrays.zs=zlabel(’f(x.

FUNCIONES

123

set([xs ys zs],’FontSize’,fsej,’Fontweight’,fw); end
A diferencia de los ejemplos anteriores, en este ejemplo se denieron previamente los Parametros de fuente (tamaño, grosor y tipo) con números y cadenas de caracteres. Algunas veces esto permite simplicar la programación, ya que basta sólo con cambiar el valor del parámetro una sola vez para modicar la propiedad de varios objetos. Como resultado obtenemos la Figura 4.15. Se observa que con valores de a cercanos a 1 la función oscila en rangos muy pequeños, tendiendo a ser una función constante. En la medida en que a se aleja de 1, aumenta el rango de las oscilaciones. La Figura también muestra como MATLAB ajusta la escala del eje z en cada subplot, según el rango de cada conjunto de llegada.
f(x,y) = acos(xy), a = 0.1
10 8 1.15 1.1

f(x,y) = acos(xy), a = 0.9

f(x,y)

6 4 2 0 2 2 0 −1 1 0 −2 −2

f(x,y)

1.05 1 0.95 0.9 2 2 0 −1 1 0 −2 −2

y

x

y

x

f(x,y) = acos(xy), a = 2
2 10 8

f(x,y) = acos(xy), a = 10

f(x,y)

f(x,y)
2 0 1 0 −2 −1 −2

1.5

6 4 2

1

0.5 2

0 2 2 0 1 0 −2 −1 −2

y

x

y

x

Figura 4.15: Simulación del parámetro a en f (x, y) = acos(xy)

Ejemplo 4.11. Simular el comportamiento de la función f (x, y) = x3 − ax2 y +
6xy 2 − y 3 , para a ∈ [−6, 6].

Paso 1. Crear la función con parámetros. Usamos la función ffej11.

124

GEDEM - Versión Preliminar

function f=ffej11(x,y,a); f=x.^3-a*x.^2.*y+6*x.*y.^2-y.^3;

Paso 2. Crear los datos.
x=[-5:0.3:5]; y=x; [X,Y]=meshgrid(x,y); a=[-6:0.5:6]; n=length(a);

Paso 3. Gracar la función
for i = 1:n Z(:,:,i) = ffej11(X,Y,a(i)); mesh(X,Y,Z(:,:,i)); ts=title({’f(x,y) = x^3-ax^2y+6xy^2-y^3’;... [’a = ’,num2str(a(i))]}); set(ts,’Fontsize’,12,’Fontweight’,’bold’); xs=xlabel(’x’);ys=ylabel(’y’);zs=zlabel(’f(x,y)’); set([xs ys zs],’FontSize’,12); pause(0.5) end
Como resultado se obtiene una secuencia de grácos que muestran el cambio de la función ante el cambio del parámetro a. Algunas de ellas se presentan en la Figura 4.18. En la programación, se utilizaron hipermatrices para guardar los conjuntos de salida (Z). Además, utilizando cell-arrays se colocó un título con dos líneas, separadas entre si con ;.

4.5. Análisis de Funciones económicas
Generalmente los problemas económicos formulados matemáticamente requieren una solución. El comportamiento de esta solución depende del comportamiento de las funciones que componen el problema (funciones económicas). El objetivo de esta sección es utilizar la herramienta gráca de MATLAB para visualizar algunas funciones económicas. Un problema analizado en microeconomía es la elección de un consumidor entre

FUNCIONES
f(x,y) = x −ax y+6xy −y a = −6
2000 1000

125
3 2 2 3

f(x,y) = x −ax y+6xy −y a = −2
1000 500

3

2

2

3

f(x,y)

0 −1000 −2000 5 5 0 0 −5 −5

f(x,y)

0 −500 −1000 5 5 0 0 −5 −5

y

x

y

x

f(x,y) = x3−ax2y+6xy2−y3 a=2
2000 1000 2000 1000

f(x,y) = x3−ax2y+6xy2−y3 a=6

f(x,y)

0 −1000 −2000 5 5 0 0 −5 −5

f(x,y)

0 −1000 −2000 5 5 0 0 −5 −5

y

x

y

x

Figura 4.16: Simulación del parámetro a en f (x, y) = x3 − ax2 y + 6xy 2 − y 3 diferentes canastas de bienes, para lo cualse asume que sus preferencias están representadas por una función de utilidad. Una de ellas es la función Cobb-Douglas, que modela el consumo de un agente sobre bienes que son sustitutos imperfectos, de manera que el consumidor preere gastar su presupuesto comprando combinaciones de los bienes que tiene a su alcance, que gastarlo consumiendo sólo uno de ellos. Cuando el agente consume dos bienes x e y , la función es de la forma U (x, y) = xa y 1−a ; donde a ∈ (0, 1) representa la ponderación que da el agente a cada bien. Para hacer la simulación del parámetro a, seguimos el mismo procedimiento que para cualquier otra función: creamos la función, y en otro m-file creamos los datos, programamos la simulación para diferentes valores de a y gracamos.

Ejemplo 4.12. Simular el comportamiento de la función Cobb-Douglas ante cambios
en el parámetro a.

Paso 1. Crear la función Cobb-Douglas con el parámetro a.
function f=ffej12(x,y,a); f=(x.^a).*(y.^a);

126

GEDEM - Versión Preliminar

Paso 2. Crear los datos. Para representar cantidades de bienes no negativas, x e y
toman valores no negativos.

x=[0:0.5:10];y=x; a=[0.1:0.1:0.9]; [X,Y]=meshgrid(x,y);

Paso 3. Simular el parámetro a y gracar la función
for i=1:length(a); Z=ffej12(X,Y,a(i)); mesh(X,Y,Z); xs=xlabel(’x’);ys=ylabel(’y’);zs=zlabel(’f(x,y)’); ts=title([’Funcion Cobb-Douglas a = ’,num2str(a(i))]); set(ts,’Fontsize’,12,’Fontname’,’helvetica’); set([xs ys zs],’FontSize’,9,’Fontname’,’helvetica’); pause(0.5) end

MATLAB modica el gráco en intervalos de 0.5 segundos, a medida que
va cambiando el valor del parámetro a. En la Figura 4.17 se presentan algunas de las simulaciones. Otra función utilizada en microeconomía (teoría del productor) es la función de Elasticidad de Sustitución Constante (CES, por su sigla en inglés). La producción en esta función depende de dos insumos capital (k) y trabajo (t), y un parámetro ρ. 1 La forma de la función es (k ρ + tρ ) ρ donde ρ < 1. Al crear los datos de la función, tenemos en cuenta que el capital y el trabajo no toman valores negativos, y la condición ρ < 1. Luego, simularemos el parámetro de la función, representándolo con la letra p.

Ejemplo 4.13. Simulación de la Función CES Paso 1. Crear la función CES con parámetros.
function f=ffej13(k,t,p); f=((k.^p)+(t.^p)).^(1./p);
El parámetro p es una entrada o input de la función.

FUNCIONES
Cobb−Douglas, a = 0.2
10 8 10 8

127
Cobb−Douglas, a = 0.4

f(x,y)

6 4 2 0 10 10 5 5 0 0

f(x,y)

6 4 2 0 10 10 5 5 0 0

y

x

y

x

Cobb−Douglas, a = 0.6
10 8 10 8

Cobb−Douglas, a = 0.8

f(x,y)

6 4 2 0 10 10 5 5 0 0

f(x,y)

6 4 2 0 10 10 5 5 0 0

y

x

y

x

Figura 4.17: Función Cobb-Douglas

Paso 2. Crear los datos. Le damos valores positivos a los vectores de capital y trabajo. Denimos los valores de ρ entre -15 y 1.

k=[0:1:30];t=k; p=[-15:0.1:1]; [K,T]=meshgrid(k,t);

Paso 3. Simular el parámetro p y gracar la función
% Parametros de fuentes tfs=10 fs=9 fw=’demi’ fn=’times’ for i=1:length(p); Z=ffej13(K,T,p(i)); mesh(K,T,Z);

Ejercicios En los grácos que debe realizar a continuación recuerde crear para todas las guras un título.Versión Preliminar xs=xlabel(’k’). pág.18 y 4. junto sus curvas de nivel. set([xs ys zs]. nombre para los ejes. Esto será útil.1) end Como resultado. respectivamente 10 . y 6 analizan funciones utilizando cálculo (diferencial e integral) y métodos numéricos.19. Como estas características se crean con el mismo procedimiento que se mostró en este capítulo. 214). la función de producción es Cobb-Douglas. líneas segemtadas en las asíntotas y características especiales para cada objeto.t)’). se muestra en las guras 4. Entonces la CES generaliza diferentes comportamientos de las funciones de producción al cambiar el valor de su parámetro.’Fontweight’.’Fontsize’. diferentes en cada ejercicio.times). La simulación para estos valores límite de ρ. En capítulos posteriores se utiliza la herramienta gráca para representar algunas funciones y algunos resultados numéricos. set(ts. 5. modelando bienes complementarios.’bold’). Estos métodos sirven para estudiar funciones que no pueden representarse grácamente. Se observa en esta secuencia que la función de producción es de la forma Leontief. Los capítulos. etiquetas de los ejes y otras características que se explicaron en este capítulo.ys=ylabel(’t’). pause(0. se tiene una secuencia de grácos que cambian de acurdo a los cambios en el parámetro ρ. 10 Ver Nicholson (1997. Los grácos que se presentan contienen títulos. la función de producción es Lineal. ts=title([’Funcion CES \rho = ’.zs=zlabel(’f(k.8. . o cuando se requieren cálculos precisos en un punto determinado. cuando ρ → 0. sustitutos imperfectos y sustitutos perfectos. y cuando ρ → 1.num2str(p(i))]).’Fontname’. o Función mínimo cuando el valor de ρ → −∞.128 GEDEM . no se colocará explícitamente su programación.10. ya que algunas funciones económicas presentan estas características.’FontSize’.

Graque en MATLAB las siguientes funciones denidas en R.01 x 10 15 30 8 7 f(x.18: Función CES 1.FUNCIONES Funcion CES ρ = −100 9 10 8 8 7 6 129 Minimo f(x.y) 6 4 2 0 10 10 5 y 5 0 0 5 4 3 2 1 0 0 2 4 6 8 y x x Cobb−Douglas 9 Funcion CES ρ = 0. Utilice como conjunto de salida intervalos en donde la función presente cambios en su comportamiento: f (x) = |x|  2x − 3 si x < −2    g(x) = x − 5 −2 ≤ x ≤ 1    3 − x x > 1 h(x) = [[x]] = n si n ≤ x < n + 1 y 2 − 2y 2 + 5y y 0.y) 10 6 5 4 0 10 10 5 1 5 0 0 0 0 2 4 6 8 3 2 y x y 5 x Figura 4.5 − 2y + 4  0 si z ≤ 3 g(z) = 1 si z > 3 f (y) = f (x) = x (x − 1)(x + 2) n∈Z .

y) = z(m. y) = 2 x −1 h(z. 3w}. w) = max{min{2z. {3z. Utilice como conjunto de salida intervalos en donde la función presente cambios en su comportamiento: √ x+y y g(x. Para la función f : R+ n∈Z R con f (x) = ax2 + bx − c dx + 5e 0. b. n) = |m3 − n3 | p(x.y) 6 4 2 0 10 10 5 y 5 0 0 5 4 3 2 1 0 0 2 4 6 8 y x x Figura 4. 3] y para los otros parámetros asuma el valor de 1. Graque en MATLAB las siguientes funciones denidas en R2 .130 Funcion CES ρ = 1 9 20 15 8 7 6 10 5 0 10 10 5 1 5 0 0 0 0 2 GEDEM . z) 3. asuma valores en el intervalo [−3.Versión Preliminar Lineal f(x.4 Simule los parámetros a. c secuencialmente en R2 . y) = [[x + y]] = n si n ≤ x + y < n + 1 g ◦ (h. . para el parámetro simulado. 2w}} f (x.19: Función CES 2.y) y 5 4 3 2 y x 4 6 8 x Maximo 9 Funcion CES ρ = 100 10 8 8 7 6 f(x.

Imagine el mercado de arroz en alguna ciudad del Tolima. 3] y para los otros parámetros asuma el valor de 1. c = 4 y d = 2. donde a. La ecuación (y − k) = (x−h) representa una parábola en el plano cartesiano. 2]. Graque la función f (λ. para el parámetro simulado. 6. asumiendo valores para el parámetro simulado en el intervalo [−2. y para los otros parámetros de 3 y −1. k) y con una distancia a entre el vértice y el foco. b = 1. b) Halle numericamente el equilibrio de mercado c) Realice una simulación de cada parámetro. La cantidad demandada puede representarse por la siguiente función lineal: QD = a−P c. se halla una ecuación en diferencias que para ser estable (no hiperinación) requiere que: αλ + 1 − λ <1 1 + αλ (4. 4a con vértice en (h. a. 2 . ¾Qué ocurre con el equilibrioo de mercado en cada simulación?. las funciones de oferta y demanda. α) = αλ + 1 − λ 1 + αλ Graque en R2 los valores de α y λ que generan hiperinación en el modelo de Cagan. para incrementos en sus valores en el intervalo [−1. realice una simulación en R3 para cada parámetro. 5. en una misma gura. k.FUNCIONES 131 Simule los parámetros d. Interprete. 1] es la velocidad de ajuste de las expectativas. Explique brevemente. 4. asuma valores en el intervalo [−3. La cantidad ofrecida se representa por la función lineal QO = b + P d a) Graque. Esta ecuación se puede reescribir de tal forma que y sea una función de x y de los parámetros h.1) donde λ ∈ [0. e en R3 utilizando mesh. colocando una línea punteada en la directriz. Al resolver para los precios pt utilizando expectativas adaptativas. Suponga que este mercado es perfectamente competitivo. ?) presenta una versión lineal del modelo de hiperinación propuesto por ?). Para la función y(x). asumiendo a = 5. y α representa la relación entre la tasa de interés y la demanda de dinero (α < 0). 1]. c son parámetros y P es el precio del arroz.

2 0.b] b) Univariada Normal con µ = [−2 − 1 0 1 2] y varianza σ = [0. 8. a) Construya la función CES de producción tal que dependa del capital. porque su elasticidad 1 de sustitución (σ = 1−ρ ) depende sólo del parámetro ρ. b) Graque en una sola gura U . γ = 1 γ=1 e−αc α>0 CARA : U (ct ) = − En estas funciones. y el de Aversión Relativa al Riesgo por − UU (ctt)ct . el Coeciente de Aversión Absoluta al Riesgo está dado por (c ) − U (ctt) . denidas como: CRRA : U (ct ) =  1−γ  ct   1 − γ      Ln(c ) t 1 α γ > 0. Para cada función: U (c ) a) Calcule matemáticamente U y U . La función de elasticidad constante recibe este nombre.132 GEDEM . U y U c) Simule el comportamiento de U . determine los valores límite de σ con los que se obtienen las funciones Lineal. Blanchard (1989) Ver ?). Graque la función de distribución y de distribución acumulada de las siguientes distribuciones de probabilidad12 : a) Univariada Uniforme en el intervalo [a. 9. U y U para diferentes valores de γ y α. b) Por medio de simulaciones numéricas. . d) Bivariada Normal con media 0 y varianza 1 11 12 Monsalve (2005a).5 1 2] (simulación) c) Univariada de Laplace simulando α y β . el trabajo y la elasticidad de sustitución (σ ). Mínimo y Cobb-Douglas. Dos funciones utilizadas con frecuencia en economía 11 son la función CRRA (Constant Relative Risk Aversion) y CARA (Constant Absolute Risk Aversion).Versión Preliminar 7.

(Sugerencia: Use el comando subplot) 11. La función de producción de una empresa que tiene como insumos capital (K) y trabajo (L). a) ¾Cómo es esta función? b) ¾Cómo son sus curvas de nivel?. Si se ha estimado que la empresa tiene una función de producción √ de la forma F (K. Graque la función f (x) = 3x+1 . Dibuje en la misma ventana la asíntota con un estilo de línea punteada. Sabemos que esta función tiene una asíntota x−2 en x = 2. (Sugerencia: Use el comando line). c) Graque estas guras en una sola ventana. L) = K + L.FUNCIONES 133 10. ¾Qué situación económica o nanciera podría representar una función de este tipo? .

134 GEDEM .Versión Preliminar .

la derivada representa un cambio innitesimal en la función con respecto a las variables de las que depende y la forma más natural de establecer cuál es la aproximación numérica es mediante la siguiente denición: f (x) = l´ ım f (x + h) − f (x) h→0 h (5.. la quinta. se ha desarrollado la derivación numérica.. etc. Especícamente. la cuarta. la si135 . nos lleva a considerar nuevos conceptos que permiten hacer otro tipo de análisis. Para solucionar computacionalmente problemas que comprendan derivación. la derivada de f es la segunda derivada. De esta manera.1) Donde f (x) es la derivada de la función f . f (n) . donde f (n) es la derivada n-ésima de f . si f tiene una derivada f y f es a su vez diferenciable.. reconociendo distintas propiedades y observando el proceso para llegar a su construcción. la necesidad de estudiar ciertas características de las funciones que involucran mayor precisión. . f (5) . que se denota por f . En este capítulo nos enfocaremos entonces en la derivación. es decir. No obstante. la derivada de la derivada. tenemos la tercera derivada. f (4) . para tener una aproximación a la solución de problemas cuya respuesta analítica es limitada.: f (3) . siempre y cuando f sea n veces diferenciable en I . Dado un intervalo I ∈ y una función f : I → .Capítulo 5 Derivación En la pasada sección examinamos cómo evaluar computacionalmente diferentes funciones a partir de un criterio gráco. Cualquier derivada más allá de la primera se considera derivada de orden superior y su existencia está sujeta al número de veces que pueda ser diferenciada la función. Continuando así con el proceso. dando un marco conceptual.

1. que requiere como input el vector de coecientes del polinomio a derivar y entrega como resultado el vector de coecientes del polinomio resultado de la derivación.Versión Preliminar guiente estructura determina cómo se han creado cada uno de los ejemplos contenidos en este capítulo. 5. hay distintas rutinas que son útiles para alcanzar ese resultado. por lo tanto. Paso 3: Identicar y llamar el código adecuado para resolver el problema. Así. Siguiendo esta estructura. Para derivar un polinomio. Derivación de primer orden 5.1. en la segunda. MATLAB dispone de la rutina polyder. Encontremos la derivada del polinomio g(x) = 5x4 − 9x3 − 41x + 32 .1.1. En este proceso vale la pena recordar que existen diferentes formas de llegar a la misma solución y. aquellos comandos útiles para llegar a las derivadas de orden superior de una función. siendo importante evaluarlas y descartar aquellas menos ecientes en hacerlo.2) Donde c es una constante que acompaña la variable x y el subíndice indica la posición en la que se encuentra respecto a la variable.136 GEDEM . y.2) es: [cn × n]xn−1 + [cn−1 × (n − 1)]xn−2 + · · · + [c2 × 2]x + c1 Ejemplo 5. Paso 2: Crear los datos pertinentes y unirlos con las funciones y otros parámetros previamente jados en MATLAB para plantear la situación. buscando hacer un uso apropiado de cada una de las herramientas disponibles: Paso 1: Determinar el tipo de problema que se pregunta y crear las funciones que necesite MATLAB para iniciar el proceso de derivación. el capítulo está dividido en dos secciones: en la primera examinamos con detalle las rutinas computacionales que permiten obtener derivadas de primer orden y los métodos que las sustentan. ya sea en un M-le o de cualquier otra forma que reconozca el programa. polyder La siguiente es la forma de un polinomio: cn xn + cn−1 xn−1 + · · · + c2 x2 + c1 x + c0 (5. la derivada del polinomio (5.

Los distintos algoritmos que utilizan la diferencia nita para el cálculo de la derivada varían de acuerdo a la forma como determinan las imágenes (aquellos elementos del codominio) o establecen el valor del espaciamiento (el espacio entre los elementos del dominio) y. invocamos a la rutina polyder F1=polyder(P) El resultado de esta operación es un vector F1 con los elementos [20 -27 0 -41]. 2 1 . Esta forma de hallarla es conocida como Diferencia Finita: sin importar la dimensión en que se encuentre. por esto se considera de orden 1. Cabe resaltar que el vector resultante F1 es de tamaño 1 × n − 1. f (x) = f (x + h) − f (x) + O(h) h (5. conocido como Error de Truncamiento. que son. la denición matemática de derivada permite calcular numéricamente la derivada de una función. porque el último coeciente del vector F corresponde a x0 . los coecientes del polinomio resultado del proceso de derivación 20x3 − 27x2 − 41. polyder sólo permite derivar en una sola dimensión.Nombre del Capítulo 137 Paso 1: Escribimos en MATLAB el vector de coecientes del polinomio que nos interesa derivar1 F=[5 -9 0 -41 32] Paso 2: Ahora. con respecto a una sola variable. quizá uno de los algoritmos más sencillos para encontrar la derivada de esta forma.3) Donde O(·) es una función que prescribe el error entre la derivada y la aproximación numérica. consiste en omitir el límite y utilizar un h sucientemente pequeño en la ecuación (5. Mediante la construcción de un polinomio de Taylor de orden 2 y exigiendo que f sea tres veces diferenciable. En otras palabras. Por sus características. la idea subyacente consiste en dividir las diferencias de las imágenes entre un número sucientemente pequeño. de h1 (h → 0) y. es decir. Esta función depende. el último sumando del polinomio es un escalar y su derivada es siempre cero: MATLAB no muestra entonces su derivada2 . es decir.1). obtenemos un resultado con una aproximación más exacta a la derivada: Nótese que el coeciente que acompaña a x2 es cero. en este caso. en efecto. Método de Diferencia Finita Como ya hemos mencionado.

.. gradient El Gradiente de una función es un vector que contiene sus primeras derivadas y.h2 . para cualquier vector de variables x = x1 . veamos entonces los comandos más comunes para la aproximación de derivadas numéricas (Mantilla 2004).. Este comando calcula entonces las derivadas parciales de una función en cualquier punto (x) en el que se desee hacer algún tipo de análisis. xn . de este modo. el error de truncamiento es de segundo orden .HX.138 GEDEM . La sintaxis de gradient es: [FX. Muchas de las rutinas utilizadas por MATLAB para encontrar derivadas se basan en el método de diferencia nita por su facilidad de cálculo. grácamente. x2 . . . . El resultado del uso del comando son dos matrices FX y FY que corresponden respectivamente a dF y dF (también dx dy extendibles al número de dimensiones en las que se trabaje). ∂x1 ∂x2 ∂xn (5. 5. Así. Ejemplo 5. .Versión Preliminar f (x) = f (x + h) − f (x − h) + O(h2 ) 2h (5. al evaluar la norma del gradiente. el gradiente de la función f = f (x) que depende de n variables corresponde a: f= ∂f (x) ∂f (x) ∂f (x) .2. Veamos qué sucede con la derivada aplicando gradient: Paso 1: Crear la función que nos interesa derivar en un M-le: 3 La cantidad de variables depende de la capacidad de la máquina que haga el proceso. De forma que.4) En este caso. . Calculemos el gradiente de la función f (x) = x4 (f : → 2) La derivada de la función f (x) = x4 es f (x) = 4x3 .5) MATLAB obtiene numéricamente el gradiente de una función hasta cierto número de variables3 mediante el comando gradient. .2.FY] = gradient(F.1.. a partir del método de diferencia nita. la dirección del vector nos señala si la función crece o decrece. la función a derivar es una parábola y la derivada tiene la forma de una función cúbica.HY) donde F es la matriz de imágenes de la función a derivar de tamaño n×n y HX y HY corresponden al espacio entre puntos a lo largo del eje X y al eje Y respectivamente (extendible al número de dimensiones en las que se trabaje).

Calculemos el gradiente de la función f (x. Si HX diere del espacio existente entre elementos del vector x. Paso 3: Calcular el gradiente numérico de la función mediante gradient: f1=gradient(z. z=ej2(x). A partir de los cálculos numéricos que hemos realizado y los métodos para gracar del capítulo 4. la función es creciente entre -10 y 10. la escala del gradiente es distinta a aquella de las imágenes de la función original y. 800 600 400 200 Y 0 −200 −400 f(x)=x f´(x)=4x3 −4 −3 −2 −1 0 X 1 2 3 4 5 4 −600 −5 Figura 5.^4.Nombre del Capítulo 139 function f=ej2(x) f=x.1. y) = x2 + y 2 en 3 . la función f (x) = x4 y su derivada están en la Figura 5. o sea. el gradiente calculado tiene la misma escala de las imágenes de la función. donde observamos que la derivada numérica de f (x) sí tiene una forma cúbica. como aquí la función sólo tiene una variable. además. cuya norma es 113. la matriz que contiene las imágenes de la función es un vector de tamaño 1 × n.3.1: Gráca de f (x) = x4 y su derivada Ejemplo 5. Paso 2: En otro chero determinar los datos de las variables: x=[-10:1:10].1) Donde el espacio denido entre cada valor de x es HX=1.1592. es decir.

y) = x2 + y 2 y su gradiente a escala distinta .PY) no tiene la misma escala de las imágenes de la función (Z). por ende.2. observemos la función f (x.m function f=ej3(x.PY]=gradient(Z.Versión Preliminar Paso 1: Escribir un M-le ej3. entonces.1) En este caso.2. A diferencia del Ejemplo 5. si n corresponde al número de elementos contenidos en x e y .140 GEDEM . [X. z=x.5:10]. el gradiente calculado (PX. Paso 3: Invocar el comando gradient [PX.y). HX y HY son diferentes al espacio ya denido entre cada valor de X e Y y. y=x.^2+y. Para apreciar mejor los resultados del ejercicio. de la variable y y de la función x=[-10:0.^2. Figura 5. Paso 2: Crear los datos de la variable x. que es el resultado de gracar las matrices PX y PY en MATLAB . y) = x2 + y 2 y su derivada en la Figura 5.Y]=meshgrid(x. la matriz de imágenes de la función es ahora de tamaño n × n.1.2: f (x. Z=ej3(X.y). la función tiene más de una variable.Y).

1 x=[0:h:5].5 4 4. al resultado del comando debemos dividirlo por la distancia.^(5/2))/h La respuesta F1 es una aproximación numérica a 5 x 2 : la derivada de la función 2 5 2 (La norma del vector F1 es 68. que es el resultado de gracar la salida de MATLAB . el código diff hace también la derivación numérica de una función.5 5 Figura 5. en contraste con gradient. 60 3 50 40 f(x) 30 20 10 f(x)=x5/2 f´(x)=(5/2)x3/2 0 0 0.3: Derivada de f (x) = x 2 mediante diff 5 .1.4. y el resultado que entrega MATLAB es la aproximación numérica a la derivada de la función. f (x) = x De forma concreta. el resultado de invocar el comando diff lo observamos en la Figura 5. Paso 2: Invocar el comando di F1=diff(x.5 2 2.5 x 3 3.3. Veamos en el Ejemplo 5.3. para utilizar diff se introduce la función a derivar y la distancia entre las coordenadas de la función. Sin embargo.5 1 1. Calculemos la derivada de la función f (x) = x 2 5 Paso 1: Crear los datos del espacio entre coordenadas y de la variable x h=0. para establecer correctamente la derivada con diff y visualizar el comportamiento de la derivada. lo que implica que es una función creciente). De esta manera.Nombre del Capítulo 141 5.4 cómo se utiliza diff: Ejemplo 5. diff A través del método de diferencia nita.

[X.5. Ejemplo 5.1.1)/h En la sintaxis del comando. Supongamos un conjunto de m ecuaciones con n variables: .Y]=meshgrid(x. Paso 3: Invocar el comando diff para hallar las derivadas parciales: ZX=diff(Z. y) = x0. en particular.*y.1.8. organizándolas en una matriz. al especicar diff(Z.5.142 GEDEM .1).5 y 0. fjac y fdjac Una matriz jacobiana hace una generalización del gradiente al calcular.5741. En el siguiente ejemplo observamos cómo realizar la derivación numérica de una función compuesta por dos variables.1. Encontremos la derivada numérica de la función f (x.1.4. El resultado que MATLAB nos proporciona indica que las funciones obtenidas (las derivadas parciales) son crecientes: la norma de las matrices ZX y ZY son mayores a cero.8 Paso 1: Crear la función a derivar en un M-le: function q=ej5(x.8730 y 126.1. 5.5.^.^. 125.Y). al especicar diff(Z.y). y=x. las derivadas parciales de varias funciones respecto a diferentes variables. Z=ej5(X.2) MATLAB encuentra para Z (primer término) la primera derivada (el 1 de la mitad) manteniendo ja la segunda variable (derivada parcial respecto a x) y. f=x. la rutina diff es extendible a casos de derivación con más variables. calcula la primera derivada parcial de la función respecto a y (mantiene ja la primera variable). Paso 2: En otro chero determinar los datos de las variables: h=0.y).2)/h ZY=diff(Z.Versión Preliminar Al igual que gradient. x=[0:h:10]. simultáneamente.

.a.P1..a. . Aunque el método utilizado por fdjac es análogo al aplicado por fjac.) Donde f es el nombre del M-le que contiene el sistema a derivar.Nombre del Capítulo 143 y 1 = f1 (x1 . su sintaxis es distinta: J=fdjac(’f’. . en cada una de sus las. son parámetros adicionales aplicables la función.. xn ) La matriz jacobiana J asociada al sistema anterior contiene.. Hallemos la matriz jacobiana en el punto (1. . x2 . xn ) . . 2. los elementos de una matriz jacobiana mediante los comandos fjac y fdjac4 ..2].[i. fm       (5. .1) del siguiente sistema de ecuaciones: z1 = x2 + y 2 z2 = x3 + y 3 Estas rutinas pertenecen al toolbox COMPECON Si por ejemplo se deseara calcular la derivada de la segunda ecuación con respecto a la primer variable el vector debería ser [1.. · · · . Es decir. [i.. x2 .. f es el nombre del M-le donde denimos el sistema de funciones. el gradiente de las funciones fi para todo i = 1.. La sintaxis de la rutina fjac es: MATLAB J=fjac(’f’. Veamos un ejemplo de cómo se usan los comandos fjac y fdjac: Ejemplo 5.. y m = fm (x1 . · · · .P2.P2. . · · · . 5 4 . .P2..j]. . por diferencia nita.P1..6. . pero a indica el punto donde se evalúa la derivada del sistema y P1. Al igual que antes.). x2 .P2.. el vector a dene el punto donde se va a calcular la derivada y P1. m.    J =   f1 f2 . .j] signica que se derivará la función j respecto a la variable i5 . .6) calcula. etc son parámetros adicionales a la función. xn ) y 2 = f2 (x1 .

y=v(2).[1. de tamaño 1×2.z2]. Ahora veamos cómo encontrar la matriz jacobiana.1).1): H(1.[1. Esta notación simplica sustancialmente el análisis porque.^(2).[1. H(2.1]. H Cabe notar que. tiene como primer elemento a la variable x y como segunda componente a y (el tamaño está determinado por la cantidad de variables en el ejemplo).^(2)+y.[1. a partir de fdjac: Paso 1: Crear la función que contiene el sistema de funciones en un M-le: function [z]=ej7b(v). x=v(1).1]) En este ejemplo observamos que fdjac es una generalización de las propiedaddes de fjac: mientras en fjac se requiere especicar qué ecuación se deriva respecto a .1): H=fdjac(’ej7b’. z=[z1.^(3).^(3)+y.Versión Preliminar Paso 1: Crear la función que contiene el sistema de ecuaciones en un M-le: function [z1. ambas derivadas evaluadas en el punto (1.^(2). Paso 2: En otro chero invocamos el comando y calculamos la jacobiana en (1. en el mismo punto. la matriz H está constituida por dos vectores de derivadas respecto a x e y : el primer vector la corresponde al gradiente de la primera ecuación y el segundo.2]. z2=x.z2]=ej7a(v). Paso 2: En otro chero invocamos el comando y calculamos la jacobiana en (1.[1. z1=x. x=v(1). z1=x.:)=fjac(’ej7a’. Así. z2=x.144 GEDEM . la denición computacional de las variables es distinta a aquella que hemos venido usando a lo largo del capítulo.^(2)+y. y=v(2).1]). en este ejemplo.1]). en el fondo. El vector v. al gradiente de la segunda ecuación.:)=fjac(’ej7a’.^(3). la matriz jacobiana es la derivada de una matriz respecto a un vector de variables.^(3)+y.

el último mesero contratado no tendrá a quien atender y. por tanto. de manera que se evitara caer en las complejidades técnicas propias del proceso productivo. Los economistas han logrado hacer esa abstracción por medio de la función de producción: una manera matemática de representar el producto como una variable dependiente de diferentes factores de producción. L. capital).7). en fdjac sólo se necesita denir el punto en que se quiere calcular la jacobiana.4. visible en la ecuación (5. Pero si se contratan más meseros que mesas. para hacer un simple estudio computacional. Por ejemplo. las empresas no pueden producir innitamente debido a que existe una restricción de recursos y capacidad que se lo impide. ya sea K o L. un aumento en la cantidad de un factor (por ejemplo. Supongamos entonces que una empresa tiene la siguiente función de producción: 1 1 f (K. Intuitivamente.7) Donde q es la cantidad producida por la rma. L corresponde a trabajo (cantidad de horas trabajadas) y los puntos suspensivos indican otros insumos utilizados en el proceso productivo... sin embargo.1. podemos contratar un mesero que lo haga. si tenemos un restaurante y queremos atender a todos los clientes. q = f (K. L) = K 3 L 3 . Desde el punto de vista económico. La forma más sencilla para analizar el efecto de un aumento de un factor sobre . K es el capital (uso de máquinas). Allí observamos que la función tiene rendimientos decrecientes en cada factor. No obstante.Nombre del Capítulo 145 qué variable y el punto de evaluación. debe producir más producto. esos incrementos disminuyen cada vez la productividad de ese factor. siempre y cuando las mesas les sean asignadas claramente.) (5. de forma que no atiendan dos veces la misma mesa. 5. . Veamos grácamente su comportamiento y su forma en la Figura 5. manteniendo constantes los demás factores. es interesante observar cómo las rmas eligen los niveles de producto y de uso de cada uno de los factores y. su aporte a la producción es prácticamente nulo. utilizaremos una función de producción simplicada de la forma q = f (K. L). Si contratamos otro mesero sería de gran ayuda para el mesero ya contratado. Aplicación: Una función de Producción tipo Cobb-Douglas El análisis económico de las empresas llevó a muchos a estudiar la forma más sencilla de abstraer la producción.5.

La contribución al producto resultante de agregar una unidad más de factor se denomina Productividad Marginal (P M g ) y su evaluación matemática se hace mediante derivadas parciales.Versión Preliminar Q 5 4 3 f(K. retomando nuestra función de producción f (K. al estudiar la modicación de un factor.2 k=[0:h:10].*(l.146 GEDEM . 1 1 P M gK = ∂q ∂K P M gL = ∂q ∂L 1 (5.a. . para hallar la derivada parcial invocamos gradient cuando ya hemos creado la función: Paso 1: Crear la función de producción en un M-le: function q=cobb(k. se dejan constantes todos los demás. es decir. Paso 2: Crear los datos pertinentes a la función (no negativos) y llamarla: h=0. L) = K 3 L 3 el producto es aislando ese factor de los demás por un instante. L) = K 3 L 3 . Su forma es descrita en la ecuación (5.^(a)). el análisis de la contribución de un factor lo hacemos mediante sus derivadas parciales respecto a capital o a trabajo.L) 2 1 0 10 8 6 4 2 L 0 0 4 2 K 6 8 10 Figura 5. a=1/3. l=k.8). Así.8) 1 De esta manera.4: La función de producción f (K.^(b)). q=(k. b=a.l.b).

Por ejemplo.5: Izquierda: Productividad Marginal del Capital. resulta en una gran cantidad de producto (el eje vertical).L]=meshgrid(k.2. es posible derivar una función f : I → más de una vez. ante un aumento del capital en algo más que cero (la parte más izquierda de la gráca). Figura 5.Nombre del Capítulo 147 [K. Q=cobb(K. se establecen . A partir de distintos métodos como polinomios o diferencias nitas.5. Derecha: Productividad Marginal del Trabajo.h. Observamos estos resultados en la Figura 5. son decrecientes (cada unidad más de cada factor aumenta el producto en menos que esa proporción).a. la productividad marginal del capital (la gura de la izquierda) muestra cómo. Paso 3: Invocar el comando gradient: [PK. 5.l). Derivación de orden superior Como ya hemos explicado.L. sin embargo.PL]=gradient(Q.b). las derivadas parciales de la función respecto a K y L respectivamente.h) Los resultados de esta operación son PK y PL. un incremento muy grande (la parte de más a la derecha) implica un crecimiento casi nulo del producto (la gráca de la función se hace cada vez más cercana a cero). de otro lado. donde tenemos que ambas derivadas son positivas (al incrementar los factores crece el producto).

A partir de la sintaxis ya denida del comando. en polinomios muy grandes. de las funciones mismas en puntos particulares6 . Hallemos la segunda derivada del polinomio f (x) = 5x4 + 9x3 + 8x2 + 3x + 1. el último número en el vector de respuestas es un escalar. que corresponde al resultado que habíamos hallado en la solución analítica. Analíticamente. 6 . en su defecto. incluso. En esta sección presentamos los códigos con los que es posible hacer derivación de orden superior en MATLAB y cuya utilidad está atada a aplicaciones económicas y a herramientas de gran utilidad para temas más avanzados en economía y otras ciencias. Ejemplo 5. Hay que resaltar que MATLAB cuenta de derecha a izquierda a partir de x0 . la primera derivada de f (x) es f (x) = 20x3 + 27x2 + 16x + 3 y la segunda es f (x) = 60x2 + 54x + 16. invocamos a la rutina dos veces: Q=polyder(polyder(P)) El resultado que entrega MATLAB es [60 54 16]. La ventaja del uso de polyder radica en la facilidad para hallar.148 GEDEM . polyder Al igual que la derivación de primer orden de un polinomio. derivadas muy altas debido a la precisión numérica de MATLAB y lo tedioso que signica hacer una gran cantidad de derivaciones. Veamos el siguiente ejemplo para considerar polyder en el caso de derivadas cuyo orden sea mayor a uno.7. 5. en este capítulo se aborda la aproximación de funciones por medio de la Expansión de Taylor. ahora es necesario que el input sea la derivada anterior o.Versión Preliminar aproximaciones bastante precisas de las derivadas e. para llegar a la derivada superior hay que invocar el código tantas veces como sea requerido.1.2. polyder permite continuar derivando varias veces en una sola dimensión. Observemos el resultado mediante el uso de polyder: Paso 1: Escribimos en MATLAB interesa derivar P=[5 9 8 3 1] el vector de coecientes que nos Paso 2: Ahora. En particular. es decir.

se llama al comando dos veces más.9) ··· La forma más fácil de hallar la hessiana con gradient para. Paso 3: Calcular los gradientes numéricos de la función mediante gradient: PX2=gradient(gradient(z.1) El resultado de aplicar gradient es evidente en la Figura 5.. para hallar la segunda derivada con gradient.8. por ejemplo. supongamos. . donde observamos la igualdad existente entre el resultado analítico y el resultado numérico. Paso 2: En otro chero determinar los datos de las variables: x=[-10:1:10]. z=ejemseis(x). tras haber invocado la rutina y haber obtenido los vectores FX y FY que corresponden a las derivadas respecto a x e y respectivamente. Así. ∂2f ∂xn        (5.     Hf (ˆ) =  x   ∂2f ∂x1 . el nuevo input es el gradiente anteriormente encontrado. .1). Asimismo. 9 4 2 Paso 1: Crear la función a derivar en un M-le: function f=ej7(x). . pero esta vez introduciendo cada vez la matriz de imágenes . la última analíticamente es: f (x) = − 2 x− 3 . con gradient se obtienen resultados muy precisos para derivadas de orden superior difíciles de calcular analíticamente. Hallemos la segunda derivada de la función f (x) = x 3 . al aplicar gradient a una función multivariada. ∂f ∂xn ∂x1 ··· . . Tras hacer las dos derivaciones correspondientes. f=x. Ejemplo 5.2. una función de dos variables es.2. . gradient Las derivadas de orden superior.^(2/3). son fáciles de calcular mediante el comando gradient.Nombre del Capítulo 149 5. ∂f ∂x1 ∂xn .9). en el caso de una sola variable. hallamos la matriz hessiana: una matriz que agrupa las segundas derivadas de una función y tiene la forma puntualizada en la ecuación (5.6.

1).6 5 1.3: f (x.^2.^2+y.9.9 para observar el uso de gradient en funciones multivariadas: 2 Ejemplo 5. la matriz corresponde a: 2 0 0 2 donde observamos que las derivadas cruzadas son iguales. tras hacer las sucesivas derivaciones.8 0 0.6: Las dos primeras derivadas de f (x) = x 3 resultante de la primera derivación. [X. Paso 2: En otro chero determinamos los datos de las variables: x=[1:5].2 2 1 PX2 0. y) = x2 + y 2 .PY]=gradient(Z. Paso 3: Calcular el gradiente numérico de la función mediante gradient: [PX.Y). .Versión Preliminar 2/3 6 Segunda Derivada de f(x)=x 2/3 1.Y]=meshgrid(x. f=x.4 0.y). Analíticamente. Paso 1: Crear la función a derivar en un M-le: function f=ej9(x.y).150 Primera Derivada de f(x)=x 1. Hallemos la matriz hessiana de la función descrita en el Ejemplo 5.4 4 3 1. algo característico de la hessiana.6 −1 0. Veamos entonces el Ejemplo 5. Z=ej9(X.8 GEDEM .y=x.1.2 0 −10 −8 −6 −4 −2 0 x 2 4 6 8 10 PX 1 −2 −3 −4 −10 −8 −6 −4 −2 0 x 2 4 6 8 10 Figura 5.

Calculemos la tercera derivada de la función f (x) = x 3 .5 1. .5 1.10).5 1. para calcular derivadas de más allá de segundo orden.5 1 1 1 1 1 PYY = 1 1 1 1 1 1. que no era algo desconocido.5 1. Veamos el siguiente ejemplo para establecer numéricamente cómo se halla la tercera derivada de una función: Ejemplo 5.PXY]=gradient(PX. El hecho de que los resultados de las columnas más exteriores para el caso de PXX y el de las las más exteriores para el caso de PYY dieran de 2 sucede porque. cien elementos.5 1. como observamos en las matrices (5.5 2 2 2 2 2 1.10) En el caso de funciones univariadas. los resultados de PXX y PYY no son tan concretos como los anteriores.5 1.5 1.PYY]=gradient(PY.5 2 2 2 2 2 1.5 1. Pero la la y la columna del centro son concluyentes: el resultado de la derivación. Veamos cuál es el resultado de la derivación numérica: 27 7 4 10 Paso 1: Crear la función a derivar en un M-le: function f=ej10(x). la segunda corresponde a f (x) = 70 x 3 y la tercera 3 9 1 es f (3) (x) = 280 x 3 .5 1 1 1 1 1 (5. por ejemplo. PXX = 1 1 1 1 1 1. Si generalizamos el resultado para más de cuatro elementos a. es 2.5 1.1) El resultado de MATLAB nos muestra muy claramente que PXY=PYX=0. el resultado es mucho más fuerte y la mayoría de los componentes de las matrices PXX y PYY serán 2.5 1.Nombre del Capítulo 151 Paso 4: Invocar el comando gradient para hallar los componentes de la matriz hessiana: [PXX.5 1. f=x.1. en ambos casos. los resultados de las esquinas no tienen otro término con el cual hacer diferencia y MATLAB automáticamente les asigna una aproximación. al ser gradient un método basado en diferencias.1.^(10/3).5 1.10.1) [PYX. no obstante.5 1. La primera derivada de f (x) es f (x) = 10 x 3 .5 1.5 1. se replica el proceso de encontrar la segunda derivada: se determina la derivada inmediatamente anterior a aquella que deseamos encontrar.5 1.

no obstante. cuya norma es positiva e igual a 129. Tercera Derivada Numerica 10 10 Tercera Derivada Analitica 9 9 8 8 7 7 6 PX3 6 5 5 4 y −8 −6 −4 −2 0 x 2 4 6 8 10 4 3 3 2 2 1 1 0 −10 0 −10 −8 −6 −4 −2 0 x 2 4 6 8 10 Figura 5. para determinar la derivada de orden superior para. una función univariada.1). diff La rutina diff también es útil para hallar derivadas de orden superior.4025 (o sea.2. donde el resultado analítico y el numérico son ligeramente distintos a causa del error de truncamiento inherente a la aproximación numérica (O(h2 )). hay que introducir al comando la derivada inmediatamente anterior (si queremos hallar la cuarta derivada.1) El resultado descrito por la matriz PX3. es la respuesta numérica a invocar tres veces gradient sobre la función f (x). .152 GEDEM .1). El resultado de gracar PX3 lo observamos en la Figura 5.Versión Preliminar Paso 2: En otro chero determinar los datos de las variables: x=[-10:10]. el input es la tercera derivada y así sucesivamente). z=ej10(x). El siguiente ejemplo muestra claramente cómo se trabaja con diff en funciones univariadas. Paso 3: Calcular el tercer gradiente numérico de la función mediante gradient: PX3=gradient(gradient(gradient(z.7: La tercera derivada de f (x) = x 3 mediante gradient y directamente 2 5. la tercera derivada de la función es creciente).7.3. por ejemplo.

En el Paso 2 tomamos Z derivándolo respecto a x dos veces (el valor correspondiente a ZXX) y.2) En este ejemplo apreciamos el uso de los números de acuerdo al orden de la derivada que se siga.1. Calculemos la segunda derivada del Ejemplo 5. Paso 1: Crear la primera derivada de la función: F1=diff(x. hay que especicar de qué orden y en qué dimensión es la derivada (o sea. después.^(5/2))/h Paso 2: Invocar nuevamente el comando: F2=diff(F1)/h La salida F2 es la segunda derivada numérica de la función x 2 que es una función creciente (la norma del vector es 86. y) = x2 + y 2 .2).12 es evidente cómo es el uso de diff en el caso de más de una variable.2. De otro lado. los resultados son los mismos . Paso 1: Llamar la primera derivada invocando el comando diff: ZX=diff(Z.1. Calculemos la segunda derivada de la función del Ejemplo 5.0233).1.1.4: f (x) = x 2 . En el Ejemplo 5. Cabe anotar que el primer número de la sintaxis está determinando el orden de la derivación.9: f (x.11. Paso 2: A partir de estas derivadas.1).1) ZYX=diff(ZY. encontrar las derivadas respecto a cada variable: ZXX=diff(Z.1) Paso 3: Establecer las derivadas cruzadas: ZXY=diff(ZX. mientras el segundo establece cuál es la variable respecto a la que se deriva.2. en el Paso 3 tenemos las derivadas cruzadas: a partir del Paso 1 obtenemos la derivada de Z respecto a x para luego derivar con y (ZXY) y.Nombre del Capítulo 153 5 Ejemplo 5. Para examinar funciones multivariadas. el siguiente paso es el caso exactamente inverso (ZYX). ZY=diff(Z.12. haciéndolo respecto a y dos veces (el valor de ZXY).2) ZYY=diff(Z. 5 Ejemplo 5. si está derivando respecto a x o a y ). además.

-9): al observar la gráca de la función en la Figura Esta rutina pertenece al toolbox COMPECON. . como ya vimos. Paso 1: Crear la función a derivar en un M-le: function f=ej11(x.4. Existe otro algoritmo que encuentra de manera más exacta la hessiana: fdhess7 permite hallar en MATLAB la segunda derivada de una función calculada en uno o varios puntos. donde f corresponde al nombre de la función del modo fval = f(x). las otras derivadas son más elocuentes que con gradient: todos los elementos de las matrices ZXX y ZYY son 2.10. y) = x3 − 3xy 2 en el punto (10. es decir.y).varargin). Esto se percibe en la ecuación (5.x.11) 5. Paso 2: Calcular la segunda derivada de la función mediante fdhess: H=fdhess(’ej11’. impreciso cuando se asignan pocos datos al proceso. El resultado del comando es H. f=x. la segunda derivada en el punto de evaluación. fdhess Hallar hessianas con gradient o diff puede ser tedioso y. La sintaxis de este comando es H=fdhess(f.Versión Preliminar que los del Ejemplo 5.^3-3*x*y^2. Obtengamos la segunda derivada de la función f (x. Ejemplo 5. ZXX = 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 PYY = 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 (5.13.-9) MATLAB 7 muestra un resultado numérico que nos permite analizar la forma de la función en el punto (10.154 GEDEM .8: ZXY y ZYX son cero.-9) y hagamos su análisis. sin embargo. x es el punto de evaluación y varargin son argumentos adicionales para f (opcional).2.11).

14. Observemos cuál es la forma de la función f (x) = x3 + y 3 en el punto (0. vemos que el resultado del cálculo es cero. por lo que se concluye que allí la función no es creciente ni decreciente y que su tasa de crecimiento es exactamente igual a cero.-9). y) = x3 − 3xy 2 Ejemplo 5. es decir. conforme se evalúe fdhess en un punto donde la pendiente sea muy grande. Figura 5.Nombre del Capítulo 155 5.0) Tras aplicar fdhess en este ejemplo.^3. la función es creciente y. al cotejarla con la solución de MATLAB tras la ejecución de fdhess (60).y). el resultado del comando es progresivamente mayor.0) Paso 1: Crear la función a derivar en un M-le: function f=ej12(x.9: la función x3 + y 3 en (0. esta respuesta nos dice algo evidente: la función en el punto (10.8: La función f (x. . MATLAB conrma lo que grácamente observamos en la Figura 5.0) es plana.8 vemos que. Paso 2: Calcular la segunda derivada en el punto (0.0.0) mediante fdhess: H=fdhess(’ej12’. f=x.^3+y.-9) crece a una tasa creciente y la magnitud del resultado nos da la dimensión de ese crecimiento. en el punto (10.

Una forma de hacerlo es. para un x cercano a a: f (x) = f (a)+f (a)(x−a)+ f (a) fn f (a) (x−a)2 + (x−a)3 +· · · (x−a)n +E(x. n) 2! 3! n! (5.12) que es llamado desarrollo de la función con una Expansión de Taylor. El término E(x. 2 Paso 1: Crear la función a derivar en un M-le: function f=ej13(x) f=5*x.^(2/3)-32. a. a. 2005). Cuando l´ E(x.15.9: La función f (x) = x3 + y 3 5.Versión Preliminar Figura 5. n) = ım n→∞ 0 se dice que el desarrollo del polinomio alrededor de a converge a f(x) (Monsalve.156 GEDEM . Expansión de Taylor A diferencia de las funciones. n) determina el error de la aproximación a la función f (x).2. Veamos la función f (x) = 5x 3 − 32 y su aproximación de grado tres por polinomio de Taylor alrededor del punto x = 12. Ejemplo 5. los polinomios son mucho más manejables desde la perspectiva del cálculo operacional y nos permiten un acercamiento más sencillo al problema que se esté tratando. .5. a. Por eso. es muy común aproximar funciones hallando sus derivadas superiores y organizándolas por medio de polinomios.

evidente en la Figura 5.1:18].Nombre del Capítulo 157 Paso 2: En otro chero determinar el punto donde se aproxima y los datos pertinentes de la función: xa=[-2:0.:)=(((X(k. Paso 3: Construir las derivadas de la función mediante un proceso iterativo: for i=2:4 X(i.:)). los errores crecen y la aproximación pierde sentido. es decir. end poltaylor=sum(POL. La diferencia entre ambas grácas está determinada por un término de error que es inversamente proporcional a aumentos en el orden de la aproximación.6.:)=ej13(xa). la aproximación es útil para acercarse a la función solamente en un punto previamente establecido y su vecindad porque. Supongamos que las rmas son racionales y desean maximizar benecio. De esta forma.:)=gradient(X(i-1.2. 5.:).*(xa-x). Cada una de las rmas i tiene una función de 2 qi costos cuadrática de la forma 2 . end Paso 4: Encontrar el polinomio de Taylor alrededor de 12: for k=1:4 POL(k. ¾Cuál es el equilibrio de esta economía? .10 junto a la gráca de la función. si incrementaramos arbitrariamente el número de derivaciones obtendríamos una aproximación más precisa a la función en el punto 12 y su vecindad.^(k-1)))/factorial(k-1)). X(1. al alejarse de ese punto. x=12*ones(size(xa)).1) El resultado es una aproximación de Taylor de grado tres. Aplicación: El Equilibrio en el Modelo de Cournot Consideremos un mercado compuesto por dos rmas que producen un bien homogéneo y que enfrentan una función de demanda p = 100 − Q donde Q es la cantidad agregada del bien (Q = q1 + q2 . donde q1 es la cantidad producida por la rma 1 y q2 es el producto de la rma 2).

obtenemos un punto crítico de la función.Versión Preliminar f(x) Aproximacion Punto x 20 10 0 −10 f(x) −20 −30 −40 −50 −60 −70 −2 0 2 4 6 8 10 12 14 16 18 x Figura 5. La empresa i vende una cantidad qi y. recibe un total de pqi . 2 π = pqi − c(qi ) (5. estamos hablando de un mínimo. Como también enfrenta costos. para saber si este resultado es un máximo o un mínimo debemos recurrir a la segunda derivada: si es positiva. dado que acepta el precio que tiene en el mercado. Si derivamos parcialmente la función de benecio de la rma (o sea.158 30 GEDEM . si es negativa.13) donde π es el benecio.14). el valor de la variable que hace que la primera derivada sea cero es un punto crítico de la función (léase máximo.10: La función f (x) = 5x 3 − 32 y su aproximación de grado tres Primero debemos establecer cuál es el problema que quiere resolver cada una de las rmas. la derivada es parcial porque la rma 1 controla la producción de sus fábricas pero no la cantidad de la rma 2) y lo igualamos a cero. No obstante. un máximo. establezcamos la primera y la segunda derivada de la función para la rma 1: π = (100 − Q)qi − Paso 1: Escribir un M-le cournot.m .14) 2 Como el problema es maximizar la ecuación (5. el benecio de la rma i es la diferencia entre sus ingresos y sus costos. mínimo o simplemente un cambio en la forma de la función). En cálculo. Veamos entonces cuál es la función de benecio común para esta economía: 2 qi (5.

el bien producido por una de las rmas es sustituto de la otra. De otro lado. El equilibrio de este modelo está caracterizado por el punto de corte entre ambas funciones de mejor respuesta: esa es la cantidad a producir de cada una de las rmas. una buena posibilidad de encontrar el equilibrio computacionalmente es suponer de antemano que la cantidad producida . el punto crítico que hallemos para el problema es un máximo.QD.PYY]=gradient(PY.11. Cada una de las funciones de mejor respuesta de este problema están descritas en la Figura 5. dado que son la mismo tipo de bien).QD). pi=(q1.*(100-q1-q2))-((q1.1.q2). por tanto. [QU. Z=cournot(QU. Paso 2: Crear los datos de la variable q1. debemos observar cuáles son los signos de los elementos de PXX para saber si estamos encontrando un máximo o un mínimo. Como el problema es simétrico (ambas rmas maximizan la misma función de benecio).1). entonces la primera derivada de una función igualada a cero es la Función de Mejor Respuesta de la rma.11 con el punto negro. ante cualquier eventualidad con el producto de la rma 1.PYX]=gradient(PX. Paso 3: Invocar el comando gradient para las derivadas [PX. el consumidor puede desplazar su preferencia hacia el producto de la rma 2. Al igualar PX a cero determinamos cuál es la respuesta óptima de la rma 1 ante cambios en la producción de la 2.1.PX.[0 0]).1. de la variable q2 y de la función q1=[0:1:100].1) [PXY.0) con contour (QU.PY]=gradient(Z.QD]=meshgrid(q1. es decir. La conclusión es la esperada: cada componente de PXX es negativo. resultado que habíamos supuesto desde el principio al armar que ambas hacían el mismo producto (en otras palabras. [PXX. Como nuestro interés es la derivada parcial de la ecuación (5. gráca que se obtiene de hacer la curva de nivel de la primera derivada en (0. evidente en la Figura 5.q2). que ja cuánto es óptimo producir ante cualquier estrategia de su competidora.14) respecto a la variable bajo el control de la rma 1 (q1 ).^2)/2).1). q2=q1.Nombre del Capítulo 159 function pi=cournot(q1. el resultado de ambas derivadas cruzadas es el mismo y es negativo.

else 0. if QU(i(n). Esta forma es la que se desarrolla en el siguiente script para localizar el equilibrio: [i. de esa forma. se establece dónde están los puntos de la curva de nivel de PXX en (0. o sea. cada una de las rmas produce una cantidad igual a 26 unidades. que sería entonces q2 y. end end ∗ ∗ ∗ Así. for n=1:length(i). el equilibrio qi es l=q1 = 26 y m=q2 = 26.j(n))==QU(j(n). . por ende.i(n)) l=i(n). al tomar el gradiente para la primera derivada. para después determinar cuáles de los componentes de los vectores posición en la matriz de datos iniciales son iguales.Versión Preliminar 90 Funcion de mejor respuesta Firma 1 80 70 60 q 2 50 40 30 q* 2 20 Funcion de mejor respuesta Firma 2 10 0 0 10 20 30 40 50 60 70 80 90 100 q* 1 q 1 Figura 5. m=j(n). trabajáramos con la rma 2. aquella matriz que habría que examinar sería la segunda.0). La diferencia radica en la variable de control de la rma en cuestión.11: El duopolio de Cournot de ambas rmas es la misma.j]=find(PX==0). en vez de analizar todo el problema a partir de la rma 1.160 100 GEDEM . Este resultado es exactamente el mismo que aquel que se logra si.

a) Encuentre y graque en MATLAB cada rma. c) Encuentre todas las segundas derivadas. que se dene como: σ=− cu (c) u (c) . 3) y a > 0. No obstante. cuando realmente los necesiten. Una empresa tiene unos costos en función de la cantidad de la forma c(q) = 5q + 15. 3.3. donde qi es la cantidad producida por la rma i (i = 1.Nombre del Capítulo 161 5. Una empresa tiene la siguiente función de producción: q = K 3 L 3 a) Graque este función en MATLAB . Es muy común que las personas compren seguros. es necesario que el agente que compre el seguro sea averso al riesgo y. se recurre a una medida conocida como Coeciente de Aversión al Riesgo de Arrow-Pratt. c) ¾Que sucede si las rmas 1 y 2 se unen? Graque nuevamente y encuentre el equilibrio. Encuentre numéricamente la derivada de f (x) = 0. ¾Qué tipo de rendimientos presenta esta empresa? 2.10 la aproximación da ciertos saltos alrededor de cero. ¾Cuánto es su costo jo? ¾Son estos costos marginales constantes? Si así lo son. Encuentre numéricamente los costos marginales de la rma. para determinar esa aversión al riesgo. de forma que transeran recursos de un estado bueno a un estado malo. ¾Podría explicar por qué la función tiene este comportamiento? ¾Qué sucede en la aproximación cuando está alrededor de cero? 6. Asuma que los costos de cada rma son cero. b) Derive la función respecto al capital y al trabajo con gradient. Ejercicios 1. para que este principio se cumpla. En la Figura 5. La curva de demanda agregada es P (Q) = a − q1 − q2 − q3 .025x3. 5. las funciones de mejor respuesta de 1 2 b) Halle por métodos numéricos el equilibrio de Cournot de esta economía. 2. d) ¾Qué tipo de rendimientos presenta? ¾Qué relación tienen los coecientes de la función con los rendimientos? 4. Tres rmas producen un bien homogéneo.71 −4x mediante diff y graque el resultado en MATLAB .

T son los impuestos.16). es decir. L)) respecto al trabajo.8. además. Las variables exógenas. G el gasto público. y representa al producto y dy son sus cambios.6. dM y dW y las variables endógenas (cuyo valor se determina al cambiar una variable . r la tasa de interés. dr. La siguiente función de utilidad es muy utilizada en medición de la aversión al riesgo y se llama la función de Aversión Constante Relativa al Riesgo CRRA por sus siglas en inglés (Constant Relative Risk Aversion):   c1−θ Si θ > 0. FL y FLL son la primera y la segunda derivada de la función de producción (F (K. Haga una programación que realice una aproximación de grado seis para la 1 función f (x) = x2 − 4x 3 en el punto x = −9. el coeciente de aversión al riesgo depende de las primeras dos derivadas de la utilidad.100).15) y representa el equilibrio en el mercado de bienes (producto de la economía igual a demanda de cada sector) y LM.13 evalúe con fdhess los puntos (75. encuentre el coeciente de aversión al riesgo de Arrow-Pratt y graque en MATLAB . determine las dos primeras derivadas numéricas de la función CRRA. 8. la ecuación (5. W el salario y dT. En la función determinada en el Ejemplo 5. monetario y de trabajo en una economía y se llaman IS-LM. ¾Qué puede decir respecto a las tasas de crecimiento de la función? Comparando los resultados con la Figura 5. ¾Qué puede concluir de la forma de la función? ¾Es cóncava? ¾Es convexa? Tome distintos puntos y determine qué sucede con el valor de fdhess conforme se va acercando a las esquinas y alejando de cero.Versión Preliminar En otras palabras. dG. ¾Qué puede establecer a partir de las grácas? 7. Las siguientes ecuaciones IS = LM = 1 (−c dT + I dr + dG) − dy 1−c M P dM dW − M W − mr dr − dy (5. es el equilibrio en el mercado monetario (oferta de dinero igual a demanda de dinero). dM y dW sus respectivos cambios.162 GEDEM . aquellas cuyo valor se establece por fuera del modelo son dT.15) (5. IS es la ecuación (5. dG. 9. M la masa monetaria.16) 1 my − FLL M 2 FL P representan el equilibrio de los mercados de bienes. Así. θ = 1 u(c) = 1−θ ln c Si θ = 1 Si θ = 0.-100) y (-75.

se invoca al mismo comando. 3*x^2. Veamos entonces cómo se puede derivar con objetos simbólicos.5. Ejemplo 5.17. de forma que. Para encontrar la derivada de una constante también debe denirse la constante como una expresión simbólica: Ejemplo 5.1 y dr∗ = 0. F (K.08.02. Suponiendo que las variables exógenas no cambian (dT = dM = dW = 0) y que c = 0. es decir. Paso 1: Denir la expresión simbólica: c=sym(’7’) . Cuando queremos hallar la segunda derivada de la función. el 2 muestra de qué orden es la derivada que MATLAB está calculando. I = −1.16.9. L) = K 0. Apéndice Otra forma de derivar en MATLAB es con el toolbox Symbolic que crea un objeto simbólico. la rutina que permite obtenerlas es diff.Nombre del Capítulo 163 exógena) son dy y dr.2).5 . En este caso. determine la matriz jacobiana alrededor del punto dy ∗ = 0. y) = x3 mediante una expresión simbólica Paso 1: Denir la expresión simbólica syms x Paso 2: Introducir la función a derivar f=x^3 Paso 3: Invocar el comando di diff(f) El resultado de este proceso es la derivada de f respecto a x. pero especicando el grado de la derivación: diff(f. analíticamente.4.4. En el caso de las derivadas. P = 0. 5. se puedan hacer diferentes operaciones matemáticas con ellas.2. una estructura de datos que almacena una representación característica del símbolo. El comando syms permite construir variables y expresiones simbólicas. Derivemos la función f (x.09 y mr = −0. Derivemos c = 7 mediante una expresión simbólica.5 L0. my = 1. M = 0.

y) MATLAB mostrará entonces 5*x^3*y^4+z que es.Versión Preliminar Paso 2: Invocar el comando di: diff(c) El resultado de este proceso es ans=0. z) = x3 y 5 + yz respecto a y mediante expresiones simbólicas Paso 1: Denir las expresiones simbólicas syms x y z Paso 2: Introducir la función que queremos derivar f=x^3*y^5+y*z Paso 3: Invocar el comando di diff(f. la derivada parcial de f respecto a y .19. Hallemos la derivada de la matriz A= mx 5 m cos(x) −x sen(m) 3x + 5m 2 Paso 1: Denir las expresiones simbólicas syms m x Paso 2: Introducir la matriz que queremos derivar A=[m*x^(2/5) m*cos(x).164 GEDEM . porque 7 no es una expresión simbólica. y. Hallemos la derivada parcial de f (x.18. diff también permite encontrar la derivada de matrices constituidas por elementos simbólicos de la siguiente manera: Ejemplo 5. simplemente. Veamos la forma en la que se trabaja el comando cuando buscamos hallar derivadas parciales de expresiones con más de una variables: Ejemplo 5.-x*sin(m) 3*x+5*m] Paso 3: Invocar el comando di diff(A) . Si se hubiese ejecutado directamente diff(7) la respuesta sería [].

automáticamente MATLAB lo hará con x y.6) 1 La respuesta es F1. La sintaxis de esta rutina es. como en este caso.Nombre del Capítulo 165 El resultado de invocar diff es la derivada de la matriz A respecto a x. denir la expresión simbólica.3.20.17) − sen(m) De otro lado. llamar la función y determinar el orden y el punto de aproximación: F1=taylor((x^(3/5)-7*x). tras haber simplicado el resultado. también es posible hacer Expansiones de Taylor analíticamente con el comando taylor. en primera instancia. Aquí. para luego invocar el código con la función a aproximar. determinado en la ecuación (5. el comando ejecutó una derivación elemento a elemento tomando como input la matriz A. 3 Paso 1: Denir la expresión simbólica syms x Paso 2: Invocar el comando.   2 m 5 3 x5 −m sen(x) 3   (5. el default del programa es derivar con la variable más cercana a x entre las presentes en la función. Aproximemos la función f (x) = x 5 − 7x alrededor de 6 mediante una Expansión de Taylor de tercer orden.17). 3 3 . es decir. si x no existe en la función. no se especica respecto a cuál variable el usuario quiere derivar. Además cuando. que es la Expansión de Taylor de tercer orden alrededor de 6 para f (x). Veamos el siguiente ejemplo para observar el uso de taylor: Ejemplo 5. el orden y el punto alrededor del que se hace la aproximación. 6 5 − 42 + 1/10 63/5 − 7 (x − 6) − 300 6 5 (x − 6)2 .

Versión Preliminar .166 GEDEM .

Así. la suma tiene la resta.Capítulo 6 Integración Lida Quintero. como herramienta para determinar áreas de regiones cuyos límites no son rectas. 167 . la cual tiene dos interpretaciones: La integración como un proceso para determinar la función cuando se conoce su derivada. la multiplicación la división. la integración. Diego Corredor Introducción En matemáticas observamos cómo a cada operación le corresponde una inversa. y la derivación. determinar el impacto de un proyecto sobre el bienestar a partir de los excedentes del consumidor y productor. entre otras aplicaciones. En el capitulo anterior vimos la derivación y ahora nos corresponde exponer su inversa. evaluar el ingreso total como el área bajo la curva del ingreso marginal y como herramienta para solucionar ecuaciones diferenciales que representen la dinámica de sistemas económicos. hallar una función de Costo Variable cuando conocemos la de Costo Marginal. En economía la integración es útil para. lo que equivale formalmente a: f (x)dx = f (x) Y por otro lado.

168

GEDEM - Versión Preliminar
Directos Algebraico Indenida (Antiderivada) Sustitución Partes
polyint

Métodos de solución Computacional1

Syms int Integración Algebraicos (evaluados) Directos Sustitución Partes Denida Métodos (Área bajo la curva) de solución Regla del Trapecio Regla de Simpson Numéricos (computacional)
trapz

quad

quad8

Cuadratura Gaussiana
quadl

Para hallar integrales existen varios métodos: los analíticos o algebráicos como son los de sustitución y por partes, y los numéricos como regla del Trapecio y regla de Simpson. Sabemos que los métodos útiles computacionalmente son los numéricos, por tanto, en este capítulo estudiaremos los principales métodos numéricos de integración que MATLAB utiliza y que desde luego nos sirven sólo para la integración denida. En cuanto a la indenida, veremos en la primera sección la integración por regla del exponente y otro método en el apéndice de este capítulo. En la segunda sección introducimos ya un método numérico: la Regla de Trapecio; en la tercera abordaremos la regla de Simpson; y por último, el cálculo de integrales dobles.

6.1. Integración por Regla del Exponente
Es uno de los procedimientos directos de integración indenida algebraica más simples, y es aplicable únicamente a expresiones cuyo exponente es constante2 :

xn dx =
1 2

xn+1 +C n+1

Apéndice de este capítulo Excepto cuando n = −1.

INTEGRACIÓN

169

Con el comando polyint, MATLAB descompone el polinomio a integrar en varios monomios y aplica a cada uno esta regla. Sin embargo este procedimiento presenta la restricción de ser aplicable únicamente a polinomios de exponentes naturales (N). Su sintaxis es:

L=polyint(p,k)
Donde p es el vector la con los coecientes del polinomio a integrar y k el valor de la constante de integración3 . Y como salida obtenemos el vector la L con los coecientes del polinomio integrado.

Ejemplo 6.1. Vamos a calcular la integral de f (x) = x4 − 8x2 + 3x, es decir, vamos
a calcular:

(x4 − 8x2 + 3x)dx

Paso 1. Introducimos los coecientes del polinomio como vector
p=[1 0 -8 3 0] % Vector entrada

Paso 2. Utilizamos el comando polyint
in=polyint(p) % Sintaxis
Y obtenemos in = 0.2 0 -2.6667 1.5 0 0 Basados en este resultado, sabemos que:

(x4 − 8x2 + 3x)dx = 0.2x5 − 2.6667x3 + 1.5x2

Ejemplo 6.2. Vamos a calcular los costos variables de una empresa cuyos costos
marginales están dados por la siguiente función:

CM g(q) =
3

q3 + 2q + 5 3

Para hacerlo debemos hallar ( q3 + 2q + 5)dq asumiendo k = 0 ya que estamos calculando los costos variables y no los totales.
3

Si se omite,

MATLAB

asume k=0.

170

GEDEM - Versión Preliminar

Paso 1. p=[1/3 0 2 5]; % Costo Marginal Paso 2. CV=polyint(p) % Sintaxis con k=0
Obtenemos: CV =

0.0833 0 1 5 0

Hemos hallado la función de costos variables CV (q) = 0.0833q 4 + q 2 + 5q por medio de una antiderivada, es decir, integrando la función de costo marginal correspondiente.

6.2. Regla del Trapecio
La Regla del Trapecio es considerada como un método de aproximación lineal porque utiliza líneas rectas para aproximarse a una función dada f (x), lo que permite calcular b 4 a f (x)dx, de la forma como se muestra en la Figura 6.1.
Regla del Trapecio

x

y0=f(x0) yn

yn−1

−− ∆ x −−

y a=x0 x1 x2 . . . xn=b

Figura 6.1: Regla del Trapecio En el intervalo [a, b] hay subdivisiones (nodos) de amplitud ∆x, en donde se traza una recta entre las imágenes consecutivas, formando un trapecio. De esta manera, el
Esta notación no es la misma que utilizamos en los capítulos anteriores, en los que x0 , x1 , . . . , xn eran variables. Aquí los utilizamos para representar valores numéricos de la variable x, siguiendo a Draper (1979).
4

INTEGRACIÓN área del primer trapecio está dada por:

171

1 (y0 + y1 )∆x 2 El área total de los n trapecios, es decir el área bajo la curva es:
b

f (x)dx
a

∆x

1 (y0 + yn ) + 2

n−1

yi
i=1

que es conocida como la regla del trapecio para la integración aproximada.

MATLAB aplica este método por medio del comando trapz. Para utilizarlo es
necesario denir un vector x que determina el intervalo de integración [a, b] y la distancia entre los nodos (∆x) 5 . Además es necesario denir la función a integrar f (x)6 y las imágenes y de la función. Así, la sintaxis completa sería:

h=m % h representa a ∆x, m es un numero x=[a:h:b]; % Intervalo [a,b] y distancia entre nodos h y=f(x); % Función a integrar f, imagenes y in=trapz(y)*h % Regla trapezoide
Por otro lado, el comando cumtrapz calcula el área acumulada hasta cada nodo, utilizando la regla del trapecio, con el mismo input de trapz. Esta función resulta muy útil para calcular probabilidades en estadística hallando el área bajo la curva de la función de densidad acumulada.

Ejemplo 6.3. Vamos a calcular
7 2

x4 (49 − x2 )1/2 dx

Paso 1. Creamos el vector x en el intervalo de integración [2, 7], con h=0.1.
h=0.1 x=[2:h:7];

Paso 2. Denimos el vector imagen que corresponde a la función que vamos a integrar

y=(x.^4).*(49-x.^2).^(1/2);
5 6

MATLAB

tiene predeterminado ∆x = 1 (h=1). con inline o en un M-file

172

GEDEM - Versión Preliminar

Paso 3. Utilizamos el comando trapz para hallar el área bajo la función y:
in=trapz(y)*h
Utilizando h=0.1, el área bajo la curva de x4 (49 − x2 )1/2 es igual a 11447.90. Entre más pequeño sea el valor de ∆x (h), mayor será el número de nodos y por lo tanto el resultado será más exacto. Es así como con un h=0.01 el área es igual a 11504.92 y con h=0.000001 el área es igual a 11506.69.

Ejemplo 6.4. Hallar el excedente del consumidor en el mercado competitivo de un
producto donde p∗ = 4 y cuya función inversa de demanda está implícitamente dada por: p(q 2 + 4q + 3) = 192
Ejemplo 7.4 11 10 9 8 7 6 Excedente del Consumidor

p
5 4 3 2 1 0 0 1 2 3 4 5 q 6 7 8 9 10 11 (q*,p*)

Figura 6.2: Excedente del Consumidor Dado que p∗ = 4 y q ∗ = 5 debemos hallar:
5 0

q2

192 dq − (4 ∗ 5) + 4q + 3

Paso 1. Creamos el vector q en el intervalo de integración
q=[0:5];

Paso 2. Denimos el vector imagen (función inversa de demanda)
p=(192)./(q.^2+4.*q+3);

INTEGRACIÓN

173

Paso 3. Calculamos el excedente del consumidor hallando el área bajo la curva en
el intervalo y restando el área por debajo del precio de equilibrio, como lo podemos ver en la Figura 6.2. xco=[trapz(p)]-20 % 20=5×4 Utilizando h=1, el excedente del consumidor es igual a 64.2857, con h=0.01 el excedente es igual a 57,85 y con h=0.000001 el área es igual a 57.8493. Otra forma de calcular integrales en MATLAB haciendo uso de la Regla del Trapecio es por medio del comando qnwtrap que hace parte del Compecon Toolbox. Este comando calcula un vector x que contiene los elementos (x0 , x1 , . . . , xn−1 , xn ) asociados a los nodos (ver Figura 6.1) y su vector de pesos o ponderaciones7 w. Para calcular la integral de la función f (x) en [a, b], obtenemos las imágenes de cada uno de los nodos y las multiplicamos por un vector de ponderaciones. La sintaxis del comando es:

[x,w]=qnwtrap(n,a,b)
Donde n es el número de nodos a,b representa el límite de los intervalos, x es el vector de abscisas y w es un vector de ponderaciones.

Ejemplo 6.5. Para observar las diferencias entre trapz y qnwtrap, solucionaremos
la integral del Ejemplo 6.3 con 51 nodos.

Paso 1. Sintaxis del comando.
[x,w]=qnwtrap(51,2,7);

Paso 2. Vector imagen:
y=(x.^4). *(49-x.^2).^(1/2);

Paso 3. Para obtener la integral, multiplicamos el vector traspuesto de ponderaciones w por el vector y: in=w’*y El área bajo la curva es 11447.90 que es el mismo resultado alcanzado con el comando trapz con h=0.1. Así podemos ver como, un aumento del número de nodos en qnwtrap es equivalente a un h cada vez mas pequeño en el comando trapz.
En la Regla del Trapecio, la ponderación o peso del área del primer y último sub-intervalo ((x0 , x1 ) y (xn−1 , xn )) es ∆x y es ∆x para los demás. 2
7

174

GEDEM - Versión Preliminar

6.3. Regla de Simpson
La Regla de Simpson, conocida también como cuadrática o parabólica, hace por lo general una mejor aproximación que la regla del trapecio8 , porque logra una aproximación a la función dada por medio de arcos parabólicos de eje vertical9 , que pasan por tres imágenes equidistantes (separadas entre sí por h).
Regla de Simpson

x

y1 y0

y2

yn−2

yn yn−1

y a=x0 x1 x2 . . . xn−2 xn−1 xn=b

Figura 6.3: Regla de Simpson El área de la primera parábola sería:

∆x (y0 + 4y1 + y2 ) 3 La suma de todas las áreas del intervalo [a, b], constituye la integral denida de la función es decir:
b

f (x)dx
a

∆x y0 + 4y1 + 2y2 + . . . + 2yn−2 + 4yn−1 + yn 3

que es la regla de Simpson para la integración aproximada10 .
Sin embargo, la regla del trapecio resulta más precisa en casos en los que el integrando presenta discontinuidad en la primera derivada, lo cual puede ocurrir en aplicaciones económicas con soluciones de esquina. 9 Ver Monsalve (2005a) 10 Esta notación sigue a Draper (1979). Para una revisión más profunda ver Leithold (1979).
8

INTEGRACIÓN

175

Este método de integración es calculado por MATLAB a través del comando quad. Su input son los límites [a, b] y la función a integrar f (x), ya sea como objeto inline, expresión o chero como lo vimos en el capítulo 4; de aquí en adelante utilizaremos la primera: y=inline(’f(x)’) in=quad(’y’,a,b)

Ejemplo 6.6. Determinar el área bajo la curva, de
1 0

√ 1 1+x2

es decir, calcular:

dx √ 1 + x2

Paso 1. Debemos crear la función inline:
y=inline(’1./(1+x.^2).^(1/2)’);

Paso 2. Con el comando quad hallamos el resultado de la integral planteada:
in=quad(y,0,1)
El área bajo la curva formada desde cero hasta uno de la función es: in = 0.8814.

Ejemplo 6.7. Hallar el excedente del productor (Figura 6.4) en un mercado donde
el precio p∗ = 7 y la oferta del producto está dada por:

p=

q2 q+1

Dado que p∗ = 7 y q ∗ = 7.8875 debemos hallar:
7.8875 0

q2 dq (q + 1)

Paso 1. Debemos crear la función, en este caso lo haremos como expresión, directamente en la sintaxis de quad: xpr=quad(’(q.^2)./(q+1)’,0,7.8875) Entonces el excedente del productor es: xpr = 25.4035 Otra forma de calcular integrales en MATLAB haciendo uso de la Regla de Simpson, es por medio del comando qnwsimp, que hace parte del Compecon Toolbox. Su sintaxis es similar a la del comando qnwtrap con los mismos inputs y obteniendo resultados análogos.

8814 6.176 Ejemplo 7.Versión Preliminar 12 10 8 p 6 Excedente del Productor 4 2 0 0 2 4 6 q 8 10 12 Figura 6.4 GEDEM . multiplicamos el vector traspuesto de ponderaciones w por el vector y: in=w’*y Obtenemos: in= 0. Para observar las diferencias entre quad y qnwsimp.^(1/2)) Paso 3. Así. por encima de la región del plano xy (ver Figura 6. solucionaremos la integral del Ejemplo 6. Paso 1. lo que se evalúa en este caso es el volumen localizado bajo la supercie de la función (si ésta es positiva).6 con 50 nodos. .8.4: Excedente del Productor Ejemplo 6.5).1). por tanto se utilizan cuando tenemos funciones de dos variables (en tres dimensiones). Utilizamos la sintaxis del comando: [x. Integrales Dobles Son las inversas de la diferenciación parcial.4. Creamos el vector imagen: y=(1. Paso 2.0.^2).w]=qnwsimp(50./(1+x. Para obtener la integral.

y). en la integral anterior primero se integra respecto a la variable y en el intervalo [c. y) y los intervalos de integración para cada variable. objeto inline o M-file. el cual requiere como inputs f (x.b.d) Ver (Monsalve 2005b).5: Integración Doble Para evaluar una integral doble. es decir como expresión. La sintaxis del comando dblquad es: 12 ind=dblquad(f(x. De acuerdo con la fórmula anterior. primero se integra con respecto a una variable (considerando la otra constante) y el resultado se integra luego con respecto a la otra variable11 . tenemos que a ≤ x ≤ b y c ≤ y ≤ d.d]. La función puede ser denida como explicamos para el comando quad. 12 11 . Para realizar esta operación.b]. MATLAB utiliza el comando dblquad. b a c d f (x.INTEGRACIÓN 177 d c a b Figura 6.a. y)dydx Es importante observar que el proceso se realiza de adentro hacia afuera. así. y el resultado se integra respecto a x en el intervalo [a.c.

utilizando a la vez el comando dblquad.b son los límites del intervalo de x. Ejemplo 6.10. Ya hemos visto en este capítulo los métodos que tiene MATLAB para integrar.7) Obteniendo como respuesta: ind = 92. también en los métodos de solución de ecuaciones diferenciales. De estos y otros temas.*y’. c. y sus respectivos intervalos13 : ind=dblquad(’x+y’.3. Evaluar: 3 −2 5 7 x3 + 2xy dydx Creamos la función.3) Y obtenemos: ind = 12 Es decir.5 unidades cúbicas. Ejercicios 1 Un mercado de competencia perfecta tiene una función inversa de demanda dada por p = 10 − 2q y oferta p = 3 q + 1 2 13 Teniendo en cuenta que a. y con él concluimos la parte correspondiente a Cálculo del libro.*x. y sus respectivos intervalos: ind=dblquad(’x. nos ocuparemos en la siguiente parte del libro. 12 unidades cúbicas ya que corresponde al volúmen existente en los intervalos dados.0. pues ellas también son utilizadas para evaluar funciones en diferentes contextos como en optimización.1. Evaluar: 3 1 0 2 (x + y)dxdy Creamos la función y ejecutamos el comando dblquad.-2.2.178 GEDEM .^3+2.9.d los de y .Versión Preliminar Ejemplo 6. Pero las integrales son mucho más de lo que hasta aquí conocemos.5.

Determine la función de consumo de esta economía. Calcule con los mismos métodos. 2 Calcule por medio de trapz. para hacerlo es necesario determinar el precio y la cantidad de equilñibrio. b. que hace aumentar el precio a 6. por tratarse de ecuaciones lineales.9876+1. 4 El costo marginal de una empresa de Plásticos CM g como función de los metros producidos x. qnwsimp: 0 2 1 x ln xdx 0 3 √ 2 2 t / 4+t π/2 x π/8 xe /(1 + x2 ) 11 2 p−1 p 3 La oferta de un mercado está dada por QO = −10 + QD = 80 − p3 y la demanda por a.64 − 0. qnwtrap. esta dada por C(Y ) = 2005. los nuevos excedentes si se coloca un impuesto al producto de este mercado.3 halle el Costo Total y el Costo Medio. esta dado por CM g(y) = 11. Determine los Excedentes del Consumidor y del Productor por los métodos qnwtrapz y qnwsimp. • Método trapz y qnwtrap • Método quad y qnwsimp c. donde Y representa el ingreso.5x.7 ). existen métodos algebraicos para hallar integrales indenidas como se observa en el diagrama que se 14 Podemos utilizar rref del Capítulo 2. utilizando: 179 • Fórmulas de área triangular. Encuentre Excedente del Consumidor y del Productor.INTEGRACIÓN a. APENDICE Además de los métodos numéricos para hallar integrales denidas. Encuentre Precio y Cantidad de Equilibrio14 b. Si un impuesto aumenta el precio a 13. 5 La propensión marginal a consumir en cierta economía cerrada. quad. calcule la pérdida irrecuperable de eciencia.2(Y 1. . si sabemos que el costo jo por metro es de 16.

180 GEDEM . llamado Symbolic Toolbox. Con el n de explicar el funcionamiento de esta herramienta encontremos: x4 (49 − x2 )1/2 dx Primero creamos las variables simbólicas y denimos la forma funcional: syms x f=(x^4)*(49-x^2)^(1/2) Ahora utilizamos el comando int para calcular la integral indenida: int(f) La integral indenida de la función es: ans=(-1/6*x^3)*(49-x^2)^(3/2)-49/8*x*(49-x^2)^(3/2).. para lo que recomendamos estudiar los manuales disponibles en la Web. 7] debemos denir las variables simbólicas y la función como en el ejemplo anterior. como se explicó en el capítulo anterior.Versión Preliminar presenta en este capítulo. +2401/16*x*(49-x^2)^(1/2)+117649/16*asin(1/7*x) Para calcular esta integral en el intervalo [2. MATLAB dispone de un Toolbox que trabaja con este tipo de operaciones.7) La integral denida en el intervalo [2. Debido a la naturaleza de este último tipo de problemas. Sin embargo. y luego ejecutar int(f.2.. . Para ello. es necesario trabajar con expresiones simbólicas. 7] es: ans = 117649/32*pi+7467/8*5^(1/2)-117649/16*asin(2/7) Y para simplicar podemos utilizar el comando eval así: eval(ans) cuyo resultado es ans = 1.1507e+004 A partir de estos métodos de integración se puede realizar el cálculo de probabilidades. esto también se puede realizar utilizando Statistical Toolbox.

Parte III OPTIMIZACIÓN Y DINÁMICA 181 .

.

Especícamente. 1 183 . El capítulo 8 presentará el uso de estas herramientas para el desarrollo de algoritmos de optimización estática. vamos a abordar el análisis de concavidad. cuasiconcavidad y cuasiconvexidad de una función a partir de herramientas computacionales. en un problema de tipo estático y determinístico existen funciones que pueden ser cóncavas. Norman Maldonado Generalmente en economía matemática se trabajan problemas de tipo estático y de tipo dinámico. Tanto los algoritmos de optimización dinámica en problemas determinísticos como las funciones y los algoritmos de optimización en problemas estocásticos Existen otros tipos de funciones. cuasicóncavas y cuasiconvexas1 . Por ejemplo. Este capítulo tiene como objetivo analizar las propiedades de las funciones utilizadas en problemas de optimización estática. En cada problema existen funciones y algoritmos de optimización. Otro ejemplo es un problema de tipo dinámico y determinístico. Los problemas estáticos implican certidumbre (determinísticos). y algoritmos de optimización como el cálculo de variaciones y la teoría del control óptimo. es decir. en donde existen funciones como las ecuaciones diferenciales y en diferencias. convexidad. Se utiliza esta clasicación por su utilidad para ubicar máximos y mínimos.y el capítulo ?? analiza las funciones utilizadas en problemas determinísticos dinámicos. y algoritmos de optimización como la programación lineal. mientras que los dinámicos pueden ser de certidumbre o de incertidumbre (estocásticos). las ecuaciones diferenciales y las ecuaciones en diferencias. convexas. el teorema de Lagrange y el teorema de Kuhn-Tucker.Capítulo 7 Concavidad y Convexidad Norma Gómez.

sus criterios de clasicación y los métodos computacionales para realizar esta clasicación...1b) (7. mientras que los criterios de clasicación son tomados de Mora (2001). En la segunda se utilizan estos conceptos y criterios para estudiar funciones univariadas.Versión Preliminar En la primera sección se exponen las deniciones de función cóncava. cuasicóncava y cuasiconvexa. GEDEM . y se darán algunos ejemplos. xn ) denida en un conjunto convexo S ∈ Rn .1a) (7.. y un parámetro λ ∈ [0. 1].1. convexidad. 1). 7.1c) (7. Deniciones Concavidad. P2 ∈ S . se tienen los siguientes tipos de funciones según su forma: Cóncava: Convexa: f (λP1 + (1 − λ)P2 ) ≥ λf (P1 ) + (1 − λ)f (P2 ) f (λP1 + (1 − λ)P2 ) ≤ λf (P1 ) + (1 − λ)f (P2 ) (7.1. En cada sección se explicarán las herramientas de las que dispone MATLAB para analizar una función por diferentes métodos. Matriz Hessiana 2 Ver ?). Fackler (2003) y Judd (1998). 7. convexa. En la tercera se extiende el análisis a funciones con dos variables y nalmente en la última sección se analizan funciones multivariadas. f (P2 )} Cuasiconvexa: f (λP1 + (1 − λ)P2 ) ≤ M ax{f (P1 ). Conceptos Las deniciones que se presentan en esta sección son tomadas de Monsalve (2004). . Al nal del capítulo se plantean algunos ejercicios que servirán al estudiante para desarrollar agilidad en el análisis de funciones a partir de métodos numéricos y en la aplicación de este análisis para la solución de problemas de optimización estática en economía. cuasiconcavidad y cuasiconvexidad de una función. dos puntos P1 . se dice que la función es estricta si estas desigualdades son estrictas y se satisfacen para P1 = P2 y λ ∈ (0. . Dados una función f (x) = f (x1 . x2 .184 no son nuestro objeto de análisis2 . f (P2 )} Además.1.1d) Cuasicóncava: f (λP1 + (1 − λ)P2 ) ≥ M in{f (P1 ).

. . .1.2.. . . . .1. .CONCAVIDAD Y CONVEXIDAD 185    Hf (x) =    fx1 x1 fx2 x1 . .6) 7. fxn x1 fx2 fx1 x2 fx2 x2 . . . Criterios de clasicación Sean S un conjunto convexo abierto y no vacío. para cada número real α se dene el Conjunto Contorno Superior CSα por la relación: CSα = {x ∈ S : f (x) ≥ α} (7.2) Matriz Hessiana Orlada      ˆ Hf (x) =     0 fx1 fx2 . fx1 xn . .. Para cada número real α se dene una curva de nivel CNα por la relación: f (x) = α (7. . . . fxn xn          (7. . . . fxn x2 . .3) Curvas de Nivel y Conjuntos Contorno Sea f (x) una función denida en un conjunto convexo S de Rn . . fx1 xn . f : S −→ R doblemente diferenciable. . . . fxn x2 . fx2 xn .5) Similarmente. . fxn x1 fx1 x2 fx2 x2 . . Entonces se tiene que: Proposición 7. . . fxn fx1 fx1 x1 fx2 x1 . fxn xn       (7. . . . . .4) Además. fx2 xn . . fxn . para cada número real α se dene el Conjunto Contorno Inferior CIα por la relación: CIα = {x ∈ S : f (x) ≤ α} (7. La función f es cóncava (estrictamente cóncava) si −f es convexa (estrictamente convexa). . .

entonces f es cuasicóncava (cuasiconvexa). Una condición suciente para que f (x) sea cuasicóncava es que (−1)k Dk (x) ≥ 0 para todo k = 1.186 GEDEM . ˆ Proposición 7.9 (Función Cuasiconvexa . Proposición 7. . Métodos En funciones continuamente diferenciables.2. Una condición suciente para que f (x) sea cuasicóncava es que Dk (x) ≤ 0 para todo k = 1.H ).5 (Función Convexa). donde Dk es el menor principal dominante de orden k de la matriz Hessiana Orlada ˆ H.Conjuntos Contorno). la segunda derivada permite analizar la concavidad y convexidad de una función. La función f es convexa (estrictamente convexa) si y solamente si la matriz hessiana Hf es semidenida positiva (denida positiva) en todo punto x de S . .3. .1.6 (Función Cuasicóncava . .8 (Función Cuasiconvexa .4 (Función Cóncava). ˆ Proposición 7. La función f es cuasicóncava (estrictamente cuasicóncava) si −f es cuasiconvexa (estrictamente cuasiconvexa). La función f (x) es cuasicóncava si el Conjunto Contorno Superior CSα = {x ∈ S : f (x) ≥ α} es convexo para todo número α. y una combinación de la primera y la segunda derivada permite determinar la cuasiconcavidad y cuasiconvexidad de una función. La función f (x) es cuasiconvexa si el Conjunto Contorno Inferior CIα = {x ∈ S : f (x) ≤ α} es convexo para todo número α. Si f es cóncava (convexa). . n y todo x ∈ S . Proposición 7. n y todo x ∈ S . 7. Proposición 7. . .7 (Función Cuasicóncava .H ).Versión Preliminar Proposición 7. La función f es cóncava (estrictamente cóncava) si y solamente si la matriz hessiana Hf es semidenida negativa (denida negativa) en todo punto x de S .3. Proposición 7. donde ˆ Dk es el menor principal dominante de orden k de la matriz Hessiana Orlada H . Proposición 7. . Para analizar la forma de una función en MATLAB vamos a utilizar cuatro métodos diferentes3 : 3 Todos los métodos llegan a la misma conclusión .Conjuntos Contorno).

Esta matriz se utiliza para analizar la cuasiconcavidad y cuasiconvexidad de una función multivariada. se concluye sobre la forma de la función (cóncava. funciones discontinuas o con esquinas). 4 . se repite el proceso en un conjunto nito de puntos (un subconjunto del dominio de la función) y se concluye sobre cuasiconcavidad y cuasiconvexidad de la función en ese conjunto. Consiste en gracar las curvas de nivel de la función y a partir de éstas determinar la convexidad del conjunto contorno superior o inferior4 . repetir el mismo proceso para un conjunto nito de puntos. las de una función de dos variables se visualizan en R2 y las de una función de tres variables se visualizan en R3 .1. el método es análogo al de la matriz Hessiana5 : se aproxima numéricamente la Matriz Hessiana Orlada (HO) en un punto determinado. Recuérdese que la convexidad de un conjunto es un concepto diferente al de convexidad de una función. cuasicóncava o cuasiconvexa). convexa. y no es posible analizar grácamente la convexidad de los conjuntos contorno. 4. en las que la aproximación numérica de la Hessiana puede producir grandes errores de aproximación. 2. Consiste en realizar una aproximación numérica del valor de la matriz hessiana de una función en un punto determinado. Computacionalmente. Conjuntos Contorno. Las curvas de nivel de una función de una variable se visualizan en R1 . y dependiendo de qué desigualdades se satisfacen. Por lo tanto. 5 Por lo que sus limitaciones son las mismas. Este método presenta la limitación de ser útil solo para funciones de una o dos variables.CONCAVIDAD Y CONVEXIDAD 187 1. 3. y así concluir sobre la cuasiconcavidad y cuasiconvexidad de la función. Este método aplica para funciones multivariadas y su única limitación se presenta cuando se trabaja con funciones no muy bien comportadas (por ejemplo. Este método tiene una limitación similar a la del método gráco. respectivamente. Gráco. Matriz Hessiana. y a partir del análisis apropiado de estos valores en cada punto concluir sobre la concavidad o convexidad de una función en el conjunto nito de puntos. en funciones que posean más de tres variables no se pueden visualizar las curvas de nivel. Consiste en visualizar grácamente la función y las deniciones 7. ya que se éstas se pueden visualizar en R2 y en R3 . Matriz Hessiana Orlada.

Invocar la rutina plot para gracar.2. las derivadas de la función6 y los conjuntos contorno. Funciones Univariadas Una función univariada f (x) se dene como una función cuyo dominio y rango están denidos en R1 . Una función univariada y sus derivadas pueden ser visualizadas en R2 . al análisis de Matriz Hessiana y Hessiana Orlada del caso multivariado. calcular el gradiente numérico de f y analizar su pendiente. analizar grácamente una función univariada en MATLAB requiere 3 pasos: Paso 1. Ejemplo 7.Versión Preliminar 7. Conjuntos Contorno. y=fej1(x). Crear la función en un M-file llamado fej1. en el caso univariado. Podemos utilizar MATLAB para ver grácamente las curvas de nivel y los conjuntos contorno.188 GEDEM . 2.02:15].1. las curvas de nivel son puntos ubicados en la recta real. calcular sucesivamente gradientes numéricos y por último utilizar la función fdhess o fhess de Compecon. Paso 3. Retomando conceptos del capítulo 4. Esto se puede hacer creando un m-file que contenga la función o utilizando el comando inline. de diferentes formas: calcular manualmente fxx y gracarla. % f(x) El análisis de estas derivadas corresponde. Paso 1. Paso 2. 6 . En todos los métodos puede ser útil gracar los resultados numéricos. En funciones univariadas. Derivadas de la función. Analizar la concavidad y convexidad de la función f (x) = Ln(x) por el método gráco. Para analizar las deniciones 7. f=log(x) Paso 2. Crear los datos de la variable x y de la función f (x). así: function f=fej1. 3. En MATLAB . Método gráco. Crear la función.1 en una función univariada utilizaremos el método gráco. 1. podemos obtener información de la segunda derivada de una función. Crear los datos de la variable x y de la función f (x): x=[1:0.

5)].’Bold’) text(13. Ejemplo 7. Se observa también que con culaquier par de puntos esta denición se satisface. Paso 1.13.’color’.[f(3.’P_ {1}’.5 P 2 2 f(x) 1.5 P1 1 0.5)+b.f(13.5-b.y) b=0.2.5+c.^3-4*x.5). Crear la funcion f=inline(’x.1.1.5)-c.5 0 0 5 10 15 x Figura 7.’-’) text(3. Invocar la rutina para gracar: plot(x.’Bold’) f(x) = ln x 3 2. Crear los datos .CONCAVIDAD Y CONVEXIDAD 189 Paso 3.1: Método gráco MATLAB arroja como resultado la Figura 7.10.’Fontsize’.f(13.’Fontweight’.1 line([3.’LineStyle’.5. Tomando los puntos P1 y P2 de la gráca.’r’.^2+8’) Paso 2. se observa que se cumple la denición de función cóncava en 7.f(3.2 c=0.’P_ {2}’. Por lo tanto podemos decir que la función es cóncava.’Fontweight’.5].10.’Fontsize’. Analizar la concavidad y convexidad de la función f (x) = x3 − 4x2 + 8 por el método de derivadas (calculando el gradiente numérico y analizando su pendiente).

Calcular el gradiente numérico fx=gradient(y. la segunda derivada fxx es la pendiente de la función fx . y=f(x). Gradiente Numérico 40 f fx 30 − f(x) = x − 4x + 8 3 2 20 f(x) 10 0 −10 −20 −2 −1 0 1 2 3 4 5 x Figura 7. Paso 3. Por esta razón. Notemos que el punto de inexión es el valor mínimo de fx .190 GEDEM . si la primera derivada de la función fx es creciente (o decreciente) está indicando que la segunda derivada de f es positiva (o negativa) y por lo tanto la función es convexa (o cóncava). Por tanto. respectivamente.2 se observa que la primera derivada de la función f (es decir.Versión Preliminar h=0.fx) se pueden visualizar grácamente los resultados. representada en el gráco con fx) es decreciente (f es cóncava) hasta un punto de inexión p ∈ [1. 2]. y que los valores numéricos de x y de la primera derivada de la función fueron guardados en las variables x y fx en MATLAB . para saber cuál es aproximadamente el punto de inexión basta con hallar el valor de x que corresponde al más pequeño de todos los números contenidos en el vector fx. En la gura 7. como en la Figura 7. fx .y. para lo cual podemos utilizar el comando min.2: Gradiente numérico Como se mencionó anteriormente.x. así: .h) Mediante la instrucción plot(x. ¾Cómo determinar cuál es ese punto?.01 % Amplitud de x y del gradiente x=[-2:h:5].2.

Crear la funcion f=inline(’sqrt(x)’) fxx=inline(-0.333 (equivalente a 8 ) es el punto x en el que la función f (x) pasa de ser 6 cóncava a ser convexa. En la Figura 7.3. .00001.5) Paso 2. Crear los datos h=0. √ Paso 1. indicando que la función es cóncava. Este procedimiento arroja como resultado: pinf = 1. y=f(x).4. x=[0:h:2].3 observamos que la segunda derivada es decreciente. La segunda línea guarda en pinf el valor mínimo de la primera derivada (p) y su correspondiente valor en x (x(i)). Gracar la función y su segunda derivada plot(x.3332 El valor 1. calculamos la segunda derivada y la introducimos como otra función en el programa (y2).y2) Para hacer el análisis de la concavidad y convexidad de esta función. Analizar la concavidad y convexidad de la función f (x) = √ x7 por el método de derivadas (calculando gradientes de la función sucesivamente). Paso 3. guarda este valor en p y la posición que éste valor ocupa dentro del vector fx la guarda en i.y) hold on plot(x. Ejemplo 7. Ejemplo 7. y2=f2(x).i]=min(fx) pinf=[x(i) p] % Mínimo de fx % Punto de inflexion La primera línea encuentra el más pequeño de todos los valores de la primera derivada de f (fx ).25x^(-1.3300 -5.CONCAVIDAD Y CONVEXIDAD 191 [p. Analizar la concavidad y convexidad de la función f (x) = x por el método de derivadas (analizando la segunda derivada de la función).

Paso3. obtenemos la Figura 7.5 − 3.192 f=x 30 GEDEM .5 4 x Figura 7. .5] en donde la función pasa a ser cóncava. De esta gura sabemos la segunda derivada fxx es positiva en el intervalo en que la función es convexa.75x 1.h). 3. x=[0. Crear los datos h=0.h) Paso4.001.15x 2.5 2 2. Existe un punto de inexión en el intervalo x = [2. Calcular el gradiente numérico yxx=gradient(gradient(y.5 3 3.3: Gradiente numérico Paso1.yxx) A partir de los conceptos vistos en el capítulo 5.5)’).5 1 1.^3.25x 4.5 − 0.2:h:4]. Crear la función f y su segunda derivada fxx f=inline(’x.5 20 10 f(x) 0 −10 −20 f fxx −30 0. Paso2.y) hold on plot(x.5 − fxx = 8.5. Gracar la función y su segunda derivada (calculada numéricamente) plot(x. y=f(x). Gracando simultáneamente esta segunda derivada con la función. el comando gradient en el programa permite calcular numéricamente la segunda derivada de la función como el gradiente de la primera derivada.Versión Preliminar 3.3.

01(10 ∗ h).CONCAVIDAD Y CONVEXIDAD 193 El cálculo de la segunda derivada numérica está almacenado en el vector yxx. este es el criterio para determinar los valores sucientemente cercanos a cero. Ejemplo 7.1].^2+3)’).0032. Paso 2. por lo que no requiere que se introduzca explícitamente la forma funcional de la segunda derivada. 7 .01 (−10 ∗ h)./(2*x.yxx(ind)].8 La segunda línea almacena en el vector pinf los elementos de los vectores x y yxx correspondientes a las posiciones del vector ind. Se selecciona el más cercano a cero porque el cálculo del vector yxx es numérico. pinf=[x(ind). el comando find encuentra la posición de los valores del vector yxx que son mayores que -0.7780 -0. 8 Aunque este valor puede ser menor. notemos que el elemento más pequeño (en valor absoluto) del vector yxx es 0. De esta forma el vector pinf es: pinf = 2. por lo que si estableciéramos un criterio menor (por ejemplo 0.001. Analizar la concavidad y convexidad de la función f (x) = el método de derivadas (utilizando fhess). x=[-2:h:2]. Calcular la segunda derivada por medio de fhess for i=1:length(x) fxx(i)=fhess(f. y menores que 0. En la primera línea. Crear la función f f=inline(’x. Paso 3. ind=find(yxx>-10*h&yxx<10*h). Crear los datos h=0. y=f(x).001).x(i)). El punto de inexión es el valor de este vector más cercano a cero7 y su posición dentro de ese vector. no encontraríamos el punto de inexión. y por lo tanto ninguno de sus componentes es exactamente igual a cero.[1.0032 Una de las ventajas que ofrece este método es que el cálculo de la segunda derivada es numérico. end. x 2x2 +3 por Paso 1.5.

A partir de la curva de nivel de referencia f = 9. El conjunto contorno superior es aquel conjunto hacia el cual crecen las curvas de nivel. mientras que el conjunto contorno inferior se ubica en aquella región hacia la cual decrecen las curvas de nivel.5 1 1. el conjunto contorno superior corresponde al conjunto [−5. por ejemplo. en primer lugar tenemos que trazar una curva de nivel de referencia. tomemos f = 9. . el conjunto contorno superior en este caso corresponde a [−∞.4 muestra que la segunda derivada es positiva en el intervalo en el que la función es convexa hasta el punto de inexión x = 0.4 f fxx 0.194 GEDEM .5 −1 −0. −3] ∪ [3. porque en esta dirección están las curvas 9 Siendo rigurosos. Grácamente. −3] ∪ [3. y a partir de allí la función se hace cóncava y se segunda derivada negativa.fxx) Segunda Derivada Numérica 0.2 −0.y) hold on plot(x. Para ver grácamente la cuasiconcavidad o cuasiconvexidad de esta función. ∞].4: Segunda derivada con fhess La Figura 7. Luego de ello trazamos otras dos curvas de nivel: una mayor (f = 16) y una menor (f = 4).6.3 −0.5 0 0. Gracar la función y su segunda derivada plot(x.5. Ejemplo 7. Analizar la cuasiconcavidad y cuasiconvexidad de la función f (x) = x2 por medio de sus conjuntos contorno.1 f(x) 0 −0.5 2 x Figura 7. Por último determinamos los conjuntos contorno.Versión Preliminar Paso 4.3 − f(x) = x/(2x +3) 2 0. se tiene la Figura 7.1 −0.2 0. 5]9 .4 −2 −1.

5] para ilustrar el ejemplo de manera precisa en la gráca. Este conjunto está señalado en la gráca con el marcador  o . donde se ubican las curvas de nivel de mayor valor Hemos asumido el conjunto [−5. De estos dos conjuntos. 10 Ver nota 7 . corresponde al conjunto [−3. donde se ubican las curvas de nivel de menor valor (f = −2). Analizar la cuasiconcavidad y cuasiconvexidad f (x) = x3 − 4x2 + 6 por medio de sus conjuntos contorno. El conjunto contorno superior. 3. señalamos grácamente los conjuntos contorno superior (o) e inferior(*) y determinamos cuál de estos dos conjuntos es convexo. tenemos que jar tres curvas de nivel: una de referencia (f = 1) y dos que se ubican por encima (f = 4) y por debajo (f = −2) de la curva de nivel de referencia. Ejemplo 7. −3] ∪ [3.CONCAVIDAD Y CONVEXIDAD f(x) = x 25 195 2 20 y=16 15 f(x) 10 y=9 5 y=4 0 −5 −4 −3 −2 −1 0 1 2 3 4 5 x Figura 7. El conjunto contorno inferior. 3].38. Luego de ello.61]10 . De nuevo. El conjunto contorno inferior.5. está señalado con  *  y corresponde al conjunto [−1. donde se ubican las curvas de nivel de menor valor (f = 4).7. −1]∪[1. y está señalado en la gráca con el marcador  * . solo el conjunto contorno inferior es convexo. por lo cual podemos concluir que la función es cuasiconvexa.5: Conjuntos Contorno de f (x) = x2 de nivel de mayor valor (f = 16).

. En funciones de dos variables. De aquí en adelante asumiremos como convención que el método de análisis de derivadas corresponde al cálculo numérico de la segunda derivada mediante las rutinas fhess y fdhess. y) se dene como una función cuyo dominio está denido en R2 . la segunda derivada de una función de una variable es un vector que en cada posición contiene un escalar.2].6: Conjuntos Contorno (f = 4). por lo que la función no es cuasicóncava y tampoco es cuasiconvexa.Versión Preliminar 3 2 6 y=4 4 f(x) 2 y=1 0 y=−2 −2 −4 −6 −1 0 1 2 3 4 x Figura 7.2). Numéricamente. 7.3. está señalado con  o  y corresponde al conjunto [−1. Esto implica que se debe extraer los menores principales y los valores propios de cada matriz hessiana (hessiana orlada) para poder concluir sobre la concavidad o convexidad (cuasiconcavidad o cuasiconvexidad) de la función (ver Sydsaeter (1996) y Mora (2001)). Funciones con dos variables (Bivariadas) Una función de dos variables (o bivariada) f (x. 1. Ninguno de estos dos conjuntos es convexo.38] ∪ [3. cada componente de ese vector es una matriz hessiana (ver ecuación 7.196 f(x) = x − 4x + 6 8 GEDEM .61. 4.

Paso 3. Gracar mesh(X. la matriz hessiana orlada y los conjuntos contorno.^2 Paso 2.7 y 7.7 y 7. Sabemos que la función f (x. Observamos que para estos dos puntos la línea continua está por debajo de la línea discontinua. mientras que para cuasiconcavidad y cuasiconvexidad utilizaremos el método gráco. Para analizar la concavidad y convexidad de cualquier función por este método visualizamos las partes A y B de las ecuaciones 7. Crear la función en un M-file llamado fej1: function f=fej8(x.8) Estas desigualdades tienen dos partes: la parte A es la imagen de la combinación lineal de los puntos P1 y P2 .F) Como se observa en la Figura 7.^2+(x+y). [X. y la parte B es la combinación lineal de las imágenes. y) es convexa si: A B f (λP1 + (1 − λ)P2 ) ≤ λf (P1 ) + (1 − λ)f (P2 ) y cóncava si A B (7. Ejemplo 7.^2+y.y=x.8.8 en la gráca de la función.8. Crear los datos: x=[-100:10:100].7) f (λP1 + (1 − λ)P2 ) ≥ λf (P1 ) + (1 − λ)f (P2 ) (7. y) = x2 + y 2 + (x + y)2 por el método gráco.Y). F=fej8(X. lo cual implica que A≤B. respectivamente.y). f=x.Y. En nuestro ejemplo: Paso 1. que la denición de función convexa .CONCAVIDAD Y CONVEXIDAD 197 Para determinar la concavidad y convexidad utilizaremos el método gráco y el cálculo numérico de la matriz Hessiana. se añadió una línea continua y una discontinua que representan las partes A y B de las ecuaciones 7.y).Y]=meshgrid(x.7. es decir. Analizar la convexidad y concavidad de f (x.

Además se observa que esto ocurre para cualquier pareja de puntos del dominio de la función. la parte B es la imagen más pequeña y la parte B es la imagen más grande. f (P2 )} (7.9 y 7. y) es cuasiconvexa si: A B f (λP1 + (1 − λ)P2 ) ≤ M ax{f (P1 ). Sabemos que la función f (x.Concavidad y Convexidad se cumple para estos dos puntos. . f (P2 )} y cuasicóncava si A B (7. Por esta razón podemos concluir que la función es convexa estricta.Versión Preliminar f(x. B y B de las ecuaciones 7. Analizar la cuasiconvexidad y cuasiconcavidad de f (x. y) = x2 + y 2 + (x + y)2 por el método gráco.9.10) Para estas desigualdades la parte A es la imagen de la combinación lineal de los puntos P1 y P2 .9) f (λP1 + (1 − λ)P2 ) ≥ M in{f (P1 ). Para analizar la cuasiconvexidad y cuasiconcavidad de cualquier función por este método visualizamos las partes A.198 GEDEM .7: Método Gráco .10 en la gráca de la función.y)=x2+y2+(x+y)2 x 10 6 5 4 4 P1 P2 f(x. Ejemplo 7.y) 3 2 1 0 −100 −50 0 50 100 −100 −50 0 100 50 x y Figura 7.

^0.*(y. Como esto ocurre para cualquier par de puntos podemos concluir que la función es cuasiconvexa.CONCAVIDAD Y CONVEXIDAD 199 f(x.9) son más pequeños o iguales al punto P2 (parte B de la denición 7.5). es necesario almacenar en un vector p todas las parejas ordenadas de la forma (x. Se crean los datos para el conjunto de salida en los vectores x e y. y=x. Paso 2. y=v(2). Además. Crear la función en un M-file llamado fej9: function f=fej9(v).^0. Analizar la convexidad y concavidad de la función f (x.5). Ejemplo 7. Esto se hace con la última instrucción11 .Cuasiconcavidad y Cuasiconvexidad En la gura 7.9).10. y) = x0. y) en las que se va a calcular numéricamente la matriz hessiana.1:10:100.5 y 0. x=[0. Crear los datos.y)=x2+y2+(x+y)2 x 10 6 5 4 4 P2 f(x.y) 3 2 1 P1 0 −100 −50 0 50 100 −100 −50 0 100 50 x y Figura 7. x=v(1). y el producto cartesiano entre ellos utilizando la instrucción meshgrid.8: Método Gráco ..5 Paso 1. 11 Para una explicación de la sintaxis X(:) para una matriz X. ver el capítulo 2 . f=(x.1].8 se observa que todos los puntos de la línea continua (parte A de la denición 7.

y con el comando det podemos hallar el determinante de estas submatrices. calculada en un punto. Sabemos que su matriz Hessiana es: Hf (x. Repitiendo el proceso en m puntos y teniendo en cuenta las proposiciones 7. Calcular la matriz Hessiana y determinar si es denida. y con el comando det podemos hallar el determinante de estas submatrices. Siguiendo nuestro ejemplo.p(:. También podemos hallar los valores propios de la matriz Hessiana con el comando eig. y) = x2 + y 2 + (x + y)2 .5 podemos concluir sobre concavidad o convexidad. for m=1:length(p). o semidenida positiva o negativa.Versión Preliminar [X. Con operaciones matriciales podemos calcular los menores principales dominantes y arbitrarios de la matriz hessiana. Paso 3.y). También podemos hallar los valores propios de la matriz Hessiana con el comando eig. vp(1:2. calculada en un punto.200 GEDEM . A partir de estos cálculos podemos establecer si la matriz hessiana.m)). Denir la función en un M-file llamado fej72. H=fdhess(’fej9’.Y]=meshgrid(x. y). y) = 4 2 2 4 La matriz Hessiana es constante para todo punto (x. p=[X(:)’. semidenida o indenida. comencemos por calcular en MATLAB la matriz hessiana de f (x.m)=eig(H). con operaciones matriciales podemos calcular los menores principales dominantes y arbitrarios de la matriz hessiana. o semidenida positiva o negativa. end Una vez calculamos la matriz hessiana de la función en un punto. Repitiendo el proceso en m puntos y teniendo en cuenta las proposiciones podemos concluir sobre concavidad o convexidad. Por ejemplo.Y(:)’]. A partir de estos cálculos podemos establecer si la matriz hessiana. podemos repetir el proceso para un conjunto nito de puntos y luego utilizar alguno de los criterios denidos anteriormente con el n de determinar si la función es cóncava (estricta) o convexa (estricta). .4 y 7. Para calcularla en MATLAB debemos: 1. es denida positiva o negativa. es denida positiva o negativa.

el valor de la variable x y en la segunda posición el valor de la variable y . para nuestro propósito es más práctico utilizar la rutina fdhess.v) o. y) = (4.5]. Aunque en nuestro ejemplo sabemos que la Hessiana es constante. Como mencionamos anteriormente. Para ello.CONCAVIDAD Y CONVEXIDAD 201 function f=fej72(v).^2. en este caso utilizaremos el criterio de valores propios. y=v(2). Nótese que la función recibe como input un vector v (y no dos variables separadas x. es difícil calcular los menores principales arbitrarios. f=x.v) La salida de MATLAB es: H = 4 2 2 4 Aunque los procedimientos numéricos y los resultados son los mismos. en el caso de fhess: H=fhess(’fej72’.[1. 2. en su primera posición.^2+(x+y). Invocar la rutina fdhess: H=fdhess(’fej72’. Por simplicidad. 5). el cual contiene. v=[4. Aunque es fácil calcular en MATLAB los menores principales dominantes de una matriz de cualquier tamaño. la matriz hessiana es útil si logramos adecuadamente extraer la información que ésta nos ofrece. por lo cual ésta es la que utilizaremos de aquí en adelante. Utilicemos el punto v = (x. Más especícamente. podemos utilizar las proposiciones que citamos al comienzo de esta sección. Los valores propios de . x=v(1). Denir el punto en el cual va a calcular la Hessiana.^2+y. La razón de ello es que la matriz hessiana es calculada por medio de métodos numéricos. es necesario determinar un punto. 3. o hallar los valores propios de la matriz hessiana por medio de la instrucción eig.y ).1]. podemos calcular los menores principales dominantes o arbitrarios y calcular su determinante con la instrucción det.

Versión Preliminar nuestra matriz H son λ1 = 2.1) contour3(X.Y.cn) title(’Contour’). subplot(2. Conjuntos Contorno.202 GEDEM . A partir de estas instrucciones.2. mientras que la función contour3 sirve para visualizar las curvas de nivel en el plano x.Z.40) % 40 Curvas de nivel arbitrarias title(’Contour3’). y) es estrictamente convexa. También recordemos de este capítulo la instrucción subplot. λ2 = 6.4) contourf(X. y )). obtenemos: La gura ??a muestra las curvas de nivel de la función f (x.2.2.cn) title(’Contourf’). La gura ??b muestra las curvas de nivel en el plano x. La gura ??c.y.Y.Y. y (R2 ). Debido a que los valores propios son estrictamente positivos y a que la matriz hessiana es constante (tiene el mismo valor en todo punto (x. f (R3 ).3) [cs.Z. y) en cada una de .h]=contour(X. Recordemos que la instrucción contour sirve para visualizar las curvas de nivel de nuestra función f (x. subplot(2.y.2) cn=[2 6 10 14 20 30]. y) en el plano x.clabel’). subplot(2. Una vez creada la función y los datos (pasos para grácar) podemos analizar la cuasiconcavidad y cuasiconvexidad de nuestra función f (x. muestra el valor de f (x. hs=clabel(cs. y) en en plano x. además de mostrar algunas curvas de nivel. y. En el capítulo 4 estudiamos la instrucción contour y contour3. % Curvas de nivel predeterminadas contour(X.Z.h) title(’Contour . y) de la siguiente manera: subplot(2.2. que muestra diferentes grácos simultáneamente. podemos concluir que la matriz hessiana es denida positiva y por lo tanto la función f (x. que son útiles para visualizar las curvas de nivel y los conjuntos contorno de una función de dos variables f (x. y).cn).Y.Z.f.

podemos empezar por hallar analíticamente la matriz Hessiana Orlada de f (x. y además sabemos por la proposición ?? que toda función convexa es cuasiconvexa. % Hessiana Orlada de f La salida de MATLAB es: Ho = 0 80 100 80 4 2 100 2 4 Sabemos. por la proposición ??. 4) =  80 4 2  100 2 4 Ahora vamos a calcular esta matriz en MATLAB . Para nuestro ejemplo. y) son convexos. Por último.4].4):  0 2x + 2(x + y) 2y + 2(x + y)   ˆ Hf (x. % Gradiente de f H=fdhess(’fej72’. % Punto de evaluación J=fdjac(’fej72’. y)=(3.p). Para ello. en la gura ??d se observan las curvas de nivel con los contornos relllenos. así:   p=[3. la función es cuasiconvexa. y) y calcularla en el punto (x.p). que si el determinante de todos los Dk de esta matriz es menor que cero. Matriz Hessiana Orlada. utilizamos la función fej72 combinamos los comandos fdjac y fdhess.J’ H]. y)) denida en (??). puesto que ya habíamos visto que la función es convexa. Un último criterio para determinar la cuasiconcavidad ˆ y cuasiconvexidad de la función es la matriz Hessiana Orlada (Hf (x.CONCAVIDAD Y CONVEXIDAD 203 estas curvas. y) =  2x + 2(x + y) 4 2  2y + 2(x + y) 2 4  0 80 100   ˆ Hf (3. Era de esperarse. %Hessiana de f Ho=[0 J. Se observa en estas grácas que los conjuntos contorno inferiores de la función f (x. por lo cual podemos armar que la función es cuasiconvexa. Calculemos los Dk de esta matriz: .

% Determinante de MPD end dt La primera línea indica a MATLAB que los cálculos de las siguientes líneas deben repetirse para cada valor de k. y guarda este valor en la posición i del vector dt. La última línea la utilizamos para ver los componentes del vector dt. Lo primero que debemos hacer es denir dicho conjunto. vamos a evaluar la matriz H en un conjunto nito de puntos. la matriz Hessiana Orlada cambia según el punto en donde la calculemos. En esa misma línea se establece que k tomará los valores de 1 .o espacio en blanco para indicar elementos que son positivos. necesitamos repetir el proceso m veces. Supongamos que va- . El comando de la segunda línea extrae el Menor principal Dominante de orden k de la Matriz Hessiana Orlada. y) = (3. respectivamente. la salida de MATLAB es: dt = indicando que tanto el primer componente del vector como el segundo son negativos.1:k+1). negativos o cero.00 No es de nuestro interés la magnitud de estos números. cuando k = 1. %MPD de orden k dt(i)=det(D). sino más bien su signo.1:2).2. Por ejemplo. Esto nos permite concluir que la función f (x. Deniendo este formato. La salida de MATLAB (con format bank) es: dt = -6400.. La tercera línea calcula el determinante del menor principal dominante que se calculó en la segunda línea.204 GEDEM . Al utilizar este comando. siendo 2 el resultante de la instrucción length(Ho)-1. Para ello es útil el comando format +.00 -33600. D es el menor principal de orden 2 y está dado por D=Ho(1:2. donde ˆ m son todas los puntos en los que se desea evaluar la matriz H . 4) A diferencia de la matriz hessiana de nuestra función f (x. Para ilustrar la ˆ forma en que se generaliza.Versión Preliminar for k=1:1:length(Ho)-1. y). Para ello. la salida muestra los símbolos +. D=Ho(1:k+1. Necesitamos entonces generalizar el método anterior para calcular la Matriz hessiana orlada en diferentes puntos a la vez. y) es cuasiconvexa en el punto (x.

m)). lo cual ˆ implica que los menores principales dominantes de H son menores que cero y por lo tanto la función en el conjunto S es cuasiconvexa12 . Se observa que todos los componentes del vector dt son negativos.1:k+1). % Repetir k veces D=Ho(1:k+1. p=[X(:)’. la primera columna del vector dt contiene el determinante de los dos menores principales dominantes de la hessiana orlada evaluada en el punto (x. y)\x ∈ [3.m)). 12 . y) de puntos posibles. convexidad.m)=det(D). % Gradiente H=fdhess(’fej72’. donde 2 corresponde al número de ˆ menores principales dominantes que se evalúan en la matriz H y 12 corresponde ˆ al número de puntos en los que se evaluó la matriz H .y). % Hessiana Orlada for k=1:1:length(Ho)-1. es fácil hacer los mismos cálculos para un conjunto S más extenso. y=[-4:1:-1]. −1]}. −4). % MPD dt(k. así: [X. el número de columnas del vector p: for m=1:length(p). A lo largo de toda la sección hemos analizado la concavidad. % Repetir m veces J=fdjac(’fej72’. Entonces. % Hessiana Ho=[0 J. y) = (3. cuaAunque en el ejemplo se tomaron muy pocos valores para x y y . debemos crear un vector p que contenga todas las parejas (x. Luego de esto. donde m es el número de ˆ puntos en donde vamos a evaluar la matriz H .p(:. ˆ Por último repetimos m veces el proceso de calcular H .p(:. denimos este conjunto en MATLAB : x=[3:1:5]. es decir. Por ejemplo. % Determinante de MPD end end dt El vector dt resultante es de tamaño 2x12.CONCAVIDAD Y CONVEXIDAD 205 mos a evaluar esta matriz en el conjunto S = {(x. 5] ∧ y ∈ [−4.J’ H].Y(:)’].Y]=meshgrid(x. Aún así. los componentes del vector dt son negativos.

y a partir del conjunto nito de puntos S = {(x. % Matriz Hessiana vp(1:2. cuasiconcavidad y cuasiconvexidad para una función un poco más complicada. Deniendo previamente la función en un M-file llamado fej73. % Valores propios if abs(vp(i))>tol. 7. ya que es en estos casos en donde la herramienta computacional puede resultar muy útil. como si lo era en el ejemplo anterior.Versión Preliminar siconcavidad y cuasiconvexidad de la función f (x. y aunque ha sido útil para propósitos de explicación.y) p=[X(:)’. .5 • Método Gráco En la gura ?? se observa que esta función es cóncava (y por lo tanto cuasicóncava) a lo largo de su dominio.Y]=meshgrid(x.1]. ya que nuestro propósito con este ejemplo es mostrar la utilidad de MATLAB para analizar rápidamente la forma de la función. % Vector con puntos (x. f (x. y) = x0.1].m)). no explicaremos en detalle cada instrucción13 .1. y) = x2 + y 2 + (x + y)2 por diferentes métodos. % Repetir en todos los puntos H=fdhess(’fej73’.206 GEDEM . % Valores propios end tam=size(vp). se tiene: x=[0. Ejemplo 7. esta función es evidentemente convexa. es importante tratar con funciones en donde su concavidad o convexidad no es tan evidente.3.000016 for i=1:tam(1)*tam(2).1:10:100. • Matriz Hessiana.Y(:)’].1:10:100.3. % V. % Valores para y [X. propios cercanos a cero 13 Aunque las instrucciones son básicamente las mismas. tol=0.y). Sin embargo. y)\x ∈ (0. y no enseñar los pasos que se deben seguir en cada método de análisis.p(:.5 y 0. % Valores para x y=[0. A diferencia del ejemplo anterior.y) for m=1:length(p). 100]}. realizamos el análisis de concavidad.m)=eig(H). convexidad. % Valores para f(x. 100] ∧ y ∈ (0. En el siguiente ejemplo.

y por lo tanto también es cuasicóncava. en el cual. % Redondear end end Hemos asumido valores para x y y estrictamente positivos. % Repetir k veces D=Ho(1:k+1.y).m)). % Hessiana Orlada for k=1:1:length(Ho)-1. aquellos valores sucientemente cercanos a cero (tol) se aproximan a cero. else vp(i)=round(vp1(i)). % Vector con puntos for m=1:length(p). % Gradiente H=fdhess(’fej73’. debido a que el cálculo de la matriz Hessiana es numérico.m)). % Valores para x y=[0. % Determinante de MPD end end El vector dt es de tamaño 2x121.Y]=meshgrid(x. los valores que ésta matriz contiene se aproximan con gran precisión a los valores reales.1].1:k+1). por lo que en algunos puntos hay valores propios de la matriz hessiana que son positivos.J’ H].p(:.1:10:100. aunque muy cercanos a cero. En la posición (i. % Valores para f(x. • Matriz Hessiana Orlada x=[0. Para depurar el vector vp de estos valores. % Hessiana Ho=[0 J. aunque no son exactamente iguales.m)=det(D). % MPD dt(k. por lo cual podemos concluir que la función es cóncava. Al observar los . Esto último lo podemos vericar con la matriz Hessiana Orlada. por medio del comando round.Y(:)’]. Además. % Repetir m veces J=fdjac(’fej73’. Se observa que todos los componentes del vector vp son no positivos (menores o iguales que cero).y) p=[X(:)’.1].1:10:100. j ) se este vector se ha calculado el determinante del menor principal dominate de orden i de la matriz Hessiana Orlada calculada en el punto j .p(:. es necesario el segundo procedimiento. % Valores para x [X.CONCAVIDAD Y CONVEXIDAD 207 vp(i)=vp(i).

7. • Conjuntos Contorno Se observa que el conjunto contorno superior es convexo. sus curvas de nivel se visualizan en R3 . Sin embargo. indicando que los Menores Principales Dominantes de orden 1 (D1 ) evaluados a lo largo del conjunto S son negativos. . primero debemos crear la función en un M-file llamado fej74: function f = fej74(v).4.4. por lo cual solo disponemos de los métodos de matriz Hessiana y matriz Hessiana Orlada.1. f (x. por lo cual podemos concluir también por este criterio. z=v(3). Funciones con tres o más variables (Multivariadas) Nuestro propósito en esta sección es ilustrar con dos ejemplos la manera en que se extienden los métodos de análisis de concavidad y convexidad para funciones de tres o más variables.208 GEDEM . mientras que los de orden 2 son positivos.Versión Preliminar componentes de este vector utilizando las instrucciones: format + dt se observa que todos los componentes de la primera la de este vector son negativos. puesto que ya no es posible visualizar la función. Cuando tenemos funciones con tres variables. mientras que los componentes de la segunda la son positivos. En funciones de cuatro o más variables no es posible utilizar el método gráco y el método de Conjuntos contorno. además de los métodos de matriz Hessiana y Hessiana Orlada.4. Ejemplo 7. que la función es cuasicóncava. 7. A partir de los criterios de evaluación y de la información que nos proporciona este vector podemos concluir que la función es cuasicóncava. y por lo tanto es válido en estas funciones utilizar el método de conjuntos contorno. y. ya no se puede utilizar el método gráco. z) = x4 + 3y 4 + 5z • Matriz Hessiana Al igual que en los caso anteriores.

• Matriz Hessiana Orlada. end tam=size(vp) tol=0. % Valores para y. que va a estar contenido en el vector p: x=[-10:1:10]. vp(1:3.z=x. % Vector con puntos Por último. debemos crear un conjunto nito de puntos S en los que queremos evaluar la matriz H . invocamos la rutina fdhess para calcular la matriz hessiana en cada punto del vector p. z)\x ∈ [−10.y. end end Se observa que todos los componentes del vector vp son no negativos. Para este ejemplo.z). else vp(i)=round(vp(i)).Z]=meshgrid(x.Y. calculamos sus valores propios (con su correspondiente depuración) y a partir de la información contenida en el vector vp podemos concluir sobre la concavidad y convexidad de la función. vp(i)=vp(i). % Valores para x y=x. La única modicación es que.000016 for i=1:tam(1)*tam(2).^4+5*z. necesitamos de- . if abs(vp(i))>tol.m)=eig(H). 10]}.m)). al igual que hicimos con el vector de valores propios de la matriz hessiana. y. H=fdhess(’fej74’.Z(:)].y) p=[X(:)’.^4+3*y. for m=1:length(p). f=x.Y(:)’.z [X. podemos asumir un conjunto S = {(x. Se siguen los mismos pasos que trabajamos en el ejemplo anterior. lo cual indica que la función es convexa.p(:. 10] ∧ y ∈ [−10. % Valores para f(x. Luego de esto.CONCAVIDAD Y CONVEXIDAD 209 y=v(2). x=v(1). 10] ∧ z ∈ [−10.

m)). Para visualizar estas curvas . tenemos que las curvas de nivel están dadas por: α = x4 + 3y 4 + 5z =⇒ z= α−x4 −3y 4 5 Así.Y(:)’.Y. for i=1:tam(1)*tam(2). z). end end Se observa que todos los componentes del vector dt (una vez depurados) son no positivos.y.y) p=[X(:)’.z [X.J’ H]. y.y. end end tam=size(dt). % Valores para y. % Vector con puntos (x. y. H=fdhess(’fej74’. J=fdjac(’fej74’.p(:. z) = x4 + 3y 4 + 5z resultan de igualar la función a una constante α. De esta manera. sí podemos visualizar sus curvas de nivel en el plano (x. tol=0.z). else dt(i)=round(dt(i)).p(:.210 GEDEM .m)=det(D). x=[-10:1:10]. a pesar de no poder visualizar la función f (x. lo cual implica que a partir de la información de la matriz Hessiana Orlada. • Conjuntos Contorno.Z(:)].Z]=meshgrid(x.m)). % Valores para f(x.Versión Preliminar purar el vector que contiene los determinantes de los menores principales dominantes de la matriz hessiana orlada. D=Ho(1:k+1.z=x. Recordemos que las curvas de nivel para f (x. z). podemos concluir que la función es cuasiconvexa. % Valores para x y=x. y. Ho=[0 J.z) for m=1:length(p).00016. dt(k. dt(i)=dt(i). for k=1:1:length(Ho)-1.1:k+1). % Depuración if abs(dt(i))>tol.

1. donde n es el número de curvas de nivel que deseamos visualizar. los únicos métodos computacionales disponibles para este caso son los de matriz hessiana y matriz hessiana orlada. crear los datos y por último invocar el comando para gracar.alpha(i)). tampoco podemos utilizar el método de conjuntos contorno.y.y [X. 0.^4)*(1/5). mesh(X.Y]=meshgrid(x. Invocar el comando para gracar: for i=1:length(alpha) Z=fcnej74(X. Ejemplo 7. Por último. Crear los datos: x=[-10:0. es decir. f (w. y por lo tanto podemos concluir que la función es cuasiconvexa. Lo particular en este caso es que vamos a repetir el último paso n veces. % Datos para x. y.^4-3*y.Y. 2.1:10].CONCAVIDAD Y CONVEXIDAD 211 de nivel en MATLAB . mostraremos un ejemplo de una función con más de tres variables. utilizamos los mismos pasos que se requieren para gracar una función en R3 .5. Por lo tanto. alpha=[-10000 0 10000]. Para este ejemplo vamos a visualizar cuatro curvas de nivel de la función dadas por α = (−10000. especicar la función. 7.alpha) z=(alpha-x. En este caso.y=x. % Curvas de nivel 3. x. 10000). ya que no se pueden visualizar las curvas de nivel de la función.2.y). tenemos: Se observa en esta gráca que el conjunto contorno inferior es convexo.4. Crear la función en un M-file llamado fcnej74: function z=fcnej74(x. z) • Matriz Hessiana .Y.Z) hold on end A partir de estas instrucciones.

Versión Preliminar • Matriz Hessiana Orlada .212 GEDEM .

Primero. es decir. Según (?). los consumidores siempre quieren maximizar la utilidad que le proporcionan los bienes que compran. y) ≥ 0 x≥0 y≥0 donde f . benecios o costos. debemos hacer un análisis cualitativo 213 . dependiendo de si ella representa utilidad. delimitando el conjunto de soluciones de acuerdo a restricciones si las hay. Aquí a f (·. el problema de hallar los máximos o mínimos de una función (optimización estática). una caracterización típica de problemas de optimización es encontrar valores extremos de una función f (x. y) restringida a un subconjunto bien especicado de R2 : + Maximizar f (x. y los productores maximizar sus benecios o minimizar sus costos. dado que minimizar equivale a maximizar el negativo de la función. En este capítulo trabajaremos a partir de herramientas computacionales. En el problema general hablamos de maximizar. También podemos establecer una secuencia general para resolver un problema de optimización computacionalmente. y) sujeta a g(x. y a g(·. ·) se le conoce ++ como función objetivo. g : R2 −→ R son funciones diferenciables. Esto implica que ellos busquen siempre la mejor manera de realizar sus cosas. Así. ·) como función restricción o conjunto factible. Norman Maldonado La racionalidad de los agentes es un supuesto frecuentemente utilizado la teoría económica. busquen optimizar sus actividades.Capítulo 8 Optimización Lida Quintero.

8. aplicamos la rutina computacional pertinente según el problema. Minimizar Con esta rutina hallamos la imagen más pequeña de nuestra función objetivo. 8.Versión Preliminar del problema. y). identicar el tipo de función objetivo al que nos enfrentamos. 1 . debemos ser muy cuidados con la interpretación de los resultados.1. en la segunda presentamos optimización de funciones del mismo tipo pero con restricciones.214 GEDEM .1. en esta sección veremos el caso particular en el que f (x. nos hará mucho más fácil la comprensión de estos problemas. y) tiene forma no lineal. Optimización no lineal sin restricciones De nuestro problema general de optimización. es decir. Teniendo claras las condiciones iniciales del problema. Existen varios métodos numéricos para solucionar este caso particular de optimización como tales. En problemas sencillos es práctico trabajar con funciones inline. Además. Ejemplo 8. y no hay restricciones.1. ya que se pueden modicar fácilmente y permiten hacer uso de otras funciones disponibles en MATLAB . caso que veremos en la primera sección. El análisis de concavidad. y su comportamiento si es posible de manera gráca para tener idea de la región donde se puede encontrar la solución. el tipo de restricciones. cuasiconcavidad y cuasiconvexidad de funciones que vimos en el capítulo anterior. Adicionalmente. Por último. no tenemos g(x. m´ f (x) = x3 − 4x2 + 6 ın En general es mejor trabajar con funciones denidas en un m-le. convexidad.1. por lo que debemos buscar la solución en todo el dominio de la función objetivo. Al optimizar se pueden presentar varios casos según el tipo de funciones que estemos trabajando: cuando la función objetivo no es lineal. gradientes. por lo que la utilizamos para solucionar problemas de minimización. y por último tendremos el caso en que las funciones son lineales. restricciones. o función restricción. que veremos en esta sección junto con las rutinas de MATLAB que hacen uso de ellos. podemos crear las funciones computacionalmente(función objetivo. etc)1 . tales y tales.

nuestro conjunto de salida o dominio de f (x) son todos los reales.ind]=min(y). Invocar rutina de solución. 3 2 .01. Debemos crear las imágenes de f (x) en una vecindad sucientemente grande alrededor de x = 3. En realidad. Como resultado. que.3333) y convexa en el intervalo (1. obtenemos xm=2. En la gráca observamos que. 6]}. en un punto cercano a x = 0.4814. Podemos introducir la función como un m-le o por medio del comando inline: f=inline(’x. En la segunda línea están las imágenes de ese conjunto de puntos.3333. Análisis Cualitativo del problema. En la tercera. sino puntos óptimos interiores en los que se cumpla la condición f = 0.67 y ym=-3. teniendo estos valores. y luego. 1.1 el comportamiento de la función f (x) y de su derivada fx en una parte de su dominio: S = {x ∈ [−3. Finalmente en la cuarta línea encontramos el valor de x que minimiza a f (x). h=0. Paso 2. x=[2:h:4].^2+6’) Paso 3. % Crear imágenes [ym. y en un punto cercano a x = 3. 4]). Nótese en la gura 8. % Puntos cercanos a x=3 y=f(x). solo se requiere reducir el valor del parámetro h. sólo con el propósito de visualizar el comportamiento de la función. por lo que no estamos buscando puntos óptimos que estén en la frontera. según lo que analizamos en el paso 1.^3-4*x. ∞). 6]}. un mínimo2 . se halla la imágen más pequeña junto con su posición dentro del vector y. escoger el más pequeño de todos ellos3 . En caso de requerir mayor precisión para x. Recordemos que establecimos el conjunto S = {x ∈ [−3. Podemos ver en la Figura 8. % Imágen más pequeña xm=x(ind).1 que en estos puntos la primera derivada de la función se hace cero. Para el caso de funciones univariadas. Figura 8. es un punto cercano al mínimo que buscamos. Crear funciones.1: Comportamiento de f (x) Sabemos del capítulo anterior que la función es cóncava para el intervalo (−∞. % Argumento que minimiza En la primera línea creamos los puntos cercanos a x = 3 (x ∈ [2. esta función tiene un máximo.OPTIMIZACIÓN 215 Paso 1. éste es el método más sencillo en el que se hallan mínimos computacionalmente.

Versión Preliminar .216 GEDEM .

Ecuaciones Diferenciales y Dinámica Continua Ecuaciones DiferencialesDinámica Continua FALTA UNA INTRODUCCIÓN AL USO DE LAS ECUACIONES DIFERENCIALES EN ECONOMÍA ecuaciones diferenciales ordinarias las ecuaciones no son simplemente con respecto al tiempo. utilizados en la solución de ecuaciones diferenciales ordinarias. y aplicaciones computacionales utilizados en situaciones donde el tiempo juega un papel importante. Métodos Numéricos Desde el punto de vista algebraico.1. Todos estos métodos se enmarcan dentro de un contexto estático en el que no es posible observar los comportamientos de las variables a través del tiempo. 9. Cuando ninguna condición inicial es denida la solución consiste en hallar una fórmula general 217 . Mario González En los capítulos anteriores nos hemos ocupado de los procedimientos utilizados para analizar y optimizar diferentes tipos de funciones.1.Capítulo 9 Sistemas Dinámicos Diego Corredor. solucionar un sistema de ecuaciones diferenciales implica encontrar la fórmula de la o las funciones que satisfagan el sistema. En la segunda parte desarrollamos el mismo esquema para las ecuaciones en diferencias. 9. ya sea como una variable continua (ecuaciones diferenciales) o discreta (ecuaciones en diferencias). presentando algunos ejemplos y aplicaciones económicas. En este capítulo nos concentramos en los métodos numéricos.1. En la primera parte del capítulo explicamos los métodos numéricos. y computacionales.

o condiciones de fronteraCondición de Frontera. sino que realizamos una aproximación numérica a ellas.218 GEDEM . Este procedimiento se repite una y otra vez hasta alcanzar el límite superior del intervalo de tiempo considerado. Aún más. por la naturaleza de los métodos. Los métodos numéricos utilizados para la solución de problemas de valor inicial son explicados en detalle más adelante. obtenemos que el ˙ conjunto de funciones que cumplen esta ecuación viene dado por la fórmula general: x(t) = Ae3t .Versión Preliminar de las funciones. la solución numérica de sistemas dinámicos implica que algún tipo de condición deba ser impuesta. por lo general. la única función que satisface la ecuación diferencial y la condición inicial es x(t) = 4e3t .1) El procedimiento de solución de un IVP consiste. Dependiendo del tipo de condición impuesta (inicial o de frontera) el procedimiento de solución numérica cambia. En el ejemplo. no es posible obtener ningún tipo de ecuación general de las funciones solución. En otras palabras. Si tomamos una condición inicial. al utilizar métodos numéricos nunca encontramos tales funciones. es posible aproximar el valor de la función en el siguiente período de tiempo. en un intervalo de tiempo determinado. donde A puede ser cualquier número real. Pero si agregamos la condición inicial x(0) = 4.0123e3t . si imponemos la condición de frontera x(2) = 5. De esta forma se tiene un punto y la derivada de la función en el punto. Con estos dos elementos. también pueden imponerse condiciones en otros momentos del tiempo. Por ejemplo. resolver un sistema dinámico consiste en aproximar las funciones solución a partir del momento del tiempo en el que es impuesta tal condición. y formalmente consisten en aproximar x(t). de modo que: x(t) = f t. la función particular que satisface la condición y el sistema de dinámico es: x(t) = 0. es posible obtener las funciones especícas que solucionan el conjunto de ecuaciones. y haciendo uso del polinomio de Taylor. al solucionar algebraicamente la ecuación x = 3x. la aproximación se realiza hacia adelante. al contrario del método algebraico. . Es decir que. Por otro lado. Pero si las condiciones iniciales del problema son determinadas. A este tipo de problemas se les conoce con el nombre de Problemas de Valor InicialProblemas de Valor! Inicial o IVPIVP|seeProblemas de Valor InicialInicial Value Problems|seeIVP (por sus siglas en inglés). en tomar la condición inicial y evaluarla en la ecuación diferencial. x(t) ˙ x(t0 ) = x0 (9. Es necesario anotar que las condiciones no necesariamente tienen que ser iniciales.

y porque la aproximación a las funciones se realiza antes y después de cada condición. el error resulta ser una función cuadrática del tamaño del paso. tenemos que: xi+1 = xi + hf (ti . y así sucesivamente. es posible aproximar x1 : x1 = x0 + f (0. Como la aproximación es de primer grado.1) y.SISTEMAS DINÁMICOS 219 Una generalización de los problemas de valor inicial son los denominados Problemas de Valores en la FronteraProblemas de Valor! en la Frontera o BVPBVP|seeProblemas de Valor en la FronteraBounded Value Problems|seeProblemas de Valor en la Frontera. Nos limitamos a los métodos más sencillos que sirven de base para los demás. por lo que en cada iteración la solución exacta es el valor aproximado más un error cuadrático:2 Para una explicación clara y sencilla de estos métodos ver Fackler (2003. obtenemos: x(t + h) ≈ x(t) + hx(t) ˙ (9. si la aproximación es de segundo grado. condiciones de frontera al sistema dinámico. en la ecuación (9. como su nombre lo indica.2) Con base en el sistema (9. En este tipo de problemas imponemos. Los métodos numéricos utilizados para resolver este tipo de problemas son avanzados. xi ) (9. Método de Euler Método de Euler: Conocido también como método de la tangente. por lo que no serán tratados en este libro. tras hacer la expansión del polinomio de Taylor de grado 1 alrededor de t + h. Es necesario aclarar que existe una gran cantidad de métodos por lo que no pretendemos abarcar todos los algoritmos existentes. aproxima la curva solución de la ecuación diferencial a través de un polinomio de Taylor de grado 1.1). supongamos que la función x(t) satisface el sistema de ecuaciones (9. La solución de estos sistemas resulta más complicada porque es posible imponer varias condiciones a la vez.2) y asumiendo h = 1. En general. Para entender el algoritmo.3) Es importante recalcar que hallamos aproximaciones. el error asociado a ésta es una función cúbica. x0 ) Ya con x1 . 2 1 .1 A continuación presentamos algunos métodos numéricos utilizados para solucionar problemas de valor inicial. cap. 6). es posible encontrar una aproximación de x2 y así sucesivamente.

También debe ser especicada. conocidos como algoritmos adaptativos. Uno de los procedimientos alternativos más simples. al reducir el tamaño del paso de la iteración se aumenta el número de operaciones aritméticas.x(i)). obteniendo:4 El lector avanzado en métodos numéricos puede constatar que existen programaciones más ecientes que las presentadas en esta parte del capítulo. t(1)=t0. En estos casos. Existe un tipo de algoritmos.220 GEDEM . t(i+1)=t(i)+h. según sea necesario. El programa. aproximamos la solución con un polinomio de Taylor de grado 1. la derivada de la 3 . es el método modicado de EulerMétodo Modicado de Euler. no fueron programados teniendo en cuenta el número de operaciones aritméticas. lo que disminuye la velocidad del algoritmo. end Existen ecuaciones diferenciales particulares en las cuales el algoritmo de Euler puede resultar poco efectivo a la hora de aproximar la solución numéricamente. 4 El método de Euler modicado se basa en el hecho de que para una función cualquiera g(x). Al igual que en el método de Euler. Sin embargo. o script. por tanto. si la función es relativamente bien comportada y h es lo sucientemente pequeño. o cualquier otra medida de eciencia de un método numérico. el tamaño del paso h y el tiempo inicial t0. for i=1:n x(i+1)=x(i)+h*f(t(i). que durante el proceso iterativo observan el comportamiento de los errores en cada etapa con el n de reducir o incrementar el tamaño del paso. la ecuación diferencial cuya sintaxis es dxdt=f(t. Los programas aquí presentados tienen un objetivo expositivo y.Versión Preliminar x∗ (t + h) = x(t + h) + O h2 Una forma de disminuir la inexactitud de los resultados es tomar tamaños de paso más pequeños. es recomendable recurrir a otro tipo de métodos más estables. en otro chero. por ejemplo h = 0. que se presenta a continuación muestra la programación del método de Euler3 . Sin embargo. la condición inicial x0. no lo evaluamos alrededor de t + h sino de t.x): x(1)=x0. El usuario debe denir con anterioridad el número de iteraciones n.1.

llegamos a la siguiente regla de iteración: xi = xi−1 + hf ti . xi ) Finalmente.5) Esta regla de iteración es denominada fórmula implícita de Euler. o simplemente RK4RK4|seeMétodo de Runge Kutta5 . un algoritmo RK proviene de un polinomio de Taylor de grado 4.6) Como se puede observar. 5 De la misma forma. el método de Euler es también conocido como método de Runge Kutta de primer orden. su solución incrementa el número de cálculos y. se habla de un método de Runge . Este último es uno de los procedimientos más utilizados para resolver problemas de valor inicial.KuttaMétodo de Runge .4) A partir de la ecuación anterior. Independientemente del tipo de ecuación (lineal o no lineal).Kutta de segundo orden (RK2)RK2|seeMétodo de Runge . ya que no es posible despejar xi+1 en términos de ti y de xi . un método más efectivo es el Método de Runge . Cuando el polinomio de Taylor utilizado es de grado 2. ya que se obtiene a partir de un polinomio de Taylor de grado 1. la regla de iteración para xi+1 es: xi+1 = xi + hf ti+1 .Kutta. es denominado método de Runge .Kutta. función en un punto es aproximadamente igual a la derivada de la función en un punto adyacente: g (x) ≈ g (x + h) o g (x − h) ≈ g (x). disminuye la velocidad de solución. .Kutta: Este método encuentra una solución aproximada de la ecuación diferencial partiendo de un polinomio de Taylor determinado. por su fácil programación. x1 ) = 0 (9.SISTEMAS DINÁMICOS 221 x(t) ≈ x(t − h) + hx(t) ˙ (9. estabilidad y velocidad de solución.6). En algunos casos. el valor de la variable en la siguiente iteración es el valor que solucione la siguiente ecuación: x1 − x0 − hf t1 . que presentamos a continuación.Kutta de 4 orden. por lo tanto. en cada iteración es necesario solucionar una ecuación similar a la (9. si por ejemplo. Dados un t0 y un x0 . xi+1 ) (9. Método de Runge .

222

GEDEM - Versión Preliminar La idea básica del método consiste en expresar las derivadas de orden superior del polinomio de Taylor, en términos de la primer derivada. Para hallar la aproximación de Runge - Kutta de, por ejemplo, segundo orden, partimos de la aproximación de Taylor de grado dos:

x(t + h) = x(t) + hf t, x(t) +

h2 f t, x(t) +O(h3 ) 2

(9.7)

Una vez obtenida esta aproximación, se busca formular la segunda derivada en términos de la primera, f t, x(t) . Reorganizando los términos de la ecuación (9.7), tenemos:

x(t + h) ≈ x(t) +

h h f t, x(t) + f t, x(t) +hf t, x(t) 2 2

A partir de una aproximación de Taylor de primer orden para una función de dos variables, es posible mostrar que:6

x(t + h) ≈ x(t) +

h h f t, x(t) + f t + h, x(t) + f t, x(t) 2 2

De esta forma, la ecuación que determina el proceso iterativo en el método de Runge - Kutta de segundo orden es:

xi+1 = xi +
donde,

1 (F1 + F2 ) 2

F1 = hf (ti , xi ) F2 = hf (ti + h, xi + F1 )
El siguiente script muestra una programación del método de Runge - Kutta de segundo orden. El número de iteraciones, el tamaño del paso, la condición y el tiempo iniciales deben ser especicados con anterioridad, al igual que debe ser denida la ecuación diferencial en otro chero:
6

Si se desea revisar una deducción estricta ver Kincaid (1994, págs 514 - 516).

SISTEMAS DINÁMICOS x(1)=x0; t(1)=t0; for i=1:n f1=h*f(t(i),x(i)); f2=h*f(t(i)+h,x(i)+f1); x(i+1)=x(i)+0.5*(f1+f2); t(i+1)=t(i)+h; end

223

Para hallar la aproximación de Runge - Kutta de cuarto orden, partimos del polinomio de Taylor de grado 4 y seguimos un procedimiento análogo. Así, la regla de iteración es:

xi+1 = xi +
donde,

1 (F1 + 2F2 + 2F3 + F4 ) 6

  F1 = hf (ti , xi )     F = hf (t + 1 h, x + 1 F ) 2 i i 2 2 1 1  F3 = hf (ti + 2 h, xi + 1 F2 )  2    F = hf (t + h, x + F ) 4 i i 3
Dado que la aproximación es realizada a partir de un polinomio de Taylor de grado 4, el método de Runge - Kutta de orden 4 tiene un error asociado O h5 . Aunque es posible obtener métodos RK de orden superior, con el n de disminuir la magnitud del error, su uso resulta más costoso, en términos de procesamiento, con respecto al algoritmo RK4.

Regla del Trapecio:Regla del TrapecioRegla del Trapezoide|seeRegla del Trapecio Recordemos que en la sección 6.2 nos referimos a la Regla del Trapecio como un método de aproximación lineal de una integral. El procedimiento consistía en dividir el intervalo de integración en subintervalos, para luego sumar las áreas de los trapecios de cada uno de estos, y así poder aproximar el área bajo la curva. La fórmula que utilizamos para calcular el área de cada trapecio era:7
7

Ver la gura 6.1.

224

GEDEM - Versión Preliminar

∆x y0 + y1 2

(9.8)

La idea básica de la Regla del Trapecio, en la solución de IVPs, consiste en integrar la ecuación diferencial (9.1) en el intervalo t, t+h y luego aproximarla utilizando la ecuación (9.8). Al integrar la ecuación diferencial (9.1) en el intervalo especicado obtenemos la siguiente expresión:

t+h

t+h

x(t)dt = ˙
t t

f t, x(t) dt

(9.9)

t+h

x(t + h) − x(t) =
t

f t, x(t) dt

Reorganizando términos, llegamos a una regla de iteración de la forma:
ti+1

xi+1 = xi +

f t, x(t) dt
ti

(9.10)

Por la ecuación (9.8), la integral puede ser aproximada de la siguiente manera:
ti+1

f t, x(t) dt =
ti

h f (ti , xi ) + f (ti+1 , xi+1 ) 2

De esta forma, obtenemos la siguiente regla de iteración, conocida como la Regla del Trapecio:

xi+1 = xi +

h f (ti , xi ) + f (ti+1 , xi+1 ) 2

El método del Trapecio, al igual que el método de Euler modicado, es un proceso implícito de solución que resulta ser estable, aunque de baja velocidad y alto costo computacional. Una característica esencial de los métodos ya presentados es que son métodos de un solo paso, es decir, calculan xi+1 tomando como base a xi . Sin embargo, existe otro tipo de algoritmos, denominados métodos multipaso, que en cada iteración hacen uso de los valores xi−1 , xi−2 , ..., x0 .

SISTEMAS DINÁMICOS

225

La diferencia entre cada uno de los métodos multipaso radica en el numero de valores utilizados y en la forma como se realiza la aproximación de la integral. Uno de los métodos multipaso más conocido es el Método de Adams - Bashforth - Moulton, que presentamos a continuación:

Método de Adams - Bashforth - Moulton:Método de Adams - Bashforth
- Moulton Este método, además de ser un algoritmo multipaso, hace parte de los métodos denominados predictor - corrector. Esta clase de algoritmos realiza una primer iteración para calcular una predicción de xi+1 (predictor), y luego la utiliza para iterar de nuevo, con el n de obtener un valor corregido del cálculo inicial de xi+1 (corrector). El algoritmo de Adams - Bashforth - Moulton consiste de dos procedimientos muy parecidos: el Método Adams - Bashforth y el Método Adams - Moulton. El primero se encarga de calcular el predictor, mientras que el segundo genera el corrector. Veamos cada uno de estos métodos por aparte:

Método Adams - Bashforth:Método de Adams - Bashforth El algoritmo
consiste en aproximar la integral del sistema (9.10), encontrando los coecientes desconocidos (a, b, c, ...) de la siguiente ecuación:
ti+1 ti

f t, x(t) dt = h af (ti , xi ) + bf (ti−1 , xi−1 ) + cf (ti−2 , xi−2 ) + ...

(9.11)

Dependiendo del número de valores anteriores utilizados, el orden de las fórmulas de Adams - Bashforth cambia. Por ejemplo, si utilizamos los valores xi y xi−1 , hablamos de una fórmula Adams - Bashforth de orden 2, en la cual debemos encontrar los coecientes (a, b). A continuación presentamos el procedimiento para obtener sus valores. Para facilitar la exposición, y sin pérdida de generalidad, supongamos que ti = 0 y h = 1. Por lo que nuestro problema consiste en resolver:
0+1 0

f t, x(t) dt ≈ af (0, xi ) + bf (0 − 1, xi−1 )

(9.12)

Debemos determinar los coecientes a y b, exigiendo que la ecuación (9.12) sea exacta cuando los integrandos son polinomios de segundo o menor grado.8 Tomamos como base los siguientes polinomios:
8

Aquí utilizamos el procedimiento propuesto por Kincaid (1994, pág 824)

226

GEDEM - Versión Preliminar

p0 (t) = 1 p1 (t) = t
De esta forma, los coecientes deben cumplir el siguiente sistema de ecuaciones:

1 0 1 0

p0 (t)dt = ap0 (0) + bp0 (−1) p1 (t)dt = ap1 (0) + bp1 (−1)

El primer sumando de las dos ecuaciones anteriores corresponde al término af (ti , xi ) de la ecuación (9.11), y el segundo sumando corresponde al término bf (ti−1 , xi−1 ) de la misma ecuación. Al solucionar las integrales denidas obtenemos dos ecuaciones en términos de nuestras dos incógnitas a y b. Para la fórmula de segundo orden, los coecientes son: a = −3/2 y b = 1/2, los cuales solucionan el siguiente sistema de ecuaciones.

1 = (1)a + (1)b 1 = (0)a + (−1)b 2
Ahora consideremos una fórmula Adams - Bashforth de orden 4. Debemos exigir que la aproximación sea exacta cuando el integrando sea un polinomio de cuarto o menor grado. Tomamos como base los siguientes polinomios:

p0 (t) = 1 p1 (t) = t p2 (t) = t(t + 1) p3 (t) = t(t + 1)(t + 2)
De manera que las ecuaciones que deben satisfacer los cuatro coecientes son:

xi−2 ) − 9f (ti−3 . la condición inicial x0. Por lo general. El siguiente script presenta una programación del método Adams . la regla de iteración de la ecuación (9.SISTEMAS DINÁMICOS 227 1=a+b+c+d 1 = −b − 2c − 3d 2 5 = 2c + 6d 6 9 = −6d 4 La solución del sistema es: a = 55/24. . xi ) − 59f (ti−1 .Bashforth de cuarto orden. xi−3 ) 24 (9. Así.10) es: xi+1 = xi + h 55f (ti . En estos casos el algoritmo RK4 es denominado algoritmo de inicio. el tiempo inicial t0 y el nal tf. cierto número de valores anteriores. xi−1 ) + 37f (ti−2 .Bashforth requiere. dependiendo del orden. el tamaño del paso h. en el que el algoritmo de inicio utilizado es el método de Euler. b = −59/24 c = 37/24 y d = −9/24. El usuario debe denir previamente: el número de iteraciones n. se utiliza el algoritmo el RK4 para calcularlos. En otro chero es necesario especicar la ecuación diferencial con la sintaxis dxdt=f(t.x).13) Es importante mencionar que el método de Adams .

x(i-3))). Ahora. dado que la regla de iteración que se obtiene es un algoritmo implícito. t(1)=t0..Euler d=h*f(t(i). . Así.x(i-2))-9*f(t(i-3). for i=1:3 % Algoritmo de Inicio ..Bashforth. En total el algoritmo realiza n iteraciones.x(i))-59*f(t(i-1). b. . xi ) + cf (ti−1 . sin embargo.) es el similar al utilizado para calcular los coecientes de la fórmula de Adams .Bashforth. tres con el algoritmo de Euler y el resto con la fórmula de Adams .Bashforth.x(i-1))+37*f(t(i-2). es posible obtener la fórmula de Adams ..228 GEDEM . t(i+1)=t(i)+h. la regla de iteración (9.. h=(tf-t0)/n. t(i+1)=t(i)+h. Método Adams .Moulton Este método resulta muy parecido a la fórmula Adams .. El procedimiento para hallar los valores de (a. y utilizando el método de Euler. x(i+1)=x(i)+d. xi+1 ) + bf (ti .x(i)). c. x(t) dt = h af (ti+1 . incorpora un elemento adicional. Una vez obtenidos x1 . x2 y x3 . end for i=4:n-3 % Formula de AB de cuarto orden x(i+1)=x(i)+(h/24)*(55*f(t(i). xi−1 ) + .13) es utilizada para generar los siguientes valores hasta alcanzar el número predenido de iteraciones n. buscamos los coecientes adecuados para aproximar la integral de la siguiente forma: ti+1 ti f t.Moulton:Método de Adams .. el programa realiza tres iteraciones para calcular los primeros valores de x. end Partiendo de la condición inicial.Versión Preliminar x(1)=x0.Moulton de orden 5 para aproximar la integral con la siguiente regla de iteración: .

xi−3 son valores conocidos.Bashforth de cuarto.9 Como resultado de esto.. en la ecuación (9. .Moulton de quinto orden junto con la fórmula Adams . la ecuación (9. el valor de xi+1 obtenido por el algoritmo de Adams . el resultado de la fórmula de Adams . cap. el primer sumando dentro del paréntesis está en términos de xi+1 .. Otra forma de calcular el valor de xi+1 consiste en introducir. ti−3 y xi . el algoritmo implícito resulta más estable.Moulton. .15) 720 donde ti . Para una breve introducción sobre los métodos numéricos utilizados para resolver ecuaciones no lineales ver Fackler (2003. En otras palabras. mientras que el corrector es resultado de la fórmula Adams . como algoritmo de inicio se utiliza el RK4. Debemos encontrar el xi+1 que cumpla la siguiente ecuación: xi+1 − xi − h 251fi+1 + 646fi − 264fi−1 + 106fi−2 − 19fi−3 = 0 (9. pero también..Bashforth . El chero presentado en la siguiente página. el tamaño del paso h.Bashforth.x).. xi )..14) donde fi = f (ti . en el algoritmo de Adams . También es necesario denir la ecuación diferencial con la sintaxis dxdt=f(t. el tiempo inicial t0 y el nal nal tf.15) resulta ser no lineal. requiere el uso de algoritmos especiales.14). la condición inicial x0. Como podemos observar. en cada iteración.Moulton.Bashforth es el predictor. Cuando el sistema dinámico es de tercer o mayor orden. 3) 9 . muestra una programación del método Adams .SISTEMAS DINÁMICOS 229 xi+1 = xi + h 251fi+1 + 646fi − 264fi−1 + 106fi−2 − 19fi−3 720 (9. y su solución. es decir que el valor de la variable debe ser calculado de forma implícita. más lento y más costoso en términos de procesamiento.. El usuario debe denir previamente: el número de iteraciones n.

xp(i-1))+37*f(t(i-2).Moulton) x(i+1)=x(i)+(h/720)*(251*f(t(i)+h.x(i)+f1). Un ejemplo claro de . x(i+1)=x(i)+0.xp(i))-59*f(t(i-. y con x0 .x(i-3))). (i-3))). Una vez obtenido el predictor (xp).Versión Preliminar x(1)=x0.. % Calculo del corrector (Adams . f2=h*f(t(i)+h. end for i=4:n-3 % Calculo del predictor (Adams .x(i))-264*f(t(i-1). h=(tf-t0)/n.x(i-2))-19*f(t(i-3)...Bashforth... t(1)=t0. Es importante conocer la técnica aplicada por cada uno de los algoritmos ya que. el programa obtiene el predictor de x4 utilizando la fórmula de Adams . dependiendo de las propiedades particulares del sistema dinámico.. for i=1:3 % Algoritmo de Inicio . . Los anteriores son los métodos numéricos básicos utilizados para la solución de problemas de valor inicial.x(i-1))+106*f(t(i-2).Moulton.Bashforth) xp(i+1)=xp(i)+(h/24)*(55*f(t(i). (t(i).. el corrector es generado por medio del algoritmo de Adams . xp(i+1)=x(i+1). xp(1)=x(1).RK4 f1=h*f(t(i).5*(f1+f2). 1). x2 y x3 por el método RK4. t(i+1)=t(i)+h.xp. xp(i+1)=x(i+1).xp(i+1))+646*f.230 GEDEM .xp(i-2))-9*f(t(i-3).x(i)). end El programa calcula inicialmente los valores x1 . t(i+1)=t(i)+h.. Con estos valores. algunas veces resulta mejor utilizar uno u otro método.

Utilizando la fórmula de Euler (ecuación 9. a medida que pasa el tiempo. a continuación hacemos mención a los sistemas dinámicos rígidos y la forma como se solucionan computacionalmente.SISTEMAS DINÁMICOS esto son los sistemas dinámicos rígidos. Mientras la solución analítica converge monotónicamente a cero.3). con el n de escoger el algoritmo más eciente en términos de estabilidad y velocidad de solución. para este caso particular. En la gura (9. el proceso iterativo no converge (|x(t)| → ∞). En el ejemplo. es: xi+1 = xi + h(−10xi ) xi+1 = (1 − 10h)xi Es claro que si en el proceso de integración numérica utilizamos un tamaño de paso h > 2/10.Ecuaciones Diferenciales Rígidas 231 Para nalizar esta primera parte sobre métodos numéricos. lo cual no concuerda con la intuición de la solución analítica. Si reducimos el tamaño del paso de No existe una regla para denir cuándo un valor propio es demasiado grande o no. en la aproximación a la solución de la ecuación diferencial. por tanto. pero en otros casos tal vez no. Un ejemplo sencillo de una ecuación rígida es la siguiente ecuación diferencial: x = −10x ˙ (9. indicando que.16) La solución analítica es de la forma x(t) = Ae−10t . la solución numérica presenta un comportamiento oscilante explosivo.1) se observa la solución analítica y la solución numérica de la ecuación anterior con x0 = 10 y h = 0. es necesario tener en cuenta este criterio a la hora de enfrentarse a un sistema dinámico. Esto depende del sistema dinámico con que estemos trabajando. Sistemas Dinámicos Rígidos Ecuaciones Diferenciales Rígidas Un sistema de ecuaciones diferenciales se dice rígido cuando uno o varios valores propios de su matriz jacobiana asociada son demasiado grandes en magnitud.21. lo que puede generar errores importantes en el proceso de integración numérica y.10 Esto implica que la solución numérica es muy sensible a pequeños cambios en el tamaño del paso. Aunque en economía los sistemas de ecuaciones diferenciales rara vez resultan ser de este tipo. el valor de x(t) → 0. el valor propio λ = −10 resulta demasiado grande en magnitud. 10 . la regla de iteración que obtenemos.

obtenemos un comportamiento diferente en la solución numérica (ver gura (9.11 y 2) aún si lograramos obtener un h lo sucientemente pequeño. 11 . consiste en utilizar el método modicado de Euler (ecuación 9. Otra forma de solucionar la ecuación diferencial (9.Versión Preliminar Solucion Numerica vs. La regla de iteración que obtenemos es: En ecuaciones diferenciales sencillas es posible determinar un h lo sucientemente pequeño para obtener una solución estable.1: Solución Numérica (h = 0. esto implica un mayor número de iteraciones y. aunque la solución numérica no es completamente igual a la solución analítica.09. sí observamos un comportamiento similar (monotónico convergente). un mayor costo computacional.21 a 0.5 2 2.16). Solucion Algebraica 40 30 20 10 x(t) 0 −10 −20 −30 x(t)=10e−10t xi+1=(1−10h)xi 0 0. pero con ecuaciones diferenciales más complicadas este procedimiento resulta más complejo y.5 4 −40 t Figura 9.2)).5 3 3. el problema de convergencia lo solucionamos reduciendo h.21) 0. En el ejemplo anterior.5 1 1. este procedimiento presenta dos dicultades: 1) deducir qué tan pequeño debe ser el tamaño del paso puede resultar complicado. casi imposible. Sin embargo. Es claro que la integración numérica de la ecuación x = −10x resulta muy sensible a ˙ cambios en el tamaño del paso. En este caso. por lo tanto. lo que puede generar aproximaciones numéricas muy diferentes a las soluciones analíticas.5). en algunos casos.232 GEDEM .

ode113.5 4 t Figura 9.corrector o el método de Rosenbrock. lo que puede ser crucial en problemas de gran magnitud. por su gran estabilidad con respecto al tamaño del paso.112 se reseñan los diferentes solvers. sin importar el tamaño del paso utilizado. ode23t. ode15s. En general. también son utilizados para la solución de ecuaciones diferenciales rígidas.2. Solucion Algebraica 10 9 8 7 6 5 233 x(t)=10e x =(1−10h)x i+1 −10t i x(t) 4 3 2 1 0 −1 0 0. La desventaja de estos algoritmos es su baja velocidad de solución y su gran costo de procesamiento.2: Solución Numérica (h = 0.5 1 1. los diferentes méTomado de MATLAB 6. 12 .1. la integración numérica resulta estable. 9. como algoritmos predictor . los métodos más utilizados para la solución de sistemas dinámicos rígidos son los algoritmos implícitos. que utilizan algunos de los métodos presentados. Ejemplos Computacionales MATLAB dispone de varias rutinas.1 Function Reference: ode45.SISTEMAS DINÁMICOS Solucion Numerica vs.09) xi+1 = xi + h(−10xi+1 ) xi xi+1 = (1 + 10h) Por este método. Otros métodos. ode23. ode23tb. o solvers.5 3 3. Escoger un método de solución depende de las características particulares del sistema dinámico que estemos trabajando. ode23s. Se obtiene acceso a este cuadro digitando en la Ventana de Comandos: doc ode45. En el Cuadro 9.5 2 2.

234 GEDEM . A continuación presentamos algunas aplicaciones computacionales. Cuando inecient que el p do.Versión Preliminar todos numéricos que utilizan. E tipaso. y las situaciones en las cuales se recomienda el uso de uno u otro. Comando ode45odesolvers!ode45 Tipo de Problema No Rígido Algoritmo Combinación de un método Runge-Kutta de cuatro con uno de cinco evaluaciones. Cuando cia de to rigidez m ode113odesolvers!ode113 No Rígido ode15sodesolvers!ode15s Rígido Fórmulas de Diferenciación Numérica (opcionalmente: Fórmulas de Diferenciación hacia Atrás) Fórmula Modicada de Rosenbrock ode23sodesolvers!ode23s Rígido ode23todesolvers!ode23t Moderadamente Rígido Regla del Trapecio ode23tbodesolvers!ode23tb Rígido Fórmula Implícita Runge-Kutta de Cuando ticularme luar o la escasa.Bashforth Moulton ode23odesolvers!ode23 No Rígido Uso Debe ser lizarse: s lución en diatamen tiempo.1: Rutinas de MATLAB para solucionar IVPs . conocido como el par de Dormand-Prince Combinación de un método Runge-Kutta de orden dos con otro de orden tres. denominado el par de Bogacki-Shampine Adams . Sólo si moderad se neces sin a numérico Cuando cias muy cionar sis Cuadro 9. Es ta multipas Como es solo paso te que OD una toler la matriz te.

siendo x0 un vector de tamaño n × 1 que contiene las condiciones iniciales de las n variables (ver el ejemplo 9. Paso 2: En otro m-file.x0.SISTEMAS DINÁMICOS 235 Todos los solvers de ecuaciones diferenciales que incluye MATLAB utilizan la misma sintaxis. donde odefun es el nombre de la función. donde el tamaño del vector tiempo es m × 1. a partir de la siguiente sintaxis: options=odeset('Opción1'.).'Opción2'. la solución numérica del sistema dinámico para las diferentes condiciones iniciales.. Existen cuatro posibles valores: odeprintodeset!Outputfcn!odeprint (default): Despliega en la Command Window. El eje horizontal corresponde al tiempo y el eje vertical a x(t).. Sus inputs son un vector con los valores correspondientes al tiempo (t).. En el caso de un sistema de ecuaciones diferenciales con n variables.4). El comando odegetodeget muestra los valores en los que están conguradas actualmente estas opciones y odesetodeset permite modicar esta conguración... las condiciones iniciales del problema (x0) y unos parámetros adicionales (p1..) Entre otras. p2. proponemos los siguientes pasos generales para solucionar un problema de valor inicial: Paso 1: Denir en un m-file la ecuación diferencial con la siguiente sintaxis: f=odefun(t.p1.'Valor'.. Este intervalo de tiempo puede construirse de dos maneras.'Valor'. Paso 3: Fijar las opciones del solver para los distintos tipos de ecuaciones diferenciales.). se debe hacer un planteamiento matricial. odephas2odeset!Outputfcn!odephas2 : Contrasta grácamente la solución de la ecuación diferencial a partir de dos condiciones ini- . Una forma es colocar el valor inicial y nal del tiempo. las principales opciones que se pueden congurar con odeset son: • Outputfcnodeset!Outputfcn : Establece la manera en que se ve la solución de la ecuación diferencial. Por esta razón..p2. haciendo que el vector t sea de tamaño 2×1. especicar las condiciones iniciales x0 y el intervalo de tiempo t en el que se desea hallar la solución. La otra posibilidad es determinar los m momentos en que se desea evaluar la solución numéricamente. odeplotodeset!Outputfcn!odeplot : Muestra grácamente la solución a la ecuación diferencial..

Por default.236 GEDEM . • Jacobianodeset!Jacobian : Permite asignar una función que calcula la matriz jacobiana de la ecuación diferencial.p2.. • Outputselodeset!Outputsel .. 13 14 .. con el n de reducir los costos computacionales al calcular la solución. odephas3odeset!Outputfcn!odephas3 : Es similar a odephas2 pero para tres condiciones iniciales. Donde SOL es una variable estructura. options: vector que dene las opciones que el odesolver va a utilizar. • Statsodeset!Stats : Visualiza. p1. en la Ventana de Comandos. La sintaxis más general es SOL=odesolver(@odefun..Versión Preliminar ciales diferentes. Su valor debe ser el nombre de la función. Su valor debe ser un escalar positivo.p2.) Donde los inputs corresponden a: odefun: función donde está contenida la ecuación diferencial..x0. • Vectorizedodeset!Vectorized : Se establece en ’on’ cuando la función odefun esté vectorizada.. Especica las componentes del vector solución que son utilizadas por Outputfcn.p1. Su valores son on y off (default).).X]=odesolver(@odefun..t.options..x0: vector de tiempo y vector de condiciones iniciales previamente denidos. • InitialStepodeset!InitialStep : Sugiere un tamaño inicial de paso13 . las rutinas de MATLAB calculan automáticamente el tamaño del paso.p1.options.p2.: son los parámetros adicionales que puediera requerir la función odefun.x0.t.. [T. utilizando la siguiente sintaxis:14 Paso 4: Invocar el solver para hallar la solución de la ecuación diferencial. Su valor debe ser un vector de números enteros. t. Cada eje corresponde a la solución para cada una de las condiciones iniciales. las estadísticas del proceso de integración numérica.

Ejemplo 9. de modo que el solver no interprete el valor de alguno de los parámetros como el valor de las opciones. jar las condiciones iniciales x0 y el intervalo de tiempo t en el que se desea hallar la solución: t=[0:0. es necesario colocar [] en lugar de options. encontramos que la solución general es de la forma x(t) = 3 − e−t C . dxdt=3-x. % Dos condiciones iniciales 1 y 5 . donde las columnas contienen la solución de la ecuación diferencial para cada una de las n condiciones iniciales.SISTEMAS DINÁMICOS 237 Cuando la función utiliza los parámetros adicionales. los equilibrios y estudiemos la estabilidad de la siguiente ecuación diferencial: x=3−x ˙ Tomando las siguientes condiciones iniciales: x0 = 1 y x0 = 5. el solver entrega una serie de outputs. y no se congura alguna opción. haciendo énfasis en las diferencias puntuales de cada rutina. Encontremos computacionalmente la solución.5]. % Se especican todos los momentos x0=[1. X: Una matriz de tamaño t × n. Paso 1.x). Debido al gran número de opciones existentes.m: function dxdt=ej1(t. que además es estable. A continuación presentamos distintos ejemplos que ilustran la forma de utilizar cada solver de MATLAB . Crear la ecuación diferencial en el archivo ej1. Paso 2.1:5].1. se propone como ejercicio para el lector. La aplicación exhaustiva de todas ellas. A continuación vamos a solucionar numéricamente la ecuación dinámica para comparar las soluciones analítica y computacional. para cada ejemplo. En otro chero. De otro lado. intentamos generalizar al máximo el uso de estas. cuyas características son: T: Un vector de tamaño t × 1 con los valores de la variable tiempo en los que se calculó la solución (también conocidos como pasos). con un único equilibrio en x = 3. Al solucionar analíticamente la ecuación.

cuando tenemos diferentes condiciones iniciales.x0. realizar comparaciones entre las diferentes soluciones. de tamaño 51 × 2. Si deseamos visualizar el vector T y la matriz X sin generar el diagrama de fase. es posible. evidente en la Figura 9. En la Ventana de Comandos se despliega un vector T. También se genera una matriz X. MATLAB entrega un vector de salida T con un número diferente de componentes. 15 .Versión Preliminar Paso 3. MATLAB arroja el diagrama de fase (t. Las dos trayectorias corresponden a cada condición inicial. las estadísticas del proceso son presentadas: 11 0 67 0 0 0 successful steps failed attempts function evaluations partial derivatives LU decompositions solutions of linear systems Finalmente. Invocar el solver para hallar la solución a la ecuación.238 GEDEM . x).'on'). Las características de esta ecuación diferencial permiten utilizar ode45: [T.3.@odeplot. Además. y los círculos a lo largo de ellas. Si en el Paso 3 denimos En este caso. Así encontramos que el equilibrio es x = 3 y es estable. o deseable. Sólo cuando el vector t tiene dos componentes (t=[t0 tfinal]).X]=ode45(@ej1. que indica que ha evaluado la solución en 51 momentos (pasos) partiendo de dos condiciones iniciales. el vector T resulta ser igual al vector t.t.'stats'. de tamaño 51 × 1. Paso 4. De otra parte. En este ejemplo utilizamos outputfcn y stats: options=odeset('outputfcn'. por cuanto a partir de valores superiores e inferiores se converge asintóticamente. Así. señalan los momentos en los que se evaluó la solución. deniendo la opción Outputfcn como odeprint. Denir las opciones del solver. que contiene los momentos en el tiempo (pasos) en los que se evaluó la solución de la ecuación diferencial15 . MATLAB nos presenta a T y a X en la Ventana de Comandos. podemos hacer una pequeña variación en el Paso 3.options). sin gracarlos.

5 2 1. que no siempre que las soluciones sean convergentes.5 4 3.3: Diagrama de Fase (t.5 y x0 = 5.2.5).5 1 0 0. identicar el punto inicial y el punto nal resulta más complicado.SISTEMAS DINÁMICOS dxdt=3−x 5 239 4. y la forma para poder identicar convergencia utilizando odephas2. el punto nal tendrá ambas componentes iguales. y el punto nal es (3.3). El punto inicial es (1. y el intervalo de tiempo:16 [0. el punto nal no tendrá las componentes iguales. Cuando la ecuación diferencial es más compleja. Tomando las condiciones iniciales: x0 = −1. x0 = .4.5 4 4. cuando las soluciones convergen a diferentes equilibrios.5 x 3 2. los círculos a lo largo de la línea indican los momentos en los que se evaluaron las soluciones. indicando que cada solución converge a x = 3. el programa genera la gráca que observamos en la Figura 9. x0 = −0.5 5 t Figura 9.3].5.5 3 3. Es necesario aclarar. Por ejemplo. Nuevamente. 2.5 2 2. En estos casos. solucionemos la siguiente ecuación diferencial: Observemos que la solución puede ser calculada a partir de cualquier momento del tiempo. x) de x = 3 − x ˙ Outputfcn como odephas2.5. 16 Ejemplo 9. correspondiente a los dos valores de x en t0 .5 1 1. es posible observar que los últimos momentos son gracados automáticamente con círculos de color verde. El siguiente ejemplo ilustra este caso. no es necesario iniciar en t0 = 0.

Paso 2.4 1. dxdt=4*x.2 x =5 0 4 3.5 5].240 dxdt=3−x 5 GEDEM . Calculemos la solución computacional y analicemos numéricamente la estabilidad. dos estables (x = 3 y x = −1).2 2. Denir las opciones del solver. Aquí vamos a utilizar las opciones18 outputfcn Aquí denimos el vector tiempo y el vector x0 de una manera alternativa.8 4. Sin embargo.^2-x. Crear la ecuación diferencial en un chero llamado ej2: function dxdt=ej2(t.2 3 1 1. Notemos que la función odephas2 la invocamos de una manera diferente a la utilizada en el Paso 3 del ejemplo 9.Versión Preliminar 4. denir las condiciones iniciales x0 y el intervalo de tiempo t en el que se desea hallar la solución:17 t=[0 3].8 2 2.5 2. % Separados por espacios Paso 3.^3-x-6.4 3.8 3.4 4.4: Contraste de Dos Condiciones Iniciales con odephas2 x = 4x2 − x3 − x − 6 ˙ Encontrar la solución general de esta ecuación resulta complicado.6 4. no es necesario encontrar la solución para poder determinar que tiene tres equilibrios. Paso 1.8 3 x =1 0 Figura 9.x).6 3. y uno inestable (x = 2). 18 17 .4 2.6 2.1. En otro m-file. % Se especica t inicial y t nal x0=[-1.5 -0.2 1.6 1.

options). mientras que la segunda lo hace a x = 3. es claro que cada solución converge a un equilibrio diferente porque el punto nal es (-1. por lo que hemos escogido el solver más sencillo (ode45). no es posible controlar los momentos y el número de componentes adecuado es determinado por el solver. cuando t contiene 2 elementos.'odephas2'. lo que signica que el proceso de solución de la ecuación diferencial se hizo en 2501 momentos a partir de cuatro diferentes condiciones iniciales. A partir de la gráca podemos comparar cuál de las dos soluciones converge más rápido.5 es casi cero.5. Además. es casi vertical: el cambio en la solución de x0 = −1. En la Figura 9. dado que la curva.t. El solver que utilizamos es ode45:19 [T.'outputsel'. le indicamos al solver que las condiciones que queremos contrastar. Invocar el solver para hallar la solución a la ecuación.5 es posible observar la convergencia de ambas soluciones dado que los círculos correspondientes a los últimos momentos se encuentran más cerca unos a otros que los círculos de los momentos iniciales. correspondientes al momento inicial y al momento nal de evaluación. aunque cada vez menor.x0. es cada vez más pequeño. De esta manera. La solución de la primer condición inicial converge más rápido que la tercera. con odephas2. indicando que la solución de la primer condición converge al equilibrio x = −1. a medida que transcurre el tiempo. las soluciones de los diferentes solvers son similares. Esto signica que el cambio en cada una de las soluciones.X]=ode45(@ej2. 19 . En realidad. mientras que el de la tercera sigue siendo relativamente grande. y obtenemos un vector salida T de tamaño 2501 × 1 cuyos elementos inician y terminan en estos dos valores. en los últimos momentos. son la uno y la tres. es decir: x0 = −1. Al denir outputsel con el vector [1 3]. MATLAB también genera un vector X de tamaño 2501 × 4.5 y x0 = 2.[1 3]). 241 Paso 4. El vector t contiene sólo 2 elementos. pero entre los que también se encuentran todos los demás momentos en que se evaluó la solución.3).SISTEMAS DINÁMICOS y outputsel: options=odeset('outputfcn'.

además de resultar muy subjetiva.85 2.3 −1. sucede cuando una de las soluciones no converge. entonces tenemos que ambas soluciones son convergentes. Los criterios de convergencia son iguales a los de odephas2. de la gráca obtenido con la función odephas2. entonces alguna de las soluciones se encuentra convergiendo más rápidamente que la otra. tienden a separarse (ver Ejercicio 7).1 −1 −0.5: Comparación de las Condiciones x0 = −1. y sólo es aplicable a ecuaciones diferenciales autónomas. y si además se presentan tendencias extremas como una curva horizontal o vertical.242 dxdt=4x −x −x−6 3 GEDEM .7 2. Por otro lado.5 −1.5 2.5 0 Figura 9. cuando no observemos un acercamiento de los círculos. En este caso.65 2. En este caso. siempre y cuando se tenga en cuenta que Es claro que esta forma de identicar convergencia. depende ampliamente de la escala adoptada en cada eje. los círculos nunca se acercan unos a otros y.95 2.9 −0. por el contrario. 20 . con diagramas de fase (odeplot). mientras que la otra sí.5 y x0 = −0.75 0 2.Versión Preliminar 2 3 2. en la cual los círculos no se acercan unos a otros. la gráca muestra una curva horizontal. tienden a acercarse unos a otros. mientras que la otra no20 .2 −1. Recomendamos complementar el análisis basado en odephas2.9 2.8 x =−1.55 2.5 −1. la gráca es visualizada en tres dimensiones. dependiendo de cual de las dos soluciones sea convergente (ver Ejercicio 8).8 x =2. Una situación muy parecida. la existencia de una curva horizontal o vertical es indicio de que una de las soluciones converge. o vertical.6 2. La función odephas3 nos permite extender el análisis comparativo a tres condiciones iniciales.5 Cuando ninguna de las soluciones converge. En resumen tenemos que si los círculos.4 −1.

3 −1.5 0 2.b). 15].6 −0.2 −1.SISTEMAS DINÁMICOS 243 se trata de una gráca 3D. x0 = 4 y x0 = 10.8 x =2.5 −0.6: Contraste de Tres Condiciones Iniciales con odephas3 Ejemplo 9.5 Figura 9.5. Veamos su solución computacional con a = 0.9 2.1 −0.8 x =−0.4 −0. denir las condiciones iniciales x0. el intervalo de tiempo t y los valores de los parámetros a y b: .6 2. no es homogénea y solucionarla analíticamente es un proceso complejo.8 −1 −1. dxdt=4x −x −x−6 2 3 3 2. En otro chero.5 −1 −1.a.2 −1. dxdt=(b-a*t.9 −0.4 y b = 30: Paso 1. en el intervalo [0. para las condiciones iniciales: x0 = −1. Esta ecuación no es separable./x.5 y x0 = 2. x0 = −2.^2). Resolvamos la siguiente ecuación diferencial no autónoma: x= ˙ b − atx2 x Con las cuatro condiciones iniciales: x0 = −8.6 muestra la gráca obtenida con odephas3.*x. x0 = −0.3.5.x0. Crear la ecuación diferencial en un m-file: function dxdt=ej3(t. La Figura 9.5 0 x0=−1. % Parametros Adicionales Paso 2.4 −1.7 2.

t. la ecuación que describe los equilibrios (x = 0) es: ˙ Cuando a toma valores grandes. debemos utilizar los paréntesis cuadrados ([]) al momento de invocar la rutina. Es posible utilizar cualquier rutina para solucionar ecuaciones diferenciales rígidas. el programa interpreta el valor del primer parámetro como el valor de las opciones.X]=ode23tb(@ej3.244 GEDEM . x0=[-8 -2 4 10].4.x0. Las características de esta ecuación diferencial hacen necesario utilizar una rutina para ecuaciones rígidas:21 [T. Hemos escogido ode23tb por su mayor velocidad de solución en este problema particular.Versión Preliminar t=[0 15]. Denir las opciones del solver. x) de x = ˙ b−atx2 x Al igual que en cualquier ecuación diferencial no autónoma. b=30. De lo contrario.[]. el o los equilibrios se encuentran en función del tiempo. Dado que hemos decidido no especicar ninguna opción. el proceso de integración numérica presenta problemas. Paso 4. o cuando la solución se realiza para valores de t muy altos. % Denicion de los Parametros Paso 3.7: Diagrama de Fase (t. En este ejemplo no utilizamos opciones. a=0. 21 .4tx )/x 30 2 20 10 x(t) 0 −10 −20 −30 0 5 10 15 t Figura 9. Invocar el solver para hallar la solución a la ecuación. dxdt=(30−0. En este caso.b).a.

dados los valores propios de la matriz (λ1 = 11. Paso 1. en el intervalo [0.2857 e−3t u(t) = 0.4. Ejemplo 9. en el que podemos observar que las trayectorias de equilibrio son estables porque. Ahora calculemos numéricamente la solución y comparemosla con la solución anterior. Resolvamos computacionalmente el siguiente sistema de ecuaciones: v = 10u + 7v ˙ u = u + 4v ˙ Con la condición inicial v0 = 1 y u0 = 0.7).5]. Denir el sistema dinámico en el archivo ej4. El siguiente ejemplo ilustra el procedimiento de solución de un sistema de 2 × 2.2857 e−3t El único equilibrio es v = 0 y u = 0 y. viene dada por las siguientes ecuaciones: v(t) = 0. sabemos que se trata de un equilibrio de punto de silla. λ2 = −3). La solución analítica del sistema dinámico. ahora presentaremos una generalización para la solución de sistemas de ecuaciones diferenciales. Hasta ahora hemos resuelto una ecuación diferencial a la vez.7143 e11t + 0. las soluciones siempre convergen hacia ellas. 0.m . x) (Figura 9.SISTEMAS DINÁMICOS 245 x(t) = ± b at Si utilizamos la opción odeplot obtenemos el diagrama de fase (t. al partir de condiciones iniciales diferentes. dadas las condiciones iniciales.2857 e11t − 0.

options). % componente 1 de x0 es v0 % componente 2 de x0 es u0 Paso 3.'odeplot'). % componente 1 de x es v u=x(2). en valor absoluto. Invocar el solver para hallar la solución a la ecuación. En este caso. para solucionar el sistema dinámico.5]. creamos una vector x que contiene a las variables v y u. dudt]. y el vector dxdt Dado que el máximo valor propio de la matriz asociada al sistema no es mucho más grande. De esta forma. Utilizamos la rutina ode45:22 [T. dudt=u+4*v.x). el vector de condiciones iniciales x0 tiene los valores de las condiciones iniciales para cada variable (v0 y u0). v0=1. Denir las opciones del solver. % componente 1 de dxdt es dvdt % componente 2 de dxdt es dudt Paso 2. 22 . estamos seguros que el sistema dinámico no es rígido. u0=0.x0. denir el intervalo de tiempo t y las condiciones iniciales x0: t=[0 0.t. En otro chero. u0].246 function dxdt=ej4(t. En este ejemplo utilizamos odeplot como función de salida: options=odeset('outputfcn'.Versión Preliminar dxdt=[dvdt. % Sistema dinamico GEDEM . Paso 4.X]=ode45(@ej4. que el valor propio más pequeño. % componente 2 de x es u dvdt=10*u+7*v. x0=[v0. v=x(1).

el tamaño m × n de la matriz X indica que se han calculado las soluciones de n variables para m momentos.0) es un equilibrio de punto de silla es necesario tomar en cuenta más condiciones iniciales alrededor de este punto. El siguiente ejemplo presenta la solución del sistema para 3 condiciones iniciales. para n condiciones iniciales. 23 .8 a.). donde las columnas son la solución para cada variable. Cuando trabajamos con una sola ecuación diferencial.15 0. por medio de la rutina rk4. u) en la misma gráca (ver Figura 9. Al plantear de esta forma el sistema dinámico. ode45 genera un vector T. a) 150 70 b) 60 50 100 v(t) u(t) 40 v(t) u(t) 30 50 u(t) 20 10 0 0 0. v) y (t. ya que las rutinas de MATLAB .23 La función odeplot genera simultáneamente los diagramas de fase (t.25 0. necesitamos comparar las soluciones de dos condiciones iniciales. de tamaño m × 2. si utilizamos la función odephas2 obtenemos el diagrama de fase (v. Sin embargo.2 0. u) Para poder observar que (0.4 0.8 b.35 0.). esto signicaba que la solución era calculada en m momentos. Como salidas. si la matriz obtenida X tenía un tamaño de m×n. que contiene los momentos de evaluación de la solución.05 0. de tamaño m×1.SISTEMAS DINÁMICOS 247 tiene los valores de la derivada de cada variable con respecto al tiempo (dvdt y dudt). Si.8: a) Diagramas de Fase (t. a pesar de solucionar sistemas dinámicos de varias variables. u) b) Diagrama de Fase (v. considerar más condiciones implica un problema.45 0.3 0. Ahora. las rutinas de MATLAB pueden solucionar simultáneamente ambas ecuaciones.5 0 0 20 40 60 80 100 120 140 160 180 t v(t) Figura 9. y una matriz X.1 0. u) (Figura 9. Por otro lado. En ambas grácas podemos observar que las soluciones para cada variable son no convergentes. por ejemplo. v ) y (t. no permiten solucionarlos para más de una condición inicial a la vez. debemos solucionar dos veces el sistema dinámico.

% Requiere ag v=x(1). v0=[10 10 10]. (v0 . dvdt=10*u+7*v. Como su nombre lo indica. u0 ) = (10.Kutta de cuarto orden para hallar la solución. En otro archivo. −11) Para poder solucionar el sistema dinámico simultáneamente para las 3 condiciones. dudt]. es por medio de una programación especial que involucra varias iteraciones (ver ejercicio 9). para las siguientes 3 condiciones iniciales: 1.5]'. u0=[-9 -10 -11]. vamos a utilizar el solver rk4. (v0 . para las diferentes condiciones iniciales. u0 ) = (10. Es necesario resaltar que el solver utiliza un tamaño de paso jo. −9) 2. Paso 2.248 GEDEM . aunque no existe la posibilidad de denir algún tipo de opciones.5. por lo que sólo puede ser utilizado para solucionar sistemas dinámicos no rígidos. u0 ) = (10. dxdt=[dvdt. en el intervalo [0. u0].25]. A continuación presentamos el procedimiento de solución: Paso 1. que hace parte del toolbox CompEcon. dudt=u+4*v. El comando presenta la misma sintaxis de los odesolvers de MATLAB . −10) 3. denir las condiciones iniciales x0 y el intervalo de tiempo t: t=[0:0.Versión Preliminar Ejemplo 9. Queremos solucionar el mismo sistema de ecuaciones del ejemplo anterior. % Vector Columna con Momentos . Por tal razón.m u=x(2).05:0.ag). Denir el sistema dinámico en un m-file llamado ej5: function dxdt=ej5(t.x. (v0 . % la sintaxis es la misma que en ej4. x0=[v0. 0. la única forma de solucionar un sistema rígido. esta rutina utiliza el método de Runge .

y la hipermatriz X de 11 × 2 × 3.1. [T. el solver pueda aceptar como entradas los parámetros adicionales. En el Paso 2 creamos un vector la. para tres condiciones iniciales. u): Para generar los diagramas de fase para cada una de las variables.X]=rk4('ej4'. los resultados no cambian si el vector tiempo es un vector columna. 33.25 y luego gracar contra el tiempo. 24 .x0). Mientras que para las rutinas de MATLAB no importa si el vector tiempo es un vector la o columna. Invocar el solver para hallar la solución a la ecuación. 25 El comando squeeze remueve la dimensión de una matriz. En este ejemplo no utilizamos parámetros adicionales.24 el solver rk4 requiere que el vector de tiempo sea columna. Así. Observemos que la denición del vector tiempo también cambia. Esto simplemente es utilizado para que. v) y (t. necesitamos utilizar el comando squeeze para remover una de las dimensiones de la hipermatriz. la rutina rk4 no genera ningún tipo de gráca. Paso 4. pero en la aplicación económica será de gran importancia la denición de estos parámetros para poder realizar simulaciones. Para utilizar rk4 debemos introducir flag en la sintaxis de la función. en 11 momentos diferentes. Las dimensiones de X indican que solucionamos un sistema con 2 variables. Esto también implica que cada una de las columnas de la matriz x0 es una condición inicial. con valores entre 0 y 0. Véase Cuadro 2. sin embargo. al igual que las rutinas de MATLAB . y luego lo trasponemos para obtener el vector t. igual al vector t. la tercer componente del vector v0 junto con la tercer componente del vector u0 conforman la tercer condición inicial. pág. debemos gracar manualmente los diagramas de fase: Diagramas de Fase (t. para gracar el diagrama de fase (t. y que contenga todos los momentos de evaluación. v ) tenemos que remover la dimensión de la variable u: En todos los ejemplos anteriores hemos denido el vector tiempo como un vector la. Como resultado obtenemos el vector T de 11 × 1. No es posible denir opciones.SISTEMAS DINÁMICOS 249 Paso 3. Al contrario de los solvers de MATLAB . Los vectores v0 y u0 debemos denirlos de tal forma que la primer componente de ambos vectores generen la primer condición inicial. Por ejemplo.t.5. y así sucesivamente.

5 t t Figura 9. la condición inicial (10.3 0.squeeze(X(:.25 0.-10) naliza en el punto de equilibrio.05 0. las condiciones (10.Versión Preliminar En este caso.squeeze(X(:. mientras que para la otra. u): Para gracar este diagrama de fase.:))) De esta forma obtenemos el diagrama de fase (v.-11) generan soluciones inestables que se alejan rápidamente del equilibrio.15 0.35 0.:)).9. .:))) En ambos diagramas de fase. ahora gracamos una dimensión versus la otra.10.250 plot(t. observaríamos cómo la trayectoria que parte en (10. también es necesario utilizar squeeze.45 0.-10) sigue una trayectoria hacia el equilibrio (0.:))) GEDEM . a) 200 80 b) 150 60 100 40 50 20 v(t) 0 u(t) 0 −20 −50 −100 −40 −150 −60 −200 0 0. Si deseamos generar el diagrama de fase (t.1.25 0.45 0.1 0.05 0.squeeze(X(:.3 0. Si hubiéramos calculado la solución para un intervalo de tiempo más grande. u) Diagrama de Fase (v. u) evidente en la Figura 9.-9) y (10.9: a) Diagrama de Fase (t. Figura 9.0). Como se puede observar. los valores de v y u se acercan lentamente hacia 0.2 0.2. se observa que para dos de las condiciones iniciales las soluciones de ambas variables son explosivas.2. u) debemos remover la primera dimensión: plot(t.4 0.1. v) b) Diagrama de Fase (t.35 0.1 0. la segunda dimensión corresponde a u.4 0.15 0. así: plot(squeeze(X(:. Por otro lado.2 0. Sin embargo.5 −80 0 0.

A Contribution to the Theory of Economic Growth. 26 .3. que el equilibrio de largo plazo es estable. Vol. Con el objetivo de aplicar las herramientas computacionales presentadas en las secciones anteriores. Robert.1. al contrario de Harrod . u) Para determinar que efectivamente el equilibrio es de silla es necesario tomar más condiciones iniciales alrededor de (0. Quarterly Journal of Economics.Domar con los resultados de un modelo en el que se mantenían los mismos supuestos pero la función de producción agregada cambiaba. Solow logra encontrar.10: Diagrama de Fase (v. 65-94. No. Suponiendo la existencia de una función agregada con rendimientos constantes a escala.Domar. El resultado que se obtiene es consistente con la solución analítica del problema.26 en el que buscaba contrastar los resultados obtenidos en el modelo de Harrod . a continuación presentamos el modelo básico y su respectiva proSolow. 9. 1956). 1956. 1 (Feb. El modelo fue propuesto por el economista Robert Solow en un artículo publicado en 1956 en el Quarterly Journal of Economics. 70.0).SISTEMAS DINÁMICOS 15 251 10 5 u(t) 0 −5 −10 −15 −25 −20 −15 −10 −5 0 5 10 15 20 25 v(t) Figura 9. Aplicaciones Económicas El Modelo de Crecimiento de Solow Modelo de Crecimiento de Solow El modelo de crecimiento de Solow es uno de los modelos más utilizados en el análisis económico de muy largo plazo.

27 Modelo: GEDEM . FKL > 0 y las denominadas condiciones de Inada.252 gramación. 28 Hablamos de inversión neta pues suponemos que no hay depreciación de capital. es decir: Lt = L0 ent 27 (9.18) Además se supone que la producción presenta rendimientos constantes a escala. El stock de capital. Lt ) (9. Una parte de esta producción es consumida y la otra es ahorrada. El ˙ cambio en el tiempo de este stock de capital (dKt /dt o Kt ) es la inversión neta. la fuerza laboral L se incrementa a una tasa constante n. 29 Además del supuesto de homogeneidad de grado uno.17) El único bien de la economía es producido utilizando capital y trabajo.20) En esta sección nuestro objetivo es presentar la programación computacional del modelo de Solow. La fracción del producto que se ahorra es constante y viene determinada por la propensión marginal a ahorrar s. así que el ahorro total en el momento t es St = sYt . Cuando existe depreciación de capital. por lo que esta función se supone homogénea de grado uno. Para una exposición teórica más profunda recomendamos revisar el siguiente libro (?).17) obtenemos: ˙ Kt = sF (Kt . el artículo original o cualquier texto guía del primer curso de macroeconomía.Versión Preliminar Suponemos que existe un sólo bien en la economía. como el ahorro siempre es igual a la inversión tenemos la siguiente identidad básica en cada instante del tiempo: ˙ Kt = sYt (9.18) en (9. FLL < 0. como resultado de un crecimiento exógeno y continuo de la población. . la inversión neta es igual a la inversión bruta descontando la depreciación. por lo general se supone que la función de producción cumple las siguientes condiciones: FK > 0. La programación del modelo con depreciación se deja como ejercicio para el lector (ver ejercicio 11). Kt . Lt ) (9. FKK < 0.19) Por otro lado. La tecnología disponible en la economía se encuentra representada por la siguiente función de producción: Yt = F (Kt . FL > 0.28 Además. su nivel de producción en el momento t es Yt . consiste en la acumulación del único bien de la economía.29 Introduciendo (9.

en promedio. Asumiendo que la economía siempre se encuentra en pleno empleo.20) L es la oferta disponible de trabajo.21) obtenemos: 30 (?. Con estas tres podemos calcular la productividad marginal del trabajo y del capital.20) en (9.19) L es el empleo total y en (9. Esta relación indica el número de máquinas. kt = Kt Lt (9. La ecuación (9. que determina la senda de acumulación de capital consistente con el pleno empleo de la fuerza laboral disponible en cada momento del tiempo. dado que permite caracterizar grácamente la ecuación diferencial.21) La anterior es una ecuación diferencial de una sola variable. más bien se considera que un país es más rico si sus habitantes. L0 ent ) (9. y por consiguiente el salario real y la tasa de interés.SISTEMAS DINÁMICOS 253 En (9.22) dene la variable k como la relación capital trabajo. es posible introducir (9. Nos interesa reexpresar la ecuación (9. o cualquier otro bien de capital. 19) .23) Reemplazando la tasa de crecimiento de la fuerza de trabajo y la ecuación (9. podemos calcular la senda temporal del producto real. junto con la función de producción. producen más que antes.21) en términos per cápita puesto que no es correcto decir que un país es más rico porque produce más que antes. p. plantear el modelo en variables per cápita resulta conveniente desde el punto de vista analítico. sacamos logaritmo a ambos lados de la ecuación y luego derivamos con respecto al tiempo obteniendo: ˙ ˙ ˙ kt Kt Lt = − kt Kt Lt (9. K(t). que hay por cada trabajador.19) obteniendo: ˙ Kt = sF (Kt . Una vez conocemos las sendas del stock de capital y de la fuerza de trabajo.22) Para calcular la tasa de crecimiento de la variable k .30 Por otro lado.

254 GEDEM .5 y β = 0. menor e igual que el término nkt . 4. 1) − nkt (9.5 t 0. El segundo término indica que el stock de capital disminuye como consecuencia del crecimiento de la población.5 % y n = 2. Al contrario de los ejemplos anteriores. − nkt kt ˙ kt = sF (kt . en ˙ el mismo chero vamos a denir kt y la función de producción per cápita: 31 Ver caps.m. Lt ) = Kt L0. cuando una unidad de trabajo es utilizada.24) La función F (kt .5 F (kt . 1) = kt 10. Suponemos que s = 15.5 0.5 F (Kt . 1) = kt También es necesario denir unos valores para las tasas de ahorro y crecimiento de la población. 1) representa la producción total generada por k unidades de capital per cápita. Hasta el momento sólo hemos denido algunas propiedades generales de la función de producción. −n kt kt 1 ˙ kt = skF 1. Finalmente es posible observar que el capital per cápita crece. llamado fsolow. el primer término de la ecuación (9. Lt ) = −n kt Kt ˙ kt 1 = sF 1. pero al programar debemos utilizar una función de producción especíca.5. A continuación presentamos la respectiva programación del modelo.2 %. De esta forma.5 F (kt .24). decrece y es constante cuando el ahorro per cápita es mayor. En este caso vamos a trabajar con la función de producción tipo Cobb .24) correspondería a la fracción ahorrada de la producción por habitante.Versión Preliminar ˙ kt sF (Kt .Douglas31 con α = 0. Por lo tanto la función de producción per cápita es: 0. en el cual vamos a especicar la ecuación diferencial (9.5 y 7 . en los cuales la única función especicada en el m-file era la ecuación diferencial. Programación: En primer lugar debemos crear un m-file.

k0=2. k) muestra que el capital per cápita de equilibrio corresponde a k ∗ = 49.24). El diagrama de fase (t. El siguiente paso consiste en construir un nuevo chero.K]=ode45(@fsolow.n). function y=produccion(k. Vamos a considerar un horizonte de tiempo de (0.s.^alpha. [T. al igual que cualquier problema de valor inicial.1:40].'odeplot').2. y=k.k.alpha). clc.m. close all alpha=0. dk=s*produccion(k.alpha. llamado solowprog. Ecuaciones en Diferencia y Dinámica Discreta .k0. 63 El Modelo de Crecimiento de Ramsey Modelo de Crecimiento de Ramsey El Modelo de Ciclo de Goodwin 9.options.022. es necesario imponer una condición inicial por lo que k0 = 2. La rutina de solución y sus opciones son invocadas de la misma forma que en los ejemplos anteriores.s.5. en el cual vamos a denir los parámetros del modelo y a invocar la rutina de solución ode45.SISTEMAS DINÁMICOS function dk=fsolow(t. clear. 255 Las dos primeras líneas de programación son utilizadas para denir la ecuación diferencial (9. s=0.alpha)-n*k.alpha. La función de producción tipo Cobb-Douglas es especicada en las dos últimas líneas del programa. Observemos que la función de producción no es denida en estas líneas.t. options=odeset('outputfcn'. simplemente es referenciada. t=[0:0. Esta forma de programación es muy utilizada por cuanto permite disminuir el número de cheros destinados para el modelo al tiempo que genera mayor exibilidad en la especicación del mismo.n).155. n=0.40) y.

05 y 1. ¾Qué sucede al cambiar el tamaño del paso?¾Qué método es más estable? . b) Graque la solución algebraica y numérica de ambos métodos en una misma gura. Genere una gura para cada valor de h en la que se muestren las soluciones de ambos métodos junto con la solución algebraica. kt ) Ejercicios 1) Considere el siguiente Problema de Valor Inicial: x = 4x ˙ x0 = 2 a) Calcule la solución numérica utilizando el script del método de Euler y del método RK2.6 40.256 Modelo de Solow 41.2 40 0 10 20 30 40 50 60 70 80 90 100 t Figura 9. Solucione el IVP considerado para 10 momentos y un tiempo inicial t0 = 0. ¾Existe alguna diferencia entre los dos métodos? c) Construya un m-file en el que el tamaño del paso itere tomando 20 valores. La solución numérica debe calcularse para 10 momentos.8 GEDEM . Estos valores deben encontrarse entre 0.6 41. y para el intervalo de tiempo [0.4 41.4 40. presentados en la primera sección del capítulo.Versión Preliminar 41.8 40. y deben estar igualmente espaciados (Ayuda: utilice el comando linspace para generar este vector).2 41 kt 40. 2] (Tenga en cuenta que debe calcular el tamaño de paso adecuado para cubrir el intervalo de tiempo en 10 momentos).11: Diagrama de Fase (t.

Bashforth . c) Graque d’ contra el tiempo. c) ¾Qué sucede si aumenta el tamaño del paso? 3) Compare grácamente la solución por el método de Adams . De la siguiente ecuación diferencial: x= ˙ x0 = ¾Cuál es más sensible a cambios en el tamaño del paso?. 4) Considere problema de valor inicial del ejercicio anterior.Moulton de la página 230.Bashforth con el método de Adams . permitiendo una mejor aproximación a la solución). 5) Construya un m-file en el que se muestre grácamente que el uso del método modicado de Euler soluciona el problema de integración numérica de la siguiente ecuación diferencial rígida: x = −10x ˙ . a) Genere una matriz A20×2 donde la primer columna sea la solución obtenida por el comando ode113 y la segunda la del script del algoritmo Adams Bashforth .SISTEMAS DINÁMICOS 257 2) Realice la programación del método de Runge . Los parámetros utilizados son los mismos que en el literal a. ¾Qué nos dice este resultado? (Aunque el método utilizado sea el mismo.Moulton. b) Calcule el vector columna d cuyas componentes cumplan la siguiente regla: dj = aj1 − aj2 . t + h]. El programa debe requerir los mismos inputs que el script del método RK2.Kutta de cuarto orden presentado en la página 223. la diferencia radica en que el comando de MATLAB incorpora algoritmos adicionales para cambiar el tamaño del paso según sea necesario. a) Solucione el IVP del ejercicio 1 con la programación desarrollada. en el intervalo [t. b) Compare grácamente la soluciones obtenidas por el método RK2 y el RK4 con la solución algebraica.

¾Qué sucede con el tiempo de solución a medida que a toma valores más grandes? ¾Cuál de las dos rutinas toma más tiempo para solucionar el problema? d) ¾Por qué una rutina es más lenta que la otra? Explique. 9) En el ejemplo 9. 8) Necesito un IVP con dos condiciones iniciales. b = 20 y no especique los momentos de evaluación. construya un programa en el que en cada iteración se encuentra la solución para cada condición inicial. se compare el tiempo que requiere ode23 y ode23tb para solucionar el sistema en el intervalo de tiempo [0. Utilizando cualquier rutina de MATLAB para problemas rígidos. de tal forma que acepte un parámetro p.8 a) Construya un chero en el que. utilizando el comando tic toc de MATLAB . no sería posible utilizar la rutina rk4.5]. Esto plantea un problema para solucionar simultáneamente sistemas de ecuaciones rígidos para varias condiciones iniciales. 10) Programe la función que contiene la ecuación diferencial en el modelo de Solow. el intervalo de tiempo.258 GEDEM . las condiciones iniciales. 7) Necesito una ecuación diferencial que tenga un equilibrio inestable. Como resultado. se debe obtener un vector T y una hipermatriz X de m × n × d. y algunos parámetros adicionales. Ponerlos a gracar con odeplot y odephas2. y con ayuda del comando for. Tome a = 10. El programa debe aceptar como entradas el nombre de la función que contiene el sistema dinámico. si el sistema dinámico planteado fuera rígido. b) Asuma a = 10 y calcule el tiempo requerido por cada solver para 5 diferentes valores de b entre 20 y 1000.Versión Preliminar 6) Considere el siguiente problema de valor inicial: x = b − ax ˙ x0 = 1. Las dos condiciones iniciales no llevan al equilibrio.0. ¾Qué sucede con el tiempo de solución a medida que b toma valores más grandes? ¾Cuál de las dos rutinas toma más tiempo para solucionar el problema? c) Fije b = 100 y calcule el tiempo requerido por cada solver para 5 diferentes valores de a entre 10 y 10000.5. Si el valor del parámetro es p = 0 . Ponerlos a gracar con odeplot y odephas2. donde una converja y la otra no.

d). beta. s. 11) Extienda y programe el modelo de Solow incorporando la depreciación de capital. 32 Observe que la depreciación total es: D = dK(t). alpha. El chero debe aceptar como inputs (t. Si el valor del parámetro es p = 1 entonces la función de producción es f (k) = k α . k.SISTEMAS DINÁMICOS 259 k 1 entonces la función de producción agregada es f (k) = min{ α .32 12) Utilizando el comando gradient determina la senda del salario real y la tasa de interés del ejemplo planteado en la página 37. n. p. . β }. Suponga que el capital se deprecia a una tasa constante d.

260 GEDEM .Versión Preliminar .

Mantilla. 17.a Reimpresión. Stanley..a Edición. Universidad Nacional de Colombia y Universidad Externado de Colombia.A. Graw Hill. Addison-Wesley Iberoamericana. Matemáticas Básicas para Economistas 2: Cálculo. Escuela superior de Ingenieros Industriales. Leithold. Monsalve. L. 1998. Mimeo: Universidad Externado de Colombia . J. Cambridge : The MIT Press. Análisis Numérico. Universidad Politécnica de Madrid. Applied Computational Economics and Finance. y Cheney W. Numerical Methods in Economics. El Cálculo con Geometría Analítica. México. Ignacio. México. Delaware. Universidad Nacional de Colombia. 2001. Sergio. HARLA S.Universidad Nacional de Colombia. Análisis Numérico: Las Matemáticas del Cálculo Cientíco. D. 1989. Matemáticas Básica para Economistas 3: Optimización y Dinámica.Bibliografía Blanchard. 1.. Kincaid. . Aprenda Matlab 6. (2004). y Mario Miranda. 5. Algebra Lineal. Matemáticas Básicas para Economistas 0: Fundamentos. Javier et al. 1996.. . The MIT Press. Mc. 261 . 1994. P. (2004). Kenneth.a Reimpresión. García de Jalón. 5a. Universidad Nacional de Colombia y Universidad Externado de Colombia. Judd. (1979).. Olivier. The MIT Press. HARLA S. 2005a. y Klingman J. 2005b. Draper. (1979). 2003. ed. Lectures on Macroeconomics.. Fackler. Grossman. Matemáticas para Administración y Economía.1 como si estuviera en primero.A.

Versión Preliminar Mora. Hector. Sydsaeter. Nicholson. Universidad Nacional de Colombia. Madrid.. (1996). K. 6a. Optimización no lineal y Dinámica. 2a. 2001. Prentice Hall. 1997. . Facultad de Ciencias. y Peter Hammond. Matemáticas para el Análisis Económico. Walter. Teoría Microeconómica: principios básicos y aplicaciones.262 GEDEM . McGraw-Hill.

188 plot3. 98 inline. 102 markersize. 108 contour. 9 color. 9 clear. 52 eig. 55 permute. 82 diff. 35 legend. 106 cross. 47. 73 ipermute. 100 help. 52. 9 close. 191 ndims. 169 qnwsimp. 154. 46. 63 cumtrapz. 83 fdhess. 152. 82 get. 102 linewidth. 76 marker. 102 lu. 141. 17 dot. 173 263 . 106 clc. 149 grid. 175 qnwtrap. 17 if.Índice alfabético acos. 188 fjac. 109 colormap. 51 axis. 138. 32 chol. 100. 102 atan. 100 line. 142 fhess. 106 contour3. 102 linestyle. 102 mesh. 94 inv. 171 dblquad. 105 polyder. 13 inf. 103 gradient. 101 cat. 177 det. 104 min. 14. 57. 105 meshgrid. 102 for. 188 fdjac. 74 diag. 148 polyint. 49 orth. 35 plot. 102 colorbar. 53 alignment. 136. 34 norm. 78 clabel. 142 font. 163 doc. 95. 65 eps.

37 squeeze. 175 Concavidad. 185 Derivación de orden superior. 184 cuasicóncava. 156 Función. 185 constante de integración. 33 sparse. 184 CES. 175 rref. 128 convexa. 128 Lineal. 183 Current Directory. 34 subplot. 124 comandos. 94 . 8 Command History. 234-236 Comentarios. 128 parámetros de. 94 discontinua. 128 Mínimo. 126 Cobb-Douglas. 101. 7. 185 contorno superior.264 GEDEM . 173. 101 xlabel. 163 texlabel. 137 Expansión de Taylor. 13 Cell Array. 14 Convexidad. 184 de dos variables. 98. 100 ylabel. 105 syms. 10 Error de Truncamiento. 99 dominio de una. 114 rango de una. 103 size. 54 Entradas. 13 Bucle. 100 title. 24 cell-array. 94 recorrido de una. 136 ejm8.Versión Preliminar quad. 71 set. 94 de salida. 100 trapz. 94 Leontieff. 100 svd. 115 surf. 2 Compecon Toolbox. 6 Curvas de nivel. 10 Apéndice integración. 183 Conjunto de llegada. 94 cóncava. 70 rrefmovie. 2 CompEcon. 147 Derivación de primer orden. 100 text. 103 visualización de. 169 Contador. 94 Conjuntos contorno inferior. 122. 103 de una variable. 94 visualización de. 100 zlabel. 179 Bifurcación. 125. 5 Command Window. 50 Inputs. 184 cuasiconvexa. 171 view.

169 Integrales Dobles. 43 operaciones entre. 94 integración. 55 potenciación de. 46 generadas automáticamente. 47 factorización LU. 41 división izquierda. 78 factorización de Crout. 81. 70. 108 Hipermatrices. 188 Función Cobb-Douglas. 87 Gauss-Seidel. 41 norma de. 41 ortogonales. 69 de descomposición. 170 Método de Diferencia Finita. 35 comandos para. 76 indirectos. 80. 30 inversa de. 77 triangulares inferiores. 70. 79 Matrices. 13 regla de Cramer. 11 Gauss-Jordan. 70 inversa. 93 económicas. 70 . 99.SISTEMAS DINÁMICOS 265 univariada. 11. 167 integración definida. 70 numéricos. 145 Funcion CARA. 36 comandos para. 81. 81. 43 triangular inferior. 11 regla de. 29 a partir de vectores. 9 Método analítico. 10. 43 traza de. 31. 37 división de. 137 Métodos analíticos. 41 suma de. 132 Funciones. 80. 36 transpuesta de. 41 rango de. 80. 168 integral. 43 M-File. 57 de coeficientes. 168 integración indefinida. 70 factorización de Cholesky. 41 factorizables. 41 tipos de. 73 numérico. 124 Gauss-Jacobi. 74 Método de aproximación lineal. 43 multiplicación de. 8. 80. 77 triangular superior. 46 factorización de Cholesky. 37 introducción de. 79 iterativos. 132 CRRA. 43 dispersas. 33 imagen. 83 Launch Pad. 43 triangulares superiores. 3 directos. 83 Gráfico opciones de. 176 Iteración. 43 resta de. 6. 83 determinante de.

59 Regla de Iteración. 217-221. 185 Sistemas Singulares. 69 de variables.Versión Preliminar valores singulares. 70 hessiana orlada. 69 dirección de. 1. 64 Modelo de Cournot. 170 Salidas. 3 Metodos factorización LU. 69 Vectores propios. 228. 10 Pareja Ordenada. 73 hessiana. 114 definida positiva. 255 Matriz Jacobiana. 64 Ventanas de Matlab. 13 Vectores. 186 funciones de una variable. 53 de resultados. 184 Sistemas Homogéneos. 13 Débilmente Condicionadas. 54 solución. Matriz Hessiana. 48 norma de. 63 Rectas. 52 proyección. 48 ángulo entre. 142 Tolerancia. 51 producto cruz. 186 Symbolic Toolbox. 251. 48 operaciones entre. 103 Path. 71 homogineos. 4 . 70 121 definida negativa. 186 Sistemas de Ecuaciones. 58. 80Simulación Matriz funciones de dos variables. 50 magnitud de. 10 Matrices Sentencia. 83 Menor principal dominante. 163 semidefinida positiva. 10 simbólicas. 149 231. 186 Toolbox. 29. 61 distancia a un punto. 173 peso. 47 Scripts. 58. 223. 173 Objetos. 76 Valores propios. 69 escalonada reducida. 173 ponderación. 70 semidefinida negativa. 19 Optimización. 2 Workspace. 16 Planos. 225. 174 Regla del Exponente. 168 Regla del Trapecio. 16 Regla de Simpson.266 GEDEM . 52 producto escalar. 213 Outputs. ampliada. 186 tematico. 157 Variables Nodo.

Sign up to vote on this title
UsefulNot useful