Está en la página 1de 50

ANLISIS NUMRICO

Miguel Alemn Flores, Luis lvarez Len y Javier Snchez Prez Departamento de Informtica y Sistemas Universidad de Las Palmas Campus de Tara 35017 Las Palmas, Espaa Email: {maleman,lalvarez,jsanchez}@dis.ulpgc.es

Contenidos 1 INTRODUCCIN 2

2 ARITMTICAS DE PRECISIN FINITA Y FUENTES DE ERRORES NUMRICOS 2 2.1 Aritmticas de precisin nita . . . . . . . . 2 2.2 Prctica 1 (Aritmticas nitas, 2 horas) . 5 2.3 Fuentes de errores numricos . . . . . . . . 7 3 CLCULO DE LOS CEROS DE UNA FUNCIN 8 3.1 Mtodo de la biseccin . . . . . . . . . . . . 8 3.2 Mtodo de la Regula-falsi (regla de lo falso) 8 3.3 Mtodo de Newton-Raphson . . . . . . . . . 8 3.4 El mtodo de la Secante . . . . . . . . . . . 8 3.5 Mtodo de Mller . . . . . . . . . . . . . . . 9 3.6 Prctica 2 (Mtodo de Mller, 4 horas) . . 9 3.7 Clculo de las races de un polinomio . . . . 10 3.7.1 Algoritmo de Horner para evaluar un polinomio en un punto . . . . . . 10 4 INTERPOLACIN DE FUNCIONES I 14 4.1 Interpolacin por polinomios de Lagrange . 14 4.2 Error de interpolacin de Lagrange y polinomios de Chebychev . . . . . . . . . . . . 15 4.3 Mtodo de diferencias de Newton para el clculo del polinomio interpolador de Lagrange . . . . . . . . . . . . . . . . . . . . . 15 4.4 Implementacin de funciones elementales . . 18 4.4.1 Aproximacin de la exponencial ex . 18 4.5 Prctica 3 (Aproximacin de ex , 2 horas) . 18 4.5.1 Aproximacin de funciones trigonomtricas . . . . . . . . . . . . 18 4.5.2 Aproximacin de la funcin ln(x) . . 19 5 ANLISIS NUMRICO MATRICIAL I 5.1 Mtodo de Gauss . . . . . . . . . . . . . . . 5.2 Estimacin del error de un mtodo para resolver sistemas . . . . . . . . . . . . . . . . 5.3 Mtodo de Cholesky . . . . . . . . . . . . . 5.4 Prctica 4 (Mtodo de Cholesky, 6 horas) 5.5 Mtodo de Crout para matrices tridiagonales 5.6 Subrutinas en Fortran 77 para la lectura y escritura en disco de vectores y matrices . . 19 19 21 21 22 22 23

6 DIFERENCIACIN E INTEGRACIN NUMRICA 6.1 Diferenciacin Numrica . . . . . . . . . . . 6.2 Diferenciacin numrica en dimensiones superiores . . . . . . . . . . . . . . . . . . . . 6.2.1 Discretizacin del Laplaciano . . . . 6.2.2 Discretizacin del gradiente . . . . . 6.3 Integracin Numrica . . . . . . . . . . . . . 6.3.1 Mtodos de Cuadratura de Gauss . . 6.3.2 Frmulas de Integracin Numrica Compuestas . . . . . . . . . . . . . . 6.4 Prctica 5 (Implementacin Mtodo de Integracin de Simpson, 2 horas) . . . . . . . 6.5 Integracin numrica en dimensiones superiores . . . . . . . . . . . . . . . . . . . . . . 7 ANLISIS NUMRICO MATRICIAL II 7.1 Normas de vectores y matrices . . . . . . . 7.2 Condicionamiento de una matriz . . . . . . 7.3 Clculo de autovalores y autovectores . . . 7.3.1 Mtodo de Jacobi . . . . . . . . . . 7.4 Prctica 6 (Mtodo de Jacobi para el clculo de autovalores y autovectores 6 horas) 7.4.1 Mtodo de la potencia . . . . . . . . 7.4.2 Mtodo de la potencia inversa . . . . 7.5 Mtodos iterativos de resolucin de sistemas lineales . . . . . . . . . . . . . . . . . 7.5.1 Mtodo de Jacobi . . . . . . . . . . 7.5.2 Mtodo de Gauss-Seidel . . . . . . . 7.5.3 Mtodo de relajacin . . . . . . . . . 7.5.4 Convergencia de los mtodos iterativos 7.6 Prctica 7 (Mtodo de relajacin, 2 horas) 7.7 Mtodo de Newton-Raphson para sistemas de ecuaciones no lineales . . . . . . . . . . .

24 24 25 26 26 27 27 28 29 29 31 31 33 33 34 36 36 37 38 39 39 40 41 42 42

8 INTERPOLACIN DE FUNCIONES II 43 8.1 Interpolacin de Hermite . . . . . . . . . . . 43 8.2 Interpolacin por splines cbicos . . . . . . 43 8.3 La interpolacin a travs de la funcin seno cardinal . . . . . . . . . . . . . . . . . . . . 46 8.4 La interpolacin a travs de polinomios trigonomtricos . . . . . . . . . . . . . . . . 46 8.5 Aproximacin por mnimos cuadrados . . . 47 9 BIBLIOGRAFA BSICA 48

10 APNDICE A: Resumen de los comandos de UNIX 49 11 APNDICE B: Resumen del procesador de texto vi 49 12 APNDICE C: Algunos fallos comunes en Fortran 49 INTRODUCCIN El presente documento es un texto de referencia bsico sobre los contenidos de la disciplina de Anlisis Numrico en el contexto curricular de una Ingeniera Informtica. Aunque el texto cubre los contenidos mnimos necesarios, resultar de gran inters para los alumnos complementar la informacin aqu suministrada con los textos de referencia bsicos mencionados en la bibliografa. Muchas de las demostraciones de los resultados presentados se encuentran en este texto. En los casos en que las demostraciones no se incluyen, se suministra el libro y la pgina donde se encuentra tal demostracin, para que el alumno interesado pueda estudiarla por su cuenta. En general, todos los temas presentados aparecen bien desarrollados en los libros de texto clsicos mencionados en la bibliografa. La nica excepcin es el tema de aritmticas de precisin nita, que se ha desarrollado en este texto con algo ms de detalle y con un enfoque algo ms moderno que en los libros clsicos, por considerar que, en el contexto de una Ingeniera Informtica, este tema es de especial relevancia. El lenguaje de programacin que se utilizar es el Fortran. Se ha elegido este lenguaje por ser la plataforma donde se han desarrollado habitualmente los grandes programas de clculo numrico y por estar especialmente orientado al clculo cientco. En el texto se va introduciendo este lenguaje de programacin a travs de programas ejemplo. Estos programas ejemplo se encuentran a disposicin de los alumnos en el directorio de la asignatura /users/asignaturas/ii-an de la mquina serdis.dis.ulpgc.es. Tambin se encuentra a disposicin de los alumnos el chero an.h, donde se encuentran todas las subrutinas denidas en estos programas ejemplo. En el texto se proponen unas prcticas de laboratorio para realizar a lo largo de la asignatura. Para establecer el orden de imparticin de los contenidos presentes en este documento se ha utilizado, como criterio preferente, la coordinacin entre el programa de prcticas y el programa terico de la asignatura, de tal forma que, con un desarrollo normal de la docencia, los contenidos tericos sean presentados con antelacin al desarrollo de las prcticas, comenzando las prcticas de laboratorio a partir de la segunda semana de clase. Para el buen seguimiento de la asignatura, resulta de gran inters tener cierta soltura en el manejo de los conceptos elementales del Anlisis Matemtico, el lgebra, y la programacin de Algoritmos. La materia expuesta en esta documentacin est programada para ser impartida en un cuatrimestre a razn de 3 horas/semana en el aula y 2 horas/semana en el laboratorio informtico, lo
2

que hace un total de, aproximadamente, 45 horas en aula (3 crditos tericos) y 30 horas de laboratorio (2 crditos prcticos). Dado el escaso tiempo disponible, se han eliminado algunos temas clsicos de un curso completo anual de Anlisis Numrico como son las ecuaciones diferenciales ordinarias y las ecuaciones en derivadas parciales. Normalmente, dichos temas se vern en detalle en asignaturas posteriores. Adems, en lugar de presentar de forma exhaustiva todos los mtodos numricos que se pueden encontrar en los libros de Anlisis Numrico clsicos, se ha optado por reducir los contenidos e impartir una seleccin de los mtodos numricos ms representativos. ARITMTICAS DE PRECISIN FINITA Y FUENTES DE ERRORES NUMRICOS Aritmticas de precisin nita Un nmero entero z se representa en el ordenador a travs de un nmero jo de bits (16 bits habitualmente), donde uno de los bits se utiliza para determinar el signo y los restantes para expresar el valor absoluto del nmero, de tal manera que la secuencia de bits a1 a2 a3 ......an donde ai = 0 o ai = 1, representa el valor absoluto del nmero | z |= an + an1 2 + an2 22 + ... + a1 2n1 As, utilizando 16 bits, el mayor nmero entero que podemos representar es 1 + 2 + 22 + ..... + 214 = 215 1 = 32767 Es decir, los nmero enteros que podemos expresar con una aritmtica de 16 bits van desde 32767 hasta 32767. Para representar un nmero real y en el ordenador nos basaremos en el siguiente resultado: Teorema 1 Un nmero real positivo y se puede expresar como X an y = 2e 2n n=1

donde e es un nmero entero, a1 = 1, y para n > 1, an = 0 o an = 1. Demostracin. Dado un nmero real positivo y , existe un entero e tal que 2e1 y < 2e , y por tanto 21 y 2e < 1. Por otro lado, si denimos las sucesiones Sn y an de la siguiente forma: S1 = 21 , an = 1 y para n > 1 an = 0 si Sn1 + an = 1 si Sn1 + Sn =
1 2n 1 2n

> y 2e y 2e

k=1

entonces es claro que | Sn y 2e | 21 n , y por tanto Sn y 2e lo que concluye la demostracin del teorema.

n X ak

2k

Ejemplo 1 Consideremos y = 10. 125, podemos expresar este nmero como 1 1 1 10. 125 = 24 ( + 3 + 7 ) 2 2 2 Es decir, e = 4, a1 = a3 = a7 = 1, y el resto de los an es 0. En este caso, el nmero de elementos an distintos de 0 es un nmero nito, en general no ocurre as. Evidentemente, cualquier nmero que tenga un nmero nito de elementos an distintos de 0 es un nmero racional y, por tanto, los nmeros irracionales se representarn siempre con un nmero innito de elementos an no nulos. Sin embargo, como muestra el siguiente problema, existen otros muchos nmeros adems de los irracionales, que no se pueden representar con un nmero nito de elementos an no nulos. Problema 1 (2 puntos) Demostrar que al representar el nmero real 0.1 como 0.1 = 2e
X an 2n n=1

Problema 4 (2 puntos) Calcular todos los nmeros reales que se pueden construir tomando 5 bits de la forma siguiente: 1 bit para el signo, 2 bits para la mantisa (es decir t = 3, puesto que a1 = 1 y slo se almacenan a2 y a3 ) y 2 bits para el exponente e, tomando como rango de e = 1, 0, 1, 2. Representar dichos nmeros sobre una recta. Es importante resaltar que los nmeros reales en una aritmtica de precisin nita no estn equiespaciados, es decir, los nmeros estn ms cercanos entre s cerca de 0, y ms alejados al alejarnos de 0. En 1985, la sociedad I.E.E.E. present una serie de especicaciones estndares para la denicin de una aritmtica de precisin nita para los nmeros reales. En este trabajo, se codica un nmero real en simple precisin utilizando 32 bits de memoria, de los cuales 23 bits se utilizan para la mantisa (es decir t = 24 puesto que a1 = 1 no se almacena), 1 bit se utiliza para el signo y 8 bits se utilizan para el exponente e, lo cual da un rango de 28 = 256 valores posibles para el exponente e. En este caso, se toma emin = 125 y emax = 128. Como puede observarse, el nmero total de exponentes posibles es 254, dos menos que los 256 posibles, ello se hace as, porque se reservan dos casos para tratar las denominadas excepciones, como se ver ms adelante. Por tanto, el valor mximo que puede tomar un nmero real en esta aritmtica es y emax = 2128
24 X 1 = 3. 4 1038 n 2 n=1

el nmero de elementos no nulos an es innito. Problema 2 (2 puntos) Representar el nmero 0.0 703 125 como 0.0 703 125 = 2e
X an 2n n=1

Para denir una aritmtica de precisin nita de nmero reales, lo que se hace habitualmente es discretizar la frmula de representacin anterior, tomando un nmero nito de valores posibles ai y un nmero nito de valores para el exponente e. Como puede observarse, cada valor ai viene representado por un bit. Adems, puesto que el valor a1 es siempre igual a 1, no es necesario almacenar su valor en memoria al guardar un nmero real. Por tanto, en una aritmtica de precisin nita, los nmeros reales distintos de cero se representan como y e = 2e
t X an 2n n=1

y el valor mnimo positivo es y emin = 2125 1 = 1. 18 1038 2

donde e vara entre dos valores limites emin e emax . Al valor t se le llama precisin de la aritmtica. A la secuencia a1 a2 a3 ......at , (donde ai {0, 1}) se le denomina mantisa. Hay que hacer notar aqu que, dado que hemos impuesto siempre que a1 = 1, el nmero 0 debemos aadirlo a la aritmtica, ya que 0 no se puede representar de la forma anterior. Problema 3 (1 punto) Calcular los valores positivos mnimo y mximo que puede tomar un nmero real en una aritmtica de precisin nita en funcin de t, emin y emax .

Adems, el nmero de combinaciones posibles que puede tener la mantisa es 224 1. 68 107 . Es decir, la aritmtica tiene una precisin de 7 dgitos decimales. Esta representacin equivale a normalizar el nmero binario colocando la coma detrs del primer 1, representar en la mantisa la parte fraccionaria, puesto que la parte entera es un 1 implcito, y el exponente en exceso 127, es decir, sumando esta cantidad al exponente resultante de la normalizacin, de forma que el rango que va desde 1 hasta 254 representa los exponentes que van desde 126 hasta 127 (se reservan los valores 0 y 255 para las excepciones). Tambin se dene en este trabajo de I.E.E.E. un estndar para una aritmtica en doble precisin. En este caso, se utilizan 64 bits para almacenar un nmero real, de los cuales 52 bits se utilizan para la mantisa (t = 53), 1 bit para el signo y 11 bits para el exponente, lo que da lugar a 211 = 2048 posibilidades de eleccin de exponente e. En este caso, se toma emin = 1021 y emax = 1024. Por tanto, el valor mximo que puede tomar un nmero real en esta aritmtica es y emax = 21024
3

53 X 1 = 1. 78 10308 n 2 n=1

y el valor mnimo positivo es y emin = 21021 1 = 2. 23 10308 2

Adems, el nmero de combinaciones posibles que puede tener la mantisa es 253 9. 0 1015 . Es decir, la aritmtica tiene una precisin de 15 dgitos decimales. Evidentemente, estos estndares no se siguen al pie de la letra por los diferentes fabricantes de ordenadores. As, aunque existe bastante homogeneidad en este sentido, los valores pueden cambiar ligeramente de una mquina a otra. Por otro lado, aunque en la mayora de los ordenadores actuales la base de representacin de los nmeros es 2, todava pueden encontrarse algunos sistemas donde la base es 10 16. Nosotros no entraremos aqu a estudiar este tipo de bases. El estudio es bsicamente el mismo, adaptndolo a la base de representacin. Tratamiento de las excepciones en el estndar de I.E.E.E. Denominaremos excepciones a las expresiones que no se pueden expresar en una aritmtica usual, como son el 0, el innito, operaciones no vlidas (como 1), etc. Estas excepciones son tratadas en el estndar de I.E.E.E. de la siguiente forma: dentro de las posiciones de memoria dedicadas al exponente e de un nmero, se reservan dos, que corresponden a emin 1 y emax + 1, para trabajar con con las excepciones. La regla que se utiliza es la siguiente: 1. Si el valor de una variable y tiene por exponente emax + 1 y todos los coecientes de la mantisa valen 0, entonces y se considera innito. Por ejemplo 1/0 debe dar innito. 2. Si el valor de una variable y tiene por exponente emax + 1 y algn coeciente de la mantisa es distinto de 0, entonces y se considera que no es un nmero (NaN (Not a Number)). Por ejemplo 1 debe dar NaN. 3. Si el valor de una variable y tiene por exponente emin 1 y todos los coecientes de la mantisa valen 0, entonces y se considera igual a 0. 4. Si el valor de una variable y tiene por exponente emin 1 y algn coeciente de la mantisa es distinto de 0, y se considera que no est normalizado (es decir a1 = 0) y el valor de y sera y=2
emin 1 t X an 2n n=2

A=A/2. IF(A.GT.0) THEN M=M+1 GOTO 1 ENDIF PRINT *,M END

Nota En Fortran 77 no es necesario declarar las variables. Por defecto, las variables cuyo nombre empieza por las letras I, J, K, L, M, N son variables enteras, y el resto son variables reales. Las cinco primeras columnas de cada lnea de un programa Fortran 77 estn reservadas para escribir un nmero de etiqueta. La columna 6 est reservada para indicar si una lnea es continuacin de la anterior (en este caso basta con escribir un carcter en la columna 6.) Un o una C en la primera columna indica que la lnea es de comentario. En el Fortran 77 estndar no existe la instruccin W HILE . Sin embargo, como se muestra en el programa anterior, se puede simular fcilmente un W HILE con un GOT O. Los operadores de comparacin en fortran 77 son: .GT., .GE., .EQ., .N E., .LT. y .LE., que signican mayor que, mayor o igual a, igual a, no igual a, menor que y menor o igual a, respectivamente. Los operadores lgicos son .AN D. y .OR., que realizan las operaciones de conjuncin y disyuncin, respectivamente. Programa 2 Programa en Fortran 77 para calcular el mayor nmero positivo de una aritmtica. El programa devuelve un entero M tal que 2M es el nmero cuya representacin corresponde a la excepcin que codica el innito. A=1. B=1. M=0 B=2.*A IF(B.GT.A) THEN A=B M=M+1 GOTO 1 ENDIF PRINT *,M END

Programa 1 Programa en Fortran 77 para calcular el menor nmero positivo de una aritmtica. El programa devuelve un entero M tal que 2M es el menor nmero real positivo normalizado. A=1. M=0
4

Problema 5 (2 puntos) Dada una aritmtica de precisin nita cualquiera, calcular la distancia que hay entre el nmero 1 y su inmediato superior, es decir, el nmero que va despus de 1, y la distancia entre el nmero 1 y su inmediato inferior. Vamos a llamar A, al conjunto de valores reales a los que da lugar una aritmtica de precisin nita, es decir ( ) t X an e A = 2 {0} 2n n=1 Dado un nmero real cualquiera y , al representarlo en una aritmtica de precisin nita se produce un error de redondeo, llamaremos y e A al nmero real que mejor aproxima a y dentro de A. Denicin 1 Dada una aritmtica de precisin nita, se dene la unidad de redondeo u como u = 2t Por ejemplo, si t = 24 (reales en simple precisin) u = 224 = 5. 97 108 , y en doble precisin (t = 53), u = 253 = 1. 1 1016 . Programa 3 Programa en Fortran 77 para calcular la unidad de redondeo de una aritmtica. El programa devuelve un entero M tal que u = 2M A=1. M=1 A=A*2. IF((1.+1./A).GT.1) THEN M=M+1 GOTO 1 ENDIF PRINT *,M END

serdis.dis.ulpgc.es y trabajar directamente sobre el terminal de conexin. Los cheros se pueden editar y corregir en entorno Windows. Compilar y ejecutar los programas 1, 2 y 3 para comprobar cules son el menor y el mayor nmero positivo, y la unidad de redondeo del ordenador en precisin simple. Dichos programas se encuentran en el directorio de la asignatura /users/asignaturas/ii-an de la mquina serdis.dis.ulpgc.es. Si ponemos en la cabecera del programa la instruccin IM P LICIT DOU BLE P RECISION (D)

cualquier variable cuyo nombre empiece por D ser un nmero real en doble precisin. Hacer las modicaciones pertinentes en los programas 1, 2 y 3, para comprobar cules son el menor y el mayor nmero positivo, y la unidad de redondeo del ordenador en doble precisin. Adems, hacer operaciones del tipo 1/0, 1/, /0, /, 1 e imprimir los resultados para ver cmo trata las excepciones el FORTRAN en la arquitectura de los ordenadores del laboratorio.

Problema 6 (4 puntos) Se considera una aritmtica de 16 bits donde se dedica 1 bit al signo, 9 bits a la mantisa (t = 10) y 6 bits al exponente (emin = 30 emax = 31). Escribir, si es posible, los siguientes nmeros en esta aritmtica: 1. 2, y los nmeros ms cercanos a 2 por arriba y por debajo. 2. El cero, el innito y NaN. 3. Los nmeros positivos mayor y menor de la aritmtica (teniendo en cuenta las excepciones). 4.
1 9.

5. 2

Prctica 1 (Aritmticas nitas, 2 horas) La lnea de comando para la compilacin de un programa en Fortran 77 tiene la forma: > f 77 prog 1.f o prog 1 Esta lnea compila el programa prog 1.f y genera el ejecutable prog 1. Para compilar un programa en Fortran, necesitamos una mquina que tenga instalado el compilador. Por ejemplo, la mquina serdis.dis.ulpgc.es tiene dicho compilador. Para utilizar el compilador desde un entorno Windows, basta con conectarse a travs de la utilidad SSH a

Problema 7 (2 1 1 2 1 + + B 3 5 2 2 2 B+A y BA

1
2

1 210

. puntos) Sean 1 = 23 1 2 + 26 +
1 27

= A . Calcular

Problema 8 (2 puntos) Sean emin , emax , los valores mnimo y mximo del exponente e. Demostrar que si emin < e < emax , entonces los nmeros: t ! X an 1 t 2e 2n 2 n=1 pertenecen al conjunto A de nmeros reales generados por la aritmtica de precisin nita.

A continuacin, mostraremos un resultado que indica el error de redondeo mximo que se produce al aproximar un nmero real cualquiera en una aritmtica de precisin nita. Teorema 2 Sean y emin , y emax los valores positivos menor y mayor de una aritmtica de precisin nita. Sea u la unidad de redondeo de dicha aritmtica. Si un nmero real z verica que y emin <| z |< y emax , entonces donde z e es el nmero ms cercano a z en la aritmtica. |zz e || z | u

que las variables A y B estn cercanas entre s con una tolerancia T OL si se cumple que | A B | max {| A |, | B |} T OL Este criterio es simtrico en el sentido de que trata de igual modo los nmeros A y B. Tambin se puede utilizar un criterio ms simple, como | A B || A | T OL pero en este caso le estamos dando una signicacin especial a A con respecto a B. Estos criterios de comparacin de nmeros funcionan bien salvo cuando los nmeros A y B estn muy prximos a 0. Por ejemplo, si B = 0, los criterios anteriores quedan | A || A | T OL lo cual es imposible (si T OL < 1), salvo que A tambin sea 0. Para evitar este comportamiento, se puede aadir al criterio un valor > 0 de la siguiente forma: | A B | (max {| A |, | B |} + ) T OL

donde a0 = 1 y, en general, an = 0 o an = 1. Adems, para un nmero natural t cualquiera tenemos que t ! t X X an 1 an e e 2 z2 + t 2n 2n 2 n=1 n=1

Demostracin. Un nmero real cualquiera z, que tomaremos positivo sin prdida de generalidad, se puede expresar como X an z = 2e 2n n=1

Por el problema anterior, el nmero que est a la derecha de la desigualdad tambin pertenece a la aritmtica de precisin nita, y por tanto |zz e | 2e 2t 2

Programa 4 Programa en Fortran 77 que determina si dos variables A, B son iguales con una tolerancia T OL (tomando el mximo de A, B ), con = 1010 READ *,A,B,TOL IF(IGUAL(A,B,TOL).EQ.0) THEN PRINT *,A=B segun la tolerancia TOL STOP ELSE PRINT *,A distinto de B segun la tolerancia TOL STOP ENDIF END FUNCTION IGUAL(A,B,TOL) IF(ABS(A).GT.ABS(B)) THEN IF(ABS(A-B).LE.(TOL*(ABS(A)+10.**(10.))) THEN IGUAL=0 RETURN ELSE IGUAL=1 RETURN ENDIF ELSE IF(ABS(A-B).LE.(TOL*(ABS(B)+10.**(10.))) THEN IGUAL=0 RETURN ELSE IGUAL=1
6

Ahora bien, como a0 = 1, se tiene que 2e < 2 | z | y, por tanto |zz e || z | 2t =| z | u con lo que queda demostrado el teorema. Problema 9 (2 puntos) Dado un nmero z e = P an 2e t n=1 2n , en una aritmtica de precisin nita. Calcular el nmero inmediatamente inferior a l en dicha aritmtica. Un resultado importante para la comparacin de dos nmeros es el siguiente: Teorema 3 Si z e1 , z e2 A son distintos entonces Demostracin: Ejercicio En muchos algoritmos, el test de parada incluye el hecho de que dos variables estn prximas entre s. para ello se ja un umbral o tolerancia T OL que por supuesto ser mayor que la unidad de redondeo u y expresaremos |z e1 z e2 | max {| z e1 |, | z e2 |} u

RETURN ENDIF ENDIF END 1 Asociado a cualquier aritmtica de precisin nita de nmeros reales, existen 4 operaciones bsicas, que son la suma, la resta, la multiplicacin y la divisin de nmeros reales dentro de la aritmtica. Nosotros no vamos a entrar en este curso en cmo se pueden denir algortmicamente estas operaciones. Solamente queremos mencionar que, a menudo, para minimizar el efecto de los redondeos en las operaciones, antes de realizarlas se aumenta la precisin de los nmeros reales (por ejemplo pasando de simple precisin a doble precisin) para, a continuacin, realizar la operacin en una aritmtica de mayor precisin y, nalmente, el resultado se redondea para pasarlo a la precisin inicial.

C=0.01 D=0 DO 1 K=1,2**7 B=B+A CONTINUE DO 2 K=1,100 D=D+C CONTINUE PRINT *,(1-B)*(10**10) PRINT *,(1-D)*(10**10) END

Adems, este programa permite identicar la base de la aritmtica con la que trabaja el ordenador. Como conclusin de este apartado, podemos extraer que, para ser ms precisos numricamente, cuando trabajamos con nmeros ms pequeos que la unidad deberamos pensar en trminos de 2m en lugar de 10m , que es como solemos hacerlo. Errores por Cancelacin. Estos errores se producen al restar nmeros de aproximadamente la misma magnitud. Hay que tener en cuenta que, al realizar operaciones sobre una variable, los errores de redondeo se van acumulando en la parte menos signicativa del nmero (los dgitos de menos valor), dejando relativamente intacta la parte ms signicativa del nmero, que corresponde a los dgitos de mayor valor. Por ello, al restar dos nmeros de magnitud parecida, se cancelan las partes signicativas, quedando la aportacin de los dgitos de menos valor, que es donde ms error hay. Por ejemplo, en el programa Fortran anterior, se ha utilizado este fenmeno de cancelacin para poner de maniesto la diferencia entre trabajar con bases distintas. En los algoritmos, muchas veces se intenta evitar la posibilidad de restar 2 nmeros que pudieran ser de magnitud parecida. Por ejemplo, en la conocida frmula del clculo de races de un polinomio de grado 2, ax2 + bx + c = 0 (con a 6= 0) b b2 4ac x= 2a una forma de evitar la cancelacin que se produce cuando b b2 4ac consiste en calcular primero la raz de mayor valor absoluto, es decir b + sign(b) b2 4ac x1 = 2a y despus la segunda raz x2 utilizando la relacin x1 x2 = c a. Por lo tanto, en los algoritmos, se deber evitar, en la medida de lo posible, la resta de variables que tengan una magnitud cercana. Problema 10 (1 punto) Calcular las races del polinomio P (x) = x2 2x + 0.01 evitando los errores de cancelacin.

Fuentes de errores numricos Dentro de las posibles fuentes de errores numricos, destacaremos 3 tipos: Errores de redondeo. Son los que se producen al redondear un nmero real para poder expresarlo en una aritmtica de precisin nita. Como vimos en la seccin anterior, este error est controlado por la denominada unidad de redondeo, u = 2t , de tal forma que, al tomar un nmero real z y aproximarlo en la aritmtica por el valor z e A ms prximo, el error de redondeo tiene la expresin: |zz e || z | u Errores de cambio de base. Este tipo de errores se produce al realizar un cambio de base para representar un nmero real. Como vimos en la seccin anterior, las aritmticas estndares de ordenador trabajan en base 2. Sin embargo, los humanos pensamos y razonamos en trminos de nmeros en base 10. Por ejemplo, nmeros tan naturales para nosotros como 0.1 no pueden representarse de forma exacta en una aritmtica en base 2. Esto quiere decir que, al representar 0.1 el ordenador, va a producir un pequeo redondeo, y este pequeo error de redondeo se puede ir propagando hasta producir errores apreciables. Por ejemplo, parece razonable pensar que, cuando sumamos 100 veces el nmero 0.01, el resultado sea exactamente 1, pero, no es as. Sin embargo, si sumamos 128 = 27 veces el nmero 27 , el resultado s es exactamente 1. Este resultado se pone de maniesto en el siguiente programa Fortran: Programa 5 Programa en Fortran 77 para comprobar la diferencia entre trabajar en base 10 y trabajar en base 2. A=2**(-7.) B=0
7

Problema 11 (3 puntos) Escribir el cdigo en Fortran 77 para implementar el clculo de las races de ax2 + bx + c = 0 evitando los errores de cancelacin y teniendo en cuenta las diferentes opciones que aparecen cuando a 6= 0 y a = 0.

Mtodo de Newton-Raphson ste es, sin duda, uno de los mtodos ms importantes y tiles para el clculo de races. Dada una aproximacin inicial de la raz x0 , se busca, a partir de x0 , una aproximacin mejor x1 de la raz, de la siguiente forma: Se sustituye la funcin f (x) por el valor de su desarrollo de Taylor centrado en x0 hasta el orden 1, es decir f (x) f (x0 ) + f 0 (x0 )(x x0 ) que corresponde a un polinomio de grado 1, y a continuacin se calcula x1 como el cero de este polinomio, es decir: f (x0 ) x1 = x0 0 f (x0 ) y por tanto, de forma general, obtenemos, a partir de x0 una secuencia xn de valores que van aproximando la raz, denidos por f (xn ) xn+1 = xn 0 f (xn ) A continuacin veremos una aplicacin de este mtodo para calcular la raz cuadrada de un nmero positivo A, teniendo en cuenta que si x = A, entonces f (x) = x2 A = 0. Programa 6 Programa en Fortran 77 para calcular una aproximacin de la raz cuadrada de un nmero positivo A con una tolerancia T OL, y un nmero mximo de iteraciones N max . READ *,A,TOL,Nmax IF(A.LE.0) THEN PRINT *,El numero A no es positivo STOP ENDIF X0=(1+A)/2. DO 1 K=1,Nmax X1=X0-(X0*X0-A)/(2.*X0) IF(IGUAL(X0,X1,TOL).EQ.0) THEN PRINT *,LA RAIZ DE A ES,X0 STOP ELSE X0=X1 ENDIF CONTINUE PRINT *,No mximo de iterac. excedido END

CLCULO DE LOS CEROS DE UNA FUNCIN En esta seccin vamos a estudiar algunos mtodos para calcular los ceros de una funcin de una variable, f (x), esto es, los valores de x para los cuales f (x) = 0.

Mtodo de la biseccin Se considera un intervalo [a, b] donde la funcin f (x) cambia de signo, es decir f (a) f (b) < 0. El mtodo consiste en ir dividiendo el intervalo [a, b] por la mitad de la siguiente forma: b b Se toma el punto medio a+ Si f ( a+ 2 . 2 ) = 0 ya a+b hemos encontrado la raz x = 2 . En caso contrario, b a+b si f ( a+ 2 ) f (b) < 0 entonces hacemos a = 2 y volvemos a subdividir el nuevo intervalo [a, b]. Si, por el contrario, b a+b f (a) f ( a+ 2 ) < 0, entonces hacemos b = 2 y volvemos a empezar. Las sucesivas subdivisiones del intervalo [a, b] van aproximando la raz.

Problema 12 (2 puntos) Calcular 2 iteraciones del algoritmo de la biseccin para buscar un cero de la funcin f (x) = x2 2 en el intervalo [2, 0]. Problema 13 (3 puntos) Escribir el cdigo en Fortran 77 para implementar el mtodo de la biseccin

Mtodo de la Regula-falsi (regla de lo falso) Este mtodo es una variacin del anterior en el sentido b siguiente: En lugar de tomar el punto medio a+ 2 del intervalo, se considera el punto de interseccin de la recta que pasa por los puntos (a, f (a)) y (b, f (b)) con el eje x. Es decir, en el razonamiento anterior, se sustituye el valor b xm = a+ 2 por el valor xm ba =a f (a) f (b) f (a)

Problema 14 (2 puntos) Calcular 2 iteraciones del algoritmo de la regula-falsi para buscar un cero de la funcin f (x) = x2 2 en el intervalo [0, 2]. Problema 15 (3 puntos) Escribir el cdigo en Fortran 77 para implementar el mtodo de la Regula-falsi.

El mtodo de la Secante Este mtodo es una variante del mtodo de Newton para el caso en que no sea posible calcular la derivada de f (x)

de una forma analtica. En este caso, se sustituye el valor f 0 (xn ) en el algoritmo, por el valor f (xn ) f (xn1 ) xn xn1 que corresponde a una aproximacin de f 0 (xn ). Para iniciar el algoritmo, son necesarias dos aproximaciones iniciales, x0 y x1. Problema 16 (1 punto) Calcular una iteracin del mtodo de Newton-Raphson para calcular un cero de la funcin f (x) = x3 3 partiendo de x0 = 1. Problema 17 (1 punto) Calcular una iteracin del mtodo de la secante para calcular un cero de la funcin f (x) = x3 3 partiendo de x0 = 0, x1 = 1. Problema 18 (3 puntos) Escribir un programa en Fortran 77 que implemente el mtodo de la Secante utilizando reales de doble precisin. Los datos de entrada son las aproximaciones iniciales, x0 y x1 , el nmero mximo de iteraciones, N max, y la tolerancia, T OL, para determinar la igualdad de dos nmeros.

f 0 (xn1 )

f (xn1 )f (xn2 ) xn1 xn2

f 00 (xn1 ) (xn1 2

xn2 )

Como veremos posteriormente, la eleccin de las frmulas anteriores equivale a aproximar f (x) por la parbola que pasa por los puntos (xn3 , f (xn3 )) , (xn2 , f (xn2 )) y (xn1 , f (xn1 )), y calcular posteriormente las derivadas de dicha parbola. Programa 7 Programa en Fortran 77 donde se muestra un ejemplo de manejo de nmeros complejos. IMPLICIT COMPLEX (C) CX=(-1,0) CY=CF(CX) PRINT *,CY END FUNCTION CF(CX) IMPLICIT COMPLEX(C) CF=SQRT(CX) END

Prctica 2 (Mtodo de Mller, 4 horas) Implementar el mtodo de Mller. Crear un programa en Fortran 77 que tenga como datos de entrada: las tres primeras aproximaciones de la raz, x0 , x1 y x2 , el nmero mximo de iteraciones N max, y la tolerancia T OL, para determinar la igualdad entre dos nmeros. La funcin a la que se le calculan los ceros se dene en el propio cuerpo del programa. Utilizar el mtodo para calcular los posibles ceros de las siguientes funciones: 1. f (x) = x2 + 1 2. f (x) = (x2 + 1)x 3. f (x) = ex 1 4. f (x) = x 2 5. f (x) = 1

Mtodo de Mller Este mtodo es de utilidad para calcular races complejas de funciones, como por ejemplo polinomios. Es una generalizacin del mtodo de Newton-Raphson, en el sentido de que, en lugar de quedarnos con la parte lineal del desarrollo de Taylor de la funcin, nos quedamos con los trminos hasta el orden 2, de tal forma que hacemos f 00 (xn1 ) f (x) f (xn1 )+f (xn1 )(xxn1 )+ (xxn1 )2 2
0

donde xn1 es una aproximacin de una raz compleja de la funcin f (x). Para obtener una aproximacin xn mejor de la raz calculamos los ceros del polinomio de segundo grado anterior, es decir q f 0 (xn1 ) (f 0 (xn1 ))2 2f (xn1 )f 00 (xn1 ) xn = xn1 + f 00 (xn1 ) De las dos posibles races, nos quedamos con aqulla que sea ms cercana a xn1 . Dicha raz ser la aproximacin xn de la raz de f (x) en la etapa n. En el caso en que f 00 (xn1 ) = 0, calculamos xn por el mtodo de Newton-Raphson. En el caso en que no conozcamos analticamente el valor de la primera y segunda derivada de f (x), podemos utilizar las siguientes aproximaciones: f 00 (xn1 ) 2
f (xn2 )f (xn3 ) f (xn1 )f (xn2 ) xn2 xn3 xn1 xn2

Nota: Utilizar como tolerancia T OL = 0.0001 y N max = 100. Para el ejemplo 1 tomar como datos iniciales x0 = (3, 0), x1 = (2, 0) x2 = (1, 0). Para el ejemplo 2 tomar como datos iniciales x0 = (3, 0), x1 = (2, 0), x2 = (1, 0) y x0 = (1, 0), x1 = (0.1, 0), x2 = (0.01, 0). Para el ejemplo 3 tomar como datos iniciales x0 = (3, 0), x1 = (2, 0), x2 = (1, 0). Para el ejemplo 4 tomar como datos iniciales x0 = (3, 0), x1 = (2, 0), x2 = (1, 0). Para el ejemplo 5 tomar como datos iniciales x0 = (3, 0), x1 = (2, 0), x2 = (1, 0).

xn3 xn1

Clculo de las races de un polinomio Los polinomios son un tipo particular de funciones que, por su gran utilidad, requieren un anlisis algo ms detallado. Nos ocuparemos slo de las races reales de los polinomios, aunque tambin hay que indicar que existen algoritmos verstiles para el clculo de las races complejas, como, por ejemplo, el mtodo de Mller, visto anteriormente. A menudo, los alumnos pueden tener la impresin de que los algoritmos y tcnicas que se aprenden en una asignatura como anlisis numrico les sern de poca utilidad en el futuro. Mi experiencia como docente en esta disciplina es que, con frecuencia, una vez terminada la carrera y en el desarrollo de la actividad profesional, aparecen problemas que, para su resolucin, requieren el uso de alguna de las tcnicas presentadas en esta asignatura. El siguiente ejemplo es una buena prueba de ello. Ejemplo 2 Actualmente estn muy de moda los planes de pensiones. Las entidades nancieras venden a sus clientes los planes de pensiones de la siguiente forma, por ejemplo: si usted aporta durante 30 aos 100.000 pesetas todos los aos, aportacin que se va incrementando cada ao en un 10%, es decir el primer ao 100.000, el segundo ao 110.000, etc., entonces, le aseguramos que al nal del trigsimo ao tendr a su disposicin la cantidad de 26.000.000 de pesetas. Ahora bien, el dato ms importante para el futuro pensionista (que a menudo oculta la entidad nanciera) es el inters nominal anual que se est aplicando ao tras ao al dinero depositado. Si llamamos i al inters nominal anual que se aplica al dinero, la ecuacin que debemos resolver para obtener i es
29 X

resultado muestra una forma rpida y sencilla de evaluar simultneamente un polinomio y su derivada. Teorema 4 (Mtodo de Horner). Sea P (x) = an xn + an1 xn1 + ...... + a0 , si denimos bk como bn = an bk = ak + bk+1 x0 entonces se verica que P (x0 ) = b0
1 2 P 0 (x0 ) = bn xn + bn1 xn + ........ + b1 0 0

Demostracin Sea el polinomio Q(x) = bn xn1 + bn1 xn2 + ..... + b1 . Veamos que se verica que P (x) = (x x0 )Q(x) + b0 Efectivamente, dado que ak = bk bk+1 x0 y an = bn , obtenemos la igualdad anterior teniendo en cuenta que (x x0 )Q(x) + b0 = bn xn + (bn1 bn x0 )xn + ..... + (b0 b1 x0 ) Por ltimo, obtenemos P 0 (x) = (x x0 )Q0 (x) + Q(x) de donde sale obviamente que P 0 (x0 ) = Q(x0 ). Este teorema permite calcular el polinomio y su derivada en un punto de forma muy sencilla, como muestra el siguiente programa Fortran. Programa 8 El siguiente programa en Fortran 77 calcula la evaluacin de un polinomio y su derivada en un punto X, almacenndolos en las variables P X y P P X. PARAMETER(NMAX=1000) DIMENSION A(0:NMAX) COMMON/POL/PX,PPX PRINT *,Escribir Grado del Polinomio READ *,N IF(N.GT.NMAX) THEN PRINT *, Grado Superior al Maximo STOP ENDIF PRINT *,EscriBir Coef. Polin. DO 1 K=0,N READ *,A(K) PRINT *,Escribir valor de X READ *,X CALL HORNER(N,A,X) PRINT *,P(X)= ,PX PRINT *,P (X)= ,PPX END

(100.000) (1.1) (1. + i)30n = 26.000.000

n=0

Ahora bien, para calcular i, debemos calcular las races del polinomio en i dado por P (i) =
29 X

n=0

(100.000) (1.1) (1. + i)30n 26.000.000

El clculo de las races de este polinomio nos lleva a i = 4.487%. Este ejemplo muestra como un problema nanciero sencillo nos lleva a la necesidad de calcular los ceros de un polinomio.

Algoritmo de Horner para evaluar un polinomio en un punto Dado un polinomio P (x) = an xn + an1 xn1 + ...... + a0 , ste se puede expresar tambin de la forma siguiente: P (x) = a0 + x (a1 + x (a2 + x (a3 + x(..... + x (an1 + xan ))))) . Adems, si queremos utilizar un mtodo de clculo de races como el de Newton-Raphson, necesitamos evaluar tanto el polinomio como su derivada. El siguiente
10

SUBROUTINE HORNER(N,A,X) DIMENSION A(0:*) COMMON/POL/PX,PPX PX=A(N) PPX=A(N) DO 1 K=N-1,1,-1 PX=PX*X+A(K) PPX=PPX*X+PX CONTINUE PX=PX*X+A(0) END

Demostracin [Is-Ke] Pg. 126. Para la estimacin del nmero de races reales negativas, se aplica el teorema anterior cambiando x por x. Ejemplo 3 Sea P (x) = 3x4 + 10x3 10x 3, los signos de los coecientes son: + + . Por tanto, hay un nico cambio de signo y hay una raz positiva. Si cambiamos x por x, los signos de los coecientes son + +. Por tanto, hay 3 cambios de signo y hay una o tres races negativas. En este caso, las races son x = 1, 1, 3, 1 3. Problema 19 (1 punto) Calcular una iteracin del mtodo de Mller para calcular un cero de la funcin f (x) = x3 3 partiendo de x0 = 1 (Calculando las derivadas de la funcin de forma exacta) y quedndonos con la raz ms cercana a x0 .

Nota: La declaracin P ARAM ET ER(N M AX = 1000) permite denir constantes. La declaracin DIM EN SION A(0 : N M AX ) dene un vector A, de reales en precisin simple, de tamao N M AX + 1, y numerados desde 0 hasta N M AX. La declaracin COM M ON/P OL/P X, P P X dene la zona de memoria denomina P OL donde se encuentran las variables globales P X, P P X. Para que una subrutina pueda hacer uso de esas variables, debe incluir en su inicio la misma sentencia COM M ON. Otros resultados interesantes de utilidad para localizar en qu zonas pueden estar las races del polinomio son: Teorema 5 Sea un polinomio P (x) = an xn + an1 xn1 + ...... + a0 con an 6= 0, entonces las races reales de P (x) estn en el intervalo maxk=0,..,n1 | ak | maxk=0,..,n1 | ak | 1 ,1 + | an | | an | Demostracin Veamos que si |x| > 1 + entonces |P (x)| > 0. Efectivamente, |P (x)| |an xn |
k=0,,,n1 maxk=0,..,n1 |ak | , |an |

Problema 20 (2 puntos) Dado el polinomio P (x) = 2x3 + 3x2 + 4x + 5, evaluar el polinomio y su derivada en el punto x = 2, utilizando el algoritmo de Horner.

Problema 21 (1 punto) Calcular el nmero mximo de races positivas y negativas del polinomio x5 35x3 +30x2 + 124x 120, y localizarlas en un intervalo. Teorema 7 Entre dos races de una funcin derivable f (x) hay una raz de f 0 (x). Demostracin Teorema de Rolle. Teorema 8 La derivada k e sima P k) (x) del polinomio n n1 P (x) = an x + an1 x + ......a0 es P k) (x) = k! an n! nk an1 (n 1) ! nk1 + + ... + ak x x (n k )! (n k 1)! 1

max

|ak |

1 |x| k=0,,,n1 1 |x| n |x| n = |an | |x| max |ak | k=0,,,n1 |x| 1 |x|n (|an | (|x| 1) maxk=0,,,n1 |ak |) = >0 |x| 1 = |an | |x|n max |ak |

n 1 X k=0

|x| =
n

Demostracin Es inmediato, derivando sucesivamente el polinomio P (x). Los dos resultados anteriores permiten aislar las posibles races de P (x) de la forma siguiente: Si llamamos maxk=0,..,n1 |ak | Pmax a 1 + , entonces las m races distintas |an | x1 < x2 < .... < xm de P (x) estn intercaladas con las 0 0 0 races x0 1 < x2 < .... < xm1 de P (x), es decir
0 0 Pmax x1 x0 1 x2 x2 ... xm1 xm Pmax

Teorema 6 Sea un polinomio P (x) = an xn + an1 xn1 + ...... + a0 , entonces el nmero de races positivas es igual al nmero de cambios de signo en los coecientes an , ......, a0 (saltando los posibles coecientes nulos), o bien ese mismo nmero menos un nmero par.

Volviendo a aplicar este razonamiento sucesivamente sobre P 0 (x), P 00 (x), etc., para intercalar los ceros de una derivada con los ceros de la siguiente, podemos deducir el siguiente algoritmo para aislar todas las races de un Polinomio P (x):

11

1. Se parte del intervalo [Pmax , Pmax ] 2. Se calcula la raz x1 del Polinomio P n1) (x) (que es un polinomio de grado 1) 3. Para k = n 2, ..., 1 Pmax <
k+1) x1
-2.5

n1)

50 25 0

-1.25 -25 -50 -75 -100

1.25

2.5 x

Se calculan las races de P k (x) en los intervalos <


k+1) x2

< ... <

+1) xk mk+1

< Pmax

Al nal del procedimiento, habremos aislado completamente a las races de P (x). Este procedimiento se puede utilizar para grados relativamente pequeos (n < 30), puesto que su utilizacin requiere el clculo de factoriales, que se dispara rpidamente. Por ejemplo, 30! = 2. 6 1032 . Existen mtodos mejores para el clculo de races de polinomios, pero que utilizan tcnicas ms complejas. El mtodo presente en el siguiente programa, que combina el aislamiento de las races del polinomio a travs de los ceros de sus derivadas con el mtodo de Newton-Raphson, funciona razonablemente bien para grados de polinomios pequeos. En el caso de races mltiples los resultados acumulan mayores errores de redondeo debido a que tanto el polinomio como su derivada son cero en el mismo punto. Ejemplo 4 Consideremos el polinomio P (x) = x4 x3 7x2 + x +6, que tiene por raices x = 1, 3, 1, 2. Para este polinomio, tenemos que Pmax = 8. Por tanto, las races estn en el intervalo [8, 8]. Por otro lado su grca es
y 60

Polinomio P 0 (x) = 4x3 3x2 14x + 1 La derivada segunda de este polinomio es P 00 (x) = 12x2 6x 14,cuyas races son x = 0.858, 1. 358 y cuya grca es
y 125

100

75

50

25 0 -2.5 -1.25 0 1.25 2.5 x

Polinomio P 00 (x) = 12x2 6x 14 La derivada tercera de este polinomio es P 000 (x) = 24x 6, cuya raz es x = 0.25, y cuya grca es
y 20 50 0 -2.5 -1.25 0 1.25 2.5 x -2.5 -1.25 -25 25 0 0 1.25 2.5 x

40

Polinomio P (x) = x4 x3 7x2 + x + 6

-50 -75

La derivada de este polinomio es P 0 (x) = 4x3 3x2 14x + 1,cuyas races son x = 1. 574, 7. 05 102 , 2. 253 y cuya grca es

Polinomio P 000 (x) = 24x 6 El mtodo funcionara de la siguiente forma: Primero calculamos el cero de P 000 (x), es decir x = 0.25, por tanto los ceros de P 00 (x) estaran en los intervalos [2.166, 0.25] y [0.25, 2.166]. Puesto que hay cambio de signo de P 00 (x) en cada uno de estos intervalos, buscamos las races de P 00 (x) en esos intervalos, utilizando cualquier mtodo numrico de los vistos anterioremente, por ejemplo, el mtodo de la Regula-falsi, obteniendo 0.858 para el inter12

valo [2.166, 0.25] y 1. 358 para el intervalo [0.25, 2.166]. Por tanto, las posibles races de P 0 (x) estarn en los intervalos [4.5, 0.858], [0.858, 1.358] y [1.358, 4.5]. Buscamos ahora las races de P 0 (x) es esos intervalos, obteniendo x = 1. 574, 7. 05 102 y 2. 253. Por tanto, los posibles ceros de P (x) estarn en los intervalos [8, 1. 574], [1.574, 7. 05 102 ], [7. 05 102 , 2. 253] y [2.253, 8]. Buscamos, nalmente, las races de P (x) en cada un de esos intervalos y obtenemos x = 2, 1, 1, 3. Problema 22 (2 puntos) Aislar en intervalos las races del polinomio P (x) = 20x3 45x2 + 30x 1.

Programa 9 Programa en Fortran 77 donde se implementa la funcin ICEROP OL(A, R, T OL, N, N maxx), que devuelve las races reales de un polinomio. Dicha subrutina tiene como parmetros un vector A(), donde estn los coecientes del polinomio, un vector R(), donde se guardan las races del polinomio una vez calculadas, la tolerancia T OL, con la que consideramos que dos nmeros son iguales, el grado del polinomio N, y el nmero mximo de iteraciones N max xx, para el proceso de Newton-Raphson. Tambin se dene la funcin auxiliar RP (N, A, X 1, X 2, T OL, N maxx, R, L), que devuelve la raz del polinomio que se obtiene aplicando el mtodo de Newton-Raphson, tomando como valor inicial el punto medio del intervalo [X 1, X 2].

PARAMETER(NMAX=30) DIMENSION A(0:NMAX),R(0:NMAX-1) COMMON/POL/PX,PPX PRINT *,Escribir Grado del Polinomio READ *,N IF(N.GT.NMAX) THEN PRINT *, Grado Superior al Maximo STOP ENDIF PRINT *,Escribir Coef. Polin. DO 1 K=0,N 1 READ *,A(K) PRINT *, Escribir Tolerancia READ *,TOL PRINT *, Escribir No. iter. Max. para NewtonRaphson READ *,Nmaxx M=ICEROPOL(A,R,TOL,N,Nmaxx) PRINT *,El Pol. tiene,M, raices DO 9 K=0,M-1 9 PRINT *,R(K) END

DIMENSION A(0:*), R(0:*), F(0:NMAX), AP(0:NMAX), PI(0:NMAX+1) COMMON/POL/PX,PPX **** Calculo de los factoriales F(0)=1. DO 2 K=1,N 2 F(K)=F(K-1)*K *** Calculo intervalo inicial PMAX=ABS(A(0)) DO 3 K=1,N-1 IF(PMAX.LT.ABS(A(K)) THEN PMAX=ABS(A(K) ENDIF 3 CONTINUE PMAX=PMAX/ABS(A(N))+1. PI(0)=-PMAX PI(1)=-(A(N-1)*F(N-1))/(A(N)*F(N)) DO 10 K=2,N 10 PI(2)=PMAX *** Calculo de los coecientes del *** polinomio derivada DO 7 K=2,N 7 PI(K)=PMAX DO 4 K=N-2,0,-1 DO 5 L=0,N-K AP(L)=A(L+K)*(F(K+L)/F(L)) 5 CONTINUE ***CALCULAR LOS CEROS DE AP EN LOS INTERVALOS PI() DO 6 L=1,N-K PI(L)=RP(N-K,AP,PI(L1),PI(L),TOL,Nmaxx,R,L-1) 6 CONTINUE 4 CONTINUE *** Pasamos las raices al vector R() M=0 DO 8 K=1,N IF(R(K-1).EQ.0) THEN R(M)=PI(K) M=M+1 ENDIF 8 CONTINUE ICEROPOL=M END

FUNCTION ICEROPOL(A,R,TOL,N,Nmaxx) PARAMETER(NMAX=30)


13

FUNCTION RP(N,A,X1,X2,TOL,Nmaxx,R,L) DIMENSION A(0:*),R(0:*) COMMON/POL/PX,PPX R(L)=1. IF (X1.EQ.X2) THEN RP=X1 RETURN ENDIF RP=(X1+X2)/2. DO 1 K=1,Nmaxx CALL HORNER(N,A,RP) IF (PPX.EQ.0.) THEN IF(PX.EQ.0.) THEN

R(L)=0. RETURN ELSE RETURN ENDIF ELSE RP1=RP-PX/PPX IF(IGUAL(RP1,RP,TOL).EQ.0) THEN RP=RP1 R(L)=0. RETURN ELSE RP=RP1 ENDIF ENDIF CONTINUE END

Ejemplo 5 Consideremos una funcin f (x) = ex , vamos a interpolarla en los puntos x0 = 0, x1 = 1 y x2 = 1. Para calcular P2 (x), el polinomio interpolador de Lagrange en estos puntos, calcularamos los polinomios base: (x + 1)(x 1) 1 x(x 1) 2 x(x + 1) 2

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

siendo el polinomio interpolador:

P2 (x) = e0 Problema 23 (2 puntos) Aislar en intervalos las races del polinomio P (x) = 2x3 + 3x2 12x + 1.

x(x + 1) (x + 1)(x 1) x(x 1) + e1 +e 1 2 2

INTERPOLACIN DE FUNCIONES I El problema general de la interpolacin de funciones consiste en, a partir del conocimiento del valor de una funcin (y eventualmente de sus derivadas) en un conjunto nito de puntos, aproximar el valor de la funcin fuera de ese conjunto nito de puntos.

En la siguiente gura comparamos la grca del polinomio P2 (x) (trazo continuo) con la grca de la funcin ex (trazo discontinuo)
y 4

Interpolacin por polinomios de Lagrange Sea una funcin f (x) que conocemos en un conjunto nito de valores {xi }i=0,..,N . Es decir, sabemos que f (xi ) = fi . El polinomio interpolador de Lagrange PN (x) de f (x) en los puntos {xi }i=0,..,N , es el nico polinomio de grado menor o igual que N tal que PN (xi ) = f (xi ) i = 0, .., N
-1.5 -1 -0.5

0.5

1 x

1.5

PN (x) se puede expresar en trmino de los denominados polinomios base de Lagrange P i (x), denidos como: P i (x) = N j 6=i (x xj )

Problema 24 (2 puntos) Calcular el polinomio interpolador de Lagrange P3 (x) de la funcin f (x) = sen(x) en 3 los puntos 0, 2, y 2 .

N j 6=i (xi xj )

estos polinomios base tienen la propiedad fundamental siguiente 1 si i = j P i (xj ) = 0 si i 6= j Por tanto, el polinomio interpolador de Lagrange puede expresarse como PN (x) =
N X i=0

Teorema 9 El polinomio interpolador de Lagrange es el nico polinomio de grado igual o inferior a N tal que PN (xi ) = f (xi ) i = 0, .., N

f (xi )P i (x)

Demostracin Sea P (x) un polinomio de grado inferior o igual a N que verique que P (xi ) = f (xi ) i = 0, .., N. Entonces, el polinomio Q(x) = P (x) PN (x) es un polinomio de grado inferior o igual a N que verica que Q(xi ) = 0 y, por tanto, posee N + 1 races, lo cual es imposible, salvo que Q(x) sea identicamente igual a cero. Por tanto Q(x) 0 y P (x) = PN (x).

14

Error de interpolacin de Lagrange y polinomios de Chebychev Evidentemente, al aproximar f (x) por el polinomio interpolador PN (x) en un intervalo [a, b] se comete, en general, un error de interpolacin, que viene determinado por el siguiente teorema. Teorema 10 Sea f (x) una funcin, y PN (x) su polinomio interpolador de Lagrange en los puntos {xi }i=0,..,N [a, b] y x [a, b], entonces f (x) PN (x) = f N +1) ( ) N (x xi ) (N + 1)! i=0

entonces max | N i=0 (x


x[a,b]

x[a,b]

xi ) |=

Demostracin La demostracin para el intervalo [1, 1] se encuentra en [Ki-Ch] Pg. 292-294. La demostracin para un intervalo cualquiera [a, b] se obtiene fcilmente transformando el intervalo [1, 1] en [a, b]. Por tanto, utilizando este resultado, el error de interpolacin mximo viene determinado por: | f (x) PN (x) | maxx[a,b] f N +1) ( ) (N + 1)!2N ba 2 N +1

para cualquier otra eleccin posible de valores de interpolacin x ej .

max | N ej ) | j =0 (x x

ba 2

N +1

1 2N

donde es un valor intermedio perteneciente a [a, b]. Demostracin Si x = xi , el error de interpolacin es cero y por tanto la frmula anterior es vlida. Consideremos ahora x distinto a los xi y denamos w(t) = N i=0 (t xi ) f (x) PN (x) = w(x) (t) = f (t) PN (t) w(t) La funcin (t) tiene al menos n + 1 ceros en los puntos xi y en el punto x. Por tanto, su funcin derivada 0 (t) tiene al menos n ceros repartidos entre los ceros de (t). Anlogamente, 00 (t) tiene al menos n 1 ceros y as sucesivamente hasta llegar a N +1 (t), que tiene al menos 1 cero. Si llamamos a dicho cero, obtenemos N +1 ( ) = f N +1) ( ) (N + 1)! de donde, despejando y sustituyendo por su valor, obtenemos el resultado del Teorema. Problema 25 (2 puntos) Calcular la expresin del error de interpolacin al aproximar la funcin f (x) = sen(x) en el intervalo [0, 2] interpolando en los puntos 0, 2, y 3 , y acotarlo superiormente. 2 La cuestin que vamos a abordar en este apartado es, en el caso en que queramos interpolar una funcin en un intervalo [a, b], y que nosotros podamos elegir los valores de interpolacin xi , cmo elegirlos de tal forma que el error de interpolacin sea mnimo. Para ello, elegiremos los puntos xi tales que N i=0 (x xi ) sea lo ms pequeo posible en [a, b]. Teorema 11 Sea N 0, y un intervalo [a, b] Se consideran los puntos xi dados por ba 2i + 1 1 + cos i = 0, ..., N xi = a + 2 2N + 2

Ejemplo 6 Se considera [a, b] = [0, 1] y N = 5 (es decir 6 puntos de interpolacin). Los puntos de interpolacin dados por el teorema anterior son: x0 x1 x2 x3 x4 x5 = = = = = = . 982 96 . 853 55 . 629 41 . 370 59 . 146 45 1. 703 7 102

Problema 26 (2 puntos) Calcular el error mximo de interpolacin en el intervalo [0, 1] al interpolar la funcin cos(x) en los puntos descritos en el ejemplo anterior. En el caso de que [a, b] = [1, 1], los valores ptimos de interpolacin xi dados por la frmula anterior son las races de los denominados polinomios de Chebychev, TN (x), construidos de la manera siguiente: T0 (x) = 1 T1 (x) = x TN (x) = 2xTN 1 (x) TN 2 (x) Mtodo de diferencias de Newton para el clculo del polinomio interpolador de Lagrange Numricamente, el clculo de PN (x) a travs de los polinomios base necesita de la evaluacin de N + 1 polinomios de grado N. Adems, si queremos aadir un nuevo punto de interpolacin, debemos cambiar todos los polinomios base de Lagrange. Un mtodo ms directo para el clculo de PN (x) es el denominado mtodo de diferencias de

15

Newton. El mtodo consiste en ir calculando progresivamente los polinomios Pk (x) que interpolan la funcin en los puntos x0 , ..., xk de la siguiente forma: P0 (x) = a0 P1 (x) = P0 (x) + a1 (x x0 ) P2 (x) = P1 (x) + a2 (x x0 )(x x1 ) ... PN (x) = PN 1 (x) + aN (x x0 )(x x1 )...(x xN 1 ) A los coecientes ak los denotamos por ak = f [x0 , ..., xk ] Ejemplo 7 Vamos a interpolar la funcin f (x) = ex en los puntos x0 = 0, x1 = 1 y x2 = 2. P0 (x) = 1 P1 (x) = 1 + a1 x Como P1 (1) debe ser igual a e, despejando obtenemos a1 = e 1 Por ltimo P2 (x) = P1 (x) + a2 x(x 1)

Demostracin En primer lugar, observamos que f [xi , ..., xi+k ] indica, para cada Pk (x), el coeciente que acompaa a la potencia xk en el polinomio interpolador Pk (x) para los puntos xi , ..., xi+k . Como el polinomio interpolador es nico, f [xi , ..., xi+k ] no depende del orden en que tomemos los puntos xi , ..., xi+k y, por tanto: f [xi , ....., xi+k ] = f [xi+k , ....., xi ] Consideremos ahora el polinomio interpolador Qk (x) que interpola en los puntos xi+k , ..., xi , es decir, cambiando el orden de los puntos. Qk (x) se puede escribir como Qk (x) = b0 + b1 (x xi+k ) + b2 (x xk+i )(x xk+i1 ) + ... donde bj = f [xi+k , .., xi+kj ] Por la unicidad del polinomio interpolador obtenemos que Pk (x) = Qk (x) y, por tanto ak = f [xi , ....., xi+k ] = f [xi+k , ....., xi ] = bk De nuevo, por la unicidad del polinomio interpolador, los coecientes que acompaan a la potencia xk1 en ambos polinomios coinciden y, por tanto: ak1 ak
k 1 X j =0

Como P2 (2) debe ser igual a e2 , despejando obtenemos e2 P1 (2) a2 = 2 Por tanto, el polinomio P2 (x) lo expresamos como P2 (x) = 1 + (e 1)x + e2 2e + 1 x(x 1) 2

xi+j = bk1 bk

k X j =1

xi+j

Despejando obtenemos ak = bk1 ak1 xk+i xi

Finalmente obtenemos el resultado del teorema, teniendo en cuenta que ak1 bk1 = f [xi , ...., xi+k1 ] = f [xi+k ...., xi+1 ] = f [xi+1 ...., xi+k ]

Como veremos en el teorema siguiente, los coecientes f [x0 , ..., xk ], que se denominan diferencias divididas de Newton, verican las siguientes propiedades: f [xi ] = f (xi ) f [xi+1 ] f [xi ] f [xi , xi+1 ] = xi+1 xi . f [xi+1 , .., xi+k ] f [xi , .., xi+k1 ] f [xi , .., xi+k ] = xi+k xi Teorema 12 Si denotamos por ak = f [x0 , .., xk ], entonces el polinomio de interpolacin de Lagrange PN (x) viene dado por PN (x) =
N X 1 ak k i=0 (x xi )

Ejemplo 8 Sea f (x) = ex , si interpolamos f (x) en los puntos x0 = 0, x1 = 1, x2 = 2, x3 = 3, obtenemos el polinomio interpolador de la siguiente forma: f [0, 1] = e1 1 f [1, 2] = e2 e1 f [2, 3] = e3 e2 e2 2e + 1 f [0, 1, 2] = 2 e3 2e2 + e1 f [1, 2, 3] = 2 e3 3e2 + 3e1 1 f [0, 1, 2, 3] = 6 Por tanto el polinomio interpolador de Lagrange es: P3 (x) = 1 + (e 1) x + e2 2e + 1 x(x 1) + 2 e3 3e2 + 3e1 1 x(x 1)(x 2) 6

k=0

donde los coecientes f [xi , ..., xk ] verican f [xi+1 , .., xi+k ] f [xi , .., xi+k1 ] f [xi , .., xi+k ] = xi+k xi

16

En la siguiente grca se muestra la diferencia ex P3 (x) en el intervalo [0, 3] :

0.1 0.05 0 0 -0.05 -0.1 -0.15 -0.2 -0.25 0.5 1 1.5 2 2.5 x 3

3 Problema 27 (2 puntos) Interpolar la funcin f (x) = 10 x2 +1 en los puntos x0 = 2, x1 = 1, x2 = 1, x3 = 2 utilizando las diferencias de Newton y evaluar el polinomio en x = 0 utilizando el algoritmo de Horner. Problema 28 (2 puntos) Calcular el polinomio interpolador de Lagrange P3 (x) de la funcin f (x) = sen(x) en 3 los puntos 0, 2 , y 2 utilizando las diferencias divididas de Newton.

PARAMETER(Nmax=1000) DIMENSION A(0:1000),F(0:1000),X(0:1000) PRINT *,Introducir No. Ptos Interp. READ *,N N=N-1 PRINT *,Introducir Ptos Interpol. DO 1 K=0,N READ *, X(K) PRINT *,Introducir Valores de F() DO 2 K=0,N READ *,F(K) IF(IDIFNEWTON(A,X,F,N).EQ.1) THEN PRINT *,Puntos de Interpolacion repetidos STOP ENDIF PRINT *,Coef. Polinomio DO 3 K=0,N PRINT *,A(K) PRINT *,Test de Comprobacion DO 4 K=0,N PRINT *,X(K),F(K),EVDIFNEWTON(A,X,X(K),N) END FUNCTION IDIFNEWTON(A,X,F,N) Parameter(Nmax=1000) DIMENSION A(0:*),X(0:*),F(0:*),B(0:Nmax) DO 1 K=0,N B(K)=F(K) A(0)=F(0) DO 2 K=1,N DO 3 L=0,N-K IF (X(K+L).EQ.X(L)) THEN IDIFNEWTON=1 RETURN ENDIF B(L)=(B(L+1)-B(L))/(X(K+L)-X(L)) CONTINUE A(K)=B(0) CONTINUE IDIFNEWTON=0 END

Problema 29 (3 puntos) Calcular el polinomio interpolador de Lagrange P3 (x) de la funcin f (x) = 2x en los puntos 0, 1, 3 y 4 utilizando las diferencias divididas de Newton. Expresar el polinomio tomando en primer lugar x0 = 0, x1 = 1, x2 = 3 y x3 = 4 y, en segundo lugar, x0 = 4, x1 = 3, x2 = 1 y x3 = 0. Problema 30 (3 puntos) Dada una funcin f (x) y una secuencia de valores xn , aproximar f (x) por la parbola que pasa por los puntos (xn1 , f (xn1 )) , (xn2 , f (xn2 )) y (xn3 , f (xn3 )). Calcular posteriormente las derivadas del polinomio y comprobar que coinciden con las frmulas dadas en el mtodo de Mller para el clculo de las derivadas f 00 (xn1 ) y f 0 (xn1 ). Programa 10 Programa en Fortran 77 donde se denen las funciones IDIFNEWTON, que a partir del vector X (0 : N ) de puntos de interpolacin y el vector F (0 : N ) de valores de la funcin f (x) en los puntos de interpolacin, devuelve el vector A(0 : N ) de coecientes de diferencias divididas que denen el polinomio de Lagrange (A(K ) = f [x0 , x1 , .., xK ] ), y la funcin EVDIFNEWTON(A,X,X0,N) que a partir de los coecientes dados por el vector A(0 : N ) y el conjunto de puntos de interpolacin, devuelve el valor de la evaluacin del polinomio de Lagrange en el punto X 0.
17

3 2

FUNCTION EVDIFNEWTON(A,X,X0,N) DIMENSION A(0:*),X(0:*) EVDIFNEWTON=A(N) DO 1 K=N-1,0,-1 1 EVDIFNEWTON=EVDIFNEWTON*(X0X(K))+A(K) END

Implementacin de funciones elementales Una vez denida una aritmtica en precisin nita y las 4 operaciones bsicas (suma, resta, multiplicacin, divisin), es necesario denir, a partir de estas operaciones, las funciones elementales que todos usamos, como son: la raz cuadrada x, las funciones trigonomtricas: sen(x) cos(x) y tan(x), la funcin ln(x), la funcin ex , la funcin xy , etc. Las tcnicas elementales para denir estas funciones consisten en utilizar la interpolacin polinmica, los desarrollos de Taylor y los algoritmos de bsqueda de ceros (como vimos anteriormente para x). Aproximacin de la exponencial ex Un nmero real x siempre se puede expresar como x = m + x0 , donde m es un nmero entero y x0 [0, 1]. Dado que 0 ex = em ex podemos descomponer el clculo de ex en el clculo, por un lado, de em , donde al ser m un entero el clculo es inmediato a partir de multiplicaciones sucesivas de potencias naturales de e e1 (si m<0), y por otro, en el clculo 0 de ex para x0 [0, 1]. Utilizando como puntos de interpolacin los asociados a los polinomios de Chebychev: 1 2i + 1 xi = 1 + cos i = 0, ..., N 2 2N + 2 obtenemos que el error relativo verica que: N +1 0 e 1 | ex PN (x) | ex0 (N + 1)!2N 2 Para N = 6, el error relativo es menor que 6.6 108 y, por tanto, del mismo orden que la unidad de redondeo u en una aritmtica de 32 bits. Asi, tomando un polinomio de grado N = 6, es decir 7 puntos de interpolacin, obtenemos ya la mejor aproximacin posible de ex en el intervalo [0, 1] en una aritmtica de 32 bits. Prctica 3 (Aproximacin de ex , 2 horas) Crear una funcin en Fortran 77 que devuelva el valor de ex con x [0, 1] utilizando el polinomio de Lagrange P6 (x) que interpola a ex en los puntos: 1 xi = 2 2i + 1 1 + cos 14

Aproximacin de funciones trigonomtricas Utilizaremos como modelo las funciones f (x) = cos(x) y f (x) = sen(x). Puesto que estas funciones son 2 peridicas, utilizando algunas relaciones trigonomtricas es suciente denir las funciones cos(x) y sen(x) en el intervalo [0, 4 ] y a partir de ellas denir las funciones para cualquier valor x (en radianes). Efectivamente, denotemos por cos[0, (x) y sen[0, (x) a las funciones trigonomtri4] 4] cas denidas sobre el intervalo [0, 4 ]. Podemos denir entonces las siguientes funciones: cos[0, (x) si x 4 4] ( x ) = cos[0, 2] sen[0, ( x ) si x > ] 2 4 4 sen[0, (x) = 2] cos[0,] (x) = sen[0, (x) si x 4] cos[0, 4 ] ( 2 x) si x >
4 4 2 2 2 2

sen[0,] (x) = cos[0,2] (x) = sen[0,2] (x) =

cos[0, (x) si x 2] cos[0, ( x ) si x> 2] sen[0, (x) si x 2] sen[0, ( x ) si x > 2]

cos[0,] (x) si x cos[0,] (2 x) si x > sen[0,] (x) si x sen[0,] (2 x) si x >

El desarrollo en Serie de Taylor centrado en 0 del cos(x) es: cos(x) u Pn (x) = 1. x2 x4 x2n + + .... + (1)n 2 4! (2n)!

y el error mximo cometido por el desarrollo de Taylor en un punto x [0, 4 ] es | Pn (x) cos(x) | sen(x) (x)2n+1 (2n + 1)!

La ventaja de utilizar el desarrollo de Taylor centrado en 0 es que las potencias impares de x no aparecen, lo que simplica el clculo numrico. El error relativo es | Pn (x) cos(x) | (x)2n+1 tan(x) cos(x) (2n + 1)! Adems, como tan(x) es creciente en [0, 4 ], el valor mximo del error se encuentra en x = . Por ejemplo, para 4 n = 5 obtenemos que el error relativo mximo cometido en x = 4 es del orden de 25+1 tan( ) 4 = 1. 8 109 4 (2 5 + 1)! Por tanto, si trabajamos con una aritmtica de 32 bits, cuya unidad de redondeo u es del orden de 108 , tenemos que con n = 5 obtenemos una aproximacin del cos(x) que es la mejor posible dentro de esta aritmtica y no tendra sentido aumentar el valor de n.
18

i = 0, ..., 6

Comprobar que el polinomio esta bien construido, es decir que P6 (xi ) = exi para todos los xi . Introducir por teclado un valor x, evaluar y mostrar P6 (x) y ex . Utilizar x = 0, 1, 0.5, 2 y 3. Nota: Utilizar las funciones de an.h IDIFNEWTON(.), que calcula el polinomio interpolador a partir de los puntos y valores de interpolacin, y EVDIFNEWTON(.), que evalua el polinomio interpolador en un punto.

Problema 31 (3 puntos) Aproximar la funcin sen(x) en el intervalo [0, 4 ] utilizando el desarrollo de Taylor y calcular el valor de n a partir del cual la aproximacin es la mejor posible dentro de una aritmtica de 32 bits.

Para N = 10 el error mximo es 3. 973 6 108 , que es menor que la unidad de redondeo u y, por tanto, en una aritmtica de 32 bits tendramos la mejor aproximacin posible de la funcin ln(x). Problema 34 (1 punto) Cmo se puede obtener la funcin y x , donde x e y son nmeros reales, utilizando las funciones ex y ln(x)?

Problema 32 (2 puntos) Demostrar que, utilizando relaciones trigonomtricas, es posible calcular las funciones sen(x) y cos(x) para cualquier x (en radianes), utilizando nicamente su valor en el intervalo [0, 8 ].

Problema 33 (3 puntos) Calcular los polinomios necesarios para interpolar las funciones trigonomtricas cos(x) y sen(x) en el intervalo [0, 8 ] en una aritmtica de 32 bits.

ANLISIS NUMRICO MATRICIAL I En esta primera seccin dedicada a la resolucin de sistemas de ecuaciones lineales, estudiaremos los mtodos directos clsicos para la resolucin de un sistema de ecuaciones de la forma Au = b donde A = (ai,j ) es una matriz de N xN, b = (bi ) es un vector de tamao N que determina los trminos independientes, y u = (ui ) es el vector solucin buscado. Mtodo de Gauss Este mtodo, aunque no es de los ms rpidos, tiene la gran ventaja de que se puede aplicar a todo tipo de matrices, algo que, como veremos en el futuro, no ocurre con otros mtodos ms rpidos, pero que requieren, por ejemplo, que la matriz sea simtrica o denida positiva. El mtodo de Gauss se basa en transformar el sistema Au = b en un sistema equivalente A0 u = b0 tal que la solucin sea la misma y que la matriz A0 sea triangular superior, es decir, que tenga valores nulos de la diagonal hacia abajo. Una vez obtenidos la matriz A0 y el vector b0 , el clculo de la solucin u es inmediata, siguiendo un remonte de las variables a travs del siguiente esquema recursivo: uN = bk
0

Aproximacin de la funcin ln(x) Como hemos visto anteriormente, un nmero x real en una aritmtica de precisin nita viene expresado habitualmente como t ! X an m x=2 2n n=1

1 y para n > 1 an = 0 donde m es un nmero entero, a1 = P t an an = 1. Por tanto, el nmero es mayor o n=1 2n igual que 1 2 y menor que 1. Aplicando las propiedades del ln(x) obtenemos que t ! X an ln(x) = m ln(2) + ln 2n n=1

Dado que el nmero ln(2) es una constante que supondremos calculada anteriormente ( ln(2) = .6931471806), podemos reducir el clculo del ln(x) al rango de valores 1 2 x 1. Utilizaremos los puntos de interpolacin generados por los polinomios de Chebychev, que para el intervalo [1 2 , 1] son: 1 1 2i + 1 xi = + 1 + cos i = 0, ..., N 2 4 2N + 2 Dado que ln(1) = 0, para minimizar el error relativo aadiremos como punto interpolante xN +1 = 1. El error de interpolacin relativo entre PN +1 (x) y ln(x) es: | (x 1)N | ln(x) PN +1 (x) | i=0 (x xi ) | = N +1 | ln(x) | (N + 2) | ln(x) |
1 donde [ 1 2 , 1]. Adems se tiene que en el intervalo [ 2 , 1]

b0 N a0 N,N k = N 1, .., 1

uk =

PN

l=k+1 a0 k,k

a0 k,l ul

Problema 35 (2 puntos) Calcular el nmero de operaciones bsicas (sumas, restas, multiplicaciones y divisiones) necesarias para realizar un remonte como el presentado arriba en funcin de la dimensin N . Para obtener A0 y b0 se calcula, en primer lugar, el valor mximo en valor absoluto de la primera columna de A, denominado pivote. A continuacin, se intercambia la primera la de A con la la donde se encuentra el pivote, y se hace lo mismo con el vector b, para que el sistema sea equivalente. A continuacin, se multiplica la primera ak la de A por el valor sima a1 y se suma a la la k e de A para k = 2, ..., N. Se hace lo mismo para el vector
19

|x1| 1 | ln(x) | Por tanto: | ln(x) PN +1 (x) | 2N +1 | ln(x) | (N + 2) N +1 1 1 4 2N

b, y con ello habremos obtenido un sistema equivalente tal que la primera columna es cero de la diagonal hacia abajo. Volvemos ahora a hacer lo mismo para convertir la segunda columna cero de la diagonal para abajo, y as sucesivamente hasta llegar a la mencionada matriz A0 .

Problema 39 (2 puntos) Resolver por Gauss el siguiente sistema de ecuaciones: 0 1 2 u1 1 2 1 u2 = 2 1 0 u3

el mtodo de 1 0 1

Ejemplo 9 Ejemplo de descomposicin segn el mtodo de Gauss. Se considera el sistema 2 2 0 u1 0 6 18 12 u2 = 24 3 11 7 8 u3

de la misma forma, forma siguiente 0 24 8

La descomposicin de la matriz A lleva las siguientes fases: 2 2 0 6 18 12 6 18 12 pivoteo 2 2 0 3 11 7 3 11 7 6 18 12 6 18 12 2 2 0 ceros 1a colu mna 0 4 4 3 11 7 0 2 1 6 18 12 6 18 12 0 4 4 ceros 2a colu mna 0 4 4 0 2 1 0 0 1 el vector b se ha transformado de la 24 24 24 0 8 8 8 4 8

Programa 11 Programa en fortran 77 que implementa el mtodo de Gauss. Se dene una funcin IGAU SS que tiene como parmetros la matriz A, el vector independiente b, un vector auxiliar N row, la dimensin del sistema y la dimensin mxima admitida. La funcin devuelve un valor entero M que indica si se ha terminado correctamente (M = 0) o incorrectamente (M = 1, 2). En el caso en que se ha terminado correctamente, la solucin se devuelve en el propio vector b. Parameter(Nmax=1000) DIMENSION A(Nmax,Nmax),B(Nmax),Nrow(Nmax) PRINT *, Introducir Dimension READ *,N PRINT *,Introducir matriz DO 2 K=1,N DO 2 L=1,N READ *,A(K,L) PRINT *,Introducir vector DO 3 K=1,N READ *,B(K) M=IGAUSS(A,B,N,Nrow,Nmax) IF(M.EQ.0) THEN PRINT *,SOLUCION DO 1 K=1,N PRINT *,B(K) CONTINUE ELSE IF(M.EQ.1)THEN PRINT *,Una columna es toda cero ELSE PRINT *,A(N,N)=0 ENDIF END

y el remonte da como solucin u1 = 6, u2 = 6, u3 = 8. 1

Problema 36 (2 puntos) Resolver por el mtodo de Gauss el sistema 1 2 x 3 = 2 1 y 0 Problema 37 (3 puntos) Calcular el nmero de operaciones bsicas necesarias para descomponer el sistema Au = b en el sistema A0 u = b0 utilizando el mtodo de Gauss, teniendo en cuenta la siguiente relacin:
M 1 X k=1

k2 =

1 3 1 2 1 M M + M 3 2 6

Problema 38 (2 puntos) Implementar en FORTRAN la funcion IDESCEN SO(A, b, u, N, N max) que resuelve un sistema, donde A es una matriz triangular inferior, b es el vector de trminos independientes, u el vector solucin, N es la dimensin real del sistema y N max la dimensin que se utiliz para reservar la memoria de la matriz A. La funcin devuelve 0 si termina correctamente y 1 en caso contrario. Nota Importante: Las lneas de cdigo tienen que ir todas numeradas y no pueden superar las 15 lneas.

FUNCTION IGAUSS(A,B,N,Nrow,Nmax) PARAMETER (NmaxGAUSS=1000) DIMENSION A(Nmax,*),B(*),Nrow(*) DIMENSION U(NmaxGAUSS) IF (N.GT .NmaxGAUSS) THEN IGAUSS=3 PRINT *,DIMENSION DEL SISTEMA MAYOR DE LA PERMITIDA RETURN ENDIF DO 1 K=1,N 1 Nrow(K)=K DO 2 K=1,N-1 XMax=ABS(A(Nrow(K),K)) M=K DO 3 L=K+1,N
20

IF(ABS(A(Nrow(L),K)).GT.XMax) THEN XMax=ABS(A(Nrow(L),K)) M=L ENDIF 3 CONTINUE IF(XMax.LT.(2.**(-100))) THEN IGAUSS=1 RETURN ENDIF IF(K.NE.M) THEN MP=Nrow(K) Nrow(K)=Nrow(M) Nrow(M)=MP ENDIF DO 4 L=K+1,N C=A(Nrow(L),K)/A(Nrow(K),K) DO 5 M=K,N A(Nrow(L),M)=A(Nrow(L),M)C*A(Nrow(K),M) 5 CONTINUE B(Nrow(L))=B(Nrow(L))-C*B(Nrow(K)) 4 CONTINUE 2 CONTINUE IF(ABS(A(Nrow(N),N)).LT.(2.**(-100))) THEN IGAUSS=2 RETURN ENDIF U(N)=B(Nrow(N))/A(Nrow(N),N) DO 6 K=N-1,1,-1 C=0 DO 7 L=K+1,N C=C+A(Nrow(K),L)*U(L) 7 CONTINUE U(K)=(B(Nrow(K))-C)/A(Nrow(K),K) 6 CONTINUE DO I=1,N B(I)=U(I) ENDDO IGAUSS=0 END

donde N es la dimensin del sistema y ErrorSistema representa el error relativo medio al resolver el sistema. En el denominador se aade 1 para evitar las posibles divisiones por 0. Cuanto ms pequeo sea ErrorSistema, mejor aproximada estar la solucin del sistema.

Mtodo de Cholesky Este mtodo slo se puede aplicar a matrices simtricas y denidas positivas. El siguiente teorema da 3 posibles deniciones equivalentes de una matriz denida positiva. Teorema 13 Sea A una matriz simtrica, las 3 siguientes armaciones son deniciones equivalentes a que una matriz sea denida positiva (i) v <N {0} se cumple que t vAv > 0. (ii) Todos los autovalores de A son positivos. (iii) Los determinantes de todos los menores principales de A son positivos. El mtodo de Cholesky se basa en descomponer la matriz A en la forma: A = B B t donde B es una matriz b1,1 b2,1 B= b3,1 . bn,1 triangular inferior. 0 b2,2 b3,2 . bn,2 0 0 b3,3 . bn,3 . 0 . . . . . 0 . bn,n

Problema 40 (2 puntos) Demostrar que si A = B B t (B triangular inferior) y |B | 6= 0, entonces A es simtrica y denida positiva. Problema 41 (2 puntos) Descomponer la siguiente matriz A por el mtodo de Cholesky: 1 1 4 A= 1 5 6 4 6 26 De forma general, el algoritmo para calcular B es el siguiente Para i =r 1, ..., N P 1 2 bi,i = ai,i i k=1 bi,k

Estimacin del error de un mtodo para resolver sistemas Para estimar la abilidad de la solucin numrica de un sistema de ecuaciones, haremos lo siguiente: dada una matriz A, un vector de trminos independientes b y un vector solucin u, calculado utilizando alguna tcnica numrica, si la solucin es perfecta entonces Au b = 0. Ahora bien, esto no suele suceder, porque los errores de redondeo y de clculo producen que esta estimacin no sea exacta. Para estimar el error cometido al resolver el sistema utilizaremos la expresin siguiente, donde e es el vector e = Au b : ErrorSistema = 1 X |ei | N |bi | + 1
21

Para j = i + 1, ..., N P 1 1 bj,i = bi,i aj,i i b b j,k i,k k=1 Fin Para j Fin Para i

El inters de descomponer una matriz A por el mtodo de Cholesky es que, a continuacin, es muy sencillo resolver el sistema de ecuaciones Au = b. Efectivamente, basta descomponer el sistema de la siguiente forma: Bz = b Bu = z

Ambos sistemas se resuelvan rpidamente haciendo un remonte y un descenso. Nota: Normalmente, para evitar tener que almacenar dos matrices, una para B y otra para B t , se almacena todo en una nica matriz B, simtrica, escribiendo en la parte triangular superior de B la parte correspondiente a B t . Problema 42 (2 puntos) Calcular el nmero de operaciones necesarias para resolver un sistema por el mtodo de Cholesky.

Problema 43 (2 puntos) Demostrar que a partir de un mtodo para resolver sistemas de ecuaciones se puede construir de forma inmediata un mtodo para calcular la inversa A1 de una matriz A.

Hay que hacer una versin en simple precisin y otra versin en doble precisin donde todas las variables que empiecen por D sean de doble precisin (la matriz A y el vector B siempre sern de simple precisin). Hay que resolver los sistemas ejemplo y calcular el ErrorSistema, tanto en doble como en simple precisin. Nota: El programa debe permitir introducir el sistema directamente por teclado o desde disco duro, utilizando las funciones denidas en an.h. Resolver los siguientes sistemas ejemplo: x 6 1 1 4 1. 1 5 6 y = 12 4 6 26 z 36 1 1 4 x 6 2. 1 1 4 y = 12 4 4 17 z 36 1 1 4 x 6 3. 1 5 6 y = 12 4 6 17 z 36 2 1 0 x 1 4. 1 2 1 y = 0 0 1 4 z 5 Resolver tambin los sistemas que aparecen en el directorio /users/asignaturas/ii-an de la mquina serdis.dis.ulpgc.es. En este directorio hay tres ejemplos de sistemas de dimensin 10, 100 y 500. Los 3 sistemas corresponden a matrices simtricas y denidas positivas. Estos archivos ejemplo slo se pueden utilizar al compilar el programa en serdis bajo UNIX. Si utilizamos Linux, el programa no reconocer el formato de los archivos.

Prctica 4 (Mtodo de Cholesky, 6 horas) Implementar en Fortran 77 las siguientes funciones : FUNCTION ICHOLESKY_FACTORIZACION (A,DB,N,Nmax): Calcula la descomposicin de Cholesky de A y la devuelve en la matriz DB. Devuelve 0 si termina bien y 1 en caso contrario. FUNCTION IDESCENSO(DB,DZ,B,N,Nmax): Resuelve un sistema triangular inferior, donde DB es la matriz, B es el trmino independiente y DZ es el vector donde devuelve la solucin. Devuelve 0 si termina bien y 1 en caso contrario. FUNCTION IREMONTE(DB,DU,DZ,N,Nmax): Resuelve un sistema triangular superior, donde DB es la matriz, DZ es el trmino independiente y DU es el vector donde devuelve la solucin. Devuelve 0 si termina bien y 1 en caso contrario FUNCTION ERROR_SISTEMA(A,DU,B,N,Nmax): Devuelve el error cometido al resolver el sistema dado por la expresin ErrorSistema de la seccin anterior. FUNCTION ICHOLESKY(A,B,DU,N,Nmax): Resuelve un sistema por el mtodo de Cholesky y devuelve la solucin en DU. Devuelve 0 si termina bien y 1 en caso contrario.

Mtodo de Crout para matrices tridiagonales El caso de sistemas de ecuaciones con matrices A tridiagonales posee una forma especialmente simple de factorizacin. Vamos a descomponer A en el producto de dos matrices triangulares de la forma siguiente: a1 b1 . 0 c1 a2 . 0 = 0 . . bN 1 0 . cN 1 aN 1 u1 . . 0 0 l1 0 m1 l2 0 . 0 0 1 . 0 . . 0 0 . . uN 1 0 . mN 1 lN 0 . 0 1

Los vectores mi , li, y ui se calculan utilizando el esquema: l1 = a1 1 u1 = b l1 Para i = 2, .., N 1


22

mi1 = ci1 li = ai mi1 ui1 i ui = b li Fin Para mN 1 = cN 1 lN = aN mN 1 uN 1 Problema 44 (3 puntos) Demostrar el algoritmo de Crout para descomponer matrices tridiagonales.

Problema 45 (2 puntos) Resolver utilizando el mtodo de Crout el siguiente sistema de ecuaciones: 2 4 0 x 6 1 0 4 y = 3 0 1 0 z 1 Problema 46 (2 puntos) Calcular el nmero de operaciones necesarias para resolver un sistema tridiagonal por el mtodo de Crout.

DIMENSION Vector(*) OPEN(1,FILE=String, form=UNFORMATTED,ERR=1) GOTO 2 1 OPEN(1,FILE=String, form=UNFORMATTED) 2 A=Ndimension WRITE(1) A DO 3 K=1,Ndimension WRITE(1) Vector(K) 3 CONTINUE CLOSE(1) END

STATUS=NEW,

STATUS=OLD,

Subrutinas en Fortran 77 para la lectura y escritura en disco de vectores y matrices Programa 12 Subrutinas en Fortran 77 que leen y escriben en disco vectores y matrices. ****** Funcin que lee un vector de disco de nombre String, lo almacena ****** en la tabla Vector y devuelve la dimension del vector FUNCTION LeerVector(String,Vector) CHARACTER * (*) String DIMENSION Vector(*) OPEN(1,FILE=String,STATUS=OLD, form=UNFORMATTED) READ(1) A Ndimension=INT(A) PRINT *,DIMENSION DEL VECTOR ,String,=,Ndimension DO 1 K=1,Ndimension READ(1) Vector(K) 1 CONTINUE CLOSE(1) LeerVector=Ndimension END

****** Funcin que lee una matriz cuadrada de disco de nombre String, lo almacena ****** en la tabla A y devuelve la dimension de la matriz FUNCTION LeerMatriz(String,A,Nmax) CHARACTER * (*) String DIMENSION A(Nmax,*) OPEN(1,FILE=String, STATUS=OLD, form=UNFORMATTED) READ(1) B Ndimension=INT(B) PRINT *,DIMENSION DE LA MATRIZ , String,=, Ndimension DO 1 K=1,Ndimension DO 2 L=1,Ndimension READ(1) A(K,L) 2 CONTINUE 1 CONTINUE CLOSE(1) LeerMatriz=Ndimension END

***** Procedimiento que escribe en el chero String el vector Vector ***** de dimension Ndimension SUBROUTINE EscribirVector(String,Vector,Ndimension) CHARACTER * (*) String
23

***** Procedimiento que escribe en el chero String la matriz A ***** cuadrada de dimension Ndimension SUBROUTINE EscribirMatriz(String,A,Ndimension,Nmax) CHARACTER * (*) String DIMENSION A(Nmax,*) OPEN(1,FILE=String, STATUS=NEW, form=UNFORMATTED, ERR=1) GOTO 2 1 OPEN(1, FILE=String, STATUS=OLD, form=UNFORMATTED) 2 B=Ndimension WRITE(1) B DO 3 K=1,Ndimension DO 4 L=1,Ndimension WRITE(1) A(K,L) 4 CONTINUE 3 CONTINUE CLOSE(1)

END

DIFERENCIACIN E INTEGRACIN NUMRICA Una frmula de diferenciacin numrica es un procedimiento que permite aproximar la derivada de la funcin f (x) en un punto xi. utilizando el valor de f (x) en otros puntos vecinos a xi . Por otro lado, una frmula de integracin numrica es un procedimiento que permite aproximar el valor de la integral en un intervalo [a, b] a partir de la evaluacin de f (x) en algunos puntos incluidos en el intervalo [a, b]. Diferenciacin Numrica La manera habitual de aproximar la derivada de una funcin f (x) en un punto xi consiste en utilizar el desarrollo de Taylor centrado en xi : f (x) = f (xi ) + f 0 (xi ) f N ) (xi ) (x xi ) + ... + (x xi )N + ... 1! N!

Programa 13 Programa en Fortran 77 donde se describe un ejemplo de lectura/escritura de vectores y matrices. INCLUDE an.h PARAMETER(Nmax=100) CHARACTER * 10,String DIMENSION V(Nmax), A(Nmax,Nmax) String=vector.dat Ndimension=LeerVector(String,V) PRINT *,Ndimension DO 1 K=1,Ndimension PRINT *,V(K) V(K)=2*V(K) CONTINUE CALL EscribirVector(vector3.dat,V,Ndimension) N=LeerVector(vector3.dat,V) PRINT *,N=,N DO 2 k=1,N PRINT *,V(K) CONTINUE Ndimension=3 DO 3 K=1,Ndimension DO 4 L=1,Ndimension A(L,K)=L+K PRINT *,A(L,K) CONTINUE PRINT * CONTINUE CALL EscribirMatriz(matriz.dat,A,Ndimension,Nmax) Ndimension=LeerMatriz(matriz.dat,A,Nmax) PRINT *,Ndimension DO 5 K=1,Ndimension DO 6 L=1,Ndimension PRINT *,A(L,K) CONTINUE PRINT * CONTINUE END

Si tomamos un punto xj 6= xi , truncamos el desarrollo de Taylor y despejamos, obtenemos la siguiente expresin: f 0 (xi ) f (xj ) f (xi ) + O (|xj xi |) xj xi

4 3

donde O (|xj xi |) indica, bsicamente, que el error cometido es una suma de potencias de |xj xi | en la que la potencia ms pequea es 1. Se denomina orden de la aproximacin a la potencia ms pequea que aparece en el trmino del error. Por lo tanto, en este caso, diremos que el orden de aproximacin es 1. Si xj > xi , entonces la derivada se calcula hacia adelante, mientras que si xj < xi , la derivada se calcula hacia atrs. Ejemplo 10 Veremos en este ejemplo como, cuanto ms prximo est el punto xj al punto xi , mejor ser el valor aproximado de la derivada. Consideremos la funcin f (x) = x3 . La derivada de f (x) en x = 1 es f 0 (1) = 3 Si tomamos xi = 1 y xj = 2 en la frmula anterior, obtenemos la aproximacin f 0 (1) 23 13 =7 21

6 5

Si tomamos ahora xj = 1.1, obtenemos f 0 (1) 1.13 13 = 3. 31 1.1 1

Nota la declaracin IN CLU DE 0an.h0 incluye el chero an.h que se encuentra en el directorio de trabajo, en el cuerpo del programa. La declaracin CHARACT ER 10, String dene un string de caracteres de tamao 10.

que est mucho ms prximo al valor real.

Problema 47 (2 puntos) Calcular analtica y numricamente la matriz gradiente en el punto (1, 1) (utilizar h = 0.1) de la funcin: 2 x + y2 1 f (x, y ) = xy

24

Problema 48 (3 puntos) Dados 3 puntos distintos xl , xi , xr , demostrar que la frmula f (xi )


0
r )f (xi ) i )f (xl ) + (xr xi ) f (xx (xi xl ) f (xx r xi i xl

xr xl

Problema 52 (2 puntos) Considerar en el problema anterior que xl = xi h, y xr = xi + h. Deducir como queda la frmula anterior para aproximar la derivada segunda, y demostrar que, en este caso, el orden de aproximacin es 2. Problema 53 (3 puntos) Dados 3 puntos xl < xi < xr , calcular el polinomio de Lagrange que interpola a f (x) en esos 3 puntos, calcular la derivada segunda de ese polinomio en xi , y comprobar que da la misma frmula que utilizando los desarrollos de Taylor. Problema 54 (2 puntos) Calcular una aproximacin de la derivada primera y segunda de una funcin f (x) en x = 0, teniendo en cuenta que f (0) = 1, f (1) = 0, f (4) = 9

aproxima la derivada de f 0 (xi ) con un orden de aproximacin de 2. Ntese que, si xr = xi + h, y xl = xi h, entonces la frmula anterior resulta f 0 (xi ) = f (xi + h) f (xi h) 2h

que es una conocida frmula de diferencias centradas. Ejemplo 11 Veremos en este ejemplo como, utilizando la expresin anterior para aproximar la derivada de f (x) = x3 en x = 1, la precisin es mayor que con la frmula anterior. Por ejemplo, si tomamos xi = 1 y h = 1, la expresin anterior nos da f 0 (1) 23 03 =4 2

Diferenciacin numrica en dimensiones superiores Estudiaremos, en este apartado, la aproximacin de las derivadas de una funcin de varias variables. Para simplicar la exposicin, supondremos que la dimensin es 2. Para discretizar las derivadas de una funcin F (x, y ), se utilizan los desarrollos de Taylor siguientes en 2 variables. (x,y) Utilizaremos la siguiente nomenclatura: Fx = Fx , Fy =
F (x,y ) , y 2 F (x,y ) y2

Si tomamos ahora xj = 0.1 1.13 0.93 f 0 (1) = 3. 01 0.2 que est ms prximo al valor real que utilizando la primera frmula. En general, comprobamos que, cuanto mayor es el orden de una frmula de aproximacin, ms preciso es el valor de la derivada. Nota: Utilizar el desarrollo de Taylor para aproximar f 0 (x) es equivalente a interpolar f (x) con el polinomio de Lagrange y posteriormente derivar el polinomio. Problema 49 (3 puntos) Dados 3 puntos distintos xl , xi , xr , calcular el polinomio de Lagrange que interpola a f (x) en esos 3 puntos, calcular la derivada de ese polinomio en xi , y comprobar que da la misma frmula que la presentada en el problema anterior. Problema 50 (2 puntos) Calcular una aproximacin de la derivada tercera f 000 (xi ) de una funcin f (x) en un punto xi , utilizando f (xi ), f (xi + h), f (xi h), f (xi 2h). Problema 51 (3 puntos) Dados 3 puntos, demostrar que la frmula f (xi ) 2
00 f (xr )f (xi ) xr xi

Fxx =

2 F (x,y ) , x2

Fxy =

2 F (x,y) xy ,

Fyy =

1. F (x + h, y ) = F + hFx + 2. F (x h, y ) = F hFx + 3. F (x, y + l) = F + lFy + 4. F (x, y l) = F lFy +

h2 2 Fxx h2 2 Fxx

+ O(h3 ) + O(h3 )

l2 2 Fyy l2 2 Fyy

+ O (l 3 ) + O (l 3 )

2 6. F (x h, y l) = F hFx lFy + 1 2 (h Fxx + 2hlFxy + 3 l2 Fyy ) + O( h2 + l2 2 ) 2 7. F (x + h, y l) = F + hFx lFy + 1 2 (h Fxx 2hlFxy + 3 l2 Fyy ) + O( h2 + l2 2 ) 2 8. F (x h, y + l) = F hFx + lFy + 1 2 (h Fxx 2hlFxy + 3 l2 Fyy ) + O( h2 + l2 2 )

2 5. F (x + h, y + l) = F + hFx + lFy + 1 2 (h Fxx + 2hlFxy + 3 l2 Fyy ) + O( h2 + l2 2 )

xr xl

f (xi )f (xl ) xi xl

Prestaremos particular atencin a dos operadores diferenciales que se utilizan con frecuencia en la prctica: El gradiente F (x, y ) = (Fx (x, y ), Fy (x, y )), que es el vector de derivadas parciales, y el Laplaciano F (x, y ) = Fxx (x, y ) + Fyy (x, y ). Utilizaremos la notacin Fi,j = F (hi, lj ).

aproxima la derivada segunda de f (x) en xi con un orden de aproximacin de 1.


25

Discretizacin del Laplaciano Para discretizar el operador F en un entorno de 3 3 puntos, pueden utilizarse diferentes esquemas. Para simplicar, supondremos que l = h. Problema 55 (3 puntos) Demostrar, utilizando el desarrollo de Taylor, que las siguientes expresiones son discretizaciones del laplaciano: F F = = Fi+1,j +1 + Fi1,j +1 + Fi1,j 1 + Fi+1,j 1 4Fi,j 2h2 Fi+1,j + Fi1,j + Fi,j +1 + Fi,j 1 4Fi,j h2

Problema 56 (2 puntos) Calcular una aproximacin del laplaciano de una funcin F (x, y ) en el punto (x, y ) = (0, 0) conociendo los siguientes valores: F (0, 0) = 0, 1 1 1 1 1 1 1 F(1 2 , 0) = 4 , F ( 2 , 0) = 4 , F (0, 2 ) = 4 , F (0, 2 ) = 4 , 1 1 1 1 1 1 1 1 1 1 1 F ( 2 , 2 ) = 2 , F ( 2 , 2 ) = 2 , F ( 2 , 2 ) = 2 , F ( 2 , 2 ) = 1 2. Discretizacin del gradiente Siguiendo el desarrollo de Taylor mostrado anteriormente, obtenemos la siguiente expresin para el gradiente: (Fi+1,j Fi1,j ) + 2h (Fi+1,j +1 Fi1,j +1 + Fi+1,j 1 Fi1,j 1 ) + 4h (Fi,j )x = (1 ) (Fi,j +1 Fi,j 1 ) + 2h (Fi+1,j +1 Fi+1,j 1 + Fi1,j +1 Fi1,j 1 ) + 4h donde es, de nuevo, un parmetro a elegir. Teniendo en cuenta que la norma eucldea del gradiente es invariante por rotaciones, lo ser en particular para rotaciones de 45 grados, de donde deducimos, utilizando el mismo argumento que para el F , que = 2 2. Por lo tanto, estamos calculando Fx utilizando la mscara (2 2) 0 (2 2) 1 2( 2 1) 0 2( 2 1) 4h (2 2) 0 (2 2) (Fi,j )y = (1 ) y Fy utilizando (2 2) 1 0 4h (2 2) 2( 2 1) 0 2( 2 1) (2 2) 0 (2 2)

El resultado del anterior problema nos proporciona 2 formas distintas de evaluar el laplaciano, por tanto, cualquier promediado de las dos expresiones tambin es una discretizacin del laplaciano, es decir: F = Fi+1,j +1 + Fi1,j +1 + Fi1,j +1 + Fi+1,j 1 4Fi,j = + 2h2 Fi+1,j + Fi1,j + Fi,j +1 + Fi,j 1 4Fi,j +(1 ) + h2 +O(h) donde es un parmetro libre a elegir. La eleccin de dicho parmetro la haremos de forma que la discretizacin de F respete lo mximo posible la invarianza por rotaciones de la funcin F (x, y ). Para ello, consideremos una funcin tal que en un entorno de un punto (hi0 , hj0 ) tiene los siguientes valores: 1 0 0 1 0 0 1 0 0

Si calculamos F en el punto central a travs de la anterior frmula obtenemos: 2 1 F (hi0 , hj0 ) = 2 + (1 ) 2 2h h Ahora bien, si rotamos 45 grados, la funcin inicial en torno al punto (hi0 , hj0 ), obtenemos como imagen: 1 1 0 1 0 0 0 0 0

Problema 57 (3 puntos) Demostrar que las mscaras 2 2 0 2 2 1 Fx = 2 2 1 0 2 1 2 4h 2 2 0 2 2 2 2 2 2 1 2 2 1 0 Fy = 0 0 4h 2 2 2 2 2 21

Si calculamos de nuevo F en el mismo punto obtenemos: 1 2 F (hi0 , hj0 ) = 2 + (1 ) 2 2h h Por lo tanto, si queremos que ambos valores de F coincidan, debemos elegir = 2 3 . Hablando en trminos de teora de la seal, el calculo de F nos llevara a convolucionar la imagen con la siguiente mscara: 1 h2
1 3 1 3 1 3 1 3 8 3 1 3 1 3 1 3 1 3

dan lugar a una discretizacin del gradiente tal que su norma eucldea es invariante por rotaciones de 45 grados. Problema 58 (2 puntos) Calcular una aproximacin del gradiente de una funcin F (x, y ) en el punto (x, y ) = (0, 0) conociendo los siguientes valores: F (0, 0) = 0, 1 1 1 1 1 1 F(1 2 , 0) = 2 , F ( 2 , 0) = 2 , F (0, 2 ) = 2 , F (0, 2 ) = 1 1 1 1 1 1 1 2 , F ( 2 , 2 ) = 0, F ( 2 , 2 ) = 0, F ( 2 , 2 ) = 1, 1 F(1 2 , 2 ) = 1.
26

Integracin Numrica Mtodos de Cuadratura de Gauss Sea f (x) una funcin denida en un intervalo [a, b], vamos a aproximar el valor de la integral de f (x) en [a, b] utilizando la evaluacin de f (x) en ciertos puntos de [a, b]. Es decir, una frmula de integracin numrica se puede escribir como Z
b

Problema 59 (2 puntos) Aproximar el valor de la siguiente integral, utilizando las frmulas de Legendre para n = 2 y n = 3: Z 1 3 x x4 dx
1

Cul es el valor exacto de la integral?

f (x)dx

k=1

N X

wk f (xk )

donde xk representa los puntos de evaluacin de f (x) y wk el peso de cada punto de evaluacin. Denicin 2 Una frmula de integracin numrica se denomina exacta de orden M si, para cualquier polinomio P (x) de grado menor o igual que M, la frmula es exacta. Es decir Z b N X P (x)dx = wk P (xk )
a k=1

Problema 60 (2 puntos) Se consideran, para el intervalo [1, 1], los puntos x0 = 0.5, x1 = 0 y x2 = 0.5 y los pesos w0 = w1 = w2 = 2/3. Estos puntos y estos pesos se utilizan para aproximar la integral de una funcin en [1, 1]. Usar esta frmula de integracin para calcular nmericamente la siguiente integral y compararla con el resultado anlitico (exacto). Z
2

cos(x)dx

Denicin 3 Se denominan polinomios de Legendre Ln (x) a la familia de polinomios dada por L0 (x) = 1, L1 (x) = x, y para n = 2, 3, .... nLn (x) = (2n 1)xLn1 (x) (n 1)Ln2 (x)

Problema 61 (2 puntos) Encontrar, utilizando los ceros y pesos asociados a los polinomios de Legendre, cul sera la frmula de integracin numrica de Legendre utilizando un slo punto de interpolacin. Cul sera su exactitud? Problema 62 (2 puntos) A partir de los ceros y de los pesos asociados a los polinomios de Legendre, y dado un intervalo [a, b] cualquiera, encontrar los puntos xk y los pesos wk que hacen exacta hasta orden 2N 1 una frmula de integracin numrica sobre el intervalo [a, b]. Problema 63 (2 puntos) Utilizar el resultado del problema anterior para calcular de forma exacta la siguiente integral: Z 1 2 x x3 dx
0

Teorema 14 Sean{x k }k=1,..,N los ceros del polinomio de Legendre LN (x). Si denimos w k = Z
1

i6=k (x x i) dx i6=k ( xk x i)

entonces la frmula de integracin numrica generada por k es exacta hasta el orden 2N 1 los puntos x k y los pesos w para el intervalo [1, 1]. Demostracin [Hu] Pg. 205-209 Ejemplo 12 A continuacin se exponen algunos valores de races x k y coecientes w k en funcin del grado del polinomio Ln (x) : n x k w k 2 0.5773502692 1. 0.5773502692 1 3 0.7745966692 0.5555555556 0. 0.8888888889 0.7745966692 0.5555555556 4 0.8611363116 0.3478548451 0.3399810436 0.6251451549 0.3399810436 0.6251451549 0.8611363116 0.3478548451
27

Cuando el intervalo [a, b] es innito, es decir, a = o b = , hay que emplear otros mtodos para aproximar las integrales. En el caso [a, b] = (, ), se utilizan los ceros de los denominados polinomios de Hermite, denidos como H0 (x) = 1, H1 (x) = 2x, y Hn (x) = 2xHn1 (x) 2(n 1)Hn2 (x) para n 2. En este caso, la frmula de integracin numrica aproxima la integral de la siguiente forma: Z

f (x)ex dx

k=0

N X

wk f (xk )

Teorema 15 Si x k son los ceros del polinomio de Hermite y denimos Z i6=k (x x i) x2 w k = e dx ( x x i) i6=k k entonces la frmula de integracin numrica generada por k es exacta hasta orden 2N 1 los puntos x k y los pesos w para el intervalo (, ). Demostracin [Hu] Pg. 213-214 Ejemplo 13 A continuacin se exponen algunos valores de races x k y coecientes w k en funcin del grado del polinomio Hn (x) : n x k w k 1 0. 1. 772 453 851 2 0. 707 106 781 0. 886 226 925 5 0. 707 106 781 0. 886 226 925 5

Ejemplo 14 A continuacin se exponen algunos valores de races x k y coecientes w k en funcin del grado del polinomio Ln (x) : n x k w k 1 1. 1. 2 0. 585 786 438 0. 853 553 390 3 3. 414 213 562 0. 146 446 609 3

Problema 66 (2 puntos) Calcular de forma exacta la integral Z 3 x x2 ex dx


0

utilizando los polinomios de Laguerre.

Problema 64 (2 puntos) Calcular de forma exacta la integral Z 3 2 x x2 ex dx

Problema 67 (2 puntos) Calcular una frmula de aproximacin numrica de la integral siguiente: Z f (x)ex dx
a

donde a es un nmero real cualquiera.

utilizando los polinomios de Hermite.

Frmulas de Integracin Numrica Compuestas Con las frmulas que hemos visto hasta ahora, para aumentar la precisin es necesario aumentar el grado de los polinomios, lo cual resulta complejo para valores grandes de N. Una alternativa consiste en dividir previamente la integral en subintegrales de la manera siguiente: Z
b

Problema 65 (2 puntos) Aproximar, utilizando dos puntos de aproximacin, el valor de la integral: Z 1 dx 1 + x2

f (x)dx =

k=0

M Z X

xk+1

f (x)dx
xk

Para el intervalo (0, ), se utilizan los polinomios de Laguerre Ln (x), denidos por L0 (x) = 1, L1 (x) = 1 x, y Ln (x) = (2n 1 x)Ln1 (x) (n 1)2 Ln2 (x). para n 2. En este caso, la frmula de integracin numrica aproxima: Z

donde a = x0 < x1 < .... < xM +1 = b. A continuacin se aproxima numricamente cada una de las integrales Z xk+1 f (x)dx
xk

f (x)ex dx

k=0

N X

Para ello, se pueden utilizar los desarrollos a partir de los polinomios de Legendre, o bien las frmulas ms simples siguientes: Frmula del rectngulo Z xk+1 xk + xk+1 f (x)dx f (xk+1 xk ) 2 xk Esta frmula se obtiene fcilmente aproximando f (x) xk+1 . Es decir: por el polinomio interpolador en x = xk +2 Z
xk+1 xk

wk f (xk )

Teorema 16 Si x k son los ceros del polinomio de Laguerre y denimos Z i6=k (x x i) x w k = e dx i6=k (xk x i) 0 entonces la frmula de integracin numrica generada por k es exacta hasta orden 2N 1 los puntos x k y los pesos w para el intervalo (0, ). Demostracin [Hu] Pg. 211-213

f (x)dx

xk + xk+1 dx = 2 xk xk + xk+1 (xk+1 xk ) = f 2 Z


xk+1

28

Frmula del trapecio Z xk+1 f (xk+1 ) + f (xk ) (xk+1 xk ) f (x)dx 2 xk Esta frmula se deduce aproximando f (x) por su polinomio interpolador en xk y xk+1 . Es decir: f (x)dx xk xk+1 x xk+1 x xk + f (xk+1 ) f (xk ) dx = xk xk+1 xk+1 xk xk f (xk+1 ) + f (xk ) (xk+1 xk ) = 2 Z Z
xk+1

Problema 68 (2 puntos) Aproximar, por el mtodo de Simpson, la integral Z 1 3 x x4 dx


1

utilizando nicamente el valor de la funcin en los puntos: 1 1, 1 2 , 0, 2 y 1.

Prctica 5 (Implementacin Mtodo de Integracin de Simpson, 2 horas)

Ahora bien, teniendo en cuenta los resultados de la seccin anterior sobre derivacin numrica f 00 (xm ), se puede aproximar como f 00 (xm ) f (xk+1 ) 2f (xm ) + f (xk ) 2
xk+1 xk 2

Crear una funcin en fortran 77 donde se implemente el mtodo de Simpson. Los parmetros de la funcin sern: Los lmites del intervalo de integracin en precisin real y el nmero de subintervalos en los que se dividir el interFrmula de Simpson valo inicial. La funcin a integrar se denir aparte (como xk+1 Z xk+1 en el caso del mrodo Mller). La funcin devolver el f (xk+1 ) + f (xk ) + 4f xk +2 f (x)dx (xk+1 xk ) valor de la integral obtenido. Probar el mtodo para aprox6 xk imar las siguientes integrales con diferentes valores para el parmetro de nmero de subintervalos y comprobar que el Esta frmula se deduce aproximando f (x) por su deresultado se aproxima al valor exacto de la integral. sarrollo en serie de Taylor centrado en el punto xm = xk +xk+1 . Es decir: 2 R 1. 0 sin(x)dx = 2 Z xk+1 f (x)dx xk R1 Z xk+1 2. 0 1x dx = 1 f 00 (xm ) 0 2 x2 f (xm ) + f (xm )(x xm ) + (x xm ) dx = 2 xk 3 R 00 2 f (xm ) xk+1 xk 3. ex dx = = 1. 772 5 = f (xm )(xk+1 xk ) + 3 2 Nota: Las integrales con lmites innitos se aproximarn cambiando el innito por un nmero grande. Integracin numrica en dimensiones superiores En esta seccin, estudiaremos las tcnicas de integracin numrica sobre dominios de dimensin superior a 1. Para simplicar la exposicin, supondremos que la dimensin es 2. Es decir, pretendemos aproximar Z F (x, y )dxdy

Por tanto, sustituyendo este valor en la aproximacin anterior obtenemos Z


xk+1

f (x)dx f (xm )(xk+1 xk )+ f (xk+1 ) 2f (xm ) + f (xk ) xk+1 xk + = 3 2 xk+1 f (xk+1 ) + f (xk ) + 4f xk +2 (xk+1 xk ) = 6
xk

Aproximaremos esta integral a travs de la frmula numrica: Z X F (x, y )dxdy wij F (xi , yj )
i,j

Aunque estas frmulas sean menos precisas que las deducidas a partir de los ceros de los polinomios de Legendre, tienen la ventaja de que pueden ser utilizadas cuando slo conocemos la funcin a integrar en un conjunto equiespaciado de puntos, es decir, cuando slo conocemos f (x) en un conjunto de la forma xk = x0 + hk. Ntese que, en este caso, la integracin a partir de los ceros de los polinomios de Legendre no puede utilizarse.
29

donde debemos elegir los puntos (xi , yj ) y los pesos wij . Para realizar esta eleccin se utilizan tcnicas de cuadratura. Es decir, se exige que la frmula sea exacta para polinomios en x e y de hasta un cierto grado: Z X m n xm y n dxdy = wij (xi ) (yj )
i,j

donde m y n determinan el grado de los polinomios. De estas relaciones se puede deducir, en general, los valores de los puntos y los pesos. Un caso particularmente sencillo es cuando es un rectngulo [a, b]x[c, d]. En este caso, podemos escribir: Z xm y n dxdy =

xm dx

y n dy

AREA(T ) el rea del tringulo T. En funcin de los vrtices, el rea viene determinada por 1 1 1 1 x0 x1 x2 AREA(T ) = ABS 2 y0 y1 y2

y, por tanto, la exactitud en dimensin 2 la podemos deducir a partir de la exactitud en dimensin 1, que, en este caso, viene dada, como hemos visto anteriormente, por los polinomios de Legendre. Problema 69 (3 puntos) Deducir la frmula de integracin numrica sobre el rectngulo [1, 1]x[1, 1] resultante de aplicar la integracin numrica en una variable en los intervalos [1, 1], y [1, 1]. Problema 70 (2 puntos) Deducir la frmula de integracin numrica sobre un rectngulo [a, b]x[c, d] resultante de aplicar la integracin numrica en una variable en los intervalos [a, b], y [c, d].

A continuacin presentaremos algunas frmulas de integracin numrica sobre tringulos utilizando diferentes nmeros de puntos Integracin sobre tringulos utilizando un punto. Z x0 + x1 + x2 y0 + y1 + y2 F (x, y ) = F , AREA(T ) 3 3 T Integracin sobre tringulos utilizando 3 puntos. Z F (x, y ) = AREA(T )
3 X

k=1

donde w1 x e1 = w2 = w3 = = = = x0 + x1 2 x0 + x2 2 x2 + x1 2

wk F (x ek , y ek )

1 3 y0 + y1 2 y0 + y2 y e2 = 2 y2 + y1 y e3 = 2 y e1 =

Problema 71 (2 puntos) Calcular de forma exacta la integral Z 1Z 1 x2 y 2 dxdy


1 1

x e2 tos. x e3

utilizando integracin numrica. Ntese que, al igual que en dimensin 1, tambin podemos extender los resultados al caso en que los intervalos sean innitos, de tal forma que podemos construir fcilmente frmulas de integracin numrica para las integrales Z Z

Integracin sobre tringulos utilizando 4 punZ F (x, y ) = AREA(T )


4 X

k=1

donde w1 x e1 = w2 = w3 = = = = =

wk F (x ek , y ek )

F (x, y )ex

y2

dxdy

Z 0

F (x, y )exy dxdy

x e2 x e3 x e4

Problema 72 (2 puntos) Calcular una aproximacin numrica de la integral Z Z 2 x dxdy y2 0 1 + e utilizando la evaluacin de F (x, y ) en 4 puntos. En el caso de que sea un tringulo, el clculo es un poco ms complejo. Consideremos un tringulo T de vrtices (x0 , y0 ), (x1 , y1 ), (x2 , y2 ). Denotaremos por

25 27 w4 = 48 48 6x0 + 2x1 + 2x2 6y0 + 2y1 + 2y2 y e1 = 10 10 2x0 + 6x1 + 2x2 2y0 + 6y1 + 2y2 y e2 = 10 10 2x0 + 2x1 + 6x2 2y0 + 2y1 + 6y2 y e3 = 10 10 x0 + x1 + x2 y0 + y1 + y2 y e4 = 3 3

Problema 73 (2 puntos) Se considera el tringulo T de vrtices (0, 0), (1, 0) y (0, 1). Deducir cual debe ser el punto (x0 , y0 ) y el peso w0 para que la frmula de integracin numrica: Z F (x, y )dxdy F (x0 , y0 )w0
T

sea exacta para polinomios de grado 1 en x e y. Es decir P (x, y ) = ax + by + c.

30

Problema 74 (2 puntos) Calcular una aproximacin numrica de la integral Z x2 ydxdy

Problema 77 (2 puntos) Tomar N = 2 y dibujar el lugar geomtrico de los vectores x = (x1 , x2 ) que verican que 1. k x k1 < 1 2. k x k2 < 1 3. k x k < 1 Problema 78 (2 puntos) Tomar N = 2 y demostrar la siguiente desigualdad: k x k k x k2 k x k1 Dada una matriz A de dimensin N xN , se podra denir su norma considerando la matriz como un vector de dimensin N xN . Sin embargo, resulta ms til denir la norma de una matriz subordinndola a la norma de un vector de la siguiente manera: Denicin 5 Sea A una matriz y sea k . k una norma vectorial. Se dene la norma de A, subordinada a la norma vectorial k . k como k A k= sup
x6=0

donde es el tringulo de vrtices (0, 0), (2, 0) y (0, 2), utilizando 1 punto, 3 puntos y 4 puntos. ANLISIS NUMRICO MATRICIAL II En esta seccin veremos algunos aspectos ms avanzados del anlisis matricial, incluyendo tcnicas iterativas de resolucin de sistemas de ecuaciones y clculo de autovalores.

Normas de vectores y matrices Denicin 4 Una norma k . k es una aplicacin de un espacio vectorial E en R+ {0} que verica las siguientes propiedades: k x k= 0 si y slo si x = 0 k x k=| |k x k para todo K y x E k x + y kk x k + k y k para todo x, y E. Bsicamente, una norma mide la magnitud o tamao de un vector x. Por ejemplo, en el espacio vectorial de los nmeros reales, la norma natural es el valor absoluto. Sin embargo, cuando trabajamos en varias dimensiones, esto es, x = (x1 , x2 , ...., xN ), existen mltiples formas de denir una norma. La denicin ms utilizada es la denominada norma p, donde p es un nmero real positivo, que viene denida por N X
i=1 p
1 !p

k Ax k kxk

La propiedad fundamental que verica una norma matricial denida de esta forma es la siguiente: Teorema 17 Sea A una matriz y k . k una norma vectorial. Entonces, para cualquier vector x se verica que k Ax kk A k k x k Demostracin: Si x = 0, la desigualdad es trivial. Si x 6= 0, entonces, puesto que k x k> 0, la desigualdad anterior es equivalente a k Ax k k A k kxk Ahora bien, esta desigualdad es cierta por la propia denicin de k A k. Problema 79 (2 puntos) Demostrar que si A y B son dos matrices de dimensin N xN, entonces, para cualquier norma de matrices subordinada a una norma vectorial, se verica k AB kk A k k B k

k x kp =

| xi |

Un caso particularmente interesante es p = 2, que corresponde a la norma eucldea. Otro caso interesante es aqul que se produce cuando hacemos tender p hacia innito, lo que da lugar a la denominada norma innito, denida por k x k = max | xi |
i

Problema 75 (4 puntos) Tomar N = 2 , p = 2, y demostrar que la norma k x kp verica las propiedades de la denicin de norma. Problema 76 (3 puntos) Demostrar que Limp k x kp = max | xi |
i

A continuacin veremos la relacin que existe entre la norma de una matriz y sus autovalores. Empezaremos recordando algunos conceptos relacionados con los autovalores.

31

Denicin 6 Un autovalor de A es un nmero real o complejo tal que existe un vector x, denominado autovector, tal que Ax = x

xi , el vector x se podr expresar como una combinacin lineal de autovectores, de la forma: x = 1 x1 + 2 x2 + .. + N xN Al hacer Ax, y puesto que los xi son autovectores, obtenemos que

Denicin 7 Se denomina polinomio caracterstico P () de la matriz A, al polinomio dado por el determinante P () =| A I | que

Ax = 1 1 x1 + 2 2 x2 + .. + N N xN Como los autovectores son ortonormales, se cumple q k x k2 = ( 1 )2 + .. + (N )2 q 2 2 k Ax k2 = (1 1 ) + .. + (N N ) k Ax k2 (A) k x k2 para cualquier vector x. En consecuencia, al tomar el supremo en x, la desigualdad se mantiene, lo que demuestra que k A k2 (A)

Problema 80 (1 punto) Demostrar que los autovalores de A son los ceros del polinomio caracterstico P (). Denicin 8 Se dene el radio espectral de una matriz A como (A) = max{| i | : i autovalor de A}
i

Y, por tanto,

Teorema 18 Sea A una matriz y k . k una norma vectorial. Entonces k A k (A) Demostracin: Si es un autovalor de A, entonces existe un autovector x tal que Ax = x, por tanto k Ax k k x k = = || k A k kxk kxk Lo que demuestra el teorema. Teorema 19 Si los autovectores de una matriz A de dimensin N xN forman una base ortonormal de RN , entonces k A k2 = (A) Demostracin: Recordamos, en primer lugar, que una base ortonormal de vectores es un conjunto de vectores tales que cualquier otro vector se puede expresar como combinacin lineal de ellos y, adems, su producto escalar verica que (xi , xj ) =
N X

Teorema 20 Si una matriz A de dimensin N xN es simtrica, entonces todos sus autovalores son reales y, adems, sus autovectores forman una base ortonormal de RN . Demostracin: [La-Th] Pg. 53. Problema 81 (2 puntos) Calcular los autovectores de la matriz 1 1 0 1 1 0 0 0 2

y determinar una base ortonormal de R3 compuesta por autovectores de A. Teorema 21 Sea A una matriz cualquiera, entonces p k A k2 = (t AA) P k A k1 = maxj ( i | aij |) P k A k = maxi | a | ij j

(xi )k (xj )k =

k=1

0 si i 6= j 1 si i = j

donde (xi )k indica la coordenada k -sima del vector xi . Vamos a demostrar la desigualdad k A k2 (A) Dado que el teorema anterior determina la desigualdad en el otro sentido, tendramos la igualdad, y por tanto el resultado del Teorema. Sea x un vector cualquiera. Puesto que A posee una base ortonormal de autovectores
32

Demostracin: [La-Th] Pg. 73,75.

Problema 82 (2 puntos) Calcular las normas 2, 1 e innito de la matriz 1 0 A= 1 1

Problema 83 (2 puntos) Demostrar la siguiente igualdad: (t AA) = (A t A) Teorema 22 Sea A una matriz cualquiera, entonces Limn k An k= 0 (A) < 1 Demostracin:[La-Th] Pg. 80. Condicionamiento de una matriz El condicionamiento de una matriz es un nmero que nos indica la bondad o buen comportamiento numrico de la matriz cuando se trabaja con ella numricamente. Para ilustrar de qu estamos hablando, veamos el siguiente ejemplo: Ejemplo 15 Consideremos el siguiente sistema de ecuaciones 10 7 8 7 x 32 7 5 6 5 y 23 8 6 10 9 z = 33 7 5 9 10 v 31

Teorema 23 Si denimos (A) =k A k k A1 k entonces k u k k b k (A) kuk kbk

Demostracin: Como A(u + u) = b + b y Au = b, se obtiene que Au = b, de donde u = A1 b y, por tanto, kuk A1 kbk Por otro lado, tambin se cumple que kbk = kAuk kAk kuk de donde obtenemos que 1 kAk kuk kbk As, multiplicando esta desigualdad con la anteriormente obtenida para kuk , concluimos la demostracin del teorema. Problema 84 (2 puntos) Demostrar que, si los autovectores de una matriz A de dimensin N xN forman una base ortonormal de RN , entonces, para la norma 2, se cumple que maxi {| i |} (A) =k A k2 k A1 k2 = mini {| i |} Nota: En el caso del ejemplo 15 los autovalores de la matriz son 0.01, 0.84, 3.86, y 30.29, por tanto el condicionamiento sera (A) = 30.29 = 3029 0.01

cuya solucin es (1, 1, 1, 1). Vamos a considerar ahora el mismo sistema, perturbando ligeramente el trmino independiente: 10 7 8 7 7 8 7 x y 5 6 5 6 10 9 z 5 9 10 v 32.1 22.9 = 33.1 30.9

La solucin de este sistema es (9.2, 12.6, 4.5, 1.1). Como podemos observar, a pesar de que la perturbacin del sistema es del orden de 0.1, la perturbacin de la solucin del sistema puede llegar a ser del orden de 13.6. Consideremos de forma genrica un sistema de ecuaciones de la forma Au = b y, al mismo tiempo, el sistema de ecuaciones perturbado A (u + u) = b + b Nosotros queremos controlar el error relativo en la solucin del sistema a partir del error relativo en el trmino independiente b. Es decir, queremos encontrar una estimacin del tipo k u k k b k (A) kuk kbk donde (A) es un nmero que llamaremos condicionamiento de la matriz. Obviamente, cuanto ms pequeo sea (A), mejor comportamiento numrico tendr la matriz A.

lo cual indica un condicionamiento bastante malo. Problema 85 (2 puntos) Calcular el condicionamiento para la norma 2, de las siguientes matrices: 2 2 2 A= 2 1 1 2 1 1 2 1 0 A = 1 2 1 0 1 2 Clculo de autovalores y autovectores En esta seccin veremos algunos mtodos elementales para el clculo de autovalores y autovectores de matrices.

33

Mtodo de Jacobi Este mtodo se aplica a matrices reales y simtricas. Se basa en el hecho de que, dadas dos matrices A y R, se verica que los autovalores de A son los mismos que los autovalores de R1 AR. Este mtodo intenta diagonalizar A realizando transformaciones del tipo R1 AR. Problema 86 (2 puntos) Sean las matrices A y R. Demostrar que la matriz A y la matriz B = R1 AR poseen los mismos autovalores Problema 87 (2 puntos) Se considera la matriz 1 1 A= 1 1 calcular el ngulo tal que la matriz cos sin R= sin cos verique que la matriz B = R1 AR sea diagonal. En el mtodo de Jacobi se utilizan las denominadas matrices de rotacin, que tienen la forma siguiente: 1 0 0 0 0 0 0 0 1 . . . . 0 0 . cos . sin . 0 . 1 . . 0 Rpq () = 0 . 0 . sin . cos . 0 0 . . . . 1 0 0 0 0 0 0 0 1

Es decir, cot(2) = cos 2 (aqq app ) = sin 2 2apq

Ejemplo 16 Consideremos la matriz 2 1 0 1 2 1 0 1 2

Para convertir en 0 el elemento a12 = 1 de la matriz, debemos elegir tal que cot(2) = (a22 a11 ) =0 2a12

t y al hacer la operacin R12 AR12 obtenemos 1.0 0 . 707 107 0 3.0 . 707 107 . 707 107 . 707 107 2.0

De donde = 4 . Por tanto, la matriz R12 es 1 1 0 2 2 1 1 0 R12 =


2 2

Para evitar tener que evaluar funciones trigonomtricas, que son costosas computacionalmente, y simplicar el algoritmo, podemos apoyarnos en las igualdades trigonomtricas dadas en el siguiente problema: Problema 88 (3 puntos) Demostrar las siguientes igualdades trigonomtricas: q tan() = cot(2) + sign(cot(2)) 1 + cot2 (2) donde 4 , 4 , sign(x) = 1 si x 0 y sign(x) = 1 si x < 0, cos = 1 p 1 + tan2 () sin = tan() cos

donde los cosenos y senos estn situados en las columnas y las p y q. Al ser una matriz de rotacin, se verica 1 que (Rpq ()) =t Rpq (). Al realizar la operacin A0 =t Rpq ()ARpq (), slo se ven afectadas las las y columnas de ndices p y q. Adems, la matriz A0 tambin es simtrica. Concretamente, si A es una matriz simtrica, los cambios que se producen en A0 son los siguientes: a0 pq a0 pp a0 qq a0 pj a0 qj (app aqq ) sin 2 + apq cos 2 2 = app cos2 + aqq sin2 apq sin 2 = = app sin2 + aqq cos2 + apq sin 2 = apj cos aqj sin j 6= p, q = apj sin + aqj cos j 6= p, q

cot(2) =

tan() + sin(2) 2 sin2 ()

Utilizando las anteriores igualdades trigonomtricas, la transformacin de la matriz A mediante el mtodo de Jacobi se puede escribir como a0 pq a0 pp a0 qq a0 pj a0 qj = = = = = 0 app tan()apq aqq + tan()apq apj cos aqj sin j 6= p, q apj sin + aqj cos j = 6 p, q

El mtodo de Jacobi se basa en ir modicando la matriz A mediante el procedimiento anterior, haciendo 0 los elementos no diagonales mayores en mdulo. Para anular un valor a0 pq , basta con elegir tal que (app aqq ) sin 2 + apq cos 2 = 0 2
34

Problema 89 (3 puntos) Dentro del mtodo de Jacobi para el clculo de autovalores, demostrar las igualdades siguientes: a0 pq a0 pp a0 qq a0 pj a0 qj = = = = = 0 app tan()apq aqq + tan()apq apj cos aqj sin apj sin + aqj cos

j= 6 p, q j= 6 p, q

Veamos ahora la convergencia del mtodo de Jacobi para el clculo de autovalores. Teorema 24 Sea una matriz A simtrica. Sea A1 = A, y sea Ak la matriz transformada de Ak1 , haciendo cero el elemento no diagonal mayor en mdulo de la matriz Ak1 , entonces los elementos diagonales de la matriz Ak convergen (k ) hacia los autovalores de la matriz A. Adems los elementos no diagonales de A convergen hacia 0. Demostracin: [La-The] Pg. 576-577. Algoritmo del Mtodo de Jacobi para el Clculo de autovalores. Los parmetros de entrada son la matriz simtrica A, su dimensin DIM, el nmero mximo de iteraciones N max y la tolerancia T OL para decidir cundo son ceros los elementos no diagonales. PARA n = 1, .., N max HACER p=2 q=1 R = ABS (A(p, q )) PARA i = 3, ..., DIM HACER PARA j = 1, ..., i 1 HACER IF ABS (A(i, j )) > R HACER R = ABS (A(i, j )) p=j q=i FIN IF FIN PARA j FIN PARA i IF R < T OL HACER PROCEDIMIENTO TERMINADO CORRECTAMENTE. LOS AUTOVALORES SE ENCUENTRAN EN LA DIAGONAL DE A. SALIR FIN IF C = (A(q, q ) A(p, p))/(2 A(p, q )) IF C < 0 HACER T = C SQRT (1. + C C ) ELSE T = C + SQRT (1. + C C )
35

FIN IF CO = 1./SQRT (1. + T T ) SI = CO T PARA j = 1, ..., DIM HACER IF ( j 6= p AND j 6= q ) HACER D = A(p, j ) A(j, p) = A(p, j ) = CO D SI A(q, j ) A(j, q ) = A(q, j ) = SI D + CO A(q, j ) FIN IF FIN PARA j A(p, p) = A(p, p) T A(p, q ) A(q, q ) = A(q, q ) + T A(p, q ) A(p, q ) = A(q, p) = 0 FIN PARA n PROCEDIMIENTO TERMINADO INCORRECTAMENTE NMERO DE ITERACIONES MXIMO EXCEDIDO Veamos ahora cmo podemos calcular los autovectores. Al utilizar el mtodo de Jacobi, vamos transformando la matriz A multiplicndola por una secuencia de matrices de rotacin R1 , ...., RM , de tal forma que
1 1 .... R1 AR1 .... RM = D RM

donde D es una matriz diagonal que contiene los autovalores de A en la diagonal. Denotemos por B la matriz B = R1 .... RM . Despejando de la anterior igualdad obtenemos que AB = BD Si denotamos por bi el vector columna i de la matriz B, de la expresin anterior se obtiene que Abi = dii bi Es decir, bi es el autovector de A asociado al autovalor dii . Por tanto, la matriz B determina los autovectores. Numricamente, para calcular la matriz B en el algoritmo anterior que calcula los autovalores, aadiremos en cada iteracin las operaciones necesarios para ir obteniendo B. En primer lugar, inicializamos B a la identidad antes de entrar en el bucle. A continuacin, en cada iteracin haremos B = B Ri .Ahora bien, como Ri es una matriz de rotacin del tipo Rpq (), cuando multiplicamos una matriz B por la derecha por una matriz del tipo Rpq () (denotemos por B 0 = B Rpq () el resultado de la multiplicacin) podemos observar que lo nico que cambia en B son los vectores columnas p y q, que se transforman de la siguiente manera: b0 ip b0 iq = cos()bip sin()biq = sin()bip + cos()biq i = 1, .., N i = 1, .., N

Problema 90 (3 puntos) Utilizar el mtodo de Jacobi para aproximar los autovalores y autovectores de la siguiente matriz: 2 0 1 A= 0 1 0 1 0 1

Nota. Para no tener que buscar en cada paso el mximo de los elementos no-diagonales de Ak , el algoritmo de Jacobi se puede modicar haciendo cero el primer elemento apq que se encuentre que verique |apq | T OL. Prctica 6 (Mtodo de Jacobi para el clculo de autovalores y autovectores 6 horas) Desarrollar en Fortran 77 la siguiente funcin : FUNCTION ERROR_VECTORES(U,V,N) : Devuelve la diferencia entre los vectores U y V, de dimensin N, utilizando la frmula :
N 1 X ABS (U (i) V (i)) ERROR_V ECT ORES = N i=1 ABS (U (i)) + 1.

Resultados:

3. Las matrices de dimensin la asignatura. 0 1 6 0 0 0 1 0 2 7 0 0 6 2 0 3 8 0 4. A = 0 7 3 0 4 9 0 0 8 4 0 5 0 0 0 9 5 0

1 1 0 2, 2 1 1 1 2, 2 2 2 1

2 +

10 y 100 del directorio de

FUNCTION JACOBI(A,B,N,Nmax,TOL,Niter): Realiza el clculo de los autovalores y autovectores de una matriz simtrica A por el mtodo de Jacobi. B es una matriz donde se guardan los autovectores por columnas. La funcin devuelve 0 si termina bien y 1 en caso contrario. FUNCTION ERROR_AUTOVECTORES (A,AUTOVECTORES,AUTOVALORES,N,Nmax): Para comprobar que los autovalores i y su autovectores x i estn bien estimados, comparar para cada autovalor i , utilizando la funcin ERROR_VECTORES(), los vectores Ax i y i x i . Devolver la expresin ERROR_AU T OV ECT ORES =
i=1,N

max ERROR_V ECT ORES (Ax i , x i )

. 593 8 1. 562 8 0.05 170 2. 11 . 400 89 1.0 . 659 86 . 521 32 . 741 24 . 998 09 10. 06 . 855 2 1.0 . 268 11

16. 6

. 363 27 . 626 28 . 901 1. 176 3 1.0 . 938 54

Comprobar los resultados obtenidos con los siguientes ejemplos, tomando T OL = 0.0001 y N iter = 1000: 2 2 2 1. A = 2 1 1 2 1 1 Resultado: 1 2 1 2, 1 1 1 0 4, 1 2 1 2 1 0 2. A = 1 2 1 0 1 2 Resultado:

Nota: Obsrvese, al comparar los resultados, que los autovectores estn denidos mdulo la multiplicacin por una constante.

2. 984 4 . 796 84 3. 088 8 5. 942 1. 985 4 1.0 2. 165 3 1. 746 5 . 853 75 . 575 36 2. 465 . 215 57 1.0 1. 241 2 . 729 18 . 896 18 12. 12 1. 324 6 1. 826 8 1.0 1. 767 6

Mtodo de la potencia Teorema 25 Sea una matriz A que posee una base de autovectores tal que en mdulo su autovalor mximo max es nico. Sea un vector u1 no ortogonal al subespacio engendrado por los autovectores del autovalor max , entonces, si denimos la secuencia un = A se verica que Limn sign
36

un1 k un1 k

n n1 u ,u k un k= max

n Limn sign un , un1

un es un autovector de max k un k

Adems, dicho autovector tiene norma 1. Teorema 26 sign un , un1 es el del producto signo n n1 n n1 escalar de u y u , es decir sign u , u = 1 n n1 n n1 n n si 1 u ,u 0 y sign u , u = 1 si u , u < 0. Demostracin. En primer lugar, vamos a demostrar por induccin la siguiente igualdad: un+1 An u1 = kAn1 u1 k

Limn kun k = n1 n1 N 1 max x1 + ... + N |max | xN |max | = = |max | n2 n2 N max 1 x + ... + x 1 N N |max | |max | = |max | y por tanto n n1 u ,u k un k= max n Por otro lado, el trmino sign un , un1 para n sucientemente grande es 1n si max es positivo o (1)n si max es negativo. Sean x1 , ...., xM los autovectores asociados a max , obtenemos que Limn sign n Limn sign un , un1 = un = k un k

Para n = 1 la igualdad se cumple por la denicin de u2 . Supongamos que se cumple para n1, y demostrmoslo para n: un =A k un k
An1 u1 kAn2 u1 k kAn1 u1 k kAn2 u1 k

un+1 = A

An u1 kAn1 u1 k

1 x1 + ... + M xM k1 x1 + ... + M xM k

Con lo que queda demostrado este primer resultado. Por otro lado, como A posee una base de autovectores, que denotaremos por xi , y u1 no es ortogonal al espacio generado por los autovectores asociados a max , entonces u1 se puede escribir como u1 = 1 x1 + ... + N xN donde supondremos que x1 es un autovector asociado a max y que 1 6= 0. Por la igualdad anteriormente demostrada obtenemos que

que es un autovector de max de norma 1. Problema 91 (3 puntos) Aplicar el mtodo de la potencia para aproximar el autovalor mximo y el autovector asociado de las siguientes matrices, realizando 3 iteraciones en el mtodo, hasta calcular u4 y partiendo de u1 = (1, 1). 2 1 A = 0 1 3 0 A = 1 1

1 n1 An1 u1 1 n max x1 + ... + N N xN = = 2 n2 1 n kAn2 u1 k max x1 + ... + N N xN n1 n1 Mtodo de la potencia inversa max N x1 + ... + N | xN 1 | max | max | = |max | n2 n2 El mtodo anterior tambin se puede utilizar para el clN max 1 x + ... + x 1 N culo del autovalor de mdulo menor N |max | |max | min , teniendo en cuenta que Cuando hacemos tender n hacia innito, todos los co1 cientes de la forma min = 0 max{i autovalores de A1 } n i Por tanto, si aplicamos el mtodo anterior a A1 , |max | obtenemos que la secuencia tienden hacia 0, salvo si i = max . En este caso, dicho un1 cociente es 1n , si max es positivo, o (1)n , si max es negun = A1 k un1 k ativo. Por tanto, para n sucientemente grande el signo de n n1 max coincide con el signo del producto escalar (u , u ). verica que Adems 1 Limn sign un , un1 k un k= min

un

37

Limn sign

un es un autovector de min k un k En los casos prcticos, se evita calcular directamente A1 , y se obtiene un resolviendo el sistema Aun = un1 k un1 k

n n1 u ,u

Para ello, calcular dos iteraciones del mtodo de la potencia inversa partiendo de u1 = (1, 1, 1).

Mtodos iterativos de resolucin de sistemas lineales Estas tcnicas consisten en transformar un sistema de la forma Au = b en una ecuacin de punto jo de la forma u = Mu + c de tal manera que, al hacer iteraciones de la forma un = M un1 + c se obtenga que un converge hacia u, la solucin del sistema original. Ejemplo 17 Consideremos el sistema de ecuaciones 2x y x + 2y z y + 2z = 1 = 0 = 1

Problema 92 (2 puntos) Calcular el autovalor mayor 2 1 y el autovector correspondiente de la matriz 1 1 utilizando el mtodo de la potencia, realizando 2 iteraciones del mtodo a partir de u1 = (1, 1) y tomando como norma kuk = maxi |ui |. Problema 93 (2 puntos) Utilizar el mtodo de la potencia inversa para aproximar el autovalor menor de la matriz 2 1 A= 0 3 Llegar hasta u3 partiendo de u = (1, 1). Para autovalores que se encuentren entre min y max , se puede proceder de la manera siguiente: Se calcula primero una aproximacin del autovalor de tal forma que se encuentre ms cercano a que a cualquier otro autovalor. Por ejemplo, utilizando el mtodo de Jacobi, si consideramos la matriz A0 = A I, donde es uno de los elementos diagonales de la matriz que resulta de aplicar el mtodo de Jacobi, entonces se obtiene que el autovalor menor de A0 es justamente , y, por tanto, podemos aplicar el mtodo de la potencia inversa anterior. Ntese que si el autovalor est calculado con mucha precisin, entonces el autovalor ms pequeo de A0 est muy prximo a 0, y como el determinante de una matriz es el producto de sus autovalores, ello indicara que el determinante de A0 estara muy prximo a 0 y podemos tener problemas al resolver el sistema utilizado por ejemplo el mtodo de GAUSS a travs de la funcin de la librera an.h IGAUSS(). Para evitar esto, podemos perturbar ligeramente el valor de para que IGAUSS() no d problemas. Algortmicamente, quedara como sigue: Si es el autovalor que estamos tratando, haremos 1 = 1011 A = A Id J = IGAU SS (A0 , ......) IF (J.N E.0) T HEN = 10. = (1 + ) GOT O 1 EN DIF
0

Buscar la solucin de este sistema es equivalente a buscar un vector u = (x, y, z ) que verique que x = y z = = 1+y 2 x+z 2 1+y 2

Hacer iteraciones de esta ecuacin de punto jo consiste en partir de una aproximacin inicial (x1 , y1 , z1 ) y hacer iteraciones de la forma xn yn zn = = = 1 + yn1 2 xn1 + zn1 2 1 + yn1 2

En este caso, la solucin exacta del sistema es u = (1, 1, 1). Si hacemos iteraciones del esquema anterior a partir de la aproximacin inicial u1 = (0, 0, 0), obtenemos que x2 y2 z2 = = = 1+0 1 = 2 2 0+0 =0 2 1+0 1 = 2 2

Problema 94 (3 puntos) Calcular el autovalor y autovector ms cercano a 2 de la matriz 0 1 0 0 3 1 0 0 1


38

Como puede observarse, las sucesivas iteraciones se van aproximando a la solucin u = (1, 1, 1). En este caso, la matriz M y el vector c que determinan el esquema iterativo vienen dados por 1 0 1 0 2 2 cJ = 0 0 1 MJ = 1 2 2 1 0 1 0 2 2 Teorema 27 Si el esquema iterativo un = M un1 + c converge hacia un vector u, entonces u verica que u = Mu + c

De la misma forma, obtenemos que 0.5 .84 .98 u3 = 0.25 .... u8 = .73 .... u17 = .96 0.5 .84 .98

devuelve el signo del producto escalar de los vectores uf y vf de dimensin Nf (12 lneas de cdigo como mximo), y la funcin AUTOVALOR_MAXIMO(Af,uf,Nf,Nfmax,Nter,Tolf ) que devuelve el autovalor mximo de una matriz y su autovector por el mtodo de la potencia. Los parmetros son la matriz Af, el vector candidato inicial uf, Nf la dimensin real, Nfmax, la dimensin para coger memoria, Nter nmero mximo de iteraciones, y Tolf la tolerancia. Esta funcin devuelve el valor 2.**120 si P no termina correctamente. Tomar como norma kuk = i ABS (ui ) (28 lneas de cdigo como mximo). Problema 96 (2 puntos) Calcular 3 iteraciones del mtodo de Jacobi para resolver el sistema 1 1 0 x 1 1 2 0 y = 3 0 1 3 z 1 partiendo de u1 = (0, 0, 0)

Mtodo de Gauss-Seidel Existen diferentes mtodos para convertir un sistema de la forma Au = b en una ecuacin de punto jo u = M u + c. Todas se basan en descomponer A de la forma A = L + D + U, donde D es la matriz diagonal que corresponde a la parte diagonal de A, L es la matriz triangular inferior que corresponde a la parte de A situada por debajo de la diagonal, y U es la matriz triangular superior que corresponde a la parte de A situada por encima de la diagonal. Este mtodo consiste en tomar MGS cGS = (D + L) = (D + L)
1 1

(U ) b

A efectos prcticos, la aplicacin de este mtodo no requiere el clculo directo de la matriz inversa (D + L)1 , puesto que el paso de una iteracin a otra puede hacerse de la siguiente forma: un 1
1 1 ... a1N un + b1 a12 un 2 N a11 n1 1 ... a2N un + b2 a21 un 1 a23 u3 N = a22 . n n aN 1 un 1 aN 2 u2 ... aNN 1 uN 1 + bN = aN N

Mtodo de Jacobi un 2 Este mtodo consiste en tomar MJ cJ = D1 (L U ) = D1 b un N

Es el que se ha utilizado en el ejemplo anterior. El paso de una iteracin a otra del mtodo de Jacobi puede expresarse de la siguiente forma: un 1 un 2 un N
1 1 ... a1N un + b1 a12 un 2 N a11 1 n1 1 a ... a2N un + b2 a21 un 23 u3 1 N = a22 . 1 1 1 aN 1 un aN 2 un ... aNN 1 un 1 2 N 1 + bN = aN N

Si hacemos un barrido para el clculo de la solucin de arriba hacia abajo, y vamos actualizando las componentes del vector aproximacin segn las vamos calculando, obtenemos el mtodo de Gauss-Seidel. Por tanto, bsicamente, podemos decir que la diferencia entre el mtodo de Gauss-Seidel y el mtodo de Jacobi es que en el mtodo de Gauss-Seidel se actualiza el vector aproximacin despus del clculo de cada componente, y en el caso de Jacobi se actualiza slo al nal, despus de haber calculado todas las componentes por separado. Ejemplo 18 Vamos a aplicar el mtodo de Gauss-Seidel al sistema del ejemplo anterior, es decir 2x y x + 2y z y + 2z
39

Problema 95 (3 puntos) en Fortran las funciones SIGNO_PRODUCTO_ESCALAR(uf,vf,Nf )

Escribir siguientes: que

= 1 = 0 = 1

Las iteraciones del mtodo de Gauss-Seidel aplicado a este sistema consisten en xn yn zn = = = 1 + yn1 2 xn + zn1 2 1 + yn 2

estado de la solucin en la etapa anterior, de la forma siguiente: un 1 un 2 un N


1 1 a12 un ... a1N un + b1 1 2 N + (1 w)un 1 a11 n1 + b2 a21 un 1 ... a2N uN 1 = w + (1 w)un 2 a22 . n aN 1 un 1 ... aN N 1 uN 1 + bN 1 = w + (1 w)un N aNN

= w

Si hacemos iteraciones del esquema anterior a partir de la aproximacin inicial u1 = (0, 0, 0), obtenemos que x2 y2 z2 = = = 1+0 1 = 2 2 1 1 2 +0 = 2 4 1+ 1 5 4 = 2 8

La eleccin del parmetro w es, en general, un problema difcil. Sin embargo, en el caso de matrices tridiagonales, es decir, matrices con todos los elementos nulos salvo la diagonal principal y sus codiagonales, el siguiente resultado muestra la forma de calcular el valor ptimo de w. Teorema 28 Si A es una matriz tridiagonal y (MJ ) < 1, entonces el valor de w que optimiza la velocidad de convergencia del mtodo es: wopt = 2 p 1 + 1 (MJ )2

De la misma forma, obtenemos que .5 . 976 56 u3 = . 25 .... u8 = . 976 56 . 625 . 988 28

Problema 97 (2 puntos) Calcular 1 0 de autovectores de la matriz 0 2 1 0

una base ortogonal 1 0 1

Como puede observarse de la expresin anterior, el valor de wopt se encuentra siempre entre 1 y 2. Demostracin [La-Th]. Pg.358-362. Ejemplo 19 Vamos aplicar el mtodo de relajacin al sistema del ejemplo anterior, es decir 2x y x + 2y z y + 2z = 1 = 0 = 1

Problema 98 (2 puntos) Calcular 3 iteraciones del mtodo de Gauss-Seidel para resolver el sistema 1 1 0 x 1 1 2 0 y = 3 0 1 3 z 1 partiendo de u1 = (0, 0, 0)

Problema 99 (1 punto) Una variante del mtodo de Gauss-Seidel consiste en tomar M = (D + U )1 (L), y 1 c = (D + U ) b. Indicar, en este caso, qu diferencias de implementacin habra con respecto al caso anterior.

1 En este caso, (MJ ) = y wopt = 1. 17. Las it2 eraciones del mtodo de relajacin aplicado a este sistema consisten en

xn yn zn

Mtodo de relajacin El objetivo de este mtodo es intentar mejorar el mtodo de Gauss-Seidel introduciendo un parmetro de relajacin w. Se toman, en este caso, Mw cw = (D + wL)
1

1 + yn1 + (1 w)xn1 2 xn + zn1 = w + (1 w)yn1 2 1 + yn = w + (1 w)zn1 2 = w

Si hacemos iteraciones del esquema anterior a partir de la aproximacin inicial u1 = (0, 0, 0) y tomando w = wopt = 1.17, obtenemos que . 585 . 686 . 999 u2 = . 342 .... u3 = . 802 ... u8 = . 999 . 785 . 921 . 999

= w (D + wL)

((1 w)D wU ) b

Estas nuevas matrices permiten realizar un promediado entre el resultado obtenido por Gauss-Seidel y el
40

partiendo de u1 = (0, 0, 0). Calcular previamente el parmetro de relajacin ptimo. Convergencia de los mtodos iterativos Vamos a denotar por en = un u el error relativo entre la solucin del sistema u y la aproximacin en la etapa n, un . Teorema 29 Se considera el esquema iterativo un = M un1 + c. Entonces en = M n1 e1 Demostracin: La solucin del sistema satisface que u = M u + c. Restando esta igualdad de la igualdad un = M un1 + c, obtenemos que un u = M (un1 u) = M n1 (u1 u) Teorema 30 El mtodo iterativo un = M un1 + c converge para cualquier aproximacin inicial si y slo si (M ) < 1. Demostracin: El resultado es inmediato a partir del hecho de que una matriz M n converge hacia 0 cuando n si y slo si (M ) < 1 Teorema 31 Si en el mtodo de relajacin w / (0, 2), entonces (Mw ) 1. Demostracin: En primer lugar, observamos que las matrices D + Lw y (1 w)D wU son matrices triangulares y, por tanto, su determinante es el producto de los elementos diagonales. Adems, teniendo en cuenta que el determinante del producto de dos matrices es el producto de sus determinantes y que el determinante de la matriz inversa es el inverso del determinante, obtenemos que

Problema 100 (3 puntos) Calcular 3 iteraciones del mtodo de relajacin para resolver el sistema 1 1 0 x 1 1 2 0 y = 3 0 1 3 z 1

o | ajj |>

X
i6=j

| aij | j.

entonces el mtodo de Jacobi asociado al sistema Au = b converge para cualquier aproximacin inicial. Demostracin: En primer lugar, observamos que la matriz MJ puede expresarse como: 12 13 1N 0 a a . a a11 a11 a11 a21 a23 a2N a22 0 a22 . a22 . . . . . aN 1,2 aN 1,N aN 1,1 . 0 aN 1,N 1 aN 1,N 1 aN 1,N 1 aN,1 aN,2 a 1 aN,N aN,N . N,N 0 aN,N

Teniendo en cuenta que las normas 1 e innito de una matriz son el mximo de las sumas por las o columnas en valor absoluto, se tiene, por las condiciones del teorema, que kMJ k < 1 para la norma 1 o innito. Por tanto, el teorema se concluye teniendo en cuenta que cualquier norma de una matriz es siempre mayor o igual que su radio espectral. Este resultado se puede generalizar un poco al caso de matrices irreducibles de la siguiente forma: Denicin 9 Una matriz A es irreducible si un sistema de la forma Au = b no puede descomponerse en dos subsistemas independientes de dimensin menor Dicho de otra forma, una matriz es irreducible si el cambio de cualquier valor del vector b del sistema Au = b afecta a todos los elementos del vector u. Teorema 33 Si A es una matriz irreducible y se verica que X | aii | | aij | i.
j 6=i

| ajj |

X
i6=j

| aij | j.

con la desigualdad estricta en al menos una la o columna, entonces los mtodos iterativos convergen. Demostracin. [La-The] Pg.346-347. Ejemplo 20 La matriz del sistema ejemplo tratado anteriormente, esto es 2 1 0 1 2 1 0 1 2 satisface las hiptesis del Teorema anterior.

|Mw | =

|(1 w)D wU | (1 w)N i aii = |(D + wL)| i aii

Por lo tanto, como el determinante de una matriz es el producto de sus autovalores, obtenemos que, si w / (0, 2), entonces |1 w| 1 y, en consecuencia, Mw posee al menos un autovalor de mdulo mayor o igual que uno. Teorema 32 Si una matriz A verica que X | aij | i. | aii |>
j 6=i
41

Problema 101 (2 puntos) Escribir en Fortran la funcin siguiente: CONDICIONAMIENTO(Af,Nf,Nfmax,TOLf,Nter) que devuelve el condicionamiento de una matriz utilizando el mtodo de Jacobi para calcular los autovalores. Se supondr implementada la funcin JACOBI(A,N,Nmax,TOL,Niter) que devuelve 0 si termina bien y 1 si termina mal. La funcin CONDICIONAMIENTO devuelve 2.*120 si termina mal porque Jacobi da un error o se produce una divisin por cero. Los parmetros son la matriz Af, Nf la dimensin real, Nfmax, la dimensin para coger memoria, Nter nmero mximo de iteraciones, y Tolf la tolerancia (21 lneas de instrucciones como mximo). Problema 102 (2 puntos) Demostrar que, si una matriz A verica que por las o columnas su suma es siempre igual a 0, entonces el determinante de A es cero, y por tanto el sistema asociado a A no tiene solucin.

4. Los sistemas ejemplos del directorio de la asignatura. Estos ejemplos tienen siempre como solucin el vector (1, 1, ...., 1).

Mtodo de Newton-Raphson para sistemas de ecuaciones no lineales En las aplicaciones reales, muchas veces nos encontramos con sistemas no lineales de ecuaciones. Por ejemplo, calcular las races, reales o complejas, de un polinomio de grado 2 dado por P2 (z ) = az 2 + bz + c, donde z = x + yi, es equivalente a resolver el sistema ax2 + bx ay 2 + c = 0 2ayx + by = 0 que es un sistema no lineal de ecuaciones. En general, un sistema no lineal de ecuaciones de dimensin N, se escribe como N ecuaciones del tipo f1 (u1 , ...., uN ) = 0 f2 (u1 , ...., uN ) = 0 . fN (u1 , ...., uN ) = 0 donde f (u) = (f1 (u), f2 (u), ..., fN (u)) es una funcin de <N <N , y u = (u1 , ...., uN ). El mtodo de NewtonRaphson para sistemas de ecuaciones se basa en desarrollar por Taylor la funcin f y truncar el desarrollo para que quede un sistema lineal, es decir f (u) = f (u0 ) + f (u0 ) u u0 + O k u u0 k2

Problema 103 (3 puntos) Dado un sistema iterativo un = M un1 + c Demostrar que, aunque el radio espectral de M sea mayor que 1, si u1 y c son combinaciones lineales de autovectores de M correspondientes a autovalores de mdulo menor que 1, entonces el mtodo converge.

Prctica 7 (Mtodo de relajacin, 2 horas) Desarrollar una funcin en Fortran 77 donde se implemente el mtodo de relajacin. Los parmetros de la funcin sern: la matriz A, el vector b, un vector u donde se almacenar la solucin, y que inicialmente ser el vector aproximacin inicial, que por defecto se tomar 0, el parmetro de relajacin w, el nmero mximo de iteraciones N max, y la tolerancia T OL para evaluar la diferencia entre un y un1 . La funcin devolver el nmero de iteraciones necesarias para alcanzar la solucin. Si el mtodo no converge devuelve 1. Comparar la diferencia en la velocidad de convergencia entre el mtodo de Gauss-Seidel y el Mtodo de relajacin. Probar el mtodo para los sistemas 1 1 0 x 1 1. 1 2 0 y = 3 0 1 3 z 1

donde u0 es una aproximacin de la solucin de f (u) = 0. Si truncamos el desarrollo e igualamos a 0 (para aproximar la raz) obtenemos que la raz del sistema lineal se obtiene resolviendo el sistema f (u0 )z u1 = f (u0 ) = u0 + z

En el caso general, a partir de una aproximacin un se obtiene la aproximacin un+1 en dos etapas: f (un )z un+1 = f (un ) = un + z

2 1 0 x 1 2. 1 2 1 y = 0 0 1 2 z 1 1 3 3 x 7 3. 3 1 3 y = 7 3 3 1 z 7

Ejemplo 21 Consideremos el siguiente sistema no lineal de ecuaciones: x2 y 2 + 1 = 0 2xy = 0 La matriz gradiente de esta funcin viene dada por 2x 2y f (un ) = 2y 2x
42

Si partimos de u1 = (1, 1), para obtener u2 tenemos que resolver 2 2 z1 1 = 2 2 2 z2 3 1 que tiene por solucin 4 , 4 . Por tanto, u2 viene dado por 3 1 1 4 2 4 u = + = 3 1 1 4 4 Para calcular u3 , tenemos que resolver el sistema 1 2 2 1 z1 3 3 +1 2 2 4 4 = 3 1 6 z2 2 2 16 9 3 cuya solucin es 13 40 , 40 . Por tanto, u viene dado por 1 13 3 40 40 3 4 u = + = 3 9 39
4 40 40

Tomemos como aproximacin inicial u1 = (1, 1). El sistema que hay que resolver para pasar de una iteracin a otra es 2 2 z1 xn yn +1 2xn 2yn = 2yn xn 2yn 2xn z2

INTERPOLACIN DE FUNCIONES II Esta seccin es la continuacin natural del tema interpolacin de funciones visto anteriormente. Por motivos de coordinacin entre los programas terico y prctico de la asignatura, el tema de interpolacin de funciones se dividi en dos partes, siendo sta la segunda parte.

Interpolacin de Hermite En ocasiones, resulta de inters interpolar no slo el valor de la funcin en ciertos puntos {xi }i=0,..,N , sino tambin el valor de sus derivadas. Un ejemplo clsico de ello es el desarrollo de Taylor de una funcin en un punto a. En este caso, aproximamos f (x) por un polinomio de grado N , PN (x) tal que f (x) y PN (x) poseen las mismas derivadas en el punto a desde el orden 0 hasta el orden N. f 0 (a) f N ) (a) (x a) + .. + (x a)N 1! N!

PN (x) = f (a) +

que ya es una buena aproximacin de la solucin exacta dada por el vector (0, 1). Problema 104 (3 puntos) Calcular 2 iteraciones del mtodo de Newton-Raphson no lineal para aproximar una raz del sistema de ecuaciones x2 + y 2 1 = 0 yx = 0 partiendo de (x, y ) = (1, 1). Problema 105 (2 puntos) Plantear el algoritmo necesario para calcular, utilizando el mtodo de NewtonRaphson, las races complejas o reales de un polinomio de grado 3.

El error de interpolacin viene dado por la frmula f (x) PN (x) = f N +1) ( ) (x a)N +1 (N + 1)!

donde es un valor intermedio entre x y a. En el caso general, donde buscamos un polinomio P (x) tal que l y todas sus derivadas hasta un cierto orden M coincidan con una funcin f (x) en los puntos {xi }i=0,..,N , se utilizan los denominados polinomios base de Hermite Hi,j (x), que son polinomios de grado menor o igual que (N + 1)(M + 1) 1 dados por las siguientes condiciones: l Hi,j 1 si l = j y k = i ( x ) = k 0 l 6= j o k 6= i xl A partir de los polinomios base de Hermite, el polinomio interpolador de Hermite se dene como: P (x) =
N X M X j f i=0 j =0

Problema 106 (2 puntos) Se considera el sistema no lineal (x 1)y = 0 (y 2)x = 0

xj

(xi )Hi,j (x)

A partir de u1 = (1, 1), calcular u2 y u3 utilizando el mtodo de Newton-Raphson para aproximar un cero del sistema no lineal. Problema 107 (2 puntos) Calcular una iteracin del mtodo de Newton-Raphson no lineal para aproximar una raz del sistema de ecuaciones exyz 1 = 0 y2 z 3 2 = 0 (z 1)x4 3 = 0 partiendo de (x, y, z ) = (1, 1, 1).

Problema 108 (3 puntos) Calcular los polinomios base de Hermite que corresponden a tomar como puntos de interpolacin x0 = 1, x1 = 1, y el orden de derivacin M = 1. Interpolacin por splines cbicos Uno de los problemas bsicos del polinomio interpolador de Lagrange, es que, para valores grandes de N, los polinomios de grado N pueden tener un carcter fuertemente oscilante, y los resultados obtenidos por la interpolacin pueden no ser muy satisfactorios, como indica el ejemplo siguiente.

43

Ejemplo 22 El polinomio base de Lagrange centrado en 0 sobre los puntos xi = 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5 es (x2 1)(x2 4)(x2 9)(x2 16)(x2 25) P 0 (x) = 14400 Tiene un marcado carcter oscilante como muestra su grca en el intervalo [5, 5]. Ejemplo 23 (x2 1)(x2 4)(x2 9)(x2 16)(x2 25) = 14400
y 5

las condiciones anteriores, entonces ai di bi = f (xi ) i = 0, .., N ci+1 ci = i = 0, .., N 1 3hi ai+1 ai hi (2ci + ci+1 ) = hi 3

i = 0, .., N 1

hi1 ci1 + 2(hi1 + hi )ci + hi ci+1 = 3(ai+1 ai ) 3 (ai ai1 ) = hi hi1 para i = 1, .., N 1.
i Demostracin De la condicin P3 (xi ) = f (xi ), se obtiene de forma inmediata que ai = f (xi ). De la condicin
i+1 2 P3 x2 (xi+1 )

3.75

i 2 P3 x2 (xi+1 ),

se obtiene que

2.5

2ci+1 = 6di hi + 2ci de donde, despejando, obtenemos que


0 2.5 x 5

1.25 0 -5 -2.5

di =

ci+1 ci 3hi

i De la Condicin P3 (xi+1 ) = f (xi+1 ), se obtiene que 2 di h3 i + ci hi + bi hi + ai = ai+1

Para evitar este problema de oscilaciones de los polinomios de Lagrange, cuando se trabaja con muchos puntos de interpolacin, se suele interpolar la funcin utilizando polinomios a trozos, deniendo un polinomio distinto para cada intervalo [xi , xi+1 ]. La tcnica ms conocida es la interpolacin por splines cbicos, que son polinomios de grado 3. Por tanto, tendremos un polinomio de grado 3 disi tinto P3 (x) = di (x xi )3 + ci (x xi )2 + bi (x xi ) + ai para cada intervalo [xi , xi+1 ]. Si hay N +1 puntos, el nmero de polinomios es N. Para denir estos polinomios, se imponen las siguientes condiciones:
i P3 (xi ) = f (xi ) i = 0, .., N 1 i P3 (xi+1 ) = f (xi+1 ) i = 0, ..., N 1

Despejando, obtenemos que bi = ai+1 ai di h2 i ci hi = hi ai+1 ai hi (2ci + ci+1 ) hi 3


i P3 x (xi )

Finalmente, de la condicin obtiene que

i1 P3 x (xi ),

se

bi = 3di1 h2 i1 + 2ci1 hi1 + bi1 y, despejando todo en funcin de ci , se obtiene la relacin hi1 ci1 + 2(hi1 + hi )ci + hi ci+1 = = 3(ai+1 ai ) 3 (ai ai1 ) hi hi1

i P3 (xi+1 ) = x i 2 P3 (xi+1 ) = 2 x

i+1 P3 (xi+1 ) i = 0, .., N 2 x i +1 2 P3 (xi+1 ) i = 0, ..., N 2 x2

= Vamos a introducir la notacin hi xi+1 xi . Ntese que, para denir los polinomios, tenemos que buscar 4N valores, es decir: a0 , ...., aN 1 , b0 , ..., bN 1 , c0 , ....., cN 1, d0 , ...., dN 1. Por razones tcnicas, como veremos posteriormente, vamos a utilizar tambin los valores aN y cN .
i Teorema 34 Si una familia de polinomios P3 (x) = di (x 3 2 xi ) + ci (x xi ) + bi (x xi ) + ai , i = 0, .., N, satisface

Ntese que esta ltima relacin determina un sistema de ecuaciones donde las incgnitas son las variables ci . Dicho sistema tiene N +1 incognitas (c0 , ..., cN ) y N 1 ecuaciones. Para completar dicho sistema, hay que aadir una ecuacin que involucre a c0 y otra ecuacin que involucre a cN . Para aadir estas dos ecuaciones hay dos procedimientos estndares. El primero consiste simplemente en jar c0 = cN = 0, lo que signica que c0 cN
44

= =

0 2 P3 (x0 ) = 0 2 x N 1 2 P3 (xN ) = 0 x2

El segundo procedimiento se utiliza cuando utilizamos los valores de f 0 (a) y f 0 (b). En este caso, imponemos que
0 P3

b0 b1

x
N 1 P3

(x0 ) = f 0 (a)

b2

2.2 = 1.733 3 4.4 + 2.8 = 1 = 0.467 3 5.6 + 0 = 2 = 0.133 3 = 1

(xN ) = f 0 (b)

Por tanto, los polinomios son P1 (x) = 1.667 (x 1)3 2.2 (x 1)2 0.467 (x 1) + 1
3

de donde salen las ecuaciones f 0 (a) = f 0 (b) = a1 a0 h0 (2c0 + c1 ) h0 3 aN aN 1 hN 1 (2cN 1 + cN ) hN 1 3

P0 (x) = 0.733x3 + 1.733x

P2 (x) = 0.933 (x 2) + 2.8 (x 2) + 0.133 (x 2)

Por lo tanto, siguiendo con el resultado del teorema anterior, para calcular los splines cbicos es necesario, en primer lugar, tomar ai = f (xi ). A continuacin, se resuelve un sistema de ecuaciones tridiagonal para el clculo de los ci . Los bj y dj se calculan directamente a partir de las relaciones mostradas en el teorema anterior. Ejemplo 24 Vamos a calcular los polinomios interpoladores utilizando splines cbicos al interpolar la funcin f (x) en los puntos x = 0, 1, 2, y 3, sabiendo que f (0) = 0, f (1) = 1, f (2) = 0, f (3) = 2, tomando c0 = c3 = 0. En este caso hi = 1. Debemos denir 3 polinomios distintos que corresponden a los intervalos [0, 1], [1, 2], y [2, 3]. Los trminos ai vienen dados por 0 a0 a1 1 a2 = 0 2 a3

A continuacin se muestra una grca con los 3 polinomios concatenados en el intervalo [0, 3] : Como puede observarse, por las condiciones sobre las derivadas que hemos impuesto, no es posible distinguir geomtricamente, al trazar la curva, cuales son los puntos de unin entre los tres polinomios. Es decir, parece, a simple vista, el trazado de una nica funcin. Veamos ahora grcamente el perl de la derivada de los polinomios P0 (x), P1 (x), y P2 (x).

2.75 2.5 2.25 2 1.75 1.5 1.25 1 0.75 0.5 0.25 0 -0.25 -0.5 -0.75 -1 -1.25

0.25 0.5

0.75 1

1.25 1.5

1.75 2

2.25 2.5

2.75 3 x

El sistema que debemos resolver para calcular los ci es 4 1 1 4 c1 c2 6 9

Ejemplo 25

como puede observarse, tampoco sobre la derivada se aprecian los puntos de unin de los polinomios. Sin embargo, sobre la grca de la derivada segunda los puntos de unin se detectan en los lugares donde encontramos un pico, tal y como se muestra en la grca de la derivada segunda siguiente:

cuya solucin es c1 2.2 = . 2.8 c2 Los valores bi y di vienen dados por d0 d1 d2 = = = 2.2 0 = 0.733 3 2.8 + 2.2 = 1.667 3 0. 2.8 = 0.933 3

y 5 4 3 2 1 0 0 -1 x -2 -3 -4 0.25 0.5 0.75 1 1.25 1.5 1.75 2 2.25 2.5 2.75 3

45

Problema 109 (3 puntos) Calcular los polinomios que determinan la interpolacin por splines cbicos de la fun cin f (x) = sin x para los puntos x = 1, 0, 1 y 2. 2 La interpolacin a travs de la funcin seno cardinal Una base de funciones interpolantes muy utilizada en la teora de Fourier es la base formada a partir de la funcin seno cardinal, denida por sin c(x) = cuya grca es sin(x) x

1.5

0.5

0 0 0.5 1 1.5 2 2.5 x 3

Ejemplo 27 Vamos a comparar grcamente el resultado de interpolar la funcin del ejemplo anterior utilizando la interpolacin de Lagrange normal, la interpolacin por splines cbicos y la interpolacin a travs de la funcin seno cardinal. El polinomio interpolador de Lagrange se puede calcular fcilmente y da como resultado 5 P (x) = x x(x 1) + x(x 1)(x 2) 6 En la siguiente gura se muestran juntas las grcas del polinomio de Lagrange (lnea a trozos), los polinomios de la interpolacin por splines cbicos (lnea slida), y la interpolacin utilizando la funcin sin c(x) (lnea a trozos).

0.75

0.5

0.25 0 -50 -25 0 25 x 50

2 1.8 1.6

Esta funcin tiene la propiedad de que en x sin c(0) = 1, y para cualquier entero i distinto sin c(i) = 0. Dada una funcin f (x), su funcin polante en los puntos xi = a i para i = M, ..., N dada por la funcin i ) sin( x e(x) = x a f (xi ) f a i i=M
N X

= 0, de 0, interviene

1.4 1.2 1 0.8 0.6 0.4 0.2 0 0 0.25 0.5 0.75 1 1.25 1.5 1.75 2 2.25 2.5 2.75 3 x

Ejemplo 26 Consideremos la funcin f (x), denida en los puntos x = 0, 1, 2, y 3, tal que f (0) = 0, f (1) = 1, f (2) = 0, f (3) = 2. La interpolacin de esta funcin utilizando la funcin seno cardinal viene dada por la funcin e(x) = sin( (x 1)) + 2 sin( (x 3)) f (x 1) (x 3)

Como puede observarse, la interpolacin por splines cbicos es la menos oscilante. Por otro lado, cuando el nmero de puntos de interpolacin aumenta, la diferencia entre los diferentes tipos de interpolacin tambin lo hace. Problema 110 (2 puntos) Calcular la funcin que interpola, utilizando la funcin sin c(x), la funcin f (x) = sin(x) en los puntos x = , 2 , 0, 2 , . La interpolacin trigonomtricos a travs de polinomios

cuya grca es

La base de la transformada de Fourier discreta es la utilizacin de los polinomios trigonomtricos dados por la expresin P k (x) = eikx
46

Dada una funcin f (x), denida en el intervalo [, ], pretendemos aproximar f (x) como f (x)
N X

P3 (x) =

1 2 2 + cos(x) cos(3x) 2 3

ck eikx

k=N

La siguiente grca muestra la aproximacin entre f (x) y P3 (x):

donde ck son coecientes, en general complejos. El siguiente resultado determina la forma de calcular dichos coecientes ck : Teorema 35 Los coecientes ck que minimizan el error cuadrtico medio !2 Z N X ikx f (x) ck e dx E (cN , ..., cN ) =
k=N

y 1

0.75

0.5

0.25 0 -2.5 -1.25 0 1.25 2.5 x

vienen dados por ck = R f (x)eikx dx 2

Demostracin En primer lugar, observamos que, dada la forma cuadrtica del funcional E (cN , ..., cN ), ste debe poseer mnimos. Por otro lado, en un mnimo, las derivadas parciales de E (cN , ..., cN ) con respecto a cualquier ck son cero, y por tanto ! Z N X E ilx (cN , ..., cN ) = cl e f (x) eikx dx = 0 ck
l=N

Problema 111 (3 puntos) Calcular el polinomio trigonomtrico, tomando N = 2, que interpola la funcin f (x) = |x| en el intervalo [, ]. Aproximacin por mnimos cuadrados La aproximacin mnimo cuadrtica aproxima, a travs de una funcin, un conjunto de valores de forma global, sin exigir que la funcin aproximante pase exactamente por ese conjunto de puntos. Dado un conjunto de valores {(xi , yi )}i=1,..,N , la aproximacin mnimo cuadrtica lineal consiste en buscar la recta y = ax + b, tal que la funcin de error cuadrtico E (a, b) = sea mnima. Teorema 36 Los valores a y b que minimizan el error cuadrtico anterior son P PN PN N N i=1 xi yi i=1 xi i=1 yi a = 2 PN 2 PN N i=1 xi i=1 xi PN PN PN 2 PN i=1 xi i=1 yi i=1 xi yi i=1 xi b = 2 PN 2 PN N i=1 xi i=1 xi
N X i=1

con lo que el resultado del teorema sale de forma inmediata, teniendo en cuenta que Z 2 si l = k eilx eikx dx = 0 si l 6= k

Ejemplo 28 Consideremos la funcin 1 si x [ 2, 2] f (x) = 0 si x / [ 2 , 2 ]

(axi + b yi )2

Vamos a calcular el polinomio trigonomtrico interpolante para N = 3. Los valores de ck son R f (x)dx 1 c0 = = 2R 2 f ( x ) eix dx 1 c1 = c1 = = R 2 2ix f ( x ) e dx c2 = c2 = =0 2 R f (x)e3ix dx 1 = c3 = c3 = 2 3 Por tanto, el polinomio trigonomtrico interpolador es
47

Demostracin En primer lugar, observamos que, dada la forma cuadrtica que tiene el funcional, debe poseer un

mnimo. Adems, en un mnimo del funcional E (a, b), las derivadas parciales son cero, y por tanto X E (axi + b yi ) xi = 0 (a, b) = 2 a i=1
N N

X E (axi + b yi ) = 0 (a, b) = 2 b i=1

Esto da lugar a un sistema lineal de ecuaciones cuyas incgnitas son a y b, y cuya resolucin lleva al resultado establecido en el teorema. Problema 112 (2 puntos) Calcular la aproximacin mnimo cuadrtica lineal de la tabla xi 0 1 2 3 yi 0 1 0 2

[Is-Ke] Isaacson E., Keller H. Analysis of Numerical Methods. John Wiley and Sons, 1966. Uno de los libros clsicos ms conocidos en Anlisis Numrico. Destaca por el rigor matemtico en su exposicin. [Ki-Ch] Kincaid D., Cheney W. "Anlisis Numrico". Addison-Wesley Iberoamericana, 1994. Excelente libro de base para un curso de Mtodos Numricos. Contiene todos los tpicos habituales con una descripcin muy completa y detallada. Los algoritmos estn muy bien descritos a travs de un seudocdigo. Trae una buena seleccin de problemas. [La-Th] Lascaux P., Thodor R. "Analyse numrique matricielle applique lart de lingnieur. Vol. 1 Mthodes directes y Vol. 2 Mthodes itratives ", Masson, 1993. Esta obra, dividida en dos volmenes, trata en profundidad todos los tpicos relacionados con el Anlisis Numrico Matricial. Su mayor virtud es el rigor matemtico con el que se tratan los temas y una cuidada presentacin. [St] Stewart G.W. Afternotes on Numerical Analysis SIAM, 1996. Esta obra, sin pretender ser exhaustiva, muestra las ltimas tendencias en cuanto a la enseanza de los conceptos bsicos del Anlisis Numrico.

BIBLIOGRAFA BSICA [Bu-Fa] Burden R., Faires D. Anlisis Numrico, Grupo Editorial Iberoamrica 1985. Esta obra es un clsico del Clculo Numrico, destaca por una exposicin simple y al mismo tiempo clara, con mltiples ejemplos y una descripcin de los algoritmos bien diseada. [Bo] Borse G. Programacin en fortran 77 Anaya, 1989. En esta obra se presenta el lenguaje de programacin fortran 77 con numerosas aplicaciones al anlisis numrico. [Ci] Ciarlet P.G. Introduction lanalyse numrique matricielle et loptimisation, Masson , 1990. Con un exquisito rigor se abordan los temas bsicos del Anlisis Numrico Matricial y mtodos de optimizacin, incluyendo la resolucin de sistemas a travs de mtodos directos, iterativos y mtodos tipo gradiente, as como el clculo de autovalores y vectores propios. [Hi] Higham N. "Accuracy and Stability of Numerical Algorithms", SIAM, 1996 Esta obra, muy reciente, da una visin general sobre los ltimos avances en Anlisis Numrico, haciendo especial nfasis en la precisin de los algoritmos numricos y en la propagacin de errores, tambin resulta de inters la descripcin de las aritmticas que utilizan los ordenadores ms recientes como la aritmtica Standard de I.E.E.E.. [Hu] Hultquist P. F. Numerical Methods for Engineers and Computer Scientists, The Benjamin/Cummings Publishing Company, Inc. 1988. Esta obra, presenta una cuidada seleccin de temas bsicos en Anlisis Numrico, sin pretender ser tan exhaustiva como otras obras de carcter ms general, la buena presentacin de los temas elegidos la hacen de inters.

48

APNDICE A: Resumen de los comandos de UNIX En este breve resumen seguiremos el siguiente esquema. En primer lugar, aparece el comando UNIX. A continuacin, entre parntesis, su equivalente en MS-DOS (si existe). Finalmente, un comentario y un ejemplo. cd (cd) cambia el directorio activo >cd /users/p701/fortran77 more (type) visualiza el contenido de un chero >more /users/p701/fortran77/programas/prog1.f ls (dir) visualiza contenido de un directorio >ls /users/p701/fortran77 cp (copy) copia un chero en otro. >cp /users/p701/fortran77/programas/prog1.f . rm (del) borra un chero >del prog1.f man (help) suministra ayuda sobre un comando > man ls logout se termina la sesin y se sale del sistema >logout ps visualiza los nmeros de procesos que estn abiertos que corresponden al usuario alumno >ps -u alumno kill interrumpe la ejecucin de un proceso de nmero N proceso >kill -9 N proceso mkdir (mkdir) crea un directorio >mkdir practica1 rmdir (rmdir) borra un directorio >rmdir practica1 mv (move) cambia de nombre o ubicacin un archivo. >mv prog1.f practica1.f chmod cambia los permisos de lectura, escritura y ejecucin de un chero. Este comando es de utilidad para salvaguardar la informacin de directorios y cheros de miradas ajenas. Hacer > man chmod para mirar las opciones. chown cambia el propietario de un chero. Hacer > man chown para mirar las opciones. du (tree) visualiza la cadena de directorios >du /users/p701 nd busca un archivo de nombre f ile en el directorio dir >nd dir -name f ile -print grep busca los cheros que contenga la cadena de caracteres string >grep string * APNDICE B: Resumen del procesador de texto vi El procesador de texto vi tiene la ventaja de estar presente en cualquier mquina que trabaje sobre UNIX y no requiere ningn entorno grco. Puede ejecutarse en dos modos. El modo comando (el que est por defecto al entrar en vi), donde se ejecutan comandos, y el modo edicin, que es donde se escribe normalmente el texto.
49

Intercambio entre modo comando y modo edicin ESC pasa de modo edicin a modo comando i pasa de modo comando a modo edicin A pasa a modo edicin y pone el cursor al nal de la lnea O inserta una nueva lnea, pasa a modo edicin y pone el cursor al principio de la nueva lnea Manejo de Ficheros (en modo comando) :w escribe en disco el chero :wq escribe en disco el chero y sale del vi :e f ichero.name edita el chero f ichero.name :q! sale del vi sin guardar cambios. :w f ichero.name escribe el chero actual en el chero f ichero.name en disco !comando ejecuta el comando UNIX comando :set nu presenta los nmeros de lnea en pantalla Comandos para desplazarse por el texto (en modo comando) Crtl F pgina adelante Crtl B pgina atrs $ pone el cursor en el nal de la lnea 0 pone el cursor en el principio de lnea /string busca hacia adelante el string string ?string busca hacia atras el string string n repite la ltima bsqueda G va al nal del texto 3G va a la lnea nmero 3. Comandos para borrar lneas o caracteres (en modo comando) x borra el carcter donde se encuentra el cursor r character remplaza el carcter donde se encuentra el cursor por el carcter character dd borra la lnea donde se encuentra el cursor 3 dd borra 3 lneas desde donde se encuentra el cursor hacia abajo dw borra la palabra donde se encuentra el cursor Comandos para copiar y desplazar bloques (en modo comando) yy copia en el buer la lnea donde se encuentra el cursor 3yy copia en el buer 3 lneas hacia abajo desde el cursor dd copia (y borra) al buer la lnea donde se encuentra el cursor 3dd copia (y borra) al buer 3 lneas hacia abajo desde el cursor p copia el contenido del buer en el texto.

APNDICE C: Algunos fallos comunes en Fortran 1. No poner EN D al nal del programa principal o de la funcin.

2. Escribir nmeros como 1/2 10 20 en precisin entera. Solucin: Escribir 1./2. 10. 20. 3. Utilizar variables enteras como otantes o al revs. Sugerencia: Aunque no sea necesario, declarar los tipos de todas las variables que se utilicen al principio del programa o funcin. 4. Utilizar un parmetro de una funcin para asignar dinmicamente memoria a un vector o matriz en el interior de la funcin. Solucin: Poner una declaracin de PARAMETER al principio de la funcin y con ella asignar las memorias de forma esttica. 5. No poner ningn comentario en los programas. 6. Anidar excesivamente los programas. Siempre hay que buscar que el nmero de anidamientos sea mnimo. 7. No respetar los tipos en los pasos de parmetros de las funciones. 8. Utilizar vectores sin declararlos con la sentencia DIMENSION. 9. No pasar la dimensin de un vector como parmetro de una funcin. 10. Exceso de sentencias GOT O. Las sentencias GOT O pueden dicultar el seguimiento del ujo del programa y slo hay que utilizarlas cuando sean indispensables. 11. A veces, los programas pueden fallar por errores de redondeo en los clculos. Fortran da la posibilidad de cambiar el nmero de bits utilizados para almacenar las variables en el momento de la compilacion. Por ejemplo, si hacemos f77 -rn prueba.f -o prueba donde n es 8 16, aumentaremos la precisin de la aritmtica para las variables reales. Anlogamente, si en lugar de utilizar la directiva -rn utilizamos -dn aumentaremos la precisin de las variables declaradas DOUBLE PRECISION, y si utilizamos -in las variables enteras.

50

También podría gustarte