notas clase1

250
An´ alisis Num´ erico para Ingenieros Civiles Oscar Javier Garc´ ıa-Cabrejo, Edgar Mu˜ noz D´ ıaz, Jorge Alberto Rodr´ ıguez Ordo˜ nez, David G´ omez Villasante Nelson Obreg´ on Neira Departamento de Ingenier´ ıa Civil Facultad de Ingenier´ ıa Pontificia Universidad Javeriana Bogot´ a, Colombia c 2007

Upload: alexandra-maranci

Post on 19-Jan-2016

45 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Notas Clase1

Analisis Numerico para IngenierosCiviles

Oscar Javier Garcıa-Cabrejo, Edgar Munoz Dıaz,Jorge Alberto Rodrıguez Ordonez, David Gomez

VillasanteNelson Obregon Neira

Departamento de Ingenierıa CivilFacultad de Ingenierıa

Pontificia Universidad JaverianaBogota, Colombia

c© 2007

Page 2: Notas Clase1

R© 2007 Oscar Javier Garcıa-Cabrejo, Edgar Munoz Dıaz, Jorge Alberto RodrıguezOrdonez, David Gomez Villasante, Nelson Obregon Neira, Depto. Ingenierıa Ci-vil, Pontificia Universidad Javeriana, Bogota, Colombia.Todos los Derechos Reservados.

5ANSI Z39.48–1984.

10 09 08 07 06 05 04 03 02 01 15 14 13 12 11 10 9

Edicion 0.1 10 Octubre 2007Edicion 0.1 con correcciones 23 Noviembre 2007Edicion 0.1 con animaciones 19 Diciembre 2007Edicion 0.2 con correcciones menores 5 Febrero 2008

Page 3: Notas Clase1

Indice general

Indice de Archivos VII

Indice de Fragmentos IX

Introduccion XV

1. Error relativo y cifras significativas 11.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2. Error Absoluto y Relativo . . . . . . . . . . . . . . . . . . . . . . . 21.3. Precision y Exactitud . . . . . . . . . . . . . . . . . . . . . . . . . 41.4. Error de Redondeo . . . . . . . . . . . . . . . . . . . . . . . . . . 81.5. Estabilidad Numerica . . . . . . . . . . . . . . . . . . . . . . . . . 91.6. Numero de condicion . . . . . . . . . . . . . . . . . . . . . . . . . 14

2. Serie de taylor 192.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.2. Serie y Teorema de Taylor . . . . . . . . . . . . . . . . . . . . . . 19

2.2.1. Serie de Taylor . . . . . . . . . . . . . . . . . . . . . . . . 192.2.2. Teorema de Taylor . . . . . . . . . . . . . . . . . . . . . . 212.2.3. Funcion Exponencial . . . . . . . . . . . . . . . . . . . . . 222.2.4. Funcion Coseno . . . . . . . . . . . . . . . . . . . . . . . . 262.2.5. Funcion Seno . . . . . . . . . . . . . . . . . . . . . . . . . 302.2.6. Funcion Logaritmo natural . . . . . . . . . . . . . . . . . 332.2.7. Polinomio . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.3. Error de Truncamiento . . . . . . . . . . . . . . . . . . . . . . . . 372.4. Diferenciacion Numerica . . . . . . . . . . . . . . . . . . . . . . . 382.5. Propagacion del Error . . . . . . . . . . . . . . . . . . . . . . . . 42

3. Solucion ecuaciones no lineales 473.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473.2. Tipos de Raıces . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483.3. Metodos Abiertos . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

3.3.1. Metodo Grafico . . . . . . . . . . . . . . . . . . . . . . . . 51

I

Page 4: Notas Clase1

II INDICE GENERAL

3.3.2. Metodo de la Biseccion . . . . . . . . . . . . . . . . . . . . 553.4. Metodos Cerrados . . . . . . . . . . . . . . . . . . . . . . . . . . 66

3.4.1. Metodo de Newton . . . . . . . . . . . . . . . . . . . . . . 663.4.2. Metodo de la Secante . . . . . . . . . . . . . . . . . . . . 753.4.3. Metodo de la Secante Modificado . . . . . . . . . . . . . . 82

4. Polinomios 894.1. Evaluacion de Polinomios . . . . . . . . . . . . . . . . . . . . . . 89

4.1.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 894.1.2. Evaluacion de polinomios con MATLAB R© . . . . . . . . . 90

4.2. Deflacion Polinomial o Division Sintetica . . . . . . . . . . . . . . 954.2.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 954.2.2. Division Sintetica de polinomios con MATLAB R© . . . . . . 96

4.3. Metodo de Muller . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004.3.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 1004.3.2. Determinacion de las raıces de polinomios usando el meto-

do de Muller . . . . . . . . . . . . . . . . . . . . . . . . . 1024.4. Metodo de Bairstow . . . . . . . . . . . . . . . . . . . . . . . . . 109

4.4.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 1094.4.2. Determinacion de las raıces de un polinomio usando el

metodo de Bairstow . . . . . . . . . . . . . . . . . . . . . 1114.4.3. Division Sintetica por factor cuadratico . . . . . . . . . . . 1174.4.4. Solucion de la ecuacion cuadratica . . . . . . . . . . . . . 119

4.5. Metodo de Laguerre . . . . . . . . . . . . . . . . . . . . . . . . . 1264.5.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 1264.5.2. Determinacion de la raıces de polinomios usando el meto-

do de Laguerre . . . . . . . . . . . . . . . . . . . . . . . . 1284.5.3. Determinacion de todas las raıces de un polinomio . . . . 134

5. Metodos Directos 1395.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 139

5.1.1. Tipos de Matrices . . . . . . . . . . . . . . . . . . . . . . . 1405.1.2. Matrices Densas y Dispersas . . . . . . . . . . . . . . . . . 1465.1.3. Transformaciones Elementales . . . . . . . . . . . . . . . 147

5.2. Solucion de sistemas triangulares . . . . . . . . . . . . . . . . . . 1485.3. Eliminacion Gaussiana con Pivoteo . . . . . . . . . . . . . . . . . 150

5.3.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 1505.3.2. Solucion de Sistemas de Ecuaciones con Eliminacion Gaus-

siana . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1535.3.3. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

5.4. Descomposicion LU con pivoteo . . . . . . . . . . . . . . . . . . . 1615.4.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 1615.4.2. Procedimineo de Descomposicion LU . . . . . . . . . . . . 163

Page 5: Notas Clase1

INDICE GENERAL III

5.4.3. Solucion de sistemas lineales con descomposicion LU . . . 1675.4.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

5.5. Inversa de una matrız . . . . . . . . . . . . . . . . . . . . . . . . 1735.5.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 1735.5.2. Calculo de la Matrız Inversa . . . . . . . . . . . . . . . . . 1735.5.3. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

5.6. Descomposicion de Cholesky . . . . . . . . . . . . . . . . . . . . 1775.6.1. Fundamentos Conceptuales . . . . . . . . . . . . . . . . . 1775.6.2. Descomposicion de Cholesky . . . . . . . . . . . . . . . . 1795.6.3. Solucion de sistemas de ecuaciones por medio de descom-

posicion de Cholesky . . . . . . . . . . . . . . . . . . . . . 1825.6.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

5.7. Matrices de Coeficientes Bandeadas . . . . . . . . . . . . . . . . . 1875.7.1. Sistemas Tridiagonales . . . . . . . . . . . . . . . . . . . . 187

6. Metodos Iterativos 1956.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1956.2. Metodos Iterativos . . . . . . . . . . . . . . . . . . . . . . . . . . 1956.3. Metodo de Gauss-Seidel y Relajacion . . . . . . . . . . . . . . . . 197

6.3.1. Solucion de sistemas lineales de ecuaciones . . . . . . . . 2016.3.2. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . 205

6.4. Gradiente Conjugado . . . . . . . . . . . . . . . . . . . . . . . . . 2106.4.1. Fundamentos conceptuales . . . . . . . . . . . . . . . . . 2106.4.2. Interpretacion grafica . . . . . . . . . . . . . . . . . . . . 2126.4.3. Solucion usando gradiente conjugado . . . . . . . . . . . 2146.4.4. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

6.5. Gradiente Conjugado Precondicionado . . . . . . . . . . . . . . . 2226.5.1. Fundamentos conceptuales . . . . . . . . . . . . . . . . . 2226.5.2. Aplicacion del metodo del Gradiente conjugado precondi-

cionado . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2236.5.3. Funcion precondicionador . . . . . . . . . . . . . . . . . . 226

Page 6: Notas Clase1

IV INDICE GENERAL

Page 7: Notas Clase1

Indice de figuras

1.1. Ilustracion grafica de los conceptos de exactitud y precision . . . 61.2. Interpretacion geometrica de los conceptos de error hacia adelan-

te y error hacia atras . . . . . . . . . . . . . . . . . . . . . . . . . 101.3. Interpretacion geometrica del error combinado hacia delante y

atras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

2.1. Un ejemplo grafico de la serie de Taylor para la funcion cos (x) enx = 0.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.2. Ejemplo del teorema del valor medio. . . . . . . . . . . . . . . . 232.3. Grafica de la funcion exponencial . . . . . . . . . . . . . . . . . . 242.4. Grafica de la funcion coseno . . . . . . . . . . . . . . . . . . . . . 272.5. Triangulo empleado para la definicion de las funciones trigonometri-

cas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.6. Grafica de la funcion sin (x) . . . . . . . . . . . . . . . . . . . . . 312.7. Grafica de la funcion logaritmo natural . . . . . . . . . . . . . . . 34

3.1. Grafica de la profundidad contra el valor de la funcion f(h). Elvalor de la raız es aproximadamente 6.0 m . . . . . . . . . . . . . 54

3.2. a). Existe al menos una raız en el intervalo [xl, xu] si la funcioncambia de signo. b). Pero puede presentarse la situacion que exis-ta mas de una raız si la condicion se cumple. . . . . . . . . . . . . 56

3.3. En este caso se presenta una situacion en donde la funcion tienevalores positivos en los extremos del intervalo pero existen raıcesen este. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

3.4. Lago con forma irregular. Para determinar la dimension carac-terıstica de este se aproxima la forma mediante una cirfunferen-cia de radio r . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

3.5. Ejemplo de aplicacion del metodo de la Biseccion o busquedabinaria. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

3.6. Interpretacion geometrica del metodo de Newton . . . . . . . . . 673.7. Ejemplo de aplicacion del metodo de Newton . . . . . . . . . . . 68

V

Page 8: Notas Clase1

VI INDICE DE FIGURAS

3.8. Interpretacion geometrica del metodo de la secante. La recta se-cante (en color gris) se define entre los puntos f(xi−1) y f(xi) ycon esta se aproxima el nuevo valor de la raız. . . . . . . . . . . . 76

3.9. Ejemplo de aplicacion del metodo de la secante . . . . . . . . . . 78

4.1. Interpretacion grafica del metodo de Muller . . . . . . . . . . . . 101

6.1. Solucion de un sistema lineal de ecuaciones usando gradienteconjugado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 213

Page 9: Notas Clase1

Indice de Archivos

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

VII

Page 10: Notas Clase1

VIII INDICE DE ARCHIVOS

Page 11: Notas Clase1

Indice de Fragmentos de Codigo

〈Bairstow: Ciclo extraccion de raices de polinomio n >= 3 113a 〉 Referenciado en 111.〈Bairstow: Declaracion de variables 112b 〉 Referenciado en 111.〈Bairstow: Definicion de la funcion 112a 〉 Referenciado en 111.〈Bairstow: Extraccion de raices de polinomio n <= 2 116c 〉 Referenciado en 111.〈Biseccion: Ciclo Principal 62a 〉 Referenciado en 60.〈Biseccion: Declaracion de la funcion 61a 〉 Referenciado en 60.〈Biseccion: Inicializacion de variables 61b 〉 Referenciado en 60.〈Cholesky: Asignacion de resultados 182a 〉 Referenciado en 179.〈Cholesky: Ciclo Principal 181a 〉 Referenciado en 179.〈Cholesky: Declaracion de la funcion 180a 〉 Referenciado en 179.〈Cholesky: Inicializacion de variables 180b 〉 Referenciado en 179.〈CholeskySol: Declaracion de la funcion 182c 〉 Referenciado en 182b.〈CholeskySol: Descomposicion de Cholesky 183b 〉 Referenciado en 182b.〈CholeskySol: Inicializacion de variables 183a 〉 Referenciado en 182b.〈CholeskySol: Sustitucion hacia adelante 183c 〉 Referenciado en 182b.〈CholeskySol: Sustitucion hacia atras 184 〉 Referenciado en 182b.〈Ciclo Principal Bairstow: Asignacion de raices obtenidas 116b 〉 Referenciado en 113a.〈Ciclo Principal Bairstow: Calcular error e incrementar contador 115b 〉 Referenciado en

113a.〈Ciclo Principal Bairstow: Determinar raices 115c 〉 Referenciado en 113a.〈Ciclo Principal Bairstow: Extraccion coeficientes Polinomio resultante 116a 〉 Referen-

ciado en 113a.〈Ciclo Principal Bairstow: Inicializacion del error 113b 〉 Referenciado en 113a.〈Ciclo Principal Bairstow: Modificar los valores de r y s 114b 〉 Referenciado en 113a.〈Ciclo Principal Bairstow: Realizar division sintetica 114a 〉 Referenciado en 113a.〈Ciclo Principal Biseccion: Asignacion de resultados 64b 〉 Referenciado en 62a.〈Ciclo Principal Biseccion: Calculo de las funciones 62c 〉 Referenciado en 62a.〈Ciclo Principal Biseccion: Calculo error e incremento iteraciones 64a 〉 Referenciado en

62a.〈Ciclo Principal Biseccion: Calculo nueva solucion 62b 〉 Referenciado en 62a.〈Ciclo Principal Biseccion: Donde esta la solucion 63a 〉 Referenciado en 62a.〈Ciclo Principal Cholesky: Asignacion elementos diagonal 181c 〉 Referenciado en 181a.〈Ciclo Principal Cholesky: Asignacion elementos fuera diagonal 181b 〉 Referenciado en

181a.〈Ciclo Principal Descomposicion LU con Pivoteo: cambiar las filas 166a 〉 Referenciado en

165a.

IX

Page 12: Notas Clase1

X INDICE DE FRAGMENTOS

〈Ciclo Principal Descomposicion LU con Pivoteo: chequear si es matrız singular 165c 〉Referenciado en 165a.

〈Ciclo Principal Descomposicion LU con Pivoteo: determinar el Pivot 165b 〉 Referenciadoen 165a.

〈Ciclo Principal Descomposicion LU con Pivoteo: fase de eliminacion 166b 〉 Referenciadoen 165a.

〈Ciclo Principal Gauss: Cambiar las filas 157a 〉 Referenciado en 155b.〈Ciclo Principal Gauss: Chequear si es matrız singular 156b 〉 Referenciado en 155b.〈Ciclo Principal Gauss: Determinar el Pivot 156a 〉 Referenciado en 155b.〈Ciclo Principal Gauss: Fase de eliminacion 157b 〉 Referenciado en 155b.〈Ciclo Principal GaussSeidel: Actualizacion de la solucion 204a 〉 Referenciado en 203b.〈Ciclo Principal GaussSeidel: Calculo del error e incremento de las iteraciones 204b 〉

Referenciado en 203b.〈Ciclo Principal GradienteConj: Actualizacion de la solucion 216b 〉 Referenciado en 215b.〈Ciclo Principal GradienteConj: Calculo del α 216a 〉 Referenciado en 215b.〈Ciclo Principal GradienteConj: Calculo del residuo 216c 〉 Referenciado en 215b.〈Ciclo Principal GradienteConj: Calculo de error e incrementar iteraciones 217 〉 Refe-

renciado en 215b.〈Ciclo Principal GradienteConj: Determinacion de direccion de busqueda 216d 〉 Refe-

renciado en 215b.〈Ciclo Principal Inversa: Almacenamiento solucion 175d 〉 Referenciado en 175b.〈Ciclo Principal Inversa: Solucion sistema lineal 175c 〉 Referenciado en 175b.〈Ciclo Principal Laguerre: Actualizacion de la raız 131b 〉 Referenciado en 129b.〈Ciclo Principal Laguerre: Actualizacion de valores 131d 〉 Referenciado en 129b.〈Ciclo Principal Laguerre: Calculo de G y H 130b 〉 Referenciado en 129b.〈Ciclo Principal Laguerre: Calculo de error e incremento de iteraciones 131c 〉 Referen-

ciado en 129b.〈Ciclo Principal Laguerre: Calculo del denominador 130c 〉 Referenciado en 129b.〈Ciclo Principal Laguerre: Chequear si es raız 130a 〉 Referenciado en 129b.〈Ciclo Principal Laguerre: Determinacion del signo 131a 〉 Referenciado en 129b.〈Ciclo Principal Laguerre: Prueba de la raız 129c 〉 Referenciado en 129b.〈Ciclo Principal Muller: Actualizacion de la raız 106b 〉 Referenciado en 104b.〈Ciclo Principal Muller: Actualizacion puntos 107 〉 Referenciado en 104b.〈Ciclo Principal Muller: Calculo coeficientes parabola 105b 〉 Referenciado en 104b.〈Ciclo Principal Muller: Calculo de h y δ 105a 〉 Referenciado en 104b.〈Ciclo Principal Muller: Calculo del error e incremento de iteraciones 106c 〉 Referenciado

en 104b.〈Ciclo Principal Muller: Calculo del indicador 105c 〉 Referenciado en 104b.〈Ciclo Principal Muller: Definicion de la correccion 106a 〉 Referenciado en 104b.〈Ciclo Principal Newton: Actualizacion solucion 72a 〉 Referenciado en 71b.〈Ciclo Principal Newton: Asignacion de resultados 72c 〉 Referenciado en 71b.〈Ciclo Principal Newton: Calculo error e incremento iteraciones 72b 〉 Referenciado en

71b.〈Ciclo Principal PCG: Actualizacion de la solucion 225b 〉 Referenciado en 224c.〈Ciclo Principal PCG: Actualizacion direccion de busqueda 225d 〉 Referenciado en 224c.〈Ciclo Principal PCG: Calculo del α 225a 〉 Referenciado en 224c.

Page 13: Notas Clase1

XI

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

224c.〈Ciclo Principal Raices: Correcion de la raız obtenida 137b 〉 Referenciado en 136b.〈Ciclo Principal Raices: Inicializacion variables 136c 〉 Referenciado en 136b.〈Ciclo Principal Raices: aplicacion del metodo de Laguerre 137a 〉 Referenciado en 136b.〈Ciclo Principal Raices: division sintetica 137c 〉 Referenciado en 136b.〈Ciclo Principal Secante Modificado: Actualizacion solucion 86c 〉 Referenciado en 86a.〈Ciclo Principal Secante Modificado: Almacenamiento de resultados 87b 〉 Referenciado

en 86a.〈Ciclo Principal Secante Modificado: Calculo error e incremento iteraciones 87a 〉 Refe-

renciado en 86a.〈Ciclo Principal Secante Modificado: calculo factor de correccion 86b 〉 Referenciado en

86a.〈Ciclo Principal Secante: Actualizacion solucion 81b 〉 Referenciado en 80b.〈Ciclo Principal Secante: Almacenamiento de resultados 81d 〉 Referenciado en 80b.〈Ciclo Principal Secante: Calculo error e incremento iteraciones 81c 〉 Referenciado en

80b.〈Ciclo Principal Secante: Evaluacion funcion dos puntos iniciales 81a 〉 Referenciado en

80b.〈Ciclo principal Deflacion2: Coeficientes 119b 〉 Referenciado en 119a.〈Ciclo principal Deflacion2: Derivada 119c 〉 Referenciado en 119a.〈Coseno Taylor: Calculo sumatoria 29 〉 Referenciado en 28a.〈Coseno Taylor: Inicializacion funcion 28b 〉 Referenciado en 28a.〈Deflacion2: Ciclo principal 119a 〉 Referenciado en 117c.〈Deflacion2: Declaracion funcion 118a 〉 Referenciado en 117c.〈Deflacion2: Inicializacion de variables 118b 〉 Referenciado en 117c.〈DeflacionPolinomial: Ciclo Principal 98 〉 Referenciado en 96.〈DeflacionPolinomial: Declaracion de la funcion 97a 〉 Referenciado en 96.〈DeflacionPolinomial: Inicializacion de variables 97b 〉 Referenciado en 96.〈Derivada Manning: Calculo derivada 73d 〉 Referenciado en 73a.〈Derivada Manning: Declaracion de la funcion 73b 〉 Referenciado en 73a.〈Derivada Manning: Inicializacion de variables 73c 〉 Referenciado en 73a.〈Descomposicion LU con Pivoteo: Asignacion de resultados 167a 〉 Referenciado en 163a.〈Descomposicion LU con Pivoteo: Ciclo Principal 165a 〉 Referenciado en 163a.〈Descomposicion LU con Pivoteo: Declaracion de la funcion 163b 〉 Referenciado en 163a.〈Descomposicion LU con Pivoteo: Determinar valores para escalamiento 164b 〉 Referen-

ciado en 163a.〈Descomposicion LU con Pivoteo: Inicializacion de variables 164a 〉 Referenciado en 163a.〈Determinacion de raices: Calculo del discriminante 120d 〉 Referenciado en 120c.〈Determinacion de raices: Raices diferentes 121a 〉 Referenciado en 120c.〈Determinacion de raices: Raices iguales 121b 〉 Referenciado en 120c.〈EvaluacionPolinomio: Ciclo principal 92 〉 Referenciado en 90.〈EvaluacionPolinomio: Declaracion de Funcion 91a 〉 Referenciado en 90.〈EvaluacionPolinomio: Inicializacion de Variables 91b 〉 Referenciado en 90.〈Exponencial Taylor: Calculo sumatoria 25 〉 Referenciado en 24a.

Page 14: Notas Clase1

XII INDICE DE FRAGMENTOS

〈Exponencial Taylor: Inicializacion funcion 24b 〉 Referenciado en 24a.〈Extraccion raices Polinomio n <= 2: Polinomio grado 1 117b 〉 Referenciado en 116c.〈Extraccion raices Polinomio n <= 2: Polinomio grado 2 117a 〉 Referenciado en 116c.〈Gauss con Pivoteo: Asignacion de salida 159b 〉 Referenciado en 154a.〈Gauss con Pivoteo: Calculo del determinante 159a 〉 Referenciado en 154a.〈Gauss con Pivoteo: Ciclo principal 155b 〉 Referenciado en 154a.〈Gauss con Pivoteo: Declaracion de la funcion 154b 〉 Referenciado en 154a.〈Gauss con Pivoteo: Determinar valores para escalamiento 155a 〉 Referenciado en 154a.〈Gauss con Pivoteo: Sustitucion hacia atras 158b 〉 Referenciado en 154a.〈GaussSeidel: Ciclo Principal 203b 〉 Referenciado en 201a.〈GaussSeidel: Declaracion de la funcion 201b 〉 Referenciado en 201a.〈GaussSeidel: Escalamiento 202b 〉 Referenciado en 201a.〈GaussSeidel: Inicializacion de variables 202a 〉 Referenciado en 201a.〈GaussSeidel: Obtener solucion inicial 203a 〉 Referenciado en 201a.〈GradienteConj: Ciclo principal 215b 〉 Referenciado en 214a.〈GradienteConj: Inicializacion de variables 215a 〉 Referenciado en 214a.〈GradienteConj: declaracion de la funcion 214b 〉 Referenciado en 214a.〈GradienteConjugadoPrecond: Ciclo Principal 224c 〉 Referenciado en 223a.〈GradienteConjugadoPrecond: Declaracion de la funcion 223b 〉 Referenciado en 223a.〈GradienteConjugadoPrecond: Definicion del Precondicionador 224a 〉 Referenciado en

223a.〈GradienteConjugadoPrecond: Inicializacion de variables 224b 〉 Referenciado en 223a.〈 InversaLU: Chequear si es matrız cuadrada 174c 〉 Referenciado en 174a.〈 InversaLU: Ciclo Principal 175b 〉 Referenciado en 174a.〈 InversaLU: Declaracion de la funcion 174b 〉 Referenciado en 174a.〈 InversaLU: Inicializacion de la matrız 175a 〉 Referenciado en 174a.〈 LU Sistemas Tridiagonales: Ciclo principal 189a 〉 Referenciado en 188a.〈 LU Sistemas Tridiagonales: Declaracion funcion 188b 〉 Referenciado en 188a.〈 LU Sistemas Tridiagonales: Inicializacion variables 188c 〉 Referenciado en 188a.〈 LUSolucion: Calculo del determinante 169a 〉 Referenciado en 167b.〈 LUSolucion: Declaracion de la funcion 168a 〉 Referenciado en 167b.〈 LUSolucion: Descomposicion LU 168c 〉 Referenciado en 167b.〈 LUSolucion: Inicializacion de variables 168b 〉 Referenciado en 167b.〈 LUSolucion: Organizacion por pivoteo 169b 〉 Referenciado en 167b.〈 LUSolucion: Sustitucion hacia adelante 169c 〉 Referenciado en 167b.〈 LUSolucion: Sustitucion hacia atras 170 〉 Referenciado en 167b.〈 Laguerre: Chequear si se obtuvo raız 132 〉 Referenciado en 128a.〈 Laguerre: Ciclo Principal 129b 〉 Referenciado en 128a.〈 Laguerre: Declaracion de la funcion 128b 〉 Referenciado en 128a.〈 Laguerre: Inicializacion de variables 129a 〉 Referenciado en 128a.〈 Logaritmo Taylor: Calculo de la sumatoria 35c 〉 Referenciado en 35a.〈 Logaritmo Taylor: Inicializacion de la funcion 35b 〉 Referenciado en 35a.〈Modificar r y s: Actualizar r y s 115a 〉 Referenciado en 114b.〈Modificar r y s: Calculo del determinante 114c 〉 Referenciado en 114b.〈Muller: Ciclo Principal 104b 〉 Referenciado en 102.〈Muller: Declaracion de la Funcion 103 〉 Referenciado en 102.

Page 15: Notas Clase1

XIII

〈Muller: Inicializacion de variables 104a 〉 Referenciado en 102.〈Newton: Ciclo Principal 71b 〉 Referenciado en 70a.〈Newton: Declaracion de la funcion 70b 〉 Referenciado en 70a.〈Newton: Inicializacion de variables 71a 〉 Referenciado en 70a.〈Precondicionador Diagonal 228c 〉 Referenciado en 228a.〈Precondicionador de Gauss-seidel 229a 〉 Referenciado en 228a.〈Precondicionador de Jacobi 228b 〉 Referenciado en 228a.〈Precondicionador de Relajacion Sucesiva 229b 〉 Referenciado en 228a.〈Precondicionador: Chequear la opcion de precond 227b 〉 Referenciado en 226b.〈Precondicionador: Declaracion de la funcion 226c 〉 Referenciado en 226b.〈Precondicionador: Inicializacion de variables 227a 〉 Referenciado en 226b.〈Precondicionador: Seleccionar opcion 228a 〉 Referenciado en 226b.〈Prueba Manning: Declaracion de la Funcion 53a 〉 Referenciado en 52.〈Prueba Manning: Evaluacion funcion 53c 〉 Referenciado en 52.〈Prueba Manning: Inicializacion de variables 53b 〉 Referenciado en 52.〈Raices Polinomios: Ciclo Principal 136b 〉 Referenciado en 135a.〈Raices Polinomios: Declaracion de la Funcion 135b 〉 Referenciado en 135a.〈Raices Polinomios: Inicializacion de variables 136a 〉 Referenciado en 135a.〈Secante modificado: Ciclo principal 86a 〉 Referenciado en 84.〈Secante modificado: Declaracion de la funcion 85a 〉 Referenciado en 84.〈Secante modificado: Inicializacion de las variables 85b 〉 Referenciado en 84.〈Secante: Ciclo principal 80b 〉 Referenciado en 79a.〈Secante: Declaracion de la funcion 79b 〉 Referenciado en 79a.〈Secante: Inicializacion de las variables 80a 〉 Referenciado en 79a.〈Seno Taylor: Calculo sumatoria 32b 〉 Referenciado en 31.〈Seno Taylor: Inicializacion funcion 32a 〉 Referenciado en 31.〈Solucion Cuadratica: Definicion funcion 120a 〉 Referenciado en 119d.〈Solucion Cuadratica: Determinacion de las raices 120c 〉 Referenciado en 119d.〈Solucion Cuadratica: Inicializacion de variables 120b 〉 Referenciado en 119d.〈Solucion Sistemas Tridiagonales: Declaracion funcion 189c 〉 Referenciado en 189b.〈Solucion Sistemas Tridiagonales: Descomposicion LU 190b 〉 Referenciado en 189b.〈Solucion Sistemas Tridiagonales: Inicializacion variables 190a 〉 Referenciado en 189b.〈Solucion Sistemas Tridiagonales: Sustitucion hacia adelante 190c 〉 Referenciado en 189b.〈Solucion Sistemas Tridiagonales: Sustitucion hacia atras 191 〉 Referenciado en 189b.〈Solucion: raız en mitad inferior 63b 〉 Referenciado en 63a.〈Solucion: raız en mitad superior 63c 〉 Referenciado en 63a.〈Solucion: raız encontrada 63d 〉 Referenciado en 63a.

Page 16: Notas Clase1

XIV INDICE DE FRAGMENTOS

Page 17: Notas Clase1

Introduccion

Wandering an endless journeyDead within a traceEntering a lost dominion soulless and freeVisiting a foreign place but yet so knownAnother dimension opens for me to see . . .

en Entrance de Dimmu Borgir

La principal pregunta que se debe estar haciendo el lector es: Por que razonse escribio este libro?. La respuesta: Hasta el conocimiento de los autores, noexiste un material que trate sobre metodos numericos con una orientacion espe-cifica a Ingenieros Civiles. Este texto fue escrito pensando en una audiencia con-formada por estudiantes de Ingenierıa Civil de pregrado, que hayan aprobadolos cursos de Calculo diferencial e integral, pensamiento algorıtmico y probabili-dad y estadıstica. El pensamiento algorıtmico brinda las herramientas necesariaspara la implementacion de los diferentes metodos numericos en un lenguaje deprogramacion. En este caso particular se va a utilizar MATLAB R© , ya que estees una aplicacion que se ha convertido en un estandar para la implementacionde procedimientos numericos en muchos campos de la Ingenierıa y la IngenierıaCivil no es la excepcion. A pesar de esto, el libro hace enfasis en la explicacionde los diferentes metodos numericos y no en la programacion; ya que por logeneral la mayorıa de los estudiantes de Ingenierıa Civil no son programadores,ni Ingenieros de Sistemas, sino que tienen una orientacion hacia la solucion deproblemas concretos. Los estudiantes que habitualmente toman el curso en In-genierıa Civil quieren conocer sobre los fundamentos de los diferentes metodosnumericos y como se pueden utilizar para resolver problemas concretos dentro dela disciplina. En esta situacion no se espera que los estudiantes desarrollen supropio codigo sino que empleen uno disenado con anterioridad por dos razones:

1. Poder resolver problemas rapidamente mediante la combinacion de codigoya desarrollado.

2. Adquirir una fundamentacion mucho mas solida en programacion estu-diando la forma como un metodo ha sido implementado en un lenguajede programacion

XV

Page 18: Notas Clase1

XVI INTRODUCCION

Consideramos que la ultima razon es de vital importancia, ya que una de laslabores fundamentales de cualquier persona que se dedique a desarrollar soft-ware (aun en la escala que se requiere para los fines del presente curso), consisteen poder leer claramente codigo desarrollado con el fin de integrarlo en aplica-ciones que resuelvan problemas particulares. Esta situacion motivo a presentarel codigo explicado usando la metodologıa denominada programacion literaria.La programacion literaria es una metodologıa desarrollada por Donald Knuth en1982 la cual tiene como premisa fundamental que el codigo de los programasse debe escribir como una obra literaria, con la finalidad del entendimiento delmismo por parte de otros programadores. En la practica de la programacion lite-raria se combinan la documentacion destinada a los usuarios del programa y elcodigo del programa destinado al computador en un unico archivo, de tal formaque se puedan mantener una correspondencia directa entre la documentacion yel codigo fuente. La presentacion de la estructura de los programas se define detal manera que maximice el entendimiento por parte del lector.

Los libros de analisis numerico se pueden dividir en dos grandes categorıas:los que estan orientados hacia las caracterısticas matematicas del metodo o losque se orientan a la utilizacion de una herramienta particular. Los primerospresentan informacion importante sobre el metodo como tal y generalmente in-cluyen un seudocodigo que le permite al usuario implementar el procedimientoen cualquier lenguaje de programacion. En los libros del segundo tipo, tienenun enfoque mas hacia la practica con una herramienta particular y por lo tan-to no presentan informacion conceptual detallada del metodo que es de vitalimportancia para el entendimiento del mismo. Un texto de analisis numericoque combine las ventajas de las dos aproximaciones antes mencionadas juntocon ejemplos concretos en Ingenierıa Civil no existe y este es el espacio que sequiere llenar con el presente trabajo.

En este libro se explican los fundamentos conceptuales de cada metodo, susprincipios, ventajas y desventajas y se incluyen tanto ejemplos de calculos ma-nuales como usando MATLAB R©Los temas incluyen aquellos tratados en el cursode Analisis Numerico para Ingenieros Civiles, tal y como se dicta en el Depto deIngenierıa Civil de la Pontificia Universidad Javeriana, Bogota.

Por ultimo esperamos que este texto facilite la apertura de la dimension de losmetodos numericos y que de ahora en adelante ud los pueda usar en diferentessituaciones que se le van a presentar en la universidad, ası como en la vida pro-fesional.

Los autores, Bogota, Colombia.

Page 19: Notas Clase1

Capıtulo 1

Error relativo y cifras significativas

1.1. Introduccion

DADO QUE LOS METODOS NUMERICOS son aproximaciones para la obtencionde soluciones de modelos matematicos estos siempre van a tener un cierto

grado de error. Cuantificar y entender dicho error es de vital importancia paralos Ingenieros Civiles ya que muchas veces se cuenta solamente con el resulta-do de un modelo numerico para tomar decisiones importantes que involucrancostos economicos importantes y por lo tanto es importante determinar si lassoluciones obtenidas son confiables o no. Para la gran mayorıa de personas eltermino error implica algo que se ha hecho mal. Sin embargo en el caso de losmetodos numericos este termino tiene un contexto mas positivo y permite juz-gar la calidad de una solucion obtenida. La gran mayorıa de metodos que se vana tratar en este curso se disenaron de tal forma que aseguran que se obtiene elmınimo error posible, o en otras palabras, que convergen a la solucion deseada.Estos errores son de vital importancia en el modelamiento numerico ya que engeneral ninguna medicion y/o estimacion de parametros que se ingresan en losmodelos numericos esta libre de error e incertidumbre, y la situacion se agra-va mucho mas cuando se tiene en cuenta la capacidad del computador paramanejar las cantidades numericas. En estos casos es necesario calcular el errorque se presenta en las diferentes operaciones aritmeticas (lo cual es tema delsiguiente capıtulo), ası como tambien el error presente tanto en los problemascomo tal y en los procedimientos numericos con los que se resuelven estos. Loserrores numericos son algo inevitable y por lo tanto es importante que apren-damos a convivir con ellos. Lo que podemos hacer en este caso es conocer enque situaciones aparecen y como se determinan en situaciones concretas, el cualcorresponde al objetivo central de este capıtulo.

1

Page 20: Notas Clase1

2 CAPITULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS

1.2. Error Absoluto y Error Relativo

Los errores Absoluto y Relativo son dos tipos de errores con los cuales elanalista numerico se va a encontrar todo el tiempo, y por lo tanto se debe estarfamiliarizado con estos conceptos.

Definicion 1

Sea x0 una aproximacion al numero real x. Las medidas mas utiles de exac-titud son el denominado error absoluto que se define:

EABS = |x− x0| (1.1)

y el error relativo:

EREL =|x− x0||x|

(1.2)

y el cual no esta definido para x = 0. Este error relativo tambien se puedeexpresar como porcentaje de la siguiente forma:

EREL =|x− x0||x|

× 100 % (1.3)

El error relativo es la medida mas empleada en los problemas de analisisnumerico ya que esta dada en porcentaje y por lo tanto se puede usar pararealizar comparaciones.

Page 21: Notas Clase1

1.2. ERROR ABSOLUTO Y RELATIVO 3

Ejemplo (Error absoluto y relativo)

Supongamos que ud realizo unas mediciones en el laboratorio para ladeterminacion de la densidad de una muestra de agua de un rıo para unestudio de abastecimiento de un acueducto municipal. En condiciones nor-males la densidad del agua es ρREAL = 1 gr/cm3 y el resultado de se obtuvofue de ρMED = 1.04 gr/cm3. En este caso el error absoluto en la densidadesta dado por:

EABS =∣∣1.04 gr/cm3 − 1.0 gr/cm3

∣∣ = 0.04 gr/cm3

el cual es numericamente igual al error relativo dado por:

EREL =

∣∣∣∣1.04 gr/cm3 − 1.0 gr/cm3

1.0 gr/cm3

∣∣∣∣ = 0.04 gr/cm3 = 4.0 %

Como se sabe la densidad del agua en la gran mayorıa de ocasiones no esigual 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 solucion. En este caso el errorabsoluto 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

1.07 gr/cm3

∣∣∣∣ = 0.028 gr/cm3 = 2.8 %

El error relativo es un concepto relacionado con las denominadas cifras sig-nificativas. Estas se definen como las primeras cifras que no son cero y todos losdigitos subsiguientes. De esta forma 1.7320 tiene 5 cifras significativas, mien-tras que 0.0491 tiene solamente 3. A primera vista el concepto de cifras sig-nificativas puede parecer obvio e intuitivo pero esto no es correcto, ya que enmuchas situaciones la determinacion de las mismas se puede volver problemati-ca. Supongamos que un valor dado x0 tiene p cifras decimales, por lo tanto sinos preguntamos cuantas cifras correctas o cifras significativas tiene x0?, existensolamente p + 1 respuestas posibles. Esto indica que el numero de cifras signfi-cativas p de un numero no es una medida confiable y definitiva de la precisionde un valor x0.

De acuerdo a lo expuesto anteriormente se presenta la siguiente definicion decifras significativas:

Page 22: Notas Clase1

4 CAPITULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS

Definicion 2

Una aproximacion x0 de x tiene p cifras significativas si x0 y x se puedenredondear al mismo valor con p cifras significativas.

El procedimiento de redondeo consiste en reemplazar valor dado con el nume-ro mas cercano con p cifras significativas usando alguna regla para definir algu-na de las cifras cuando hay dos valores cercanos.

No existe una forma unificada para determinar cuantas cifras significativastiene un numero, ya que esto depende del procedimiento como se ha deter-minado (mediciones y calculos). Sin embargo si existen criterios que facilitandeterminar el numero de cifras significativas de un numero dado, y los cuales sepresentan a continuacion:

1. Los dıgitos que sean diferentes de ceros son significativos siempre.

2. Los ceros ubicados antes de otros dıgitos no son significativos; 0.235 tiene3 cifras significativas

3. Los ceros ubicados entre otros numeros son siempre significativos; 3205.8tiene 5 cifras significativas

4. Los ceros ubicados al final de un numero son significativos si estan a laizquierda del punto decimal (como en el numeral anterior), en otro casono se puede decir nada acerca de si son significativos o no. Por ejemplo, elnumero 3500 tiene al menos dos cifras significativas, pero dependiendo decomo fue obtenido podrıa tener 3 o 4.

Con el fin de evitar problemas para la comunicacion efectiva de valoresnumericos se ha desarrollado la notacion cientıfica, de tal forma que esta esla manera recomendada para la presentacion de los valores numericos. En es-te caso el numero de decimales usado en el numero de la base debe hacerseatendiendo a la forma como se obtuvo dicho valor.

1.3. Precision y Exactitud: Dos conceptos esquivos

La precision y exactitud son dos conceptos que se presentan frecuentementecomo equivalentes, y en la vida diaria (no tecnica) pueden emplearse comosinonimos; sin embargo, en este curso de Analisis Numerico se tiene que hacerla diferencia entre estos, de tal forma que se definen a continuacion:

Page 23: Notas Clase1

1.3. PRECISION Y EXACTITUD 5

Definicion 3

La exactitud se define como el error absoluto o relativo que tiene una canti-dad aproximada o medida. La precision de un valor hace referencia al nume-ro de dıgitos/cifras que emplean para expresar dicho valor, y por lo tanto sepuede concebir como la exactitud con la cual se presentan los valores y laforma como realizan las operaciones aritmeticas.

La exactitud y la precision tienen valores numericos iguales en el caso deoperaciones escalares como una suma c = a + b o un producto c = a × b. Sinembargo, en algunos casos la exactitud puede ser peor que la precision comoocurre en los procedimientos de solucion de sistemas lineales de ecuaciones.

En las aplicaciones cientıficas la precision se relaciona con el numero de ci-fras o dıgitos/lugares decimales con las cuales se realizan las mediciones y porlo tanto sirven para expresar los valores numericos. En este mismo contexto, laexactitud estarıa relacionada con la posicion decimal en la cual el valor comien-za a tener errores y por lo tanto ya no se puede tener un 100 % de seguridadsobre el mismo.

Un aspecto muy importante a tener en cuenta cuando se presenten valoresnumericos consiste en que estos se deberıan presentar con el numero de dıgi-tos decimales con que fueron medidos, con el fin de no dar una impresion falsaprecision. Por ejemplo, se determino la densidad de una muestra de madera depino en 500.0 kg/m3 el cual se esta presentando con una cifra decimal, y estevalor serıa diferente si se expresara como 500.000 kg/m3 y por lo tanto en lagran mayorıa de ocasiones resulta muy difıcil determinar la precision real de lasmediciones y/o determinaciones reportadas en la literatura.

Una forma grafica de entender los conceptos de precision y exactitud se pre-senta en la Figura 1.1.

En esta figura en la parte superior izquierda se presenta un caso en el cuallos 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 aproxi-man al blanco. En cuanto a la precision esta tambien es baja ya que otra formade concebir la precision es relacionandola con la dispersion que presentan losvalores entre si. La razon de esta idea corresponde al hecho que si las medicio-nes tienen una mayor precision esto implica que tienen un mayor numero dedecimales y por lo tanto las diferencias entre los valores se van a poder resolvercon mejor detalle. Por ejemplo, si se tienen mediciones de fuerzas realizadas conun dinamomentro cuya escala de medicion solo reporta decimas de Newton sepodran obtener valores de 12.5 N o 5.4 N. Pero en el caso que se cuente con otrodispositivo de medida cuya escala permita obtener mediciones del tipo 12.549N o 5.395 N, las diferencias entre estas medidas van a tener mas decimales y

Page 24: Notas Clase1

6 CAPITULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS

Figura 1.1: Ilustracion grafica de los conceptos de exactitud y precision

por lo tanto se consideran que son mas precisas. En la parte superior derechade la figura se presenta el caso en donde la exactitud mejora considerablemen-te ya que los dardos se agrupan alrededor del blanco. Ası mismo la precisionse incrementa cuando se compara con la situacion explicada anteriormente, sinembargo la dispersion alrededor del blanco sigue siendo evidente. En la parteinferior izquierda se aprecia una situacion en la cual la exactitud es baja (ya quelos dardos no se encuentran cerca del blanco), pero la precision es alta ya que ladispersion entre los valores no es tan alta como en el primer caso analizado. Enla parte inferior derecha se presenta una situacion en la cual tanto la precisioncomo la exactitud es alta, ya que los valores no presentan una gran dispersionentre si y se encuentran alrededor del blanco.

Page 25: Notas Clase1

1.3. PRECISION Y EXACTITUD 7

Ejemplo (Exactitud y Precision en la medida de la masa de un suelo)

En un trabajo de geotecnia se han obtenido muestras de un suelo arcillosoy se quiere realizar un ensayo en donde se requieren una muestra de 500 gr.Con el fin de separar la cantidad necesaria el laboratorio cuenta con dosbalanzas, una de ellas analoga y la otra digital. La balanza analoga tiene unaescala de medicion en marcas de 100 gr, mientras que la balanza digital tieneun display en donde se pueden hacer lecturas de decimas de gramo. Con labalanza analoga ud puede separar los 500 gr de suelo teniendo cuidadode medir bien usando la escala, mientras que la misma cantidad se puededeterminar de forma mucho mas facil usando la balanza digital debido aque el display tiene un mayor numero de decimales. En este caso se diceque la balanza digital es mas precisa que la analoga y que la precision es unconcepto que esta relacionado con la facilidad con la que se puede medir unacantidad. En este caso esta facilidad de medicion se encuentra relacionada conel numero de decimales

Ahora supongamos que se tiene una muestra de suelo de 300 gr, y esta sepesa utilizando los dos tipos de balanza mencionados anteriormente. En labalanza analoga la manecilla del indicador marca exactamente 300 gr, mien-tras que la balanza digital muestra en la pantalla un valor de 307.5894587gr. Si suponemos que la masa de la muestra de suelo es exactamente 300 gr,entonces quiere decir que la balanza analoga esta mostrando el valor verda-dero y por lo tanto podemos decir que es mas exacta que la balanza digital,a pesar que esta ultima nos muestra un mayor numero de decimales en ladeterminacion de la masa.

Es de vital importancia entender los conceptos de precision y exactitud enlas mediciones, ya que estas son las que se explican en los cursos de Labora-torio ya sea de Fısica y/o Quımica. Sin embargo en el presente curso se poneespecial enfasis en la forma como se aplican estos conceptos en procedimien-tos/algoritmos numericos empleados para resolver problemas de Ingenierıa. Dela discusion de los parrafos anteriores se sabe que la exactitud esta relacionadacon la facilidad para obtener el valor verdadero (lo cual implica que el errorabsoluto o relativo sea pequeno). En el analisis numerico este concepto es in-herente y propio del algoritmo o procedimiento numerico que se este empleandoy se recomienda seleccionar un metodo que asegure la obtencion de la respues-ta con el mınimo error posible. Por otra parte, la precision ya no depende tantodel algoritmo, sino del equipo con el cual se realicen los calculo. Hasta haceunos anos los PC que se utilizaban para labores de escritorio tenıan procesa-dores con 32 bits, caracterısticas que determina la precision de las operacionesmatematicas que puede realizar el equipo. Hoy en dıa con el desarrollo de losprocesadores de 64 bits, los computadores pueden representar numeros con unmayor numero de decimales tanto en la mantisa como en el exponente, lo cuales de vital importancia para las personas que se dedican a realizar modelamien-

Page 26: Notas Clase1

8 CAPITULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS

to numerico.

1.4. Error de Redondeo

Un computador no puede almacenar los numeros con una precision perfecta,y este es representado mediante un numero finito de bytes. La mayorıa de loslenguajes de programacion permiten que el usuario define si los procedimientosse van a realizar con numeros de precision simple (8 bytes) o de precision doble(16 bytes). Sin embargo algunos paquetes computacionales como MATLAB R©trabajan por defecto con numeros de doble precision (16 bytes).

Para problar la precision de MATLAB R© se puede emplear el siguiente codi-go:

>>x=1;

>>for i=1:1:10000;x=x-1.0e-16;end;

>>x

x =

0.99999999999888978

La cuestion es que en este caso el valor de x deberıa ser igual a 1.0, ya queel valor que se le esta restando es muy cercano a 0. En realidad, si en lugarde 1.0 × 10−16 se coloca 1.0 × 10−17 observe como cambia la respuesta. Estoes un indicio del error de redondeo para operaciones entre numeros de dobleprecision que maneja MATLAB R© valor que es igual a ε = 1.0 × 10−16. Estoquiere decir que existe un lımite para las diferencias entre numeros que se vana operar: Si la diferencia entre estos es menor que ε entonces los dos numerosse pueden considerar iguales. Ası mismo en el caso que se operen dos numeroscuya diferencia sea varios ordenes de magnitud se va a introducir un error deredondeo que se va a apreciar en la 16-ava cifra decimal, lo cual es aceptablepara la gran mayorıa de problemas. Esto es evidente en el siguiente codigo deMATLAB R©

>>x=pi

x =

3.14159265358979312

>>x=x-(5/3)*1e10

x =

- 16666666663.5250759

>>x=x+(5/3)*1e10

x =

Page 27: Notas Clase1

1.5. ESTABILIDAD NUMERICA 9

3.14159202575683594

De este ejemplo resuta claro que el valor de x obtenido al final no es igual alvalor de π especificado inicialmente. Esta situacion se agrava aun mas si el valorque multiplica al 5/3 se incrementa (ver problemas).

1.5. Estabilidad Numerica: Errores hacia adelantey hacia atras

La estabilidad numerica de un algoritmo es una caracterıstica importanteque debe tenerse en cuenta en el momento de seleccionar un procedimiento pa-ra resolver un problema particular.

Supongamos que un algoritmo numerico brinda una aproximacion y0 al valorde una funcion dada y = f(x). El valor de y0 en general no sera igual al valorverdadero y, ya que el procedimiento numerico empleado esta sujeto a diferen-tes tipos de errores (redondeo, truncamiento, etc). La pregunta importante enestas situaciones es: Como se puede determinar la calidad de y0 ?. Una posi-ble respuesta a esta inquietud la brinda el concepto del error relativo (ecuacion1.2), ya que se busca una solucion que cumpla EREL(y0) ≈ p, donde p es laprecision que maneja la maquina. Ası mismo se puede determinar la calidadde una aproximacion y0 mediante el error absoluto (ecuacion 1.1), siempre ycuando se conozca el valor verdadero o un valor de referencia para realizar lacomparacion. En estos dos casos se dice que se ha realizado un analisis de errorhacia delante. En la gran mayorıa de oportunidades es mejor considerar el errorrelativo (ecuacion 1.2) como medida de estabilidad en lugar del error absoluto(ecuacion 1.1), ya que el primero se expresa como porcentaje y por lo tantopuede ser empleado para realizar comparaciones.

Sin embargo el problema de juzgar la calidad de una aproximacion y0 se puedeabordar desde una perspectiva diferente. En lugar de darle importancia al resul-tado, es decir a y0, se puede determinar para que valores de x se obtiene dichaaproximacion. Eso se puede expresar como cual es el valor mınimo ∆x para elcual se tiene que f(x + ∆x) = y0?. Evidentemente existen muchos valores de∆x para los cuales se cumplen la condicion anterior, pero en este caso se deseadeterminar el valor mınimo, con lo cual el error quedarıa definido como:

EAtras =|∆x|

x(1.4)

El procedimiento de determinar y limitar el valor de EAtras se denomina analisisde error hacia atras y hay dos razones por las cuales es muy importante:

Page 28: Notas Clase1

10 CAPITULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS

b b

b

b

x

x + ∆x

Error hacia atras

y0 = f(x + ∆x)

y = f(x)

Error hacia delante

Figura 1.2: Interpretacion geometrica de los conceptos de error hacia adelantey error hacia atras

1. De acuerdo con la ecuacion (1.4) los errores de truncamiento se puedeninterpretar como perturbaciones en los datos. Si el error hacia atras espequeno comparado con ∆x entonces la aproximacion y0 es buena.

2. Limitar el error hacia adelante y − y0 se puede analizar mediante herra-mientas de la teorıa de la perturbacion

Una interpretacion grafica tanto del error hacia delante como hacıa atrasaparece en la figura 1.2. El error hacia delante puede ser cuantificado tanto porel error absoluto como por el error relativo, y para la determinacion de estese requiere conocer el valor verdadero. Es por esta razon que este aparece enla parte derecha de la grafica. En el caso del error hacıa atras este se puedecuantificar usando el valor de ∆x.Definicion 4

Se dice que un algoritmo es estable hacia atras, si el error hacia atras espequeno para todos los valores de x.

La definicion anterior tiene un problema: definir cuando un valor de error espequeno. Generalmente esta definicion depende del contexto y del problema deestudio, ya que generalmente un valor se puede considerar pequeno cuando seaproxima a la precision p del computador en donde se calcule.

Page 29: Notas Clase1

1.5. ESTABILIDAD NUMERICA 11

Ejemplo (Topografıa: Calculo del Perımetro de un Polıgono)

Suponga que se quiere determinar el perımetro de un area triangular,cuyos lados se midieron con cinta metricia arrojando los valores a, b y c.Ahora suponga que las mediciones obtenidas con la cinta metrica tiene unerror determinado que corresponden a ∆a, ∆b y ∆c. En este caso el perımetrodel area en estudio estarıa dado por:

P = (a+∆a)+ (b+∆b)+ (c+∆c) = (a+ b+ c)+ (∆a+∆b+∆c) = P +∆P

donde ∆P = ∆a + ∆b + ∆c. El error hacia atras, dado por la ecuacion (1.4),para esta situacion corresponderıa a:

EAtras(P ) =|∆P |

P=|∆a + ∆b + ∆c|

a + b + c

Debido a que ∆P depende de los valores de ∆a, ∆b y ∆c, se tiene que si estosvalores son pequenos entonces el ∆P tambien sera pequeno. Esto implicaque tanto la determinacion del perımetro de un polıgono es una operacionestable hacia atras y por lo tanto la suma es una operacion de este tipo.En este caso particular si tanto ∆a → 0, ∆b → 0 y ∆c → 0 y por lo tanto∆P → 0, el resultado obtenido serıa exacto.

Definicion 5

Se dice que un algoritmo es estable hacia adelante si su error hacia adelantedividido por el numero de condicion del problema es pequeno. El error haciaadelante puede corresponder al error absoluto y/o relativo.

Page 30: Notas Clase1

12 CAPITULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS

Ejemplo (Algoritmo estable hacia delante)

Se quiere determinar la estabilidad numerica para la funcion f(x) =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 obtieneel 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 precision que maneja MATLAB R© para numerosde doble precision. Esto indica que el error relativo obtenido en la determi-nacion de la raız cuadrada del numero 2 es muy cercano a la precision delas operaciones que se estan empleado y por lo tanto esta aproximacion seconsidera buena.

Para efectos practicos se emplea otra definicion de estabilidad numerica de-nominada estalidad mixta, la cual combina el error hacia delante y el error haciaatras.Definicion 6

Se dice que un algoritmo tiene estabilidad mixta si existe un ∆x tal que tanto∆x sea pequeno y que f(x + ∆x)− y0 sea pequeno.

y0 + ∆y = f(x + ∆x), |∆y| ≤ ε|y|, |∆x| ≤ ν|x| (1.5)

La interpretacion geometrica de este error aparece en la figura 1.3. En estafigura se puede apreciar que para un valor x especificado se obtiene una apro-ximacion y0. Pero cuando se especifica x + ∆x no se obtiene y0 sino en su lugarse obtiene un valor de y0 + ∆y, lo cual indica que hay otra componente de error

Page 31: Notas Clase1

1.5. ESTABILIDAD NUMERICA 13

presente. Esto hace que aparezca la estabilidad mixta en lugar de los otros tiposde estabilidad ya discutidos.

b b

b

b

b

x

x + ∆x

Error hacia atras

y = f(x)

Error hacia delante

y0

f(x + ∆x)

∆y

Figura 1.3: Interpretacion geometrica del error combinado hacia delante y atras

Page 32: Notas Clase1

14 CAPITULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS

Ejemplo (Funcion trigonometrica coseno)

La funcion cos (x) aparece en un gran numero de relaciones fısicas quese emplean en diferentes areas de la ingenierıa civil. La mayorıa de losprocedimientos que existen para calcularla no cumplen la condicion y0 =cos (x + ∆x) para un ∆x pequeno, sino que en lugar de esto tienen la carac-terıstica y0 + ∆y = cos (x + ∆x), donde ∆x y ∆y son valores relativamentepequenos. Por ejemplo, se desea calcular el valor de la funcion y = cos (x)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 terminos concretos 6 × 10−17 es un valor practicamente igual a 0. Siahora se define:

>>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 1×10−10. En este caso particular el valor del ∆y es claramen-te mayor que la precision con la que se realizan los calculos con numeros dedoble precision, indicando que el algoritmo para calcularla tiene estabilidadmixta.

1.6. Un concepto Importante: El numero de Condi-cion

Una de las grandes interrogantes que surgen en este momento es como de-terminar si un algoritmo numerico es estable o no?, o en otras palabras, comose puede determinar a-priori si la solucion al problema numerico planteado no

Page 33: Notas Clase1

1.6. NUMERO DE CONDICION 15

va a presentar incovenientes cuando lo implemente en un computador?.

En los metodos numericos, el numero de condicion de un problem particulares una medida de la facilidad con la cual se puede resolver usando calculo enun computador, es decir, si el computador lo puede resolver sin que se explotedurante el intento. Un problema con un numero de condicion bajo se dice queesta bien condicionado, mientras que un problema en donde este numero seaalto se denomina mal-condicionado. Tanto el error hacia delante como el errorhacia atras se encuentran relacionados. El punto de conexion es el denominadonumero de condicion. Esta relacion se encuentra expresada por:

Definicion 7

El numero de condicion se define como

c(x) =

∣∣∣∣xf′(x)

f(x)

∣∣∣∣ (1.6)

donde f(·) es la funcion de interes y f′(·) es su derivada. Este valor mide la

sensibilidad que tiene la solucion como consecuencia en pequenas perturba-ciones en los datos de entrada.

La definicion anterior se aplica en situaciones en donde se conoce la funcion yuna condicion importante que debe cumplir dicha funcion es que sea derivable.A continuacion se presente un ejemplo para la determinacion del numero decondicion:

Page 34: Notas Clase1

16 CAPITULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS

Ejemplo (Numero de condicion)

Determinar el numero de condicion para la funcion f(x) =√

(x) en x =2. Para esto es necesario determinar la derivada de esta funcion, la cual esigual a:

f′(x) =

1

2x−1/2

El numero de condicion se puede determinar facilmente en MATLAB R© dela 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 determinacion de la raız cuadrada de2 en MATLAB R© se puede considerar como una operacion bien condicionada.Ası mismo el numero de condicion se emplea para dar una definicion formalde la estabilidad hacia adelante, lo cual en este caso particular:

>>error_delante=abs(err_a)/num_condicion

error_delante=

8.881784197001252e-016

obteniendose nuevamente un valor muy cercano a la precision con la queMATLAB R© maneja las operaciones de numeros de doble precision, con locual se corrobora que el algoritmo con el que se calcula la raız cuadrada esestable hacia delante.

La relacion entre el numero de condicion y los errores hacia delante y haciaatras se puede expresar como:

Error hacia delante = Numero de Condicion× Error hacia atras (1.7)

aunque el igual se debe tomar con cuidado. Esta ecuacion implica que un proble-ma mal condicionado se caracterizar por un error hacia delante alto. El numerode condicion mide que tanto el error en los valores de entrada se propaga du-rante la obtencion de la solucion de un procedimiento numerico y por lo tantomide la forma como este afecta el error hacia delante. En el caso de la figura1.2 se puede apreciar para el ∆x dado el valor del error hacia delante es mayor

Page 35: Notas Clase1

1.6. NUMERO DE CONDICION 17

que la magnitud de ∆x implicando que se tiene un numero de condicion mayora 1.0.

Page 36: Notas Clase1

18 CAPITULO 1. ERROR RELATIVO Y CIFRAS SIGNIFICATIVAS

Page 37: Notas Clase1

Capıtulo 2

Serie de Taylor y Error deTruncamiento

2.1. Introduccion

EN LOS CURSOS PREVIOS DE MATEMATICAS, se explico que las series de poten-cia son una herramienta importante en varias ramas de la matematica tanto

pura como aplicada. El ejemplo mas claro de esto corresponde a la posibilidadde emplear dichas series para solucionar ecuaciones diferenciales ordinarias.En este problema, las series son empleadas como un equivalente de la solucionde dicha ecuacion diferencial, lo cual implica que estas series se pueden utili-zar para aproximar funciones. Esto tiene serias consecuencias para el analisisnumerico, en donde el analista/Ingeniero debe trabajar con aproximaciones afunciones en lugar de las funciones reales. Por lo tanto las series de potenciasy especialmente la serie de Taylor, estudiadas en el curso de Caculo I y Calcu-lo vectorial, son un punto de partida para el entendimiento de los errores derepresentacion que aparecen en el analisis numerico. El presente capıtulo esuna introduccion a la serie de Taylor y las implicaciones que tiene este en lacuantificacion del error y la representacion de modelos matematicos.

2.2. Serie y Teorema de Taylor

2.2.1. Serie de Taylor

Los polinomios son funciones muy faciles de calcular ya que involucran so-lamente operaciones sencillas (sumas, restas, multiplicaciones, entre otras). Sinembargo existen otras funciones que no corresponden a esta categorıa (funcionexponencial, trigonometricas, logaritmos, etc) los cuales no se pueden calculartan facilmente. La serie de Taylor permite aproximar dichas funciones como po-linomios (ver Figura 2.1, para un ejemplo con la funcion cos (x)) y por lo tanto

19

Page 38: Notas Clase1

20 CAPITULO 2. SERIE DE TAYLOR

brinda un medio util para calcularlas de forma mas sencilla que con la funcionoriginal. Esto es precisamente lo que hacen las calculadoras y los computadorescuando se invocan cualquiera de estas funciones. A continuacion se presenta unteorema que define dichas series:

Teorema 1

Sea f una funcion continua en el intervalo cerrado [a, b] y derivable en elintervalo abierto (a, b), entonces f(x) se puede aproximar a partir del valorde f(x0) como una serie de potencias de la forma:

f(x) ≈ f(x0) + f′(x0)(x− x0) +

f′′(x0)

2!(x− x0)

2 + . . .

=+∞∑k=0

fk(x0)

k!(x− x0)

k

(2.1)

donde k! es el factorial de k, y f (k)(x0) corresponde al valor de la k−esimaderivada de la funcion f(·) evaluada en el punto x0. La derivada de orden 0de f por definicion es igual a f y (x− x0)

0 es igual a 1.

.0

Figura 2.1: Un ejemplo grafico de la serie de Taylor para la funcion cos (x) enx = 0.0

Page 39: Notas Clase1

2.2. SERIE Y TEOREMA DE TAYLOR 21

La importancia de la serie de Taylor radica en que es posible conocer el va-lor de una funcion f(·) en un punto x a partir del conocimiento de la funcionen un punto cercano x0 si se conocen todas las derivadas de f en dicho punto.Ası mismo la serie de Taylor permite expresar cualquier funcion f(·) como unaserie de potencias como la dada en la ecuacion 2.1, si se conocen la derivadasde la funcion. Esto es de vital importancia en el analisis numerico, ya que exis-ten muchas funciones que no se pueden calcular directamente pero no ocurrelo mismo con su serie de Taylor; la cual resulta muy sencillo de obtener. Sinembargo queda aun un punto de vital importancia: Como puede ser de utilidadla serie de Taylor si se trata de una serie infinita?. Para resolver este problemaes necesario recurrir al denominado Teorema de Taylor.

2.2.2. Teorema de Taylor

El teorema de Taylor permite llevar al mundo real el importante conceptotraıdo por la Serie de Taylor: Cualquier funcion se puede aproximar como unpolinomio. Este teorema se encuentra enunciado a continuacion:Teorema 2

Si n ≥ 0 es un entero y f es una funcion que es continua y se puede derivar n-veces en el intervalo cerrado [a, b], y n + 1-veces diferenciable en el intervaloabierto (a, x), entonces se tiene que :

f(x) =n∑

k=0

fk(x0)

k!(x− x0)

k + Rn (2.2)

donde x, x0 ∈ [a, b] y ξ(x) ∈ Intervalo entre x y x0 y Rn se le denomina elresiduo de la aproximacion. Este termino de residuo esta dado por:

Rn =f (n+1)(ξ(x))

(n + 1)!(x− x0)

n+1 (2.3)

Este teorema establece que cualquier funcion f(·) se puede aproximar comoun polinomio cuyos coeficientes dependen de las derivadas de la funcion. Lagran diferencia con la serie de Taylor corresponde al hecho que para realizar laaproximacion ahora se tiene una serie con un numero finito de terminos mas untermino residual. Por lo tanto, este termino residual corresponde a una sumato-ria infinita de terminos y en general no serıa posible determinarlo. Sin embargoa nivel practico se tiene que el residual Rn → 0, cuando n → +∞ de tal formaque su determinacion no resulta tan necesaria. Con todo esto el estudio de Rn

brinda informacion importante acerca del error de truncamiento que se incurrecuando se emplea la serie de Taylor, lo cual se tratara con mas detalle en laseccion 2.3.

Page 40: Notas Clase1

22 CAPITULO 2. SERIE DE TAYLOR

A pesar que el valor de ξ no se puede determinar de forma concreta, lo uni-co que podemos decir de este es que se encuentra en el intervalo [x, x0]. Estose desprende del denominado teorema del valor medio. Este teorema se puedeenunciar de la siguiente forma:Teorema 3

Sea f : [a, b] → R una funcion continua en el intervalor cerrado [a, b] yderivable en el intervalo abierto (a, b), entonces existe un valor c ∈ [a, b] talque:

f′(c) =

f(b)− f(a)

b− a(2.4)

Este teorema aparece en el curso de calculo I y establece que si se tiene unacurva suave en un intervalo dado [a, b], existe un punto en dicho intervalo parael cual la derivada de la curva es igual a la derivada promedio de dicha curva enel intervalo. Este teorema se emplea para extraer conclusiones globales acercade una funcion a partir de informacion local representada por las derivadas enun conjunto de puntos en un intervalo dado. Este teorema se puede entenderusando un ejemplo de cinematica: Si un vehıculo viaja 100 km en una hora,entonces la velocidad promedio de este sera de 100 km/h. Sin embargo es claroque el vehıculo no mantendra la velocidad igual a 100 km/h durante todo elviaje, ya que habra momentos en los que se viaja mas rapido o mas lento. Sinembargo, lo que establece el teorema del valor medio es que en algun momentodel viaje el vehıculo tendra una velocidad exactamente igual a la de 100 km/h.

Esto se puede ver graficamente en la figura 2.2, en donde se tiene una fun-cion continua y suave definida en el intervalo [a, b]. En este caso particular lapendiente promedio en el intervalo se puede determinar como la pendiente de lasecante que une los extremos del intervalo. El teorema del valor medio estableceque existe un punto c ∈ [a, b] para el cual la pendiente es igual a la pendientepromedio del intervalo.

2.2.3. Funcion Exponencial

La funcion exponencial (ver figura 2.3) es una de las funciones mas impor-tantes de la matematica tanto pura como aplicada y corresponde a la operacioninversa del logaritmo natural. Analıticamente existen diferentes formas de defi-nir esta funcion, siendo una de las mas conocidas el resultado del lımite:

exp (x) = lımn→+∞

(1 +

x

n

)n

(2.5)

Si se quiere aproximar la funcion exponencial mediante series de Taylor esnecesario determinar las derivadas de esta funcion. En este caso las derivadas

Page 41: Notas Clase1

2.2. SERIE Y TEOREMA DE TAYLOR 23

b bb

a bc

y = f(x)

Secante

.

.

Figura 2.2: Ejemplo del teorema del valor medio.

se obtienen de forma sencilla:

f (k) = exp (x) (2.6)

Teniendo estas derivadas la expresion del teorema de Taylor para esta funcion(ecuacion 2.2) para x0 = 0 queda expresada por:

exp (x) =n∑

k=0

xk

k!+ Rn =

n∑k=0

xk

k!+

exp [ξ(x)]

(n + 1)!xn+1 (2.7)

En este caso particular resulta claro que Rn → 0 cuando n→ +∞ con lo cual sedesprecia el termino residual y se obtiene:

exp (x) =n∑

k=0

xk

k!= 1 + x +

x2

2!+

x3

3!+ . . . (2.8)

La ecuacion anterior corresponde a la definicion en terminos de series de la fun-cion exponencial tal y como se encuentra en diferentes libros de matematicas.

Page 42: Notas Clase1

24 CAPITULO 2. SERIE DE TAYLOR

0 1 2 3

1

2

3

4

5

6

.

.

y = exp(x)

Figura 2.3: Grafica de la funcion exponencial

A continuacion se presenta la implementacion en MATLAB R© de la serie deTaylor para la funcion exponencial. La estructura de la funcion es la siguiente:

"exp_taylor.m" 24a ≡

〈Exponencial Taylor: Inicializacion funcion 24b 〉〈Exponencial Taylor: Calculo sumatoria 25 〉

En la inicializacion de la funcion se especifican las variables de entrada y desalida de la misma. Las variables de entrada para esta funcion son las siguientes:

x: valor para el cual se quiere calcular la funcion

n: numero de terminos a considerar en la serie de Taylor

y la variable de salida es c el valor de la funcion exponencial obtenido con laaproximacion de la serie de Taylor.

〈Exponencial Taylor: Inicializacion funcion 24b 〉 ≡

function [c]=exp_taylor(x,n)�

Fragmento referenciado en 24a.

La descripcion del codigo que se incluye aqui sigue la metodologia denominada programacion literaria. Para mas detalles consultar la informacion dada por el Profesor.
Page 43: Notas Clase1

2.2. SERIE Y TEOREMA DE TAYLOR 25

La serie de Taylor corresponde a una sumatoria infinita (que para efectos practi-cos se trunca). Para obtener el valor de la funcion exponencial se emplea laecuacion 2.8, y a la variable c se le asigna un valor de 1.0 (ya que este es elprimer termino de la serie). El valor de la sumatoria se puede obtener a nivelcomputacional mediante un ciclo for, ya que se conoce el numero de terminossobre el cual se realiza la suma. Lo anterior se puede se puede expresar como:

〈Exponencial Taylor: Calculo sumatoria 25 〉 ≡

c=1.0;for i=1:1:n;

c=c+(x.^i)./(factorial(i));end;�

Fragmento referenciado en 24a.

Page 44: Notas Clase1

26 CAPITULO 2. SERIE DE TAYLOR

Ejemplo MATLAB R© (Serie de Taylor para la funcion exp (x))

Aproxime la funcion exponencial por medio de la serie de Taylor enx = 0.5 desde n = 1, . . . 6 a partir del valor de esta funcion en x = 0 usandola funcion exp taylor. Este procedimiento se puede realizar facilmente me-diante el siguiente codigo:

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.0204012 1.625000 1.648721 1.4387683 1.645833 1.648721 0.1751624 1.648438 1.648721 0.0172125 1.648698 1.648721 0.0014166 1.648720 1.648721 0.000100

Ahora como es evidente a medida que el numero de terminos en la aproxi-macion de Taylor aumenta, el error relativo disminuye.

2.2.4. Funcion Coseno

La funcion coseno corresponde a una funcion trigonometrica de gran im-portancia en problemas geometricos y en el modelamiento de comportamientosperiodicos (ver figura 2.4). A nivel tradicional esta funcion se define a partir deun triangulo, como el mostrado en la figura 2.5.

En este caso el coseno del angulo x se define como la relacion entre la longituddel cateto adyacente con respecto a la hipotenusa del triangulo:

cos (x) =A

H

Sin embargo hoy en dıa existen otras definiciones de la funcion cos (x) tal comola que daremos a continuacion en terminos de series de Taylor. Las derivadas de

Page 45: Notas Clase1

2.2. SERIE Y TEOREMA DE TAYLOR 27

80 160 240 320−80−160−240−320

1

−1.

.y = cos (x)

Figura 2.4: Grafica de la funcion coseno

Figura 2.5: Triangulo empleado para la definicion de las funciones trigonometri-cas.

la funcion cos (x) estan dadas por:

f (1)(x) = sin (x)

f (2)(x) = cos (x)

......

(2.9)

Estas derivadas se pueden generalizar de la siguiente forma:

f (k)(x) = cos

(x +

πk

2

), ,∀k (2.10)

Page 46: Notas Clase1

28 CAPITULO 2. SERIE DE TAYLOR

y aplicandolas en la ecuacion 2.2 la expansion en series de Taylor de esta funcionpara x0 = 0 quedarıa dada por:

cos (x) =n∑

k=0

cos(x + πk

2

)k!

xk +cos(ξ(x) + π(n+1)

2

)(n + 1)!

xn+1 (2.11)

Del mismo modo el termino del residual Rn → 0 con lo cual se tiene:

cos (x) =+∞∑l=0

cos π(2l)2

(2l)!x2l =

+∞∑k=0

(−1)k x2k

(2k)!

= 1 ++∞∑k=1

(−x2)k

(2k)!= 1− x2

2!+

x4

4!− x6

6!+ . . .

(2.12)

Una posible implementacion en MATLAB R© de la serie de Taylor para estafuncion se presenta a continuacion. La estructura de la funcion es la siguiente:

"cos_taylor.m" 28a ≡

〈Coseno Taylor: Inicializacion funcion 28b 〉〈Coseno Taylor: Calculo sumatoria 29 〉

Las variables de entrada para esta funcion son las siguientes:

x: valor para el cual se quiere calcular la funcion

n: numero de terminos a considerar en la serie de Taylor

y la variable de salida es c el valor de la funcion coseno obtenido con laaproximacion de la serie de Taylor.

〈Coseno Taylor: Inicializacion funcion 28b 〉 ≡

function [c]=cos_taylor(x,n)�

Fragmento referenciado en 28a.

En este caso el resultado de la aproximacion de Taylor al coseno se va a alma-cenar en la variable c. Este valor se inicializa en 1.0, ya que este es el primertermino de la serie (ecuacion 2.12). Para realizar la suma de los terminos dela serie de Taylor se emplea un ciclo for empleando la expresion dada por laecuacion 2.12. Esto a nivel de codigo se implementa de la siguiente forma:

Page 47: Notas Clase1

2.2. SERIE Y TEOREMA DE TAYLOR 29

〈Coseno Taylor: Calculo sumatoria 29 〉 ≡

c=1.0;for i=1:1:n;

c=c+((-x^2)^i)/factorial(2*i);end;�

Fragmento referenciado en 28a.

Page 48: Notas Clase1

30 CAPITULO 2. SERIE DE TAYLOR

Ejemplo MATLAB R© (Serie de Taylor para la funcion cos (x))

Aproxime la funcion coseno por medio de la serie de Taylor en x = π/3desde n = 1, . . . 6 a partir del valor de esta funcion en x = 0 usando lafuncion cos taylor. Este procedimiento se puede realizar facilmente medianteel siguiente codigo:

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.6622712 0.501796 0.500000 0.3592403 0.499965 0.500000 0.0070874 0.500000 0.500000 0.0000875 0.500000 0.500000 0.0000016 0.500000 0.500000 0.000000

Ahora como es evidente a medida que el numero de terminos en la aproxi-macion de Taylor aumenta, el error relativo disminuye.

2.2.5. Funcion Seno

La funcion seno es otra de las funciones trigonometricas, y se incluye aquı co-mo ejemplo de la utilizacion de la serie de Taylor. Para definir esta funcion seemplea el triangulo representado en la figura 2.5, De acuerdo a este, el senodel angulo x se define como la relacion entre la longitud del cateto opuesto conrespecto a la hipotenusa del triangulo:

sin (x) =O

H

Para determinar la expresion de la serie de Taylor es necesario conocer lasderivadas de la funcion, las cuales en este caso corresponden a:

f (1) = cos (x)

f (2) = − sin (x)

f (3) = − cos (x)

...

(2.13)

Page 49: Notas Clase1

2.2. SERIE Y TEOREMA DE TAYLOR 31

80 160 240 320−80−160−240−320

1

−1

−2.

.

y = sin (x)

Figura 2.6: Grafica de la funcion sin (x)

Estas derivadas se pueden generalizar por medio de la siguiente expresion:

f (k)(x) = sin

(x +

πk

2

), ∀k (2.14)

con lo cual la expresion de la serie de Taylor para la funcion sin (x) para x0 = 0quedarıa dada por:

sin (x) =n∑

k=0

sin(

πk2

)k!

xk +sin(ξ(x) + π(n+1)

2

)(n + 1)!

xn+1 (2.15)

Asumiendo que el resido de Taylor de dicha expansion cumple Rn+1 → 0 cuandon→ +∞, la expresion anterior se simplifica y se obtiene:

sin (x) = x

+∞∑k=0

(−x2)k

(2k + 1)!(2.16)

Una posible implementacion de la funcion que permite aproximar la funcionsin (x) usando series de Taylor en MATLAB R© tendrıa la siguiente estructura:

"sin_taylor.m" 31 ≡

〈Seno Taylor: Inicializacion funcion 32a 〉〈Seno Taylor: Calculo sumatoria 32b 〉

Las variables de entrada para esta funcion son las siguientes:

Page 50: Notas Clase1

32 CAPITULO 2. SERIE DE TAYLOR

x: valor para el cual se quiere calcular la funcion

n: numero de terminos a considerar en la serie de Taylor

y la variable de salida es c el valor de la funcion seno obtenido con la apro-ximacion de la serie de Taylor.

〈Seno Taylor: Inicializacion funcion 32a 〉 ≡

function [c]=sin_taylor(x,n)�

Fragmento referenciado en 31.

La determinacion del valor de la funcion sin (x) usando la serie de Taylor sebasa en la ecuacion 2.15. Para implementar esta expresion, se inicializa la va-riable c en 0 y se realiza la sumatoria mediante un ciclo for. Finalmente el valorresultante de c se multiplica por x y la funcion finaliza su ejecucion.

〈Seno Taylor: Calculo sumatoria 32b 〉 ≡

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.

Page 51: Notas Clase1

2.2. SERIE Y TEOREMA DE TAYLOR 33

Ejemplo MATLAB R© (Serie de Taylor para la funcion sin (x))

Aproxime la funcion trigonometrica seno por medio de la serie de Tayloren x = π/3 desde n = 1, . . . 6 a partir del valor de esta funcion en x = 0usando la funcion sin taylor. Este procedimiento se puede realizar facilmentemediante el siguiente codigo:

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.1806382 0.866295 0.866025 0.0311633 0.866021 0.866025 0.0004774 0.866025 0.866025 0.0000055 0.866025 0.866025 0.0000006 0.866025 0.866025 0.000000

Ahora como es evidente a medida que el numero de terminos en la aproxi-macion de Taylor aumenta, el error relativo disminuye.

2.2.6. Funcion Logaritmo natural

La funcion logaritmo natural f(x) = ln x es la inversa de la funcion exponen-cial (ver Figura 2.7). Esta es una funcion que aparece en diversas aplicaciones yes de especial importancia para este tema, debido a que presenta una disconti-nuidad en x = 0 se hace necesario tenerla en cuenta a la hora de determinar laserie de Taylor.

Las derivadas de la funcion Logaritmo natural estan dadas por las siguiente

Page 52: Notas Clase1

34 CAPITULO 2. SERIE DE TAYLOR

1 2 3 4 50

1

2

−1

.

.

y = log (x)

Figura 2.7: Grafica de la funcion logaritmo natural

expresiones:

f (1) =1

x

f (2) = − 1

x2

f (3) =2

x3

f (4) = − 6

x4

...

(2.17)

de las cuales es evidente que son polinomios y que forman un claro patron. Estasderivadas se pueden generalizar de la siguiente forma:

f (k)(x) = (−1)k−1 (k − 1)!

xk(2.18)

con lo cual la serie de Taylor para la funcion ln x estarıa dada por:

ln (x) =n∑

k=0

(−1)k−1 (x− 1)k

k+ (−1)n 1

(n + 1)

(x− 1)n+1

ξn+1(x)(2.19)

Page 53: Notas Clase1

2.2. SERIE Y TEOREMA DE TAYLOR 35

En este caso particular x0 = 1 ya que esta funcion presenta una discontinuidaden x = 0. El termino residual tiende a 0 a medida que incluımos mas terminos,con lo cual la serie de Taylor para el logaritmo se simplifica y queda como:

ln (x) =+∞∑k=0

(−1)k−1 (x− 1)k

k= (x− 1)− (x− 1)2

2+

(x− 1)3

3− . . . (2.20)

Una posible implementacion de la serie de Taylor para la funcion logaritmonatural en MATLAB R© se presenta a continuacion:"log_taylor.m" 35a ≡

〈 Logaritmo Taylor: Inicializacion de la funcion 35b 〉〈 Logaritmo Taylor: Calculo de la sumatoria 35c 〉

Al igual que las otras funciones implementadas esta funcion tiene como varia-bles de entrada:

x: valor en el cual se quiere aproximar la funcion logaritmo mediante se-ries de Taylor

n: numero de terminos a considerar en la aproximacion

y la variable de salida c corresponde al valor aproximado de la funcion.〈 Logaritmo Taylor: Inicializacion de la funcion 35b 〉 ≡

function [c]=log_taylor(x,n)�

Fragmento referenciado en 35a.

Para calcular el valor de la funcion logaritmo en el punto x usando la serie deTaylor, se utiliza la sumatoria definida en la ecuacion 2.20, para lo cual el valorde c se inicializa en 0.0. Para implementar dicha sumatoria se emplea un ciclofor, con lo cual resulta el siguiente codigo:〈 Logaritmo Taylor: Calculo de la sumatoria 35c 〉 ≡

c=0.0;for i=1:1:n;

c=c+((-1)^(i-1))*((x-1).^i)/i;end;�

Fragmento referenciado en 35a.

Page 54: Notas Clase1

36 CAPITULO 2. SERIE DE TAYLOR

Ejemplo MATLAB R© (Serie de Taylor para la funcion ln (x))

Aproxime la funcion logaritmo natural por medio de la serie de Taylor enx = 1.2 desde n = 1, . . . 6 a partir del valor de esta funcion en x = 1 usando lafuncion log taylor. Este procedimiento se puede realizar facilmente medianteel siguiente codigo:

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.6962992 0.180000 0.182322 1.2733313 0.182667 0.182322 0.1892864 0.182267 0.182322 0.0301065 0.182331 0.182322 0.0049976 0.182320 0.182322 0.000854

Ahora como es evidente a medida que el numero de terminos en la aproxi-macion de Taylor aumenta, el error relativo disminuye.

2.2.7. Polinomio

Supongamos que se quiera aproximar una funcion polinomial de la forma:

f(x) = (1 + x)n (2.21)

donde n es un exponente que define el grado del polinomio. En este caso parti-cular las derivadas son muy faciles de determinar:

f (1)(x) = n(1 + x)n−1

f (2)(x) = n(n− 1)(1 + x)n−2

...

(2.22)

de tal forma que la n-esima derivada se puede obtener de:

f (k)(x) = n(n− 1) . . . (n− k + 1)(1 + x)n−k (2.23)

Page 55: Notas Clase1

2.3. ERROR DE TRUNCAMIENTO 37

La serie de Taylor para esta funcion quedarıa dada por:

f(x) =n∑

k=0

n(n− 1) . . . (n− k + 1)

k!xk+

n(n− 1) . . . (n− k)

(n + 1)!(1 + ξ(x))n−(k+1)xn+1

(2.24)

donde ξ(x) ∈ [0, 1]. Un caso de interes corresponde a n = k, o sea, que n es unnumero entero ya que se tiene que Rn+1(x) = 0 y por lo tanto la aproximaciones exacta. En este caso se obtiene la famosa formula del binomio de Newton:

(1 + x)n = 1 + nx +n(n− 1)

2!x2 + . . . + xn (2.25)

2.3. Serie de Taylor y Error de Truncamiento

Todos los metodos numericos realizan aproximaciones de los problemas ma-tematicos que de una u otra forma afectan las soluciones. Este aspecto es devital importancia y es aquı donde se hace necesario introducir el concepto delerror de truncamiento.Definicion 8

El error de truncamiento se define como aquel error en el que se incurrecuando se usa una aproximacion en lugar de un procedimiento matematicoque es exacto.

La serie de Taylor (seccion 2.2.1) permite cuantificar el error de truncamien-to, ya que para efectos practicos la expansion dada por la ecuacion 2.1 se truncateniendo en cuenta solo n terminos. El termino residual (ecuacion 2.3) es iguala este error de truncamiento y como se vio en la seccion 2.2.2 su valor exacto nose puede determinar. Sin embargo su conocimiento resulta de vital importanciaya que con este se puede entender como se comporta el error de truncamiento yque factores lo afectan. Para este punto se hace necesario introducir la notacionde la gran O. Esta notacion se estudia en la Ingenierıa de Sistemas para denotarla eficiencia de los algoritmos.

Page 56: Notas Clase1

38 CAPITULO 2. SERIE DE TAYLOR

Ejemplo (Aproximacion de Taylor)

Aproximar el valor de cos (π/4) usando la serie de Taylor y determinar suerror de Truncamiento.

El error de truncamiento para esta funcion esta dado por el termino resi-dual (ecuacion 2.11) de donde:

Rn =cos(ξ(x) + π(n+1)

2

)(n + 1)!

xn+1 (2.26)

y de donde resulta evidente que:

lımn→+∞

Rn = lımn→+∞

cos(ξ(x) + π(n+1)

2

)(n + 1)!

xn+1 = 0 (2.27)

2.4. Serie de Taylor y Diferenciacion Numerica

Como se vio anteriormente, la Serie de Taylor es una herramienta util para ladefinicion de las derivadas de forma numerica. En el problema del paracaidista,se empleo un argumento geometrico para obtener una expresion que permitierasolucionar la ecuacion diferencial del movimiento retardado. Sin embargo algoque resulta curioso en este caso, es que la misma solucion se puede obtener apartir de las series de Taylor. Si se tiene una funcion que describe la variacionde la velocidad en el tiempo v(t) esta se puede expandir en los alrededores delpunto ti+1 para obtener:

v(ti+1) = v(ti) + v(1)(ti)(ti+1 − ti) +v(2)(ti)

2!(ti+1 − ti)

2 + . . . (2.28)

lo cual se puede hacer si se conocen todas las derivadas de la funcion v(t). Si laexpresion anterior se trunca hasta el termino que contiene la primera derivadase obtiene:

v(ti+1) = v(ti) + v(1)(ti)(ti+1 − ti) + R1 (2.29)

donde R1 corresponde al termino residual. Despejando v(1)(t) se obtiene:

v(1)(ti) =v(ti+1 − v(ti))

ti+1 − ti+

R1

ti+1 − ti(2.30)

expresion cuyo primer termino coincide con la formula empleada para la solu-cion de la ecuacion diferencial. Sin embargo un aspecto interesante de la ecua-cion 2.30 es que incluye el termino del residual y por lo tanto con este es posible

Page 57: Notas Clase1

2.4. DIFERENCIACION NUMERICA 39

estudiar el error de truncamiento para la expresiones que describren las deriva-das. De acuerdo al Teorema de Taylor, este termino residual es igual a:

R1

ti+1 − ti=

v(2)(ξ)

2!(ti+1 − ti) (2.31)

donde v(2)(ε) corresponde a la segunda derivada de la velocidad y ξ es un valoren el intervalo [ti, ti+1]. La ecuacion anterior se puede expresar mejor empleandola notacion de la Gran O, de la siguiente forma:

R1

ti+1 − ti= O(ti+1 − ti) = O(∆t) (2.32)

de donde resulta claro que el error de truncamiento para la expresion de la de-rivada dada por la ecuacion 2.29 es del orden (de ahı el nombre de Gran O) o esproporcional a ∆t. Esto quiere decir que si se desea reducir el error es necesarioemplear un incremento temporal ∆t menor.

La expresion para la derivada (ecuacion 2.29) es conocida en el analisis numeri-co como diferencia finita, y su expresion general esta dada por:

f (1)(xi) =f(xi+1)− f(xi)

xi+1 − xi

+ O(xi+1 − xi) (2.33)

donde el error de truncamiento es del orden del incremento empleado para cal-cularla. La ecuacion anterior representa la denominada diferencia finita haciadelante, ya que permite calcular la derivada en un punto particular i usandoinformacion de un punto i + 1 ubicado delante de este. El termino xi+1 − xi re-presenta el incremento empleado para calcular dicha derivada y a nivel generalse representa como h.

La ecuacion 2.33 es una de las diferentes formas como se pueden determinarnumericamente las derivadas. Otra posibilidad consiste en realizar la aproxima-cion de la serie de Taylor empleando un punto cercano ubicado antes que elpunto de interes:

f(xi−1) = f(xi)− f (1)(xi)(xi − xi−1) +f (2)(xi)

2!(xi − xi−1) + . . . (2.34)

con lo cual aparece la denominada diferencia finita hacia atras, la cual se en-cuentra definida por la siguiente expresion:

f (1)(xi) ≈f(xi)− f(xi−1)

xi − xi−1

−O(h) (2.35)

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

Page 58: Notas Clase1

40 CAPITULO 2. SERIE DE TAYLOR

Otra forma para aproximar la derivada de forma numerica se puede derivaral calcular la diferencia entre la ecuacion 2.33 y 2.35, con lo cual se obtiene lasiguiente expresion:

f(xi+1) = f(xi) + f (1)(xi)(xi+1 − xi) +f (2)(xi)

2!(xi+1 − xi)

2 + . . . (2.36)

de donde se despeja la derivada para llegar a:

f(xi+1) = f(xi−1) + 2f (1)(xi)h +2f (3)(xi)

3!h2 + . . . (2.37)

Si se la expresion anterior se trunca:

f (1)(xi) =f(xi+1)− f(xi−1)

2h−O(h2) (2.38)

se obtiene la denominada diferencia finita central y se llega a la conclusion queel error es proporcional a h2, y por lo tanto presenta un error menor que el casode la diferencia finita hacia delante o hacia atras.

Page 59: Notas Clase1

2.4. DIFERENCIACION NUMERICA 41

Ejemplo (Diferenciacion numerica de la ecuacion de Manning)

La ecuacion de Manning se emplea para describir el flujo de agua en uncanal abierto. Esta ecuacion se encuentra dada por:

Q =1.49

nS

1/2f AR2/3

donde Q es el caudal, Sf es la pendiente del terreno, A es el area transversaldel canal y R es el denominado radio hidraulico. Se requiere calcular la deri-vada de Q con respecto a R, cuando R = 2.5 de forma numerica empleandodiferencias finitas hacia delante, hacia atras y centradas.

La derivada de la ecuacion anterior es igual a:

dQ

dR=

0.993

nS

1/2f AR−1/3

de tal forma que para R = 2.5, n = 1 × 10−3, Sf = 0.001 y A = 4.5 setiene que Q(1) = 104.1154. Este mismo procedimiento se repite usando ladiferencia finita hacia delante haciendo Ri = 2.5 y Ri+1 = 2.6:

Q(1)(2.5) =Q(Ri+1)−Q(Ri)

Ri+1 −Ri

=400.9107− 390.5639

2.6− 2.5= 103.4681

Para determinar la diferencia finita hacia atras se emplea Ri−1 = 2.4:

Q(1)(2.5) =Q(Ri)−Q(Ri−1)

Ri −Ri−1

=390.5639− 380.0782

2.5− 2.4= 104.8574

Para calcular la diferencia finita central se hace Ri+1 = 2.6 y Ri−1 = 2.4,con lo cual se tiene:

Q(1)(2.5) =Q(Ri+1)−Q(Ri−1)

2(Ri+1 −Ri−1)=

400.9107− 380.0782

2.6− 2.4= 104.1627

De los resultados obtenidos anteriormente es evidente que la mejor aproxi-macion de la derivada se obtiene con la diferencia finita central.

Page 60: Notas Clase1

42 CAPITULO 2. SERIE DE TAYLOR

2.5. Propagacion del Error

Definicion 9

La propagacion del error se define como el efecto que tienen los errores delas variables sobre la incertidumbre en una funcion que se aplica sobre ellas.Generalmente las mediciones de las variables son obtenidas por dispositivoso en el laboratorio y por lo tanto tienen errores que deberıan ser tenidos encuenta en subsecuentes manipulaciones que se hagan a partir de ellas (porej. la determinacion de algun parametro de interes mediante una formulamatematica)

Para el estudio de la propagacion del error primero se van a considerar lasoperaciones aritmeticas basicas (suma, resta, multiplicacion y division), debidoa la importancia que tienen estas en la gran mayorıa de los calculos numericos.Supongamos que se tienen dos valores medidos, que a nivel general se denomi-nan como x y y, las cuales tienen unos errores cuantificables expresados como∆x y ∆y respectivamente. A partir de estas se determina una nueva cantidad zmediante una funcion f(x, y) y por lo tanto se quiere cuantificar cual es el erroren la determinacion de z, es decir, cual es el valor de ∆z?. Generalmente lasexpresiones que permiten calcular este error se dan en los cursos de estadısticabasica y en las sesiones de introduccion en los laboratorios, pero de todas for-mas se incluyen aquı. La descripcion de estas formulas se hace de acuerdo a laoperacion aritmetica involucrada:

Suma y Resta z = x + y o z = x − y. En este caso se asume una situacionpesimista. Se va a suponer que los errores ∆x y ∆y tienen valores quehacen que z se desvie lo maximo posible del valor real y por lo tanto loserrores se acumulan con lo cual:

∆z = ∆x + ∆y (2.39)

En el caso que existan mas terminos en la suma/resta se tiene que el efectoacumulado es la suma de los errores parciales.

Multiplicacion : Las expresiones del error en la multiplicacion se pueden obte-ner de forma sencilla. Sabiendo que z = x× y esto se convierte en:

z + ∆z = (x + ∆x)(y + ∆y) = xy + x∆y + y∆x + ∆x∆y (2.40)

El ultimo termino de esta expresion se puede despreciar si se tiene encuenta que ∆x ≪ x y ∆y ≪ y con lo cual se obtiene:

z + ∆z = xy + ∆xy + ∆yx (2.41)

y sabiendo que z = xy se puede despejar ∆z:

∆z = ∆xy + ∆yx (2.42)

Page 61: Notas Clase1

2.5. PROPAGACION DEL ERROR 43

Multiplicacion por un escalar : Multiplicar el error por el escalar:

∆z = c×∆x (2.43)

Division : En este caso se asume que z = x/y e introduciendo los errores seobtiene:

z + ∆z =x + ∆x

y + ∆y(2.44)

despejando ∆z se tiene:

∆z =x + ∆x

y + ∆y− z =

x + ∆x

y + ∆y− x

y=

y(x + ∆x)− x(y + ∆y)

y(y + ∆y)

=xy + y∆x− xy − x∆y

y2 + y∆y

(2.45)

y simplificando se obtiene:

∆z =y∆x− x∆y

y2(2.46)

ya que el termino y∆y es pequeno comparado con y2

Page 62: Notas Clase1

44 CAPITULO 2. SERIE DE TAYLOR

Ejemplo (Determinacion del error de la densidad del Concreto)

Como Ingeniero ud debe determinar la densidad de una muestra de con-creto. Para esto se emplea la vieja y conocida expresion:

ρ =m

V

donde m es la masa de la muestra y V es el volumen. Para su fortuna, lamuestra presenta una forma cubica y por lo tanto la determinacion del volu-men es sencilla, para lo cual ud mide con una regla el lado de la muestra, elcual resulta ser igual a 20.0 cm. Sin embargo esta medicion tiene un error, elcual esta determinado por la escala de graduacion de la regla y que en estecaso es igual a 0.1 cm (1 mm). Debido a la forma de la muestra de concreto,el volumen y su error estan dados por:

V + ∆V = l3 + 3l2∆l

donde ∆V = 3l2∆l y con lo cual se tiene que V = 0.008 m3 y ∆V = 1.20 ×10−4 m3.

Para la determinacion de la masa se empleo una balanza y en este casose obtuvo un valor de 19.72 kg, con un error de 0.05 Kg. De acuerdo con laecuacion (2.46), el error en la densidad esta dado por:

∆ρ =V ∆m−m∆V

V 2

donde ∆m y ∆V son los errores en la masa y el volumen respectivamen-te, 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 matematicas involucren funciones diferentesa las operaciones aritmeticas tradicionales, la serie de Taylor proporciona unaherramienta util para la cuantificacion de la propagacion del error. Se parte dela serie de Taylor (ecuacion 2.1) y se trunca de tal manera que solo contenga ala 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)

Page 63: Notas Clase1

2.5. PROPAGACION DEL ERROR 45

Ejemplo (Ley de Stokes)

Considere un conjunto de partıculas esfericas de densidad ρs y radio Rasentandose en un fluido de densidad ρ y viscosidad µ. La velocidad vs con laque se asientan dichas partıculas se encuentra descrita por la Ley de Stokes:

vs = −2g

9µ(ρs − ρ)R2

en donde el signo negativo indica que el movimiento ocurre en la direccionnegativa del eje de las y. Suponga que tanto la densidad como el radio de lapartıcula presentan un error que no se puede ignorar y se quiere determinarcual de estos factores influye mas en la velocidad de asentamiento. Pararesponder a esta pregunta se emplea la ecuacion 2.48, la cual aplicada eneste caso resulta en:

∆vs =

∣∣∣∣dvs

∣∣∣∣∆ρ

∆vs =

∣∣∣∣dvs

dR

∣∣∣∣∆R

y en donde la derivada de la velocidad con respecto al radio de la partıculaes:

dvs

dR= −4g

9µ(ρs − ρ)R

y la derivada de la velocidad con respecto a la densidad:

dv2

dρs

=2g

9µR

Si se asume que el fenomeno de asentamiento ocurre en un rıo y lo quese esta sedimentando es arena de grano fino (R = 64µm = 64 × 10−3m),esta tiene una densidad de ρs = 2600 kg/m3,el agua tiene una densidad deρ = 1000 kg/m3 y una viscosidad de µ = 8.90 × 10−4N∆s/m2. La velocidadque tendrıan estas partıculas es vs = 1.603627465667915×104 m/s, y con estose obtuvo para ∆R = 1× 10−3 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 mas influencia en ladeterminacion de la velocidad de asentaniento corresponde al Radio de lapartıcula.

Page 64: Notas Clase1

46 CAPITULO 2. SERIE DE TAYLOR

Page 65: Notas Clase1

Capıtulo 3

Metodos para la solucion deecuaciones no-lineales

3.1. Introduccion

EN MUCHOS PROBLEMAS DE LA INGENIERIA CIVIL aparecen ecuaciones algebrai-cas que no se pueden resolver analıticamente. Un caso particular de esta

situacion corresponde a la ecuacion de Manning. Esta ecuacion es muy impor-tante en hidraulica ya que permite realizar la descripcion del flujo en un canalabierto.

Q =1

nAR2/3S1/2 (3.1)

donde:

Q caudal

A Area seccion

R es el radio hidraulico

S es la pendiente

n es el coeficiente de Manning

El radio hidraulico se define como

R =A

P(3.2)

donde A = area de la seccion y P = perımetro de la misma. La ecuacion deManning (ecuacion 3.1) queda:

Q =1

nA

(A

P

)2/3

S1/2 (3.3)

47

Page 66: Notas Clase1

48 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

Para el caso de un canal cuya seccion tiene forma rectangular, el perımetro mo-jado esta dado por:

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 ecuacion de manning para un canal de seccion rectangularse pueda expresar como:

Q =1

n

(bh)5/3

(b + 2h)2/3S1/2 (3.6)

Un problema comun en el diseno de estructuras hidraulicas consiste en deter-minar la profundidad h de un canal que pueda conducir un caudal dado Q. Sinembargo como es evidente de la ecuacion 3.6 la variable h no se puede despejarde forma algebraica y por lo tanto se debe recurrir a una solucion numerica. Losprocedimientos para solucionar dicho problema caen dentro de los denomina-dos metodos para la solucion de ecuaciones no lineales y son el tema central delpresente capıtulo.

3.2. Tipos de Raıces

En la ecuacion de Manning presentada anteriormente, el problema de de-terminar el h (la profundidad del canal) se puede reformular escribiendo laecuacion 3.6 de la forma f(h) = 0, con lo cual se obtiene:

f(h) =1

n

(bh)5/3

(b + 2h)2/3S1/2 −Q = 0 (3.7)

de tal forma que ahora el problema consiste en determinar los valores de h paralos cuales se cumple la ecuacion anterior. Si se supone que f(h) se puede expre-sar como un polinomio y recordando los conceptos del Algebra del Bachillerato,este serıa un problema muy similar al de determinar las raıces de un polinomio.La cuestion aquı es que a pesar que f(h) no tiene la forma de un polinomio,el concepto anterior sigue aplicando, y la solucion de las ecuaciones no-linealesse denominan raıces. Por lo tanto la definicion de este importante concepto sepresenta a continuacion:

Definicion 10

Una raız de una funcion f(x) es un numero xr para el cual se cumple quef(xr) = 0

Page 67: Notas Clase1

3.2. TIPOS DE RAICES 49

Sin embargo es de aclarar que una funcion puede tener mas de una raız xr.En terminos generales la funcion f(x) puede ser de dos tipos:

Polinomios: es una expresion matematica de una o mas variables que seconstruye usando operaciones algebraicas:

• adicion

• substraccion

• multiplicacion

• exponenciacion de constantes racionales (generalmente).

Funciones Trascendentales: estas son funciones que no se pueden definiren terminos de expresiones algebraıcas que usen variables y constantes,como las mencionadas anteriormente. Esto quiere decir que estas corres-ponden a funciones que no se incluyen dentro de las funciones polino-miales y cuyos coeficients pueden ser polinomios. Ejemplo de este tipode funciones incluyen: funciones trigonometricas, logaritmo en cualquierbase, funcion exponencial, y cualquier otra que se defina a partir de estas.

Dependiendo del tipo de ecuacion se pueden tener raıces de diferentes tipos.Los polinomios de segundo grado son un caso particular que permite ilustrar lostipos de raıces presentes en funciones no lineales. Es bien sabido del algebra delbachillerato que las ecuaciones de la forma ax2 + bx + c = 0 pueden tener raıcesde 3 tipos:

Raıces reales iguales

Raıces reales diferentes

Raıces complejas conjugadas

Combinacion de la anteriores

Un criterio aproximado que puede ser empleado para determinar el numerode raıces en una funcion polinomial corresponde a la denominada Regla de lossignos de Descartes. Esta regla se puede expresar de la siguiente forma:Definicion 11

Si un polinomio con coeficientes reales, de una sola variable, se ordena deforma decreciente de acuerdo al exponente, entonces el numero de raıcespositivas reales de esa funcion es igual el numero de cambios de signo entrecoeficientes consecutivos no-nulos o es menor a este por un multiplo enterode 2. Para determinar el numero de raıces negativas reales se cambia elsigno de las potencias impares y el numero de raıces en este caso es igual alnumero de cambios de signo en este polinomio modificado o es menor a estepor un multipo entero de 2.

Page 68: Notas Clase1

50 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

Ejemplo (Numero de Raices Positivas de un Polinomio)

Determinar el numero de raı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 designo se tiene:

f(x) = +x4−︸ ︷︷ ︸Cambio

3x3−9x2+︸ ︷︷ ︸Cambio

x−︸︷︷︸Cambio

5

de lo cual se tienen 3 cambios de signos y por lo tanto se tienen las siguientesopciones:

3 raıces positivas reales, o,

2 raıces complejas y 1 raız real positiva

Evidentemente las raıces complejas deben ser conjugadas entre sı.

Ejemplo (Numero de Raices Negativas de un Polinomio)

Determinar el numero de raıces reales negativas del siguiente polinomio:

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 elcriterio se tiene:

f(x) = x4 +3x3−︸ ︷︷ ︸Cambio

9x2 − x− 5

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

3.3. Metodos AbiertosDefinicion 12

Los metodos abiertos para la determinacion de raıces son aquellos en loscuales se hace necesario especificar el intervalo en donde se encuentra laraız.

Dentro de los metodos abiertos se pueden mencionar:

Page 69: Notas Clase1

3.3. METODOS ABIERTOS 51

Metodos Graficos

Metodos de Biseccion

3.3.1. Metodo Grafico

3.3.1.1. Fundamentos Conceptuales

Este metodo es el mas simple de todos y se basa en el hecho que la raız xr deuna ecuacion no-lineal f(x) corresponde al punto en donde la grafica de dichafuncion cruza el eje x.

En MATLAB R© este metodo se puede aplicar por medio de diferentes funcio-nes, sin embargo, la mas apropiada es la funcion plot. Esta funcion tiene unasıntaxis muy sencilla:

plot(x,y,s)

donde x corresponde al vector con las coordenadas x de los puntos que se quie-ran grafica, mientras que y es el vector con las coordenadas y. En cuanto a s esuna cadena conformada por tres caracteres. El primero hace referencia al colorque se quiere emplear para graficar, el segundo al tipo de marcador y el terceroal tipo de lınea. Las opciones que MATLAB R© ofrece para cada uno de ellos sepresentan en la tabla 3.1

Caracter Color Caracter Marcador Caracter Tipo de Lıneab azul . punto - solidag verde o cırculo : punteadar rojo x marca de x -. lınea-puntoc cyan + mas - - lınea intermitentem magenta * asterisco (ninguno) no lıneay amarillo s cuadradok negro

Tabla 3.1: Tabla de opciones de graficacion de MATLAB R©

Page 70: Notas Clase1

52 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

Ejemplo MATLAB R© (Jugando con las opciones de graficacion)

El procedimiento de graficacion en MATLAB R© es relativamente sencillo,ya que existen una gran cantidad de comandos especializados que permitenobtener graficas de forma rapida. El comando mas sencillo y util correspon-de al plot(·) . Para realizar las pruebas respectivas se define un vector denumeros aleatorios con distribucion uniforme de la siguiente forma:

>>y=rand(100,1);

Este vector se puede graficar facilmente usando el comando:

plot(y);

el cual utiliza las opciones de graficacion por defecto de MATLAB R© y quecorresponden a lınea azul de color continuo, sin marcadores; es decir, que lainstruccion anterior es equivalente a plot(y,’b-’). Ası mismo si el objetivoes resaltar solamente el valor se puede graficar solamente con marcadores debolita:

plot(y,’o’);

o si queremos tanto resaltar la variacion como los valores se puede construiruna grafica con lınea punteada y con marcadores de puntos:

plot(y,’-.’);

3.3.1.2. Ecuacion de Manning

Con el fin de aplicar los diferentes metodos para la determinacion de lasraıces de una ecuacion no-lineal es necesario implementar la ecuacion de Man-ning en MATLAB R© . Esta funcion se encuentre implementada de la siguienteforma:

"prueba_manning.m" 52 ≡

〈Prueba Manning: Declaracion de la Funcion 53a 〉〈Prueba Manning: Inicializacion de variables 53b 〉〈Prueba Manning: Evaluacion funcion 53c 〉

3.3.1.2.1. Declaracion de la Funcion Con el fin de simplificar la utilizacionde esta funcion, solo se tiene una variable de entrada que corresponde a laprofundidad del canal h, y como variable de salida f , el valor de la funcion deinteres (ecuacion 3.7) evaluada en h:

Page 71: Notas Clase1

3.3. METODOS ABIERTOS 53

〈Prueba Manning: Declaracion de la Funcion 53a 〉 ≡

function f=prueba_manning(h)�

Fragmento referenciado en 52.

3.3.1.2.2. Inicializacion de Variables En este fragmento de codigo se es-pecifican los valores que son constantes en el problema del canal, los cualesincluyen:

b: ancho del canal en m

Q: Caudal en m3/s

S: pendiente (medida adimensional)

n: Coeficiente de rugosidad de manning

Esto se en MATLAB R© implementa de la siguiente forma:

〈Prueba Manning: Inicializacion de variables 53b 〉 ≡

b=30;Q=1000;S=0.002;n=0.022;�

Fragmento referenciado en 52.

3.3.1.2.3. Evaluacion de la funcion Una vez se han definido las diferentesconstantes del problema, se puede evaluar la funcion (ecuacion 3.7):

〈Prueba Manning: Evaluacion funcion 53c 〉 ≡

f = Q-1/n*(b*h).^(5/3)./(b+2*h).^(2/3).*sqrt(S);�

Fragmento referenciado en 52.

Page 72: Notas Clase1

54 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

Ejemplo MATLAB R© (Determinacion de raıces usando el metodo Grafico)

Determine la profundidad del canal h que permite pasar un caudal deq = 1000 m3/s para un valor de ancho b = 30 m, de pendiente de S = 0.002y un coeficiente de manning de n = 0.022. Para resolver este problema, enprimer lugar se define un vector de profundidades en el que se incluyen losvalores para los cuales se desea graficar la funcion de Manning. En este casose quiere graficar para valores de profundidad entre 0 y 10 m, para lo cualdefinimos 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 iren el eje x, y por lo tanto se debe definir los valores del eje y, lo cual se hacepor medio de:

>> f=prueba_manning(h);

Para graficar sencillamente se emplea la funcion plot y se especifican losvalores de x y y:

>> plot(h,f)

El resultado de este procedimiento se puede apreciar en la figura 3.1 y de lacual es evidente que el valor para el cual f(h) = 0 es de aproximadamente 6m.

0 2 4 6 8 10−1500

−1000

−500

0

500

1000

Profundidad(m)

func

ión

f(h)

Figura 3.1: Grafica de la profundidad contra el valor de la funcion f(h). El valorde la raız es aproximadamente 6.0 m

Page 73: Notas Clase1

3.3. METODOS ABIERTOS 55

3.3.2. Metodo de la Biseccion

3.3.2.1. Fundamentos Conceptuales

Este es uno de los metodo mas sencillos que existe y su utilizacion se basaen la siguiente idea que se presenta como un teorema:Teorema 4

Una ecuacion de la forma f(x) = 0, donde f(x) es una funcion real continua,tiene al menos una raız en el intervalo [xl, xu] si se cumple que f(xl)f(xu) < 0

La idea expuesta por este teorema aparece representada de forma grafica en lafigura 3.2(a). De esta resulta claro que existe un raız en el intervalo [xl, xu]. Sinembargo este teorema garantiza que si la condicion f(xl)f(xu) se cumple puedeexistir mas de una raız tal y como se aprecia en la figura 3.2(b).

Ahora es necesario mencionar que el criterio en el que se fundamenta elteorema 4para realizar la busqueda de las raıces no es siempre valido, ya quese puede tener una situacion en donde f(xl)f(xu) > 0 y en el intervalo puedenexistir una raız o mas, tal como aparece representado en la figura 3.3

Debido a que la raız xr se encuentra en el intervalo [xl, xu] entonces se de-termina el punto medio xm de este intevalo con lo cual generamos dos nuevossubintervalos:

[xl, xm]

[xm, xu]

Ahora es necesario determinar en que intervalo se encuentra la raız xr. Paraesto se evalua la funcion en xm, es decir se obtiene f(xm) y se calcula el signode f(xl)f(xm). Aquı se tienen dos casos:

f(xl)f(xm) < 0: la raız xr se encuentra en este intervalo. En este caso elprocedimiento se repite nuevamente y se hace que xu = xm.

f(xl)f(xm) > 0: la raız xr se encuentra en el intervalo f(xm)f(xu). En estecaso el procedimiento se repite haciendo xl = xm

EL procedimiento anterior se repite de forma que cada vez el intervalo en dondese encuentra la raız se va volviendo mas pequeno, hasta que al final se llegue aaislar la raız x0.

Las desventajas del metodo de la biseccion incluyen:

La convergencia a la raız xr puede ser lenta

Si la raız xr se encuentra muy cerca de uno de los extremos del intervalo[xl, xu] entonces el numero de iteraciones necesario para que el algoritmoconverja sera muy alto.

Page 74: Notas Clase1

56 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

(a)

(b)

Figura 3.2: a). Existe al menos una raız en el intervalo [xl, xu] si la funcioncambia de signo. b). Pero puede presentarse la situacion que exista mas de unaraız si la condicion se cumple.

Si se selecciona un intervalo en donde no hay cambio de signo de la fun-cion, entonces no hay garantıa que el procedimiento presente convergen-cia.

Si el intervalo seleccionado [xl, xu] incluye un punto de singularidad, elprocedimiento presentara convergencia a dicho punto.

Ejemplo (Dimension caracterıstica de un lago)En problemas de transporte de contaminantes en cuerpos de agua es indispensa-

Page 75: Notas Clase1

3.3. METODOS ABIERTOS 57

Figura 3.3: En este caso se presenta una situacion en donde la funcion tienevalores positivos en los extremos del intervalo pero existen raıces en este.

Figura 3.4: Lago con forma irregular. Para determinar la dimension caracterısti-ca de este se aproxima la forma mediante una cirfunferencia de radio r

ble conocer las dimensiones caracterısticas. Estas dimensiones caracterısticas sepueden considerar las escalas (representadas por areas, longitudes y/o volume-nes) en los cuales se puede asumir que una propiedad es representativa o cons-tante. Suponga que se tiene un lago (ver figura 3.4) y se quiere determinar sudimension lineal caracterıstica usando el metodo de la biseccion. En este caso la

Page 76: Notas Clase1

58 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

Figura 3.5: Ejemplo de aplicacion del metodo de la Biseccion o busqueda bina-ria. Se parte del intervalo [xL, xU ] en donde se encuentra una raız xr, y para elcual se cumple que f(xL) × f(xU) < 0. Se define la nueva aproximacion a laraız como el punto medio del intervalo xm y se determina para que extremo secumple que el producto de los valores de la funcion sea menor que 0. En ese mo-mento se modifica el intervalo original y el procedimiento se repite nuevamente.

dimension lineal caracterıstica del lago se asume como el radio de la circunfe-rencia que tiene la misma area superficial. Esta se puede determinar facilmentea partir de la relacion:

AL = 4πr2

en donde AL es el area del lago y r es la dimension caracterıstica deseada.Despejando esta ultima variable se tiene:

r =

√AL

de tal manera que la dimension lineal caracterıstica es equivalente a evaluar laraız cuadrada de la un valor especıfico. Supongamos que el area del lago es de

Si esta usando un Acrobar Reader cuya version sea menor a la 6.0 la primera vez que vea esta pagina la figura no se podra visualizar de forma correcta. Para solucionar esto por favor vaya a la siguiente pagina y regrese. En ese momento ya debe ver la figura sin ningun problema.
Page 77: Notas Clase1

3.3. METODOS ABIERTOS 59

25km2, con lo cual se tiene que r = 1.4104 y por lo tanto la dimension linealcaracterıstica es igual a r =

√1.9894.

Para calcular este valor se emplea la siguiente funcion:

f(x) = x2 − 1.9894 = 0 (3.8)

Para aplicar el metodo de la biseccion en la solucion de este problema debemosespecificar el intervalo de busqueda, el cual en este caso serıa [1, 2]. El puntomedio de este intervalo y por lo tanto la primera aproximacion a la raız es:

x(1)m =

2.0 + 1.0

2= 1.5

donde x(k)m el k representa el numero de iteracion. Para saber si cual extremo

del intervalo se modifica, es necesario evaluar la funcion en los 3 puntos xl, xm

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 sedebe cambiar de 2.0 a 1.5.

Para la iteracion 2 se tiene que el punto medio ahora es igual a:

x(2)m =

1.0 + 1.5

2= 1.25

y al evaluar la funcion en los extremos del intervalo y el punto medio se obtiene:

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 yahora xl = 1.25.Para la tercera iteracion, el punto medio es igual a:

x(3)m =

1.25 + 1.50

2= 1.375

y al evaluar la funcion en los extremos del intervalo y el punto medio se obtiene:

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

Page 78: Notas Clase1

60 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

de donde se determina que se debe cambiar el extremo inferior del intervalo yahora xl = 1.375.

Para la cuarta iteracion, el punto medio es igual a:

x(4)m =

1.375 + 1.5

2= 1.4375

y al evaluar la funcion en los extremos del intervalo y el punto medio se obtiene:

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ız aproxi-mada sea menor que la tolerancia especificada inicialmente.

3.3.2.2. Determinacion de raıces usando el metodo de la biseccion

Una implementacion del procedimiento de la biseccion en MATLAB R© sepresenta a continuacion:

"biseccion.m" 60 ≡

〈Biseccion: Declaracion de la funcion 61a 〉〈Biseccion: Inicializacion de variables 61b 〉〈Biseccion: Ciclo Principal 62a 〉

3.3.2.2.1. Declaracion de la funcion Las variable de entrada de esta fun-cion son la siguientes:

xl, xu: extremo inferior y superior del intervalo de busqueda

func: funcion a la cual se le quieren determinar los valores de la raıces

maxit: Numero maximo de iteraciones

errmin: error mınimo de la solucion

Las variables de salida son:

xr: valor de la raız obtenido por este metodo

f : vector con los valores de la funcion para cada una de las iteraciones

err: vector con los valores del error obtenido para cada una de las itera-ciones xr

Page 79: Notas Clase1

3.3. METODOS ABIERTOS 61

iter: numero de iteraciones empleado para obtener el valor de xr

〈Biseccion: Declaracion de la funcion 61a 〉 ≡

function [x,f,err,iter]=bisection(xl,xu,func,maxit,errmin)�

Fragmento referenciado en 60.

3.3.2.2.2. Inicializacion de Variables En este fragmento de codigo se inicia-lizan las diferentes variables que se van a utilizar en el resto del procedimiento.El error relativo err se inicializa en 100 %, el numero de iteraciones iter se ini-cializa en 0, el valor de la raız se hace igual al extremo inferior del intervaloxl,

〈Biseccion: Inicializacion de variables 61b 〉 ≡

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 busqueda de la raız se implementa como unciclo while ya que no se conoce de antemano el numero de iteraciones que se vana emplear para obtener la raız xr. Sin embargo este ciclo se controla medianteel numero de iteraciones (definido en la variable iter y que continue mientrastiene un valor menor a maxiter) y que el error relativo de la raız actual err seamayor a cierto valor mınimo de error predefinido por el usuario y almacenadoen la variable minerr. La estructura de este ciclo principal es la siguiente:

Page 80: Notas Clase1

62 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

〈Biseccion: Ciclo Principal 62a 〉 ≡

while (err > errmin & iter < maxit );〈Ciclo Principal Biseccion: Calculo nueva solucion 62b 〉〈Ciclo Principal Biseccion: Calculo de las funciones 62c 〉〈Ciclo Principal Biseccion: Donde esta la solucion 63a 〉〈Ciclo Principal Biseccion: Calculo error e incremento iteraciones 64a 〉〈Ciclo Principal Biseccion: Asignacion de resultados 64b 〉

end;�

Fragmento referenciado en 60.

3.3.2.2.3.1. Calculo nueva solucion Para calcular la nueva solucion seemplea la ecuacion

〈Ciclo Principal Biseccion: Calculo nueva solucion 62b 〉 ≡

xold=xr;xr=0.5*(xl+xu);

Fragmento referenciado en 62a.

3.3.2.2.3.2. Calculo de las funciones Se evalua la funcion en cada unode los extremos del intervalo [xl, xu]. Para esto empleamos la funcion de MATLABR© feval.

〈Ciclo Principal Biseccion: Calculo de las funciones 62c 〉 ≡

fr=feval(func,xr);fl=feval(func,xl);

Fragmento referenciado en 62a.

3.3.2.2.3.3. Donde esta la solucion? Una vez se ha determinado la so-lucion en cada uno de los 3 puntos de interes, se determinar en donde puedeencontrarse la solucion. Para esto existen 3 posibilidades:

La raız se encuentra en la mitad inferior del intervalo

La raız se encuentra en la mitad superior del intervalo

El valor actual corresponde al valor de la raız

Page 81: Notas Clase1

3.3. METODOS ABIERTOS 63

〈Ciclo Principal Biseccion: Donde esta la solucion 63a 〉 ≡

〈Solucion: raız en mitad inferior 63b 〉〈Solucion: raız en mitad superior 63c 〉〈Solucion: raız encontrada 63d 〉

Fragmento referenciado en 62a.

La raız se encuentra en la mitad inferior si se cumple que f(xr)× f(xl) < 0, eneste caso se asigna como extremo superior del intervalo el valor de xr

〈Solucion: raız en mitad inferior 63b 〉 ≡

if(fr*fl<0);xu=xr;root=xr;

Fragmento referenciado en 63a.

La raız se encuentra en la mitad superior del intervalo si se cumple la condicionf(xr) × f(xl) > 0, en cuyo caso se asigna como extremo inferior del intervalode busqueda el valor de xr y se asigna este valor como aproximacion de la raız(root).〈Solucion: raız en mitad superior 63c 〉 ≡

elseif(fr*fl>0);xl=xr;root=xr;

Fragmento referenciado en 63a.

Si ninguna de las dos condiciones anterior se cumple, entonces esto implica queel valor de xr se puede considerar una raız de la ecuacion en estudio y por lotanto este valor se asigna en root .

〈Solucion: raız encontrada 63d 〉 ≡

elseroot=xr;

end�

Fragmento referenciado en 63a.

Page 82: Notas Clase1

64 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

3.3.2.2.3.4. Calculo error e incremento de iteraciones Una vez se haobtenido una aproximacion a la raız de la ecuacion se determina la calidadnumerica de la misma calculando el error relativo. Ası mismo se incrementa elnumero de iteraciones.

〈Ciclo Principal Biseccion: Calculo error e incremento iteraciones 64a 〉 ≡

er=(abs(xr-xold)/xr)*100;iter=iter+1;

Fragmento referenciado en 62a.

3.3.2.2.3.5. Asignacion de resultados El valor actual de la raız xr, ası co-mo el valor de la funcion func en ese punto y error relativo de la aproximacionactual de la raız se almacenan en los respectivos vectores.

〈Ciclo Principal Biseccion: Asignacion de resultados 64b 〉 ≡

x(iter)=xr;f(iter)=feval(func,xr);err(iter)=er;

Fragmento referenciado en 62a.

Page 83: Notas Clase1

3.3. METODOS ABIERTOS 65

Ejemplo MATLAB R© (Solucion de Manning con el Metodo de la Biseccion)

Para encontrar la raız de una funcion empleando el metodo de la Bisec-cion es necesario definir el intervalo en donde se debe realizar la busqueda.Para este caso particular, los resultados obtenidos del metodo grafico (verFigura 3.1) indica que el valor de la raız es de aproximadamente 6, de talforma que el intervalo de busqueda corresponde a [5, 7], el numero maximode iteraciones es de 100 y el error mınimo deseado para la solucion es de1 × 10−3. La solucion de la ecuacion de Manning usando el metodo de laBiseccion se puede implementar en MATLAB R© de la siguiente forma:

>>[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 infiere que el valor de la profundidad del canal es de 6.1450 m.

3.3.2.3. Analisis de Convergencia

A continuacion se presenta un analisis de convergencia para el metodo de labiseccion. Para realizar dicho analisis se parte del concepto de error absoluto

E0a = x0

u − x0l = ∆x0 (3.9)

donde los superındices definen la iteracion para la cual este importante parame-tro se calcula. Para la primera iteracion el error esta dado por:

E1a =

∆x0

2(3.10)

y debido a que en cada iteracion el error disminuye a la mitad se tiene que:

Ena =

∆x0

2n(3.11)

de tal forma que si se tiene el error que se desea obtener con esta aproximacionse puede despejar n con lo cual resulta:

n =log (∆x0/Ea,d)

log 2= log2

(∆x0

Ea,d

)(3.12)

Page 84: Notas Clase1

66 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

La convergencia del metodo se encuentra asegurada por la ecuacion 3.11 endonde es evidente que el error disminuye a medida que el numero de iteracionesn aumenta.

3.4. Metodos CerradosDefinicion 13

Los metodos cerrados para determinar raıces de ecuaciones no lineales sonaquellos que no requieren espeficar un intervalo de busqueda sino solamenteun valor inicial de la raız.

Dentro de los metodos cerrados mas importantes se pueden mencionar:

Metodo de Newton

Metodo de la secante

Metodo de la secante modificado

los cuales se explicaran a continuacion.

3.4.1. Metodo de Newton

3.4.1.1. Fundamentos Conceptuales

El metodo de Newton al ser un metodo cerrado requiere que se especifiqueun valor inicial de la raız x0 y este valor se va refinando mediante un esquemaiterativo.

El metodo de Newton tiene su fundamento en la serie de Taylor aplicada enla funcion f(x), con lo cual se tiene:

f(x) = f(x0) + f′(x0)(x− x0) +

f′′(x0)

2!(x− x0)

2 + · · · (3.13)

y truncando esta serie hasta la primera derivada se obtiene:

f(x) = f(x0) + f′(x0)(x− x0) (3.14)

Ahora si se hace x = xr se tiene que f(xr) = 0:

0 = f(x0) + f′(x0)(xr − x0) (3.15)

y despejando xr:

xr = x0 −f(x0)

f ′(x0

(3.16)

Page 85: Notas Clase1

3.4. METODOS CERRADOS 67

Esta ecuacion se puede expresar como un esquema iterativo de la siguiente for-ma:

xn+1 = xn −f(xn)

f(xn+1)(3.17)

La idea fundamental del metodo de Newton consiste en especificar una solucioninicial x0 y al aplicar la ecuacion 3.17 para mejorar la estimacion de la raız xr.Este procedimiento se repite hasta que las diferencias obtenidas en los valoresobtenidos sean menores que una tolerancia especificada por el usuario.

El metodo de Newton tambien puede interpretado de forma geometrica usandola situacion representada en la figura 3.6. De esta se infiere que el angulo θ tieneuna tangente igual a:

tan (θ) =f(xi)− 0

xi − xi+1

(3.18)

De aquı resulta de interes el valor de xi+1 ya que este corresponde a la nuevaestimacion de la raız xr y por lo tanto al despejar se tiene:

xi+1 = xi −f(xi)

tan (θ)= xi −

f(xi)

f ′(xi)(3.19)

en donde se ha empleado la equivalencia entre la tangente en un punto de unafuncion y la derivada de la funcion. Esta ecuacion es equivalente a la expresion3.17 la cual se obtuvo de una forma alternativa.

xixi+1xi+2

θ

.

.

f(xi)

f(xi+1)

f(x)

x

Figura 3.6: Interpretacion geometrica del metodo de Newton

A pesar que este procedimiento es uno de los mas empleados en la practica parala determinacion de raıces tiene limitaciones. Algunas de las desventajas de estemetodo son las siguientes:

Page 86: Notas Clase1

68 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

.0

Figura 3.7: Ejemplo de aplicacion del metodo de Newton. En este metodo separte de una solucion inicial x0 y en el punto f(x0) se determina una recta tan-gente, la cual al intersectarse con el eje de las x define una nueva aproximaciona la raız x1. Este procedimiento se repite hasta que se obtenga un valor lo sufi-cientemente aproximado a la raız. Las rectas representadas por la lınea continuase construyen empleando el criterio de actualizacion dado por la ecuacion 3.17.

Como todo metodo iterativo la convergencia no esta asegurada. Por ejem-plo si se elige mal la solucion inicial x0 el metodo en algunas oportunida-des puede presentar divergencia.

El metodo presenta divergencia si la raız xr de la funcion f(x) es tambienun punto de inflexion de la misma.

El metodo presenta problema en cercanıas de puntos maximos y mınimosya que en estos puntos f

′(x) = 0 y por lo tanto la ecuacion 3.17 no esta de-

finida.

En el caso de funciones con multiples raices se pueden presentar proble-

Si esta usando un Acrobar Reader cuya version sea menor a la 6.0 la primera vez que vea esta pagina la figura no se podra visualizar de forma correcta. Para solucionar esto por favor vaya a la siguiente pagina y regrese. En ese momento ya debe ver la figura sin ningun problema.
Page 87: Notas Clase1

3.4. METODOS CERRADOS 69

mas de convergencia por saltos en la determinacion de xr

El metodo presenta problemas en cercanıas de los puntos de inflexion, endonde el signo de la derivada puede cambiar.

Ejemplo (Dimension caracterıstica de un lago)Para aplicar el metodo de Newton para la solucion de este problema es necesarioespecificar:

x0 solucion inicial, que en este caso es 2.0

Derivada de la funcion, que en este caso es f (1)(x) = 2x

Tolerancia mınima aceptable, 0.01 %

Para la iteracion 1 se tiene que:

x0 = 2.0

f(x0) = 2.0106

f (1)(x0) = 4.0

(3.20)

y por lo tanto el nuevo valor de la raız es:

x1 = x0 =f(x0)

f (1)(x0)= 2.0− 2.0106

4.0= 2.0− 0.5026 = 1.4973

Para la iteracion 2 se tiene que:

x1 = 1.49735

f(x1) = 0.2526

f (1)(x1) = 2.9947

y por lo tanto el nuevo valor de la raız es:

x2 = x1 −f(x1)

f (1)(x1)= 1.49735− 0.2526

2.9947= 1.4129

Para la iteracion 3 se tiene que:

x2 = 1.4129

f(x2) = 0.00688

f (1)(x2) = 2.8258

y por lo tanto el nuevo valor de la raız es:

x3 = x2 −f(x2)

f (1)(x2)= 1.4129− 0.00688

2.8258= 1.4104

El anterior procdimiento se repite hasta que el error relativo de la raız aproxi-mada sea menor que la tolerancia especificada inicialmente.

Page 88: Notas Clase1

70 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

3.4.1.2. Determinacion de raıces con el metodo de Newton

La funcion en MATLAB R© que implementa el metodo de newton se denominanewton.m y tiene la siguiente estructura

"newton.m" 70a ≡

〈Newton: Declaracion de la funcion 70b 〉〈Newton: Inicializacion de variables 71a 〉〈Newton: Ciclo Principal 71b 〉

3.4.1.2.1. Declaracion de la funcion : Esta funcion tiene las siguientes va-riables de entrada:

xguess: valor inicial de la raız. Generalmente depende del problema y sepuede determinar por metodos graficos

func: funcion en estudio y de la cual se quiere determinar la raız

dfunc: derivada de la funcion de la cual se quiere determinar la raız

err min: error mınimo que se quiere obtener en la raız

maxit: Numero maximo de iteraciones

Esta funcion tiene como variables de salida las siguientes:

x: vector

〈Newton: Declaracion de la funcion 70b 〉 ≡

function [x,f,err,iter]=newton(xguess,func,dfunc,errmin,maxit)�

Fragmento referenciado en 70a.

3.4.1.2.2. Inicializacion de Variables Para realizar la determinacion de laraız de la funcion func se hace necesario inicializar las variables de salida (ex-plicadas en la seccion anterior) junto con las siguientes variables:

iter: contador de iteraciones

er valor inicial de error relativo. Se inicializa en 100 %

xold: valor de la raız en la iteracion anterior (Para calcular el error relativopor iteracion). Se inicializa con el valor de la raız inicial.

Page 89: Notas Clase1

3.4. METODOS CERRADOS 71

xr: valor de la raız en la iteracion actual. Se inicializa con el valor inicialde la raız.

〈Newton: Inicializacion de variables 71a 〉 ≡

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 nume-ro de iteraciones necesario para que el procedimiento de obtencion de la raızconverja a una solucion satisfactoria, el metodo de Newton se implementa anivel computaciona como un ciclo while, controlado tanto por el numero de ite-raciones iter y por el error relativo de la solucion err. El ciclo se detiene ya seacuando el numero de iteraciones supera el valor maximo max it o cuando elerror relativo err es menor al error mınimo tolerable en la solucion err min.

La estructura de este ciclo principal es la siguiente:

〈Newton: Ciclo Principal 71b 〉 ≡

while (er>=errmin & iter<maxit)〈Ciclo Principal Newton: Actualizacion solucion 72a 〉〈Ciclo Principal Newton: Calculo error e incremento iteraciones 72b 〉〈Ciclo Principal Newton: Asignacion de resultados 72c 〉

end�

Fragmento referenciado en 70a.

3.4.1.2.3.1. Actualizacion de la solucion Aquı se realiza el procedimien-to clave del metodo de Newton. Dentro de el ciclo la primera tarea que se hacees asignar a xold el valor de la raız obtenido en la iteracion anterior, con lo cualse posibilita calcular el error relativo. Posteriormente el valor de la raız actualse modifica usando la ecuacion 3.17. Para evaluar la funcion y su derivada seemplea el comando de MATLAB R© feval.

Page 90: Notas Clase1

72 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

〈Ciclo Principal Newton: Actualizacion solucion 72a 〉 ≡

xrold=xr;xr=xrold-feval(func,xrold)/feval(dfunc,xrold);

Fragmento referenciado en 71b.

3.4.1.2.3.2. Calculo del error e incremento de iteraciones Como semenciono anteriormente el criterio de convergencia de este metodo es el errorrelativo, ası que para la solucion actual se determinar el error relativo obtenidoal comparar este valor con el de la raız obtenida en la solucion anterior xold.Ası mismo se incrementa el contador de iteraciones iter, ya que esta es la otravariable que controla el ciclo.

〈Ciclo Principal Newton: Calculo error e incremento iteraciones 72b 〉 ≡

er=abs((xr-xrold)/xr)*100;iter=iter+1;

Fragmento referenciado en 71b.

3.4.1.2.3.3. Asignacion de resultados

〈Ciclo Principal Newton: Asignacion de resultados 72c 〉 ≡

x(iter)=xr;f(iter)=feval(func,xr);err(iter)=er;

Fragmento referenciado en 71b.

3.4.1.3. Derivada de la ecuacion de Manning

Con el fin de aplicar el metodo de Newton para la solucion de la ecuacionde Manning es necesario calcular la derivada de la funcion de interes 3.6 conrespecto a la variable que nos interesa despejar, en este caso h. Esta derivada esigual a:

f (1)(h) = − 1

nS1/2

[5

3b

(bh

b + 2h

)2/3

− 4

3

(bh

b + 2h

)5/3]

La funcion que implementa esta derivada tiene la siguiente estructura:

Page 91: Notas Clase1

3.4. METODOS CERRADOS 73

"der_manning.m" 73a ≡

〈Derivada Manning: Declaracion de la funcion 73b 〉〈Derivada Manning: Inicializacion de variables 73c 〉〈Derivada Manning: Calculo derivada 73d 〉

3.4.1.3.1. Declaracion de la funcion Al igual que en el caso de la funcion deManning, la unica variable de entrada corresponde a la profundidad del canalh, y la variable de salida es el valor de la derivada yp:

〈Derivada Manning: Declaracion de la funcion 73b 〉 ≡

function [yp]=der_manning(h)�

Fragmento referenciado en 73a.

3.4.1.3.2. Inicializacion de Variables

〈Derivada Manning: Inicializacion de variables 73c 〉 ≡

b=30;n=0.022;Q=1000;S=0.002;�

Fragmento referenciado en 73a.

3.4.1.3.3. Calculo de la derivada En este fragmento de codigo se determinael valor de la derivada de la ecuacion de Manning (ecuacion 3.4.1.3), para estose calcula primero la variable t = (bh)/(b+2h) y con esta se determina facilmentela derivada:

〈Derivada Manning: Calculo derivada 73d 〉 ≡

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.

Page 92: Notas Clase1

74 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

Ejemplo MATLAB R© (Solucion de Manning con el Metodo de Newton)

Para aplicar el metodo de Newton en la solucion de la ecuacion de Man-ning es necesario conocer la derivada de la funcion de interes (ecuacion3.6). La solucion de la ecuacion de Manning usando el metodo de Newtonse puede hacer en MATLAB R© usando la funcion newton.m de la siguienteforma:

>> [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 en4 iteraciones. Comparense los resultados con el metodo de la biseccion y conel metodo de la secante.

3.4.1.4. Analisis de convergencia

El analisis de convergencia del metodo de Newton se basa en la descompo-sicion en series de Taylor de una funcion en el punto xi+1 dada por la siguienteexpresion:

f(xi+1) = f(xi) + f (1)(xi)(xi+1 − xi) +f (2)(ξ)

2!(xi+1 − xi)

2 (3.21)

Sin embargo con el fin de simplificar las manipulaciones matematicas que deesta se derivan, la serie anterior se trunca teniendo en cuenta solamente dosterminos:

f(xi+1) ≈ f(xi) + f (1)(xi)(xi+1 − xi) (3.22)

Si xr, que es el valor de la raız de la ecuacion f(x), se reemplaza en laexpresion anterior se tiene que f(xi+1) = 0 y por lo tanto se puede expresarcomo:

0 = f(xi) + f (1)(xi)(xr − xi) (3.23)

y sustituyendola en la expresion original (ecuacion 3.21)

0 = f(xi) + f (1)(xi)(xi+1 − xi) +f (2)(ξ)

2!(xi+1 − xi)

2 (3.24)

Page 93: Notas Clase1

3.4. METODOS CERRADOS 75

Restando las ecuaciones 3.23 y 3.24 se obtiene:

0 = f (1)(xi)(xr − xi+1) +f (2)(ξ)

2!(xr − xi)

2 (3.25)

Ahora recordando la definicion de error absoluto se tiene que Er,i+1 = |xi+1−xi|y por lo tanto la ecuacion anterior se simplifica para obtener:

0 = f (1)(xi)Er,i+1 +f (2)(ξ)

2!E2

r,i (3.26)

y si se supone que hay convergencia, entonces xi y ξ se deben aproximar a laraız xr y la ecuacion anterior se puede expresar como:

Er,i+1 = − f (2)(xr)

2f (1)(xr)E2

r,i (3.27)

de donde es claro que el error en la iteracion i + 1 es proporcional al cuadradodel error en la iteracion i, lo cual indica que el error disminuye y por lo tanto elmetodo converge a la raız xr.

3.4.2. Metodo de la Secante

3.4.2.1. Fundamentos Conceptuales

Una de las grandes desventajas del metodo de Newton-Raphson es que setiene que conocer la derivada de la funcion que se esta evaluando, lo cual nosiempre es posible; especialmente en el caso de funciones que no tienen deriva-da o cuya derivada es muy difıcil de determinar. En estos caso resulta util contarcon un metodo alternativo que no requiera conocer la derivada de antemano,sino que esta se determine de forma numerica. La derivada de f(x) en el puntoxi se puede obtener usando:

f′(xn) =

f(xn)− f(xn−1)

xn − xn−1

(3.28)

La ecuacion anterior se puede reemplazar en la ecuacion 3.17 con lo cual seobtiene:

xn+1 = xn −f(xn)(xn − xn−1)

f(xn)− f(xn−1)(3.29)

y con la cual se define la regla de actualizacion del metodo de la secante. Comoes evidente de la ecuacion anterior, este metodo requiere dos valores inicialesx0, x1, los cuales no es necesario que definan un intervalo que contenga a la raızxr que se quiere determinar. Este metodo tiene las mismas ventajas y desventa-jas que el metodo de Newton, y dependiendo de los valores iniciales se puedepresentar o no convergencia.

Page 94: Notas Clase1

76 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

Este metodo tambien admite una interpretacion geometrica similar al del meto-do de Newton, la cual aparece en la figura 3.8. Dados dos valores xi y xi−1 sedefine una lınea recta que una los puntos f(xi) y f(xi−1). De esta forma se defi-nen 2 triangulos similares ABE y DCE, con lo cual se establecen las siguientesrelaciones:

AB

AE=

DC

DEf(xi)

xi − xi+1

=f(xi−1)

xi−1 + xi+1

(3.30)

y del cual se despeja xi+1 para obtener:

xi+1 = xi −f(xi)(xi − xi−1)

f(xi)− f(xi−1)(3.31)

Esta ecuacion se puede expresar como un esquema iterativo con lo cual aparecela ecuacion 3.29. La aplicacion de este metodo puede verse en accion en la figu-ra 3.9.

xi−1xi

A

B

xi+1

E C

D

.

.

f(xi−1)

f(xi)

f(x)

x

Figura 3.8: Interpretacion geometrica del metodo de la secante. La recta secante(en color gris) se define entre los puntos f(xi−1) y f(xi) y con esta se aproximael nuevo valor de la raız.

Page 95: Notas Clase1

3.4. METODOS CERRADOS 77

Ejemplo (Dimension caracterıstica de un lago)Para aplicar el metodo de la secante para la solucion de este problema es nece-sario especificar:

x0 solucion inicial 1, que en este caso es 2.0 y x1 solucion inicial 2 que estecaso corresponde a 1.9

Derivada de la funcion, que en este caso es f (1)(x) = 2x

Tolerancia mınima aceptable, 0.01 %

Para la iteracion 1 se tiene que

x0 = 2.0

f(x0) = 0.00688

x1 = 1.9

f(x1) = 1.6206

y por lo tanto la nueva raız es igual a:

x2 = x1 −f(x1)(x1 − x0)

f(x1)− f(x0)

= 2.0− 2.0106× (2.0− 1.9)

2.0000− 1.6206

= 2.0000− 0.5155 = 1.4844

Para la iteracion 2 se tiene que:

x1 = 1.9

f(x1) = 1.6206

x2 = 1.4844

f(x2) = 0.2140

y por lo tanto la nueva raız es igual a:

x3 = x2 −f(x2)(x2 − x1)

f(x2)− f(x1)

= 1.4844− 0.2150× (1.4844− 1.9)

0.2140− 1.6206

= 1.4844− 0.0632 = 1.4211

Para la iteracion 3 se tiene que:

x2 = 1.4844

f(x2) = 1.6206

x3 = 1.4211

f(x3) = 0.0301

Page 96: Notas Clase1

78 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

.0

Figura 3.9: Ejemplo de aplicacion del metodo de la secante.En este metodo separte de dos soluciones iniciales x0 y x1 y se traza la recta secante en f(x0) yf(x1) (lınea roja continua) con la cual se determina el valor de la nueva raız x2.Este procedimiento se repite hasta que se encuentra una raız con un nivel detolerancia predeterminado.

y por lo tanto la nueva raız es igual a:

x4 = x3 −f(x3)(x3 − x2)

f(x3)− f(x2)

= 1.4211− 0.0301× (1.4211− 1.4844)

0.0301− 1.6206

= 1.4211− 0.0103683 = 1.4107317

El anterior procdimiento se repite hasta que el error relativo de la raız aproxi-mada sea menor que la tolerancia especificada inicialmente.

Si esta usando un Acrobar Reader cuya version sea menor a la 6.0 la primera vez que vea esta pagina la figura no se podra visualizar de forma correcta. Para solucionar esto por favor vaya a la siguiente pagina y regrese. En ese momento ya debe ver la figura sin ningun problema.
Page 97: Notas Clase1

3.4. METODOS CERRADOS 79

3.4.2.2. Determinacion de raıces por medio del metodo de la Secante

El metodo de la secante se encuentra implementado en la funcion secante.m,la cual tiene la siguiente estructura:

"secante.m" 79a ≡

〈Secante: Declaracion de la funcion 79b 〉〈Secante: Inicializacion de las variables 80a 〉〈Secante: Ciclo principal 80b 〉

3.4.2.2.1. Declaracion de la Funcion Las variables de entrada a la funcionque implementa el metodo de la secante son:

x0, x1: valores iniciales especificados para la busqueda de la raız

func: funcion a evaluar con el metodo de la secante

errmin: error relativo mınimo usado para chequear la convergencia a unaraız dada

itmax: Numero maximo de iteraciones

Las variables de salida de esta funcion son las siguientes:

x: vector que contiene los valores de la raız determinada en cada iteracion

f : vector que contiene los valores de la funcion func evaluada en cadauno de los valores contenidos en el vector x

er: vector que contiene el error relativo obtenido en cada iteracion delprocedimiento de busqueda de la raız.

〈Secante: Declaracion de la funcion 79b 〉 ≡

function [x,f,err,iter]=secante(x0,x1,func,errmin,maxit)�

Fragmento referenciado en 79a.

3.4.2.2.2. Inicializacion de variables Para ejecutar el metodo de la secantees necesario inicializar las siguientes variables:

err: valor de error relativo inicial. Este valor se inicializa en 100 %.

xold0, xold1:

Page 98: Notas Clase1

80 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

iter: contador de las iteraciones. Este valor se inicializa en 0.

x: vector en donde se almacenan los valores de las raıces obtenidos encada iteracion. El primer valor de este vector se hace igual a x0.

f : vector en donde se almacenan los valores de la funcion evaluada encada una de las raıces obtenidas en cada iteracion. El primer valor de estevector se inicializa en el valor de la funcion evaluada en x0.

〈Secante: Inicializacion de las variables 80a 〉 ≡

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 metodo de la secante esta im-plementado usando un ciclo while controlado por el numero de iteraciones itery el err. Este ciclo presenta la siguiente estructura:

〈Secante: Ciclo principal 80b 〉 ≡

while (err>errmin) & (iter<maxit);〈Ciclo Principal Secante: Evaluacion funcion dos puntos iniciales 81a 〉〈Ciclo Principal Secante: Actualizacion solucion 81b 〉〈Ciclo Principal Secante: Calculo error e incremento iteraciones 81c 〉〈Ciclo Principal Secante: Almacenamiento de resultados 81d 〉

end;�

Fragmento referenciado en 79a.

En este fragmento de codigo se evalua la funcion en los dos puntos iniciales, yaque estos se requieren para calcular la derivada de forma numerica.

3.4.2.2.3.1. Evaluacion funcion en puntos iniciales

Page 99: Notas Clase1

3.4. METODOS CERRADOS 81

〈Ciclo Principal Secante: Evaluacion funcion dos puntos iniciales 81a 〉 ≡

fii=feval(func,xold1);fi=feval(func,xold0);

Fragmento referenciado en 80b.

3.4.2.2.3.2. Actualizacion de la solucion En este fragmento se calculala derivada de la funcion usando los dos puntos y se actualiza el valor de la raızinicial usando la ecuacion 3.29:〈Ciclo Principal Secante: Actualizacion solucion 81b 〉 ≡

xr=xold1-(fii*(xold0-xold1)/(fi-fii));�

Fragmento referenciado en 80b.

3.4.2.2.3.3. Calculo de error e incremento de iteraciones Una vez seha actualizado la raız se calcula el error relativo de esta aproximacion a la raızy se incrementa el numero de iteraciones. Estas son las variables que controlanel ciclo while.〈Ciclo Principal Secante: Calculo error e incremento iteraciones 81c 〉 ≡

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ız ob-tenido hasta el momento xr se almacena en el vector x, ası como el valor de lafuncion en este punto en el vector f y el error relativo obtenido en esta itera-cion en el vector er. Los valores de los dos puntos necesarios para calcular laderivada 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.

Page 100: Notas Clase1

82 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

Ejemplo MATLAB R© (Solucion de Manning con el Metodo de la Secante)

La solucion de la ecuacion de Manning usando el metodo de la Secantese 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 itera-ciones y que el valor de la profundidad del canal es de aproximadamente6.14 m.

3.4.3. Metodo de la Secante Modificado

3.4.3.1. Fundamentos Conceptuales

El metodo de la secante se aplica cuando las funciones estudiadas no tienenderivadas o sus derivadas son difıciles de calcular. La solucion a este problemaconsiste en aproximar la derivada de forma numerica empleando dos puntos.Sin embargo esto tambien puede ser un problema, ya que definir dos puntosno siempre resulta facil y en la mayorıa de las situaciones implica elaborar lagrafica de la funcion.

El metodo de la secante se puede modificar de tal manera que solo sea nece-sario especificar un punto xn−1 definiendo el otro punto como:

xn−1 = xn + σxn (3.32)

donde σ → 0 y con lo cual la ecuacion 3.28 se modifica para obtener:

xn+1 = xn −f(xn)(σxn)

f(xn)− f(xn + σxn)(3.33)

En este metodo de la secante modificada la derivada se vuelve a aproximarde forma numerica, pero ahora el analista selecciona un punto xn y el otro se

Page 101: Notas Clase1

3.4. METODOS CERRADOS 83

toma a una distancia σ de este.

Ejemplo (Dimension caracterıstica de un lago)Para aplicar el metodo de la secante modificada para la solucion de este proble-ma es necesario especificar:

x0 solucion inicial 1, que en este caso es 2.0 y σ = 1.0 × 10−6 que es ladistancia a la cual se toma el otro punto.

Tolerancia mınima aceptable, 0.01 %

Para la iteracion 1 se tiene:

x0 = 2.0

f(x0) = 2.0106

x1 = x0 + σx0 = 2.0 + 2× 10−6 = 2.000002

f(x1) = 2.010608

(3.34)

y por lo tanto la raız es igual a:

x2 = x1 +f(x1)(x1 − x0)

f(x1)− f(x0)

= 2.00002− 2.010608× 1.0× 10−6

8.0× 10−6

= 2.00002− 0.251326 = 1.748676

Para la iteracion 2 se tiene:

x1 = 1.748676

f(x1) = 1.0684678

x2 = 1.7486777 + 1.0× 10−6

f(x2) = 1.06847719

y por lo tanto la nueva aproximacion a la raız es igual a:

x3 = x2 −f(x2(x2 − x1))

f(x2)− f(x1)

= 1.748676− 1.0684678× 1.0× 10−6

5.9× 10−7

= 1.748676− 0.1797103 = 1.5689657

Para la iteracion 3 se tiene:

x3 = 1.5689657

f(x3) = 0.47225650570889

x4 = 1.5689657 + 1.0× 10−6

f(x4) = 0.47225650570889

Page 102: Notas Clase1

84 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

y por lo tanto la nueva aproximacion a la raız es igual a:

x4 = x3 −f(x3(x3 − x2))

f(x3)− f(x2)

= 1.5689657− 0.47225× 1.0× 10−6)

3.13× 10−6

= 1.5689657− 0.1504982 = 1.4184587

Este procedimiento se repite hasta que el error relativo de la raız se hace menorque la tolerancia especificada inicialmente.

3.4.3.2. Determinacion de raıces con el metodo de la Secante modificado

La estructura de la funcion que implementa el metodo de la Secante modifi-cado es la siguiente:

"secante_mod.m" 84 ≡

〈Secante modificado: Declaracion de la funcion 85a 〉〈Secante modificado: Inicializacion de las variables 85b 〉〈Secante modificado: Ciclo principal 86a 〉

3.4.3.2.1. Declaracion de la funcion Las variables de entrada de esta fun-cion son las siguientes

x0: solucion inicial de la raız especificada por el usuario. Se recomiendaque este sea determinado por medio del metodo grafico.

func: Funcion que implementa la ecuacion no-lineal que se va a analizar.

errmin: valor del error mınimo que se esta dispuesto a tolerar en la solu-cion obtenida. Este valor se encuentra relacionado con las cifras significa-tivas que va a tener la solucion.

maxit: Numero maximo de iteraciones empleadas en el procedimiento debusqueda.

sigma: Valor de incremento con el cual se determina el segundo puntopara calcular la derivada en un punto determinado.

y las correspondientes variables de salida:

x: Vector que almacena los valores de la raız aproximados en cada itera-cion.

Page 103: Notas Clase1

3.4. METODOS CERRADOS 85

ff : Vector que almacena los valores de la funcion para las raices aproxi-madas en cada iteracion.

err: Vector que almacena los valores del error relativo de cada una de lasraices aproximadas.

iter: Numero de iteraciones empleado para alcanzar la solucion deseada.

〈Secante modificado: Declaracion de la funcion 85a 〉 ≡

function [x,ff,err,iter]=secante_mod(x0,func,errmin,maxit,sigma)�

Fragmento referenciado en 84.

3.4.3.2.2. Inicializacion de variables Al igual que en todos los procedi-mientos vistos anteriormente, antes de proceder a obtener la solucion de laecuacion no-lineal de interes se hace necesario inicializar las diferentes varia-bles involucradas, y definir otras variables:

iter, que corresponde al contador de iteraciones del proceso, se inicilizaen 1

La variables er se define para almacenar el valor de error de la solucionactual y se inicializa en 100 %

xold se emplea con el fin de almacenar el valor de la solucion en la ite-racion o paso anterior. Este valor se inicializa con el valor inicial de lasolucion x0

x(1), ff(1), err(1) son los vectores en donde se almacenan los valores dela solucion, de la funcion no lineal de interes y del error de la solucionobtenida, respectivamente. Estos vectores se inicializan con la solucioninicial x0, el valor de la funcion func en ese punto y el error inicial del100 %.

〈Secante modificado: Inicializacion de las variables 85b 〉 ≡

iter=1;er=100;xold=x0;x(1)=x0;ff(1)=feval(func,x(1));err(1)=er;�

Fragmento referenciado en 84.

Page 104: Notas Clase1

86 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

3.4.3.2.3. Ciclo principal El procedimiento de busqueda de la raız se en-cuentra implementado mediante un ciclo while que se encuentra controlado porel numero de iteraciones y el error relativo de la raız aproximada, y cuya estruc-tura se presenta a continuacion:〈Secante modificado: Ciclo principal 86a 〉 ≡

while ((err>errmin) & (iter<maxit));〈Ciclo Principal Secante Modificado: calculo factor de correccion 86b 〉〈Ciclo Principal Secante Modificado: Actualizacion solucion 86c 〉〈Ciclo Principal Secante Modificado: Calculo error e incremento iteraciones 87a 〉〈Ciclo Principal Secante Modificado: Almacenamiento de resultados 87b 〉

end;�

Fragmento referenciado en 84.

3.4.3.2.3.1. Calculo factor de correccion El factor de correccion corres-ponde al valor que se le debe sumar al valor inicial de la raız especificado por elusuario y el cual se encuentra definido por la expresion:

cor =f(xn)(σxn)

f(xn)− f(xn + σxn)(3.35)

lo cual se encuentra codificado de la siguiente forma:〈Ciclo Principal Secante Modificado: calculo factor de correccion 86b 〉 ≡

cor=sigma*xold*feval(func,xold).../(feval(func,(1+sigma)*xold)-feval(func,xold));

Fragmento referenciado en 86a.

3.4.3.2.3.2. Actualizacion solucion Una vez se ha calculado el factor decorreccion se procede a actualizar la solucion usando la expresion dada por laecuacion 3.33:〈Ciclo Principal Secante Modificado: Actualizacion solucion 86c 〉 ≡

xr=xold-cor;�

Fragmento referenciado en 86a.

3.4.3.2.3.3. Calculo error e incremento de iteraciones Con la nuevaraız calculada se determina el error relativo de la misma y se incrementa elnumero de iteraciones:

Page 105: Notas Clase1

3.4. METODOS CERRADOS 87

〈Ciclo Principal Secante Modificado: Calculo error e incremento iteraciones 87a 〉 ≡

er=abs((xr-xold)/xr)*100;iter=iter+1;

Fragmento referenciado en 86a.

3.4.3.2.3.4. Almacenamiento de resultados Una vez se ha calculado elnuevo valor de la raız ası como su error relativo asociado, se procede a al-macenar estos resultados en los vectores x y err respectivamente. Tambien sedetermina el valor de la funcion para la raız aproximada y se almacena en elvector ff .

〈Ciclo Principal Secante Modificado: Almacenamiento de resultados 87b 〉 ≡

x(iter)=xr;ff(iter)=feval(func,xr);err(iter)=er;xold=xr;

Fragmento referenciado en 86a.

Page 106: Notas Clase1

88 CAPITULO 3. SOLUCION ECUACIONES NO LINEALES

Ejemplo MATLAB R© (Solucion de Manning con Secante modificado)

La solucion de la ecuacion de Manning usando el metodo de la SecanteModificado 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 6iteraciones y que el valor de la profundidad del canal es de aproximadamente6.14 m.

Page 107: Notas Clase1

Capıtulo 4

Polinomios

4.1. Evaluacion de Polinomios

4.1.1. Fundamentos Conceptuales

Debido a que la determinacion de las raices de los polinomios generalmentese realiza usando procedimientos iterativos, estos requieren la evaluacion re-petida de dichas funciones para diferentes valores de las raıces que se estanprobando; y por lo tanto este procedimiento debe realizarse de la forma maseficiente posible (computacionalmente hablando). Por ejemplo, la evaluaciondirecta para un polinomio de grado n se desprende de la expresion algebraicadel mismo, la cual esta dada por:

Pn(x) = anxn + an−1x

n−1 + · · · a2x2 + a1x + a0 =

n∑k=0

akxk (4.1)

donde los ai corresponden a los coeficientes del polinomio. Computacionalmen-te hablando, la ecuacion 4.1 se puede implementar mediante un ciclo for ya quese conoce el grado n junto con los coeficientes. Sin embargo esta aproximacionrequiere n sumas y n(n + 1)/2 multiplicaciones, de tal forma que serıa muy in-eficiente para polinomios de grado alto. Con el fin de evitar este problema, laecuacion 4.1 se puede reescribir usando una sencilla manipulacion algebraica.Para mostrar este procedimiento se va a partir de un polinomio de 4 grado,expresado por:

P4(x) = a0 + a1x + a2x2 + a3x

3 + a4x4 (4.2)

Este polinomio se puede reescribir de forma anidada como:

P4(x) = a0 + x(a1 + a2x(a3 + a4x)) (4.3)

89

Page 108: Notas Clase1

90 CAPITULO 4. POLINOMIOS

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

(4.4)

El procedimiento anterior se puede generalizar mediante una expresion re-cursiva dada por:

Pn(x) = an

Pi(x) = ai + xPi+1(x), i = 1, . . . , n− 1(4.5)

y el cual es mucho mas eficiente que realizar la evaluacion del polinomiodirectamente empleando la ecuacion 4.1, ya que involucra n sumas y n multi-plicaciones.

En algunas oportunidades ademas de evaluar el valor del polinomio, se requiereevaluar tanto la primera como segunda derivada. Para esto se deriva la ecuacion4.5 para obtener la primera derivada:

P′

n(x) = 0

P′

i (x) = Pi+1(x) + xP′

i+1(x)(4.6)

ası como la segunda derivada:

P′′

n (x) = 0

P′′

i (x) = 2P′

i+1(x) + xP′′

i+1(x)(4.7)

las cuales nuevamente son funciones recursivas.

4.1.2. Evaluacion de polinomios con MATLAB R©La estructura de la funcion de MATLAB R© que implementa este procedimien-

to es la siguiente:

"evaluacion_polinomio.m" 90 ≡

〈EvaluacionPolinomio: Declaracion de Funcion 91a 〉〈EvaluacionPolinomio: Inicializacion de Variables 91b 〉〈EvaluacionPolinomio: Ciclo principal 92 〉

Page 109: Notas Clase1

4.1. EVALUACION DE POLINOMIOS 91

La funcion tiene dos variables de entrada:

a: vector de longitud n× 1 que contiene los coeficientes ai del Polinomio.Es de aclarar que la ecuacion 4.1 emplea coeficientes cuyos subındicescomienzan en 0, valor que se encuentra almacenado en la posicion 1.

x: valor de x en el cual se quiere evaluar el polinomio.

Las variables de salida son las siguientes:

p: valor del polinomio definido por los coeficientes 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: Declaracion de Funcion 91a 〉 ≡

function [p,pd,sd]=evaluacion_polinomio(a,x)�

Fragmento referenciado en 90.

Para realizar el procedimiento recursivo descrito por la ecuacion 4.5 es necesa-rio conocer el numero de elementos en el vector a, el cual define el grado delpolinomio. Para esto se emplea la funcion intrınseca length y el resultado se al-macena en la variable n. Ası mismo se inicializan en 0 las variables que continenla primera derivada pd y la segunda derivada sd.

〈EvaluacionPolinomio: Inicializacion de Variables 91b 〉 ≡

n=length(a);p=a(n);pd=0.0;sd=0;�

Fragmento referenciado en 90.

Para realizar el calculo del polinomio p en x y de sus derivadas pd y sd se empleaun ciclo for ya que se conoce el grado del polinomio n. Para calcular el valor delpolinomio en x se emplea la ecuacion 4.5 y para las derivadas se utilizan lasecuaciones 4.6 y 4.7. En este caso particular el calculo se hace en el siguienteorden:

1. Segunda derivada

Page 110: Notas Clase1

92 CAPITULO 4. POLINOMIOS

2. Primera derivada

3. Valor del polinomio

con el fin 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.

Page 111: Notas Clase1

4.1. EVALUACION DE POLINOMIOS 93

Ejemplo (Evaluacion de un Polinomio)

Evaluar el polinomio

P3(x) = 3x3 − 5x2 + 3x− 5

en el punto x = 2 junto con la primera y segunda derivada. El valor delpolinomio en x = 2 es:

P3(2) = 3×(2)3−5×(2)2+3×(2)−5 = 3×8−5×4+3×2−5 = 24−20+6−5 = 5

Para evaluar este polinomio de forma mas eficiente se emplean la metodo-logıa explicada en las ecuaciones 4.5, de tal forma que se tiene:

n Expresion Pn Valor Pn Acumulado3 P3 = a3 3 32 P2(x) = a2 + xP3(x) −5 + (2)× (3) 11 P1(x) = a1 + xP2(x) 3 + (2)× (1) 50 P0(x) = a0 + xP1(x) −5 + (2)× (5) 5

y por lo tanto el valor de P3(2) es igual a 5. La primera derivada del polino-mio esta dada por:

P(1)3 (x) = 9x2 − 10x + 3

P(1)3 (2) = 9× (2)2 − 10× (2) + 3 = 9× 4− 10× 2 + 3 = 36− 20 + 3 = 19

n Expresion P(1)n Valor P

(1)n Acumulado

3 P(1)3 = 0 0 0

2 P(1)2 (x) = P3(x) + xP

(1)3 (x) 3 + (2)× (0) 3

1 P(1)1 (x) = P2(x) + xP

(1)2 (x) 1 + (2)× (3) 7

0 P(1)0 (x) = P1(x) + xP

(1)1 (x) 5 + (2)× (7) 19

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

Page 112: Notas Clase1

94 CAPITULO 4. POLINOMIOS

Ejemplo (Evaluacion de un Polinomio (Cont.))

La segunda derivada de P3(x) esta dada por:

P(2)3 (x) = 18x− 10

y al evaluarla en x = 2 se tiene P(2)3 (2) = 18 × (2) − 10 = 26. Para evaluar

la segunda derivada del polinomio se emplean las expresiones dadas por laecuacion 4.7:

n Expresion P(2)n (x) Valor P

(2)n (x) Acumulado

3 P(2)3 (x) = 0 0 0

2 P(2)2 (x) = 2P

(1)3 + xP

(2)3 (x) 2× (0) + (2)× 0 0

1 P(2)1 (x) = 2P

(1)2 + xP

(2)2 (x) 2× (3) + (2)× 0 6

0 P(2)0 (x) = 2P

(1)1 + xP

(2)1 (x) 2× (7) + (2)× 6 26

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

Page 113: Notas Clase1

4.2. DEFLACION POLINOMIAL O DIVISION SINTETICA 95

Ejemplo MATLAB R© (Evaluacion de un Polinomio)

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 R© que permitirıan realizar este procedimientoson las siguientes:

>> a=[-5 3 -5 3]’;

>> x=2;

>> [p,pd,sd]=evaluacionpolinomio(a,x)

p =

5

pd =

19

sd =

26

4.2. Deflacion Polinomial o Division Sintetica

4.2.1. Fundamentos Conceptuales

En el algebra del bachillerato se aprendio un procedimiento para realizar di-vision entre polinomios conocido como la division sintetica. En el caso que unaraız del polinomio xr se haya determinado esta se puede extraer usando esteprocedimiento para obtener un polinomio de grado n − 1. Este procedimientose puede repetir hasta que todas las raices se hayan determinado.

La division sintetica o deflacion polinomial como tambien se le conoce se de-fine como el procedimiento de descomponer un polinomio de la forma:

Pn(x) = (x− xr)Pn−1(x) (4.8)

y en donde Pn−1(x) esta dado por:

Pn−1(x) = bn−1xn−1 + bn−2x

n−2 + · · ·+ b1x + b0 (4.9)

Con el fin de presentar el procedimiento con miras a su implementacionse va a analizar un ejemplo aplicado a un polinomio de cuarto grado, el cual

Page 114: Notas Clase1

96 CAPITULO 4. POLINOMIOS

esta dado por:P4(x) = a4x

4 + a3x3 + a2x

2 + a1x + a0 (4.10)

y del cual se ha determinado una raız xr. Esta raız puede factorizarse usando laecuacion ecuacion 4.8 y al realizar el producto entre el monomio y el polinomioresidual se obtiene:

P4 = (x− xr)(b3x3 + b2x

2 + b1x + b0)

= b3x4 + (b2 − b3xr)x

3 + (b1 − b2xr)x2 + (b0 − b1xr)x− b0xr

(4.11)

en donde los coeficientes bi definen el polinomio residual. Para determinar losvalores de los bi se igualan los coeficientes de 4.10 con 4.11:

a4 = b3

a3 = b2 − b3xr

a2 = b1 − b2xr

a1 = b0 − b1xr

a0 = −b0xr

(4.12)

y se despejan los bi con lo que se obtiene:

b3 = a4

b2 = a3 + b3xr

b1 = a2 + b2xr

b0 = a1 + b1xr

(4.13)

Este resultado se puede generalizar mediante una relacion recursiva dada por:

bn−1 = an

bi = ai+1 + bi+1xr, i = 1, 2, . . . , (n− 2)(4.14)

la cual facilmente se puede implementar en un lenguaje de programacion.

4.2.2. Division Sintetica de polinomios con MATLAB R©La estructura de una funcion en MATLAB R© que ejecuta este procedimiento

es la siguiente:

"deflacion_polinomial.m" 96 ≡

〈DeflacionPolinomial: Declaracion de la funcion 97a 〉〈DeflacionPolinomial: Inicializacion de variables 97b 〉〈DeflacionPolinomial: Ciclo Principal 98 〉

Page 115: Notas Clase1

4.2. DEFLACION POLINOMIAL O DIVISION SINTETICA 97

Es preciso recordar que esta funcion realiza la division entre un polinomio Pn(x)y un monomio de la forma (x − xr) donde xr corresponderıa a una constante.De esta forma, las variables de entrada a esta funcion son las siguientes:

a: vector de tamano n × 1 con los valores de los coeficientes del Polino-mio al cual se le va aplicar el procedimiento de la division sintetica. Loscoeficientes van desde el termino independiente hasta el coeficiente de lapotencia n− 1.

xr: valor constante xr que define el monomio por el cual se va a dividir elpolinomio.

La variable de salida b corresponde a un vector con los coeficientes del poli-nomio residual que resulta de la division sintetica.

〈DeflacionPolinomial: Declaracion de la funcion 97a 〉 ≡

function [b]=deflacion_polinomial(a,xr)�

Fragmento referenciado en 96.

4.2.2.1. Inicializacion de variables

Para continuar con el procedimiento de deflacion polinomial se hace necesa-rio definir las siguientes variables:

n: Grado del polinomio.

b: vector de tamano n en donde van a almacenar los coeficientes del poli-nomio resultante de la division. Este vector se inicializa con 0.

〈DeflacionPolinomial: Inicializacion de variables 97b 〉 ≡

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 deflacion polinomial permite calcularlos coeficientes del polinomio resultante, para lo cual se emplean las expresionesdadas por las ecuaciones 4.13 y 4.14. Para esto se emplea un ciclo for que vacalculando los coeficientes desde las potencias mayores a las menores:

Page 116: Notas Clase1

98 CAPITULO 4. POLINOMIOS

〈DeflacionPolinomial: Ciclo Principal 98 〉 ≡

for i=n-1:-1:1;b(i)=a(i+1)+b(i+1)*xr;

end;�

Fragmento referenciado en 96.

Page 117: Notas Clase1

4.2. DEFLACION POLINOMIAL O DIVISION SINTETICA 99

Ejemplo (Division Sintetica)

Realice la division sintetica del polinomio:

P4(x) = x4 + 6x3 + 7x2 − 6x− 8

entre el polinomio (x− 1). Los coeficientes de P4(x) son:

Coef Valora4 1a3 6a2 7a1 -6a0 -8

y los coeficientes del polinomio reducido se obtienen al aplicar las expresio-nes consignadas en la ecuacion 4.14:

Coeficiente Expresion Valorb3 b3 = a4 1b2 b2 = a3 + b3x 6 + (1)× (1) = 7b1 b1 = a2 + b2x 7 + (7)× (1) = 14b0 b0 = a1 + b1x −6 + (14)× (1) = 8

de tal forma que el polinomio resultante del procedimiento de division sinteti-ca es:

P3(x) = x3 + 7x2 + 14x + 8

Page 118: Notas Clase1

100 CAPITULO 4. POLINOMIOS

Ejemplo MATLAB R© (Division Sintetica)

Realice la division del polinomio:

P4(x) = x4 + 6x3 + 7x2 − 6x− 8 = 0

entre el polinomio (x − 1). Para realizar este procedimiento tecleamos lossiguientes comandos:

>>a=[-8 -6 7 6 1]’;

>>xr1=1;

>>[b1]=deflacion_polinomial(a,xr1);

>>b1

8

14

7

1

Recuerde que los coeficientes se obtienen en orden de menor a mayor y porlo tanto el polinomio resultante es:

P3(x) = x3 + 7x2 + 14x + 8

Realice la conprobacion mediante operaciones simbolicas en MATLAB R©.

4.3. Metodo de Muller

4.3.1. Fundamentos Conceptuales

El metodo de Muller es una generalizacion del metodo de la secante ya queno requiere de la derivada de la funcion en estudio, y para el cual es necesarioespecificar 3 puntos iniciales x0, x1, x2. En lugar de definir una lınea recta, sedefine una parabola (ver Figura 4.1) y se utiliza la formula para la ecuacioncuadratica para obtener una aproximacion a la raız. Este metodo presenta unaconvergencia mucho mas rapida que el metodo de la biseccion y menor que elmetodo de Newton.

Para entender este metodo es necesario definir la ecuacion de la parabola de lasiguiente forma:

f(x) = a(x− x2)2 + b(x− x2) + c (4.15)

donde a, b, c son los valores de los coeficientes. Se selecciona el valor de x2 de talforma que sea el valor central. Los 3 puntos requeridos para definir la parabolason [x0, f(x0)], [x1, f(x1)] y [x2, f(x2)], de tal forma que se obtiene:

Page 119: Notas Clase1

4.3. METODO DE MULLER 101

Figura 4.1: Interpretacion grafica del metodo de Muller

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 ecuacion se obtiene la conclusion que f(x2) = c, y con este esteecuacion se puede simplificar para obtener:

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 incognitas. Lasolucion de este se puede simplificar si se definen:

h0 = x1 − x0 h1 = x2 − x1

δ0 =f(x1)− f(x0)

x1 − x0

δ1 =f(x2)− f(x1)

x2 − x1

(4.18)

con lo cual el sistema definido en 4.17 se puede expresar como:

h0δ0 + h1δ1 = a(h0 + h1)2 + b(h0 + h1)

−h1δ1 = ah21 − bh1

(4.19)

Page 120: Notas Clase1

102 CAPITULO 4. POLINOMIOS

del cual se pueden obtener los coeficientes de la parabola por sustitucion:

a =δ1 − δ0

h1 − h0

b = ah1 + δ1

c = f(x2)

(4.20)

Con estos coeficientes se define la parabola especıfica que pasa por los trespuntos (ecuacion 4.15) y la raız xr se determina usando la conocida solucion dela ecuacion cuadratica:

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, estascorresponden a la distancia de separacion o correccion entre la raız aproximadax2 y la raız real xr, de tal forma que se tiene:∆x = xr − x2 y por lo tanto:

xr = x2 + ∆x (4.22)

Una de las grandes ventajas de este metodo corresponde al hecho que se puedendeterminar raıces tanto reales como complejas.

4.3.2. Determinacion de las raıces de polinomios usando elmetodo de Muller

El metodo de Muller se encuentra implementado en la funcion muller.m cuyaestructura es la siguiente:

"muller.m" 102 ≡

〈Muller: Declaracion de la Funcion 103 〉〈Muller: Inicializacion de variables 104a 〉〈Muller: Ciclo Principal 104b 〉

4.3.2.1. Declaracion de la funcion

Las variables de entrada de esta funcion son las siguientes:

xrr: valor inicial de la raız

funcion: funcion a evaluar y que se encuentra definida en un archivo fun-cion.m

h: incremento empleado para la definicion de los puntos cercanos a xrr

Page 121: Notas Clase1

4.3. METODO DE MULLER 103

maxiter: Numero maximo de iteraciones

errmin: valor de error relativo mınimo usado para controlar la convergen-cia del procedimiento.

Las variables de salida de esta funcion son las siguientes:

xr1: valor de la raız determinada por el metodo de Muller

ff : vector que contiene los valores de la funcion

er: vector que almacena los valores del error relativo obtenido para cadaiteracion

iter: numero de iteraciones empleado por el procedimiento para obtenerla raız.

〈Muller: Declaracion de la Funcion 103 〉 ≡

function [xr1,ff,er,iter]=muller(xrr,funcion,h,maxiter,err_min)�

Fragmento referenciado en 102.

4.3.2.2. Inicializacion de variables

Para este procedimiento es necesario inicializar las siguientes variables;

x0, x1, x2: valores iniciales especificados para definir la parabola con laque trabaja este metodo. Para definir estos 3 valores en este caso se asumeque x1 va a corresponder al punto central y que tanto x0 como x2 van auna distancia h de este punto.

err: variable para almacenar el valor del error relativo. Se inicializa en100 %.

iter: Contador para las iteraciones. Se inicializa en 1.

xr: valor de la raız determinada hasta el momento. Se inicializa con elvalor de x2

xold: valor de la raız en la iteracion inmediatamente anterior empleadopara la determinacion del error relativo.

Se inicializan los vectores ff(·), er(·) y xr1(·)

Page 122: Notas Clase1

104 CAPITULO 4. POLINOMIOS

〈Muller: Inicializacion de variables 104a 〉 ≡

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.

4.3.2.3. Ciclo principal

Este fragmento implementa la parte mas importante de este metodo, ya quees donde se determinan las raıces. La estructura de este procedimiento es lasiguiente:

〈Muller: Ciclo Principal 104b 〉 ≡

while (iter<=maxiter & err>=err_min);〈Ciclo Principal Muller: Calculo de h y δ 105a 〉〈Ciclo Principal Muller: Calculo coeficientes parabola 105b 〉〈Ciclo Principal Muller: Calculo del indicador 105c 〉〈Ciclo Principal Muller: Definicion de la correccion 106a 〉〈Ciclo Principal Muller: Actualizacion de la raız 106b 〉〈Ciclo Principal Muller: Calculo del error e incremento de iteraciones 106c 〉〈Ciclo Principal Muller: Actualizacion puntos 107 〉

end;�

Fragmento referenciado en 102.

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

Page 123: Notas Clase1

4.3. METODO DE MULLER 105

〈Ciclo Principal Muller: Calculo de h y δ 105a 〉 ≡

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.

4.3.2.3.2. Calculo coeficientes parabola : Los coeficientes a, b, c que defi-nen la parabola que pasa por los tres puntos x0, x1, x2 se determinan usando laecuacion 4.20:

〈Ciclo Principal Muller: Calculo coeficientes parabola 105b 〉 ≡

a=(delta1-delta0)/(h1+h0);b=a*h1+delta1;c=feval(funcion,x2);

Fragmento referenciado en 104b.

4.3.2.3.3. Calculo del Indicador : Con los valores de los coeficientes a, b, ccalculdos, se define una ecuacion cuadratica que permite estimar 2 raıces.

〈Ciclo Principal Muller: Calculo del indicador 105c 〉 ≡

ind=sqrt(b^2-4*a*c);�

Fragmento referenciado en 104b.

4.3.2.3.4. Definicion de la correccion : Con el valor del discriminante cuadrati-co ind se puede determinar el incremento que se debe aplicar a la raız obtenidahasta el momento. Ya que la solucion de la ecuacion cuadratica permite obtener2 raıces, se escoge aquella cuyo signo coincida con el signo del coeficiente b. Es-ta eleccion hace que el denominador sea mas grande y por lo tanto la correccionobtenida sera menor y la raız estimada estara mas cerca de la raız obtenida enla iteracion anterior.

Page 124: Notas Clase1

106 CAPITULO 4. POLINOMIOS

〈Ciclo Principal Muller: Definicion de la correccion 106a 〉 ≡

if(abs(b+ind)>abs(b-ind));den=ind+b;

else;den=ind-b;

end;�

Fragmento referenciado en 104b.

4.3.2.3.5. Actualizacion de la raız : Se actualiza el valor de la raız con lacorreccion obtenida de la solucion de la ecuacion cuadratica tal como lo expresala ecuacion 4.22:

〈Ciclo Principal Muller: Actualizacion de la raız 106b 〉 ≡

dxr=-2*c/den;xr=x2+dxr;

Fragmento referenciado en 104b.

4.3.2.3.6. Calculo del error e incremento de iteraciones : Se determinael error relativo de la raız obtenida y se incrementa el numero de iteraciones(Recuerde que estas variables son las que controlan el ciclo while).

〈Ciclo Principal Muller: Calculo del error e incremento de iteraciones 106c 〉 ≡

err=abs((xr-xold)/xr)*100;iter=iter+1;

Fragmento referenciado en 104b.

4.3.2.3.7. Actualizacion de puntos : Se actualizan los valores de x0, x1, x2,junto el con valor de xold y se almacenan los resultados de la evaluacion de lafuncion en el vector ff , el error relativo obtenido hasta el momento en el vectorer y el valor de la raız en el vector xr1.

Page 125: Notas Clase1

4.3. METODO DE MULLER 107

〈Ciclo Principal Muller: Actualizacion puntos 107 〉 ≡

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.

Page 126: Notas Clase1

108 CAPITULO 4. POLINOMIOS

Ejemplo MATLAB R© (Determinacion de raıces con el metodo de Muller)

Use el metodo de Muller para obtener una raız del siguiente polinomio:

f(x) = x3 − 3x2 + 1

Para usar la funcion muller.m es necesario definir en MATLAB R© la funcionde interes como una funcion inline o mediante un archivo .m. En este casose va a hacer de las dos formas. La primera es la mas sencilla y para hacerlase teclea en la lınea de comandos para definir f1 como una funcion inline

>> f1=inline(’x.^3-3*x.^2+1’)

Para obtener la raız con el metodo de Muller usamos la funcion muller.mdefinida anterioremente, y especificamos la raız inicial xrr = 3, la funcionde interes f1, el incremento con el que se calculan los otros puntos h = 0.5,el numero maximo de iteraciones maxiter = 100 y el error mınimo aceptableminerr = 1.0e− 3:

>> [xr1,ff,er,iter]=muller(3,f1,0.5,100,1e-3);

con lo cual despues de 5 iteraciones se obtienen los siguientes resultados:

>> [xr1 ff er]

ans =

4.5000 31.3750 100.0000

2.9064 0.2097 54.8284

2.8787 -0.0055 0.9649

2.8794 0.0000 0.0251

2.8794 0.0000 0.0001

La primer columna presenta el valor de la raız para cada iteracion, la segundacolumna el valor de la funcion f1 para cada una de las raıces presentadasen la primera columna y el error relativo para cada raız se presenta en lacolumna 3.

Page 127: Notas Clase1

4.4. METODO DE BAIRSTOW 109

Ejemplo MATLAB R© (Determinacion de raıces con el metodo de Muller)

En este caso se va a determinar la raız del polinomio empleado en elejemplo anterior, pero ahora especificando la funcion como un archivo m.Para esto se abre el editor de MATLAT R© tecleando edit en la ventana decomandos y copiando el siguiente codigo:

"funcion_prueba.m" 109 ≡

function [y]=funcion_prueba(x)y=x.^3-3*x.^2+1;�

Para determinar la raız con el metodo de Muller se teclean unos comandosmuy similares a los usandos en el ejemplo anterior, pero la diferencia en estecaso corresponde a la forma como se especifica la funcion (anteponiendoleun 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 100.0000

2.9064 0.2097 54.8284

2.8787 -0.0055 0.9649

2.8794 0.0000 0.0251

2.8794 0.0000 0.0001

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

4.4. Metodo de Bairstow

4.4.1. Fundamentos Conceptuales

La determinacion de las raıces complejas de un polinomio puede ser unproblema complicado si se emplean los metodos convencionales como el deNewton. Un hecho interesante con respecto a los polinomios es que sus raıcescomplejas aparecen en pares conjugados y por lo tanto resulta muy facil de-terminarlas si se obtienen factores cuadraticos mediante division sintetica (verseccion 4.2). Para hacer esto se emplea el mismo procedimiento descrito para

Page 128: Notas Clase1

110 CAPITULO 4. POLINOMIOS

un monomio de tal manera que se tiene:

Pn(x) = (x2 − rx− s)Pn−2(x)

= (x2 − rx− s)(bnxn−2 + bn−1x

n−3 + . . . + b2) + Residual(4.23)

donde el termino Residual esta dado por:

Residual = b1(x− r) + b0 (4.24)

Para determinar los coeficientes bi se tiene que igualar los coeficientes de laecuacion 4.23 con los coeficientes ai del polinomio respectivo, con lo cual seobtiene:

bn = an

bn−1 = an−1 + rbn

bi = ai + rbi+1 + sbi+2 para i = n− 2, . . . , 0

(4.25)

El objetivo de introducir la division sintetica para un factor cuadratico consis-te en determinar una ecuacion cuadratica para la cual el termino Residual = 0,con lo cual se asegura que las raıces obtenidas correspondan a raıces del poli-nomio original. Para esto se debe cumplir que b1 = 0 y b0 = 0. Generalmenteesto se puede obtener para una seleccion cuidadosa de los valores de r y s, detal forma que inicialmente los valores especificados no van a permitir obtenerun residuo igual a 0; y por lo tanto se necesita un metodo con el cual se puedanmodificar los valores de r y s de tal forma que permita la obtencion de las raıcesrespectivas. Es aquı donde aparece el metodo de Bairstow .

El metodo de Bairstow se fundamenta en realizar una expansion en series deTaylor de los coeficientes b0 y b1 suponiendo que son funciones tanto de r comode s. Esto se expresa como:

b0(r + ∆r, s + ∆s) = b1 +∂b0

∂r∆r +

∂b0

∂s∆s

b1(r + ∆r, s + ∆s) = b1 +∂b1

∂r∆r +

∂b1

∂s∆s

(4.26)

en donde se han despreciado las derivadas de orden igual o mayor a 2. Estaecuacion sirve para determinar es ∆r y ∆s que es lo que nos interesa en estemomento, para lo cual los terminos del lado izquierdo de la ecuacion se haceniguales a 0 para obtener el siguiente sistema lineal de ecuaciones:

∂b0

∂r∆r +

∂b0

∂s∆s = −b0

∂b1

∂r∆r +

∂b1

∂s∆s = −b1

(4.27)

Page 129: Notas Clase1

4.4. METODO DE BAIRSTOW 111

en donde los coeficientes del sistema corresponden a las derivadas parciales delos coeficientes del termino residual, las cuales no se conocen. La gran contri-bucion de Bairstow fue mostrar que estas derivadas parciales se pueden obtenerusando el mismo procedimiento de division sintetica, de la siguiente forma:

cn = bn

cn−1 = bn−1 + rcn

ci = bi + rci+1 + sci+2 para i = n− 2, . . . .1

(4.28)

donde los terminos c1 = ∂b0/∂s,c2 = ∂b1/∂r y c3 = ∂b1/∂s, de tal forma que laecuacion 4.27 se puede expresar:

c2∆r + c3∆s = −b1

c1∆r + c2∆s = −b2

(4.29)

y al resolver este sistema usando regla de cramer (o metodo de determinantes) osustitucion, se pueden obtener los valores de ∆r y ∆s con los cuales se mejoranlos r y s especificados inicialmente. Una vez estos valores se han determinadoel residuo de la division sintetica es igual a 0 y por lo tanto las raıces se puedenobtener facilmente del factor cuadratico. Sin embargo en este caso no se empleala famosa solucion de la ecuacion cuadratica, ya que este se encuentra sujetaa errores de redondeo. En su lugar se emplea la siguiente expresion para ladeterminacion de las raıces:

x =2c

b±√

b2 + 4ac(4.30)

4.4.2. Determinacion de las raıces de un polinomio usando elmetodo de Bairstow

Para aplicar el metodo de Bairstow en la determinacion de las raices de poli-nomios es necesario implementar dicho procedimiento en MATLAB R© por me-dio de una funcion con la siguiente estructura:

"bairstow.m" 111 ≡

〈Bairstow: Definicion de la funcion 112a 〉〈Bairstow: Declaracion de variables 112b 〉〈Bairstow: Ciclo extraccion de raices de polinomio n >= 3 113a 〉〈Bairstow: Extraccion de raices de polinomio n <= 2 116c 〉

4.4.2.1. Definicion de la funcion

Las variables de entrada en este caso son:

Page 130: Notas Clase1

112 CAPITULO 4. POLINOMIOS

a: vector con los coeficientes del polinomio de interes. Recuerde que losvalores se deben incluir desde las potencias menores a mayores.

r y s: coeficientes que definen el factor cuadratico.

maxit: Numero maximo de iteraciones para la busqueda de las raıces.

errmin: Error mınimo que se esta dispuesto a tolerar en la determinacionde las raıces.

Ası mismo las variables de salida de la funcion bairstow son:

xr: vector que almacena los valores de las raıces para cada una de lasiteraciones ejecutadas por la funcion.

ff : vector que almacena el valor del polinomio en las raıces aproximadas.

err: vector que almacena el valor del error relativo de las raıces obtenidaspara cada iteracion de la funcion.

iter: Numero de iteraciones requeridas para obtener la solucion.

〈Bairstow: Definicion de la funcion 112a 〉 ≡

function [xr,ff,err,iter]=bairstow(a,r,s,maxit,errmin)�

Fragmento referenciado en 111.

4.4.2.2. Declaracion de Variables

En este fragmento de codigo se inicializan algunas variables importantespara este procedimiento como son iter o contador de iteraciones que se inicializaen 0, n que corresponde al grado del polinomio que se esta analizando, a1 quees un vector tempora en donde se almacenan los valores de los coeficientes delos polinomios resultantes de la division sintetica, y xr que se inicializa como unvector vacion usando la notacion del parentesis rectangular [].

〈Bairstow: Declaracion de variables 112b 〉 ≡

iter=0;n=length(a)-1;a1=a;xr=[];�

Fragmento referenciado en 111.

Page 131: Notas Clase1

4.4. METODO DE BAIRSTOW 113

4.4.2.3. Ciclo Principal

El ciclo principal del metodo de Bairstow se divide en dos grandes partesque dependen del tipo de polinomio a resolver. Si este polinomio es de gradomayor a 3 es necesario realizar el procedimiento de division sintetica por factorcuadratico. Si el polinomio obtenido es de grado 2 se determinan las raices y elprocedimiento se acaba. La estructura de este ciclo es la siguiente:

〈Bairstow: Ciclo extraccion de raices de polinomio n >= 3 113a 〉 ≡

while(n>=3);〈Ciclo Principal Bairstow: Inicializacion del error 113b 〉while (er_s>errmin & er_r<errmin & iter<maxit);〈Ciclo Principal Bairstow: Realizar division sintetica 114a 〉〈Ciclo Principal Bairstow: Modificar 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: Extraccion coeficientes Polinomio resultante 116a 〉〈Ciclo Principal Bairstow: Asignacion de raices obtenidas 116b 〉

end;�

Fragmento referenciado en 111.

4.4.2.3.1. Ciclo Principal Bairstow: Inicializacion del error En este frag-mento de codigo se inicializa er s y er r que son las variables en donde se al-macenan los errores relativos de s y r respectivamente. Estas se inicializan en100 %.

〈Ciclo Principal Bairstow: Inicializacion del error 113b 〉 ≡

er_s=100;er_r=100;

Fragmento referenciado en 113a.

4.4.2.3.2. Ciclo Principal Bairstow: Realizar division sintetica Con los va-lores iniciales de r y s se realizar la division sintetica por factor cuadratico usan-do la funcion denominada deflacion2 , y se obtienen los coeficientes del poli-nomio resultante b y las derivada parciales de b con respecto a r y a s, las cualesse encuentran almacenadas en el vector c. Esta funcion se encuentra implemen-tada en la seccion 4.4.3

Page 132: Notas Clase1

114 CAPITULO 4. POLINOMIOS

〈Ciclo Principal Bairstow: Realizar division sintetica 114a 〉 ≡

[b,c]=deflacion2(a1,r,s);�

Fragmento referenciado en 113a.

4.4.2.3.3. Ciclo Principal Bairstow: Modificar los valores de r y s Los va-lores de r y s se modifican con el fin de asegurar que el residuo de la divisionsintetica sea muy cercano a 0.0. Esto se logra por medio de la solucion de unsistema lineal de ecuaciones de 2×2 (ecuacion 4.29) usando la regla de cramer.La estructura de este procedimiento es la siguiente:

〈Ciclo Principal Bairstow: Modificar los valores de r y s 114b 〉 ≡

〈Modificar r y s: Calculo del determinante 114c 〉〈Modificar r y s: Actualizar r y s 115a 〉

Fragmento referenciado en 113a.

4.4.2.3.3.1. Calculo del determinante Con el fin de evitar problemas deinestabilidad numerica se calcula el determinante de la matrız de coeficientesdel sistema lineal de ecuaciones (ecuacion 4.29):

〈Modificar r y s: Calculo del determinante 114c 〉 ≡

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 depen-diendo de si el determinante se puede considerar mayor a 0, con lo cual elsistema tiene solucion. En este caso particular debido a la sencillez del sistemalineal a resolver, la solucion del mismo se obtiene directamente. En el caso queel sistema no tenga solucion los valores de r y s se cambian y el procedimientocontinua.

Page 133: Notas Clase1

4.4. METODO DE BAIRSTOW 115

〈Modificar r y s: Actualizar r y s 115a 〉 ≡

if(det>=1.0e-10) thendr=(-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.

4.4.2.3.4. Ciclo Principal Bairstow: error e iteraciones Con los valores der y s calculados se determinar el error relativo y se incrementa el contador delas 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 raıces Ya con los valoresde r y s que define el termino cuadratico que permite obtener un residual de 0.0en la division sintetica, se obtienen las raices de dicho factor cuadratrico de laforma 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: Extraccion de coeficientes Una vezse hayan obtenido las raices del factor cuadratico, se hace necesario extraerlos valores de los coeficientes del polinomio que queda como resultado de ladivision sintetica. Estos coeficientes se encuentran almacenados en el vector b yahora se guardan en el vector a1 con el fin que se puedan seguir extrayendo lasraices:

Page 134: Notas Clase1

116 CAPITULO 4. POLINOMIOS

〈Ciclo Principal Bairstow: Extraccion coeficientes Polinomio resultante 116a 〉 ≡

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: Asignacion de raices Una vez las rai-ces del factor cuadratico considerado se han obtenido estas se almacenan en elvector xr:

〈Ciclo Principal Bairstow: Asignacion de raices obtenidas 116b 〉 ≡

xr=[xr;roots];�

Fragmento referenciado en 113a.

4.4.2.4. Extraccion de raices de polinomio n <= 2

Cuando el procedimiento anterior se haya repetido varias veces y el polino-mio resultante se de grado 2 o menor se calculan las respectivas raices. En estepunto se chequea si el numero de iteraciones es menor al maximo especificadoinicialmente y se consideran los dos casos mencionados anteriormente:

〈Bairstow: Extraccion de raices de polinomio n <= 2 116c 〉 ≡

if(iter<maxit);〈Extraccion raices Polinomio n <= 2: Polinomio grado 2 117a 〉〈Extraccion raices Polinomio n <= 2: Polinomio grado 1 117b 〉

end;�

Fragmento referenciado en 111.

4.4.2.4.1. Polinomio grado 2 Si el polinomio que queda al final es de gra-do 2 este se puede resolver mediante la expresion de la ecuacion cuadratica,definiendo de forma correspondiente los coeficientes de dicho polinomio:

Page 135: Notas Clase1

4.4. METODO DE BAIRSTOW 117

〈Extraccion raices Polinomio n <= 2: Polinomio grado 2 117a 〉 ≡

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.

4.4.2.4.2. Polinomio grado 1 En el caso que el polinomio resultante sea degrado 1, la raız de este se puede obtener de forma sencilla mediante la expre-sion:

x∗ = −b0

b1

(4.31)

y lo cual se puede expresar como:

〈Extraccion raices Polinomio n <= 2: Polinomio grado 1 117b 〉 ≡

elsexr=[xr;-a1(1)/a1(2)];

end;�

Fragmento referenciado en 116c.

4.4.3. Division Sintetica por factor cuadratico

La division sintetica por factor cuadratico aparece representada en la ecua-cion 4.23 y es de vital importancia para el metodo de Bairstow. La estructura dela funcion que implementa este procedimiento es la siguiente:

"deflacion2.m" 117c ≡

〈Deflacion2: Declaracion funcion 118a 〉〈Deflacion2: Inicializacion de variables 118b 〉〈Deflacion2: Ciclo principal 119a 〉

4.4.3.1. Declaracion de la funcion

Las variables de entrada de esta funcion son las siguientes:

a: vector de tamano n× 1 con los coeficientes del polinomio

r y s: factores del termino cuadratico (ver ecuacion 4.25)

Page 136: Notas Clase1

118 CAPITULO 4. POLINOMIOS

y las variables de salida:

b: vector de tamano n× 2 con los coeficientes del polinomio resultante dela division.

c: vector de tamano n× 2 con los valores de la derivada del polinomio.

〈Deflacion2: Declaracion funcion 118a 〉 ≡

function [b,c]=deflacion2(a,r,s)�

Fragmento referenciado en 117c.

4.4.3.2. Inicializacion de Variables

Para realizar el procedimiento de division sintetica es necesario inicializarlas siguientes variables:

n: numero de elementos de los vectores de salida. Este valor se inicializacomo la longitud del vector de entrada a menos 2 elementos.

El vector b de tamano n× 1 y c de tamano (n− 1)× 1se inicializa en 0.0

Los vectores b y c se inicializan de acuerdo a lo presentado en las ecuacio-nes 4.254.28 respectivamente.

〈Deflacion2: Inicializacion de variables 118b 〉 ≡

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 coeficientes del polinomio resultante del pro-cedimiento de division sintetica y su derivada:

Page 137: Notas Clase1

4.4. METODO DE BAIRSTOW 119

〈Deflacion2: Ciclo principal 119a 〉 ≡

〈Ciclo principal Deflacion2: Coeficientes 119b 〉〈Ciclo principal Deflacion2: Derivada 119c 〉

Fragmento referenciado en 117c.

〈Ciclo principal Deflacion2: Coeficientes 119b 〉 ≡

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 Deflacion2: Derivada 119c 〉 ≡

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. Solucion de la ecuacion cuadratica

Con el fin de evitar problemas numericos se hace necesario emplear unaformulacion alternativa de la solucion de la ecuacion cuadratica dada por laecuacion 4.30 y la cual en MATLAB R© se puede implementar de la siguienteforma:

"solucion_cuadratica.m" 119d ≡

〈Solucion Cuadratica: Definicion funcion 120a 〉〈Solucion Cuadratica: Inicializacion de variables 120b 〉〈Solucion Cuadratica: Determinacion de las raices 120c 〉

Las variables de entrada a esta funcion son los coeficientes a, b y c de la ecuacioncuadratica, y la salida corresponde a un vector x de dos elementos con las dosraıces obtenidas.

Page 138: Notas Clase1

120 CAPITULO 4. POLINOMIOS

〈Solucion Cuadratica: Definicion funcion 120a 〉 ≡

function [x]=solucion_cuadratica(a,b,c);�

Fragmento referenciado en 119d.

En esta funcion solo se hace necesario inicializar el vector x, el cual se iguala a0.0.

〈Solucion Cuadratica: Inicializacion de variables 120b 〉 ≡

x=zeros(2,1);�

Fragmento referenciado en 119d.

La determinacion de las raıces de la ecuacion cuadratica se compone de lossiguientes pasos:

〈Solucion Cuadratica: Determinacion de las raices 120c 〉 ≡

〈Determinacion de raices: Calculo del discriminante 120d 〉〈Determinacion de raices: Raices diferentes 121a 〉〈Determinacion de raices: Raices iguales 121b 〉

Fragmento referenciado en 119d.

El discriminante esta definido por:

disc = b2 − 4ac (4.32)

y en MATLAB R© se calcula de la siguiente forma:

〈Determinacion de raices: Calculo del discriminante 120d 〉 ≡

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, quepueden ser reales o complejas conjugadas; y las cuales se pueden determinarempleando la ecuacion 4.30

Page 139: Notas Clase1

4.4. METODO DE BAIRSTOW 121

〈Determinacion de raices: Raices diferentes 121a 〉 ≡

if(disc>0.0);x(1)=2*c/(b+sqrt(disc));x(2)=2*c/(b-sqrt(disc));

Fragmento referenciado en 120c.

Si el discriminante tiene un valor muy cercano a 0, entonces las raıces son realese iguales, y sus valores se pueden determinar:

〈Determinacion de raices: Raices iguales 121b 〉 ≡

elseif(abs(disc)<1.0e-10);x(1)=2*c/b;x(2)=2*c/b;

end�

Fragmento referenciado en 120c.

Page 140: Notas Clase1

122 CAPITULO 4. POLINOMIOS

Ejemplo (Division sintetica con factor cuadratico)

Dividir el polinomio:

P4(x) = x4 + x3 − 8x2 + 9x− 3

por el factor cuadratico dado por x2 − 2x + 1. De este factor se puede inferirque r = 2 y s = −1 Los coeficientes del polinomio anterior son:

Coef Valora4 1a3 1a2 -8a1 9a0 -3

y de acuerdo a la ecuacion 4.25 se tiene que los coeficientes del polinomioresultante de la division sintetica estan dados por:

Coeficiente Expresion Valorb4 b4 = a4 1.0b3 b3 = a3 + rb4 1.0 + (2)(1) = 3b2 b2 = a2 + rb3 + sb4 −8 + (2)(3) + (−1)(1) = −3b1 b1 = a1 + rb2 + sb3 9 + (2)(−3) + (−1)(3) = 0b0 b0 = a0 + rb1 + sb2 −3 + (2)(0) + (−1)(−3) = 0

De acuerdo a la ecuacion 4.25 b4 corresponderıa al coeficiente del terminocuadratico, mientras que b3 serıa el coeficiente de x y b2 el termino indepen-diete con lo cual se tiene que el polinomio resultante es:

Pn−2(x) = x2 + 3x− 3

y el termino residual esta dado por (ecuacion 4.24):

R = b1(x− r) + b0 = 0 + (x− 2)× 0 = 0

y por lo tanto la division sintetica es exacta indicando que x2 − 2x + 1 es untermino cuadratico del polinomio original.

Page 141: Notas Clase1

4.4. METODO DE BAIRSTOW 123

Ejemplo MATLAB R© (Division sintetica con factor cuadratico)

Dividir el polinomio:

P4(x) = x4 + x3 − 8x2 + 9x− 3

por el factor cuadratico dado por x2 − 2x + 1. Los coeficientes del polinomiose definen 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 division sintetica se emplea la funciondeflacion2.m de la siguiente forma:

[b,c]=deflacion2(a,r,s)

obteniendose los siguientes resultados:

b =

0

0

-3

3

1

En este caso particular los dos primeros terminos del polinomio resultanteson iguales a 0 indicando que el residuo es igual a 0 y que la division esexacta.

Page 142: Notas Clase1

124 CAPITULO 4. POLINOMIOS

Ejemplo (Determinacion de raıces con el metodo de Bairstow)

Determine todas las raıces del polinomio:

P4(x) = x4 + x3 − 8x2 + 9x− 3

por medio del metodo de Bairstow, usando r = s = −1, un maximo de 100 ite-raciones y un error mınimno de 1.0× 10−6.

Division sintetica por factor cuadratico da como resultado:

Coeficiente Expresion Valorb4 b4 = a4 1.0b3 b3 = a3 + rb4 1.0 + (−1)(1) = 0b2 b2 = a2 + rb3 + sb4 −8 + (−1)(0) + (−1)(1) = −9b1 b1 = a1 + rb2 + sb3 9 + (−1)(−9) + (−1)(0) = 18b0 b0 = a0 + rb1 + sb2 −3 + (−1)(18) + (−1)(−9) = −12

y tal como se puede apreciar, los terminos b0 y b1 son diferentes de 0 y por lotanto los valores de r y s no son los correctos. Las derivadas de los factores bcon respecto a r y s se calculan empleando las ecuaciones 4.28:

Coeficiente Expresion Valorc3 c3 = b4 1.0c2 c2 = b3 + rc3 0 + (−1)(1.0) = −1c1 c1 = b2 + rc2 + sc3 (−9) + (−1)(−1) + (−1)(1.0) = −9c0 c0 = b1 + rc1 + sc2 18 + (−1)(−9) + (−1)(−1) = 28

De acuerdo a los resultados anteriores se plantea el sistema lineal de ecuacionespara 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

r

∣∣∣∣ =

∣∣∣∣ 1.59633027

(0.59633027)

∣∣∣∣× 100 = 267.69 %

errs =

∣∣∣∣∆s

s

∣∣∣∣ =

∣∣∣∣ 3.3633027

(2.633027)

∣∣∣∣× 100 = 137.97 %

Page 143: Notas Clase1

4.4. METODO DE BAIRSTOW 125

El procedimiento anterior se repite por 22 iteraciones, al final de la cuales seobtiene que los valores de r = 1.79128782791137 y s = −0.79128783199515, conlos cuales los valores de b1 = 0.0 y b0 = 0.0. Con estos valores de r y s sesoluciona la ecuacion cuadratica x2− rx− s = 0 obteniendose de esta forma lasraıces:

x1 =2s

r +√

(r + 4s)= 0.9999999 ≈ 1.0

x2 =2s

r −√

(r + 4s)= 0.7912878

El polinomio resultante del procedimiento de division sintetica es:

P2 = x2 + 2.79128782537684x− 3.79128793126949

del cual se pueden obtener las raices aplicando el mismo procedimiento ante-rior:

x3 = 1.00000002210108

x4 = −3.79128784747792

Con lo cual se han obtenido todas las raices del polinomio empleando la solucionde la ecuacion cuadratica!!!.

Page 144: Notas Clase1

126 CAPITULO 4. POLINOMIOS

Ejemplo MATLAB R© (Determinacion de raıces con el metodo de Bairstow)

Determine todas las raıces del polinomio:

P4(x) = x4 + x3 − 8x2 + 9x− 3

por medio del metodo de Bairstow, usando r = s = −1, un maximo de 100iteraciones y un error mınimno de 1.0× 10−10.

El primer paso consiste en definir el polinomio de interes por medio de suscoeficientes, para lo cual definimos el siguiente vector:

a=[-3 9 -8 1 1]’;

junto los valores de r y s

r=-1;s=-1;

El metodo de Bairstow se encuentra implementado en la funcion bairstow.m ,con la cual este problema se puede resolver de la siguiente forma:

[xr,ff,err,iter]=bairstow(a,r,s,100,1e-10);

y despues de 66 iteraciones, las raıces obtenidas son:

xr =

1.0000

0.7913

1.0000

-3.7913

4.5. Metodo de Laguerre

4.5.1. Fundamentos Conceptuales

El metodo de Laguerre es uno de los metodos mas eficientes que existen parala determinacion de todas las raıces de un polinomio, incluyendo valores realesy/o complejos.

Para entender la filosofıa de este metodo es necesario comenzar con la expresiongeneral para las raıces de un polinomio:

Pn(x) = (x− x1)(x− x2) · · · (x− xn) (4.33)

Page 145: Notas Clase1

4.5. METODO DE LAGUERRE 127

donde xi, i = 1, . . . , n corresponden a cada una de las raıces de Pn y los cualesson los valores que se quieren determinar. La ecuacion anterior se puede sim-plificar para los propositos del entendimiento del presente metodo si se toma ellogaritmo. 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 expresion anterior se obtiene:

d ln |Pn(x)|dx

=1

x− x1

+1

x− x2

+ · · ·+ 1

x− xn

=P

′n(x)

Pn(x)(4.35)

y la segunda derivada de la ecuacion 4.34 esta dada por:

−d2 ln |Pn(x)|dx2

=1

(x− x1)2+

1

(x− x2)2+ · · ·+ 1

(x− xn)2

=

[P

′n(x)

Pn(x)

]2

− P′′n (x)

Pn

(4.36)

Ahora para obtener una estimacion de las raıces del Polinomio se tienen quehacer las siguientes suposiciones:

la distancia entre la raız x1 y nuestro valor inicial x0 esta dada por a

la distancia entre el valor inicial x0 y las restantes raıces esta dada por b yes la misma para todas las raıces.

x0 − x1 = a

x0 − xi = b, i = 2, 3, . . . , n(4.37)

Atendiendo a las suposiciones antes mencionadas las ecuaciones 4.35,4.36 sepueden reescribir de la siguiente forma:

1

a+

n− 1

b= G (4.38)

1

a2+

n− 1

b2= H (4.39)

De la ecuacion 4.38 se despeja b para reemplazarlo en la ecuacion 4.39, locual permite despejar la distancia a a la raız y obtener:

a =n

G +√

(n− 1)(nH −G2)(4.40)

Con lo anterior la primera raız del polinomio x1 queda definida como:

x1 = x0 + a (4.41)

Page 146: Notas Clase1

128 CAPITULO 4. POLINOMIOS

4.5.2. Determinacion de la raıces de polinomios usando elmetodo de Laguerre

El metodo de Laguerre se encuentra implementado en MATLAB R© en lafuncion laguerre.m cuya estructura es la siguiente:

"laguerre.m" 128a ≡

〈 Laguerre: Declaracion de la funcion 128b 〉〈 Laguerre: Inicializacion de variables 129a 〉〈 Laguerre: Ciclo Principal 129b 〉〈 Laguerre: Chequear si se obtuvo raız 132 〉

4.5.2.1. Declaracion de la funcion

Las variables de entrada a la funcion son las siguientes:

x0: valor inicial de la raız

a: vector de tamano n × 1 que contiene los coeficientes que definen elpolinomio de interes.

niter: valor que representa el numero de iteraciones

errmin: valor de error relativo mınimo que se emplea para chequear laconvergencia del metodo a la raız buscada.

La variable de salida x corresponde a una raız del polinomio en estudio.

〈 Laguerre: Declaracion de la funcion 128b 〉 ≡

function [xr,fx,er,iter]=laguerre(x0,a,maxiter,err_min)�

Fragmento referenciado en 128a.

4.5.2.2. Inicializacion de Variables

Uno de los aspectos mas interesantes del metodo corresponde al hecho queconverge sin importar cual es el valor inicial especificado. En este caso particu-lar, el valor de la raız x0 es especificado por el usuario. Ası mismo es necesariocontar con el numero de elementos del vector a, el cual se almacena en la varia-ble n.

Page 147: Notas Clase1

4.5. METODO DE LAGUERRE 129

〈 Laguerre: Inicializacion de variables 129a 〉 ≡

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.

4.5.2.3. Ciclo Principal

Esta es la parte mas importante del procedimiento ya que aquı se determinanlas 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ız 129c 〉〈Ciclo Principal Laguerre: Chequear si es raız 130a 〉〈Ciclo Principal Laguerre: Calculo de G y H 130b 〉〈Ciclo Principal Laguerre: Calculo del denominador 130c 〉〈Ciclo Principal Laguerre: Determinacion del signo 131a 〉〈Ciclo Principal Laguerre: Actualizacion de la raız 131b 〉〈Ciclo Principal Laguerre: Calculo de error e incremento de iteraciones 131c 〉〈Ciclo Principal Laguerre: Actualizacion de valores 131d 〉

end;�

Fragmento referenciado en 128a.

4.5.2.3.1. Prueba de la raız Para probar la raız inicial x se utiliza la funcionevaluacion polinomio.m definida en la seccion 4.1. A esta funcion se le especi-fican los coeficientes contenidos en el vector a y el valor inicial de la raız x yse obtienen el valor del polinomio p, la primera y segunda derivadas, las cualesestan contenidas en las variables pd y sd respectivamente.

〈Ciclo Principal Laguerre: Prueba de la raız 129c 〉 ≡

[p pd sd]=evaluacion_polinomio(a,xold);�

Fragmento referenciado en 129b.

Page 148: Notas Clase1

130 CAPITULO 4. POLINOMIOS

4.5.2.3.2. Chequear si es raız Si al evaluar el polinomio en x se obtiene unvalor p menor a la tolerancia tol especificada inicialmente entonces se ha deter-minado una raız del polinomio. En este caso la funcion termina su ejecucion ydevuelve el control al usuario.

〈Ciclo Principal Laguerre: Chequear si es raız 130a 〉 ≡

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. Calculo de G y H Si el valor x especificado inicialmente no co-rresponde a una raız del polinomio en estudio, entonces la funcion continua suejecucion calculando los valores de G y H (ecuaciones 4.38 y 4.39 respectiva-mente).

〈Ciclo Principal Laguerre: Calculo de G y H 130b 〉 ≡

g=pd/p;h=g*g-sd/p;

Fragmento referenciado en 129b.

4.5.2.3.4. Calculo del denominador Una vez los valores de G y H se hancalculado se determina el valor del denominador de la ecuacion 4.40:

〈Ciclo Principal Laguerre: Calculo del denominador 130c 〉 ≡

f=sqrt((n-1)*(n*h-g*g));�

Fragmento referenciado en 129b.

4.5.2.3.5. Determinacion del signo Para terminar de calcular el denomina-dor de 4.40 se hace necesario determinar la magnitud de G + H:

Page 149: Notas Clase1

4.5. METODO DE LAGUERRE 131

〈Ciclo Principal Laguerre: Determinacion del signo 131a 〉 ≡

if(abs(g+f)>=abs(g-f));dx=n/(g+f);

elsedx=n/(g-f);

end;�

Fragmento referenciado en 129b.

4.5.2.3.6. Actualizacion de la raız : Una vez se ha determinado el incre-mento de la raız, esta se actualiza usando la ecuacion 4.41:

〈Ciclo Principal Laguerre: Actualizacion de la raız 131b 〉 ≡

x=xold-dx;�

Fragmento referenciado en 129b.

4.5.2.3.7. Calculo de error e incremento de iteraciones : Con la nueva raızcalculada, se calcula el error relativo de la misma y se incrementa el numero deiteraciones:

〈Ciclo Principal Laguerre: Calculo de error e incremento de iteraciones 131c 〉 ≡

iter=iter+1;err=abs((x-xold)/x)*100;

Fragmento referenciado en 129b.

4.5.2.3.8. Actualizacion de valores : en este fragmento se actualizan losvalores de xold, y se asignan los respectivos valores en los vectores fx(·) y er(·):

〈Ciclo Principal Laguerre: Actualizacion de valores 131d 〉 ≡

xold=x;xr(iter,1)=x;fx(iter,1)=p;er(iter,1)=err;

Fragmento referenciado en 129b.

Page 150: Notas Clase1

132 CAPITULO 4. POLINOMIOS

4.5.2.3.9. Chequear si se obtuvo la raız : Si la raız no se obtuvo se imprimeun mensaje en pantalla que alerta al usuario sobre esta situacion.〈 Laguerre: Chequear si se obtuvo raız 132 〉 ≡

if(iter>=maxiter & err>err_min);disp(’Metodo de Laguerre no encontro solucion.’);disp(’Aumente el numero de iteraciones’);

end;�

Fragmento referenciado en 128a.

Ejemplo (Metodo de Laguerre para la raız de un polinomio)

Encuentre una raız del polinomio:

P3(x) = x3 − 4.0x2 − 4.48x + 26.1

asumiendo un valor inicial de x = 3− i.Para mejorar la correccion de la raız inicial es necesario evaluar el polinomio

(ecuacion 4.5) ası como sus derivadas (ecuaciones 4.6 y 4.7):

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

P(1)3 (x) = 3.0x2 − 8.0x− 4.48

= 3.0× (8− 6i)− 8.0× (3− 1)− 4.48 = −4.48− 10.0i

P(2)3 (x) = 6.0x− 8.0 = 6.0× (3− i)− 8.0 = 10.0− 6i

Con estos valores se calcula G(x) usando la ecuacion 4.35 y H(x) ecuacion 4.36con lo que se obtiene:

G(x) =P

(1)3 (x)

P3(x)=−4.48− 10.0i

−1.34 + 2.48i= −2.36557 + 3.08462i

H(x) = G2(x)− P(2)3 (x)

P3(x)

= (−2.36557 + 3.08462i)2 − 10.0− 6i

−1.34 + 2.48i

= 0.35995− 12.48452i

Con estos valores se puede calcular F (x) como el denominador de la ecua-cion 4.40 de la siguiente forma:

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

Page 151: Notas Clase1

4.5. METODO DE LAGUERRE 133

Ahora se requiere determinar que factor produce una mayor correccion en eldenominador:

|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 correccionde la raız es:

r = x− n

G(x)− F (x)= (3− i)− 3

−7.45227 + 7.57864i

= 3.19790− 0.79875i

de tal forma que la raız corregida es x = 3.19790 − 0.79875i, la cual se acercamucho al valor real de x = 3.20− 0.80i. Este procedimiento se repite hasta la 4iteracion en donde el error relativo obtenido ha llegado ha ser de 1.0× 10−12

Page 152: Notas Clase1

134 CAPITULO 4. POLINOMIOS

Ejemplo MATLAB R© (Metodo de Laguerre para la raız de un polinomio)

Determinar la raız del polinomio

P4(x) = x3 − 4.0x2 − 4.48x + 26.1

en MATLAB R© a partir del valor inicial 3 − i. Para aplicar el procedimientode Laguerre y resolver este problema es necesario definir el vector con loscoeficientes 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 metodo de Laguerre para

[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. Determinacion de todas las raıces de un polinomio

Hasta este momento tal y como se ha presentado el metodo de Laguerre estese puede emplear para la determinacion de una raız. Su verdadero potencialemerge cuando este metodo, tal y como esta implementado en la funcion lague-rre.m se combina con la deflacion polinomial (funcion deflacionpolinomial.m)para la determinacıon sucesiva de raıces de un polinomio. La idea es muy senci-lla y consiste en especificar un valor inicial x0 y con este determinar el valor de laraız x1. Con esta raız determinada se realiza el procedimiento de division sinteti-

Page 153: Notas Clase1

4.5. METODO DE LAGUERRE 135

ca y el polinomio resultante nuevamente se somete al metodo de Laguerre paradeterminar el valor de otra raız, la cual corresponderıa a x2. Este procedimientose repita hasta que todas las raıces del polinomio hayan sido determinadas.

La funcion que implementa este procedimiento se denomina raices polinomios.my tiene la siguiente estructura:

"raices_polinomios.m" 135a ≡

〈Raices Polinomios: Declaracion de la Funcion 135b 〉〈Raices Polinomios: Inicializacion de variables 136a 〉〈Raices Polinomios: Ciclo Principal 136b 〉

4.5.3.1. Declaracion de la funcion

Las variables de entrada de esta funcion son:

x0: valor inicial de la raız. Este valor sirve para inicializar la busqueda delas raices cada vez que se ejecuta el procedimiento de laguerre .

a: vector con los coeficientes que definen el polinomio

maxiter: numero maximo de iteraciones

err min: error o tolerancia mınima con la cual se considera que una solu-cion es satisfactoria

La variable de salida corresponde a xr un vector con todas las raices delpolinomio.

〈Raices Polinomios: Declaracion de la Funcion 135b 〉 ≡

function [xr]=raices_polinomios(x0,a,maxiter,err_min)�

Fragmento referenciado en 135a.

4.5.3.2. Inicializacion de variables

Para determinar las raices de un polinomio se deben inicializar las siguientesvariables

n: numero de raices a determinar. Este valor es igual al numero de coefi-cientes del polinomio menos 1 (ya que se incluye el termino independien-te).

xr vector de tamano n en donde se van a almacenar las raices.

Page 154: Notas Clase1

136 CAPITULO 4. POLINOMIOS

〈Raices Polinomios: Inicializacion de variables 136a 〉 ≡

n=length(a)-1;xr=zeros(n,1);�

Fragmento referenciado en 135a.

4.5.3.3. Ciclo principal

La determinacion de las n raices de un polinomio se hace mediante un ciclofor que tiene la siguiente estructura:

〈Raices Polinomios: Ciclo Principal 136b 〉 ≡

for i=1:n;〈Ciclo Principal Raices: Inicializacion variables 136c 〉〈Ciclo Principal Raices: aplicacion del metodo de Laguerre 137a 〉〈Ciclo Principal Raices: Correcion de la raız obtenida 137b 〉〈Ciclo Principal Raices: division sintetica 137c 〉

end;�

Fragmento referenciado en 135a.

4.5.3.3.1. Inicializacion de Variables Para cada raız se hace necesario ini-cializar las variables iter que almacena el numero de iteraciones y er que alma-cena el error relativo de la raız determinada en cada iteracion:

〈Ciclo Principal Raices: Inicializacion variables 136c 〉 ≡

iter=0;er=100;

Fragmento referenciado en 136b.

4.5.3.3.2. Aplicacion del metodo de Laguerre Para encontrar la raız seaplica el metodo de laguerre por medio de un ciclo while que controla la con-vergencia del metodo. Dentro de este ciclo se incrementa el contador iter, y alemplear la funcion laguerre.m se determinar el error relativo en la aproxima-cion de la raız obtenida.

Page 155: Notas Clase1

4.5. METODO DE LAGUERRE 137

〈Ciclo Principal Raices: aplicacion del metodo de Laguerre 137a 〉 ≡

while(iter<maxiter & er>errmin);iter=iter+1;[x,fx,er,iter]=laguerre(x0,a,maxiter,errmin);

end;�

Fragmento referenciado en 136b.

4.5.3.3.3. Correccion de la raız Si la raız obtenida en el paso anterior tie-ne un valor imaginario que es menor al error mınimo especificado inicialmenteerr min, entonces este valor se puede despreciar y en ese caso se considera so-lamente la parte real de la raız obtenida. Al final se asigna la raız obtenida en lacorrespondiente posicion del vector xr

〈Ciclo Principal Raices: Correcion de la raız obtenida 137b 〉 ≡

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. Division sintetica Una vez se ha encontrado una de las raicesdel polinomio se procede a extraerla del mismo usando el procedimiento dedivision sintetica, para lo cual se emplea la funcion deflacion polinomial.m ,y se asignan los coeficientes del polinomio resultante al vector a:

〈Ciclo Principal Raices: division sintetica 137c 〉 ≡

b=deflacion_polinomial(a,xr(i,1));a=b;

Fragmento referenciado en 136b.

Page 156: Notas Clase1

138 CAPITULO 4. POLINOMIOS

Ejemplo MATLAB R© (Determinacion de raıces con el metodo de Laguerre)

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 maximo de 100 itera-ciones y una tolerancia de 1.0× 10−6.

Para realizar este procedimiento en MATLAB R© es necesario definir el vectorde coeficientes del polinomio, lo cual se hace de la siguiente forma:

>>a=[26.1 -4.48 -4 1]’;

Tambien se requiere especificar la solucion inicial del procedimiento:

>>x0=3-i;

Con esto ya se puede emplear la funcion raices polinomios.m de la si-guiente forma:

>>[xr]=raices_polinomios(x0,a,100,1e-6);

La primera raız requiere de 3 iteraciones para converger, mientras que lasegunda y tercera raız requieren solamente 2, de tal forma que los resultadosobtenidos 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 puedeemplear la funcion evaluacion polinomio.m definida en la seccion 4.1

Page 157: Notas Clase1

Capıtulo 5

Solucion de sistemas lineales deecuaciones: Metodos directos

5.1. Introduccion

Los sistemas lineales de ecuaciones aparecen en muchos problemas de laingenierıa civil, por lo cual resulta su estudio de vital importancia para cualquierpersona que quiera adentrarse en los terrenos del modelamiento numerico. Anivel general, un sistema lineal de ecuaciones se puede expresar de la siguienteforma:

a11x1 + a12x2+ · · · + a1nxn = b1

a21x1 + a22x2+ · · · + a2nxn = b2

a31x1 + a32x2+ · · · + a3nxn = b3

......

an1x1 + an2x2+ · · · + annxn = bn

(5.1)

en donde los aij corresponden a los denominados coeficientes del sistema y los bi

a los terminos independientes. Los valores de xi que hacen que cada una de lasigualdades en la ecuacion 5.1 se cumplan se denominan la solucion del sistema.El anterior sistema lineal de ecuaciones puede ser expresado de forma compactausando un elemento definido en el Algebra Lineal: la matrız. Usando matrices elsistema lineal de ecuaciones dado por la ecuacion (5.1) se puede escribir como:

Ax = b (5.2)

donde A representa la matrız de coeficientes, x corresponde al vector de incogni-tas y b es el vector con los terminos independientes.

Existen diferentes metodos para la obtencion de la solucion de un sistema li-neal de ecuaciones, los cuales pueden agruparse en dos grandes categorıas:

Metodos directos

139

Page 158: Notas Clase1

140 CAPITULO 5. METODOS DIRECTOS

Metodos iterativos

Dentro de los metodos directos mas comunes se pueden mencionar los si-guientes:

Eliminacion gaussiana

Descomposicion LU

Descomposicion de Cholesky

Dentro de los metodos iterativos mas importantes se encuentran:

Gauss-Seidel

Sobre-relajacion

Gradiente Conjugado

5.1.1. Tipos de Matrices

Existen diferentes tipos de matrices y su conocimiento es un requisito fun-damental para el estudio de los metodos de solucion de sistemas de ecuacioneslineales, ya que existen metodos especıficos de solucion para estos tipo de ma-trices. A continuacion se presentan los tipos mas importantes de matrices quevan a aparecer en el estudio de los sistemas lineales de ecuaciones.

5.1.1.1. Matrices SimetricasDefinicion 14

Una matrız simetrica es aquella para la cual se cumple que:

aij = aji (5.3)

y por lo tanto se tiene que A = AT.

Ejemplo

La siguiente es un caso muy sencillo de una matrız simetrica: 4 5 65 6 76 7 8

Page 159: Notas Clase1

5.1. INTRODUCCION 141

5.1.1.2. Matrices HermıticasDefinicion 15

Una matrıx Hermıtica (o matrız auto-adjunta) es una matrız cuadrada convalores complejos, la cual es igual a su transpuesta conjugada, es decir, que elelemento en la fila i y en la columna j es el complejo conjugado del elementode la fila j y la columna i:

aij = ¯−aji (5.4)

donde aij representa el complejo conjugado del valor de aij

Ejemplo

La siguiente matrız es de tipo hermıtico; 4 5 + i 6− i5− i 6 7 + i6 + i 7− i 8

ya que los elementos cumplen con la condicion expresada por la ecuacion5.4.

5.1.1.3. Matrices Diagonales

Definicion 16

Una matrız diagonal es aquella para la cual los elementos de la diagonalprincipal son valores reales y los restantes elementos son iguales a 0:

D =

d11 0 0 00 d22 0 00 0 d33 00 0 0 d44

(5.5)

De aqui se desprende que una matrız Hermıtica de valores reales es una matrızsimetrica.

Page 160: Notas Clase1

142 CAPITULO 5. METODOS DIRECTOS

Ejemplo

Un ejemplo sencillo de matrız diagonal es el siguiente:

D =

5 0 00 4 00 0 8

5.1.1.4. Matrız Identidad

Definicion 17

La matrız identidad I es aquella para la cual se cumple:

I ·A = A (5.6)

y la cual tiene 1 en las diagonal principal y 0 en los elementos restantes:

In =

1 0 0 00 1 0 00 0 1 00 0 0 1

(5.7)

Page 161: Notas Clase1

5.1. INTRODUCCION 143

Ejemplo

La matrız identidad de 3× 3 esta dada por:

I3 =

1 0 00 1 00 0 1

5.1.1.5. Matrız Tridiagonal

Definicion 18

Las matrices tridiagonales son aquellas que tienen elementos diferentes de0 en la diagonal principal, y las primeras diagonales superior e inferior:

T =

a11 a12 0 0 0a21 a22 a23 0 00 a32 a33 a34 00 0 a43 a44 a45

0 0 0 a54 a55

(5.8)

Page 162: Notas Clase1

144 CAPITULO 5. METODOS DIRECTOS

Ejemplo

Las matrices tridiagonales son muy importantes porque aparecen en ladiscretizacion de ecuaciones diferenciales parciales. Un ejemplo sencillo deeste tipo de matrices es:

T =

4 1 0 0 01 4 1 0 00 1 4 1 00 0 1 4 1

5.1.1.6. Matrices Triangulares

Definicion 19

La matrız triangular inferior se define como aquella para la cual los elemen-tos por encima de la diagonal principal son iguales a 0:

L =

a11 0 0 0 0a21 a22 0 0 0a31 a32 a33 0 0a41 a42 a43 a44 0a51 a52 a53 a54 a55

(5.9)

Definicion 20

De forma equivalente, en una matrız triangular superior los valores pordebajo de la diagonal principal son iguales a 0:

U =

a11 a12 a13 a14 a15

0 a22 a23 a24 a25

0 0 a33 a34 a35

0 0 0 a44 a45

0 0 0 0 a55

(5.10)

Page 163: Notas Clase1

5.1. INTRODUCCION 145

Ejemplo

Un ejemplo de matrız triangular superior es el siguiente:

U =

1 2 3 4 50 3 4 5 60 0 5 6 70 0 0 7 80 0 0 0 9

y de matrız triangular inferior:

L =

1 0 0 0 02 3 0 0 03 4 5 0 04 5 6 7 85 6 7 8 9

5.1.1.7. Matrices de Hessemberg

Definicion 21

Las matrices de Hessemberg tambien se denominan matrices supertriangu-lares, y son aquellas para las cuales todos los elementos por encima o pordebajo de las subdiagonales son iguales a 0. La matrız de Hessemberg supe-rior esta definida de la siguiente forma:

HU =

a11 a12 a13 a14 a15

a21 a22 a23 a24 a25

0 a32 a33 a34 a35

0 0 a43 a44 a45

0 0 0 a54 a55

(5.11)

y de igual forma la matrız de Hessemberg inferior:

HL =

a11 a12 0 0 0a21 a22 a32 0 0a31 a32 a33 a34 0a41 a42 a43 a44 a45

a51 a52 a53 a54 a55

(5.12)

Page 164: Notas Clase1

146 CAPITULO 5. METODOS DIRECTOS

Ejemplo

Las matrices de Hessemberg son importantes en diferentes ramas del alge-bra lineal ya que muchos problemas con matrices totalmente llenas (o den-sas como tambien se les conocen) se obtienen matrices de este tipo. Algunosprocedimientos para la obtencion de los valores y vectores propios como ladescomposicion QR. Un ejemplo de matrız de Hessemberg es el siguiente:

HU =

1 2 0 0 03 4 5 0 06 7 8 9 010 11 12 13 1416 17 18 19 20

5.1.2. Matrices Densas y Dispersas

Definicion 22

Una matrız A se dice que es densa cuando todos sus elementos son dife-rentes de 0. Por otro lado, una matrız A se dice dispersa si alguno de suselementos es igual a 0.

Las matrices diagonales, triangulares y de Heseemberg corresponden a tipos es-pecıficos de matrices dispersas.

Page 165: Notas Clase1

5.1. INTRODUCCION 147

Ejemplo

Un ejemplo sencillo de una matrız densa es el siguiente:

DE =

9 8 76 5 43 2 1

y de una matrız dispersa:

DI =

0.000 0.000 0.685 0.000 0.0000.000 0.628 0.000 0.878 0.0000.000 0.000 0.000 0.000 0.0680.000 0.849 0.000 0.000 0.0000.000 0.000 0.000 0.000 0.000

Generalmente las matrices dispersas aparecen cuando se discretizan ecua-

ciones diferenciales parciales. Este tipo de matrices requieren de metodosespeciales para su almacenamiento y para su operacion, de tal forma queaseguren un manejo de memoria eficiente.

5.1.3. Transformaciones Elementales

Para una matriz A se definen tres transformaciones elementales, las cualesse aplican sobre las ecuaciones que conforman el sistema lineal. Dichas trans-formaciones elementales permiten cambiar el sistema lineal original en un siste-ma equivalente, cuya solucion es la misma que el sistema original. La finalidadverdadera de estas transformaciones consiste en facilitar los procedimientos desolucion de sistemas lineales de ecuaciones.

Las transformaciones elementales son las siguientes:

1. Multiplicar o divir una ecuacion por un escalar αdiferente de 0

2. Sumar dos ecuaciones entre si

3. Intercambiar de posicion dos ecuaciones

Como es evidente de la lista anterior, las 3 transformaciones elementalesmencionadas anteriormente son operaciones que no cambian la solucion de unsistema lineal de ecuaciones. Por ejemplo, para el siguiente sistema lineal deecuaciones:

a11 a12 a13 a14

a21 a22 a23 a24

a31 a32 a33 a34

a41 a42 a43 a44

x1

x2

x3

x4

=

b1

b2

b3

b4

Page 166: Notas Clase1

148 CAPITULO 5. METODOS DIRECTOS

tomemos la primera ecuacion y multipliquemosla por un escalar α 6= 0, con loque se tiene:

αa11x1 + αa12x2 + αa13x3 + αa14x4 = αb1

Esta ecuacion se puede introducir en el sistema original de la siguiente ma-nera:

αa11 αa12 αa13 αa14

a21 a22 a23 a24

a31 a32 a33 a34

a41 a42 a43 a44

x1

x2

x3

x4

=

αb1

b2

b3

b4

con lo cual resulta evidente que el vector solucion x no cambia.

De la misma forma, si se tienen dos ecuaciones:

a11x1 + a12x2 + a13x3 + a14x4 = b1

a21x1 + a22x2 + a23x3 + a24x4 = 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 coeficientes deacuerdo a las varibles respectivas xi, quiere decir que esta ecuacion es una nuevarestriccion que deben cumplir los valores de las incognitas, y por lo tanto

5.2. Solucion de sistemas triangulares

Si se tiene un sistema lineal de ecuaciones cuya matrız de coeficientes A seadel tipo triangular (ya sea superior o inferior), la solucion del mismo se puedeobtener de forma sencilla empleando los procedimientos de sustitucion haciaatras y hacia delante respectivamente. Este hecho es de vital importancia ya quetodos los metodos directos de solucion de ecuaciones lineales tratan de llevar el sis-tema original a uno equivalente, cuya matrız de coeficientes sea de tipo triangular.

Suponga que se tiene un sistema lineal de ecuaciones de la siguiente forma:u11 u12 u13 u14

0 u22 u23 u24

0 0 u33 u34

0 0 0 u44

x1

x2

x3

x4

=

b1

b2

b3

b4

(5.13)

Para obtener todos los elementos del vector solucion x se procede de la siguienteforma:

Page 167: Notas Clase1

5.2. SOLUCION DE SISTEMAS TRIANGULARES 149

1. Se despeja x4 usando la expresion:

x4 =b4

u44

2. Con el valor de x4 antes obtenido se despeja x3 a partir de la 3 ecuaciondel sistema original

u33x3 + u34x4 = b3

de lo cual se deprende que:

x3 =b3 − u34x4

u33

3. De igual forma se procede para despejar x2, para lo cual se usa la ecuacion2 del sistema original de ecuaciones:

u22x2 + u23x3 + u24x4 = b2

de la cual se obtiene:

x2 =b2 − u24x4 − u23x3

u22

4. La ultima variable x1 se despeja de una forma similar a partir de la ecua-cion:

x1 =b1 − u14x4 − u13x3 − u12x2

u11

Este procedimiento se denomina sustitucion hacia atras y se puede generali-zar mediante la siguiente expresion:

xk =bk

akk

xk−1 =

(bk−1 −n∑

j=k+1

akjxj)

akk

, k = n− 1, n− 2, . . . , n

(5.14)

En el caso de un sistema lineal en donde la matrız de coeficientes es de tipotriangular inferior, como el presentado a continuacion:

l110 0 0l21 l22 0 0l31 l32 l33 0l41 l42 l43 l44

x1

x2

x3

x4

=

b1

b2

b3

b4

(5.15)

el procedimiento empleado para obtener su solucion es similar al explicado an-teriormente, la unica diferencia consiste en el orden en el que se despejan lasincognitas del problema. Este se resume a continuacion:

Page 168: Notas Clase1

150 CAPITULO 5. METODOS DIRECTOS

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

x1 =b1

l11

2. La segunda incognita x2 se puede despejar de la ecuacion:

l21x1 + l22x2 = b2

la cual es igual a:

x2 =b2 − l21x1

l22

3. La tercera incognita x3 se puede obtener de la ecuacion:

l31x1 + l32x2 + l33x3 = b3

de la cual se obtiene:

x3 =b3 − l31x1 − l32x2

l33

4. La ultima incognita se puede despejar de la ecuacion:

x4 =b4 − l41x1 − l42x2 − l43x3

l44

Este procedimiento se denomina sustitucion hacia delante y se puede generalizarmediante la siguiente expresion:

x1 =b1

a11

xk =

bk −n∑

j=k

akjxj

akk

, k = 2, 3, . . . , n

(5.16)

5.3. Eliminacion Gaussiana con Pivoteo

5.3.1. Fundamentos Conceptuales

La eliminacion gaussianaes el procedimiento de solucion de sistemas de ecua-ciones lineales mas sencillo e importante que existe.

Page 169: Notas Clase1

5.3. ELIMINACION GAUSSIANA CON PIVOTEO 151

Definicion 23

La eliminacion gaussiana es el procedimiento para la solucion de un sistemalineal de ecuaciones el cual se basa en la aplicacion de transformacioneselementales (ver seccion 5.1.3) y que permite convertir:

A · x = b

en un sistema de la forma:U · x = b

donde U es una matrız triangular superior y b es un vector modificado determinos independientes. Este ultimo sistema se puede resolver mediantesustitucion hacia atras.

En el procedimiento de eliminacion gaussiana el sistema lineal de ecuacionesA · x = b se resuelve definiendo la denominada matrız aumentada del sistema.Esta matrız se denota como [A|b] y se encuentra formada por la matrız de coefi-cientes y del vector de terminos independientes:

a11 a12 . . . a1n b1

a21 a22 . . . a2n b2... . . . ...

...an1 an2 . . . ann bn

(5.17)

y sobre el cual al aplicar las transformaciones elementales (ver seccion 5.1.3),se convierte en un sistema lineal equivalente dado por:

a11 a12 . . . a1n b1

0 a′21 . . . a

′2n b

′2

0 0. . . ...

...0 0 0 a

′nn b

′n

(5.18)

donde la notacion a′ij indica que el elemento aij cambio. Un hecho de vital im-

portancia es que la solucion x del sistema original (ecuacion 5.17) es la mismadel sistema modificado (ecuacion 5.18), y por lo tanto resulta de vital impor-tancia estudiar como se resuelven los sistemas lineales cuyas matrices de coefi-cientes son de tipo triangular. Una vez el sistema lineal de ecuaciones ha sidollevado a esta forma triangular superior se puede resolver por sustitucion haciaatras, de tal forma que del sistema equivalente (ecuacion 5.18) despejamos laultima incogita xn, con lo cual se obtiene:

xn =b

′n

a′nn

(5.19)

Page 170: Notas Clase1

152 CAPITULO 5. METODOS DIRECTOS

Este mismo procedimiento se aplica a la incognita xn−1 de tal forma que:

xn−1 =

(b

′n−1 − annxn

an−1,n−1

)(5.20)

y lo cual se puede generalizar de la siguiente forma:

xk =

bk −

n∑j=k+1

akjxj

akk

, k = n− 1, n− 2, . . . , n (5.21)

Se pueden presentar problemas en el caso de que los elementos con los coefi-cientes aii con los que se realiza la eliminacion sean muy cercanos a la precisionde la maquina, ya que se pueden generar inestabilidades numericas. Existen 2estretegias con las que se puede evitar este problema, que se denominan esca-lamiento y pivoteo .

El procedimiento de escalamiento consiste en ajustar los valores de los coefi-cientes de cada una de las ecuaciones de tal forma que estos tengan el mismoorden de magnitud. A nivel practico existen dos aproximaciones para realizareste procedimiento. En la primera se modifica el valor del coeficiente aij conrespecto al valor maximo de la ecuacion:

a′

ij =aij

max (ai,)(5.22)

donde aij es el valor del coeficiente para la ecuacion i y la variable j, y el valormaximo se calcula para toda la ecuacion.

La otra aproximacion de escalamiento consiste en usar como patron de refe-rencia la norma vectorial del conjunto de coeficientes de la ecuacion, con locual el coeficiente modificado tiene la forma:

a′

ij =aij

E(5.23)

donde E se define como:

E =n∑

i=1

|ai,| (5.24)

La eliminacion de coeficientes de una ecuacion requiere la determinacion delmultiplicador aij/aii y en ese caso se debe de evitar que el valor del coeficienteaii ≈ 0, ya que el valor del multiplicador tenderıa a +∞ y ası se generarıa unainestabilidad numerica. El pivoteo permite resolver este problema, el cual con-siste en un procedimiento de reorganizacion de la ecuaciones del sistema lineal

Page 171: Notas Clase1

5.3. ELIMINACION GAUSSIANA CON PIVOTEO 153

(lo que es equivalente a las filas) de acuerdo al valor del coeficiente ubicadoen la diagonal principal aii. Para esto se mueve la ecuacion que tenga el mayorvalor de aii a la primera posicion.

Otra aproximacion alternativa consiste en reorganizar tanto filas como colum-nas, sin embargo este procedimiento resulta bastante complejo de implementara nivel computacional y no brinda mejoras significativas con respecto a la apro-ximacion tradicional que cambia solamente las filas. El pivoteo que involucracambios tanto de filas como columnas se denomina pivoteo completo ; mientrasque aquel en donde se cambian solo las filas se denomina pivoteo parcial .

Generalmente tanto el escalamiento y el pivoteo parcial se aplican de formasecuencial, ya que primero se realiza el escalamiento para luego determinar sies necesario realizar pivoteo.

Podemos resumir el pivoteo (parcial)como sigue:

Para elegir el elemento pivote en la primer columna se escoge el elementomayor (con valor absoluto) de toda la primer columna.

Para elegir el elemento pivote en la segunda columna, se escoge el elemen-to mayor (con valor absoluto ) de toda la segunda columna exceptuandoel elemento a12 .

Para la tercer columna se exceptuan los elementos a13 y a23.

En un diagrama matricial, tenemos que los elementos pivotes de cada columnase escogen de entre los siguientes:

a11

a21 a22

a31 a32 a33...

......

an1 an2 an3 · · · ann

(5.25)

5.3.2. Solucion de Sistemas de Ecuaciones con EliminacionGaussiana

La estructura de la funcion que implementa este procedimiento es la siguien-te:

Page 172: Notas Clase1

154 CAPITULO 5. METODOS DIRECTOS

"gauss_pivoteo.m" 154a ≡

〈Gauss con Pivoteo: Declaracion de la funcion 154b 〉〈Gauss con Pivoteo: Determinar valores para escalamiento 155a 〉〈Gauss con Pivoteo: Ciclo principal 155b 〉〈Gauss con Pivoteo: Sustitucion hacia atras 158b 〉〈Gauss con Pivoteo: Calculo del determinante 159a 〉〈Gauss con Pivoteo: Asignacion de salida 159b 〉

5.3.2.1. Definicion de la funcion

Como es costumbre en MATLAB R© para definir una funcion es necesarioespecificar cuales van a ser los argumentos de entrada y de salida. En este casoparticular se tienen las siguientes variables de entrada:

A: Matrız de coeficientes del sistema lineal de ecuaciones. Esta matrız esde tamano n× n

b: Vector de terminos independientes. Este es un vector de n× 1

y las variables de salida:

x: Vector con la solucion del sistema lineal de ecuaciones. Vector de ta-mano n× 1

detm: Valor del determinante de la matrız de coeficientes del sistema li-neal.

〈Gauss con Pivoteo: Declaracion de la funcion 154b 〉 ≡

function [x,detm] = gauss_pivoteo(A,b)

if (size(b,2) > 1);b = b’;

endn = length(b);s = zeros(n,1);num_cambios=0;�

Fragmento referenciado en 154a.

5.3.2.2. Escalamiento

Como se menciono en la clase, el escalamiento permite mejorar la estabilidadnumerica de los diferentes procedimientos de eliminacion ya que

Page 173: Notas Clase1

5.3. ELIMINACION GAUSSIANA CON PIVOTEO 155

Para realizar el escalamiento en la funcion a implementar en MATLAB R© sedebe determinar el valor maximo en cada fila de la matrız A, o lo que es equi-valente, en cada ecuacion del sistema lineal a resolver. Para esto hacemos unciclo for sobre la matrız de coeficientes A y extraemos los respectivos coeficien-tes de la ecuacion, usando la notacion de acceso rapido propia de MATLAB R©.Por ejemplo, si se quisieran extraer los n coeficientes de la 3 ecuacion (es de-cir, todos los valores de las columnas de la tercera fila) esto se puede realizarfacilmente:

A(3,1:n)

donde n es el numero de ecuaciones que conforman el sistema lineal. Esto fa-cilita enormemente esta labor, ya que en un lenguaje de programacion comoC++ serıa necesario realizar otro ciclo. Una vez se han extraıdo dichos valores,se hace necesario determinar cual es su valor maximo sin importar si se trata deun valor positivo o negativo; para lo cual usamos las funciones intrınsecas deMATLAB R© abs() (valor absoluto) en conjunto con max() (valor maximo). Estosvalores 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 continuacion:

〈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ız singular 156b 〉〈Ciclo Principal Gauss: Cambiar las filas 157a 〉〈Ciclo Principal Gauss: Fase de eliminacion 157b 〉

end;�

Fragmento referenciado en 154a.

Page 174: Notas Clase1

156 CAPITULO 5. METODOS DIRECTOS

5.3.2.3.1. Determinacion del Pivot Uno de los objetivos centrales del pivo-teo consiste en mejorar la estabilidad numerica del algoritmo de solucion delsistema de ecuaciones. Para realizar este procedimiento se hace necesario deter-minar el elemento del Pivot, y lo mas importante consiste en determinar si esteelemento se encuentra en la actual ecuacion o en una ecuacion que esta pordebajo de esta. En ese caso se determina la ecuacion que tiene el coeficienteescalado de mayor magnitud Amax y su correspondiente posicion p.

〈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 matrız es singular Un criterio ampliamente acepta-do para la determinacion de la singularidad de una matrız corresponde al hechoque su determinante sea igual o muy cercano a 0.0. Sin embargo este criterio escomputacionalmente bastante complicado de implementar, ya que los metodosque se conocen para calcular el determinante de una matrız dada requieren mu-chas operaciones, mas operaciones que las que se necesitan para resolver unsistema lineal de ecuaciones. Ası que un criterio operacional bastante util paranuestros propositos corresponde al hecho que una matrız singular en el momen-to en el que se este convirtiendo en una matrız triangular superior, va a producirun elemento igual o muy cercano a 0.0 en alguna de las diagonales. Ası que sidurante este procedimiento chequeamos que el valor del pivote Amax es menorque la precision mınima del MATLAB R© (valor para el cual este paquete consi-dera un valor como igual a 0.0, este valor se puede acceder como eps). Si estacondicion se cumple la matrız es singular y el sistema no tiene solucion (o porlo menos para los efectos del presente curso), y la funcion envıa un mensajede error en pantalla y se detiene. Para hacer esto usamos la funcion intrınsecade MATLAB R© error(), con el respectivo mensaje que indica la naturaleza delproblema.

〈Ciclo Principal Gauss: Chequear si es matrız singular 156b 〉 ≡

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

end�

Fragmento referenciado en 155b.

Page 175: Notas Clase1

5.3. ELIMINACION GAUSSIANA CON PIVOTEO 157

5.3.2.3.3. Cambiar Filas La decision de cambiar una fila o no se hace aten-diendo al hecho de la posicion del valor maximo del pivot p (determinado enla seccion 5.3.2.3.1) con respecto a la ecuacion actual k. Si el valor maximose encuentra en una de la ecuaciones por debajo de la ecuacion actual enton-ces se procede a realizar el cambio de forma fısica, es decir, la ecuacion en laposicion p se cambia a la posicion k usando la funcion cambiarFilas (definidaen la seccion 5.3.2.4). Este procedimiento se aplica tanto en la matrız de coefi-cientes A, como en los vectores b (terminos independientes) y s (maximos porfila/ecuacion), y el numero de cambios que se realizan son almacenados en lavariable num cambios

〈Ciclo Principal Gauss: Cambiar las filas 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 Eliminacion Una vez se han cambiado la posicion de lasecuaciones usando el procedimiento de pivoteo tal como se especifico anterior-mente, entonces se puede resolver el sistema de ecuaciones por medio de eli-minacion. Para esto se define el valor del multiplicador y se almacena en lavariable lambda y con este se modifican tanto los valores de los coeficientes(almacenados en la matrız A), como el de los terminos independientes (vectorb). Este procedimiento arroja como resultado la transformacion de la matrız decoeficientes A en una matrız triangular superior. Si ud esta interesado puedeimprimir dicha matrız una vez este procedimiento ha finalizado con el fin decomprobar que lo que se esta diciendo es verdad.

〈Ciclo Principal Gauss: Fase de eliminacion 157b 〉 ≡

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

endend

Fragmento referenciado en 155b.

Page 176: Notas Clase1

158 CAPITULO 5. METODOS DIRECTOS

5.3.2.4. Funcion cambiarFilas

Debido a que un aspecto importante del procedimiento de pivoteo consistenen cambiar las filas, para esta tarea se creo una funcion especial denominadacambiarFilas. Esta funcion tiene las siguientes variables de entrada:

v: vector o matrız sobre la cual se realizara el cambio de filas

i: numero que indica la fila/ecuacion que se va a cambiar

j: numero que indica la fila/ecuacion por la que se va a cambiar la fi-la/ecuacion i

y la variable de salida es la misma variable de entrada v, con lo cual se aseguraque los cambios realizados dentro de esta funcion tengan efectos permanentesen este arreglo (tal como se desea). La implementacion de este procedimientoes muy sencilla y es la siguiente:

1. Almacenamiento de la fila/ecuacio i en la variable temporal temp. Paraeso usamos la notacion de acceso rapido explicada anteriorente.

2. Asignacion de la fila/ecuacion j en la fila i

3. Asignacion de la fila/ecuacion i almacenada en temp en la posicion j."cambiarFilas.m" 158a ≡

function [v]=cambiarFilas(v,i,j)temp = v(i,:);v(i,:) = v(j,:);v(j,:) = temp;�

5.3.2.5. Sustitucion hacia atras

Una vez que A se ha transformado en una matrız triangular superior es po-sible obtener los valores de las incognitas mediante el procedimiento de susti-tucion hacia atras. En este la ultima incognita se puede despejar directamente,y las restantes cantidades desconocidas se puede determinar facilmente con unciclo for.〈Gauss con Pivoteo: Sustitucion hacia atras 158b 〉 ≡

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.

Page 177: Notas Clase1

5.3. ELIMINACION GAUSSIANA CON PIVOTEO 159

5.3.2.6. Calculo del determinante

El determinante de una matrız triangular se puede calcular facilmente comoel producto de los elementos de su diagonal. Para realizar dicha operacion usa-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 obtenerel valor real es necesario tener en cuenta el numero de cambios.

〈Gauss con Pivoteo: Calculo del determinante 159a 〉 ≡

detm=(-1)^(num_cambios)*prod(diag(A));�

Fragmento referenciado en 154a.

5.3.2.7. Asignacion de la salida

Una vez se han completado los procedimientos de interes, la solucion delsistema lineal de ecuaciones se asigna en la variable x y se termina la funcion.

〈Gauss con Pivoteo: Asignacion de salida 159b 〉 ≡

x = b;�

Fragmento referenciado en 154a.

5.3.3. Ejemplos

Ejemplo (Eliminacion gaussiana)

Resuelva mediante eliminacion gaussiana el sistema lineal de ecuaciones re-presentado por la siguiente matrız aumentada: 3 −1 2 12

1 2 3 112 −2 −1 2

Tal como se explico anteriormente la solucion de este sistema se realiza en

dos estapas. La primera corresponde a la fase de eliminacion, mientras que lasegunda consiste en la sustitucion hacia atras. Para la eliminacion de las varia-bles en las columnas respectivas se hace necesario emplear las transformacioneselementales. Con el fin de eliminar las variables de la primera variable se aplican

Page 178: Notas Clase1

160 CAPITULO 5. METODOS DIRECTOS

las siguientes operaciones:

Ec2←Ec2-(1/3)Ec1Ec3←Ec3-(2/3)Ec1

3 −1 2 120 2.333 2.333 7.0040 −1.333 −2.333 −5.999

Para eliminar los coeficientes de la segunda variable se aplica la siguiente ope-racion:

Ec3←Ec3-(1.333/2.333)Ec2

3 −1 2 120 2.333 2.333 7.0040 0 −1.000 −1.999

En este punto se tiene una matrız de coeficientes que es de tipo triangular supe-rior, y por lo tanto se pueden despejar las incognitas mediante el procedimientode sustitucion hacia atras. La primera incognita x3 es igual a:

x3 = −1.999/− 1.000 = 1.999

Para despejar x2 se emplea la ecuacion:

2.333x2 + 2.333x3 = 7.004

de la cual se desprende que:

x2 =7.004− 2.333× 1.999

2.333= 1.004

y para despejar x3 se usa la siguiente ecuacion:

3x1 − x2 + 2x3 = 12

de la cual se obtiene facilmente:

x1 =12− 2x3 + x2

3=

12− 2× (1.999) + 1.004

3.0= 3.000

Page 179: Notas Clase1

5.4. DESCOMPOSICION LU CON PIVOTEO 161

Ejemplo MATLAB R© (Eliminacion gaussiana)

Resuelva en MATLAB R© mediante eliminacion gaussiana el siguente sis-tema lineal de ecuaciones: 3 −1 2

1 2 32 −2 −1

x1

x2

x3

=

12112

Para realizar este procedimiento se define la matrız de coeficientes A:

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

y el correspondiente vector de terminos independientes b:

b=[12 11 2]’;

Para aplicar el procedimiento de eliminacion gaussiana con pivoteo se utilizala funcion definida en la seccion 5.3 denominada gauss pivoteo.m de lasiguiente 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 solucion x:

x =

3.0000

1.0000

2.0000

Esta es la misma solucion obtenida anteriormente cuando se aplico el proce-dimiento de forma manual.

5.4. Descomposicion LU con pivoteo

5.4.1. Fundamentos Conceptuales

Como se vio en la seccion 5.3, la eliminacion gaussiana se emplea para lasolucion de sistemas lineales de ecuaciones A · x = b definiendo la matrız au-mentada del sistema (ecuacion 5.17). La solucion x se obtiene al aplicar las

Page 180: Notas Clase1

162 CAPITULO 5. METODOS DIRECTOS

transformaciones elementales sobre dicho sistema, el cual incluye tanto los va-lores de los coeficientes aij y de los terminos independientes bi. En algunasoportunidades se da el caso que se requiere solucionar el sistema A ·x = b paradiferentes vectores bi. Si esto se fuera a resolver usando eliminacion gaussianase hace necesario cada vez modificar la matrız aumentada del sistema (ecuacion5.17) resultando de esta forma en un procedimiento ineficiente a nivel compu-tacional. En este caso resultarıa de interes contar con un procedimiento queactuara solamente sobre la matrız de coeficientes A de tal forma que la modi-ficacion de la misma solo se realizara una vez. Este procedimiento se conocecomo descomposicion LU y se define a continuacion:Definicion 24

Sea A una matrız cuadrada. La descomposicion LUde A es el procedimientomediante el cual se expresa dicha matrız como el producto de una matrıztriangular inferior L y una matrız triangular superior U de la siguiente for-ma:

A = L ·U (5.26)

y donde el tamano de L y U es el mismo de A.

El procedimiento de descomposicion LU se puede realizar por medio de eli-minacion gaussiana, de tal forma que la estructura de la funcion que la imple-mente es similar a la de gauss pivoteo.m explicada anteriormente, ya que endicho procedimiento la matrız de coeficientes A

A =

a11 a12 a13 a14

a21 a22 a23 a24

a31 a32 a33 a34

a41 a42 a43 a44

(5.27)

se convierte en una matrız triangular superior U:

U =

a

′11 a

′12 a

′13 a

′14

0 a′22 a

′23 a

′24

0 0 a′33 a

′34

0 0 0 a′44

(5.28)

La matrız triangular inferior L de esta descomposicion se obtiene a partir delos multiplicadores definidos en el procedimiento de eliminacion de variables mordenandolos de la siguiente forma:

L =

1 0 0 0

m21 1 0 0m31 m32 1 0m41 m42 m43 1

(5.29)

donde cada uno de los multiplicadores se define de la siguiente forma:

mij = aij/aii (5.30)

Page 181: Notas Clase1

5.4. DESCOMPOSICION LU CON PIVOTEO 163

5.4.2. Procedimineo de Descomposicion LU

La estructura de este procedimiento se presenta a continuacion:

"lu_pivoteo.m" 163a ≡

〈Descomposicion LU con Pivoteo: Declaracion de la funcion 163b 〉〈Descomposicion LU con Pivoteo: Inicializacion de variables 164a 〉〈Descomposicion LU con Pivoteo: Determinar valores para escalamiento 164b 〉〈Descomposicion LU con Pivoteo: Ciclo Principal 165a 〉〈Descomposicion LU con Pivoteo: Asignacion de resultados 167a 〉

5.4.2.1. Declaracion de la funcion

El nombre seleccionado para implementar el procedimiento de descomposi-cion LU en MATLAB R© es lu pivoteo.m y el argumento de entrada correspondea la matrız de coeficientes A. Esta matrız es de tamano n × n. Los argumentosde salida son los siguientes:

L, U Matrız triangular inferior y matrız triangular superior resultado de ladescomposicion. Ambas de tamano n× n.

perm vector en donde se almacenan los cambios en la posicion de lasecuaciones realizados durante la descomposicion.

Esta ultima variable va a ser de gran importancia ya que al resolver el siste-ma lineal de ecuaciones se hace necesario organizar la solucion con el fin quecorresponda a las variables originales.

〈Descomposicion LU con Pivoteo: Declaracion de la funcion 163b 〉 ≡

function [L,U,perm] = lu_pivoteo(A)�

Fragmento referenciado en 163a.

5.4.2.2. Inicializacion de Variables

Para continuar con el procedimiento de descomposicion se hace necesariodefinir algunas variables de interes:

n: corresponde al numero de ecuaciones que forman el sistema de interes

L, U : son las matrices triangulares en donde se almacenaran los resultadosde la descomposicion. En este caso se inicializan con valores iguales a 0.0.Ası mismo la primera fila de la matrız U se inicializa con los valores de laprimera fila de la matrız de coeficientes A.

Page 182: Notas Clase1

164 CAPITULO 5. METODOS DIRECTOS

s es un vector en donde se almacenaran los valores maximos de cada fila(ecuacion) para realizar el correspondiente escalamiento. Este vector esde tamano n× 1 y se inicializa con valores iguales a 0.0.

perm es un vector en donde se almacenaran los cambios en las posicionesde las ecuaciones del sistema original. Este vector se inicializa en valoresque van desde 1 hasta n y por lo tanto su tamano es de n× 1.

〈Descomposicion LU con Pivoteo: Inicializacion de variables 164a 〉 ≡

[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 seccion 5.3.2.2 es necesario determinar los valores maxi-mos en cada ecuacion o fila de la matrız de coeficientes. Esto se hace medianteun ciclo for y la aplicacion de las funciones intrınsecas de MATLAB R© max() yabs().

〈Descomposicion LU con Pivoteo: Determinar valores para escalamiento 164b 〉 ≡

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 descomposicion sigue exactamente la mis-ma estructura que el ciclo principal de la eliminacion gaussiana (seccion 5.3.2.3),la cual es la siguiente:

Page 183: Notas Clase1

5.4. DESCOMPOSICION LU CON PIVOTEO 165

〈Descomposicion LU con Pivoteo: Ciclo Principal 165a 〉 ≡

for k=1:n-1;〈Ciclo Principal Descomposicion LU con Pivoteo: determinar el Pivot 165b 〉〈Ciclo Principal Descomposicion LU con Pivoteo: chequear si es matrız singular 165c 〉〈Ciclo Principal Descomposicion LU con Pivoteo: cambiar las filas 166a 〉〈Ciclo Principal Descomposicion LU con Pivoteo: fase de eliminacion 166b 〉

end;�

Fragmento referenciado en 163a.

5.4.2.4.1. Determinar el Pivot La determinacion del pivot es exactamenteigual que para el caso de la eliminacion gaussiana (ver seccion 5.3.2.3.1)

〈Ciclo Principal Descomposicion LU con Pivoteo: determinar el Pivot 165b 〉 ≡

[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 matrız singular El procedimiento para determi-nar si la matrız A es singular es el mismo que para la eliminacion gaussiana (verseccion 5.3.2.3.2)

〈Ciclo Principal Descomposicion LU con Pivoteo: chequear si es matrız singular 165c 〉 ≡

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

end�

Fragmento referenciado en 165a.

5.4.2.4.3. Cambiar Filas El procedimiento para cambiar filas es similar alempleado en la eliminacion gaussiana, ya que usa la misma funcion cambiarFi-las() (seccion 5.3.2.4). En este caso particular se lleva un registro de las filas(ecuaciones) cambiadas en el vector perm. Esto es de vital importancia en losprocedimientos de inversion de matrices.

Page 184: Notas Clase1

166 CAPITULO 5. METODOS DIRECTOS

〈Ciclo Principal Descomposicion LU con Pivoteo: cambiar las filas 166a 〉 ≡

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 eliminacion

El procedimiento de eliminacion es similar al emplado en la funcion gauss-Piv.m (ver seccion 5.3.2.3.4). En este caso particular el valor del multiplicadorlambda es almacenado en la porcion triangular inferior de la matrız A.

〈Ciclo Principal Descomposicion LU con Pivoteo: fase de eliminacion 166b 〉 ≡

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;

endend

Fragmento referenciado en 165a.

5.4.2.6. Asignacion de Resultados

Una vez finalizada la fase de eliminacion, la matrız U corresponde a la matrıztriangular superior almacenada en A y L se encuentra conformada por los valo-res de los multiplicadores lambda. La matrız U se obtiene al extraer la porciontriangular superior de la matrız A por medio de la funcion de MATLAB R© triu()y la porcion inferior con tril(). Ası mismo se impone la condicion que la diagonalde L este formada por 1.0, lo cual se realizar por medio de un ciclo for.

Page 185: Notas Clase1

5.4. DESCOMPOSICION LU CON PIVOTEO 167

〈Descomposicion LU con Pivoteo: Asignacion de resultados 167a 〉 ≡

U=triu(A);L=tril(A,-1);for i=1:n;

L(i,i)=1.0; %Aproximacion de Doolitleend;�

Fragmento referenciado en 163a.

5.4.3. Solucion de sistemas lineales con descomposicion LU

Una vez realizada la descomposicion LU se hace necesario implementar elprocedimiento de solucion de sistemas lineales de ecuaciones empleando esteimportante metodo. Esto se hace por medio de la funcion LUSolucion.m, cuyaestructura es la siguiente:

"LUSolucion.m" 167b ≡

〈 LUSolucion: Declaracion de la funcion 168a 〉〈 LUSolucion: Inicializacion de variables 168b 〉〈 LUSolucion: Descomposicion LU 168c 〉〈 LUSolucion: Calculo del determinante 169a 〉〈 LUSolucion: Organizacion por pivoteo 169b 〉〈 LUSolucion: Sustitucion hacia adelante 169c 〉〈 LUSolucion: Sustitucion hacia atras 170 〉

5.4.3.1. Declaracion de la funcion

Esta funcion tiene como variables de entrada:

A matrız de coeficientes del sistema lineal de ecuaciones. Su tamano es den× n.

b vector con los terminos independientes del sistema lineal de ecuaciones.Su tamano es de n× 1.

Las variables de salida de la funcion LUSolucion.m son las siguientes:

x vector de tamano n× 1 con la solucion del sistema lineal de ecuaciones

detm valor del determinante de la matrız A

perm vector con las posiciones actuales de las ecuaciones originales.

Page 186: Notas Clase1

168 CAPITULO 5. METODOS DIRECTOS

〈 LUSolucion: Declaracion de la funcion 168a 〉 ≡

function [x,detm,perm]=LUSolucion(A,b)�

Fragmento referenciado en 167b.

5.4.3.2. Inicializacion de variables

Con el fin de proseguir con la solucion del sistema lineal de ecuaciones sehace necesario definir e inicializar ciertas varibles:

n: numero de ecuaciones del sistema. Se calcula usando la funcion intrınse-ca de MATLAB R© length.

x: vector con la solucion del sistema lineal de ecuaciones. Se inicializa en0.0.

d: vector de tamano n× 1 en el que se va a almacenar la solucion interme-dia del sistema de ecuaciones.

〈 LUSolucion: Inicializacion de variables 168b 〉 ≡

n=length(b);x=zeros(n,1);d=zeros(n,1);�

Fragmento referenciado en 167b.

5.4.3.3. Descomposicion LU

Para realizar la descomposicion LU de la matrız A se emplea la funcion Des-composicion LU con Pivoteo definida en la seccion anterior. Como resultado deinvocar esta funcion se obtienen las matrices triangulares superior U e inferiorL y el vector permcon la posicion de las ecuaciones.

〈 LUSolucion: Descomposicion LU 168c 〉 ≡

[L U perm]=lu_pivoteo(A);�

Fragmento referenciado en 167b.

5.4.3.4. Calculo del determinante

El determinante se calcula como el producto de los terminos que se encuen-tran sobre la diagonal de la matrız triangular superior U obtenida en la des-

Page 187: Notas Clase1

5.4. DESCOMPOSICION LU CON PIVOTEO 169

composicion LU, ya que la matrız L tiene solamente 1.0 en la diagonal. Paraesto usamos la funcion diag() para extraer la diagonal y prod() para calcular suproducto.

〈 LUSolucion: Calculo del determinante 169a 〉 ≡

detm=prod(diag(U));�

Fragmento referenciado en 167b.

5.4.3.5. Organizacion por el pivoteo

Este es uno de los aspectos mas importantes a tener en cuenta si se va asolucionar un sistema lineal de ecuaciones con el metodo LU. Debido a que elorden original de las ecuaciones en la matrız A fue cambiado por el pivoteo,se hace necesario cambiar tambien el orden de los terminos independientesalmacenados en el vector b. Los valores ordenados se almacenan en el vector d.

〈 LUSolucion: Organizacion por pivoteo 169b 〉 ≡

for i=1:n;d(i)=b(perm(i));

end;�

Fragmento referenciado en 167b.

5.4.3.6. Sustitucion hacia adelante

Con los terminos independientes ya en el orden correcto se procede a la solu-cion del sistema lineal de ecuaciones en dos fases. La primera es una sustitucionhacia adelante usando el vector d definido anteriormente y la matrız triangularinferior L obtenida de la descomposicion LU. La solucion parcial de este siste-ma de ecuaciones se almacena en el vector d para su uso posterior. A nivel deecuacion esto se representa:

L · d = b (5.31)

〈 LUSolucion: Sustitucion hacia adelante 169c 〉 ≡

for k=2:n;d(k,1)=d(k,1)-L(k,1:k-1)*d(1:k-1);

end;�

Fragmento referenciado en 167b.

Page 188: Notas Clase1

170 CAPITULO 5. METODOS DIRECTOS

5.4.3.7. Sustitucion hacia atras

Ya habiendo solucionado el sistema lineal de ecuaciones planteado con lamatrız triangular inferior L, ahora se plantea un nuevo sistema lineal de ecua-ciones dado por:

U · x = d (5.32)

lo cual se hace mediante una sustitucion hacia atras. En este caso particular seutilizan como terminos independientes los valores almacenados en el vector d.La solucion de este sistema lineal de ecuaciones se almacena en el vector x yconstituye la solucion del sistema original A · x = b.

〈 LUSolucion: Sustitucion hacia atras 170 〉 ≡

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.

Page 189: Notas Clase1

5.4. DESCOMPOSICION LU CON PIVOTEO 171

5.4.4. Ejemplos

Ejemplo MATLAB R© (Descomposicion LU de una matrız)

Realice la descomposicion LU de la siguiente matrız: 3 −1 21 2 32 −2 −1

Para realizar este procedimiento se emplea la funcion lu pivoteo.m definidaen la seccion 5.4.3, y la cual requiere como parametro de entrada la matrıza descomponer que en este caso es:

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

y la descomposicion se realiza especificando la siguiente instruccion:

[L U perm]=lu_pivoteo(A)

Los resultados de dicha descomposicion corresponden a la matrız triangularsuperior U:

U =

3.0000 -1.0000 2.0000

0 2.3333 2.3333

0 0 -1.0000

a la matrız triangular inferior L dada por:

L =

1.0000 0 0

0.3333 1.0000 0

0.6667 -0.5714 1.0000

y al vector de permutaciones perm que indica la posicion final de cada unade 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 fuenecesario realizar el procedimiento de pivoteo.

Page 190: Notas Clase1

172 CAPITULO 5. METODOS DIRECTOS

Ejemplo MATLAB R© (Solucion usando descomposicion LU)

Solucionar en MATLAB R© el sistema lineal de ecuaciones: 3 −1 21 2 32 −2 −1

x1

x2

x3

=

12112

empleando la descomposicion LU.

Para realizar este procedimiento en MATLAB R© se hace necesario definirla matrız de coeficientes A:

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

y el correspondiente vector de terminos independientes b:

b=[12 11 2]’;

La funcion que implementa el procedimiento de solucion de sistemas linealesde ecuaciones por medio de la descomposicion LU se denomina LUSolucion.my esta funcion se emplea de la siguiente forma:

[x,detm,perm]=LUSolucion(A,b)

Los resultados obtenidos corresponden al vector solucion x:

x =

3.0000

1.0000

2.0000

al valor del determinante detm de la matrız de coeficientes:

detm =

-7.0000

y al vector de permutaciones perm:

perm =

1

2

3

Page 191: Notas Clase1

5.5. INVERSA DE UNA MATRIZ 173

5.5. Inversa de una matrız

5.5.1. Fundamentos Conceptuales

Definicion 25

Sea A una matrız de n× n. La matrız inversa de A, denotada como A−1 esuna matrız B de n× n para la cual se cumple que:

A×B = In

B×A = In(5.33)

donde In es la matrız identidad de tamano n× 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 tamano n× n, tienen inversa).Un resultado de algebra lineal prueba que la matriz inversa A−1 existe si y solosi el determinante de A es distinto de cero.

Para desarrollar un procedimiento para la obtencion de la matrız inversa se hacenecesario recurrir a la definicion dada por la ecuacion 5.33. De esta ecuacion sepuede apreciar que el calculo de la inversa de A es equivalente a solucionar nsistemas de ecuaciones dados por:

A · x = bi, i = 1, 2, . . . , n (5.34)

donde los bi corresponden a cada una de las columnas de In. El vector conlos valores de las incognitas en cada uno de estos casos, corresponde a cadauna de las columnas de la matrız inversa a determinar. Debido a que la matrızde coeficientes de este sistema de ecuaciones no cambia, se puede emplear elprocedimiento de descomposicion LU para el calculo de la inversa sin que existamucho esfuerzo computacional. En consecuencia, la determinacion de la matrızinversa A−1 se divide en dos etapas:

1. Descomposicion LU de la matrız A

2. Solucion de los sistemas de ecuaciones A · x = bi

La fase de descomposicion se determinan las matrices L y U mediante algunode los procedimientos de descomposicion estudiados en la seccion 5.4

5.5.2. Calculo de la Matrız Inversa

El procedimiento para la determinacion de la matrız inversa tiene la siguien-te estructura:

Page 192: Notas Clase1

174 CAPITULO 5. METODOS DIRECTOS

"matInv.m" 174a ≡

〈 InversaLU: Declaracion de la funcion 174b 〉〈 InversaLU: Chequear si es matrız cuadrada 174c 〉〈 InversaLU: Inicializacion de la matrız 175a 〉〈 InversaLU: Ciclo Principal 175b 〉

5.5.2.1. Declaracion de la funcion

En este fragmento se declara la funcion matInv.m. La variable de entrada deesta funcion corresponde a la matrız A de la cual se quiere obtener la inversa.

〈 InversaLU: Declaracion de la funcion 174b 〉 ≡

function [AI]=matInv(A)�

Fragmento referenciado en 174a.

5.5.2.2. Chequear si es matrız cuadrada

Para calcular la matrız inversa se requiere que A sea una matrız cuadrada.Para determinar si esto es cierto se determina el numero de filas y columnas deesta matrız, y se almacenan en las variables nrow y ncol. Si estos valores soniguales la matrız es cuadrada, si no es asi, la funcion emite un mensaje de errory se detiene. El tamano de la matrız se almacena en la variable n para su uso enprocedimientos posteriores.

〈 InversaLU: Chequear si es matrız cuadrada 174c 〉 ≡

[nrow,ncol]=size(A);if(nrow ~= ncol) ;

error(’La matriz no es cuadrada’);endn=nrow;�

Fragmento referenciado en 174a.

5.5.2.3. Inicializacion de la matrız

La matrız inversa se va a almacenar en una matrız denominada AI, la cualen este caso se inicializa como una matrız identidad, usando la funcion eye.

Page 193: Notas Clase1

5.5. INVERSA DE UNA MATRIZ 175

〈 InversaLU: Inicializacion de la matrız 175a 〉 ≡

AI=eye(n,n);�

Fragmento referenciado en 174a.

5.5.2.4. Ciclo Principal

El procedimiento de solucion de los sistemas lineales de ecuaciones se en-cuentra implementado mediante un ciclo for, cuya estructura es la siguiente:

〈 InversaLU: Ciclo Principal 175b 〉 ≡

for i=1:n;〈Ciclo Principal Inversa: Solucion sistema lineal 175c 〉〈Ciclo Principal Inversa: Almacenamiento solucion 175d 〉

end;

Fragmento referenciado en 174a.

5.5.2.4.1. Solucion del sistema lineal De acuerdo a lo explicado en la sec-cion 5.5 (ecuaciones (5.34)) el sistema lineal de ecuaciones se soluciona usandodescomposicion LU. La solucion de este se almacena en la variable sol, y d co-rresponde al determinante de la matrız A.

〈Ciclo Principal Inversa: Solucion sistema lineal 175c 〉 ≡

[sol,d]=LUSolucion(A,AI(:,i));�

Fragmento referenciado en 175b.

5.5.2.4.2. Almacenamiento de la solucion Como se explico en la seccion5.5 la solucion del sistema lineal de ecuaciones corresponde a una columna dela matrız inversa. Esta solucion se almacena en la respectiva columna de AI.

〈Ciclo Principal Inversa: Almacenamiento solucion 175d 〉 ≡

AI(:,i)=sol;�

Fragmento referenciado en 175b.

Page 194: Notas Clase1

176 CAPITULO 5. METODOS DIRECTOS

5.5.3. Ejemplo

Ejemplo MATLAB R© (Calculo de la inversa de una matrız)

Determine la inversa de la siguiente matrız: 3 −1 21 2 32 −2 −1

empleando MATLAB R© .

Para avanzar con el procedimiento de determinarcion de la matrız inversase hace necesario definir la matrız de interes, lo cual se hace de la siguienteforma:

>> A=[3 -1 2;1 2 3;2 -2 -1];

La funcion que permite calcular la matrız inversa se denomina matInv.m yse encuentra definida en la seccion 5.5.2. Esta funcion se usa de la siguienteforma:

>> [AI]=matInv(A)

de tal forma que se obtiene la matrız inversa dada por:

AI =

-0.5714 0.7143 1.0000

-1.0000 1.0000 1.0000

0.8571 -0.5714 -1.0000

Para corroborar si el resultado obtenido es correcto se puede realizar el pro-ducto matricial entre A y la matrız inversa obtenida AI:

>> A*AI

ans =

1.0000 0 -0.0000

-0.0000 1.0000 0

-0.0000 0.0000 1.0000

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

Page 195: Notas Clase1

5.6. DESCOMPOSICION DE CHOLESKY 177

5.6. Descomposicion de Cholesky

5.6.1. Fundamentos Conceptuales

Exise otra metodologıa de descomposicion alternativa al procedimiento LUque se aplica sobre matrıces que cumplan las siguientes caracterısticas:

Ser simetricas

Ser definidas positivas.

La simetrıa de una matrız se explico en la definicion 14, y la segunda carac-terıstica se define a continuacion:Definicion 26

Sea A una matrız cuadrada. Se dice que A es definida positiva si se cumple:

xTAx > 0, ∀x 6= 0 (5.35)

Esto es equivalente a afirmar que todos los valores propios de A son positi-vos.

El procedimiento de descomposicion de Cholesky se puede definir de la si-guiente forma:

Definicion 27

Si A es una matrız simetrica y definida positiva, entonces la descomposicionde Cholesky permite expresar a A de la siguiente manera:

A = L · LT (5.36)

donde L es una matrız triangular inferior (ver seccion 5.1.1.6)

Una caracterıstica muy importante de esta descomposicion es que es unica,esto es, dada una matrız A que sea simetrica y definida positiva, existe solo unamatrız L para la cual se cumple la ecuacion 5.36. Esta matrız tiene en la diago-nal valores positivos.

Al igual que la descomposicion LU ( ver seccion 5.4 ), la descomposicion deCholesky se puede emplear para la solucion de sistemas lineales de ecuacio-nes de la forma A · x = b. Para esto se realiza la descomposicion de CholeskyA = L · LT , se resuelve el sistema L · d = b y luego se resuelve el segundosistema lineal dado por LT · x = d, con lo cual se obtiene el vector solucion x.

Para establecer el procedimiento de la descomposicion de Cholesky, se va a em-

Page 196: Notas Clase1

178 CAPITULO 5. METODOS DIRECTOS

plear un ejemplo sencillo con una matrız de 3× 3 con lo cual se tiene: a11 a12 a13

a21 a22 a23

a31 a32 a33

=

l11 0 0l21 l22 0l31 l32 l33

· l11 l12 l13

0 l22 l230 0 l33

(5.37)

Para determinar los coeficientes lij se realiza el producto entre las matricesdel termino derecho de la ecuacion anterior para obtener: a11 a12 a13

a21 a22 a23

a31 a32 a33

=

l211 l11l21 l11l31l11l21 l221l

222 l21l31 + l22l32

l11l31 l21l31 + l22l32 l231 + l232 + l233

(5.38)

Igualando los elementos de A y L · LT se obtienen 6 ecuaciones con 6 incogni-tas, las cuales se pueden simplificar si se resuelven en cierto orden. Esto quieredecir, que es necesario definir si las incognitas se van a despejar por filas o porcolumnas. En este caso particular, las incognitas se van a despejar por columnasde tal forma que para la primera columna se tiene:

a11 = l211 l11 =√

a11

a21 = l11l21 l21 =a21/l11

a31 = l11l31 l31 =a31/l11

(5.39)

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(ecuacion 5.39):

a22 = l221 + l222 l22 =√

a22 − l221

a32 = l21l31 + l22l32 l32 =(a32 − l21l31)/l22(5.40)

De igual forma los valores de las incognitas en la tercera columna van adepender de los valores en las columnas anteriores (ecuaciones 5.39 y 5.40):

a33 = l231 + l232 + l233 l33 =√

a33 − l231 − l232 (5.41)

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

(L · LT)ij = li1lj1 + li2lj2 + . . . + lijljj =

j∑k=1

likljk, i ≤ j (5.42)

Page 197: Notas Clase1

5.6. DESCOMPOSICION DE CHOLESKY 179

E igualando este termino al elemento correspondiente de A se tiene:

aij =

j∑k=1

likljk, 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 continua en las siguientes columnas, las coeficientes desconocidos enla ecuacion 5.43 ya se han calculado, con lo cual queda:

aij =

j−1∑k=1

likljk + lijljj (5.45)

Si i = j (termino diagonal), la solucion es:

ljj =

√√√√ajj −j−1∑k=1

l2jk, j = 2, 3, . . . , n (5.46)

y para los terminos no diagonales:

lij =

(aij −

j−1∑k=1

likljk

)/ljj,

j = 2, 3, . . . , n,

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

(5.47)

5.6.2. Descomposicion de Cholesky

La funcion que implementa la descomposicion de Cholesky se denomina Cho-lesky.m y su estructura es la siguiente:

"Cholesky.m" 179 ≡

〈Cholesky: Declaracion de la funcion 180a 〉〈Cholesky: Inicializacion de variables 180b 〉〈Cholesky: Ciclo Principal 181a 〉〈Cholesky: Asignacion de resultados 182a 〉

Page 198: Notas Clase1

180 CAPITULO 5. METODOS DIRECTOS

5.6.2.1. Declaracion de la funcion

La funcion Cholesky.m tiene como variable de entrada la matrız A, de tamanon×n, que ademas debe ser una matrız simetrica y definida positiva. Esta funciontiene como salida una matrız triangular inferior L, de tamano n×n para la cualse cumple:

A = L · LT (5.48)

〈Cholesky: Declaracion de la funcion 180a 〉 ≡

function [L]=Cholesky(A)�

Fragmento referenciado en 179.

5.6.2.2. Inicializacion de variables

En este caso particular se chequea si la matrız es cuadrada, para lo cual seemplea la funcion intrınseca size(). Esta funcion devuelve el numero de filas ycolumnas de la matrız A y estos valores se almacenan en las variables nrow yncol. Se chequea que nrow sea igual a ncol y si no es ası el programa imprimeun mensaje de error (usando la funcion error()) y se detiene. Si la matrız escuadrada se define la variable n como el numero de filas.

〈Cholesky: Inicializacion de variables 180b 〉 ≡

[nrow ncol]=size(A);if(nrow ~= ncol) ;

error(’La matriz debe ser de cuadrada’);endn=nrow;�

Fragmento referenciado en 179.

5.6.2.3. Ciclo principal

En esta parte se realiza la descomposicion de Cholesky como tal. Este proce-dimiento se encuentra dividido en dos partes: Calculo de los elementos fuera dela diagonal para luego determinar los valores que van en la diagonal.

Page 199: Notas Clase1

5.6. DESCOMPOSICION DE CHOLESKY 181

〈Cholesky: Ciclo Principal 181a 〉 ≡

for k=1:n;〈Ciclo Principal Cholesky: Asignacion elementos fuera diagonal 181b 〉〈Ciclo Principal Cholesky: Asignacion elementos diagonal 181c 〉

end;�

Fragmento referenciado en 179.

5.6.2.3.1. Asignacion de elementos fuera de la diagonal Para determinarlos valores que estan fuera de la diagonal se emplea la ecuacion (5.47), lo cualqueda implementado de la siguiente forma:

〈Ciclo Principal Cholesky: Asignacion elementos fuera diagonal 181b 〉 ≡

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. Asignacion de elementos de la diagonal Para calcular los ele-mentos de la diagonal se usa la ecuacion 5.46. En este caso particular se hacenecesario determinar que el valor al que se le va a tomar la raız cuadrada sepositivo, lo cual implica que la matrız A sea definida positiva. Para hacer estoel valor dentro de la raız se almacena en la variable test y se determina si estevalor es menor al 0.0 del MATLAB R© (cuyo valor corresponde a eps). En el casoque la esta condicion no se cumpla, la funcion imprime en pantalla un mensajede error y se detiene.

〈Ciclo Principal Cholesky: Asignacion elementos diagonal 181c 〉 ≡

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.

Page 200: Notas Clase1

182 CAPITULO 5. METODOS DIRECTOS

5.6.2.4. Asignacion de Resultados

Los resultados de la descomposicion se almacenaban de forma temporal enla matrız A, de tal forma que se extrae la matrız triangular inferior L usando lafuncion intrınseca tril() y se termina el procedimiento.

〈Cholesky: Asignacion de resultados 182a 〉 ≡

L=tril(A);�

Fragmento referenciado en 179.

5.6.3. Solucion de sistemas de ecuaciones por medio de des-composicion de Cholesky

La funcion para realizar la solucion de sistemas de ecuaciones lineales pormedio de la descomposicion de Cholesky se denomina CholeskySol.m y su es-tructura es la siguiente:

"CholeskySol.m" 182b ≡

〈CholeskySol: Declaracion de la funcion 182c 〉〈CholeskySol: Inicializacion de variables 183a 〉〈CholeskySol: Descomposicion de Cholesky 183b 〉〈CholeskySol: Sustitucion hacia adelante 183c 〉〈CholeskySol: Sustitucion hacia atras 184 〉

5.6.3.1. Declaracion de la funcion

Las variables de entrada de esta funcion corresponden a la matrız de coefi-cientes A (n × n) y al vector de terminos independientes b (n × 1) y la funciondevuelve un vector x (n× 1) con la solucion del sistema.

〈CholeskySol: Declaracion de la funcion 182c 〉 ≡

function [x]=CholeskySol(A,b)�

Fragmento referenciado en 182b.

5.6.3.2. Inicializacion de variables

En este caso particular es necesario definir las siguientes variables:

Page 201: Notas Clase1

5.6. DESCOMPOSICION DE CHOLESKY 183

n: numero de ecuaciones del sistema lineal. Este se obtiene mediante lafuncion length() aplicada en el vector b

d: vector de n × 1 en donde se va a almacenar la solucion temporal delsistema lineal de ecuaciones.

〈CholeskySol: Inicializacion de variables 183a 〉 ≡

n=length(b);d=zeros(n,1);�

Fragmento referenciado en 182b.

5.6.3.3. Descomposicion de Cholesky

La descomposicion de Cholesky se realiza por medio de la funcion definidaen la seccion anterior. Esta funcion devuelve la matrız triangular inferior L y eneste caso particular, la matrız triangular superior U se define como la trasnpues-ta de L.

〈CholeskySol: Descomposicion de Cholesky 183b 〉 ≡

L=Cholesky(A);U=L’;�

Fragmento referenciado en 182b.

5.6.3.4. Sustitucion hacia adelante

Con la matrız triangular inferior se plantea un sistema lineal de ecuacionescomo el de la ecuacion 5.31. Nuevamente la solucion de este sistema se alma-cena en el vector d.

〈CholeskySol: Sustitucion hacia adelante 183c 〉 ≡

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.

Page 202: Notas Clase1

184 CAPITULO 5. METODOS DIRECTOS

5.6.3.5. Sustitucion hacia atras

Una vez se ha obtenido la solucion parcial d, se plantea un nuevo sistemalineal de ecuaciones como el descrito en la ecuacion 5.32. La solucion de estenuevo sistema se almacena en el vector x y constituye la solucion del sistemalineal de ecuaciones.

〈CholeskySol: Sustitucion hacia atras 184 〉 ≡

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.

Page 203: Notas Clase1

5.6. DESCOMPOSICION DE CHOLESKY 185

5.6.4. Ejemplos

Ejemplo MATLAB R© (Descomposicion de Cholesky)

Realice en MATLAB R© la descomposicion de Cholesky de la siguientematrız:

A =

4 −2 2−2 2 −42 −4 11

Para realizar este procedimiento es necesario definir la matrız A lo cual sepuede hacer de la siguiente forma:

>>A=[4 -2 2;-2 2 -4;2 -4 11];

La descomposicion de Cholesky se encuentra implementada en la funcionCholesky.m explicada en la seccion 5.6.1, y para este caso particular se rea-liza de la siguiente forma:

>>L=Cholesky(A);

El resultado corresponde a una matrız triangular inferior L dada por:

L =

2 0 0

-1 1 0

1 -3 1

La matrız triangular superior corresponde a la transpuesta de la matrız ob-tenida anteriormente, con lo cual se tiene:

>>U=L’;

Con el fin de corroborar si la descomposicion fue realizada correctamente,calculamos el producto de la matrız triangular inferior y la superior:

>> L*U

ans =

4 -2 2

-2 2 -4

2 -4 11

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

Page 204: Notas Clase1

186 CAPITULO 5. METODOS DIRECTOS

Ejemplo MATLAB R© (Solucion de un sistema lineal de ecuaciones con Desc. de Cholesky)

Resuelva en MATLAB R© el siguiente sistema lineal de ecuaciones: 4 −2 2−2 2 −42 −4 11

x1

x2

x3

=

111

La matrız de coeficientes de este sistema se define de la siguiente forma:

>>A=[4 -2 2;-2 2 -4;2 -4 11];

y el vector con los terminos independientes:

>>b=ones(3,1);

El procedimiento de solucion de sistemas lineales de ecuaciones usando elmetodo de Cholesky se explica en la seccion 5.6.3 y se encuentra implemen-tado en la funcion CholeskySol.m . Para este caso particular la solucion delsistema se puede obtener de la siguiente forma:

>>[x]=CholeskySol(A,b)

en donde el vector solucion x esta dado por:

>> x

x =

6.0000

16.5000

5.0000

Page 205: Notas Clase1

5.7. MATRICES DE COEFICIENTES BANDEADAS 187

5.7. Matrices de Coeficientes Bandeadas

5.7.1. Sistemas Tridiagonales

5.7.1.1. Fundamentos conceptuales

Un sistema de ecuaciones tridiagonal es aquel cuya matrız de coeficientes Atiene la siguiente forma:

A =

d1 e1 0 0 · · · 0c2 d2 e2 0 · · · 00 c3 d3 e3 · · · 00 0 c4 d4 · · · 0...

......

... . . . ...0 0 · · · 0 cn−1 dn

(5.49)

lo cual implica que la matrız A es de tipo disperso. Con el fin de facilitar ladefinicion del sistema lineal de ecuaciones y para la determinacion de su corres-pondiente solucion, la definicion de este tipo de sistemas se hace especificandotres vectores:

c =

c1

c2...

cn−1

d =

d1

d2...

dn−1

dn

e =

e1

e2...

en−1

(5.50)

Para la solucion del sistema lineal de ecuaciones en donde la matrız de coe-ficientes A es de tipo tridiagonal, se va a emplear una version modificada dela descomposicion LU (seccion 5.4.3). Recordemos que este procedimiento con-siste en realizar la eliminacion de variables que se encuentren por debajo delelemento del pivot, que en este caso particular corresponde a solamente un unicovalor (con lo cual el procedimiento es muy eficiente a nivel computacional). Esteprocedimiento se puede expresar de la siguiente forma:

Fila (k)← Fila (k)−multiplicador× Fila (k-1) (5.51)

donde el multiplicador esta dado por:

multiplicador = (ck−1/dk−1) (5.52)

Los diferentes valores de multiplicadores se almacenan en el vector c en la posi-cion ck−1 conh lo cual se define la matrız L:

ck−1 = (ck−1/dk−1) (5.53)

Page 206: Notas Clase1

188 CAPITULO 5. METODOS DIRECTOS

5.7.1.2. Descomposicion LU de sistemas tridiagonales

La funcion que implementa este procedimiento se denomina LUdec3.m y tie-ne la siguiente estructura:

"LUdec3.m" 188a ≡

〈 LU Sistemas Tridiagonales: Declaracion funcion 188b 〉〈 LU Sistemas Tridiagonales: Inicializacion variables 188c 〉〈 LU Sistemas Tridiagonales: Ciclo principal 189a 〉

5.7.1.2.1. Declaracion de la funcion Las variables de entrada de esta fun-cion son los vectores c,d y e que almacenan los valores que definen la matrıztridiagonal (ecuacion 5.50). Las variables de salida de esta funcion son los mis-mos vectores de entrada que han sido modificados y por lo tanto la funcionqueda definida de la siguiente forma:

〈 LU Sistemas Tridiagonales: Declaracion funcion 188b 〉 ≡

function [c,d,e]=LUdec3(c,d,e)�

Fragmento referenciado en 188a.

5.7.1.2.2. Inicializacion de variables Para realizar la descomposicion LUde una matrız tridiagonal es necesario determinar el numero de ecuaciones queconforman dicho sistema, variable que se va a almacenar en n:

〈 LU Sistemas Tridiagonales: Inicializacion variables 188c 〉 ≡

n=length(d);�

Fragmento referenciado en 188a.

5.7.1.2.3. Ciclo principal La descomposicion LU de una matrız tridiagonalse implementa mediante un ciclo for, dentro del cual se define el valor del mul-tiplicador (ecuacion 5.52) que en este caso particular se almacena en la variablelambda (ecuacion 5.53). Este lambda se almacena en el vector c, mientras queel resultado del paso de la eliminacion se almacena en el vector d:

Page 207: Notas Clase1

5.7. MATRICES DE COEFICIENTES BANDEADAS 189

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

5.7.1.3. Solucion de sistemas tridiagonales

Una vez se ha realizado la descomposicion LU de la matrız tridiagonal con lafuncion LUdec3 es posible avanzar hacia la solucion del sistema lineal de ecua-ciones. Este es el objetivo de la funcion LUsol3 cuya estructura es la siguiente:

"LUsol3.m" 189b ≡

〈Solucion Sistemas Tridiagonales: Declaracion funcion 189c 〉〈Solucion Sistemas Tridiagonales: Inicializacion variables 190a 〉〈Solucion Sistemas Tridiagonales: Descomposicion LU 190b 〉〈Solucion Sistemas Tridiagonales: Sustitucion hacia adelante 190c 〉〈Solucion Sistemas Tridiagonales: Sustitucion hacia atras 191 〉

5.7.1.3.1. Declaracion de la funcion Las variables de entrada de este pro-cedimiento son las siguientes:

c, d, e vectores que definen la matrız tridiagonal de coeficientes (ver ecua-cion 5.50)

b vector con los terminos independientes del sistema lineal de ecuaciones

La variable de salida corresponde al vector x que es donde se almacena la solu-cion del sistema.〈Solucion Sistemas Tridiagonales: Declaracion funcion 189c 〉 ≡

function [x]=LUsol3(c,d,e,b)�

Fragmento referenciado en 189b.

5.7.1.3.2. Inicializacion de variables La solucion del sistema lineal con matrızde coeficientes tridiagonal requiere conocer el numero de ecuaciones del siste-ma, el cual se determina como el numero de elementos del vector d mediante lafuncion length y el cual se almacena en la variable n.

Page 208: Notas Clase1

190 CAPITULO 5. METODOS DIRECTOS

〈Solucion Sistemas Tridiagonales: Inicializacion variables 190a 〉 ≡

n=length(d);

Fragmento referenciado en 189b.

5.7.1.3.3. Descomposicion LU Para obtener la solucion del sistema linealde ecuaciones cuya matrız de coeficientes es de tipo tridiagonal se hace necesa-rio realizar la descomposicion LU de dicha matrız, lo cual se hace mediante elsiguiente fragmento de codigo:

〈Solucion Sistemas Tridiagonales: Descomposicion LU 190b 〉 ≡

[c,d,e]=LUdec3(c,d,e);�

Fragmento referenciado en 189b.

5.7.1.3.4. Sustitucion hacia delante Se hace necesario definir un vector yen donde se va a almacenar la solucion obtenida en el procedimiento de sustitu-cion hacia delante. Este procedimiento se realiza de la forma usual, definiendoel multiplicador y almacenando los resultados en el vector y:

〈Solucion Sistemas Tridiagonales: Sustitucion hacia adelante 190c 〉 ≡

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. Sustitucion hacia atras Una vez se ha realizado la sustitucionhacia delante, la solucion del sistema lineal de ecuaciones especificado inicial-mente se obtiene mediante un procedimiento de sustitucion hacia atras y elresultado se almacena en el vector x.

Page 209: Notas Clase1

5.7. MATRICES DE COEFICIENTES BANDEADAS 191

〈Solucion Sistemas Tridiagonales: Sustitucion hacia atras 191 〉 ≡

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.

Page 210: Notas Clase1

192 CAPITULO 5. METODOS DIRECTOS

5.7.1.4. Ejemplos

Ejemplo MATLAB R© (Descomposicion LU de una matrız tridiagonal)

Realice en MATLAB R© la descomposicion LU de la siguiente matrız tri-diagonal:

A =

2 −1 0 0 0−1 2 −1 0 00 −1 2 −1 00 0 −1 2 −10 0 0 −1 2

En la seccion 5.7.1 se explica que las matrices tridiagonales se definen es-pecificando los valores de las diagonales que son no nulas, y las cuales sedesignan genericamente como c, d y e (ecuaciones 5.49 y 5.50). Para estecaso particular estos vectores son de tipo columna y se definen de la siguien-te forma:

c=[-1 -1 -1 -1]’;

d=[2 2 2 2 2]’;

e=[-1 -1 -1 -1]’;

Para realizar la descomposicion LU de este tipo de matrices se emplea lafuncion LUdec3.m definida en la seccion 5.7.1.2, y la cual se utiliza de lasiguiente forma:

>> [c1,d1,e1]=LUdec3(c,d,e)

El resultado de la descomposicion LU de una matrız tridiagonal correspondea una matrız L y otra matrız U cuyas diagonales tienen los siguientes valores:

>> [c1 e1]

-0.5000 -1.0000

-0.6667 -1.0000

-0.7500 -1.0000

-0.8000 -1.0000

d1 =

2.0000

1.5000

1.3333

1.2500

1.2000

Page 211: Notas Clase1

5.7. MATRICES DE COEFICIENTES BANDEADAS 193

Ejemplo MATLAB R© (Descomposicion LU de una matrız tridiagonal)

Organizando los vectores obtenidos anteriormente se pueden definir lasmatrices L con la diagonal principal conformada por valores iguales a 1.0(Descomposicion de Doolitle):

L =

1 0 0 0 0

−0.5000 1 0 0 00 −0.6667 1 0 00 0 −0.7500 1 00 0 0 −0.8000 1

mientras que para la matrız U la diagonal principal se encuentra conformadapor los elementos del vector d1 y la diagonal inferior corresponde al vectorc1

U =

2.0000 −1 0 0 0

0 1.5000 −1 0 00 0 1.3333 −1 00 0 0 1.2500 −10 0 0 0 1.2000

Ahora estas dos matrices se ingregas en MATLAB R© con el fin de corroborarsi efectivamente estas corresponden a una descomposicion LU de la matrızA, lo cual se puede hacer mediante la siguiente lınea de codigo:

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

Page 212: Notas Clase1

194 CAPITULO 5. METODOS DIRECTOS

Ejemplo MATLAB R© (Solucion de un sistema tridiagonal)

Resuelva el siguiente sistema lineal de ecuaciones

A =

2 −1 0 0 0−1 2 −1 0 00 −1 2 −1 00 0 −1 2 −10 0 0 −1 2

x1

x2

x3

x4

x5

=

11111

empleando el procedimiento de descomposicion LU para matrices tridiago-nales.

Nuevamente la matrız de coeficientes se especifica definiendo los vectoresde los elementos no nulos tal como se explica en la seccion 5.7.1:

c=[-1 -1 -1 -1]’;

d=[2 2 2 2 2]’;

e=[-1 -1 -1 -1]’;

y el vector de terminos independientes b se define de la siguiente forma:

b=ones(5,1);

La solucion de los sistemas lineales de ecuaciones con matrices de coefi-cientes que son matrices tridiagonales se explica en la seccion 5.7.1.3 y seencuentra implementado en la funcion LUsol3.m . Para este problema parti-cular la solucion del sistema se puede obtener de la siguiente forma:

>> [x]=LUsol3(c,d,e,b)

y la solucion obtenida en este caso esta dada por:

x =

2.5000

4.0000

4.5000

4.0000

2.5000

Page 213: Notas Clase1

Capıtulo 6

Solucion de sistemas lineales deecuaciones: Metodos iterativos

6.1. Introduccion

Los metodos directos estudiados en el capıtulo anterior son importantes en2 casos:

Los sistemas de ecuaciones sean pequenos, es decir, si los tamanos n de losmismos no son mayores a 50.

Las matrices de coeficientes de dichos sistemas son de tipo denso.

En general estas dos caracterısticas aparecen juntas, y en el caso en donde elsistema lineal de ecuaciones sea grande (100 × 100 o dimensiones mayores), lamatrız de coeficientes A sera de tipo disperso.

Si las matrices de coeficientes son de tipo disperso la utilizacion de un metododirecto desperdicia tanto espacio de almacenamiento como operaciones compu-tacionales, por lo que en muchas oportunidades la velocidad de ejecucion de losmismos se ve seriamente afectada.

6.2. Metodos Iterativos

La idea central de los metodos iterativos para la solucion de un sistema linealde ecuaciones A · x = b consiste en encontrar un vector solucion xk lo suficien-temente cercano al vector solucion x a partir de una solucion inicial x0 mediantela aplicacion de una regla de actualizacion dada.

195

Page 214: Notas Clase1

196 CAPITULO 6. METODOS ITERATIVOS

Una posible forma para definir dicha regla de actualizacion consiste en supo-ner que la matrız de coeficientes A se puede expresar como

A = B + (A−B) (6.1)

donde B es una matrız no singular. De acuerdo con esto el sistema lineal deecuaciones original:

A · x = 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 B−1 a amboslados:

B−1 ·B · x + B−1(A−B) · x = B−1 · b (6.4)

con lo cual se obtiene:

x + B−1(A−B) · x = B−1 · b (6.5)

y reorganizando para despejar x:

x = B−1(B−A) · x + B−1 · bx = (I−B−1 ·A) · x + B−1 · b

(6.6)

con lo cual resulta evidente la razon por la cual B deber cumplir la condicionde ser no singular. Por lo tanto resolver el sistema lineal original A · x = b esequivalente a resolver una ecuacion no lineal de la forma x = g(x), la cual sepuede resolver empleando el procedimiento denominado iteracion de punto fijo,en el cual la solucion se puede obtener mediante el siguiente esquema iterativo:

xk+1 = (I−B−1 ·A) · xk + B−1 · b (6.7)

en donde para obtener la solucion en la iteracion k + 1 se requiere tener unaaproximacion de la solucion en la iteracion anterior k. La ecuacion anterior sepuede expresar de forma compacta como:

xk+1 = Gxk + g (6.8)

donde G = (I − B−1 · A) y se denomina la matrız de iteracion y el vectorg = B−1 · b. Para poder aplicar este esquema iterativo en la practica, lo unicoque se desconoce en la ecuacion 6.8 es definir la matrız B. Hasta el momento lounico que se sabe de ella es que no puede ser singular, sin embargo esto no es

Page 215: Notas Clase1

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION 197

un criterio suficiente para definirla completamente. Generalmente esta matrızdepende de la matrız A, la cual se puede descomponer de la siguiente forma:

A = AL + AD + AU (6.9)

donde AL es una matrız triangular de la forma:

AL =

0 0 · · · 0

a21 0 · · · 0... . . . . . . ...

an1 · · · an,n−1 0

mientras que AD es una matrız diagonal:

AD = diag(A)

La matrız AU tiene la siguiente forma:

AU =

0 a12 · · · a1n... . . . . . . ...0 · · · 0 an−1,1

0 · · · 0 0

Cada metodo iterativo define su propia matrız B lo que a su vez determinar lamatrız de iteracion particular G, y de ahı el metodo particular y la convergenciadel mismo.

6.3. Metodo de Gauss-Seidel y Relajacion

El metodo de Gauss-Seidel, es un metodo iterativo y por lo mismo, resultaser un metodo bastante eficiente que se aplica comunmente en problemas endonde la matrız de coeficientes es de tipo diagonal dominante.

Definicion 28

Se dice que una matrız A es de tipo diagonal dominante si los valores sobrelas diagonales son mayores en valor absoluto que la suma de los valoresabsolutos de los restantes coeficientes, es decir:

|aii| >n∑

i=1

|aij|, j = 1, . . . , n, i 6= j (6.10)

Page 216: Notas Clase1

198 CAPITULO 6. METODOS ITERATIVOS

Por ejemplo el siguiente sistema lineal de ecuaciones

−10x1+ 2x2+ 3x3 = 6

x1+ 8x2− 2x3 = 9

−3x1− x2− 7x3 = −33

(6.11)

se puede expresar como: −10 2 31 8 −2−3 −1 −7

x1

x2

x3

=

69−33

(6.12)

Comenzamos con nuestro sistema de ecuaciones dado por la ecuacion 5.1.De la ecuacion 1 despejamos x1 , de la ecuacion 2 despejemos x2; y ası sucesi-vamente hasta que de la ecuacion n despejemos xn, con lo cual se obtiene:

x1 =7.85 + 0.1x2 + 0.2x3

3

x2 =−19.3− 0.1x1 + 0.3x3

7

x3 =71.4− 0.3x1 + 0.2x2

10

(6.13)

Si suponemos que x2 = 0, x3 = 0 entonces:

x1 =7.85 + 0 + 0

3= 2.616667 (6.14)

Y este resultado, junto con x3 se reemplaza para obtener:

x2 =−19.3− 0.1(2.616667) + 0

7= −2.794524 (6.15)

La primera iteracion finaliza cuando se obtiene x3

x3 =71.4− 0.3(2.616667) + 0.2(−2.794524)

10= 7.005610 (6.16)

Si este procedimiento se repite se obtienen los siguientes resultados:

Iteracion x1 x2 x3 ε2 2.990557 - 2.4996247 7.0002908 0.20954513 3.0000319 - 2.499988 6.9999993 0.10873694 3.0000004 - 2.500000 7.0000000 0.00018665 3.0000000 -2.500000 7.0000000 0.0000044

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

Page 217: Notas Clase1

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION 199

x1 =b1 − a22x2 − · · · − a1nxn

a11

x2 =b2 − a21x1 − · · · − a2nxn

a22

...

xn =bn − a11x1 − · · · − ann−1xn−1

ann

(6.17)

las cuales constituyen las expresiones a emplear en un esquema iterativo parala obtencion de la solucion. Para iniciar con dicho procedimiento seleccionamosun conjunto de valores iniciales para las variables x1, x2, . . . , xn. Estos valoresiniciales pueden ser iguales a 0, o valores aleatorios. Con los valores inicialesde x2, x3, . . . , xn es posible obtener un valor actualizado para x1 empleando laexpresion de la ecuacion 6.17.

El sistema lineal de ecuaciones A · x = b en notacion escalar:

n∑j=1

Aijxj = bi, i = 1, 2, . . . , n (6.18)

Al extraer los terminos xj se tiene:

Aiixi +n∑

j=1j 6=i

Aijxj = bi, i = 1, 2, . . . , n (6.19)

Despejando xi se tiene:

xi =1

Aii

bi −n∑

j=1j 6=i

Aijxj

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

y del cual se desprende el esquema iterativo:

xi ←1

Aii

bi −n∑

j=1j 6=i

Aijxj

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

Con el fin de mejorar la velocidad de convergencia del metodo, el esquemade solucion (ecuacion 6.21) se modifica teniendo en cuenta tanto la solucionen la iteracion k como en la iteracion k − 1. La nueva solucion es un promedio

Page 218: Notas Clase1

200 CAPITULO 6. METODOS ITERATIVOS

ponderado de solucion actual y anterior:

xi ←ω

Aii

bi −n∑

j=1j 6=i

Aijxj

+ (1− ω)xi, i = 1, 2, . . . , n (6.22)

donde ω es un factor de ponderacion que va a controlar la contribucion de cadauna de las soluciones obtenidas hasta el momento. Se pueden considerar doscasos:

ω < 1.0: Este opcion se conoce como la sub-relajacion

ω > 1.0: sobre-relajacion

El metodo de Gauss-Seidel para la solucion de sistemas de ecuaciones linea-les se puede expresar como un metodos iterativo en donde B = (AD + AL) ypor lo tanto la matrız de iteracion (ecuacion 6.8) se puede expresar como:

G = I−B−1 ·A= I− (AD + AL)−1(AL + AD + AR)

= −(AD + AL)−1AR

(6.23)

y el esquema iterativo completo estarıa dado por:

xk+1 = −(AD + AL)−1 ·AR · xk + (AD + AL)−1 · b (6.24)

Para el caso de la relajacion, se parte de la ecuacion anterior y sabiendo quela solucion del sistema en una iteracion dada xk+1 depende de la solucion en laiteracion actual k + 1 y de la iteracion anterior k, de tal forma que si se definela solucion en la iteracion actual como zk+1 se tiene:

z+1 = −(AD + AL)−1 ·AR · xk + (AD + AL)−1 · b (6.25)

con lo cual la solucion del sistema usando relajacion se puede obtener:

xk+1 = (1− ω)xk + ωzk+1

=[(1− ω)I− ωA−1

D (AL + AR)]︸ ︷︷ ︸

G

·xk + ωA−1D · b (6.26)

y donde la matrız B esta dada por:

B = ωAD−1 (6.27)

Page 219: Notas Clase1

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION 201

6.3.1. Solucion de sistemas lineales de ecuaciones usando elmetodo de GaussSeidel

La solucion de sistemas lineales de ecuaciones usando este procedimientoviene implementado en una funcion cuya estructura es la siguiente:

"GaussSeidel.m" 201a ≡

〈GaussSeidel: Declaracion de la funcion 201b 〉〈GaussSeidel: Inicializacion de variables 202a 〉〈GaussSeidel: Escalamiento 202b 〉〈GaussSeidel: Obtener solucion inicial 203a 〉〈GaussSeidel: Ciclo Principal 203b 〉

6.3.1.1. Gauss-Seidel: Declaracion de la funcion

Esta funcion tiene las siguientes variables de entrada:

A: matrız de coeficientes del sistema lineal de ecuaciones

b: vector con los terminos independientes del sistema lineal de ecuaciones

x0: vector de solucion inicial (pueden ser 0’s o valores aleatorios)

ω: Parametro que controla el nivel de relajacion para la solucion del sis-tema. Si λ < 1 se tiene el metodo de sub-relajacion, si λ > 1 se tiene elmetodo de sobre-relajacion y si λ = 1 se tiene el metodo de Gauss-Seideltradicional.

maxit: Numero maximo de iteraciones

errmin: error relativo mınimo para la detencion del procedimiento itera-tivo

Las variables de salida de esta funcion corresponden a:

x: vector con la solucion del sistema lineal de ecuaciones

iter: Numero de iteraciones empleado para alcanzar la solucion

〈GaussSeidel: Declaracion de la funcion 201b 〉 ≡

function [x,iter]=GaussSeidel(A,b,x0,omega,maxit,errmin)�

Fragmento referenciado en 201a.

Page 220: Notas Clase1

202 CAPITULO 6. METODOS ITERATIVOS

6.3.1.2. Gauss-Seidel: Inicializacion de variables

En esta seccion se definen las siguientes variables:

n almacena el numero de ecuaciones del sistema lineal en estudio (estenumero se obtiene usando el comando length)

x: esta variable corresponde a la solucion del sistema lineal de ecuacionesy se inicializa con el vector x0.

iter: contador para el numero de iteraciones. Este valor se inicializa en 0.

err: error relativo de la solucion actual. Este valor se inicializa en 100.

〈GaussSeidel: Inicializacion de variables 202a 〉 ≡

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 delos coeficientes se dividen por el valor del coeficiente que se encuentra en ladiagonal:

〈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. Obtencion de Solucion inicial

En esta parte se utilizan los valores de la solucion inicial x0 y se calcula unanueva solucion del sistema de ecuaciones.

Page 221: Notas Clase1

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION 203

〈GaussSeidel: Obtener solucion inicial 203a 〉 ≡

for i=1:n;suma=b(i);for j=1:n;

if (i~=j);suma=suma+A(i,j)*x(j);

endend;x(i)=suma;

end;�

Fragmento referenciado en 201a.

6.3.1.5. Gauss-Seidel: Ciclo principal

El ciclo principal incluye las operaciones mas importantes del procedimientode Gauss-Seidel. Estas son:

Actualizacion de la solucion: en la cual se propone una nueva solucion apartir de la solucion inicial o la obtenida en la iteracion anterior.

Determinacion del error: Con la nueva solucion actualizada se calcula elerror relativo con el fin de determinar si el procedimiento ha presentadoconvergencia.

〈GaussSeidel: Ciclo Principal 203b 〉 ≡

while (iter<=maxit & err>errmin);〈Ciclo Principal GaussSeidel: Actualizacion de la solucion 204a 〉〈Ciclo Principal GaussSeidel: Calculo del error e incremento de las iteraciones 204b 〉

end;

Fragmento referenciado en 201a.

6.3.1.5.1. Actualizacion solucion Aquı es necesario reemplazar los valoresde la solucion actual y con ellos determinar unos nuevos valores de las incogni-tas usando el procedimiento descrito por la ecuacion 6.21

Page 222: Notas Clase1

204 CAPITULO 6. METODOS ITERATIVOS

〈Ciclo Principal GaussSeidel: Actualizacion de la solucion 204a 〉 ≡

for i=1:n;xold=x(i);suma=b(i);for j=1:n;

if (i~=j);suma=suma-A(i,j)*x(j)

endend;x(i)=omega*suma+(1.-omega)*xold;

end�

Fragmento referenciado en 203b.

6.3.1.5.2. Calculo del error En esta parte se calcula cual es el error relati-vo obtenido por la solucion propuesta y ademas se incrementa el numero deiteraciones del procedimiento.

〈Ciclo Principal GaussSeidel: Calculo del error e incremento de las iteraciones 204b 〉 ≡

err=abs((x(i)-xold)./x(i))*100;iter=iter+1;

Fragmento referenciado en 203b.

Page 223: Notas Clase1

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION 205

6.3.2. Ejemplos

Ejemplo (Aplicacion del metodo de Gauss-Seidel)

Resuelva el siguiente sistema lineal de ecuaciones: 4 −1 1−1 4 −21 −2 4

x1

x2

x3

=

12−15

usando el metodo de Gauss-Seidel.

Para aplicar este procedimiento iterativo despejamos las incognitas x1,x2 y x3

con lo cual se obtiene:

x1 =12 + x2 − x3

4

x2 =−1 + x1 − 2x3

4

x3 =5− x1 + 2x2

4

y seleccionando como solucion inicial el vector:

x =

000

se puede calcular la primera iteracion del metodo de Gauss-Seidel usando lasecuacion 6.21:

x1 =12 + 0− 0

4= 3.0

x2 =−1 + 3.0− 2× 0

4= 0.5

x3 =5− 3.0 + 2× 0.5

4= 0.75

La segunda iteracion de este procedimiento nos permite obtener:

x1 =12 + 0.5− 0.75

4= 2.9375

x2 =−1 + 2.9375− 2× 0.75

4= 0.85938

x3 =5− 2.9375 + 2× 0.85938

4= 0.94531

Page 224: Notas Clase1

206 CAPITULO 6. METODOS ITERATIVOS

y para la tercera iteracion se obtiene:

x1 =12 + 0.85938− 0.94531

4= 2.97852

x2 =−1 + 2.97852− 2× 0.94531

4= 0.96729

x3 =5− 2.97852 + 2× 0.96729

4= 0.98902

Page 225: Notas Clase1

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION 207

Ejemplo MATLAB R© (Aplicacion del metodo de Gauss-Seidel)

Resuelva el siguiente sistema lineal de ecuaciones 4 −1 1−1 4 −21 −2 4

x1

x2

x3

=

12−15

usando el metodo iterativo de Gauss-Seidel en MATLAB R© . Para realizareste procedimiento se procede a la definicion de la matrız de coeficientes, locual se hace de la siguiente forma:

>> A=[4 -1 1;-1 4 -2;1 -2 4];

al igual que el vector de terminos independientes del sistema:

>> b=[12 -1 5]’;

Debido a que el metodo de Gauss-Seidel es de naturaleza iterativa, se hacenecesario especificar una solucion inicial x0 que en este caso es un vectorcuyos elementos son iguales a 0.0:

>> x0=zeros(3,1);

Para solucionar este sistema lineal de ecuaciones, se va a utilizar la funcionGaussSeidel.m definida en el presente capıtulo, para la cual es necesarioespecificar la matrız de coeficientes A, el vector de terminos independientesb, la solucion inicial x0, el factor ω que en este caso es igual a 1.0, el numeromaximo de iteraciones 10 y el error mınimo 1.0× 10−5 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

Page 226: Notas Clase1

208 CAPITULO 6. METODOS ITERATIVOS

Ejemplo MATLAB R© (Aplicacion del metodo de la sub-relajacion)

Resuelva el siguiente sistema lineal de ecuaciones usando el metodo desub-relajacion con un ω = 0.5, un maximo de iteraciones de 100 y un errormınimo de 1.0× 10−5 4 −1 1

−1 4 −21 −2 4

x1

x2

x3

=

12−15

Para proceder con la solucion de este problema en MATLAB R© es necesariodefinir la matrız de coeficientes y el vector de terminos independientes, locual se hace como en el ejemplo anterior. Al estar basado en el metodo deGaussSeidel, la sub-relajacion requiere de una solucion inicial, la que en estecaso es igual a un vector de 0.0:

>> x0=zeros(3,1);

El procedimiento de sub-relajacion se encuentra implementado en la mismafuncion GaussSeidel.m de tal forma que para utilizarlo se debe definir elvalor del ω, que en este caso es 0.5. Ası mismo se define el numero maximode iteraciones y el error mınimo:

>>omega=0.5;max_iter=100;min_err=1.0e-5;

con lo cual se puede invocar la funcion respectiva

>>[x,iter]=GaussSeidel(A,b,x0,omega,max_iter,min_err);

Evidentemente la solucion obtenida es la misma que en el caso de GaussSei-del:

x =

3.0000

1.0000

1.0000

sin embargo esta solucion y su respectivo valor de tolerancia se han alcan-zado en 41 iteraciones, indicando que la sub-relajacion para este problemaparticular tiene una velocidad de convergencia mas lenta que GaussSeidel.

Page 227: Notas Clase1

6.3. METODO DE GAUSS-SEIDEL Y RELAJACION 209

Ejemplo MATLAB R© (Aplicacion del metodo de la sobre-relajacion)

Resuelva el siguiente sistema lineal de ecuaciones usando el metodo desobre-relajacion con un ω = 1.5, un maximo de iteraciones de 100 y un errormınimo de 1.0× 10−5 4 −1 1

−1 4 −21 −2 4

x1

x2

x3

=

12−15

Para proceder con la solucion de este problema en MATLAB R© es necesariodefinir la matrız de coeficientes y el vector de terminos independientes, locual se hace como en el ejemplo anterior. Al estar basado en el metodo deGaussSeidel, la sobre-relajacion requiere de una solucion inicial, la que eneste caso es igual a un vector de 0.0:

>> x0=zeros(3,1);

El procedimiento de sobre-relajacion se encuentra implementado en la mis-ma funcion GaussSeidel.m de tal forma que para utilizarlo se debe definir elvalor del ω, que en este caso es 0.5. Ası mismo se define el numero maximode iteraciones y el error mınimo:

>>omega=0.5;max_iter=100;min_err=1.0e-5;

con lo cual se puede invocar la funcion respectiva

>>[x,iter]=GaussSeidel(A,b,x0,omega,max_iter,min_err);

La solucion obtenida es la misma que en el caso de GaussSeidel:

x =

3.0000

1.0000

1.0000

sin embargo esta solucion y su respectivo valor de tolerancia se han alcanza-do en 26 iteraciones, indicando que la sobre-relajacion tiene una velocidadde convergencia mas lenta que GaussSeidel, pero mayor que el metodo de lasub-relajacion.

Page 228: Notas Clase1

210 CAPITULO 6. METODOS ITERATIVOS

6.4. Gradiente Conjugado

6.4.1. Fundamentos conceptuales

El metodo del gradiente conjugado es un algoritmo que se emplea para lasolucion de sistemas lineales de ecuaciones Ax = b en los cuales la matrız decoeficientes A es simetrica y definida positiva. Ası mismo, este metodo general-mente se aplica cuando el sistema lineal es grande y la matrız de coeficientes esde tipo disperso. En estos casos los metodos directos como la eliminacion gaus-siana y la descomposicion LU presentan problemas de eficiencia y por lo tantoeste metodo se convierte en una alternativa viable para la solucion de este tipode problemas.

Para entender este metodo es necesario iniciar con la definicion de vectoresconjugados:Definicion 29

Se dice que dos vectores v y u son conjugados (con respecto a A) si secumple:

uTAv = 0 (6.28)

La ecuacion 6.28 corresponde a la definicion del producto escalar de dos vecto-res, y de lo cual se deduce que dos vectores son conjugados entre ellos si sonortogonales, es decir, si su producto interno es igual a 0. Supongamos que setiene una secuencia {pk} de n direcciones conjugadas (ortogonales). Entonces,los vectores que representan dichas direcciones pk se pueden considerar comouna base del espacio Rn.

Definicion 30

Una base B de un espacio vectorial V es un subcojunto linealmente indepen-diente de V que genera ese espacio Vectorial.

La importancia de las bases radica en que a partir de los elementos de estas esposible generar todos los elementos que conforman el espacio vectorial en cues-tion. Como ejemplo se pueden mencionar los vectores unitarios i,j y k.

Como los vectores pk forman una base del espacio Rn entonces el vector so-lucion x de Ax = b se puede expandir en esta base:

x = α1p1 + α2p2 + · · ·+ αnpn (6.29)

donde los αk son los coeficientes de dicha expansion.

Page 229: Notas Clase1

6.4. GRADIENTE CONJUGADO 211

Reemplazando esta solucion en el sistema original se tiene:

Ax = α1Ap1 + α2Ap2 + · · ·+ αnApn = b (6.30)

Para determinar los coeficientes αk premultiplicamos por pTk :

pTk Ax = pT

k α1Ap1 + pTk α2Ap2 + · · ·+ pT

k αnApn = αkpTk Apk = pT

k b (6.31)

y despejando αk se tiene:

αk =pT

k b

pTk Apk

(6.32)

Con esto se obtienen los coeficientes αk y se puede resolver el sistema Ax = b.El procedimiento general para aplicar este metodo es el siguiente:

Definir un conjunto de n direcciones conjugadas pk

Calcular los coeficientes αk a partir de las mismas

El metodo del gradiente conjugado es una herramienta util para la solucion desistemas lineales de ecuaciones, tales como los que aparecen en la discretizacionde ecuaciones diferenciales parciales. Este metodo se basa en la minimizacionde la funcion de la norma cuadratica, la cual esta definida como:

f(x) =1

2xTAx− bTx (6.33)

en donde se requiere que A sea simetrica y definida positiva.

Los metodos de gradiente permite realizar la minimizacion de la funcion f(x)partiendo de una solucion inicial x0, y modificando dicha solucion:

xk = xk−1 + αksk (6.34)

donde αk es el incremento y sk es la direccion de busqueda. Debido a que xk+1

debe satisfacer el sistema lineal A · x = b se tiene:

A(xk + αksk) = b (6.35)

y el residual se puede definir como:

rk = b−A · xk (6.36)

el cual es igual a:rk = αAsk (6.37)

Page 230: Notas Clase1

212 CAPITULO 6. METODOS ITERATIVOS

Para despejar α premultiplicamos a ambos lados por sTk con lo cual se obtie-

ne:

αk =sTk rk

sTk Ask

(6.38)

Sin embargo aun queda por determinar sk. Para esto se selecciona la direccionde mayor inclinacion en cada punto, la cual es igual a −∇f = rk La direccionde busqueda mas apropiada corresponde a:

sk+1 = rk+1 + βksk (6.39)

de tal forma que:

βk = −rT

k+1Ask

sTk Ask

(6.40)

6.4.2. Interpretacion grafica del metodo del Gradiente Con-jugado

6.1 Con el fin de entender mejor el metodo del gradiente conjugado, se va apresentar de forma grafica. Suponga que se quiere resolver el siguiente sistemalineal de ecuaciones: [

2 −1

−2 3

] [x1

x2

]=

[3

−5

](6.41)

empleando el metodo del gradiente conjugado. La solucion de este sistema es:

x =

[1−1

](6.42)

Como se explico anteriormente, este metodo de solucion se basa en la mini-mizacion de la Norma cuadratica (ver ecuacion 6.33), la cual una vez calculadase representa mediante contornos en la figura 6.1. La solucion del sistema co-rresponde al punto en donde dicha funcion es mınima. En este caso particularse asume que la solucion inicial corresponde al vector:

x0 =

[−4−3

]La filosofıa del metodo consiste en descender por dicha superficie a partir deuna solucion inicial x0, estableciendo un conjunto de direcciones conjugadas(perpendiculares u ortogonales) para llegar al mınimo de la funcion de nor-ma cuadratica. Para esto es necesario establecer la denominada direccion debusqueda sk, ası como tambien la distancia que hay que moverse en dicha di-reccion αk. Una vez se han determinado estos dos valores la nueva solucion del

Page 231: Notas Clase1

6.4. GRADIENTE CONJUGADO 213

sistema lineal de ecuaciones esta dado por la ecuacion 6.34. Esta nueva solucionrepresenta otro punto sobre la superficie de la norma cuadratica y aquı se aplicanuevamente el procedimiento, se determinar una nueva direccion de busquedas1 y se calcula cuanto hay que moverse en esta a1, con lo cual se define unanueva solucion que corresponde a x2. Este procedimiento se repite hasta quese haya encontrado un punto para el cual la norma del vector residual rk seamenor a la establecida inicialmente, en cuyo caso se dice que se ha encontradola solucion del sistema lineal de ecuaciones. Este procedimiento se encuentrarepresentado graficamente en la figura 6.1, en donde la solucion del sistema seencuentra representada por el punto de color negro.

Figura 6.1: Solucion de un sistema lineal de ecuaciones usando gradiente con-jugado

Page 232: Notas Clase1

214 CAPITULO 6. METODOS ITERATIVOS

6.4.3. Solucion de sistemas de ecuaciones lineales por mediodel Gradiente Conjugado

La estructura de la funcion que implementa el metodo del gradiente conju-gado es la misma de cualquier metodo iterativo, y es la siguiente:

"GradienteConjugado.m" 214a ≡

〈GradienteConj: declaracion de la funcion 214b 〉〈GradienteConj: Inicializacion de variables 215a 〉〈GradienteConj: Ciclo principal 215b 〉

6.4.3.1. Declaracion de la funcion

La funcion que implementa el gradiente conjugado tiene las siguientes va-riables de entrada:

x0: vector de n × 1 con la solucion inicial del sistema (pueden ser 0 onumeros aleatorios).

A: matrız de coeficientes del sistema. de tamano n× n.

b: vector de n× 1 con los terminos independientes del sistema en estudio.

itmax: numero maximo de iteraciones

errmin: error mınimo que debe alcanzar la solucion para ser consideradacomo satisfactoria.

Las variables de salida son las siguientes:

x: vector de n× 1 con la solucion del sistema

er: vector con el error incurrido en cada iteracion

par: vector con los valores de α y β obtenidos en cada iteracion

iter: numero de iteraciones requeridas para obtener la solucion.

〈GradienteConj: declaracion de la funcion 214b 〉 ≡

function [x,er,par,iter]=GradienteConjugado(x0,A,b,itmax,errmin)�

Fragmento referenciado en 214a.

Page 233: Notas Clase1

6.4. GRADIENTE CONJUGADO 215

6.4.3.2. Inicializacion de variables

Para realizar los diferentes calculos que requiere la aplicacion del metododel 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 iteracion actual

El vector solucion x se inicializa con el valor de la solucion inicial.

〈GradienteConj: Inicializacion de variables 215a 〉 ≡

r=b-A*x0;s=r;iter=0;err=100;x=x0;�

Fragmento referenciado en 214a.

6.4.3.3. Ciclo principal

El metodo del gradiente conjugado al ser un metodo iterativo requiere deuna regla de actualizacion que se aplica de forma repetida. Ya que no hay mane-ra de saber cuantas iteraciones se requieren para que se presente convergenciaa la solucion deseada, este procedimiento emplea un ciclo while, la estructuradel mismo es la siguiente:

〈GradienteConj: Ciclo principal 215b 〉 ≡

while ((err>=errmin) & (iter <= itmax));〈Ciclo Principal GradienteConj: Calculo del α 216a 〉〈Ciclo Principal GradienteConj: Actualizacion de la solucion 216b 〉〈Ciclo Principal GradienteConj: Calculo del residuo 216c 〉〈Ciclo Principal GradienteConj: Determinacion de direccion de busqueda 216d 〉〈Ciclo Principal GradienteConj: Calculo de error e incrementar iteraciones 217 〉

end;�

Fragmento referenciado en 214a.

Page 234: Notas Clase1

216 CAPITULO 6. METODOS ITERATIVOS

6.4.3.3.1. Calculo del α El valor de α corresponde al valor de los coeficien-tes de la expansion de la solucion

〈Ciclo Principal GradienteConj: Calculo del α 216a 〉 ≡

alpha=(s’*r)/(s’*A*s);�

Fragmento referenciado en 215b.

6.4.3.3.2. Actualizacion de la solucion La nueva solucion se calcula a partirde la solucion anterior xk y de la direccion de busqueda sk:

〈Ciclo Principal GradienteConj: Actualizacion de la solucion 216b 〉 ≡

x=x+alpha*s;�

Fragmento referenciado en 215b.

6.4.3.3.3. Calculo del residuo Una vez se ha calculado la nueva solucion esposible determinar el valor del vector residual:

〈Ciclo Principal GradienteConj: Calculo del residuo 216c 〉 ≡

r=b-A*x;�

Fragmento referenciado en 215b.

6.4.3.3.4. Determinacion de direccion de busqueda Con el vector residualse calcula la nueva direccion para avanzar hacia la solucion del sistema lineal,para lo cual se determina el valor de βk que corresponde a un factor de correc-cion que asegura que la nueva direccion sea perpendicular a al anterior:

〈Ciclo Principal GradienteConj: Determinacion de direccion de busqueda 216d 〉 ≡

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 calculacomo la norma del vector residual, y con esto se puede determinar si el proce-dimiento ha presentado convergencia:

Page 235: Notas Clase1

6.4. GRADIENTE CONJUGADO 217

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

Page 236: Notas Clase1

218 CAPITULO 6. METODOS ITERATIVOS

6.4.4. Ejemplos

Ejemplo (Solucion de sistema de ecuaciones lineales usando GC)

Resuelva el siguiente sistema lineal de ecuaciones uasndo el metodo del gra-diente conjugado: 4 −1 1

−1 4 −21 −2 4

x1

x2

x3

=

12−15

Inicializacion

x0 =

000

calcule el residuo

r = b−Ax0

=

12−15

− 4 −1 1−1 4 −21 −2 4

000

=

12−15

la direccion de busqueda queda definida como:

s0 = r0 =

12−15

Para calcular el incremento α en la direccion de busqueda se requiere

As0 =

4 −1 1−1 4 −21 −2 4

12−15

=

54−2634

de tal forma que el valor de dicho incremento es igual a:

α0 =sT0 r0

sT0 As0

=122 + (−1)2 + 52

12(54) + (−1)(−26) + 5(34)= 0.20142

la nueva solucion esta dada por:

x1 = x0 + α0s0 =

000

+ 0.20142

12−15

=

2.41704−0.201421.00710

Page 237: Notas Clase1

6.4. GRADIENTE CONJUGADO 219

y el residuo para esta nueva aproximacion esta dado por:

r1 = b−Ax1

=

12−15

− 4 −1 1−1 4 −21 −2 4

2.41704−0.201421.00710

=

5.5965616.05980−10.21760

β0 = −rT1 As0

sT0 As0

= −1.12332(54) + 4.23692(−26)− 1.84828(34)

12(54) + (−1)(−26) + 5(34)= 0.133107

s1 = r1 + β0s0 =

1.123324.23692−1.84828

+ 0.133107

12−15

=

2.720764.10380−1.18268

Iteracion 1 El incremento en la direccion de busqueda es igual a:

α1 =sT1 r1

sT1 As1

=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

x2 = x1 + α1s1 =

2.41704−0.201421.00710

+ 0.24276

2.720764.10380−1.18268

=

3.077530.794820.71999

r2 = b−Ax2 =

12−15

− 4 −1 1−1 4 −21 −2 4

3.077530.794820.71999

β1 = −rT2 As1

sT1 As1

= −(−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

s2 = r2+β1s1 =

−0.235290.338230.63215

+0.0251452

2.720764.10380−1.18268

=

−0.1668760.4414210.602411

Page 238: Notas Clase1

220 CAPITULO 6. METODOS ITERATIVOS

Iteracion 2

α2 =rT2 s2

sT2 As2

=(−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

x3 = x2 + α2s2 =

3.077530.794820.71999

+ 0.46480

−0.1668760.4414210.602411

=

2.999970.999990.99999

Page 239: Notas Clase1

6.4. GRADIENTE CONJUGADO 221

Ejemplo MATLAB R© (Solucion de sistema de ecuaciones lineales usando GC)

Resuelva el siguiente sistema lineal de ecuaciones 4 −1 1−1 4 −21 −2 4

x1

x2

x3

=

12−15

usando el metodo del Gradiente Conjugado en MATLAB R© con una solucioninicial de 0.

Para proceder con la solucion de este problema se hace necesario definirla matrız de coeficientes, lo cual se hace de la siguiente forma:

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

junto con el vector de terminos independientes:

b=[12 -1 5]’;

El vector de solucion inicial se define de la siguiente manera:

x0=zeros(3,1);

y el metodo del Gradiente conjugado se encuentra implementado en la fun-cion GradienteConjugado.m , el cual en este caso se ejecuta para un maximode 100 iteraciones y con un error mınimo de 1.0× 10−5:

[x,er,par,iter]=GradienteConjugado(x0,A,b,100,1.0e-5);

con el cual se obtiene la solucion en un numero de iteraciones igual a:

iter =

3

siendo la solucion obtenida:

x =

3.0000

1.0000

1.0000

Page 240: Notas Clase1

222 CAPITULO 6. METODOS ITERATIVOS

6.5. Gradiente Conjugado Precondicionado

6.5.1. Fundamentos conceptuales

La gran mayorıa de los sistemas lineales que aparecen de la discretizacion delas ecuaciones diferenciales parciales se encuentran mal condicionados y por lotanto su solucion presentan problemas de estabilidad numerica. En estos casosresulta util la utilizacion de un precondicionador de tal forma que el sistema sepueda resolver de forma mas rapida.

Definicion 31

Un precondicionador es una matrız P tal que P−1A tiene un numero decondicion menor que A de tal forma que al resolver el sistema lineal deecuaciones dado por P−1Ax = b es mucho mas eficiente que la solucion delsistema original Ax = b

Existen diferentes tipos de precondicionador entre los cuales se pueden men-cionar:

Precondicionador de Jacobi corresponde a una matrız diagonal D con los ele-mentos de la diagonal de A, es decir:

P = diag(A) (6.43)

Este precondicionador tiene la ventaja de ser facil de definir, y como esuna matrız diagonal, su inversa es muy sencillo de calcular.

Precondicionador Diagonal este se define a patir del valor de la norma vecto-rial de los coeficientes de una ecuacion particular:

P = ||Ai||, i = 1, . . . , n (6.44)

Precondicionador de Gauss-Seidel :La aplicacion de este precondicionador sebasa en la siguiente descomposicion:

A = L + D + LT (6.45)

donde L que contiene la porcion triangular inferior de A y D es una matrızcon los valores de la diagonal de A.

P = (D + L)D−1(D + LT) (6.46)

Precondicionador de Relajacion Sucesiva Este precondicionador esta basadoen la descomposicion dada por la ecuacion (6.45) y se define por:

P =

(D

ω+ L

2− ωD−1

(D

ω+ LT

)(6.47)

donde ω es el parametro de relajacion y ω ∈ [0, 2]

Page 241: Notas Clase1

6.5. GRADIENTE CONJUGADO PRECONDICIONADO 223

6.5.2. Aplicacion del metodo del Gradiente conjugado pre-condicionado

La funcion que implementa el procedimiento de gradiente conjugado precon-dicionado para la solucion de los sistemas de ecuaciones lineales se denominaPCG.m y tiene la siguiente estructura:

"PCG.m" 223a ≡

〈GradienteConjugadoPrecond: Declaracion de la funcion 223b 〉〈GradienteConjugadoPrecond: Definicion del Precondicionador 224a 〉〈GradienteConjugadoPrecond: Inicializacion de variables 224b 〉〈GradienteConjugadoPrecond: Ciclo Principal 224c 〉

6.5.2.1. Declaracion de la funcion

Las variables de entrada de esta funcion son las siguientes:

x0: vector de la solucion inicial del problema particular. Tamano n× 1.

A: matrız de tamano n× n con los coeficientes del sistema

b: vector de tamano n × 1 con los terminos independientes del sistema aresolver

opcion: variable para definir la opcion de precondicionamiento

itmax: numero maximo de iteraciones

errmin: error mınimo para el cual una solucion se considera aceptable.

Las variables de salida son:

x: vector de tamano n× 1 con la solucion del sistema lineal de ecuaciones

iter: variable que almacena el numero de iteraciones que se necesitaronpara llegar a la solucion.

〈GradienteConjugadoPrecond: Declaracion de la funcion 223b 〉 ≡

function [x,iter]=PCG(x0,A,b,opcion,itmax,errmin)�

Fragmento referenciado en 223a.

Page 242: Notas Clase1

224 CAPITULO 6. METODOS ITERATIVOS

6.5.2.2. Definicion del precondicionador

De acuerdo al valor de opcion se define la matrız de precondicionamientopor medio de la funcion denominada precondicionador.m :

〈GradienteConjugadoPrecond: Definicion del Precondicionador 224a 〉 ≡

M=precondicionador(A,opcion);�

Fragmento referenciado en 223a.

6.5.2.3. Inicializacion de variables

En este fragmento se definen las variables que van a controlar el procedi-miento de obtencion de la solucion del sistema lineal de ecuaciones:

iter: variable contadora de las iteraciones

err: variable para almacenar el error relativo de la solucion obtenida.

〈GradienteConjugadoPrecond: Inicializacion de variables 224b 〉 ≡

iter=0;err=100;�

Fragmento referenciado en 223a.

6.5.2.4. Ciclo principal

Al ser un metodo iterativo, el gradiente conjugado precondicionado se im-plementa mediante un ciclo while cuya estructura es la siguiente:

〈GradienteConjugadoPrecond: Ciclo Principal 224c 〉 ≡

while (err>=errmin & iter<=itmax);〈Ciclo Principal PCG: Calculo del α 225a 〉〈Ciclo Principal PCG: Actualizacion de la solucion 225b 〉〈Ciclo Principal PCG: Calculo del residuo 225c 〉〈Ciclo Principal PCG: Actualizacion direccion de busqueda 225d 〉〈Ciclo Principal PCG: Calculo de error e incrementar iteraciones 226a 〉

end;�

Fragmento referenciado en 223a.

Page 243: Notas Clase1

6.5. GRADIENTE CONJUGADO PRECONDICIONADO 225

6.5.2.4.1. Calculo del α El valor del α que representa la magnitud de lamodificacion que se hace en la direccion de busqueda se calcula de la siguienteforma:

〈Ciclo Principal PCG: Calculo del α 225a 〉 ≡

alpha=(rold’*inv(M)*rold)/(s’*A*s);�

Fragmento referenciado en 224c.

6.5.2.4.2. Actualizacion de la solucion Una vez calculado el α se puedemodificar la solucion inicial de la siguiente forma:

〈Ciclo Principal PCG: Actualizacion de la solucion 225b 〉 ≡

x=x+alpha*s;�

Fragmento referenciado en 224c.

6.5.2.4.3. Calculo del residuo Con la nueva aproximacion de la soluciondel sistema se determina su resido para juzgar su calidad:

〈Ciclo Principal PCG: Calculo del residuo 225c 〉 ≡

r=rold-alpha*A*s;�

Fragmento referenciado en 224c.

6.5.2.4.4. Actualizacion direccion de busqueda

〈Ciclo Principal PCG: Actualizacion direccion de busqueda 225d 〉 ≡

bet=-(r’*inv(M)*r)/(rold’*A*rold);s=inv(M)*r+bet*s;

Fragmento referenciado en 224c.

6.5.2.4.5. Calculo de error e incremento de iteraciones

Page 244: Notas Clase1

226 CAPITULO 6. METODOS ITERATIVOS

〈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. Funcion precondicionador

La estructura de la funcion que implementa el precondicionador es la si-guiente:

"precondicionador.m" 226b ≡

〈Precondicionador: Declaracion de la funcion 226c 〉〈Precondicionador: Inicializacion de variables 227a 〉〈Precondicionador: Chequear la opcion de precond 227b 〉〈Precondicionador: Seleccionar opcion 228a 〉

6.5.3.1. Declaracion de la funcion

En este caso las variables de entrada son:

A: matrız en estudio y a la cual se le quiere mejorar el numero de condi-cion.

opcion: opcion de precondicionamiento. En este caso existen 3 opcionesque son:

• opcion = 1 Precondicionador de Jacobi (ver ecuacion 6.43)

• opcion = 2 Precondicionador diagonal (ver ecuacion 6.44)

• opcion = 3 Precondicionador de Gauss-Seidel (ver ecuacion 6.45)

• opcion = 4 Precondicionador de relajacion sucesiva (ver ecuacion6.47)

〈Precondicionador: Declaracion de la funcion 226c 〉 ≡

function [P]=precondicionador(A,opcion)�

Fragmento referenciado en 226b.

Page 245: Notas Clase1

6.5. GRADIENTE CONJUGADO PRECONDICIONADO 227

6.5.3.2. Inicializacion de variables

Las variables que se deben inicializar en este caso para controlar el procedi-miento de obtencion de la solucion son las siguientes:

n: numero de ecuaciones del sistema A · x = b

P : matrız de precondicionamiento. Este es de tamano n× n y se inicializaen 0.0.

D: matrız que contiene los valores de la diagonal de A

L: matrız triangular que contiene todos los elementos de la porcion trian-gular de A excepto los valores de la diagonal.

〈Precondicionador: Inicializacion de variables 227a 〉 ≡

[nrow ncol]=size(A);if(nrow ~=ncol) then

error(’La matriz debe ser cuadrada’);endn=nrow;P=zeros(n,n);D=diag(diag(A));L=tril(A)-D;�

Fragmento referenciado en 226b.

6.5.3.3. Chequear opcion

En este fragmento se determina si la variable opcion, que controla el tipo deprecondicionamiento realizado, es valida; es decir; si es mayor que 0 y menor a4:

〈Precondicionador: Chequear la opcion de precond 227b 〉 ≡

if(opcion<=0 | opcion>4) thenerror(’La opcion de precondicionamiento seleccionada no es correcta’);

end�

Fragmento referenciado en 226b.

6.5.3.4. Seleccionar opcion

Una vez la variable opcion se ha determinado que es correcta se procede adefinir la matrız de precondicionamiento respectiva:

Page 246: Notas Clase1

228 CAPITULO 6. METODOS ITERATIVOS

〈Precondicionador: Seleccionar opcion 228a 〉 ≡

switch opcioncase 1〈Precondicionador de Jacobi 228b 〉

case 2〈Precondicionador Diagonal 228c 〉

case 3〈Precondicionador de Gauss-seidel 229a 〉

case 4〈Precondicionador de Relajacion Sucesiva 229b 〉

end

Fragmento referenciado en 226b.

6.5.3.4.1. Precondicionador de Jacobi El precondicionador de Jacobi esta de-finido como la matrız diagonal formada con los elementos de la diagonal de lamatrız A:

〈Precondicionador de Jacobi 228b 〉 ≡

P=D; % Precondicionamiento de Jacobi�

Fragmento referenciado en 228a.

6.5.3.4.2. Precondicionador Diagonal El precondicionador diagonal esta de-finido como la matrız diagonal formada con los valores de la norma del vectorformado por los coeficientes de cada ecuacion:

〈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 Gauss-Seidel se calcula por medio de la expresion dada por la ecuacion 6.45:

Page 247: Notas Clase1

6.5. GRADIENTE CONJUGADO PRECONDICIONADO 229

〈Precondicionador de Gauss-seidel 229a 〉 ≡

P = (D + L) * inv(D) * (D + L)’;�

Fragmento referenciado en 228a.

6.5.3.4.4. Precondicionador de relajacion sucesiva El precondicionadorde relajacion sucesiva esta definido por la ecuacion 6.47

〈Precondicionador de Relajacion Sucesiva 229b 〉 ≡

omega = 1.7; %Valor del parametro de relajamientoP = (D + omega*L) * inv(D) * (D + omega*L)’;P = P* omega/(2-omega);

Fragmento referenciado en 228a.

Page 248: Notas Clase1

230 CAPITULO 6. METODOS ITERATIVOS

Page 249: Notas Clase1

Indice alfabetico

Algoritmo, 37

Bairstowmetodo de, 110

Biseccionmetodo de la, 55

CondicionNumero de, 15

Deflacion polinomial, vease Division sinteti-ca

DescomposicionCholesky, 176LU, 161

Diferencia FinitaCentral, 40Definicion, 39hacia delante, 39

Division sintetica, 95, 109

EcuacionManning, 47

Eliminacion gaussianametodo de, 150pivote, 152

Errortruncamiento, 37

Evaluacion de Polinomios, 89Exactidud

Definicion, 5

Funcioncoseno, 26exponencial, 22logaritmo natural, 33polinomio, 19, 36, 49, 89, 126

seno, 30trascedental, 49trigonometrica, 26

Gauss-SeidelMetodo de, 197sobrerelajacion, 200subrelajacion, 200

Gradiente ConjugadoMetodo de, 210

Laguerremetodo de, 126, 134

Matrızdefinida positiva, 176densa, 146diagonal, 141diagonal dominante, 197dispersa, 146hermıtica, 141hessemberg, 145identidad, 142inversa, 172simetrica, 140, 176tipos, 140Triangular inferior, 176triangular inferior, 144triangular superior, 144tridiagonal, 143, 186

Mullermetodo de, 100, 102

Newtondesventajas metodo, 67metodo de, 66

231

Page 250: Notas Clase1

232 INDICE ALFABETICO

metodo, interpretacion geometrica,67

Pivoteo, 152Precision

Definicion, 5Propagacion del error, 44

Raıcesde funcion, 49metodo grafico, 51

Raicesmetodos abiertos, 50

Regla signos Descartes, 49

Secanteinterpretacion geometrica, 76metodo, 75

Secante Modificadometodo, 82

Serie de Taylor, 21, 66, 110Solucion ecuaciones lineales

Descomposicion de Cholesky, 176descomposicion LU, 161eliminacion gaussiana, 150Metodo del Gradiente Conjugado,

210Metodo Gauss-Seidel, 199metodos directos, 140metodos iterativos, 140Sistemas tridiagonales, 186

StokesLey de, 45

sustitucion hacia atras, 149sustitucion hacia delaten, 150

TeoremaTaylor, 21Valor Medio, 22

Transformaciones Elementales, 147