economia matematica en matlab-gomez norma

282

Upload: pablo-atila-apaza

Post on 05-Dec-2014

662 views

Category:

Documents


75 download

TRANSCRIPT

Page 1: Economia Matematica en Matlab-Gomez Norma

Introducción a la

Economía Matemática en MATLAB

(Versión Preliminar)

Norma GómezLida QuinteroDiego CorredorMario González

Norman MaldonadoEduardo Sánchez

11 de octubre de 2005

Page 2: Economia Matematica en Matlab-Gomez Norma

2

Page 3: Economia Matematica en Matlab-Gomez Norma

Índice general

1. Conceptos Básicos 11.1. ¾Qué es MATLABr? . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Ventanas de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . 2

1.2.1. Command Window . . . . . . . . . . . . . . . . . . . . . . . . 21.2.2. Launch Pad . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2.3. Workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.2.4. Command History . . . . . . . . . . . . . . . . . . . . . . . . 51.2.5. Current Directory . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3. M-File Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.4. Procesos iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.5. Otros Conceptos Básicos . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.5.1. Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161.5.2. Help y Doc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.5.3. Objetos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

I ÁLGEBRA LINEAL 27

2. Matrices y Vectores 292.1. Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.1.1. Hipermatrices . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.1.2. Tipos de Matrices . . . . . . . . . . . . . . . . . . . . . . . . 362.1.3. Operaciones Básicas entre Matrices . . . . . . . . . . . . . . . 412.1.4. Análisis de una Matriz . . . . . . . . . . . . . . . . . . . . . . 432.1.5. Matrices Factorizables . . . . . . . . . . . . . . . . . . . . . . 46

2.2. Vectores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 482.2.1. Análisis de un vector . . . . . . . . . . . . . . . . . . . . . . . 482.2.2. Operaciones entre Vectores . . . . . . . . . . . . . . . . . . . 51

i

Page 4: Economia Matematica en Matlab-Gomez Norma

ii

2.2.3. Matrices y Vectores . . . . . . . . . . . . . . . . . . . . . . . 542.3. Rectas y Planos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

2.3.1. Rectas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592.3.2. Planos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612.3.3. Distancia entre un punto y un plano . . . . . . . . . . . . . . 63

2.4. Valores y Vectores Propios . . . . . . . . . . . . . . . . . . . . . . . . 64

3. Sistemas de Ecuaciones 693.1. Métodos Directos o Analíticos . . . . . . . . . . . . . . . . . . . . . . 70

3.1.1. Eliminación Gauss-Jordan . . . . . . . . . . . . . . . . . . . . 703.1.2. Método de la Inversa . . . . . . . . . . . . . . . . . . . . . . . 733.1.3. Regla de Cramer . . . . . . . . . . . . . . . . . . . . . . . . . 743.1.4. Factorización de Crout o LU . . . . . . . . . . . . . . . . . . 763.1.5. Factorización de Cholesky . . . . . . . . . . . . . . . . . . . . 78

3.2. Métodos Indirectos o Numéricos . . . . . . . . . . . . . . . . . . . . . 793.2.1. Matrices Débilmente Condicionadas . . . . . . . . . . . . . . 803.2.2. Gauss-Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . 813.2.3. Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

3.3. Apéndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873.3.1. Gauss-Jacobi . . . . . . . . . . . . . . . . . . . . . . . . . . . 873.3.2. Gauss-Seidel . . . . . . . . . . . . . . . . . . . . . . . . . . . 893.3.3. Método de Richardson . . . . . . . . . . . . . . . . . . . . . . 89

II CÁLCULO 91

4. Funciones 934.1. Funciones de una Variable . . . . . . . . . . . . . . . . . . . . . . . . 94

4.1.1. Visualización de funciones de una variable . . . . . . . . . . . 944.1.2. Opciones adicionales para los grácos . . . . . . . . . . . . . 99

4.2. Funciones de dos variables . . . . . . . . . . . . . . . . . . . . . . . . 1034.2.1. Visualización de Funciones de dos variables . . . . . . . . . . 1034.2.2. Opciones adicionales para los grácos . . . . . . . . . . . . . 108

4.3. Simulaciones en funciones de una variable . . . . . . . . . . . . . . . 1144.4. Simulaciones en funciones de dos variables . . . . . . . . . . . . . . . 1214.5. Análisis de Funciones económicas . . . . . . . . . . . . . . . . . . . . 124Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128

Page 5: Economia Matematica en Matlab-Gomez Norma

iii

5. Derivación 1355.1. Derivación de primer orden . . . . . . . . . . . . . . . . . . . . . . . 136

5.1.1. polyder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1365.1.2. gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1385.1.3. diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1415.1.4. fjac y fdjac . . . . . . . . . . . . . . . . . . . . . . . . . . 1425.1.5. Aplicación: Una función de Producción tipo Cobb-Douglas . . 145

5.2. Derivación de orden superior . . . . . . . . . . . . . . . . . . . . . . 1475.2.1. polyder . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1485.2.2. gradient . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1495.2.3. diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1525.2.4. fdhess . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1545.2.5. Expansión de Taylor . . . . . . . . . . . . . . . . . . . . . . . 1565.2.6. Aplicación: El Equilibrio en el Modelo de Cournot . . . . . . 157

5.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1615.4. Apéndice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

6. Integración 1676.1. Integración por Regla del Exponente . . . . . . . . . . . . . . . . . . 1686.2. Regla del Trapecio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1706.3. Regla de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1746.4. Integrales Dobles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

III OPTIMIZACIÓN Y DINÁMICA 181

7. Concavidad y Convexidad 1837.1. Conceptos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

7.1.1. Deniciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1847.1.2. Criterios de clasicación . . . . . . . . . . . . . . . . . . . . . 1857.1.3. Métodos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

7.2. Funciones Univariadas . . . . . . . . . . . . . . . . . . . . . . . . . . 1887.3. Funciones con dos variables (Bivariadas) . . . . . . . . . . . . . . . . 196

7.3.1. Ejemplo 7.3. f(x, y) = x0.5y0.5 . . . . . . . . . . . . . . . . . . 2067.4. Funciones con tres o más variables (Multivariadas) . . . . . . . . . . 208

7.4.1. Ejemplo 7.4. f(x, y, z) = x4 + 3y4 + 5z . . . . . . . . . . . . . 2087.4.2. Ejemplo 7.5. f(w, x, y, z) . . . . . . . . . . . . . . . . . . . . . 211

Page 6: Economia Matematica en Matlab-Gomez Norma

iv

8. Optimización 2138.1. Optimización no lineal sin restricciones . . . . . . . . . . . . . . . . . 214

8.1.1. Minimizar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

9. Sistemas Dinámicos 2179.1. Ecuaciones Diferenciales y Dinámica Continua . . . . . . . . . . . . . 217

9.1.1. Métodos Numéricos . . . . . . . . . . . . . . . . . . . . . . . 2179.1.2. Ejemplos Computacionales . . . . . . . . . . . . . . . . . . . 2339.1.3. Aplicaciones Económicas . . . . . . . . . . . . . . . . . . . . . 251

9.2. Ecuaciones en Diferencia y Dinámica Discreta . . . . . . . . . . . . . 255

Page 7: Economia Matematica en Matlab-Gomez Norma

Índice de guras

1.1. Conjunto Inicial de Ventanas . . . . . . . . . . . . . . . . . . . . . . 31.2. Command Window o Ventana de Comandos . . . . . . . . . . . . . . 41.3. Launch Pad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4. Workspace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.5. Command History . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.6. Current Directory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.7. Editor de M-Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.8. Comentarios con% . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.9. Ventana de Comandos y Resultados . . . . . . . . . . . . . . . . . . 91.10. Path de Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.11. Help de pcb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.12. Documentación de clc . . . . . . . . . . . . . . . . . . . . . . . . . . 201.13. Estructuras pibp, pcon . . . . . . . . . . . . . . . . . . . . . . . . . . 22

2.1. Hipermatriz de 3 dimensiones . . . . . . . . . . . . . . . . . . . . . . 312.2. Distancia entre P1 y P2 . . . . . . . . . . . . . . . . . . . . . . . . . 502.3. La dirección del vector u = (7,−5) . . . . . . . . . . . . . . . . . . . 512.4. Producto cruz entre a y b . . . . . . . . . . . . . . . . . . . . . . . . 532.5. Proyección de a sobre b . . . . . . . . . . . . . . . . . . . . . . . . . 552.6. a) Única Solución b) No Existe Solución c) Innitas soluciones . . . . 582.7. Una recta en tercera dimensión . . . . . . . . . . . . . . . . . . . . . 592.8. El vector ~n es perpendicular a todos los puntos del plano. . . . . . . 62

3.1. Modelo de vías . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

4.1. Función Cúbica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974.2. Función Discontinua en x=1 . . . . . . . . . . . . . . . . . . . . . . . 984.3. Ejemplo 4.2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 994.4. Malla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

v

Page 8: Economia Matematica en Matlab-Gomez Norma

vi

4.5. Comandos para gracar funciones de dos variables . . . . . . . . . . 1084.6. Ejemplo 4.4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1104.7. Distintos conjuntos de salida . . . . . . . . . . . . . . . . . . . . . . . 1114.8. Punto de Silla . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1134.9. Simulación de una función de una variable . . . . . . . . . . . . . . . 1144.10. Ejemplo 4.6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1164.11. Ejemplo 4.7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1184.12. Ejemplo 4.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194.13. Ejemplo 4.8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204.14. Ejemplo 4.9 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1214.15. Simulación del parámetro a en f(x, y) = acos(xy) . . . . . . . . . . . . 1234.16. Simulación del parámetro a en f(x, y) = x3 − ax2y + 6xy2 − y3 . . . 1254.17. Función Cobb-Douglas . . . . . . . . . . . . . . . . . . . . . . . . . . 1274.18. Función CES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1294.19. Función CES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

5.1. Gráca de f(x) = x4 y su derivada . . . . . . . . . . . . . . . . . . . 1395.2. f(x, y) = x2 + y2 y su gradiente a escala distinta . . . . . . . . . . . 1405.3. Derivada de f(x) = x

52 mediante diff . . . . . . . . . . . . . . . . . 141

5.4. La función de producción f(K, L) = K13 L

13 . . . . . . . . . . . . . . 146

5.5. Izquierda: Productividad Marginal del Capital. Derecha: Productivi-dad Marginal del Trabajo. . . . . . . . . . . . . . . . . . . . . . . . . 147

5.6. Las dos primeras derivadas de f(x) = x23 . . . . . . . . . . . . . . . . 150

5.7. La tercera derivada de f(x) = x23 mediante gradient y directamente 152

5.8. La función f(x, y) = x3 − 3xy2 . . . . . . . . . . . . . . . . . . . . . 1555.9. La función f(x) = x3 + y3 . . . . . . . . . . . . . . . . . . . . . . . . 1565.10. La función f(x) = 5x

23 − 32 y su aproximación de grado tres . . . . . 158

5.11. El duopolio de Cournot . . . . . . . . . . . . . . . . . . . . . . . . . 160

6.1. Regla del Trapecio . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1706.2. Excedente del Consumidor . . . . . . . . . . . . . . . . . . . . . . . . 1726.3. Regla de Simpson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1746.4. Excedente del Productor . . . . . . . . . . . . . . . . . . . . . . . . . 1766.5. Integración Doble . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

7.1. Método gráco . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1897.2. Gradiente numérico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1907.3. Gradiente numérico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

Page 9: Economia Matematica en Matlab-Gomez Norma

vii

7.4. Segunda derivada con fhess . . . . . . . . . . . . . . . . . . . . . . 1947.5. Conjuntos Contorno de f(x) = x2 . . . . . . . . . . . . . . . . . . . . 1957.6. Conjuntos Contorno . . . . . . . . . . . . . . . . . . . . . . . . . . . 1967.7. Método Gráco - Concavidad y Convexidad . . . . . . . . . . . . . . 1987.8. Método Gráco - Cuasiconcavidad y Cuasiconvexidad . . . . . . . . 199

8.1. Comportamiento de f(x) . . . . . . . . . . . . . . . . . . . . . . . . . 215

9.1. Solución Numérica (h = 0.21) . . . . . . . . . . . . . . . . . . . . . . 2329.2. Solución Numérica (h = 0.09) . . . . . . . . . . . . . . . . . . . . . . 2339.3. Diagrama de Fase (t, x) de x = 3− x . . . . . . . . . . . . . . . . . . 2399.4. Contraste de Dos Condiciones Iniciales con odephas2 . . . . . . . . 2409.5. Comparación de las Condiciones x0 = −1.5 y x0 = −0.5 . . . . . . . 2429.6. Contraste de Tres Condiciones Iniciales con odephas3 . . . . . . . . 2439.7. Diagrama de Fase (t, x) de x = b−atx2

x . . . . . . . . . . . . . . . . . 2449.8. a) Diagramas de Fase (t, v) y (t, u) b) Diagrama de Fase (v, u) 2479.9. a) Diagrama de Fase (t, v) b) Diagrama de Fase (t, u) . . . . . 2509.10. Diagrama de Fase (v, u) . . . . . . . . . . . . . . . . . . . . . . . . . 2519.11. Diagrama de Fase (t, kt) . . . . . . . . . . . . . . . . . . . . . . . . . 256

Page 10: Economia Matematica en Matlab-Gomez Norma

viii

Page 11: Economia Matematica en Matlab-Gomez Norma

Índice de cuadros

1.1. Método Numérico para hallar x . . . . . . . . . . . . . . . . . . . . . 121.2. Algunos Comandos sobre Cadenas de caracteres . . . . . . . . . . . . 211.3. Algunos Comandos sobre Estructuras . . . . . . . . . . . . . . . . . . 231.4. Algunos Comandos para objetos Cell Array . . . . . . . . . . . . . . 25

2.1. Comandos para hipermatrices . . . . . . . . . . . . . . . . . . . . . . 332.2. Matrices generadas automáticamente . . . . . . . . . . . . . . . . . . 372.3. Algunos Comandos para Matrices Dispersas . . . . . . . . . . . . . . 382.4. Operaciones básicas entre matrices . . . . . . . . . . . . . . . . . . . 412.5. Comandos para analizar una matriz . . . . . . . . . . . . . . . . . . 43

9.1. Rutinas de MATLABr para solucionar IVPs . . . . . . . . . . . . . 234

ix

Page 12: Economia Matematica en Matlab-Gomez Norma

x

Page 13: Economia Matematica en Matlab-Gomez Norma

Introducción

En la academia a diario se producen desarrollos teóricos que más adelante llegan aser aplicados para la solución de una gran variedad de problemas reales. En particu-lar, en economía y nanzas, se han producido desarrollos teóricos y prácticos paraabordar problemas económicos como el crecimiento, los ciclos y el diseño de políticaeconómica, o nancieros como la valoración de activos nancieros y la cuanticacióndel riesgo de un portafolio.

En general, para que tales desarrollos puedan ser utilizados se requiere hacer cálculosmatemáticos que en algunas ocasiones llegan a ser bastante complicados e inclusoimposibles de realizar analíticamente. Por otro lado, en la actualidad el uso de loscomputadores para la solución de problemas se ha convertido en una práctica comúndada su gran capacidad de cálculo y precisión en comparación con los métodos tra-dicionales.

Es posible entonces, en economía y nanzas, utilizar métodos computacionales pararealizar los cálculos que permitan aplicar los desarrollos teóricos y prácticos que seproducen en la academia. Por ejemplo, la estimación de modelos econométricos, lacalibración de modelos de equilibrio general, simulación de sistemas dinámicos, entreotros, son desarrollos que necesitan utilizar métodos computacionales para la precisarealización de los cálculos que estos requieren.

El presente texto ha sido desarrollado por GEDEM (Grupo de Estudios De Eco-nomía Matemática) y tiene como objetivo facilitar a los estudiantes de las cienciaseconómicas un primer acercamiento a la aplicación de métodos computacionales eneconomía y nanzas. Especícamente, este libro va dirigido a estudiantes de Pre-grado de carreras como Economía, Administración de empresas o Contaduría, yaque utiliza aplicaciones en economía y en nanzas. En la mayoría de los casos loslibros que trabajan con herramientas computacionales en estas áreas están dirigi-dos a estudiantes de Posgrado o de Doctorado, por lo cual pocas veces se enseña

xi

Page 14: Economia Matematica en Matlab-Gomez Norma

xii GEDEM - Versión Preliminar

el uso de herramientas computacionales como MATLABren los cursos de Pregradorelacionados con economía o nanzas matemáticas.

El texto se desarrolla con base en los temas básicos de la economía matemática comoson: Sistemas de ecuaciones lineales, matrices y vectores, rectas y planos, funciones,cálculo diferencial e integral, optimización "libre" y restringida y sistemas dinámicos.Cada uno de los temas mencionados es tratado en un capítulo en el que se presentael problema matemático a resolver y su correspondiente desarrollo computacional,acompañado de ejemplos y ejercicios matemáticos y económicos que permiten unaplena comprensión del tema.

Existen temas más avanzados que no son objeto de estudio de este libro. En particu-lar, temas como Optimización Dinámica, Ecuaciones Diferenciales y en DiferenciasEstocásticas, Optimización Dinámica con Incertidumbre o Modelos de EquilibrioGeneral Computable no son tratados aquí ya que generalmente estos se trabajanen libros actualmente disponibles en el mercado que van dirigidos a estudiantes dePosgrado o de Doctorado, o en Papers de libre acceso por Internet. Este libro es tansolo una introducción a la utilización de métodos computacionales en Economía yFinanzas, pero es útil en la medida que permite llenar el vacío existente entre las ma-temáticas básicas que no se suelen enseñar computacionalmente y las matemáticasavanzadas que casi siempre se tratan con este tipo de métodos.

El libro comienza con una breve introducción a los conceptos básicos deMATLABrenel capítulo 1, y luego de ella, éste se divide en tres partes. La primera parte contienelos Capítulos 2 y 3, y trata los temas relacionados con el Algebra Lineal. En el Ca-pítulo 2 se trabajan las Matrices y los Vectores, junto con sus propiedades (inversa,traspuesta, norma y traza, entre otros), y en el Capítulo 3, se estudian los sistemasde ecuaciones y los diferentes métodos computacionales para resolverlos.

La segunda parte del libro está compuesta por los Capítulos 4, 5 y 6, y presenta elanálisis de funciones. El capítulo 4 muestra cómo utilizar MATLABrpara visualizargrácamente una función de una o de dos variables, y determinar a partir de estegráco sus propiedades. Debido a las limitaciones en términos de dimensión y dealgunos cálculos especícos, en los capítulos 5 y 6 se abandona el método grácoy se procede a analizar una función a partir del cálculo diferencial e integral. Enparticular, en el capítulo 5 se explican en detalle las herramientas disponibles enMATLABrpara calcular numéricamente la derivada de una función en un punto oen un conjunto nito de puntos, a partir de lo cual se pueden determinar regiones

Page 15: Economia Matematica en Matlab-Gomez Norma

INTRODUCCION xiii

en donde una función crece o decrece además de otras propiedades, mientras que enel capítulo 6 se presentan los diferentes métodos numéricos que se pueden emplearpara calcular en MATLABrintegrales denidas de cualquier tipo de función.

Finalmente en la última parte del libro se estudia el planteamiento computacionalde problemas de optimización estática y de sistemas dinámicos. En el capítulo 7se presentan los métodos numéricos y la utilización de MATLABrpara analizar laconcavidad y convexidad de una función. A partir de estos conceptos, en el capítulo 8se muestra cómo resolver numéricamente en MATLABrproblemas de optimizaciónestática, tanto restringida como no restringida o "libre" Finalmente, el capítulo ??presenta las diferentes formas en que se puede hallar la solución numérica a sistemasdinámicos, y a partir de ella analizar la existencia, unicidad y estabilidad de losequilibrios que pueden tener este tipo de sistemas. Así, este último capítulo cierra ellibro pero es una buena introducción al planteamiento computacional de problemasde tipo dinámico.

Todos los capítulos se desarrollan computacionalmente utilizando como herramien-ta MATLABr. Existen otros programas para realizar cálculos matemáticos, comopor ejemplo C++, C, FORTRAN o JAVA. También, algunos autores han trabajadoen otras plataformas computacionales problemas especícos de economía. Por ejem-plo, Thomas Rutherford ha trabajado la programación de Modelos de EquilibrioGeneral Computable en GAMS-MPSGE1; Hal R. Varian ha trabajado herramien-tas matemáticas básicas y avanzadas utilizadas en economía por medio del lenguajeMathematica2. Otros programas como Econometric Views, SPSS y SAS se enfocanen trabajar computacionalmente la estadística y la econometría. Por otro lado, len-guajes como Ox o Scilab trabajan de manera similar a MATLABrpero cuentan conla ventaja de ser software de libre acceso.

En este texto hemos decidido trabajar con MATLABrpor varias razones: en primerlugar, muchos autores actualmente trabajan enMATLABrpara resolver computacio-nalmente problemas económicos. Por ejemplo, Thomas Sargent utilizaMATLABrparamodelos de política scal, inación y desempleo, y para resolver matemáticamentejuegos dinámicos y equilibrios de Nash, Filtro de Kalman y ecuación de Ricatti, entre

1Rutherford, Thomas (1999). Applied General Equilibrium Modeling with MPSGE as a GAMSSubsystem: An Overview of the Modeling Framework and Syntax. En: Computational Economics,14:1-46. Kluwer Academic Piblishers

2Varian, Hal (1996). Computational Economics and Finance: Modeling and Analysis WithMathematica (Economic & Financial Modeling with Mathematica). Ed. Telos.

Page 16: Economia Matematica en Matlab-Gomez Norma

xiv GEDEM - Versión Preliminar

otros. Uhlig3 desarrolla un conjunto de cheros en MATLABrque permite resolvermodelos dinámicos en tiempo discreto no lineales estocásticos. Muchos otros auto-res trabajan sus cursos en MATLABr, como por ejemplo Olivier Blanchard y FinnKydland, y actualmente es utilizado en el Banco de la República para la construc-ción de Modelos de Equilibrio General Computable. Además de esto, MATLABresmuy común en el desarrollo de aplicaciones cientícas en otras ciencias naturales ysociales.

En segundo lugar, la comunidad de usuarios de MATLABrconstantemente está pro-duciendo toolboxes de libre acceso por Internet que permiten utilizarMATLABrparacierto tipo de problemas. Por ejemplo, en http://www.spatial-econometrics.com está disponible un Toolbox que permite desarrollar modelos econométricos enMATLABr. De esta manera, aunque existen programas especializados en el desa-rrollo de ciertos temas, MATLABrtambién cuenta con aplicaciones que permitendesarrollar en su plataforma este tipo de problemas.

Finalmente, a diferencia de otras herramientas computacionales,MATLABrpermitecrear y editar rutinas especializadas en la solución de cierto tipo de problemas. Enalgunas ocasiones, utilizar otros programas restringe al usuario en tanto que este solopuede invocar las rutinas, pero no puede editarlas ni vericar o modicar el algoritmoque está programado dentro de ellas. Además, su forma de programar es similar a lade lenguajes tradicionales de programación como C++.

Debemos mencionar que esta es una version preliminar del libro, aunque el mismo yase encuentra registrado ante la Dirección Nacional de Derecho de Autor. Actualmenteel Grupo trabaja en la corrección del mismo. Cualquier comentario, corrección osugerencia por favor enviarla al correo electrónico [email protected].

3Uhlig, Harald. A Toolkit for Analyzing Nonlinear Dynamic Stochastic Models Easily. CEPR

Page 17: Economia Matematica en Matlab-Gomez Norma

Capítulo 1

Conceptos BásicosDiego Corredor, Norman Maldonado1

1.1. ¾Qué es MATLABr?

MATLABres un lenguaje de computación técnica de alto nivel y un entorno in-teractivo para desarrollo de algoritmos, visualización de datos, análisis de datos ycálculo numérico, es la abreviatura de MATrix LABoratory, y fue diseñado en los70s como una interface que permitía la solución de grandes sistemas de ecuacioneslineales. Desde entonces el software ha extendido su aplicación a diferentes camposespecícos, como la estadística, las redes neuronales, la lógica difusa, las nanzas, elprocesamiento de imágenes y sonido, etc., permitiendo manipular y solucionar sis-temas dinámicos, datos estadísticos, información económica y nanciera, realizandosimulaciones de sistemas y estructuras en física, química y algunas ingenierías.

Este software se caracteriza por realizar sus cálculos utilizando matrices y vecto-res, permitiendo manipular grandes cantidades de información de manera rápida ysencilla, es una de las interfaces de mayor uso a nivel mundial, y actualmente setrabaja con ella en Biotecnología, Medicina, Comunicaciones, Electrónica, ServiciosFinancieros y Aeroespacio.

MATLABrdispone de un código básico y de varios toolboxes2, o librerías especiali-zadas en el manejo y solución de problemas especícos, como por ejemplo, ecuacionesdiferenciales parciales, optimización restringida o en más de dos dimensiones, seriesde tiempo, variables simbólicas, distribuciones de probabilidad, etc. Estos toolboxes

1Favor enviar correcciones, comentarios o sugerencias a [email protected] toolboxes son paquetes de herramientas adicionales que el usuario tiene la posibilidad de

adquirir individualmente según sus necesidades particulares.

1

Page 18: Economia Matematica en Matlab-Gomez Norma

2 GEDEM - Versión Preliminar

son un conjunto de funciones compatibles con el código básico, y están diseñadaspara resolver problemas complejos que el programa inicialmente no puede solucionar3.

Existen dos tipos de toolboxes: por un lado se encuentran los toolboxes diseñadospor el grupo creador de MATLABr(The MathWorks Inc.), y por otro lado, lostoolboxes desarrollados por usuarios comunes del programa con el n de suplir suspropias necesidades (generalmente estos últimos son de libre acceso en Internet, eincluso algunos de ellos se pueden bajar de manera gratuita de la página web deMathworks Inc. 4). En este libro nos centramos en el código básico del programa yen un toolbox de distribución gratuita denominado CompEcon5 aplicado a economíay nanzas.

1.2. Ventanas de MatlabComenzamos por presentar las ventanas más importantes del programa. Al abrirel programa por primera vez, se despliega un conjunto de ventanas como el que seobserva en la Figura 1.1.Las ventanas desplegadas son: Command Window, Launch Path, Workspace, Com-mand History y Current Directory6; cada una se explica a continuación.

1.2.1. Command Window

Esta ventana se encuentra ubicada en la parte derecha de la pantalla, y en ellason digitados y ejecutados, simultáneamente, los comandos del programa. En estaventana también se muestran los resultados de todas las operaciones, tanto las deMATLABrbásico como las de los toolboxes. La ventana de comandos trabaja de lasiguiente forma: en la última línea que inicia con el símbolo (») se digita la instruc-ción, y ésta es ejecutada al presionar la tecla `Enter'; luego de ello, en esta mismaventana, son visualizados los resultados del procedimiento. Por ejemplo si le decimosal programa que realice la siguiente operación: 1 +

√5

2 ; primero debemos digitar:3Dado que no está preprogramado para hacerlo.4La página web de The Mathworks Inc. es www.mathworks.com5Desarrollado por Paul Fackler y Mario Miranda, profesores de North Carolina State Univer-

sity y Ohio State University, respectivamente. Este toolbox se encuentra disponible en la direcciónwww4.ncsu.edu/~pfackler/compecon/download.html y fue desarrollado como complemento del li-bro Fackler y Miranda (2003)

6El usuario puede cambiar la disposición de las ventanas en el menú de la barra de herramientasview ⇒ desktop ⇒ layout. La Figura 1.1 corresponde a la opción Default de este menú.

Page 19: Economia Matematica en Matlab-Gomez Norma

CONCEPTOS BÁSICOS 3

Figura 1.1: Conjunto Inicial de Ventanas

(1+sqrt(5))/2

Luego presionamos `Enter'y el resultado es:

ans =

1.6180

Si por algún motivo se presenta un error, el programa despliega un mensaje de alerta,en letra de color rojo, que describe el error que se ha presentado.

1.2.2. 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,es decir, las herramientas de las cuales dispone el usuario para realizar sus cálculos.Así, deben aparecer el código básico del programa y todos los toolboxes creados porThe MathWorks Inc. y adquiridos por el usuario. En la Figura 1.1 se observa que seha cargado MATLABrbásico y algunos otros toolboxes (Communication Toolbox,Control System Toolbox, Data Acquisition Toolbox, Database Toolbox, DatafeedToolbox, Filter Design Toolbox, etc).

A través de esta ventana, y desplegando el menú correspondiente a cada elemento

Page 20: Economia Matematica en Matlab-Gomez Norma

4 GEDEM - Versión Preliminar

Figura 1.2: Command Window o Ventana de Comandos

Figura 1.3: Launch Pad

(como se observa en la Figura 1.3) se puede acceder fácilmente a tutoriales, demos,herramientas particulares, asi como a documentación referente a los elementos car-gados.

1.2.3. Workspace

Esta ventana se encuentra en la misma posición del Launch Pad, y para accedera ella es necesario hacer click en la pestaña Workspace en la parte izquierda de lapantalla.Como se observa en la Figura 1.4, en esta ventana se muestran todos las variables queel usuario ha denido en la sesión, en la columna Name se muestra el nombre de cadauna de las variables, en la segunda columna llamada Size se muestra el tamaño decada variable7, en la tercera y cuarta columna se encuentran especicados el número

7Dado que MATLABrtrabaja con matrices, la especicación del tamaño de la variable es

Page 21: Economia Matematica en Matlab-Gomez Norma

CONCEPTOS BÁSICOS 5

Figura 1.4: Workspace

de bytes que ocupa cada variable y el tipo de variable u objeto8.

1.2.4. Command History

Se encuentra ubicada en la parte inferior izquierda de la ventana principal y como sunombre lo indica, su función es la de llevar un historial de los comandos utilizadospor el usuario. Resulta de gran utilidad ya que cualquier comando, o conjunto decomandos, que sea ejecutado en la Ventana de Comandos (o Command Window)puede ser fácilmente recuperado; adicionalmente permite hacer seguimiento de loscomandos utilizados en determinado momento y/o procedimiento.

Figura 1.5: Command History

Como se muestra en la Figura 1.5, los comandos de cada sesión son almacenados yorganizados por fecha, por medio del rótulo%-- Hora Fecha--%

(Número de las × Número de columnas).8Los tipos de variables y sus características son presentados en la sección 1.5.3.

Page 22: Economia Matematica en Matlab-Gomez Norma

6 GEDEM - Versión Preliminar

1.2.5. Current Directory

También se encuentra en la parte inferior izquierda de la ventana principal. Paraacceder a Current Directory es necesario hacer click sobre la pestaña Current Directoryen la parte inferior izquierda de la pantalla, como se observa en la Figura 1.6.

Esta ventana permite que el usuario observe el directorio sobre el cual está traba-jando, al igual que los archivos que se encuentran dentro de éste, como se muestraen la Figura 1.6.

Figura 1.6: Current Directory

El lugar especicado por defecto para guardar los archivos del usuario es la carpetawork, que se encuentra ubicada dentro de la carpeta principal del programa; si elusuario guarda un archivo en alguna ubicación diferente (por ejemplo C:\Mis do-cumentos), este no podrá ser abierto ni ejecutado, a menos que se le especique alprograma la ubicación del mismo.

Las anteriores son las ventanas básicas de trabajo. Existen otras de uso más especí-co, como por ejemplo las ventanas de grácos o las de Demos; algunas de ellas lasdescribiremos a lo largo del libro.

1.3. M-File Editor

En algunas ocasiones, el usuario requiere utilizar varias líneas de comandos parasolucionar un problema especial. En estos casos no es recomendable utilizar la ven-tana de Comandos, pues si algún error ocurre, es necesario volver a digitar todas lasinstrucciones.

Page 23: Economia Matematica en Matlab-Gomez Norma

CONCEPTOS BÁSICOS 7

La ventana M-le Editor permite digitar los comandos en un programa o M-le querecoge múltiples instrucciones, para ejecutarlas de manera secuencial (en orden delíneas). Para crear un M-File, se debe seleccionar en la parte superior de la Ventanade comandos, File⇒ New⇒M-File. Aparece, entonces, el Editor de M-Files, Figura1.7.

Figura 1.7: Editor de M-Files

Además de permitir digitar múltiples instrucciones simultáneamente, un M-le puedecomplementarse con comentarios, es decir, líneas que no son leídas porMATLABrperoque sirven para construir de manera organizada estos programas colocando explica-ciones luego de una o varias instrucciones. Para insertar un comentario, se digita elsímbolo % y luego se escribe el comentario. Cuando se comenta una línea, estaaparece en color verde, como se observa en la Figura 1.8

Figura 1.8: Comentarios con%

En esta Figura podemos observar como, a medida que se va escribiendo el programa,

Page 24: Economia Matematica en Matlab-Gomez Norma

8 GEDEM - Versión Preliminar

se enumera cada renglón o línea en la parte izquierda de la pantalla. Al generarse unerror es posible ubicar donde se cometió, pues el programa indica la línea en dondeéste se encuentra. Adicionalmente, se observa que, para realizar comentarios, no esnecesario colocar siempre el símbolo % al comienzo de una línea, sino que tambiénse pueden colocar comentarios luego de una instrucción, como se observa en las líneas3 y 4 de nuestro M-File.

Para comentar múltiples líneas, se deben seleccionar las líneas que se desean comentary luego de ello presionar Ctrl+R, o seleccionar en la parte superior del editor de M-Files, Text⇒ Comment. De manera similar, cuando se necesita quitar los % de laslíneas comentadas, se utiliza Ctrl+T o en el menú Text se selecciona Uncomment.

Todo M-File debe ser guardado en una carpeta para que pueda ser ejecutado. Pordefecto, el programa utiliza la carpeta Work para almacenar los archivos, aunque sepuede guardar en otra carpeta. En este caso se ha guardado el M-File en la carpetaWork con el nombre pcb, la ubicación del archivo se observa en la parte superior dela pantalla, que en este caso es C:\MATLAB6p1\work \pcb.m.9 como se observa enla parte superior de la Figura 1.8.

El comando pcb muestra como realizar la operación ejecutada anteriormente en laventana de comandos de otra manera:

%Para calcular (a+b)/c, tenemos que:

% Valor de a

a=1;

% Valor de b, es decir raíz cuadrada de cinco.

b=sqrt(5);

% Valor de c

c=2;

% Operamos

(a+b)/c

Un M-File, puede ejecutarse de cuatro formas distintas, (en todas ellas el M-Filese guarda automáticamente antes de ser ejecutado): primero, presionando la teclaF5; segundo, seleccionando Debug ⇒ Run en la parte superior del Editor de M-Files; tercero, haciendo click sobre el ícono , en la ventana del editor; y cuarto,

9Cuando no se ha guardado el archivo, al lado de esta ubicación aparece el símbolo * , y unavez guardado, éste desaparece.

Page 25: Economia Matematica en Matlab-Gomez Norma

CONCEPTOS BÁSICOS 9

escribiendo el nombre del M-le en la Ventana de Comandos y presionando Enter.Los resultados de la ejecución del programa o M-File que se mostró en la Figura 1.8,aparecen en la Ventana de Comandos de la Figura 1.9.

Figura 1.9: Ventana de Comandos y Resultados

Cuando hay un error en el M-le. El programa dice en que línea y en que columna sepresenta este error. Para corregirlo, se puede ir al M-File haciendo doble click sobreel link que aparece en la Ventana de Comandos y luego de ello realizar la corrección.Hay dos aspectos del programa que se pueden precisar a partir de la gura 1.9:

Aunque en la Ventana de Comandos solo aparece el valor 1.6180, éste no esel único cálculo que el programa ha realizado. Si observamos el Workspace,vemos que las variables a, b y c han sido creados. Lo que ocurre es que elprograma ejecuta todas las líneas, pero solo muestra en la Ventana de Coman-dos los resultados de aquellas líneas que NO terminan en ;. Así, cuando secorren programas que crean matrices muy grandes o realizan cálculos extensos,utilizar ; al nal de cada instrucción permite que el programa sólo ejecutelas instrucciones sin gastar tiempo en mostrar cálculos parciales o intermedios(Siempre, mostrar los resultados parciales es computacionalmente ineciente).

Después de observar la salida es posible ejecutar el M-le varias veces y sigueapareciendo el resultado anterior en la Ventana de ComandosMATLABrdisponede tres comandos para limpiar la pantalla y cerrar ventanas. El primero es clc,que limpia la Ventana de Comandos de resultados anteriores. El segundo esclear, que limpia el Workspace, es decir, borra todas las variables y objetoscreados hasta el momento. Finalmente, se tiene el comando close, que cierralas ventanas adicionales que se abren al ejecutar ciertas instrucciones, como

Page 26: Economia Matematica en Matlab-Gomez Norma

10 GEDEM - Versión Preliminar

por ejemplo, las nuevas ventanas que contienen grácos. Se sugiere que estostres comandos se coloquen siempre al comienzo de un M-File.

Hasta ahora hemos visto como los M-les sirven para presentar una sucesión decomandos análoga a la que se haría desde la Ventana de Comandos, este tipo de M-les se conocen como cheros de comandos o Scripts , sin embargo existen otro tipo dearchivos .m que representan funciones . Una función, en términos computacionales, esun programa que recibe unas entradas o inputs , y realizando cálculos matemáticosy lógicos genera unas salidas u outputs . Todo el código básico de MATLABrylos toolboxes están compuestos de M-les que son utilizados como funciones. Paraconstruir una función en un M-le, se debe colocar la sintaxis:

[salidas]=nombre(entradas)

donde salidas representa un vector de resultados que arroja la función a partir delas entradas. En este caso, nombre corresponde al nombre de la función, y debeser también el nombre con el cual se guarda el M-le donde se construye la función.Luego de esta primera línea deben aparecer otras líneas con las instrucciones pararealizar las operaciones matemáticas y lógicas que calculan las salidas u outputs dela función. Para ilustrar estos conceptos veamos un ejemplo.

Un problema frecuente en álgebra es el de hallar las raíces o valores de x de unaecuación cuadrática de la forma ax2 + bx + c = 0. Sabemos que las soluciones son:

x1, x2 =−b±√b2 − 4ac

2a

Podemos crear una función en un M-le de MATLABr, que calcule las raíces deuna ecuación cuadrática. Esta función, que llamaremos raiz, recibirá como inputo entradas los valores de a, b y c, y generará como output o salidas las 2 raíces ovalores de x. La sintaxis es la siguiente:

function [x1,x2]=raiz(a,b,c);

x1=(-b+(sqrt(b^2-4*a*c)))/(2*a);

x2=(-b-(sqrt(b^2-4*a*c)))/(2*a);

Una vez guardada la función (con el nombre raiz.m), ésta se puede invocar desde laVentana de Comandos o desde algún otro M-le. Por ejemplo, para hallar las raícesde 2x2 + 4x + 1 = 0 podemos utilizar la función que creamos ejecutando la siguienteinstrucción en la Ventana de Comandos:

Page 27: Economia Matematica en Matlab-Gomez Norma

CONCEPTOS BÁSICOS 11

[x1,x2]=raiz(2,4,1)

Como resultado se obtiene:

x1 = -0.2929

x2 = -1.7071

Finalmente, hay que mencionar una característica adicional de la que disponen los M-les. Cuando hay líneas que son muy largas, por ejemplo en fórmulas matemáticasbastante complejas, MATLABrpermite dividir estas líneas mediante tres puntossuspensivos ... que se deben colocar al nal de cada segmento. Por ejemplo,veamos la partición de la fórmula cuadrática mencionada en el ejemplo anterior.Para ello, coloquemos en la primera línea el numerador y en la segunda (separadade la primera con puntos suspensivos) el denominador, así:

function [x1,x2]=raiz(a,b,c);

x1=(-b+(b^2-4*a*c)^0.5)...

/(2*a);

x2=(-b-(b^2-4*a*c)^0.5)...

/(2*a);

Cuando se colocan los puntos suspensivos de la manera correcta, el programa muestraestos puntos de color azul oscuro. Los resultados que se obtienen con esta programa-ción son exactamente los mismos que se obtienen con la anterior.

1.4. Procesos iterativos

Existen dos métodos para resolver problemas matemáticos: analíticos y numéricos.Los métodos analíticos aplican conceptos matemáticos para hallar una solución. Encontraste, los métodos numéricos generalmente asignan valores a las variables invo-lucradas en un problema y evalúan condiciones sobre tales valores para determinarsi se ha hallado la solución. Por otro lado, existen dos formas en que se pueden rea-lizar los cálculos los cálculos, tanto analíticos como numéricos, para solucionar unproblema: manualmente y computacionalmente. Para entender cómo funciona cadamétodo, vamos a solucionar un problema muy sencillo: calcular el valor de x quesatisfaga la ecuación x + 5 = 4.

Analíticamente (utilizando álgebra) sabemos que para hallar x debemos colocar to-

Page 28: Economia Matematica en Matlab-Gomez Norma

12 GEDEM - Versión Preliminar

dos los números a la derecha de la igualdad y dejar solo la variable x a la izquierda,reescribiendo la ecuación de la forma x = 4−5. Luego, debemos realizar las operacio-nes aritméticas necesarias entre los valores que están a la derecha de la igualdad (eneste caso restar 5 a 4) para hallar el valor de la variable. Este procedimiento se puederealizar manualmente, haciendo la resta 4− 5, o computacionalmente, utilizando unprograma de computador que realice dicha resta. De esta manera, se puede hallar lasolución x = −1 por el método analítico, y realizando las operaciones manual y/ocomputacionalmente.

Una manera alternativa de resolver este ejercicio es numéricamente. En este caso,aplicar este método consiste en dar distintos valores a la variable x hasta que secumpla la igualdad x+5 = 4. Realizar este trabajo manualmente implicaría construirun Cuadro similar al 1.1.

(1) Iteración (2) x (3) x+5 (4) = 41 -4 1 6= 42 -3 2 6= 43 -2 3 6= 44 -1 4 = 4

Cuadro 1.1: Método Numérico para hallar x

Para construir el cuadro se comenzó, en la primera la, por asignar el valor de -4 a x

(Columna 2); una vez se asignó este valor a x se evaluó el lado izquierdo de la igualdad(x + 5 ⇒ −4 + 5 = 1, Columna 3) y se determinó si coincidía con el lado derechode la igualdad (Columna 4). Este proceso es conocido como una iteración (Columna1). Como en la primera iteración no se cumplía la igualdad, fue necesario volver arealizar otra iteración, esta vez con x = −3. En total, se realizaron 4 iteraciones parapoder hallar el valor de x (x = −1). Nótese que este proceso se pudo haber realizadomanual o computacionalmente.

Los dos métodos (analítico y numérico) nos permitieron llegar a la solución. Sinembargo, el método numérico, resultó ser poco eciente, es decir requirió de másrecursos (tiempo y programación). Además, fue más fácil realizar manualmente lasoperaciones requeridas por el método analítico. En general resulta poco eciente elcálculo manual de las operaciones que requiere un metodo numérico. Una herramientacomputacional como MATLABrelimina las limitaciones de cálculo, resolviendo estetipo de problemas.

Page 29: Economia Matematica en Matlab-Gomez Norma

CONCEPTOS BÁSICOS 13

En el ejemplo anterior, el método numérico fue un camino largo para hallar la solu-ción. Esto no siempre ocurre, hay algunos problemas que son imposibles de abordaranalíticamente y aunque podrían resolverse manualmente utilizando métodos numé-ricos, se llevaría mucho tiempo realizar todos los cálculos, además es probable quedurante el proceso se cometan errores humanos.

El objetivo de este libro es presentar una herramienta computacional para resolverproblemas de economía matemática analítica y numéricamente. Para trabajar enMATLABrel método analítico se trabaja con variables simbólicas, las cuales permi-ten trabajar en el computador de la misma manera en que se suele trabajar en uncurso de álgebra (despejando variables, cambiando signos, etc.). MATLABrdisponede un toolbox no gratuito llamado Symbolic Toolbox que permite trabajar con estetipo de variables. Este es muy útil para despejar una o más variables cuando lasexpresiones en las que éstas se encuentran son complicadas.

Trabajar el método numérico requiere de expresiones conocidas como bifurcacio-nes y bucles, que permiten resolver computacionalemnte procesos iterativos como eldel Cuadro 1.1. Las bifurcaciones permiten realizar una u otra operación según secumpla o no una determinada condición. Los bucles permiten repetir las mismas oanálogas operaciones sobre datos distintos.García de Jalón (2001). Algunas de estasexpresiones utilizadas por MATLABrson if, for, break, while, switch,

try y catch. A continuación explicamos los tres primeros, dado que son los quevamos a trabajar en esta primera parte del libro, más adelante se presentará el restode las expresiones.

La sentencia if es una bifurcación, y realiza operaciones distintas dependiendo desi se cumple o no una condición. La forma general para una condición es:

if condicion

sentencias1

else

sentencias2

end

En este caso, si se cumple la condición (if), se realizan las operaciones que componenel primer grupo de sentencias (sentencias1). Si no se cumple la condición (else),se ejecuta el segundo grupo de sentencias (sentencias2). En caso de omitir elsey sus respectivas sentencias (sentencias2) y además no se cumple la condicion,

Page 30: Economia Matematica en Matlab-Gomez Norma

14 GEDEM - Versión Preliminar

no se realiza ningún cálculo. Cuando existen múltiples condiciones, la forma generales:

if condicion1

sentencias1

elseif condicion2

sentencias2

elseif condicion3

sentencias3

else

sentencias4

end

Por otro lado, la sentencia for es un bucle, y realiza de manera repetida una se-cuencia de operaciones con un determinado conjunto de datos. Su forma más sencillaes:

for i=1:n

sentencias

end

En este caso, el programa comienza por asignar a i el valor de 1 y realiza todas lasoperaciones establecidas en las sentencias (Se ha tomado arbitrariamente comocontador la variable i. Sin embargo, este contador hubiera podido ser cualquierotra variable, por ejemplo, for a=1:n). A continuación, i toma el valor de 2 y denuevo, se realizan las operaciones. Este proceso se repite n veces, y en la solución deun problema por medio de métodos numéricos cada repetición del proceso se llamaiteración. Sin embargo, el contador (en este caso i) no está limitado a tomar valoresenteros positivos. Un caso más general es cuando el contador es un vector de la forma[vi, vi + a, (vi + a) + a , . . . , vf ] que contiene un conjunto de valores que comienzanen vi, terminan en vf y están separados en intervalos de magnitud a. La forma dela sentencia for en el caso más general es:

for i=vi:a:vf

sentencias

end

donde vi es el valor inicial del contador, vf es su valor nal y a es la magintud que

Page 31: Economia Matematica en Matlab-Gomez Norma

CONCEPTOS BÁSICOS 15

separa los valores del contador i. Por ejemplo, para colocar en la sentencia for uncontador i que contenga los valores 0.3 0.4 0.5 . . . 3.4, la programación debe serde la forma:

for i=0.3:0.1:3.4

sentencias

end

Ilustremos estos comandos con el ejemplo anterior. Vamos a construir un programaque resuelva numéricamente la ecuación x + 5 = 4. La idea es asignar valores a x

entre -4 y 4, evaluar el lado izquierdo de la igualdad y vericar si este resultadocoincide con el lado derecho.

for x=-4:1:4

li=x+5 % li=Lado Izquierdo

ld=4 % ld=Lado Derecho

if li==ld

break

end;

end

x

En la primera línea se establece que el proceso, en caso de no cumplir la condición, seva a repetir 9 veces (número de valores entre -4 y 4 con intervalos de magnitud a=1).En la primera iteración se asigna a x el valor de -4; luego, en la segunda línea, con estevalor de x se evalúa el Lado Izquierdo (li) de la ecuación, que en este caso es x+5,y se dene el Lado Derecho (ld=4). En la tercera línea se evalúa, utilizando if, siel Lado Izquierdo li es igual al derecho (4). Si se cumple la condición, la sentenciaif termina o rompe el proceso for por medio de la instrucción break; si no secumple la condición, la sentencia if no hace nada. Luego se continúa con la segundaiteración en donde x toma el valor de -3, se repite el proceso, y así sucesivamentehasta que se cumpla la condición o hasta que el programa haya evaluado todos losvalores de x.

Con este programa, MATLABrluego de cuatro iteraciones, encuentra la soluciónx = −1. En procesos iterativos como el que se acaba de mostrar, no siempre se llegaa una solución, caso en el cual se dice que no hay convergencia. Por ejemplo, si xhubiera tomado valores de [-4:1:-2] o de [-3.5:0.2:3.5] no se habría llegado

Page 32: Economia Matematica en Matlab-Gomez Norma

16 GEDEM - Versión Preliminar

a una solución. En el primer caso, cuando x=[-4:1:-2], a pesar de realizar todaslas iteraciones, dentro de los valores asignados a x no es posible encontrar la soluciónx=-1. En el segundo caso, cuando x=[-3.5:0.2:3.5], el proceso pasa cerca dela solución asignando a x valores de -1.1 y -0.9. A pesar de que estos valores soncercanos a la solución x=-1, no satisfacen de manera estricta la condición x+4=5,razón por la cual el proceso los descarta como posibles soluciones y nalmente noconverge.

La regla de iteración en el anterior ejercicio era trivial y arbitraria, aunque fue útilpara ilustrar el uso de las sentencias if y for. En realidad, las reglas que se utilizanpara la solución de problemas por medio de métodos numéricos son más elaboradasy permiten establecer condiciones para que el problema converja hacia una solución.Estas reglas de iteración y métodos numéricos se mencionan más detalladamente encapítulos posteriores 10.

1.5. Otros Conceptos Básicos

1.5.1. Path

En el momento de ejecutar algún chero (M-le), se requiere que el archivo se en-cuentre dentro de alguna carpeta que pueda reconocer el software. Para que unacarpeta pueda ser reconocida, se necesita que ésta se encuentre dentro de la rutade búsqueda del programa. En el Path solo están registradas las carpetas del direc-torio C:\MATLAB6p1, incluyendo la carpeta Work. Sin embargo, cheros en otrascarpetas que no estén en el Path no serán reconocidos por MATLABry generaránerrores de ejecución, a menos que se direccione el programa hacia la ubicación de esosarchivos. Por ejemplo, si se ejecuta el chero pcb.m ubicado en C:\GEDEM\pcb.m,el programa arroja el siguiente error de ejecución:

??? Undefined function or variable ’pcb’.

Para añadir una carpeta al Path, se debe ir al menú File⇒ Set Path, en donde apareceuna Ventana similar a la Figura 1.10. Por medio de la opción Add Folder, se puedeagregar cualquier carpeta al Path. Una vez agregada la carpeta, es necesario guardarlos cambios en el Path orpimiendo el botón Save. Otras opciones disponibles en estemenú permiten eliminar carpetas del Path, colocar el Path que el software trae pordefecto o incluir todas las subcarpetas de una carpeta.

10 Se sugiere consultar algunos textos como Fackler (2003), Judd (1998) y Mora (2001).

Page 33: Economia Matematica en Matlab-Gomez Norma

CONCEPTOS BÁSICOS 17

Figura 1.10: Path de Matlab

1.5.2. Help y Doc

El comando help permite desplegar la ayuda de cada uno de los comandos y fun-ciones. En esta ayuda, generalmente aparece la sintaxis del comando y las diferentesopciones que este tiene. En la mayoría de casos, este comando se utiliza en la Venta-na de Comandos y se escribe de la forma help rutina, donde rutina se reereal nombre del comando o rutina del que se desea obtener información. Por ejemplo,xlabel es un comando que permite colocar una etiqueta al eje x de una gráca. Alescribir help xlabel en la Ventana de Comandos, se obtiene:

XLABEL X-axis label.

XLABEL(’text’) adds text beside the X-axis on the current

axis.

XLABEL(’text’,’Property1’,PropertyValue1,...)

sets the values of the specified properties of the xlabel.

H = XLABEL(...) returns the handle to the text object used

as the label.

See also YLABEL, ZLABEL, TITLE, TEXT.

Las rutinas de MATLABrestán organizadas por temas en diferentes carpetas. Porejemplo, en la carpeta C:\MATLAB6p1\toolbox\matlab\sparfun se encuen-tran todas las rutinas para trabajar con un tipo especial de matrices que veremos

Page 34: Economia Matematica en Matlab-Gomez Norma

18 GEDEM - Versión Preliminar

más adelante, que son las matrices dispersas.

help también es útil para ver los comandos o rutinas disponibles para trabajar untema en particular, por ejemplo, ejecutando en la Ventana de Comandos la instruc-ción help C:\MATLAB6p1\toolbox\matlab\sparfun, se muestran todos loscomandos o rutinas, que sirven para trabajar con matrices dispersas.

MATLABrtambién permite que el usuario pueda colocar una sección de ayuda (ohelp) a los M-les que él construya. Si el M-le es un programa, esta opción es útilporque permite colocar un comentario que describa la utilidad del programa que secreó. Si el M-le es una función, con esta opción se puede diseñar un help similara los que tienen las rutinas del software, que describa tanto los inputs como losoutputs de dicha función. Para colocar una sección de ayuda en cualquier M-le, esnecesario colocarla al inicio de éste, en líneas consecutivas comentadas. Por ejemplo,retomando el M-le pcb.m creado anteriormente, y colocando en él una sección deayuda, 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;% Primera Fila

4 5 6]% Segunda Fila

B=[5 8];% Vector con ;

Ejecutando en la Ventana de Comandos help pcb o help pcb.m , se obtienen lastres primeras líneas, que tienen el signo % al comienzo de la línea, y que no estánseparadas por espacios. 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 delíneas consecutivas que tienen el símbolo %. Las salida de MATLABral ejecutarhelp pcb se presenta en la Figura 1.11.

Para no entorpecer el trabajo en la Ventana de Comandos, dado que todas las ayudas

Page 35: Economia Matematica en Matlab-Gomez Norma

CONCEPTOS BÁSICOS 19

aparecen en esta ventana, se recomienda trabajar con helpwin rutina, cuando seutiliza este comando se abre la ventana de ayuda del programa presentando la mismasalida que presenta help pero en una ventana diferente, en esta ventana aparecenlas ayudas de las rutinas del programa y las creadas por el usuario.

Figura 1.11: Help de pcb

Por otro lado, el comando doc permite consultar la documentación en línea disponi-ble en MATLABrsobre cualquier comando o rutina. Esta documentación contieneinformación más detallada que la especicada en el help sobre la sintaxis y métodosnuméricos que utiliza cada rutina.

Para poder utilizar el comando doc se requiere que el usuario, durante el proceso deinstalación, haya instalado además del programa toda la documentación. La sintaxisdel comando es doc rutina, donde rutina corresponde al comando o rutina delcual se quiere consultar la documentación. Por ejemplo, al ejecutar en la Ventana deComandos doc clc, MATLABrdespliega la documentación para el comando clcen una ventana nueva, similar a la que aparece en la Figura 1.12.

1.5.3. Objetos

MATLABr, con base en vectores y matrices, trabaja otro tipo de datos (objetos):

Cadenas de caracteres.

Una cadena de caracteres es un objeto que contiene caracteres (no necesaria-mente numéricos). Estas cadenas tienen múltiples funciones, entre ellas colocartítulos o texto en grácas o modicar propiedades de otros objetos. Las fun-ciones para cadenas de caracteres están en el sub-directorio:

Page 36: Economia Matematica en Matlab-Gomez Norma

20 GEDEM - Versión Preliminar

Figura 1.12: Documentación de clc

C:\MATLAB6p1\toolbox\matlab\strfun

Los caracteres de una cadena se almacenan en un vector, y cada caracter sealmacena en una de las posiciones del vector. Para introducirlas enMATLABr,éstas se deben colocar dentro de comillas simples ¿ ′ À. Por ejemplo, paracrear la cadena Eje x, la sintaxis es: ′Eje x′. Si este procedimiento se realizade manera adecuada, el programa coloca la cadena de texto y las comillas encolor rojo oscuro. Esta cadena es almacenada en un vector de tamaño 1×5como un objeto de tipo char array (character array) que ocupa 10 bytes enel Workspace11.

En algunas ocasiones se requiere que algún texto dentro de la cadena de ca-racteres vaya entre comillas. Para ello, dichas comillas se representan por undoble caracter comilla ¿ ′ ′ À. Por ejemplo, para crear la cadena Eje `x' ,se debe colocar la instrucción: ′Eje ′ ′x′ ′ ′.

Como las cadenas de caracteres son almacenadas en vectores la, a partir deellas se puedan crear matrices de caracteres. Así, una matriz de caractereses una matriz cuyas las son cadenas de caracteres. Todas las las de unamatriz de caracteres deben tener el mismo número de elementos. Cuando estono ocurre, es necesario completar con espacios las cadenas (las) más cortas.Algunos de los comandos que nos permiten trabajar con cadenas de caracteres

11En toda cadena de caracteres, cada caracter ocupa 2 bytes de memoria.

Page 37: Economia Matematica en Matlab-Gomez Norma

CONCEPTOS BÁSICOS 21

se presentan en el Cuadro 1.2.

Comando Característicaschar(c1,c2,...) Crea una matriz de caracteres a partir de las cadenas

c1, c2,..., completando con espacios las cadenasmás cortas.

deblank(c1) Elimina los espacios al nal de una cadena de caracte-res c1.

c1==c2 Compara dos cadenas carácter a carácter. Devuelve unvector o matriz de unos y ceros, dependiendo de si elelemento es igual o diferente, respectivamente.

int2str(a) Convierte un número entero a en cadena de caracteres.num2str(a,n) Convierte un número real a en cadena de caracteres.

Cuando el número tiene decimales, por defecto, se al-macenan en la cadena solo cuatro cifras decimales. (elnúmero de decimales puede ampliarse o reducirse a n).

str2double(c1) Convierte una cadena de caracteres representando unnúmero real en el número real correspondiente.

c1=cellstr(C) Convierte una matriz de caracteres C en un vector deceldas c1, eliminando los espacios al nal de cada ca-dena.

Cuadro 1.2: Algunos Comandos sobre Cadenas de caracteres

Estructuras.

Una estructura (struct) es una agrupación de datos de diferente tipo bajo unmismo nombre. Estos datos se llaman miembros (members) o campos (elds)12.Una estructura se dene en MATLABrseparando sus campos por puntos, eintroduciendo un valor o cadena de caracteres que dena el campo. Veamos unejemplo que ilustre estos conceptos.

Podemos crear una estructura que contenga el PIB per cápita y la participacióndel consumo dentro del PIB del año 2000 para algunos países latinomaerica-nos (Colombia, Argentina, Brasil y Paraguay). Para ello, necesitamos crear el

12García de Jalón (2001)

Page 38: Economia Matematica en Matlab-Gomez Norma

22 GEDEM - Versión Preliminar

campo Variable (PIB per cápita o participación del consumo), y dentro deeste campo, denir otro para País. Para introducir los datos, se debe escribiren MATLABrlo siguiente:

% Primer Campo: Variable pibp=PIB Percapita

pibp.col=5795.55 % col=Colombia

pibp.arg=11729.08 % arg=Argentina

pibp.bra=7744.71 % bra=Brasil

pibp.pry=4801.30 % pry=Paraguay

% Segundo Campo: Variable pcon=Partic. Consumo en PIB

pcon.col=67.93 % col=Colombia

pcon.arg=69.06 % arg=Argentina

pcon.bra=65.75 % bra=Brasil

pcon.pry=77.14 % pry=Paraguay

De esta manera se han creado dos estructuras: la primera contiene datos depib percápita para cuatro países de Latinoamérica y la segunda contiene datosde participación en el consumo para el mismo grupo de países13. Los cam-pos (variable y país) están separados por . . Al invocar en la Ventana deComandos estas dos estructuras, es decir, al ejecutar pibp,pcon, la salida deMATLABrdebería ser similar a la que se presenta en la Figura 1.13.

Figura 1.13: Estructuras pibp, pcon

Se observa en el Workspace que se han creado dos objetos tipo estructura13Los datos se han tomado de Alan Heston, Robert Summers and Bettina Aten, PennWorld Table,

Version 6.1, Center for International Comparisons at the University of Pennsylvania (CICUP),Octubre 2002.

Page 39: Economia Matematica en Matlab-Gomez Norma

CONCEPTOS BÁSICOS 23

(structure array), y cada uno de ellos contiene campos relacionados con paísesde Latinoamérica. Se puede acceder a la información que tiene cualquiera deestos campos escribiendo su ubicación. Por ejemplo, para acceder a la partici-pación que tiene el consumo en el PIB de Colombia, basta con escribir en laVentana de Comandos pcon.col, que arroja como resultado 67.93. el sof-tware dispone de comandos que sirven para manipular estructuras. Algunos deellos se presentan en el Cuadro 1.3.

Comando Característicase=struct(′campo1′,valor1,...) Permite crear la estructura e en una

sola línearmfield(ES,e) Elimina el campo e de la estructura ES

Cuadro 1.3: Algunos Comandos sobre Estructuras

Anteriormente creamos la estructura pibp mediante cuatro instrucciones. Po-demos utilizar el comando struct para crear esta estructura en una solainstrucción, así:

pibp=struct(′col′,5795.55,′arg′,11729.08,...′bra′,7744.71,′pry′,4801.30)

Como las estructuras son objetos que permiten almacenar datos, es de espe-rar que éstas se puedan almacenar en matrices y vectores. Para ello, bastacon especicar la posición que debe ocupar la estructura dentro de una matrizo un vector. Por ejemplo, para crear las dos estructuras del ejemplo anterior(PIB percápita y participación del consumo para algunos países de Latinoa-mérica, año 2000) y colocar estas estructuras en un vector lat, que contega lainformación de estas variables para algunos países de Latinoamérica:

% Pib Percapita

pibp=struct(′col′,5795.55,′arg′,11729.08,...′bra′,7744.71,′pry′,4801.30)

% Participacion Consumo en PIB

pcon=struct(′col′,67.93,′arg′,69.06,...′bra′,65.75,′pry′,77.14)

lat(1)=pibp;

Page 40: Economia Matematica en Matlab-Gomez Norma

24 GEDEM - Versión Preliminar

lat(2)=pcon;

Con estas instrucciones, se crea un vector lat con dos columnas que contie-ne campos (1×2 struct array with fields). En su primera columna(lat(1)), este vector contiene el PIB percápita:

ans =

col: 5795.55

arg: 11729.08

bra: 7744.71

pry: 4801.30

mientras que en la segunda columna (lat(2)), contiene información sobre laparticipación del consumo:

ans =

col: 67.93

arg: 69.06

bra: 65.75

pry: 77.14

Vectores o matrices de celdas (cell arrays).

Un cell array es un objeto de tipo más general, ya que permite combinardiferentes tipos de datos (numéricos, cadenas de caracteres, estructuras) en unosolo. Esto implica que un cell array puede admitir, por ejemplo, en su primeraposición, una estructura, en su segunda posición una matriz y en la tercera unacadena de caracteres14. Un cell array se crea especicando la posición en quese desea colocar el objeto dentro del cell array y colocando el objeto dentro dellaves . Veamos un ejemplo:

ca(1)=[3 5 4];% 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 suprimera posición, contiene un vector de 3×1, en la segunda y tercera contienematrices vacías, y en la cuarta una cadena de caracteres. Nótese que no es

14Contrario a los otros objetos, que solo permiten un mismo tipo de datos en todas sus posiciones.

Page 41: Economia Matematica en Matlab-Gomez Norma

CONCEPTOS BÁSICOS 25

necesario introducir los elementos de un cell array en orden consecutivo: sepueden introducir en cualquier posición y MATLABrautomáticamente creaobjetos vacíos en las posiciones en las que no se introdujo ningún elemento.Algunos de los comandos para trabajar con cell arrays se observan en el Cuadro.

Comando Característicascell(m,n) crea un cell array vacío de m las y n columnas.celldisp(ca) muestra el contenido de todas las celdas de cacellplot(ca) muestra una representación gráca de las distintas celdasiscell(ca) indica si ca es un vector de celdasnum2cell() convierte un array numérico en un cell arraycell2struct() convierte un cell array en una estructura.struct2cell() convierte una estructura en un cell array.

Cuadro 1.4: Algunos Comandos para objetos Cell Array

Matrices dispersas.

Una matriz dispersa se caracteriza porque la mayoría de los elementos que lacomponen son ceros. Computacionalmente resulta ineciente almacenar en lamemoria tantos valores de ceros cuando la matriz es de gran tamaño.MATLABrdisponede rutinas que permiten tratar de manera especial estas matrices, con el pro-posito de tener mayor eciencia computacional en los cálculos. Estas rutinas yalgunos ejemplos se presentan en detalle en el capítulo 2.

Para terminar este capítulo, debemos mencionar dos comandos que son fundamenta-les para la presentación de resultados numéricos y grácos enMATLABr. El primeroes el comando pause, cuya sintaxis es pause(n). Este comando permite deteneruna secuencia de operaciones o procesos por n segundos. cuando se utiliza de la for-ma pause, cualquier cálculo posterior a esta instrucción se detiene indenidamente,hasta que el usuario oprima alguna tecla.

El segundo comando es el comando format, cuya sintaxis es format opcion.Este comando permite que el usuario de MATLABrdisponga de varias opcionesde formatos en los que desea ver los resultados numéricos. Algunos de ellos sonformato short (5 dígitos), long (15 dígitos) y bank (2 decimales)15. El programautiliza por defecto el formato short. Algunas veces este último formato utiliza

15Las totalidad de opciones se pueden ver utilizando el help de format o consultando la docu-mentación.

Page 42: Economia Matematica en Matlab-Gomez Norma

26 GEDEM - Versión Preliminar

notación cientíca para satisfacer el requerimiento de colocar 5 dígitos Por ejemplo,cuando se digita en la Ventana de Comandos el número 0.000015:

ans = 1.5000e-005

Para efectos prácticos, la mayoría de los resultados numéricos del libro serán presen-tados en formato bank.

A partir de estos conceptos básicos, es posible presentar la estructura del libro quese divide en tres secciones: Algebra Lineal, Cálculo y Optimización y Dinámica. Enla primera sección se trabaja con los conceptos de Matrices y Vectores (capítulo 2)y Sistemas de Ecuaciones (capítulo 3). En la segunda sección se analiza el compor-tamiento de una función a partir de herramientas grácas (capítulo 4) y de cálculodiferencial (capítulo 5) e integral (capítulo 6). En la tercera sección se estudian lascondiciones sucientes (o de segundo orden) de un problema de optimización (ca-pítulo 7) y los algoritmos para hallar puntos óptimos (capítulo 8). Finalmente, sepresenta una introducción a la solución numérica de sistemas dinámicos (capítulo??).

Page 43: Economia Matematica en Matlab-Gomez Norma

Parte I

ÁLGEBRA LINEAL

27

Page 44: Economia Matematica en Matlab-Gomez Norma
Page 45: Economia Matematica en Matlab-Gomez Norma

Capítulo 2

Matrices y VectoresLida Quintero, Mario González, Eduardo Sánchez

Existen ciencias en donde el análisis de diferentes situaciones hace necesario en-contrar una manera óptima de organizar grandes volúmenes de información. Lasmatemáticas, a través del álgebra lineal, ofrecen una forma de representar de maneraorganizada estas relaciones utilizando matrices. Es así como, en modelos económicoscomo el de Leontie, las matrices expresan las relaciones entre los insumos y los pro-ductos nales de las diferentes industrias, buscando establecer el nivel de producciónque satisface una demanda determinada.

El estudio del álgebra lineal es útil en áreas importantes para las ciencias económi-cas tales como teoría de la optimización, teoría de las ecuaciones diferenciales y endiferencia, estadística y econometría. El objetivo de este capítulo es estudiar las ca-racterísticas básicas del álgebra lineal, utilizando MATLABr. En la primera secciónexaminaremos el manejo básico de las matrices y sus distintas operaciones; en lasegunda, abordaremos los vectores junto a sus particularidades y operaciones; y enla tercera, veremos algunas herramientas que facilitan el cálculo de valores y vectorespropios.

2.1. Matrices

Una matriz es un arreglo rectangular de elementos dispuestos en renglones (las) ycolumnas.

a11 a12 ... a1n

a21 a22 ... a2n

... ... . . . ...am1 am2 ... amn

29

Page 46: Economia Matematica en Matlab-Gomez Norma

30 GEDEM - Versión Preliminar

El orden o tamaño de una matriz se dene como el número de las y de columnasque la componen. En este caso, tenemos una matriz de orden m×n, porque disponede m las y n columnas.

También podemos especicar un elemento de la matriz indicando la la y la columnaen la que se encuentra. Así, el elemento aij es aquel que está en la la i y la columnaj. Por ejemplo, el elemento de la la 1 y columna 2 lo podemos especicar como a12.

Las matrices deben recibir un nombre en MATLABrpara que sean almacenadas du-rante la sesión. Este nombre puede ser una o varias letras, no obstante, se recomiendaque las matrices se denoten con letras mayúsculas, sin números o caracteres espe-ciales 1. Las matrices deben estar contenidas entre paréntesis angulares [ ] y serdenidas por las, es decir, se separan las componentes de una misma la medianteespacios o comas (,), mientras que las las se diferencian entre sí con punto y coma(;) o presionando enter.

Para referenciar elementos especícos de una matriz, utilizamos paréntesis circulares( ) y, para introducir elementos tipo cell array2, se hace uso de los corchetes ollaves .

Ejemplo 2.1. Generemos computacionalmente la matriz:

A2×3 =

[1 3 97 5 4

]

Para introducir la matriz A debemos introducir los elementos así:

A=[1,3,9;7,5,4]

O también de la forma:

A=[1 3 9;7 5 4]

MATLABrnos muestra entonces la matriz A:

A = 1 3 9

7 5 4

1Cuando a la matriz no se le ha asignado un nombre, MATLABrutiliza un nombre de variablepor defecto (ans de answer) que contiene la respuesta de la última operación.

2Una matriz de celdas o cell array es un arreglo cuyos elementos son cualquier tipo de variable,por ejemplo, otras matrices, cadenas de caracteres, números, etc.

Page 47: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 31

Para efectos prácticos, utilizaremos a lo largo de la mayoría del libro la forma deintroducir matrices, en la cual separamos las las por ; y sus elementos por espacios.

2.1.1. Hipermatrices

Una extensión del concepto de matriz es el concepto de hipermatriz, denida comouna matriz de más de dos dimensiones. Por ejemplo, una hipermatriz de 3 dimensio-nes3 es una hipermatriz de tamaño m×n×xk donde k es el número de matrices delarreglo (es decir, la tercera dimensión: la profundidad de la hipermatriz), cada unacon m las y n columnas, visible en la Figura 2.1.

m

N

K

Figura 2.1: Hipermatriz de 3 dimensiones

Para introducir hipermatrices en MATLABrse sigue un procedimiento similar aaquel para introducir una matriz. La idea básica es introducir cada una de las ma-trices necesarias para conformar la hipermatriz y, simultáneamente, introducir laposición que cada una de ellas ocupará dentro de la hipermatriz. Por ejemplo, gene-remos una matriz de tamaño (3× 3× 2):

C(:,:,1)=[2 5 6;4 1 0;6 6 9];

C(:,:,2)=[-4 6 0;0 1 1;8 3 5];

En la primera línea se crea una hipermatriz C de 3 dimensiones, y la información

3MATLABrpermite trabajar hipermatrices de cualquier dimensión.

Page 48: Economia Matematica en Matlab-Gomez Norma

32 GEDEM - Versión Preliminar

que se introduce corresponde a la primera de las dos matrices que conformarán lahipermatriz C. De manera similar, en la segunda línea se introduce la informacióncorrespondiente a la segunda matriz que compone la hipermatriz C. Como resultado,MATLABrcrea una matriz de 3 dimensiones así:

C(:,:,1) = 2 5 6

4 1 0

6 6 9

C(:,:,2) = -4 6 0

0 1 1

8 3 5

Otra manera en que se pueden denir hipermatrices es por medio del comando cat,cuya sintaxis es cat(dim,A,B). Este comando concatena las matrices A y B a lolargo de la dimensión dim. Por ejemplo deniendo las matrices:

A=[2 5 6;4 1 0;6 6 9];

B=[-4 6 0;0 1 1;8 3 5];

Podemos invocar el comando cat para construir la hipermatriz C que anteriormentehabíamos construido. Para ello, debemos tener presente que esta concatenación serealiza en la tercera dimensión (DIM=3), ya que queremos crear una hipermatriz quecontenga 2 matrices de 3× 3:

C=cat(3,A,B)

Obteniendo la hipermatriz C de (3× 3× 2) dimensiones. Los comandos relacionadosen el Cuadro 2.1 se pueden utilizar con hipermatrices.

Para ilustrar el uso de estos comandos, veamos un ejemplo.

Ejemplo 2.2. Supongamos que un analista desea organizar una serie de informacióncompuesta por los indicadores macroeconómicos de tres países (P1, P2, P3) durantelos últimos dos años (A1, A2).

Es así como él obtiene los datos para el crecimiento del PIB, la variación en la Tasade cambio respecto al EURO, la inación y la variación en el nivel de desempleo:

Page 49: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 33

Comando Acciónsize(A) Tamaño de la hipermatriz Andims(A) Número de dimensiónes de la hipermatriz Asqueeze(A) Elimina dimensiones iguales a unoreshape(A,m,n) Distribuye los elementos de la hipermatriz A en una

matriz de tamaño m× n

permute(A) Permuta las dimensiones de la matriz A según los ín-dices del vector v

ipermute(A) Permutación inversa

Cuadro 2.1: Comandos para hipermatrices

clear A(:,:,1)=[5 7 6;5.5 6 5] % ∆ PIB

A(:,:,2)=[6 8 10; 7 9 11] % ∆ TRM

A(:,:,3)=[4 7 10; 4 6 9] % ∆ Inflacion (π)

A(:,:,4)=[10 11 7; 8 11 10] % ∆ Desempleo

Esta matriz es almacenada y en el Command Window aparece de la siguiente forma:

A(:,:,1) = 5 7 6

5.5 6 5

A(:,:,2) = 6 8 10

7 9 11

A(:,:,3) = 4 7 10

4 6 9

A(:,:,4) = 10 11 7

8 11 10

El tamaño de la matriz A es (2× 3× 4). Este tamaño se puede obtener utilizando elcomando size con la sintaxis size(A), con el cual obtenemos:

ans = 2 3 4

Page 50: Economia Matematica en Matlab-Gomez Norma

34 GEDEM - Versión Preliminar

Sabemos también que la matriz A es una matriz de tres dimensiones (2 × 3 × 4).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(:,:,1)=[-3;0]

B(:,:,2)=[5;3]

B(:,:,3)=[0;2]

B(:,:,4)=[7;2]

La matriz B es de tres dimensiones, y tiene cuatro matrices dos las por una columna(2×1×4). Nótese que en este caso la segunda dimensión de la matriz no es necesaria,ya que eliminando ésta dimensión no se modica el contenido de la matriz B. Así, lamatriz B que inicialmente es de tres dimensiones la podemos escribir como una dedos dimensiones asi:

B2×4 =

[−3 5 0 70 3 2 2

]

MATLABrdispone del comando squeeze para eliminar dimensiones que son igua-les a uno, simplicando las dimensiones de una matriz. Aplicando este comando a lamatriz B que creamos anteriormente, de la forma squeeze(B), obtenemos:

ans = -3 5 0 7

0 3 2 2

Otro comando útil en hipermatrices es el comando reshape que distribuye loselementos de la hipermatriz A que contiene m × n × k elementos en una matriz(de dos dimensiones) de tamaño m × n. Sabemos, del tamaño de la matriz A, queésta tiene 24 elementos (2 × 3 × 4). Podemos utilizar el comando reshape paracrear, a partir de la hipermatriz, una matriz A de tamaño 6× 4 4. Esto lo podemoshacer por medio de la sintaxis reshape(A,6,4), que reordena las columnas de lahipermatriz A y crea una matriz de tamaño (6× 4), así:

4Es posible crear cualquier matriz de tamaño m × n que cumpla la condición m × n = 24. Porejemplo, una matriz de (12× 2).

Page 51: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 35

ans = 5 6 4 10

5.5 7 4 8

7 8 7 11

6 9 6 11

6 10 10 7

5 11 9 10

En esta matriz encontramos, en las columnas, cada uno de los indicadores macro-económicos y en cada par de las, los datos correspondientes a cada uno de lostres países, vemos como las dos primeras las corresponden al pais P1, las dos lassiguientes al país P2 y las últimas dos las a P3.

Finalmente, tenemos los comandos permute e ipermute. La sintaxis del primerode estos comandos es permute(A,v). Este comando reordena las dimensiones deuna matriz A en el orden dado en el vector v. Siguiendo nuestro ejemplo, sabemosque la matriz A tiene tres dimensiones y es de tamaño (2× 3× 4). Podemos utilizarel comando permute para crear una matriz que contenga los mismos elementos deA pero que sea de tamaño (4 × 2 × 3), es decir, una matriz que ordene de maneradistinta las dimensiones de la matriz A. La sintaxis:

v=[3 1 2]

C=permute(A,v)

indica a MATLABrque coloque en la primera dimensión de la matriz C la dimensión3 de la matriz A, en la segunda dimensión de la matriz C la primera dimensión de lamatriz A, y en la tercera dimensión de la matriz C la segunda dimensión de la matrizA. Como resultado, tenemos una matriz C de tamaño 4× 2× 3, así:

C(:,:,1) = 5 5.5

6 7

4 4

10 8

C(:,:,2) = 7 6

8 9

7 6

11 11

Page 52: Economia Matematica en Matlab-Gomez Norma

36 GEDEM - Versión Preliminar

C(:,:,3) = 6 5

10 11

10 9

7 10

Cada una de estas matrices nos dejan analizar los datos de forma distinta, cada unade ellas tiene, en las columnas, los años y las las corresponden a los indicadores,cada una de estas expresiones podría entenderse como la información organizada porpaís.

Por su parte, el comando ipermute realiza la operación inversa del comando permute,y su sintaxis es ipermute(A,v). En este ejemplo, al aplicar ipermute a la matrizC volvemos a la matriz inicial A.

En esta sección hemos observado como las hipermatrices sirven para manejar infor-mación, sin embargo esta no es su única función, mas adelante veremos el papel quejuegan en la construcción del producto cartesiano y de grácas.

2.1.2. Tipos de Matrices

MATLABrofrece comandos que generan matrices sin necesidad de especicar ca-da uno de sus elementos, porque se trata de matrices con alguna característica es-pecial. En general, para crear una de estas matrices se introduce el comando es-pecíco del tipo de matriz que queremos, seguido por su tamaño entre paréntesiscircular ()5 con cada una de sus dimensiones separadas por comas6, de la formaA=comando(m,n). Asimismo, para una hipermatriz de tamaño m × n × k, la sin-taxis es A=comando(m,n,k). Cuando se especica de la manera A=comando(n),el programa crea una matriz cuadrada de dos dimensiones (n × n), mientras quecon la sintaxis A=comando, se genera un escalar. En el Cuadro 2.2 presentamos losprincipales comandos para crear diversos tipos de matrices:

Matrices Dispersas

Un concepto de interés computacional son las matrices dispersas, matrices en las quela mayoría de sus componentes son cero. Cuando se trabaja con matrices de gran ta-

5Aunque también es posible con ([ ])6Si se utiliza "([ ])", las dimensiones también se pueden separar por espacios.

Page 53: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 37

Comando Forma una matrizeye(m,n,...) Identidad*.zeros(m,n,...) Nula o de Ceros.ones(m,n,...) Unitaria o de Unos.rand(m,n,...) De números aleatorios entre 0 y 1, con distribución

uniforme.randn(m,n,...) De números aleatorios con distribución normal, de va-

lor medio 0 y varianza 1.magic(n) Con los números 1,2,3,4,...,n×n, con la propiedad de

que todas las las y columnas suman lo mismo**.* Este comando no genera hipermatrices; sólo matrices cuadradas** Sólo para matrices cuadradas

Cuadro 2.2: Matrices generadas automáticamente

maño, resulta computacionalmente ineciente almacenar una gran cantidad de entra-das de ceros, no solo por lo dispendioso que puede resultar digitarlos, sino también porel espacio en memoria que estos datos ocupan. Por esta razón, MATLABrdisponede los comandos relacionados en el Cuadro 2.3 para tratar este tipo de matrices.

Ejemplo 2.3. Consideremos la matriz:

D=[0 5 -6 0;3 0 0 0;9 0 -7 0;0 0 0 4]

Esta matriz es almacenada en MATLABrde la siguiente forma:

D = 0 5 -6 0

3 0 0 0

9 0 -7 0

0 0 0 4

Generemos la matriz dispersa correspondiente a D. El comando sparse nos permitehacer esta conversión utilizando la sintaxis sparse(D), de la cual obtenemos:

Page 54: Economia Matematica en Matlab-Gomez Norma

38 GEDEM - Versión Preliminar

Comando Característicassparse(D) Convierte una matriz D a su forma dispersa, eliminando todos

los elementos en los que haya cero.sparse(i,j) Crea una matriz de ceros de tamaño i× j.sparse(i,j,s,m,n) Crea una matriz dispersa a partir de: i y j, que indican la po-

sición de los elemetos diferentes de cero en la nueva matriz; s,que es el vector de elementos y m y n, que implican que es detamaño m× n.

speye(i,j) Forma una matriz dispersa de tamaño i× j con unos en la dia-gonal principal.

spones(D) Genera una matriz con la misma estructura de dispersión de D,pero reemplaza los elementos diferentes de cero por unos.

spdiags(D) Extrae todas las diagonales con elementos diferentes de cero dela matriz D de tamaño (i,j). La nueva matriz tiene i las y tantascolumnas como diagonales diferentes de cero tenga D.

spdiags(D,d) Extrae las diagonales especicadas por d (donde d=0 correspon-de a la diagonal principal) de la matriz D.

nonzeros(D) Vector columna con los elementos diferentes de cero de D.[i,j]=find(D) Indica las posiciones (en las y columnas) de los elementos dife-

rentes de cero de D.nnz(D) Número de elementos diferentes de cero en la matriz D.issparse(A) Si el resultado de esta rutina es uno, indica que la matriz ha sido

guardada de tipo dispersa y, si es cero, de cualquier otra forma.

Cuadro 2.3: Algunos Comandos para Matrices Dispersas

ans = (2,1) 3

(3,1) 9

(1,2) 5

(1,3) -6

(3,3) -7

(4,4) 4

MATLABr, en un empleo eciente de la memoria, sabe ahora que en las posiciones(2,1), (3,1), (1,2), (1,3), (3,3) y (4,4) hay elementos diferentes de cero, conoce suvalor y sabe que, en el resto de posiciones, hay ceros. Veamos otra forma de generarla matriz dispersa de D:

[i,j,s]=find(D)

Page 55: Economia Matematica en Matlab-Gomez Norma

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.Así, por ejemplo, en la la 2 (primer elemento del vector i) columna 1 (primerelemento del vector j), está el elemento 3 (primera entrada vector s) y así sucesiva-mente. Para generar la matriz dispersa, hacemos que corresponda al tamaño de D:[m,n]=size(D) y, entonces, construimos la matriz dispersa:

S = sparse(i,j,s,m,n)

La matriz dispersa S es igual a aquella que encontramos anteriormente. Evaluamosla cantidad de elementos de S diferentes de cero: a=nnz(S) y b=nonzeros(S). Elresultado de a es el número de elementos diferentes de cero en S, en total, seis. b esun vector columna con aquellos elementos diferentes de cero: en otras palabras, esigual al vector s que ya habíamos hallado. Otro comando, spones, genera la mismaestructura de dispersión de spones(D), pero cambia los elementos diferentes decero (el vector b o el vector s) por unos, es decir, spones(D):

Page 56: Economia Matematica en Matlab-Gomez Norma

40 GEDEM - Versión Preliminar

ans = (2,1) 1

(3,1) 1

(1,2) 1

(1,3) 1

(3,3) 1

(4,4) 1

Ahora bien, spdiags permite la construcción de una matriz donde las diagonalescon elementos diferentes de cero constituyan las columnas y la cantidad de lasequivale a la cantidad de la matriz original. Así, C=spdiags(S) es:

C = 9 3 0 0 0

0 0 0 5 0

0 0 -7 0 -6

0 0 4 0 0

Este resultado no es sorprendente: si observamos la matriz D y la comparamos conC vemos que la tercera columna de C es la diagonal principal de D y que las demáscolumnas de C se corresponden con las diagonales de D. Si en este ejemplo a lasintaxis del comando le agregamos un número entero entre -2 y 2, obtenemos cadacolumna de C o, en otras palabras, cada diagonal de D, teniendo en cuenta que 0 esla diagonal principal: C=spdiags(S,0).

Concluimos el análisis de dispersión de D con issparse: si introducimos la sintaxisissparse(S) y el resultado es 1 entonces S es una matriz dispersa. Por otra parte,si introducimos en MATLABrla rutina sparse(3,2) generamos una matriz deceros de tamaño 3× 2. El programa no muestra la matriz, pero sí nos indica que yaexiste:

All zero sparse: 3-by-2

Por último speye genera una matriz dispersa a partir de la matriz identidad, esdecir, en los lugares donde i = j hay unos, por ejemplo speye(3) genera la siguientematriz dispersa:

Page 57: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 41

ans = (1,1) 1

(2,2) 1

(3,3) 1

2.1.3. Operaciones Básicas entre Matrices

Para realizar operaciones básicas entre dos matrices previamente denidas A y B y unescalar n, es necesario indicar la operación que queremos, ya sea mediante operadoreso por medio de funciones o comandos. En el Cuadro 2.4 encontramos las distintasformas de hacer las operaciones básicas.

Operación Comando o Función OperadorSuma plus(A,B) A+B

Resta minus(A,B) A-B

Multiplicación mtimes(A,B) A*B

Multiplicación elemento a elemento* times(A,B) A.*B

Potenciación mpower(A,n) A^n

Potenciación elemento a elemento* power(A,B) A.^n

División izquierda mldivide(A,B) A\B

División izquierda elemento a elemento* ldivide(A,B) A.\B

División derecha mrdivide(A,B) A/B

División derecha elemento a elemento* rdivide(A,B) A./B

*Las operaciones elemento a elemento aplican los operadores a cada componentede la matriz

Cuadro 2.4: Operaciones básicas entre matrices

Ejemplo 2.4. Dadas las matrices A y B y el escalar 2, determinemos el valor deA + B, A ∗B, A. ∗B, A2, A.2, A/B y A./B

A =

2 3 −97 −5 38 −5 8

B =

−5 4 −96 2 3−1 −5 7

Paso 1. Introducimos las matrices en MATLABr:

A=[2 3 -9;7 -5 3;8 -5 8]

Page 58: Economia Matematica en Matlab-Gomez Norma

42 GEDEM - Versión Preliminar

B=[-5 4 -9;6 2 3;-1 -5 7]

Paso 2. 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.*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.^2

G = 4 9 81

49 25 9

64 25 64

H=A/B

H = -2.3973 -2.2329 -3.4110

-4.7123 -3.4521 -4.1507

-3.1918 -1.6986 -2.2329

Page 59: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 43

I=A./B

I = -0.4000 0.7500 1.0000

1.6667 -2.5000 1.0000

-8.0000 1.0000 1.1429

¾Cuál es la diferencia entre D y E, F y G y H e I? En D, le pedimos a MATLABrquemultiplicara ambas matrices, mientras que en E buscábamos que multiplicara cadaelemento de A por el correspondiente en B. En el caso de F, el programa multiplicóA por A, mientras que en G elevó cada uno de sus elementos al cuadrado. En H, elprograma hizo la siguiente operación: A ∗ B−1, y en I dividió cada componente deA por su correspondiente en B.

2.1.4. Análisis de una Matriz

Existen otros comandos en MATLABrque nos permiten extraer información querevela características importantes de las matrices. En el Cuadro 2.5 se resumen loscomandos que proveen las propiedades esenciales de una matriz A:

Propiedad Operador o Sintaxis del ComandoTraspuesta A’

Inversa inv(A)

Determinante det(A)

Norma norm(A)

Rango rank(A)

Traza trace(A)

Tamaño size(A) o length(A)Dimensiones ndims(A)

Número de elementos numel(A)

Elementos de la diagonal diag(A)

Triangular Inferior tril(A)

Triangular Superior triu(A)

Cuadro 2.5: Comandos para analizar una matriz

Ejemplo 2.5. A partir del Cuadro 2.5, analicemos las caracterísiticas de la matrizA:

Page 60: Economia Matematica en Matlab-Gomez Norma

44 GEDEM - Versión Preliminar

A2×3 =

1 3 −27 −5 43 6 4

Paso 1. Introducimos la matriz A en MATLABr

A=[1 3 -2;7 -5 4;3 6 4]

Paso 2. Analizamos la matriz A de acuerdo al Cuadro 2.5:

C=A’

C = 1 7 3

3 -5 6

-2 4 4

D=inv(A)

D = 0.2136 0.1165 -0.0097

0.0777 -0.0485 0.0874

-0.2767 -0.0146 0.1262

e=det(A)

e = -206

f=norm(A)

f = 9.6869

g=rank(A)

g = 3

h=trace(A)

Page 61: Economia Matematica en Matlab-Gomez Norma

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

Page 62: Economia Matematica en Matlab-Gomez Norma

46 GEDEM - Versión Preliminar

De esta forma, C es la transpuesta de A, D es la inversa, e es el determinante y f

es la norma de la matriz. De acuerdo a g, A tiene 3 las y columnas linealmenteindependientes, la traza de la matriz es h y, según i, A es de tamaño 3 × 3. Porotra parte, j nos muestra el número de dimensiones de la matriz y k el número deelementos contenidos en el arreglo. N es una matriz triangular inferior a partir delfragmento triangular inferior de A, mientras que P es una matriz triangular superiorpartiendo de la fracción triangular superior de A.

2.1.5. Matrices Factorizables

Una matriz cuadrada es factorizable cuando puede reescribirse como el productode dos o más matrices. El objeto de estudio de esta sección son tres de las formasde factorizar matrices: la factorización LU, Cholesky y descomposición en valoressingulares.

Factorización LU: PA=LUDada una matriz cuadrada A, esta es factorizable si existe una matriz L trian-gular inferior, una matriz U triangular superior y una matriz de permutaciónP de manera que PA = LU . En MATLABres posible calcular las matricesL,U y P que generan la matriz A a partir del comando lu. Por ejemplo, paraconocer la matriz L y U a partir de una matriz cuadrada, primero denimosla matriz:

A=[1 -2 1;-3 1 -1;2 6 4]

Ahora bien, para encontrar los elementos que componen las matrices L, U yP , utilizamos la rutina lu:

[L,U,P]=lu(A)

L = 1.0000 0 0

-0.6667 1.0000 0

-0.3333 -0.2500 1.0000

U = -3.0000 1.0000 -1.0000

0 6.6667 3.3333

0 0 1.5000

Page 63: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 47

P = 0 1 0

0 0 1

1 0 0

Si operamos los resultados, tenemos entonces que L∗U = P ∗A. Debemos acla-rar que no todas las matrices son factorizables: sólo aquellas cuyo determinantees diferente de cero.

CholeskyLa descomposición de Cholesky factoriza una matriz A, simétrica y denidapositiva, de tal forma que A = UT U , donde U es una matriz triangular inferiorcon elementos positivos en su diagonal. Es posible calcular la matriz U a travésde la descomposición de Cholesky con el código chol. Veamos, por ejemplo,la descomposición de Cholesky para la siguiente matriz:

A=[2 -1 0;-1 2 -1;0 -1 2]

Utilizamos entonces el comando chol:

U=chol(A)

U = 1.4142 -0.70711 0

0 1.2247 -0.8165

0 0 1.1547

Así, MATLABrnos muestra la matriz U , que cumple con la propiedad de queUT ∗ U = A.

Descomposición en valores singularesOtra factorización de matrices es la denominada descomposición por valoressingulares y es útil a la hora de analizar si un proceso iterativo está convergiendoa una solución.

Al igual que las otras formas de factorización, la idea básica consiste en reex-presar una matriz Am×n como el producto de otras; en este caso de la siguientemanera:

Page 64: Economia Matematica en Matlab-Gomez Norma

48 GEDEM - Versión Preliminar

Am×n = Um×mSm×nV Tn×n (2.1)

Donde U y V son matrices unitarias y S es una matriz diagonal. Los elemen-tos aij pertenecientes a la diagonal de la matriz S son denominados valoressingulares de A. Dada la naturaleza de la factorización una matriz A siempretendrá muchas descomposiciones en valores singulares, sin embargo los valoressingulares siempre son los mismos aunque aparezcan en diferente orden.

Aunque existen otros métodos para descomponer matrices, hacemos énfasis en lasfactorizaciones PA = LU y Cholesky debido a la utilidad que tienen para el análisisy las soluciones de sistemas de ecuaciones.

2.2. VectoresLos vectores son tipos especiales de matrices de tamaño n × 1 (vector columna) ó1× n (vector la) en el espacio <n. Geométricamente, pueden ser denidos como elsegmento de recta entre el origen y un punto que se caracteríza por poseer dirección,magnitud y sentido.

2.2.1. 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 longituddel vector. Su cálculo está basado en el teorema de Pitágoras, por ejemplo para unvector en <2:

‖ v ‖=√

v21 + v2

2 (2.2)

donde v1 y v2 son los componentes del vector ~v en el espacio bidimensional. Engeneral, para un vector en <n, ~a = (a1, a2, ..., an), la norma está dada por:

‖ a ‖=√

a21 + a2

2 + ... + a2n (2.3)

Si la norma de un vector es igual a 1, el vector es llamado unitario. El concepto denorma es útil en el cálculo de distancias: por ejemplo, para encontrar la distanciad entre dos puntos en <3, P1 = (a1, a2, a3) y P2 = (b1, b2, b3), la norma del vector−−−→P1P2, nos proporciona el valor de la distancia, donde −−−→P1P2 = P2 − P1, es decir,

Page 65: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 49

d =√

(b1 − a1)2 + (b2 − a2)2 + (b3 − a3)2 (2.4)

En general, la distancia entre dos puntos P1 = (a1, a2, . . . an) y P2 = (b1, b2, . . . bn)en <n se dene como:

d =

√√√√n∑

i=1

(bi − ai)2 (2.5)

MATLABrcalcula la magnitud de un vector ~a por medio del comando norm, cuyasintaxis es norm(a). Por ejemplo para hallar la norma del vector c = (8 1 6 5)

En primer lugar, creamos el vector cy y luego, utilizamos el comando norm:

c=[8 1 6 5];

d=norm(c)

Así, la magnitud o norma del vector ~c es d=11.2250.

Ejemplo 2.6. Hallar la distancia entre los puntos P1 = (15, 23, 4) y P2 = (−9, 10,−1)

Paso 1. Comenzamos por introducir los vectores P1 y P2 y calcular P =−−−→P1P2, donde−−−→

P1P2 = P2 − P1:

p1=[15 23 4]

p2=[-9 10 -1]

p=p2-p1

Paso 2. Luego, utilizamos el comando norm para hallar la distancia entre P1 y P2:

d=norm(p)

La distancia entre los puntos P1 y P2 es, entonces, d=27.7489. Grácamente sepuede representar como la norma del vector p tal como se muestra en la Figura 2.2

La norma de una matriz A, es el máximo de sus valores singulares. Ahora bien, losvalores singulares de una matriz son los elementos de la diagonal de la matriz S queresulta de descomponer la matriz original en un producto de tres matrices tal que:

Page 66: Economia Matematica en Matlab-Gomez Norma

50 GEDEM - Versión Preliminar

−10

−5

0

5

10

15

05

1015

2025

30

−1

0

1

2

3

4

x

P

P1

P2

y

z

Figura 2.2: Distancia entre P1 y P2

A = U ∗ S ∗ V T

Por medio de la siguiente sintaxis se obtienen las tres matrices:

[U,S,V]=svd(A)

El comando svd calcula la descomposición por valores singulares de la matriz A. Esdecir que es equivalente calcular la norma de la matriz o calcular el máximo de ladescomposición de A.7

Dirección de un vector

La dirección de un vector está determinada por el ángulo entre el segmento de rectaque parte del origen (vector) y un eje del espacio en el que éste se encuentra. En<2, la dirección es el ángulo entre el segmento de recta y el eje x positivo8. De estamanera, para un vector l = [a, b] con a 6= 0, la dirección se calcula de la forma9:

7En otras palabras se cumple que: norm(A)=max(svd(A))8No obstante, para vectores en <3 y <n con n > 3, surge el problema de especicar con respecto

a qué eje está determinado el ángulo. Por esta razón, generalmente se calcula la dirección sólo paravectores en <2

9Si a = 0,la dirección del vector depende del signo de b; cuando b > 0, la dirección es de 90o ycuando b < 0 es de 270o

Page 67: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 51

tan θ =b

a⇒ θ = tan−1 b

a(2.6)

Es posible calcular la dirección utilizando la función atan que corresponde a la inversade la tangente, es así como para determinar la dirección del vector l se utiliza lasintaxis atan(a

b ), cuyo resultado es un ángulo denido en radianes.

Veamos, por ejemplo, la dirección que corresponde al vector u = (7,−5). Así, intro-ducimos en MATLABrla sintaxis para encontrar la magnitud del ángulo:

c=atan(-5/7)

La dirección del vector u es, c=-0.6202 radianes lo que corresponde a: 324.46grados,como se observa en la Figura 2.3.

2

4

6

8

10

30

210

60

240

90

270

120

300

150

330

180 0

324.46°

Figura 2.3: La dirección del vector u = (7,−5)

2.2.2. Operaciones entre Vectores

Como los vectores son tipos particulares de matrices, a ellos aplican también susoperaciones (ver Cuadro 2.4), siempre y cuando su tamaño lo permita. A continuaciónveremos aquellas operaciones propias de los vectores: el producto escalar y el productocruz, así como algunas relaciones entre vectores que utilizan estas operaciones comoson el ángulo entre dos vectores, la proyección de un vector, el calculo de la matrizortogonal y las matrices creadas a partir de vectores.

Page 68: Economia Matematica en Matlab-Gomez Norma

52 GEDEM - Versión Preliminar

Producto Escalar

Dados dos vectores ~a = (a1, a2, ..., an) y ~b = (b1, b2, ..., bn) en <n, el producto esca-lar10 a ¦ b es igual a:

a ¦ b = a1 ∗ b1 + a2 ∗ b2 + .... + an ∗ bn (2.7)

Para calcular el producto escalar entre dos vectores en MATLABr, existe la rutinadot, cuya sintaxis es c=dot(a,b) (donde a y b son vectores del mismo tamaño).El resultado del comando, si los vectores son vectores la, es equivalente a a’*b, yes igual a b’*a si ambos son vectores columna.

Producto Cruz

Dados dos vectores ~a = (a1, a2, a3) y ~b = (b1, b2, b3) en <3, el producto cruz oproducto vectorial entre ~a y ~b es el vector a× b perpendicular a ambos vectores queesta denido por:

a× b = (a2 ∗ b3 − a3 ∗ b2, a3 ∗ b1 − a1 ∗ b3, a1 ∗ b2 − a2 ∗ b1) (2.8)

Para calcular el producto cruz, MATLABrdispone del comando cross, cuya sinta-xis es c=cross(a,b) (donde a y b son vectores en tercera dimensión11).

Ejemplo 2.7. Determinemos el Producto Cruz de los vectores a y b en <3:

a = (6 8 9.7)b = (4 1.2 5)

Paso 1. Introducimos los vectores a y b:

a=[6;8;9.7], b=[4;1.2;5]

Paso 2. Invocamos el comando cross:

c=cross(a,b)

10Sólo es aplicable para dos vectores en la misma dimensión, es decir, con el mismo número decomponentes.

11MATLABrsólo calcula el producto cruz de vectores en <3.

Page 69: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 53

El resultado que muestra MATLABres el producto cruz entre los vectores a y b, queestá contenido en el vector c:

c = 28.3600

8.8000

-24.8000

0

10

20

02

46

8

−25

−18

−11

−4

3

10

b

y

c

a

x

z

Figura 2.4: Producto cruz entre a y b

En la Figura 2.4 observamos los vectores a, b y vemos como el producto cruz quecalculamos, c, es perpendicular tanto a a como a b.

Ángulo entre dos vectores

Dados dos vectores no nulos e y l, el ángulo θ entre ellos esta determinado por:

cos θ =~l ¦ ~e

‖ ~l ‖‖ ~e ‖⇒ θ = cos−1

~l ¦ ~e‖ ~l ‖‖ ~e ‖

(2.9)

Para calcular el ángulo en MATLABr, invocamos los comandos relacionados con lanorma y el producto escalar, junto con la función trigonométrica inversa del coseno(acos) de la forma:

acos(dot(l,e)/((norm(l)*norm(e))))

Page 70: Economia Matematica en Matlab-Gomez Norma

54 GEDEM - Versión Preliminar

Recordemos que podemos clasicar los vectores de acuerdo al ángulo entre ellos: esasí como, dos vectores a y b son paralelos si el ángulo entre ellos es 0 o 180 grados 12;y, segundo, dos vectores a y b son perpendiculares u ortogonales si el ángulo entreellos es de 90o, es decir, cuando a ¦ b = 0. Si alguno de los vectores es nulo el ánguloentre ellos es Π

2 radianes.

Proyección

Dados dos vectores a y b, la proyección de a sobre b está determinada por:

proyba =a ¦ b

‖ b ‖2 ∗ b (2.10)

de tal forma que proyba es un vector paralelo a b y el vector a− proyba es ortogonala b. Veamos en el siguiente ejemplo el cálculo de una proyección.

Ejemplo 2.8. Dados los vectores v = (1, 1) y u = (1, 2), encontrar proyba

Paso 1. Introducimos los vectores en MATLABr:

v=[1;1], u=[1;2]

Paso 2. Invocamos los comandos de producto escalar y norma:

proy=(dot(u,v)/((norm(v))^2))*v

La salida de MATLABrmuestra la proyección de v sobre u,

proy= 1.5000 1.5000

Esta respuesta es grácamente visible en la Figura 2.5 en la cual vemos como secumplen las dos condiciones entre los vectores y la proyección.

2.2.3. Matrices y Vectores

Utilizando los conceptos y herramientas computacionales que hemos trabajado hastael momento es posible presentar dos conceptos que se constituyen como corolariosdel análisis de matrices y vectores como son los de Matrices Ortogonales y ProductoCartesiano.

12Es decir, si a 6= 0 entonces b = α ∗ a para alguna constante α

Page 71: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 55

−0.5 0 0.5 1 1.5 2

−0.5

0

0.5

1

1.5

2

X

Y Diferencia entre uy la proyeccion

Ortogonalidad entre v yu menos la proyeccion

Proyección de (u) en (v)

Vector vVector uProyección

Figura 2.5: Proyección de a sobre b

Matrices Ortogonales

Una matriz A se dice ortogonal si es invertible y AT = A−1 (es decir, AT A = I,donde I es la matriz identidad). Las matrices ortogonales tienen una característicamuy particular, sus columnas son vectores que constituyen una base ortonormal.En otras palabras, dada la matriz Qn×n = [aij ] y la matriz QT = [aji], el productoescalar bij = a1ia1j +a2ia2j +...+anianj cumple con dos condiciones: primero, bij = 0si y sólo si i 6= j; y, segundo, bij = 1 únicamente si i = j.

MATLABrcontiene una rutina que, mediante el proceso de Gram-Schmidt13, cons-truye matrices ortogonales a partir de otras matrices del mismo tamaño. En general,Q=orth(A) recibe como input una matriz cuadrada A y entrega como resultadoQ, matriz cuyas columnas son vectores que forman una base ortonormal para A, elnúmero de sus columnas es igual al rango de A tal que QT Q = I.

Ejemplo 2.9. Encontremos cuál es la matriz ortogonal de A:

A =

−5 7 48 6 −39 0 1

Introducimos la matriz A y luego invocamos el código orth:13Ver (Grossman 1996).

Page 72: Economia Matematica en Matlab-Gomez Norma

56 GEDEM - Versión Preliminar

A=[-5 7 4;8 6 -3;9 0 -1]

M=orth(A)

M es, entonces, la matriz ortogonal a A:

M =

-0.3884 0.8375 -0.3844

0.6588 0.5441 0.5196

0.6443 -0.0515 -0.7631

Veamos si M es una matriz ortogonal. Extraigamos sus vectores columna:

s=M(:,1)

d=M(:,2)

f=M(:,3)

Ahora, veamos si los productos escalares cumplen con las características de una baseortogonal:

y=dot(s,s)

y=

1.0000

u=dot(s,d)

u=

1.3878e-016

i=dot(d,d)

i=

1.0000

p=dot(d,f)

p=

2.4286e-016

Page 73: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 57

Recordemos que los números u=1.3878e-016 y p=2.4286e-016 están expresadosen notación cientíca y son muy cercanos a cero, comprobándose que el productoescalar entre las columnas de A es cero y el producto escalar de cada una de lascolumnas por ellas mismas es igual a uno: M es, por tanto, una matriz ortogonal.Los demás resultados deben vericarse.

Matrices creadas a partir de Vectores

El producto cartesiano es una operación que sirve para obtener todas las combina-ciones posibles entre todos los elementos de dos o más vectores. En MATLABr,para obtener el producto cartesiano entre vectores o matrices utilizamos el códigomeshgrid14. La sintaxis general del comando es:

[X,Y]=meshgrid(x,y)

donde x y y son dos vectores o matrices previamente denidos. Así, meshgridreplica el vector x n veces, donde n es el número de componentes del vector x, cons-truyendo una matriz cuadrada X. De manera similar (pero con el vector y traspuesto)se construye la matriz Y.

Consideremos por ejemplo los vectores x = (1, 2, 3) y y = (4, 5, 6). Aplicandomeshgrid de la forma [X,Y]=meshgrid(x,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 decomponentes.

El comando meshgrid únicamente sirve para generar matrices a partir de tres vec-tores (por ejemplo: [X,Y,Z]=meshgrid(x,y,z)). MATLABr permite generar

14Este comando sirve sólo para vectores en <3.

Page 74: Economia Matematica en Matlab-Gomez Norma

58 GEDEM - Versión Preliminar

Figura 2.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, elcual utilza la misma sintaxis que el comando meshgrid, por ejemplo:

[V,W,X,Y,Z]=ngrid(v,w,x,y,z)

La operación que realiza meshgrid es útil principalmente para hallar el productocartesiano de dos vectores, necesario al gracar funciones en 3 dimensiones. El usodel comando es extensible al cálculo del producto cartesiano de tres vectores, en cuyocaso el resultado son hipermatrices. Sin embargo, el comando tiene restricciones paramás de tres dimensiones.

2.3. Rectas y PlanosUn sistema de ecuaciones como lo veremos más adelante, puede ser solucionado dedistintas formas,en esta sección vamos a presentar la idea que yace tras el conceptode sistema de ecuaciones. En dos dimensiones (es decir, ecuaciones de dos variables),cada ecuación representa una recta; en tres dimensiones, cada una constituye unplano y, en general, para n dimensiones, cada ecuación es un hiperplano en <n paratodo n > 3. Por lo tanto, si existe solución al sistema, diremos que las rectas o losplanos se intersecan, si no existe solución es porque no existe un punto de corte; y,cuando una de las rectas o los planos es paralelo a otro, existen innitas soluciones.Esto es evidente en la Figura 2.6 para cada uno de los casos.

En esta sección estudiaremos con detalle los métodos computacionales usados para elanálisis de rectas y planos. Aunque no existen comandos especícos para su estudio,MATLABrfacilita el cálculo de algunos pasos intermedios, simplicando su método

Page 75: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 59

sustancialmente.

2.3.1. Rectas

Una recta es una sucesión innita de puntos en un espacio. Para establecer la ecuaciónde una recta en dos dimensiones necesitamos de un punto y la pendiente de la líneao, en ausencia de la pendiente, de dos puntos. En tres dimensiones, no obstante, parahallar la ecuación de la recta el concepto de pendiente se hace inútil y precisamos deun vector que describa una dirección denida de la recta.

Consideremos la Figura 2.7. Supongamos una recta r en n dimensiones que pasa porlos puntos P0 = (a, b, c, ..., n) y P = (x, y, z, ..., m). El vector que pasa por estos dospuntos ~P0P = (x − a, y − b, z − c, ..., m − n) es paralelo al vector diferente de cero~v = (d, e, f, ..., l), es decir, existe un escalar t (t ∈ <) tal que

~P0P = tv (2.11)

Y, como observamos en la Figura 2.7,

~P = ~P0 + ~P0P (2.12)

P0

P P

0P

tv

P0

P

x

y

Figura 2.7: Una recta en tercera dimensión

Introduciendo la ecuación 2.11 en la ecuación 2.12, obtenemos:

Page 76: Economia Matematica en Matlab-Gomez Norma

60 GEDEM - Versión Preliminar

~P = ~P0 + tv

Que es, simplemente:

a

b

c...n

+ t

d

e

f...l

=

x

y

z...m

(2.13)

Estas son las ecuaciones paramétricas de la recta r, donde t (t ∈ <) nos indica quétanto se necesita para pasar de P0 a P y el vector ~v, que muestra la dirección de lalínea, es conocido como vector director de una recta. Vale la pena resaltar que existentantas ecuaciones de una recta como puntos hay sobre ella, dado que P0 puede tomarcualquier valor dentro de la misma recta.

Ahora bien, al resolver el sistema matricial de la ecuación 2.13, tenemos tres ecua-ciones:

a + td = x

b + te = y

c + tf = z

Al despejar t de cada una de las ecuaciones, el resultado es:

t =x− a

dt =

y − b

et =

z − c

fComo t es igual en cada uno de los casos, igualamos las tres ecuaciones:

x− a

d=

y − b

e=

z − c

f(2.14)

Esta representación de la recta en la ecuación 2.14 se llama ecuación simétrica ocartesiana. Aunque cambia la forma de la ecuación, siguen apareciendo los mismoscomponentes necesarios para la construcción de una recta: el vector posición ~P0 =(a, b, c) y el vector director ~v = (d, e, f), no obstante, ha desaparecido el parametrot de la ecuación.

Ejemplo 2.10. Encontrar la ecuación paramétrica de la recta que pasa por lospuntos P0 = (−5, 6, 8, 7) y P1 = (9,−2, 0,−2).

Paso 1. Introducimos los puntos P0 y P1 como si fueran vectores:

Page 77: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 61

p0=[-5,6,8,7];

p1=[9,-2,0,-2];

Paso 2. Encontramos el vector director de la recta P0P1

p0p1=p1-p0

p0p1=

14 -8 -8 -9

Como P0P1 es el vector director de la recta, denimos la ecuación de la recta de laforma:

x = −5 + 14t y = 6− 8t z = 8− 8t w = 7− 9t

Dado que P0 es un punto que pertenece a la recta.

2.3.2. Planos

Un plano es un área en la que, si una recta pasa por dos de sus puntos, está incluidadentro de ella. Grossman (Grossman 1996) aporta una denición más detallada: seaP un punto en el espacio y n un vector diferente de cero. Entonces el conjunto detodos los puntos Q para los que ~PQ ·n = 0 constituye un plano en tercera dimensión.

Un rasgo fundamental del plano es que debe estar en tres dimensiones: áreas en másde tres dimensiones son hiperplanos. La forma más común de hallar la ecuación delplano es determinar un vector diferente de cero y perpendicular al plano, conocidocomo normal y correspondiente a n en la denición de Grossman. En la Figura ??observamos qué es grácamente el vector normal.

En la Figura 2.8 vemos al punto P0 = (a, b, c) y a un punto cualquiera P = (x, y, z).El vector que une estos dos puntos ~P0P = (x − a, y − b, z − c) es perpendicular alvector normal ~n = (d, e, f), es decir:

n · ~P0P = 0 (2.15)

reemplazando ~P0P y ~n en la ecuación 2.15, tenemos:

d(x− a) + e(y − b) + f(z − c) = 0 (2.16)

De la ecuación 2.16 se desprende la forma:

Page 78: Economia Matematica en Matlab-Gomez Norma

62 GEDEM - Versión Preliminar

z

y

x

P

P0

~n

Figura 2.8: El vector ~n es perpendicular a todos los puntos del plano.

dx + ey + fz = g (2.17)

Donde g = ad + be + cf . La ecuación 2.17 se llama la ecuación cartesiana de unplano.

Ejemplo 2.11. Determinar la ecuación del plano que pasa por los puntos P0 =(−4,−1,−1), P1 = (−2, 0, 1) y P2 = (−1,−2,−4)

Paso 1. Introducimos los puntos en MATLABrcomo si fueran vectores:

p0=[-4,-1,-1]

p1=[-2,0,1]

p2=[-1,-2,-4]

Paso 2. Hallamos los vectores que pasan por los puntos P0, P1 y P2:

p0p1=p1-p0

p0p1=

[2,1,2]

Page 79: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 63

p0p2=p2-p0

p0p2=

[3,-1,-3]

Paso 3. Hallar el producto cruz entre ~P0P1 y ~P0P2, cuya respuesta es el vectornormal al plano:

c=cross(p0p1,p0p2)

c=

-1 12 -5

Paso 4. Usando el punto ~P = (x, y, z) obtenemos el vector ~P2P que está incluidoen el plano:

~P2P = (x + 1, y + 2, z + 4)

Paso 5. Introducimos el vector normal y el vector contenido en el plano en la ecua-ción cartesiana

(x + 1, y + 2, z + 4) · (−1, 12,−5) = 0

La ecuación cartesiana de este plano es x−12y+5z = 3. Cabe resaltar que, si existendos planos paralelos, entonces sus vectores normales son paralelos. En otras palabras,el producto cruz entre los dos vectores tiene como resultado cero.

2.3.3. Distancia entre un punto y un plano

Para encontrar la distancia D entre un punto P = (a, b, c) y el plano dx+ey+fz+g =0 tenemos la siguiente fórmula:

D =|ad + be + cf + g|√

d2 + e2 + f2(2.18)

Veamos en el siguiente ejemplo cómo hallar computacionalmente la distancia entreun punto y un plano.

Page 80: Economia Matematica en Matlab-Gomez Norma

64 GEDEM - Versión Preliminar

Ejemplo 2.12. Hallemos la distancia entre el punto (-8,1,3) y el plano3x− 7y + 4z + 1 = 0

Paso 1. 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. Ahora, determinamos el valor del denominador de la ecuación 2.18:

m=sqrt(3^2+(-7)^2+4^2)

Paso 3. Finalmente, 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 ad: 2.0925.

2.4. Valores y Vectores PropiosCuando solucionamos un sistema de ecuaciones de la forma Ax = b con única solu-ción la transformación lineal de un vector x asigna una imagen a cada uno de suscomponentes. Sin embargo, algunas veces sólo conocemos la matriz y, para entenderel comportamiento de las variables que ésta representa, es necesario encontrar el vec-tor que la generó o uno paralelo a él. Para hallarlo, establecemos una operación que,a partir de una matriz A de n× n, nos permite determinar el vector ~m mediante unescalar λ, tal que λ es real o complejo que cumpla con la siguiente característica:

A~m = λ~m (2.19)

Para garantizar que ~m 6= ~0, la solución de15 A− λI nunca debe ser trivial (es decir,~m = ~0). Por tanto, la matriz generada al operar (A − λI) debe ser singular o, enotras palabras, su determinante debe ser igual a cero.

Esta condición es conocida como la ecuación característica, y el polinomio que segenera a partir de ella es el polinomio característico, denotado p(λ).

15La ecuación (A− λI), donde I es la matriz identidad, resulta de despejar ~m de la ecuación.

Page 81: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 65

p(λ) = det(A− λI) = 0 (2.20)Las raíces de p(λ) son los valores propios asociados a A. Es a partir de ellos queencontramos el vector ~m, conocido también como el vector propio relativo a λ.

MATLABrcalcula valores propios y un vector propio asociado a cada valor pormedio del comando eig, cuya sintaxis es [V,L]=eig(A). Este comando recibe lamatriz cuadrada con las transformaciones lineales y calculalas matrices L (una matrizdiagonal con los valores propios) y V (una matriz cuyas columnas son los vectorespropios correspondientes), tal que A*V=V*L. Observemos cómo trabaja la rutina conel siguiente ejemplo:

Ejemplo 2.13. Calculemos los vectores propios de la matriz

A =

1 −1 43 2 −12 1 −1

Paso 1. Introducimos el input del comando: la matriz A:A=[1 -1 4;3 2 -1;2 1 -1];

Paso 2. Teniendo ya el input, invocamos eig para hallar los valores y vectorespropios:[V,L]=eig(A)

Así, el resultado de MATLABres claro: L es la matriz de valores propios ylas columnas de V son sus correspondientes vectores propios, tal que V y Lcumplen, en efecto, la propiedad que A*V=V*L.

V = 0.4082 0.5774 0.2357

0.8165 -0.5774 -0.9428

0.4082 -0.5774 -0.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)), esta correspondea un vector que contiene únicamente los valores propios de la matriz (matriz L).

Page 82: Economia Matematica en Matlab-Gomez Norma

66 GEDEM - Versión Preliminar

Ejercicios

1. Una empresa se especializa en la producción de cinco artículos. La informaciónque describe las unidades vendidas en diferentes meses del año, la utilidad porunidad vendida y el valor del impuesto por cada uno de los productos son lossiguientes:

Producto 1 Producto 2 Producto 3 Producto 4 Producto 5Utilidad 22 28 15 20 12

Impuestos 2 8 1 0.5 2Enero 4 5 8 3 9

Febrero 9 8 2 2 6Marzo 1 2 2 1 9Abril 8 4 1 8 2Mayo 8 8 9 5 2Junio 10 21 9 11 6

Usando multiplicación de matrices, encuentre una matriz 6 × 2 que contengaen su primera columna la utilidad total y en la segunda columna los impuestostotales durante cada uno de los meses.

2. Analice las propiedades de la matriz B (Ver cuadro 2.5) y con cada par de ma-trices aplique las operaciones de suma, resta, multiplicación, división izquierda,derecha y potenciación.

a) A =

4 5 6−1 2 30 1 2

B =

−2 6 −59 0 −38 −4 2−6 12 7

b) A =

[10 3 −9 52 −6 4 −3

]B =

1 −2 34 5 6−2 6 7

c) A =

16 16 5 15 20 318 1 27 27 20 115 18 20 1 1 27

B =

−3 −3 −40 1 14 3 4

3. A partir de la hipermatriz A del ejemplo 2.2, genere en MATLABrtodas lasposibles matrices de tamaño 2× 2.

Page 83: Economia Matematica en Matlab-Gomez Norma

MATRICES Y VECTORES 67

4. Halle la norma y dena las características de cada par de vectores; halle elángulo entre ellos y calcule proyvu y proyuv

a) u = (3, 2) v = (35 , 2

5)

b) u = (3, 5, 6) v = (4, 3, 2)

c) u = (√

2, 3, 5) v = ( 3√

2, 55, 0)

5. Con la matriz L =

(2 85 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. Traspon-ga si es necesario.

d) ¾Qué se puede deducir de los puntos anteriores?

6. Sean u = (3,−1, 2) y v = (4, 2, x). ¾Para qué valor de x ∈ Z+ se cumple que u

y v sean ortogonales?.

7. Encuentre la distancia entre el punto (2, 3,−1) y el plano x + y + z = 5.

8. Encuentre la ecuación paramétrica de la recta que pasa por los puntos P (−1,−2, 3)y Q = (0, 2, 8).

9. Halle los valores y vectores propios de la matriz

C =

3 2 −2−3 −1 31 2 0

A partir del resultado determine si ésta matriz es Denida Positiva, Negativao Indenida. (Ver Mora (2001, pág. 38)).

10. Genere una matriz aleatoria de distribución uniforme y una matriz cuyas lasy columnas sumen todas lo mismo, y con cada una:

a) Halle su polinomio característico a través de operaciones con matrices yvectores en MATLABr.

b) Halle también los valores y vectores propios a través de operaciones ycontrástelos luego con los resultados que da eig.

Page 84: Economia Matematica en Matlab-Gomez Norma

68 GEDEM - Versión Preliminar

Page 85: Economia Matematica en Matlab-Gomez Norma

Capítulo 3

Sistemas de EcuacionesNorma Gómez, Eduardo Sánchez

Las relaciones entre diferentes variables que interactúan en un problema puedenrepresentarse en forma de ecuaciones y, en muchos casos para estas ecuaciones, esnecesario encontrar valores de x1, x2, ..., xn tales que resuelvan:

a11x1 + a12x2 + ... + a1nxn = b1

a21x1 + a22x2 + ... + a2nxn = b2

... ... ... =...

am1x1 + am2x2 + ... + amnxn = bm

(3.1)

Este conjunto de ecuaciones, llamado sistema de ecuaciones lineales, se puede expre-sar de forma matricial así:

a11 a12 ... a1n

a21 a22 ... a2n

... ... . . . ...am1 am2 ... amn

x1

x2

...xn

=

b1

b2

...bm

(3.2)

o, de manera equivalente:

A~x = ~b (3.3)

donde A es la matriz de coecientes (las constantes que acompañan a las incógnitasdel sistema), ~x es el vector de variables, y ~b el vector de resultados. La solución alsistema, conocida como vector solución, es un vector columna que contiene los valoresde las incógnitas que satisfacen todas las ecuaciones1.

1En el Capítulo 2 sección 2.3, vimos grácamente que, cada una de las ecuaciones del sistema

69

Page 86: Economia Matematica en Matlab-Gomez Norma

70 GEDEM - Versión Preliminar

Al resolver un sistema de ecuaciones lineales existen dos casos: primero, los sistemasde ecuaciones denidos, en donde existe sólo un punto de corte, es decir, una úni-ca solución; y segundo, los sistemas singulares, que pueden tener innitos puntos deintersección, es decir innitas soluciones, o pueden no tener ningún punto de intersec-ción, caso en el que no existe solución. Por otra parte, los sistemas normales denidoscuyo punto de intersección es el origen, se conocen como sistemas homogéneos.

El objetivo de este capítulo es presentar las herramientas computacionales que proveeMATLABr, para solucionar problemas económicos expresados en forma de sistemasde ecuaciones lineales, basados en los principios del algebra lineal. Estudiaremos doscriterios de solución: de un lado, los métodos directos o analíticos, fundamentadosen las operaciones básicas con matrices, que brindan resultados exactos con calculosnitos y que pueden ser utilizados sólo si la matriz de coecientes es invertible.

Por otro lado, están los métodos indirectos (también llamados iterativos o numéri-cos), que generan una secuencia de aproximaciones a la respuesta del sistema 3.1,después de repetir cierto tipo de operaciones previamente establecidas.

3.1. Métodos Directos o Analíticos3.1.1. Eliminación Gauss-Jordan

Este método, soluciona el sistema 3.1 utilizando la matriz ampliada, denida comoM = [A ~b]:

M =

a11 a12 ... a1n b1

a21 a22 ... a2n b2

... ... . . . ... ...am1 am2 ... amn bm

(3.4)

Al llevar la matriz ampliada M a una forma escalonada reducida 2, es posible en-contrar la solución al sistema 3.2 por medio de un procedimiento de operacionesaritméticas ordenadas entre las. MATLABraplica este método con el comandorref, cuya sintaxis es rref(M), donde M es la matriz ampliada. Además, existe el3.1 representa una recta si ~x ∈ <2, un plano si ~x ∈ <3 o un hiperplano si ~x ∈ <n, y su solución, siexiste, es la intersección entre ellos (según el caso).

2Llevar una matriz a la forma escalonada reducida signica, transformar una matriz no cuadradaen una aproximación de la matriz identidad

Page 87: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DE ECUACIONES 71

comando rrefmovie que muestra paso a paso la reducción de la matriz ampliadaa su forma reducida. La sintaxis de este comando es rrefmovie(M).

Ejemplo 3.1. Solucionemos el siguiente sistema de ecuaciones:

x + 2y = 8

2x + y = 1

Paso 1. Introducimos la matriz de coecientes A1 y el vector de resultados b1 delsistema y, luego, construimos la matriz ampliada M1.

A1=[1 2;2 1]

b1=[8;1]

M1=[A1 b1]

Paso 2. Utilizamos rref:S1=rref(M1)

De acuerdo a la respuesta de MATLABr, la única solución al sistema esS1, es decir, x = −2 y y = 5.

S1 =

1 0 -20 1 5

Ejemplo 3.2. Solucionemos el siguiente sistema de ecuaciones singulares:

2x + y − z = 2

3x + 2y + 4z = 8

5x + 4y + 14z = 20

Paso 1. Introducimos la matriz de coecientes A2 y el vector de resultados b2 delsistema y, luego, construimos la matriz ampliada M2.

A2=[2 1 -1;3 2 4;5 4 14]

b2=[2;8;20]

M2=[A2 b2]

Page 88: Economia Matematica en Matlab-Gomez Norma

72 GEDEM - Versión Preliminar

Paso 2. Utilizamos rref:

S2=rref(M2)

Con el resultado de MATLABr, podemos armar que el sistema tiene innitassoluciones denidas por x− 6z = −4 y y + 11z = 10:

S2 =

1 0 -6 -40 1 11 100 0 0 0

Ejemplo 3.3. Resolvamos el siguiente sistema de ecuaciones singulares:

x + y + 2z = 9

3x− 2y + 7z = 20

2x + 7y + 3z = 27

Paso 1. Introducimos la matriz de coecientes A3 y el vector de resultados b3 delsistema y, luego, construimos la matriz ampliada M3.

A3=[1 1 2;3 -2 7;2 7 3]

b3=[9;20;27]

M3=[A3 b3]

Paso 2. Utilizamos rref:

S3=rref(M3)

El resultado deMATLABrno es coherente dado que la última la indica que la sumade todas las variables multiplicadas por cero es 1; por esta razsn, podemos concluirque este sistema no tiene solución:

S3 =

1 0 2.2 00 1 -0.2 00 0 0 1

Page 89: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DE ECUACIONES 73

Ejemplo 3.4. Solucionemos el siguiente sistema homogéneo:

x + 3y − z = 0

y − 8z = 0

4z = 0

Paso 1. Introducimos la matriz de coecientes A4 y el vector de resultados b4 delsistema, y luego construimos la matriz ampliada M4:

A4=[1 3 -1;0 1 -8;0 0 4]

b4=[0;0;0]

M4=[A4 b4]

Paso 2. Utilizamos rref:

S4=rref(M4)

La solución al sistema es x = y = z = 0, recordemos que en los sistemas homogéneossolo hay dos posibles alternativas: la solución trivial, en la cual todas las variablesson cero, o existen innitas soluciones:

S4 =

1 0 0 00 1 0 00 0 1 0

3.1.2. Método de la Inversa

Este método utiliza la inversa de la matriz de coecientes A y el vector de resultadosb de un sistema Ax = b, equivalente al sistema 3.2, con el objetivo de encontrar elvector solución x que satisface el sistema, resolviendo la operación:

x = A−1b (3.5)

No obstante, si la matriz es muy grande o dispersa, encontrar su inversa de formaanalítica puede llegar a ser un proceso muy complejo. MATLABrpermite calcularla inversa mediante el comando inv, cuya sintaxis es C=inv(A).

Page 90: Economia Matematica en Matlab-Gomez Norma

74 GEDEM - Versión Preliminar

Conociendo entonces la inversa de la matriz, la solución del sistema Ax = b estádada por:

x = Cb (3.6)

Ejemplo 3.5. Solucionemos el siguiente sistema de ecuaciones por el método de lainversa:

x + y + 2z = 6

3x + 2y + z = 3

4x + 2y + z = 2

Paso 1. Introducimos la matriz de coecientes y el vector de resultados correspon-diente al sistema:

A1=[1 1 2;3 2 1;4 2 1 ]

b=[6;3;2]

Paso 2. Hallamos la inversa de la matriz de coecientes:

C=inv(A1)

Paso 3. Establecemos la sintaxis para solucionar el sistema a partir de la inversa:

x=C*b

La solución al sistema de ecuaciones es:

x =

-11.66672.6667

3.1.3. Regla de Cramer

La regla de Cramer usa el determinante de la matriz de coecientes para llegar a lasolución del sistema 3.1. MATLABrcalcula el determinante a través del comandodet. La sintaxis del comando es a=det(A).

El desarrollo de la regla de Cramer parte de la matriz de coecientes y el vectorde resultados: el procedimiento consiste en reemplazar el vector de resultados en las

Page 91: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DE ECUACIONES 75

columnas de la matriz de coecientes formando matrices transformadas y calculandolos determinantes de cada una de ellas. La solución al problema se obtiene al dividirlos determinantes de las matrices transformadas sobre el determinnte de la matrizde coecientes así:

x =

b1 a12 ... a1n

b2 a22 ... a2n

. . ... .

bm am2 ... amn

a11 a12 ... a1n

a21 a22 ... a2n

. . ... .

am1 am2 ... amn

, y =

a11 b1 ... a1n

a21 b2 ... a2n

. . ... .

am1 bm ... amn

a11 a12 ... a1n

a21 a22 ... a2n

. . ... .

am1 am2 ... amn

,..., n =

a11 a12 ... b1

a21 a22 ... b2

. . ... .

am1 am2 ... bm

a11 a12 ... a1n

a21 a22 ... a2n

. . ... .

am1 am2 ... amn

Ejemplo 3.6. Solucionemos el Ejemplo 3.5, ahora por la Regla de Cramer.

Paso 1. Introducimos la matriz de coecientes, calculamos su determinante y luego,introducimos el vector de resultados:

A=[1 1 2;3 2 1;4 2 1];

a=det(A)

b=[6;3;2];

Paso 2. Construimos las matrices trasformadas y calculamos su determinante:

A1=[b,A(:,2:3)];

dA1=det(A1)

A2=[A(:,1),b,A(:,3)];

dA2=det(A2)

A3=[A(:,1:2),b];

dA3=det(A3)

Paso 3. Calculamos el valor de x, 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.

Page 92: Economia Matematica en Matlab-Gomez Norma

76 GEDEM - Versión Preliminar

x=

-1

y=

1.6667

z=

2.6667

3.1.4. Factorización de Crout o LU

Existen métodos directos que descomponen la matriz de coecientes en otras matricesbuscando que, para llegar a la solución del sistema 3.2, sólo se hagan operacionesbásicas entre ellas. Existen dos procesos para llegar a estas matrices: el primero deellos es un método que permite descomponer una matriz de coecientes A de tamañon×m, en dos matrices invertibles: L (triangular inferior) y U (triangular superior) dela forma A = LU , conocido como factorización LU, donde L y U tienen las mismasdimensiones de A. De esta forma, para resolver el sistema 3.2 Ax = b, lo replanteamoscomo:

LUx = b (3.7)

Asimismo, denimos un vector y = Ux de forma que:

Ly = b (3.8)

Solucionar el sistema 3.8, dado que la matriz L es triangular inferior, equivale arealizar un proceso de sustitución hacia atrás, si reemplazamos la ecuación 3.8 en laecuación 3.7 obtenemos el sistema:

Ux = y (3.9)

cuya solución, por sustitución hacia atrás o mediante el método de la inversa, es:

x = U−1y (3.10)

MATLABrproporciona un comando que encuentra las matrices pertinentes a lafactorización LU. La sintaxis de esta rutina es [L,U]=lu(A), cuyo input es la

Page 93: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DE ECUACIONES 77

matriz de coecientes (A) y los resultados son una matriz triangular inferior y unamatriz triangular superior.

Las matrices L y U serán útiles para hallar los valores de los vectores x e y de las ecua-ciones 3.7 a 3.10. Veamos en el siguiente ejemplo cómo trabajar con la factorizaciónLU.

Ejemplo 3.7. Solucionemos el sistema del Ejemplo 3.5 por factorización LU:

Paso 1. Introducimos la matriz A y el vector b:

A=[1 1 2;3 2 1;4 2 1]

b=[6;3;2]

Paso 2. Introducimos la sintaxis del comando para la matriz A:

[L,U]=lu(A)

Paso 3. Hallamos el valor de y:

y=inv(L)*b

Paso 4. Hallamos el valor de x:

x=inv(U)*y

La respuesta de MATLABres L,U,y,x, siendo el vector x la única solución alsistema de ecuaciones:

L=

0.2500 1.0000 1.00000.7500 1.0000 01.0000 0 0

U=

4.0000 2.0000 1.00000 0.5000 0.25000 0 1.5000

y=

2.00001.5000

Page 94: Economia Matematica en Matlab-Gomez Norma

78 GEDEM - Versión Preliminar

4.0000

x=

-1.00001.66672.6667

3.1.5. Factorización de Cholesky

El segundo proceso para descomponer la matriz de coecientes corresponde a la fac-torización de Cholesky, que soluciona un sistema de ecuaciones lineales al encontraruna matriz triangular superior U tal que UUT = A 3. Esta matriz es conocida comoel factor de Cholesky o como la raíz cuadrada de A. Así, la factorización de Choleskypermite reexpresar el sistema Ax = b de la forma:

UT Ux = UT (Ux) = b (3.11)

Al resolver este sistema por sustitución hacia atrás, obtenemos:

UT y = b (3.12)

luego, por sustitución hacia atrás:

Ux = b (3.13)

Para solucionar un sistema de ecuaciones mediante la factorización de Cholesky,usamos el comando chol, cuya sintaxis es U=chol(A), similar a la factorizaciónLU porque, a partir de la matriz de coecientes, obtenemos la matriz U y resolvemoslas ecuaciomes 3.12 y 3.13.

Ejemplo 3.8. Solucionemos el siguiente sistema por Factorización de Cholesky

9x + 2y + 4z = 0

6x + 3y + 3z = 0

5x + 4z = 0

3Esta matriz debe ser simétrica y denida positiva para que el sistema tenga solución. En caso quela matriz no tenga esta característica recomendamos solucionar el sistema a través de la factorizaciónLU.

Page 95: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DE ECUACIONES 79

Paso 1. Introducimos la matriz A y el vector b que componen el sistema.

A=[9 2 4;6 3 3;5 0 4];

b=[0;0;0];

Paso 2. Calculamos el factor de Cholesky utilizando el comando chol:

U=chol(A)

Paso 3. Calculamos el vector y despejando de la ecuacisn 3.12:

y=inv(U’)*b

Paso 4. Reemplazamos el vector y en la ecuación 3.13 y despejamos el vector x:

x=inv(U)*y

El programa nos mostrará la matriz U, el vector y y x, el vector solución del sistema:

U=

3.0000 0.6667 1.33330 1.5986 1.32060 0 0.6916

y=

000

x=

000

3.2. Métodos Indirectos o NuméricosLos métodos indirectos o numéricos estan diseñados como una secuencia de opera-ciones que busca encontrar resultados aproximados a la solución de un sistema deecuaciones lineales. Estos métodos son especialmente buenos cuando los sistemas tie-nen un gran número de incógnitas y son difíciles de resolver, es decir, si la matriz decoecientes y el vector de resultados presentan características particulares.

Page 96: Economia Matematica en Matlab-Gomez Norma

80 GEDEM - Versión Preliminar

En general, en todos los procesos iterativos que se utilizan para resolver sistemas deecuaciones lineales de la forma Ax = b se utiliza una matriz Q, llamada matriz dedescomposición, escogida de tal forma que el problema original se pueda reescribircomo4:

Qx = (Q−A)x + b (3.14)

La ecuación 3.14 sugiere un proceso iterativo o regla de iteración que se expresacomo:

Qxk ⇐ (Q−A)x(k−1); k > 1

En esta regla de iteración, queremos encontrar una sucesión de vectores xk quesolucionen el sistema 3.14, a través de un proceso iterativo. En este proceso, esnecesario establecer un vector inicial de valores para x0, que puede ser arbitrariopero, por lo general, se toma como aproximación inicial la nula o, en otras palabras,aquella en la que x01 = x02 = ... = x0n = 0.

Nuestro objetivo es escoger una matriz Q de manera que se calcule fácilmente lasucesión xk y que, además, converja rápidamente a la solución. En todo métodoiterativo es importante especicar un criterio de convergencia δ, que permita llegara la solución más rapidamente, y un número máximo de iteraciones M . En este caso,dado que x es un vector, estableceremos dos criterios de convergencia que se deberánsatisfacer simultáneamente:

1.∣∣∣‖x(k)−x(k−1)‖

‖xk‖∣∣∣ ≤ δ

2.∣∣∣x

(k)m −x

(k−1)m

x(k)m

∣∣∣ ≤ δα , donde xm = Maxxi y α es un número determinado por el

investigador que, comúnmente, es mayor o igual a 10. La precisión es mayor encuanto α tenga valores más altos.

Nuestro objetivo es presentar dos métodos iterativos para solucionar sistemas deecuaciones lineales: Gauss-Jacobi y Gauss-Seidel.

3.2.1. Matrices Débilmente Condicionadas

En los procesos que veremos adelante existe un riesgo, relacionado con la existenciade sistemas de ecuaciones que presentan matrices de coecientes en las cuales una

4Este resultado se obtiene al sumar el término Qx a ambos lados de la expresión Ax = b.

Page 97: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DE ECUACIONES 81

pequeña variación de alguno de sus componentes, genera grandes cambios en el vec-tor solución, aunque tanto los ejercicios propuestos, como los ejercicios planteadosparten de matrices que no tienen esta característica, es de esperar que haya casosen los cuales la existencia de matrices débilmente condicionadas hagan que la uti-lización de métodos numéricos sea ineciente, en tales casos recomendamos utilizarel máximo nivel de precisión del computador, o plantear transformaciones sobre lamatriz original.

3.2.2. Gauss-Jacobi

El método de Gauss-Jacobi5, muy útil cuando A es dispersa, resuelve el sistemade ecuaciones de la forma Ax = b, sólo si la matriz de coecientes A es diagonaldominante6. Para hacerlo, utiliza una matriz de descomposición Q que debe serdiagonal7 y cuyos elementos corresponden a los de la diagonal principal de A. Laregla 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 laecuación 3.14. MATLABrdene un valor inicial arbitrario para el vector x, que seencuentra a una distancia δx del vector de variables que solucionan el sistema.

Como la regla de iteración esta determinada por la matriz de descomposición, ladistancia es entonces el cociente entre la ecuación lineal igualada a cero y la matrizde descomposición. Después, denimos el valor de x como la suma entre el valorinicial y la distancia encontrada, es decir, el programa va acercando el valor inicialde x a la solución del problema, utilizando una serie de operaciones repetidas que sevalen de la matriz de descomposición como parámetro de convergencia. El número deoperaciones está limitado por la rapidez a la que la norma del vector δx se acerque

5Para observar la deducción matemática del método y su regla de iteración, recomendamos verel apéndice de este capítulo.

6Una matriz diagonal dominante es aquella en la cual todos los elementos de la diagonal sonmayores al resto de los elementos de la matriz, es decir cumple:

|Aii| >nX

i=1i 6=j

|Aij |∀i

7Las matrices diagonales son aquellas que sólo tienen elementos diferentes de cero en su diagonalprincipal.

Page 98: Economia Matematica en Matlab-Gomez Norma

82 GEDEM - Versión Preliminar

a un número positivo, muy cercano a cero8.

El número de repeticiones puede ser establecido por el usuario y existen casos en don-de el número de iteraciones propuestas no son sucientes. Por ende, recomendamosutilizar un número de iteraciones alto, se recomiendan más de 1510.

Ejemplo 3.9. Solucionemos el siguiente sistema de ecuaciones normales, haciendola programación del método de Gauss-Jacobi:

2x + z = 5

x + 2y = 1.345

0.5y + 8z = 8.76

Paso 1. Denimos la matriz de coecientes A, el vector respuesta b, y un vectorsolución inicial para que el programa empiece a iterar a partir de él. En estecaso, utilizamos el vector nulo:

A=[2 0 1;1 2 0;0 0.5 8];

b=[5;1.345;8.76];

x=[0;0;0];

Paso 2. Creamos la matriz Q, a partir de la diagonal de la matriz de coecientes:Q=diag(A)

Paso 3. Establecemos la programación de las operaciones que realizará el programapara llegar a una solución. A partir del comando for, determinamos elnúmero de veces que debe repetirse el procedimiento, presentamos las ope-raciones a repetir y la condición para que MATLABrse detenga al llegar auna solución:

for it=1:1600

dx=(b-A*x)./Q

x=x+dx

if norm(dx)<tol,break,end

end

Aquí it=1:n determina el número de veces que se repite esta operación, que va de1 hasta n. En este ejemplo tomamos n = 1600, para saber cuál es el número de vecesque iteró el programa, digitamos it y luego enter.

8Que la norma del vector sea cero implica que todos los valores de δx son positivos y se aproximana cero, esto sugiere que se ha llegado a una solución en la cual b−Ax = 0.

Page 99: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DE ECUACIONES 83

tol es un número muy pequeño, cercano a cero, que sirve para establecer el nivel detolerancia de la solución o, en otras palabras, el valor máximo que puede tomar lanorma de δx. A tol se le puede asignar el valor que deseemos, no obstante, el máspequeño que el software reconoce es sqrt(eps), que equivale a la raíz cuadrada delvalor de punto otante del programa (es decir, el número más grande que sumado auno da uno).

En esta salida aparecen todas las operaciones que hace el programa antes de llegar auna solución. Si MATLABrno entrega la respuesta, bien puede necesitar un mayornúmero de iteraciones o bien, quizá, menos iteraciones de las ya establecidas. Paraeste ejemplo, la solución del sistema es entonces:

1.9432

-0.2991

1.1137

3.2.3. Gauss-Seidel

La iteración de Gauss-Seidel9 establece la matriz de descomposición Q como la partetriangular inferior de A incluyendo los elementos de la diagonal. La regla de iteraciónpara 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 dedescomposición no es la misma. Veamos en el siguiente ejemplo la diferencia entreeste y el método anterior:

Ejemplo 3.10. Solucionemos un sistema de ecuaciones cuya matriz de coecienteses diagonal dominante y dispersa:

x + z = 7

5x + 2y = 4

8z = 2

9Para observar la deducción matemática del método y su regla de iteración vea el apéndicematemático de este capítulo.

Page 100: Economia Matematica en Matlab-Gomez Norma

84 GEDEM - Versión Preliminar

Paso 1. Denimos la matriz de coecientes A y el vector de resultados b:

A=[1 0 0;5 2 0;0 0 8];

b=[7;4;2];

x=[0;0;0];

Paso 2. Creamos la matriz Q a partir de A, recordemos que Q debe ser triangularinferior:

Q=tril(A);

Paso 3. Especicamos el límite de tolerancia, el número de iteraciones y programa-mos las funciones del método, la regla de iteración y la condición para queel programa se detenga y entregue una solución:

tol=sqrt(eps);

n=1600;

for it=1:1600;

dx=Q\(b-A*x);x=x+dx

if norm(dx)<tol, break, end

end

El resultado de la operación, es decir la solución, es el vector x:

7.0000

-15.5000

0.2500

Ejercicios

1. Resuelva los Ejemplos 3.2 a 3.7 utilizando:

a) Factorización LU

b) ¾Es posible solucionar estos problemas utilizando Cholesky?

2. Solucione Ax = b donde:

Page 101: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DE ECUACIONES 85

A =

∣∣∣∣∣∣∣∣∣∣

27 7 −5.5 17 25 −2 17.5

−5.5 −2 27.5 111 17.5 11 47.5

∣∣∣∣∣∣∣∣∣∣

b =

∣∣∣∣∣∣∣∣∣∣

1111

∣∣∣∣∣∣∣∣∣∣

a) Utilizando descomposición LUb) Gauss-Seidelc) Gauss-Jacobi

¾Cuál procedimiento realiza más iteraciones?

3. La demanda por cierto producto está representada por medio de una funciónlineal de la forma:

Qd = 200− 5p (3.15)

De la misma forma es posible representar la oferta de este producto por mediode una función de la forma:

Qo = 100 + 5p (3.16)

Utilice un método directo y un método numérico para hallar el precio y lacantidad de equilibrio de mercado de este producto.

4. Considere el caso de una economía cuya oferta esta compuesta por cuatro rmasque ofrecen cantidades diferentes de cada mercancía y son precio-aceptantes. Larma 1 ofrece 83 unidades de la mercancía 3 y 19 unidades de la mercancía 4.La rma 2 ofrece 58 unidades de la mercancía 2, 30 unidades de la mercancía 3y 42 unidades de la mercancía 4. La rma 3 ofrece 43 unidades de la mercancía1 y 12 unidades de la mercancía 4. Por último, la rma 4 ofrece 48 unidadesde la mercancía 3 y 67 unidades de la mercancía 4. Cada rma debe alcanzaruna meta de ingresos especíca: 943, 786, 554, y 624 unidades monetarias,respectivamente. ¾Cuáles son los precios óptimos para que todas las rmasalcancen su meta de ingresos?

5. La economía de una ciudad posee dos sectores; el sector Z produce zanahoriay el sector A, acero. Para producir una unidad de zanahoria se necesita 30%de una unidad de zanahoria y 40% de una unidad de acero. Para producir

Page 102: Economia Matematica en Matlab-Gomez Norma

86 GEDEM - Versión Preliminar

una unidad de acero, se necesita 50% de una unidad de zanahoria y 30% deuna unidad de acero. Las demandas nales son 50 unidades de zanahoria y 80de acero. Represente esta situación como un ejemplo del Modelo de Leontiefy resuelva la ecuación de este modelo. ¾Cuáles son las cantidades de acero yzanahoria que hay que producir para satisfacer las demandas nales?

6. Considere el sistema de ecuaciones del ejemplo 3.3 y replantee el problema dela forma AT Ax = AT b. ¾A qué resultado llega?.Explique.

7. Una empresa desea ubicar uno de sus puntos de venta en una manzana ubicadaen una zona exclusiva de la ciudad, sin embargo, para ellos, sería mucho mejorsi escogen el local en la calle con mayor ujo vehicular. El modelo de víascon sus direcciones está indicado en la siguiente gura, en la cual se señala elnúmero de vehículos que circulan en una hora y pasan por las interseccionesA, B, C, y D.

Figura 3.1: Modelo de vías

Determine el ujo vehicular por hora sobre cada calle, es decir sobre x1, x2, x3

y x4, expresado como un sistema de ecuaciones lineales.

a) ¾Cuántas soluciones existen?, ¾Cuántas tienen sentido?.b) ¾Usted que calle escogería para ubicar el local? Explique.

8. Una empresa de alimentos elabora varios productos, los más importantes son:Helados, Ponqués, Pasteles de Pollo, Pasteles de Carne, Emparedados de Cor-dero y Emparedados de Pavo. Cada uno de estos productos debe pasar por

Page 103: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DE ECUACIONES 87

cada una de las seis etapas de producción de alimentos Compra a Proveedores,Almacenamiento, Elaboración, Prueba de Calidad, Empaque y Distribución.Una unidad de Helado requiere de 3, 5, 4, 3, 3 y 2 horas en cada etapa delproceso, una unidad de Ponqué requiere 4, 2, 4, 3, 4 y 5, una Unidad de Pastelde Pollo 4, 8, 2, 4, 2 y 4, una unidad de Pastel de Carne de 5, 4, 3, 2, 4 y 3,un Emparedado de Cordero 3, 2, 5, 2, 3 y 4 y un Emparedado de Pavo 2, 4,1, 2, 4, 8. ¾Cuántas unidades se pueden producir si, dadas las característicasde las empresa, se disponen de 2970 horas en Compra a Proveedores, 2950 enAlmacenamiento, 2990 en Elaboración, 2380 en Prueba de Calidad, 2350 enEmpaque y 2350 en Distribución.?

9. Los métodos iterativos presentados en este capítulo parten de una matriz dedescomposición. Siguiendo la presentación del método de Richardson en elapéndice:

a) Solucione uno de los sistemas de ecuaciones presentados en este capítulodescribiendo la programación de este método en un M-le.

b) ¾Cuántas iteraciones realizó su programa?

3.3. Apéndice

El uso de métodos iterativos para la solución de un sistema de ecuaciones linealesparte de la regla de iteración denida mediante la transformación del sistema Ax = b,evidente en la ecuación 3.14:

Qx = (Q−A)x + b

Esta regla cambia según la propiedad de cada método iterativo.

3.3.1. Gauss-Jacobi

En el método de iteración de Gauss-Jacobi, la ecuación 3.14 puede escribirse como:

Qxk = (Q−A)x(k−1) + b (3.17)

si denimos una matriz R = (Q−A), la ecuación 3.17 se reexpresa como:

Qxk = Rx(k−1) + b (3.18)

Page 104: Economia Matematica en Matlab-Gomez Norma

88 GEDEM - Versión Preliminar

El producto de la matriz Q por el vector columna x(k) es un vector columna, asimis-mo, el producto de la matriz R por el vector columna x(k−1) es también un vectorcolumna. La ecuación vectorial 3.18 se puede expresar mediante n ecuaciones es-calares (una para cada componente del vector), de modo que, para un elemento i

cualquiera, se cumple la siguiente expresión:

n∑

j=1

qijx(k)j = −

n∑

j=1

rijx(k−1)j + bi (3.19)

Si tenemos en cuenta que en la matriz Q todos los elementos fuera de la diagonalson cero, en el primer miembro el único término no nulo de la sumatoria es aquelque contiene el elemento diagonal qii, que es precisamente aii. Mas aún, debido aque los elementos de la diagonal de R son cero, podemos eliminar el término i = j

de la sumatoria del segundo miembro, lo que dejaría la ecuación 3.19 de la forma:

aiix(k)i =

n∑

j=1j 6=i

aijx(k−1)j + bi (3.20)

de donde, despejando xik, obtenemos:

xi(k) = (bi −

n∑

j=1j 6=i

aijx(k−1)j )/aii (3.21)

que es la expresión que nos proporciona las nuevas componentes del vector xk enfunción del vector anterior x(k−1) en la iteración de Jacobi. En resumen, el métodode Gauss-Jacobi se basa en reescribir el sistema de ecuaciones de la forma:

x1 = (b1 − a21x2 − a31x3 − ...− an1xn)/a11

x2 = (b2 − a12x1 − a32x3 − ...− an2xn)/a22

... =...

xn = (bn − a1nx1 − a2nx2 − ...− annxn)/ann

Partimos entonces de una aproximación inicial para las soluciones al sistema deecuaciones y sustituimos estos valores en la ecuación 3.19 para generar una nuevaaproximación a la solución del sistema que, bajo ciertas condiciones, es mejor quela aproximación inicial. Esta nueva aproximación se puede sustituir de nuevo en laparte derecha de la ecuación 3.19 y, de esta misma forma, reemplazar sucesivamentehasta que la solución converja.

Page 105: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DE ECUACIONES 89

3.3.2. Gauss-Seidel

Tal como en el caso anterior, denimos la matriz R = Q − A, de manera que laecuación 3.14 se reescribe de la forma:

Qxk = Rx(k−1) + b (3.22)

Donde un elemento cualquiera, i, del vector Qxk esta determinado por la ecuación:

n∑

j=1

aijx(k)j = −

n∑

j=1

aijx(k−1)j + bi (3.23)

Si tenemos en cuenta la composición de las matrices Q y R, todos los sumandos paralos que j > i en la parte izquierda de 3.23 son nulos, mientras que en la parte derechason nulos todos los sumandos para los que j < i. Planteamos entonces:

i∑

j=1

aijx(k)j = −

n∑

j=i+1

aijx(k−1)j + bi (3.24)

aiix(k)i +

i−1∑

j=1

aijx(k)j = −

n∑

j=i+1

aijx(k−1)j + bi (3.25)

de donde, despejando xik, obtenemos:

x(k)i = (bi −

i−1∑

j=1

aijx(k)j −

n∑

j=i+1

aijx(k−1)j )/aii (3.26)

Observemos que en el método de Gauss-Seidel los valores actualizados de xi sustitu-yen de inmediato a los valores anteriores, mientras que en el método de Jacobi todaslas componentes nuevas del vector se calculan antes de llevar a cabo la sustitución.En el método de Gauss-Seidel los cálculos deben llevarse a cabo en orden porque elnuevo valor xi depende de los valores actualizados de x1, x2, ..., xi−1.

3.3.3. Método de Richardson

Este procedimiento toma como matriz Q a la matriz identidad (I), de modo que laecuación 3.19 es ahora:

Ixk = (I −A)x(k−1) + b = x(k−1) + r(k−1) (3.27)

donde r(k−1) es el vector residual denido mediante r(k−1) = b−Ax(k−1). Replante-emos la ecuación 3.27:

Page 106: Economia Matematica en Matlab-Gomez Norma

90 GEDEM - Versión Preliminar

xk = x(k−1) −Ax(k−1) + b = x(k−1) + r(k−1) (3.28)

en esta ecuación, un elemento cualquiera del vector r(k−1) vendra dado por la expre-sión:

rix(k−1)i = bi −

n∑

i=1

aijx(k−1)j (3.29)

Page 107: Economia Matematica en Matlab-Gomez Norma

Parte II

CÁLCULO

91

Page 108: Economia Matematica en Matlab-Gomez Norma
Page 109: Economia Matematica en Matlab-Gomez Norma

Capítulo 4

FuncionesNorma Gómez, Norman Maldonado

En la primera parte del libro abarcamos los conceptos básicos de álgebra lineal y elplanteamiento computacional de estos en MATLABr, con el objetivo de aplicarlosa la solución de problemas económicos. El álgebra lineal permite construir espaciosvectoriales que cumplen con ciertas propiedades (cerradura bajo la suma y bajo lamultiplicación por escalar).

Una vez denido el espacio, sobre éste se pueden construir relaciones, que pueden serfunciones o correspondencias. Este capítulo junto con los dos siguientes tienen comoobjetivo utilizar herramientas computacionales para el análisis de funciones denidasen espacios vectoriales. En particular, en este capítulo se muestra la manera enque podemos utilizar MATLABrpara analizar grácamente las propiedades de unafunción, así como los cambios que se generan en ella cuando se modican parámetros.Sin embargo, no es posible realizar un análisis gráco cuando las funciones tienenmás de tres variables, por lo que es necesario utilizar el cálculo diferencial e integralpara estudiar las propiedades de cualquier función. Este último es el propósito de loscapítulos 5 y 6.

En general, algunas variables económicas pueden afectar el comportamiento de otras,y este tipo de relaciones se pueden representar mediante funciones, como por ejem-plo, la relación que tiene la acumulación de factores con el crecimiento económico.Por tanto, conocer los métodos para analizar una función y su planteamiento compu-tacional, es útil para abordar problemas económicos.

En la primera sección de este capítulo se estudia el concepto de función univariada,y la manera en que podemos gracarla en MATLABrpara analizar sus propiedades.

93

Page 110: Economia Matematica en Matlab-Gomez Norma

94 GEDEM - Versión Preliminar

Además, establecemos las herramientas que ofrece MATLABrpara añadir algunascaracterísticas adicionales al gráco de la función, tales como títulos, nombres de losejes, colores, entre otros.

En la segunda sección, realizamos el mismo análisis para funciones con dos variables,es decir, presentamos el concepto matemático, visualizamos la función y añadimoscaracterísticas a los grácos. También, utilizamos el concepto de curva de nivel paravisualizar grácamente los conjuntos contorno de una función de dos variables.

La tercera y cuarta sección explican cómo visualizar el cambio de funciones de unay dos variables, respectivamente, cuando cambia el valor de alguno de sus paráme-tros (simulaciones). Finalmente, la última sección estudia con estos métodos algunasfunciones económicas importantes.

4.1. Funciones de una VariableUna función f de un conjunto X ⊆ R en otro Y ⊆ R (f : X ½ Y ), es una relaciónque asigna a cada elemento x ∈ X exactamente un elemento y ∈ Y . Se dice que y

es la imagen de x y se notará como f(x). El dominio (o conjunto de salida) de f

es el conjunto X y su recorrido (rango o conjunto de llegada) consta de todas lasimágenes f(x) de los elementos x ∈ X.

En particular, una función de una variable se caracteriza porque cada elemento x ∈ X

es un escalar. Así, estas funciones tienen como conjunto de salida a R y como conjuntode llegada a R (f : R ½ R).

4.1.1. Visualización de funciones de una variable

Para visualizar una función univariada f(x) en MATLABr, se siguen tres pasos:

Paso 1. Crear la función. Una función enMATLABrse puede denir de dos manerasdistintas. Por un lado, se puede crear un m-file en donde se dene laforma de la función. Por otro lado, se puede utilizar el comando inline,que permite crear cadenas de caracteres con las que se puede representar laforma funcional.

Paso 2. Crear los datos. Por la naturaleza numérica del método gráco, no podemosvisualizar la función a lo largo de todos los reales, ya que este es un conjuntono acotado. Por esto, establecemos los valores de la variable de salida en

Page 111: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 95

los que se quiere visualizar la imagen de la función. Además, utilizando lafunción que creamos en el Paso 1, generamos numéricamente las imágenesde la función en el dominio.

Paso 3. Utilizar el comando plot de MATLABrpara gracar. Este comando tienela sintaxis plot(x,y), donde x es un vector que contiene los valores deldominio denido en el Paso 2, e y es un vector que contiene las imágenesde la función para cada valor de x. Así, plot une con una línea los puntosgenerados por cada par de elementos (xi, yi), donde xi es el elemento i delvector x, y yi es el elemento i del vector y. Esta rutina sólo es útil parafunciones univariadas.

El comando plot permite especicar el color y tipo de la línea que se vaa usar, y los marcadores que se colocarán en cada punto. Por ejemplo, lasintaxis plot(x,y,’r+:’) graca los vectores x e y con una línea decolor rojo (r) punteada (:) y coloca marcadores (+) en cada uno de lospuntos (xi, yi). En general, la sintaxis de este comando es plot(x,y,s),donde s es una cadena de caracteres que especica el color, el tipo de líneay el marcador a utilizar.

Es importante aclarar que los Pasos 2 y 3 se deben programar en un m-file diferenteal m-file en donde se creó la función. Para los ejemplos del libro, los m-files quecontienen la función (Paso 1) se nombrarán de la forma fejc#, donde f indica quees una función, ej ejemplo, c el capítulo correspondiente y # el número del ejemplo.Similarmente, la programación de los pasos 2 y 3 se colocará en m-files nombradosde la forma pejc#. Así, fmej3 indica una función (f) utilizada en el capitulo dematrices y vectores (m) en el tercer ejemplo (3), y pejc es su programación o script.

Para ilustrar estos pasos veamos la función f : [−2, 5] ½ R, donde f(x) = x3 −4x2 + 6. En primer lugar, debemos crear la función. Para ello, abrimos un m-file

en MATLABry escribimos la función de la siguiente forma:

function f=ffej0(x);

f=x.^3-4*x.^2+6;

En la primera línea se dene la función ffej0 que tiene como entrada el vector xy como salida el vector f. En la segunda línea se especica la forma funcional. Estem-file debe ser guardado con el nombre que se asignó a la función, que en estecaso es ffej0. Por último, recordemos del capítulo 2 que el operador punto que se

Page 112: Economia Matematica en Matlab-Gomez Norma

96 GEDEM - Versión Preliminar

utiliza en la segunda línea sirve para realizar operaciones elemento a elemento; porejemplo, en x.^3 toma cada elemento del vector x y lo eleva a la potencia 3.

El comando inline también permite especicar una función, expresándola comouna cadena de caracteres. Esta función, a diferencia de la que acabamos de crear,no debe ser programada en un m-file independiente, sino en el mismo en donde secolocará la programación de los otros pasos. En MATLABrpodemos crearla de lasiguiente forma:

f=inline(’x.^3-4*x.^2+6’);

En este caso, la instrucción crea un objeto f que contiene la cadena de caracteresx.^3-4*x.^2+6 y que por su estructura recibe los valores de un vector x.

El siguiente paso, una vez creada la función, es crear los datos. Para ello, en un nuevochero que llamaremos pej0, creamos los valores de la variable de salida x, y luegoutilizamos alguna de las funciones creadas en el paso 1 para generar los valores delas imágenes f(x). Ya que el ejemplo nos indica que la función va de los númerosreales en el intervalo [-2,5], a los números reales, debemos denir estos valores parax y f(x). En MATLABr, abrimos un nuevo m-file, en donde creamos los valoresde x e y utilizando la función ffej0 así:

x=[-2:0.1:5];

y=ffej0(x);

o, utilizando f creada con inline:

x=[-2:0.1:5];

y=f(x);

El vector x contiene valores entre -2 y 5, separados entre sí en 0.1 unidades (-2, -1.9,-1.8,..., 4.9, 5), y el vector y contiene las imágenes de la función en este intervalo1.Luego de crear los datos, MATLABrnos permite dibujar la función por medio de lasintaxis plot(x,y).

Como resultado, y añadiendo algunas características adicionales que explicaremosmás adelante, MATLABrmuestra el gráco de la Figura 4.1 en una nueva ventanade guras (Figure Window). Veamos a continuación otro ejemplo, en el cual la función

1Para crear las imágenes con un m-file de la forma function f=ffej0(x,a); f=a*x, seintroducen los inputs en el orden especicado en el m-file, es decir, y=ffej0(x,a). Utilizandouna función de la forma f=inline(’a*x’), en el momento de utilizarla para crear las imágeneses necesario introducir los inputs en orden alfabético, es decir y=f(a,x).

Page 113: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 97

−2 −1 0 1 2 3 4 5−20

−10

0

10

20

30

40

x

f(x)

f(x) = x 3 − 4x2 + 6

Figura 4.1: Función Cúbica

presenta discontinuidades.

Ejemplo 4.1. Gracar f(x) = 4(x−1)2

en el conjunto de salida X = [0.8, 1.25].

Paso 1. Crear la función. En un m-file llamado ffej1:

function f=ffej1(x);

f=4./((x-1).^2);

o, utilizando inline

f=inline(’4./((x-1).^2)’);

Recordemos que en el caso de utilizar inline la función debe ser creadaen el mismo m-file de los pasos 2 y 3.

Paso 2. Crear los datos. En un m-file, que llamaremos pej3:

x=[0.8:0.01:1.25]; % Conjunto de Salida o Dominio

y=ffej1(x); % Conjunto de Llegada o Rango

En caso de utilizar la función inline f, sólo se debe modicar la segundalínea de la forma y=f(x). Por simplicidad, de aquí en adelante todas lasfunciones se crearán en m-files en vez de utilizar la instrucción inline.

Paso 3. Gracar la función.

plot(x,y,’r+-’)

Page 114: Economia Matematica en Matlab-Gomez Norma

98 GEDEM - Versión Preliminar

Como resultado se obtiene una gráca de la función de color rojo (r), con líneasegmentada (-) y con marcadores (+) en cada punto. Añadiendo algunas caracte-rísticas al gráco, obtenemos la Figura 4.2. Observemos que esta función presentauna discontinuidad cuando x = 1. En este valor de x, la función f es igual a 4

0 = ∞.MATLABrpermite trabajar con valores iguales a∞, y los representa como inf. Ennuestro ejemplo, podemos ver que en la posición 21 del vector y, la función toma elvalor de inf.

0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.250

0.5

1

1.5

2

2.5

3

3.5

4x 10

4

x

f(x)

f(x) = 4/(x−1) 2

Figura 4.2: Función Discontinua en x=1

Para que esto se observe en la gráca fue necesario denir los elementos del dominioseparados por 0.01 unidades, de tal forma que 1 ∈ x y ∞ ∈ y.

Cuando las funciones son discontinuas para ciertos valores del dominio, y este esdenido en MATLABrde tal forma que la función nunca toma esos valores, la gu-ra cambia considerablemente. Veamos qué ocurre con nuestra función cuando 1 nopertenece al dominio, por lo que ∞ no hace parte del rango o conjunto de llegada.

Ejemplo 4.2. Gracar f(x) = 4(x−1)2

con x=[0.8:0.013:1.25], ∞ /∈ y.

Paso 1. Crear la función. Usamos la función creada en el m-file ffej1:

Paso 2. Crear los datos. Cambiamos el espaciamiento entre los valores del conjuntode salida:

Page 115: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 99

x=[0.8:0.013:1.25]; % Conjunto de Salida o Dominio

y=ffej1(x); % Conjunto de Llegada, Imagenes

Paso 3. Gracar la función.

plot(x,y,’ o-’)

0.8 0.85 0.9 0.95 1 1.05 1.1 1.15 1.2 1.250

2

4

6

8

10

12

14

16

x 104

x

f(x)

f(x) = 4/(x−1) 2

Figura 4.3: Ejemplo 4.2

El resultado es la Figura 4.3, en donde la función se graca con color azul2, conlínea continua (-) y con marcadores (o) en cada punto. En esta gura, la funciónparece ser continua. Esto se debe a que la variable x no tomó el valor de 1, para elcual la imagen era ∞, sino que tomó valores muy cercanos a 1 (0.9950 y 1.0080),cuya imagen es diferente a ∞. El comando plot une con una linea, en la zona de ladiscontinuidad, las imágenes de los dos puntos más cercanos a 1 generando la grácade una función aparentemente continua. Por eso se recomienda siempre asegurarsede incluir en el vector x los valores del dominio donde la función es discontinua.

4.1.2. Opciones adicionales para los grácos

Hemos observado que las diferentes grácas que han aparecido a lo largo del capítulotienen ciertas características en los ejes, ciertas fuentes para los títulos, determinados

2Cuando no se especica un color, como ocurre en esta gura ( ), el programa utiliza por defectoel color azul (b). Las otras opciones que utiliza por defecto son línea continua (-) y ningún marcador.

Page 116: Economia Matematica en Matlab-Gomez Norma

100 GEDEM - Versión Preliminar

colores de línea, o posiciones de las guras. Todos estos aspectos pueden ser progra-mados en MATLABr, y a continuación se explicará la manera de modicarlos.

text(x,y,’Texto’): ubica la cadena de caracteres Texto en las coordena-das (x,y). Cuando x e y son vectores, el texto se repite en cada par de elementos(xi, yi). Con grácos en tres dimensiones, es necesario especicar coordenadas(x,y,z).

Para colocar valores de una variable en algún texto se necesita convertirlosprimero en cadenas de caracteres. La instrucción num2str(a) convierte elvalor numérico a en una cadena de caracteres3.

title(’Titulo’): añade la cadena de caracteres Titulo en la parte su-perior del gráco. En la instrucción, la cadena de caracteres debe aparecer encolor rojo oscuro.

xlabel(’X’): coloca la cadena de caracteres X como etiqueta del eje x.

ylabel(’Y’): coloca la cadena de caracteres Y como etiqueta del eje y.

zlabel(’Z’): coloca la cadena de caracteres Z como etiqueta del eje z, engrácos de tres dimensiones.

xlabel off, ylabel off, zlabel off: quita la etiqueta de los ejesx,y,z, respectivamente.

legend(’Leyenda’): coloca la cadena de caracteres Leyenda como etique-ta o rótulo de los elementos de un gráco, ya sean líneas, barras u objetos. Conmúltiples elementos, la sintaxis es legend(’leyenda1’,’leyenda2’,...).

texlabel: crea texto en formato TEX. También se puede colocar texto enformato TEX colocándolo seguido de \.

grid: crea una malla o cuadrícula en los grácos. Puede introducirse escri-biendo grid on, y desaparece con grid off.

line: crea líneas. Su sintaxis es line(x,y), donde x e y son vectores de lamisma longitud y los puntos de la linea son las coordenadas que forman estosvectores componente a componente. Cuando estos no son vectores sino matricesde igual tamaño, MATLABrdibuja una línea por columna. Para grácos en 3dimensiones, se deben especicar vectores (o matrices) x,y,z.

3Ver Cuadro 1.2.

Page 117: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 101

axis: controla la escala de los ejes que se introducen en el gráco. Para grácosde dos dimensiones, recibe como entrada un vector de cuatro componentes: elvalor mínimo del dominio sobre el eje x (xmin), el valor máximo sobre el eje x(xmax); el valor mínimo de las imágenes de la función en el eje y (ymin), y suvalor máximo (ymax). La sintaxis es axis([xmin xmax ymin ymax]).

Cuando el gráco es de tres dimensiones, es necesario incluir las coordenadas delos valores mínimo y máximo que tomará el eje z (zmin y zmax), extendiendola sintaxis a axis([xmin xmax ymin ymax zmin zmax]).

Algunos comandos colocan rangos predeterminados para los ejes. Por ejem-plo, axis auto ja los ejes automáticamente según el dominio de la función;axis xy, crea un par de ejes cuyo origen está en la esquina inferior izquierda(sistema cartesiano tradicional); axis ij, coloca el origen en la esquina su-perior izquierda y crea dos ejes i y j, vertical y horizontal respectivamente.Los valores de i van de arriba a abajo y los de j de izquierda a derecha.

Con la instrucción axis equal, el programa coloca la misma escala a todoslos ejes. Con el comando axis square los ejes forman un cuadrado (o uncubo). Para restaurar los valores predeterminados de los ejes, se usa el comandoaxis normal. La instrucción axis on activa los ejes en un gráco, y axisoff los oculta.

view(az,el): especica la rotación de un gráco en tres dimensiones paraobservar la gura desde un ángulo distinto. En su sintaxis, az representa elacimut (azimuth en inglés) o ángulo horizontal de rotación, y el es el ángulode elevación vertical (medidos en grados).

El comando view(2), genera la vista de la gura en dos dimensiones sobreel plano cartesiano, con un acimut de 0, y una elevación de 90, mientras queview(3) genera una vista con un acimut de -37.5 y una elevación de 30. Paraobservar el ángulo en el cual se está viendo una gura se utiliza la sintaxis[az,el]=view, y MATLABrmostrará los valores de az y el de la guraque esté abierta en ese momento.

subplot: divide la ventana de guras en las y columnas. La sintaxis essubplot (r,c,i), donde r es el número de las en que se divide la ventana,c el número de columnas e i es el número de la subventana que quedará activa,

Page 118: Economia Matematica en Matlab-Gomez Norma

102 GEDEM - Versión Preliminar

es decir, la subventana en donde se gracarán las instrucciones inmediatamenteposteriores.

Cada objeto en una gura tiene características o propiedades que se pueden modicarsólo si el objeto recibe un nombre. Por ejemplo, el título de un gráco es un objetoque tiene como características, entre otras, el tamaño, tipo, grosor e inclinación dela letra. Al colocar la instrucción ts=title(’Titulo’), MATLABralmacenael objeto Titulo con el nombre ts, y con este nombre se pueden modicar suspropiedades. A continuación explicaremos algunas propiedades de los objetos.

font: las opciones que comienzan con font, hacen modicaciones sobre eltexto. fontangle cambia el grado de inclinación de las letras del texto, entrelas opciones normal, italic, y oblique, que generan tipos de letra nor-mal, itálica y oblicua respectivamente. fontname, cambia la fuente del texto.fontunits especica la unidad en la que se mide el tamaño de la letra (pul-gadas - inches, centimetros - centimeters, puntos - points o pixeles -pixels). fontsize cambia el tamaño de la letra. Por último, fontweightpermite cambiar el grosor en el tipo de letra (light, normal, demi, bold).

alignment: existen dos comandos que modican la alineación de los objetos;la alineación horizontal (horizontalalignment) que tiene como opcionesalinear a la derecha (right), a la izquierda (left) o en el centro (center);y la alineación vertical (verticalalignment) que puede ser arriba (top),en el medio (middle) y abajo (bottom).

color: permite realizar cambios en el color de un objeto.MATLABridenticala mayoría de los colores con su inicial en inglés: ’b’ para azul, ’g’ para verde,’r’ para rojo, ’c’ para azul verdoso, ’m’ para magenta, ’y’ para amarillo,y ’k’ para negro.

line: las opciones que comienzan con line, hacen modicaciones sobre laslíneas del objeto. linestyle modica el estilo de la línea de un objeto. Tienecomo opciones línea continua ’-’, línea punteada ’:’, línea segmentada ’-’y línea con punto ’-.’. linewidth modica la amplitud o grosor de la líneadel objeto (por defecto es 0.5).

marker: las opciones que comienzan con marker, hacen modicaciones sobrelos marcadores del objeto. marker especica algún tipo de marcador (+ o *

. x square diamond v ^ > < pentagram hexagram none). markersize

Page 119: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 103

indica el tamaño del marcador. markeredgecolor asigna el color del bordedel marcador, mientras que markerfacecolor asigna el color de relleno (enmarcadores que son poligonos cerrados, como por ejemplo o).

Para observar o modicar las características de algún objeto ob, se utilizan loscomandos get y set. El primero muestra las propiedades del objeto, mientras que elsegundo las modica. La instrucción get(ob) el programa muestra la conguraciónactual de las propiedades del objeto ob, mientras que con la instrucción set(ob)

muestra las opciones disponibles para cada propiedad del objeto. Con la instrucciónset(ob,’p’,’v’) MATLABrasigna el valor v a la propiedad p del objeto ob.Para ilustrar estos comandos, en cada uno de los siguientes ejemplos se modicaránlas opciones de algunos objetos.

4.2. Funciones de dos variablesA diferencia de una función de una variable, una función de dos variables se carac-teriza porque el conjunto de salida es el producto cartesiano de los vectores x e y

(x × y, x, y ∈ R), por lo que estas funciones tienen como conjunto de salida a R2

y como conjunto de llegada a R (f : R2 ½ R). Así, cada elemento del conjunto desalida es una pareja ordenada de la forma (xi, yi),

4.2.1. Visualización de Funciones de dos variables

Comencemos por retomar los pasos necesarios para visualizar una función enMATLABryadaptarlos al caso de funciones con dos variables:

Paso 1. Crear la función fej(X,Y).

Paso 2. Crear los datos. En funciones de dos variables se crean tres conjuntos dedatos: las dos variables de salida (x e y) y la variable de llegada (z). Estostres conjuntos de datos pueden ser vectores o matrices4 de igual dimensión.

Dados los conjuntos x = (x1, x2, . . . , xn), y = (y1, y2, . . . , yn), el dominiosobre el cual se dene la función f(x, y) es el producto cartesiano x × y.Este producto genera como resultado una serie de parejas ordenadas de laforma (xi, yi) denida por la matriz:

4Como se estableció en el Capítulo 2, los vectores los denotamos con minúsculas mientras quelas matrices con mayúsculas.

Page 120: Economia Matematica en Matlab-Gomez Norma

104 GEDEM - Versión Preliminar

(x1, y1) (x2, y1) ... (xn, y1)(x1, y2) (x2, y2) ... (xn, y2)

... ... . . . ...(x1, yn) (x2, yn) ... (xn, yn)

Grácamente, los puntos generados por esta matriz se pueden ver comouna malla en la parte izquierda de la Figura 4.4. Cada intersección de laslíneas punteadas corresponde a una de las posiciones de la matriz anterior,generando el producto cartesiano necesario para denir el dominio o con-junto de salida de la función. En la parte derecha de esta gura, se muestrael espacio en donde se visualiza la función de dos variables f(x, y). La basede este espacio es el producto cartesiano x× y, y el eje vertical correspondeal rango de la función f(x, y).

0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

00.1

0.20.3

0.40.5

0.60.7

0.80.9

1

0

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

0

0.2

0.4

0.6

0.8

1f(

x,y)

xy

Figura 4.4: Malla

Podemos reescribir la matriz anterior en dos matrices que contengan loselementos xi e yi respectivamente, así:

X =

x1 x2 ... xn

x1 x2 ... xn

... ... . . . ...x1 x2 ... xn

Y =

y1 y1 ... y1

y2 y2 ... y2

... ... . . . ...yn yn ... yn

Las matrices X e Y se pueden crear a partir de dos vectores x e y. EnMATLABresto se hace por medio de la instrucción meshgrid5 cuya sin-taxis es:

5Ver Capítulo 2

Page 121: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 105

[X,Y]=meshgrid(x,y)

Las parejas ordenadas de elementos X(i,j),Y(i,j) conforman la mallade la parte izquierda de la Figura 4.4. Para crear el conjunto de llegada oimágenes de f(x, y), se dene la matriz Z así:

Z=fej(X,Y)

Paso 3. Utilizar un comando para gracar. MATLABrdispone de los siguientescomandos para gracar una función de dos variables:

plot3: Este comando es equivalente a plot utilizado para gra-car funciones de una variable, y tiene la sintaxis plot3(X,Y,Z).Cuando los elementos a gracar son vectores (x, y, z), este coman-do traza en el espacio R3 una línea que une los puntos generados porlas columnas de cada uno de los vectores. Así, siendo x, y, z vecto-res de tamaño 1 × n, el comando traza una línea que une los puntos(x1, y1, z1), (x2, y2, z2), . . . , (xn, yn, zn).

Cuando los elementos a gracar son matrices (X,Y, Z), el comando di-buja las líneas generadas por las columnas de las matrices X, Y, Z. Sien-do X, Y, Z matrices de tamaño m× n, la instrucción plot3(X,Y,Z)dibuja simultáneamente la línea generada por la primera columna

(X11, Y11, Z11), (X21, Y21, Z21), . . . , (Xm1, Ym1, Zm1),

la línea generada por la segunda columna

(X12, Y12, Z12), (X22, Y22, Z22), . . . , (Xm2, Ym2, Zm2),

y así sucesivamente hasta la línea generada por la columna n

(X1n, Y1n, Z1n), (X2n, Y2n, Z2n), . . . , (Xmn, Ymn, Zmn).

mesh: Dibuja una malla en el espacio R3 que reeja la forma de lafunción (matriz Z) a lo largo del dominio denido por las matrices X

e Y . Las líneas que conforman la malla son dibujadas en colores previa-mente denidos en el colormap. El área que encierra cada cuadradode la malla es blanca. La sintaxis de este comando es:mesh(X,Y,Z)

surf: Al igual que mesh, este comando dibuja una malla en el espacioR3 que reeja la forma de la función (matriz Z) a lo largo del dominio

Page 122: Economia Matematica en Matlab-Gomez Norma

106 GEDEM - Versión Preliminar

denido por las matrices X e Y . Las líneas que conforman la mallason de color negro y el área que encierra cada cuadrado de la malla sedibuja a partir de la escala de colores denida por el colormap. Susintaxis es:surf(X,Y,Z)

contour3: Dibuja un número n de curvas de nivel de la función enel espacio R3. Una curva de nivel corresponde a gracar f(x, y) = α,donde α es una constante. El conjunto de curvas de nivel está dadopor los n distintos valores que puede tomar α. Su sintaxis es:[CS,H]=contour3(X,Y,Z,n)

donde CS tiene los cálculos de cada una de las curvas de nivel o con-tornos (valores de α), y H tiene los valores que permiten modicarlas propiedades de cada curva de nivel. Cuando n es un vector, cadacomponente de n es un diferente valor de α especicado por el usuario.contour: Dibuja un número n de curvas de nivel en el espacio R2

(conjunto de salida x× y). Su sintaxis es:[CS,H]=contour(X,Y,Z,n)

clabel: Coloca etiquetas que indican el valor de α en cada una de lascurvas de nivel obtenidas con los comandos contour 3 o contour.Su sintaxis es:clabel(CS,H)

La secuencia de pasos y la utilización de cada comando se ilustran con el siguienteejemplo.

Ejemplo 4.3. Gracar la función f(x, y) = x+ y en el dominio f : [5,20]× [5,20] ½R.

Paso 1. Crear la función. La creamos en un m-file llamado ffej3, así:

function f=ffej3(x,y);

f=x+y;

Paso 2. Crear los datos. En el chero pej3, comenzamos por denir los valores paralos vectores x e y:

x=[5:1:20];y=[5:1:20];

Luego, necesitamos crear la malla (o dominio) sobre la cual está denida lafunción, por medio del comando meshgrid, así:

Page 123: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 107

[X,Y]=meshgrid(x,y);

Ahora, hallamos los valores de las imágenes de la función sobre este con-junto, que se guardan en la matriz Z:

Z=ffej3(X,Y);

Paso 3. Gracar. Utilicemos los diferentes comandos que ofrece MATLABrparavisualizar la función f(x, y) = x + y:

subplot(2,2,1)

plot3(X,Y,Z);

grid on;

title(’Plot3’);

subplot(2,2,2);

mesh(X,Y,Z);

title(’Mesh’);

subplot(2,2,3);

surf(X,Y,Z);

title(’Surf’);

n=20;

subplot(2,2,4);

contour3(X,Y,Z,n);

title([’Contour3 (n=’,num2str(n),’)’]);

grid off

Como resultado de esta programación MATLABrnos muestra la Figura4.5. A partir de esta gura podemos ver que el comando plot solo dibujalíneas mientras que mesh y surf dibujan una malla. En el gráco de lascurvas de nivel, observamos que cada una de ellas tiene un color diferentedependiendo del valor (α) al que se iguala la función. Para los grácos enR3 también es posible utilizar el comando grid. En este ejemplo activamosla cuadrícula con grid on después de plot3, ya que este desactiva lacuadrícula por defecto, y luego la desactivamos al utilizar la instruccióncontour3.

Page 124: Economia Matematica en Matlab-Gomez Norma

108 GEDEM - Versión Preliminar

510

1520

5

10

15

2010

20

30

40

x

Plot3

y

f(x,y

)

510

1520

5

10

15

2010

20

30

40

x

Mesh

y

f(x,y

)

510

1520

5

10

15

2010

20

30

40

x

Surf

y

f(x,y

)

510

1520

5

10

15

2010

20

30

40

f(x,y

)

Contour3 (n=20)

xy

Figura 4.5: Comandos para gracar funciones de dos variables

4.2.2. Opciones adicionales para los grácos

Las características de la sección 4.1.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 segracan las supercies, que se modica con el comando colormap. Este comandomatiza entre un conjunto de colores para cada gura. Los colormaps mas utilizados6son:

· hot: Blanco, negro, amarillo y rojo

· flag: Rojo, blanco, azul y negro.

· cool: Añil y magenta.

· autumn: Rojo y amarillo

· summer: Verde y amarillo.

· winter: Azul y verde.6Es posible construír numéricamente colormaps personalizados. Esto se puede consultar en la

documentación o en la ayuda de este comando.

Page 125: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 109

Además, colorbar introduce una barra de colores que permite ver, según el mapade colores que se aplique, el color correspondiente a cada valor de la función, es decir,a cada valor del eje z o eje vertical. Con los siguientes ejemplos se ilustrarán estasopciones.

Ejemplo 4.4. Gracar la función f(x, y) = 16(x + y)3 + 3

2(x + y)2 − 500(x + y) +10x2 + 10y2 + 50x, sobre el dominio f : [−90,90]× [−90,90] ½ R.

Paso 1. Crear la función en un m-file llamado ffej4.

function f=ffej4(x,y);

f=(1/6)*(x+y).^3+ (3/2)*(x+y).^2-500*(x+y)+...

10*x.^2+10*y.^2+50*x;

Paso 2. Crear los datos en otro m-file llamado pfej4.

x=[-90:2:90];y=x;

[X,Y]=meshgrid(x,y);

Z=ffej4(X,Y);

Paso 3. Gracar la función.

mesh(X,Y,Z)

title([’ x,y \in [’,num2str(min(x)),’,’,num2str(max(x))’]’]);

colorbar;

xlabel(’x’);ylabel(’y’);zlabel(’f(x,y)’);

view(50,34)

Como resultado, tenemos la Figura 4.6. Para este gráco se utilizaron lasinstrucciones xlabel, ylabel y zlabel para colocar nombres en cadauno de los ejes. Además, en el título se colocaron símbolos LATEX7 utilizando\: la instrucción \in generó el símbolo ∈ .

La función de la Figura 4.6 aparentemente es creciente a lo largo de todo su dominio8.Sin embargo, debido a la escala que se está manejando (valores entre -90 y 90) sepueden estar obviando detalles sobre el comportamiento de la función. Por esta razónes necesario examinar en detalle el comportamiento de la función en varios dominios.Para ello, las siguientes instrucciones gracan la misma función en cuatro conjuntosde salida diferentes.

7Para una mayor explicación de estos símbolos, consultar ?).8Recordemos que una función f(x, y) es creciente en su dominio S si para todo (x, y) ∈ S, los

elementos del gradiente (pendiente) son positivos.

Page 126: Economia Matematica en Matlab-Gomez Norma

110 GEDEM - Versión Preliminar

−80

−60

−40

−20

0

20

40

60

80 −80−60

−40−20

020

4060

80

−6

−4

−2

0

2

4

6

8

10

x 105

y

x,y ∈ [−90,90]

x

f(x,

y)

−6

−4

−2

0

2

4

6

8

10

x 105

Figura 4.6: Ejemplo 4.4

% Crear los cuatro conjuntos de datos

x1=[-90:9:90];y1=x1;

[X1,Y1]=meshgrid(x1,y1);

n=length(x1);

Z1=ffej4(X1,Y1);

x2=linspace(-70,70,n);y2=x2;

[X2,Y2]=meshgrid(x2,y2);

Z2=ffej4(X2,Y2);

x3=linspace(-50,50,n);y3=x3;

[X3,Y3]=meshgrid(x3,y3);

Z3=ffej4(X3,Y3);

x4=linspace(-30,30,n);y4=x4;

[X4,Y4]=meshgrid(x4,y4);

Z4=ffej4(X4,Y4);

% Graficar

subplot(2,2,1)

mesh(X1,Y1,Z1);view(50,34);

xlabel(’x’);ylabel(’y’);zlabel(’f(x,y)’);

title([’(x,y) \in [’,num2str(min(x1)), ’,’,num2str(max(x1)),’]’]);

Page 127: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 111

subplot(2,2,2)

mesh(X2,Y2,Z2);view(50,34);

xlabel(’x’);ylabel(’y’);zlabel(’f(x,y)’);

title([’(x,y) \in [’,num2str(min(x2)),’,’,num2str(max(x2)),’]’]);

subplot(2,2,3)

mesh(X3,Y3,Z3);view(50,34);

xlabel(’x’);ylabel(’y’);zlabel(’f(x,y)’);

title([’(x,y) \in [’,num2str(min(x3)), ’,’num2str(max(x3)),’]’]);

subplot(2,2,4)

mesh(X4,Y4,Z4);view(50,34);

xlabel(’x’);ylabel(’y’);zlabel(’f(x,y)’);

title([’(x,y) \in [’,num2str(min(x4)), ’,’,num2str(max(x4)),’]’]);

−50

0

50 −500

50

−5

0

5

10

x 105

y

x,y ∈ [−90,90]

x

f(x,

y)

−50

0

50 −50

0

50

−2

0

2

4

x 105

y

x,y ∈ [−70,70]

x

f(x,

y)

−50

0

50 −50

0

50

−5

0

5

10

15

x 104

y

x,y ∈ [−50,50]

x

f(x,

y)

−20

0

20 −20

0

20

0

1

2

3

x 104

y

x,y ∈ [−30,30]

x

Figura 4.7: Distintos conjuntos de salida

En la Figura 4.7, se presenta la misma función sobre los dominios [−90,90]×[−90,90],[−70,70]×[−70,70], [−50,50]×[−50,50], [−30,30]×[−30,30]. A medida que se utilizan

Page 128: Economia Matematica en Matlab-Gomez Norma

112 GEDEM - Versión Preliminar

dominios con menor escala (intervalos de x e y más pequeños) se observa que lafunción tiene una zona decreciente alrededor del punto (x, y) = (10, 10).

Ejemplo 4.5. Gracar la función f(x, y) = x2− y2, sobre el dominio f : [−30,30]×[−30,30] ½ R.

Paso 1. Crear la función en un m-le llamado ffej5.

function f=ffej5(x,y);

f=(x.^2)-(y.^2);

Paso 2. Crear los datos.

x=[-30:1:30];y=x;

[X,Y]=meshgrid(x,y);

Z=ffej5(X,Y);

Paso 3. Gracar la función.

colormap(winter);

subplot(2,2,1)

contour3(X,Y,Z,30)

title(’Contour3, n = 30’);

xlabel(’x’);ylabel(’y’);zlabel(’f(x,y)’);

subplot(2,2,2)

[c1,h1]=contour(X,Y,Z,8);

clabel(c1,h1);

title([’Contour, Clabel, n=8’]);

xlabel(’x’);ylabel(’y’);zlabel(’f(x,y)’);

subplot(2,2,3)

[c2,h2]=contour(X,Y,Z,[-800 -600 -400 -200 200 400 600 800]);

clabel(c2,h2);

title([’Contour, Clabel’]);

xlabel(’x’);ylabel(’y’);zlabel(’f(x,y)’);

subplot(2,2,4)

cn = [-800 -150 0 150 800];

contourf(X,Y,Z,cn)

Page 129: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 113

title([’Contourf’]);

xlabel(’x’);ylabel(’y’);zlabel(’f(x,y)’);

−200

20

−20

0

20

−1000

−500

0

500

1000

f(x,

y)

Contour3, n = 30

xy

−642.8571

−642.8571

−385.7143

−385.7143

−128.5714

−128.571412

8.57

14

128.5

714

385.7143 385.

7143

642.8

571

642.8

571

Contour, Clabel, n=8

x

y

−30 −20 −10 0 10 20 30−30

−20

−10

0

10

20

30

−800

−800

−600

−600

−400

−400

−200−200

−200 −200

200

200

400

400

600

600

80

0

800

Contour, Clabel

x

y

−30 −20 −10 0 10 20 30−30

−20

−10

0

10

20

30Contourf

x

y

−30 −20 −10 0 10 20 30−30

−20

−10

0

10

20

30

Figura 4.8: Punto de Silla

El resultado es la Figura 4.8. Para este gráco denimos un nuevo mapade colores con el comando colormap(winter). Se utilizó contour juntocon clabel para gracar 8 curvas de nivel calculadas por MATLABr, consu respectiva etiqueta (indicando el valor de α). Estos comandos tambiénse utilizaron para gracar curvas de nivel predeterminadas (-800 -600 -400-200 200 400 600 800). La instrucción contourf gracó otras curvas denivel diferentes (-800 -150 0 150 800), sin etiquetas, pero rellenando suscontornos del mismo color de las curvas9.

9En el capítulo 7 se estudiará más a fondo el concepto de conjuntos contorno.

Page 130: Economia Matematica en Matlab-Gomez Norma

114 GEDEM - Versión Preliminar

4.3. Simulaciones en funciones de una variableUna simulación es un ejercicio numérico que modica el valor de uno o varios pará-metros de los que depende una función. Esto se hace para observar el cambio en elcomportamiento de la función al modicar (simular) los parámetros.

El procedimiento para realizar la simulación parte de los mismos pasos para dibujaruna función que hemos trabajado hasta ahora: crear la función, crear los datos ygracar. Sin embargo hay dos modicaciones. La primera consiste en que al crear lafunción, ésta debe recibir como entradas, además de las variables, los parámetros.La segunda requiere que los pasos de crear los datos (especícamente, el rango oconjunto de llegada) y gracar se repitan n veces (que pueden separarse por unapausa), donde n es el número de valores del parámetro que se van a simular. Parailustrar este procedimiento veamos el siguiente ejemplo.

0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.20

0.1

0.2

0.3

0.4

0.5

0.6

0.7

x

f(x)

f(x) = x0.3

0 0.02 0.04 0.06 0.08 0.1 0.12 0.14 0.16 0.18 0.20

0.05

0.1

0.15

0.2

0.25

0.3

0.35

x

f(x)

f(x) = x0.7

Figura 4.9: Simulación de una función de una variable

En la parte izquierda de la Figura 4.9 se muestra la imagen de f(x) = x0.3, quetiene una fuerte curvatura. En la parte derecha se visualiza la función f(x) = x0.7,resultado de un cambio en el exponente de la variable (parámetro); ahora la funciónpresenta una curvatura mas suave, y tiende a ser lineal.

Estos cambios pueden ser observados estableciendo al interior de las funciones pará-metros que puedan tomar diferentes valores. En el caso anterior, la forma general dela función es f(x) = xa con a ∈ (0, 1), y se simuló el parámetro a para los valoresde a = 0.3 y a = 0.7. A continuación extendemos el anterior ejemplo, simulando elparámetro a (el exponente de la variable x) para los valores de 0.1, 0.4, 0.6 y 0.9.

Page 131: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 115

Ejemplo 4.6. Simular el parámetro a en f(x) = xa, para a = 0.1, 0.4, 0.6, 0.9.

Paso 1. Crear la función. En un m-file:

function f=ffej6(x,a); % Parametro como entrada

f=x.^a; % Forma funcional

Paso 2. Crear los datos. Denimos los valores de x, a e y.

x=[0:0.0025:0.2]; % Conjunto de salida

a=[0.1 0.4 0.6 0.9]; % Valores del Parámetro

n=length(a); % Numero de valores del parametro

for i=1:n;

y(i,:)=ffej6(x,a(i)); % Crear n conjuntos de llegada

end

Se crearon n conjuntos de llegada o rangos, donde n es el número de valoresque toma el parámetro (length(a)).

Paso 3. Gracar la función (repetir n veces):

for i=1:n;

subplot(2,2,i)

plot(x,y(i,:));

xs=xlabel(’x’);ys=ylabel(’f(x)’);

ts=title([’f(x) = x^a, a = ’,num2str(a(i))]);

set(ts,’Fontsize’,18,’Fontweight’,’Bold’,’color’,’b’)

set(xs,’FontSize’,14,’Fontweight’,’Bold’)

set(ys,’FontSize’,14,’Fontweight’,’Bold’)

end

El comando for repite el proceso 4 veces, que es el número de valores que toma elparámetro a (n=length(a)). La instrucción y(i,:)=ffej6(x,a(i)) crea unconjunto de imágenes de la función ffej6 para cada valor del parámetro a, y loguarda en la la i de la matriz y.

Una vez creados los datos, se utiliza la instrucción subplot(2,2,i), para hacerun gráco que tenga dos las y dos columnas. En cada posición i del subplot, seutiliza plot(x,y(i,:)) para gracar la imagen de la función cuando el parámetroa toma el valor a(i). La salida de MATLABrse muestra en la Figura 4.10.

Page 132: Economia Matematica en Matlab-Gomez Norma

116 GEDEM - Versión Preliminar

0 0.05 0.1 0.15 0.20

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

x

f(x

)

f(x) = xa, a = 0.1

0 0.05 0.1 0.15 0.20

0.1

0.2

0.3

0.4

0.5

0.6

0.7

x

f(x

)

f(x) = xa, a = 0.4

0 0.05 0.1 0.15 0.20

0.05

0.1

0.15

0.2

0.25

0.3

0.35

0.4

x

f(x

)

f(x) = xa, a = 0.6

0 0.05 0.1 0.15 0.20

0.05

0.1

0.15

0.2

0.25

xf(

x)

f(x) = xa, a = 0.9

Figura 4.10: Ejemplo 4.6

Con los comandos xlabel y ylabel se colocaron las etiquetas x y f(x) paralos ejes. La instrucción num2str(a(i)) convierte el valor numérico a(i) en unacadena de caracteres, por lo que el título cambia para cada valor de a. Al crear lagura se coloca nombre al título (ts) y a los ejes (xs,ys), para poder modicarsus propiedades. Con el comando set se dene para el título un tamaño de letra 18,grosor bold y color azul, y para los ejes un tamaño de letra 14 y grosor bold.

En este ejemplo se observa que el bucle for repite el proceso n veces, tanto al crearlas imágenes como al gracar. Aunque este bucle se segmentó para seguir los mismospasos, en una sintaxis mas sencilla se pueden unir estos dos bucles en uno solo.Veamos un ejemplo con la función seno.

Ejemplo 4.7. Simular el parámetro a en f(x) = asen(x)

Paso 1. Crear la función. En un m-file:function f=ffej7(x,a);

f=a.^(sin(x));

Page 133: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 117

Paso 2. Crear los datos. Denimos los valores de x y a.

x=[1:0.01:25];

a=[0.3:0.2:1.7];

v=[min(x) max(x) -10 10]; % Eje vertical

En este caso a toma valores entre 0.3 y 1.7, espaciados entre si por 0.2unidades.

Paso 3. Simular el parámetro a:

for i=1:length(a);

y=ffej7(x,a(i));

plot(x,y);

ls=line([min(x) max(x)],[0 0]);

xs=xlabel(’x’);ys=ylabel(’f(x)’);

ts=title([’f(x) = a^sin(x) a = ’,num2str(a(i))]);

axis(v); % Escala de los ejes

set(ts,’Fontsize’,16,’Fontweight’,’Bold’,’color’,’r’)

set([xs ys],’FontSize’,10,’Fontweight’,’Bold’)

set(ls,’linestyle’,’:’)

pause(2)

end

Se utiliza un mismo bucle for para crear los rangos y para gracar.

Como resultado MATLABrgraca secuencialmente la simulación de la función paraocho valores del parámetro a. En la Figura 4.11 se muestra simultáneamente elcomportamiento de la función para cuatro valores de a (0.3 0.7 1.3 1.7).

A partir de la línea 7 se modican las propiedades de algunos objetos. Para el títulose establece tamaño de letra 16, grosor bold y color rojo. Las etiquetas de losejes tienen tamaño de letra 10, grosor bold, y por defecto el color de la letra esnegro. A diferencia del ejemplo anterior, la conguración de las características delos ejes se hizo en una sola linea (y no en dos líneas diferentes), utilizando el vector[xs,ys] en la instrucción set. Con line se colocó una línea horizontal punteadapara representar el eje de las x, por lo que va del punto (x, y) = (min(x),0) alpunto (x, y) = (max(x),0), y con la instrucción axis(v) se colocó una escala jaal eje vertical de la gráca (entre -10 y 10).

Page 134: Economia Matematica en Matlab-Gomez Norma

118 GEDEM - Versión Preliminar

5 10 15 20 25−10

−8

−6

−4

−2

0

2

4

6

8

10

x

f(x

)

f(x) = asin(x) a = 0.3

5 10 15 20 25−10

−8

−6

−4

−2

0

2

4

6

8

10

x

f(x

)

f(x) = asin(x) a = 0.7

5 10 15 20 25−10

−8

−6

−4

−2

0

2

4

6

8

10

x

f(x

)

f(x) = asin(x) a = 1.3

5 10 15 20 25−10

−8

−6

−4

−2

0

2

4

6

8

10

xf(

x)

f(x) = asin(x) a = 1.7

Figura 4.11: Ejemplo 4.7

En MATLABrpodemos simular una función de una variable para un gran númerode valores de su parámetro, con grácos de tres dimensiones, en donde los valoresdel parámetro se colocan en el eje z o eje vertical. Veamos un ejemplo.

Ejemplo 4.8. Simular el parámetro a en la función f(x) = asen(x), con a = [0, 0.2]

Paso 1. Crear la función. Podemos utilizar la función ffej7.

Paso 2. Crear los datos.

x=[-10:0.1:6]; % Valores de x

a=[0:0.1:4]; % Valores del parametro

[X,A] = meshgrid(x,a); % Dominio

Y=ffej7(X,A); % Rango, Imagenes

Paso 3. Gracar. En el eje z se gracan los valores del parametro (matriz A).

mesh(X,Y,A);

t=texlabel(’a^sin(x)’);

xs=xlabel(’x’);ys=ylabel(’f(x)’);zs=zlabel(’a’);

Page 135: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 119

ts=title([’f(x) = ’,t,’ a \in [’,num2str(min(a)),...

’,’,num2str(max(a)),’]’]);

set(ts,’Fontsize’,18,’Fontweight’,’Bold’);

set([xs ys zs],’FontSize’,14,’Fontweight’,’Bold’);

−10−8

−6−4

−20

24

6

0

2

4

6

8

10

0

0.5

1

1.5

2

2.5

3

3.5

4

x

f(x) = asin(x) a ∈ [0,4]

f(x)

a

Figura 4.12: Ejemplo 4.8

La salida de MATLABrse presenta en la Figura 4.12. Utilizamos la instruccióntexlabel para colocar la función como una expresión de LATEX y la incluimosdentro del título. La instrucción title se segmentó en dos renglones con puntossuspensivos (...) debido a su extensión. Además, se conguraron las característicasde los ejes en una sola línea, utilizando el vector [xs ys zs] en la instrucción set.

Se observa que para valores de a cercanos a 1 la función tiende a ser lineal, pero amedida que se aleja de este valor, las oscilaciones característricas de la función senose hacen más pronunciadas. Con la instrucción contour(X,Y,A,40) obtenemoscurvas de nivel que muestran el mismo resultado en el plano en donde está denidala función (Figura 4.13).

Cuando se simulan pocos valores del parámetro de una función, no es necesarioutilizar bucles con subplots para gracar la simulación. Veamos un ejemplo en dondela función que vamos a simular es de forma exponencial.

Ejemplo 4.9. Simular el parámetro a en la función exponencial f(x) = e(−ax), cona = 0.1, 0.4, 0.7, 1

Page 136: Economia Matematica en Matlab-Gomez Norma

120 GEDEM - Versión Preliminar

x

f(x)

f(x) = asin(x) a ∈ [0,4]

−10 −8 −6 −4 −2 0 2 4 60

1

2

3

4

5

6

7

8

9

Figura 4.13: Ejemplo 4.8

Paso 1. Crear la función. En un m-file:

function f=ffej9(x,a);

f=exp(-a*x);

Paso 2. Crear los datos. Denimos los valores de x y a.

x=[0:0.01:20];

a=[0.1 0.4 0.7 1];

for i=1:length(a);

y(i,:)=ffej9(x,a(i)); % Conjuntos de llegada

end

Paso 3. Gracar la simulación.

p = plot(x,y(1,:),’r :’,x,y(2,:),’b -.’,...

x,y(3,:),’k -’,x,y(4,:),’m -’);

ls = legend([’a = ’,num2str(a(1))],[’a = ’,num2str(a(2))],...

[’a = ’,num2str(a(3))],[’a = ’,num2str(a(4))]);

% Caracteristicas adicionales

grid on;

xs=xlabel(’x’);ys=ylabel(’f(x)’);

Page 137: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 121

ts=title([’f(x) = e^-ax a = [0.1 0.4 0.7 1]’]);

set(ts,’Fontsize’,16,’Fontweight’,’Bold’,...

’horizontalalignment’,’left’,...

’verticalalignment’,’baseline’);

set([xs ys],’FontSize’,12,’Fontweight’,’Bold’);

set(ls,’fontsize’,12,’fontname’,’times’,’location’,’north’);

0 2 4 6 8 10 12 14 16 18 200

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

x

f(x)

f(x) = e−ax a = [0.1 0.4 0.7 1]a = 0.1a = 0.4a = 0.7a = 1

Figura 4.14: Ejemplo 4.9

En la Figura 4.14 se observa el comportamiento de la función. Se utilizó plot paracolocar en una sola gura las cuatro simulaciones. Cada simulación se colocó con untipo de línea y color diferente. Se utilizó legend para colocar una leyenda con lasetiquetas de cada simulación, según sus colores y tipos de línea. Con set, el títulose alineó horizontalmente a la izquierda (derecha del usuario) y verticalmente sobrela línea del gráco. También se utilizó para modicar tamaño y tipo de letra de laleyenda y ubicarla en la parte superior central (north) del gráco.

4.4. Simulaciones en funciones de dos variablesEn esta sección estudiaremos la forma de analizar el comportamiento de funciones dedos variables cuando cambia alguno de sus parámetros. Para estas simulaciones, sesigue el mismo procedimiento que con funciones univariadas, es decir, para simularn valores de un parámetro debemos crear la función (incluyendo en las entradas al

Page 138: Economia Matematica en Matlab-Gomez Norma

122 GEDEM - Versión Preliminar

parámetro), crear los datos (con n conjuntos de salida) y gracar n veces. En algunoscasos, para hacer la sintaxis mas sencilla, se crearán en un solo bucle los n conjuntosde datos y los n gracos.

Ejemplo 4.10. Simular el comportamiento de la función f(x, y) = acos(xy), paraa = 0.1, 0.9, 2, 10.

Paso 1. Crear la función con el parámetro a.

function f=ffej10(x,y,a);

f=a.^(cos(x.*y));

Paso 2. Crear los datos.

x=[-2:0.1:2];y=x;

[X,Y]=meshgrid(x,y); % Conjunto de Salida

a=[0.1 0.9 2 10]; % Valores del parametro

n=length(a);

for i = 1:n

Zi = ffej10(X,Y,a(i)); % n Conjuntos de Llegada

end

Para guardar las n matrices Z se utilizaron cell-arrays. Debido a que todoslos conjuntos de llegada son del mismo tamaño, también era posible utilizarhipermatrices (Z(:,:,i)).

Paso 3. Gracar la función

% Parametros de fuente

fst=14; % Tamaño de fuente para el titulo

fsej=12; % Tamaño de fuente para ejes

fw=’demi’; % Grosor de letra

fn=’Times’; % Tipo de letra

for i=1:n;

subplot(2,2,i);

mesh(X,Y,Zi);

ts=title([’f(x,y) = a^cos(xy), a = ’,num2str(a(i))]);

xs=xlabel(’x’);ys=ylabel(’y’);zs=zlabel(’f(x,y)’);

set(ts,’Fontsize’,fst,’Fontweight’,fw,’Fontname’,fn);

Page 139: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 123

set([xs ys zs],’FontSize’,fsej,’Fontweight’,fw);

end

A diferencia de los ejemplos anteriores, en este ejemplo se denieron previa-mente los Parametros de fuente (tamaño, grosor y tipo) con númerosy cadenas de caracteres. Algunas veces esto permite simplicar la progra-mación, ya que basta sólo con cambiar el valor del parámetro una sola vezpara modicar la propiedad de varios objetos.

Como resultado obtenemos la Figura 4.15. Se observa que con valores de a cercanosa 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 Figuratambién muestra como MATLABrajusta la escala del eje z en cada subplot, segúnel rango de cada conjunto de llegada.

−2−1

01

2

−2

0

20

2

4

6

8

10

x

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

y

f(x,y

)

−2−1

01

2

−2

0

20.9

0.95

1

1.05

1.1

1.15

x

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

y

f(x,y

)

−2−1

01

2

−2

0

20.5

1

1.5

2

x

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

y

f(x,y

)

−2−1

01

2

−2

0

20

2

4

6

8

10

x

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

y

f(x,y

)

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 − ax2y +6xy2 − y3, para a ∈ [−6, 6].

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

Page 140: Economia Matematica en Matlab-Gomez Norma

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 cambiode la función ante el cambio del parámetro a. Algunas de ellas se presentanen la Figura 4.18. En la programación, se utilizaron hipermatrices paraguardar 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ómicasGeneralmente los problemas económicos formulados matemáticamente requieren unasolución. El comportamiento de esta solución depende del comportamiento de las fun-ciones que componen el problema (funciones económicas). El objetivo de esta secciónes utilizar la herramienta gráca de MATLABrpara visualizar algunas funcioneseconómicas.

Un problema analizado en microeconomía es la elección de un consumidor entre

Page 141: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 125

−5

0

5

−5

0

5−2000

−1000

0

1000

2000

x

f(x,y) = x 3−ax2y+6xy 2−y3

a = −6

y

f(x,

y)

−5

0

5

−5

0

5−1000

−500

0

500

1000

x

f(x,y) = x 3−ax2y+6xy 2−y3

a = −2

y

f(x,

y)

−5

0

5

−5

0

5−2000

−1000

0

1000

2000

x

f(x,y) = x 3−ax2y+6xy 2−y3

a = 2

y

f(x,

y)

−5

0

5

−5

0

5−2000

−1000

0

1000

2000

x

f(x,y) = x 3−ax2y+6xy 2−y3

a = 6

y

f(x,

y)

Figura 4.16: Simulación del parámetro a en f(x, y) = x3 − ax2y + 6xy2 − y3

diferentes canastas de bienes, para lo cualse asume que sus preferencias están repre-sentadas por una función de utilidad. Una de ellas es la función Cobb-Douglas, quemodela el consumo de un agente sobre bienes que son sustitutos imperfectos, de ma-nera que el consumidor preere gastar su presupuesto comprando combinaciones delos bienes que tiene a su alcance, que gastarlo consumiendo sólo uno de ellos. Cuandoel agente consume dos bienes x e y, la función es de la forma U(x, y) = xay1−a; dondea ∈ (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 paracualquier 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 cambiosen 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);

Page 142: Economia Matematica en Matlab-Gomez Norma

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

MATLABrmodica el gráco en intervalos de 0.5 segundos, a medida queva cambiando el valor del parámetro a. En la Figura 4.17 se presentanalgunas de las simulaciones.

Otra función utilizada en microeconomía (teoría del productor) es la función deElasticidad de Sustitución Constante (CES, por su sigla en inglés). La producciónen esta función depende de dos insumos capital (k) y trabajo (t), y un parámetro ρ.La forma de la función es (kρ + tρ)

1ρ donde ρ < 1.

Al crear los datos de la función, tenemos en cuenta que el capital y el trabajo notoman valores negativos, y la condición ρ < 1. Luego, simularemos el parámetro dela 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.

Page 143: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 127

0

5

10

0

5

100

2

4

6

8

10

x

Cobb−Douglas, a = 0.2

y

f(x,

y)

0

5

10

0

5

100

2

4

6

8

10

x

Cobb−Douglas, a = 0.4

y

f(x,

y)

0

5

10

0

5

100

2

4

6

8

10

x

Cobb−Douglas, a = 0.6

y

f(x,

y)

0

5

10

0

5

100

2

4

6

8

10

x

Cobb−Douglas, a = 0.8

y

f(x,

y)

Figura 4.17: Función Cobb-Douglas

Paso 2. Crear los datos. Le damos valores positivos a los vectores de capital y tra-bajo. 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);

Page 144: Economia Matematica en Matlab-Gomez Norma

128 GEDEM - Versión Preliminar

xs=xlabel(’k’);ys=ylabel(’t’);zs=zlabel(’f(k,t)’);

ts=title([’Funcion CES \rho = ’,num2str(p(i))]);

set(ts,’Fontsize’,10,’Fontname’,times);

set([xs ys zs],’FontSize’,8,’Fontweight’,’bold’);

pause(0.1)

end

Como resultado, se tiene una secuencia de grácos que cambian de acurdoa los cambios en el parámetro ρ. Se observa en esta secuencia que la funciónde producción es de la forma Leontief, o Función mínimo cuando el valorde ρ → −∞; cuando ρ → 0, la función de producción es Cobb-Douglas; ycuando ρ → 1, la función de producción es Lineal. Entonces la CES genera-liza diferentes comportamientos de las funciones de producción al cambiarel valor de su parámetro, modelando bienes complementarios, sustitutosimperfectos y sustitutos perfectos, respectivamente 10. La simulación paraestos valores límite de ρ, junto sus curvas de nivel, se muestra en las guras4.18 y 4.19.

En capítulos posteriores se utiliza la herramienta gráca para representar algunasfunciones y algunos resultados numéricos. Los grácos que se presentan contienentítulos, etiquetas de los ejes y otras características que se explicaron en este capítulo.Como estas características se crean con el mismo procedimiento que se mostró eneste capítulo, no se colocará explícitamente su programación.

Los capítulos, 5, y 6 analizan funciones utilizando cálculo (diferencial e integral)y métodos numéricos. Estos métodos sirven para estudiar funciones que no pue-den representarse grácamente, o cuando se requieren cálculos precisos en un puntodeterminado. Esto será útil, ya que algunas funciones económicas presentan estascaracterísticas.

Ejercicios

En los grácos que debe realizar a continuación recuerde crear para todas las gurasun título, nombre para los ejes, líneas segemtadas en las asíntotas y característicasespeciales para cada objeto, diferentes en cada ejercicio.

10Ver Nicholson (1997, pág. 214).

Page 145: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 129

0

5

10

0

5

100

2

4

6

8

10

x

Funcion CES ρ = −100

y

f(x

,y)

x

y

Minimo

0 2 4 6 80

1

2

3

4

5

6

7

8

9

0

5

10

0

5

100

5

10

15

x 1030

x

Funcion CES ρ = 0.01

y

f(x

,y)

x

y

Cobb−Douglas

0 2 4 6 80

1

2

3

4

5

6

7

8

9

Figura 4.18: Función CES

1. Graque en MATLABrlas siguientes funciones denidas en R. Utilice comoconjunto de salida intervalos en donde la función presente cambios en su com-portamiento:

f(x) = |x|

g(x) =

2x− 3 si x < −2

x− 5 −2 ≤ x ≤ 1

3− x x > 1

h(x) = [[x]] = n si n ≤ x < n + 1 n ∈ Z

f(y) =y2 − 2y2 + 5y

y0.5 − 2y + 4

g(z) =

0 si z ≤ 3

1 si z > 3

f(x) =x

(x− 1)(x + 2)

Page 146: Economia Matematica en Matlab-Gomez Norma

130 GEDEM - Versión Preliminar

0

5

10

0

5

100

5

10

15

20

x

Funcion CES ρ = 1

yf(

x,y

)

x

y

Lineal

0 2 4 6 80

1

2

3

4

5

6

7

8

9

0

5

10

0

5

100

2

4

6

8

10

x

Funcion CES ρ = 100

y

f(x

,y)

xy

Maximo

0 2 4 6 80

1

2

3

4

5

6

7

8

9

Figura 4.19: Función CES

2. Graque en MATLABrlas siguientes funciones denidas en R2. Utilice comoconjunto de salida intervalos en donde la función presente cambios en su com-portamiento:

f(x, y) =√

x + y

g(x, y) =y

x2 − 1h(z, w) = maxmin2z, 3w, 3z, 2wz(m,n) = |m3 − n3|p(x, y) = [[x + y]] = n si n ≤ x + y < n + 1 n ∈ Zg (h, z)

3. Para la función f : R+ ½ R con f(x) =[ax2 + bx− c

dx + 5e

]0.4

Simule los parámetros a, b, c secuencialmente en R2; para el parámetrosimulado, asuma valores en el intervalo [−3, 3] y para los otros parámetrosasuma el valor de 1.

Page 147: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 131

Simule los parámetros d, e en R3 utilizando mesh; para el parámetro si-mulado, asuma valores en el intervalo [−3, 3] y para los otros parámetrosasuma el valor de 1.

4. ?) presenta una versión lineal del modelo de hiperinación propuesto por ?).Al resolver para los precios pt utilizando expectativas adaptativas, se halla unaecuación en diferencias que para ser estable (no hiperinación) requiere que:

∣∣∣∣αλ + 1− λ

1 + αλ

∣∣∣∣ < 1 (4.1)

donde λ ∈ [0, 1] es la velocidad de ajuste de las expectativas, y α representa larelación entre la tasa de interés y la demanda de dinero (α < 0).

Graque la función f(λ, α) =∣∣∣∣αλ + 1− λ

1 + αλ

∣∣∣∣Graque en R2 los valores de α y λ que generan hiperinación en el modelode Cagan. Interprete.

5. La ecuación (y − k) = (x−h)2

4a representa una parábola en el plano cartesiano,con vértice en (h, k) y con una distancia a entre el vértice y el foco. Estaecuación se puede reescribir de tal forma que y sea una función de x y de losparámetros h, k, a. Para la función y(x), realice una simulación en R3 para cadaparámetro, colocando una línea punteada en la directriz, asumiendo valorespara el parámetro simulado en el intervalo [−2, 2], y para los otros parámetrosde 3 y −1.

6. Imagine el mercado de arroz en alguna ciudad del Tolima. Suponga que estemercado es perfectamente competitivo. La cantidad demandada puede repre-sentarse por la siguiente función lineal: QD = a−Pc, donde a, c son parámetrosy P es el precio del arroz. La cantidad ofrecida se representa por la funciónlineal QO = b + Pd

a) Graque, en una misma gura, las funciones de oferta y demanda, asu-miendo a = 5, b = 1, c = 4 y d = 2.

b) Halle numericamente el equilibrio de mercadoc) Realice una simulación de cada parámetro, para incrementos en sus valores

en el intervalo [−1, 1]. ¾Qué ocurre con el equilibrioo de mercado en cadasimulación?. Explique brevemente.

Page 148: Economia Matematica en Matlab-Gomez Norma

132 GEDEM - Versión Preliminar

7. La función de elasticidad constante recibe este nombre, porque su elasticidadde sustitución (σ = 1

1−ρ) depende sólo del parámetro ρ.

a) Construya la función CES de producción tal que dependa del capital, eltrabajo y la elasticidad de sustitución (σ).

b) Por medio de simulaciones numéricas, determine los valores límite de σ

con los que se obtienen las funciones Lineal, Mínimo y Cobb-Douglas.

8. Dos funciones utilizadas con frecuencia en economía 11 son la función CRRA(Constant Relative Risk Aversion) y CARA (Constant Absolute Risk Aversion),denidas como:

CRRA : U(ct) =

c1−γt

1− γγ > 0, γ 6= 1

Ln(ct) γ = 1

CARA : U(ct) = −(

)e−αc α > 0

En estas funciones, el Coeciente de Aversión Absoluta al Riesgo está dado por−U ′′(ct)

U ′(ct), y el de Aversión Relativa al Riesgo por −U ′′(ct)ct

U ′(ct). Para cada función:

a) Calcule matemáticamente U ′ y U ′′.

b) Graque en una sola gura U , U ′ y U ′′

c) Simule el comportamiento de U , U ′ y U ′′ para diferentes valores de γ y α.

9. Graque la función de distribución y de distribución acumulada de las siguien-tes distribuciones de probabilidad12:

a) Univariada Uniforme en el intervalo [a,b]

b) Univariada Normal con µ = [−2 − 1 0 1 2] y varianza σ = [0.2 0.5 1 2](simulación)

c) Univariada de Laplace simulando α y β.

d) Bivariada Normal con media 0 y varianza 111Monsalve (2005a), Blanchard (1989)12Ver ?).

Page 149: Economia Matematica en Matlab-Gomez Norma

FUNCIONES 133

10. La función de producción de una empresa que tiene como insumos capital (K) ytrabajo (L). Si se ha estimado que la empresa tiene una función de producciónde la forma F (K, L) =

√K + L.

a) ¾Cómo es esta función?b) ¾Cómo son sus curvas de nivel?.c) Graque estas guras en una sola ventana. (Sugerencia: Use el comando

subplot)

11. Graque la función f(x) = 3x+1x−2 . Sabemos que esta función tiene una asíntota

en x = 2. Dibuje en la misma ventana la asíntota con un estilo de línea puntea-da. (Sugerencia: Use el comando line). ¾Qué situación económica o nancierapodría representar una función de este tipo?

Page 150: Economia Matematica en Matlab-Gomez Norma

134 GEDEM - Versión Preliminar

Page 151: Economia Matematica en Matlab-Gomez Norma

Capítulo 5

Derivación

En la pasada sección examinamos cómo evaluar computacionalmente diferentes fun-ciones a partir de un criterio gráco, reconociendo distintas propiedades y observandoel proceso para llegar a su construcción. No obstante, la necesidad de estudiar ciertascaracterísticas de las funciones que involucran mayor precisión, nos lleva a conside-rar nuevos conceptos que permiten hacer otro tipo de análisis. En este capítulo nosenfocaremos entonces en la derivación.

Especícamente, para tener una aproximación a la solución de problemas cuya res-puesta analítica es limitada, se ha desarrollado la derivación numérica. De esta ma-nera, dando un marco conceptual, la derivada representa un cambio innitesimal enla función con respecto a las variables de las que depende y la forma más natural deestablecer cuál es la aproximación numérica es mediante la siguiente denición:

f ′(x) = lımh→0

f(x + h)− f(x)h

(5.1)

Donde f ′(x) es la derivada de la función f . Dado un intervalo I ∈ < y una funciónf : I → <, si f tiene una derivada f ′ y f ′ es a su vez diferenciable, la derivada def ′ es la segunda derivada, es decir, la derivada de la derivada, que se denota por f ′′.Continuando así con el proceso, tenemos la tercera derivada, la cuarta, la quinta, etc.:f (3), f (4), f (5), ..., f (n), donde f (n) es la derivada n-ésima de f , siempre y cuando f

sea n veces diferenciable en I. Cualquier derivada más allá de la primera se consideraderivada de orden superior y su existencia está sujeta al número de veces que puedaser diferenciada la función.

Para solucionar computacionalmente problemas que comprendan derivación, la si-

135

Page 152: Economia Matematica en Matlab-Gomez Norma

136 GEDEM - Versión Preliminar

guiente estructura determina cómo se han creado cada uno de los ejemplos contenidosen este capítulo, buscando hacer un uso apropiado de cada una de las herramientasdisponibles:

Paso 1: Determinar el tipo de problema que se pregunta y crear las funcionesque necesite MATLABr para iniciar el proceso de derivación, ya sea en unM-le o de cualquier otra forma que reconozca el programa.

Paso 2: Crear los datos pertinentes y unirlos con las funciones y otros pará-metros previamente jados en MATLABr para plantear la situación.

Paso 3: Identicar y llamar el código adecuado para resolver el problema.En este proceso vale la pena recordar que existen diferentes formas de llegara la misma solución y, por lo tanto, hay distintas rutinas que son útiles paraalcanzar ese resultado, siendo importante evaluarlas y descartar aquellas menosecientes en hacerlo.

Siguiendo esta estructura, el capítulo está dividido en dos secciones: en la primeraexaminamos con detalle las rutinas computacionales que permiten obtener derivadasde primer orden y los métodos que las sustentan; y, en la segunda, aquellos comandosútiles para llegar a las derivadas de orden superior de una función.

5.1. Derivación de primer orden5.1.1. polyder

La siguiente es la forma de un polinomio:

cnxn + cn−1xn−1 + · · ·+ c2x

2 + c1x + c0 (5.2)

Donde c es una constante que acompaña la variable x y el subíndice indica la posiciónen la que se encuentra respecto a la variable. Para derivar un polinomio, MATLABr

dispone de la rutina polyder, que requiere como input el vector de coecientes delpolinomio a derivar y entrega como resultado el vector de coecientes del polinomioresultado de la derivación. Así, la derivada del polinomio (5.2) es:

[cn × n]xn−1 + [cn−1 × (n− 1)]xn−2 + · · ·+ [c2 × 2]x + c1

Ejemplo 5.1. Encontremos la derivada del polinomio g(x) = 5x4 − 9x3 − 41x + 32

Page 153: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 137

Paso 1: Escribimos en MATLABr el vector de coecientes del poli-nomio que nos interesa derivar1

F=[5 -9 0 -41 32]

Paso 2: Ahora, 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], que son, en efecto, los coecientes del polinomio resultado del proceso dederivación 20x3 − 27x2 − 41. Cabe resaltar que el vector resultante F1 es de tamaño1 × n − 1, porque el último coeciente del vector F corresponde a x0. En otraspalabras, el último sumando del polinomio es un escalar y su derivada es siemprecero: MATLABr no muestra entonces su derivada2.

Método de Diferencia FinitaComo ya hemos mencionado, la denición matemática de derivada permite calcularnuméricamente la derivada de una función. Esta forma de hallarla es conocida comoDiferencia Finita: sin importar la dimensión en que se encuentre, la idea subyacenteconsiste en dividir las diferencias de las imágenes entre un número sucientementepequeño. Los distintos algoritmos que utilizan la diferencia nita para el cálculo dela derivada varían de acuerdo a la forma como determinan las imágenes (aquelloselementos del codominio) o establecen el valor del espaciamiento (el espacio entre loselementos del dominio) y, quizá uno de los algoritmos más sencillos para encontrarla derivada de esta forma, consiste en omitir el límite y utilizar un h sucientementepequeño en la ecuación (5.1), es decir,

f ′(x) =f(x + h)− f(x)

h+ O(h) (5.3)

Donde O(·) es una función que prescribe el error entre la derivada y la aproximaciónnumérica, conocido como Error de Truncamiento. Esta función depende, en estecaso, de h1 (h → 0) y, por esto se considera de orden 1. Mediante la construcciónde un polinomio de Taylor de orden 2 y exigiendo que f sea tres veces diferenciable,obtenemos un resultado con una aproximación más exacta a la derivada:

1Nótese que el coeciente que acompaña a x2 es cero.2Por sus características, polyder sólo permite derivar en una sola dimensión, es decir, con

respecto a una sola variable.

Page 154: Economia Matematica en Matlab-Gomez Norma

138 GEDEM - Versión Preliminar

f ′(x) =f(x + h)− f(x− h)

2h+ O(h2) (5.4)

En este caso, el error de truncamiento es de segundo orden - h2. Muchas de lasrutinas utilizadas por MATLABr para encontrar derivadas se basan en el métodode diferencia nita por su facilidad de cálculo, veamos entonces los comandos máscomunes para la aproximación de derivadas numéricas (Mantilla 2004).

5.1.2. gradient

El Gradiente de una función es un vector que contiene sus primeras derivadas y, deeste modo, al evaluar la norma del gradiente, la dirección del vector nos señala si lafunción crece o decrece. Así, para cualquier vector de variables ~x = x1, x2, . . . , xn, elgradiente de la función f = f(~x) que depende de n variables corresponde a:

∇f =

(∂f(~x)∂x1

,∂f(~x)∂x2

, . . . ,∂f(~x)∂xn

)(5.5)

MATLABr obtiene numéricamente el gradiente de una función hasta cierto númerode variables3 mediante el comando gradient, a partir del método de diferencia ni-ta. Este comando calcula entonces las derivadas parciales de una función en cualquierpunto (~x) en el que se desee hacer algún tipo de análisis.

La sintaxis de gradient es: [FX,FY] = gradient(F,HX,HY) donde F es lamatriz de imágenes de la función a derivar de tamaño n×n y HX y HY correspondenal espacio entre puntos a lo largo del eje X y al eje Y respectivamente (extendibleal número de dimensiones en las que se trabaje). El resultado del uso del comandoson dos matrices FX y FY que corresponden respectivamente a dF

dx y dFdy (también

extendibles al número de dimensiones en las que se trabaje).

Ejemplo 5.2. 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. De forma que, grácamente, lafunción a derivar es una parábola y la derivada tiene la forma de una función cúbica.Veamos qué sucede con la derivada aplicando gradient:

Paso 1: Crear la función que nos interesa derivar en un M-le:3La cantidad de variables depende de la capacidad de la máquina que haga el proceso.

Page 155: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 139

function f=ej2(x)

f=x.^4;

Paso 2: En otro chero determinar los datos de las variables:x=[-10:1:10];

z=ej2(x);

Paso 3: Calcular el gradiente numérico de la función mediantegradient:f1=gradient(z,1)

Donde el espacio denido entre cada valor de x es HX=1, es decir, el gradientecalculado tiene la misma escala de las imágenes de la función. Si HX diere delespacio existente entre elementos del vector x, la escala del gradiente es distinta aaquella de las imágenes de la función original y, además, como aquí la función sólotiene una variable, la matriz que contiene las imágenes de la función es un vector detamaño 1× n, cuya norma es 113.1592, o sea, la función es creciente entre -10 y 10.

A partir de los cálculos numéricos que hemos realizado y los métodos para gracardel capítulo 4, la función f(x) = x4 y su derivada están en la Figura 5.1, dondeobservamos que la derivada numérica de f(x) sí tiene una forma cúbica.

−5 −4 −3 −2 −1 0 1 2 3 4 5−600

−400

−200

0

200

400

600

800

X

Y

f(x)=x4

f´(x)=4x3

Figura 5.1: Gráca de f(x) = x4 y su derivada

Ejemplo 5.3. Calculemos el gradiente de la función f(x, y) = x2 + y2 en <3

Page 156: Economia Matematica en Matlab-Gomez Norma

140 GEDEM - Versión Preliminar

Paso 1: Escribir un M-le ej3.mfunction f=ej3(x,y);

z=x.^2+y.^2;

Paso 2: Crear los datos de la variable x, de la variable y y de lafunciónx=[-10:0.5:10]; y=x;

[X,Y]=meshgrid(x,y);

Z=ej3(X,Y);

Paso 3: Invocar el comando gradient[PX,PY]=gradient(Z,1,1)

En este caso, HX y HY son diferentes al espacio ya denido entre cada valor de X e Yy, por ende, el gradiente calculado (PX,PY) no tiene la misma escala de las imágenesde la función (Z). A diferencia del Ejemplo 5.2, la función tiene más de una variable,entonces, si n corresponde al número de elementos contenidos en x e y, la matriz deimágenes de la función es ahora de tamaño n×n. Para apreciar mejor los resultadosdel ejercicio, observemos la función f(x, y) = x2 + y2 y su derivada en la Figura 5.2,que es el resultado de gracar las matrices PX y PY en MATLABr.

Figura 5.2: f(x, y) = x2 + y2 y su gradiente a escala distinta

Page 157: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 141

5.1.3. diff

A través del método de diferencia nita, el código diff hace también la derivaciónnumérica de una función. Sin embargo, en contraste con gradient, para establecercorrectamente la derivada con diff y visualizar el comportamiento de la derivada,al resultado del comando debemos dividirlo por la distancia. De esta manera, parautilizar diff se introduce la función a derivar y la distancia entre las coordenadasde la función, y el resultado que entrega MATLABr es la aproximación numérica ala derivada de la función. Veamos en el Ejemplo 5.4 cómo se utiliza diff:

Ejemplo 5.4. Calculemos la derivada de la función f(x) = x52

Paso 1: Crear los datos del espacio entre coordenadas y de la variablexh=0.1

x=[0:h:5];

Paso 2: Invocar el comando diF1=diff(x.^(5/2))/h

La respuesta F1 es una aproximación numérica a 52x

32 : la derivada de la función

f(x) = x52 (La norma del vector F1 es 68, lo que implica que es una función creciente).

De forma concreta, el resultado de invocar el comando diff lo observamos en laFigura 5.3, que es el resultado de gracar la salida de MATLABr.

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 50

10

20

30

40

50

60

x

f(x)

f(x)=x5/2

f´(x)=(5/2)x3/2

Figura 5.3: Derivada de f(x) = x52 mediante diff

Page 158: Economia Matematica en Matlab-Gomez Norma

142 GEDEM - Versión Preliminar

Al igual que gradient, la rutina diff es extendible a casos de derivación con másvariables. En el siguiente ejemplo observamos cómo realizar la derivación numéricade una función compuesta por dos variables.

Ejemplo 5.5. Encontremos la derivada numérica de la función f(x, y) = x0.5y0.8

Paso 1: Crear la función a derivar en un M-le:

function q=ej5(x,y);

f=x.^.5.*y.^.8;

Paso 2: En otro chero determinar los datos de las variables:

h=0.5;

x=[0:h:10]; y=x;

[X,Y]=meshgrid(x,y);

Z=ej5(X,Y);

Paso 3: Invocar el comando diff para hallar las derivadas parciales:

ZX=diff(Z,1,2)/h

ZY=diff(Z,1,1)/h

En la sintaxis del comando, al especicar diff(Z,1,2)MATLABr encuentra paraZ (primer término) la primera derivada (el 1 de la mitad) manteniendo ja la segundavariable (derivada parcial respecto a x) y, al especicar diff(Z,1,1), calcula laprimera derivada parcial de la función respecto a y (mantiene ja la primera variable).El resultado que MATLABr nos proporciona indica que las funciones obtenidas (lasderivadas parciales) son crecientes: la norma de las matrices ZX y ZY son mayores acero, en particular, 125.8730 y 126.5741.

5.1.4. fjac y fdjac

Una matriz jacobiana hace una generalización del gradiente al calcular, simultánea-mente, las derivadas parciales de varias funciones respecto a diferentes variables,organizándolas en una matriz. Supongamos un conjunto de m ecuaciones con n va-riables:

Page 159: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 143

y1 = f1(x1, x2, · · · , xn)

y2 = f2(x1, x2, · · · , xn)... ...

ym = fm(x1, x2, · · · , xn)

La matriz jacobiana J asociada al sistema anterior contiene, en cada una de sus las,el gradiente de las funciones fi para todo i = 1, 2, . . . , m. Es decir,

J =

∇f1

∇f2

...∇fm

(5.6)

MATLABr calcula, por diferencia nita, los elementos de una matriz jacobianamediante los comandos fjac y fdjac4. La sintaxis de la rutina fjac es:

J=fjac(’f’,[i,j],a,P1,P2,...)

Donde f es el nombre del M-le que contiene el sistema a derivar, [i,j] signicaque se derivará la función j respecto a la variable i5, el vector a dene el puntodonde se va a calcular la derivada y P1,P2,..., etc son parámetros adicionales ala función.

Aunque el método utilizado por fdjac es análogo al aplicado por fjac, su sintaxises distinta: J=fdjac(’f’,a,P1,P2,...). Al igual que antes, f es el nombredel M-le donde denimos el sistema de funciones, pero a indica el punto donde seevalúa la derivada del sistema y P1,P2,... son parámetros adicionales aplicablesla función. Veamos un ejemplo de cómo se usan los comandos fjac y fdjac:

Ejemplo 5.6. Hallemos la matriz jacobiana en el punto (1,1) del siguiente sistemade ecuaciones:

z1 = x2 + y2

z2 = x3 + y3

4Estas rutinas pertenecen al toolbox COMPECON5Si por ejemplo se deseara calcular la derivada de la segunda ecuación con respecto a la primer

variable el vector debería ser [1,2].

Page 160: Economia Matematica en Matlab-Gomez Norma

144 GEDEM - Versión Preliminar

Paso 1: Crear la función que contiene el sistema de ecuaciones en unM-le:function [z1,z2]=ej7a(v);

x=v(1); y=v(2);

z1=x.^(2)+y.^(2);

z2=x.^(3)+y.^(3);

Paso 2: En otro chero invocamos el comando y calculamos la jaco-biana en (1,1):H(1,:)=fjac(’ej7a’,[1,1],[1;1]);

H(2,:)=fjac(’ej7a’,[1,2],[1;1]);

H

Cabe notar que, en este ejemplo, la denición computacional de las variables esdistinta a aquella que hemos venido usando a lo largo del capítulo. El vector v, detamaño 1×2, tiene como primer elemento a la variable x y como segunda componentea y (el tamaño está determinado por la cantidad de variables en el ejemplo). Estanotación simplica sustancialmente el análisis porque, en el fondo, la matriz jacobianaes la derivada de una matriz respecto a un vector de variables. Así, la matriz H estáconstituida por dos vectores de derivadas respecto a x e y: el primer vector lacorresponde al gradiente de la primera ecuación y el segundo, al gradiente de lasegunda ecuación, ambas derivadas evaluadas en el punto (1,1). Ahora veamos cómoencontrar la matriz jacobiana, en el mismo punto, a partir de fdjac:

Paso 1: Crear la función que contiene el sistema de funciones en unM-le:function [z]=ej7b(v);

x=v(1); y=v(2);

z1=x.^(2)+y.^(2);

z2=x.^(3)+y.^(3);

z=[z1;z2];

Paso 2: En otro chero invocamos el comando y calculamos la jaco-biana en (1,1):H=fdjac(’ej7b’,[1;1])

En este ejemplo observamos que fdjac es una generalización de las propiedaddesde fjac: mientras en fjac se requiere especicar qué ecuación se deriva respecto a

Page 161: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 145

qué variable y el punto de evaluación, en fdjac sólo se necesita denir el punto enque se quiere calcular la jacobiana.

5.1.5. 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 sencillade abstraer la producción, de manera que se evitara caer en las complejidades técnicaspropias del proceso productivo. Los economistas han logrado hacer esa abstracciónpor medio de la función de producción: una manera matemática de representar elproducto como una variable dependiente de diferentes factores de producción, visibleen la ecuación (5.7).

q = f(K,L, ...) (5.7)

Donde q es la cantidad producida por la rma, K es el capital (uso de máquinas),L corresponde a trabajo (cantidad de horas trabajadas) y los puntos suspensivosindican otros insumos utilizados en el proceso productivo. Desde el punto de vistaeconómico, es interesante observar cómo las rmas eligen los niveles de producto yde uso de cada uno de los factores y, para hacer un simple estudio computacional,utilizaremos una función de producción simplicada de la forma q = f(K,L).

No obstante, las empresas no pueden producir innitamente debido a que existe unarestricción de recursos y capacidad que se lo impide. Intuitivamente, un aumento enla cantidad de un factor (por ejemplo, capital), manteniendo constantes los demásfactores, debe producir más producto, sin embargo, esos incrementos disminuyen cadavez la productividad de ese factor. Por ejemplo, si tenemos un restaurante y queremosatender a todos los clientes, podemos contratar un mesero que lo haga. Si contratamosotro mesero sería de gran ayuda para el mesero ya contratado, siempre y cuando lasmesas les sean asignadas claramente, de forma que no atiendan dos veces la mismamesa. Pero si se contratan más meseros que mesas, el último mesero contratadono tendrá a quien atender y, por tanto, su aporte a la producción es prácticamentenulo. Supongamos entonces que una empresa tiene la siguiente función de producción:f(K, L) = K

13 L

13 . Veamos grácamente su comportamiento y su forma en la Figura

5.4. Allí observamos que la función tiene rendimientos decrecientes en cada factor,ya sea K o L.

La forma más sencilla para analizar el efecto de un aumento de un factor sobre

Page 162: Economia Matematica en Matlab-Gomez Norma

146 GEDEM - Versión Preliminar

02

46

810

0

2

4

6

8

100

1

2

3

4

5

K

Q

L

f(K,L)

Figura 5.4: La función de producción f(K,L) = K13 L

13

el producto es aislando ese factor de los demás por un instante. La contribución alproducto resultante de agregar una unidad más de factor se denomina ProductividadMarginal (PMg) y su evaluación matemática se hace mediante derivadas parciales,es decir, al estudiar la modicación de un factor, se dejan constantes todos los demás.Su forma es descrita en la ecuación (5.8).

PMgK =∂q

∂KPMgL =

∂q

∂L(5.8)

De esta manera, retomando nuestra función de producción f(K, L) = K13 L

13 , el

análisis de la contribución de un factor lo hacemos mediante sus derivadas parcia-les respecto a capital o a trabajo. Así, para hallar la derivada parcial invocamosgradient cuando ya hemos creado la función:

Paso 1: Crear la función de producción en un M-le:function q=cobb(k,l,a,b);

q=(k.^(a)).*(l.^(b));

Paso 2: Crear los datos pertinentes a la función (no negativos) yllamarla:h=0.2

k=[0:h:10]; l=k;

a=1/3; b=a;

Page 163: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 147

[K,L]=meshgrid(k,l);

Q=cobb(K,L,a,b);

Paso 3: Invocar el comando gradient:[PK,PL]=gradient(Q,h,h)

Los resultados de esta operación son PK y PL, las derivadas parciales de la funciónrespecto a K y L respectivamente. Observamos estos resultados en la Figura 5.5,donde tenemos que ambas derivadas son positivas (al incrementar los factores creceel producto), sin embargo, son decrecientes (cada unidad más de cada factor aumentael producto en menos que esa proporción). Por ejemplo, la productividad marginaldel capital (la gura de la izquierda) muestra cómo, ante un aumento del capital enalgo más que cero (la parte más izquierda de la gráca), resulta en una gran cantidadde producto (el eje vertical); de otro lado, un incremento muy grande (la parte demás a la derecha) implica un crecimiento casi nulo del producto (la gráca de lafunción se hace cada vez más cercana a cero).

Figura 5.5: Izquierda: Productividad Marginal del Capital. Derecha: ProductividadMarginal del Trabajo.

5.2. Derivación de orden superiorComo ya hemos explicado, es posible derivar una función f : I → < más de una vez.A partir de distintos métodos como polinomios o diferencias nitas, se establecen

Page 164: Economia Matematica en Matlab-Gomez Norma

148 GEDEM - Versión Preliminar

aproximaciones bastante precisas de las derivadas e, incluso, de las funciones mismasen puntos particulares6. En esta sección presentamos los códigos con los que es po-sible hacer derivación de orden superior en MATLABr y cuya utilidad está atada aaplicaciones económicas y a herramientas de gran utilidad para temas más avanzadosen economía y otras ciencias.

5.2.1. polyder

Al igual que la derivación de primer orden de un polinomio, polyder permite conti-nuar derivando varias veces en una sola dimensión. A partir de la sintaxis ya denidadel comando, ahora es necesario que el input sea la derivada anterior o, en su defec-to, para llegar a la derivada superior hay que invocar el código tantas veces comosea requerido. Veamos el siguiente ejemplo para considerar polyder en el caso dederivadas cuyo orden sea mayor a uno.

Ejemplo 5.7. Hallemos la segunda derivada del polinomio f(x) = 5x4 +9x3 +8x2 +3x+1. Analíticamente, la primera derivada de f(x) es f ′(x) = 20x3 +27x2 +16x+3y la segunda es f ′′(x) = 60x2 + 54x + 16. Observemos el resultado mediante el usode polyder:

Paso 1: Escribimos en MATLABr el vector de coecientes que nosinteresa derivarP=[5 9 8 3 1]

Paso 2: Ahora, invocamos a la rutina dos veces:Q=polyder(polyder(P))

El resultado que entrega MATLABr es [60 54 16], que corresponde al resul-tado que habíamos hallado en la solución analítica. Hay que resaltar queMATLABr

cuenta de derecha a izquierda a partir de x0, es decir, el último número en el vectorde respuestas es un escalar. La ventaja del uso de polyder radica en la facilidadpara hallar, en polinomios muy grandes, derivadas muy altas debido a la precisiónnumérica de MATLABr y lo tedioso que signica hacer una gran cantidad de deri-vaciones.

6En particular, en este capítulo se aborda la aproximación de funciones por medio de la Expansiónde Taylor.

Page 165: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 149

5.2.2. gradient

Las derivadas de orden superior, en el caso de una sola variable, son fáciles de cal-cular mediante el comando gradient. Así, para hallar la segunda derivada congradient, el nuevo input es el gradiente anteriormente encontrado.

Ejemplo 5.8. Hallemos la segunda derivada de la función f(x) = x23 . Tras hacer

las dos derivaciones correspondientes, la última analíticamente es: f ′′(x) = −29x−

43 .

Paso 1: Crear la función a derivar en un M-le:function f=ej7(x);

f=x.^(2/3);

Paso 2: En otro chero determinar los datos de las variables:x=[-10:1:10];

z=ejemseis(x);

Paso 3: Calcular los gradientes numéricos de la función mediantegradient:PX2=gradient(gradient(z,1),1)

El resultado de aplicar gradient es evidente en la Figura 5.6, donde observamosla igualdad existente entre el resultado analítico y el resultado numérico. Asimismo,con gradient se obtienen resultados muy precisos para derivadas de orden superiordifíciles de calcular analíticamente, por ejemplo, al aplicar gradient a una funciónmultivariada, hallamos la matriz hessiana: una matriz que agrupa las segundas deri-vadas de una función y tiene la forma puntualizada en la ecuación (5.9).

Hf(x) =

∂2f

∂x1· · · ∂f

∂x1∂xn... . . . ...∂f

∂xn∂x1· · · ∂2f

∂xn

(5.9)

La forma más fácil de hallar la hessiana con gradient para, supongamos, unafunción de dos variables es, tras haber invocado la rutina y haber obtenido los vectoresFX y FY que corresponden a las derivadas respecto a x e y respectivamente, se llamaal comando dos veces más, pero esta vez introduciendo cada vez la matriz de imágenes

Page 166: Economia Matematica en Matlab-Gomez Norma

150 GEDEM - Versión Preliminar

−10 −8 −6 −4 −2 0 2 4 6 8 100

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8Primera Derivada de f(x)=x2/3

x

PX

−10 −8 −6 −4 −2 0 2 4 6 8 10−4

−3

−2

−1

0

1

2

3

4

5

6Segunda Derivada de f(x)=x2/3

x

PX

2

Figura 5.6: Las dos primeras derivadas de f(x) = x23

resultante de la primera derivación. Veamos entonces el Ejemplo 5.9 para observarel uso de gradient en funciones multivariadas:

Ejemplo 5.9. Hallemos la matriz hessiana de la función descrita en el Ejemplo 5.3:f(x, y) = x2 + y2. Analíticamente, tras hacer las sucesivas derivaciones, la matrizcorresponde a: (

2 00 2

)

donde observamos que las derivadas cruzadas son iguales, algo característico de lahessiana.

Paso 1: Crear la función a derivar en un M-le:

function f=ej9(x,y);

f=x.^2+y.^2;

Paso 2: En otro chero determinamos los datos de las variables:

x=[1:5];y=x;

[X,Y]=meshgrid(x,y);

Z=ej9(X,Y);

Paso 3: Calcular el gradiente numérico de la función mediantegradient:

[PX,PY]=gradient(Z,1,1);

Page 167: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 151

Paso 4: Invocar el comando gradient para hallar los componentesde la matriz hessiana:

[PXX,PXY]=gradient(PX,1,1)

[PYX,PYY]=gradient(PY,1,1)

El resultado de MATLABr nos muestra muy claramente que PXY=PYX=0, que noera algo desconocido, no obstante, los resultados de PXX y PYY no son tan concretoscomo los anteriores. El hecho de que los resultados de las columnas más exteriorespara el caso de PXX y el de las las más exteriores para el caso de PYY dieran de2 sucede porque, al ser gradient un método basado en diferencias, los resultadosde las esquinas no tienen otro término con el cual hacer diferencia y MATLABr

automáticamente les asigna una aproximación. Pero la la y la columna del centroson concluyentes: el resultado de la derivación, en ambos casos, es 2, como observamosen las matrices (5.10). Si generalizamos el resultado para más de cuatro elementosa, por ejemplo, cien elementos, el resultado es mucho más fuerte y la mayoría de loscomponentes de las matrices PXX y PYY serán 2.

PXX = 1 1.5 2 1.5 1

1 1.5 2 1.5 1

1 1.5 2 1.5 1

1 1.5 2 1.5 1

1 1.5 2 1.5 1

PYY = 1 1 1 1 1

1.5 1.5 1.5 1.5 1.5

2 2 2 2 2

1.5 1.5 1.5 1.5 1.5

1 1 1 1 1

(5.10)

En el caso de funciones univariadas, para calcular derivadas de más allá de segundoorden, se replica el proceso de encontrar la segunda derivada: se determina la deriva-da inmediatamente anterior a aquella que deseamos encontrar. Veamos el siguienteejemplo para establecer numéricamente cómo se halla la tercera derivada de unafunción:

Ejemplo 5.10. Calculemos la tercera derivada de la función f(x) = x103 . La primera

derivada de f(x) es f ′(x) = 103 x

73 , la segunda corresponde a f ′′(x) = 70

9 x43 y la tercera

es f (3)(x) = 28027 x

13 . Veamos cuál es el resultado de la derivación numérica:

Paso 1: Crear la función a derivar en un M-le:

function f=ej10(x);

f=x.^(10/3);

Page 168: Economia Matematica en Matlab-Gomez Norma

152 GEDEM - Versión Preliminar

Paso 2: En otro chero determinar los datos de las variables:x=[-10:10];

z=ej10(x);

Paso 3: Calcular el tercer gradiente numérico de la función mediantegradient:PX3=gradient(gradient(gradient(z,1),1),1)

El resultado descrito por la matriz PX3, cuya norma es positiva e igual a 129.4025 (osea, la tercera derivada de la función es creciente), es la respuesta numérica a invocartres veces gradient sobre la función f(x). El resultado de gracar PX3 lo obser-vamos en la Figura 5.7, donde el resultado analítico y el numérico son ligeramentedistintos a causa del error de truncamiento inherente a la aproximación numérica(O(h2)).

−10 −8 −6 −4 −2 0 2 4 6 8 100

1

2

3

4

5

6

7

8

9

10Tercera Derivada Numerica

x

PX

3

−10 −8 −6 −4 −2 0 2 4 6 8 100

1

2

3

4

5

6

7

8

9

10Tercera Derivada Analitica

x

y

Figura 5.7: La tercera derivada de f(x) = x23 mediante gradient y directamente

5.2.3. diff

La rutina diff también es útil para hallar derivadas de orden superior, no obstan-te, para determinar la derivada de orden superior para, por ejemplo, una funciónunivariada, hay que introducir al comando la derivada inmediatamente anterior (siqueremos hallar la cuarta derivada, el input es la tercera derivada y así sucesivamen-te). El siguiente ejemplo muestra claramente cómo se trabaja con diff en funcionesunivariadas.

Page 169: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 153

Ejemplo 5.11. Calculemos la segunda derivada del Ejemplo 5.4: f(x) = x52 .

Paso 1: Crear la primera derivada de la función:F1=diff(x.^(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 x52 que es una función

creciente (la norma del vector es 86.0233). Para examinar funciones multivariadas,hay que especicar de qué orden y en qué dimensión es la derivada (o sea, si estáderivando respecto a x o a y). En el Ejemplo 5.12 es evidente cómo es el uso de diffen el caso de más de una variable.

Ejemplo 5.12. Calculemos la segunda derivada de la función del Ejemplo 5.9:f(x, y) = x2 + y2.

Paso 1: Llamar la primera derivada invocando el comando diff:ZX=diff(Z,1,2);

ZY=diff(Z,1,1);

Paso 2: A partir de estas derivadas, encontrar las derivadas respectoa cada variable:ZXX=diff(Z,2,2)

ZYY=diff(Z,2,1)

Paso 3: Establecer las derivadas cruzadas:ZXY=diff(ZX,1,1)

ZYX=diff(ZY,1,2)

En este ejemplo apreciamos el uso de los números de acuerdo al orden de la derivadaque se siga. En el Paso 2 tomamos Z derivándolo respecto a x dos veces (el valorcorrespondiente a ZXX) y, después, haciéndolo respecto a y dos veces (el valor deZXY). De otro lado, en el Paso 3 tenemos las derivadas cruzadas: a partir del Paso 1obtenemos la derivada de Z respecto a x para luego derivar con y (ZXY) y, el siguientepaso es el caso exactamente inverso (ZYX). Cabe anotar que el primer número de lasintaxis está determinando el orden de la derivación, mientras el segundo establececuál es la variable respecto a la que se deriva, además, los resultados son los mismos

Page 170: Economia Matematica en Matlab-Gomez Norma

154 GEDEM - Versión Preliminar

que los del Ejemplo 5.8: ZXY y ZYX son cero, sin embargo, las otras derivadas sonmás elocuentes que con gradient: todos los elementos de las matrices ZXX y ZYYson 2. Esto se percibe en la ecuación (5.11).

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.11)

5.2.4. fdhess

Hallar hessianas con gradient o diff puede ser tedioso y, como ya vimos, impreci-so cuando se asignan pocos datos al proceso. Existe otro algoritmo que encuentra demanera más exacta la hessiana: fdhess7 permite hallar en MATLABr la segundaderivada de una función calculada en uno o varios puntos. La sintaxis de este coman-do es H=fdhess(f,x,varargin), donde f corresponde al nombre de la funcióndel modo fval = f(x); x es el punto de evaluación y varargin son argumentosadicionales para f (opcional). El resultado del comando es H, es decir, la segundaderivada en el punto de evaluación.

Ejemplo 5.13. Obtengamos la segunda derivada de la función f(x, y) = x3 − 3xy2

en el punto (10,-9) y hagamos su análisis.

Paso 1: Crear la función a derivar en un M-le:function f=ej11(x,y);

f=x.^3-3*x*y^2;

Paso 2: Calcular la segunda derivada de la función mediantefdhess:H=fdhess(’ej11’,10,-9)

MATLABr muestra un resultado numérico que nos permite analizar la forma dela función en el punto (10,-9): al observar la gráca de la función en la Figura

7Esta rutina pertenece al toolbox COMPECON.

Page 171: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 155

5.8 vemos que, en el punto (10,-9), la función es creciente y, al cotejarla con lasolución de MATLABr tras la ejecución de fdhess (60), esta respuesta nos dicealgo evidente: la función en el punto (10,-9) crece a una tasa creciente y la magnituddel resultado nos da la dimensión de ese crecimiento, es decir, conforme se evalúefdhess en un punto donde la pendiente sea muy grande, el resultado del comandoes progresivamente mayor.

Figura 5.8: La función f(x, y) = x3 − 3xy2

Ejemplo 5.14. Observemos cuál es la forma de la función f(x) = x3 + y3 en elpunto (0,0)

Paso 1: Crear la función a derivar en un M-le:function f=ej12(x,y);

f=x.^3+y.^3;

Paso 2: Calcular la segunda derivada en el punto (0,0) mediantefdhess:H=fdhess(’ej12’,0,0)

Tras aplicar fdhess en este ejemplo, vemos que el resultado del cálculo es cero.MATLABr conrma lo que grácamente observamos en la Figura 5.9: la funciónx3 + y3 en (0,0) es plana, por lo que se concluye que allí la función no es creciente nidecreciente y que su tasa de crecimiento es exactamente igual a cero.

Page 172: Economia Matematica en Matlab-Gomez Norma

156 GEDEM - Versión Preliminar

Figura 5.9: La función f(x) = x3 + y3

5.2.5. Expansión de Taylor

A diferencia de las funciones, los polinomios son mucho más manejables desde laperspectiva del cálculo operacional y nos permiten un acercamiento más sencillo alproblema que se esté tratando. Por eso, es muy común aproximar funciones hallandosus derivadas superiores y organizándolas por medio de polinomios. Una forma dehacerlo es, para un x cercano a a:

f(x) = f(a)+f ′(a)(x−a)+f ′′(a)

2!(x−a)2+

f ′′′(a)3!

(x−a)3+· · · fn

n!(x−a)n+E(x, a, n)

(5.12)

que es llamado desarrollo de la función con una Expansión de Taylor. El términoE(x, a, n) determina el error de la aproximación a la función f(x). Cuando lım

n→∞E(x, a, n) =0 se dice que el desarrollo del polinomio alrededor de a converge a f(x) (Monsalve,2005).

Ejemplo 5.15. Veamos la función f(x) = 5x23 −32 y su aproximación de grado tres

por polinomio de Taylor alrededor del punto x = 12.

Paso 1: Crear la función a derivar en un M-le:function f=ej13(x)

f=5*x.^(2/3)-32;

Page 173: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 157

Paso 2: En otro chero determinar el punto donde se aproxima y losdatos pertinentes de la función:

xa=[-2:0.1:18];

x=12*ones(size(xa));

X(1,:)=ej13(xa);

Paso 3: Construir las derivadas de la función mediante un procesoiterativo:

for i=2:4

X(i,:)=gradient(X(i-1,:));

end

Paso 4: Encontrar el polinomio de Taylor alrededor de 12:

for k=1:4

POL(k,:)=(((X(k,:).*(xa-x).^(k-1)))/factorial(k-1));

end

poltaylor=sum(POL,1)

El resultado es una aproximación de Taylor de grado tres, evidente en la Figura 5.10junto a la gráca de la función. La diferencia entre ambas grácas está determinadapor un término de error que es inversamente proporcional a aumentos en el orden de laaproximación, es decir, si incrementaramos arbitrariamente el número de derivacionesobtendríamos una aproximación más precisa a la función en el punto 12 y su vecindad.De esta forma, la aproximación es útil para acercarse a la función solamente en unpunto previamente establecido y su vecindad porque, al alejarse de ese punto, loserrores crecen y la aproximación pierde sentido.

5.2.6. 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 cantidadagregada del bien (Q = q1 + q2, donde q1 es la cantidad producida por la rma 1y q2 es el producto de la rma 2). Cada una de las rmas i tiene una función decostos cuadrática de la forma q2

i2 . Supongamos que las rmas son racionales y desean

maximizar benecio. ¾Cuál es el equilibrio de esta economía?

Page 174: Economia Matematica en Matlab-Gomez Norma

158 GEDEM - Versión Preliminar

−2 0 2 4 6 8 10 12 14 16 18−70

−60

−50

−40

−30

−20

−10

0

10

20

30

x

f(x)

f(x)AproximacionPunto x

Figura 5.10: La función f(x) = 5x23 − 32 y su aproximación de grado tres

Primero debemos establecer cuál es el problema que quiere resolver cada una de lasrmas. La empresa i vende una cantidad qi y, dado que acepta el precio que tiene enel mercado, recibe un total de pqi. Como también enfrenta costos, el benecio de larma i es la diferencia entre sus ingresos y sus costos,

π = pqi − c(qi) (5.13)

donde π es el benecio. En cálculo, el valor de la variable que hace que la primeraderivada sea cero es un punto crítico de la función (léase máximo, mínimo o simple-mente un cambio en la forma de la función). Si derivamos parcialmente la funciónde benecio de la rma (o sea, la derivada es parcial porque la rma 1 controla laproducción de sus fábricas pero no la cantidad de la rma 2) y lo igualamos a cero,obtenemos un punto crítico de la función. No obstante, para saber si este resultadoes un máximo o un mínimo debemos recurrir a la segunda derivada: si es positiva,estamos hablando de un mínimo, si es negativa, un máximo. Veamos entonces cuáles la función de benecio común para esta economía:

π = (100−Q)qi − q2i

2(5.14)

Como el problema es maximizar la ecuación (5.14), establezcamos la primera y lasegunda derivada de la función para la rma 1:

Paso 1: Escribir un M-le cournot.m

Page 175: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 159

function pi=cournot(q1,q2);

pi=(q1.*(100-q1-q2))-((q1.^2)/2);

Paso 2: Crear los datos de la variable q1, de la variable q2 y de lafunciónq1=[0:1:100]; q2=q1;

[QU,QD]=meshgrid(q1,q2);

Z=cournot(QU,QD);

Paso 3: Invocar el comando gradient para las derivadas[PX,PY]=gradient(Z,1,1);

[PXX,PYX]=gradient(PX,1,1)

[PXY,PYY]=gradient(PY,1,1);

Como nuestro interés es la derivada parcial de la ecuación (5.14) respecto a la variablebajo el control de la rma 1 (q1), debemos observar cuáles son los signos de loselementos de PXX para saber si estamos encontrando un máximo o un mínimo. Laconclusión es la esperada: cada componente de PXX es negativo, es decir, el puntocrítico que hallemos para el problema es un máximo. De otro lado, el resultado deambas derivadas cruzadas es el mismo y es negativo, por tanto, el bien producidopor una de las rmas es sustituto de la otra, resultado que habíamos supuesto desdeel principio al armar que ambas hacían el mismo producto (en otras palabras, antecualquier eventualidad con el producto de la rma 1, el consumidor puede desplazarsu preferencia hacia el producto de la rma 2, dado que son la mismo tipo de bien).

Al igualar PX a cero determinamos cuál es la respuesta óptima de la rma 1 antecambios en la producción de la 2, entonces la primera derivada de una función igua-lada a cero es la Función de Mejor Respuesta de la rma, que ja cuánto es óptimoproducir ante cualquier estrategia de su competidora. Cada una de las funciones demejor respuesta de este problema están descritas en la Figura 5.11, gráca que seobtiene de hacer la curva de nivel de la primera derivada en (0,0) con contour

(QU,QD,PX,[0 0]).

El equilibrio de este modelo está caracterizado por el punto de corte entre ambasfunciones de mejor respuesta: esa es la cantidad a producir de cada una de las rmas,evidente en la Figura 5.11 con el punto negro. Como el problema es simétrico (ambasrmas maximizan la misma función de benecio), una buena posibilidad de encontrarel equilibrio computacionalmente es suponer de antemano que la cantidad producida

Page 176: Economia Matematica en Matlab-Gomez Norma

160 GEDEM - Versión Preliminar

0 10 20 30 40 50 60 70 80 90 1000

10

20

30

40

50

60

70

80

90

100

q1

q2

q2*

q1*

Funcion de mejor respuesta Firma 1

Funcion de mejor respuesta Firma 2

Figura 5.11: El duopolio de Cournot

de ambas rmas es la misma, por ende, se establece dónde están los puntos de lacurva de nivel de PXX en (0,0), para después determinar cuáles de los componentesde los vectores posición en la matriz de datos iniciales son iguales. Esta forma es laque se desarrolla en el siguiente script para localizar el equilibrio:

[i,j]=find(PX==0);

for n=1:length(i);

if QU(i(n),j(n))==QU(j(n),i(n))

l=i(n);

m=j(n);

else 0;

end

end

Así, el equilibrio q∗i es l=q∗1 = 26 y m=q∗2 = 26, o sea, cada una de las rmas produceuna cantidad igual a 26 unidades. Este resultado es exactamente el mismo que aquelque se logra si, en vez de analizar todo el problema a partir de la rma 1, trabajáramoscon la rma 2. La diferencia radica en la variable de control de la rma en cuestión,que sería entonces q2 y, de esa forma, al tomar el gradiente para la primera derivada,aquella matriz que habría que examinar sería la segunda.

Page 177: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 161

5.3. Ejercicios1. Una empresa tiene unos costos en función de la cantidad de la forma c(q) =

5q + 15. Encuentre numéricamente los costos marginales de la rma. ¾Cuántoes su costo jo? ¾Son estos costos marginales constantes? Si así lo son, ¾Quétipo de rendimientos presenta esta empresa?

2. Encuentre numéricamente la derivada de f(x) = 0.025x3.71−4x mediante diffy graque el resultado en MATLABr.

3. Una empresa tiene la siguiente función de producción: q = K13 L

23

a) Graque este función en MATLABr.b) Derive la función respecto al capital y al trabajo con gradient.c) Encuentre todas las segundas derivadas.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. La curva de demanda agregada esP (Q) = a − q1 − q2 − q3, donde qi es la cantidad producida por la rma i

(i = 1, 2, 3) y a > 0. Asuma que los costos de cada rma son cero.

a) Encuentre y graque en MATLABr las funciones de mejor respuesta decada rma.

b) Halle por métodos numéricos el equilibrio de Cournot de esta economía.c) ¾Que sucede si las rmas 1 y 2 se unen? Graque nuevamente y encuentre

el equilibrio.

5. En la Figura 5.10 la aproximación da ciertos saltos alrededor de cero. ¾Podríaexplicar por qué la función tiene este comportamiento? ¾Qué sucede en laaproximación cuando está alrededor de cero?

6. Es muy común que las personas compren seguros, de forma que transeranrecursos de un estado bueno a un estado malo, cuando realmente los necesiten.No obstante, para que este principio se cumpla, es necesario que el agente quecompre el seguro sea averso al riesgo y, para determinar esa aversión al riesgo,se recurre a una medida conocida como Coeciente de Aversión al Riesgo deArrow-Pratt, que se dene como:

σ = −cu′′(c)u′(c)

Page 178: Economia Matematica en Matlab-Gomez Norma

162 GEDEM - Versión Preliminar

En otras palabras, el coeciente de aversión al riesgo depende de las primerasdos derivadas de la utilidad. La siguiente función de utilidad es muy utilizada enmedición de la aversión al riesgo y se llama la función de Aversión ConstanteRelativa al Riesgo CRRA por sus siglas en inglés (Constant Relative RiskAversion):

u(c) =

c1−θ

1−θ Si θ > 0, θ 6= 1

ln c Si θ = 1

Si θ = 0.6, determine las dos primeras derivadas numéricas de la funciónCRRA, encuentre el coeciente de aversión al riesgo de Arrow-Pratt y gra-que en MATLABr. ¾Qué puede establecer a partir de las grácas?

7. Haga una programación que realice una aproximación de grado seis para lafunción f(x) = x2 − 4x

13 en el punto x = −9.

8. En la función determinada en el Ejemplo 5.13 evalúe con fdhess los puntos(75,-100) y (-75,100). ¾Qué puede decir respecto a las tasas de crecimiento dela función? Comparando los resultados con la Figura 5.8, ¾Qué puede concluirde la forma de la función? ¾Es cóncava? ¾Es convexa? Tome distintos puntos ydetermine qué sucede con el valor de fdhess conforme se va acercando a lasesquinas y alejando de cero.

9. Las siguientes ecuaciones

IS =1

1− c′(−c′dT + I ′dr + dG)− dy (5.15)

LM =1

my − FLL

F 2L

MP

(M

P

(dM

M− dW

W

)−mrdr

)− dy (5.16)

representan el equilibrio de los mercados de bienes, monetario y de trabajoen una economía y se llaman IS-LM. IS es la ecuación (5.15) y representa elequilibrio en el mercado de bienes (producto de la economía igual a demanda decada sector) y LM, la ecuación (5.16), es el equilibrio en el mercado monetario(oferta de dinero igual a demanda de dinero), además, y representa al productoy dy son sus cambios. Así, T son los impuestos, G el gasto público, r la tasade interés, M la masa monetaria, W el salario y dT, dG, dr, dM y dW susrespectivos cambios. FL y FLL son la primera y la segunda derivada de lafunción de producción (F (K, L)) respecto al trabajo. Las variables exógenas,es decir, aquellas cuyo valor se establece por fuera del modelo son dT, dG, dM ydW y las variables endógenas (cuyo valor se determina al cambiar una variable

Page 179: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 163

exógena) son dy y dr. Suponiendo que las variables exógenas no cambian (dT =dM = dW = 0) y que c′ = 0.4, I ′ = −1.2, my = 1.5, F (K, L) = K0.5L0.5,M = 0.02, P = 0.09 y mr = −0.9, determine la matriz jacobiana alrededor delpunto dy∗ = 0.1 y dr∗ = 0.08.

5.4. Apéndice

Otra forma de derivar en MATLABr es con el toolbox Symbolic que crea unobjeto simbólico, es decir, una estructura de datos que almacena una representacióncaracterística del símbolo. El comando syms permite construir variables y expresio-nes simbólicas, de forma que, analíticamente, se puedan hacer diferentes operacionesmatemáticas con ellas. En el caso de las derivadas, la rutina que permite obtenerlases diff. Veamos entonces cómo se puede derivar con objetos simbólicos.

Ejemplo 5.16. Derivemos la función f(x, 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, 3*x^2. Cuando que-remos hallar la segunda derivada de la función, se invoca al mismo comando, peroespecicando el grado de la derivación: diff(f,2). En este caso, el 2 muestra dequé orden es la derivada que MATLABr está calculando. Para encontrar la derivadade una constante también debe denirse la constante como una expresión simbólica:

Ejemplo 5.17. Derivemos c = 7 mediante una expresión simbólica.

Paso 1: Denir la expresión simbólica:

c=sym(’7’)

Page 180: Economia Matematica en Matlab-Gomez Norma

164 GEDEM - Versión Preliminar

Paso 2: Invocar el comando di:

diff(c)

El resultado de este proceso es ans=0. Si se hubiese ejecutado directamente diff(7)la respuesta sería [], porque 7 no es una expresión simbólica. Veamos la forma en laque se trabaja el comando cuando buscamos hallar derivadas parciales de expresionescon más de una variables:

Ejemplo 5.18. Hallemos la derivada parcial de f(x, y, z) = x3y5 + 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,y)

MATLABr mostrará entonces 5*x^3*y^4+z que es, simplemente, la derivada par-cial de f respecto a y. diff también permite encontrar la derivada de matricesconstituidas por elementos simbólicos de la siguiente manera:

Ejemplo 5.19. Hallemos la derivada de la matriz

A =

[mx

25 m cos(x)

−x sen(m) 3x + 5m

]

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);-x*sin(m) 3*x+5*m]

Paso 3: Invocar el comando di

diff(A)

Page 181: Economia Matematica en Matlab-Gomez Norma

Nombre del Capítulo 165

El resultado de invocar diff es la derivada de la matriz A respecto a x, determinadoen la ecuación (5.17), tras haber simplicado el resultado. Aquí, el comando ejecu-tó una derivación elemento a elemento tomando como input la matriz A. Ademáscuando, como en este caso, no se especica respecto a cuál variable el usuario quierederivar, automáticamente MATLABr lo hará con x y, si x no existe en la función,el default del programa es derivar con la variable más cercana a x entre las presentesen la función.

25

m

x35

−m sen(x)

− sen(m) 3

(5.17)

De otro lado, también es posible hacer Expansiones de Taylor analíticamente conel comando taylor. La sintaxis de esta rutina es, en primera instancia, denir laexpresión simbólica, para luego invocar el código con la función a aproximar, el ordeny el punto alrededor del que se hace la aproximación. Veamos el siguiente ejemplopara observar el uso de taylor:

Ejemplo 5.20. Aproximemos la función f(x) = x35 − 7x alrededor de 6 mediante

una Expansión de Taylor de tercer orden.

Paso 1: Denir la expresión simbólicasyms x

Paso 2: Invocar el comando, llamar la función y determinar el ordeny el punto de aproximación:F1=taylor((x^(3/5)-7*x),3,6)

La respuesta es F1, es decir, 635 − 42 +

(1/10 63/5 − 7

)(x− 6)− 1

300 635 (x− 6)2, que

es la Expansión de Taylor de tercer orden alrededor de 6 para f(x).

Page 182: Economia Matematica en Matlab-Gomez Norma

166 GEDEM - Versión Preliminar

Page 183: Economia Matematica en Matlab-Gomez Norma

Capítulo 6

IntegraciónLida Quintero, Diego Corredor

Introducción

En matemáticas observamos cómo a cada operación le corresponde una inversa. Así,la suma tiene la resta, la multiplicación la división, y la derivación, la integración. Enel capitulo anterior vimos la derivación y ahora nos corresponde exponer su inversa,la cual tiene dos interpretaciones:

La integración como un proceso para determinar la función cuando se conoce suderivada, lo que equivale formalmente a:

∫f ′(x)dx = f(x)

Y por otro lado, como herramienta para determinar áreas de regiones cuyos límitesno son rectas.

En economía la integración es útil para, determinar el impacto de un proyecto sobreel bienestar a partir de los excedentes del consumidor y productor; hallar una funciónde Costo Variable cuando conocemos la de Costo Marginal; evaluar el ingreso totalcomo el área bajo la curva del ingreso marginal y como herramienta para solucionarecuaciones diferenciales que representen la dinámica de sistemas económicos, entreotras aplicaciones.

167

Page 184: Economia Matematica en Matlab-Gomez Norma

168 GEDEM - Versión Preliminar

Integración

Indenida(Antiderivada)

Métodosde solución

Algebraico

Directos

Sustitución

Partes

Computacional1polyint

Syms int

Denida(Área bajo la curva)

Métodosde solución

Algebraicos(evaluados)

Directos

Sustitución

Partes

Numéricos(computacional)

Regla del Trapecio trapz

Regla de Simpson quad

Cuadratura Gaussiana

quad8

quadl

Para hallar integrales existen varios métodos: los analíticos o algebráicos como sonlos de sustitución y por partes, y los numéricos como regla del Trapecio y regla deSimpson. 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 inte-gración que MATLABrutiliza y que desde luego nos sirven sólo para la integracióndenida. En cuanto a la indenida, veremos en la primera sección la integración porregla del exponente y otro método en el apéndice de este capítulo. En la segundasección introducimos ya un método numérico: la Regla de Trapecio; en la terceraabordaremos la regla de Simpson; y por último, el cálculo de integrales dobles.

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

∫xndx =

xn+1

n + 1+ C

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

Page 185: Economia Matematica en Matlab-Gomez Norma

INTEGRACIÓN 169

Con el comando polyint, MATLABrdescompone el polinomio a integrar en variosmonomios y aplica a cada uno esta regla. Sin embargo este procedimiento presentala 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 valorde la constante de integración3. Y como salida obtenemos el vector la L con loscoecientes del polinomio integrado.

Ejemplo 6.1. Vamos a calcular la integral de f(x) = x4− 8x2 +3x, es decir, vamosa 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 obtenemosin = 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 costosmarginales están dados por la siguiente función:

CMg(q) =q3

3+ 2q + 5

Para hacerlo debemos hallar∫

( q3

3 + 2q + 5)dq asumiendo k = 0 ya que estamoscalculando los costos variables y no los totales.

3Si se omite, MATLABrasume k=0.

Page 186: Economia Matematica en Matlab-Gomez Norma

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.0833q4 +q2 +5q por mediode una antiderivada, es decir, integrando la función de costo marginal correspondien-te.

6.2. Regla del TrapecioLa Regla del Trapecio es considerada como un método de aproximación lineal porqueutiliza líneas rectas para aproximarse a una función dada f(x), lo que permite calcular∫ ba f(x)dx, de la forma como se muestra4 en la Figura 6.1.

Regla del Trapecio

−− ∆ x −−

a=x0

x1

x2 . . . x

n=b

y0=f(x

0)

yn−1

yn

x

y

Figura 6.1: Regla del Trapecio

En el intervalo [a,b] hay subdivisiones (nodos) de amplitud ∆x, en donde se trazauna recta entre las imágenes consecutivas, formando un trapecio. De esta manera, el

4Esta 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 aDraper (1979).

Page 187: Economia Matematica en Matlab-Gomez Norma

INTEGRACIÓN 171

área del primer trapecio está dada por:

12(y0 + y1)∆x

El área total de los n trapecios, es decir el área bajo la curva es:

∫ b

af(x)dx ' ∆x

[12(y0 + yn) +

n−1∑

i=1

yi

]

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

MATLABraplica este método por medio del comando trapz. Para utilizarlo esnecesario denir un vector x que determina el intervalo de integración [a,b] y ladistancia entre los nodos (∆x) 5. Además es necesario denir la función a integrarf(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 resultamuy útil para calcular probabilidades en estadística hallando el área bajo la curvade la función de densidad acumulada.

Ejemplo 6.3. Vamos a calcular∫ 7

2x4(49− x2)1/2dx

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

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

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

Page 188: Economia Matematica en Matlab-Gomez Norma

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 lotanto el resultado será más exacto. Es así como con un h=0.01 el área es igual a11504.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 unproducto donde p∗ = 4 y cuya función inversa de demanda está implícitamente dadapor:

p(q2 + 4q + 3) = 192

0 1 2 3 4 5 6 7 8 9 10 11

0

1

2

3

4

5

6

7

8

9

10

11

q

p

Ejemplo 7.4

Excedente del Consumidor

(q*,p*)

Figura 6.2: Excedente del Consumidor

Dado que p∗ = 4 y q∗ = 5 debemos hallar:∫ 5

0

192q2 + 4q + 3

dq − (4 ∗ 5)

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

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

Page 189: Economia Matematica en Matlab-Gomez Norma

INTEGRACIÓN 173

Paso 3. Calculamos el excedente del consumidor hallando el área bajo la curva enel intervalo y restando el área por debajo del precio de equilibrio, como lopodemos 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 elexcedente es igual a 57,85 y con h=0.000001 el área es igual a 57.8493.

Otra forma de calcular integrales en MATLABrhaciendo uso de la Regla del Tra-pecio 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 cadauno 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 elvector de abscisas y w es un vector de ponderaciones.

Ejemplo 6.5. Para observar las diferencias entre trapz y qnwtrap, solucionaremosla 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 ponderacio-nes w por el vector y:in=w’*y

El área bajo la curva es 11447.90 que es el mismo resultado alcanzado con elcomando trapz con h=0.1. Así podemos ver como, un aumento del número denodos en qnwtrap es equivalente a un h cada vez mas pequeño en el comandotrapz.

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

2y es ∆x para los demás.

Page 190: Economia Matematica en Matlab-Gomez Norma

174 GEDEM - Versión Preliminar

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

Regla de Simpson

a=x0

x1

x2 . . . x

n−2x

n−1x

n=b

y0

y1 y

2

yn−2 y

n−1

yn

x

y

Figura 6.3: Regla de Simpson

El área de la primera parábola sería:

∆x

3(y0 + 4y1 + y2)

La suma de todas las áreas del intervalo [a,b], constituye la integral denida de lafunción es decir:

∫ b

af(x)dx ' ∆x

3

[y0 + 4y1 + 2y2 + . . . + 2yn−2 + 4yn−1 + yn

]

que es la regla de Simpson para la integración aproximada10.8Sin embargo, la regla del trapecio resulta más precisa en casos en los que el integrando pre-

senta discontinuidad en la primera derivada, lo cual puede ocurrir en aplicaciones económicas consoluciones de esquina.

9Ver Monsalve (2005a)10Esta notación sigue a Draper (1979). Para una revisión más profunda ver Leithold (1979).

Page 191: Economia Matematica en Matlab-Gomez Norma

INTEGRACIÓN 175

Este método de integración es calculado por MATLABra 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 utilizaremosla primera:y=inline(’f(x)’)

in=quad(’y’,a,b)

Ejemplo 6.6. Determinar el área bajo la curva, de 1√1+x2

es decir, calcular:∫ 1

0

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

(q + 1)dq

Paso 1. Debemos crear la función, en este caso lo haremos como expresión, directa-mente 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 enMATLABrhaciendo uso de la Regla de Simpson,es por medio del comando qnwsimp, que hace parte del Compecon Toolbox. Susintaxis es similar a la del comando qnwtrap con los mismos inputs y obteniendoresultados análogos.

Page 192: Economia Matematica en Matlab-Gomez Norma

176 GEDEM - Versión Preliminar

0 2 4 6 8 10 12

0

2

4

6

8

10

12

q

p

Ejemplo 7.4

Excedente del Productor

Figura 6.4: Excedente del Productor

Ejemplo 6.8. Para observar las diferencias entre quad y qnwsimp, solucionaremosla integral del Ejemplo 6.6 con 50 nodos.

Paso 1. Utilizamos la sintaxis del comando:[x,w]=qnwsimp(50,0,1);

Paso 2. Creamos el vector imagen:y=(1./(1+x.^2).^(1/2))

Paso 3. Para obtener la integral, multiplicamos el vector traspuesto de ponderacio-nes w por el vector y:in=w’*y

Obtenemos:in= 0.8814

6.4. Integrales DoblesSon las inversas de la diferenciación parcial, por tanto se utilizan cuando tenemosfunciones de dos variables (en tres dimensiones). Así, lo que se evalúa en este caso esel volumen localizado bajo la supercie de la función (si ésta es positiva), por encimade la región del plano xy (ver Figura 6.5).

Page 193: Economia Matematica en Matlab-Gomez Norma

INTEGRACIÓN 177

bac

d

Figura 6.5: Integración Doble

Para evaluar una integral doble, primero se integra con respecto a una variable(considerando la otra constante) y el resultado se integra luego con respecto a laotra variable11.

∫ b

a

∫ d

cf(x, y)dydx

Es importante observar que el proceso se realiza de adentro hacia afuera; así, en laintegral anterior primero se integra respecto a la variable y en el intervalo [c,d], y elresultado se integra respecto a x en el intervalo [a,b].

Para realizar esta operación,MATLABrutiliza el comando dblquad, el cual requie-re como inputs f(x, y) y los intervalos de integración para cada variable. De acuerdocon la fórmula anterior, tenemos que a ≤ x ≤ b y c ≤ y ≤ d. La sintaxis del comandodblquad es: 12

ind=dblquad(f(x,y),a,b,c,d)

11Ver (Monsalve 2005b).12La función puede ser denida como explicamos para el comando quad, es decir como expresión,

objeto inline o M-file.

Page 194: Economia Matematica en Matlab-Gomez Norma

178 GEDEM - Versión Preliminar

Ejemplo 6.9. Evaluar:∫ 3

1

∫ 2

0(x + y)dxdy

Creamos la función y ejecutamos el comando dblquad, y sus respectivos intervalos13:ind=dblquad(’x+y’,0,2,1,3)

Y obtenemos:ind = 12

Es decir, 12 unidades cúbicas ya que corresponde al volúmen existente en los inter-valos dados.

Ejemplo 6.10. Evaluar:∫ 3

−2

∫ 7

5x3 + 2xy dydx

Creamos la función, utilizando a la vez el comando dblquad, y sus respectivosintervalos:ind=dblquad(’x.^3+2.*x.*y’,-2,3,5,7)

Obteniendo como respuesta:ind = 92.5

unidades cúbicas.

Ya hemos visto en este capítulo los métodos que tiene MATLABrpara integrar, ycon él concluimos la parte correspondiente a Cálculo del libro. Pero las integralesson mucho más de lo que hasta aquí conocemos, pues ellas también son utilizadaspara evaluar funciones en diferentes contextos como en optimización, también enlos métodos de solución de ecuaciones diferenciales. De estos y otros temas, nosocuparemos en la siguiente parte del libro.

Ejercicios1 Un mercado de competencia perfecta tiene una función inversa de demanda dada

por p = 10− 2q y oferta p = 32q + 1

13Teniendo en cuenta que a,b son los límites del intervalo de x; c,d los de y

Page 195: Economia Matematica en Matlab-Gomez Norma

INTEGRACIÓN 179

a. Encuentre Precio y Cantidad de Equilibrio14

b. Encuentre Excedente del Consumidor y del Productor, utilizando:

• Fórmulas de área triangular.• Método trapz y qnwtrap• Método quad y qnwsimp

c. Calcule con los mismos métodos, los nuevos excedentes si se coloca un im-puesto al producto de este mercado, que hace aumentar el precio a 6.

2 Calcule por medio de trapz, quad, qnwtrap, qnwsimp:∫ 01 x2 ln xdx

∫ 02 t3/

√4 + t2

∫ π/2π/8 xex/(1 + x2)

3 La oferta de un mercado está dada por QO = −10 + 11p−1p2 y la demanda por

QD = 80− p3

a. Determine los Excedentes del Consumidor y del Productor por los métodosqnwtrapz y qnwsimp, para hacerlo es necesario determinar el precio y lacantidad de equilñibrio.

b. Si un impuesto aumenta el precio a 13, calcule la pérdida irrecuperable deeciencia.

4 El costo marginal de una empresa de Plásticos CMg como función de los metrosproducidos x, esta dado por CMg(y) = 11.64− 0.5x, si sabemos que el costo jopor metro es de 16.3 halle el Costo Total y el Costo Medio.

5 La propensión marginal a consumir en cierta economía cerrada, esta dada porC(Y ) = 2005.9876+1.2(Y 1.7), donde Y representa el ingreso. Determine la funciónde consumo de esta economía.

APENDICEAdemás de los métodos numéricos para hallar integrales denidas, existen métodosalgebraicos para hallar integrales indenidas como se observa en el diagrama que se

14Podemos utilizar rref del Capítulo 2, por tratarse de ecuaciones lineales.

Page 196: Economia Matematica en Matlab-Gomez Norma

180 GEDEM - Versión Preliminar

presenta en este capítulo. Debido a la naturaleza de este último tipo de problemas,es necesario trabajar con expresiones simbólicas. Para ello, como se explicó en elcapítulo anterior, MATLABrdispone de un Toolbox que trabaja con este tipo deoperaciones, llamado Symbolic Toolbox. Con el n de explicar el funcionamiento deesta herramienta encontremos:∫

x4(49− x2)1/2dx

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

+2401/16*x*(49-x^2)^(1/2)+117649/16*asin(1/7*x)

Para calcular esta integral en el intervalo [2, 7] debemos denir las variables simbó-licas y la función como en el ejemplo anterior, y luego ejecutar int(f,2,7)

La integral denida en el intervalo [2, 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 probabilida-des. Sin embargo, esto también se puede realizar utilizando Statistical Toolbox, paralo que recomendamos estudiar los manuales disponibles en la Web.

Page 197: Economia Matematica en Matlab-Gomez Norma

Parte III

OPTIMIZACIÓN Y DINÁMICA

181

Page 198: Economia Matematica en Matlab-Gomez Norma
Page 199: Economia Matematica en Matlab-Gomez Norma

Capítulo 7

Concavidad y Convexidad

Norma Gómez, Norman Maldonado

Generalmente en economía matemática se trabajan problemas de tipo estático y detipo dinámico. Los problemas estáticos implican certidumbre (determinísticos), mien-tras que los dinámicos pueden ser de certidumbre o de incertidumbre (estocásticos).En cada problema existen funciones y algoritmos de optimización. Por ejemplo, enun problema de tipo estático y determinístico existen funciones que pueden ser cón-cavas, convexas, cuasicóncavas y cuasiconvexas1, y algoritmos de optimización comola programación lineal, el teorema de Lagrange y el teorema de Kuhn-Tucker. Otroejemplo es un problema de tipo dinámico y determinístico, en donde existen funcio-nes como las ecuaciones diferenciales y en diferencias, y algoritmos de optimizacióncomo el cálculo de variaciones y la teoría del control óptimo.

Este capítulo tiene como objetivo analizar las propiedades de las funciones utilizadasen problemas de optimización estática. Especícamente, vamos a abordar el análi-sis de concavidad, convexidad, cuasiconcavidad y cuasiconvexidad de una función apartir de herramientas computacionales.

El capítulo 8 presentará el uso de estas herramientas para el desarrollo de algoritmosde optimización estática,y el capítulo ?? analiza las funciones utilizadas en problemasdeterminísticos dinámicos, es decir, las ecuaciones diferenciales y las ecuaciones endiferencias. Tanto los algoritmos de optimización dinámica en problemas determinís-ticos como las funciones y los algoritmos de optimización en problemas estocásticos

1Existen otros tipos de funciones. Se utiliza esta clasicación por su utilidad para ubicar máximosy mínimos.

183

Page 200: Economia Matematica en Matlab-Gomez Norma

184 GEDEM - Versión Preliminar

no son nuestro objeto de análisis2.

En la primera sección se exponen las deniciones de función cóncava, convexa, cuasi-cóncava y cuasiconvexa, sus criterios de clasicación y los métodos computacionalespara realizar esta clasicación. En la segunda se utilizan estos conceptos y criteriospara estudiar funciones univariadas. En la tercera se extiende el análisis a funcionescon dos variables y nalmente en la última sección se analizan funciones multivaria-das.

En cada sección se explicarán las herramientas de las que dispone MATLABrparaanalizar una función por diferentes métodos, y se darán algunos ejemplos. Al naldel capítulo se plantean algunos ejercicios que servirán al estudiante para desarrollaragilidad en el análisis de funciones a partir de métodos numéricos y en la aplicaciónde este análisis para la solución de problemas de optimización estática en economía.

7.1. Conceptos

Las deniciones que se presentan en esta sección son tomadas de Monsalve (2004),mientras que los criterios de clasicación son tomados de Mora (2001).

7.1.1. Deniciones

Concavidad, convexidad, cuasiconcavidad y cuasiconvexidad de una función.

Dados una función f(~x) = f(x1, x2, ..., xn) denida en un conjunto convexoS ∈ Rn, dos puntos P1, P2 ∈ S, y un parámetro λ ∈ [0, 1], se tienen lossiguientes tipos de funciones según su forma:

Cóncava: f(λP1 + (1− λ)P2) ≥ λf(P1) + (1− λ)f(P2) (7.1a)Convexa: f(λP1 + (1− λ)P2) ≤ λf(P1) + (1− λ)f(P2) (7.1b)Cuasicóncava: f(λP1 + (1− λ)P2) ≥ Minf(P1), f(P2) (7.1c)Cuasiconvexa: f(λP1 + (1− λ)P2) ≤ Maxf(P1), f(P2) (7.1d)

Además, se dice que la función es estricta si estas desigualdades son estrictasy se satisfacen para P1 6= P2 y λ ∈ (0, 1).

Matriz Hessiana2Ver ?), Fackler (2003) y Judd (1998).

Page 201: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 185

Hf(~x) =

fx1x1 fx1x2 . . . fx1xn

fx2x1 fx2x2 . . . fx2xn

... ... . . . ...fxnx1 fxnx2 . . . fxnxn

(7.2)

Matriz Hessiana Orlada

Hf(~x) =

0 fx1 fx2 . . . fxn

fx1 fx1x1 fx1x2 . . . fx1xn

fx2 fx2x1 fx2x2 . . . fx2xn

... ... ... . . . ...fxn fxnx1 fxnx2 . . . fxnxn

(7.3)

Curvas de Nivel y Conjuntos Contorno

Sea f(~x) una función denida en un conjunto convexo S de Rn. Para cadanúmero real α se dene una curva de nivel CNα por la relación:

f(~x) = α (7.4)

Además, para cada número real α se dene el Conjunto Contorno SuperiorCSα por la relación:

CSα = ~x ∈ S : f(~x) ≥ α (7.5)

Similarmente, para cada número real α se dene el Conjunto Contorno InferiorCIα por la relación:

CIα = ~x ∈ S : f(~x) ≤ α (7.6)

7.1.2. Criterios de clasicación

Sean S un conjunto convexo abierto y no vacío, f : S −→ R doblemente diferenciable.Entonces se tiene que:

Proposición 7.1. La función f es cóncava (estrictamente cóncava) si −f es convexa(estrictamente convexa).

Page 202: Economia Matematica en Matlab-Gomez Norma

186 GEDEM - Versión Preliminar

Proposición 7.2. La función f es cuasicóncava (estrictamente cuasicóncava) si −f

es cuasiconvexa (estrictamente cuasiconvexa).

Proposición 7.3. Si f es cóncava (convexa), entonces f es cuasicóncava (cuasicon-vexa).

Proposición 7.4 (Función Cóncava). La función f es cóncava (estrictamente cón-cava) si y solamente si la matriz hessiana Hf es semidenida negativa (denidanegativa) en todo punto x de S.

Proposición 7.5 (Función Convexa). La función f es convexa (estrictamente con-vexa) si y solamente si la matriz hessiana Hf es semidenida positiva (denidapositiva) en todo punto x de S.

Proposición 7.6 (Función Cuasicóncava - H). Una condición suciente para quef(~x) sea cuasicóncava es que (−1)kDk(~x) ≥ 0 para todo k = 1, . . . , n y todo ~x ∈ S,donde Dk es el menor principal dominante de orden k de la matriz Hessiana OrladaH.

Proposición 7.7 (Función Cuasicóncava - Conjuntos Contorno). La función f(~x)es cuasicóncava si el Conjunto Contorno Superior CSα = ~x ∈ S : f(~x) ≥ α esconvexo para todo número α.

Proposición 7.8 (Función Cuasiconvexa - H). Una condición suciente para quef(~x) sea cuasicóncava es que Dk(~x) ≤ 0 para todo k = 1, . . . , n y todo ~x ∈ S, dondeDk es el menor principal dominante de orden k de la matriz Hessiana Orlada H.

Proposición 7.9 (Función Cuasiconvexa - Conjuntos Contorno). La función f(~x) escuasiconvexa si el Conjunto Contorno Inferior CIα = ~x ∈ S : f(~x) ≤ α es convexopara todo número α.

7.1.3. Métodos

En funciones continuamente diferenciables, la segunda derivada permite analizar laconcavidad y convexidad de una función, y una combinación de la primera y lasegunda derivada permite determinar la cuasiconcavidad y cuasiconvexidad de unafunción. Para analizar la forma de una función enMATLABrvamos a utilizar cuatrométodos diferentes3:

3Todos los métodos llegan a la misma conclusión

Page 203: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 187

1. Gráco. Consiste en visualizar grácamente la función y las deniciones 7.1,y dependiendo de qué desigualdades se satisfacen, se concluye sobre la formade la función (cóncava, convexa, cuasicóncava o cuasiconvexa). Este métodopresenta la limitación de ser útil solo para funciones de una o dos variables, yaque se éstas se pueden visualizar en R2 y en R3, respectivamente.

2. Matriz Hessiana. Consiste en realizar una aproximación numérica del valor dela matriz hessiana de una función en un punto determinado, repetir el mismoproceso para un conjunto nito de puntos, y a partir del análisis apropiadode estos valores en cada punto concluir sobre la concavidad o convexidad deuna función en el conjunto nito de puntos. Este método aplica para funcionesmultivariadas y su única limitación se presenta cuando se trabaja con funcionesno muy bien comportadas (por ejemplo, funciones discontinuas o con esquinas),en las que la aproximación numérica de la Hessiana puede producir grandeserrores de aproximación.

3. Conjuntos Contorno. Consiste en gracar las curvas de nivel de la funcióny a partir de éstas determinar la convexidad del conjunto contorno superioro inferior4, y así concluir sobre la cuasiconcavidad y cuasiconvexidad de lafunción. Este método tiene una limitación similar a la del método gráco. Lascurvas de nivel de una función de una variable se visualizan en R1, las deuna función de dos variables se visualizan en R2 y las de una función de tresvariables se visualizan en R3. Por lo tanto, en funciones que posean más de tresvariables no se pueden visualizar las curvas de nivel, y no es posible analizargrácamente la convexidad de los conjuntos contorno.

4. Matriz Hessiana Orlada. Esta matriz se utiliza para analizar la cuasiconcavi-dad y cuasiconvexidad de una función multivariada. Computacionalmente, elmétodo es análogo al de la matriz Hessiana5: se aproxima numéricamente laMatriz Hessiana Orlada (HO) en un punto determinado, se repite el procesoen 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 eseconjunto.

4Recuérdese que la convexidad de un conjunto es un concepto diferente al de convexidad de unafunción.

5Por lo que sus limitaciones son las mismas.

Page 204: Economia Matematica en Matlab-Gomez Norma

188 GEDEM - Versión Preliminar

7.2. Funciones UnivariadasUna función univariada f(~x) se dene como una función cuyo dominio y rango estándenidos en R1. Una función univariada y sus derivadas pueden ser visualizadasen R2. Para analizar las deniciones 7.1 en una función univariada utilizaremos elmétodo gráco, las derivadas de la función6 y los conjuntos contorno.

1. Método gráco. Retomando conceptos del capítulo 4, analizar grácamente unafunción univariada en MATLABrrequiere 3 pasos:

Paso 1. Crear la función. Esto se puede hacer creando un m-file que con-tenga la función o utilizando el comando inline.

Paso 2. Crear los datos de la variable x y de la función f(x).

Paso 3. Invocar la rutina plot para gracar.

2. Derivadas de la función. En MATLABr, podemos obtener información de lasegunda derivada de una función, de diferentes formas: calcular manualmentefxx y gracarla, calcular el gradiente numérico de f y analizar su pendiente,calcular sucesivamente gradientes numéricos y por último utilizar la funciónfdhess o fhess de Compecon. En todos los métodos puede ser útil gracarlos resultados numéricos.

3. Conjuntos Contorno. En funciones univariadas, las curvas de nivel son puntosubicados en la recta real. Podemos utilizar MATLABrpara ver grácamentelas curvas de nivel y los conjuntos contorno.

Ejemplo 7.1. Analizar la concavidad y convexidad de la función f(x) = Ln(x) porel método gráco.

Paso 1. Crear la función en un M-file llamado fej1, así:

function f=fej1;

f=log(x)

Paso 2. Crear los datos de la variable x y de la función f(x):x=[1:0.02:15];

y=fej1(x); % f(x)

6El análisis de estas derivadas corresponde, en el caso univariado, al análisis de Matriz Hessianay Hessiana Orlada del caso multivariado.

Page 205: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 189

Paso 3. Invocar la rutina para gracar:

plot(x,y)

b=0.2

c=0.1

line([3.5,13.5],[f(3.5),f(13.5)],’color’,’r’,’LineStyle’,’-’)

text(3.5-b,f(3.5)+b,’P_ 1’,’Fontsize’,10,’Fontweight’,’Bold’)

text(13.5+c,f(13.5)-c,’P_ 2’,’Fontsize’,10,’Fontweight’,’Bold’)

0 5 10 150

0.5

1

1.5

2

2.5

3

x

f(x)

f(x) = ln x

P1

P2

Figura 7.1: Método gráco

MATLABrarroja como resultado la Figura 7.1. Tomando los puntos P1 y P2 de lagráca, se observa que se cumple la denición de función cóncava en 7.1. Se observatambién que con culaquier par de puntos esta denición se satisface. Por lo tantopodemos decir que la función es cóncava.

Ejemplo 7.2. 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 supendiente).

Paso 1. Crear la funcion

f=inline(’x.^3-4*x.^2+8’)

Paso 2. Crear los datos

Page 206: Economia Matematica en Matlab-Gomez Norma

190 GEDEM - Versión Preliminar

h=0.01 % Amplitud de x y del gradiente

x=[-2:h:5];

y=f(x);

Paso 3. Calcular el gradiente numérico

fx=gradient(y,h)

Mediante la instrucción plot(x,y,x,fx) se pueden visualizar grácamente losresultados, como en la Figura 7.2.

−2 −1 0 1 2 3 4 5−20

−10

0

10

20

30

40

x

f(x)

Gradiente Numérico − f(x) = x 3 − 4x2 + 8ffx

Figura 7.2: Gradiente numérico

Como se mencionó anteriormente, la segunda derivada fxx es la pendiente de lafunción fx. Por esta razón, si la primera derivada de la función fx es creciente (odecreciente) está indicando que la segunda derivada de f es positiva (o negativa) ypor lo tanto la función es convexa (o cóncava).

En la gura 7.2 se observa que la primera derivada de la función f (es decir, fx,representada en el gráco con fx) es decreciente (f es cóncava) hasta un punto deinexión p ∈ [1, 2]. ¾Cómo determinar cuál es ese punto?. Notemos que el punto deinexión es el valor mínimo de fx, y que los valores numéricos de x y de la primeraderivada de la función fueron guardados en las variables x y fx en MATLABr,respectivamente. Por tanto, para saber cuál es aproximadamente el punto de inexiónbasta con hallar el valor de x que corresponde al más pequeño de todos los númeroscontenidos en el vector fx, para lo cual podemos utilizar el comando min, así:

Page 207: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 191

[p,i]=min(fx) % Mínimo de fx

pinf=[x(i) p] % Punto de inflexion

La primera línea encuentra el más pequeño de todos los valores de la primera derivadade f (fx), guarda este valor en p y la posición que éste valor ocupa dentro del vectorfx la guarda en i. La segunda línea guarda en pinf el valor mínimo de la primeraderivada (p) y su correspondiente valor en x (x(i)). Este procedimiento arroja comoresultado:

pinf = 1.3300 -5.3332

El valor 1.333 (equivalente a 86) es el punto x en el que la función f(x) pasa de ser

cóncava a ser convexa.

Ejemplo 7.3. Analizar la concavidad y convexidad de la función f(x) =√

x por elmétodo de derivadas (analizando la segunda derivada de la función).

Paso 1. Crear la funcion

f=inline(’sqrt(x)’)

fxx=inline(-0.25x^(-1.5)

Paso 2. Crear los datos

h=0.00001;

x=[0:h:2];

y=f(x);

y2=f2(x);

Paso 3. Gracar la función y su segunda derivada

plot(x,y)

hold on

plot(x,y2)

Para hacer el análisis de la concavidad y convexidad de esta función, calculamosla segunda derivada y la introducimos como otra función en el programa (y2). Enla Figura 7.3 observamos que la segunda derivada es decreciente, indicando que lafunción es cóncava.

Ejemplo 7.4. Analizar la concavidad y convexidad de la función f(x) =√

x7 porel método de derivadas (calculando gradientes de la función sucesivamente).

Page 208: Economia Matematica en Matlab-Gomez Norma

192 GEDEM - Versión Preliminar

0.5 1 1.5 2 2.5 3 3.5 4−30

−20

−10

0

10

20

30

x

f(x)

f = x3.5 − 0.25x4.5 − fxx = 8.75x 1.5 − 3.15x2.5

ffxx

Figura 7.3: Gradiente numérico

Paso1. Crear la función f y su segunda derivada fxx

f=inline(’x.^3.5)’);

Paso2. Crear los datos

h=0.001;

x=[0.2:h:4]; y=f(x);

Paso3. Calcular el gradiente numérico

yxx=gradient(gradient(y,h),h)

Paso4. Gracar la función y su segunda derivada (calculada numéricamente)

plot(x,y)

hold on

plot(x,yxx)

A partir de los conceptos vistos en el capítulo 5, el comando gradient en el pro-grama permite calcular numéricamente la segunda derivada de la función como elgradiente de la primera derivada. Gracando simultáneamente esta segunda derivadacon la función, obtenemos la Figura 7.3. De esta gura sabemos la segunda derivadafxx es positiva en el intervalo en que la función es convexa. Existe un punto deinexión en el intervalo x = [2.5, 3.5] en donde la función pasa a ser cóncava.

Page 209: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 193

El cálculo de la segunda derivada numérica está almacenado en el vector yxx. Elpunto de inexión es el valor de este vector más cercano a cero7 y su posición dentrode ese vector.

ind=find(yxx>-10*h&yxx<10*h);

pinf=[x(ind);yxx(ind)];

En la primera línea, el comando find encuentra la posición de los valores del vectoryxx que son mayores que -0.01 (−10 ∗ h), y menores que 0.01(10 ∗ h); este es elcriterio para determinar los valores sucientemente cercanos a cero.8

La segunda línea almacena en el vector pinf los elementos de los vectores x y yxxcorrespondientes a las posiciones del vector ind. De esta forma el vector pinf es:pinf = 2.7780

-0.0032

Una de las ventajas que ofrece este método es que el cálculo de la segunda derivada esnumérico, por lo que no requiere que se introduzca explícitamente la forma funcionalde la segunda derivada.

Ejemplo 7.5. Analizar la concavidad y convexidad de la función f(x) = x2x2+3

porel método de derivadas (utilizando fhess).

Paso 1. Crear la función f

f=inline(’x./(2*x.^2+3)’);

Paso 2. Crear los datos

h=0.001;

x=[-2:h:2];

y=f(x);

Paso 3. Calcular la segunda derivada por medio de fhess

for i=1:length(x)

fxx(i)=fhess(f,[1,1],x(i));

end;

7Se selecciona el más cercano a cero porque el cálculo del vector yxx es numérico, y por lo tantoninguno de sus componentes es exactamente igual a cero.

8Aunque este valor puede ser menor, notemos que el elemento más pequeño (en valor absoluto)del vector yxx es 0.0032, por lo que si estableciéramos un criterio menor (por ejemplo 0.001),no encontraríamos el punto de inexión.

Page 210: Economia Matematica en Matlab-Gomez Norma

194 GEDEM - Versión Preliminar

Paso 4. Gracar la función y su segunda derivadaplot(x,y)

hold on

plot(x,fxx)

−2 −1.5 −1 −0.5 0 0.5 1 1.5 2−0.4

−0.3

−0.2

−0.1

0

0.1

0.2

0.3

0.4

x

f(x)

Segunda Derivada Numérica − f(x) = x/(2x 2+3)ffxx

Figura 7.4: Segunda derivada con fhess

La Figura 7.4 muestra que la segunda derivada es positiva en el intervalo en el quela función es convexa hasta el punto de inexión x = 0, y a partir de allí la funciónse hace cóncava y se segunda derivada negativa.

Ejemplo 7.6. Analizar la cuasiconcavidad y cuasiconvexidad de la función f(x) =x2 por medio de sus conjuntos contorno.

Para ver grácamente la cuasiconcavidad o cuasiconvexidad de esta función, en pri-mer lugar tenemos que trazar una curva de nivel de referencia, por ejemplo, tomemosf = 9. Luego de ello trazamos otras dos curvas de nivel: una mayor (f = 16) y unamenor (f = 4). Por último determinamos los conjuntos contorno. El conjunto con-torno superior es aquel conjunto hacia el cual crecen las curvas de nivel, mientrasque el conjunto contorno inferior se ubica en aquella región hacia la cual decrecenlas curvas de nivel. Grácamente, se tiene la Figura 7.5.

A partir de la curva de nivel de referencia f = 9, el conjunto contorno superiorcorresponde al conjunto [−5,−3] ∪ [3, 5]9, porque en esta dirección están las curvas

9Siendo rigurosos, el conjunto contorno superior en este caso corresponde a [−∞,−3] ∪ [3,∞].

Page 211: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 195

−5 −4 −3 −2 −1 0 1 2 3 4 50

5

10

15

20

25

x

f(x)

y=9

y=4

y=16

f(x) = x2

Figura 7.5: Conjuntos Contorno de f(x) = x2

de nivel de mayor valor (f = 16). Este conjunto está señalado en la gráca con elmarcador o . El conjunto contorno inferior, donde se ubican las curvas de nivel demenor valor (f = 4), corresponde al conjunto [−3, 3], y está señalado en la grácacon el marcador * . De estos dos conjuntos, solo el conjunto contorno inferior esconvexo, por lo cual podemos concluir que la función es cuasiconvexa.

Ejemplo 7.7. Analizar la cuasiconcavidad y cuasiconvexidad f(x) = x3 − 4x2 + 6por medio de sus conjuntos contorno.

De nuevo, tenemos que jar tres curvas de nivel: una de referencia (f = 1) y dosque se ubican por encima (f = 4) y por debajo (f = −2) de la curva de nivel dereferencia. Luego de ello, señalamos grácamente los conjuntos contorno superior (o)e inferior(*) y determinamos cuál de estos dos conjuntos es convexo.

El conjunto contorno inferior, donde se ubican las curvas de nivel de menor valor(f = −2), está señalado con * y corresponde al conjunto [−1.5,−1]∪[1.38, 3.61]10.El conjunto contorno superior, donde se ubican las curvas de nivel de mayor valor

Hemos asumido el conjunto [−5,−3]∪ [3, 5] para ilustrar el ejemplo de manera precisa en la gráca.10Ver nota 7

Page 212: Economia Matematica en Matlab-Gomez Norma

196 GEDEM - Versión Preliminar

−1 0 1 2 3 4

−6

−4

−2

0

2

4

6

8

x

f(x) y=1

y=4

y=−2

f(x) = x 3 − 4x2 + 6

Figura 7.6: Conjuntos Contorno

(f = 4), está señalado con o y corresponde al conjunto [−1, 1.38] ∪ [3.61, 4.2].Ninguno de estos dos conjuntos es convexo, por lo que la función no es cuasicóncavay tampoco es cuasiconvexa.

De aquí en adelante asumiremos como convención que el método de análisis de deri-vadas corresponde al cálculo numérico de la segunda derivada mediante las rutinasfhess y fdhess.

7.3. Funciones con dos variables (Bivariadas)

Una función de dos variables (o bivariada) f(x, y) se dene como una función cuyodominio está denido en R2. Numéricamente, la segunda derivada de una función deuna variable es un vector que en cada posición contiene un escalar. En funciones dedos variables, cada componente de ese vector es una matriz hessiana (ver ecuación7.2). Esto implica que se debe extraer los menores principales y los valores propiosde cada matriz hessiana (hessiana orlada) para poder concluir sobre la concavidad oconvexidad (cuasiconcavidad o cuasiconvexidad) de la función (ver Sydsaeter (1996)y Mora (2001)).

Page 213: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 197

Para determinar la concavidad y convexidad utilizaremos el método gráco y elcálculo numérico de la matriz Hessiana, mientras que para cuasiconcavidad y cuasi-convexidad utilizaremos el método gráco, la matriz hessiana orlada y los conjuntoscontorno.

Ejemplo 7.8. Analizar la convexidad y concavidad de f(x, y) = x2 + y2 + (x + y)2

por el método gráco.

Sabemos que la función f(x, y) es convexa si:A︷ ︸︸ ︷

f(λP1 + (1− λ)P2) ≤B︷ ︸︸ ︷

λf(P1) + (1− λ)f(P2) (7.7)

y cóncava si

A︷ ︸︸ ︷f(λP1 + (1− λ)P2) ≥

B︷ ︸︸ ︷λf(P1) + (1− λ)f(P2) (7.8)

Estas desigualdades tienen dos partes: la parte A es la imagen de la combinaciónlineal de los puntos P1 y P2, y la parte B es la combinación lineal de las imágenes.Para analizar la concavidad y convexidad de cualquier función por este método vi-sualizamos las partes A y B de las ecuaciones 7.7 y 7.8 en la gráca de la función.En nuestro ejemplo:

Paso 1. Crear la función en un M-file llamado fej1:

function f=fej8(x,y);

f=x.^2+y.^2+(x+y).^2

Paso 2. Crear los datos:

x=[-100:10:100];y=x;

[X,Y]=meshgrid(x,y);

F=fej8(X,Y);

Paso 3. Gracar

mesh(X,Y,F)

Como se observa en la Figura 7.7, se añadió una línea continua y una discontinuaque representan las partes A y B de las ecuaciones 7.7 y 7.8, respectivamente.

Observamos que para estos dos puntos la línea continua está por debajo de la líneadiscontinua, lo cual implica que A≤B, es decir, que la denición de función convexa

Page 214: Economia Matematica en Matlab-Gomez Norma

198 GEDEM - Versión Preliminar

−100

−50

0

50

100 −100

−50

0

50

100

0

1

2

3

4

5

6

x 104

P2

y

f(x,y)=x2+y2+(x+y)2

x

P1

f(x,

y)

Figura 7.7: Método Gráco - Concavidad y Convexidad

se cumple para estos dos puntos. Además se observa que esto ocurre para cualquierpareja de puntos del dominio de la función. Por esta razón podemos concluir que lafunción es convexa estricta.

Ejemplo 7.9. Analizar la cuasiconvexidad y cuasiconcavidad de f(x, y) = x2 +y2 +(x + y)2 por el método gráco.

Sabemos que la función f(x, y) es cuasiconvexa si:

A︷ ︸︸ ︷f(λP1 + (1− λ)P2) ≤

B′︷ ︸︸ ︷Maxf(P1), f(P2) (7.9)

y cuasicóncava si

A︷ ︸︸ ︷f(λP1 + (1− λ)P2) ≥

B′′︷ ︸︸ ︷Minf(P1), f(P2) (7.10)

Para estas desigualdades la parte A es la imagen de la combinación lineal de lospuntos P1 y P2, la parte B′ es la imagen más pequeña y la parte B′′ es la imagenmás grande. Para analizar la cuasiconvexidad y cuasiconcavidad de cualquier funciónpor este método visualizamos las partes A, B′ y B′′ de las ecuaciones 7.9 y 7.10 enla gráca de la función.

Page 215: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 199

−100

−50

0

50

100 −100

−50

0

50

100

0

1

2

3

4

5

6

x 104

P2

y

f(x,y)=x2+y2+(x+y)2

P1

x

f(x,

y)

Figura 7.8: Método Gráco - Cuasiconcavidad y Cuasiconvexidad

En la gura 7.8 se observa que todos los puntos de la línea continua (parte A de ladenición 7.9) son más pequeños o iguales al punto P2 (parte B de la denición 7.9).Como esto ocurre para cualquier par de puntos podemos concluir que la función escuasiconvexa.

Ejemplo 7.10. Analizar la convexidad y concavidad de la función f(x, y) = x0.5y0.5

Paso 1. Crear la función en un M-file llamado fej9:

function f=fej9(v);

y=v(2);

x=v(1);

f=(x.^0.5).*(y.^0.5);;

Paso 2. Crear los datos. Se crean los datos para el conjunto de salida en los vec-tores x e y, y el producto cartesiano entre ellos utilizando la instrucciónmeshgrid. Además, es necesario almacenar en un vector p todas las pare-jas ordenadas de la forma (x, y) en las que se va a calcular numéricamentela matriz hessiana. Esto se hace con la última instrucción11.

x=[0.1:10:100.1];

y=x;

11Para una explicación de la sintaxis X(:) para una matriz X, ver el capítulo 2

Page 216: Economia Matematica en Matlab-Gomez Norma

200 GEDEM - Versión Preliminar

[X,Y]=meshgrid(x,y);

p=[X(:)’;Y(:)’];

Paso 3. Calcular la matriz Hessiana y determinar si es denida, semidenida o in-denida. Con operaciones matriciales podemos calcular los menores princi-pales dominantes y arbitrarios de la matriz hessiana, y con el comando detpodemos hallar el determinante de estas submatrices. También podemos ha-llar los valores propios de la matriz Hessiana con el comando eig. A partirde estos cálculos podemos establecer si la matriz hessiana, calculada en unpunto, es denida positiva o negativa, o semidenida positiva o negativa.Repitiendo el proceso en m puntos y teniendo en cuenta las proposiciones7.4 y 7.5 podemos concluir sobre concavidad o convexidad.

for m=1:length(p);

H=fdhess(’fej9’,p(:,m));

vp(1:2,m)=eig(H);

end

Una vez calculamos la matriz hessiana de la función en un punto, podemosrepetir el proceso para un conjunto nito de puntos y luego utilizar algunode los criterios denidos anteriormente con el n de determinar si la funciónes cóncava (estricta) o convexa (estricta). Por ejemplo, con operaciones ma-triciales podemos calcular los menores principales dominantes y arbitrarios dela matriz hessiana, y con el comando det podemos hallar el determinante deestas submatrices. También podemos hallar los valores propios de la matrizHessiana con el comando eig. A partir de estos cálculos podemos establecersi la matriz hessiana, calculada en un punto, es denida positiva o negativa, osemidenida positiva o negativa. Repitiendo el proceso en m puntos y teniendoen cuenta las proposiciones podemos concluir sobre concavidad o convexidad.

Siguiendo nuestro ejemplo, comencemos por calcular en MATLABrla matrizhessiana de f(x, y) = x2 + y2 + (x + y)2. Sabemos que su matriz Hessiana es:

Hf(x, y) =

[4 22 4

]

La matriz Hessiana es constante para todo punto (x, y). Para calcularla enMATLABrdebemos:

1. Denir la función en un M-file llamado fej72.

Page 217: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 201

function f=fej72(v);

y=v(2);

x=v(1);

f=x.^2+y.^2+(x+y).^2;

Nótese que la función recibe como input un vector v (y no dos variablesseparadas x,y), el cual contiene, en su primera posición, el valor de lavariable x y en la segunda posición el valor de la variable y.

2. Denir el punto en el cual va a calcular la Hessiana. Aunque en nuestroejemplo sabemos que la Hessiana es constante, es necesario determinar unpunto. La razón de ello es que la matriz hessiana es calculada por mediode métodos numéricos. Utilicemos el punto v = (x, y) = (4, 5).

v=[4;5];

3. Invocar la rutina fdhess:

H=fdhess(’fej72’,v)

o, en el caso de fhess:

H=fhess(’fej72’,[1,1],v)

La salida de MATLABres:

H = 4 2

2 4

Aunque los procedimientos numéricos y los resultados son los mismos, paranuestro propósito es más práctico utilizar la rutina fdhess, por lo cual éstaes la que utilizaremos de aquí en adelante.

Como mencionamos anteriormente, la matriz hessiana es útil si logramos ade-cuadamente extraer la información que ésta nos ofrece. Para ello, podemosutilizar las proposiciones que citamos al comienzo de esta sección. Más especí-camente, podemos calcular los menores principales dominantes o arbitrariosy calcular su determinante con la instrucción det, o hallar los valores propiosde la matriz hessiana por medio de la instrucción eig. Aunque es fácil calcularen MATLABrlos menores principales dominantes de una matriz de cualquiertamaño, es difícil calcular los menores principales arbitrarios. Por simplicidad,en este caso utilizaremos el criterio de valores propios. Los valores propios de

Page 218: Economia Matematica en Matlab-Gomez Norma

202 GEDEM - Versión Preliminar

nuestra matriz H son λ1 = 2, λ2 = 6. Debido a que los valores propios sonestrictamente positivos y a que la matriz hessiana es constante (tiene el mismovalor en todo punto (x, y)), podemos concluir que la matriz hessiana es denidapositiva y por lo tanto la función f(x, y) es estrictamente convexa.

Conjuntos Contorno. En el capítulo 4 estudiamos la instrucción contour ycontour3, que son útiles para visualizar las curvas de nivel y los conjuntoscontorno de una función de dos variables f(x, y). Recordemos que la instruccióncontour sirve para visualizar las curvas de nivel de nuestra función f(x, y) enen plano x, y (R2), mientras que la función contour3 sirve para visualizar lascurvas de nivel en el plano x, y, f (R3). También recordemos de este capítulola instrucción subplot, que muestra diferentes grácos simultáneamente.

Una vez creada la función y los datos (pasos para grácar) podemos analizarla cuasiconcavidad y cuasiconvexidad de nuestra función f(x, y) de la siguientemanera:

subplot(2,2,1)

contour3(X,Y,Z,40)% 40 Curvas de nivel arbitrarias

title(’Contour3’);

subplot(2,2,2)

cn=[2 6 10 14 20 30];% Curvas de nivel predeterminadas

contour(X,Y,Z,cn)

title(’Contour’);

subplot(2,2,3)

[cs,h]=contour(X,Y,Z,cn);hs=clabel(cs,h)

title(’Contour - clabel’);

subplot(2,2,4)

contourf(X,Y,Z,cn)

title(’Contourf’);

A partir de estas instrucciones, obtenemos:

La gura ??a muestra las curvas de nivel de la función f(x, y) en el plano x,y,f.La gura ??b muestra las curvas de nivel en el plano x,y. La gura ??c, ademásde mostrar algunas curvas de nivel, muestra el valor de f(x, y) en cada una de

Page 219: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 203

estas curvas. Por último, en la gura ??d se observan las curvas de nivel conlos contornos relllenos.

Se observa en estas grácas que los conjuntos contorno inferiores de la funciónf(x, y) son convexos, por lo cual podemos armar que la función es cuasiconve-xa. Era de esperarse, puesto que ya habíamos visto que la función es convexa,y además sabemos por la proposición ?? que toda función convexa es cuasi-convexa.

Matriz Hessiana Orlada. Un último criterio para determinar la cuasiconcavidady cuasiconvexidad de la función es la matriz Hessiana Orlada (Hf(x, y)) deni-da en (??). Para nuestro ejemplo, podemos empezar por hallar analíticamentela matriz Hessiana Orlada de f(x, y) y calcularla en el punto (x, y)=(3,4):

Hf(x, y) =

0 2x + 2(x + y) 2y + 2(x + y)2x + 2(x + y) 4 22y + 2(x + y) 2 4

Hf(3, 4) =

0 80 10080 4 2100 2 4

Ahora vamos a calcular esta matriz en MATLABr. Para ello, utilizamos lafunción fej72 combinamos los comandos fdjac y fdhess, así:

p=[3,4];% Punto de evaluación

J=fdjac(’fej72’,p);% Gradiente de f

H=fdhess(’fej72’,p);%Hessiana de f

Ho=[0 J;J’ H];% Hessiana Orlada de f

La salida de MATLABres:

Ho = 0 80 100

80 4 2

100 2 4

Sabemos, por la proposición ??, que si el determinante de todos los Dk de estamatriz es menor que cero, la función es cuasiconvexa. Calculemos los Dk deesta matriz:

Page 220: Economia Matematica en Matlab-Gomez Norma

204 GEDEM - Versión Preliminar

for k=1:1:length(Ho)-1;

D=Ho(1:k+1,1:k+1);%MPD de orden k

dt(i)=det(D);% Determinante de MPD

end

dt

La primera línea indica aMATLABrque los cálculos de las siguientes líneas de-ben repetirse para cada valor de k. En esa misma línea se establece que k toma-rá los valores de 1 ,2, siendo 2 el resultante de la instrucción length(Ho)-1.El comando de la segunda línea extrae el Menor principal Dominante de ordenk de la Matriz Hessiana Orlada. Por ejemplo, cuando k = 1, D es el menorprincipal de orden 2 y está dado por D=Ho(1:2,1:2). La tercera línea calcu-la el determinante del menor principal dominante que se calculó en la segundalínea, y guarda este valor en la posición i del vector dt. La última línea la uti-lizamos para ver los componentes del vector dt. La salida de MATLABr(conformat bank) es:

dt = -6400.00 -33600.00

No es de nuestro interés la magnitud de estos números, sino más bien su signo.Para ello es útil el comando format +. Al utilizar este comando, la salidamuestra los símbolos +,- o espacio en blanco para indicar elementos que sonpositivos, negativos o cero, respectivamente. Deniendo este formato, la salidade MATLABres:

dt = -

indicando que tanto el primer componente del vector como el segundo sonnegativos. Esto nos permite concluir que la función f(x, y) es cuasiconvexa enel punto (x, y) = (3, 4)

A diferencia de la matriz hessiana de nuestra función f(x, y), la matriz Hessia-na Orlada cambia según el punto en donde la calculemos. Necesitamos entoncesgeneralizar el método anterior para calcular la Matriz hessiana orlada en dife-rentes puntos a la vez. Para ello, necesitamos repetir el proceso m veces, dondem son todas los puntos en los que se desea evaluar la matriz H. Para ilustrar laforma en que se generaliza, vamos a evaluar la matriz H en un conjunto nitode puntos.

Lo primero que debemos hacer es denir dicho conjunto. Supongamos que va-

Page 221: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 205

mos a evaluar esta matriz en el conjunto S = (x, y)\x ∈ [3, 5]∧ y ∈ [−4,−1].Entonces, denimos este conjunto en MATLABr:

x=[3:1:5]; y=[-4:1:-1];

Luego de esto, debemos crear un vector p que contenga todas las parejas (x, y)de puntos posibles, así:

[X,Y]=meshgrid(x,y);

p=[X(:)’;Y(:)’];

Por último repetimos m veces el proceso de calcular H, donde m es el número depuntos en donde vamos a evaluar la matriz H, es decir, el número de columnasdel vector p:

for m=1:length(p);% Repetir m veces

J=fdjac(’fej72’,p(:,m));% Gradiente

H=fdhess(’fej72’,p(:,m));% Hessiana

Ho=[0 J;J’ H];% Hessiana Orlada

for k=1:1:length(Ho)-1;% Repetir k veces

D=Ho(1:k+1,1:k+1);% MPD

dt(k,m)=det(D);% Determinante de MPD

end

end

dt

El vector dt resultante es de tamaño 2x12, donde 2 corresponde al número demenores principales dominantes que se evalúan en la matriz H y 12 correspondeal número de puntos en los que se evaluó la matriz H. Por ejemplo, la primeracolumna del vector dt contiene el determinante de los dos menores principalesdominantes de la hessiana orlada evaluada en el punto (x, y) = (3,−4).

Se observa que todos los componentes del vector dt son negativos, lo cualimplica que los menores principales dominantes de H son menores que cero ypor lo tanto la función en el conjunto S es cuasiconvexa12.

A lo largo de toda la sección hemos analizado la concavidad, convexidad, cua-12Aunque en el ejemplo se tomaron muy pocos valores para x y y, es fácil hacer los mismos

cálculos para un conjunto S más extenso. Aún así, los componentes del vector dt son negativos.

Page 222: Economia Matematica en Matlab-Gomez Norma

206 GEDEM - Versión Preliminar

siconcavidad y cuasiconvexidad de la función f(x, y) = x2 + y2 + (x + y)2

por diferentes métodos. Sin embargo, esta función es evidentemente convexa,y aunque ha sido útil para propósitos de explicación, es importante tratar confunciones en donde su concavidad o convexidad no es tan evidente, ya que esen estos casos en donde la herramienta computacional puede resultar muy útil.

En el siguiente ejemplo, realizamos el análisis de concavidad, convexidad, cua-siconcavidad y cuasiconvexidad para una función un poco más complicada.A diferencia del ejemplo anterior, no explicaremos en detalle cada instruc-ción13, ya que nuestro propósito con este ejemplo es mostrar la utilidad deMATLABrpara analizar rápidamente la forma de la función, y no enseñar lospasos que se deben seguir en cada método de análisis, como si lo era en elejemplo anterior.

7.3.1. Ejemplo 7.3. f(x, y) = x0.5y0.5

• Método GrácoEn la gura ?? se observa que esta función es cóncava (y por lo tantocuasicóncava) a lo largo de su dominio.

• Matriz Hessiana. Deniendo previamente la función en un M-file lla-mado fej73, y a partir del conjunto nito de puntos S = (x, y)\x ∈(0, 100] ∧ y ∈ (0, 100], se tiene:

x=[0.1:10:100.1];% Valores para x

y=[0.1:10:100.1];% Valores para y

[X,Y]=meshgrid(x,y);% Valores para f(x,y)

p=[X(:)’;Y(:)’];% Vector con puntos (x,y)

for m=1:length(p);% Repetir en todos los puntos

H=fdhess(’fej73’,p(:,m));% Matriz Hessiana

vp(1:2,m)=eig(H);% Valores propios

end

tam=size(vp);

tol=0.000016

for i=1:tam(1)*tam(2);% Valores propios

if abs(vp(i))>tol;% V. propios cercanos a cero

13Aunque las instrucciones son básicamente las mismas.

Page 223: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 207

vp(i)=vp(i);

else

vp(i)=round(vp1(i));% Redondear

end

end

Hemos asumido valores para x y y estrictamente positivos. Además, debi-do a que el cálculo de la matriz Hessiana es numérico, los valores que éstamatriz contiene se aproximan con gran precisión a los valores reales, aun-que no son exactamente iguales, por lo que en algunos puntos hay valorespropios de la matriz hessiana que son positivos, aunque muy cercanos acero. Para depurar el vector vp de estos valores, es necesario el segundoprocedimiento, en el cual, por medio del comando round, aquellos valoressucientemente cercanos a cero (tol) se aproximan a cero.

Se observa que todos los componentes del vector vp son no positivos (me-nores o iguales que cero), por lo cual podemos concluir que la función escóncava, y por lo tanto también es cuasicóncava. Esto último lo podemosvericar con la matriz Hessiana Orlada.

• Matriz Hessiana Orladax=[0.1:10:100.1];% Valores para x

y=[0.1:10:100.1];% Valores para x

[X,Y]=meshgrid(x,y);% Valores para f(x,y)

p=[X(:)’;Y(:)’];% Vector con puntos

for m=1:length(p);% Repetir m veces

J=fdjac(’fej73’,p(:,m));% Gradiente

H=fdhess(’fej73’,p(:,m));% Hessiana

Ho=[0 J;J’ H];% Hessiana Orlada

for k=1:1:length(Ho)-1;% Repetir k veces

D=Ho(1:k+1,1:k+1);% MPD

dt(k,m)=det(D);% Determinante de MPD

end

end

El vector dt es de tamaño 2x121. En la posición (i, j) se este vector seha calculado el determinante del menor principal dominate de orden i

de la matriz Hessiana Orlada calculada en el punto j. Al observar los

Page 224: Economia Matematica en Matlab-Gomez Norma

208 GEDEM - 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 sonnegativos, mientras que los componentes de la segunda la son positivos,indicando que los Menores Principales Dominantes de orden 1 (D1) eva-luados a lo largo del conjunto S son negativos, mientras que los de orden2 son positivos. A partir de los criterios de evaluación y de la informa-ción que nos proporciona este vector podemos concluir que la función escuasicóncava.

• Conjuntos ContornoSe observa que el conjunto contorno superior es convexo, por lo cual po-demos concluir también por este criterio, que la función es cuasicóncava.

7.4. Funciones con tres o más variables (Multivaria-das)

Nuestro propósito en esta sección es ilustrar con dos ejemplos la manera en quese extienden los métodos de análisis de concavidad y convexidad para funcionesde tres o más variables. Cuando tenemos funciones con tres variables, ya nose puede utilizar el método gráco, puesto que ya no es posible visualizar lafunción. Sin embargo, sus curvas de nivel se visualizan en R3, y por lo tanto esválido en estas funciones utilizar el método de conjuntos contorno, además delos métodos de matriz Hessiana y Hessiana Orlada. En funciones de cuatro omás variables no es posible utilizar el método gráco y el método de Conjuntoscontorno, por lo cual solo disponemos de los métodos de matriz Hessiana ymatriz Hessiana Orlada.

7.4.1. Ejemplo 7.4. f(x, y, z) = x4 + 3y4 + 5z

• Matriz Hessiana Al igual que en los caso anteriores, primero debemoscrear la función en un M-file llamado fej74:

function f = fej74(v);

z=v(3);

Page 225: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 209

y=v(2);

x=v(1);

f=x.^4+3*y.^4+5*z;

Luego de esto, debemos crear un conjunto nito de puntos S en los quequeremos evaluar la matriz H. Para este ejemplo, podemos asumir unconjunto S = (x, y, z)\x ∈ [−10, 10]∧ y ∈ [−10, 10]∧ z ∈ [−10, 10], queva a estar contenido en el vector p:

x=[-10:1:10];% Valores para x

y=x;z=x;% Valores para y,z

[X,Y,Z]=meshgrid(x,y,z);% Valores para f(x,y)

p=[X(:)’;Y(:)’;Z(:)];% Vector con puntos

Por último, invocamos la rutina fdhess para calcular la matriz hessianaen cada punto del vector p, calculamos sus valores propios (con su corres-pondiente depuración) y a partir de la información contenida en el vectorvp podemos concluir sobre la concavidad y convexidad de la función.

for m=1:length(p);

H=fdhess(’fej74’,p(:,m));

vp(1:3,m)=eig(H);

end

tam=size(vp)

tol=0.000016

for i=1:tam(1)*tam(2);

if abs(vp(i))>tol;

vp(i)=vp(i);

else

vp(i)=round(vp(i));

end

end

Se observa que todos los componentes del vector vp son no negativos, locual indica que la función es convexa.

• Matriz Hessiana Orlada. Se siguen los mismos pasos que trabajamos enel ejemplo anterior. La única modicación es que, al igual que hicimoscon el vector de valores propios de la matriz hessiana, necesitamos de-

Page 226: Economia Matematica en Matlab-Gomez Norma

210 GEDEM - Versión Preliminar

purar el vector que contiene los determinantes de los menores principalesdominantes de la matriz hessiana orlada.x=[-10:1:10];% Valores para x

y=x;z=x;% Valores para y,z

[X,Y,Z]=meshgrid(x,y,z);% Valores para f(x,y)

p=[X(:)’;Y(:)’;Z(:)];% Vector con puntos (x,y,z)

for m=1:length(p);

J=fdjac(’fej74’,p(:,m));

H=fdhess(’fej74’,p(:,m));

Ho=[0 J;J’ H];

for k=1:1:length(Ho)-1;

D=Ho(1:k+1,1:k+1);

dt(k,m)=det(D);

end

end

tam=size(dt);

tol=0.00016;

for i=1:tam(1)*tam(2);% Depuración

if abs(dt(i))>tol;

dt(i)=dt(i);

else

dt(i)=round(dt(i));

end

end

Se observa que todos los componentes del vector dt (una vez depurados)son no positivos, lo cual implica que a partir de la información de la matrizHessiana Orlada, podemos concluir que la función es cuasiconvexa.

• Conjuntos Contorno. Recordemos que las curvas de nivel para f(x, y, z) =x4 + 3y4 + 5z resultan de igualar la función a una constante α. De estamanera, tenemos que las curvas de nivel están dadas por:

α = x4 + 3y4 + 5z =⇒ z = α−x4−3y4

5

Así, a pesar de no poder visualizar la función f(x, y, z), sí podemos visua-lizar sus curvas de nivel en el plano (x, y, z). Para visualizar estas curvas

Page 227: Economia Matematica en Matlab-Gomez Norma

CONCAVIDAD Y CONVEXIDAD 211

de nivel enMATLABr, utilizamos los mismos pasos que se requieren paragracar una función en R3, es decir, especicar la función, crear los datosy por último invocar el comando para gracar. Lo particular en este casoes que vamos a repetir el último paso n veces, donde n es el número de cur-vas de nivel que deseamos visualizar. Para este ejemplo vamos a visualizarcuatro curvas de nivel de la función dadas por α = (−10000, 0, 10000).

1. Crear la función en un M-file llamado fcnej74:

function z=fcnej74(x,y,alpha)

z=(alpha-x.^4-3*y.^4)*(1/5);

2. Crear los datos:

x=[-10:0.1:10];y=x;% Datos para x,y

[X,Y]=meshgrid(x,y);alpha=[-10000 0 10000];% Curvas de nivel

3. Invocar el comando para gracar:

for i=1:length(alpha)

Z=fcnej74(X,Y,alpha(i));

mesh(X,Y,Z)

hold on

end

A partir de estas instrucciones, tenemos:

Se observa en esta gráca que el conjunto contorno inferior es convexo, y porlo tanto podemos concluir que la función es cuasiconvexa.

Por último, mostraremos un ejemplo de una función con más de tres variables.En este caso, tampoco podemos utilizar el método de conjuntos contorno, yaque no se pueden visualizar las curvas de nivel de la función. Por lo tanto, losúnicos métodos computacionales disponibles para este caso son los de matrizhessiana y matriz hessiana orlada.

7.4.2. Ejemplo 7.5. f(w, x, y, z)

• Matriz Hessiana

Page 228: Economia Matematica en Matlab-Gomez Norma

212 GEDEM - Versión Preliminar

• Matriz Hessiana Orlada

Page 229: Economia Matematica en Matlab-Gomez Norma

Capítulo 8

OptimizaciónLida Quintero, Norman Maldonado

La racionalidad de los agentes es un supuesto frecuentemente utilizado la teoríaeconómica. Esto implica que ellos busquen siempre la mejor manera de realizar suscosas, es decir, busquen optimizar sus actividades. Así, los consumidores siemprequieren maximizar la utilidad que le proporcionan los bienes que compran, y losproductores maximizar sus benecios o minimizar sus costos.

En este capítulo trabajaremos a partir de herramientas computacionales, el problemade hallar los máximos o mínimos de una función (optimización estática); dependiendode si ella representa utilidad, benecios o costos; delimitando el conjunto de solucio-nes de acuerdo a restricciones si las hay.

Según (?), una caracterización típica de problemas de optimización es encontrar va-lores extremos de una función f(x, y) restringida a un subconjunto bien especicadode R2

+:Maximizar f(x, y) sujeta a g(x, y) ≥ 0

x ≥ 0y ≥ 0

donde f , g : R2++ −→ R son funciones diferenciables. Aquí a f(·, ·) se le conoce

como función objetivo, y a g(·, ·) como función restricción o conjunto factible. En elproblema general hablamos de maximizar, dado que minimizar equivale a maximizarel negativo de la función.

También podemos establecer una secuencia general para resolver un problema deoptimización computacionalmente. Primero, debemos hacer un análisis cualitativo

213

Page 230: Economia Matematica en Matlab-Gomez Norma

214 GEDEM - Versión Preliminar

del problema, es decir, identicar el tipo de función objetivo al que nos enfrentamos,el tipo de restricciones, y su comportamiento si es posible de manera gráca paratener idea de la región donde se puede encontrar la solución.

Teniendo claras las condiciones iniciales del problema, podemos crear las funcionescomputacionalmente(función objetivo, restricciones, gradientes, etc)1. Por último,aplicamos la rutina computacional pertinente según el problema. Adicionalmente,debemos ser muy cuidados con la interpretación de los resultados.

Al optimizar se pueden presentar varios casos según el tipo de funciones que estemostrabajando: cuando la función objetivo no es lineal, y no hay restricciones, caso queveremos en la primera sección; en la segunda presentamos optimización de funcio-nes del mismo tipo pero con restricciones; y por último tendremos el caso en quelas funciones son lineales. El análisis de concavidad, convexidad, cuasiconcavidad ycuasiconvexidad de funciones que vimos en el capítulo anterior, nos hará mucho másfácil la comprensión de estos problemas.

8.1. Optimización no lineal sin restricciones

De nuestro problema general de optimización, en esta sección veremos el caso parti-cular en el que f(x, y) tiene forma no lineal. Además, no tenemos g(x, y), o funciónrestricción, por lo que debemos buscar la solución en todo el dominio de la funciónobjetivo.

Existen varios métodos numéricos para solucionar este caso particular de optimiza-ción como tales, tales y tales; que veremos en esta sección junto con las rutinas deMATLABrque hacen uso de ellos.

8.1.1. Minimizar

Con esta rutina hallamos la imagen más pequeña de nuestra función objetivo, por loque la utilizamos para solucionar problemas de minimización.

Ejemplo 8.1.mın f(x) = x3 − 4x2 + 6

1En general es mejor trabajar con funciones denidas en un m-le, ya que se pueden modicarfácilmente y permiten hacer uso de otras funciones disponibles en MATLABr. En problemassencillos es práctico trabajar con funciones inline.

Page 231: Economia Matematica en Matlab-Gomez Norma

OPTIMIZACIÓN 215

Paso 1. Análisis Cualitativo del problema. Podemos ver en la Figura 8.1 el compor-tamiento de la función f(x) y de su derivada fx en una parte de su dominio:S = x ∈ [−3, 6].

Figura 8.1: Comportamiento de f(x)

Sabemos del capítulo anterior que la función es cóncava para el intervalo(−∞, 1.3333) y convexa en el intervalo (1.3333,∞). En la gráca observa-mos que, en un punto cercano a x = 0, esta función tiene un máximo, y enun punto cercano a x = 3, un mínimo2.

Paso 2. Crear funciones. Podemos introducir la función como un m-le o por mediodel comando inline:

f=inline(’x.^3-4*x.^2+6’)

Paso 3. Invocar rutina de solución. Debemos crear las imágenes de f(x) en unavecindad sucientemente grande alrededor de x = 3, y luego, teniendo estosvalores, escoger el más pequeño de todos ellos3.

h=0.01; x=[2:h:4];% Puntos cercanos a x=3

y=f(x);% Crear imágenes

[ym,ind]=min(y);% Imágen más pequeña

xm=x(ind);% Argumento que minimiza

En la primera línea creamos los puntos cercanos a x = 3 (x ∈ [2, 4]), que,según lo que analizamos en el paso 1, es un punto cercano al mínimo quebuscamos. En la segunda línea están las imágenes de ese conjunto de puntos.En la tercera, se halla la imágen más pequeña junto con su posición dentrodel vector y. Finalmente en la cuarta línea encontramos el valor de x queminimiza a f(x).

Como resultado, obtenemos xm=2.67 y ym=-3.4814. En caso de requerirmayor precisión para x, solo se requiere reducir el valor del parámetro h.Para el caso de funciones univariadas, éste es el método más sencillo en elque se hallan mínimos computacionalmente.

2Nótese en la gura 8.1 que en estos puntos la primera derivada de la función se hace cero.3Recordemos que establecimos el conjunto S = x ∈ [−3, 6], sólo con el propósito de visualizar

el comportamiento de la función. En realidad, nuestro conjunto de salida o dominio de f(x) sontodos los reales, por lo que no estamos buscando puntos óptimos que estén en la frontera, sinopuntos óptimos interiores en los que se cumpla la condición ∇f = 0.

Page 232: Economia Matematica en Matlab-Gomez Norma

216 GEDEM - Versión Preliminar

Page 233: Economia Matematica en Matlab-Gomez Norma

Capítulo 9

Sistemas DinámicosDiego Corredor, Mario González

En los capítulos anteriores nos hemos ocupado de los procedimientos utilizados paraanalizar y optimizar diferentes tipos de funciones. Todos estos métodos se enmarcandentro de un contexto estático en el que no es posible observar los comportamientosde las variables a través del tiempo. En este capítulo nos concentramos en los mé-todos numéricos, y aplicaciones computacionales utilizados en situaciones donde eltiempo juega un papel importante, ya sea como una variable continua (ecuacionesdiferenciales) o discreta (ecuaciones en diferencias).

En la primera parte del capítulo explicamos los métodos numéricos, y computacio-nales, utilizados en la solución de ecuaciones diferenciales ordinarias, presentandoalgunos ejemplos y aplicaciones económicas. En la segunda parte desarrollamos elmismo esquema para las ecuaciones en diferencias.

9.1. Ecuaciones Diferenciales y Dinámica ContinuaEcuaciones DiferencialesDinámica ContinuaFALTA UNA INTRODUCCIÓN AL USO DE LAS ECUACIONES DIFERENCIA-LES EN ECONOMÍAecuaciones diferenciales ordinariaslas ecuaciones no son simplemente con respecto al tiempo.

9.1.1. Métodos Numéricos

Desde el punto de vista algebraico, solucionar un sistema de ecuaciones diferencialesimplica encontrar la fórmula de la o las funciones que satisfagan el sistema. Cuandoninguna condición inicial es denida la solución consiste en hallar una fórmula general

217

Page 234: Economia Matematica en Matlab-Gomez Norma

218 GEDEM - Versión Preliminar

de las funciones. Pero si las condiciones iniciales del problema son determinadas, esposible obtener las funciones especícas que solucionan el conjunto de ecuaciones.Por ejemplo, al solucionar algebraicamente la ecuación x = 3x, obtenemos que elconjunto de funciones que cumplen esta ecuación viene dado por la fórmula general:x(t) = Ae3t; donde A puede ser cualquier número real. Pero si agregamos la condicióninicial x(0) = 4, la única función que satisface la ecuación diferencial y la condicióninicial es x(t) = 4e3t. Es necesario anotar que las condiciones no necesariamentetienen que ser iniciales, también pueden imponerse condiciones en otros momentos deltiempo, o condiciones de fronteraCondición de Frontera. En el ejemplo, si imponemosla condición de frontera x(2) = 5, la función particular que satisface la condición yel sistema de dinámico es: x(t) = 0.0123e3t.

Por otro lado, por la naturaleza de los métodos, la solución numérica de sistemasdinámicos implica que algún tipo de condición deba ser impuesta. Es decir que,al contrario del método algebraico, no es posible obtener ningún tipo de ecuacióngeneral de las funciones solución. Aún más, al utilizar métodos numéricos nuncaencontramos tales funciones, sino que realizamos una aproximación numérica a ellas.

Dependiendo del tipo de condición impuesta (inicial o de frontera) el procedimientode solución numérica cambia. Si tomamos una condición inicial, resolver un sistemadinámico consiste en aproximar las funciones solución a partir del momento deltiempo en el que es impuesta tal condición. En otras palabras, la aproximaciónse realiza hacia adelante. A este tipo de problemas se les conoce con el nombre deProblemas de Valor InicialProblemas de Valor! Inicial o IVPIVP|seeProblemas deValor InicialInicial Value Problems|seeIVP (por sus siglas en inglés), y formalmenteconsisten en aproximar x(t), en un intervalo de tiempo determinado, de modo que:

x(t) = f(t, x(t)

)

x(t0) = x0

(9.1)

El procedimiento de solución de un IVP consiste, por lo general, en tomar la condicióninicial y evaluarla en la ecuación diferencial. De esta forma se tiene un punto y laderivada de la función en el punto. Con estos dos elementos, y haciendo uso delpolinomio de Taylor, es posible aproximar el valor de la función en el siguiente períodode tiempo. Este procedimiento se repite una y otra vez hasta alcanzar el límitesuperior del intervalo de tiempo considerado. Los métodos numéricos utilizados parala solución de problemas de valor inicial son explicados en detalle más adelante.

Page 235: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 219

Una generalización de los problemas de valor inicial son los denominados Problemasde Valores en la FronteraProblemas de Valor! en la Frontera o BVPBVP|seeProblemasde Valor en la FronteraBounded Value Problems|seeProblemas de Valor en la Fronte-ra. En este tipo de problemas imponemos, como su nombre lo indica, condiciones defrontera al sistema dinámico. La solución de estos sistemas resulta más complicadaporque es posible imponer varias condiciones a la vez, y porque la aproximación alas funciones se realiza antes y después de cada condición. Los métodos numéricosutilizados para resolver este tipo de problemas son avanzados, por lo que no serántratados en este libro.1

A continuación presentamos algunos métodos numéricos utilizados para solucionarproblemas de valor inicial. Es necesario aclarar que existe una gran cantidad demétodos por lo que no pretendemos abarcar todos los algoritmos existentes. Noslimitamos a los métodos más sencillos que sirven de base para los demás.

Método de EulerMétodo de Euler: Conocido también como método de latangente, aproxima la curva solución de la ecuación diferencial a través de unpolinomio de Taylor de grado 1. Para entender el algoritmo, supongamos que lafunción x(t) satisface el sistema de ecuaciones (9.1) y, tras hacer la expansióndel polinomio de Taylor de grado 1 alrededor de t + h, obtenemos:

x(t + h) ≈ x(t) + hx(t) (9.2)

Con base en el sistema (9.1), en la ecuación (9.2) y asumiendo h = 1, es posibleaproximar x1:

x1 = x0 + f(0, x0)

Ya con x1, es posible encontrar una aproximación de x2 y así sucesivamente.En general, tenemos que:

xi+1 = xi + hf(ti, xi) (9.3)

Es importante recalcar que hallamos aproximaciones, por lo que en cada itera-ción la solución exacta es el valor aproximado más un error cuadrático:2

1Para una explicación clara y sencilla de estos métodos ver Fackler (2003, cap. 6).2Como la aproximación es de primer grado, el error resulta ser una función cuadrática del tamaño

del paso; si la aproximación es de segundo grado, el error asociado a ésta es una función cúbica, yasí sucesivamente.

Page 236: Economia Matematica en Matlab-Gomez Norma

220 GEDEM - Versión Preliminar

x∗(t + h) = x(t + h) + O(h2

)

Una forma de disminuir la inexactitud de los resultados es tomar tamaños depaso más pequeños, por ejemplo h = 0.1. Sin embargo, al reducir el tamaño delpaso de la iteración se aumenta el número de operaciones aritméticas, lo quedisminuye la velocidad del algoritmo. Existe un tipo de algoritmos, conocidoscomo algoritmos adaptativos, que durante el proceso iterativo observan el com-portamiento de los errores en cada etapa con el n de reducir o incrementar eltamaño del paso, según sea necesario.

El programa, o script, que se presenta a continuación muestra la programacióndel método de Euler3. El usuario debe denir con anterioridad el número deiteraciones n, la condición inicial x0, el tamaño del paso h y el tiempo inicialt0. También debe ser especicada, en otro chero, la ecuación diferencial cuyasintaxis es dxdt=f(t,x):

x(1)=x0;t(1)=t0;for i=1:n

x(i+1)=x(i)+h*f(t(i),x(i));t(i+1)=t(i)+h;

end

Existen ecuaciones diferenciales particulares en las cuales el algoritmo de Eulerpuede resultar poco efectivo a la hora de aproximar la solución numéricamente.En estos casos, es recomendable recurrir a otro tipo de métodos más estables.Uno de los procedimientos alternativos más simples, es el método modicadode EulerMétodo Modicado de Euler. Al igual que en el método de Euler,aproximamos la solución con un polinomio de Taylor de grado 1. Sin embargo,no lo evaluamos alrededor de t + h sino de t, obteniendo:4

3El lector avanzado en métodos numéricos puede constatar que existen programaciones másecientes que las presentadas en esta parte del capítulo. Los programas aquí presentados tienen unobjetivo expositivo y, por tanto, no fueron programados teniendo en cuenta el número de operacionesaritméticas, o cualquier otra medida de eciencia de un método numérico.

4El método de Euler modicado se basa en el hecho de que para una función cualquiera g(x), sila función es relativamente bien comportada y h es lo sucientemente pequeño, la derivada de la

Page 237: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 221

x(t) ≈ x(t− h) + hx(t) (9.4)

A partir de la ecuación anterior, llegamos a la siguiente regla de iteración:

xi = xi−1 + hf(ti, xi)

Finalmente, la regla de iteración para xi+1 es:

xi+1 = xi + hf(ti+1, xi+1) (9.5)

Esta regla de iteración es denominada fórmula implícita de Euler, ya que no esposible despejar xi+1 en términos de ti y de xi. Dados un t0 y un x0, el valorde la variable en la siguiente iteración es el valor que solucione la siguienteecuación:

x1 − x0 − hf(t1, x1) = 0 (9.6)

Como se puede observar, en cada iteración es necesario solucionar una ecuaciónsimilar a la (9.6). Independientemente del tipo de ecuación (lineal o no lineal),su solución incrementa el número de cálculos y, por lo tanto, disminuye lavelocidad de solución. En algunos casos, un método más efectivo es el Métodode Runge - Kutta, que presentamos a continuación.

Método de Runge - KuttaMétodo de Runge - Kutta: Este método en-cuentra una solución aproximada de la ecuación diferencial partiendo de unpolinomio de Taylor determinado. Cuando el polinomio de Taylor utilizadoes de grado 2, se habla de un método de Runge - Kutta de segundo orden(RK2)RK2|seeMétodo de Runge - Kutta; si por ejemplo, un algoritmo RKproviene de un polinomio de Taylor de grado 4, es denominado método deRunge - Kutta de 4 orden, o simplemente RK4RK4|seeMétodo de Runge -Kutta5. Este último es uno de los procedimientos más utilizados para resolverproblemas de valor inicial, por su fácil programación, estabilidad y velocidadde solución.

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

5De la misma forma, el método de Euler es también conocido como método de Runge Kutta deprimer orden, ya que se obtiene a partir de un polinomio de Taylor de grado 1.

Page 238: Economia Matematica en Matlab-Gomez Norma

222 GEDEM - Versión Preliminar

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

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

)+

h2

2f ′

(t, x(t)

)+O(h3) (9.7)

Una vez obtenida esta aproximación, se busca formular la segunda derivada enté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

2f(t, x(t)

)+

h

2

[f(t, x(t)

)+hf ′

(t, x(t)

)]

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

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

2f(t, x(t)

)+

h

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

(t, x(t)

))

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

xi+1 = xi +12

(F1 + F2)

donde,

F1 = hf (ti, xi)F2 = hf (ti + h, xi + F1)

El siguiente script muestra una programación del método de Runge - Kutta desegundo orden. El número de iteraciones, el tamaño del paso, la condición y eltiempo iniciales deben ser especicados con anterioridad, al igual que debe serdenida la ecuación diferencial en otro chero:

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

Page 239: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 223

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

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

xi+1 = xi +16

(F1 + 2F2 + 2F3 + F4)

donde,

F1 = hf(ti, xi)F2 = hf(ti + 1

2h, xi + 12F1)

F3 = hf(ti + 12h, xi + 1

2F2)F4 = hf(ti + h, xi + F3)

Dado que la aproximación es realizada a partir de un polinomio de Taylorde grado 4, el método de Runge - Kutta de orden 4 tiene un error asociadoO

(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 deprocesamiento, con respecto al algoritmo RK4.

Regla del Trapecio:Regla del TrapecioRegla del Trapezoide|seeRegla del Tra-pecio Recordemos que en la sección 6.2 nos referimos a la Regla del Trapeciocomo un método de aproximación lineal de una integral. El procedimiento con-sistía en dividir el intervalo de integración en subintervalos, para luego sumarlas áreas de los trapecios de cada uno de estos, y así poder aproximar el áreabajo la curva. La fórmula que utilizamos para calcular el área de cada trapecioera:7

7Ver la gura 6.1.

Page 240: Economia Matematica en Matlab-Gomez Norma

224 GEDEM - Versión Preliminar

∆x

2(y0 + y1

)(9.8)

La idea básica de la Regla del Trapecio, en la solución de IVPs, consiste enintegrar 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 obtenemosla siguiente expresión:

∫ t+h

tx(t)dt =

∫ t+h

tf(t, x(t)

)dt (9.9)

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

tf(t, x(t)

)dt

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

xi+1 = xi +∫ ti+1

ti

f(t, x(t)

)dt (9.10)

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

∫ ti+1

ti

f(t, x(t)

)dt =

h

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

]

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

xi+1 = xi +h

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

]

El método del Trapecio, al igual que el método de Euler modicado, es unproceso implícito de solución que resulta ser estable, aunque de baja velocidady alto costo computacional.

Una característica esencial de los métodos ya presentados es que son métodos de unsolo paso, es decir, calculan xi+1 tomando como base a xi. Sin embargo, existe otrotipo de algoritmos, denominados métodos multipaso, que en cada iteración hacenuso de los valores xi−1, xi−2, ..., x0.

Page 241: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 225

La diferencia entre cada uno de los métodos multipaso radica en el numero de valoresutilizados y en la forma como se realiza la aproximación de la integral. Uno de losmétodos multipaso más conocido es el Método de Adams - Bashforth - Moulton, quepresentamos 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 delos métodos denominados predictor - corrector. Esta clase de algoritmos realizauna primer iteración para calcular una predicción de xi+1 (predictor), y luegola utiliza para iterar de nuevo, con el n de obtener un valor corregido delcálculo inicial de xi+1 (corrector).El algoritmo de Adams - Bashforth - Moulton consiste de dos procedimientosmuy parecidos: el Método Adams - Bashforth y el Método Adams - Moulton.El primero se encarga de calcular el predictor, mientras que el segundo generael corrector. Veamos cada uno de estos métodos por aparte:

Método Adams - Bashforth:Método de Adams - Bashforth El algoritmoconsiste en aproximar la integral del sistema (9.10), encontrando los coecientesdesconocidos (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ór-mulas 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 cualdebemos encontrar los coecientes (a, b). A continuación presentamos el pro-cedimiento para obtener sus valores.

Para facilitar la exposición, y sin pérdida de generalidad, supongamos queti = 0 y h = 1. Por lo que nuestro problema consiste en resolver:

∫ 0+1

0f(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.8Tomamos como base los siguientes polinomios:

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

Page 242: Economia Matematica en Matlab-Gomez Norma

226 GEDEM - Versión Preliminar

p0(t) = 1

p1(t) = t

De esta forma, los coecientes deben cumplir el siguiente sistema de ecuaciones:

∫ 1

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

∫ 1

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

El primer sumando de las dos ecuaciones anteriores corresponde al términoaf(ti, xi) de la ecuación (9.11), y el segundo sumando corresponde al términobf(ti−1, xi−1) de la misma ecuación. Al solucionar las integrales denidas ob-tenemos dos ecuaciones en términos de nuestras dos incógnitas a y b. Para lafórmula de segundo orden, los coecientes son: a = −3/2 y b = 1/2, los cualessolucionan el siguiente sistema de ecuaciones.

1 = (1)a + (1)b12

= (0)a + (−1)b

Ahora consideremos una fórmula Adams - Bashforth de orden 4. Debemosexigir que la aproximación sea exacta cuando el integrando sea un polinomiode 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:

Page 243: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 227

1 = a + b + c + d

12

= −b− 2c− 3d

56

= 2c + 6d

94

= −6d

La solución del sistema es: a = 55/24, b = −59/24 c = 37/24 y d = −9/24.Así, la regla de iteración de la ecuación (9.10) es:

xi+1 = xi +h

24

[55f(ti, xi)− 59f(ti−1, xi−1) + 37f(ti−2, xi−2)− 9f(ti−3, xi−3)

]

(9.13)

Es importante mencionar que el método de Adams - Bashforth requiere, de-pendiendo del orden, cierto número de valores anteriores. Por lo general, seutiliza el algoritmo el RK4 para calcularlos. En estos casos el algoritmo RK4es denominado algoritmo de inicio.

El siguiente script presenta una programación del método Adams - Bashforthde cuarto orden, en el que el algoritmo de inicio utilizado es el método de Euler.El usuario debe denir previamente: el número de iteraciones n, la condicióninicial x0, el tamaño del paso h, el tiempo inicial t0 y el nal tf. En otro cheroes necesario especicar la ecuación diferencial con la sintaxis dxdt=f(t,x).

Page 244: Economia Matematica en Matlab-Gomez Norma

228 GEDEM - Versión Preliminar

x(1)=x0;t(1)=t0;h=(tf-t0)/n;for i=1:3 % Algoritmo de Inicio - Euler

d=h*f(t(i),x(i));x(i+1)=x(i)+d;t(i+1)=t(i)+h;

end

for i=4:n-3 % Formula de AB de cuarto ordenx(i+1)=x(i)+(h/24)*(55*f(t(i),x(i))-59*f(t(i-1)...,x(i-1))+37*f(t(i-2),x(i-2))-9*f(t(i-3),x(i-3)));

t(i+1)=t(i)+h;end

Partiendo de la condición inicial, y utilizando el método de Euler, el programarealiza tres iteraciones para calcular los primeros valores de x. Una vez ob-tenidos x1, x2 y x3, la regla de iteración (9.13) es utilizada para generar lossiguientes valores hasta alcanzar el número predenido de iteraciones n. Entotal el algoritmo realiza n iteraciones, tres con el algoritmo de Euler y el restocon la fórmula de Adams - Bashforth.

Método Adams - Moulton:Método de Adams - Moulton Este método re-sulta muy parecido a la fórmula Adams - Bashforth; sin embargo, incorporaun elemento adicional, dado que la regla de iteración que se obtiene es unalgoritmo implícito.

Ahora, buscamos los coecientes adecuados para aproximar la integral de lasiguiente forma:

∫ ti+1

ti

f(t, x(t)

)dt = h

[af(ti+1, xi+1) + bf(ti, xi) + cf(ti−1, xi−1) + ...

]

El procedimiento para hallar los valores de (a, b, c, ...) es el similar al utilizadopara calcular los coecientes de la fórmula de Adams - Bashforth. Así, es posibleobtener la fórmula de Adams - Moulton de orden 5 para aproximar la integralcon la siguiente regla de iteración:

Page 245: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 229

xi+1 = xi +h

720

[251fi+1 + 646fi − 264fi−1 + 106fi−2 − 19fi−3

](9.14)

donde fi = f(ti, xi). Como podemos observar, el primer sumando dentro delparéntesis está en términos de xi+1, es decir que el valor de la variable debeser calculado de forma implícita. Debemos encontrar el xi+1 que cumpla lasiguiente ecuación:

xi+1 − xi − h

720

[251fi+1 + 646fi − 264fi−1 + 106fi−2 − 19fi−3

]= 0 (9.15)

donde ti, ..., ti−3 y xi, ..., xi−3 son valores conocidos. Cuando el sistema diná-mico es de tercer o mayor orden, la ecuación (9.15) resulta ser no lineal, y susolución, en cada iteración, requiere el uso de algoritmos especiales.9 Como re-sultado de esto, el algoritmo implícito resulta más estable, pero también, máslento y más costoso en términos de procesamiento.

Otra forma de calcular el valor de xi+1 consiste en introducir, en la ecuación(9.14), el valor de xi+1 obtenido por el algoritmo de Adams - Bashforth. Enotras palabras, en el algoritmo de Adams - Bashforth - Moulton, el resultadode la fórmula de Adams - Bashforth es el predictor, mientras que el correctores resultado de la fórmula Adams - Moulton.

El chero presentado en la siguiente página, muestra una programación del mé-todo Adams - Moulton de quinto orden junto con la fórmula Adams - Bashforthde cuarto; como algoritmo de inicio se utiliza el RK4. El usuario debe denirpreviamente: el número de iteraciones n, el tamaño del paso h, la condicióninicial x0, el tiempo inicial t0 y el nal nal tf. También es necesario denirla ecuación diferencial con la sintaxis dxdt=f(t,x).

9Para una breve introducción sobre los métodos numéricos utilizados para resolver ecuacionesno lineales ver Fackler (2003, cap. 3)

Page 246: Economia Matematica en Matlab-Gomez Norma

230 GEDEM - Versión Preliminar

x(1)=x0;t(1)=t0;xp(1)=x(1);h=(tf-t0)/n;for i=1:3 % Algoritmo de Inicio - RK4

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);xp(i+1)=x(i+1);t(i+1)=t(i)+h;

end

for i=4:n-3% Calculo del predictor (Adams - Bashforth)

xp(i+1)=xp(i)+(h/24)*(55*f(t(i),xp(i))-59*f(t(i-...1),xp(i-1))+37*f(t(i-2),xp(i-2))-9*f(t(i-3),xp...(i-3)));

% Calculo del corrector (Adams - Moulton)

x(i+1)=x(i)+(h/720)*(251*f(t(i)+h,xp(i+1))+646*f...(t(i),x(i))-264*f(t(i-1),x(i-1))+106*f(t(i-2)...,x(i-2))-19*f(t(i-3),x(i-3)));

xp(i+1)=x(i+1);t(i+1)=t(i)+h;

end

El programa calcula inicialmente los valores x1, x2 y x3 por el método RK4.Con estos valores, y con x0, el programa obtiene el predictor de x4 utilizando lafórmula de Adams - Bashforth. Una vez obtenido el predictor (xp), el correctores generado por medio del algoritmo de Adams - Moulton.

Los anteriores son los métodos numéricos básicos utilizados para la solución de pro-blemas de valor inicial. Es importante conocer la técnica aplicada por cada uno delos algoritmos ya que, dependiendo de las propiedades particulares del sistema diná-mico, algunas veces resulta mejor utilizar uno u otro método. Un ejemplo claro de

Page 247: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 231

esto son los sistemas dinámicos rígidos.Ecuaciones Diferenciales Rígidas

Para nalizar esta primera parte sobre métodos numéricos, a continuación hacemosmención a los sistemas dinámicos rígidos y la forma como se solucionan compu-tacionalmente. Aunque en economía los sistemas de ecuaciones diferenciales rara vezresultan ser de este tipo, es necesario tener en cuenta este criterio a la hora de en-frentarse a un sistema dinámico, con el n de escoger el algoritmo más eciente entérminos de estabilidad y velocidad de solución.

Sistemas Dinámicos Rígidos

Ecuaciones Diferenciales RígidasUn sistema de ecuaciones diferenciales se dice rígido cuando uno o varios valorespropios de su matriz jacobiana asociada son demasiado grandes en magnitud.10 Estoimplica que la solución numérica es muy sensible a pequeños cambios en el tamaño delpaso, lo que puede generar errores importantes en el proceso de integración numéricay, por tanto, en la aproximación a la solución de la ecuación diferencial.

Un ejemplo sencillo de una ecuación rígida es la siguiente ecuación diferencial:

x = −10x (9.16)

La solución analítica es de la forma x(t) = Ae−10t, indicando que, a medida que pasael tiempo, el valor de x(t) → 0. Utilizando la fórmula de Euler (ecuación 9.3), laregla de iteración que obtenemos, para este caso particular, 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 pasoh > 2/10, el proceso iterativo no converge (|x(t)| → ∞), lo cual no concuerda con laintuición de la solución analítica. En la gura (9.1) se observa la solución analítica yla solución numérica de la ecuación anterior con x0 = 10 y h = 0.21.Mientras la solución analítica converge monotónicamente a cero, la solución numéricapresenta un comportamiento oscilante explosivo. Si reducimos el tamaño del paso de

10No existe una regla para denir cuándo un valor propio es demasiado grande o no. Esto dependedel sistema dinámico con que estemos trabajando. En el ejemplo, el valor propio λ = −10 resultademasiado grande en magnitud, pero en otros casos tal vez no.

Page 248: Economia Matematica en Matlab-Gomez Norma

232 GEDEM - Versión Preliminar

0 0.5 1 1.5 2 2.5 3 3.5 4−40

−30

−20

−10

0

10

20

30

40Solucion Numerica vs. Solucion Algebraica

t

x(t)

x(t)=10e−10t

xi+1

=(1−10h)xi

Figura 9.1: Solución Numérica (h = 0.21)

0.21 a 0.09, obtenemos un comportamiento diferente en la solución numérica (vergura (9.2)).

En este caso, aunque la solución numérica no es completamente igual a la soluciónanalítica, sí observamos un comportamiento similar (monotónico convergente). Esclaro que la integración numérica de la ecuación x = −10x resulta muy sensible acambios en el tamaño del paso, lo que puede generar aproximaciones numéricas muydiferentes a las soluciones analíticas.

En el ejemplo anterior, el problema de convergencia lo solucionamos reduciendo h. Sinembargo, este procedimiento presenta dos dicultades: 1) deducir qué tan pequeñodebe ser el tamaño del paso puede resultar complicado;11 y 2) aún si lograramosobtener un h lo sucientemente pequeño, esto implica un mayor número de iteracionesy, por lo tanto, un mayor costo computacional.

Otra forma de solucionar la ecuación diferencial (9.16), consiste en utilizar el métodomodicado de Euler (ecuación 9.5). La regla de iteración que obtenemos es:

11En ecuaciones diferenciales sencillas es posible determinar un h lo sucientemente pequeño paraobtener una solución estable, pero con ecuaciones diferenciales más complicadas este procedimientoresulta más complejo y, en algunos casos, casi imposible.

Page 249: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 233

0 0.5 1 1.5 2 2.5 3 3.5 4−1

0

1

2

3

4

5

6

7

8

9

10Solucion Numerica vs. Solucion Algebraica

t

x(t)

x(t)=10e−10t

xi+1

=(1−10h)xi

Figura 9.2: Solución Numérica (h = 0.09)

xi+1 = xi + h(−10xi+1)

xi+1 =xi

(1 + 10h)

Por este método, la integración numérica resulta estable, sin importar el tamaño delpaso utilizado. En general, los métodos más utilizados para la solución de sistemasdinámicos rígidos son los algoritmos implícitos, por su gran estabilidad con respectoal tamaño del paso. La desventaja de estos algoritmos es su baja velocidad de so-lución y su gran costo de procesamiento, lo que puede ser crucial en problemas degran magnitud. Otros métodos, como algoritmos predictor - corrector o el métodode Rosenbrock, también son utilizados para la solución de ecuaciones diferencialesrígidas. Escoger un método de solución depende de las características particularesdel sistema dinámico que estemos trabajando.

9.1.2. Ejemplos Computacionales

MATLABr dispone de varias rutinas, o solvers, que utilizan algunos de los métodospresentados. En el Cuadro 9.112 se reseñan los diferentes solvers, los diferentes mé-

12Tomado deMATLABr 6.1 Function Reference: ode45, ode23, ode113, ode15s, ode23s, ode23t,ode23tb. Se obtiene acceso a este cuadro digitando en la Ventana de Comandos:doc ode45.

Page 250: Economia Matematica en Matlab-Gomez Norma

234 GEDEM - Versión Preliminar

todos numéricos que utilizan, y las situaciones en las cuales se recomienda el uso deuno u otro. A continuación presentamos algunas aplicaciones computacionales.

Comando Tipo de Problema Algoritmo Usoode45odesolvers!ode45 No Rígido Combinación de un méto-

do Runge-Kutta de cuatrocon uno de cinco evalua-ciones, conocido como elpar de Dormand-Prince

Debe ser el primero en uti-lizarse: sólo necesita la so-lución en el punto inme-diatamente anterior en eltiempo.

ode23odesolvers!ode23 No Rígido Combinación de un mé-todo Runge-Kutta de or-den dos con otro de ordentres, denominado el parde Bogacki-Shampine

Cuando se está en presen-cia de tolerancias altas origidez moderada.

ode113odesolvers!ode113 No Rígido Adams - Bashforth -Moulton

Cuando la función es par-ticularmente difícil de eva-luar o la tolerancia es muyescasa. Es un método mul-tipaso.

ode15sodesolvers!ode15s Rígido Fórmulas de Diferencia-ción Numérica (opcional-mente: Fórmulas de Dife-renciación hacia Atrás)

Cuando ODE45 sea muyineciente o se sospechaque el problema es rígi-do. Es también un métodomultipaso.

ode23sodesolvers!ode23s Rígido Fórmula Modicada deRosenbrock

Como es un método de unsolo paso, es más ecien-te que ODE15 cuando hayuna tolerancia muy alta yla matriz masa es constan-te.

ode23todesolvers!ode23t Moderadamente Rígido Regla del Trapecio Sólo si el problema esmoderadamente rígido yse necesita una soluciónsin amortiguamientonumérico.

ode23tbodesolvers!ode23tb Rígido Fórmula Implícita deRunge-Kutta

Cuando se usen toleran-cias muy altas para solu-cionar sistemas rígidos.

Cuadro 9.1: Rutinas de MATLABr para solucionar IVPs

Page 251: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 235

Todos los solvers de ecuaciones diferenciales que incluye MATLABr utilizan la mis-ma sintaxis. Por esta razón, proponemos los siguientes pasos generales para solucionarun problema de valor inicial:

Paso 1: Denir en un m-file la ecuación diferencial con la siguiente sintaxis:f=odefun(t,x0,p1,p2,...), donde odefun es el nombre de la función.Sus inputs son un vector con los valores correspondientes al tiempo (t), lascondiciones iniciales del problema (x0) y unos parámetros adicionales (p1,p2,...). En el caso de un sistema de ecuaciones diferenciales con n variables,se debe hacer un planteamiento matricial, siendo x0 un vector de tamaño n×1que contiene las condiciones iniciales de las n variables (ver el ejemplo 9.4).

Paso 2: En otro m-file, especicar las condiciones iniciales x0 y el intervalode tiempo t en el que se desea hallar la solución. Este intervalo de tiempopuede construirse de dos maneras. Una forma es colocar el valor inicial y naldel tiempo, haciendo que el vector t sea de tamaño 2×1. La otra posibilidad esdeterminar los m momentos en que se desea evaluar la solución numéricamente,donde el tamaño del vector tiempo es m× 1.

Paso 3: Fijar las opciones del solver para los distintos tipos de ecuacionesdiferenciales. El comando odegetodeget muestra los valores en los que estánconguradas actualmente estas opciones y odesetodeset permite modicaresta conguración, a partir de la siguiente sintaxis:

options=odeset('Opción1','Valor','Opción2','Valor',...)

Entre otras, las principales opciones que se pueden congurar con odeset son:

• Outputfcnodeset!Outputfcn : Establece la manera en que se ve lasolución de la ecuación diferencial. Existen cuatro posibles valores:

odeprintodeset!Outputfcn!odeprint (default): Despliega en laCommand Window, la solución numérica del sistema dinámico paralas diferentes condiciones iniciales.

odeplotodeset!Outputfcn!odeplot : Muestra grácamente la so-lución a la ecuación diferencial. El eje horizontal corresponde al tiem-po y el eje vertical a x(t).

odephas2odeset!Outputfcn!odephas2 : Contrasta grácamentela solución de la ecuación diferencial a partir de dos condiciones ini-

Page 252: Economia Matematica en Matlab-Gomez Norma

236 GEDEM - Versión Preliminar

ciales diferentes. Cada eje corresponde a la solución para cada una delas condiciones iniciales.

odephas3odeset!Outputfcn!odephas3 : Es similar a odephas2pero para tres condiciones iniciales.

• Outputselodeset!Outputsel . Especica las componentes del vectorsolución que son utilizadas por Outputfcn. Su valor debe ser un vectorde números enteros.

• Statsodeset!Stats : Visualiza, en la Ventana de Comandos, las es-tadísticas del proceso de integración numérica. Su valores son on y off

(default).

• Jacobianodeset!Jacobian : Permite asignar una función que calculala matriz jacobiana de la ecuación diferencial, con el n de reducir loscostos computacionales al calcular la solución. Su valor debe ser el nombrede la función.

• Vectorizedodeset!Vectorized : Se establece en ’on’ cuando lafunción odefun esté vectorizada.

• InitialStepodeset!InitialStep : Sugiere un tamaño inicial depaso13. Su valor debe ser un escalar positivo.

Paso 4: Invocar el solver para hallar la solución de la ecuación diferencial,utilizando la siguiente sintaxis:14

[T,X]=odesolver(@odefun,t,x0,options,p1,p2,...)

Donde los inputs corresponden a:

odefun: función donde está contenida la ecuación diferencial.

t,x0: vector de tiempo y vector de condiciones iniciales previamente deni-dos.

options: vector que dene las opciones que el odesolver va a utilizar.

p1,p2,...: son los parámetros adicionales que puediera requerir la funciónodefun.

13Por default, las rutinas de MATLABr calculan automáticamente el tamaño del paso.14La sintaxis más general es SOL=odesolver(@odefun,t,x0,options,p1,p2,...). Donde

SOL es una variable estructura.

Page 253: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 237

Cuando la función utiliza los parámetros adicionales, y no se congura algunaopción, es necesario colocar [] en lugar de options, de modo que el solver nointerprete el valor de alguno de los parámetros como el valor de las opciones.De otro lado, el solver entrega una serie de outputs, cuyas características son:

T: Un vector de tamaño t× 1 con los valores de la variable tiempo en los quese calculó la solución (también conocidos como pasos).

X: Una matriz de tamaño t× n, donde las columnas contienen la solución dela ecuación diferencial para cada una de las n condiciones iniciales.

A continuación presentamos distintos ejemplos que ilustran la forma de utilizar cadasolver de MATLABr, haciendo énfasis en las diferencias puntuales de cada rutina.Debido al gran número de opciones existentes, intentamos generalizar al máximo eluso de estas. La aplicación exhaustiva de todas ellas, para cada ejemplo, se proponecomo ejercicio para el lector.

Ejemplo 9.1. Encontremos computacionalmente la solución, los equilibrios y estu-diemos la estabilidad de la siguiente ecuación diferencial:

x = 3− x

Tomando las siguientes condiciones iniciales: x0 = 1 y x0 = 5.

Al solucionar analíticamente la ecuación, encontramos que la solución general es dela forma x(t) = 3− e−tC, con un único equilibrio en x = 3, que además es estable. Acontinuación vamos a solucionar numéricamente la ecuación dinámica para compararlas soluciones analítica y computacional.

Paso 1. Crear la ecuación diferencial en el archivo ej1.m:

function dxdt=ej1(t,x);dxdt=3-x;

Paso 2. En otro chero, jar las condiciones iniciales x0 y el intervalo de tiempo ten el que se desea hallar la solución:

t=[0:0.1:5]; % Se especican todos los momentosx0=[1,5]; % Dos condiciones iniciales 1 y 5

Page 254: Economia Matematica en Matlab-Gomez Norma

238 GEDEM - Versión Preliminar

Paso 3. Denir las opciones del solver. En este ejemplo utilizamos outputfcn ystats:

options=odeset('outputfcn',@odeplot,'stats','on');

Paso 4. Invocar el solver para hallar la solución a la ecuación. Las característicasde esta ecuación diferencial permiten utilizar ode45:

[T,X]=ode45(@ej1,t,x0,options);

En la Ventana de Comandos se despliega un vector T, de tamaño 51×1, que contienelos momentos en el tiempo (pasos) en los que se evaluó la solución de la ecuacióndiferencial15. También se genera una matriz X, de tamaño 51× 2, que indica que haevaluado la solución en 51 momentos (pasos) partiendo de dos condiciones iniciales.Además, las estadísticas del proceso son presentadas:

11 successful steps

0 failed attempts

67 function evaluations

0 partial derivatives

0 LU decompositions

0 solutions of linear systems

Finalmente, MATLABr arroja el diagrama de fase (t, x), evidente en la Figura 9.3.Las dos trayectorias corresponden a cada condición inicial, y los círculos a lo largo deellas, señalan los momentos en los que se evaluó la solución. Así encontramos que elequilibrio es x = 3 y es estable, por cuanto a partir de valores superiores e inferioresse converge asintóticamente.Si deseamos visualizar el vector T y la matriz X sin generar el diagrama de fase, po-demos hacer una pequeña variación en el Paso 3, deniendo la opción Outputfcncomo odeprint. Así, MATLABr nos presenta a T y a X en la Ventana de Coman-dos, sin gracarlos.

De otra parte, cuando tenemos diferentes condiciones iniciales, es posible, o deseable,realizar comparaciones entre las diferentes soluciones. Si en el Paso 3 denimos

15En este caso, el vector T resulta ser igual al vector t. Sólo cuando el vector t tiene dos compo-nentes (t=[t0 tfinal]), MATLABr entrega un vector de salida T con un número diferente decomponentes.

Page 255: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 239

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 51

1.5

2

2.5

3

3.5

4

4.5

5dxdt=3−x

x

t

Figura 9.3: Diagrama de Fase (t, x) de x = 3− x

Outputfcn como odephas2, el programa genera la gráca que observamos en laFigura 9.4. El punto inicial es (1,5), correspondiente a los dos valores de x en t0; yel punto nal es (3,3), indicando que cada solución converge a x = 3. Nuevamente,los círculos a lo largo de la línea indican los momentos en los que se evaluaron lassoluciones.

Cuando la ecuación diferencial es más compleja, identicar el punto inicial y el puntonal resulta más complicado. En estos casos, es posible observar que los últimosmomentos son gracados automáticamente con círculos de color verde.

Es necesario aclarar, que no siempre que las soluciones sean convergentes, el punto -nal tendrá ambas componentes iguales. Por ejemplo, cuando las soluciones convergena diferentes equilibrios, el punto nal no tendrá las componentes iguales. El siguienteejemplo ilustra este caso, y la forma para poder identicar convergencia utilizandoodephas2.

Ejemplo 9.2. Tomando las condiciones iniciales: x0 = −1.5; x0 = −0.5; x0 =2.5 y x0 = 5; y el intervalo de tiempo:16 [0,3]; solucionemos la siguiente ecuacióndiferencial:

16Observemos que la solución puede ser calculada a partir de cualquier momento del tiempo, noes necesario iniciar en t0 = 0.

Page 256: Economia Matematica en Matlab-Gomez Norma

240 GEDEM - Versión Preliminar

1 1.2 1.4 1.6 1.8 2 2.2 2.4 2.6 2.8 33

3.2

3.4

3.6

3.8

4

4.2

4.4

4.6

4.8

5dxdt=3−x

x0=5

x0=1

Figura 9.4: Contraste de Dos Condiciones Iniciales con odephas2

x = 4x2 − x3 − x− 6

Encontrar la solución general de esta ecuación resulta complicado. Sin embargo, noes necesario encontrar la solución para poder determinar que tiene tres equilibrios;dos estables (x = 3 y x = −1), y uno inestable (x = 2). Calculemos la solucióncomputacional y analicemos numéricamente la estabilidad.

Paso 1. Crear la ecuación diferencial en un chero llamado ej2:

function dxdt=ej2(t,x);dxdt=4*x.^2-x.^3-x-6;

Paso 2. En otro m-file, denir las condiciones iniciales x0 y el intervalo de tiempot en el que se desea hallar la solución:17

t=[0 3]; % Se especica t inicial y t nalx0=[-1.5 -0.5 2.5 5]; % Separados por espacios

Paso 3. Denir las opciones del solver. Aquí vamos a utilizar las opciones18 outputfcn17Aquí denimos el vector tiempo y el vector x0 de una manera alternativa.18Notemos que la función odephas2 la invocamos de una manera diferente a la utilizada en el

Paso 3 del ejemplo 9.1.

Page 257: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 241

y outputsel:

options=odeset('outputfcn','odephas2','outputsel',[1 3]);

Paso 4. Invocar el solver para hallar la solución a la ecuación. El solver que utiliza-mos es ode45:19

[T,X]=ode45(@ej2,t,x0,options);

El vector t contiene sólo 2 elementos, correspondientes al momento inicial y al mo-mento nal de evaluación, y obtenemos un vector salida T de tamaño 2501× 1 cuyoselementos inician y terminan en estos dos valores, pero entre los que también se en-cuentran todos los demás momentos en que se evaluó la solución. De esta manera,cuando t contiene 2 elementos, no es posible controlar los momentos y el número decomponentes adecuado es determinado por el solver. MATLABr también genera unvector X de tamaño 2501× 4, lo que signica que el proceso de solución de la ecua-ción diferencial se hizo en 2501 momentos a partir de cuatro diferentes condicionesiniciales.

Al denir outputsel con el vector [1 3], le indicamos al solver que las condicionesque queremos contrastar, con odephas2, son la uno y la tres, es decir: x0 = −1.5 yx0 = 2.5. En la Figura 9.5 es posible observar la convergencia de ambas solucionesdado que los círculos correspondientes a los últimos momentos se encuentran máscerca unos a otros que los círculos de los momentos iniciales. Esto signica que elcambio en cada una de las soluciones, a medida que transcurre el tiempo, es cada vezmás pequeño. Además, es claro que cada solución converge a un equilibrio diferenteporque el punto nal es (-1,3), indicando que la solución de la primer condiciónconverge al equilibrio x = −1, mientras que la segunda lo hace a x = 3.

A partir de la gráca podemos comparar cuál de las dos soluciones converge másrápido. La solución de la primer condición inicial converge más rápido que la tercera,dado que la curva, en los últimos momentos, es casi vertical: el cambio en la soluciónde x0 = −1.5 es casi cero, mientras que el de la tercera sigue siendo relativamentegrande, aunque cada vez menor.

19En realidad, las soluciones de los diferentes solvers son similares, por lo que hemos escogido elsolver más sencillo (ode45).

Page 258: Economia Matematica en Matlab-Gomez Norma

242 GEDEM - Versión Preliminar

−1.5 −1.4 −1.3 −1.2 −1.1 −1 −0.9 −0.82.5

2.55

2.6

2.65

2.7

2.75

2.8

2.85

2.9

2.95

3dxdt=4x2−x3−x−6

x0=−1.5

x0=2.5

Figura 9.5: Comparación de las Condiciones x0 = −1.5 y x0 = −0.5

Cuando ninguna de las soluciones converge, los círculos nunca se acercan unos aotros y, por el contrario, tienden a separarse (ver Ejercicio 7). Una situación muyparecida, en la cual los círculos no se acercan unos a otros, sucede cuando una de lassoluciones no converge, mientras que la otra sí. En este caso, la gráca muestra unacurva horizontal, o vertical, dependiendo de cual de las dos soluciones sea convergente(ver Ejercicio 8).

En resumen tenemos que si los círculos, de la gráca obtenido con la función odephas2,tienden a acercarse unos a otros, entonces tenemos que ambas soluciones son con-vergentes; y si además se presentan tendencias extremas como una curva horizontalo vertical, entonces alguna de las soluciones se encuentra convergiendo más rápi-damente que la otra. Por otro lado, cuando no observemos un acercamiento de loscírculos, la existencia de una curva horizontal o vertical es indicio de que una de lassoluciones converge, mientras que la otra no20.

La función odephas3 nos permite extender el análisis comparativo a tres condicionesiniciales. En este caso, la gráca es visualizada en tres dimensiones. Los criterios deconvergencia son iguales a los de odephas2, siempre y cuando se tenga en cuenta que

20Es claro que esta forma de identicar convergencia, además de resultar muy subjetiva, depen-de ampliamente de la escala adoptada en cada eje, y sólo es aplicable a ecuaciones diferencialesautónomas. Recomendamos complementar el análisis basado en odephas2, con diagramas de fase(odeplot).

Page 259: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 243

se trata de una gráca 3D. La Figura 9.6 muestra la gráca obtenida con odephas3,para las condiciones iniciales: x0 = −1.5, x0 = −0.5 y x0 = 2.5.

−1.5−1.4

−1.3−1.2

−1.1−1

−0.9−0.8

−1.2

−1

−0.8

−0.6

−0.42.5

2.6

2.7

2.8

2.9

3

dxdt=4x2−x3−x−6

x0=−1.5x

0=−0.5

x0=2.5

Figura 9.6: Contraste de Tres Condiciones Iniciales con odephas3

Ejemplo 9.3. Resolvamos la siguiente ecuación diferencial no autónoma:

x =b− atx2

x

Con las cuatro condiciones iniciales: x0 = −8, x0 = −2, x0 = 4 y x0 = 10, enel intervalo [0, 15]. Esta ecuación no es separable, no es homogénea y solucionarlaanalíticamente es un proceso complejo. Veamos su solución computacional con a =0.4 y b = 30:

Paso 1. Crear la ecuación diferencial en un m-file:

function dxdt=ej3(t,x0,a,b); % Parametros Adicionalesdxdt=(b-a*t.*x.^2)./x;

Paso 2. En otro chero, denir las condiciones iniciales x0, el intervalo de tiempot y los valores de los parámetros a y b:

Page 260: Economia Matematica en Matlab-Gomez Norma

244 GEDEM - Versión Preliminar

t=[0 15];x0=[-8 -2 4 10];a=0.4; b=30; % Denicion de los Parametros

Paso 3. Denir las opciones del solver. En este ejemplo no utilizamos opciones.

Paso 4. Invocar el solver para hallar la solución a la ecuación. Las características deesta ecuación diferencial hacen necesario utilizar una rutina para ecuacionesrígidas:21

[T,X]=ode23tb(@ej3,t,x0,[],a,b);

Dado que hemos decidido no especicar ninguna opción, debemos utilizar los parén-tesis cuadrados ([]) al momento de invocar la rutina. De lo contrario, el programainterpreta el valor del primer parámetro como el valor de las opciones.

0 5 10 15−30

−20

−10

0

10

20

30dxdt=(30−0.4tx2)/x

t

x(t)

Figura 9.7: Diagrama de Fase (t, x) de x = b−atx2

x

Al igual que en cualquier ecuación diferencial no autónoma, el o los equilibrios se en-cuentran en función del tiempo. En este caso, la ecuación que describe los equilibrios(x = 0) es:

21Cuando a toma valores grandes, o cuando la solución se realiza para valores de t muy altos,el proceso de integración numérica presenta problemas. Es posible utilizar cualquier rutina parasolucionar ecuaciones diferenciales rígidas. Hemos escogido ode23tb por su mayor velocidad desolución en este problema particular.

Page 261: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 245

x(t) = ±√

b

at

Si utilizamos la opción odeplot obtenemos el diagrama de fase (t, x) (Figura 9.7),en el que podemos observar que las trayectorias de equilibrio son estables porque,al partir de condiciones iniciales diferentes, las soluciones siempre convergen haciaellas.

Hasta ahora hemos resuelto una ecuación diferencial a la vez, ahora presentaremosuna generalización para la solución de sistemas de ecuaciones diferenciales. El si-guiente ejemplo ilustra el procedimiento de solución de un sistema de 2× 2.

Ejemplo 9.4. Resolvamos computacionalmente el siguiente sistema de ecuaciones:

v = 10u + 7v

u = u + 4v

Con la condición inicial v0 = 1 y u0 = 0, en el intervalo [0, 0.5].

La solución analítica del sistema dinámico, dadas las condiciones iniciales, viene dadapor las siguientes ecuaciones:

v(t) = 0.7143 e11t + 0.2857 e−3t

u(t) = 0.2857 e11t − 0.2857 e−3t

El único equilibrio es v = 0 y u = 0 y, dados los valores propios de la matriz (λ1 = 11,λ2 = −3), sabemos que se trata de un equilibrio de punto de silla.

Ahora calculemos numéricamente la solución y comparemosla con la solución ante-rior.

Paso 1. Denir el sistema dinámico en el archivo ej4.m

Page 262: Economia Matematica en Matlab-Gomez Norma

246 GEDEM - Versión Preliminar

function dxdt=ej4(t,x);v=x(1); % componente 1 de x es vu=x(2); % componente 2 de x es u

dvdt=10*u+7*v; % Sistema dinamicodudt=u+4*v;

dxdt=[dvdt; dudt];% componente 1 de dxdt es dvdt% componente 2 de dxdt es dudt

Paso 2. En otro chero, denir el intervalo de tiempo t y las condiciones inicialesx0:

t=[0 0.5];v0=1;u0=0;x0=[v0; u0];% componente 1 de x0 es v0% componente 2 de x0 es u0

Paso 3. Denir las opciones del solver. En este ejemplo utilizamos odeplot comofunción de salida:

options=odeset('outputfcn','odeplot');

Paso 4. Invocar el solver para hallar la solución a la ecuación. Utilizamos la rutinaode45:22

[T,X]=ode45(@ej4,t,x0,options);

En este caso, para solucionar el sistema dinámico, creamos una vector x que contienea las variables v y u. De esta forma, el vector de condiciones iniciales x0 tiene losvalores de las condiciones iniciales para cada variable (v0 y u0); y el vector dxdt

22Dado que el máximo valor propio de la matriz asociada al sistema no es mucho más grande,en valor absoluto, que el valor propio más pequeño, estamos seguros que el sistema dinámico no esrígido.

Page 263: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 247

tiene los valores de la derivada de cada variable con respecto al tiempo (dvdt ydudt). Al plantear de esta forma el sistema dinámico, las rutinas de MATLABr

pueden solucionar simultáneamente ambas ecuaciones. Como salidas, ode45 generaun vector T, de tamaño m×1, que contiene los momentos de evaluación de la solución;y una matriz X, de tamaño m × 2, donde las columnas son la solución para cadavariable.23

La función odeplot genera simultáneamente los diagramas de fase (t, v) y (t, u) en lamisma gráca (ver Figura 9.8 a.). Por otro lado, si utilizamos la función odephas2obtenemos el diagrama de fase (v, u) (Figura 9.8 b.). En ambas grácas podemosobservar que las soluciones para cada variable son no convergentes.

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.50

50

100

150a)

t

v(t)u(t)

u(t)

v(t)

0 20 40 60 80 100 120 140 160 1800

10

20

30

40

50

60

70b)

v(t)

u(t)

Figura 9.8: a) Diagramas de Fase (t, v) y (t, u) b) Diagrama de Fase (v, u)

Para poder observar que (0,0) es un equilibrio de punto de silla es necesario tomaren cuenta más condiciones iniciales alrededor de este punto. Sin embargo, considerarmás condiciones implica un problema, ya que las rutinas de MATLABr, a pesar desolucionar sistemas dinámicos de varias variables, no permiten solucionarlos para másde una condición inicial a la vez. Si, por ejemplo, necesitamos comparar las solucionesde dos condiciones iniciales, debemos solucionar dos veces el sistema dinámico. Elsiguiente ejemplo presenta la solución del sistema para 3 condiciones iniciales, pormedio de la rutina rk4.

23Cuando trabajamos con una sola ecuación diferencial, si la matriz obtenida X tenía un tamañode m×n, esto signicaba que la solución era calculada en m momentos, para n condiciones iniciales.Ahora, el tamaño m × n de la matriz X indica que se han calculado las soluciones de n variablespara m momentos.

Page 264: Economia Matematica en Matlab-Gomez Norma

248 GEDEM - Versión Preliminar

Ejemplo 9.5. Queremos solucionar el mismo sistema de ecuaciones del ejemploanterior, en el intervalo [0, 0.25], para las siguientes 3 condiciones iniciales:

1. (v0, u0) = (10,−9)

2. (v0, u0) = (10,−10)

3. (v0, u0) = (10,−11)

Para poder solucionar el sistema dinámico simultáneamente para las 3 condiciones,vamos a utilizar el solver rk4, que hace parte del toolbox CompEcon. Como sunombre lo indica, esta rutina utiliza el método de Runge - Kutta de cuarto ordenpara hallar la solución. El comando presenta la misma sintaxis de los odesolversde MATLABr, aunque no existe la posibilidad de denir algún tipo de opciones. Esnecesario resaltar que el solver utiliza un tamaño de paso jo, por lo que sólo puedeser utilizado para solucionar sistemas dinámicos no rígidos. Por tal razón, la únicaforma de solucionar un sistema rígido, para las diferentes condiciones iniciales, es pormedio de una programación especial que involucra varias iteraciones (ver ejercicio9).

A continuación presentamos el procedimiento de solución:

Paso 1. Denir el sistema dinámico en un m-file llamado ej5:

function dxdt=ej5(t,x,ag); % Requiere agv=x(1); % la sintaxis es la misma que en ej4.mu=x(2);

dvdt=10*u+7*v;dudt=u+4*v;dxdt=[dvdt; dudt];

Paso 2. En otro archivo, denir las condiciones iniciales x0 y el intervalo de tiempot:

t=[0:0.05:0.5]'; % Vector Columna con Momentosv0=[10 10 10];u0=[-9 -10 -11];x0=[v0; u0];

Page 265: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 249

Paso 3. No es posible denir opciones.

Paso 4. Invocar el solver para hallar la solución a la ecuación.

[T,X]=rk4('ej4',t,x0);

Para utilizar rk4 debemos introducir flag en la sintaxis de la función. Esto simple-mente es utilizado para que, al igual que las rutinas de MATLABr, el solver puedaaceptar como entradas los parámetros adicionales. En este ejemplo no utilizamosparámetros adicionales, pero en la aplicación económica será de gran importancia ladenición de estos parámetros para poder realizar simulaciones.

Observemos que la denición del vector tiempo también cambia. Mientras que paralas rutinas de MATLABr no importa si el vector tiempo es un vector la o colum-na,24 el solver rk4 requiere que el vector de tiempo sea columna, y que contengatodos los momentos de evaluación. En el Paso 2 creamos un vector la, con valoresentre 0 y 0.5, y luego lo trasponemos para obtener el vector t.

Los vectores v0 y u0 debemos denirlos de tal forma que la primer componente deambos vectores generen la primer condición inicial, y así sucesivamente. Así, la tercercomponente del vector v0 junto con la tercer componente del vector u0 conformanla tercer condición inicial. Esto también implica que cada una de las columnas de lamatriz x0 es una condición inicial.

Como resultado obtenemos el vector T de 11× 1, igual al vector t, y la hipermatrizX de 11 × 2 × 3. Las dimensiones de X indican que solucionamos un sistema con 2variables, para tres condiciones iniciales, en 11 momentos diferentes. Al contrario delos solvers de MATLABr, la rutina rk4 no genera ningún tipo de gráca, debemosgracar manualmente los diagramas de fase:

Diagramas de Fase (t,v) y (t,u): Para generar los diagramas de fase pa-ra cada una de las variables, necesitamos utilizar el comando squeeze pararemover una de las dimensiones de la hipermatriz,25 y luego gracar contrael tiempo. Por ejemplo, para gracar el diagrama de fase (t, v) tenemos queremover la dimensión de la variable u:

24En todos los ejemplos anteriores hemos denido el vector tiempo como un vector la, sinembargo, los resultados no cambian si el vector tiempo es un vector columna.

25El comando squeeze remueve la dimensión de una matriz. Véase Cuadro 2.1, pág. 33.

Page 266: Economia Matematica en Matlab-Gomez Norma

250 GEDEM - Versión Preliminar

plot(t,squeeze(X(:,1,:)))

En este caso, la segunda dimensión corresponde a u. Si deseamos generar eldiagrama de fase (t, u) debemos remover la primera dimensión:

plot(t,squeeze(X(:,2,:)))

En ambos diagramas de fase, Figura 9.9, se observa que para dos de las condi-ciones iniciales las soluciones de ambas variables son explosivas, mientras quepara la otra, los valores de v y u se acercan lentamente hacia 0.

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5−200

−150

−100

−50

0

50

100

150

200a)

t

v(t)

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.4 0.45 0.5−80

−60

−40

−20

0

20

40

60

80b)

t

u(t)

Figura 9.9: a) Diagrama de Fase (t, v) b) Diagrama de Fase (t, u)

Diagrama de Fase (v,u): Para gracar este diagrama de fase, también es ne-cesario utilizar squeeze. Sin embargo, ahora gracamos una dimensión versusla otra, así:

plot(squeeze(X(:,1,:)),squeeze(X(:,2,:)))

De esta forma obtenemos el diagrama de fase (v, u) evidente en la Figura 9.10.

Como se puede observar, las condiciones (10,-9) y (10,-11) generan solucionesinestables que se alejan rápidamente del equilibrio. Por otro lado, la condicióninicial (10,-10) sigue una trayectoria hacia el equilibrio (0,0). Si hubiéramoscalculado la solución para un intervalo de tiempo más grande, observaríamoscómo la trayectoria que parte en (10,-10) naliza en el punto de equilibrio.

Page 267: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 251

−25 −20 −15 −10 −5 0 5 10 15 20 25−15

−10

−5

0

5

10

15

v(t)

u(t)

Figura 9.10: Diagrama de Fase (v, u)

Para determinar que efectivamente el equilibrio es de silla es necesario tomar máscondiciones iniciales alrededor de (0,0). El resultado que se obtiene es consistentecon la solución analítica del problema.

9.1.3. Aplicaciones Económicas

El Modelo de Crecimiento de Solow

Modelo de Crecimiento de SolowEl modelo de crecimiento de Solow es uno de los modelos más utilizados en el análisiseconómico de muy largo plazo. El modelo fue propuesto por el economista RobertSolow en un artículo publicado en 1956 en el Quarterly Journal of Economics,26 enel que buscaba contrastar los resultados obtenidos en el modelo de Harrod - Domarcon los resultados de un modelo en el que se mantenían los mismos supuestos pero lafunción de producción agregada cambiaba. Suponiendo la existencia de una funciónagregada con rendimientos constantes a escala, Solow logra encontrar, al contrariode Harrod - Domar, que el equilibrio de largo plazo es estable.

Con el objetivo de aplicar las herramientas computacionales presentadas en las sec-ciones anteriores, a continuación presentamos el modelo básico y su respectiva pro-

26 Solow, Robert. 1956. A Contribution to the Theory of Economic Growth. Quarterly Journalof Economics. Vol. 70, No. 1 (Feb. 1956), 65-94.

Page 268: Economia Matematica en Matlab-Gomez Norma

252 GEDEM - Versión Preliminar

gramación.27

Modelo:

Suponemos que existe un sólo bien en la economía; su nivel de producción en elmomento t es Yt. Una parte de esta producción es consumida y la otra es ahorrada.La fracción del producto que se ahorra es constante y viene determinada por lapropensión marginal a ahorrar s, así que el ahorro total en el momento t es St = sYt.

El stock de capital, Kt, consiste en la acumulación del único bien de la economía. Elcambio en el tiempo de este stock de capital (dKt/dt o Kt) es la inversión neta.28Además, como el ahorro siempre es igual a la inversión tenemos la siguiente identidadbásica en cada instante del tiempo:

Kt = sYt (9.17)

El único bien de la economía es producido utilizando capital y trabajo. La tecnologíadisponible en la economía se encuentra representada por la siguiente función deproducción:

Yt = F (Kt, Lt) (9.18)

Además se supone que la producción presenta rendimientos constantes a escala, porlo que esta función se supone homogénea de grado uno.29

Introduciendo (9.18) en (9.17) obtenemos:

Kt = sF (Kt, Lt) (9.19)

Por otro lado, como resultado de un crecimiento exógeno y continuo de la población,la fuerza laboral L se incrementa a una tasa constante n, es decir:

Lt = L0ent (9.20)

27En esta sección nuestro objetivo es presentar la programación computacional del modelo deSolow. Para una exposición teórica más profunda recomendamos revisar el siguiente libro (?), elartículo original o cualquier texto guía del primer curso de macroeconomía.

28Hablamos de inversión neta pues suponemos que no hay depreciación de capital. Cuando existedepreciación de capital, la inversión neta es igual a la inversión bruta descontando la depreciación.La programación del modelo con depreciación se deja como ejercicio para el lector (ver ejercicio 11).

29Además del supuesto de homogeneidad de grado uno, por lo general se supone que la funciónde producción cumple las siguientes condiciones: FK > 0, FL > 0, FKK < 0, FLL < 0, FKL > 0 ylas denominadas condiciones de Inada.

Page 269: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 253

En (9.19) L es el empleo total y en (9.20) L es la oferta disponible de trabajo. Asu-miendo que la economía siempre se encuentra en pleno empleo, es posible introducir(9.20) en (9.19) obteniendo:

Kt = sF (Kt, L0ent) (9.21)

La anterior es una ecuación diferencial de una sola variable, K(t), que determina lasenda de acumulación de capital consistente con el pleno empleo de la fuerza laboraldisponible en cada momento del tiempo.

Una vez conocemos las sendas del stock de capital y de la fuerza de trabajo, juntocon la función de producción, podemos calcular la senda temporal del producto real.Con estas tres podemos calcular la productividad marginal del trabajo y del capital,y por consiguiente el salario real y la tasa de interés.

Nos interesa reexpresar la ecuación (9.21) en términos per cápita puesto que no escorrecto decir que un país es más rico porque produce más que antes; más bien seconsidera que un país es más rico si sus habitantes, en promedio, producen más queantes.30 Por otro lado, plantear el modelo en variables per cápita resulta convenientedesde el punto de vista analítico, dado que permite caracterizar grácamente laecuación diferencial.

La ecuación (9.22) dene la variable k como la relación capital trabajo. Esta relaciónindica el número de máquinas, o cualquier otro bien de capital, que hay por cadatrabajador.

kt =Kt

Lt(9.22)

Para calcular la tasa de crecimiento de la variable k, sacamos logaritmo a amboslados de la ecuación y luego derivamos con respecto al tiempo obteniendo:

kt

kt=

Kt

Kt− Lt

Lt(9.23)

Reemplazando la tasa de crecimiento de la fuerza de trabajo y la ecuación (9.21)obtenemos:

30(?, p. 19)

Page 270: Economia Matematica en Matlab-Gomez Norma

254 GEDEM - Versión Preliminar

kt

kt=

sF (Kt, Lt)Kt

− n

kt

kt= sF

(1,

1kt

)− n

kt = skF

(1,

1kt

)− nkt

kt = sF (kt, 1)− nkt (9.24)

La función F (kt, 1) representa la producción total generada por k unidades de capitalper cápita, cuando una unidad de trabajo es utilizada. De esta forma, el primertérmino de la ecuación (9.24) correspondería a la fracción ahorrada de la producciónpor habitante. El segundo término indica que el stock de capital disminuye comoconsecuencia del crecimiento de la población. Finalmente es posible observar que elcapital per cápita crece, decrece y es constante cuando el ahorro per cápita es mayor,menor e igual que el término nkt.

Hasta el momento sólo hemos denido algunas propiedades generales de la función deproducción, pero al programar debemos utilizar una función de producción especíca.En este caso vamos a trabajar con la función de producción tipo Cobb - Douglas31con α = 0.5 y β = 0.5. Por lo tanto la función de producción per cápita es:

F (Kt, Lt) = K0.5t L0.5

t

F (kt, 1) = k0.5t 10.5

F (kt, 1) = k0.5t

También es necesario denir unos valores para las tasas de ahorro y crecimiento dela población. Suponemos que s = 15.5 % y n = 2.2%. A continuación presentamosla respectiva programación del modelo.

Programación:

En primer lugar debemos crear un m-file, llamado fsolow.m, en el cual vamos aespecicar la ecuación diferencial (9.24). Al contrario de los ejemplos anteriores, enlos cuales la única función especicada en el m-file era la ecuación diferencial, enel mismo chero vamos a denir kt y la función de producción per cápita:

31Ver caps. 4,5 y 7

Page 271: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 255

function dk=fsolow(t,k,alpha,s,n);dk=s*produccion(k,alpha)-n*k;

function y=produccion(k,alpha);y=k.^alpha;

Las dos primeras líneas de programación son utilizadas para denir la ecuación di-ferencial (9.24). Observemos que la función de producción no es denida en estaslíneas, simplemente es referenciada. La función de producción tipo Cobb-Douglas esespecicada en las dos últimas líneas del programa. Esta forma de programación esmuy utilizada por cuanto permite disminuir el número de cheros destinados para elmodelo al tiempo que genera mayor exibilidad en la especicación del mismo.El siguiente paso consiste en construir un nuevo chero, llamado solowprog.m, enel cual vamos a denir los parámetros del modelo y a invocar la rutina de soluciónode45.clear; clc; close all

alpha=0.5; s=0.155; n=0.022;t=[0:0.1:40];k0=2;options=odeset('outputfcn','odeplot');

Vamos a considerar un horizonte de tiempo de (0,40) y, al igual que cualquier pro-blema de valor inicial, 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 losejemplos anteriores.

[T,K]=ode45(@fsolow,t,k0,options,alpha,s,n);

El diagrama de fase (t, k) muestra que el capital per cápita de equilibrio correspondea k∗ = 49, 63

El Modelo de Crecimiento de Ramsey

Modelo de Crecimiento de Ramsey

El Modelo de Ciclo de Goodwin

9.2. Ecuaciones en Diferencia y Dinámica Discreta

Page 272: Economia Matematica en Matlab-Gomez Norma

256 GEDEM - Versión Preliminar

0 10 20 30 40 50 60 70 80 90 10040

40.2

40.4

40.6

40.8

41

41.2

41.4

41.6

41.8

kt

t

Modelo de Solow

Figura 9.11: Diagrama de Fase (t, kt)

Ejercicios1) 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 delmétodo RK2, presentados en la primera sección del capítulo. La solución nu-mérica debe calcularse para 10 momentos, y para el intervalo de tiempo [0, 2](Tenga en cuenta que debe calcular el tamaño de paso adecuado para cubrirel intervalo de tiempo en 10 momentos).

b) Graque la solución algebraica y numérica de ambos métodos en una mismagura. ¾Existe alguna diferencia entre los dos métodos?

c) Construya un m-file en el que el tamaño del paso itere tomando 20 valo-res. Estos valores deben encontrarse entre 0.05 y 1, y deben estar igualmenteespaciados (Ayuda: utilice el comando linspace para generar este vector).Solucione el IVP considerado para 10 momentos y un tiempo inicial t0 = 0.Genere una gura para cada valor de h en la que se muestren las solucionesde ambos métodos junto con la solución algebraica. ¾Qué sucede al cambiarel tamaño del paso?¾Qué método es más estable?

Page 273: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 257

2) Realice la programación del método de Runge - Kutta de cuarto orden presentadoen la página 223. El programa debe requerir los mismos inputs que el script delmétodo RK2.

a) Solucione el IVP del ejercicio 1 con la programación desarrollada. Los pará-metros utilizados son los mismos que en el literal a.

b) Compare grácamente la soluciones obtenidas por el método RK2 y el RK4con la solución algebraica.

c) ¾Qué sucede si aumenta el tamaño del paso?

3) Compare grácamente la solución por el método de Adams - Bashforth con elmétodo de Adams - Bashforth - Moulton, en el intervalo [t, t + h]. De la siguienteecuació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.

a) Genere una matriz A20×2 donde la primer columna sea la solución obtenidapor el comando ode113 y la segunda la del script del algoritmo Adams -Bashforth - Moulton de la página 230.

b) Calcule el vector columna d cuyas componentes cumplan la siguiente regla:dj = aj1 − aj2.

c) Graque d’ contra el tiempo. ¾Qué nos dice este resultado?

(Aunque el método utilizado sea el mismo, la diferencia radica en que el comandode MATLABr incorpora algoritmos adicionales para cambiar el tamaño del pasosegún sea necesario, 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étodomodicado de Euler soluciona el problema de integración numérica de la siguienteecuación diferencial rígida:

x = −10x

Page 274: Economia Matematica en Matlab-Gomez Norma

258 GEDEM - Versión Preliminar

6) Considere el siguiente problema de valor inicial:

x = b− ax

x0 = 1.8

a) Construya un chero en el que, utilizando el comando tic toc deMATLABr,se compare el tiempo que requiere ode23 y ode23tb para solucionar el sis-tema en el intervalo de tiempo [0,0.5]. Tome a = 10, b = 20 y no especiquelos momentos de evaluación.

b) Asuma a = 10 y calcule el tiempo requerido por cada solver para 5 diferentesvalores de b entre 20 y 1000. ¾Qué sucede con el tiempo de solución a medidaque b toma valores más grandes? ¾Cuál de las dos rutinas toma más tiempopara solucionar el problema?

c) Fije b = 100 y calcule el tiempo requerido por cada solver para 5 diferentesvalores de a entre 10 y 10000. ¾Qué sucede con el tiempo de solución amedida que a toma valores más grandes? ¾Cuál de las dos rutinas toma mástiempo para solucionar el problema?

d) ¾Por qué una rutina es más lenta que la otra? Explique.

7) Necesito una ecuación diferencial que tenga un equilibrio inestable. Las dos condi-ciones iniciales no llevan al equilibrio. Ponerlos a gracar con odeplot y odephas2.

8) Necesito un IVP con dos condiciones iniciales, donde una converja y la otra no.Ponerlos a gracar con odeplot y odephas2.

9) En el ejemplo 9.5, si el sistema dinámico planteado fuera rígido, no sería posibleutilizar la rutina rk4. Esto plantea un problema para solucionar simultáneamentesistemas de ecuaciones rígidos para varias condiciones iniciales.

Utilizando cualquier rutina de MATLABr para problemas rígidos, y con ayudadel comando for, construya un programa en el que en cada iteración se encuentrala solución para cada condición inicial. El programa debe aceptar como entradasel nombre de la función que contiene el sistema dinámico, las condiciones iniciales,el intervalo de tiempo, y algunos parámetros adicionales. Como resultado, se debeobtener un vector T y una hipermatriz X de m× n× d.

10) Programe la función que contiene la ecuación diferencial en el modelo de Solow,de tal forma que acepte un parámetro p. Si el valor del parámetro es p = 0

Page 275: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 259

entonces la función de producción agregada es f(k) = min kα , 1

β. Si el valor delparámetro es p = 1 entonces la función de producción es f(k) = kα. El cherodebe aceptar como inputs (t, k, alpha, beta, p, s, n, d).

11) Extienda y programe el modelo de Solow incorporando la depreciación de capital.Suponga que el capital se deprecia a una tasa constante d.32

12) Utilizando el comando gradient determina la senda del salario real y la tasa deinterés del ejemplo planteado en la página 37.

32Observe que la depreciación total es: D = dK(t).

Page 276: Economia Matematica en Matlab-Gomez Norma

260 GEDEM - Versión Preliminar

Page 277: Economia Matematica en Matlab-Gomez Norma

Bibliografía

Blanchard, Olivier. 1989. Lectures on Macroeconomics. The MIT Press.

Draper, J., y Klingman J. (1979). Matemáticas para Administración y Economía.5.a Reimpresión. HARLA S.A., México.

Fackler, P., y Mario Miranda. 2003. Applied Computational Economics and Finance.The MIT Press.

García de Jalón, Javier et al. 2001. Aprenda Matlab 6.1 como si estuviera enprimero. Escuela superior de Ingenieros Industriales. Universidad Politécnica deMadrid.

Grossman, Stanley. 1996. Algebra Lineal. 5a. Mc. Graw Hill.

Judd, Kenneth. 1998. Numerical Methods in Economics. Cambridge : The MITPress.

Kincaid, D., y Cheney W. 1994. Análisis Numérico: Las Matemáticas del CálculoCientíco. Addison-Wesley Iberoamericana, Delaware.

Leithold, L. (1979). El Cálculo con Geometría Analítica. 17.a Reimpresión. HARLAS.A., México.

Mantilla, Ignacio. (2004). Análisis Numérico. 1.a Edición. Universidad Nacionalde Colombia.

Monsalve, Sergio, ed. (2004). Matemáticas Básica para Economistas 3: Optimiza-ción y Dinámica. Mimeo: Universidad Externado de Colombia - UniversidadNacional de Colombia.

. 2005a. Matemáticas Básicas para Economistas 0: Fundamentos. Universi-dad Nacional de Colombia y Universidad Externado de Colombia.

. 2005b. Matemáticas Básicas para Economistas 2: Cálculo. UniversidadNacional de Colombia y Universidad Externado de Colombia.

261

Page 278: Economia Matematica en Matlab-Gomez Norma

262 GEDEM - Versión Preliminar

Mora, Hector. 2001. Optimización no lineal y Dinámica. 2a. Universidad Nacionalde Colombia. Facultad de Ciencias.

Nicholson, Walter. 1997. Teoría Microeconómica: principios básicos y aplicaciones.6a. McGraw-Hill.

Sydsaeter, K., y Peter Hammond. (1996). Matemáticas para el Análisis Económico.Prentice Hall, Madrid.

Page 279: Economia Matematica en Matlab-Gomez Norma

Índice alfabético

acos, 53

alignment, 102

atan, 51

axis, 101

cat, 32

chol, 47, 78

clabel, 106

clc, 9

clear, 9

close, 9

color, 102

colorbar, 109

colormap, 108

contour, 106

contour3, 106

cross, 52, 63

cumtrapz, 171

dblquad, 177

det, 74

diag, 82

diff, 141, 152, 163

doc, 17

dot, 52

eig, 65

eps, 83

fdhess, 154, 188

fdjac, 142

fhess, 188

fjac, 142

font, 102

for, 14, 82

get, 103

gradient, 138, 149

grid, 100

help, 17

if, 13

inf, 98

inline, 94

inv, 73

ipermute, 35

legend, 100

line, 100, 102

linestyle, 102

linewidth, 102

lu, 46, 76

marker, 102

markersize, 102

mesh, 105

meshgrid, 57, 104

min, 191

ndims, 34

norm, 49

orth, 55

permute, 35

plot, 95, 188

plot3, 105

polyder, 136, 148

polyint, 169

qnwsimp, 175

qnwtrap, 173

263

Page 280: Economia Matematica en Matlab-Gomez Norma

264 GEDEM - Versión Preliminar

quad, 175

rref, 70

rrefmovie, 71

set, 103

size, 33

sparse, 37

squeeze, 34

subplot, 101, 115

surf, 105

syms, 163

texlabel, 100

text, 100

title, 100

trapz, 171

view, 101

xlabel, 100

ylabel, 100

zlabel, 100

svd, 50

Inputs, 10

Apéndice

integración, 179

Bifurcación, 13

Bucle, 13

Cell Array, 24

cell-array, 122, 124

comandos, 234-236

Comentarios, 7, 8

Command History, 5

Command Window, 2

CompEcon, 2

Compecon Toolbox, 173, 175

Concavidad, 183

Conjunto

de llegada, 94

de salida, 94

Conjuntos

contorno inferior, 185

contorno superior, 185

constante de integración, 169

Contador, 14

Convexidad, 183

Current Directory, 6

Curvas de nivel, 185

Derivación de orden superior, 147

Derivación de primer orden, 136

ejm8, 54

Entradas, 10

Error de Truncamiento, 137

Expansión de Taylor, 156

Función, 94

cóncava, 184

CES, 126

Cobb-Douglas, 125, 128

convexa, 184

cuasicóncava, 184

cuasiconvexa, 184

de dos variables, 103

visualización de, 103

de una variable, 94

visualización de, 94

discontinua, 98, 99

dominio de una, 94

Leontieff, 128

Lineal, 128

Mínimo, 128

parámetros de, 114

rango de una, 94

recorrido de una, 94

Page 281: Economia Matematica en Matlab-Gomez Norma

SISTEMAS DINÁMICOS 265

univariada, 188

Función Cobb-Douglas, 145

Funcion

CARA, 132

CRRA, 132

Funciones, 10, 93

económicas, 124

Gauss-Jacobi, 80, 81, 87

Gauss-Seidel, 80, 83

Gráfico

opciones de, 99, 108

Hipermatrices, 31, 35

comandos para, 33

imagen, 94

integración, 167

integración definida, 168

integración indefinida, 168

integral, 169

Integrales Dobles, 176

Iteración, 11

regla de, 80, 81, 83

Launch Pad, 3

M-File, 6, 8, 9

Método

analítico, 11

Gauss-Jordan, 70

inversa, 73

numérico, 11, 13

regla de Cramer, 74

Método de aproximación lineal,

170

Método de Diferencia Finita, 137

Métodos

analíticos, 70

directos, 70

factorización de Cholesky, 78

factorización de Crout, 76

indirectos, 70, 79

iterativos, 70

numéricos, 70, 79

Matrices, 29

a partir de vectores, 57

de coeficientes, 69

de descomposición, 80, 81, 83

determinante de, 43

dispersas, 36

comandos para, 37

división de, 41

división izquierda, 41

factorizables, 46

factorización de Cholesky, 47

factorización LU, 46

generadas automáticamente, 37

introducción de, 30

inversa de, 43

multiplicación de, 41

norma de, 43

operaciones entre, 41

ortogonales, 55

potenciación de, 41

rango de, 43

resta de, 41

suma de, 41

tipos de, 36

transpuesta de, 43

traza de, 43

triangular inferior, 77

triangular superior, 77

triangulares inferiores, 43

triangulares superiores, 43

Page 282: Economia Matematica en Matlab-Gomez Norma

266 GEDEM - Versión Preliminar

valores singulares, 47

Matrices

Débilmente Condicionadas, 80

Matriz

ampliada, 70

definida negativa, 186

definida positiva, 186

escalonada reducida, 71

hessiana, 184

hessiana orlada, 185

semidefinida negativa, 186

semidefinida positiva, 186

Matriz Hessiana, 149

Matriz Jacobiana, 142

Menor principal dominante, 186

Metodos

factorización LU, 76

Modelo de Cournot, 157

Nodo, 173

peso, 173

ponderación, 173

Objetos, 19

Optimización, 213

Outputs, 10

Pareja Ordenada, 103

Path, 16

Planos, 58, 61

distancia a un punto, 63

Rectas, 58, 59

Regla de Iteración, 16

Regla de Simpson, 174

Regla del Exponente, 168

Regla del Trapecio, 170

Salidas, 10

Scripts, 10

Sentencia, 13

Simulación

funciones de dos variables,

121

funciones de una variable, 114

Sistemas de Ecuaciones, 69

homogineos, 73

Sistemas Homogéneos, 70

Sistemas Singulares, 70

Symbolic Toolbox, 163

tematico, 217-221, 223, 225, 228,

231, 251, 255

Tolerancia, 83

Toolbox, 1, 3

Valores propios, 64

Variables

simbólicas, 13

Vectores, 29, 48

ángulo entre, 53

de resultados, 69

de variables, 69

dirección de, 50

magnitud de, 48

norma de, 48

operaciones entre, 51

producto cruz, 52

producto escalar, 52

proyección, 54

solución, 69

Vectores propios, 64

Ventanas de Matlab, 2

Workspace, 4