Está en la página 1de 250

Anlisis Numrico para Ingenieros a e Civiles

Oscar Javier Garc a-Cabrejo, Edgar Mu oz D n az, Jorge Alberto Rodr guez Ordo ez, David Gmez n o Villasante Nelson Obregn Neira o Departamento de Ingenier Civil a Facultad de Ingenier a Ponticia Universidad Javeriana Bogot, Colombia a c 2007

R 2007 Oscar Javier Garc a-Cabrejo, Edgar Mu oz D Jorge Alberto Rodr n az, guez Ordo ez, David Gmez Villasante, Nelson Obregn Neira, Depto. Ingenier Cin o o a vil, Ponticia Universidad Javeriana, Bogot, Colombia. a Todos los Derechos Reservados. 5ANSI Z39.481984.

10 09 08 07 06 05 04 03 02 01

15 14 13 12 11 10 9 10 Octubre 2007 23 Noviembre 2007 19 Diciembre 2007 5 Febrero 2008

Edicin 0.1 o Edicin 0.1 con correcciones o Edicin 0.1 con animaciones o Edicin 0.2 con correcciones menores o

ndice general I
ndice de Archivos I ndice de Fragmentos I Introducci n o 1. Error relativo y cifras signicativas 1.1. Introduccin . . . . . . . . . . o 1.2. Error Absoluto y Relativo . . . . 1.3. Precisin y Exactitud . . . . . . o 1.4. Error de Redondeo . . . . . . . 1.5. Estabilidad Numrica . . . . . . e 1.6. N mero de condicin . . . . . . u o
VII IX XV

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

. . . . . .

1 1 2 4 8 9 14 19 19 19 19 21 22 26 30 33 36 37 38 42 47 47 48 50 51

2. Serie de taylor 2.1. Introduccin . . . . . . . . . . . . o 2.2. Serie y Teorema de Taylor . . . . . 2.2.1. Serie de Taylor . . . . . . . 2.2.2. Teorema de Taylor . . . . . 2.2.3. Funcin Exponencial . . . . o 2.2.4. Funcin Coseno . . . . . . . o 2.2.5. Funcin Seno . . . . . . . . o 2.2.6. Funcin Logaritmo natural o 2.2.7. Polinomio . . . . . . . . . . 2.3. Error de Truncamiento . . . . . . . 2.4. Diferenciacin Numrica . . . . . . o e 2.5. Propagacin del Error . . . . . . . o 3. Soluci n ecuaciones no lineales o 3.1. Introduccin . . . . . . . . o 3.2. Tipos de Ra ces . . . . . . . 3.3. Mtodos Abiertos . . . . . . e 3.3.1. Mtodo Grco . . . e a

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

. . . .

. . . .
I

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

II

NDICE GENERAL I 3.3.2. Mtodo de la Biseccin . . . . . . e o 3.4. Mtodos Cerrados . . . . . . . . . . . . e 3.4.1. Mtodo de Newton . . . . . . . . e 3.4.2. Mtodo de la Secante . . . . . . e 3.4.3. Mtodo de la Secante Modicado e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55 66 66 75 82 89 89 89 90 95 95 96 100 100 102 109 109 111 117 119 126 126 128 134 139 139 140 146 147 148 150 150 153 159 161 161 163

4. Polinomios 4.1. Evaluacin de Polinomios . . . . . . . . . . . . . . . . . . . . . . o 4.1.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 4.1.2. Evaluacin de polinomios con MATLAB R . . . . . . . . . o 4.2. Deacin Polinomial o Divisin Sinttica . . . . . . . . . . . . . . o o e 4.2.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 4.2.2. Divisin Sinttica de polinomios con MATLAB R . . . . . . o e 4.3. Mtodo de Muller . . . . . . . . . . . . . . . . . . . . . . . . . . . e 4.3.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 4.3.2. Determinacin de las ra de polinomios usando el mtoo ces e do de Muller . . . . . . . . . . . . . . . . . . . . . . . . . 4.4. Mtodo de Bairstow . . . . . . . . . . . . . . . . . . . . . . . . . e 4.4.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 4.4.2. Determinacin de las ra o ces de un polinomio usando el mtodo de Bairstow . . . . . . . . . . . . . . . . . . . . . e 4.4.3. Divisin Sinttica por factor cuadrtico . . . . . . . . . . . o e a 4.4.4. Solucin de la ecuacin cuadrtica . . . . . . . . . . . . . o o a 4.5. Mtodo de Laguerre . . . . . . . . . . . . . . . . . . . . . . . . . e 4.5.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 4.5.2. Determinacin de la ra de polinomios usando el mtoo ces e do de Laguerre . . . . . . . . . . . . . . . . . . . . . . . . 4.5.3. Determinacin de todas las ra o ces de un polinomio . . . . 5. Mtodos Directos e 5.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 5.1.1. Tipos de Matrices . . . . . . . . . . . . . . . . . . . . . . . 5.1.2. Matrices Densas y Dispersas . . . . . . . . . . . . . . . . . 5.1.3. Transformaciones Elementales . . . . . . . . . . . . . . . 5.2. Solucin de sistemas triangulares . . . . . . . . . . . . . . . . . . o 5.3. Eliminacin Gaussiana con Pivoteo . . . . . . . . . . . . . . . . . o 5.3.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 5.3.2. Solucin de Sistemas de Ecuaciones con Eliminacin Gauso o siana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.3.3. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.4. Descomposicin LU con pivoteo . . . . . . . . . . . . . . . . . . . o 5.4.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 5.4.2. Procedimineo de Descomposicin LU . . . . . . . . . . . . o

NDICE GENERAL I 5.4.3. Solucin de sistemas lineales con descomposicin LU . . . o o 5.4.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.5. Inversa de una matr . . . . . . . . . . . . . . . . . . . . . . . . z 5.5.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 5.5.2. Clculo de la Matr Inversa . . . . . . . . . . . . . . . . . a z 5.5.3. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.6. Descomposicin de Cholesky . . . . . . . . . . . . . . . . . . . . o 5.6.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 5.6.2. Descomposicin de Cholesky . . . . . . . . . . . . . . . . o 5.6.3. Solucin de sistemas de ecuaciones por medio de descomo posicin de Cholesky . . . . . . . . . . . . . . . . . . . . . o 5.6.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . 5.7. Matrices de Coecientes Bandeadas . . . . . . . . . . . . . . . . . 5.7.1. Sistemas Tridiagonales . . . . . . . . . . . . . . . . . . . . 6. Mtodos Iterativos e 6.1. Introduccin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . o 6.2. Mtodos Iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . e 6.3. Mtodo de Gauss-Seidel y Relajacin . . . . . . . . . . . . . . . . e o 6.3.1. Solucin de sistemas lineales de ecuaciones . . . . . . . . o 6.3.2. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.4. Gradiente Conjugado . . . . . . . . . . . . . . . . . . . . . . . . . 6.4.1. Fundamentos conceptuales . . . . . . . . . . . . . . . . . 6.4.2. Interpretacin grca . . . . . . . . . . . . . . . . . . . . o a 6.4.3. Solucin usando gradiente conjugado . . . . . . . . . . . o 6.4.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5. Gradiente Conjugado Precondicionado . . . . . . . . . . . . . . . 6.5.1. Fundamentos conceptuales . . . . . . . . . . . . . . . . . 6.5.2. Aplicacin del mtodo del Gradiente conjugado precondio e cionado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6.5.3. Funcin precondicionador . . . . . . . . . . . . . . . . . . o

III

167 171 173 173 173 176 177 177 179 182 185 187 187 195 195 195 197 201 205 210 210 212 214 218 222 222 223 226

IV

NDICE GENERAL I

ndice de guras I
1.1. Ilustracin grca de los conceptos de exactitud y precisin . . . o a o 1.2. Interpretacin geomtrica de los conceptos de error hacia adelano e te y error hacia atrs . . . . . . . . . . . . . . . . . . . . . . . . . a 1.3. Interpretacin geomtrica del error combinado hacia delante y o e atrs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . a 6 10 13

2.1. Un ejemplo grco de la serie de Taylor para la funcin cos (x) en a o x = 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20 2.2. Ejemplo del teorema del valor medio. . . . . . . . . . . . . . . . 23 2.3. Grca de la funcin exponencial . . . . . . . . . . . . . . . . . . 24 a o 2.4. Grca de la funcin coseno . . . . . . . . . . . . . . . . . . . . . 27 a o 2.5. Tringulo empleado para la denicin de las funciones trigonomtria o e cas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 2.6. Grca de la funcin sin (x) . . . . . . . . . . . . . . . . . . . . . 31 a o 2.7. Grca de la funcin logaritmo natural . . . . . . . . . . . . . . . 34 a o 3.1. Grca de la profundidad contra el valor de la funcin f (h). El a o valor de la ra es aproximadamente 6.0 m . . . . . . . . . . . . . z 3.2. a). Existe al menos una ra en el intervalo [xl , xu ] si la funcin z o cambia de signo. b). Pero puede presentarse la situacin que exiso ta ms de una ra si la condicin se cumple. . . . . . . . . . . . . a z o 3.3. En este caso se presenta una situacin en donde la funcin tiene o o valores positivos en los extremos del intervalo pero existen ra ces en este. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.4. Lago con forma irregular. Para determinar la dimensin caraco ter stica de este se aproxima la forma mediante una cirfunferencia de radio r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.5. Ejemplo de aplicacin del mtodo de la Biseccin o b squeda o e o u binaria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3.6. Interpretacin geomtrica del mtodo de Newton . . . . . . . . . o e e 3.7. Ejemplo de aplicacin del mtodo de Newton . . . . . . . . . . . o e
V

54

56

57

57 58 67 68

VI

NDICE DE FIGURAS I 3.8. Interpretacin geomtrica del mtodo de la secante. La recta seo e e cante (en color gris) se dene entre los puntos f (xi1 ) y f (xi ) y con esta se aproxima el nuevo valor de la ra . . . . . . . . . . . z. 3.9. Ejemplo de aplicacin del mtodo de la secante . . . . . . . . . . o e

76 78

4.1. Interpretacin grca del mtodo de Muller . . . . . . . . . . . . 101 o a e 6.1. Solucin de un sistema lineal de ecuaciones usando gradiente o conjugado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

ndice de Archivos I
"bairstow.m" Denido por 111. "biseccion.m" Denido por 60. "cambiarFilas.m" Denido por 158a. "Cholesky.m" Denido por 179. "CholeskySol.m" Denido por 182b. "cos_taylor.m" Denido por 28a. "deflacion2.m" Denido por 117c. "deflacion_polinomial.m" Denido por 96. "der_manning.m" Denido por 73a. "evaluacion_polinomio.m" Denido por 90. "exp_taylor.m" Denido por 24a. "funcion_prueba.m" Denido por 109. "GaussSeidel.m" Denido por 201a. "gauss_pivoteo.m" Denido por 154a. "GradienteConjugado.m" Denido por 214a. "laguerre.m" Denido por 128a. "log_taylor.m" Denido por 35a. "LUdec3.m" Denido por 188a. "LUsol3.m" Denido por 189b. "LUSolucion.m" Denido por 167b. "lu_pivoteo.m" Denido por 163a. "matInv.m" Denido por 174a. "muller.m" Denido por 102. "newton.m" Denido por 70a. "PCG.m" Denido por 223a. "precondicionador.m" Denido por 226b. "prueba_manning.m" Denido por 52. "raices_polinomios.m" Denido por 135a. "secante.m" Denido por 79a. "secante_mod.m" Denido por 84. "sin_taylor.m" Denido por 31. "solucion_cuadratica.m" Denido por 119d.

VII

VIII

NDICE DE ARCHIVOS I

o Indice de Fragmentos de C digo


Bairstow: Ciclo extraccin de raices de polinomio n >= 3 113a Referenciado en 111. o Bairstow: Declaracin de variables 112b Referenciado en 111. o Bairstow: Denicin de la funcin 112a Referenciado en 111. o o Bairstow: Extraccin de raices de polinomio n <= 2 116c Referenciado en 111. o Biseccin: Ciclo Principal 62a Referenciado en 60. o Biseccin: Declaracin de la funcin 61a Referenciado en 60. o o o Biseccin: Inicializacin de variables 61b Referenciado en 60. o o Cholesky: Asignacin de resultados 182a Referenciado en 179. o Cholesky: Ciclo Principal 181a Referenciado en 179. Cholesky: Declaracin de la funcin 180a Referenciado en 179. o o Cholesky: Inicializacin de variables 180b Referenciado en 179. o CholeskySol: Declaracin de la funcin 182c Referenciado en 182b. o o CholeskySol: Descomposicin de Cholesky 183b Referenciado en 182b. o CholeskySol: Inicializacin de variables 183a Referenciado en 182b. o CholeskySol: Sustitucin hacia adelante 183c Referenciado en 182b. o CholeskySol: Sustitucin hacia atrs 184 Referenciado en 182b. o a Ciclo Principal Bairstow: Asignacin de raices obtenidas 116b Referenciado en 113a. o Ciclo Principal Bairstow: Calcular error e incrementar contador 115b Referenciado en
113a.

Ciclo Principal Bairstow: Determinar raices 115c Referenciado en 113a. Ciclo Principal Bairstow: Extraccin coecientes Polinomio resultante 116a Refereno
ciado en 113a.

Ciclo Principal Bairstow: Inicializacin del error 113b Referenciado en 113a. o Ciclo Principal Bairstow: Modicar los valores de r y s 114b Referenciado en 113a. Ciclo Principal Bairstow: Realizar divisin sinttica 114a Referenciado en 113a. o e Ciclo Principal Biseccin: Asignacin de resultados 64b Referenciado en 62a. o o Ciclo Principal Biseccin: Clculo de las funciones 62c Referenciado en 62a. o a Ciclo Principal Biseccin: Clculo error e incremento iteraciones 64a Referenciado en o a
62a.

Ciclo Principal Biseccin: Clculo nueva solucin 62b Referenciado en 62a. o a o Ciclo Principal Biseccin: Donde esta la solucin 63a Referenciado en 62a. o o Ciclo Principal Cholesky: Asignacin elementos diagonal 181c Referenciado en 181a. o Ciclo Principal Cholesky: Asignacin elementos fuera diagonal 181b Referenciado en o
181a.

Ciclo Principal Descomposicin LU con Pivoteo: cambiar las las 166a Referenciado en o
165a.
IX

NDICE DE FRAGMENTOS I
Ciclo Principal Descomposicin LU con Pivoteo: chequear si es matr singular 165c o z
Referenciado en 165a.

Ciclo Principal Descomposicin LU con Pivoteo: determinar el Pivot 165b Referenciado o


en 165a.

Ciclo Principal Descomposicin LU con Pivoteo: fase de eliminacin 166b Referenciado o o


en 165a.

Ciclo Principal Gauss: Cambiar las las 157a Referenciado en 155b. Ciclo Principal Gauss: Chequear si es matr singular 156b Referenciado en 155b. z Ciclo Principal Gauss: Determinar el Pivot 156a Referenciado en 155b. Ciclo Principal Gauss: Fase de eliminacin 157b Referenciado en 155b. o Ciclo Principal GaussSeidel: Actualizacin de la solucin 204a Referenciado en 203b. o o Ciclo Principal GaussSeidel: Clculo del error e incremento de las iteraciones 204b a
Referenciado en 203b.

Ciclo Principal GradienteConj: Actualizacin de la solucin 216b Referenciado en 215b. o o Ciclo Principal GradienteConj: Clculo del 216a Referenciado en 215b. a Ciclo Principal GradienteConj: Clculo del residuo 216c Referenciado en 215b. a Ciclo Principal GradienteConj: Calculo de error e incrementar iteraciones 217 Referenciado en 215b.

Ciclo Principal GradienteConj: Determinacin de direccin de b squeda 216d Refeo o u


renciado en 215b.

Ciclo Principal Inversa: Almacenamiento solucin 175d Referenciado en 175b. o Ciclo Principal Inversa: Solucin sistema lineal 175c Referenciado en 175b. o Ciclo Principal Laguerre: Actualizacin de la ra 131b Referenciado en 129b. o z Ciclo Principal Laguerre: Actualizacin de valores 131d Referenciado en 129b. o Ciclo Principal Laguerre: Clculo de G y H 130b Referenciado en 129b. a Ciclo Principal Laguerre: Clculo de error e incremento de iteraciones 131c Referena
ciado en 129b.

Ciclo Principal Laguerre: Clculo del denominador 130c Referenciado en 129b. a Ciclo Principal Laguerre: Chequear si es ra 130a Referenciado en 129b. z Ciclo Principal Laguerre: Determinacin del signo 131a Referenciado en 129b. o Ciclo Principal Laguerre: Prueba de la ra 129c Referenciado en 129b. z Ciclo Principal Muller: Actualizacin de la ra 106b Referenciado en 104b. o z Ciclo Principal Muller: Actualizacin puntos 107 Referenciado en 104b. o Ciclo Principal Muller: Clculo coecientes parbola 105b Referenciado en 104b. a a Ciclo Principal Muller: Clculo de h y 105a Referenciado en 104b. a Ciclo Principal Muller: Clculo del error e incremento de iteraciones 106c Referenciado a
en 104b.

Ciclo Principal Muller: Clculo del indicador 105c Referenciado en 104b. a Ciclo Principal Muller: Denicin de la correccin 106a Referenciado en 104b. o o Ciclo Principal Newton: Actualizacin solucin 72a Referenciado en 71b. o o Ciclo Principal Newton: Asignacin de resultados 72c Referenciado en 71b. o Ciclo Principal Newton: Clculo error e incremento iteraciones 72b Referenciado en a
71b.

Ciclo Principal PCG: Actualizacin de la solucin 225b Referenciado en 224c. o o Ciclo Principal PCG: Actualizacin direccin de b squeda 225d Referenciado en 224c. o o u Ciclo Principal PCG: Clculo del 225a Referenciado en 224c. a

XI

Ciclo Principal PCG: Clculo del residuo 225c Referenciado en 224c. a Ciclo Principal PCG: Calculo de error e incrementar iteraciones 226a Referenciado en
224c.

Ciclo Principal Raices: Correcin de la ra obtenida 137b Referenciado en 136b. o z Ciclo Principal Raices: Inicializacin variables 136c Referenciado en 136b. o Ciclo Principal Raices: aplicacin del mtodo de Laguerre 137a Referenciado en 136b. o e Ciclo Principal Raices: divisin sinttica 137c Referenciado en 136b. o e Ciclo Principal Secante Modicado: Actualizacin solucin 86c Referenciado en 86a. o o Ciclo Principal Secante Modicado: Almacenamiento de resultados 87b Referenciado
en 86a.

Ciclo Principal Secante Modicado: Clculo error e incremento iteraciones 87a Refea
renciado en 86a.

Ciclo Principal Secante Modicado: clculo factor de correccin 86b Referenciado en a o


86a.

Ciclo Principal Secante: Actualizacin solucin 81b Referenciado en 80b. o o Ciclo Principal Secante: Almacenamiento de resultados 81d Referenciado en 80b. Ciclo Principal Secante: Clculo error e incremento iteraciones 81c Referenciado en a
80b.

Ciclo Principal Secante: Evaluacin funcin dos puntos iniciales 81a Referenciado en o o
80b.

Ciclo principal Deacin2: Coecientes 119b Referenciado en 119a. o Ciclo principal Deacin2: Derivada 119c Referenciado en 119a. o Coseno Taylor: Clculo sumatoria 29 Referenciado en 28a. a Coseno Taylor: Inicializacin funcin 28b Referenciado en 28a. o o Deacin2: Ciclo principal 119a Referenciado en 117c. o Deacin2: Declaracin funcin 118a Referenciado en 117c. o o o Deacin2: Inicializacin de variables 118b Referenciado en 117c. o o DeacionPolinomial: Ciclo Principal 98 Referenciado en 96. DeacionPolinomial: Declaracin de la funcin 97a Referenciado en 96. o o DeacionPolinomial: Inicializacin de variables 97b Referenciado en 96. o Derivada Manning: Clculo derivada 73d Referenciado en 73a. a Derivada Manning: Declaracin de la funcin 73b Referenciado en 73a. o o Derivada Manning: Inicializacin de variables 73c Referenciado en 73a. o Descomposicin LU con Pivoteo: Asignacin de resultados 167a Referenciado en 163a. o o Descomposicin LU con Pivoteo: Ciclo Principal 165a Referenciado en 163a. o Descomposicin LU con Pivoteo: Declaracin de la funcin 163b Referenciado en 163a. o o o Descomposicin LU con Pivoteo: Determinar valores para escalamiento 164b Refereno
ciado en 163a.

Descomposicin LU con Pivoteo: Inicializacin de variables 164a Referenciado en 163a. o o Determinacin de raices: Clculo del discriminante 120d Referenciado en 120c. o a Determinacin de raices: Raices diferentes 121a Referenciado en 120c. o Determinacin de raices: Raices iguales 121b Referenciado en 120c. o EvaluacionPolinomio: Ciclo principal 92 Referenciado en 90. EvaluacionPolinomio: Declaracin de Funcin 91a Referenciado en 90. o o EvaluacionPolinomio: Inicializacin de Variables 91b Referenciado en 90. o Exponencial Taylor: Clculo sumatoria 25 Referenciado en 24a. a

XII

NDICE DE FRAGMENTOS I

Exponencial Taylor: Inicializacin funcin 24b Referenciado en 24a. o o Extraccin raices Polinomio n <= 2: Polinomio grado 1 117b Referenciado en 116c. o Extraccin raices Polinomio n <= 2: Polinomio grado 2 117a Referenciado en 116c. o Gauss con Pivoteo: Asignacin de salida 159b Referenciado en 154a. o Gauss con Pivoteo: Clculo del determinante 159a Referenciado en 154a. a Gauss con Pivoteo: Ciclo principal 155b Referenciado en 154a. Gauss con Pivoteo: Declaracin de la funcin 154b Referenciado en 154a. o o Gauss con Pivoteo: Determinar valores para escalamiento 155a Referenciado en 154a. Gauss con Pivoteo: Sustitucin hacia atrs 158b Referenciado en 154a. o a GaussSeidel: Ciclo Principal 203b Referenciado en 201a. GaussSeidel: Declaracin de la funcin 201b Referenciado en 201a. o o GaussSeidel: Escalamiento 202b Referenciado en 201a. GaussSeidel: Inicializacin de variables 202a Referenciado en 201a. o GaussSeidel: Obtener solucin inicial 203a Referenciado en 201a. o GradienteConj: Ciclo principal 215b Referenciado en 214a. GradienteConj: Inicializacin de variables 215a Referenciado en 214a. o GradienteConj: declaracin de la funcin 214b Referenciado en 214a. o o GradienteConjugadoPrecond: Ciclo Principal 224c Referenciado en 223a. GradienteConjugadoPrecond: Declaracin de la funcin 223b Referenciado en 223a. o o GradienteConjugadoPrecond: Denicin del Precondicionador 224a Referenciado en o
223a.

GradienteConjugadoPrecond: Inicializacin de variables 224b Referenciado en 223a. o InversaLU: Chequear si es matr cuadrada 174c Referenciado en 174a. z InversaLU: Ciclo Principal 175b Referenciado en 174a. InversaLU: Declaracin de la funcin 174b Referenciado en 174a. o o InversaLU: Inicializacin de la matr 175a Referenciado en 174a. o z LU Sistemas Tridiagonales: Ciclo principal 189a Referenciado en 188a. LU Sistemas Tridiagonales: Declaracin funcin 188b Referenciado en 188a. o o LU Sistemas Tridiagonales: Inicializacin variables 188c Referenciado en 188a. o LUSolucion: Clculo del determinante 169a Referenciado en 167b. a LUSolucion: Declaracin de la funcin 168a Referenciado en 167b. o o LUSolucion: Descomposicin LU 168c Referenciado en 167b. o LUSolucion: Inicializacin de variables 168b Referenciado en 167b. o LUSolucion: Organizacin por pivoteo 169b Referenciado en 167b. o LUSolucion: Sustitucin hacia adelante 169c Referenciado en 167b. o LUSolucion: Sustitucin hacia atrs 170 Referenciado en 167b. o a Laguerre: Chequear si se obtuvo ra 132 Referenciado en 128a. z Laguerre: Ciclo Principal 129b Referenciado en 128a. Laguerre: Declaracin de la funcin 128b Referenciado en 128a. o o Laguerre: Inicializacin de variables 129a Referenciado en 128a. o Logaritmo Taylor: Clculo de la sumatoria 35c Referenciado en 35a. a Logaritmo Taylor: Inicializacin de la funcin 35b Referenciado en 35a. o o Modicar r y s: Actualizar r y s 115a Referenciado en 114b. Modicar r y s: Clculo del determinante 114c Referenciado en 114b. a Muller: Ciclo Principal 104b Referenciado en 102. Muller: Declaracin de la Funcin 103 Referenciado en 102. o o

XIII

Muller: Inicializacin de variables 104a Referenciado en 102. o Newton: Ciclo Principal 71b Referenciado en 70a. Newton: Declaracin de la funcin 70b Referenciado en 70a. o o Newton: Inicializacin de variables 71a Referenciado en 70a. o Precondicionador Diagonal 228c Referenciado en 228a. Precondicionador de Gauss-seidel 229a Referenciado en 228a. Precondicionador de Jacobi 228b Referenciado en 228a. Precondicionador de Relajacin Sucesiva 229b Referenciado en 228a. o Precondicionador: Chequear la opcin de precond 227b Referenciado en 226b. o Precondicionador: Declaracin de la funcin 226c Referenciado en 226b. o o Precondicionador: Inicializacin de variables 227a Referenciado en 226b. o Precondicionador: Seleccionar opcin 228a Referenciado en 226b. o Prueba Manning: Declaracin de la Funcin 53a Referenciado en 52. o o Prueba Manning: Evaluacin funcin 53c Referenciado en 52. o o Prueba Manning: Inicializacin de variables 53b Referenciado en 52. o Raices Polinomios: Ciclo Principal 136b Referenciado en 135a. Raices Polinomios: Declaracin de la Funcin 135b Referenciado en 135a. o o Raices Polinomios: Inicializacin de variables 136a Referenciado en 135a. o Secante modicado: Ciclo principal 86a Referenciado en 84. Secante modicado: Declaracin de la funcin 85a Referenciado en 84. o o Secante modicado: Inicializacin de las variables 85b Referenciado en 84. o Secante: Ciclo principal 80b Referenciado en 79a. Secante: Declaracin de la funcin 79b Referenciado en 79a. o o Secante: Inicializacin de las variables 80a Referenciado en 79a. o Seno Taylor: Clculo sumatoria 32b Referenciado en 31. a Seno Taylor: Inicializacin funcin 32a Referenciado en 31. o o Solucin Cuadrtica: Denicin funcin 120a Referenciado en 119d. o a o o Solucin Cuadrtica: Determinacin de las raices 120c Referenciado en 119d. o a o Solucin Cuadrtica: Inicializacin de variables 120b Referenciado en 119d. o a o Solucin Sistemas Tridiagonales: Declaracin funcin 189c Referenciado en 189b. o o o Solucin Sistemas Tridiagonales: Descomposicin LU 190b Referenciado en 189b. o o Solucin Sistemas Tridiagonales: Inicializacin variables 190a Referenciado en 189b. o o Solucin Sistemas Tridiagonales: Sustitucin hacia adelante 190c Referenciado en 189b. o o Solucin Sistemas Tridiagonales: Sustitucin hacia atrs 191 Referenciado en 189b. o o a Solucin: ra en mitad inferior 63b Referenciado en 63a. o z Solucin: ra en mitad superior 63c Referenciado en 63a. o z Solucin: ra encontrada 63d Referenciado en 63a. o z

XIV

NDICE DE FRAGMENTOS I

Introducci n o
Wandering an endless journey Dead within a trace Entering a lost dominion soulless and free Visiting a foreign place but yet so known Another dimension opens for me to see . . . en Entrance de Dimmu Borgir La principal pregunta que se debe estar haciendo el lector es: Por qu razn e o se escribi este libro?. La respuesta: Hasta el conocimiento de los autores, no o existe un material que trate sobre mtodos numricos con una orientacin espee e o cica a Ingenieros Civiles. Este texto fue escrito pensando en una audiencia conformada por estudiantes de Ingenier Civil de pregrado, que hayan aprobado a los cursos de Clculo diferencial e integral, pensamiento algor a tmico y probabilidad y estad stica. El pensamiento algor tmico brinda las herramientas necesarias para la implementacin de los diferentes mtodos numricos en un lenguaje de o e e programacin. En este caso particular se va a utilizar MATLAB R , ya que este o es una aplicacin que se ha convertido en un estndar para la implementacin o a o de procedimientos numricos en muchos campos de la Ingenier y la Ingenier e a a Civil no es la excepcin. A pesar de esto, el libro hace nfasis en la explicacin o e o de los diferentes mtodos numricos y no en la programacin; ya que por lo e e o general la mayor de los estudiantes de Ingenier Civil no son programadores, a a ni Ingenieros de Sistemas, sino que tienen una orientacin hacia la solucin de o o problemas concretos. Los estudiantes que habitualmente toman el curso en Ingenier Civil quieren conocer sobre los fundamentos de los diferentes mtodos a e numricos y como se pueden utilizar para resolver problemas concretos dentro de e la disciplina. En esta situacin no se espera que los estudiantes desarrollen su o propio cdigo sino que empleen uno dise ado con anterioridad por dos razones: o n 1. Poder resolver problemas rpidamente mediante la combinacin de cdigo a o o ya desarrollado. 2. Adquirir una fundamentacin mucho ms slida en programacin estuo a o o diando la forma como un mtodo ha sido implementado en un lenguaje e de programacin o
XV

XVI

INTRODUCCION

Consideramos que la ultima razn es de vital importancia, ya que una de las o labores fundamentales de cualquier persona que se dedique a desarrollar software (a n en la escala que se requiere para los nes del presente curso), consiste u en poder leer claramente cdigo desarrollado con el n de integrarlo en aplicao ciones que resuelvan problemas particulares. Esta situacin motiv a presentar o o el cdigo explicado usando la metodolog denominada programacin literaria. o a o La programacin literaria es una metodolog desarrollada por Donald Knuth en o a 1982 la cual tiene como premisa fundamental que el cdigo de los programas o se debe escribir como una obra literaria, con la nalidad del entendimiento del mismo por parte de otros programadores. En la prctica de la programacin litea o raria se combinan la documentacin destinada a los usuarios del programa y el o cdigo del programa destinado al computador en un unico archivo, de tal forma o que se puedan mantener una correspondencia directa entre la documentacin y o el cdigo fuente. La presentacin de la estructura de los programas se dene de o o tal manera que maximice el entendimiento por parte del lector. Los libros de anlisis numrico se pueden dividir en dos grandes categor a e as: los que estn orientados hacia las caracter a sticas matemticas del mtodo o los a e que se orientan a la utilizacin de una herramienta particular. Los primeros o presentan informacin importante sobre el mtodo como tal y generalmente ino e cluyen un seudocdigo que le permite al usuario implementar el procedimiento o en cualquier lenguaje de programacin. En los libros del segundo tipo, tienen o un enfoque ms hacia la prctica con una herramienta particular y por lo tana a to no presentan informacin conceptual detallada del mtodo que es de vital o e importancia para el entendimiento del mismo. Un texto de anlisis numrico a e que combine las ventajas de las dos aproximaciones antes mencionadas junto con ejemplos concretos en Ingenier Civil no existe y este es el espacio que se a quiere llenar con el presente trabajo. En este libro se explican los fundamentos conceptuales de cada mtodo, sus e principios, ventajas y desventajas y se incluyen tanto ejemplos de clculos maa os temas incluyen aquellos tratados en el curso nuales como usando MATLAB R L de Anlisis Numrico para Ingenieros Civiles, tal y como se dicta en el Depto de a e Ingenier Civil de la Ponticia Universidad Javeriana, Bogot. a a Por ultimo esperamos que este texto facilite la apertura de la dimensin de los o mtodos numricos y que de ahora en adelante ud los pueda usar en diferentes e e situaciones que se le van a presentar en la universidad, as como en la vida pro fesional. Los autores, Bogot, Colombia. a

Captulo 1 Error relativo y cifras signicativas


1.1. Introducci n o

son aproximaciones para la obtencin o de soluciones de modelos matemticos estos siempre van a tener un cierto a grado de error. Cuanticar y entender dicho error es de vital importancia para los Ingenieros Civiles ya que muchas veces se cuenta solamente con el resultado de un modelo numrico para tomar decisiones importantes que involucran e costos econmicos importantes y por lo tanto es importante determinar si las o soluciones obtenidas son conables o no. Para la gran mayor de personas el a trmino error implica algo que se ha hecho mal. Sin embargo en el caso de los e mtodos numricos este trmino tiene un contexto ms positivo y permite juze e e a gar la calidad de una solucin obtenida. La gran mayor de mtodos que se van o a e a tratar en este curso se dise aron de tal forma que aseguran que se obtiene el n m nimo error posible, o en otras palabras, que convergen a la solucin deseada. o Estos errores son de vital importancia en el modelamiento numrico ya que en e general ninguna medicin y/o estimacin de parmetros que se ingresan en los o o a modelos numricos est libre de error e incertidumbre, y la situacin se agrae a o va mucho ms cuando se tiene en cuenta la capacidad del computador para a manejar las cantidades numricas. En estos casos es necesario calcular el error e que se presenta en las diferentes operaciones aritmticas (lo cual es tema del e siguiente cap tulo), as como tambin el error presente tanto en los problemas e como tal y en los procedimientos numricos con los que se resuelven estos. Los e errores numricos son algo inevitable y por lo tanto es importante que aprene damos a convivir con ellos. Lo que podemos hacer en este caso es conocer en que situaciones aparecen y como se determinan en situaciones concretas, el cual corresponde al objetivo central de este cap tulo.

ADO QUE LOS M TODOS NUM RICOS E E

CAPTULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS I

1.2.

Error Absoluto y Error Relativo

Los errores Absoluto y Relativo son dos tipos de errores con los cuales el analista numrico se va a encontrar todo el tiempo, y por lo tanto se debe estar e familiarizado con estos conceptos. Denici n 1 o Sea x0 una aproximacin al n mero real x. Las medidas ms utiles de exaco u a titud son el denominado error absoluto que se dene: EABS = |x x0 | y el error relativo: EREL = |x x0 | |x| (1.2) (1.1)

y el cual no est denido para x = 0. Este error relativo tambin se puede a e expresar como porcentaje de la siguiente forma: EREL = |x x0 | 100 % |x| (1.3)

El error relativo es la medida ms empleada en los problemas de anlisis a a numrico ya que est dada en porcentaje y por lo tanto se puede usar para e a realizar comparaciones.

1.2. ERROR ABSOLUTO Y RELATIVO Ejemplo (Error absoluto y relativo)

Supongamos que ud realiz unas mediciones en el laboratorio para la o determinacin de la densidad de una muestra de agua de un r para un o o estudio de abastecimiento de un acueducto municipal. En condiciones normales la densidad del agua es REAL = 1 gr/cm3 y el resultado de se obtuvo fue de M ED = 1.04 gr/cm3 . En este caso el error absoluto en la densidad est dado por: a EABS = 1.04 gr/cm3 1.0 gr/cm3 = 0.04 gr/cm3 el cual es numricamente igual al error relativo dado por: e EREL = 1.04 gr/cm3 1.0 gr/cm3 = 0.04 gr/cm3 = 4.0 % 1.0 gr/cm3

Como se sabe la densidad del agua en la gran mayor de ocasiones no es a igual a 1.0 gr/cm3 , sino que en este caso tiene un valor igual a REAL = 1.07 gr/cm3 debido a las sales que tiene en solucin. En este caso el error o absoluto es igual a: EABS = 1.04 gr/cm3 1.07 gr/cm3 = 0.03 gr/cm3 y el error relativo: EREL = 1.04 gr/cm3 1.07 gr/cm3 = 0.028 gr/cm3 = 2.8 % 1.07 gr/cm3

El error relativo es un concepto relacionado con las denominadas cifras signicativas. Estas se denen como las primeras cifras que no son cero y todos los digitos subsiguientes. De esta forma 1.7320 tiene 5 cifras signicativas, mientras que 0.0491 tiene solamente 3. A primera vista el concepto de cifras signicativas puede parecer obvio e intuitivo pero esto no es correcto, ya que en muchas situaciones la determinacin de las mismas se puede volver problemtio a ca. Supongamos que un valor dado x0 tiene p cifras decimales, por lo tanto si nos preguntamos cuantas cifras correctas o cifras signicativas tiene x0 ?, existen solamente p + 1 respuestas posibles. Esto indica que el n mero de cifras signu cativas p de un n mero no es una medida conable y denitiva de la precisin u o de un valor x0 . De acuerdo a lo expuesto anteriormente se presenta la siguiente denicin de o cifras signicativas:

4 Denici n 2 o

CAPTULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS I

Una aproximacin x0 de x tiene p cifras signicativas si x0 y x se pueden o redondear al mismo valor con p cifras signicativas. El procedimiento de redondeo consiste en reemplazar valor dado con el n meu ro ms cercano con p cifras signicativas usando alguna regla para denir algua na de las cifras cuando hay dos valores cercanos. No existe una forma unicada para determinar cuantas cifras signicativas tiene un n mero, ya que esto depende del procedimiento como se ha deteru minado (mediciones y clculos). Sin embargo si existen criterios que facilitan a determinar el n mero de cifras signicativas de un n mero dado, y los cuales se u u presentan a continuacin: o 1. Los d gitos que sean diferentes de ceros son signicativos siempre. 2. Los ceros ubicados antes de otros d gitos no son signicativos; 0.235 tiene 3 cifras signicativas 3. Los ceros ubicados entre otros n meros son siempre signicativos; 3205.8 u tiene 5 cifras signicativas 4. Los ceros ubicados al nal de un n mero son signicativos si estn a la u a izquierda del punto decimal (como en el numeral anterior), en otro caso no se puede decir nada acerca de si son signicativos o no. Por ejemplo, el n mero 3500 tiene al menos dos cifras signicativas, pero dependiendo de u como fue obtenido podr tener 3 o 4. a Con el n de evitar problemas para la comunicacin efectiva de valores o numricos se ha desarrollado la notacin cient e o ca, de tal forma que esta es la manera recomendada para la presentacin de los valores numricos. En eso e te caso el n mero de decimales usado en el n mero de la base debe hacerse u u atendiendo a la forma como se obtuvo dicho valor.

1.3.

Precisi n y Exactitud: Dos conceptos esquivos o

La precisin y exactitud son dos conceptos que se presentan frecuentemente o como equivalentes, y en la vida diaria (no tcnica) pueden emplearse como e sinnimos; sin embargo, en este curso de Anlisis Numrico se tiene que hacer o a e la diferencia entre estos, de tal forma que se denen a continuacin: o

1.3. PRECISION Y EXACTITUD Denici n 3 o

La exactitud se dene como el error absoluto o relativo que tiene una cantidad aproximada o medida. La precisin de un valor hace referencia al n meo u ro de d gitos/cifras que emplean para expresar dicho valor, y por lo tanto se puede concebir como la exactitud con la cual se presentan los valores y la forma como realizan las operaciones aritmticas. e La exactitud y la precisin tienen valores numricos iguales en el caso de o e operaciones escalares como una suma c = a + b o un producto c = a b. Sin embargo, en algunos casos la exactitud puede ser peor que la precisin como o ocurre en los procedimientos de solucin de sistemas lineales de ecuaciones. o En las aplicaciones cient cas la precisin se relaciona con el n mero de cio u fras o d gitos/lugares decimales con las cuales se realizan las mediciones y por lo tanto sirven para expresar los valores numricos. En este mismo contexto, la e exactitud estar relacionada con la posicin decimal en la cual el valor comiena o za a tener errores y por lo tanto ya no se puede tener un 100 % de seguridad sobre el mismo. Un aspecto muy importante a tener en cuenta cuando se presenten valores numricos consiste en que estos se deber presentar con el nmero de d e an u gitos decimales con que fueron medidos, con el n de no dar una impresin falsa o precisin. Por ejemplo, se determin la densidad de una muestra de madera de o o pino en 500.0 kg/m3 el cual se est presentando con una cifra decimal, y este a valor ser diferente si se expresara como 500.000 kg/m3 y por lo tanto en la a gran mayor de ocasiones resulta muy dif determinar la precisin real de las a cil o mediciones y/o determinaciones reportadas en la literatura. Una forma grca de entender los conceptos de precisin y exactitud se prea o senta en la Figura 1.1. En esta gura en la parte superior izquierda se presenta un caso en el cual los dardos se encuentran repartidos uniformemente sobre toda el area blanco. En este caso particular se la exactitud es baja, ya que los dardos no se aproximan al blanco. En cuanto a la precisin esta tambin es baja ya que otra forma o e de concebir la precisin es relacionndola con la dispersin que presentan los o a o valores entre si. La razn de esta idea corresponde al hecho que si las medicioo nes tienen una mayor precisin esto implica que tienen un mayor n mero de o u decimales y por lo tanto las diferencias entre los valores se van a poder resolver con mejor detalle. Por ejemplo, si se tienen mediciones de fuerzas realizadas con un dinammentro cuya escala de medicin solo reporta dcimas de Newton se o o e podrn obtener valores de 12.5 N o 5.4 N. Pero en el caso que se cuente con otro a dispositivo de medida cuya escala permita obtener mediciones del tipo 12.549 N o 5.395 N, las diferencias entre estas medidas van a tener ms decimales y a

CAPTULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS I

Figura 1.1: Ilustracin grca de los conceptos de exactitud y precisin o a o por lo tanto se consideran que son ms precisas. En la parte superior derecha a de la gura se presenta el caso en donde la exactitud mejora considerablemente ya que los dardos se agrupan alrededor del blanco. As mismo la precisin o se incrementa cuando se compara con la situacin explicada anteriormente, sin o embargo la dispersin alrededor del blanco sigue siendo evidente. En la parte o inferior izquierda se aprecia una situacin en la cual la exactitud es baja (ya que o los dardos no se encuentran cerca del blanco), pero la precisin es alta ya que la o dispersin entre los valores no es tan alta como en el primer caso analizado. En o la parte inferior derecha se presenta una situacin en la cual tanto la precisin o o como la exactitud es alta, ya que los valores no presentan una gran dispersin o entre si y se encuentran alrededor del blanco.

1.3. PRECISION Y EXACTITUD Ejemplo (Exactitud y Precisin en la medida de la masa de un suelo) o

En un trabajo de geotcnia se han obtenido muestras de un suelo arcilloso e y se quiere realizar un ensayo en donde se requieren una muestra de 500 gr. Con el n de separar la cantidad necesaria el laboratorio cuenta con dos balanzas, una de ellas anloga y la otra digital. La balanza anloga tiene una a a escala de medicin en marcas de 100 gr, mientras que la balanza digital tiene o un display en donde se pueden hacer lecturas de dcimas de gramo. Con la e balanza anloga ud puede separar los 500 gr de suelo teniendo cuidado a de medir bien usando la escala, mientras que la misma cantidad se puede determinar de forma mucho ms fcil usando la balanza digital debido a a a que el display tiene un mayor n mero de decimales. En este caso se dice u que la balanza digital es ms precisa que la anloga y que la precisin es un a a o concepto que est relacionado con la facilidad con la que se puede medir una a cantidad. En este caso esta facilidad de medicin se encuentra relacionada con o el n mero de decimales u Ahora supongamos que se tiene una muestra de suelo de 300 gr, y esta se pesa utilizando los dos tipos de balanza mencionados anteriormente. En la balanza anloga la manecilla del indicador marca exactamente 300 gr, miena tras que la balanza digital muestra en la pantalla un valor de 307.5894587 gr. Si suponemos que la masa de la muestra de suelo es exactamente 300 gr, entonces quiere decir que la balanza anloga est mostrando el valor verdaa a dero y por lo tanto podemos decir que es ms exacta que la balanza digital, a a pesar que esta ultima nos muestra un mayor n mero de decimales en la u determinacin de la masa. o Es de vital importancia entender los conceptos de precisin y exactitud en o las mediciones, ya que estas son las que se explican en los cursos de Laboratorio ya sea de F sica y/o Qu mica. Sin embargo en el presente curso se pone especial nfasis en la forma como se aplican estos conceptos en procedimiene tos/algoritmos numricos empleados para resolver problemas de Ingenier De e a. la discusin de los prrafos anteriores se sabe que la exactitud est relacionada o a a con la facilidad para obtener el valor verdadero (lo cual implica que el error absoluto o relativo sea peque o). En el anlisis numrico este concepto es inn a e herente y propio del algoritmo o procedimiento numrico que se est empleando e e y se recomienda seleccionar un mtodo que asegure la obtencin de la respuese o ta con el m nimo error posible. Por otra parte, la precisin ya no depende tanto o del algoritmo, sino del equipo con el cual se realicen los clculo. Hasta hace a unos a os los PC que se utilizaban para labores de escritorio ten procesan an dores con 32 bits, caracter sticas que determina la precisin de las operaciones o matemticas que puede realizar el equipo. Hoy en d con el desarrollo de los a a procesadores de 64 bits, los computadores pueden representar n meros con un u mayor n mero de decimales tanto en la mantisa como en el exponente, lo cual u es de vital importancia para las personas que se dedican a realizar modelamien-

8 to numrico. e

CAPTULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS I

1.4.

Error de Redondeo

Un computador no puede almacenar los n meros con una precisin perfecta, u o y este es representado mediante un n mero nito de bytes. La mayor de los u a lenguajes de programacin permiten que el usuario dene si los procedimientos o se van a realizar con n meros de precisin simple (8 bytes) o de precisin doble u o o (16 bytes). Sin embargo algunos paquetes computacionales como MATLAB R trabajan por defecto con n meros de doble precisin (16 bytes). u o Para problar la precisin de MATLAB R se puede emplear el siguiente cdio o go: >>x=1; >>for i=1:1:10000;x=x-1.0e-16;end; >>x x = 0.99999999999888978 La cuestin es que en este caso el valor de x deber ser igual a 1.0, ya que o a el valor que se le esta restando es muy cercano a 0. En realidad, si en lugar de 1.0 1016 se coloca 1.0 1017 obsrve como cambia la respuesta. Esto e es un indicio del error de redondeo para operaciones entre n meros de doble u precisin que maneja MATLAB R valor que es igual a = 1.0 1016 . Esto o quiere decir que existe un l mite para las diferencias entre n meros que se van u a operar: Si la diferencia entre estos es menor que entonces los dos n meros u se pueden considerar iguales. As mismo en el caso que se operen dos n meros u cuya diferencia sea varios ordenes de magnitud se va a introducir un error de redondeo que se va a apreciar en la 16-ava cifra decimal, lo cual es aceptable para la gran mayor de problemas. Esto es evidente en el siguiente cdigo de a o MATLAB R >>x=pi x = 3.14159265358979312 >>x=x-(5/3)*1e10 x = - 16666666663.5250759 >>x=x+(5/3)*1e10 x =

1.5. ESTABILIDAD NUMERICA

3.14159202575683594 De este ejemplo resuta claro que el valor de x obtenido al nal no es igual al valor de especicado inicialmente. Esta situacin se agrava a n ms si el valor o u a que multiplica al 5/3 se incrementa (ver problemas).

1.5.

Estabilidad Numrica: Errores hacia adelante e y hacia atrs a

La estabilidad numrica de un algoritmo es una caracter e stica importante que debe tenerse en cuenta en el momento de seleccionar un procedimiento para resolver un problema particular. Supongamos que un algoritmo numrico brinda una aproximacin y0 al valor e o de una funcin dada y = f (x). El valor de y0 en general no ser igual al valor o a verdadero y, ya que el procedimiento numrico empleado est sujeto a diferene a tes tipos de errores (redondeo, truncamiento, etc). La pregunta importante en estas situaciones es: Cmo se puede determinar la calidad de y0 ?. Una posio ble respuesta a esta inquietud la brinda el concepto del error relativo (ecuacin o 1.2), ya que se busca una solucin que cumpla EREL (y0 ) p, donde p es la o precisin que maneja la mquina. As mismo se puede determinar la calidad o a de una aproximacin y0 mediante el error absoluto (ecuacin 1.1), siempre y o o cuando se conozca el valor verdadero o un valor de referencia para realizar la comparacin. En estos dos casos se dice que se ha realizado un anlisis de error o a hacia delante. En la gran mayor de oportunidades es mejor considerar el error a relativo (ecuacin 1.2) como medida de estabilidad en lugar del error absoluto o (ecuacin 1.1), ya que el primero se expresa como porcentaje y por lo tanto o puede ser empleado para realizar comparaciones. Sin embargo el problema de juzgar la calidad de una aproximacin y0 se puede o abordar desde una perspectiva diferente. En lugar de darle importancia al resultado, es decir a y0 , se puede determinar para que valores de x se obtiene dicha aproximacin. Eso se puede expresar como cul es el valor m o a nimo x para el cual se tiene que f (x + x) = y0 ?. Evidentemente existen muchos valores de x para los cuales se cumplen la condicin anterior, pero en este caso se desea o determinar el valor m nimo, con lo cual el error quedar denido como: a EAtrs = a |x| x (1.4)

El procedimiento de determinar y limitar el valor de EAtrs se denomina anlisis a a de error hacia atrs y hay dos razones por las cuales es muy importante: a

10
x

CAPTULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS I


y = f (x)

Error hacia atras Error hacia delante x + x

y0 = f (x + x)

Figura 1.2: Interpretacin geomtrica de los conceptos de error hacia adelante o e y error hacia atrs a 1. De acuerdo con la ecuacin (1.4) los errores de truncamiento se pueden o interpretar como perturbaciones en los datos. Si el error hacia atrs es a peque o comparado con x entonces la aproximacin y0 es buena. n o 2. Limitar el error hacia adelante y y0 se puede analizar mediante herramientas de la teor de la perturbacin a o Una interpretacin grca tanto del error hacia delante como hac atrs o a a a aparece en la gura 1.2. El error hacia delante puede ser cuanticado tanto por el error absoluto como por el error relativo, y para la determinacin de este o se requiere conocer el valor verdadero. Es por esta razn que este aparece en o la parte derecha de la grca. En el caso del error hac atrs este se puede a a a cuanticar usando el valor de x. Denici n 4 o Se dice que un algoritmo es estable hacia atrs, si el error hacia atrs es a a peque o para todos los valores de x. n La denicin anterior tiene un problema: denir cuando un valor de error es o pequeo. Generalmente esta denicin depende del contexto y del problema de n o estudio, ya que generalmente un valor se puede considerar peque o cuando se n aproxima a la precisin p del computador en donde se calcule. o

1.5. ESTABILIDAD NUMERICA Ejemplo (Topograf Clculo del Per a: a metro de un Pol gono)

11

Suponga que se quiere determinar el per metro de un area triangular, cuyos lados se midieron con cinta mtricia arrojando los valores a, b y c. e Ahora suponga que las mediciones obtenidas con la cinta mtrica tiene un e error determinado que corresponden a a, b y c. En este caso el per metro del area en estudio estar dado por: a P = (a + a) + (b + b) + (c + c) = (a + b + c) + (a + b + c) = P + P donde P = a + b + c. El error hacia atrs, dado por la ecuacin (1.4), a o para esta situacin corresponder a: o a EAtrs (P ) = a |P | |a + b + c| = P a+b+c

Debido a que P depende de los valores de a, b y c, se tiene que si estos valores son peque os entonces el P tambin ser peque o. Esto implica n e a n que tanto la determinacin del per o metro de un pol gono es una operacin o estable hacia atrs y por lo tanto la suma es una operacin de este tipo. a o En este caso particular si tanto a 0, b 0 y c 0 y por lo tanto P 0, el resultado obtenido ser exacto. a

Denici n 5 o Se dice que un algoritmo es estable hacia adelante si su error hacia adelante dividido por el n mero de condicin del problema es peque o. El error hacia u o n adelante puede corresponder al error absoluto y/o relativo.

12

CAPTULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS I

Ejemplo (Algoritmo estable hacia delante) Se quiere determinar la estabilidad numrica para la funcin f (x) = e o sqrt(x). En este caso se procede de la siguiente forma: >> y=sqrt(2) y = 1.41421356237310 >> z=y.^2 z = 2.00000000000000 Ahora si calculamos la diferencia entre el valor verdadero 2.0 y z y se obtiene el error absoluto: >>err_a=2-z err_a = -4.440892098500626e-016 y el error relativo en este caso es igual a: err_r=abs(err_r)/2.0 err_r = 2.220446049250313e-016 el cual es muy cercano a la precisin que maneja MATLAB R para n meros o u de doble precisin. Esto indica que el error relativo obtenido en la determio nacin de la ra cuadrada del n mero 2 es muy cercano a la precisin de o z u o las operaciones que se estn empleado y por lo tanto esta aproximacin se a o considera buena. Para efectos prcticos se emplea otra denicin de estabilidad numrica dea o e nominada estalidad mixta, la cual combina el error hacia delante y el error hacia atrs. a Denici n 6 o Se dice que un algoritmo tiene estabilidad mixta si existe un x tal que tanto x sea peque o y que f (x + x) y0 sea peque o. n n y0 + y = f (x + x), |y| |y|, |x| |x| (1.5)

La interpretacin geomtrica de este error aparece en la gura 1.3. En esta o e gura se puede apreciar que para un valor x especicado se obtiene una aproximacin y0 . Pero cuando se especica x + x no se obtiene y0 sino en su lugar o se obtiene un valor de y0 + y, lo cual indica que hay otra componente de error

1.5. ESTABILIDAD NUMERICA

13

presente. Esto hace que aparezca la estabilidad mixta en lugar de los otros tipos de estabilidad ya discutidos.
x y = f (x) Error hacia delante Error hacia atras y0

x + x

f (x + x)

Figura 1.3: Interpretacin geomtrica del error combinado hacia delante y atrs o e a

14

CAPTULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS I

Ejemplo (Funcin trigonomtrica coseno) o e La funcin cos (x) aparece en un gran n mero de relaciones f o u sicas que se emplean en diferentes areas de la ingenier civil. La mayor de los a a procedimientos que existen para calcularla no cumplen la condicin y0 = o cos (x + x) para un x peque o, sino que en lugar de esto tienen la caracn ter stica y0 + y = cos (x + x), donde x y y son valores relativamente peque os. Por ejemplo, se desea calcular el valor de la funcin y = cos (x) n o para un x = /2. El valor real en este caso es igual a >>x=0.5*pi; >>y=cos(x) y = 0.00000000000000006 o en trminos concretos 6 1017 es un valor prcticamente igual a 0. Si e a ahora se dene: >>deltax=1.0e-10; >>y1=cos(x+deltax) y1 = - 0.00000000009999995 se puede calcular y como: >>deltay=y1-y deltay = - 0.00000000010000001 lo cual es igual a 11010 . En este caso particular el valor del y es claramente mayor que la precisin con la que se realizan los clculos con n meros de o a u doble precisin, indicando que el algoritmo para calcularla tiene estabilidad o mixta.

1.6. Un concepto Importante: El n mero de Condiu ci n o


Una de las grandes interrogantes que surgen en este momento es cmo deo terminar si un algoritmo numrico es estable o no?, o en otras palabras, cmo e o se puede determinar a-priori si la solucin al problema numrico planteado no o e

1.6. NUMERO DE CONDICION va a presentar incovenientes cuando lo implemente en un computador?.

15

En los mtodos numricos, el n mero de condicin de un problem particular e e u o es una medida de la facilidad con la cual se puede resolver usando clculo en a un computador, es decir, si el computador lo puede resolver sin que se explote durante el intento. Un problema con un n mero de condicin bajo se dice que u o est bien condicionado, mientras que un problema en donde este n mero sea a u alto se denomina mal-condicionado. Tanto el error hacia delante como el error hacia atrs se encuentran relacionados. El punto de conexin es el denominado a o nmero de condicin. Esta relacin se encuentra expresada por: u o o Denici n 7 o El n mero de condicin se dene como u o c(x) = xf (x) f (x) (1.6)

donde f () es la funcin de inters y f () es su derivada. Este valor mide la o e sensibilidad que tiene la solucin como consecuencia en peque as perturbao n ciones en los datos de entrada. La denicin anterior se aplica en situaciones en donde se conoce la funcin y o o una condicin importante que debe cumplir dicha funcin es que sea derivable. o o A continuacin se presente un ejemplo para la determinacin del n mero de o o u condicin: o

16

CAPTULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS I

Ejemplo (Nmero de condicin) u o Determinar el n mero de condicin para la funcin f (x) = (x) en x = u o o 2. Para esto es necesario determinar la derivada de esta funcin, la cual es o igual a: 1 f (x) = x1/2 2 El n mero de condicin se puede determinar fcilmente en MATLAB R de u o a la siguiente forma: >>x=2; >>fx=sqrt(2); >>der_fx=0.5*x.^(-0.5) der_fx = 0.35355339059327 >>num_condicion=abs(x*der_fx/fx) num_condicion = 0.50000000000000 el cual es menor a 1.0 y por lo tanto la determinacin de la ra cuadrada de o z 2 en MATLAB R se puede considerar como una operacin bien condicionada. o As mismo el n mero de condicin se emplea para dar una denicin formal u o o de la estabilidad hacia adelante, lo cual en este caso particular: >>error_delante=abs(err_a)/num_condicion error_delante= 8.881784197001252e-016 obtenindose nuevamente un valor muy cercano a la precisin con la que e o MATLAB R maneja las operaciones de n meros de doble precisin, con lo u o cual se corrobora que el algoritmo con el que se calcula la ra cuadrada es z estable hacia delante. La relacin entre el n mero de condicin y los errores hacia delante y hacia o u o atrs se puede expresar como: a Error hacia delante = N mero de Condicin Error hacia atrs u o a (1.7)

aunque el igual se debe tomar con cuidado. Esta ecuacin implica que un probleo ma mal condicionado se caracterizar por un error hacia delante alto. El n mero u de condicin mide que tanto el error en los valores de entrada se propaga duo rante la obtencin de la solucin de un procedimiento numrico y por lo tanto o o e mide la forma como este afecta el error hacia delante. En el caso de la gura 1.2 se puede apreciar para el x dado el valor del error hacia delante es mayor

1.6. NUMERO DE CONDICION

17

que la magnitud de x implicando que se tiene un n mero de condicin mayor u o a 1.0.

18

CAPTULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS I

Captulo 2 Serie de Taylor y Error de Truncamiento


2.1. Introducci n o

se explic que las series de poteno cia son una herramienta importante en varias ramas de la matemtica tanto a pura como aplicada. El ejemplo ms claro de esto corresponde a la posibilidad a de emplear dichas series para solucionar ecuaciones diferenciales ordinarias. En este problema, las series son empleadas como un equivalente de la solucin o de dicha ecuacin diferencial, lo cual implica que estas series se pueden utilio zar para aproximar funciones. Esto tiene serias consecuencias para el anlisis a numrico, en donde el analista/Ingeniero debe trabajar con aproximaciones a e funciones en lugar de las funciones reales. Por lo tanto las series de potencias y especialmente la serie de Taylor, estudiadas en el curso de Cculo I y Clcua a lo vectorial, son un punto de partida para el entendimiento de los errores de representacin que aparecen en el anlisis numrico. El presente cap o a e tulo es una introduccin a la serie de Taylor y las implicaciones que tiene este en la o cuanticacin del error y la representacin de modelos matemticos. o o a

N LOS CURSOS PREVIOS DE MATEM A TICAS ,

2.2.
2.2.1.

Serie y Teorema de Taylor


Serie de Taylor

Los polinomios son funciones muy fciles de calcular ya que involucran soa lamente operaciones sencillas (sumas, restas, multiplicaciones, entre otras). Sin embargo existen otras funciones que no corresponden a esta categor (funcin a o exponencial, trigonomtricas, logaritmos, etc) los cuales no se pueden calcular e tan fcilmente. La serie de Taylor permite aproximar dichas funciones como poa linomios (ver Figura 2.1, para un ejemplo con la funcin cos (x)) y por lo tanto o 19

20

CAPTULO 2. SERIE DE TAYLOR I

brinda un medio util para calcularlas de forma ms sencilla que con la funcin a o original. Esto es precisamente lo que hacen las calculadoras y los computadores cuando se invocan cualquiera de estas funciones. A continuacin se presenta un o teorema que dene dichas series: Teorema 1 Sea f una funcin continua en el intervalo cerrado [a, b] y derivable en el o intervalo abierto (a, b), entonces f (x) se puede aproximar a partir del valor de f (x0 ) como una serie de potencias de la forma: f (x) f (x0 ) + f (x0 )(x x0 ) +
+

f (x0 ) (x x0 )2 + . . . 2!

=
k=0

f k (x0 ) (x x0 )k k!

(2.1)

donde k! es el factorial de k, y f (k) (x0 ) corresponde al valor de la ksima e derivada de la funcin f () evaluada en el punto x0 . La derivada de orden 0 o de f por denicin es igual a f y (x x0 )0 es igual a 1. o

1.5

0.5

f(x)

0.5 f(x)=cos(x) f(x)=1f(x)=cos(x) g(x)=1x2/2 f(x)=cos(x) g(x)=1 g(x)=1x2f(x)=cos(x) g(x)=1 /2 g(x)=1x2/2+x4/4! g(x)=1x2/2 g(x)=1x2/2+x42g(x)=1.0 g(x)=1x /4!x6/6! /2+x4/4! f(x)=cos(x) f(x)=cos(x) g(x)=1x2/2+x42g(x)=1.0x /8! g(x)=1x /4!x6/6!+x8/6! g(x)=1x2/2+x/4! /2+x4/4!x6 /2 g(x)=1.0 6 4 2 0 2 4 6
2

1.5

.0

Figura 2.1: Un ejemplo grco de la serie de Taylor para la funcin cos (x) en a o x = 0.0

2.2. SERIE Y TEOREMA DE TAYLOR

21

La importancia de la serie de Taylor radica en que es posible conocer el valor de una funcin f () en un punto x a partir del conocimiento de la funcin o o en un punto cercano x0 si se conocen todas las derivadas de f en dicho punto. As mismo la serie de Taylor permite expresar cualquier funcin f () como una o serie de potencias como la dada en la ecuacin 2.1, si se conocen la derivadas o de la funcin. Esto es de vital importancia en el anlisis numrico, ya que exiso a e ten muchas funciones que no se pueden calcular directamente pero no ocurre lo mismo con su serie de Taylor; la cual resulta muy sencillo de obtener. Sin embargo queda a n un punto de vital importancia: Cmo puede ser de utilidad u o la serie de Taylor si se trata de una serie innita?. Para resolver este problema es necesario recurrir al denominado Teorema de Taylor.

2.2.2.

Teorema de Taylor

El teorema de Taylor permite llevar al mundo real el importante concepto tra por la Serie de Taylor: Cualquier funcin se puede aproximar como un do o polinomio. Este teorema se encuentra enunciado a continuacin: o Teorema 2 Si n 0 es un entero y f es una funcin que es continua y se puede derivar no veces en el intervalo cerrado [a, b], y n + 1-veces diferenciable en el intervalo abierto (a, x), entonces se tiene que :
n

f (x) =
k=0

f k (x0 ) (x x0 )k + Rn k!

(2.2)

donde x, x0 [a, b] y (x) Intervalo entre x y x0 y Rn se le denomina el residuo de la aproximacin. Este trmino de residuo est dado por: o e a Rn = f (n+1) ((x)) (x x0 )n+1 (n + 1)! (2.3)

Este teorema establece que cualquier funcin f () se puede aproximar como o un polinomio cuyos coecientes dependen de las derivadas de la funcin. La o gran diferencia con la serie de Taylor corresponde al hecho que para realizar la aproximacin ahora se tiene una serie con un n mero nito de trminos ms un o u e a trmino residual. Por lo tanto, este trmino residual corresponde a una sumatoe e ria innita de trminos y en general no ser posible determinarlo. Sin embargo e a a nivel prctico se tiene que el residual Rn 0, cuando n + de tal forma a que su determinacin no resulta tan necesaria. Con todo esto el estudio de Rn o brinda informacin importante acerca del error de truncamiento que se incurre o cuando se emplea la serie de Taylor, lo cual se tratar con ms detalle en la a a seccin 2.3. o

22

CAPTULO 2. SERIE DE TAYLOR I

A pesar que el valor de no se puede determinar de forma concreta, lo unico que podemos decir de este es que se encuentra en el intervalo [x, x0 ]. Esto se desprende del denominado teorema del valor medio. Este teorema se puede enunciar de la siguiente forma: Teorema 3 Sea f : [a, b] R una funcin continua en el intervalor cerrado [a, b] y o derivable en el intervalo abierto (a, b), entonces existe un valor c [a, b] tal que: f (b) f (a) f (c) = (2.4) ba Este teorema aparece en el curso de clculo I y establece que si se tiene una a curva suave en un intervalo dado [a, b], existe un punto en dicho intervalo para el cual la derivada de la curva es igual a la derivada promedio de dicha curva en el intervalo. Este teorema se emplea para extraer conclusiones globales acerca de una funcin a partir de informacin local representada por las derivadas en o o un conjunto de puntos en un intervalo dado. Este teorema se puede entender usando un ejemplo de cinemtica: Si un veh a culo viaja 100 km en una hora, entonces la velocidad promedio de este ser de 100 km/h. Sin embargo es claro a que el veh culo no mantendr la velocidad igual a 100 km/h durante todo el a viaje, ya que habra momentos en los que se viaja ms rpido o ms lento. Sin a a a embargo, lo que establece el teorema del valor medio es que en alg n momento u del viaje el veh culo tendra una velocidad exactamente igual a la de 100 km/h. Esto se puede ver grcamente en la gura 2.2, en donde se tiene una funa cin continua y suave denida en el intervalo [a, b]. En este caso particular la o pendiente promedio en el intervalo se puede determinar como la pendiente de la secante que une los extremos del intervalo. El teorema del valor medio establece que existe un punto c [a, b] para el cual la pendiente es igual a la pendiente promedio del intervalo.

2.2.3.

Funci n Exponencial o

La funcin exponencial (ver gura 2.3) es una de las funciones ms imporo a tantes de la matemtica tanto pura como aplicada y corresponde a la operacin a o inversa del logaritmo natural. Anal ticamente existen diferentes formas de denir esta funcin, siendo una de las ms conocidas el resultado del l o a mite: n x (2.5) exp (x) = l m 1 + n+ n Si se quiere aproximar la funcin exponencial mediante series de Taylor es o necesario determinar las derivadas de esta funcin. En este caso las derivadas o

2.2. SERIE Y TEOREMA DE TAYLOR


. Secante

23

y = f (x)

Figura 2.2: Ejemplo del teorema del valor medio. se obtienen de forma sencilla: f (k) = exp (x) (2.6)

Teniendo estas derivadas la expresin del teorema de Taylor para esta funcin o o (ecuacin 2.2) para x0 = 0 queda expresada por: o
n

exp (x) =
k=0

xk + Rn = k!

k=0

xk exp [(x)] n+1 + x k! (n + 1)!

(2.7)

En este caso particular resulta claro que Rn 0 cuando n + con lo cual se desprecia el trmino residual y se obtiene: e
n

exp (x) =
k=0

xk x2 x3 =1+x+ + + ... k! 2! 3!

(2.8)

La ecuacin anterior corresponde a la denicin en trminos de series de la funo o e cin exponencial tal y como se encuentra en diferentes libros de matemticas. o a

24
. 6 5 4 3 2 1 . 0

CAPTULO 2. SERIE DE TAYLOR I

y = exp(x)

Figura 2.3: Grca de la funcin exponencial a o A continuacin se presenta la implementacin en MATLAB R de la serie de o o Taylor para la funcin exponencial. La estructura de la funcin es la siguiente: o o
"exp_taylor.m" 24a Exponencial Taylor: Inicializacin funcin 24b o o Exponencial Taylor: Clculo sumatoria 25 a

En la inicializacin de la funcin se especican las variables de entrada y de o o salida de la misma. Las variables de entrada para esta funcin son las siguientes: o x: valor para el cual se quiere calcular la funcin o n: n mero de trminos a considerar en la serie de Taylor u e y la variable de salida es c el valor de la funcin exponencial obtenido con la o aproximacin de la serie de Taylor. o
Exponencial Taylor: Inicializacin funcin 24b o o function [c]=exp_taylor(x,n)
Fragmento referenciado en 24a.

2.2. SERIE Y TEOREMA DE TAYLOR

25

La serie de Taylor corresponde a una sumatoria innita (que para efectos prctia cos se trunca). Para obtener el valor de la funcin exponencial se emplea la o ecuacin 2.8, y a la variable c se le asigna un valor de 1.0 (ya que este es el o primer trmino de la serie). El valor de la sumatoria se puede obtener a nivel e computacional mediante un ciclo for, ya que se conoce el n mero de trminos u e sobre el cual se realiza la suma. Lo anterior se puede se puede expresar como:
Exponencial Taylor: Clculo sumatoria 25 a c=1.0; for i=1:1:n; c=c+(x.^i)./(factorial(i)); end;
Fragmento referenciado en 24a.

26 Ejemplo MATLAB
R

CAPTULO 2. SERIE DE TAYLOR I (Serie de Taylor para la funcin exp (x)) o

Aproxime la funcin exponencial por medio de la serie de Taylor en o x = 0.5 desde n = 1, . . . 6 a partir del valor de esta funcin en x = 0 usando o a la funcin exp taylor. Este procedimiento se puede realizar fcilmente meo diante el siguiente cdigo: o disp([Orden n Valor aproximado Valor Real Error Relativo]); for i=1:1:6; v=exp_taylor(.5,i); t=[i v exp(0.5) 100*abs(exp(0.5)-v)/exp(0.5)]; disp(sprintf(%f %f %f %f,t)); end; el cual una vez corrido arroja los siguientes resultados: Orden n Valor Aproximado Valor Real Error Rel.( %) 1 1.500000 1.648721 9.020401 2 1.625000 1.648721 1.438768 3 1.645833 1.648721 0.175162 4 1.648438 1.648721 0.017212 5 1.648698 1.648721 0.001416 6 1.648720 1.648721 0.000100 Ahora como es evidente a medida que el n mero de trminos en la aproxiu e macin de Taylor aumenta, el error relativo disminuye. o

2.2.4. Funci n Coseno o


La funcin coseno corresponde a una funcin trigonomtrica de gran imo o e portancia en problemas geomtricos y en el modelamiento de comportamientos e peridicos (ver gura 2.4). A nivel tradicional esta funcin se dene a partir de o o un tringulo, como el mostrado en la gura 2.5. a

En este caso el coseno del angulo x se dene como la relacin entre la longitud o del cateto adyacente con respecto a la hipotenusa del tringulo: a cos (x) = A H

Sin embargo hoy en d existen otras deniciones de la funcin cos (x) tal como a o la que daremos a continuacin en trminos de series de Taylor. Las derivadas de o e

2.2. SERIE Y TEOREMA DE TAYLOR


1 y = cos (x) .

27

320

240

160

80

80

160

240

320

1 .

Figura 2.4: Grca de la funcin coseno a o

Figura 2.5: Tringulo empleado para la denicin de las funciones trigonomtria o e cas. la funcin cos (x) estn dadas por: o a f (1) (x) = sin (x) f (2) (x) = cos (x) .. .. .. Estas derivadas se pueden generalizar de la siguiente forma: f (k) (x) = cos x + k , 2 (2.9)

, k

(2.10)

28

CAPTULO 2. SERIE DE TAYLOR I

y aplicndolas en la ecuacin 2.2 la expansin en series de Taylor de esta funcin a o o o para x0 = 0 quedar dada por: a
n

cos (x) =
k=0

cos x + k!

k 2

xk +

cos (x) +

(n+1) 2

(n + 1)!

xn+1

(2.11)

Del mismo modo el trmino del residual Rn 0 con lo cual se tiene: e


+

cos (x) =
l=0

cos (2l) 2l 2 x = (2l)!


+

x2k (1) (2k)! k=0


k

=1+
k=1

(x2 )k x2 x4 x6 =1 + + ... (2k)! 2! 4! 6!

(2.12)

Una posible implementacin en MATLAB R de la serie de Taylor para esta o funcin se presenta a continuacin. La estructura de la funcin es la siguiente: o o o
"cos_taylor.m" 28a Coseno Taylor: Inicializacin funcin 28b o o Coseno Taylor: Clculo sumatoria 29 a

Las variables de entrada para esta funcin son las siguientes: o x: valor para el cual se quiere calcular la funcin o n: n mero de trminos a considerar en la serie de Taylor u e y la variable de salida es c el valor de la funcin coseno obtenido con la o aproximacin de la serie de Taylor. o
Coseno Taylor: Inicializacin funcin 28b o o function [c]=cos_taylor(x,n)
Fragmento referenciado en 28a.

En este caso el resultado de la aproximacin de Taylor al coseno se va a almao cenar en la variable c. Este valor se inicializa en 1.0, ya que este es el primer trmino de la serie (ecuacin 2.12). Para realizar la suma de los trminos de e o e la serie de Taylor se emplea un ciclo for empleando la expresin dada por la o ecuacin 2.12. Esto a nivel de cdigo se implementa de la siguiente forma: o o

2.2. SERIE Y TEOREMA DE TAYLOR


Coseno Taylor: Clculo sumatoria 29 a c=1.0; for i=1:1:n; c=c+((-x^2)^i)/factorial(2*i); end;
Fragmento referenciado en 28a.

29

30 Ejemplo MATLAB
R

CAPTULO 2. SERIE DE TAYLOR I (Serie de Taylor para la funcin cos (x)) o

Aproxime la funcin coseno por medio de la serie de Taylor en x = /3 o desde n = 1, . . . 6 a partir del valor de esta funcin en x = 0 usando la o funcin cos taylor. Este procedimiento se puede realizar fcilmente mediante o a el siguiente cdigo: o disp([Orden n Valor aproximado Valor Real Error Relativo]); for i=1:1:6; v=cos_taylor(pi/3,i); t=[i v cos(pi/3) 100*abs(cos(pi/3)-v)/cos(pi/3)]; disp(sprintf(%f %f %f %f,t)); end; el cual una vez corrido arroja los siguientes resultados: Orden n Valor Aproximado Valor Real Error Rel.( %) 1 0.451689 0.500000 9.662271 2 0.501796 0.500000 0.359240 3 0.499965 0.500000 0.007087 4 0.500000 0.500000 0.000087 5 0.500000 0.500000 0.000001 6 0.500000 0.500000 0.000000 Ahora como es evidente a medida que el n mero de trminos en la aproxiu e macin de Taylor aumenta, el error relativo disminuye. o

2.2.5. Funci n Seno o


La funcin seno es otra de las funciones trigonomtricas, y se incluye aqu coo e mo ejemplo de la utilizacin de la serie de Taylor. Para denir esta funcin se o o emplea el tringulo representado en la gura 2.5, De acuerdo a este, el seno a del angulo x se dene como la relacin entre la longitud del cateto opuesto con o respecto a la hipotenusa del tringulo: a O H Para determinar la expresin de la serie de Taylor es necesario conocer las o derivadas de la funcin, las cuales en este caso corresponden a: o sin (x) = f (1) = cos (x) f (2) = sin (x) f (3) = cos (x) . . . (2.13)

2.2. SERIE Y TEOREMA DE TAYLOR


. y = sin (x)

31

320

240

160

80

80

160

240

320

Figura 2.6: Grca de la funcin sin (x) a o Estas derivadas se pueden generalizar por medio de la siguiente expresin: o f (k) (x) = sin x + k , 2 k (2.14)

con lo cual la expresin de la serie de Taylor para la funcin sin (x) para x0 = 0 o o quedar dada por: a
n

sin (x) =
k=0

sin

k 2

k!

x +

sin (x) +

(n+1) 2

(n + 1)!

xn+1

(2.15)

Asumiendo que el resido de Taylor de dicha expansin cumple Rn+1 0 cuando o n +, la expresin anterior se simplica y se obtiene: o
+

sin (x) = x
k=0

(x2 )k (2k + 1)!

(2.16)

Una posible implementacin de la funcin que permite aproximar la funcin o o o sin (x) usando series de Taylor en MATLAB R tendr la siguiente estructura: a
"sin_taylor.m" 31 Seno Taylor: Inicializacin funcin 32a o o Seno Taylor: Clculo sumatoria 32b a

Las variables de entrada para esta funcin son las siguientes: o

32

CAPTULO 2. SERIE DE TAYLOR I x: valor para el cual se quiere calcular la funcin o n: n mero de trminos a considerar en la serie de Taylor u e

y la variable de salida es c el valor de la funcin seno obtenido con la aproo ximacin de la serie de Taylor. o
Seno Taylor: Inicializacin funcin 32a o o function [c]=sin_taylor(x,n)
Fragmento referenciado en 31.

La determinacin del valor de la funcin sin (x) usando la serie de Taylor se o o basa en la ecuacin 2.15. Para implementar esta expresin, se inicializa la vao o riable c en 0 y se realiza la sumatoria mediante un ciclo for. Finalmente el valor resultante de c se multiplica por x y la funcin naliza su ejecucin. o o
Seno Taylor: Clculo sumatoria 32b a c=0.0; for i=0:1:n; c=c+((-x.^2).^i)/factorial(2*i+1); end; c=x*c;
Fragmento referenciado en 31.

2.2. SERIE Y TEOREMA DE TAYLOR Ejemplo MATLAB


R

33

(Serie de Taylor para la funcin sin (x)) o

Aproxime la funcin trigonomtrica seno por medio de la serie de Taylor o e en x = /3 desde n = 1, . . . 6 a partir del valor de esta funcin en x = 0 o a usando la funcin sin taylor. Este procedimiento se puede realizar fcilmente o mediante el siguiente cdigo: o disp([Orden n Valor aproximado Valor Real Error Relativo]); for i=1:1:6; v=sin_taylor(pi/3,i); t=[i v sin(pi/3) 100*abs(sin(pi/3)-v)/sin(pi/3)]; disp(sprintf(%f %f %f %f,t)); end; el cual una vez corrido arroja los siguientes resultados: Orden n Valor Aproximado Valor Real Error Rel.( %) 1 0.855801 0.866025 1.180638 2 0.866295 0.866025 0.031163 3 0.866021 0.866025 0.000477 4 0.866025 0.866025 0.000005 5 0.866025 0.866025 0.000000 6 0.866025 0.866025 0.000000 Ahora como es evidente a medida que el n mero de trminos en la aproxiu e macin de Taylor aumenta, el error relativo disminuye. o

2.2.6.

Funci n Logaritmo natural o

La funcin logaritmo natural f (x) = ln x es la inversa de la funcin exponeno o cial (ver Figura 2.7). Esta es una funcin que aparece en diversas aplicaciones y o es de especial importancia para este tema, debido a que presenta una discontinuidad en x = 0 se hace necesario tenerla en cuenta a la hora de determinar la serie de Taylor. Las derivadas de la funcin Logaritmo natural estn dadas por las siguiente o a

34

CAPTULO 2. SERIE DE TAYLOR I


. 2 y = log (x) 1

0 1 2 3 4 5

Figura 2.7: Grca de la funcin logaritmo natural a o expresiones: f (1) = 1 x 1 x2 (2.17) 6 x4 2 x3

f (2) = f (3) =

f (4) = . . .

de las cuales es evidente que son polinomios y que forman un claro patrn. Estas o derivadas se pueden generalizar de la siguiente forma: (k 1)! xk con lo cual la serie de Taylor para la funcin ln x estar dada por: o a f (k) (x) = (1)k1
n

(2.18)

ln (x) =
k=0

(1)k1

(x 1)k 1 (x 1)n+1 + (1)n k (n + 1) n+1 (x)

(2.19)

2.2. SERIE Y TEOREMA DE TAYLOR

35

En este caso particular x0 = 1 ya que esta funcin presenta una discontinuidad o en x = 0. El trmino residual tiende a 0 a medida que inclu e mos ms trminos, a e con lo cual la serie de Taylor para el logaritmo se simplica y queda como:
+

ln (x) =
k=0

(1)k1

(x 1)2 (x 1)3 (x 1)k = (x 1) + ... k 2 3

(2.20)

Una posible implementacin de la serie de Taylor para la funcin logaritmo o o R se presenta a continuacin: natural en MATLAB o
"log_taylor.m" 35a Logaritmo Taylor: Inicializacin de la funcin 35b o o Logaritmo Taylor: Clculo de la sumatoria 35c a

Al igual que las otras funciones implementadas esta funcin tiene como variao bles de entrada: x: valor en el cual se quiere aproximar la funcin logaritmo mediante seo ries de Taylor n: n mero de trminos a considerar en la aproximacin u e o y la variable de salida c corresponde al valor aproximado de la funcin. o
Logaritmo Taylor: Inicializacin de la funcin 35b o o function [c]=log_taylor(x,n)
Fragmento referenciado en 35a.

Para calcular el valor de la funcin logaritmo en el punto x usando la serie de o Taylor, se utiliza la sumatoria denida en la ecuacin 2.20, para lo cual el valor o de c se inicializa en 0.0. Para implementar dicha sumatoria se emplea un ciclo for, con lo cual resulta el siguiente cdigo: o
Logaritmo Taylor: Clculo de la sumatoria 35c a c=0.0; for i=1:1:n; c=c+((-1)^(i-1))*((x-1).^i)/i; end;
Fragmento referenciado en 35a.

36 Ejemplo MATLAB
R

CAPTULO 2. SERIE DE TAYLOR I (Serie de Taylor para la funcin ln (x)) o

Aproxime la funcin logaritmo natural por medio de la serie de Taylor en o x = 1.2 desde n = 1, . . . 6 a partir del valor de esta funcin en x = 1 usando la o a funcin log taylor. Este procedimiento se puede realizar fcilmente mediante o el siguiente cdigo: o disp([Orden n Valor aproximado Valor Real Error Relativo]); for i=1:1:6; v=log_taylor(1.2,i); t=[i v log(1.2) 100*abs(log(1.2)-v)/log(1.2)]; disp(sprintf(%f %f %f %f,t)); end; el cual una vez corrido arroja los siguientes resultados: Orden n Valor Aproximado Valor Real Error Rel.( %) 1 0.200000 0.182322 9.696299 2 0.180000 0.182322 1.273331 3 0.182667 0.182322 0.189286 4 0.182267 0.182322 0.030106 5 0.182331 0.182322 0.004997 6 0.182320 0.182322 0.000854 Ahora como es evidente a medida que el n mero de trminos en la aproxiu e macin de Taylor aumenta, el error relativo disminuye. o

2.2.7. Polinomio
Supongamos que se quiera aproximar una funcin polinomial de la forma: o f (x) = (1 + x)n (2.21)

donde n es un exponente que dene el grado del polinomio. En este caso particular las derivadas son muy fciles de determinar: a f (1) (x) = n(1 + x)n1 f (2) (x) = n(n 1)(1 + x)n2 . . . de tal forma que la n-sima derivada se puede obtener de: e f (k) (x) = n(n 1) . . . (n k + 1)(1 + x)nk (2.23) (2.22)

2.3. ERROR DE TRUNCAMIENTO La serie de Taylor para esta funcin quedar dada por: o a
n

37

f (x) =
k=0

n(n 1) . . . (n k + 1) k x + k!

n(n 1) . . . (n k) (1 + (x))n(k+1) xn+1 (n + 1)!

(2.24)

donde (x) [0, 1]. Un caso de inters corresponde a n = k, o sea, que n es un e n mero entero ya que se tiene que Rn+1 (x) = 0 y por lo tanto la aproximacin u o es exacta. En este caso se obtiene la famosa frmula del binomio de Newton: o (1 + x)n = 1 + nx + n(n 1) 2 x + . . . + xn 2! (2.25)

2.3.

Serie de Taylor y Error de Truncamiento

Todos los mtodos numricos realizan aproximaciones de los problemas mae e temticos que de una u otra forma afectan las soluciones. Este aspecto es de a vital importancia y es aqu donde se hace necesario introducir el concepto del error de truncamiento. Denici n 8 o El error de truncamiento se dene como aquel error en el que se incurre cuando se usa una aproximacin en lugar de un procedimiento matemtico o a que es exacto. La serie de Taylor (seccin 2.2.1) permite cuanticar el error de truncamieno to, ya que para efectos prcticos la expansin dada por la ecuacin 2.1 se trunca a o o teniendo en cuenta solo n trminos. El trmino residual (ecuacin 2.3) es igual e e o a este error de truncamiento y como se vi en la seccin 2.2.2 su valor exacto no o o se puede determinar. Sin embargo su conocimiento resulta de vital importancia ya que con este se puede entender como se comporta el error de truncamiento y que factores lo afectan. Para este punto se hace necesario introducir la notacin o de la gran O. Esta notacin se estudia en la Ingenier de Sistemas para denotar o a la eciencia de los algoritmos.

38 Ejemplo (Aproximacin de Taylor) o

CAPTULO 2. SERIE DE TAYLOR I

Aproximar el valor de cos (/4) usando la serie de Taylor y determinar su error de Truncamiento. El error de truncamiento para esta funcin est dado por el trmino resio a e dual (ecuacin 2.11) de donde: o cos (x) + Rn = y de donde resulta evidente que: cos (x) +
n+ (n+1) 2 (n+1) 2

(n + 1)!

xn+1

(2.26)

l Rn = l m m

n+

(n + 1)!

xn+1 = 0

(2.27)

2.4.

Serie de Taylor y Diferenciaci n Numrica o e

Como se vi anteriormente, la Serie de Taylor es una herramienta util para la o denicin de las derivadas de forma numrica. En el problema del paracaidista, o e se emple un argumento geomtrico para obtener una expresin que permitiera o e o solucionar la ecuacin diferencial del movimiento retardado. Sin embargo algo o que resulta curioso en este caso, es que la misma solucin se puede obtener a o partir de las series de Taylor. Si se tiene una funcin que describe la variacin o o de la velocidad en el tiempo v(t) esta se puede expandir en los alrededores del punto ti+1 para obtener: v(ti+1 ) = v(ti ) + v (1) (ti )(ti+1 ti ) + v (2) (ti ) (ti+1 ti )2 + . . . 2! (2.28)

lo cual se puede hacer si se conocen todas las derivadas de la funcin v(t). Si la o expresin anterior se trunca hasta el trmino que contiene la primera derivada o e se obtiene: v(ti+1 ) = v(ti ) + v (1) (ti )(ti+1 ti ) + R1 (2.29) donde R1 corresponde al trmino residual. Despejando v (1) (t) se obtiene: e v (1) (ti ) = v(ti+1 v(ti )) R1 + ti+1 ti ti+1 ti (2.30)

expresin cuyo primer trmino coincide con la frmula empleada para la soluo e o cin de la ecuacin diferencial. Sin embargo un aspecto interesante de la ecuao o cin 2.30 es que incluye el trmino del residual y por lo tanto con este es posible o e

2.4. DIFERENCIACION NUMERICA

39

estudiar el error de truncamiento para la expresiones que describren las derivadas. De acuerdo al Teorema de Taylor, este trmino residual es igual a: e R1 v (2) () = (ti+1 ti ) ti+1 ti 2! (2.31)

donde v (2) ( ) corresponde a la segunda derivada de la velocidad y es un valor en el intervalo [ti , ti+1 ]. La ecuacin anterior se puede expresar mejor empleando o la notacin de la Gran O, de la siguiente forma: o R1 = O(ti+1 ti ) = O(t) ti+1 ti (2.32)

de donde resulta claro que el error de truncamiento para la expresin de la deo rivada dada por la ecuacin 2.29 es del orden (de ah el nombre de Gran O) o es o proporcional a t. Esto quiere decir que si se desea reducir el error es necesario emplear un incremento temporal t menor. La expresin para la derivada (ecuacin 2.29) es conocida en el anlisis numrio o a e co como diferencia nita, y su expresin general est dada por: o a f (1) (xi ) = f (xi+1 ) f (xi ) + O(xi+1 xi ) xi+1 xi (2.33)

donde el error de truncamiento es del orden del incremento empleado para calcularla. La ecuacin anterior representa la denominada diferencia nita hacia o delante, ya que permite calcular la derivada en un punto particular i usando informacin de un punto i + 1 ubicado delante de este. El trmino xi+1 xi reo e presenta el incremento empleado para calcular dicha derivada y a nivel general se representa como h. La ecuacin 2.33 es una de las diferentes formas como se pueden determinar o numricamente las derivadas. Otra posibilidad consiste en realizar la aproximae cin de la serie de Taylor empleando un punto cercano ubicado antes que el o punto de inters: e f (xi1 ) = f (xi ) f (1) (xi )(xi xi1 ) + f (2) (xi ) (xi xi1 ) + . . . 2! (2.34)

con lo cual aparece la denominada diferencia nita hacia atrs, la cual se ena cuentra denida por la siguiente expresin: o f (1) (xi ) f (xi ) f (xi1 ) O(h) xi xi1 (2.35)

En este caso esta diferencia nita tiene el mismo orden de error que la diferencia nita hacia delante, es decir, el error es proporcional al incremento h.

40

CAPTULO 2. SERIE DE TAYLOR I

Otra forma para aproximar la derivada de forma numrica se puede derivar e al calcular la diferencia entre la ecuacin 2.33 y 2.35, con lo cual se obtiene la o siguiente expresin: o f (xi+1 ) = f (xi ) + f (1) (xi )(xi+1 xi ) + f (2) (xi ) (xi+1 xi )2 + . . . 2! (2.36)

de donde se despeja la derivada para llegar a: f (xi+1 ) = f (xi1 ) + 2f (1) (xi )h + Si se la expresin anterior se trunca: o f (1) (xi ) = f (xi+1 ) f (xi1 ) O(h2 ) 2h (2.38) 2f (3) (xi ) 2 h + ... 3! (2.37)

se obtiene la denominada diferencia nita central y se llega a la conclusin que o 2 el error es proporcional a h , y por lo tanto presenta un error menor que el caso de la diferencia nita hacia delante o hacia atrs. a

2.4. DIFERENCIACION NUMERICA Ejemplo (Diferenciacin numrica de la ecuacin de Manning) o e o

41

La ecuacin de Manning se emplea para describir el ujo de agua en un o canal abierto. Esta ecuacin se encuentra dada por: o Q= 1.49 1/2 S AR2/3 n f

donde Q es el caudal, Sf es la pendiente del terreno, A es el area transversal del canal y R es el denominado radio hidra lico. Se requiere calcular la deriu vada de Q con respecto a R, cuando R = 2.5 de forma numrica empleando e diferencias nitas hacia delante, hacia atrs y centradas. a La derivada de la ecuacin anterior es igual a: o 0.993 1/2 dQ = Sf AR1/3 dR n de tal forma que para R = 2.5, n = 1 103 , Sf = 0.001 y A = 4.5 se tiene que Q(1) = 104.1154. Este mismo procedimiento se repite usando la diferencia nita hacia delante haciendo Ri = 2.5 y Ri+1 = 2.6: Q(1) (2.5) = Q(Ri+1 ) Q(Ri ) 400.9107 390.5639 = 103.4681 = Ri+1 Ri 2.6 2.5

Para determinar la diferencia nita hacia atrs se emplea Ri1 = 2.4: a Q(1) (2.5) = Q(Ri ) Q(Ri1 ) 390.5639 380.0782 = 104.8574 = Ri Ri1 2.5 2.4

Para calcular la diferencia nita central se hace Ri+1 = 2.6 y Ri1 = 2.4, con lo cual se tiene: Q(1) (2.5) = Q(Ri+1 ) Q(Ri1 ) 400.9107 380.0782 = = 104.1627 2(Ri+1 Ri1 ) 2.6 2.4

De los resultados obtenidos anteriormente es evidente que la mejor aproximacin de la derivada se obtiene con la diferencia nita central. o

42

CAPTULO 2. SERIE DE TAYLOR I

2.5.

Propagaci n del Error o

Denici n 9 o La propagacin del error se dene como el efecto que tienen los errores de o las variables sobre la incertidumbre en una funcin que se aplica sobre ellas. o Generalmente las mediciones de las variables son obtenidas por dispositivos o en el laboratorio y por lo tanto tienen errores que deber ser tenidos en an cuenta en subsecuentes manipulaciones que se hagan a partir de ellas (por ej. la determinacin de alg n parmetro de inters mediante una frmula o u a e o matemtica) a Para el estudio de la propagacin del error primero se van a considerar las o operaciones aritmticas bsicas (suma, resta, multiplicacin y divisin), debido e a o o a la importancia que tienen estas en la gran mayor de los clculos numricos. a a e Supongamos que se tienen dos valores medidos, que a nivel general se denominan como x y y, las cuales tienen unos errores cuanticables expresados como x y y respectivamente. A partir de estas se determina una nueva cantidad z mediante una funcin f (x, y) y por lo tanto se quiere cuanticar cual es el error o en la determinacin de z, es decir, cul es el valor de z?. Generalmente las o a expresiones que permiten calcular este error se dan en los cursos de estad stica bsica y en las sesiones de introduccin en los laboratorios, pero de todas fora o mas se incluyen aqu La descripcin de estas frmulas se hace de acuerdo a la . o o operacin aritmtica involucrada: o e Suma y Resta z = x + y o z = x y. En este caso se asume una situacin o pesimista. Se va a suponer que los errores x y y tienen valores que hacen que z se desvi lo mximo posible del valor real y por lo tanto los e a errores se acumulan con lo cual: z = x + y (2.39)

En el caso que existan ms trminos en la suma/resta se tiene que el efecto a e acumulado es la suma de los errores parciales. Multiplicaci n : Las expresiones del error en la multiplicacin se pueden obteo o ner de forma sencilla. Sabiendo que z = x y esto se convierte en: z + z = (x + x)(y + y) = xy + xy + yx + xy (2.40)

El ultimo trmino de esta expresin se puede despreciar si se tiene en e o cuenta que x x y y y con lo cual se obtiene: z + z = xy + xy + yx y sabiendo que z = xy se puede despejar z: z = xy + yx (2.42) (2.41)

2.5. PROPAGACION DEL ERROR Multiplicaci n por un escalar : Multiplicar el error por el escalar: o z = c x

43

(2.43)

Divisi n : En este caso se asume que z = x/y e introduciendo los errores se o obtiene: x + x (2.44) z + z = y + y despejando z se tiene: z = x + x x y(x + x) x(y + y) x + x z = = y + y y + y y y(y + y) xy + yx xy xy = y 2 + yy

(2.45)

y simplicando se obtiene: z = yx xy y2 (2.46)

ya que el trmino yy es peque o comparado con y 2 e n

44

CAPTULO 2. SERIE DE TAYLOR I

Ejemplo (Determinacin del error de la densidad del Concreto) o Como Ingeniero ud debe determinar la densidad de una muestra de concreto. Para esto se emplea la vieja y conocida expresin: o = m V

donde m es la masa de la muestra y V es el volumen. Para su fortuna, la muestra presenta una forma c bica y por lo tanto la determinacin del voluu o men es sencilla, para lo cual ud mide con una regla el lado de la muestra, el cual resulta ser igual a 20.0 cm. Sin embargo esta medicin tiene un error, el o cual est determinado por la escala de graduacin de la regla y que en este a o caso es igual a 0.1 cm (1 mm). Debido a la forma de la muestra de concreto, el volumen y su error estn dados por: a V + V = l3 + 3l2 l donde V = 3l2 l y con lo cual se tiene que V = 0.008 m3 y V = 1.20 104 m3 . Para la determinacin de la masa se emple una balanza y en este caso o o se obtuvo un valor de 19.72 kg, con un error de 0.05 Kg. De acuerdo con la ecuacin (2.46), el error en la densidad est dado por: o a = V m mV V2

donde m y V son los errores en la masa y el volumen respectivamente, y aplicandola en el caso de la muestra de concreto se obtiene que = 2465.25 kg/m3 y = 30.72 kg/m3 . En el caso que las expresiones matemticas involucren funciones diferentes a a las operaciones aritmticas tradicionales, la serie de Taylor proporciona una e herramienta util para la cuanticacin de la propagacin del error. Se parte de o o la serie de Taylor (ecuacin 2.1) y se trunca de tal manera que solo contenga a o la primera derivada: f (x) = f (x0 ) + f (x0 )(x x0 ) (2.47) y reorganizando se obtiene: f (x) f (x0 ) = f (x0 )(x x0 ) f (x0 ) = |f (x0 )|(x0 ) (2.48)

2.5. PROPAGACION DEL ERROR Ejemplo (Ley de Stokes)

45

Considere un conjunto de part culas esfricas de densidad s y radio R e asentndose en un uido de densidad y viscosidad . La velocidad vs con la a que se asientan dichas part culas se encuentra descrita por la Ley de Stokes: vs = 2g (s )R2 9

en donde el signo negativo indica que el movimiento ocurre en la direccin o negativa del eje de las y. Suponga que tanto la densidad como el radio de la part cula presentan un error que no se puede ignorar y se quiere determinar cul de estos factores inuye ms en la velocidad de asentamiento. Para a a responder a esta pregunta se emplea la ecuacin 2.48, la cual aplicada en o este caso resulta en: dvs d dvs vs = R dR vs = y en donde la derivada de la velocidad con respecto al radio de la part cula es: 4g dvs = (s )R dR 9 y la derivada de la velocidad con respecto a la densidad: dv2 2g = R ds 9 Si se asume que el fenmeno de asentamiento ocurre en un r y lo que o o se est sedimentando es arena de grano no (R = 64m = 64 103 m), a esta tiene una densidad de s = 2600 kg/m3 ,el agua tiene una densidad de = 1000 kg/m3 y una viscosidad de = 8.90 104 N s/m2 . La velocidad que tendr estas part an culas es vs = 1.603627465667915104 m/s, y con esto se obtuvo para R = 1 103 m vs = 501.13 m/s y para s = 1.0 kg/m3 vs = 156.604 m/s. Por lo tanto la variable que tiene ms inuencia en la a determinacin de la velocidad de asentaniento corresponde al Radio de la o part cula.

46

CAPTULO 2. SERIE DE TAYLOR I

Captulo 3 Mtodos para la soluci n de e o ecuaciones no-lineales


3.1. Introducci n o

C IVIL aparecen ecuaciones algebraicas que no se pueden resolver anal ticamente. Un caso particular de esta situacin corresponde a la ecuacin de Manning. Esta ecuacin es muy imporo o o tante en hidra lica ya que permite realizar la descripcin del ujo en un canal u o abierto. 1 (3.1) Q = AR2/3 S 1/2 n donde:

N MUCHOS PROBLEMAS DE LA I NGENIER IA

Q caudal A Area seccin o R es el radio hidra lico u S es la pendiente n es el coeciente de Manning El radio hidra lico se dene como u R= A P (3.2)

donde A = area de la seccin y P = per o metro de la misma. La ecuacin de o Manning (ecuacin 3.1) queda: o 1 Q= A n A P 47
2/3

S 1/2

(3.3)

48

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

Para el caso de un canal cuya seccin tiene forma rectangular, el per o metro mojado est dado por: a P = b + 2h (3.4) donde b es la base y h es la profundidad del canal respectivamente, y el area: A = bh (3.5)

Esto hace que la ecuacin de manning para un canal de seccin rectangular o o se pueda expresar como: Q= 1 (bh)5/3 S 1/2 n (b + 2h)2/3 (3.6)

Un problema com n en el dise o de estructuras hidra licas consiste en deteru n u minar la profundidad h de un canal que pueda conducir un caudal dado Q. Sin embargo como es evidente de la ecuacin 3.6 la variable h no se puede despejar o de forma algebraica y por lo tanto se debe recurrir a una solucin numrica. Los o e procedimientos para solucionar dicho problema caen dentro de los denominados mtodos para la solucin de ecuaciones no lineales y son el tema central del e o presente cap tulo.

3.2.

Tipos de Races

En la ecuacin de Manning presentada anteriormente, el problema de deo terminar el h (la profundidad del canal) se puede reformular escribiendo la ecuacin 3.6 de la forma f (h) = 0, con lo cual se obtiene: o f (h) = 1 (bh)5/3 S 1/2 Q = 0 n (b + 2h)2/3 (3.7)

de tal forma que ahora el problema consiste en determinar los valores de h para los cuales se cumple la ecuacin anterior. Si se supone que f (h) se puede expreo sar como un polinomio y recordando los conceptos del Algebra del Bachillerato, este ser un problema muy similar al de determinar las ra de un polinomio. a ces La cuestin aqu es que a pesar que f (h) no tiene la forma de un polinomio, o el concepto anterior sigue aplicando, y la solucin de las ecuaciones no-lineales o se denominan ra ces. Por lo tanto la denicin de este importante concepto se o presenta a continuacin: o Denici n 10 o Una ra de una funcin f (x) es un n mero xr para el cual se cumple que z o u f (xr ) = 0

3.2. TIPOS DE RACES I

49

Sin embargo es de aclarar que una funcin puede tener ms de una ra xr . o a z En trminos generales la funcin f (x) puede ser de dos tipos: e o Polinomios: es una expresin matemtica de una o ms variables que se o a a construye usando operaciones algebraicas: adicin o substraccin o multiplicacin o exponenciacin de constantes racionales (generalmente). o Funciones Trascendentales: estas son funciones que no se pueden denir en trminos de expresiones algebra e cas que usen variables y constantes, como las mencionadas anteriormente. Esto quiere decir que estas corresponden a funciones que no se incluyen dentro de las funciones polinomiales y cuyos coecients pueden ser polinomios. Ejemplo de este tipo de funciones incluyen: funciones trigonomtricas, logaritmo en cualquier e base, funcin exponencial, y cualquier otra que se dena a partir de estas. o Dependiendo del tipo de ecuacin se pueden tener ra o ces de diferentes tipos. Los polinomios de segundo grado son un caso particular que permite ilustrar los tipos de ra presentes en funciones no lineales. Es bien sabido del algebra del ces 2 bachillerato que las ecuaciones de la forma ax + bx + c = 0 pueden tener ra ces de 3 tipos: Ra ces reales iguales Ra ces reales diferentes Ra ces complejas conjugadas Combinacin de la anteriores o Un criterio aproximado que puede ser empleado para determinar el n mero u de ra ces en una funcin polinomial corresponde a la denominada Regla de los o signos de Descartes. Esta regla se puede expresar de la siguiente forma: Denici n 11 o Si un polinomio con coecientes reales, de una sola variable, se ordena de forma decreciente de acuerdo al exponente, entonces el n mero de ra u ces positivas reales de esa funcin es igual el n mero de cambios de signo entre o u coecientes consecutivos no-nulos o es menor a este por un m ltiplo entero u de 2. Para determinar el n mero de ra u ces negativas reales se cambia el signo de las potencias impares y el n mero de ra u ces en este caso es igual al n mero de cambios de signo en este polinomio modicado o es menor a este u por un m ltipo entero de 2. u

50

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

Ejemplo (Nmero de Raices Positivas de un Polinomio) u Determinar el n mero de ra u ces reales positivas del siguiente polinomio: f (x) = x4 3x3 9x2 + x 5 usando la regla de los signos de Descartes. Ordenando el polinomio de la forma requerida y resaltando los cambios de signo se tiene: f (x) = +x4 3x3 9x2 + x 5
Cambio Cambio Cambio

de lo cual se tienen 3 cambios de signos y por lo tanto se tienen las siguientes opciones: 3 ra ces positivas reales, o, 2 ra ces complejas y 1 ra real positiva z Evidentemente las ra ces complejas deben ser conjugadas entre s . Ejemplo (Nmero de Raices Negativas de un Polinomio) u Determinar el n mero de ra reales negativas del siguiente polinomio: u ces f (x) = x4 3x3 9x2 + x 5 usando la regla de los signos de Descartes. Cambiando los signos de las potencias impares como es requerido por el criterio se tiene: f (x) = x4 +3x3 9x2 x 5
Cambio

de tal forma que hay un solo cambio de signo y por lo tanto como mximo a se tiene 1 ra real negativa. z

3.3.

Mtodos Abiertos e

Denici n 12 o Los mtodos abiertos para la determinacin de ra e o ces son aquellos en los cuales se hace necesario especicar el intervalo en donde se encuentra la ra z. Dentro de los mtodos abiertos se pueden mencionar: e

3.3. METODOS ABIERTOS Mtodos Grcos e a Mtodos de Biseccin e o

51

3.3.1.
3.3.1.1.

Mtodo Grco e a
Fundamentos Conceptuales

Este mtodo es el ms simple de todos y se basa en el hecho que la ra xr de e a z una ecuacin no-lineal f (x) corresponde al punto en donde la grca de dicha o a funcin cruza el eje x. o En MATLAB R este mtodo se puede aplicar por medio de diferentes funcioe nes, sin embargo, la ms apropiada es la funcin plot. Esta funcin tiene una a o o s ntaxis muy sencilla: plot(x,y,s) donde x corresponde al vector con las coordenadas x de los puntos que se quieran graca, mientras que y es el vector con las coordenadas y. En cuanto a s es una cadena conformada por tres caracteres. El primero hace referencia al color que se quiere emplear para gracar, el segundo al tipo de marcador y el tercero al tipo de l nea. Las opciones que MATLAB R ofrece para cada uno de ellos se presentan en la tabla 3.1 Caracter b g r c m y k Color azul verde rojo cyan magenta amarillo negro Caracter . o x + * s Marcador punto c rculo marca de x ms a asterisco cuadrado Caracter : -. -(ninguno) Tipo de Lnea slida o punteada l nea-punto l nea intermitente no l nea

Tabla 3.1: Tabla de opciones de gracacin de MATLAB o

52 Ejemplo MATLAB
R

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I (Jugando con las opciones de gracacin) o

El procedimiento de gracacin en MATLAB R es relativamente sencillo, o ya que existen una gran cantidad de comandos especializados que permiten obtener grcas de forma rpida. El comando ms sencillo y util correspona a a de al plot() . Para realizar las pruebas respectivas se dene un vector de n meros aleatorios con distribucin uniforme de la siguiente forma: u o >>y=rand(100,1); Este vector se puede grcar fcilmente usando el comando: a a plot(y); el cual utiliza las opciones de gracacin por defecto de MATLAB R y que o corresponden a l nea azul de color continuo, sin marcadores; es decir, que la instruccin anterior es equivalente a plot(y,b-). As mismo si el objetivo o es resaltar solamente el valor se puede gracar solamente con marcadores de bolita: plot(y,o); o si queremos tanto resaltar la variacin como los valores se puede construir o una grca con l a nea punteada y con marcadores de puntos: plot(y,-.);

3.3.1.2.

Ecuaci n de Manning o

Con el n de aplicar los diferentes mtodos para la determinacin de las e o ra ces de una ecuacin no-lineal es necesario implementar la ecuacin de Mano o ning en MATLAB R . Esta funcin se encuentre implementada de la siguiente o forma:
"prueba_manning.m" 52 Prueba Manning: Declaracin de la Funcin 53a o o Prueba Manning: Inicializacin de variables 53b o Prueba Manning: Evaluacin funcin 53c o o

3.3.1.2.1. Declaraci n de la Funci n Con el n de simplicar la utilizacin o o o de esta funcin, solo se tiene una variable de entrada que corresponde a la o profundidad del canal h, y como variable de salida f , el valor de la funcin de o inters (ecuacin 3.7) evaluada en h: e o

3.3. METODOS ABIERTOS


Prueba Manning: Declaracin de la Funcin 53a o o function f=prueba_manning(h)
Fragmento referenciado en 52.

53

3.3.1.2.2. Inicializaci n de Variables En este fragmento de cdigo se eso o pecican los valores que son constantes en el problema del canal, los cuales incluyen: b: ancho del canal en m Q: Caudal en m3 /s S: pendiente (medida adimensional) n: Coeciente de rugosidad de manning Esto se en MATLAB
R

implementa de la siguiente forma:

Prueba Manning: Inicializacin de variables 53b o b=30; Q=1000; S=0.002; n=0.022;


Fragmento referenciado en 52.

3.3.1.2.3. Evaluaci n de la funci n Una vez se han denido las diferentes o o constantes del problema, se puede evaluar la funcin (ecuacin 3.7): o o
Prueba Manning: Evaluacin funcin 53c o o f = Q-1/n*(b*h).^(5/3)./(b+2*h).^(2/3).*sqrt(S);
Fragmento referenciado en 52.

54 Ejemplo MATLAB
R

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I (Determinacin de ra usando el mtodo Grco) o ces e a

Determine la profundidad del canal h que permite pasar un caudal de q = 1000 m3 /s para un valor de ancho b = 30 m, de pendiente de S = 0.002 y un coeciente de manning de n = 0.022. Para resolver este problema, en primer lugar se dene un vector de profundidades en el que se incluyen los valores para los cuales se desea gracar la funcin de Manning. En este caso o se quiere gracar para valores de profundidad entre 0 y 10 m, para lo cual denimos un vector de la siguiente forma: >> h=[0:0.1:10]; Los valores contenidos en el vector h corresponden a los valores que van a ir en el eje x, y por lo tanto se debe denir los valores del eje y, lo cual se hace por medio de: >> f=prueba_manning(h); Para gracar sencillamente se emplea la funcin plot y se especican los o valores de x y y: >> plot(h,f) El resultado de este procedimiento se puede apreciar en la gura 3.1 y de la cual es evidente que el valor para el cual f (h) = 0 es de aproximadamente 6 m.

1000

500

funcin f(h)

500

1000

1500

10

Profundidad(m)

Figura 3.1: Grca de la profundidad contra el valor de la funcin f (h). El valor a o de la ra es aproximadamente 6.0 m z

3.3. METODOS ABIERTOS

55

3.3.2.
3.3.2.1.

Mtodo de la Bisecci n e o
Fundamentos Conceptuales

Este es uno de los mtodo ms sencillos que existe y su utilizacin se basa e a o en la siguiente idea que se presenta como un teorema: Teorema 4 Una ecuacin de la forma f (x) = 0, donde f (x) es una funcin real continua, o o tiene al menos una ra en el intervalo [xl , xu ] si se cumple que f (xl )f (xu ) < 0 z La idea expuesta por este teorema aparece representada de forma grca en la a gura 3.2(a). De esta resulta claro que existe un ra en el intervalo [xl , xu ]. Sin z embargo este teorema garantiza que si la condicin f (xl )f (xu ) se cumple puede o existir ms de una ra tal y como se aprecia en la gura 3.2(b). a z Ahora es necesario mencionar que el criterio en el que se fundamenta el teorema 4para realizar la b squeda de las ra u ces no es siempre vlido, ya que a se puede tener una situacin en donde f (xl )f (xu ) > 0 y en el intervalo pueden o existir una ra o ms, tal como aparece representado en la gura 3.3 z a Debido a que la ra xr se encuentra en el intervalo [xl , xu ] entonces se dez termina el punto medio xm de este intevalo con lo cual generamos dos nuevos subintervalos: [xl , xm ] [xm , xu ] Ahora es necesario determinar en que intervalo se encuentra la ra xr . Para z esto se eval a la funcin en xm , es decir se obtiene f (xm ) y se calcula el signo u o de f (xl )f (xm ). Aqu se tienen dos casos: f (xl )f (xm ) < 0: la ra xr se encuentra en este intervalo. En este caso el z procedimiento se repite nuevamente y se hace que xu = xm . f (xl )f (xm ) > 0: la ra xr se encuentra en el intervalo f (xm )f (xu ). En este z caso el procedimiento se repite haciendo xl = xm EL procedimiento anterior se repite de forma que cada vez el intervalo en donde se encuentra la ra se va volviendo ms peque o, hasta que al nal se llegue a z a n aislar la ra x0 . z Las desventajas del mtodo de la biseccin incluyen: e o La convergencia a la ra xr puede ser lenta z Si la ra xr se encuentra muy cerca de uno de los extremos del intervalo z [xl , xu ] entonces el n mero de iteraciones necesario para que el algoritmo u converja ser muy alto. a

56

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

(a)

(b)

Figura 3.2: a). Existe al menos una ra en el intervalo [xl , xu ] si la funcin z o cambia de signo. b). Pero puede presentarse la situacin que exista ms de una o a ra si la condicin se cumple. z o Si se selecciona un intervalo en donde no hay cambio de signo de la funcin, entonces no hay garant que el procedimiento presente convergeno a cia. Si el intervalo seleccionado [xl , xu ] incluye un punto de singularidad, el procedimiento presentar convergencia a dicho punto. a Ejemplo (Dimensin caracter o stica de un lago) En problemas de transporte de contaminantes en cuerpos de agua es indispensa-

3.3. METODOS ABIERTOS

57

Figura 3.3: En este caso se presenta una situacin en donde la funcin tiene o o valores positivos en los extremos del intervalo pero existen ra ces en este.

Figura 3.4: Lago con forma irregular. Para determinar la dimensin caracter o stica de este se aproxima la forma mediante una cirfunferencia de radio r ble conocer las dimensiones caracter sticas. Estas dimensiones caracter sticas se pueden considerar las escalas (representadas por areas, longitudes y/o vol meu nes) en los cuales se puede asumir que una propiedad es representativa o constante. Suponga que se tiene un lago (ver gura 3.4) y se quiere determinar su dimensin lineal caracter o stica usando el mtodo de la biseccin. En este caso la e o

58
0.5 n=2 n=1 n=3 n=4 0

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

Raz=2

0.5

1.5 xL xL m xm xm xm L U xU

2 0

0.5

1.5

2.5

Figura 3.5: Ejemplo de aplicacin del mtodo de la Biseccin o b squeda binao e o u ria. Se parte del intervalo [xL , xU ] en donde se encuentra una ra xr , y para el z cual se cumple que f (xL ) f (xU ) < 0. Se dene la nueva aproximacin a la o ra como el punto medio del intervalo xm y se determina para que extremo se z cumple que el producto de los valores de la funcin sea menor que 0. En ese moo mento se modica el intervalo original y el procedimiento se repite nuevamente.

dimensin lineal caracter o stica del lago se asume como el radio de la circunfe rencia que tiene la misma area supercial. Esta se puede determinar fcilmente a a partir de la relacin: o AL = 4r2 en donde AL es el area del lago y r es la dimensin caracter o stica deseada. Despejando esta ultima variable se tiene: r= AL 4

de tal manera que la dimensin lineal caracter o stica es equivalente a evaluar la ra cuadrada de la un valor espec z co. Supongamos que el area del lago es de

3.3. METODOS ABIERTOS

59

25km2 , con lo cual se tiene r = 1.4104 y por lo tanto la dimensin lineal que o caracter stica es igual a r = 1.9894. Para calcular este valor se emplea la siguiente funcin: o f (x) = x2 1.9894 = 0 (3.8)

Para aplicar el mtodo de la biseccin en la solucin de este problema debemos e o o especicar el intervalo de b squeda, el cual en este caso ser [1, 2]. El punto u a medio de este intervalo y por lo tanto la primera aproximacin a la ra es: o z x(1) = m
(k)

2.0 + 1.0 = 1.5 2

u o donde xm el k representa el n mero de iteracin. Para saber si cual extremo del intervalo se modica, es necesario evaluar la funcin en los 3 puntos xl , xm o y xu : f (1.0) = (1.0)2 1.9894 = 1.0 1.9894 = 0.9894 f (1.5) = (1.5)2 1.9894 = 2.25 1.9894 = 0.2606 f (2.0) = (2.0)2 1.9894 = 4.0 1.9894 = 2.0106 De los anteriores valores resulta claro que el extremo superior del intervalo se debe cambiar de 2.0 a 1.5. Para la iteracin 2 se tiene que el punto medio ahora es igual a: o x(2) = m 1.0 + 1.5 = 1.25 2

y al evaluar la funcin en los extremos del intervalo y el punto medio se obtiene: o f (1.0) = (1.0)2 1.9894 = 1.0 1.9894 = 0.9894 f (1.25) = (1.25)2 1.9894 = 1.5625 1.9894 = 0.4269 f (1.5) = (1.5)2 1.9894 = 2.25 1.9894 = 0.2606 de donde se determina que se debe cambiar el extremo inferior del intervalo y ahora xl = 1.25. Para la tercera iteracin, el punto medio es igual a: o x(3) = m 1.25 + 1.50 = 1.375 2

y al evaluar la funcin en los extremos del intervalo y el punto medio se obtiene: o f (1.25) = (1.25)2 1.9894 = 1.5625 1.9894 = 0.4269 f (1.375) = (1.375)2 1.9894 = 1.890625 1.9894 = 0.098775 f (1.5) = (1.5)2 1.9894 = 2.25 1.9894 = 0.2606

60

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

de donde se determina que se debe cambiar el extremo inferior del intervalo y ahora xl = 1.375. Para la cuarta iteracin, el punto medio es igual a: o x(4) = m 1.375 + 1.5 = 1.4375 2

y al evaluar la funcin en los extremos del intervalo y el punto medio se obtiene: o f (1.375) = (1.375)2 1.9894 = 1.8906 1.9894 = 0.0987 f (1.4375) = (1.4375)2 1.9894 = 2.0664 1.9894 = 0.0770062 f (1.5) = (1.5)2 1.9894 = 2.25 1.9894 = 0.2606 El anterior procdimiento se repite hasta que el error relativo de la ra aproxiz mada sea menor que la tolerancia especicada inicialmente. 3.3.2.2. Determinaci n de races usando el mtodo de la bisecci n o e o
R

Una implementacin del procedimiento de la biseccin en MATLAB o o presenta a continuacin: o


"biseccion.m" 60 Biseccin: Declaracin de la funcin 61a o o o Biseccin: Inicializacin de variables 61b o o Biseccin: Ciclo Principal 62a o

se

3.3.2.2.1. Declaraci n de la funci n o o cin son la siguientes: o

Las variable de entrada de esta fun-

xl , xu : extremo inferior y superior del intervalo de b squeda u f unc: funcin a la cual se le quieren determinar los valores de la ra o ces maxit: N mero mximo de iteraciones u a errmin: error m nimo de la solucin o Las variables de salida son: xr: valor de la ra obtenido por este mtodo z e f : vector con los valores de la funcin para cada una de las iteraciones o err: vector con los valores del error obtenido para cada una de las iteraciones xr

3.3. METODOS ABIERTOS iter: n mero de iteraciones empleado para obtener el valor de xr u

61

Biseccin: Declaracin de la funcin 61a o o o function [x,f,err,iter]=bisection(xl,xu,func,maxit,errmin)


Fragmento referenciado en 60.

3.3.2.2.2. Inicializaci n de Variables En este fragmento de cdigo se iniciao o lizan las diferentes variables que se van a utilizar en el resto del procedimiento. El error relativo err se inicializa en 100 %, el n mero de iteraciones iter se iniu cializa en 0, el valor de la ra se hace igual al extremo inferior del intervalo z xl ,

Biseccin: Inicializacin de variables 61b o o iter=1; er=100; xr=xl; root=0; x(1)=xl; f(1)=feval(func,x(1)); err(1)=er;
Fragmento referenciado en 60.

3.3.2.2.3. Ciclo Principal La b squeda de la ra se implementa como un u z ciclo while ya que no se conoce de antemano el n mero de iteraciones que se van u a emplear para obtener la ra xr. Sin embargo este ciclo se controla mediante z el n mero de iteraciones (denido en la variable iter y que contin e mientras u u tiene un valor menor a maxiter) y que el error relativo de la ra actual err sea z mayor a cierto valor m nimo de error predenido por el usuario y almacenado en la variable minerr. La estructura de este ciclo principal es la siguiente:

62

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

Biseccin: Ciclo Principal 62a o while (err > errmin & iter < maxit ); Ciclo Principal Biseccin: Clculo nueva solucin 62b o a o Ciclo Principal Biseccin: Clculo de las funciones 62c o a Ciclo Principal Biseccin: Donde esta la solucin 63a o o Ciclo Principal Biseccin: Clculo error e incremento iteraciones 64a o a Ciclo Principal Biseccin: Asignacin de resultados 64b o o end;
Fragmento referenciado en 60.

3.3.2.2.3.1. Clculo nueva soluci n a o emplea la ecuacin o

Para calcular la nueva solucin se o

Ciclo Principal Biseccin: Clculo nueva solucin 62b o a o xold=xr; xr=0.5*(xl+xu);


Fragmento referenciado en 62a.

3.3.2.2.3.2. Clculo de las funciones Se eval a la funcin en cada uno a u o de los extremos del intervalo [xl , xu ]. Para esto empleamos la funcin de MATLAB o R feval.
Ciclo Principal Biseccin: Clculo de las funciones 62c o a fr=feval(func,xr); fl=feval(func,xl);
Fragmento referenciado en 62a.

3.3.2.2.3.3. Donde est la soluci n? Una vez se ha determinado la soa o lucin en cada uno de los 3 puntos de inters, se determinar en donde puede o e encontrarse la solucin. Para esto existen 3 posibilidades: o La ra se encuentra en la mitad inferior del intervalo z La ra se encuentra en la mitad superior del intervalo z El valor actual corresponde al valor de la ra z

3.3. METODOS ABIERTOS


Ciclo Principal Biseccin: Donde esta la solucin 63a o o Solucin: ra en mitad inferior 63b o z Solucin: ra en mitad superior 63c o z Solucin: ra encontrada 63d o z
Fragmento referenciado en 62a.

63

La ra se encuentra en la mitad inferior si se cumple que f (xr ) f (xl ) < 0, en z este caso se asigna como extremo superior del intervalo el valor de xr
Solucin: ra en mitad inferior 63b o z if(fr*fl<0); xu=xr; root=xr;
Fragmento referenciado en 63a.

La ra se encuentra en la mitad superior del intervalo si se cumple la condicin z o f (xr ) f (xl ) > 0, en cuyo caso se asigna como extremo inferior del intervalo de b squeda el valor de xr y se asigna este valor como aproximacin de la ra u o z (root).
Solucin: ra en mitad superior 63c o z elseif(fr*fl>0); xl=xr; root=xr;
Fragmento referenciado en 63a.

Si ninguna de las dos condiciones anterior se cumple, entonces esto implica que el valor de xr se puede considerar una ra de la ecuacin en estudio y por lo z o tanto este valor se asigna en root .
Solucin: ra encontrada 63d o z else root=xr; end
Fragmento referenciado en 63a.

64

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

3.3.2.2.3.4. Clculo error e incremento de iteraciones Una vez se ha a obtenido una aproximacin a la ra de la ecuacin se determina la calidad o z o numrica de la misma calculando el error relativo. As mismo se incrementa el e n mero de iteraciones. u
Ciclo Principal Biseccin: Clculo error e incremento iteraciones 64a o a er=(abs(xr-xold)/xr)*100; iter=iter+1;
Fragmento referenciado en 62a.

3.3.2.2.3.5. Asignaci n de resultados El valor actual de la ra xr, as coo z mo el valor de la funcin f unc en ese punto y error relativo de la aproximacin o o actual de la ra se almacenan en los respectivos vectores. z
Ciclo Principal Biseccin: Asignacin de resultados 64b o o x(iter)=xr; f(iter)=feval(func,xr); err(iter)=er;
Fragmento referenciado en 62a.

3.3. METODOS ABIERTOS Ejemplo MATLAB


R

65

(Solucin de Manning con el Mtodo de la Biseccin) o e o

Para encontrar la ra de una funcin empleando el mtodo de la Bisecz o e cin es necesario denir el intervalo en donde se debe realizar la b squeda. o u Para este caso particular, los resultados obtenidos del mtodo grco (ver e a Figura 3.1) indica que el valor de la ra es de aproximadamente 6, de tal z forma que el intervalo de b squeda corresponde a [5, 7], el n mero mximo u u a de iteraciones es de 100 y el error m nimo deseado para la solucin es de o 1 103 . La solucin de la ecuacin de Manning usando el mtodo de la o o e Biseccin se puede implementar en MATLAB R de la siguiente forma: o >>[x,f,err,iter]=bisection(5,7,@prueba_manning,100,1e-3); >> iter iter = 16 >> [x(iter) f(iter) err(iter)] ans = 6.1450 -0.0033 0.0010

De aqu se inere que el valor de la profundidad del canal es de 6.1450 m.

3.3.2.3.

Anlisis de Convergencia a

A continuacin se presenta un anlisis de convergencia para el mtodo de la o a e biseccin. Para realizar dicho anlisis se parte del concepto de error absoluto o a
0 Ea = x0 x0 = x0 u l

(3.9)

donde los super ndices denen la iteracin para la cual este importante parmeo a tro se calcula. Para la primera iteracin el error est dado por: o a x0 (3.10) 2 y debido a que en cada iteracin el error disminuye a la mitad se tiene que: o
1 Ea =

x0 (3.11) 2n de tal forma que si se tiene el error que se desea obtener con esta aproximacin o se puede despejar n con lo cual resulta:
n Ea =

n=

log (x0 /Ea,d ) = log2 log 2

x0 Ea,d

(3.12)

66

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

La convergencia del mtodo se encuentra asegurada por la ecuacin 3.11 en e o donde es evidente que el error disminuye a medida que el n mero de iteraciones u n aumenta.

3.4.

Mtodos Cerrados e

Denici n 13 o Los mtodos cerrados para determinar ra e ces de ecuaciones no lineales son aquellos que no requieren especar un intervalo de b squeda sino solamente u un valor inicial de la ra z. Dentro de los mtodos cerrados ms importantes se pueden mencionar: e a Mtodo de Newton e Mtodo de la secante e Mtodo de la secante modicado e los cuales se explicarn a continuacin. a o

3.4.1.
3.4.1.1.

Mtodo de Newton e
Fundamentos Conceptuales

El mtodo de Newton al ser un mtodo cerrado requiere que se especique e e un valor inicial de la ra x0 y este valor se va renando mediante un esquema z iterativo. El mtodo de Newton tiene su fundamento en la serie de Taylor aplicada en e la funcin f (x), con lo cual se tiene: o f (x) = f (x0 ) + f (x0 )(x x0 ) + f (x0 ) (x x0 )2 + 2! (3.13)

y truncando esta serie hasta la primera derivada se obtiene: f (x) = f (x0 ) + f (x0 )(x x0 ) Ahora si se hace x = xr se tiene que f (xr ) = 0: 0 = f (x0 ) + f (x0 )(xr x0 ) y despejando xr : xr = x0 f (x0 ) f (x0 (3.16) (3.15) (3.14)

3.4. METODOS CERRADOS

67

Esta ecuacin se puede expresar como un esquema iterativo de la siguiente foro ma: f (xn ) (3.17) xn+1 = xn f (xn+1 ) La idea fundamental del mtodo de Newton consiste en especicar una solucin e o inicial x0 y al aplicar la ecuacin 3.17 para mejorar la estimacin de la ra xr . o o z Este procedimiento se repite hasta que las diferencias obtenidas en los valores obtenidos sean menores que una tolerancia especicada por el usuario. El mtodo de Newton tambin puede interpretado de forma geomtrica usando e e e la situacin representada en la gura 3.6. De esta se inere que el angulo tiene o una tangente igual a: f (xi ) 0 (3.18) tan () = xi xi+1 De aqu resulta de inters el valor de xi+1 ya que este corresponde a la nueva e estimacin de la ra xr y por lo tanto al despejar se tiene: o z xi+1 = xi f (xi ) f (xi ) = xi tan () f (xi ) (3.19)

en donde se ha empleado la equivalencia entre la tangente en un punto de una funcin y la derivada de la funcin. Esta ecuacin es equivalente a la expresin o o o o 3.17 la cual se obtuvo de una forma alternativa.
. f (x) f (xi )

f (xi+1 ) xi+2 xi+1 xi x

Figura 3.6: Interpretacin geomtrica del mtodo de Newton o e e

A pesar que este procedimiento es uno de los ms empleados en la prctica para a a la determinacin de ra tiene limitaciones. Algunas de las desventajas de este o ces mtodo son las siguientes: e

68
140

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

120

100

80

60

40

20 Raz=2.3223 0 x3 x2 3 3.5 x1 4 x0 4.5 5

.0

20 0

0.5

1.5

2.5

Figura 3.7: Ejemplo de aplicacin del mtodo de Newton. En este mtodo se o e e parte de una solucin inicial x0 y en el punto f (x0 ) se determina una recta tano gente, la cual al intersectarse con el eje de las x dene una nueva aproximacin o a la ra x1 . Este procedimiento se repite hasta que se obtenga un valor lo suz cientemente aproximado a la ra Las rectas representadas por la l z. nea continua se construyen empleando el criterio de actualizacin dado por la ecuacin 3.17. o o

Como todo mtodo iterativo la convergencia no est asegurada. Por ejeme a plo si se elige mal la solucin inicial x0 el mtodo en algunas oportunidao e des puede presentar divergencia. El mtodo presenta divergencia si la ra xr de la funcin f (x) es tambin e z o e un punto de inexin de la misma. o El mtodo presenta problema en cercan de puntos mximos y m e as a nimos ya que en estos puntos f (x) = 0 y por lo tanto la ecuacin 3.17 no est deo a nida. En el caso de funciones con m ltiples raices se pueden presentar probleu

3.4. METODOS CERRADOS mas de convergencia por saltos en la determinacin de xr o

69

El mtodo presenta problemas en cercan de los puntos de inexin, en e as o donde el signo de la derivada puede cambiar. Ejemplo (Dimensin caracter o stica de un lago) Para aplicar el mtodo de Newton para la solucin de este problema es necesario e o especicar: x0 solucin inicial, que en este caso es 2.0 o Derivada de la funcin, que en este caso es f (1) (x) = 2x o Tolerancia m nima aceptable, 0.01 % Para la iteracin 1 se tiene que: o x0 = 2.0 f (x0 ) = 2.0106 f
(1)

(3.20)

(x0 ) = 4.0

y por lo tanto el nuevo valor de la ra es: z x1 = x0 = 2.0106 f (x0 ) = 2.0 = 2.0 0.5026 = 1.4973 (1) (x ) f 4.0 0

Para la iteracin 2 se tiene que: o x1 = 1.49735 f (x1 ) = 0.2526 f (1) (x1 ) = 2.9947 y por lo tanto el nuevo valor de la ra es: z x2 = x1 f (x1 ) 0.2526 = 1.49735 = 1.4129 (1) (x ) f 2.9947 1

Para la iteracin 3 se tiene que: o x2 = 1.4129 f (x2 ) = 0.00688 f (1) (x2 ) = 2.8258 y por lo tanto el nuevo valor de la ra es: z x3 = x2 f (x2 ) 0.00688 = 1.4129 = 1.4104 (1) (x ) f 2.8258 2

El anterior procdimiento se repite hasta que el error relativo de la ra aproxiz mada sea menor que la tolerancia especicada inicialmente.

70 3.4.1.2.

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I Determinaci n de races con el mtodo de Newton o e

La funcin en MATLAB R que implementa el mtodo de newton se denomina o e newton.m y tiene la siguiente estructura
"newton.m" 70a Newton: Declaracin de la funcin 70b o o Newton: Inicializacin de variables 71a o Newton: Ciclo Principal 71b

3.4.1.2.1. Declaraci n de la funci n o o riables de entrada:

: Esta funcin tiene las siguientes vao

xguess: valor inicial de la ra Generalmente depende del problema y se z. puede determinar por mtodos grcos e a f unc: funcin en estudio y de la cual se quiere determinar la ra o z df unc: derivada de la funcin de la cual se quiere determinar la ra o z err min: error m nimo que se quiere obtener en la ra z maxit: N mero mximo de iteraciones u a Esta funcin tiene como variables de salida las siguientes: o x: vector
Newton: Declaracin de la funcin 70b o o function [x,f,err,iter]=newton(xguess,func,dfunc,errmin,maxit)
Fragmento referenciado en 70a.

3.4.1.2.2. Inicializaci n de Variables Para realizar la determinacin de la o o ra de la funcin f unc se hace necesario inicializar las variables de salida (exz o plicadas en la seccin anterior) junto con las siguientes variables: o iter: contador de iteraciones er valor inicial de error relativo. Se inicializa en 100 % xold: valor de la ra en la iteracin anterior (Para calcular el error relativo z o por iteracin). Se inicializa con el valor de la ra inicial. o z

3.4. METODOS CERRADOS

71

xr: valor de la ra en la iteracin actual. Se inicializa con el valor inicial z o de la ra z.


Newton: Inicializacin de variables 71a o iter=1; er=100; x(1)=xguess; f(1)=feval(func,x(1)); err(1)=er; xrold=xguess; xr=xguess;
Fragmento referenciado en 70a.

3.4.1.2.3. Ciclo Principal Debido a que no se conoce de antemano el n meu ro de iteraciones necesario para que el procedimiento de obtencin de la ra o z converja a una solucin satisfactoria, el mtodo de Newton se implementa a o e nivel computaciona como un ciclo while, controlado tanto por el n mero de iteu raciones iter y por el error relativo de la solucin err. El ciclo se detiene ya sea o cuando el n mero de iteraciones supera el valor mximo max it o cuando el u a error relativo err es menor al error m nimo tolerable en la solucin err min. o La estructura de este ciclo principal es la siguiente:
Newton: Ciclo Principal 71b while (er>=errmin & iter<maxit) Ciclo Principal Newton: Actualizacin solucin 72a o o Ciclo Principal Newton: Clculo error e incremento iteraciones 72b a Ciclo Principal Newton: Asignacin de resultados 72c o end
Fragmento referenciado en 70a.

3.4.1.2.3.1. Actualizaci n de la soluci n Aqu se realiza el procedimieno o to clave del mtodo de Newton. Dentro de el ciclo la primera tarea que se hace e es asignar a xold el valor de la ra obtenido en la iteracin anterior, con lo cual z o se posibilita calcular el error relativo. Posteriormente el valor de la ra actual z se modica usando la ecuacin 3.17. Para evaluar la funcin y su derivada se o o emplea el comando de MATLAB R feval.

72

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

Ciclo Principal Newton: Actualizacin solucin 72a o o xrold=xr; xr=xrold-feval(func,xrold)/feval(dfunc,xrold);


Fragmento referenciado en 71b.

3.4.1.2.3.2. Clculo del error e incremento de iteraciones Como se a mencion anteriormente el criterio de convergencia de este mtodo es el error o e relativo, as que para la solucin actual se determinar el error relativo obtenido o al comparar este valor con el de la ra obtenida en la solucin anterior xold. z o As mismo se incrementa el contador de iteraciones iter, ya que esta es la otra variable que controla el ciclo.
Ciclo Principal Newton: Clculo error e incremento iteraciones 72b a er=abs((xr-xrold)/xr)*100; iter=iter+1;
Fragmento referenciado en 71b.

3.4.1.2.3.3. Asignaci n de resultados o


Ciclo Principal Newton: Asignacin de resultados 72c o x(iter)=xr; f(iter)=feval(func,xr); err(iter)=er;
Fragmento referenciado en 71b.

3.4.1.3. Derivada de la ecuaci n de Manning o Con el n de aplicar el mtodo de Newton para la solucin de la ecuacin e o o de Manning es necesario calcular la derivada de la funcin de inters 3.6 con o e respecto a la variable que nos interesa despejar, en este caso h. Esta derivada es igual a: f
(1)

1 5 (h) = S 1/2 b n 3

bh b + 2h

2/3

4 3

bh b + 2h

5/3

La funcin que implementa esta derivada tiene la siguiente estructura: o

3.4. METODOS CERRADOS


"der_manning.m" 73a Derivada Manning: Declaracin de la funcin 73b o o Derivada Manning: Inicializacin de variables 73c o Derivada Manning: Clculo derivada 73d a

73

3.4.1.3.1. Declaraci n de la funci n Al igual que en el caso de la funcin de o o o Manning, la unica variable de entrada corresponde a la profundidad del canal h, y la variable de salida es el valor de la derivada yp:
Derivada Manning: Declaracin de la funcin 73b o o function [yp]=der_manning(h)
Fragmento referenciado en 73a.

3.4.1.3.2.

Inicializaci n de Variables o

Derivada Manning: Inicializacin de variables 73c o b=30; n=0.022; Q=1000; S=0.002;


Fragmento referenciado en 73a.

3.4.1.3.3. Clculo de la derivada En este fragmento de cdigo se determina a o el valor de la derivada de la ecuacin de Manning (ecuacin 3.4.1.3), para esto o o se calcula primero la variable t = (bh)/(b+2h) y con esta se determina fcilmente a la derivada:
Derivada Manning: Clculo derivada 73d a t = b*h./(b+2*h); yp = -1/n*sqrt(S)*(5/3*b*t.^(2/3)-4/3*t.^(5/3));
Fragmento referenciado en 73a.

74 Ejemplo MATLAB
R

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I (Solucin de Manning con el Mtodo de Newton) o e

Para aplicar el mtodo de Newton en la solucin de la ecuacin de Mane o o ning es necesario conocer la derivada de la funcin de inters (ecuacin o e o 3.6). La solucin de la ecuacin de Manning usando el mtodo de Newton o o e R usando la funcin newton.m de la siguiente se puede hacer en MATLAB o forma: >> [x,f,err,iter]=newton(7,@prueba_manning,@der_manning,1e-3,100); >> iter iter = 4 >> [x(iter) f(iter) err(iter)] ans = 6.14494463443898 -0.00000000101147 0.00019019602665

En este caso particular se ha obtenido un valor de profundidad de 6.14 m en 4 iteraciones. Comparnse los resultados con el mtodo de la biseccin y con e e o el mtodo de la secante. e 3.4.1.4. Anlisis de convergencia a

El anlisis de convergencia del mtodo de Newton se basa en la descompoa e sicin en series de Taylor de una funcin en el punto xi+1 dada por la siguiente o o expresin: o f (2) () (xi+1 xi )2 (3.21) 2! Sin embargo con el n de simplicar las manipulaciones matemticas que de a esta se derivan, la serie anterior se trunca teniendo en cuenta solamente dos trminos: e f (xi+1 ) f (xi ) + f (1) (xi )(xi+1 xi ) (3.22) f (xi+1 ) = f (xi ) + f (1) (xi )(xi+1 xi ) + Si xr , que es el valor de la ra de la ecuacin f (x), se reemplaza en la z o expresin anterior se tiene que f (xi+1 ) = 0 y por lo tanto se puede expresar o como: 0 = f (xi ) + f (1) (xi )(xr xi ) (3.23) y sustituyndola en la expresin original (ecuacin 3.21) e o o 0 = f (xi ) + f (1) (xi )(xi+1 xi ) + f (2) () (xi+1 xi )2 2! (3.24)

3.4. METODOS CERRADOS Restando las ecuaciones 3.23 y 3.24 se obtiene: 0 = f (1) (xi )(xr xi+1 ) + f (2) () (xr xi )2 2!

75

(3.25)

Ahora recordando la denicin de error absoluto se tiene que Er,i+1 = |xi+1 xi | o y por lo tanto la ecuacin anterior se simplica para obtener: o f (2) () 2 Er,i (3.26) 0 = f (xi )Er,i+1 + 2! y si se supone que hay convergencia, entonces xi y se deben aproximar a la ra xr y la ecuacin anterior se puede expresar como: z o
(1)

Er,i+1

f (2) (xr ) 2 = (1) E 2f (xr ) r,i

(3.27)

de donde es claro que el error en la iteracin i + 1 es proporcional al cuadrado o del error en la iteracin i, lo cual indica que el error disminuye y por lo tanto el o mtodo converge a la ra xr . e z

3.4.2.
3.4.2.1.

Mtodo de la Secante e
Fundamentos Conceptuales

Una de las grandes desventajas del mtodo de Newton-Raphson es que se e tiene que conocer la derivada de la funcin que se est evaluando, lo cual no o a siempre es posible; especialmente en el caso de funciones que no tienen deriva da o cuya derivada es muy dif de determinar. En estos caso resulta util contar cil con un mtodo alternativo que no requiera conocer la derivada de antemano, e sino que esta se determine de forma numrica. La derivada de f (x) en el punto e xi se puede obtener usando: f (xn ) = f (xn ) f (xn1 ) xn xn1 (3.28)

La ecuacin anterior se puede reemplazar en la ecuacin 3.17 con lo cual se o o obtiene: f (xn )(xn xn1 ) xn+1 = xn (3.29) f (xn ) f (xn1 ) y con la cual se dene la regla de actualizacin del mtodo de la secante. Como o e es evidente de la ecuacin anterior, este mtodo requiere dos valores iniciales o e x0 , x1 , los cuales no es necesario que denan un intervalo que contenga a la ra z xr que se quiere determinar. Este mtodo tiene las mismas ventajas y desventae jas que el mtodo de Newton, y dependiendo de los valores iniciales se puede e presentar o no convergencia.

76

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

Este mtodo tambin admite una interpretacin geomtrica similar al del mtoe e o e e do de Newton, la cual aparece en la gura 3.8. Dados dos valores xi y xi1 se dene una l nea recta que una los puntos f (xi ) y f (xi1 ). De esta forma se denen 2 triangulos similares ABE y DCE, con lo cual se establecen las siguientes relaciones: DC AB = AE DE f (xi ) f (xi1 ) = xi xi+1 xi1 + xi+1 y del cual se despeja xi+1 para obtener: xi+1 = xi f (xi )(xi xi1 ) f (xi ) f (xi1 ) (3.31)

(3.30)

Esta ecuacin se puede expresar como un esquema iterativo con lo cual aparece o la ecuacin 3.29. La aplicacin de este mtodo puede verse en accin en la guo o e o ra 3.9.
.

f (x)

f (xi1 )

f (xi ) E xi+1

D C xi

A xi1

Figura 3.8: Interpretacin geomtrica del mtodo de la secante. La recta secante o e e (en color gris) se dene entre los puntos f (xi1 ) y f (xi ) y con esta se aproxima el nuevo valor de la ra z.

3.4. METODOS CERRADOS

77

Ejemplo (Dimensin caracter o stica de un lago) Para aplicar el mtodo de la secante para la solucin de este problema es necee o sario especicar: x0 solucin inicial 1, que en este caso es 2.0 y x1 solucin inicial 2 que este o o caso corresponde a 1.9 Derivada de la funcin, que en este caso es f (1) (x) = 2x o Tolerancia m nima aceptable, 0.01 % Para la iteracin 1 se tiene que o x0 = 2.0 f (x0 ) = 0.00688 x1 = 1.9 f (x1 ) = 1.6206 y por lo tanto la nueva ra es igual a: z x2 = x1 f (x1 )(x1 x0 ) f (x1 ) f (x0 ) 2.0106 (2.0 1.9) = 2.0 2.0000 1.6206 = 2.0000 0.5155 = 1.4844

Para la iteracin 2 se tiene que: o x1 = 1.9 f (x1 ) = 1.6206 x2 = 1.4844 f (x2 ) = 0.2140 y por lo tanto la nueva ra es igual a: z x3 = x2 f (x2 )(x2 x1 ) f (x2 ) f (x1 ) 0.2150 (1.4844 1.9) = 1.4844 0.2140 1.6206 = 1.4844 0.0632 = 1.4211

Para la iteracin 3 se tiene que: o x2 = 1.4844 f (x2 ) = 1.6206 x3 = 1.4211 f (x3 ) = 0.0301

78
140

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

120

100

80

60

40

20 Raz=2.3223 0 x4 x3 3 x2 3.5 x1 4 x0 4.5 5

.0

20 0

0.5

1.5

2.5

Figura 3.9: Ejemplo de aplicacin del mtodo de la secante.En este mtodo se o e e parte de dos soluciones iniciales x0 y x1 y se traza la recta secante en f (x0 ) y f (x1 ) (l nea roja continua) con la cual se determina el valor de la nueva ra x2 . z Este procedimiento se repite hasta que se encuentra una ra con un nivel de z tolerancia predeterminado. y por lo tanto la nueva ra es igual a: z x4 = x3 f (x3 )(x3 x2 ) f (x3 ) f (x2 ) 0.0301 (1.4211 1.4844) = 1.4211 0.0301 1.6206 = 1.4211 0.0103683 = 1.4107317

El anterior procdimiento se repite hasta que el error relativo de la ra aproxiz mada sea menor que la tolerancia especicada inicialmente.

3.4. METODOS CERRADOS 3.4.2.2. Determinaci n de races por medio del mtodo de la Secante o e

79

El mtodo de la secante se encuentra implementado en la funcin secante.m, e o la cual tiene la siguiente estructura:
"secante.m" 79a Secante: Declaracin de la funcin 79b o o Secante: Inicializacin de las variables 80a o Secante: Ciclo principal 80b

3.4.2.2.1. Declaraci n de la Funci n Las variables de entrada a la funcin o o o que implementa el mtodo de la secante son: e x0, x1: valores iniciales especicados para la b squeda de la ra u z f unc: funcin a evaluar con el mtodo de la secante o e errmin: error relativo m nimo usado para chequear la convergencia a una ra dada z itmax: N mero mximo de iteraciones u a Las variables de salida de esta funcin son las siguientes: o x: vector que contiene los valores de la ra determinada en cada iteracin z o f : vector que contiene los valores de la funcin f unc evaluada en cada o uno de los valores contenidos en el vector x er: vector que contiene el error relativo obtenido en cada iteracin del o procedimiento de b squeda de la ra u z.
Secante: Declaracin de la funcin 79b o o function [x,f,err,iter]=secante(x0,x1,func,errmin,maxit)
Fragmento referenciado en 79a.

3.4.2.2.2. Inicializaci n de variables Para ejecutar el mtodo de la secante o e es necesario inicializar las siguientes variables: err: valor de error relativo inicial. Este valor se inicializa en 100 %. xold0, xold1:

80

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I iter: contador de las iteraciones. Este valor se inicializa en 0. x: vector en donde se almacenan los valores de las ra ces obtenidos en cada iteracin. El primer valor de este vector se hace igual a x0. o f : vector en donde se almacenan los valores de la funcin evaluada en o cada una de las ra obtenidas en cada iteracin. El primer valor de este ces o vector se inicializa en el valor de la funcin evaluada en x0. o

Secante: Inicializacin de las variables 80a o iter=1; er=100; xold0=x0; xold1=x1; x(1)=x1; f(1)=feval(func,x1); err(1)=er;
Fragmento referenciado en 79a.

3.4.2.2.3. Ciclo principal El ciclo principal del mtodo de la secante est ime a plementado usando un ciclo while controlado por el n mero de iteraciones iter u y el err. Este ciclo presenta la siguiente estructura:
Secante: Ciclo principal 80b while (err>errmin) & (iter<maxit); Ciclo Principal Secante: Evaluacin funcin dos puntos iniciales 81a o o Ciclo Principal Secante: Actualizacin solucin 81b o o Ciclo Principal Secante: Clculo error e incremento iteraciones 81c a Ciclo Principal Secante: Almacenamiento de resultados 81d end;
Fragmento referenciado en 79a.

En este fragmento de cdigo se eval a la funcin en los dos puntos iniciales, ya o u o que estos se requieren para calcular la derivada de forma numrica. e

3.4.2.2.3.1. Evaluaci n funci n en puntos iniciales o o

3.4. METODOS CERRADOS


Ciclo Principal Secante: Evaluacin funcin dos puntos iniciales 81a o o fii=feval(func,xold1); fi=feval(func,xold0);
Fragmento referenciado en 80b.

81

3.4.2.2.3.2. Actualizaci n de la soluci n En este fragmento se calcula o o la derivada de la funcin usando los dos puntos y se actualiza el valor de la ra o z inicial usando la ecuacin 3.29: o
Ciclo Principal Secante: Actualizacin solucin 81b o o xr=xold1-(fii*(xold0-xold1)/(fi-fii));
Fragmento referenciado en 80b.

3.4.2.2.3.3. Clculo de error e incremento de iteraciones Una vez se a ha actualizado la ra se calcula el error relativo de esta aproximacin a la ra z o z y se incrementa el n mero de iteraciones. Estas son las variables que controlan u el ciclo while.
Ciclo Principal Secante: Clculo error e incremento iteraciones 81c a er=abs((xr-xold1)/xr)*100; iter=iter+1;
Fragmento referenciado en 80b.

3.4.2.2.3.4. Almacenamiento de los Resultados El valor de la ra obz tenido hasta el momento xr se almacena en el vector x, as como el valor de la funcin en este punto en el vector f y el error relativo obtenido en esta iterao cin en el vector er. Los valores de los dos puntos necesarios para calcular la o derivada se actualizan.
Ciclo Principal Secante: Almacenamiento de resultados 81d x(iter)=xr; f(iter)=feval(func,x(iter)); err(iter)=er; xold0=xold1; xold1=xr;
Fragmento referenciado en 80b.

82 Ejemplo MATLAB
R

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I (Solucin de Manning con el Mtodo de la Secante) o e

La solucin de la ecuacin de Manning usando el mtodo de la Secante o o e se puede implementar en MATLAB R de la siguiente forma: >> format long >> [x,f,err,iter]=secante(6,5,@prueba_manning,1e-10,100); >> iter iter = 6 >> [x(iter) f(iter) err(iter)] ans = 6.14494463443476 -0.00000000006935 0.00000000000471

Los resultados obtenidos indican que el procedimiento converge en 6 iteraciones y que el valor de la profundidad del canal es de aproximadamente 6.14 m.

3.4.3.
3.4.3.1.

Mtodo de la Secante Modicado e


Fundamentos Conceptuales

El mtodo de la secante se aplica cuando las funciones estudiadas no tienen e derivadas o sus derivadas son dif ciles de calcular. La solucin a este problema o consiste en aproximar la derivada de forma numrica empleando dos puntos. e Sin embargo esto tambin puede ser un problema, ya que denir dos puntos e no siempre resulta fcil y en la mayor de las situaciones implica elaborar la a a grca de la funcin. a o El mtodo de la secante se puede modicar de tal manera que solo sea necee sario especicar un punto xn1 deniendo el otro punto como: xn1 = xn + xn donde 0 y con lo cual la ecuacin 3.28 se modica para obtener: o xn+1 = xn f (xn )(xn ) f (xn ) f (xn + xn ) (3.33) (3.32)

En este mtodo de la secante modicada la derivada se vuelve a aproximar e de forma numrica, pero ahora el analista selecciona un punto xn y el otro se e

3.4. METODOS CERRADOS toma a una distancia de este.

83

Ejemplo (Dimensin caracter o stica de un lago) Para aplicar el mtodo de la secante modicada para la solucin de este problee o ma es necesario especicar: x0 solucin inicial 1, que en este caso es 2.0 y = 1.0 106 que es la o distancia a la cual se toma el otro punto. Tolerancia m nima aceptable, 0.01 % Para la iteracin 1 se tiene: o x0 = 2.0 f (x0 ) = 2.0106 x1 = x0 + x0 = 2.0 + 2 106 = 2.000002 f (x1 ) = 2.010608 y por lo tanto la ra es igual a: z x2 = x1 + f (x1 )(x1 x0 ) f (x1 ) f (x0 ) 2.010608 1.0 106 = 2.00002 8.0 106 = 2.00002 0.251326 = 1.748676

(3.34)

Para la iteracin 2 se tiene: o x1 = 1.748676 f (x1 ) = 1.0684678 x2 = 1.7486777 + 1.0 106 f (x2 ) = 1.06847719 y por lo tanto la nueva aproximacin a la ra es igual a: o z x3 = x2 f (x2 (x2 x1 )) f (x2 ) f (x1 ) 1.0684678 1.0 106 = 1.748676 5.9 107 = 1.748676 0.1797103 = 1.5689657

Para la iteracin 3 se tiene: o x3 = 1.5689657 f (x3 ) = 0.47225650570889 x4 = 1.5689657 + 1.0 106 f (x4 ) = 0.47225650570889

84

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

y por lo tanto la nueva aproximacin a la ra es igual a: o z x4 = x3 f (x3 (x3 x2 )) f (x3 ) f (x2 ) 0.47225 1.0 106 ) = 1.5689657 3.13 106 = 1.5689657 0.1504982 = 1.4184587

Este procedimiento se repite hasta que el error relativo de la ra se hace menor z que la tolerancia especicada inicialmente.

3.4.3.2.

Determinaci n de races con el mtodo de la Secante modicado o e

La estructura de la funcin que implementa el mtodo de la Secante modio e cado es la siguiente:


"secante_mod.m" 84 Secante modicado: Declaracin de la funcin 85a o o Secante modicado: Inicializacin de las variables 85b o Secante modicado: Ciclo principal 86a

3.4.3.2.1. Declaraci n de la funci n o o cin son las siguientes o

Las variables de entrada de esta fun-

x0: solucin inicial de la ra especicada por el usuario. Se recomienda o z que este sea determinado por medio del mtodo grco. e a f unc: Funcin que implementa la ecuacin no-lineal que se va a analizar. o o errmin: valor del error m nimo que se esta dispuesto a tolerar en la solucin obtenida. Este valor se encuentra relacionado con las cifras signicao tivas que va a tener la solucin. o maxit: N mero mximo de iteraciones empleadas en el procedimiento de u a b squeda. u sigma: Valor de incremento con el cual se determina el segundo punto para calcular la derivada en un punto determinado. y las correspondientes variables de salida: x: Vector que almacena los valores de la ra aproximados en cada iteraz cin. o

3.4. METODOS CERRADOS

85

f f : Vector que almacena los valores de la funcin para las raices aproxio madas en cada iteracin. o err: Vector que almacena los valores del error relativo de cada una de las raices aproximadas. iter: N mero de iteraciones empleado para alcanzar la solucin deseada. u o
Secante modicado: Declaracin de la funcin 85a o o function [x,ff,err,iter]=secante_mod(x0,func,errmin,maxit,sigma)
Fragmento referenciado en 84.

3.4.3.2.2. Inicializaci n de variables Al igual que en todos los procedio mientos vistos anteriormente, antes de proceder a obtener la solucin de la o ecuacin no-lineal de inters se hace necesario inicializar las diferentes variao e bles involucradas, y denir otras variables: iter, que corresponde al contador de iteraciones del proceso, se iniciliza en 1 La variables er se dene para almacenar el valor de error de la solucin o actual y se inicializa en 100 % xold se emplea con el n de almacenar el valor de la solucin en la iteo racin o paso anterior. Este valor se inicializa con el valor inicial de la o solucin x0 o x(1), f f (1), err(1) son los vectores en donde se almacenan los valores de la solucin, de la funcin no lineal de inters y del error de la solucin o o e o obtenida, respectivamente. Estos vectores se inicializan con la solucin o inicial x0, el valor de la funcin f unc en ese punto y el error inicial del o 100 %.
Secante modicado: Inicializacin de las variables 85b o iter=1; er=100; xold=x0; x(1)=x0; ff(1)=feval(func,x(1)); err(1)=er;
Fragmento referenciado en 84.

86

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I

3.4.3.2.3. Ciclo principal El procedimiento de b squeda de la ra se enu z cuentra implementado mediante un ciclo while que se encuentra controlado por el n mero de iteraciones y el error relativo de la ra aproximada, y cuya estrucu z tura se presenta a continuacin: o
Secante modicado: Ciclo principal 86a while ((err>errmin) & (iter<maxit)); Ciclo Principal Secante Modicado: clculo factor de correccin 86b a o Ciclo Principal Secante Modicado: Actualizacin solucin 86c o o Ciclo Principal Secante Modicado: Clculo error e incremento iteraciones 87a a Ciclo Principal Secante Modicado: Almacenamiento de resultados 87b end;
Fragmento referenciado en 84.

3.4.3.2.3.1. Clculo factor de correcci n El factor de correccin corresa o o ponde al valor que se le debe sumar al valor inicial de la ra especicado por el z usuario y el cual se encuentra denido por la expresin: o cor = f (xn )(xn ) f (xn ) f (xn + xn ) (3.35)

lo cual se encuentra codicado de la siguiente forma:


Ciclo Principal Secante Modicado: clculo factor de correccin 86b a o cor=sigma*xold*feval(func,xold)... /(feval(func,(1+sigma)*xold)-feval(func,xold));
Fragmento referenciado en 86a.

3.4.3.2.3.2. Actualizaci n soluci n Una vez se ha calculado el factor de o o correccin se procede a actualizar la solucin usando la expresin dada por la o o o ecuacin 3.33: o
Ciclo Principal Secante Modicado: Actualizacin solucin 86c o o xr=xold-cor;
Fragmento referenciado en 86a.

3.4.3.2.3.3. Clculo error e incremento de iteraciones Con la nueva a ra calculada se determina el error relativo de la misma y se incrementa el z n mero de iteraciones: u

3.4. METODOS CERRADOS


Ciclo Principal Secante Modicado: Clculo error e incremento iteraciones 87a a er=abs((xr-xold)/xr)*100; iter=iter+1;
Fragmento referenciado en 86a.

87

3.4.3.2.3.4. Almacenamiento de resultados Una vez se ha calculado el nuevo valor de la ra as como su error relativo asociado, se procede a alz macenar estos resultados en los vectores x y err respectivamente. Tambin se e determina el valor de la funcin para la ra aproximada y se almacena en el o z vector f f .
Ciclo Principal Secante Modicado: Almacenamiento de resultados 87b x(iter)=xr; ff(iter)=feval(func,xr); err(iter)=er; xold=xr;
Fragmento referenciado en 86a.

88 Ejemplo MATLAB
R

CAPTULO 3. SOLUCION ECUACIONES NO LINEALES I (Solucin de Manning con Secante modicado) o

La solucin de la ecuacin de Manning usando el mtodo de la Secante o o e Modicado se puede implementar de la siguiente forma: >> format long; >> [x,ff,err,iter]=secante_mod(5,@prueba_manning,1e-10,100,1e-6); >> iter iter = 6 >> [x(iter) f(iter) err(iter)] ans = 6.14494463443476 -0.00000000006935 0.00000000000001

Los resultados en MATLAB R indican que el procedimiento converge en 6 iteraciones y que el valor de la profundidad del canal es de aproximadamente 6.14 m.

Captulo 4 Polinomios
4.1.
4.1.1.

Evaluaci n de Polinomios o
Fundamentos Conceptuales

Debido a que la determinacin de las raices de los polinomios generalmente o se realiza usando procedimientos iterativos, estos requieren la evaluacin reo petida de dichas funciones para diferentes valores de las ra ces que se estan probando; y por lo tanto este procedimiento debe realizarse de la forma ms a eciente posible (computacionalmente hablando). Por ejemplo, la evaluacin o directa para un polinomio de grado n se desprende de la expresin algebraica o del mismo, la cual est dada por: a
n n n1 2

Pn (x) = an x + an1 x

+ a2 x + a1 x + a0 =
k=0

ak x k

(4.1)

donde los ai corresponden a los coecientes del polinomio. Computacionalmente hablando, la ecuacin 4.1 se puede implementar mediante un ciclo for ya que o se conoce el grado n junto con los coecientes. Sin embargo esta aproximacin o requiere n sumas y n(n + 1)/2 multiplicaciones, de tal forma que ser muy ina eciente para polinomios de grado alto. Con el n de evitar este problema, la ecuacin 4.1 se puede reescribir usando una sencilla manipulacin algebraica. o o Para mostrar este procedimiento se va a partir de un polinomio de 4 grado, expresado por: P4 (x) = a0 + a1 x + a2 x2 + a3 x3 + a4 x4 Este polinomio se puede reescribir de forma anidada como: P4 (x) = a0 + x(a1 + a2 x(a3 + a4 x)) 89 (4.3) (4.2)

90 y el cual se puede expresar de la siguiente forma: P4 (x) = a4 P3 (x) = a3 + xP4 P2 (x) = a2 + xP3 P1 (x) = a1 + xP2 P0 (x) = a0 + xP1

CAPTULO 4. POLINOMIOS I

(4.4)

El procedimiento anterior se puede generalizar mediante una expresin reo cursiva dada por: Pn (x) = an Pi (x) = ai + xPi+1 (x), (4.5)

i = 1, . . . , n 1

y el cual es mucho ms eciente que realizar la evaluacin del polinomio a o directamente empleando la ecuacin 4.1, ya que involucra n sumas y n multio plicaciones. En algunas oportunidades adems de evaluar el valor del polinomio, se requiere a evaluar tanto la primera como segunda derivada. Para esto se deriva la ecuacin o 4.5 para obtener la primera derivada: Pn (x) = 0 Pi (x) = Pi+1 (x) + xPi+1 (x) as como la segunda derivada: Pn (x) = 0 Pi (x) = 2Pi+1 (x) + xPi+1 (x) las cuales nuevamente son funciones recursivas. (4.7) (4.6)

4.1.2.

Evaluaci n de polinomios con MATLAB o


R

La estructura de la funcin de MATLAB o to es la siguiente:


"evaluacion_polinomio.m" 90

que implementa este procedimien-

EvaluacionPolinomio: Declaracin de Funcin 91a o o EvaluacionPolinomio: Inicializacin de Variables 91b o EvaluacionPolinomio: Ciclo principal 92

4.1. EVALUACION DE POLINOMIOS La funcin tiene dos variables de entrada: o

91

a: vector de longitud n 1 que contiene los coecientes ai del Polinomio. Es de aclarar que la ecuacin 4.1 emplea coecientes cuyos sub o ndices comienzan en 0, valor que se encuentra almacenado en la posicin 1. o x: valor de x en el cual se quiere evaluar el polinomio. Las variables de salida son las siguientes: p: valor del polinomio denido por los coecientes a en el punto x pd: valor de la primera derivada del polinomio en el punto x sd: valor de la segunda derivada del polinomio en el punto x
EvaluacionPolinomio: Declaracin de Funcin 91a o o function [p,pd,sd]=evaluacion_polinomio(a,x)
Fragmento referenciado en 90.

Para realizar el procedimiento recursivo descrito por la ecuacin 4.5 es necesao rio conocer el n mero de elementos en el vector a, el cual dene el grado del u polinomio. Para esto se emplea la funcin intr o nseca length y el resultado se almacena en la variable n. As mismo se inicializan en 0 las variables que continen la primera derivada pd y la segunda derivada sd.
EvaluacionPolinomio: Inicializacin de Variables 91b o n=length(a); p=a(n); pd=0.0; sd=0;
Fragmento referenciado en 90.

Para realizar el clculo del polinomio p en x y de sus derivadas pd y sd se emplea a un ciclo for ya que se conoce el grado del polinomio n. Para calcular el valor del polinomio en x se emplea la ecuacin 4.5 y para las derivadas se utilizan las o ecuaciones 4.6 y 4.7. En este caso particular el clculo se hace en el siguiente a orden: 1. Segunda derivada

92 2. Primera derivada 3. Valor del polinomio

CAPTULO 4. POLINOMIOS I

con el n de calcular los valores de forma correcta:


EvaluacionPolinomio: Ciclo principal 92 for i=n-1:-1:1; sd=2.0*pd+sd*x; pd=p+pd*x; p=a(i)+x*p; end;
Fragmento referenciado en 90.

4.1. EVALUACION DE POLINOMIOS Ejemplo (Evaluacin de un Polinomio) o Evaluar el polinomio P3 (x) = 3x3 5x2 + 3x 5

93

en el punto x = 2 junto con la primera y segunda derivada. El valor del polinomio en x = 2 es: P3 (2) = 3(2)3 5(2)2 +3(2)5 = 3854+325 = 2420+65 = 5 Para evaluar este polinomio de forma ms eciente se emplean la metodoa log explicada en las ecuaciones 4.5, de tal forma que se tiene: a n 3 2 1 0 Expresin Pn o P 3 = a3 P2 (x) = a2 + xP3 (x) P1 (x) = a1 + xP2 (x) P0 (x) = a0 + xP1 (x) Valor Pn 3 5 + (2) (3) 3 + (2) (1) 5 + (2) (5) Acumulado 3 1 5 5

y por lo tanto el valor de P3 (2) es igual a 5. La primera derivada del polinomio est dada por: a P3 (x) = 9x2 10x + 3 P3 (2) = 9 (2)2 10 (2) + 3 = 9 4 10 2 + 3 = 36 20 + 3 = 19 n 3 2 1 0 Expresin Pn o (1) P3 = 0 (1) (1) P2 (x) = P3 (x) + xP3 (x) (1) (1) P1 (x) = P2 (x) + xP2 (x) (1) (1) P0 (x) = P1 (x) + xP1 (x)
(1) (1) (1)

Valor Pn 0 3 + (2) (0) 1 + (2) (3) 5 + (2) (7)

(1)

Acumulado 0 3 7 19

y por lo tanto el valor de la primera derivada de P3 (x) evaluada en 2 es igual a 19.

94 Ejemplo (Evaluacin de un Polinomio (Cont.)) o

CAPTULO 4. POLINOMIOS I

La segunda derivada de P3 (x) est dada por: a P3 (x) = 18x 10 y al evaluarla en x = 2 se tiene P3 (2) = 18 (2) 10 = 26. Para evaluar la segunda derivada del polinomio se emplean las expresiones dadas por la ecuacin 4.7: o n 3 2 1 0 Expresin Pn (x) o (2) P3 (x) = 0 (2) (1) (2) P2 (x) = 2P3 + xP3 (x) (2) (1) (2) P1 (x) = 2P2 + xP2 (x) (2) (1) (2) P0 (x) = 2P1 + xP1 (x)
(2) (2) (2)

Valor Pn (x) 0 2 (0) + (2) 0 2 (3) + (2) 0 2 (7) + (2) 6

(2)

Acumulado 0 0 6 26

y el valor de la segunda derivada del polinomio evaluada en x = 2 es igual a 26

4.2. DEFLACION POLINOMIAL O DIVISION SINTETICA Ejemplo MATLAB


R

95

(Evaluacin de un Polinomio) o

Evaluar el polinomio P3 (x) = 3x3 5x2 + 3x 5 en el punto x = 2 junto con la primera y segunda derivada. Las instrucciones en MATLAB son las siguientes:
R

que permitir realizar este procedimiento an

>> a=[-5 3 -5 3]; >> x=2; >> [p,pd,sd]=evaluacionpolinomio(a,x) p = 5 pd = 19 sd = 26

4.2.
4.2.1.

Deaci n Polinomial o Divisi n Sinttica o o e


Fundamentos Conceptuales

En el algebra del bachillerato se aprendi un procedimiento para realizar dio visin entre polinomios conocido como la divisin sinttica. En el caso que una o o e ra del polinomio xr se haya determinado esta se puede extraer usando este z procedimiento para obtener un polinomio de grado n 1. Este procedimiento se puede repetir hasta que todas las raices se hayan determinado. La divisin sinttica o deacin polinomial como tambin se le conoce se deo e o e ne como el procedimiento de descomponer un polinomio de la forma: Pn (x) = (x xr )Pn1 (x) y en donde Pn1 (x) est dado por: a Pn1 (x) = bn1 xn1 + bn2 xn2 + + b1 x + b0 (4.9) (4.8)

Con el n de presentar el procedimiento con miras a su implementacin o se va a analizar un ejemplo aplicado a un polinomio de cuarto grado, el cual

96 est dado por: a

CAPTULO 4. POLINOMIOS I

P4 (x) = a4 x4 + a3 x3 + a2 x2 + a1 x + a0

(4.10)

y del cual se ha determinado una ra xr . Esta ra puede factorizarse usando la z z ecuacin ecuacin 4.8 y al realizar el producto entre el monomio y el polinomio o o residual se obtiene: P4 = (x xr )(b3 x3 + b2 x2 + b1 x + b0 ) = b3 x4 + (b2 b3 xr )x3 + (b1 b2 xr )x2 + (b0 b1 xr )x b0 xr (4.11)

en donde los coecientes bi denen el polinomio residual. Para determinar los valores de los bi se igualan los coecientes de 4.10 con 4.11: a4 a3 a2 a1 a0 = b3 = b2 b3 x r = b1 b2 x r = b0 b1 x r = b0 xr

(4.12)

y se despejan los bi con lo que se obtiene: b3 b2 b1 b0 = a4 = a3 + b 3 x r = a2 + b 2 x r = a1 + b 1 x r

(4.13)

Este resultado se puede generalizar mediante una relacin recursiva dada por: o bn1 = an bi = ai+1 + bi+1 xr , (4.14)

i = 1, 2, . . . , (n 2)

la cual fcilmente se puede implementar en un lenguaje de programacin. a o

4.2.2.

Divisi n Sinttica de polinomios con MATLAB o e


R

La estructura de una funcin en MATLAB o es la siguiente:


"deflacion_polinomial.m" 96

que ejecuta este procedimiento

DeacionPolinomial: Declaracin de la funcin 97a o o DeacionPolinomial: Inicializacin de variables 97b o DeacionPolinomial: Ciclo Principal 98

4.2. DEFLACION POLINOMIAL O DIVISION SINTETICA

97

Es preciso recordar que esta funcin realiza la divisin entre un polinomio Pn (x) o o y un monomio de la forma (x xr ) donde xr corresponder a una constante. a De esta forma, las variables de entrada a esta funcin son las siguientes: o a: vector de tama o n 1 con los valores de los coecientes del Polinon mio al cual se le va aplicar el procedimiento de la divisin sinttica. Los o e coecientes van desde el trmino independiente hasta el coeciente de la e potencia n 1. xr: valor constante xr que dene el monomio por el cual se va a dividir el polinomio. La variable de salida b corresponde a un vector con los coecientes del polinomio residual que resulta de la divisin sinttica. o e
DeacionPolinomial: Declaracin de la funcin 97a o o function [b]=deflacion_polinomial(a,xr)
Fragmento referenciado en 96.

4.2.2.1.

Inicializaci n de variables o

Para continuar con el procedimiento de deacin polinomial se hace necesao rio denir las siguientes variables: n: Grado del polinomio. b: vector de tama o n en donde van a almacenar los coecientes del polin nomio resultante de la divisin. Este vector se inicializa con 0. o
DeacionPolinomial: Inicializacin de variables 97b o n=length(a)-1; b=zeros(n,1); b(n)=a(n+1);
Fragmento referenciado en 96.

4.2.2.2.

Ciclo principal

El ciclo principal del procedimiento de deacin polinomial permite calcular o los coecientes del polinomio resultante, para lo cual se emplean las expresiones dadas por las ecuaciones 4.13 y 4.14. Para esto se emplea un ciclo for que va calculando los coecientes desde las potencias mayores a las menores:

98
DeacionPolinomial: Ciclo Principal 98 for i=n-1:-1:1; b(i)=a(i+1)+b(i+1)*xr; end;
Fragmento referenciado en 96.

CAPTULO 4. POLINOMIOS I

4.2. DEFLACION POLINOMIAL O DIVISION SINTETICA Ejemplo (Divisin Sinttica) o e Realice la divisin sinttica del polinomio: o e P4 (x) = x4 + 6x3 + 7x2 6x 8 entre el polinomio (x 1). Los coecientes de P4 (x) son: Coef a4 a3 a2 a1 a0 Valor 1 6 7 -6 -8

99

y los coecientes del polinomio reducido se obtienen al aplicar las expresiones consignadas en la ecuacin 4.14: o Coeciente b3 b2 b1 b0 Expresi n o b 3 = a4 b 2 = a3 + b 3 x b 1 = a2 + b 2 x b 0 = a1 + b 1 x Valor 1 6 + (1) (1) = 7 7 + (7) (1) = 14 6 + (14) (1) = 8

de tal forma que el polinomio resultante del procedimiento de divisin sinttio e ca es: P3 (x) = x3 + 7x2 + 14x + 8

100 Ejemplo MATLAB


R

CAPTULO 4. POLINOMIOS I (Divisin Sinttica) o e

Realice la divisin del polinomio: o P4 (x) = x4 + 6x3 + 7x2 6x 8 = 0 entre el polinomio (x 1). Para realizar este procedimiento tecleamos los siguientes comandos: >>a=[-8 -6 7 6 1]; >>xr1=1; >>[b1]=deflacion_polinomial(a,xr1); >>b1 8 14 7 1 Recuerde que los coecientes se obtienen en orden de menor a mayor y por lo tanto el polinomio resultante es: P3 (x) = x3 + 7x2 + 14x + 8 Realice la conprobacin mediante operaciones simblicas en MATLAB R . o o

4.3.
4.3.1.

Mtodo de Muller e
Fundamentos Conceptuales

El mtodo de Muller es una generalizacin del mtodo de la secante ya que e o e no requiere de la derivada de la funcin en estudio, y para el cual es necesario o especicar 3 puntos iniciales x0 , x1 , x2 . En lugar de denir una l nea recta, se dene una parbola (ver Figura 4.1) y se utiliza la frmula para la ecuacin a o o cuadrtica para obtener una aproximacin a la ra Este mtodo presenta una a o z. e convergencia mucho ms rpida que el mtodo de la biseccin y menor que el a a e o mtodo de Newton. e Para entender este mtodo es necesario denir la ecuacin de la parbola de la e o a siguiente forma: f (x) = a(x x2 )2 + b(x x2 ) + c (4.15) donde a, b, c son los valores de los coecientes. Se selecciona el valor de x2 de tal forma que sea el valor central. Los 3 puntos requeridos para denir la parbola a son [x0 , f (x0 )], [x1 , f (x1 )] y [x2 , f (x2 )], de tal forma que se obtiene:

4.3. METODO DE MULLER

101

Figura 4.1: Interpretacin grca del mtodo de Muller o a e

f (x0 ) = a(x0 x2 )2 + b(x0 x2 ) + c f (x1 ) = a(x1 x2 )2 + b(x1 x2 ) + c f (x2 ) = a(x2 x2 )2 + b(x2 x2 ) + c

(4.16)

De la ultima ecuacin se obtiene la conclusin que f (x2 ) = c, y con este este o o ecuacin se puede simplicar para obtener: o f (x0 ) f (x2 ) = a(x0 x2 )2 + b(x0 x2 ) f (x1 ) f (x2 ) = a(x1 x2 )2 + b(x1 x2 ) (4.17)

el cual corresponde a un sistema lineal de ecuaciones con dos incgnitas. La o solucin de este se puede simplicar si se denen: o h0 = x1 x0 h1 = x2 x1 f (x2 ) f (x1 ) f (x1 ) f (x0 ) 1 = 0 = x1 x0 x2 x1 con lo cual el sistema denido en 4.17 se puede expresar como: h0 0 + h1 1 = a(h0 + h1 )2 + b(h0 + h1 ) h1 1 = ah2 bh1 1 (4.19)

(4.18)

102

CAPTULO 4. POLINOMIOS I

del cual se pueden obtener los coecientes de la parbola por sustitucin: a o a= 1 0 h1 h0 b = ah1 + 1 c = f (x2 )

(4.20)

Con estos coecientes se dene la parbola espec a ca que pasa por los tres puntos (ecuacin 4.15) y la ra xr se determina usando la conocida solucin de o z o la ecuacin cuadrtica: o a a(xr x2 )2 + b(xr x2 ) + c = 0 (4.21)

en donde las ra ces obtenidas corresponden a xr x2 o en otras palabras, estas corresponden a la distancia de separacin o correccin entre la ra aproximada o o z x2 y la ra real xr , de tal forma que se tiene:x = xr x2 y por lo tanto: z xr = x2 + x (4.22)

Una de las grandes ventajas de este mtodo corresponde al hecho que se pueden e determinar ra ces tanto reales como complejas.

4.3.2.

Determinaci n de las races de polinomios usando el o mtodo de Muller e

El mtodo de Muller se encuentra implementado en la funcin muller.m cuya e o estructura es la siguiente:


"muller.m" 102 Muller: Declaracin de la Funcin 103 o o Muller: Inicializacin de variables 104a o Muller: Ciclo Principal 104b

4.3.2.1.

Declaraci n de la funci n o o

Las variables de entrada de esta funcin son las siguientes: o xrr: valor inicial de la ra z f uncion: funcin a evaluar y que se encuentra denida en un archivo funo cion.m h: incremento empleado para la denicin de los puntos cercanos a xrr o

4.3. METODO DE MULLER maxiter: N mero mximo de iteraciones u a

103

errmin: valor de error relativo m nimo usado para controlar la convergencia del procedimiento. Las variables de salida de esta funcin son las siguientes: o xr1: valor de la ra determinada por el mtodo de Muller z e f f : vector que contiene los valores de la funcin o er: vector que almacena los valores del error relativo obtenido para cada iteracin o iter: n mero de iteraciones empleado por el procedimiento para obtener u la ra z.
Muller: Declaracin de la Funcin 103 o o function [xr1,ff,er,iter]=muller(xrr,funcion,h,maxiter,err_min)
Fragmento referenciado en 102.

4.3.2.2.

Inicializaci n de variables o

Para este procedimiento es necesario inicializar las siguientes variables; x0, x1, x2: valores iniciales especicados para denir la parbola con la a que trabaja este mtodo. Para denir estos 3 valores en este caso se asume e que x1 va a corresponder al punto central y que tanto x0 como x2 van a una distancia h de este punto. err: variable para almacenar el valor del error relativo. Se inicializa en 100 %. iter: Contador para las iteraciones. Se inicializa en 1. xr: valor de la ra determinada hasta el momento. Se inicializa con el z valor de x2 xold: valor de la ra en la iteracin inmediatamente anterior empleado z o para la determinacin del error relativo. o Se inicializan los vectores f f (), er() y xr1()

104
Muller: Inicializacin de variables 104a o x2=xrr*(1+h); x1=xrr; x0=xrr*(1-h); err=100; iter=1; xr=x2; xold=x1; ff(iter,1)=feval(funcion,xr); er(iter,1)=err; xr1(iter,1)=xr;
Fragmento referenciado en 102.

CAPTULO 4. POLINOMIOS I

4.3.2.3. Ciclo principal

Este fragmento implementa la parte ms importante de este mtodo, ya que a e es donde se determinan las ra ces. La estructura de este procedimiento es la siguiente:

Muller: Ciclo Principal 104b while (iter<=maxiter & err>=err_min); Ciclo Principal Muller: Clculo de h y 105a a Ciclo Principal Muller: Clculo coecientes parbola 105b a a Ciclo Principal Muller: Clculo del indicador 105c a Ciclo Principal Muller: Denicin de la correccin 106a o o Ciclo Principal Muller: Actualizacin de la ra 106b o z Ciclo Principal Muller: Clculo del error e incremento de iteraciones 106c a Ciclo Principal Muller: Actualizacin puntos 107 o end;
Fragmento referenciado en 102.

4.3.2.3.1. Clculo de h y En este fragmento se calculan las diferencias h0, a h1, delta0 y delta1 empleando las ecuaciones 4.18 y 4.19:

4.3. METODO DE MULLER


Ciclo Principal Muller: Clculo de h y 105a a xold=xr; h0=x1-x0; h1=x2-x1; delta0=(feval(funcion,x1)-feval(funcion,x0) )/h0; delta1=(feval(funcion,x2)-feval(funcion,x1) )/h1;
Fragmento referenciado en 104b.

105

4.3.2.3.2. Clculo coecientes parbola : Los coecientes a, b, c que dea a nen la parbola que pasa por los tres puntos x0, x1, x2 se determinan usando la a ecuacin 4.20: o

Ciclo Principal Muller: Clculo coecientes parbola 105b a a a=(delta1-delta0)/(h1+h0); b=a*h1+delta1; c=feval(funcion,x2);
Fragmento referenciado en 104b.

4.3.2.3.3. Clculo del Indicador : Con los valores de los coecientes a, b, c a calculdos, se dene una ecuacin cuadrtica que permite estimar 2 ra o a ces.

Ciclo Principal Muller: Clculo del indicador 105c a ind=sqrt(b^2-4*a*c);


Fragmento referenciado en 104b.

4.3.2.3.4. Denici n de la correcci n : Con el valor del discriminante cuadrtio o a co ind se puede determinar el incremento que se debe aplicar a la ra obtenida z hasta el momento. Ya que la solucin de la ecuacin cuadrtica permite obtener o o a 2 ra ces, se escoge aquella cuyo signo coincida con el signo del coeciente b. Esta eleccin hace que el denominador sea ms grande y por lo tanto la correccin o a o obtenida ser menor y la ra estimada estar ms cerca de la ra obtenida en a z a a z la iteracin anterior. o

106

CAPTULO 4. POLINOMIOS I

Ciclo Principal Muller: Denicin de la correccin 106a o o if(abs(b+ind)>abs(b-ind)); den=ind+b; else; den=ind-b; end;
Fragmento referenciado en 104b.

4.3.2.3.5. Actualizaci n de la raz : Se actualiza el valor de la ra con la o z correccin obtenida de la solucin de la ecuacin cuadrtica tal como lo expresa o o o a la ecuacin 4.22: o

Ciclo Principal Muller: Actualizacin de la ra 106b o z dxr=-2*c/den; xr=x2+dxr;

Fragmento referenciado en 104b.

4.3.2.3.6. Clculo del error e incremento de iteraciones : Se determina a el error relativo de la ra obtenida y se incrementa el n mero de iteraciones z u (Recuerde que estas variables son las que controlan el ciclo while).

Ciclo Principal Muller: Clculo del error e incremento de iteraciones 106c a err=abs((xr-xold)/xr)*100; iter=iter+1;
Fragmento referenciado en 104b.

4.3.2.3.7. Actualizaci n de puntos : Se actualizan los valores de x0, x1, x2, o junto el con valor de xold y se almacenan los resultados de la evaluacin de la o funcin en el vector f f , el error relativo obtenido hasta el momento en el vector o er y el valor de la ra en el vector xr1. z

4.3. METODO DE MULLER


Ciclo Principal Muller: Actualizacin puntos 107 o x0=x1; x1=x2; x2=xr; xold=xr; xr1(iter,1)=xr; ff(iter,1)=feval(funcion,xr); er(iter,1)=err;
Fragmento referenciado en 104b.

107

108 Ejemplo MATLAB


R

CAPTULO 4. POLINOMIOS I (Determinacin de ra con el mtodo de Muller) o ces e

Use el mtodo de Muller para obtener una ra del siguiente polinomio: e z f (x) = x3 3x2 + 1 Para usar la funcin muller.m es necesario denir en MATLAB R la funcin o o de inters como una funcin inline o mediante un archivo .m. En este caso e o se va a hacer de las dos formas. La primera es la ms sencilla y para hacerla a se teclea en la l nea de comandos para denir f 1 como una funcin inline o >> f1=inline(x.^3-3*x.^2+1) Para obtener la ra con el mtodo de Muller usamos la funcin muller.m z e o denida anterioremente, y especicamos la ra inicial xrr = 3, la funcin z o de inters f 1, el incremento con el que se calculan los otros puntos h = 0.5, e el n mero mximo de iteraciones maxiter = 100 y el error m u a nimo aceptable minerr = 1.0e 3: >> [xr1,ff,er,iter]=muller(3,f1,0.5,100,1e-3); con lo cual despus de 5 iteraciones se obtienen los siguientes resultados: e >> [xr1 ff er] ans = 4.5000 31.3750 2.9064 0.2097 2.8787 -0.0055 2.8794 0.0000 2.8794 0.0000

100.0000 54.8284 0.9649 0.0251 0.0001

La primer columna presenta el valor de la ra para cada iteracin, la segunda z o columna el valor de la funcin f 1 para cada una de las ra o ces presentadas en la primera columna y el error relativo para cada ra se presenta en la z columna 3.

4.4. METODO DE BAIRSTOW Ejemplo MATLAB


R

109

(Determinacin de ra con el mtodo de Muller) o ces e

En este caso se va a determinar la ra del polinomio empleado en el z ejemplo anterior, pero ahora especicando la funcin como un archivo m. o Para esto se abre el editor de MATLAT R tecleando edit en la ventana de comandos y copiando el siguiente cdigo: o
"funcion_prueba.m" 109 function [y]=funcion_prueba(x) y=x.^3-3*x.^2+1;

Para determinar la ra con el mtodo de Muller se teclean unos comandos z e muy similares a los usandos en el ejemplo anterior, pero la diferencia en este caso corresponde a la forma como se especica la funcin (anteponindole o e un signo @ al nombre del archivo en donde este implementada): >> [xr1,ff,er,iter]=muller(3,@funcion_prueba,0.5,100,1e-3); con lo cual se obtiene: >> [xr1 ff er] ans = 4.5000 31.3750 2.9064 0.2097 2.8787 -0.0055 2.8794 0.0000 2.8794 0.0000

100.0000 54.8284 0.9649 0.0251 0.0001

Como es evidente los resultados obtenidos usando una funcin contenida en o un archivo m son los mismos que en el caso de una funcin inline. o

4.4.
4.4.1.

Mtodo de Bairstow e
Fundamentos Conceptuales

La determinacin de las ra o ces complejas de un polinomio puede ser un problema complicado si se emplean los mtodos convencionales como el de e Newton. Un hecho interesante con respecto a los polinomios es que sus ra ces complejas aparecen en pares conjugados y por lo tanto resulta muy fcil dea terminarlas si se obtienen factores cuadrticos mediante divisin sinttica (ver a o e seccin 4.2). Para hacer esto se emplea el mismo procedimiento descrito para o

110 un monomio de tal manera que se tiene:

CAPTULO 4. POLINOMIOS I

Pn (x) = (x2 rx s)Pn2 (x) = (x2 rx s)(bn xn2 + bn1 xn3 + . . . + b2 ) + Residual donde el trmino Residual est dado por: e a Residual = b1 (x r) + b0

(4.23)

(4.24)

Para determinar los coecientes bi se tiene que igualar los coecientes de la ecuacin 4.23 con los coecientes ai del polinomio respectivo, con lo cual se o obtiene: b n = an bn1 = an1 + rbn (4.25) bi = ai + rbi+1 + sbi+2 para i = n 2, . . . , 0 El objetivo de introducir la divisin sinttica para un factor cuadrtico consiso e a te en determinar una ecuacin cuadrtica para la cual el trmino Residual = 0, o a e con lo cual se asegura que las ra ces obtenidas correspondan a ra ces del polinomio original. Para esto se debe cumplir que b1 = 0 y b0 = 0. Generalmente esto se puede obtener para una seleccin cuidadosa de los valores de r y s, de o tal forma que inicialmente los valores especicados no van a permitir obtener un residuo igual a 0; y por lo tanto se necesita un mtodo con el cual se puedan e modicar los valores de r y s de tal forma que permita la obtencin de las ra o ces respectivas. Es aqu donde aparece el mtodo de Bairstow . e El mtodo de Bairstow se fundamenta en realizar una expansin en series de e o Taylor de los coecientes b0 y b1 suponiendo que son funciones tanto de r como de s. Esto se expresa como: b0 r + r b1 b1 (r + r, s + s) = b1 + r + r b0 (r + r, s + s) = b1 + b0 s s b1 s s

(4.26)

en donde se han despreciado las derivadas de orden igual o mayor a 2. Esta ecuacin sirve para determinar es r y s que es lo que nos interesa en este o momento, para lo cual los trminos del lado izquierdo de la ecuacin se hacen e o iguales a 0 para obtener el siguiente sistema lineal de ecuaciones: b0 r + r b1 r + r b0 s = b0 s b1 s = b1 s

(4.27)

4.4. METODO DE BAIRSTOW

111

en donde los coecientes del sistema corresponden a las derivadas parciales de los coecientes del trmino residual, las cuales no se conocen. La gran contrie bucin de Bairstow fue mostrar que estas derivadas parciales se pueden obtener o usando el mismo procedimiento de divisin sinttica, de la siguiente forma: o e cn = bn cn1 = bn1 + rcn ci = bi + rci+1 + sci+2

(4.28) para i = n 2, . . . .1

donde los trminos c1 = b0 /s,c2 = b1 /r y c3 = b1 /s, de tal forma que la e ecuacin 4.27 se puede expresar: o c2 r + c3 s = b1 c1 r + c2 s = b2 (4.29)

y al resolver este sistema usando regla de cramer (o mtodo de determinantes) o e sustitucin, se pueden obtener los valores de r y s con los cuales se mejoran o los r y s especicados inicialmente. Una vez estos valores se han determinado el residuo de la divisin sinttica es igual a 0 y por lo tanto las ra o e ces se pueden obtener fcilmente del factor cuadrtico. Sin embargo en este caso no se emplea a a la famosa solucin de la ecuacin cuadrtica, ya que este se encuentra sujeta o o a a errores de redondeo. En su lugar se emplea la siguiente expresin para la o determinacin de las ra o ces: x= b 2c b2 + 4ac (4.30)

4.4.2.

Determinaci n de las races de un polinomio usando el o mtodo de Bairstow e

Para aplicar el mtodo de Bairstow en la determinacin de las raices de polie o nomios es necesario implementar dicho procedimiento en MATLAB R por medio de una funcin con la siguiente estructura: o
"bairstow.m" 111 Bairstow: Denicin de la funcin 112a o o Bairstow: Declaracin de variables 112b o Bairstow: Ciclo extraccin de raices de polinomio n >= 3 113a o Bairstow: Extraccin de raices de polinomio n <= 2 116c o

4.4.2.1.

Denici n de la funci n o o

Las variables de entrada en este caso son:

112

CAPTULO 4. POLINOMIOS I a: vector con los coecientes del polinomio de inters. Recuerde que los e valores se deben incluir desde las potencias menores a mayores. r y s: coecientes que denen el factor cuadrtico. a maxit: N mero mximo de iteraciones para la b squeda de las ra u a u ces. errmin: Error m nimo que se esta dispuesto a tolerar en la determinacin o de las ra ces.

As mismo las variables de salida de la funcin bairstow son: o xr: vector que almacena los valores de las ra ces para cada una de las iteraciones ejecutadas por la funcin. o f f : vector que almacena el valor del polinomio en las ra aproximadas. ces err: vector que almacena el valor del error relativo de las ra obtenidas ces para cada iteracin de la funcin. o o iter: N mero de iteraciones requeridas para obtener la solucin. u o
Bairstow: Denicin de la funcin 112a o o function [xr,ff,err,iter]=bairstow(a,r,s,maxit,errmin)
Fragmento referenciado en 111.

4.4.2.2. Declaraci n de Variables o En este fragmento de cdigo se inicializan algunas variables importantes o para este procedimiento como son iter o contador de iteraciones que se inicializa en 0, n que corresponde al grado del polinomio que se est analizando, a1 que a es un vector tempora en donde se almacenan los valores de los coecientes de los polinomios resultantes de la divisin sinttica, y xr que se inicializa como un o e vector vacin usando la notacin del parntesis rectangular []. o o e
Bairstow: Declaracin de variables 112b o iter=0; n=length(a)-1; a1=a; xr=[];
Fragmento referenciado en 111.

4.4. METODO DE BAIRSTOW 4.4.2.3. Ciclo Principal

113

El ciclo principal del mtodo de Bairstow se divide en dos grandes partes e que dependen del tipo de polinomio a resolver. Si este polinomio es de grado mayor a 3 es necesario realizar el procedimiento de divisin sinttica por factor o e cuadrtico. Si el polinomio obtenido es de grado 2 se determinan las raices y el a procedimiento se acaba. La estructura de este ciclo es la siguiente:
Bairstow: Ciclo extraccin de raices de polinomio n >= 3 113a o while(n>=3); Ciclo Principal Bairstow: Inicializacin del error 113b o while (er_s>errmin & er_r<errmin & iter<maxit); Ciclo Principal Bairstow: Realizar divisin sinttica 114a o e Ciclo Principal Bairstow: Modicar los valores de r y s 114b Ciclo Principal Bairstow: Calcular error e incrementar contador 115b end; Ciclo Principal Bairstow: Determinar raices 115c Ciclo Principal Bairstow: Extraccin coecientes Polinomio resultante 116a o Ciclo Principal Bairstow: Asignacin de raices obtenidas 116b o end;
Fragmento referenciado en 111.

4.4.2.3.1. Ciclo Principal Bairstow: Inicializaci n del error En este frago mento de cdigo se inicializa er s y er r que son las variables en donde se alo macenan los errores relativos de s y r respectivamente. Estas se inicializan en 100 %.
Ciclo Principal Bairstow: Inicializacin del error 113b o er_s=100; er_r=100;
Fragmento referenciado en 113a.

4.4.2.3.2. Ciclo Principal Bairstow: Realizar divisi n sinttica Con los vao e lores iniciales de r y s se realizar la divisin sinttica por factor cuadrtico usano e a do la funcin denominada deflacion2 , y se obtienen los coecientes del polio nomio resultante b y las derivada parciales de b con respecto a r y a s, las cuales se encuentran almacenadas en el vector c. Esta funcin se encuentra implemeno tada en la seccin 4.4.3 o

114

CAPTULO 4. POLINOMIOS I

Ciclo Principal Bairstow: Realizar divisin sinttica 114a o e [b,c]=deflacion2(a1,r,s);


Fragmento referenciado en 113a.

4.4.2.3.3. Ciclo Principal Bairstow: Modicar los valores de r y s Los valores de r y s se modican con el n de asegurar que el residuo de la divisin o sinttica sea muy cercano a 0.0. Esto se logra por medio de la solucin de un e o sistema lineal de ecuaciones de 2 2 (ecuacin 4.29) usando la regla de cramer. o La estructura de este procedimiento es la siguiente:

Ciclo Principal Bairstow: Modicar los valores de r y s 114b Modicar r y s: Clculo del determinante 114c a Modicar r y s: Actualizar r y s 115a
Fragmento referenciado en 113a.

4.4.2.3.3.1. Clculo del determinante Con el n de evitar problemas de a inestabilidad numrica se calcula el determinante de la matr de coecientes e z del sistema lineal de ecuaciones (ecuacin 4.29): o

Modicar r y s: Clculo del determinante 114c a det=c(2)*c(2)-c(3)*c(1);


Fragmento referenciado en 114b.

4.4.2.3.3.2. Actualizar r y s Los valores de r y s se actualizan dependiendo de si el determinante se puede considerar mayor a 0, con lo cual el sistema tiene solucin. En este caso particular debido a la sencillez del sistema o lineal a resolver, la solucin del mismo se obtiene directamente. En el caso que o el sistema no tenga solucin los valores de r y s se cambian y el procedimiento o continua.

4.4. METODO DE BAIRSTOW


Modicar r y s: Actualizar r y s 115a if(det>=1.0e-10) then dr=(-b(1)*c(2)+b(0)*c(3))/det; ds=(-b(0)*c(2)+b(1)*c(2))/det; r=r+dr; s=s+ds; else; r=r+1; s=s+1; endif
Fragmento referenciado en 114b.

115

4.4.2.3.4. Ciclo Principal Bairstow: error e iteraciones Con los valores de r y s calculados se determinar el error relativo y se incrementa el contador de las iteraciones del procedimiento:
Ciclo Principal Bairstow: Calcular error e incrementar contador 115b er_s=(abs(ds)/s)*100; er_r=(abs(dr)/r)*100; iter=iter+1;
Fragmento referenciado en 113a.

4.4.2.3.5. Ciclo Principal Bairstow: determinar races Ya con los valores de r y s que dene el trmino cuadrtico que permite obtener un residual de 0.0 e a en la divisin sinttica, se obtienen las raices de dicho factor cuadrtrico de la o e a forma usual y se almacenan en el vector roots:
Ciclo Principal Bairstow: Determinar raices 115c roots=solucion_cuadratica(1,r,s);
Fragmento referenciado en 113a.

4.4.2.3.6. Ciclo Principal Bairstow: Extracci n de coecientes Una vez o se hayan obtenido las raices del factor cuadrtico, se hace necesario extraer a los valores de los coecientes del polinomio que queda como resultado de la divisin sinttica. Estos coecientes se encuentran almacenados en el vector b y o e ahora se guardan en el vector a1 con el n que se puedan seguir extrayendo las raices:

116

CAPTULO 4. POLINOMIOS I

Ciclo Principal Bairstow: Extraccin coecientes Polinomio resultante 116a o n=n-2; a1=zeros(n+1,1); a1=b(3:length(b),1);
Fragmento referenciado en 113a.

4.4.2.3.7. Ciclo Principal Bairstow: Asignaci n de raices Una vez las raio ces del factor cuadrtico considerado se han obtenido estas se almacenan en el a vector xr:

Ciclo Principal Bairstow: Asignacin de raices obtenidas 116b o xr=[xr;roots];


Fragmento referenciado en 113a.

4.4.2.4. Extracci n de raices de polinomio n <= 2 o Cuando el procedimiento anterior se haya repetido varias veces y el polinomio resultante se de grado 2 o menor se calculan las respectivas raices. En este punto se chequea si el n mero de iteraciones es menor al mximo especicado u a inicialmente y se consideran los dos casos mencionados anteriormente:

Bairstow: Extraccin de raices de polinomio n <= 2 116c o if(iter<maxit); Extraccin raices Polinomio n <= 2: Polinomio grado 2 117a o Extraccin raices Polinomio n <= 2: Polinomio grado 1 117b o end;
Fragmento referenciado en 111.

4.4.2.4.1. Polinomio grado 2 Si el polinomio que queda al nal es de grado 2 este se puede resolver mediante la expresin de la ecuacin cuadrtica, o o a deniendo de forma correspondiente los coecientes de dicho polinomio:

4.4. METODO DE BAIRSTOW


Extraccin raices Polinomio n <= 2: Polinomio grado 2 117a o if(n==2); r=-a1(2)/a1(3); s=-a1(1)/a1(3); roots=solucion_cuadratica(1,r,s); xr=[xr;roots];
Fragmento referenciado en 116c.

117

4.4.2.4.2. Polinomio grado 1 En el caso que el polinomio resultante sea de grado 1, la ra de este se puede obtener de forma sencilla mediante la exprez sin: o b0 x = (4.31) b1 y lo cual se puede expresar como:
Extraccin raices Polinomio n <= 2: Polinomio grado 1 117b o else xr=[xr;-a1(1)/a1(2)]; end;
Fragmento referenciado en 116c.

4.4.3.

Divisi n Sinttica por factor cuadrtico o e a

La divisin sinttica por factor cuadrtico aparece representada en la ecuao e a cin 4.23 y es de vital importancia para el mtodo de Bairstow. La estructura de o e la funcin que implementa este procedimiento es la siguiente: o
"deflacion2.m" 117c Deacin2: Declaracin funcin 118a o o o Deacin2: Inicializacin de variables 118b o o Deacin2: Ciclo principal 119a o

4.4.3.1.

Declaraci n de la funci n o o

Las variables de entrada de esta funcin son las siguientes: o a: vector de tama o n 1 con los coecientes del polinomio n r y s: factores del trmino cuadrtico (ver ecuacin 4.25) e a o

118 y las variables de salida:

CAPTULO 4. POLINOMIOS I

b: vector de tama o n 2 con los coecientes del polinomio resultante de n la divisin. o c: vector de tama o n 2 con los valores de la derivada del polinomio. n
Deacin2: Declaracin funcin 118a o o o function [b,c]=deflacion2(a,r,s)
Fragmento referenciado en 117c.

4.4.3.2.

Inicializaci n de Variables o

Para realizar el procedimiento de divisin sinttica es necesario inicializar o e las siguientes variables: n: n mero de elementos de los vectores de salida. Este valor se inicializa u como la longitud del vector de entrada a menos 2 elementos. El vector b de tama o n 1 y c de tama o (n 1) 1se inicializa en 0.0 n n Los vectores b y c se inicializan de acuerdo a lo presentado en las ecuaciones 4.254.28 respectivamente.
Deacin2: Inicializacin de variables 118b o o n=length(a)-2; b=zeros(n,1); b(n)=a(n+2); b(n-1)=a(n+1)+r*b(n); c=zeros(n-1,1); c(n-1)=b(n); c(n-2)=b(n-1)+r*c(n);
Fragmento referenciado en 117c.

4.4.3.3.

Ciclo Principal

En este ciclo se determinan los coecientes del polinomio resultante del procedimiento de divisin sinttica y su derivada: o e

4.4. METODO DE BAIRSTOW


Deacin2: Ciclo principal 119a o Ciclo principal Deacin2: Coecientes 119b o Ciclo principal Deacin2: Derivada 119c o
Fragmento referenciado en 117c.

119

Ciclo principal Deacin2: Coecientes 119b o for i=n-2:-1:1; b(i)=a(i)+r*b(i+1)+s*b(i+2); end;


Fragmento referenciado en 119a.

Ciclo principal Deacin2: Derivada 119c o for i=n-3:-1:1; c(i)=b(i+1)+r*c(i+1)+s*c(i+2); end;


Fragmento referenciado en 119a.

4.4.4.

Soluci n de la ecuaci n cuadrtica o o a

Con el n de evitar problemas numricos se hace necesario emplear una e formulacin alternativa de la solucin de la ecuacin cuadrtica dada por la o o o a ecuacin 4.30 y la cual en MATLAB R se puede implementar de la siguiente o forma:

"solucion_cuadratica.m" 119d Solucin Cuadrtica: Denicin funcin 120a o a o o Solucin Cuadrtica: Inicializacin de variables 120b o a o Solucin Cuadrtica: Determinacin de las raices 120c o a o

Las variables de entrada a esta funcin son los coecientes a, b y c de la ecuacin o o cuadrtica, y la salida corresponde a un vector x de dos elementos con las dos a ra ces obtenidas.

120
Solucin Cuadrtica: Denicin funcin 120a o a o o function [x]=solucion_cuadratica(a,b,c);
Fragmento referenciado en 119d.

CAPTULO 4. POLINOMIOS I

En esta funcin solo se hace necesario inicializar el vector x, el cual se iguala a o 0.0.
Solucin Cuadrtica: Inicializacin de variables 120b o a o x=zeros(2,1);
Fragmento referenciado en 119d.

La determinacin de las ra o ces de la ecuacin cuadrtica se compone de los o a siguientes pasos:


Solucin Cuadrtica: Determinacin de las raices 120c o a o Determinacin de raices: Clculo del discriminante 120d o a Determinacin de raices: Raices diferentes 121a o Determinacin de raices: Raices iguales 121b o
Fragmento referenciado en 119d.

El discriminante est denido por: a disc = b2 4ac y en MATLAB


R

(4.32)

se calcula de la siguiente forma:

Determinacin de raices: Clculo del discriminante 120d o a disc=b.^2-4*a*c;


Fragmento referenciado en 120c.

Si el valor del discriminante es mayor a 0.0, se tienen dos raices diferentes, que pueden ser reales o complejas conjugadas; y las cuales se pueden determinar empleando la ecuacin 4.30 o

4.4. METODO DE BAIRSTOW


Determinacin de raices: Raices diferentes 121a o if(disc>0.0); x(1)=2*c/(b+sqrt(disc)); x(2)=2*c/(b-sqrt(disc));
Fragmento referenciado en 120c.

121

Si el discriminante tiene un valor muy cercano a 0, entonces las ra son reales ces e iguales, y sus valores se pueden determinar:
Determinacin de raices: Raices iguales 121b o elseif(abs(disc)<1.0e-10); x(1)=2*c/b; x(2)=2*c/b; end
Fragmento referenciado en 120c.

122 Ejemplo (Divisin sinttica con factor cuadrtico) o e a Dividir el polinomio:

CAPTULO 4. POLINOMIOS I

P4 (x) = x4 + x3 8x2 + 9x 3 por el factor cuadrtico dado por x2 2x + 1. De este factor se puede inferir a que r = 2 y s = 1 Los coecientes del polinomio anterior son: Coef a4 a3 a2 a1 a0 Valor 1 1 -8 9 -3

y de acuerdo a la ecuacin 4.25 se tiene que los coecientes del polinomio o resultante de la divisin sinttica estn dados por: o e a Coeciente b4 b3 b2 b1 b0 Expresi n o b 4 = a4 b3 = a3 + rb4 b2 = a2 + rb3 + sb4 b1 = a1 + rb2 + sb3 b0 = a0 + rb1 + sb2 Valor 1.0 1.0 + (2)(1) = 3 8 + (2)(3) + (1)(1) = 3 9 + (2)(3) + (1)(3) = 0 3 + (2)(0) + (1)(3) = 0

De acuerdo a la ecuacin 4.25 b4 corresponder al coeciente del trmino o a e cuadrtico, mientras que b3 ser el coeciente de x y b2 el trmino indepena a e diete con lo cual se tiene que el polinomio resultante es: Pn2 (x) = x2 + 3x 3 y el trmino residual est dado por (ecuacin 4.24): e a o R = b1 (x r) + b0 = 0 + (x 2) 0 = 0 y por lo tanto la divisin sinttica es exacta indicando que x2 2x + 1 es un o e trmino cuadrtico del polinomio original. e a

4.4. METODO DE BAIRSTOW Ejemplo MATLAB


R

123

(Divisin sinttica con factor cuadrtico) o e a

Dividir el polinomio: P4 (x) = x4 + x3 8x2 + 9x 3 por el factor cuadrtico dado por x2 2x + 1. Los coecientes del polinomio a se denen de la siguiente forma: a=[-3 9 -8 1 1]; junto con los valores de r y s: r=2;s=-1; de tal forma que para realizar la divisin sinttica se emplea la funcin o e o deflacion2.m de la siguiente forma: [b,c]=deflacion2(a,r,s) obtenindose los siguientes resultados: e b = 0 0 -3 3 1 En este caso particular los dos primeros trminos del polinomio resultante e son iguales a 0 indicando que el residuo es igual a 0 y que la divisin es o exacta.

124

CAPTULO 4. POLINOMIOS I Ejemplo (Determinacin de ra con el mtodo de Bairstow) o ces e

Determine todas las ra ces del polinomio: P4 (x) = x4 + x3 8x2 + 9x 3 por medio del mtodo de Bairstow, usando r = s = 1, un mximo de 100 itee a 6 raciones y un error m nimno de 1.0 10 . Divisin sinttica por factor cuadrtico da como resultado: o e a Coeciente b4 b3 b2 b1 b0 Expresi n o b 4 = a4 b3 = a3 + rb4 b2 = a2 + rb3 + sb4 b1 = a1 + rb2 + sb3 b0 = a0 + rb1 + sb2 Valor 1.0 1.0 + (1)(1) = 0 8 + (1)(0) + (1)(1) = 9 9 + (1)(9) + (1)(0) = 18 3 + (1)(18) + (1)(9) = 12

y tal como se puede apreciar, los trminos b0 y b1 son diferentes de 0 y por lo e tanto los valores de r y s no son los correctos. Las derivadas de los factores b con respecto a r y s se calculan empleando las ecuaciones 4.28: Coeciente c3 c2 c1 c0 Expresi n o c 3 = b4 c2 = b3 + rc3 c1 = b2 + rc2 + sc3 c0 = b1 + rc1 + sc2 Valor 1.0 0 + (1)(1.0) = 1 (9) + (1)(1) + (1)(1.0) = 9 18 + (1)(9) + (1)(1) = 28

De acuerdo a los resultados anteriores se plantea el sistema lineal de ecuaciones para determinar las correcciones de r y s: (1)r + (1.0)s = 18 (9)r + (1.0)s = 9 el cual al resolver permite conocer r = 1.59633027522936 y s = 3.63302752293578. Con estos se calculan los nuevos valores de r y s: r2 = r1 + r = 0.59633027522936 s2 = s1 + s = 2.63302752293578 y se puede determinar el valor del error en cada caso: errr = r 1.59633027 = 100 = 267.69 % r (0.59633027) s 3.3633027 errs = = 100 = 137.97 % s (2.633027)

4.4. METODO DE BAIRSTOW

125

El procedimiento anterior se repite por 22 iteraciones, al nal de la cuales se obtiene que los valores de r = 1.79128782791137 y s = 0.79128783199515, con los cuales los valores de b1 = 0.0 y b0 = 0.0. Con estos valores de r y s se soluciona la ecuacin cuadrtica x2 rx s = 0 obtenindose de esta forma las o a e ra ces: 2s = 0.9999999 1.0 x1 = r + (r + 4s) 2s = 0.7912878 x2 = r (r + 4s) El polinomio resultante del procedimiento de divisin sinttica es: o e P2 = x2 + 2.79128782537684x 3.79128793126949 del cual se pueden obtener las raices aplicando el mismo procedimiento anterior: x3 = 1.00000002210108 x4 = 3.79128784747792 Con lo cual se han obtenido todas las raices del polinomio empleando la solucin o de la ecuacin cuadrtica!!!. o a

126 Ejemplo MATLAB


R

CAPTULO 4. POLINOMIOS I (Determincin de ra con el mtodo de Bairstow) a o ces e

Determine todas las ra ces del polinomio: P4 (x) = x4 + x3 8x2 + 9x 3 por medio del mtodo de Bairstow, usando r = s = 1, un mximo de 100 e a iteraciones y un error m nimno de 1.0 1010 . El primer paso consiste en denir el polinomio de inters por medio de sus e coecientes, para lo cual denimos el siguiente vector: a=[-3 9 -8 1 1]; junto los valores de r y s r=-1;s=-1; El mtodo de Bairstow se encuentra implementado en la funcin bairstow.m , e o con la cual este problema se puede resolver de la siguiente forma: [xr,ff,err,iter]=bairstow(a,r,s,100,1e-10); y despus de 66 iteraciones, las ra e ces obtenidas son: xr = 1.0000 0.7913 1.0000 -3.7913

4.5.
4.5.1.

Mtodo de Laguerre e
Fundamentos Conceptuales

El mtodo de Laguerre es uno de los mtodos ms ecientes que existen para e e a la determinacin de todas las ra o ces de un polinomio, incluyendo valores reales y/o complejos. Para entender la losof de este mtodo es necesario comenzar con la expresin a e o general para las ra ces de un polinomio: Pn (x) = (x x1 )(x x2 ) (x xn ) (4.33)

4.5. METODO DE LAGUERRE

127

donde xi , i = 1, . . . , n corresponden a cada una de las ra ces de Pn y los cuales son los valores que se quieren determinar. La ecuacin anterior se puede simo plicar para los propsitos del entendimiento del presente mtodo si se toma el o e logaritmo. De esto se obtiene: ln |Pn (x)| = ln |x x1 | + ln |x x2 | + + ln |x xn |
n

=
k=1

ln |x xk |

(4.34)

Al derivar la expresin anterior se obtiene: o 1 1 1 P (x) d ln |Pn (x)| = + + + = n dx x x1 x x2 x xn Pn (x) y la segunda derivada de la ecuacin 4.34 est dada por: o a d2 ln |Pn (x)| 1 1 1 = + + + dx2 (x x1 )2 (x x2 )2 (x xn )2 Pn (x) = Pn (x)
2

(4.35)

P (x) n Pn

(4.36)

Ahora para obtener una estimacin de las ra o ces del Polinomio se tienen que hacer las siguientes suposiciones: la distancia entre la ra x1 y nuestro valor inicial x0 est dada por a z a la distancia entre el valor inicial x0 y las restantes ra ces est dada por b y a es la misma para todas las ra ces. x0 x1 = a x0 xi = b, (4.37)

i = 2, 3, . . . , n

Atendiendo a las suposiciones antes mencionadas las ecuaciones 4.35,4.36 se pueden reescribir de la siguiente forma: 1 n1 + =G a b (4.38)

1 n1 + 2 =H (4.39) a2 b De la ecuacin 4.38 se despeja b para reemplazarlo en la ecuacin 4.39, lo o o cual permite despejar la distancia a a la ra y obtener: z n (4.40) a= G + (n 1)(nH G2 ) Con lo anterior la primera ra del polinomio x1 queda denida como: z x1 = x0 + a (4.41)

128

CAPTULO 4. POLINOMIOS I

4.5.2.

Determinaci n de la races de polinomios usando el o mtodo de Laguerre e


R

El mtodo de Laguerre se encuentra implementado en MATLAB e funcin laguerre.m cuya estructura es la siguiente: o
"laguerre.m" 128a Laguerre: Declaracin de la funcin 128b o o Laguerre: Inicializacin de variables 129a o Laguerre: Ciclo Principal 129b Laguerre: Chequear si se obtuvo ra 132 z

en la

4.5.2.1.

Declaraci n de la funci n o o

Las variables de entrada a la funcin son las siguientes: o x0: valor inicial de la ra z a: vector de tama o n 1 que contiene los coecientes que denen el n polinomio de inters. e niter: valor que representa el n mero de iteraciones u errm in: valor de error relativo m nimo que se emplea para chequear la convergencia del mtodo a la ra buscada. e z La variable de salida x corresponde a una ra del polinomio en estudio. z
Laguerre: Declaracin de la funcin 128b o o function [xr,fx,er,iter]=laguerre(x0,a,maxiter,err_min)
Fragmento referenciado en 128a.

4.5.2.2.

Inicializaci n de Variables o

Uno de los aspectos ms interesantes del mtodo corresponde al hecho que a e converge sin importar cual es el valor inicial especicado. En este caso particular, el valor de la ra x0 es especicado por el usuario. As mismo es necesario z contar con el n mero de elementos del vector a, el cual se almacena en la variau ble n.

4.5. METODO DE LAGUERRE


Laguerre: Inicializacin de variables 129a o n=length(a)-1; err=100; iter=1; [p pd sd]=evaluacion_polinomio(a,x0); fx(iter,1)=p; er(iter,1)=100; xold=x0; xr(iter,1)=x0;
Fragmento referenciado en 128a.

129

4.5.2.3.

Ciclo Principal

Esta es la parte ms importante del procedimiento ya que aqu se determinan a las ra ces del polinomio. Las labores realizadas en este ciclo son las siguientes:
Laguerre: Ciclo Principal 129b while( err >=err_min & iter<=maxiter) Ciclo Principal Laguerre: Prueba de la ra 129c z Ciclo Principal Laguerre: Chequear si es ra 130a z Ciclo Principal Laguerre: Clculo de G y H 130b a Ciclo Principal Laguerre: Clculo del denominador 130c a Ciclo Principal Laguerre: Determinacin del signo 131a o Ciclo Principal Laguerre: Actualizacin de la ra 131b o z Ciclo Principal Laguerre: Clculo de error e incremento de iteraciones 131c a Ciclo Principal Laguerre: Actualizacin de valores 131d o end;
Fragmento referenciado en 128a.

4.5.2.3.1. Prueba de la raz Para probar la ra inicial x se utiliza la funcin z o evaluacion polinomio.m denida en la seccin 4.1. A esta funcin se le especio o can los coecientes contenidos en el vector a y el valor inicial de la ra x y z se obtienen el valor del polinomio p, la primera y segunda derivadas, las cuales estn contenidas en las variables pd y sd respectivamente. a
Ciclo Principal Laguerre: Prueba de la ra 129c z [p pd sd]=evaluacion_polinomio(a,xold);
Fragmento referenciado en 129b.

130

CAPTULO 4. POLINOMIOS I

4.5.2.3.2. Chequear si es raz Si al evaluar el polinomio en x se obtiene un valor p menor a la tolerancia tol especicada inicialmente entonces se ha determinado una ra del polinomio. En este caso la funcin termina su ejecucin y z o o devuelve el control al usuario.

Ciclo Principal Laguerre: Chequear si es ra 130a z if(abs(p)<err_min); er(iter,1)=abs(p); disp([Raiz encontrada en la iteracion num2str(iter)]); return; end;
Fragmento referenciado en 129b.

4.5.2.3.3. Clculo de G y H Si el valor x especicado inicialmente no coa rresponde a una ra del polinomio en estudio, entonces la funcin continua su z o ejecucin calculando los valores de G y H (ecuaciones 4.38 y 4.39 respectivao mente).

Ciclo Principal Laguerre: Clculo de G y H 130b a g=pd/p; h=g*g-sd/p;


Fragmento referenciado en 129b.

4.5.2.3.4. Clculo del denominador Una vez los valores de G y H se han a calculado se determina el valor del denominador de la ecuacin 4.40: o

Ciclo Principal Laguerre: Clculo del denominador 130c a f=sqrt((n-1)*(n*h-g*g));


Fragmento referenciado en 129b.

4.5.2.3.5. Determinaci n del signo Para terminar de calcular el denominao dor de 4.40 se hace necesario determinar la magnitud de G + H:

4.5. METODO DE LAGUERRE


Ciclo Principal Laguerre: Determinacin del signo 131a o if(abs(g+f)>=abs(g-f)); dx=n/(g+f); else dx=n/(g-f); end;
Fragmento referenciado en 129b.

131

4.5.2.3.6. Actualizaci n de la raz : Una vez se ha determinado el increo mento de la ra esta se actualiza usando la ecuacin 4.41: z, o
Ciclo Principal Laguerre: Actualizacin de la ra 131b o z x=xold-dx;
Fragmento referenciado en 129b.

4.5.2.3.7. Clculo de error e incremento de iteraciones : Con la nueva ra a z calculada, se calcula el error relativo de la misma y se incrementa el n mero de u iteraciones:
Ciclo Principal Laguerre: Clculo de error e incremento de iteraciones 131c a iter=iter+1; err=abs((x-xold)/x)*100;
Fragmento referenciado en 129b.

4.5.2.3.8. Actualizaci n de valores : en este fragmento se actualizan los o valores de xold, y se asignan los respectivos valores en los vectores f x() y er():
Ciclo Principal Laguerre: Actualizacin de valores 131d o xold=x; xr(iter,1)=x; fx(iter,1)=p; er(iter,1)=err;
Fragmento referenciado en 129b.

132

CAPTULO 4. POLINOMIOS I

4.5.2.3.9. Chequear si se obtuvo la raz : Si la ra no se obtuvo se imprime z un mensaje en pantalla que alerta al usuario sobre esta situacin. o
Laguerre: Chequear si se obtuvo ra 132 z if(iter>=maxiter & err>err_min); disp(Metodo de Laguerre no encontro solucion.); disp(Aumente el numero de iteraciones); end;
Fragmento referenciado en 128a.

e z Ejemplo (Mtodo de Laguerre para la ra de un polinomio) Encuentre una ra del polinomio: z P3 (x) = x3 4.0x2 4.48x + 26.1 asumiendo un valor inicial de x = 3 i. Para mejorar la correccin de la ra inicial es necesario evaluar el polinomio o z (ecuacin 4.5) as como sus derivadas (ecuaciones 4.6 y 4.7): o P3 (x) = x3 4.0x2 4.48x + 26.1 = (18 26i) 4.0 (8 6i) 4.48 (3 i) + 26.1 = 1.34 + 2.48i P3 (x) = 3.0x2 8.0x 4.48 = 3.0 (8 6i) 8.0 (3 1) 4.48 = 4.48 10.0i P3 (x) = 6.0x 8.0 = 6.0 (3 i) 8.0 = 10.0 6i Con estos valores se calcula G(x) usando la ecuacin 4.35 y H(x) ecuacin 4.36 o o con lo que se obtiene: 4.48 10.0i P (x) = = 2.36557 + 3.08462i G(x) = 3 P3 (x) 1.34 + 2.48i P (x) H(x) = G (x) 3 P3 (x)
2 (2) (1) (2) (1)

= (2.36557 + 3.08462i)2 = 0.35995 12.48452i

10.0 6i 1.34 + 2.48i

Con estos valores se puede calcular F (x) como el denominador de la ecuacin 4.40 de la siguiente forma: o F (x) = = = (n 1)[nH(x) G2 (x)] 2 3(0.35995 12.48452i) (2.36557 + 3.08462i)2 5.67822 45.71946i = 5.08670 4.49402i

4.5. METODO DE LAGUERRE

133

Ahora se requiere determinar que factor produce una mayor correccin en el o denominador: |G(x) + F (x)| = |(2.36557 + 3.08462i) + (5.08670 4.49402i)| = |2.72113 1.40940i| = 3.06448 |G(x) F (x)| = |(2.36557 + 3.08462i) (5.08670 4.49402i)| = | 7.45227 + 7.57864i| = 10.62884 que en este caso corresponde al segundo factor, con lo cual el valor de correccin o de la ra es: z r =x n 3 = (3 i) G(x) F (x) 7.45227 + 7.57864i = 3.19790 0.79875i

de tal forma que la ra corregida es x = 3.19790 0.79875i, la cual se acerca z mucho al valor real de x = 3.20 0.80i. Este procedimiento se repite hasta la 4 iteracin en donde el error relativo obtenido ha llegado ha ser de 1.0 1012 o

134 Ejemplo MATLAB


R

CAPTULO 4. POLINOMIOS I (Mtodo de Laguerre para la ra de un polinomio) e z

Determinar la ra del polinomio z P4 (x) = x3 4.0x2 4.48x + 26.1 en MATLAB R a partir del valor inicial 3 i. Para aplicar el procedimiento de Laguerre y resolver este problema es necesario denir el vector con los coecientes del polinomio: a=[26.1 -4.48 -4 1]; y el valor inicial de la ra z: x0=3-i; con lo cual es posible aplicar el mtodo de Laguerre para e [xr,fx,er,iter]=laguerre(x0,a,100,1.0e-12); procedimiento que converge en 4 iteraciones: >> iter iter = 4 y del cual se obtiene: >> [xr(iter) fx(iter) er(iter)] ans = 3.1998 - 0.7987i 0.0000 - 0.0000i 0.0000

4.5.3.

Determinaci n de todas las races de un polinomio o

Hasta este momento tal y como se ha presentado el mtodo de Laguerre este e se puede emplear para la determinacin de una ra Su verdadero potencial o z. emerge cuando este mtodo, tal y como est implementado en la funcin laguee a o rre.m se combina con la deacin polinomial (funcin deacionpolinomial.m) o o para la determinacon sucesiva de ra de un polinomio. La idea es muy senci ces lla y consiste en especicar un valor inicial x0 y con este determinar el valor de la ra x1 . Con esta ra determinada se realiza el procedimiento de divisin sinttiz z o e

4.5. METODO DE LAGUERRE

135

ca y el polinomio resultante nuevamente se somete al mtodo de Laguerre para e determinar el valor de otra ra la cual corresponder a x2 . Este procedimiento z, a se repita hasta que todas las ra ces del polinomio hayan sido determinadas. La funcin que implementa este procedimiento se denomina raices polinomios.m o y tiene la siguiente estructura:
"raices_polinomios.m" 135a Raices Polinomios: Declaracin de la Funcin 135b o o Raices Polinomios: Inicializacin de variables 136a o Raices Polinomios: Ciclo Principal 136b

4.5.3.1.

Declaraci n de la funci n o o

Las variables de entrada de esta funcin son: o x0: valor inicial de la ra Este valor sirve para inicializar la b squeda de z. u las raices cada vez que se ejecuta el procedimiento de laguerre . a: vector con los coecientes que denen el polinomio maxiter: n mero mximo de iteraciones u a err min: error o tolerancia m nima con la cual se considera que una solucin es satisfactoria o La variable de salida corresponde a xr un vector con todas las raices del polinomio.
Raices Polinomios: Declaracin de la Funcin 135b o o function [xr]=raices_polinomios(x0,a,maxiter,err_min)
Fragmento referenciado en 135a.

4.5.3.2.

Inicializaci n de variables o

Para determinar las raices de un polinomio se deben inicializar las siguientes variables n: n mero de raices a determinar. Este valor es igual al n mero de coeu u cientes del polinomio menos 1 (ya que se incluye el trmino independiene te). xr vector de tama o n en donde se van a almacenar las raices. n

136
Raices Polinomios: Inicializacin de variables 136a o n=length(a)-1; xr=zeros(n,1);
Fragmento referenciado en 135a.

CAPTULO 4. POLINOMIOS I

4.5.3.3. Ciclo principal La determinacin de las n raices de un polinomio se hace mediante un ciclo o for que tiene la siguiente estructura:

Raices Polinomios: Ciclo Principal 136b for i=1:n; Ciclo Principal Raices: Inicializacin variables 136c o Ciclo Principal Raices: aplicacin del mtodo de Laguerre 137a o e Ciclo Principal Raices: Correcin de la ra obtenida 137b o z Ciclo Principal Raices: divisin sinttica 137c o e end;
Fragmento referenciado en 135a.

4.5.3.3.1. Inicializaci n de Variables Para cada ra se hace necesario inio z cializar las variables iter que almacena el n mero de iteraciones y er que almau cena el error relativo de la ra determinada en cada iteracin: z o
Ciclo Principal Raices: Inicializacin variables 136c o iter=0; er=100;
Fragmento referenciado en 136b.

4.5.3.3.2. Aplicaci n del mtodo de Laguerre Para encontrar la ra se o e z aplica el mtodo de laguerre por medio de un ciclo while que controla la cone vergencia del mtodo. Dentro de este ciclo se incrementa el contador iter, y al e emplear la funcin laguerre.m se determinar el error relativo en la aproximao cin de la ra obtenida. o z

4.5. METODO DE LAGUERRE


Ciclo Principal Raices: aplicacin del mtodo de Laguerre 137a o e while(iter<maxiter & er>errmin); iter=iter+1; [x,fx,er,iter]=laguerre(x0,a,maxiter,errmin); end;
Fragmento referenciado en 136b.

137

4.5.3.3.3. Correcci n de la raz Si la ra obtenida en el paso anterior tieo z ne un valor imaginario que es menor al error m nimo especicado inicialmente err min, entonces este valor se puede despreciar y en ese caso se considera solamente la parte real de la ra obtenida. Al nal se asigna la ra obtenida en la z z correspondiente posicin del vector xr o
Ciclo Principal Raices: Correcin de la ra obtenida 137b o z if(abs(imag(x(iter,1)))<errmin); x(iter,1)=real(x(iter,1)); end; xr(i,1)=x(iter,1);
Fragmento referenciado en 136b.

4.5.3.3.4. Divisi n sinttica Una vez se ha encontrado una de las raices o e del polinomio se procede a extraerla del mismo usando el procedimiento de divisin sinttica, para lo cual se emplea la funcin deflacion polinomial.m , o e o y se asignan los coecientes del polinomio resultante al vector a:
Ciclo Principal Raices: divisin sinttica 137c o e b=deflacion_polinomial(a,xr(i,1)); a=b;
Fragmento referenciado en 136b.

138 Ejemplo MATLAB


R

CAPTULO 4. POLINOMIOS I (Determinacin de ra con el mtodo de Laguerre) o ces e

Determinar todas las ra ces del polinomio P4 (x) = x3 4.0x2 4.48x + 26.1 en MATLAB R a partir del valor inicial 3 i, con un mximo de 100 iteraa ciones y una tolerancia de 1.0 106 . Para realizar este procedimiento en MATLAB R es necesario denir el vector de coecientes del polinomio, lo cual se hace de la siguiente forma: >>a=[26.1 -4.48 -4 1]; Tambin se requiere especicar la solucin inicial del procedimiento: e o >>x0=3-i; Con esto ya se puede emplear la funcin raices polinomios.m de la sio guiente forma: >>[xr]=raices_polinomios(x0,a,100,1e-6); La primera ra requiere de 3 iteraciones para converger, mientras que la z segunda y tercera ra requieren solamente 2, de tal forma que los resultados z obtenidos en este caso son: >>xr xr = 3.19981247501149 + 0.79868631472850i 3.19981247566068 - 0.79868631463590i -2.39962495067217 Para determinar si estos valores son las ra ces del polinomio anterior puede emplear la funcin evaluacion polinomio.m denida en la seccin 4.1 o o

Captulo 5 Soluci n de sistemas lineales de o ecuaciones: Mtodos directos e


5.1. Introducci n o

Los sistemas lineales de ecuaciones aparecen en muchos problemas de la ingenier civil, por lo cual resulta su estudio de vital importancia para cualquier a persona que quiera adentrarse en los terrenos del modelamiento numrico. A e nivel general, un sistema lineal de ecuaciones se puede expresar de la siguiente forma: a11 x1 + a12 x2 + + a1n xn = b1 a21 x1 + a22 x2 + + a2n xn = b2 a31 x1 + a32 x2 + + a3n xn = b3 (5.1) . . . . . . an1 x1 + an2 x2 + + ann xn = bn en donde los aij corresponden a los denominados coecientes del sistema y los bi a los trminos independientes. Los valores de xi que hacen que cada una de las e igualdades en la ecuacin 5.1 se cumplan se denominan la solucin del sistema. o o El anterior sistema lineal de ecuaciones puede ser expresado de forma compacta usando un elemento denido en el Algebra Lineal: la matr Usando matrices el z. sistema lineal de ecuaciones dado por la ecuacin (5.1) se puede escribir como: o Ax = b (5.2)

donde A representa la matr de coecientes, x corresponde al vector de incgniz o tas y b es el vector con los trminos independientes. e Existen diferentes mtodos para la obtencin de la solucin de un sistema lie o o neal de ecuaciones, los cuales pueden agruparse en dos grandes categor as: Mtodos directos e 139

140 Mtodos iterativos e

CAPTULO 5. METODOS DIRECTOS I

Dentro de los mtodos directos ms comunes se pueden mencionar los sie a guientes: Eliminacin gaussiana o Descomposicin LU o Descomposicin de Cholesky o Dentro de los mtodos iterativos ms importantes se encuentran: e a Gauss-Seidel Sobre-relajacin o Gradiente Conjugado

5.1.1.

Tipos de Matrices

Existen diferentes tipos de matrices y su conocimiento es un requisito fundamental para el estudio de los mtodos de solucin de sistemas de ecuaciones e o lineales, ya que existen mtodos espec e cos de solucin para estos tipo de mao trices. A continuacin se presentan los tipos ms importantes de matrices que o a van a aparecer en el estudio de los sistemas lineales de ecuaciones. 5.1.1.1. Matrices Simtricas e Denici n 14 o Una matr simtrica es aquella para la cual se cumple que: z e aij = aji y por lo tanto se tiene que A = AT . (5.3)

Ejemplo La siguiente es un caso muy sencillo de una matr simtrica: z e 4 5 6 5 6 7 6 7 8

5.1. INTRODUCCION 5.1.1.2. Matrices Hermticas Denici n 15 o

141

Una matr Herm x tica (o matr auto-adjunta) es una matr cuadrada con z z valores complejos, la cual es igual a su transpuesta conjugada, es decir, que el elemento en la la i y en la columna j es el complejo conjugado del elemento de la la j y la columna i: aij = aji donde aij representa el complejo conjugado del valor de aij (5.4)

Ejemplo La siguiente matr es de tipo herm z tico; 4 5+i 6i 5i 6 7+i 6+i 7i 8 ya que los elementos cumplen con la condicin expresada por la ecuacin o o 5.4.

5.1.1.3.

Matrices Diagonales

Denici n 16 o Una matr diagonal es aquella para la cual los elementos de la diagonal z principal son valores reales y los restantes elementos son iguales a 0: d11 0 0 0 0 d22 0 0 D= (5.5) 0 0 d33 0 0 0 0 d44 De aqui se desprende que una matr Herm z tica de valores reales es una matr z simtrica. e

142 Ejemplo

CAPTULO 5. METODOS DIRECTOS I

Un ejemplo sencillo de matr diagonal es el siguiente: z 5 0 0 D= 0 4 0 0 0 8

5.1.1.4. Matrz Identidad Denici n 17 o La matr identidad I es aquella para la cual se cumple: z IA=A (5.6)

y la cual tiene 1 en las diagonal principal y 0 en los elementos restantes: 1 0 0 0 0 1 0 0 In = (5.7) 0 0 1 0 0 0 0 1

5.1. INTRODUCCION Ejemplo La matr identidad de 3 3 est dada por: z a 1 0 0 I3 = 0 1 0 0 0 1

143

5.1.1.5.

Matrz Tridiagonal

Denici n 18 o Las matrices tridiagonales son aquellas que tienen elementos diferentes de 0 en la diagonal principal, y las primeras diagonales superior e inferior: a11 a12 0 0 0 a21 a22 a23 0 0 0 a32 a33 a34 0 T= (5.8) 0 0 a43 a44 a45 0 0 0 a54 a55

144 Ejemplo

CAPTULO 5. METODOS DIRECTOS I

Las matrices tridiagonales son muy importantes porque aparecen en la discretizacin de ecuaciones diferenciales parciales. Un ejemplo sencillo de o este tipo de matrices es: 4 1 0 0 0 1 4 1 0 0 T= 0 1 4 1 0 0 0 1 4 1

5.1.1.6. Matrices Triangulares Denici n 19 o La matr triangular inferior se dene como aquella para la cual los elemenz tos por encima de la diagonal principal son iguales a 0: a11 0 0 0 0 a21 a22 0 0 0 a31 a32 a33 0 0 L= (5.9) a41 a42 a43 a44 0 a51 a52 a53 a54 a55 Denici n 20 o De forma equivalente, en una matr triangular superior los valores por z debajo de la diagonal principal son iguales a 0: a11 a12 a13 a14 a15 0 a22 a23 a24 a25 0 a33 a34 a35 U= 0 (5.10) 0 0 0 a44 a45 0 0 0 0 a55

5.1. INTRODUCCION Ejemplo Un ejemplo de matr triangular superior es el siguiente: z 1 2 3 4 5 0 3 4 5 6 U= 0 0 5 6 7 0 0 0 7 8 0 0 0 0 9 y de matr triangular inferior: z 1 2 L= 3 4 5

145

0 3 4 5 6

0 0 5 6 7

0 0 0 7 8

0 0 0 8 9

5.1.1.7.

Matrices de Hessemberg

Denici n 21 o Las matrices de Hessemberg tambin se denominan matrices supertriangue lares, y son aquellas para las cuales todos los elementos por encima o por debajo de las subdiagonales son iguales a 0. La matr de Hessemberg supez rior est denida de la siguiente forma: a a11 a12 a13 a14 a15 a21 a22 a23 a24 a25 HU = 0 a32 a33 a34 a35 (5.11) 0 0 a43 a44 a45 0 0 0 a54 a55 y de igual forma la matr de Hessemberg inferior: z a11 a12 0 0 0 a21 a22 a32 0 0 HL = a31 a32 a33 a34 0 a41 a42 a43 a44 a45 a51 a52 a53 a54 a55

(5.12)

146 Ejemplo

CAPTULO 5. METODOS DIRECTOS I

Las matrices de Hessemberg son importantes en diferentes ramas del algebra lineal ya que muchos problemas con matrices totalmente llenas (o densas como tambin se les conocen) se obtienen matrices de este tipo. Algunos e procedimientos para la obtencin de los valores y vectores propios como la o descomposicin QR. Un ejemplo de matr de Hessemberg es el siguiente: o z 1 2 0 0 0 3 4 5 0 0 HU = 6 7 8 9 0 10 11 12 13 14 16 17 18 19 20

5.1.2.

Matrices Densas y Dispersas

Denici n 22 o Una matr A se dice que es densa cuando todos sus elementos son difez rentes de 0. Por otro lado, una matr A se dice dispersa si alguno de sus z elementos es igual a 0.

Las matrices diagonales, triangulares y de Heseemberg corresponden a tipos espec cos de matrices dispersas.

5.1. INTRODUCCION Ejemplo Un ejemplo sencillo de una matr densa es el siguiente: z 9 8 7 DE = 6 5 4 3 2 1 y de una matr dispersa: z 0.000 0.000 DI = 0.000 0.000 0.000

147

0.000 0.628 0.000 0.849 0.000

0.685 0.000 0.000 0.000 0.000

0.000 0.878 0.000 0.000 0.000

0.000 0.000 0.068 0.000 0.000

Generalmente las matrices dispersas aparecen cuando se discretizan ecuaciones diferenciales parciales. Este tipo de matrices requieren de mtodos e especiales para su almacenamiento y para su operacin, de tal forma que o aseguren un manejo de memoria eciente.

5.1.3.

Transformaciones Elementales

Para una matriz A se denen tres transformaciones elementales, las cuales se aplican sobre las ecuaciones que conforman el sistema lineal. Dichas transformaciones elementales permiten cambiar el sistema lineal original en un sistema equivalente, cuya solucin es la misma que el sistema original. La nalidad o verdadera de estas transformaciones consiste en facilitar los procedimientos de solucin de sistemas lineales de ecuaciones. o Las transformaciones elementales son las siguientes: 1. Multiplicar o divir una ecuacin por un escalar diferente de 0 o 2. Sumar dos ecuaciones entre si 3. Intercambiar de posicin dos ecuaciones o Como es evidente de la lista anterior, las 3 transformaciones elementales mencionadas anteriormente son operaciones que no cambian la solucin de un o sistema lineal de ecuaciones. Por ejemplo, para el siguiente sistema lineal de ecuaciones: a11 a12 a13 a14 x1 b1 a21 a22 a23 a24 x2 b2 a31 a32 a33 a34 x3 = b3 a41 a42 a43 a44 x4 b4

148

CAPTULO 5. METODOS DIRECTOS I

tomemos la primera ecuacin y multipliquemosla por un escalar = 0, con lo o que se tiene: a11 x1 + a12 x2 + a13 x3 + a14 x4 = b1 Esta ecuacin se puede introducir en el sistema original de la siguiente mao nera: a11 a12 a13 a14 x1 b1 a21 a22 a23 a24 x2 b2 = a31 a32 a33 a34 x3 b3 a41 a42 a43 a44 x4 b4 con lo cual resulta evidente que el vector solucin x no cambia. o De la misma forma, si se tienen dos ecuaciones: a11 x1 + a12 x2 + a13 x3 + a14 x4 = b1 a21 x1 + a22 x2 + a23 x3 + a24 x4 = b2 y a partir de estas creamos una nueva como la suma entre ellas se tiene: (a11 + a21 )x1 + (a12 + a22 )x2 + (a13 + a23 )x3 + (a14 + a24 )x4 = (b1 + b2 ) Debido a que en este caso particular, se pueden agrupar los coecientes de acuerdo a las varibles respectivas xi , quiere decir que esta ecuacin es una nueva o restriccin que deben cumplir los valores de las incgnitas, y por lo tanto o o

5.2.

Soluci n de sistemas triangulares o

Si se tiene un sistema lineal de ecuaciones cuya matr de coecientes A sea z del tipo triangular (ya sea superior o inferior), la solucin del mismo se puede o obtener de forma sencilla empleando los procedimientos de sustitucin hacia o atrs y hacia delante respectivamente. Este hecho es de vital importancia ya que a todos los mtodos directos de solucin de ecuaciones lineales tratan de llevar el sise o tema original a uno equivalente, cuya matr de coecientes sea de tipo triangular. z Suponga que se tiene un sistema lineal de ecuaciones de la siguiente forma: u11 u12 u13 u14 x1 b1 0 u22 u23 u24 x2 b2 = (5.13) 0 0 u33 u34 x3 b3 0 0 0 u44 x4 b4 Para obtener todos los elementos del vector solucin x se procede de la siguiente o forma:

5.2. SOLUCION DE SISTEMAS TRIANGULARES 1. Se despeja x4 usando la expresin: o x4 = b4 u44

149

2. Con el valor de x4 antes obtenido se despeja x3 a partir de la 3 ecuacin o del sistema original u33 x3 + u34 x4 = b3 de lo cual se deprende que: x3 = b3 u34 x4 u33

3. De igual forma se procede para despejar x2 , para lo cual se usa la ecuacin o 2 del sistema original de ecuaciones: u22 x2 + u23 x3 + u24 x4 = b2 de la cual se obtiene: x2 = b2 u24 x4 u23 x3 u22

4. La ultima variable x1 se despeja de una forma similar a partir de la ecuacin: o b1 u14 x4 u13 x3 u12 x2 x1 = u11 Este procedimiento se denomina sustitucin hacia atrs y se puede generalio a zar mediante la siguiente expresin: o xk = bk akk
n

(bk1 xk1 =
j=k+1

akj xj ) akk , k = n 1, n 2, . . . , n

(5.14)

En el caso de un sistema lineal en donde la matr de coecientes es de tipo z triangular inferior, como el presentado a continuacin: o l11 0 0 0 x1 b1 l21 l22 0 0 x2 b2 (5.15) l31 l32 l33 0 x3 = b3 l41 l42 l43 l44 x4 b4 el procedimiento empleado para obtener su solucin es similar al explicado ano teriormente, la unica diferencia consiste en el orden en el que se despejan las incgnitas del problema. Este se resume a continuacin: o o

150

CAPTULO 5. METODOS DIRECTOS I

1. La primera variable que se despeja corresponde a x1 . Este valor es igual a: x1 = b1 l11

2. La segunda incgnita x2 se puede despejar de la ecuacin: o o l21 x1 + l22 x2 = b2 la cual es igual a: x2 = b2 l21 x1 l22

3. La tercera incgnita x3 se puede obtener de la ecuacin: o o l31 x1 + l32 x2 + l33 x3 = b3 de la cual se obtiene: x3 = b3 l31 x1 l32 x2 l33

4. La ultima incgnita se puede despejar de la ecuacin: o o x4 = b4 l41 x1 l42 x2 l43 x3 l44

Este procedimiento se denomina sustitucin hacia delante y se puede generalizar o mediante la siguiente expresin: o x1 = b1 a11
n

bk xk =
j=k

akj xj akk , k = 2, 3, . . . , n

(5.16)

5.3.
5.3.1.

Eliminaci n Gaussiana con Pivoteo o


Fundamentos Conceptuales

La eliminacin gaussianaes el procedimiento de solucin de sistemas de ecuao o ciones lineales ms sencillo e importante que existe. a

5.3. ELIMINACION GAUSSIANA CON PIVOTEO Denici n 23 o

151

La eliminacin gaussiana es el procedimiento para la solucin de un sistema o o lineal de ecuaciones el cual se basa en la aplicacin de transformaciones o elementales (ver seccin 5.1.3) y que permite convertir: o Ax=b en un sistema de la forma: Ux=b donde U es una matr triangular superior y b es un vector modicado de z trminos independientes. Este ultimo sistema se puede resolver mediante e sustitucin hacia atrs. o a En el procedimiento de eliminacin gaussiana el sistema lineal de ecuaciones o A x = b se resuelve deniendo la denominada matr aumentada del sistema. z Esta matr se denota como [A|b] y se encuentra formada por la matr de coez z cientes y del vector de trminos independientes: e a11 a12 . . . a1n b1 a21 a22 . . . a2n b2 . .. . . . . . . . . . an1 an2 . . . ann bn

(5.17)

y sobre el cual al aplicar las transformaciones elementales (ver seccin 5.1.3), o se convierte en un sistema lineal equivalente dado por: a11 a12 . . . a1n b1 0 a 21 . . . a2n b2 . . .. . 0 . . 0 . . 0 0 0 ann bn

(5.18)

donde la notacin aij indica que el elemento aij cambi. Un hecho de vital imo o portancia es que la solucin x del sistema original (ecuacin 5.17) es la misma o o del sistema modicado (ecuacin 5.18), y por lo tanto resulta de vital imporo tancia estudiar como se resuelven los sistemas lineales cuyas matrices de coecientes son de tipo triangular. Una vez el sistema lineal de ecuaciones ha sido llevado a esta forma triangular superior se puede resolver por sustitucin hacia o atrs, de tal forma que del sistema equivalente (ecuacin 5.18) despejamos la a o ultima incgita xn , con lo cual se obtiene: o xn = bn ann (5.19)

152

CAPTULO 5. METODOS DIRECTOS I

Este mismo procedimiento se aplica a la incgnita xn1 de tal forma que: o xn1 = bn1 ann xn an1,n1 (5.20)

y lo cual se puede generalizar de la siguiente forma: n akj xj bk j=k+1 , k = n 1, n 2, . . . , n xk = akk

(5.21)

Se pueden presentar problemas en el caso de que los elementos con los coecientes aii con los que se realiza la eliminacin sean muy cercanos a la precisin o o de la mquina, ya que se pueden generar inestabilidades numricas. Existen 2 a e estretegias con las que se puede evitar este problema, que se denominan escalamiento y pivoteo . El procedimiento de escalamiento consiste en ajustar los valores de los coecientes de cada una de las ecuaciones de tal forma que estos tengan el mismo orden de magnitud. A nivel prctico existen dos aproximaciones para realizar a este procedimiento. En la primera se modica el valor del coeciente aij con respecto al valor mximo de la ecuacin: a o aij = aij mx (ai, ) a (5.22)

donde aij es el valor del coeciente para la ecuacin i y la variable j, y el valor o mximo se calcula para toda la ecuacin. a o La otra aproximacin de escalamiento consiste en usar como patrn de refeo o rencia la norma vectorial del conjunto de coecientes de la ecuacin, con lo o cual el coeciente modicado tiene la forma: aij (5.23) aij = E donde E se dene como: E=
i=1 n

|ai, |

(5.24)

La eliminacin de coecientes de una ecuacin requiere la determinacin del o o o multiplicador aij /aii y en ese caso se debe de evitar que el valor del coeciente aii 0, ya que el valor del multiplicador tender a + y as se generar una a a inestabilidad numrica. El pivoteo permite resolver este problema, el cual cone siste en un procedimiento de reorganizacin de la ecuaciones del sistema lineal o

5.3. ELIMINACION GAUSSIANA CON PIVOTEO

153

(lo que es equivalente a las las) de acuerdo al valor del coeciente ubicado en la diagonal principal aii . Para esto se mueve la ecuacin que tenga el mayor o valor de aii a la primera posicin. o Otra aproximacin alternativa consiste en reorganizar tanto las como columo nas, sin embargo este procedimiento resulta bastante complejo de implementar a nivel computacional y no brinda mejoras signicativas con respecto a la aproximacin tradicional que cambia solamente las las. El pivoteo que involucra o cambios tanto de las como columnas se denomina pivoteo completo ; mientras que aquel en donde se cambian solo las las se denomina pivoteo parcial . Generalmente tanto el escalamiento y el pivoteo parcial se aplican de forma secuencial, ya que primero se realiza el escalamiento para luego determinar si es necesario realizar pivoteo.

Podemos resumir el pivoteo (parcial)como sigue: Para elegir el elemento pivote en la primer columna se escoge el elemento mayor (con valor absoluto) de toda la primer columna. Para elegir el elemento pivote en la segunda columna, se escoge el elemento mayor (con valor absoluto ) de toda la segunda columna exceptuando el elemento a12 . Para la tercer columna se except an los elementos a13 y a23 . u En un diagrama matricial, tenemos que los elementos pivotes de cada columna se escogen de entre los siguientes: a11 a21 a22 a31 a32 a33 . . . . . . . . . an1 an2 an3 ann (5.25)

5.3.2.

Soluci n de Sistemas de Ecuaciones con Eliminaci n o o Gaussiana

La estructura de la funcin que implementa este procedimiento es la siguieno te:

154
"gauss_pivoteo.m" 154a

CAPTULO 5. METODOS DIRECTOS I

Gauss con Pivoteo: Declaracin de la funcin 154b o o Gauss con Pivoteo: Determinar valores para escalamiento 155a Gauss con Pivoteo: Ciclo principal 155b Gauss con Pivoteo: Sustitucin hacia atrs 158b o a Gauss con Pivoteo: Clculo del determinante 159a a Gauss con Pivoteo: Asignacin de salida 159b o

5.3.2.1. Denici n de la funci n o o Como es costumbre en MATLAB R para denir una funcin es necesario o especicar cuales van a ser los argumentos de entrada y de salida. En este caso particular se tienen las siguientes variables de entrada: A: Matr de coecientes del sistema lineal de ecuaciones. Esta matr es z z de tama o n n n b: Vector de trminos independientes. Este es un vector de n 1 e y las variables de salida: x: Vector con la solucin del sistema lineal de ecuaciones. Vector de tao ma o n 1 n detm: Valor del determinante de la matr de coecientes del sistema liz neal.
Gauss con Pivoteo: Declaracin de la funcin 154b o o function [x,detm] = gauss_pivoteo(A,b) if (size(b,2) > 1); b = b; end n = length(b); s = zeros(n,1); num_cambios=0;
Fragmento referenciado en 154a.

5.3.2.2. Escalamiento Como se mencion en la clase, el escalamiento permite mejorar la estabilidad o numrica de los diferentes procedimientos de eliminacin ya que e o

5.3. ELIMINACION GAUSSIANA CON PIVOTEO

155

Para realizar el escalamiento en la funcin a implementar en MATLAB R se o debe determinar el valor mximo en cada la de la matr A, o lo que es equia z valente, en cada ecuacin del sistema lineal a resolver. Para esto hacemos un o ciclo for sobre la matr de coecientes A y extraemos los respectivos coecienz tes de la ecuacin, usando la notacin de acceso rpido propia de MATLAB R o o a .Por ejemplo, si se quisieran extraer los n coecientes de la 3 ecuacin (es deo cir, todos los valores de las columnas de la tercera la) esto se puede realizar fcilmente: a A(3,1:n) donde n es el n mero de ecuaciones que conforman el sistema lineal. Esto fau cilita enormemente esta labor, ya que en un lenguaje de programacin como o C++ ser necesario realizar otro ciclo. Una vez se han extra dichos valores, a do se hace necesario determinar cul es su valor mximo sin importar si se trata de a a un valor positivo o negativo; para lo cual usamos las funciones intr nsecas de MATLAB R abs() (valor absoluto) en conjunto con max() (valor mximo). Estos a valores se almacenan en el vector s para su posterior uso.
Gauss con Pivoteo: Determinar valores para escalamiento 155a for i = 1:n; s(i) = max(abs(A(i,1:n))); end
Fragmento referenciado en 154a.

5.3.2.3.

Ciclo Principal

La estructura de este ciclo se presenta a continuacin: o


Gauss con Pivoteo: Ciclo principal 155b for k=1:n-1; Ciclo Principal Gauss: Determinar el Pivot 156a Ciclo Principal Gauss: Chequear si es matr singular 156b z Ciclo Principal Gauss: Cambiar las las 157a Ciclo Principal Gauss: Fase de eliminacin 157b o end;
Fragmento referenciado en 154a.

156

CAPTULO 5. METODOS DIRECTOS I

5.3.2.3.1. Determinaci n del Pivot Uno de los objetivos centrales del pivoo teo consiste en mejorar la estabilidad numrica del algoritmo de solucin del e o sistema de ecuaciones. Para realizar este procedimiento se hace necesario determinar el elemento del Pivot, y lo ms importante consiste en determinar si este a elemento se encuentra en la actual ecuacin o en una ecuacin que est por o o a debajo de esta. En ese caso se determina la ecuacin que tiene el coeciente o escalado de mayor magnitud Amax y su correspondiente posicin p. o
Ciclo Principal Gauss: Determinar el Pivot 156a [Amax,p] = max(abs(A(k:n,k))./s(k:n)); p = p + k - 1;
Fragmento referenciado en 155b.

5.3.2.3.2. Chequer si la matrz es singular Un criterio ampliamente acepta do para la determinacin de la singularidad de una matr corresponde al hecho o z que su determinante sea igual o muy cercano a 0.0. Sin embargo este criterio es computacionalmente bastante complicado de implementar, ya que los mtodos e que se conocen para calcular el determinante de una matr dada requieren muz chas operaciones, ms operaciones que las que se necesitan para resolver un a sistema lineal de ecuaciones. As que un criterio operacional bastante util para nuestros propsitos corresponde al hecho que una matr singular en el momeno z to en el que se este convirtiendo en una matr triangular superior, va a producir z un elemento igual o muy cercano a 0.0 en alguna de las diagonales. As que si durante este procedimiento chequeamos que el valor del pivote Amax es menor que la precisin m o nima del MATLAB R (valor para el cual este paquete considera un valor como igual a 0.0, este valor se puede acceder como eps). Si esta condicin se cumple la matr es singular y el sistema no tiene solucin (o por o z o lo menos para los efectos del presente curso), y la funcin env un mensaje o a de error en pantalla y se detiene. Para hacer esto usamos la funcin intr o nseca de MATLAB R error(), con el respectivo mensaje que indica la naturaleza del problema.
Ciclo Principal Gauss: Chequear si es matr singular 156b z if (Amax < eps); error(La Matrix es singular); end
Fragmento referenciado en 155b.

5.3. ELIMINACION GAUSSIANA CON PIVOTEO

157

5.3.2.3.3. Cambiar Filas La decisin de cambiar una la o no se hace ateno diendo al hecho de la posicin del valor mximo del pivot p (determinado en o a la seccin 5.3.2.3.1) con respecto a la ecuacin actual k. Si el valor mximo o o a se encuentra en una de la ecuaciones por debajo de la ecuacin actual entono ces se procede a realizar el cambio de forma f sica, es decir, la ecuacin en la o posicin p se cambia a la posicin k usando la funcin cambiarFilas (denida o o o en la seccin 5.3.2.4). Este procedimiento se aplica tanto en la matr de coeo z cientes A, como en los vectores b (trminos independientes) y s (mximos por e a la/ecuacin), y el n mero de cambios que se realizan son almacenados en la o u variable num cambios
Ciclo Principal Gauss: Cambiar las las 157a if(p~=k); num_cambios=num_cambios+1; b = cambiarFilas(b,k,p); s = cambiarFilas(s,k,p); A = cambiarFilas(A,k,p); end
Fragmento referenciado en 155b.

5.3.2.3.4. Fase de Eliminaci n Una vez se han cambiado la posicin de las o o ecuaciones usando el procedimiento de pivoteo tal como se especic anterioro mente, entonces se puede resolver el sistema de ecuaciones por medio de eliminacin. Para esto se dene el valor del multiplicador y se almacena en la o variable lambda y con este se modican tanto los valores de los coecientes (almacenados en la matr A), como el de los trminos independientes (vector z e b). Este procedimiento arroja como resultado la transformacin de la matr de o z coecientes A en una matr triangular superior. Si ud est interesado puede z a imprimir dicha matr una vez este procedimiento ha nalizado con el n de z comprobar que lo que se esta diciendo es verdad.
Ciclo Principal Gauss: Fase de eliminacin 157b o for i = k+1:n; if (A(i,k)~=0); lambda = A(i,k)/A(k,k); A(i,k:n) = A(i,k:n) - lambda*A(k,k:n); b(i) = b(i) - lambda*b(k); end end
Fragmento referenciado en 155b.

158 5.3.2.4. Funci n cambiarFilas o

CAPTULO 5. METODOS DIRECTOS I

Debido a que un aspecto importante del procedimiento de pivoteo consisten en cambiar las las, para esta tarea se cre una funcin especial denominada o o cambiarFilas. Esta funcin tiene las siguientes variables de entrada: o v: vector o matr sobre la cual se realizar el cambio de las z a i: n mero que indica la la/ecuacin que se va a cambiar u o j: n mero que indica la la/ecuacin por la que se va a cambiar la u o la/ecuacin i o y la variable de salida es la misma variable de entrada v, con lo cual se asegura que los cambios realizados dentro de esta funcin tengan efectos permanentes o en este arreglo (tal como se desea). La implementacin de este procedimiento o es muy sencilla y es la siguiente: 1. Almacenamiento de la la/ecuaci i en la variable temporal temp. Para o eso usamos la notacin de acceso rpido explicada anteriorente. o a 2. Asignacin de la la/ecuacin j en la la i o o 3. Asignacin de la la/ecuacin i almacenada en temp en la posicin j. o o o
"cambiarFilas.m" 158a function [v]=cambiarFilas(v,i,j) temp = v(i,:); v(i,:) = v(j,:); v(j,:) = temp;

5.3.2.5.

Sustituci n hacia atrs o a

Una vez que A se ha transformado en una matr triangular superior es poz sible obtener los valores de las incgnitas mediante el procedimiento de sustio tucin hacia atrs. En este la ultima incgnita se puede despejar directamente, o a o y las restantes cantidades desconocidas se puede determinar fcilmente con un a ciclo for.
Gauss con Pivoteo: Sustitucin hacia atrs 158b o a b(n)=b(n)/A(n,n); for k = n-1:-1:1 b(k) = (b(k) - A(k,k+1:n)*b(k+1:n))/A(k,k); end
Fragmento referenciado en 154a.

5.3. ELIMINACION GAUSSIANA CON PIVOTEO 5.3.2.6. Clculo del determinante a

159

El determinante de una matr triangular se puede calcular fcilmente como z a el producto de los elementos de su diagonal. Para realizar dicha operacin usao mos las funciones intr nsecas diag(), para extraer los elementos de la diagonal, y prod(), para realizar el producto de dichos elementos. As mismo debido al pi voteo realizado el signo del determinante cambia, de tal forma que para obtener el valor real es necesario tener en cuenta el n mero de cambios. u
Gauss con Pivoteo: Clculo del determinante 159a a detm=(-1)^(num_cambios)*prod(diag(A));
Fragmento referenciado en 154a.

5.3.2.7.

Asignaci n de la salida o

Una vez se han completado los procedimientos de inters, la solucin del e o sistema lineal de ecuaciones se asigna en la variable x y se termina la funcin. o
Gauss con Pivoteo: Asignacin de salida 159b o x = b;
Fragmento referenciado en 154a.

5.3.3.

Ejemplos

Ejemplo (Eliminacin gaussiana) o Resuelva mediante eliminacin gaussiana el sistema lineal de ecuaciones reo presentado por la siguiente matr aumentada: z 3 1 2 12 1 2 3 11 2 2 1 2 Tal como se explic anteriormente la solucin de este sistema se realiza en o o dos estapas. La primera corresponde a la fase de eliminacin, mientras que la o segunda consiste en la sustitucin hacia atrs. Para la eliminacin de las variao a o bles en las columnas respectivas se hace necesario emplear las transformaciones elementales. Con el n de eliminar las variables de la primera variable se aplican

160 las siguientes operaciones:

CAPTULO 5. METODOS DIRECTOS I

3 1 2 12 Ec2Ec2-(1/3)Ec1 0 2.333 7.004 2.333 Ec3Ec3-(2/3)Ec1 0 1.333 2.333 5.999 Para eliminar los coecientes de la segunda variable se aplica la siguiente operacin: o 12 3 1 2 0 2.333 2.333 7.004 0 0 1.000 1.999 Ec3Ec3-(1.333/2.333)Ec2 En este punto se tiene una matr de coecientes que es de tipo triangular supez rior, y por lo tanto se pueden despejar las incgnitas mediante el procedimiento o de sustitucin hacia atrs. La primera incgnita x3 es igual a: o a o x3 = 1.999/ 1.000 = 1.999 Para despejar x2 se emplea la ecuacin: o 2.333x2 + 2.333x3 = 7.004 de la cual se desprende que: x2 = 7.004 2.333 1.999 = 1.004 2.333

y para despejar x3 se usa la siguiente ecuacin: o 3x1 x2 + 2x3 = 12 de la cual se obtiene fcilmente: a x1 = 12 2x3 + x2 12 2 (1.999) + 1.004 = = 3.000 3 3.0

5.4. DESCOMPOSICION LU CON PIVOTEO Ejemplo MATLAB


R

161

(Eliminacin gaussiana) o

Resuelva en MATLAB R mediante eliminacin gaussiana el siguente siso tema lineal de ecuaciones: 3 1 2 x1 12 1 2 3 x2 = 11 2 2 1 x3 2 Para realizar este procedimiento se dene la matr de coecientes A: z A=[3 -1 2;1 2 3;2 -2 -1]; y el correspondiente vector de trminos independientes b: e b=[12 11 2]; Para aplicar el procedimiento de eliminacin gaussiana con pivoteo se utiliza o la funcin denida en la seccin 5.3 denominada gauss pivoteo.m de la o o siguiente forma: [x,detm] = gauss_pivoteo(A,b); con lo cual se obtiene que el valor del determinante de A es igual a: detm = -7.0000 y el vector solucin x: o x = 3.0000 1.0000 2.0000 Esta es la misma solucin obtenida anteriormente cuando se aplic el proceo o dimiento de forma manual.

5.4.
5.4.1.

Descomposici n LU con pivoteo o


Fundamentos Conceptuales

Como se vi en la seccin 5.3, la eliminacin gaussiana se emplea para la o o o solucin de sistemas lineales de ecuaciones A x = b deniendo la matr auo z mentada del sistema (ecuacin 5.17). La solucin x se obtiene al aplicar las o o

162

CAPTULO 5. METODOS DIRECTOS I

transformaciones elementales sobre dicho sistema, el cual incluye tanto los valores de los coecientes aij y de los trminos independientes bi . En algunas e oportunidades se da el caso que se requiere solucionar el sistema A x = b para diferentes vectores bi . Si esto se fuera a resolver usando eliminacin gaussiana o se hace necesario cada vez modicar la matr aumentada del sistema (ecuacin z o 5.17) resultando de esta forma en un procedimiento ineciente a nivel computacional. En este caso resultar de inters contar con un procedimiento que a e actuara solamente sobre la matr de coecientes A de tal forma que la modiz cacin de la misma solo se realizara una vez. Este procedimiento se conoce o como descomposicin LU y se dene a continuacin: o o Denici n 24 o Sea A una matr cuadrada. La descomposicin LUde A es el procedimiento z o mediante el cual se expresa dicha matr como el producto de una matr z z triangular inferior L y una matr triangular superior U de la siguiente forz ma: A=LU (5.26) y donde el tama o de L y U es el mismo de A. n El procedimiento de descomposicin LU se puede realizar por medio de elio minacin gaussiana, de tal forma que la estructura de la funcin que la impleo o mente es similar a la de gauss pivoteo.m explicada anteriormente, ya que en dicho procedimiento la matr de coecientes A z a11 a12 a13 a14 a a a a A = 21 22 23 24 (5.27) a31 a32 a33 a34 a41 a42 a43 a44 se convierte en una matr triangular superior U: z a11 a12 a13 a14 0 a22 a23 a24 U= 0 0 a33 a34 0 0 0 a44

(5.28)

La matr triangular inferior L de esta descomposicin se obtiene a partir de z o los multiplicadores denidos en el procedimiento de eliminacin de variables m o ordenndolos de la siguiente forma: a 1 0 0 0 m 1 0 0 L = 21 (5.29) m31 m32 1 0 m41 m42 m43 1 donde cada uno de los multiplicadores se dene de la siguiente forma: mij = aij /aii (5.30)

5.4. DESCOMPOSICION LU CON PIVOTEO

163

5.4.2.

Procedimineo de Descomposici n LU o

La estructura de este procedimiento se presenta a continuacin: o


"lu_pivoteo.m" 163a Descomposicin LU con Pivoteo: Declaracin de la funcin 163b o o o Descomposicin LU con Pivoteo: Inicializacin de variables 164a o o Descomposicin LU con Pivoteo: Determinar valores para escalamiento 164b o Descomposicin LU con Pivoteo: Ciclo Principal 165a o Descomposicin LU con Pivoteo: Asignacin de resultados 167a o o

5.4.2.1.

Declaraci n de la funci n o o

El nombre seleccionado para implementar el procedimiento de descomposicin LU en MATLAB R es lu pivoteo.m y el argumento de entrada corresponde o a la matr de coecientes A. Esta matr es de tama o n n. Los argumentos z z n de salida son los siguientes: L, U Matr triangular inferior y matr triangular superior resultado de la z z descomposicin. Ambas de tama o n n. o n perm vector en donde se almacenan los cambios en la posicin de las o ecuaciones realizados durante la descomposicin. o Esta ultima variable va a ser de gran importancia ya que al resolver el sistema lineal de ecuaciones se hace necesario organizar la solucin con el n que o corresponda a las variables originales.
Descomposicin LU con Pivoteo: Declaracin de la funcin 163b o o o function [L,U,perm] = lu_pivoteo(A)
Fragmento referenciado en 163a.

5.4.2.2.

Inicializaci n de Variables o

Para continuar con el procedimiento de descomposicin se hace necesario o denir algunas variables de inters: e n: corresponde al n mero de ecuaciones que forman el sistema de inters u e L, U : son las matrices triangulares en donde se almacenaran los resultados de la descomposicin. En este caso se inicializan con valores iguales a 0.0. o As mismo la primera la de la matr U se inicializa con los valores de la z primera la de la matr de coecientes A. z

164

CAPTULO 5. METODOS DIRECTOS I s es un vector en donde se almacenarn los valores mximos de cada la a a (ecuacin) para realizar el correspondiente escalamiento. Este vector es o de tama o n 1 y se inicializa con valores iguales a 0.0. n perm es un vector en donde se almacenarn los cambios en las posiciones a de las ecuaciones del sistema original. Este vector se inicializa en valores que van desde 1 hasta n y por lo tanto su tama o es de n 1. n

Descomposicin LU con Pivoteo: Inicializacin de variables 164a o o [nr nc] = size(A); n=nr; L=zeros(n,n); U=zeros(n,n); U(1,:)=A(1,:); s = zeros(n,1); perm=[1:n];
Fragmento referenciado en 163a.

5.4.2.3. Determinar los valores para el escalamiento Al igual que en la seccin 5.3.2.2 es necesario determinar los valores mxio a mos en cada ecuacin o la de la matr de coecientes. Esto se hace mediante o z un ciclo for y la aplicacin de las funciones intr o nsecas de MATLAB R max() y abs().

Descomposicin LU con Pivoteo: Determinar valores para escalamiento 164b o for i = 1:n; s(i) = max(abs(A(i,1:n))); end
Fragmento referenciado en 163a.

5.4.2.4. Ciclo Principal El ciclo principal para realizar la descomposicin sigue exactamente la miso ma estructura que el ciclo principal de la eliminacin gaussiana (seccin 5.3.2.3), o o la cual es la siguiente:

5.4. DESCOMPOSICION LU CON PIVOTEO


Descomposicin LU con Pivoteo: Ciclo Principal 165a o

165

for k=1:n-1; Ciclo Principal Descomposicin LU con Pivoteo: determinar el Pivot 165b o Ciclo Principal Descomposicin LU con Pivoteo: chequear si es matr singular 165c o z Ciclo Principal Descomposicin LU con Pivoteo: cambiar las las 166a o Ciclo Principal Descomposicin LU con Pivoteo: fase de eliminacin 166b o o end;
Fragmento referenciado en 163a.

5.4.2.4.1. Determinar el Pivot La determinacin del pivot es exactamente o igual que para el caso de la eliminacin gaussiana (ver seccin 5.3.2.3.1) o o

Ciclo Principal Descomposicin LU con Pivoteo: determinar el Pivot 165b o [Amax,p] = max(abs(A(k:n,k))./s(k:n)); p = p + k - 1;
Fragmento referenciado en 165a.

5.4.2.4.2. Chequear si es matrz singular El procedimiento para determi nar si la matr A es singular es el mismo que para la eliminacin gaussiana (ver z o seccin 5.3.2.3.2) o

Ciclo Principal Descomposicin LU con Pivoteo: chequear si es matr singular 165c o z

if (Amax < eps); error(La Matrix es singular); end


Fragmento referenciado en 165a.

5.4.2.4.3. Cambiar Filas El procedimiento para cambiar las es similar al empleado en la eliminacin gaussiana, ya que usa la misma funcin cambiarFio o las() (seccin 5.3.2.4). En este caso particular se lleva un registro de las las o (ecuaciones) cambiadas en el vector perm. Esto es de vital importancia en los procedimientos de inversin de matrices. o

166

CAPTULO 5. METODOS DIRECTOS I

Ciclo Principal Descomposicin LU con Pivoteo: cambiar las las 166a o if(p~=k); s = cambiarFilas(s,k,p); A = cambiarFilas(A,k,p); perm=cambiarFilas(perm,k,p); end
Fragmento referenciado en 165a.

5.4.2.5. Fase de eliminaci n o

El procedimiento de eliminacin es similar al emplado en la funcin gausso o Piv.m (ver seccin 5.3.2.3.4). En este caso particular el valor del multiplicador o lambda es almacenado en la porcin triangular inferior de la matr A. o z

Ciclo Principal Descomposicin LU con Pivoteo: fase de eliminacin 166b o o for i = k+1:n; if (A(i,k)~=0); lambda = A(i,k)/A(k,k); A(i,k:n) = A(i,k:n) - lambda*A(k,k:n); A(i,k)=lambda; end end
Fragmento referenciado en 165a.

5.4.2.6. Asignaci n de Resultados o

Una vez nalizada la fase de eliminacin, la matr U corresponde a la matr o z z triangular superior almacenada en A y L se encuentra conformada por los valores de los multiplicadores lambda. La matr U se obtiene al extraer la porcin z o triangular superior de la matr A por medio de la funcin de MATLAB R triu() z o y la porcin inferior con tril(). As mismo se impone la condicin que la diagonal o o de L este formada por 1.0, lo cual se realizar por medio de un ciclo for.

5.4. DESCOMPOSICION LU CON PIVOTEO


Descomposicin LU con Pivoteo: Asignacin de resultados 167a o o U=triu(A); L=tril(A,-1); for i=1:n; L(i,i)=1.0; %Aproximacion de Doolitle end;
Fragmento referenciado en 163a.

167

5.4.3.

Soluci n de sistemas lineales con descomposici n LU o o

Una vez realizada la descomposicin LU se hace necesario implementar el o procedimiento de solucin de sistemas lineales de ecuaciones empleando este o importante mtodo. Esto se hace por medio de la funcin LUSolucion.m, cuya e o estructura es la siguiente:
"LUSolucion.m" 167b LUSolucion: Declaracin de la funcin 168a o o LUSolucion: Inicializacin de variables 168b o LUSolucion: Descomposicin LU 168c o LUSolucion: Clculo del determinante 169a a LUSolucion: Organizacin por pivoteo 169b o LUSolucion: Sustitucin hacia adelante 169c o LUSolucion: Sustitucin hacia atrs 170 o a

5.4.3.1.

Declaraci n de la funci n o o

Esta funcin tiene como variables de entrada: o A matr de coecientes del sistema lineal de ecuaciones. Su tama o es de z n n n. b vector con los trminos independientes del sistema lineal de ecuaciones. e Su tama o es de n 1. n Las variables de salida de la funcin LUSolucion.m son las siguientes: o x vector de tama o n 1 con la solucin del sistema lineal de ecuaciones n o detm valor del determinante de la matr A z perm vector con las posiciones actuales de las ecuaciones originales.

168

CAPTULO 5. METODOS DIRECTOS I

LUSolucion: Declaracin de la funcin 168a o o function [x,detm,perm]=LUSolucion(A,b)


Fragmento referenciado en 167b.

5.4.3.2. Inicializaci n de variables o Con el n de proseguir con la solucin del sistema lineal de ecuaciones se o hace necesario denir e inicializar ciertas varibles: n: n mero de ecuaciones del sistema. Se calcula usando la funcin intr u o nseca de MATLAB R length. x: vector con la solucin del sistema lineal de ecuaciones. Se inicializa en o 0.0. d: vector de tama o n 1 en el que se va a almacenar la solucin intermen o dia del sistema de ecuaciones.
LUSolucion: Inicializacin de variables 168b o n=length(b); x=zeros(n,1); d=zeros(n,1);
Fragmento referenciado en 167b.

5.4.3.3. Descomposici n LU o Para realizar la descomposicin LU de la matr A se emplea la funcin Deso z o composicin LU con Pivoteo denida en la seccin anterior. Como resultado de o o invocar esta funcin se obtienen las matrices triangulares superior U e inferior o L y el vector permcon la posicin de las ecuaciones. o
LUSolucion: Descomposicin LU 168c o [L U perm]=lu_pivoteo(A);
Fragmento referenciado en 167b.

5.4.3.4. Clculo del determinante a El determinante se calcula como el producto de los trminos que se encuene tran sobre la diagonal de la matr triangular superior U obtenida en la desz

5.4. DESCOMPOSICION LU CON PIVOTEO

169

composicin LU, ya que la matr L tiene solamente 1.0 en la diagonal. Para o z esto usamos la funcin diag() para extraer la diagonal y prod() para calcular su o producto.
LUSolucion: Clculo del determinante 169a a detm=prod(diag(U));
Fragmento referenciado en 167b.

5.4.3.5.

Organizaci n por el pivoteo o

Este es uno de los aspectos ms importantes a tener en cuenta si se va a a solucionar un sistema lineal de ecuaciones con el mtodo LU. Debido a que el e orden original de las ecuaciones en la matr A fue cambiado por el pivoteo, z se hace necesario cambiar tambien el orden de los trminos independientes e almacenados en el vector b. Los valores ordenados se almacenan en el vector d.
LUSolucion: Organizacin por pivoteo 169b o for i=1:n; d(i)=b(perm(i)); end;
Fragmento referenciado en 167b.

5.4.3.6.

Sustituci n hacia adelante o

Con los trminos independientes ya en el orden correcto se procede a la solue cin del sistema lineal de ecuaciones en dos fases. La primera es una sustitucin o o hacia adelante usando el vector d denido anteriormente y la matr triangular z inferior L obtenida de la descomposicin LU. La solucin parcial de este sisteo o ma de ecuaciones se almacena en el vector d para su uso posterior. A nivel de ecuacin esto se representa: o Ld=b (5.31)
LUSolucion: Sustitucin hacia adelante 169c o for k=2:n; d(k,1)=d(k,1)-L(k,1:k-1)*d(1:k-1); end;
Fragmento referenciado en 167b.

170 5.4.3.7. Sustituci n hacia atrs o a

CAPTULO 5. METODOS DIRECTOS I

Ya habiendo solucionado el sistema lineal de ecuaciones planteado con la matr triangular inferior L, ahora se plantea un nuevo sistema lineal de ecuaz ciones dado por: Ux=d (5.32) lo cual se hace mediante una sustitucin hacia atrs. En este caso particular se o a utilizan como trminos independientes los valores almacenados en el vector d. e La solucin de este sistema lineal de ecuaciones se almacena en el vector x y o constituye la solucin del sistema original A x = b. o
LUSolucion: Sustitucin hacia atrs 170 o a x=d; for k=n:-1:1; x(k,1)=(x(k,1) - U(k,k+1:n)*x(k+1:n,1))/U(k,k); end;
Fragmento referenciado en 167b.

5.4. DESCOMPOSICION LU CON PIVOTEO

171

5.4.4.

Ejemplos
R

Ejemplo MATLAB

(Descomposicin LU de una matr o z)

Realice la descomposicin LU de la siguiente matr o z: 3 1 2 1 2 3 2 2 1 Para realizar este procedimiento se emplea la funcin lu pivoteo.m denida o en la seccin 5.4.3, y la cual requiere como parmetro de entrada la matr o a z a descomponer que en este caso es: A=[3 -1 2;1 2 3;2 -2 -1]; y la descomposicin se realiza especicando la siguiente instruccin: o o [L U perm]=lu_pivoteo(A) Los resultados de dicha descomposicin corresponden a la matr triangular o z superior U: U = 3.0000 0 0 -1.0000 2.3333 0 2.0000 2.3333 -1.0000

a la matr triangular inferior L dada por: z L = 1.0000 0.3333 0.6667 0 1.0000 -0.5714 0 0 1.0000

y al vector de permutaciones perm que indica la posicin nal de cada una o de las ecuaciones que originalmente conformaban el sistema: perm = 1 2 3 En este caso particular los valores inclu dos en este vector indican que no fue necesario realizar el procedimiento de pivoteo.

172 Ejemplo MATLAB


R

CAPTULO 5. METODOS DIRECTOS I (Solucin usando descomposicin LU) o o

Solucionar en MATLAB R el sistema lineal de ecuaciones: 3 1 2 x1 12 1 2 3 x2 = 11 2 2 1 x3 2 empleando la descomposicin LU. o Para realizar este procedimiento en MATLAB la matr de coecientes A: z A=[3 -1 2;1 2 3;2 -2 -1]; y el correspondiente vector de trminos independientes b: e b=[12 11 2]; La funcin que implementa el procedimiento de solucin de sistemas lineales o o de ecuaciones por medio de la descomposicin LU se denomina LUSolucion.m o y esta funcin se emplea de la siguiente forma: o [x,detm,perm]=LUSolucion(A,b) Los resultados obtenidos corresponden al vector solucin x: o x = 3.0000 1.0000 2.0000 al valor del determinante detm de la matr de coecientes: z detm = -7.0000 y al vector de permutaciones perm: perm = 1 2 3
R

se hace necesario denir

5.5. INVERSA DE UNA MATRZ I

173

5.5.
5.5.1.

Inversa de una matrz


Fundamentos Conceptuales

Denici n 25 o Sea A una matr de n n. La matr inversa de A, denotada como A1 es z z una matr B de n n para la cual se cumple que: z A B = In B A = In donde In es la matr identidad de tama o n n. z n Cuando la matriz inversa existe, es unica, pero no siempre existe dicha matriz (es decir, no todas las matrices de la forma A de tama o n n, tienen inversa). n Un resultado de algebra lineal prueba que la matriz inversa A1 existe si y solo si el determinante de A es distinto de cero. Para desarrollar un procedimiento para la obtencin de la matr inversa se hace o z necesario recurrir a la denicin dada por la ecuacin 5.33. De esta ecuacin se o o o puede apreciar que el clculo de la inversa de A es equivalente a solucionar n a sistemas de ecuaciones dados por: A x = bi , i = 1, 2, . . . , n (5.34) (5.33)

donde los bi corresponden a cada una de las columnas de In . El vector con los valores de las incgnitas en cada uno de estos casos, corresponde a cada o una de las columnas de la matr inversa a determinar. Debido a que la matr z z de coecientes de este sistema de ecuaciones no cambia, se puede emplear el procedimiento de descomposicin LU para el clculo de la inversa sin que exista o a mucho esfuerzo computacional. En consecuencia, la determinacin de la matr o z 1 inversa A se divide en dos etapas: 1. Descomposicin LU de la matr A o z 2. Solucin de los sistemas de ecuaciones A x = bi o La fase de descomposicin se determinan las matrices L y U mediante alguno o de los procedimientos de descomposicin estudiados en la seccin 5.4 o o

5.5.2.

Clculo de la Matrz Inversa a

El procedimiento para la determinacin de la matr inversa tiene la siguieno z te estructura:

174
"matInv.m" 174a

CAPTULO 5. METODOS DIRECTOS I

InversaLU: Declaracin de la funcin 174b o o InversaLU: Chequear si es matr cuadrada 174c z InversaLU: Inicializacin de la matr 175a o z InversaLU: Ciclo Principal 175b

5.5.2.1.

Declaraci n de la funci n o o

En este fragmento se declara la funcin matInv.m. La variable de entrada de o esta funcin corresponde a la matr A de la cual se quiere obtener la inversa. o z
InversaLU: Declaracin de la funcin 174b o o function [AI]=matInv(A)
Fragmento referenciado en 174a.

5.5.2.2. Chequear si es matrz cuadrada Para calcular la matr inversa se requiere que A sea una matr cuadrada. z z Para determinar si esto es cierto se determina el n mero de las y columnas de u esta matr y se almacenan en las variables nrow y ncol. Si estos valores son z, iguales la matr es cuadrada, si no es asi, la funcin emite un mensaje de error z o y se detiene. El tama o de la matr se almacena en la variable n para su uso en n z procedimientos posteriores.
InversaLU: Chequear si es matr cuadrada 174c z [nrow,ncol]=size(A); if(nrow ~= ncol) ; error(La matriz no es cuadrada); end n=nrow;
Fragmento referenciado en 174a.

5.5.2.3. Inicializaci n de la matrz o La matr inversa se va a almacenar en una matr denominada AI, la cual z z en este caso se inicializa como una matr identidad, usando la funcin eye. z o

5.5. INVERSA DE UNA MATRZ I


InversaLU: Inicializacin de la matr 175a o z AI=eye(n,n);
Fragmento referenciado en 174a.

175

5.5.2.4.

Ciclo Principal

El procedimiento de solucin de los sistemas lineales de ecuaciones se eno cuentra implementado mediante un ciclo for, cuya estructura es la siguiente:
InversaLU: Ciclo Principal 175b for i=1:n; Ciclo Principal Inversa: Solucin sistema lineal 175c o Ciclo Principal Inversa: Almacenamiento solucin 175d o end;

Fragmento referenciado en 174a.

5.5.2.4.1. Soluci n del sistema lineal De acuerdo a lo explicado en la seco cin 5.5 (ecuaciones (5.34)) el sistema lineal de ecuaciones se soluciona usando o descomposicin LU. La solucin de este se almacena en la variable sol, y d coo o rresponde al determinante de la matr A. z
Ciclo Principal Inversa: Solucin sistema lineal 175c o [sol,d]=LUSolucion(A,AI(:,i));
Fragmento referenciado en 175b.

5.5.2.4.2. Almacenamiento de la soluci n Como se explic en la seccin o o o 5.5 la solucin del sistema lineal de ecuaciones corresponde a una columna de o la matr inversa. Esta solucin se almacena en la respectiva columna de AI. z o
Ciclo Principal Inversa: Almacenamiento solucin 175d o AI(:,i)=sol;
Fragmento referenciado en 175b.

176

CAPTULO 5. METODOS DIRECTOS I

5.5.3.

Ejemplo

Ejemplo MATLAB

(Clculo de la inversa de una matr a z)

Determine la inversa de la siguiente matr z: 3 1 2 1 2 3 2 2 1 empleando MATLAB


R

Para avanzar con el procedimiento de determinarcin de la matr inversa o z se hace necesario denir la matr de inters, lo cual se hace de la siguiente z e forma: >> A=[3 -1 2;1 2 3;2 -2 -1]; La funcin que permite calcular la matr inversa se denomina matInv.m y o z se encuentra denida en la seccin 5.5.2. Esta funcin se usa de la siguiente o o forma: >> [AI]=matInv(A) de tal forma que se obtiene la matr inversa dada por: z AI = -0.5714 -1.0000 0.8571 0.7143 1.0000 -0.5714 1.0000 1.0000 -1.0000

Para corroborar si el resultado obtenido es correcto se puede realizar el producto matricial entre A y la matr inversa obtenida AI: z >> A*AI ans = 1.0000 -0.0000 -0.0000

0 1.0000 0.0000

-0.0000 0 1.0000

que como se puede ver corresponde a una matr identidad. z

5.6. DESCOMPOSICION DE CHOLESKY

177

5.6.
5.6.1.

Descomposici n de Cholesky o
Fundamentos Conceptuales

Exise otra metodolog de descomposicin alternativa al procedimiento LU a o que se aplica sobre matr ces que cumplan las siguientes caracter sticas: Ser simtricas e Ser denidas positivas. La simetr de una matr se explic en la denicin 14, y la segunda caraca z o o ter stica se dene a continuacin: o Denici n 26 o Sea A una matr cuadrada. Se dice que A es denida positiva si se cumple: z xT Ax > 0, x = 0 (5.35)

Esto es equivalente a armar que todos los valores propios de A son positivos. El procedimiento de descomposicin de Cholesky se puede denir de la sio guiente forma: Denici n 27 o Si A es una matr simtrica y denida positiva, entonces la descomposicin z e o de Cholesky permite expresar a A de la siguiente manera: A = L LT donde L es una matr triangular inferior (ver seccin 5.1.1.6) z o Una caracter stica muy importante de esta descomposicin es que es unica, o esto es, dada una matr A que sea simtrica y denida positiva, existe solo una z e matr L para la cual se cumple la ecuacin 5.36. Esta matr tiene en la diagoz o z nal valores positivos. Al igual que la descomposicin LU ( ver seccin 5.4 ), la descomposicin de o o o Cholesky se puede emplear para la solucin de sistemas lineales de ecuacioo nes de la forma A x = b. Para esto se realiza la descomposicin de Cholesky o A = L LT , se resuelve el sistema L d = b y luego se resuelve el segundo sistema lineal dado por LT x = d, con lo cual se obtiene el vector solucin x. o Para establecer el procedimiento de la descomposicin de Cholesky, se va a emo (5.36)

178

CAPTULO 5. METODOS DIRECTOS I

plear un ejemplo sencillo con una matr de 3 3 con lo cual se tiene: z a11 a12 a13 l11 0 0 l11 l12 l13 a21 a22 a23 = l21 l22 0 0 l22 l23 a31 a32 a33 l31 l32 l33 0 0 l33

(5.37)

Para determinar los coecientes lij se realiza el producto entre las matrices del trmino derecho de la ecuacin anterior para obtener: e o a11 a12 a13 a21 a22 a23 = a31 a32 a33 2 (5.38) l11 l11 l21 l11 l31 2 2 l11 l21 l21 l22 l21 l31 + l22 l32 2 2 2 l11 l31 l21 l31 + l22 l32 l31 + l32 + l33 Igualando los elementos de A y L LT se obtienen 6 ecuaciones con 6 incgnio tas, las cuales se pueden simplicar si se resuelven en cierto orden. Esto quiere decir, que es necesario denir si las incgnitas se van a despejar por las o por o columnas. En este caso particular, las incgnitas se van a despejar por columnas o de tal forma que para la primera columna se tiene: 2 a11 = l11 l11 = a11 a21 = l11 l21 l21 =a21 /l11 (5.39) a31 = l11 l31 l31 =a31 /l11 Este mismo procedimiento se repite para los elementos de la segunda columna, para lo cual se hace necesario conocer algunos elementos de la primera columna (ecuacin 5.39): o
2 2 a22 = l21 + l22 2 l22 = a22 l21

(5.40)

a32 = l21 l31 + l22 l32 l32 =(a32 l21 l31 )/l22 De igual forma los valores de las incgnitas en la tercera columna van a o depender de los valores en las columnas anteriores (ecuaciones 5.39 y 5.40):
2 2 2 a33 = l31 + l32 + l33 l33 = 2 2 a33 l31 l32

(5.41)

A pesar que los resultados anteriores se obtuvieron para un ejemplo espec co de una matr de 3 3, el procedimiento subyacente se puede generalizar ya z que un elemento en la parte triangular inferior de L LT se puede expresar:
j

(L L )ij = li1 lj1 + li2 lj2 + . . . + lij ljj =


k=1

lik ljk ,

ij

(5.42)

5.6. DESCOMPOSICION DE CHOLESKY E igualando este trmino al elemento correspondiente de A se tiene: e


j

179

aij =
k=1

lik ljk ,

i = j, j + 1, . . . , n,

j = 1, 2, . . . , n

(5.43)

en donde el rango de ndices limita los elementos a la parte triangular inferior. Para la columna 1 (j = 1) se obtiene: l11 = a11 lij = ai1 /l11 , i = 2, 3, . . . , n (5.44)

Si se contin a en las siguientes columnas, las coecientes desconocidos en u la ecuacin 5.43 ya se han calculado, con lo cual queda: o
j1

aij =
k=1

lik ljk + lij ljj

(5.45)

Si i = j (trmino diagonal), la solucin es: e o


j1

ljj =

ajj
k=1

2 ljk ,

j = 2, 3, . . . , n

(5.46)

y para los trminos no diagonales: e


j1

lij =

aij
k=1

lik ljk

/ljj , (5.47)

j = 2, 3, . . . , n, i = j + 1, j + 2, . . . , n

5.6.2.

Descomposici n de Cholesky o

La funcin que implementa la descomposicin de Cholesky se denomina Choo o lesky.m y su estructura es la siguiente:
"Cholesky.m" 179 Cholesky: Declaracin de la funcin 180a o o Cholesky: Inicializacin de variables 180b o Cholesky: Ciclo Principal 181a Cholesky: Asignacin de resultados 182a o

180 5.6.2.1. Declaraci n de la funci n o o

CAPTULO 5. METODOS DIRECTOS I

La funcin Cholesky.m tiene como variable de entrada la matr A, de tama o o z n nn, que adems debe ser una matr simtrica y denida positiva. Esta funcin a z e o tiene como salida una matr triangular inferior L, de tama o n n para la cual z n se cumple: A = L LT (5.48)

Cholesky: Declaracin de la funcin 180a o o function [L]=Cholesky(A)


Fragmento referenciado en 179.

5.6.2.2.

Inicializaci n de variables o

En este caso particular se chequea si la matr es cuadrada, para lo cual se z emplea la funcin intr o nseca size(). Esta funcin devuelve el n mero de las y o u columnas de la matr A y estos valores se almacenan en las variables nrow y z ncol. Se chequea que nrow sea igual a ncol y si no es as el programa imprime un mensaje de error (usando la funcin error()) y se detiene. Si la matr es o z cuadrada se dene la variable n como el n mero de las. u

Cholesky: Inicializacin de variables 180b o [nrow ncol]=size(A); if(nrow ~= ncol) ; error(La matriz debe ser de cuadrada); end n=nrow;
Fragmento referenciado en 179.

5.6.2.3.

Ciclo principal

En esta parte se realiza la descomposicin de Cholesky como tal. Este proceo dimiento se encuentra dividido en dos partes: Clculo de los elementos fuera de a la diagonal para luego determinar los valores que van en la diagonal.

5.6. DESCOMPOSICION DE CHOLESKY


Cholesky: Ciclo Principal 181a for k=1:n; Ciclo Principal Cholesky: Asignacin elementos fuera diagonal 181b o Ciclo Principal Cholesky: Asignacin elementos diagonal 181c o end;
Fragmento referenciado en 179.

181

5.6.2.3.1. Asignaci n de elementos fuera de la diagonal Para determinar o los valores que estn fuera de la diagonal se emplea la ecuacin (5.47), lo cual a o queda implementado de la siguiente forma:
Ciclo Principal Cholesky: Asignacin elementos fuera diagonal 181b o for i=1:k-1; suma=sum(A(i,1:i-1).*A(k,1:i-1)); A(k,i)=(A(k,i)-suma)/A(i,i); end;
Fragmento referenciado en 181a.

5.6.2.3.2. Asignaci n de elementos de la diagonal Para calcular los eleo mentos de la diagonal se usa la ecuacin 5.46. En este caso particular se hace o necesario determinar que el valor al que se le va a tomar la ra cuadrada se z positivo, lo cual implica que la matr A sea denida positiva. Para hacer esto z el valor dentro de la ra se almacena en la variable test y se determina si este z valor es menor al 0.0 del MATLAB R (cuyo valor corresponde a eps). En el caso que la esta condicin no se cumpla, la funcin imprime en pantalla un mensaje o o de error y se detiene.
Ciclo Principal Cholesky: Asignacin elementos diagonal 181c o suma=sum(A(k,1:k-1).^2); test=A(k,k)-suma; if(test<eps) ; error(Matriz no es definida positiva); else A(k,k)=sqrt(A(k,k)-suma); end;
Fragmento referenciado en 181a.

182 5.6.2.4. Asignaci n de Resultados o

CAPTULO 5. METODOS DIRECTOS I

Los resultados de la descomposicin se almacenaban de forma temporal en o la matr A, de tal forma que se extrae la matr triangular inferior L usando la z z funcin intr o nseca tril() y se termina el procedimiento.
Cholesky: Asignacin de resultados 182a o L=tril(A);
Fragmento referenciado en 179.

5.6.3.

Soluci n de sistemas de ecuaciones por medio de deso composici n de Cholesky o

La funcin para realizar la solucin de sistemas de ecuaciones lineales por o o medio de la descomposicin de Cholesky se denomina CholeskySol.m y su eso tructura es la siguiente:
"CholeskySol.m" 182b CholeskySol: Declaracin de la funcin 182c o o CholeskySol: Inicializacin de variables 183a o CholeskySol: Descomposicin de Cholesky 183b o CholeskySol: Sustitucin hacia adelante 183c o CholeskySol: Sustitucin hacia atrs 184 o a

5.6.3.1.

Declaraci n de la funci n o o

Las variables de entrada de esta funcin corresponden a la matr de coeo z cientes A (n n) y al vector de trminos independientes b (n 1) y la funcin e o devuelve un vector x (n 1) con la solucin del sistema. o
CholeskySol: Declaracin de la funcin 182c o o function [x]=CholeskySol(A,b)
Fragmento referenciado en 182b.

5.6.3.2.

Inicializaci n de variables o

En este caso particular es necesario denir las siguientes variables:

5.6. DESCOMPOSICION DE CHOLESKY

183

n: n mero de ecuaciones del sistema lineal. Este se obtiene mediante la u funcin length() aplicada en el vector b o d: vector de n 1 en donde se va a almacenar la solucin temporal del o sistema lineal de ecuaciones.
CholeskySol: Inicializacin de variables 183a o n=length(b); d=zeros(n,1);
Fragmento referenciado en 182b.

5.6.3.3.

Descomposici n de Cholesky o

La descomposicin de Cholesky se realiza por medio de la funcin denida o o en la seccin anterior. Esta funcin devuelve la matr triangular inferior L y en o o z este caso particular, la matr triangular superior U se dene como la trasnpuesz ta de L.
CholeskySol: Descomposicin de Cholesky 183b o L=Cholesky(A); U=L;
Fragmento referenciado en 182b.

5.6.3.4.

Sustituci n hacia adelante o

Con la matr triangular inferior se plantea un sistema lineal de ecuaciones z como el de la ecuacin 5.31. Nuevamente la solucin de este sistema se almao o cena en el vector d.
CholeskySol: Sustitucin hacia adelante 183c o d=b; d(1,1)=d(1,1)/L(1,1); for k=2:n; d(k,1)=(d(k,1)-L(k,1:k-1)*d(1:k-1))/L(k,k); end;
Fragmento referenciado en 182b.

184 5.6.3.5. Sustituci n hacia atrs o a

CAPTULO 5. METODOS DIRECTOS I

Una vez se ha obtenido la solucin parcial d, se plantea un nuevo sistema o lineal de ecuaciones como el descrito en la ecuacin 5.32. La solucin de este o o nuevo sistema se almacena en el vector x y constituye la solucin del sistema o lineal de ecuaciones.
CholeskySol: Sustitucin hacia atrs 184 o a x=d; for k=n:-1:1; x(k,1)=(x(k,1) - U(k,k+1:n)*x(k+1:n,1))/U(k,k); end;
Fragmento referenciado en 182b.

5.6. DESCOMPOSICION DE CHOLESKY

185

5.6.4.

Ejemplos
R

Ejemplo MATLAB

(Descomposicin de Cholesky) o
R

Realice en MATLAB matr z:

la descomposicin de Cholesky de la siguiente o 4 2 2 A = 2 2 4 2 4 11

Para realizar este procedimiento es necesario denir la matr A lo cual se z puede hacer de la siguiente forma: >>A=[4 -2 2;-2 2 -4;2 -4 11]; La descomposicin de Cholesky se encuentra implementada en la funcin o o Cholesky.m explicada en la seccin 5.6.1, y para este caso particular se reao liza de la siguiente forma: >>L=Cholesky(A); El resultado corresponde a una matr triangular inferior L dada por: z L = 2 -1 1 0 1 -3 0 0 1

La matr triangular superior corresponde a la transpuesta de la matr obz z tenida anteriormente, con lo cual se tiene: >>U=L; Con el n de corroborar si la descomposicin fue realizada correctamente, o calculamos el producto de la matr triangular inferior y la superior: z >> L*U ans = 4 -2 2

-2 2 -4

2 -4 11

de donde resulta claro que se obtiene la matr original. z

186 Ejemplo MATLAB


R

CAPTULO 5. METODOS DIRECTOS I (Solucin de un sistema lineal de ecuaciones con Desc. de Cholesky) o

Resuelva en MATLAB R el siguiente sistema lineal de ecuaciones: 4 2 2 x1 1 2 2 4 x2 = 1 2 4 11 x3 1 La matr de coecientes de este sistema se dene de la siguiente forma: z >>A=[4 -2 2;-2 2 -4;2 -4 11]; y el vector con los trminos independientes: e >>b=ones(3,1); El procedimiento de solucin de sistemas lineales de ecuaciones usando el o mtodo de Cholesky se explica en la seccin 5.6.3 y se encuentra implemene o tado en la funcin CholeskySol.m . Para este caso particular la solucin del o o sistema se puede obtener de la siguiente forma: >>[x]=CholeskySol(A,b) en donde el vector solucin x est dado por: o a >> x x = 6.0000 16.5000 5.0000

5.7. MATRICES DE COEFICIENTES BANDEADAS

187

5.7.
5.7.1.
5.7.1.1.

Matrices de Coecientes Bandeadas


Sistemas Tridiagonales
Fundamentos conceptuales

Un sistema de ecuaciones tridiagonal es aquel cuya matr de coecientes A z tiene la siguiente forma: d1 e1 0 0 0 c2 d2 e2 0 0 0 c3 d3 e3 0 A= 0 0 c d (5.49) 0 4 4 . . . . . .. . . . . . . . . . . . 0 0 0 cn1 dn lo cual implica que la matr A es de tipo disperso. Con el n de facilitar la z denicin del sistema lineal de ecuaciones y para la determinacin de su correso o pondiente solucin, la denicin de este tipo de sistemas se hace especicando o o tres vectores: d1 c1 e1 d2 c2 e2 . . e= . c= . d= . (5.50) . . . . dn1 cn1 en1 dn Para la solucin del sistema lineal de ecuaciones en donde la matr de coeo z cientes A es de tipo tridiagonal, se va a emplear una versin modicada de o la descomposicin LU (seccin 5.4.3). Recordemos que este procedimiento cono o siste en realizar la eliminacin de variables que se encuentren por debajo del o elemento del pivot, que en este caso particular corresponde a solamente un unico valor (con lo cual el procedimiento es muy eciente a nivel computacional). Este procedimiento se puede expresar de la siguiente forma: Fila (k) Fila (k) multiplicador Fila (k-1) donde el multiplicador est dado por: a multiplicador = (ck1 /dk1 ) (5.52) (5.51)

Los diferentes valores de multiplicadores se almacenan en el vector c en la posicin ck1 conh lo cual se dene la matr L: o z ck1 = (ck1 /dk1 ) (5.53)

188 5.7.1.2.

CAPTULO 5. METODOS DIRECTOS I Descomposici n LU de sistemas tridiagonales o

La funcin que implementa este procedimiento se denomina LUdec3.m y tieo ne la siguiente estructura:

"LUdec3.m" 188a LU Sistemas Tridiagonales: Declaracin funcin 188b o o LU Sistemas Tridiagonales: Inicializacin variables 188c o LU Sistemas Tridiagonales: Ciclo principal 189a

5.7.1.2.1. Declaraci n de la funci n Las variables de entrada de esta funo o cin son los vectores c,d y e que almacenan los valores que denen la matr o z tridiagonal (ecuacin 5.50). Las variables de salida de esta funcin son los miso o mos vectores de entrada que han sido modicados y por lo tanto la funcin o queda denida de la siguiente forma:
LU Sistemas Tridiagonales: Declaracin funcin 188b o o function [c,d,e]=LUdec3(c,d,e)
Fragmento referenciado en 188a.

5.7.1.2.2. Inicializaci n de variables Para realizar la descomposicin LU o o de una matr tridiagonal es necesario determinar el n mero de ecuaciones que z u conforman dicho sistema, variable que se va a almacenar en n:

LU Sistemas Tridiagonales: Inicializacin variables 188c o n=length(d);


Fragmento referenciado en 188a.

5.7.1.2.3. Ciclo principal La descomposicin LU de una matr tridiagonal o z se implementa mediante un ciclo for, dentro del cual se dene el valor del multiplicador (ecuacin 5.52) que en este caso particular se almacena en la variable o lambda (ecuacin 5.53). Este lambda se almacena en el vector c, mientras que o el resultado del paso de la eliminacin se almacena en el vector d: o

5.7. MATRICES DE COEFICIENTES BANDEADAS


LU Sistemas Tridiagonales: Ciclo principal 189a for k=2:n; lambda=c(k-1,1)/d(k-1,1); d(k,1)=d(k,1)-lambda*e(k-1,1); c(k-1,1)=lambda; end;
Fragmento referenciado en 188a.

189

5.7.1.3.

Soluci n de sistemas tridiagonales o

Una vez se ha realizado la descomposicin LU de la matr tridiagonal con la o z funcin LUdec3 es posible avanzar hacia la solucin del sistema lineal de ecuao o ciones. Este es el objetivo de la funcin LUsol3 cuya estructura es la siguiente: o
"LUsol3.m" 189b Solucin Sistemas Tridiagonales: Declaracin funcin 189c o o o Solucin Sistemas Tridiagonales: Inicializacin variables 190a o o Solucin Sistemas Tridiagonales: Descomposicin LU 190b o o Solucin Sistemas Tridiagonales: Sustitucin hacia adelante 190c o o Solucin Sistemas Tridiagonales: Sustitucin hacia atrs 191 o o a

5.7.1.3.1. Declaraci n de la funci n o o cedimiento son las siguientes:

Las variables de entrada de este pro-

c, d, e vectores que denen la matr tridiagonal de coecientes (ver ecuaz cin 5.50) o b vector con los trminos independientes del sistema lineal de ecuaciones e La variable de salida corresponde al vector x que es donde se almacena la solucin del sistema. o
Solucin Sistemas Tridiagonales: Declaracin funcin 189c o o o function [x]=LUsol3(c,d,e,b)
Fragmento referenciado en 189b.

5.7.1.3.2. Inicializaci n de variables La solucin del sistema lineal con matr o o z de coecientes tridiagonal requiere conocer el n mero de ecuaciones del sisteu ma, el cual se determina como el n mero de elementos del vector d mediante la u funcin length y el cual se almacena en la variable n. o

190

CAPTULO 5. METODOS DIRECTOS I

Solucin Sistemas Tridiagonales: Inicializacin variables 190a o o n=length(d);

Fragmento referenciado en 189b.

5.7.1.3.3. Descomposici n LU Para obtener la solucin del sistema lineal o o de ecuaciones cuya matr de coecientes es de tipo tridiagonal se hace necesaz rio realizar la descomposicin LU de dicha matr lo cual se hace mediante el o z, siguiente fragmento de cdigo: o

Solucin Sistemas Tridiagonales: Descomposicin LU 190b o o [c,d,e]=LUdec3(c,d,e);


Fragmento referenciado en 189b.

5.7.1.3.4. Sustituci n hacia delante Se hace necesario denir un vector y o en donde se va a almacenar la solucin obtenida en el procedimiento de sustituo cin hacia delante. Este procedimiento se realiza de la forma usual, deniendo o el multiplicador y almacenando los resultados en el vector y:

Solucin Sistemas Tridiagonales: Sustitucin hacia adelante 190c o o y(1,1)=b(1,1); for k=2:n; y(k,1)=b(k,1)-c(k-1,1)*y(k-1,1); end;
Fragmento referenciado en 189b.

5.7.1.3.5. Sustituci n hacia atrs Una vez se ha realizado la sustitucin o a o hacia delante, la solucin del sistema lineal de ecuaciones especicado inicialo mente se obtiene mediante un procedimiento de sustitucin hacia atrs y el o a resultado se almacena en el vector x.

5.7. MATRICES DE COEFICIENTES BANDEADAS


Solucin Sistemas Tridiagonales: Sustitucin hacia atrs 191 o o a x(n,1)=y(n,1)/d(n,1); for k=n-1:-1:1; x(k,1)=(y(k,1)-e(k,1)*x(k+1,1))/d(k,1) end;
Fragmento referenciado en 189b.

191

192 5.7.1.4. Ejemplos


R

CAPTULO 5. METODOS DIRECTOS I

Ejemplo MATLAB

(Descomposicin LU de una matr tridiagonal) o z


R

Realice en MATLAB diagonal:

la descomposicin LU de la siguiente matr trio z 2 1 0 0 0 1 2 1 0 0 0 1 2 1 0 0 0 1 2 1 0 0 0 1 2

A=

En la seccin 5.7.1 se explica que las matrices tridiagonales se denen eso pecicando los valores de las diagonales que son no nulas, y las cuales se designan genricamente como c, d y e (ecuaciones 5.49 y 5.50). Para este e caso particular estos vectores son de tipo columna y se denen de la siguiente forma: c=[-1 -1 -1 -1]; d=[2 2 2 2 2]; e=[-1 -1 -1 -1]; Para realizar la descomposicin LU de este tipo de matrices se emplea la o funcin LUdec3.m denida en la seccin 5.7.1.2, y la cual se utiliza de la o o siguiente forma: >> [c1,d1,e1]=LUdec3(c,d,e) El resultado de la descomposicin LU de una matr tridiagonal corresponde o z a una matr L y otra matr U cuyas diagonales tienen los siguientes valores: z z >> [c1 e1] -0.5000 -0.6667 -0.7500 -0.8000 d1 = 2.0000 1.5000 1.3333 1.2500 1.2000 -1.0000 -1.0000 -1.0000 -1.0000

5.7. MATRICES DE COEFICIENTES BANDEADAS Ejemplo MATLAB


R

193

(Descomposicin LU de una matr tridiagonal) o z

Organizando los vectores obtenidos anteriormente se pueden denir las matrices L con la diagonal principal conformada por valores iguales a 1.0 (Descomposicin de Doolitle): o 1 0 0 0 0 0.5000 1 0 0 0 0 0.6667 1 0 0 L= 0 0 0.7500 1 0 0 0 0 0.8000 1 mientras que para la matr U la diagonal principal se encuentra conformada z por los elementos del vector d1 y la diagonal inferior corresponde al vector c1 2.0000 1 0 0 0 0 1.5000 1 0 0 0 0 1.3333 1 0 U= 0 0 0 1.2500 1 0 0 0 0 1.2000 Ahora estas dos matrices se ingregas en MATLAB R con el n de corroborar si efectivamente estas corresponden a una descomposicin LU de la matr o z A, lo cual se puede hacer mediante la siguiente l nea de cdigo: o >> L*U ans = 2 -1 0 0 0

-1 2 -1 0 0

0 -1 2 -1 0

0 0 -1 2 -1

0 0 0 -1 2

194 Ejemplo MATLAB


R

CAPTULO 5. METODOS DIRECTOS I (Solucin de un sistema tridiagonal) o

Resuelva el siguiente sistema lineal de ecuaciones 2 1 0 0 0 x1 1 2 1 0 0 x2 A = 0 1 2 1 0 x3 = 0 0 1 2 1 x4 0 0 0 1 2 x5

1 1 1 1 1

empleando el procedimiento de descomposicin LU para matrices tridiagoo nales. Nuevamente la matr de coecientes se especica deniendo los vectores z de los elementos no nulos tal como se explica en la seccin 5.7.1: o c=[-1 -1 -1 -1]; d=[2 2 2 2 2]; e=[-1 -1 -1 -1]; y el vector de trminos independientes b se dene de la siguiente forma: e b=ones(5,1); La solucin de los sistemas lineales de ecuaciones con matrices de coeo cientes que son matrices tridiagonales se explica en la seccin 5.7.1.3 y se o encuentra implementado en la funcin LUsol3.m . Para este problema partio cular la solucin del sistema se puede obtener de la siguiente forma: o >> [x]=LUsol3(c,d,e,b) y la solucin obtenida en este caso est dada por: o a x = 2.5000 4.0000 4.5000 4.0000 2.5000

Captulo 6 Soluci n de sistemas lineales de o ecuaciones: Mtodos iterativos e


6.1. Introducci n o

Los mtodos directos estudiados en el cap e tulo anterior son importantes en 2 casos: Los sistemas de ecuaciones sean peque os, es decir, si los tama os n de los n n mismos no son mayores a 50. Las matrices de coecientes de dichos sistemas son de tipo denso. En general estas dos caracter sticas aparecen juntas, y en el caso en donde el sistema lineal de ecuaciones sea grande (100 100 o dimensiones mayores), la matr de coecientes A ser de tipo disperso. z a Si las matrices de coecientes son de tipo disperso la utilizacin de un mtodo o e directo desperdicia tanto espacio de almacenamiento como operaciones computacionales, por lo que en muchas oportunidades la velocidad de ejecucin de los o mismos se ve seriamente afectada.

6.2.

Mtodos Iterativos e

La idea central de los mtodos iterativos para la solucin de un sistema lineal e o de ecuaciones A x = b consiste en encontrar un vector solucin xk lo sucieno temente cercano al vector solucin x a partir de una solucin inicial x0 mediante o o la aplicacin de una regla de actualizacin dada. o o

195

196

CAPTULO 6. METODOS ITERATIVOS I

Una posible forma para denir dicha regla de actualizacin consiste en supoo ner que la matr de coecientes A se puede expresar como z A = B + (A B) (6.1)

donde B es una matr no singular. De acuerdo con esto el sistema lineal de z ecuaciones original: Ax=b (6.2) se puede expresar como: [B + (A B)] x = b B x + (A B) x = b (6.3)

de tal forma que si se quiere despejar x debemos premultiplicar por B1 a ambos lados: B1 B x + B1 (A B) x = B1 b (6.4) con lo cual se obtiene: x + B1 (A B) x = B1 b y reorganizando para despejar x: x = B1 (B A) x + B1 b x = (I B1 A) x + B1 b (6.6) (6.5)

con lo cual resulta evidente la razn por la cual B deber cumplir la condicin o o de ser no singular. Por lo tanto resolver el sistema lineal original A x = b es equivalente a resolver una ecuacin no lineal de la forma x = g(x), la cual se o puede resolver empleando el procedimiento denominado iteracin de punto jo, o en el cual la solucin se puede obtener mediante el siguiente esquema iterativo: o xk+1 = (I B1 A) xk + B1 b (6.7)

en donde para obtener la solucin en la iteracin k + 1 se requiere tener una o o aproximacin de la solucin en la iteracin anterior k. La ecuacin anterior se o o o o puede expresar de forma compacta como: xk+1 = Gxk + g (6.8)

donde G = (I B1 A) y se denomina la matr de iteracin y el vector z o 1 g = B b. Para poder aplicar este esquema iterativo en la prctica, lo unico a que se desconoce en la ecuacin 6.8 es denir la matr B. Hasta el momento lo o z unico que se sabe de ella es que no puede ser singular, sin embargo esto no es

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION

197

un criterio suciente para denirla completamente. Generalmente esta matr z depende de la matr A, la cual se puede descomponer de la siguiente forma: z A = AL + AD + AU donde AL es una matr triangular de la forma: z AL = 0 0 a21 0 . .. ... . . . an1 an,n1 0 0 . . . 0 (6.9)

mientras que AD es una matr diagonal: z AD = diag(A) La matr AU tiene la siguiente forma: z 0 a12 a1n . .. .. . . . . . . AU = . 0 0 an1,1 0 0 0

Cada mtodo iterativo dene su propia matr B lo que a su vez determinar la e z matr de iteracin particular G, y de ah el mtodo particular y la convergencia z o e del mismo.

6.3.

Mtodo de Gauss-Seidel y Relajaci n e o

El mtodo de Gauss-Seidel, es un mtodo iterativo y por lo mismo, resulta e e ser un mtodo bastante eciente que se aplica com nmente en problemas en e u donde la matr de coecientes es de tipo diagonal dominante. z Denici n 28 o Se dice que una matr A es de tipo diagonal dominante si los valores sobre z las diagonales son mayores en valor absoluto que la suma de los valores absolutos de los restantes coecientes, es decir:
n

|aii | >
i=1

|aij |,

j = 1, . . . , n,

i=j

(6.10)

198

CAPTULO 6. METODOS ITERATIVOS I

Por ejemplo el siguiente sistema lineal de ecuaciones 10x1 + 2x2 + 3x3 = 6 x1 + 8x2 2x3 = 9 3x1 x2 7x3 = 33 se puede expresar como: 10 2 3 x1 6 1 8 2 x2 = 9 3 1 7 x3 33

(6.11)

(6.12)

Comenzamos con nuestro sistema de ecuaciones dado por la ecuacin 5.1. o De la ecuacin 1 despejamos x1 , de la ecuacin 2 despejemos x2 ; y as sucesio o vamente hasta que de la ecuacin n despejemos xn , con lo cual se obtiene: o 7.85 + 0.1x2 + 0.2x3 3 19.3 0.1x1 + 0.3x3 x2 = 7 71.4 0.3x1 + 0.2x2 x3 = 10 x1 = Si suponemos que x2 = 0, x3 = 0 entonces: x1 = 7.85 + 0 + 0 = 2.616667 3 (6.14)

(6.13)

Y este resultado, junto con x3 se reemplaza para obtener: x2 = 19.3 0.1(2.616667) + 0 = 2.794524 7 (6.15)

La primera iteracin naliza cuando se obtiene x3 o x3 = 71.4 0.3(2.616667) + 0.2(2.794524) = 7.005610 10 (6.16)

Si este procedimiento se repite se obtienen los siguientes resultados: Iteraci n o 2 3 4 5 x1 2.990557 3.0000319 3.0000004 3.0000000 x2 - 2.4996247 - 2.499988 - 2.500000 -2.500000 x3 7.0002908 6.9999993 7.0000000 7.0000000 0.2095451 0.1087369 0.0001866 0.0000044

Si los valores anteriores de x1 , x2 , x3 se reemplazan nuevamente en las ecuaciones 6.13 se obtiene:

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION

199

b1 a22 x2 a1n xn a11 b2 a21 x1 a2n xn x2 = a22 . . . x1 = xn = bn a11 x1 ann1 xn1 ann

(6.17)

las cuales constituyen las expresiones a emplear en un esquema iterativo para la obtencin de la solucin. Para iniciar con dicho procedimiento seleccionamos o o un conjunto de valores iniciales para las variables x1 , x2 , . . . , xn . Estos valores iniciales pueden ser iguales a 0, o valores aleatorios. Con los valores iniciales de x2 , x3 , . . . , xn es posible obtener un valor actualizado para x1 empleando la expresin de la ecuacin 6.17. o o El sistema lineal de ecuaciones A x = b en notacin escalar: o
n

Aij xj = bi ,
j=1

i = 1, 2, . . . , n

(6.18)

Al extraer los trminos xj se tiene: e


n

Aii xi +
j=1 j=i

Aij xj = bi ,

i = 1, 2, . . . , n

(6.19)

Despejando xi se tiene: xi = 1 b i Aii


n

Aij xj , i = 1, 2, . . . , n (6.20)

j=1 j=i

y del cual se desprende el esquema iterativo: 1 b i xi Aii


n

j=1 j=i

Aij xj ,

i = 1, 2, . . . , n

(6.21)

Con el n de mejorar la velocidad de convergencia del mtodo, el esquema e de solucin (ecuacion 6.21) se modica teniendo en cuenta tanto la solucin o o en la iteracin k como en la iteracin k 1. La nueva solucin es un promedio o o o

200 ponderado de solucin actual y anterior: o bi xi Aii


n

CAPTULO 6. METODOS ITERATIVOS I

Aij xj + (1 )xi , i = 1, 2, . . . , n (6.22)

j=1 j=i

donde es un factor de ponderacin que va a controlar la contribucin de cada o o una de las soluciones obtenidas hasta el momento. Se pueden considerar dos casos: < 1.0: Este opcin se conoce como la sub-relajacin o o > 1.0: sobre-relajacin o El mtodo de Gauss-Seidel para la solucin de sistemas de ecuaciones lineae o les se puede expresar como un mtodos iterativo en donde B = (AD + AL ) y e por lo tanto la matr de iteracin (ecuacin 6.8) se puede expresar como: z o o G = I B1 A = I (AD + AL )1 (AL + AD + AR ) = (AD + AL )1 AR y el esquema iterativo completo estr dado por: a a xk+1 = (AD + AL )1 AR xk + (AD + AL )1 b (6.24)

(6.23)

Para el caso de la relajacin, se parte de la ecuacin anterior y sabiendo que o o la solucin del sistema en una iteracin dada xk+1 depende de la solucin en la o o o iteracin actual k + 1 y de la iteracin anterior k, de tal forma que si se dene o o la solucin en la iteracin actual como zk+1 se tiene: o o z+1 = (AD + AL )1 AR xk + (AD + AL )1 b (6.25)

con lo cual la solucin del sistema usando relajacin se puede obtener: o o xk+1 = (1 )xk + zk+1 = (1 )I A1 (AL + AR ) xk + A1 b D D
G

(6.26)

y donde la matr B est dada por: z a B = AD 1 (6.27)

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION

201

6.3.1.

Soluci n de sistemas lineales de ecuaciones usando el o mtodo de GaussSeidel e

La solucin de sistemas lineales de ecuaciones usando este procedimiento o viene implementado en una funcin cuya estructura es la siguiente: o
"GaussSeidel.m" 201a GaussSeidel: Declaracin de la funcin 201b o o GaussSeidel: Inicializacin de variables 202a o GaussSeidel: Escalamiento 202b GaussSeidel: Obtener solucin inicial 203a o GaussSeidel: Ciclo Principal 203b

6.3.1.1.

Gauss-Seidel: Declaraci n de la funci n o o

Esta funcin tiene las siguientes variables de entrada: o A: matr de coecientes del sistema lineal de ecuaciones z b: vector con los trminos independientes del sistema lineal de ecuaciones e x0 : vector de solucin inicial (pueden ser 0s o valores aleatorios) o : Parmetro que controla el nivel de relajacin para la solucin del sisa o o tema. Si < 1 se tiene el mtodo de sub-relajacin, si > 1 se tiene el e o mtodo de sobre-relajacin y si = 1 se tiene el mtodo de Gauss-Seidel e o e tradicional. maxit: N mero mximo de iteraciones u a errmin: error relativo m nimo para la detencin del procedimiento iterao tivo Las variables de salida de esta funcin corresponden a: o x: vector con la solucin del sistema lineal de ecuaciones o iter: N mero de iteraciones empleado para alcanzar la solucin u o
GaussSeidel: Declaracin de la funcin 201b o o function [x,iter]=GaussSeidel(A,b,x0,omega,maxit,errmin)
Fragmento referenciado en 201a.

202 6.3.1.2.

CAPTULO 6. METODOS ITERATIVOS I Gauss-Seidel: Inicializaci n de variables o

En esta seccin se denen las siguientes variables: o n almacena el n mero de ecuaciones del sistema lineal en estudio (este u n mero se obtiene usando el comando length) u x: esta variable corresponde a la solucin del sistema lineal de ecuaciones o y se inicializa con el vector x0 . iter: contador para el n mero de iteraciones. Este valor se inicializa en 0. u err: error relativo de la solucin actual. Este valor se inicializa en 100. o
GaussSeidel: Inicializacin de variables 202a o n=length(b); x=x0; iter=0; err=100;
Fragmento referenciado en 201a.

6.3.1.3.

Escalamiento

Para comenzar a solucionar el sistema lineal de ecuaciones, los valores de los coecientes se dividen por el valor del coeciente que se encuentra en la diagonal:
GaussSeidel: Escalamiento 202b for i=1:n; temp=A(i,i); for j=1:n; A(i,j)=A(i,j)/temp; end; b(i)=b(i)/temp; end;
Fragmento referenciado en 201a.

6.3.1.4.

Obtenci n de Soluci n inicial o o

En esta parte se utilizan los valores de la solucin inicial x0 y se calcula una o nueva solucin del sistema de ecuaciones. o

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION


GaussSeidel: Obtener solucin inicial 203a o for i=1:n; suma=b(i); for j=1:n; if (i~=j); suma=suma+A(i,j)*x(j); end end; x(i)=suma; end;
Fragmento referenciado en 201a.

203

6.3.1.5.

Gauss-Seidel: Ciclo principal

El ciclo principal incluye las operaciones ms importantes del procedimiento a de Gauss-Seidel. Estas son:

Actualizacin de la solucin: en la cual se propone una nueva solucin a o o o partir de la solucin inicial o la obtenida en la iteracin anterior. o o

Determinacin del error: Con la nueva solucin actualizada se calcula el o o error relativo con el n de determinar si el procedimiento ha presentado convergencia.

GaussSeidel: Ciclo Principal 203b while (iter<=maxit & err>errmin); Ciclo Principal GaussSeidel: Actualizacin de la solucin 204a o o Ciclo Principal GaussSeidel: Clculo del error e incremento de las iteraciones 204b a end;

Fragmento referenciado en 201a.

6.3.1.5.1. Actualizaci n soluci n Aqu es necesario reemplazar los valores o o de la solucin actual y con ellos determinar unos nuevos valores de las incgnio o tas usando el procedimiento descrito por la ecuacin 6.21 o

204

CAPTULO 6. METODOS ITERATIVOS I

Ciclo Principal GaussSeidel: Actualizacin de la solucin 204a o o for i=1:n; xold=x(i); suma=b(i); for j=1:n; if (i~=j); suma=suma-A(i,j)*x(j) end end; x(i)=omega*suma+(1.-omega)*xold; end
Fragmento referenciado en 203b.

6.3.1.5.2. Clculo del error En esta parte se calcula cual es el error relatia vo obtenido por la solucin propuesta y adems se incrementa el n mero de o a u iteraciones del procedimiento.
Ciclo Principal GaussSeidel: Clculo del error e incremento de las iteraciones 204b a

err=abs((x(i)-xold)./x(i))*100; iter=iter+1;
Fragmento referenciado en 203b.

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION

205

6.3.2.

Ejemplos

Ejemplo (Aplicacin del mtodo de Gauss-Seidel) o e Resuelva el siguiente sistema lineal de ecuaciones: 4 1 1 x1 12 1 4 2 x2 = 1 1 2 4 x3 5 usando el mtodo de Gauss-Seidel. e Para aplicar este procedimiento iterativo despejamos las incgnitas x1 ,x2 y x3 o con lo cual se obtiene: 12 + x2 x3 x1 = 4 1 + x1 2x3 x2 = 4 5 x1 + 2x2 x3 = 4 y seleccionando como solucin inicial el vector: o 0 x= 0 0 se puede calcular la primera iteracin del mtodo de Gauss-Seidel usando las o e ecuacin 6.21: o 12 + 0 0 = 3.0 x1 = 4 1 + 3.0 2 0 x2 = = 0.5 4 5 3.0 + 2 0.5 x3 = = 0.75 4 La segunda iteracin de este procedimiento nos permite obtener: o 12 + 0.5 0.75 = 2.9375 4 1 + 2.9375 2 0.75 x2 = = 0.85938 4 5 2.9375 + 2 0.85938 x3 = = 0.94531 4 x1 =

206 y para la tercera iteracin se obtiene: o

CAPTULO 6. METODOS ITERATIVOS I

12 + 0.85938 0.94531 = 2.97852 4 1 + 2.97852 2 0.94531 x2 = = 0.96729 4 5 2.97852 + 2 0.96729 x3 = = 0.98902 4 x1 =

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION Ejemplo MATLAB


R

207

(Aplicacin del mtodo de Gauss-Seidel) o e

Resuelva el siguiente sistema lineal de ecuaciones 4 1 1 x1 12 1 4 2 x2 = 1 1 2 4 x3 5 usando el mtodo iterativo de Gauss-Seidel en MATLAB R . Para realizar e este procedimiento se procede a la denicin de la matr de coecientes, lo o z cual se hace de la siguiente forma: >> A=[4 -1 1;-1 4 -2;1 -2 4]; al igual que el vector de trminos independientes del sistema: e >> b=[12 -1 5]; Debido a que el mtodo de Gauss-Seidel es de naturaleza iterativa, se hace e necesario especicar una solucin inicial x0 que en este caso es un vector o cuyos elementos son iguales a 0.0: >> x0=zeros(3,1); Para solucionar este sistema lineal de ecuaciones, se va a utilizar la funcin o GaussSeidel.m denida en el presente cap tulo, para la cual es necesario especicar la matr de coecientes A, el vector de trminos independientes z e b, la solucin inicial x0, el factor que en este caso es igual a 1.0, el n mero o u mximo de iteraciones 10 y el error m a nimo 1.0 105 de la siguiente forma: >>[x,iter]=GaussSeidel(A,b,x0,1,100,1e-5); El resultado se obtiene en 11 iteraciones, y es el siguiente: >> x x = 3.0000 1.0000 1.0000

208 Ejemplo MATLAB


R

CAPTULO 6. METODOS ITERATIVOS I (Aplicacin del mtodo de la sub-relajacin) o e o

Resuelva el siguiente sistema lineal de ecuaciones usando el mtodo de e sub-relajacin con un = 0.5, un mximo de iteraciones de 100 y un error o a m nimo de 1.0 105 4 1 1 x1 12 1 4 2 x2 = 1 1 2 4 x3 5 Para proceder con la solucin de este problema en MATLAB R es necesario o denir la matr de coecientes y el vector de trminos independientes, lo z e cual se hace como en el ejemplo anterior. Al estar basado en el mtodo de e GaussSeidel, la sub-relajacin requiere de una solucin inicial, la que en este o o caso es igual a un vector de 0.0: >> x0=zeros(3,1); El procedimiento de sub-relajacin se encuentra implementado en la misma o funcin GaussSeidel.m de tal forma que para utilizarlo se debe denir el o valor del , que en este caso es 0.5. As mismo se dene el n mero mximo u a de iteraciones y el error m nimo: >>omega=0.5;max_iter=100;min_err=1.0e-5; con lo cual se puede invocar la funcin respectiva o >>[x,iter]=GaussSeidel(A,b,x0,omega,max_iter,min_err); Evidentemente la solucin obtenida es la misma que en el caso de GaussSeio del: x = 3.0000 1.0000 1.0000 sin embargo esta solucin y su respectivo valor de tolerancia se han alcano zado en 41 iteraciones, indicando que la sub-relajacin para este problema o particular tiene una velocidad de convergencia ms lenta que GaussSeidel. a

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION Ejemplo MATLAB


R

209

(Aplicacin del mtodo de la sobre-relajacin) o e o

Resuelva el siguiente sistema lineal de ecuaciones usando el mtodo de e sobre-relajacin con un = 1.5, un mximo de iteraciones de 100 y un error o a m nimo de 1.0 105 4 1 1 x1 12 1 4 2 x2 = 1 1 2 4 x3 5 Para proceder con la solucin de este problema en MATLAB R es necesario o denir la matr de coecientes y el vector de trminos independientes, lo z e cual se hace como en el ejemplo anterior. Al estar basado en el mtodo de e GaussSeidel, la sobre-relajacin requiere de una solucin inicial, la que en o o este caso es igual a un vector de 0.0: >> x0=zeros(3,1); El procedimiento de sobre-relajacin se encuentra implementado en la miso ma funcin GaussSeidel.m de tal forma que para utilizarlo se debe denir el o valor del , que en este caso es 0.5. As mismo se dene el n mero mximo u a de iteraciones y el error m nimo: >>omega=0.5;max_iter=100;min_err=1.0e-5; con lo cual se puede invocar la funcin respectiva o >>[x,iter]=GaussSeidel(A,b,x0,omega,max_iter,min_err); La solucin obtenida es la misma que en el caso de GaussSeidel: o x = 3.0000 1.0000 1.0000 sin embargo esta solucin y su respectivo valor de tolerancia se han alcanzao do en 26 iteraciones, indicando que la sobre-relajacin tiene una velocidad o de convergencia ms lenta que GaussSeidel, pero mayor que el mtodo de la a e sub-relajacin. o

210

CAPTULO 6. METODOS ITERATIVOS I

6.4.
6.4.1.

Gradiente Conjugado
Fundamentos conceptuales

El mtodo del gradiente conjugado es un algoritmo que se emplea para la e solucin de sistemas lineales de ecuaciones Ax = b en los cuales la matr de o z coecientes A es simtrica y denida positiva. As mismo, este mtodo generale e mente se aplica cuando el sistema lineal es grande y la matr de coecientes es z de tipo disperso. En estos casos los mtodos directos como la eliminacin gause o siana y la descomposicin LU presentan problemas de eciencia y por lo tanto o este mtodo se convierte en una alternativa viable para la solucin de este tipo e o de problemas. Para entender este mtodo es necesario iniciar con la denicin de vectores e o conjugados: Denici n 29 o Se dice que dos vectores v y u son conjugados (con respecto a A) si se cumple: uT Av = 0 (6.28)

La ecuacin 6.28 corresponde a la denicin del producto escalar de dos vectoo o res, y de lo cual se deduce que dos vectores son conjugados entre ellos si son ortogonales, es decir, si su producto interno es igual a 0. Supongamos que se tiene una secuencia {pk } de n direcciones conjugadas (ortogonales). Entonces, los vectores que representan dichas direcciones pk se pueden considerar como una base del espacio Rn . Denici n 30 o Una base B de un espacio vectorial V es un subcojunto linealmente independiente de V que genera ese espacio Vectorial. La importancia de las bases radica en que a partir de los elementos de estas es posible generar todos los elementos que conforman el espacio vectorial en cuestin. Como ejemplo se pueden mencionar los vectores unitarios i,j y k. o Como los vectores pk forman una base del espacio Rn entonces el vector solucin x de Ax = b se puede expandir en esta base: o x = 1 p1 + 2 p2 + + n pn donde los k son los coecientes de dicha expansin. o (6.29)

6.4. GRADIENTE CONJUGADO Reemplazando esta solucin en el sistema original se tiene: o Ax = 1 Ap1 + 2 Ap2 + + n Apn = b Para determinar los coecientes k premultiplicamos por pT : k pT Ax = pT 1 Ap1 + pT 2 Ap2 + + pT n Apn = k pT Apk = pT b k k k k k k y despejando k se tiene: k = pT b k T pk Apk

211

(6.30)

(6.31)

(6.32)

Con esto se obtienen los coecientes k y se puede resolver el sistema Ax = b. El procedimiento general para aplicar este mtodo es el siguiente: e Denir un conjunto de n direcciones conjugadas pk Calcular los coecientes k a partir de las mismas El mtodo del gradiente conjugado es una herramienta util para la solucin de e o sistemas lineales de ecuaciones, tales como los que aparecen en la discretizacin o de ecuaciones diferenciales parciales. Este mtodo se basa en la minimizacin e o de la funcin de la norma cuadrtica, la cual est denida como: o a a 1 f (x) = xT Ax bT x 2 en donde se requiere que A sea simtrica y denida positiva. e Los mtodos de gradiente permite realizar la minimizacin de la funcin f (x) e o o partiendo de una solucin inicial x0 , y modicando dicha solucin: o o xk = xk1 + k sk (6.34) (6.33)

donde k es el incremento y sk es la direccin de b squeda. Debido a que xk+1 o u debe satisfacer el sistema lineal A x = b se tiene: A(xk + k sk ) = b y el residual se puede denir como: rk = b A xk el cual es igual a: rk = Ask (6.37) (6.36) (6.35)

212

CAPTULO 6. METODOS ITERATIVOS I

Para despejar premultiplicamos a ambos lados por sT con lo cual se obtiek ne: k = sT rk k sT Ask k (6.38)

Sin embargo a n queda por determinar sk . Para esto se selecciona la direccin u o de mayor inclinacin en cada punto, la cual es igual a f = rk La direccin o o de b squeda ms apropiada corresponde a: u a sk+1 = rk+1 + k sk de tal forma que: k = rT Ask k+1 sT Ask k (6.40) (6.39)

6.4.2.

Interpretaci n grca del mtodo del Gradiente Cono a e jugado

6.1 Con el n de entender mejor el mtodo del gradiente conjugado, se va a e presentar de forma grca. Suponga que se quiere resolver el siguiente sistema a lineal de ecuaciones: 2 2 1 3 x1 x2 = 3 5 (6.41)

empleando el mtodo del gradiente conjugado. La solucin de este sistema es: e o x= 1 1 (6.42)

Como se explic anteriormente, este mtodo de solucin se basa en la minio e o mizacin de la Norma cuadrtica (ver ecuacin 6.33), la cual una vez calculada o a o se representa mediante contornos en la gura 6.1. La solucin del sistema coo rresponde al punto en donde dicha funcin es m o nima. En este caso particular se asume que la solucin inicial corresponde al vector: o x0 = 4 3

La losof del mtodo consiste en descender por dicha supercie a partir de a e una solucin inicial x0 , estableciendo un conjunto de direcciones conjugadas o (perpendiculares u ortogonales) para llegar al m nimo de la funcin de noro ma cuadrtica. Para esto es necesario establecer la denominada direccin de a o b squeda sk , as como tambin la distancia que hay que moverse en dicha diu e reccin k . Una vez se han determinado estos dos valores la nueva solucin del o o

6.4. GRADIENTE CONJUGADO

213

sistema lineal de ecuaciones est dado por la ecuacin 6.34. Esta nueva solucin a o o representa otro punto sobre la supercie de la norma cuadrtica y aqu se aplica a nuevamente el procedimiento, se determinar una nueva direccin de b squeda o u s1 y se calcula cuanto hay que moverse en esta a1 , con lo cual se dene una nueva solucin que corresponde a x2 . Este procedimiento se repite hasta que o se haya encontrado un punto para el cual la norma del vector residual rk sea menor a la establecida inicialmente, en cuyo caso se dice que se ha encontrado la solucin del sistema lineal de ecuaciones. Este procedimiento se encuentra o representado grcamente en la gura 6.1, en donde la solucin del sistema se a o encuentra representada por el punto de color negro.

10

80 70

60

50

40
30

100

90

0 3 9 80 0 2 7
1

50
60

40

30

20
20 15
8

15

80

10
70

40
50

30 20 15
4
10

10 86

4
2

6
60

0 0 0 0 0 0 0 0 0 0 0 0

30
1

15

20

86

10

50

40

30

20

10

0 2

10

15

20

2
4

8
30
10

6 8 8 8 8 8 8 8 8 8 8 8 8
4 3

6
8

5 5

10
0

15
1

20
2 3 4

40
50
5 0

Figura 6.1: Solucin de un sistema lineal de ecuaciones usando gradiente cono jugado

214

CAPTULO 6. METODOS ITERATIVOS I

6.4.3.

Soluci n de sistemas de ecuaciones lineales por medio o del Gradiente Conjugado

La estructura de la funcin que implementa el mtodo del gradiente conjuo e gado es la misma de cualquier mtodo iterativo, y es la siguiente: e
"GradienteConjugado.m" 214a GradienteConj: declaracin de la funcin 214b o o GradienteConj: Inicializacin de variables 215a o GradienteConj: Ciclo principal 215b

6.4.3.1.

Declaraci n de la funci n o o

La funcin que implementa el gradiente conjugado tiene las siguientes vao riables de entrada: x0: vector de n 1 con la solucin inicial del sistema (pueden ser 0 o o n meros aleatorios). u A: matr de coecientes del sistema. de tama o n n. z n b: vector de n 1 con los trminos independientes del sistema en estudio. e itmax: n mero mximo de iteraciones u a errmin: error m nimo que debe alcanzar la solucin para ser considerada o como satisfactoria. Las variables de salida son las siguientes: x: vector de n 1 con la solucin del sistema o er: vector con el error incurrido en cada iteracin o par: vector con los valores de y obtenidos en cada iteracin o iter: n mero de iteraciones requeridas para obtener la solucin. u o
GradienteConj: declaracin de la funcin 214b o o function [x,er,par,iter]=GradienteConjugado(x0,A,b,itmax,errmin)
Fragmento referenciado en 214a.

6.4. GRADIENTE CONJUGADO 6.4.3.2. Inicializaci n de variables o

215

Para realizar los diferentes clculos que requiere la aplicacin del mtodo a o e del gradiente conjugado es necesario inicializar las siguientes variables: r: vector de n 1 con el residual. s: iter: contador para las iteraciones err: variable para almacenar el error relativo de la iteracin actual o El vector solucin x se inicializa con el valor de la solucin inicial. o o
GradienteConj: Inicializacin de variables 215a o r=b-A*x0; s=r; iter=0; err=100; x=x0;
Fragmento referenciado en 214a.

6.4.3.3.

Ciclo principal

El mtodo del gradiente conjugado al ser un mtodo iterativo requiere de e e una regla de actualizacin que se aplica de forma repetida. Ya que no hay maneo ra de saber cuantas iteraciones se requieren para que se presente convergencia a la solucin deseada, este procedimiento emplea un ciclo while, la estructura o del mismo es la siguiente:
GradienteConj: Ciclo principal 215b while ((err>=errmin) & (iter <= itmax)); Ciclo Principal GradienteConj: Clculo del 216a a Ciclo Principal GradienteConj: Actualizacin de la solucin 216b o o Ciclo Principal GradienteConj: Clculo del residuo 216c a Ciclo Principal GradienteConj: Determinacin de direccin de b squeda 216d o o u Ciclo Principal GradienteConj: Calculo de error e incrementar iteraciones 217 end;
Fragmento referenciado en 214a.

216

CAPTULO 6. METODOS ITERATIVOS I

6.4.3.3.1. Clculo del El valor de corresponde al valor de los coeciena tes de la expansin de la solucin o o
Ciclo Principal GradienteConj: Clculo del 216a a alpha=(s*r)/(s*A*s);
Fragmento referenciado en 215b.

6.4.3.3.2. Actualizaci n de la soluci n La nueva solucin se calcula a partir o o o de la solucin anterior xk y de la direccin de b squeda sk : o o u
Ciclo Principal GradienteConj: Actualizacin de la solucin 216b o o x=x+alpha*s;
Fragmento referenciado en 215b.

6.4.3.3.3. Clculo del residuo Una vez se ha calculado la nueva solucin es a o posible determinar el valor del vector residual:
Ciclo Principal GradienteConj: Clculo del residuo 216c a r=b-A*x;
Fragmento referenciado en 215b.

6.4.3.3.4. Determinaci n de direcci n de b squeda Con el vector residual o o u se calcula la nueva direccin para avanzar hacia la solucin del sistema lineal, o o para lo cual se determina el valor de k que corresponde a un factor de correccin que asegura que la nueva direccin sea perpendicular a al anterior: o o
Ciclo Principal GradienteConj: Determinacin de direccin de b squeda 216d o o u bet=-(r*A*s)/(s*A*s); s=r+bet*s;
Fragmento referenciado en 215b.

6.4.3.3.5. Error e incremento de iteraciones El error relativo se calcula como la norma del vector residual, y con esto se puede determinar si el procedimiento ha presentado convergencia:

6.4. GRADIENTE CONJUGADO


Ciclo Principal GradienteConj: Calculo de error e incrementar iteraciones 217 err=abs(max(sum(r.*r))); iter=iter+1; er(iter,1)=err; par(iter,1)=alpha; par(iter,2)=bet;
Fragmento referenciado en 215b.

217

218

CAPTULO 6. METODOS ITERATIVOS I

6.4.4.

Ejemplos

Ejemplo (Solucin de sistema de ecuaciones lineales usando GC) o Resuelva el siguiente sistema lineal de ecuaciones diente conjugado: 4 1 1 x1 1 4 2 x2 = 1 2 4 x3 Inicializaci n o 0 x0 = 0 0 uasndo el mtodo del grae 12 1 5

calcule el residuo r = b Ax0 0 12 12 4 1 1 = 1 1 4 2 0 = 1 5 1 2 4 0 5 la direccin de b squeda queda denida como: o u 12 s0 = r0 = 1 5 Para calcular el incremento en la direccin de b squeda se requiere o u 4 1 1 12 54 As0 = 1 4 2 1 = 26 1 2 4 5 34 de tal forma que el valor de dicho incremento es igual a: 0 = 122 + (1)2 + 52 sT r0 0 = = 0.20142 12(54) + (1)(26) + 5(34) sT As0 0

la nueva solucin est dada por: o a 0 12 2.41704 x1 = x0 + 0 s0 = 0 + 0.20142 1 = 0.20142 0 5 1.00710

6.4. GRADIENTE CONJUGADO y el residuo para esta nueva aproximacin est dado por: o a

219

r1 = b Ax1 12 4 1 1 2.41704 5.59656 = 1 1 4 2 0.20142 = 16.05980 5 1 2 4 1.00710 10.21760 1.12332(54) + 4.23692(26) 1.84828(34) rT As0 1 = = 0.133107 T 12(54) + (1)(26) + 5(34) s0 As0

0 =

1.12332 12 2.72076 s1 = r1 + 0 s0 = 4.23692 + 0.133107 1 = 4.10380 1.84828 5 1.18268 Iteraci n 1 El incremento en la direccin de b squeda es igual a: o o u 1 = sT r1 1 sT As1 1 2.72076(1.12332) + 4.10380(4.23692) + (1.18268)(1.84828) = 2.72076(5.59656) + 4.10380(16.05980) + (1.18268)(10.21760) = 0.24276

2.41704 2.72076 3.07753 x2 = x1 + 1 s1 = 0.20142 + 0.24276 4.10380 = 0.79482 1.00710 1.18268 0.71999 12 4 1 1 3.07753 r2 = b Ax2 = 1 1 4 2 0.79482 5 1 2 4 0.71999 rT As1 2 sT As1 1 (0.23529)(5.59656) + 0.33823(16.05980) + 0.63215(10.21760) = 2.72076(5.59656) + 4.10380(16.05980) + (1.18268)(10.21760) = 0.0251452

1 =

0.23529 2.72076 0.166876 s2 = r2 +1 s1 = 0.33823 +0.0251452 4.10380 = 0.441421 0.63215 1.18268 0.602411

220 Iteraci n 2 o

CAPTULO 6. METODOS ITERATIVOS I

2 =

rT s2 2 sT As2 2 (0.23529)(0.166876) + 0.33823(0.441421) + 0.63215(0.602411) = (0.166876)(0.506514) + 0.441421(0.727738) + 0.602411(1.359930) = 0.46480

3.07753 0.166876 2.99997 x3 = x2 + 2 s2 = 0.79482 + 0.46480 0.441421 = 0.99999 0.71999 0.602411 0.99999

6.4. GRADIENTE CONJUGADO Ejemplo MATLAB


R

221

(Solucin de sistema de ecuaciones lineales usando GC) o

Resuelva el siguiente sistema lineal de ecuaciones 4 1 1 x1 12 1 4 2 x2 = 1 1 2 4 x3 5 usando el mtodo del Gradiente Conjugado en MATLAB e inicial de 0.
R

con una solucin o

Para proceder con la solucin de este problema se hace necesario denir o la matr de coecientes, lo cual se hace de la siguiente forma: z A=[4 -1 1;-1 4 -2;1 -2 4]; junto con el vector de trminos independientes: e b=[12 -1 5]; El vector de solucin inicial se dene de la siguiente manera: o x0=zeros(3,1); y el mtodo del Gradiente conjugado se encuentra implementado en la fune cin GradienteConjugado.m , el cual en este caso se ejecuta para un mximo o a de 100 iteraciones y con un error m nimo de 1.0 105 : [x,er,par,iter]=GradienteConjugado(x0,A,b,100,1.0e-5); con el cual se obtiene la solucin en un n mero de iteraciones igual a: o u iter = 3 siendo la solucin obtenida: o x = 3.0000 1.0000 1.0000

222

CAPTULO 6. METODOS ITERATIVOS I

6.5.
6.5.1.

Gradiente Conjugado Precondicionado


Fundamentos conceptuales

La gran mayor de los sistemas lineales que aparecen de la discretizacin de a o las ecuaciones diferenciales parciales se encuentran mal condicionados y por lo tanto su solucin presentan problemas de estabilidad numrica. En estos casos o e resulta util la utilizacin de un precondicionador de tal forma que el sistema se o pueda resolver de forma ms rpida. a a

Denici n 31 o Un precondicionador es una matr P tal que P1 A tiene un n mero de z u condicin menor que A de tal forma que al resolver el sistema lineal de o ecuaciones dado por P1 Ax = b es mucho ms eciente que la solucin del a o sistema original Ax = b Existen diferentes tipos de precondicionador entre los cuales se pueden mencionar: Precondicionador de Jacobi corresponde a una matr diagonal D con los elez mentos de la diagonal de A, es decir: P = diag(A) (6.43) Este precondicionador tiene la ventaja de ser fcil de denir, y como es a una matr diagonal, su inversa es muy sencillo de calcular. z Precondicionador Diagonal este se dene a patir del valor de la norma vectorial de los coecientes de una ecuacin particular: o P = ||Ai ||, i = 1, . . . , n (6.44)

Precondicionador de Gauss-Seidel :La aplicacin de este precondicionador se o basa en la siguiente descomposicin: o A = L + D + LT (6.45) donde L que contiene la porcin triangular inferior de A y D es una matr o z con los valores de la diagonal de A. P = (D + L)D1 (D + LT ) (6.46)

Precondicionador de Relajaci n Sucesiva Este precondicionador est basado o a en la descomposicin dada por la ecuacin (6.45) y se dene por: o o P= D +L D1 2 D + LT (6.47)

donde es el parmetro de relajacin y [0, 2] a o

6.5. GRADIENTE CONJUGADO PRECONDICIONADO

223

6.5.2.

Aplicaci n del mtodo del Gradiente conjugado preo e condicionado

La funcin que implementa el procedimiento de gradiente conjugado precono dicionado para la solucin de los sistemas de ecuaciones lineales se denomina o PCG.m y tiene la siguiente estructura:
"PCG.m" 223a GradienteConjugadoPrecond: Declaracin de la funcin 223b o o GradienteConjugadoPrecond: Denicin del Precondicionador 224a o GradienteConjugadoPrecond: Inicializacin de variables 224b o GradienteConjugadoPrecond: Ciclo Principal 224c

6.5.2.1.

Declaraci n de la funci n o o

Las variables de entrada de esta funcin son las siguientes: o x0: vector de la solucin inicial del problema particular. Tama o n 1. o n A: matr de tama o n n con los coecientes del sistema z n b: vector de tama o n 1 con los trminos independientes del sistema a n e resolver opcion: variable para denir la opcin de precondicionamiento o itmax: n mero mximo de iteraciones u a errmin: error m nimo para el cual una solucin se considera aceptable. o Las variables de salida son: x: vector de tama o n 1 con la solucin del sistema lineal de ecuaciones n o iter: variable que almacena el n mero de iteraciones que se necesitaron u para llegar a la solucin. o
GradienteConjugadoPrecond: Declaracin de la funcin 223b o o function [x,iter]=PCG(x0,A,b,opcion,itmax,errmin)
Fragmento referenciado en 223a.

224 6.5.2.2.

CAPTULO 6. METODOS ITERATIVOS I Denici n del precondicionador o

De acuerdo al valor de opcion se dene la matr de precondicionamiento z por medio de la funcin denominada precondicionador.m : o
GradienteConjugadoPrecond: Denicin del Precondicionador 224a o M=precondicionador(A,opcion);
Fragmento referenciado en 223a.

6.5.2.3.

Inicializaci n de variables o

En este fragmento se denen las variables que van a controlar el procedimiento de obtencin de la solucin del sistema lineal de ecuaciones: o o iter: variable contadora de las iteraciones err: variable para almacenar el error relativo de la solucin obtenida. o
GradienteConjugadoPrecond: Inicializacin de variables 224b o iter=0; err=100;
Fragmento referenciado en 223a.

6.5.2.4.

Ciclo principal

Al ser un mtodo iterativo, el gradiente conjugado precondicionado se ime plementa mediante un ciclo while cuya estructura es la siguiente:
GradienteConjugadoPrecond: Ciclo Principal 224c while (err>=errmin & iter<=itmax); Ciclo Principal PCG: Clculo del 225a a Ciclo Principal PCG: Actualizacin de la solucin 225b o o Ciclo Principal PCG: Clculo del residuo 225c a Ciclo Principal PCG: Actualizacin direccin de b squeda 225d o o u Ciclo Principal PCG: Calculo de error e incrementar iteraciones 226a end;
Fragmento referenciado en 223a.

6.5. GRADIENTE CONJUGADO PRECONDICIONADO

225

6.5.2.4.1. Clculo del El valor del que representa la magnitud de la a modicacin que se hace en la direccin de b squeda se calcula de la siguiente o o u forma:
Ciclo Principal PCG: Clculo del 225a a alpha=(rold*inv(M)*rold)/(s*A*s);
Fragmento referenciado en 224c.

6.5.2.4.2. Actualizaci n de la soluci n Una vez calculado el se puede o o modicar la solucin inicial de la siguiente forma: o
Ciclo Principal PCG: Actualizacin de la solucin 225b o o x=x+alpha*s;
Fragmento referenciado en 224c.

6.5.2.4.3. Clculo del residuo Con la nueva aproximacin de la solucin a o o del sistema se determina su resido para juzgar su calidad:
Ciclo Principal PCG: Clculo del residuo 225c a r=rold-alpha*A*s;
Fragmento referenciado en 224c.

6.5.2.4.4.

Actualizaci n direcci n de b squeda o o u

Ciclo Principal PCG: Actualizacin direccin de b squeda 225d o o u bet=-(r*inv(M)*r)/(rold*A*rold); s=inv(M)*r+bet*s;

Fragmento referenciado en 224c.

6.5.2.4.5.

Clculo de error e incremento de iteraciones a

226

CAPTULO 6. METODOS ITERATIVOS I

Ciclo Principal PCG: Calculo de error e incrementar iteraciones 226a rold=r; err=abs(max(sum(r.*r))); iter=iter+1;
Fragmento referenciado en 224c.

6.5.3.

Funci n precondicionador o

La estructura de la funcin que implementa el precondicionador es la sio guiente:


"precondicionador.m" 226b Precondicionador: Declaracin de la funcin 226c o o Precondicionador: Inicializacin de variables 227a o Precondicionador: Chequear la opcin de precond 227b o Precondicionador: Seleccionar opcin 228a o

6.5.3.1.

Declaraci n de la funci n o o

En este caso las variables de entrada son: A: matr en estudio y a la cual se le quiere mejorar el n mero de condiz u cin. o opcion: opcin de precondicionamiento. En este caso existen 3 opciones o que son: opcion = 1 Precondicionador de Jacobi (ver ecuacin 6.43) o opcion = 2 Precondicionador diagonal (ver ecuacin 6.44) o opcion = 3 Precondicionador de Gauss-Seidel (ver ecuacin 6.45) o opcion = 4 Precondicionador de relajacin sucesiva (ver ecuacin o o 6.47)
Precondicionador: Declaracin de la funcin 226c o o function [P]=precondicionador(A,opcion)
Fragmento referenciado en 226b.

6.5. GRADIENTE CONJUGADO PRECONDICIONADO 6.5.3.2. Inicializaci n de variables o

227

Las variables que se deben inicializar en este caso para controlar el procedimiento de obtencin de la solucin son las siguientes: o o n: n mero de ecuaciones del sistema A x = b u P : matr de precondicionamiento. Este es de tama o n n y se inicializa z n en 0.0. D: matr que contiene los valores de la diagonal de A z L: matr triangular que contiene todos los elementos de la porcin trianz o gular de A excepto los valores de la diagonal.
Precondicionador: Inicializacin de variables 227a o [nrow ncol]=size(A); if(nrow ~=ncol) then error(La matriz debe ser cuadrada); end n=nrow; P=zeros(n,n); D=diag(diag(A)); L=tril(A)-D;
Fragmento referenciado en 226b.

6.5.3.3.

Chequear opci n o

En este fragmento se determina si la variable opcion, que controla el tipo de precondicionamiento realizado, es vlida; es decir; si es mayor que 0 y menor a a 4:
Precondicionador: Chequear la opcin de precond 227b o if(opcion<=0 | opcion>4) then error(La opcion de precondicionamiento seleccionada no es correcta); end
Fragmento referenciado en 226b.

6.5.3.4.

Seleccionar opci n o

Una vez la variable opcion se ha determinado que es correcta se procede a denir la matr de precondicionamiento respectiva: z

228

CAPTULO 6. METODOS ITERATIVOS I

Precondicionador: Seleccionar opcin 228a o switch opcion case 1 Precondicionador de Jacobi 228b case 2 Precondicionador Diagonal 228c case 3 Precondicionador de Gauss-seidel 229a case 4 Precondicionador de Relajacin Sucesiva 229b o end

Fragmento referenciado en 226b.

6.5.3.4.1. Precondicionador de Jacobi El precondicionador de Jacobi est dea nido como la matr diagonal formada con los elementos de la diagonal de la z matr A: z

Precondicionador de Jacobi 228b P=D; % Precondicionamiento de Jacobi


Fragmento referenciado en 228a.

6.5.3.4.2. Precondicionador Diagonal El precondicionador diagonal est dea nido como la matr diagonal formada con los valores de la norma del vector z formado por los coecientes de cada ecuacin: o
Precondicionador Diagonal 228c for i=1:1:n; P(i,i)=norm(A(i,:),2); end;
Fragmento referenciado en 228a.

6.5.3.4.3. Precondicionador de Gauss-Seidel El precondicionador de GaussSeidel se calcula por medio de la expresin dada por la ecuacin 6.45: o o

6.5. GRADIENTE CONJUGADO PRECONDICIONADO


Precondicionador de Gauss-seidel 229a P = (D + L) * inv(D) * (D + L);
Fragmento referenciado en 228a.

229

6.5.3.4.4. Precondicionador de relajaci n sucesiva El precondicionador o de relajacin sucesiva est denido por la ecuacin 6.47 o a o
Precondicionador de Relajacin Sucesiva 229b o omega = 1.7; %Valor del parametro de relajamiento P = (D + omega*L) * inv(D) * (D + omega*L); P = P* omega/(2-omega);
Fragmento referenciado en 228a.

230

CAPTULO 6. METODOS ITERATIVOS I

ndice alfabtico I e
Algoritmo, 37 Bairstow mtodo de, 110 e Biseccin o mtodo de la, 55 e seno, 30 trascedental, 49 trigonomtrica, 26 e

Gauss-Seidel Mtodo de, 197 e sobrerelajacin, 200 o Condicin o subrelajaci`n, 200 o N mero de, 15 u Gradiente Conjugado e Deacin polinomial, vase Divisin sintti- Mtodo de, 210 o e o e ca Laguerre Descomposicin o mtodo de, 126, 134 e Cholesky, 176 LU, 161 Matr z Diferencia Finita denida positiva, 176 Central, 40 densa, 146 Denicin, 39 o diagonal, 141 hacia delante, 39 diagonal dominante, 197 Divisin sinttica, 95, 109 o e dispersa, 146 herm tica, 141 Ecuacin o hessemberg, 145 Manning, 47 identidad, 142 Eliminacin gaussiana o inversa, 172 mtodo de, 150 e simtrica, 140, 176 e pivote, 152 tipos, 140 Error Triangular inferior, 176 truncamiento, 37 triangular inferior, 144 Evaluacin de Polinomios, 89 o triangular superior, 144 Exactidud tridiagonal, 143, 186 Denicin, 5 o Muller Funcin o mtodo de, 100, 102 e coseno, 26 Newton exponencial, 22 desventajas mtodo, 67 e logaritmo natural, 33 mtodo de, 66 e polinomio, 19, 36, 49, 89, 126 231

232 mtodo, interpretacin geomtrica, e o e 67 Pivoteo, 152 Precisin o Denicin, 5 o Propagacin del error, 44 o Ra ces de funcin, 49 o mtodo grco, 51 e a Raices mtodos abiertos, 50 e Regla signos Descartes, 49 Secante interpretacin geomtrica, 76 o e mtodo, 75 e Secante Modicado mtodo, 82 e Serie de Taylor, 21, 66, 110 Solucin ecuaciones lineales o Descomposicin de Cholesky, 176 o descomposicin LU, 161 o eliminacin gaussiana, 150 o Mtodo del Gradiente Conjugado, e 210 Mtodo Gauss-Seidel, 199 e mtodos directos, 140 e mtodos iterativos, 140 e Sistemas tridiagonales, 186 Stokes Ley de, 45 sustitucin hacia atrs, 149 o a sustitucin hacia delaten, 150 o Teorema Taylor, 21 Valor Medio, 22 Transformaciones Elementales, 147

NDICE ALFABETICO I