apuntes analisis numerico

50
ANÁLISIS NUMÉRICO Miguel Alemán Flores, Luis Álvarez León y Javier Sánchez Pérez Departamento de Informática y Sistemas Universidad de Las Palmas Campus de Tara 35017 Las Palmas, España Email: {maleman,lalvarez,jsanchez}@dis.ulpgc.es Contenidos 1 INTRODUCCIÓN 2 2 ARITMÉTICAS DE PRECISIÓN FINITA Y FUENTES DE ERRORES NUMÉRICOS 2 2.1 Aritméticas de precisión nita ........ 2 2.2 Práctica 1 (Aritméticas nitas, 2 horas) . 5 2.3 Fuentes de errores numéricos ........ 7 3 CÁLCULO DE LOS CEROS DE UNA FUN- CIÓN 8 3.1 Método de la bisección ............ 8 3.2 Método de la Regula-falsi (regla de lo falso) 8 3.3 Método de Newton-Raphson ......... 8 3.4 El método de la Secante ........... 8 3.5 Método de Müller ............... 9 3.6 Práctica 2 (Método de Müller, 4 horas) . . 9 3.7 Cálculo de las raíces de un polinomio .... 10 3.7.1 Algoritmo de Horner para evaluar un polinomio en un punto ...... 10 4 INTERPOLACIÓN DE FUNCIONES I 14 4.1 Interpolación por polinomios de Lagrange . 14 4.2 Error de interpolación de Lagrange y poli- nomios de Chebychev ............ 15 4.3 Método de diferencias de Newton para el cálculo del polinomio interpolador de La- grange ..................... 15 4.4 Implementación de funciones elementales . . 18 4.4.1 Aproximación de la exponencial e x . 18 4.5 Práctica 3 (Aproximación de e x , 2 horas) . 18 4.5.1 Aproximación de funciones trigonométricas ............ 18 4.5.2 Aproximación de la función ln(x) .. 19 5 ANÁLISIS NUMÉRICO MATRICIAL I 19 5.1 Método de Gauss ............... 19 5.2 Estimación del error de un método para re- solver sistemas ................ 21 5.3 Método de Cholesky ............. 21 5.4 Práctica 4 (Método de Cholesky, 6 horas) 22 5.5 Método de Crout para matrices tridiagonales 22 5.6 Subrutinas en Fortran 77 para la lectura y escritura en disco de vectores y matrices . . 23 6 DIFERENCIACIÓN E INTEGRACIÓN NUMÉRICA 24 6.1 Diferenciación Numérica ........... 24 6.2 Diferenciación numérica en dimensiones su- periores .................... 25 6.2.1 Discretización del Laplaciano .... 26 6.2.2 Discretización del gradiente ..... 26 6.3 Integración Numérica ............. 27 6.3.1 Métodos de Cuadratura de Gauss . . 27 6.3.2 Fórmulas de Integración Numérica Compuestas .............. 28 6.4 Práctica 5 (Implementación Método de In- tegración de Simpson, 2 horas) ....... 29 6.5 Integración numérica en dimensiones supe- riores ...................... 29 7 ANÁLISIS NUMÉRICO MATRICIAL II 31 7.1 Normas de vectores y matrices ....... 31 7.2 Condicionamiento de una matriz ...... 33 7.3 Cálculo de autovalores y autovectores ... 33 7.3.1 Método de Jacobi .......... 34 7.4 Práctica 6 (Método de Jacobi para el cál- culo de autovalores y autovectores 6 horas) 36 7.4.1 Método de la potencia ........ 36 7.4.2 Método de la potencia inversa .... 37 7.5 Métodos iterativos de resolución de sis- temas lineales ................. 38 7.5.1 Método de Jacobi .......... 39 7.5.2 Método de Gauss-Seidel ....... 39 7.5.3 Método de relajación ......... 40 7.5.4 Convergencia de los métodos iterativos 41 7.6 Práctica 7 (Método de relajación, 2 horas) 42 7.7 Método de Newton-Raphson para sistemas de ecuaciones no lineales ........... 42 8 INTERPOLACIÓN DE FUNCIONES II 43 8.1 Interpolación de Hermite ........... 43 8.2 Interpolación por splines cúbicos ...... 43 8.3 La interpolación a través de la función seno cardinal .................... 46 8.4 La interpolación a través de polinomios trigonométricos ................ 46 8.5 Aproximación por mínimos cuadrados ... 47 9 BIBLIOGRAFÍA BÁSICA 48 1

Upload: teo-teves

Post on 25-Oct-2015

48 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Apuntes Analisis Numerico

ANÁLISIS NUMÉRICO

Miguel Alemán Flores, Luis Álvarez León y Javier Sánchez PérezDepartamento de Informática y Sistemas

Universidad de Las PalmasCampus de Tafira

35017 Las Palmas, EspañaEmail: maleman,lalvarez,[email protected]

Contenidos

1 INTRODUCCIÓN 2

2 ARITMÉTICAS DE PRECISIÓN FINITAY FUENTES DE ERRORES NUMÉRICOS 22.1 Aritméticas de precisión finita . . . . . . . . 22.2 Práctica 1 (Aritméticas finitas, 2 horas) . 52.3 Fuentes de errores numéricos . . . . . . . . 7

3 CÁLCULO DE LOS CEROS DE UNA FUN-CIÓN 83.1 Método de la bisección . . . . . . . . . . . . 83.2 Método de la Regula-falsi (regla de lo falso) 83.3 Método de Newton-Raphson . . . . . . . . . 83.4 El método de la Secante . . . . . . . . . . . 83.5 Método de Müller . . . . . . . . . . . . . . . 93.6 Práctica 2 (Método de Müller, 4 horas) . . 93.7 Cálculo de las raíces de un polinomio . . . . 10

3.7.1 Algoritmo de Horner para evaluarun polinomio en un punto . . . . . . 10

4 INTERPOLACIÓN DE FUNCIONES I 144.1 Interpolación por polinomios de Lagrange . 144.2 Error de interpolación de Lagrange y poli-

nomios de Chebychev . . . . . . . . . . . . 154.3 Método de diferencias de Newton para el

cálculo del polinomio interpolador de La-grange . . . . . . . . . . . . . . . . . . . . . 15

4.4 Implementación de funciones elementales . . 184.4.1 Aproximación de la exponencial ex . 18

4.5 Práctica 3 (Aproximación de ex, 2 horas) . 184.5.1 Aproximación de funciones

trigonométricas . . . . . . . . . . . . 184.5.2 Aproximación de la función ln(x) . . 19

5 ANÁLISIS NUMÉRICO MATRICIAL I 195.1 Método de Gauss . . . . . . . . . . . . . . . 195.2 Estimación del error de un método para re-

solver sistemas . . . . . . . . . . . . . . . . 215.3 Método de Cholesky . . . . . . . . . . . . . 215.4 Práctica 4 (Método de Cholesky, 6 horas) 225.5 Método de Crout para matrices tridiagonales 225.6 Subrutinas en Fortran 77 para la lectura y

escritura en disco de vectores y matrices . . 23

6 DIFERENCIACIÓN E INTEGRACIÓNNUMÉRICA 246.1 Diferenciación Numérica . . . . . . . . . . . 246.2 Diferenciación numérica en dimensiones su-

periores . . . . . . . . . . . . . . . . . . . . 256.2.1 Discretización del Laplaciano . . . . 266.2.2 Discretización del gradiente . . . . . 26

6.3 Integración Numérica . . . . . . . . . . . . . 276.3.1 Métodos de Cuadratura de Gauss . . 276.3.2 Fórmulas de Integración Numérica

Compuestas . . . . . . . . . . . . . . 286.4 Práctica 5 (Implementación Método de In-

tegración de Simpson, 2 horas) . . . . . . . 296.5 Integración numérica en dimensiones supe-

riores . . . . . . . . . . . . . . . . . . . . . . 29

7 ANÁLISIS NUMÉRICO MATRICIAL II 317.1 Normas de vectores y matrices . . . . . . . 317.2 Condicionamiento de una matriz . . . . . . 337.3 Cálculo de autovalores y autovectores . . . 33

7.3.1 Método de Jacobi . . . . . . . . . . 347.4 Práctica 6 (Método de Jacobi para el cál-

culo de autovalores y autovectores 6 horas) 367.4.1 Método de la potencia . . . . . . . . 367.4.2 Método de la potencia inversa . . . . 37

7.5 Métodos iterativos de resolución de sis-temas lineales . . . . . . . . . . . . . . . . . 387.5.1 Método de Jacobi . . . . . . . . . . 397.5.2 Método de Gauss-Seidel . . . . . . . 397.5.3 Método de relajación . . . . . . . . . 407.5.4 Convergencia de los métodos iterativos 41

7.6 Práctica 7 (Método de relajación, 2 horas) 427.7 Método de Newton-Raphson para sistemas

de ecuaciones no lineales . . . . . . . . . . . 42

8 INTERPOLACIÓN DE FUNCIONES II 438.1 Interpolación de Hermite . . . . . . . . . . . 438.2 Interpolación por splines cúbicos . . . . . . 438.3 La interpolación a través de la función seno

cardinal . . . . . . . . . . . . . . . . . . . . 468.4 La interpolación a través de polinomios

trigonométricos . . . . . . . . . . . . . . . . 468.5 Aproximación por mínimos cuadrados . . . 47

9 BIBLIOGRAFÍA BÁSICA 48

1

Page 2: Apuntes Analisis Numerico

10 APÉNDICE A: Resumen de los comandosde UNIX 49

11 APÉNDICE B: Resumen del procesador detexto vi 49

12 APÉNDICE C: Algunos fallos comunes enFortran 49

INTRODUCCIÓN

El presente documento es un texto de referencia básico so-bre los contenidos de la disciplina de Análisis Numéricoen el contexto curricular de una Ingeniería Informática.Aunque el texto cubre los contenidos mínimos necesarios,resultará de gran interés para los alumnos complementarla información aquí suministrada con los textos de referen-cia básicos mencionados en la bibliografía. Muchas de lasdemostraciones de los resultados presentados se encuen-tran en este texto. En los casos en que las demostracionesno se incluyen, se suministra el libro y la página dondese encuentra tal demostración, para que el alumno intere-sado pueda estudiarla por su cuenta. En general, todos lostemas presentados aparecen bien desarrollados en los librosde texto clásicos mencionados en la bibliografía. La únicaexcepción es el tema de aritméticas de precisión finita, quese ha desarrollado en este texto con algo más de detalle ycon un enfoque algo más moderno que en los libros clási-cos, por considerar que, en el contexto de una IngenieríaInformática, este tema es de especial relevancia.

El lenguaje de programación que se utilizará es el For-tran. Se ha elegido este lenguaje por ser la plataformadonde se han desarrollado habitualmente los grandes pro-gramas de cálculo numérico y por estar especialmenteorientado al cálculo científico. En el texto se va intro-duciendo este lenguaje de programación a través de pro-gramas ejemplo. Estos programas ejemplo se encuentran adisposición de los alumnos en el directorio de la asignatura/users/asignaturas/ii-an de la máquina serdis.dis.ulpgc.es.También se encuentra a disposición de los alumnos elfichero an.h, donde se encuentran todas las subrutinasdefinidas en estos programas ejemplo.

En el texto se proponen unas prácticas de laboratoriopara realizar a lo largo de la asignatura. Para estable-cer el orden de impartición de los contenidos presentes eneste documento se ha utilizado, como criterio preferente,la coordinación entre el programa de prácticas y el pro-grama teórico de la asignatura, de tal forma que, con undesarrollo normal de la docencia, los contenidos teóricossean presentados con antelación al desarrollo de las prác-ticas, comenzando las prácticas de laboratorio a partir dela segunda semana de clase.

Para el buen seguimiento de la asignatura, resulta degran interés tener cierta soltura en el manejo de los con-ceptos elementales del Análisis Matemático, el Álgebra,y la programación de Algoritmos. La materia expuestaen esta documentación está programada para ser impar-tida en un cuatrimestre a razón de 3 horas/semana en elaula y 2 horas/semana en el laboratorio informático, lo

que hace un total de, aproximadamente, 45 horas en aula(3 créditos teóricos) y 30 horas de laboratorio (2 créditosprácticos). Dado el escaso tiempo disponible, se han elim-inado algunos temas clásicos de un curso completo anualde Análisis Numérico como son las ecuaciones diferencialesordinarias y las ecuaciones en derivadas parciales. Nor-malmente, dichos temas se verán en detalle en asignaturasposteriores. Además, en lugar de presentar de forma ex-haustiva todos los métodos numéricos que se pueden en-contrar en los libros de Análisis Numérico clásicos, se haoptado por reducir los contenidos e impartir una selecciónde los métodos numéricos más representativos.

ARITMÉTICAS DE PRECISIÓN FINITA YFUENTES DE ERRORES NUMÉRICOS

Aritméticas de precisión finita

Un número entero z se representa en el ordenador a travésde un número fijo de bits (16 bits habitualmente), dondeuno de los bits se utiliza para determinar el signo y losrestantes para expresar el valor absoluto del número, detal manera que la secuencia de bits

a1a2a3......an

donde ai = 0 o ai = 1, representa el valor absoluto delnúmero

| z |= an + an−12 + an−222 + ...+ a12

n−1

Así, utilizando 16 bits, el mayor número entero quepodemos representar es

1 + 2 + 22 + .....+ 214 = 215 − 1 = 32767

Es decir, los número enteros que podemos expresarcon una aritmética de 16 bits van desde −32767 hasta32767.

Para representar un número real y en el ordenadornos basaremos en el siguiente resultado:

Teorema 1 Un número real positivo y se puede expresarcomo

y = 2e∞Xn=1

an2n

donde e es un número entero, a1 = 1, y para n > 1, an = 0o an = 1.

Demostración. Dado un número real positivo y, existeun entero e tal que 2e−1 ≤ y < 2e, y por tanto 2−1 ≤y2−e < 1. Por otro lado, si definimos las sucesiones Sn yan de la siguiente forma: S1 = 2−1, an = 1 y para n > 1

an = 0 si Sn−1 +12n > y2−e

an = 1 si Sn−1 +12n ≤ y2−e

Sn =nX

k=1

ak2k

entonces es claro que | Sn−y2−e |≤ 12n , y por tanto Sn →

y2−e lo que concluye la demostración del teorema.

2

Page 3: Apuntes Analisis Numerico

Ejemplo 1 Consideremos y = 10. 125, podemos expresareste número como

10. 125 = 24(1

2+1

23+1

27)

Es decir, e = 4, a1 = a3 = a7 = 1, y el resto de los anes 0. En este caso, el número de elementos an distintos de0 es un número finito, en general no ocurre así.

Evidentemente, cualquier número que tenga unnúmero finito de elementos an distintos de 0 es un númeroracional y, por tanto, los números irracionales se represen-tarán siempre con un número infinito de elementos an nonulos. Sin embargo, como muestra el siguiente problema,existen otros muchos números además de los irracionales,que no se pueden representar con un número finito de ele-mentos an no nulos.

Problema 1 (2 puntos) Demostrar que al representarel número real 0.1 como

0.1 = 2e∞Xn=1

an2n

el número de elementos no nulos an es infinito.

Problema 2 (2 puntos) Representar el número 0.0703 125 como

0.0 703 125 = 2e∞Xn=1

an2n

Para definir una aritmética de precisión finita denúmero reales, lo que se hace habitualmente es discretizarla fórmula de representación anterior, tomando un númerofinito de valores posibles ai y un número finito de valorespara el exponente e. Como puede observarse, cada valorai viene representado por un bit. Además, puesto que elvalor a1 es siempre igual a 1, no es necesario almacenar suvalor en memoria al guardar un número real.

Por tanto, en una aritmética de precisión finita, losnúmeros reales distintos de cero se representan como

ey = ±2e tXn=1

an2n

donde e varía entre dos valores limites emin ≤ e ≤ emax. Alvalor t se le llama precisión de la aritmética. A la secuenciaa1a2a3......at, (donde ai ∈ 0, 1) se le denomina mantisa.Hay que hacer notar aquí que, dado que hemos impuestosiempre que a1 = 1, el número 0 debemos añadirlo a laaritmética, ya que 0 no se puede representar de la formaanterior.

Problema 3 (1 punto) Calcular los valores positivosmínimo y máximo que puede tomar un número real enuna aritmética de precisión finita en función de t, emin yemax.

Problema 4 (2 puntos) Calcular todos los númerosreales que se pueden construir tomando 5 bits de la formasiguiente: 1 bit para el signo, 2 bits para la mantisa (esdecir t = 3, puesto que a1 = 1 y sólo se almacenan a2y a3) y 2 bits para el exponente e, tomando como rangode e = −1, 0, 1, 2. Representar dichos números sobre unarecta.

Es importante resaltar que los números reales en unaaritmética de precisión finita no están equiespaciados, esdecir, los números están más cercanos entre sí cerca de 0,y más alejados al alejarnos de 0.

En 1985, la sociedad I.E.E.E. presentó una serie deespecificaciones estándares para la definición de una arit-mética de precisión finita para los números reales. En estetrabajo, se codifica un número real en simple precisión uti-lizando 32 bits de memoria, de los cuales 23 bits se utilizanpara la mantisa (es decir t = 24 puesto que a1 = 1 no sealmacena), 1 bit se utiliza para el signo y 8 bits se utilizanpara el exponente e, lo cual da un rango de 28 = 256 val-ores posibles para el exponente e. En este caso, se tomaemin = −125 y emax = 128. Como puede observarse, elnúmero total de exponentes posibles es 254, dos menosque los 256 posibles, ello se hace así, porque se reservandos casos para tratar las denominadas excepciones, comose verá más adelante.

Por tanto, el valor máximo que puede tomar unnúmero real en esta aritmética es

eymax = 2128 24Xn=1

1

2n= 3. 4× 1038

y el valor mínimo positivo es

eymin = 2−125 12= 1. 18× 10−38

Además, el número de combinaciones posibles quepuede tener la mantisa es 224 ≈ 1. 68 × 107. Es decir,la aritmética tiene una precisión de 7 dígitos decimales.Esta representación equivale a normalizar el número bina-rio colocando la coma detrás del primer 1, representar enla mantisa la parte fraccionaria, puesto que la parte enteraes un 1 implícito, y el exponente en exceso 127, es decir,sumando esta cantidad al exponente resultante de la nor-malización, de forma que el rango que va desde 1 hasta254 representa los exponentes que van desde −126 hasta127 (se reservan los valores 0 y 255 para las excepciones).

También se define en este trabajo de I.E.E.E. un es-tándar para una aritmética en doble precisión. En estecaso, se utilizan 64 bits para almacenar un número 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 dalugar a 211 = 2048 posibilidades de elección de exponentee. En este caso, se toma emin = −1021 y emax = 1024.

Por tanto, el valor máximo que puede tomar unnúmero real en esta aritmética es

eymax = 21024 53Xn=1

1

2n= 1. 78× 10308

3

Page 4: Apuntes Analisis Numerico

y el valor mínimo positivo es

eymin = 2−1021 12= 2. 23× 10−308

Además, el número de combinaciones posibles quepuede tener la mantisa es 253 ≈ 9. 0 × 1015. Es decir, laaritmética tiene una precisión de 15 dígitos decimales.

Evidentemente, estos estándares no se siguen al piede la letra por los diferentes fabricantes de ordenadores.Así, aunque existe bastante homogeneidad en este sentido,los valores pueden cambiar ligeramente de una máquina aotra. Por otro lado, aunque en la mayoría de los orde-nadores actuales la base de representación de los númeroses 2, todavía pueden encontrarse algunos sistemas dondela base es 10 ó 16. Nosotros no entraremos aquí a estudiareste tipo de bases. El estudio es básicamente el mismo,adaptándolo a la base de representación.

Tratamiento de las excepciones en el estándar deI.E.E.E.Denominaremos excepciones a las expresiones que no sepueden expresar en una aritmética usual, como son el 0,el infinito, operaciones no válidas (como

√−1), etc. Estas

excepciones son tratadas en el estándar de I.E.E.E. de lasiguiente forma: dentro de las posiciones de memoria ded-icadas al exponente e de un número, se reservan dos, quecorresponden a emin− 1 y emax+1, para trabajar con conlas excepciones. La regla que se utiliza es la siguiente:

1. Si el valor de una variable y tiene por exponenteemax + 1 y todos los coeficientes de la mantisa valen0, entonces y se considera infinito. Por ejemplo 1/0debe dar infinito.

2. Si el valor de una variable y tiene por exponenteemax + 1 y algún coeficiente de la mantisa es distintode 0, entonces y se considera que no es un número(NaN (Not a Number)). Por ejemplo

√−1 debe dar

NaN.

3. Si el valor de una variable y tiene por exponenteemin−1 y todos los coeficientes 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 algún coeficiente de la mantisa es distinto de 0, yse considera que no está normalizado (es decir a1 = 0)y el valor de y sería

y = 2emin−1tX

n=2

an2n

Programa 1 Programa en Fortran 77 para calcular elmenor número positivo de una aritmética. El programadevuelve un entero M tal que 2−M es el menor númeroreal positivo normalizado.

A=1.M=0

1 A=A/2.IF(A.GT.0) THEN

M=M+1GOTO 1

ENDIFPRINT *,MEND

Nota En Fortran 77 no es necesario declarar las variables.Por defecto, las variables cuyo nombre empieza por lasletras

I, J,K,L,M,N

son variables enteras, y el resto son variables reales. Lascinco primeras columnas de cada línea de un programaFortran 77 están reservadas para escribir un número deetiqueta.

La columna 6 está reservada para indicar si una líneaes continuación de la anterior (en este caso basta con es-cribir un carácter en la columna 6.)

Un ∗ o una C en la primera columna indica que lalínea es de comentario.

En el Fortran 77 estándar no existe la instrucciónWHILE. Sin embargo, como se muestra en el programaanterior, se puede simular fácilmente un WHILE con unGOTO.

Los operadores de comparación en fortran 77 son:.GT., .GE., .EQ., .NE., .LT. y .LE., que significan mayorque, mayor o igual a, igual a, no igual a, menor que ymenor o igual a, respectivamente. Los operadores lógicosson .AND. y .OR., que realizan las operaciones de con-junción y disyunción, respectivamente.

Programa 2 Programa en Fortran 77 para calcular elmayor número positivo de una aritmética. El programadevuelve un entero M tal que 2M es el número cuya rep-resentación corresponde a la excepción que codifica el in-finito.

A=1.B=1.M=0

1 B=2.*AIF(B.GT.A) THEN

A=BM=M+1

GOTO 1ENDIFPRINT *,MEND

4

Page 5: Apuntes Analisis Numerico

Problema 5 (2 puntos) Dada una aritmética de pre-cisión finita cualquiera, calcular la distancia que hay entreel número 1 y su inmediato superior, es decir, el númeroque va después de 1, y la distancia entre el número 1 y suinmediato inferior.

Vamos a llamar A, al conjunto de valores reales a losque da lugar una aritmética de precisión finita, es decir

A =

(±2e

tXn=1

an2n

)∪ 0

Dado un número real cualquiera y, al representarloen una aritmética de precisión finita se produce un errorde redondeo, llamaremos ey ∈ A al número real que mejoraproxima a y dentro de A.

Definición 1 Dada una aritmética de precisión finita, sedefine la unidad de redondeo u como

u = 2−t

Por ejemplo, si t = 24 (reales en simple precisión)u = 2−24 = 5. 97 × 10−8, y en doble precisión (t = 53),u = 2−53 = 1. 1× 10−16.

Programa 3 Programa en Fortran 77 para calcular launidad de redondeo de una aritmética. El programa de-vuelve un entero M tal que u = 2−M

A=1.M=1

1 A=A*2.IF((1.+1./A).GT.1) THEN

M=M+1GOTO 1

ENDIFPRINT *,MEND

Práctica 1 (Aritméticas finitas, 2 horas)

La línea de comando para la compilación de un programaen Fortran 77 tiene la forma:

> f77 prog1.f − o prog1

Esta línea compila el programa prog1.f y genera elejecutable prog1.

Para compilar un programa en Fortran, necesitamosuna máquina que tenga instalado el compilador. Porejemplo, la máquina serdis.dis.ulpgc.es tiene dicho compi-lador. Para utilizar el compilador desde un entorno Win-dows, basta con conectarse a través de la utilidad SSH a

serdis.dis.ulpgc.es y trabajar directamente sobre el termi-nal de conexión. Los ficheros se pueden editar y corregiren entorno Windows.

Compilar y ejecutar los programas 1, 2 y 3 para com-probar cuáles son el menor y el mayor número positivo,y la unidad de redondeo del ordenador en precisión sim-ple. Dichos programas se encuentran en el directoriode la asignatura /users/asignaturas/ii-an de la máquinaserdis.dis.ulpgc.es.

Si ponemos en la cabecera del programa la instrucción

IMPLICIT DOUBLE PRECISION (D)

cualquier variable cuyo nombre empiece por D será unnúmero real en doble precisión. Hacer las modificacionespertinentes en los programas 1, 2 y 3, para comprobarcuáles son el menor y el mayor número positivo, y la unidadde redondeo del ordenador en doble precisión. Además,hacer operaciones del tipo 1/0, 1/∞, ∞/0, ∞/∞,

√−1

e imprimir los resultados para ver cómo trata las excep-ciones el FORTRAN en la arquitectura de los ordenadoresdel laboratorio.

Problema 6 (4 puntos) Se considera una aritmética de16 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 números en esta ar-itmética:

1. 2, y los números más cercanos a 2 por arriba y pordebajo.

2. El cero, el infinito y NaN.

3. Los números positivos mayor y menor de la aritmética(teniendo en cuenta las excepciones).

4. 19 .

5. 2¡12 −

1210

¢.

Problema 7 (2 puntos) Sean A =2¡12 +

123 +

125

¢B = 23

¡12 +

126 +

127

¢. Calcular

B +A y B −A

Problema 8 (2 puntos) Sean emin, emax, los valoresmínimo y máximo del exponente e. Demostrar que siemin < e < emax, entonces los números:

2e

ÃtX

n=1

an2n± 1

2t

!

pertenecen al conjunto A de números reales generados porla aritmética de precisión finita.

5

Page 6: Apuntes Analisis Numerico

A continuación, mostraremos un resultado que indicael error de redondeo máximo que se produce al aproximarun número real cualquiera en una aritmética de precisiónfinita.

Teorema 2 Sean eymin , eymax los valores positivos menory mayor de una aritmética de precisión finita. Sea u launidad de redondeo de dicha aritmética. Si un númeroreal z verifica que eymin <| z |< eymax, entonces

| z − ez |≤| z | udonde ez es el número más cercano a z en la aritmética.

Demostración. Un número real cualquiera z, quetomaremos positivo sin pérdida de generalidad, se puedeexpresar como

z = 2e∞Xn=1

an2n

donde a0 = 1 y, en general, an = 0 o an = 1. Además,para un número natural t cualquiera tenemos que

2etX

n=1

an2n≤ z ≤ 2e

ÃtX

n=1

an2n+1

2t

!

Por el problema anterior, el número que está a laderecha de la desigualdad también pertenece a la arit-mética de precisión finita, y por tanto

| z − ez |≤ 2e2−t2

Ahora bien, como a0 = 1, se tiene que 2e < 2 | z | y,por tanto

| z − ez |≤| z | 2−t =| z | ucon lo que queda demostrado el teorema.

Problema 9 (2 puntos) Dado un número ez =2ePt

n=1an2n , en una aritmética de precisión finita. Cal-

cular el número inmediatamente inferior a él en dicha ar-itmética.

Un resultado importante para la comparación de dosnúmeros es el siguiente:

Teorema 3 Si ez1, ez2 ∈ A son distintos entonces

| ez1 − ez2 |≥ max | ez1 |, | ez2 |uDemostración: Ejercicio

En muchos algoritmos, el test de parada incluye elhecho de que dos variables estén próximas entre sí. paraello se fija un umbral o tolerancia TOL que por supuestoserá mayor que la unidad de redondeo u y expresaremos

que las variables A y B están cercanas entre sí con unatolerancia TOL si se cumple que

| A−B |≤ max | A |, | B |TOL

Este criterio es simétrico en el sentido de que trata deigual modo los números A y B. También se puede utilizarun criterio más simple, como

| A−B |≤| A | TOL

pero en este caso le estamos dando una significación espe-cial a A con respecto a B.

Estos criterios de comparación de números funcionanbien salvo cuando los números A y B están muy próximosa 0. Por ejemplo, si B = 0, los criterios anteriores quedan

| A |≤| A | TOL

lo cual es imposible (si TOL < 1), salvo que A tambiénsea 0. Para evitar este comportamiento, se puede añadiral criterio un valor > 0 de la siguiente forma:

| A−B |≤ (max | A |, | B |+ )TOL

Programa 4 Programa en Fortran 77 que determina sidos variables A,B son iguales con una tolerancia TOL(tomando el máximo de A,B), con = 10−10

READ *,A,B,TOLIF(IGUAL(A,B,TOL).EQ.0) THEN

PRINT *,’A=B segun la tolerancia TOL’STOP

ELSEPRINT *,’A distinto de B segun la tolerancia

TOL’STOP

ENDIFEND

FUNCTION IGUAL(A,B,TOL)IF(ABS(A).GT.ABS(B)) THEN

IF(ABS(A-B).LE.(TOL*(ABS(A)+10.**(-10.))) THEN

IGUAL=0RETURN

ELSEIGUAL=1RETURN

ENDIFELSE

IF(ABS(A-B).LE.(TOL*(ABS(B)+10.**(-10.))) THEN

IGUAL=0RETURN

ELSEIGUAL=1

6

Page 7: Apuntes Analisis Numerico

RETURNENDIF

ENDIFEND

Asociado a cualquier aritmética de precisión finita denúmeros reales, existen 4 operaciones básicas, que son lasuma, la resta, la multiplicación y la división de númerosreales dentro de la aritmética. Nosotros no vamos a entraren este curso en cómo se pueden definir algorítmicamenteestas operaciones. Solamente queremos mencionar que, amenudo, para minimizar el efecto de los redondeos en lasoperaciones, antes de realizarlas se aumenta la precisiónde los números reales (por ejemplo pasando de simple pre-cisión a doble precisión) para, a continuación, realizar laoperación en una aritmética de mayor precisión y, final-mente, el resultado se redondea para pasarlo a la precisióninicial.

Fuentes de errores numéricos

Dentro de las posibles fuentes de errores numéricos,destacaremos 3 tipos:

Errores de redondeo. Son los que se producen al ”re-dondear” un número real para poder expresarlo en unaaritmética de precisión finita. Como vimos en la sec-ción anterior, este error está controlado por la denominadaunidad de redondeo, u = 2−t, de tal forma que, al tomarun número real z y aproximarlo en la aritmética por elvalor ez ∈ A más próximo, el error de redondeo tiene laexpresión:

| z − ez |≤| z | uErrores de cambio de base. Este tipo de errores seproduce al realizar un cambio de base para representar unnúmero real. Como vimos en la sección anterior, las arit-méticas estándares de ordenador trabajan en base 2. Sinembargo, los humanos pensamos y razonamos en términosde números en base 10. Por ejemplo, números tan naturalespara nosotros como 0.1 no pueden representarse de formaexacta en una aritmética en base 2. Esto quiere decir que,al representar 0.1 el ordenador, va a producir un pequeñoredondeo, y este pequeño error de redondeo se puede ir pro-pagando hasta producir errores apreciables. Por ejemplo,parece razonable pensar que, cuando sumamos 100 vecesel número 0.01, el resultado sea exactamente 1, pero, noes así. Sin embargo, si sumamos 128 = 27 veces el número2−7, el resultado sí es exactamente 1. Este resultado sepone de manifiesto en el siguiente programa Fortran:

Programa 5 Programa en Fortran 77 para comprobar ladiferencia entre trabajar en base 10 y trabajar en base 2.

A=2**(-7.)B=0

C=0.01D=0DO 1 K=1,2**7

B=B+A1 CONTINUE

DO 2 K=1,100D=D+C

2 CONTINUEPRINT *,(1-B)*(10**10)PRINT *,(1-D)*(10**10)END

Además, este programa permite identificar la base dela aritmética con la que trabaja el ordenador.

Como conclusión de este apartado, podemos extraerque, para ser más precisos numéricamente, cuando tra-bajamos con números más pequeños que la unidad de-beríamos pensar en términos de 2−m en lugar de 10−m,que es como solemos hacerlo.

Errores por Cancelación. Estos errores se producen alrestar números de aproximadamente la misma magnitud.Hay que tener en cuenta que, al realizar operaciones sobreuna variable, los errores de redondeo se van acumulandoen la parte menos significativa del número (los dígitos demenos valor), dejando relativamente intacta la parte mássignificativa del número, que corresponde a los dígitos demayor valor. Por ello, al restar dos números de magnitudparecida, se cancelan las partes significativas, quedando laaportación de los dígitos de menos valor, que es donde máserror hay. Por ejemplo, en el programa Fortran anterior,se ha utilizado este fenómeno de cancelación para poner demanifiesto la diferencia entre trabajar con bases distintas.En los algoritmos, muchas veces se intenta evitar la posi-bilidad de restar 2 números que pudieran ser de magnitudparecida. Por ejemplo, en la conocida fórmula del cálculode raíces de un polinomio de grado 2, ax2 + bx + c = 0(con a 6= 0)

x =−b±

√b2 − 4ac2a

una forma de evitar la cancelación que se produce cuandob ≈

√b2 − 4ac consiste en calcular primero la raíz de

mayor valor absoluto, es decir

x1 =−¡b+ sign(b)

√b2 − 4ac

¢2a

y después la segunda raíz x2 utilizando la relación x1x2 =ca .

Por lo tanto, en los algoritmos, se deberá evitar, en lamedida de lo posible, la resta de variables que tengan unamagnitud cercana.

Problema 10 (1 punto) Calcular las raíces del poli-nomio P (x) = x2 − 2x + 0.01 evitando los errores decancelación.

7

Page 8: Apuntes Analisis Numerico

Problema 11 (3 puntos) Escribir el código en Fortran77 para implementar el cálculo de las raíces de ax2+ bx+c = 0 evitando los errores de cancelación y teniendo encuenta las diferentes opciones que aparecen cuando a 6= 0y a = 0.

CÁLCULO DE LOS CEROS DE UNAFUNCIÓN

En esta sección vamos a estudiar algunos métodos paracalcular los ceros de una función de una variable, f(x),esto es, los valores de x para los cuales f(x) = 0.

Método de la bisección

Se considera un intervalo [a, b] donde la función f(x) cam-bia de signo, es decir f(a)·f(b) < 0. El método consiste enir dividiendo el intervalo [a, b] por la mitad de la siguienteforma:

Se toma el punto medio a+b2 . Si f(a+b2 ) = 0 ya

hemos encontrado la raíz x = a+b2 . En caso contrario,

si f(a+b2 ) · f(b) < 0 entonces hacemos a =a+b2 y volvemos

a subdividir el nuevo intervalo [a, b]. Si, por el contrario,f(a) · f(a+b2 ) < 0, entonces hacemos b = a+b

2 y volvemosa empezar. Las sucesivas subdivisiones del intervalo [a, b]van aproximando la raíz.

Problema 12 (2 puntos) Calcular 2 iteraciones del al-goritmo de la bisección para buscar un cero de la funciónf(x) = x2 − 2 en el intervalo [−2, 0].

Problema 13 (3 puntos) Escribir el código en Fortran77 para implementar el método de la bisección

Método de la Regula-falsi (regla de lo falso)

Este método es una variación del anterior en el sentidosiguiente: En lugar de tomar el punto medio a+b

2 del in-tervalo, se considera el punto de intersección de la rectaque pasa por los puntos (a, f(a)) y (b, f(b)) con el eje x.Es decir, en el razonamiento anterior, se sustituye el valorxm =

a+b2 por el valor

xm = a− b− a

f(b)− f(a)f(a)

Problema 14 (2 puntos) Calcular 2 iteraciones del al-goritmo de la regula-falsi para buscar un cero de la funciónf(x) = x2 − 2 en el intervalo [0, 2].

Problema 15 (3 puntos) Escribir el código en Fortran77 para implementar el método de la Regula-falsi.

Método de Newton-Raphson

Éste es, sin duda, uno de los métodos más importantes yútiles para el cálculo de raíces. Dada una aproximacióninicial de la raíz x0, se busca, a partir de x0, una aprox-imación mejor x1 de la raíz, de la siguiente forma: Sesustituye la función f(x) por el valor de su desarrollo deTaylor 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 contin-uación se calcula x1 como el cero de este polinomio, esdecir:

x1 = x0 −f(x0)

f 0(x0)

y por tanto, de forma general, obtenemos, a partir de x0una secuencia xn de valores que van aproximando la raíz,definidos por

xn+1 = xn −f(xn)

f 0(xn)

A continuación veremos una aplicación de este métodopara calcular la raíz cuadrada de un número positivo A,teniendo en cuenta que si x =

√A, entonces f(x) = x2 −

A = 0.

Programa 6 Programa en Fortran 77 para calcular unaaproximación de la raíz cuadrada de un número positivo Acon una tolerancia TOL, y un número máximo de itera-ciones N max .

READ *,A,TOL,NmaxIF(A.LE.0) THEN

PRINT *,’El numero A no es positivo’STOP

ENDIFX0=(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’,X0STOP

ELSEX0=X1

ENDIF1 CONTINUE

PRINT *,’No máximo de iterac. excedido’END

El método de la Secante

Este método es una variante del método de Newton parael caso en que no sea posible calcular la derivada de f(x)

8

Page 9: Apuntes Analisis Numerico

de una forma analítica. En este caso, se sustituye el valorf 0(xn) en el algoritmo, por el valor

f(xn)− f(xn−1)

xn − xn−1

que corresponde a una aproximación de f 0(xn). Para ini-ciar el algoritmo, son necesarias dos aproximaciones ini-ciales, x0 y x1.

Problema 16 (1 punto) Calcular una iteración delmétodo de Newton-Raphson para calcular un cero de lafunción f(x) = x3 − 3 partiendo de x0 = 1.

Problema 17 (1 punto) Calcular una iteración delmétodo de la secante para calcular un cero de la funciónf(x) = x3 − 3 partiendo de x0 = 0, x1 = 1.

Problema 18 (3 puntos) Escribir un programa en For-tran 77 que implemente el método de la Secante utilizandoreales de doble precisión. Los datos de entrada son lasaproximaciones iniciales, x0 y x1, el número máximo deiteraciones, N max, y la tolerancia, TOL, para determinarla igualdad de dos números.

Método de Müller

Este método es de utilidad para calcular raíces comple-jas de funciones, como por ejemplo polinomios. Es unageneralización del método de Newton-Raphson, en el sen-tido de que, en lugar de quedarnos con la parte lineal deldesarrollo de Taylor de la función, nos quedamos con lostérminos hasta el orden 2, de tal forma que hacemos

f(x) ≈ f(xn−1)+f0(xn−1)(x−xn−1)+

f 00(xn−1)

2(x−xn−1)2

donde xn−1 es una aproximación de una raíz compleja dela función f(x). Para obtener una aproximación xn mejorde la raíz calculamos los ceros del polinomio de segundogrado anterior, es decir

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

q(f 0(xn−1))

2 − 2f(xn−1)f 00(xn−1)f 00(xn−1)

De las dos posibles raíces, nos quedamos con aquéllaque sea más cercana a xn−1. Dicha raíz será la aproxi-mación xn de la raíz de f(x) en la etapa n. En el casoen que f 00(xn−1) = 0, calculamos xn por el método deNewton-Raphson. En el caso en que no conozcamosanalíticamente el valor de la primera y segunda derivadade f(x), podemos utilizar las siguientes aproximaciones:

f 00(xn−1) ≈ 2f(xn−2)−f(xn−3)

xn−2−xn−3− f(xn−1)−f(xn−2)

xn−1−xn−2xn−3−xn−1

f 0(xn−1) ≈ f(xn−1)−f(xn−2)xn−1−xn−2 + f 00(xn−1)

2 (xn−1 − xn−2)

Como veremos posteriormente, la elección de las fór-mulas anteriores equivale a aproximar f(x) por la parábolaque pasa por los puntos (xn−3, f(xn−3)) , (xn−2, f(xn−2))y (xn−1, f(xn−1)), y calcular posteriormente las derivadasde dicha parábola.

Programa 7 Programa en Fortran 77 donde se muestraun ejemplo de manejo de números complejos.

IMPLICIT COMPLEX (C)CX=(-1,0)CY=CF(CX)PRINT *,CYEND

FUNCTION CF(CX)IMPLICIT COMPLEX(C)CF=SQRT(CX)END

Práctica 2 (Método de Müller, 4 horas)

Implementar el método de Müller. Crear un programaen Fortran 77 que tenga como datos de entrada: las tresprimeras aproximaciones de la raíz, x0, x1 y x2, el númeromáximo de iteraciones N max, y la tolerancia TOL, paradeterminar la igualdad entre dos números. La función ala que se le calculan los ceros se define en el propio cuerpodel programa. Utilizar el método para calcular los posiblesceros 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

Nota: Utilizar como tolerancia TOL = 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 tomarcomo datos iniciales x0 = (3, 0), x1 = (2, 0), x2 = (1, 0) yx0 = (1, 0), x1 = (0.1, 0), x2 = (0.01, 0). Para el ejemplo 3tomar 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 tomarcomo datos iniciales x0 = (3, 0), x1 = (2, 0), x2 = (1, 0).

9

Page 10: Apuntes Analisis Numerico

Cálculo de las raíces de un polinomio

Los polinomios son un tipo particular de funciones que, porsu gran utilidad, requieren un análisis algo más detallado.Nos ocuparemos sólo de las raíces reales de los polinomios,aunque también hay que indicar que existen algoritmosversátiles para el cálculo de las raíces complejas, como,por ejemplo, el método de Müller, visto anteriormente.

A menudo, los alumnos pueden tener la impresión deque los algoritmos y técnicas que se aprenden en una asig-natura como análisis numérico les serán de poca utilidad enel futuro. Mi experiencia como docente en esta disciplinaes que, con frecuencia, una vez terminada la carrera y enel desarrollo de la actividad profesional, aparecen proble-mas que, para su resolución, requieren el uso de alguna delas técnicas presentadas en esta asignatura. El siguienteejemplo es una buena prueba de ello.

Ejemplo 2 Actualmente están muy de moda los planes depensiones. Las entidades financieras venden a sus clienteslos planes de pensiones de la siguiente forma, por ejem-plo: si usted aporta durante 30 años 100.000 pesetas to-dos los años, aportación que se va incrementando cadaaño en un 10%, es decir el primer año 100.000, el se-gundo año 110.000, etc., entonces, le aseguramos que alfinal del trigésimo año tendrá a su disposición la cantidadde 26.000.000 de pesetas. Ahora bien, el dato más im-portante para el futuro pensionista (que a menudo ocultala entidad financiera) es el interés nominal anual que seestá aplicando año tras año al dinero depositado. Si lla-mamos i al interés nominal anual que se aplica al dinero,la ecuación que debemos resolver para obtener i es

29Xn=0

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

Ahora bien, para calcular i, debemos calcular lasraíces del polinomio en i dado por

P (i) =29Xn=0

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

El cálculo de las raíces de este polinomio nos llevaa i = 4.487%. Este ejemplo muestra como un problemafinanciero sencillo nos lleva a la necesidad de calcular losceros de un polinomio.

Algoritmo de Horner para evaluar un polinomio en unpunto

Dado un polinomio P (x) = anxn + an−1x

n−1 +...... + a0, éste se puede expresar tam-bién de la forma siguiente: P (x) = a0 +x (a1 + x (a2 + x (a3 + x(.....+ x (an−1 + xan))))) .Además, si queremos utilizar un método de cálculode raíces como el de Newton-Raphson, necesitamosevaluar tanto el polinomio como su derivada. El siguiente

resultado muestra una forma rápida y sencilla de evaluarsimultáneamente un polinomio y su derivada.

Teorema 4 (Método de Horner). Sea P (x) = anxn +

an−1xn−1 + ......+ a0, si definimos bk como

bn = an

bk = ak + bk+1x0

entonces se verifica que

P (x0) = b0

P 0(x0) = bnxn−10 + bn−1x

n−20 + ........+ b1

Demostración Sea el polinomio Q(x) = bnxn−1 +

bn−1xn−2 + .....+ b1. Veamos que se verifica que

P (x) = (x− x0)Q(x) + b0

Efectivamente, dado que ak = bk − bk+1x0 y an = bn,obtenemos la igualdad anterior teniendo en cuenta que

(x− x0)Q(x) + b0 =

bnxn + (bn−1 − bnx0)x

n + .....+ (b0 − b1x0)

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 suderivada en un punto de forma muy sencilla, como muestrael siguiente programa Fortran.

Programa 8 El siguiente programa en Fortran 77 calculala evaluación de un polinomio y su derivada en un puntoX, almacenándolos en las variables PX y PPX.

PARAMETER(NMAX=1000)DIMENSION A(0:NMAX)COMMON/POL/PX,PPXPRINT *,’Escribir Grado del Polinomio’READ *,NIF(N.GT.NMAX) THEN

PRINT *, ’Grado Superior al Maximo’STOPENDIFPRINT *,’EscriBir Coef. Polin.’DO 1 K=0,N

1 READ *,A(K)PRINT *,’Escribir valor de X’READ *,XCALL HORNER(N,A,X)PRINT *,’P(X)= ’,PXPRINT *,’P ‘(X)= ’,PPXEND

1 0

Page 11: Apuntes Analisis Numerico

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

PX=PX*X+A(K)PPX=PPX*X+PX

1 CONTINUEPX=PX*X+A(0)END

Nota: La declaraciónPARAMETER(NMAX = 1000)

permite definir constantes. La declaraciónDIMENSION A(0 : NMAX)

define un vector A, de reales en precisión simple, detamaño NMAX+1, y numerados desde 0 hasta NMAX.La declaración

COMMON/POL/PX,PPXdefine la zona de memoria denomina POL donde se en-cuentran las variables globales PX,PPX. Para que unasubrutina pueda hacer uso de esas variables, debe incluiren su inicio la misma sentencia COMMON.

Otros resultados interesantes de utilidad para lo-calizar en qué zonas pueden estar las raíces del polinomioson:

Teorema 5 Sea un polinomio P (x) = anxn+an−1x

n−1+...... + a0 con an 6= 0, entonces las raíces reales de P (x)están en el intervalo∙−1− maxk=0,..,n−1 | ak || an |

, 1 +maxk=0,..,n−1 | ak |

| an |

¸Demostración Veamos que si |x| > 1 +

maxk=0,..,n−1|ak||an| ,

entonces |P (x)| > 0. Efectivamente,

|P (x)| ≥ |anxn|− maxk=0,,,n−1

|ak|n−1Xk=0

|x|k =

= |an| |x|n − maxk=0,,,n−1

|ak|1− |x|n

1− |x| ≥

≥ |an| |x|n − maxk=0,,,n−1

|ak||x|n

|x|− 1 =

=|x|n (|an| (|x|− 1)−maxk=0,,,n−1 |ak|)

|x|− 1 > 0

Teorema 6 Sea un polinomio P (x) = anxn+an−1x

n−1+......+a0, entonces el número de raíces positivas es igual alnúmero de cambios de signo en los coeficientes an, ......, a0(saltando los posibles coeficientes nulos), o bien ese mismonúmero menos un número par.

Demostración [Is-Ke] Pg. 126.

Para la estimación del número de raíces reales nega-tivas, se aplica el teorema anterior cambiando x por −x.

Ejemplo 3 Sea P (x) = 3x4 + 10x3 − 10x − 3, los sig-nos de los coeficientes son: + + −−. Por tanto, hay unúnico cambio de signo y hay una raíz positiva. Si cambi-amos x por −x, los signos de los coeficientes son +−+−.Por tanto, hay 3 cambios de signo y hay una o tres raícesnegativas. En este caso, las raíces son x = 1,−1,−3,−13 .

Problema 19 (1 punto) Calcular una iteración delmétodo de Müller para calcular un cero de la funciónf(x) = x3 − 3 partiendo de x0 = 1 (Calculando lasderivadas de la función de forma exacta) y quedándonoscon la raíz más cercana a x0.

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

Problema 21 (1 punto) Calcular el número máximo deraíces positivas y negativas del polinomio x5−35x3+30x2+124x− 120, y localizarlas en un intervalo.

Teorema 7 Entre dos raíces de una función derivablef(x) hay una raíz de f 0(x).

Demostración Teorema de Rolle.

Teorema 8 La derivada k − esima P k)(x) del polinomioP (x) = anx

n + an−1xn−1 + ......a0 es

P k)(x) =ann!(n− k)!

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

n−k−1+ ...+akk!

1

Demostración Es inmediato, derivando sucesivamente elpolinomio P (x).

Los dos resultados anteriores permiten aislar las posi-bles raíces de P (x) de la forma siguiente: Si llamamosPmax a 1+

maxk=0,..,n−1|ak||an| , entonces las m raíces distintas

x1 < x2 < .... < xm de P (x) están intercaladas con lasraíces x01 < x02 < .... < x0m−1 de P

0(x), es decir

−Pmax ≤ x1 ≤ x01 ≤ x2 ≤ x02 ≤ ... ≤ x0m−1 ≤ xm ≤ Pmax

Volviendo a aplicar este razonamiento sucesivamentesobre P 0(x), P 00(x), etc., para intercalar los ceros de unaderivada con los ceros de la siguiente, podemos deducirel siguiente algoritmo para aislar todas las raíces de unPolinomio P (x):

1 1

Page 12: Apuntes Analisis Numerico

1. Se parte del intervalo [−Pmax, Pmax]

2. Se calcula la raíz xn−1)1 del Polinomio Pn−1)(x) (quees un polinomio de grado 1)

3. Para k = n− 2, ..., 1Se calculan las raíces de P k(x) en los intervalos

−Pmax < xk+1)1 < x

k+1)2 < ... < xk+1)mk+1

< Pmax

Al final del procedimiento, habremos aislado comple-tamente a las raíces de P (x). Este procedimiento se puedeutilizar para grados relativamente pequeños (n < 30),puesto que su utilización requiere el cálculo de factori-ales, que se dispara rápidamente. Por ejemplo, 30! = 2.6×1032. Existen métodos mejores para el cálculo de raícesde polinomios, pero que utilizan técnicas más complejas.El método presente en el siguiente programa, que combinael aislamiento de las raíces del polinomio a través de losceros de sus derivadas con el método de Newton-Raphson,funciona razonablemente bien para grados de polinomiospequeños. En el caso de raíces múltiples los resultadosacumulan mayores errores de redondeo debido a que tantoel 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 estepolinomio, tenemos que Pmax = 8. Por tanto, las raícesestán en el intervalo [−8, 8]. Por otro lado su gráfica es

2.51.250-1.25-2.5

60

40

20

0

x

y

x

y

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

La derivada de este polinomio es P 0(x) = 4x3−3x2−14x+1,cuyas raíces son x = −1. 574, 7. 05× 10−2, 2. 253 ycuya gráfica es

2.51.250-1.25-2.5

50

25

0

-25

-50

-75

-100

x

y

x

y

Polinomio P 0(x) = 4x3 − 3x2 − 14x+ 1

La derivada segunda de este polinomio esP 00(x) = 12x2 − 6x − 14,cuyas raíces son x = −0.858, 1.358 y cuya gráfica es

2.51.250-1.25-2.5

125

100

75

50

25

0

x

y

x

y

Polinomio P 00(x) = 12x2 − 6x− 14

La derivada tercera de este polinomio esP 000(x) = 24x − 6, cuya raíz es x = 0.25, y cuyagráfica es

2.51.250-1.25-2.5

50

25

0

-25

-50

-75

x

y

x

y

Polinomio P 000(x) = 24x− 6

El método funcionaría de la siguiente forma: Primerocalculamos el cero de P 000(x), es decir x = 0.25, por tantolos ceros de P 00(x) estarían 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 raíces deP 00(x) en esos intervalos, utilizando cualquier métodonumérico de los vistos anterioremente, por ejemplo, elmétodo de la Regula-falsi, obteniendo −0.858 para el inter-

12

Page 13: Apuntes Analisis Numerico

valo [−2.166, 0.25] y 1. 358 para el intervalo [0.25, 2.166].Por tanto, las posibles raíces de P 0(x) estarán en los in-tervalos [−4.5,−0.858], [−0.858, 1.358] y [1.358, 4.5]. Bus-camos ahora las raíces de P 0(x) es esos intervalos, obte-niendo x = −1. 574, 7. 05 × 10−2 y 2. 253. Por tanto, losposibles ceros de P (x) estarán en los intervalos [−8,−1.574], [−1.574, 7. 05×10−2], [7. 05×10−2, 2. 253] y [2.253, 8].Buscamos, finalmente, las raíces de P (x) en cada un deesos intervalos y obtenemos x = −2,−1, 1, 3.

Problema 22 (2 puntos) Aislar en intervalos las raícesdel polinomio P (x) = 20x3 − 45x2 + 30x− 1.

Programa 9 Programa en Fortran 77 donde se imple-menta la función ICEROPOL(A,R, TOL,N,Nmaxx),que devuelve las raíces reales de un polinomio. Dicha sub-rutina tiene como parámetros un vector A(), donde es-tán los coeficientes del polinomio, un vector R(), dondese guardan las raíces del polinomio una vez calculadas,la tolerancia TOL, con la que consideramos que dosnúmeros son iguales, el grado del polinomio N, y elnúmero máximo de iteraciones N maxxx, para el procesode Newton-Raphson. También se define la función aux-iliar RP (N,A,X1,X2, TOL,Nmaxx,R,L), que devuelvela raíz del polinomio que se obtiene aplicando el métodode Newton-Raphson, tomando como valor inicial el puntomedio del intervalo [X1,X2].

PARAMETER(NMAX=30)DIMENSION A(0:NMAX),R(0:NMAX-1)COMMON/POL/PX,PPXPRINT *,’Escribir Grado del Polinomio’READ *,NIF(N.GT.NMAX) THENPRINT *, ’Grado Superior al Maximo’STOP

ENDIFPRINT *,’Escribir Coef. Polin.’DO 1 K=0,N

1 READ *,A(K)PRINT *, ’Escribir Tolerancia’READ *,TOLPRINT *, ’Escribir No. iter. Max. para Newton-

Raphson’READ *,NmaxxM=ICEROPOL(A,R,TOL,N,Nmaxx)PRINT *,’El Pol. tiene’,M,’ raices’DO 9 K=0,M-1

9 PRINT *,R(K)END

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

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)) THENPMAX=ABS(A(K)

ENDIF3 CONTINUE

PMAX=PMAX/ABS(A(N))+1.PI(0)=-PMAXPI(1)=-(A(N-1)*F(N-1))/(A(N)*F(N))DO 10 K=2,N

10 PI(2)=PMAX*** Calculo de los coeficientes del*** polinomio derivada

DO 7 K=2,N7 PI(K)=PMAX

DO 4 K=N-2,0,-1DO 5 L=0,N-KAP(L)=A(L+K)*(F(K+L)/F(L))

5 CONTINUE***CALCULAR LOS CEROS DE AP EN LOS INTER-VALOS PI()

DO 6 L=1,N-KPI(L)=RP(N-K,AP,PI(L-

1),PI(L),TOL,Nmaxx,R,L-1)6 CONTINUE4 CONTINUE*** Pasamos las raices al vector R()

M=0DO 8 K=1,NIF(R(K-1).EQ.0) THENR(M)=PI(K) M=M+1

ENDIF8 CONTINUE

ICEROPOL=MEND

FUNCTION RP(N,A,X1,X2,TOL,Nmaxx,R,L)DIMENSION A(0:*),R(0:*)COMMON/POL/PX,PPXR(L)=1.IF (X1.EQ.X2) THENRP=X1RETURN

ENDIFRP=(X1+X2)/2.DO 1 K=1,NmaxxCALL HORNER(N,A,RP)IF (PPX.EQ.0.) THENIF(PX.EQ.0.) THEN

1 3

Page 14: Apuntes Analisis Numerico

R(L)=0.RETURN

ELSERETURN ENDIF

ELSERP1=RP-PX/PPXIF(IGUAL(RP1,RP,TOL).EQ.0) THENRP=RP1R(L)=0.RETURN

ELSERP=RP1

ENDIFENDIF

1 CONTINUEEND

Problema 23 (2 puntos) Aislar en intervalos las raícesdel polinomio P (x) = 2x3 + 3x2 − 12x+ 1.

INTERPOLACIÓN DE FUNCIONES I

El problema general de la interpolación de funciones con-siste en, a partir del conocimiento del valor de una función(y eventualmente de sus derivadas) en un conjunto finitode puntos, aproximar el valor de la función fuera de eseconjunto finito de puntos.

Interpolación por polinomios de Lagrange

Sea una función f(x) que conocemos en un conjunto finitode valores xii=0,..,N . Es decir, sabemos que f(xi) =fi. El polinomio interpolador de Lagrange PN (x) de f(x)en los puntos xii=0,..,N , es el único polinomio de gradomenor o igual que N tal que

PN (xi) = f(xi) ∀i = 0, .., N

PN(x) se puede expresar en término de los denomina-dos polinomios base de Lagrange P i(x), definidos como:

P i(x) =ΠNj 6=i(x− xj)

ΠNj 6=i(xi − xj)

estos polinomios base tienen la propiedad fundamentalsiguiente

P i(xj) =

½1 si i = j0 si i 6= j

Por tanto, el polinomio interpolador de Lagrangepuede expresarse como

PN (x) =NXi=0

f(xi)Pi(x)

Ejemplo 5 Consideremos una función f(x) = ex , vamosa interpolarla en los puntos x0 = 0, x1 = −1 y x2 = 1.Para calcular P2(x), el polinomio interpolador de Lagrangeen estos puntos, calcularíamos los polinomios base:

P 0(x) =(x+ 1)(x− 1)

−1

P 1(x) =x(x− 1)

2

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

2

siendo el polinomio interpolador:

P2(x) = e0(x+ 1)(x− 1)

−1 + e−1x(x− 1)

2+ e

x(x+ 1)

2

En la siguiente figura comparamos la gráfica del poli-nomio P2(x) (trazo continuo) con la gráfica de la funciónex (trazo discontinuo)

1.510.50-0.5-1-1.5

4

3

2

1

x

y

x

y

Problema 24 (2 puntos) Calcular el polinomio inter-polador de Lagrange P3(x) de la función f(x) = sen(x) enlos puntos 0, π2 , π y

3π2 .

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

Demostración Sea P (x) un polinomio de grado inferior oigual a N que verifique que P (xi) = f(xi) ∀i = 0, .., N.Entonces, el polinomio Q(x) = P (x) − PN (x) es un poli-nomio de grado inferior o igual a N que verifica queQ(xi) = 0 y, por tanto, posee N + 1 raíces, lo cual esimposible, salvo que Q(x) sea identicamente igual a cero.Por tanto Q(x) ≡ 0 y P (x) = PN (x).

1 4

Page 15: Apuntes Analisis Numerico

Error de interpolación de Lagrange y polinomiosde Chebychev

Evidentemente, al aproximar f(x) por el polinomio inter-polador PN (x) en un intervalo [a, b] se comete, en general,un error de interpolación, que viene determinado por elsiguiente teorema.

Teorema 10 Sea f(x) una función, y PN (x) su polinomiointerpolador de Lagrange en los puntos xii=0,..,N ⊂ [a, b]y x ∈ [a, b], entonces

f(x)− PN (x) =fN+1)(ξ)

(N + 1)!ΠNi=0(x− xi)

donde ξ es un valor intermedio perteneciente a [a, b].

Demostración Si x = xi, el error de interpolación es ceroy por tanto la fórmula anterior es válida. Consideremosahora x distinto a los xi y definamos

w(t) = ΠNi=0(t− xi)

λ =f(x)− PN (x)

w(x)

φ(t) = f(t)− PN (t)− λw(t)

La función φ(t) tiene al menos n+1 ceros en los pun-tos xi y en el punto x. Por tanto, su función derivada φ

0(t)tiene al menos n ceros repartidos entre los ceros de φ(t).Análogamente, φ00(t) tiene al menos n−1 ceros y así suce-sivamente hasta llegar a φN+1(t), que tiene al menos 1cero. Si llamamos ξ a dicho cero, obtenemos

φN+1(ξ) = fN+1)(ξ)− λ(N + 1)!

de donde, despejando y sustituyendo λ por su valor, obten-emos el resultado del Teorema.

Problema 25 (2 puntos) Calcular la expresión del er-ror de interpolación al aproximar la función f(x) = sen(x)en el intervalo [0, 2π] interpolando en los puntos 0, π2 , π y3π2 , y acotarlo superiormente.

La cuestión que vamos a abordar en este apartado es,en el caso en que queramos interpolar una función en unintervalo [a, b], y que nosotros podamos elegir los valores deinterpolación xi, cómo elegirlos de tal forma que el error deinterpolación sea mínimo. Para ello, elegiremos los puntosxi tales que ΠNi=0(x − xi) sea lo más pequeño posible en[a, b].

Teorema 11 Sea N ≥ 0, y un intervalo [a, b] Se consid-eran los puntos xi dados por

xi = a+b− a

2

µ1 + cos

µ2i+ 1

2N + 2π

¶¶i = 0, ..., N

entonces

maxx∈[a,b]

| ΠNi=0(x− xi) |=µb− a

2

¶N+11

2N≤

≤ maxx∈[a,b]

| ΠNj=0(x− exj) |para cualquier otra elección posible de valores de interpo-lación exj .Demostración La demostración para el intervalo [−1, 1]se encuentra en [Ki-Ch] Pg. 292-294. La demostraciónpara un intervalo cualquiera [a, b] se obtiene fácilmentetransformando el intervalo [−1, 1] en [a, b].

Por tanto, utilizando este resultado, el error de inter-polación máximo viene determinado por:

| f(x)− PN (x) |≤maxx∈[a,b] f

N+1)(ξ)

(N + 1)!2N

µb− a

2

¶N+1Ejemplo 6 Se considera [a, b] = [0, 1] y N = 5 (es decir6 puntos de interpolación). Los puntos de interpolacióndados por el teorema anterior son:

x0 = . 982 96

x1 = . 853 55

x2 = . 629 41

x3 = . 370 59

x4 = . 146 45

x5 = 1. 703 7× 10−2

Problema 26 (2 puntos) Calcular el error máximo deinterpolación en el intervalo [0, 1] al interpolar la funcióncos(x) en los puntos descritos en el ejemplo anterior.

En el caso de que [a, b] = [−1, 1], los valores ópti-mos de interpolación xi dados por la fórmula anterior sonlas raíces 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)

Método de diferencias de Newton para el cálculodel polinomio interpolador de Lagrange

Numéricamente, el cálculo de PN (x) a través de los poli-nomios base necesita de la evaluación de N +1 polinomiosde grado N. Además, si queremos añadir un nuevo puntode interpolación, debemos cambiar todos los polinomiosbase de Lagrange. Un método más directo para el cál-culo de PN (x) es el denominado método de diferencias de

15

Page 16: Apuntes Analisis Numerico

Newton. El método consiste en ir calculando progresiva-mente los polinomios Pk(x) que interpolan la función enlos 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 coeficientes ak los denotamos por

ak = f [x0, ..., xk]

Ejemplo 7 Vamos a interpolar la función f(x) = ex enlos puntos x0 = 0, x1 = 1 y x2 = 2.

P0(x) = 1

P1(x) = 1 + a1x

Como P1(1) debe ser igual a e, despejando obtenemos

a1 = e− 1

Por último

P2(x) = P1(x) + a2x(x− 1)

Como P2(2) debe ser igual a e2, despejando obten-emos

a2 =e2 − P1(2)

2Por tanto, el polinomio P2(x) lo expresamos como

P2(x) = 1 + (e− 1)x+e2 − 2e+ 1

2x(x− 1)

Como veremos en el teorema siguiente, los coeficientesf [x0, ..., xk], que se denominan diferencias divididas deNewton, verifican las siguientes propiedades:

f [xi] = f(xi)

f [xi, xi+1] =f [xi+1]− f [xi]

xi+1 − xi.

f [xi, .., xi+k] =f [xi+1, .., xi+k]− f [xi, .., xi+k−1]

xi+k − xi

Teorema 12 Si denotamos por ak = f [x0, .., xk], en-tonces el polinomio de interpolación de Lagrange PN (x)viene dado por

PN (x) =NXk=0

akΠk−1i=0 (x− xi)

donde los coeficientes f [xi, ..., xk] verifican

f [xi, .., xi+k] =f [xi+1, .., xi+k]− f [xi, .., xi+k−1]

xi+k − xi

Demostración En primer lugar, observamos quef [xi, ..., xi+k] indica, para cada Pk(x), el coeficiente queacompaña a la potencia xk en el polinomio interpoladorPk(x) para los puntos xi, ..., xi+k. Como el polinomio in-terpolador es único, f [xi, ..., xi+k] no depende del orden enque 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, cambiandoel orden de los puntos. Qk(x) se puede escribir como

Qk(x) = b0+ b1(x− xi+k)+ b2(x− xk+i)(x− xk+i−1) + ...

dondebj = f [xi+k, .., xi+k−j ]

Por la unicidad del polinomio interpolador obtenemosque 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 coeficientes que acompañan a la potencia xk−1 en am-bos polinomios coinciden y, por tanto:

ak−1 − ak

k−1Xj=0

xi+j = bk−1 − bk

kXj=1

xi+j

Despejando obtenemos

ak =bk−1 − ak−1xk+i − xi

Finalmente obtenemos el resultado del teorema, te-niendo en cuenta que

ak−1 = f [xi, ...., xi+k−1]

bk−1 = f [xi+k...., xi+1] = f [xi+1...., xi+k]

Ejemplo 8 Sea f(x) = ex, si interpolamos f(x) en lospuntos x0 = 0, x1 = 1, x2 = 2, x3 = 3, obtenemos elpolinomio interpolador de la siguiente forma:

f [0, 1] = e1 − 1f [1, 2] = e2 − e1

f [2, 3] = e3 − e2

f [0, 1, 2] =e2 − 2e+ 1

2

f [1, 2, 3] =e3 − 2e2 + e1

2

f [0, 1, 2, 3] =e3 − 3e2 + 3e1 − 1

6

Por tanto el polinomio interpolador de Lagrange es:

P3(x) = 1 + (e− 1)x+ e2 − 2e+ 12

x(x− 1) +

e3 − 3e2 + 3e1 − 16

x(x− 1)(x− 2)

1 6

Page 17: Apuntes Analisis Numerico

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

32.521.510.50

0.1

0.05

0

-0.05

-0.1

-0.15

-0.2

-0.25

x

y

x

y

Problema 27 (2 puntos) Interpolar la función f(x) =10

x2+1 en los puntos x0 = −2, x1 = −1, x2 = 1, x3 = 2utilizando las diferencias de Newton y evaluar el polinomioen x = 0 utilizando el algoritmo de Horner.

Problema 28 (2 puntos) Calcular el polinomio inter-polador de Lagrange P3(x) de la función f(x) = sen(x) enlos puntos 0, π2 , π y

3π2 utilizando las diferencias divididas

de Newton.

Problema 29 (3 puntos) Calcular el polinomio inter-polador de Lagrange P3(x) de la función f(x) = 2x enlos puntos 0, 1, 3 y 4 utilizando las diferencias divididas deNewton. Expresar el polinomio tomando en primer lugarx0 = 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 función f(x) y unasecuencia de valores xn, aproximar f(x) por la parábolaque pasa por los puntos (xn−1, f(xn−1)) , (xn−2, f(xn−2))y (xn−3, f(xn−3)). Calcular posteriormente las derivadasdel polinomio y comprobar que coinciden con las fórmu-las dadas en el método de Müller para el cálculo de lasderivadas f 00(xn−1) y f 0(xn−1).

Programa 10 Programa en Fortran 77 donde se definenlas funciones IDIFNEWTON, que a partir del vector X(0 :N) de puntos de interpolación y el vector F (0 : N)de valores de la función f(x) en los puntos de interpo-lación, devuelve el vector A(0 : N) de coeficientes dediferencias divididas que definen el polinomio de Lagrange(A(K) = f [x0, x1, .., xK ] ), y la función EVDIFNEW-TON(A,X,X0,N) que a partir de los coeficientes dados porel vector A(0 : N) y el conjunto de puntos de interpo-lación, devuelve el valor de la evaluación del polinomio deLagrange en el punto X0.

PARAMETER(Nmax=1000)DIMENSION A(0:1000),F(0:1000),X(0:1000)PRINT *,’Introducir No. Ptos Interp.’READ *,NN=N-1PRINT *,’Introducir Ptos Interpol.’DO 1 K=0,N

1 READ *, X(K)PRINT *,’Introducir Valores de F()’DO 2 K=0,N

2 READ *,F(K)IF(IDIFNEWTON(A,X,F,N).EQ.1) THENPRINT *,’Puntos de Interpolacion repetidos’STOP

ENDIFPRINT *,’Coef. Polinomio’DO 3 K=0,N

3 PRINT *,A(K)PRINT *,’Test de Comprobacion’DO 4 K=0,N

4 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

1 B(K)=F(K)A(0)=F(0)DO 2 K=1,NDO 3 L=0,N-KIF (X(K+L).EQ.X(L)) THENIDIFNEWTON=1RETURN

ENDIFB(L)=(B(L+1)-B(L))/(X(K+L)-X(L))

3 CONTINUEA(K)=B(0)

2 CONTINUEIDIFNEWTON=0END

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

1 EVDIFNEWTON=EVDIFNEWTON*(X0-X(K))+A(K)

END

1 7

Page 18: Apuntes Analisis Numerico

Implementación de funciones elementales

Una vez definida una aritmética en precisión finita y las 4operaciones básicas (suma, resta, multiplicación, división),es necesario definir, a partir de estas operaciones, las fun-ciones elementales que todos usamos, como son: la raízcuadrada

√x, las funciones trigonométricas: sen(x) cos(x)

y tan(x), la función ln(x), la función ex, la función xy, etc.Las técnicas elementales para definir estas funciones con-sisten en utilizar la interpolación polinómica, los desarrol-los de Taylor y los algoritmos de búsqueda de ceros (comovimos anteriormente para

√x).

Aproximación de la exponencial ex

Un número real x siempre se puede expresar como x =m + x0, donde m es un número entero y x0 ∈ [0, 1]. Dadoque

ex = emex0

podemos descomponer el cálculo de ex en el cálculo, porun lado, de em, donde al ser m un entero el cálculo es in-mediato a partir de multiplicaciones sucesivas de potenciasnaturales de e ó e−1 (si m<0), y por otro, en el cálculode ex

0para x0 ∈ [0, 1]. Utilizando como puntos de interpo-

lación los asociados a los polinomios de Chebychev:

xi =1

2

µ1 + cos

µ2i+ 1

2N + 2π

¶¶i = 0, ..., N

obtenemos que el error relativo verifica que:

| ex0 − PN (x) |ex0

≤ e

(N + 1)!2N

µ1

2

¶N+1Para N = 6, el error relativo es menor que 6.6× 10−8

y, por tanto, del mismo orden que la unidad de redondeou en una aritmética de 32 bits. Asi, tomando un poli-nomio de grado N = 6, es decir 7 puntos de interpolación,obtenemos ya la mejor aproximación posible de ex en elintervalo [0, 1] en una aritmética de 32 bits.

Práctica 3 (Aproximación de ex, 2 horas)

Crear una función en Fortran 77 que devuelva el valor deex con x ∈ [0, 1] utilizando el polinomio de Lagrange P6(x)que interpola a ex en los puntos:

xi =1

2

µ1 + cos

µ2i+ 1

14π

¶¶i = 0, ..., 6

Comprobar que el polinomio esta bien construido, esdecir que P6(xi) = exi para todos los xi. Introducir porteclado un valor x, evaluar y mostrar P6(x) y ex. Utilizarx = 0, 1, 0.5, 2 y 3.

Nota: Utilizar las funciones de an.h IDIFNEWTON(.),que calcula el polinomio interpolador a partir de los pun-tos y valores de interpolación, y EVDIFNEWTON(.), queevalua el polinomio interpolador en un punto.

Aproximación de funciones trigonométricas

Utilizaremos como modelo las funciones f(x) = cos(x) yf(x) = sen(x). Puesto que estas funciones son 2π per-iódicas, utilizando algunas relaciones trigonométricas essuficiente definir las funciones cos(x) y sen(x) en el in-tervalo [0, π4 ] y a partir de ellas definir las funciones paracualquier valor x (en radianes). Efectivamente, denotemospor cos[0,π4 ](x) y sen[0,π4 ](x) a las funciones trigonométri-cas definidas sobre el intervalo [0, π4 ]. Podemos definir en-tonces las siguientes funciones:

cos[0,π2 ](x) =

½cos[0,π4 ](x) si x ≤ π

4

sen[0,π4 ](π2 − x) si x > π

4

sen[0,π2 ](x) =

½sen[0,π4 ](x) si x ≤ π

4

cos[0,π4 ](π2 − x) si x > π

4

cos[0,π](x) =

½cos[0,π2 ](x) si x ≤ π

2

− cos[0,π2 ](π − x) si x > π2

sen[0,π](x) =

½sen[0,π2 ](x) si x ≤ π

2

sen[0,π2 ](π − x) si x > π2

cos[0,2π](x) =

½cos[0,π](x) si x ≤ π

cos[0,π](2π − x) si x > π

sen[0,2π](x) =

½sen[0,π](x) si x ≤ π

−sen[0,π](2π − x) si x > π

El desarrollo en Serie de Taylor centrado en 0 delcos(x) es:

cos(x) u Pn(x) = 1.−x2

2+

x4

4!+ ....+ (−1)n x2n

(2n)!

y el error máximo cometido por el desarrollo de Taylor enun punto x ∈ [0, π4 ] es

| Pn(x)− cos(x) |≤ sen(x)(x)2n+1

(2n+ 1)!

La ventaja de utilizar el desarrollo de Taylor centradoen 0 es que las potencias impares de x no aparecen, lo quesimplifica el cálculo numérico. El error relativo es

| Pn(x)− cos(x) |cos(x)

≤ tan(x) (x)2n+1

(2n+ 1)!

Además, como tan(x) es creciente en [0, π4 ], el valormáximo del error se encuentra en x = π

4 . Por ejemplo, paran = 5 obtenemos que el error relativo máximo cometidoen x = π

4 es del orden de

tan(π

4)

¡π4

¢2∗5+1(2 ∗ 5 + 1)! = 1. 8× 10

−9

Por tanto, si trabajamos con una aritmética de 32 bits,cuya unidad de redondeo u es del orden de 10−8, tenemosque con n = 5 obtenemos una aproximación del cos(x) quees la mejor posible dentro de esta aritmética y no tendríasentido aumentar el valor de n.

1 8

Page 19: Apuntes Analisis Numerico

Problema 31 (3 puntos) Aproximar la función sen(x)en el intervalo [0, π4 ] utilizando el desarrollo de Taylor ycalcular el valor de n a partir del cual la aproximación esla mejor posible dentro de una aritmética de 32 bits.

Problema 32 (2 puntos) Demostrar que, utilizandorelaciones trigonométricas, es posible calcular las fun-ciones sen(x) y cos(x) para cualquier x (en radianes), uti-lizando únicamente su valor en el intervalo [0, π8 ].

Problema 33 (3 puntos) Calcular los polinomios nece-sarios para interpolar las funciones trigonométricas cos(x)y sen(x) en el intervalo [0, π8 ] en una aritmética de 32 bits.

Aproximación de la función ln(x)

Como hemos visto anteriormente, un número x real enuna aritmética de precisión finita viene expresado habit-ualmente como

x = 2m

ÃtX

n=1

an2n

!donde m es un número entero, a1 = 1 y para n > 1 an = 0

ó an = 1. Por tanto, el número³Pt

n=1an2n

´es mayor o

igual que 12 y menor que 1. Aplicando las propiedades del

ln(x) obtenemos que

ln(x) = m ln(2) + ln

ÃtX

n=1

an2n

!Dado que el número ln(2) es una constante que supon-

dremos calculada anteriormente ( ln(2) ∼= .6931471806),podemos reducir el cálculo del ln(x) al rango de valores12 ≤ x ≤ 1.

Utilizaremos los puntos de interpolación generadospor los polinomios de Chebychev, que para el intervalo[12 , 1] son:

xi =1

2+1

4

µ1 + cos

µ2i+ 1

2N + 2π

¶¶i = 0, ..., N

Dado que ln(1) = 0, para minimizar el error relativoañadiremos como punto interpolante xN+1 = 1. El errorde interpolación relativo entre PN+1(x) y ln(x) es:

| ln(x)− PN+1(x) || ln(x) | =

| (x− 1)ΠNi=0(x− xi) |ξN+1(N + 2) | ln(x) |

donde ξ ∈ [12 , 1]. Además se tiene que en el intervalo [12 , 1]

| x− 1 || ln(x) | ≤ 1

Por tanto:

| ln(x)− PN+1(x) || ln(x) | ≤ 2N+1

(N + 2)

µ1

4

¶N+11

2N

Para N = 10 el error máximo es 3. 973 6× 10−8, quees menor que la unidad de redondeo u y, por tanto, en unaaritmética de 32 bits tendríamos la mejor aproximaciónposible de la función ln(x).

Problema 34 (1 punto) ¿Cómo se puede obtener la fun-ción yx, donde x e y son números reales, utilizando lasfunciones ex y ln(x)?

ANÁLISIS NUMÉRICO MATRICIAL I

En esta primera sección dedicada a la resolución de sis-temas de ecuaciones lineales, estudiaremos los métodos di-rectos clásicos para la resolución de un sistema de ecua-ciones de la forma

Au = b

donde A = (ai,j) es una matriz de NxN, b = (bi) es unvector de tamaño N que determina los términos indepen-dientes, y u = (ui) es el vector solución buscado.

Método de Gauss

Este método, aunque no es de los más rápidos, tiene la granventaja de que se puede aplicar a todo tipo de matrices,algo que, como veremos en el futuro, no ocurre con otrosmétodos más rápidos, pero que requieren, por ejemplo,que la matriz sea simétrica o definida positiva. El métodode Gauss se basa en transformar el sistema Au = b enun sistema equivalente A0u = b0 tal que la solución seala misma y que la matriz A0 sea triangular superior, esdecir, que tenga valores nulos de la diagonal hacia abajo.Una vez obtenidos la matriz A0 y el vector b0, el cálculode la solución u es inmediata, siguiendo un remonte de lasvariables a través del siguiente esquema recursivo:

uN =b0Na0N,N

uk =b0

k −PN

l=k+1 a0k,lul

a0k,kk = N − 1, .., 1

Problema 35 (2 puntos) Calcular el número de op-eraciones básicas (sumas, restas, multiplicaciones y divi-siones) necesarias para realizar un remonte como el pre-sentado arriba en función de la dimensión N .

Para obtener A0 y b0 se calcula, en primer lugar, elvalor máximo en valor absoluto de la primera columna deA, denominado pivote. A continuación, se intercambia laprimera fila de A con la fila donde se encuentra el pivote,y se hace lo mismo con el vector b, para que el sistemasea equivalente. A continuación, se multiplica la primerafila de A por el valor −aka1

y se suma a la fila k − esimade A para k = 2, ..., N. Se hace lo mismo para el vector

19

Page 20: Apuntes Analisis Numerico

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

Ejemplo 9 Ejemplo de descomposición según el métodode Gauss. Se considera el sistema⎛⎝ −2 −2 0

6 18 123 11 7

⎞⎠⎛⎝ u1u2u3

⎞⎠ =

⎛⎝ 0248

⎞⎠La descomposición de la matriz A lleva las siguientes

fases:⎛⎝ −2 −2 06 18 123 11 7

⎞⎠ −−−−→pivoteo

⎛⎝ 6 18 12−2 −2 03 11 7

⎞⎠⎛⎝ 6 18 12−2 −2 03 11 7

⎞⎠ −−−−−−−−−−−−−→ceros 1a columna

⎛⎝ 6 18 120 4 40 2 1

⎞⎠⎛⎝ 6 18 120 4 40 2 1

⎞⎠ −−−−−−−−−−−−−→ceros 2a columna

⎛⎝ 6 18 120 4 40 0 −1

⎞⎠de la misma forma, el vector b se ha transformado de laforma siguiente⎛⎝ 0

248

⎞⎠→⎛⎝ 24

08

⎞⎠→⎛⎝ 24

8−4

⎞⎠→⎛⎝ 24

8−8

⎞⎠y el remonte da como solución u1 = 6, u2 = −6, u3 = 8.

Problema 36 (2 puntos) Resolver por el método deGauss el sistemaµ

−1 22 −1

¶µxy

¶=

µ30

Problema 37 (3 puntos) Calcular el número de op-eraciones básicas necesarias para descomponer el sistemaAu = b en el sistema A0u = b0 utilizando el método deGauss, teniendo en cuenta la siguiente relación:

M−1Xk=1

k2 =1

3M3 − 1

2M2 +

1

6M

Problema 38 (2 puntos) Implementar en FORTRANla funcion IDESCENSO(A, b, u, N, N max) que resuelveun sistema, donde A es una matriz triangular inferior, b esel vector de términos independientes, u el vector solución,N es la dimensión real del sistema y N max la dimensiónque se utilizó para reservar la memoria de la matriz A. Lafunción devuelve 0 si termina correctamente y 1 en casocontrario. Nota Importante: Las líneas de código tienenque ir todas numeradas y no pueden superar las 15 líneas.

Problema 39 (2 puntos) Resolver por el método deGauss el siguiente sistema de ecuaciones:⎛⎝ 0 −1 2

−1 2 −12 −1 0

⎞⎠⎛⎝ u1u2u3

⎞⎠ =

⎛⎝ 101

⎞⎠

Programa 11 Programa en fortran 77 que implementael método de Gauss. Se define una función IGAUSS quetiene como parámetros la matriz A, el vector independi-ente b, un vector auxiliar Nrow, la dimensión del sistemay la dimensión máxima admitida. La función devuelve unvalor entero M que indica si se ha terminado correcta-mente (M = 0) o incorrectamente (M = 1, 2). En el casoen que se ha terminado correctamente, la solución se de-vuelve en el propio vector b.

Parameter(Nmax=1000)DIMENSION A(Nmax,Nmax),B(Nmax),Nrow(Nmax)PRINT *, ’Introducir Dimension’READ *,NPRINT *,’Introducir matriz’DO 2 K=1,NDO 2 L=1,N

2 READ *,A(K,L)PRINT *,’Introducir vector’DO 3 K=1,N

3 READ *,B(K)M=IGAUSS(A,B,N,Nrow,Nmax)IF(M.EQ.0) THENPRINT *,’SOLUCION’DO 1 K=1,NPRINT *,B(K)

1 CONTINUEELSE IF(M.EQ.1)THENPRINT *,’Una columna es toda cero’

ELSEPRINT *,’A(N,N)=0’

ENDIFEND

FUNCTION IGAUSS(A,B,N,Nrow,Nmax)PARAMETER (NmaxGAUSS=1000)DIMENSION A(Nmax,*),B(*),Nrow(*)DIMENSION U(NmaxGAUSS)IF (N.GT .NmaxGAUSS) THENIGAUSS=3PRINT *,’DIMENSION DEL SISTEMA MAYOR

DE LA PERMITIDA’RETURN

ENDIFDO 1 K=1,N

1 Nrow(K)=KDO 2 K=1,N-1XMax=ABS(A(Nrow(K),K))M=KDO 3 L=K+1,N

2 0

Page 21: Apuntes Analisis Numerico

IF(ABS(A(Nrow(L),K)).GT.XMax) THENXMax=ABS(A(Nrow(L),K))M=L

ENDIF3 CONTINUE

IF(XMax.LT.(2.**(-100))) THENIGAUSS=1RETURN

ENDIFIF(K.NE.M) THENMP=Nrow(K)Nrow(K)=Nrow(M)Nrow(M)=MPENDIF

DO 4 L=K+1,NC=A(Nrow(L),K)/A(Nrow(K),K)DO 5 M=K,NA(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 CONTINUE2 CONTINUE

IF(ABS(A(Nrow(N),N)).LT.(2.**(-100))) THENIGAUSS=2RETURN

ENDIFU(N)=B(Nrow(N))/A(Nrow(N),N)DO 6 K=N-1,1,-1C=0DO 7 L=K+1,NC=C+A(Nrow(K),L)*U(L)

7 CONTINUEU(K)=(B(Nrow(K))-C)/A(Nrow(K),K)

6 CONTINUEDO I=1,NB(I)=U(I)

ENDDOIGAUSS=0END

Estimación del error de un método para resolversistemas

Para estimar la fiabilidad de la solución numérica de unsistema de ecuaciones, haremos lo siguiente: dada una ma-triz A, un vector de términos independientes b y un vectorsolución u, calculado utilizando alguna técnica numérica,si la solución es perfecta entonces Au− b = 0. Ahora bien,esto no suele suceder, porque los errores de redondeo y decálculo producen que esta estimación no sea exacta. Paraestimar el error cometido al resolver el sistema utilizaremosla expresión siguiente, donde e es el vector e = Au− b :

ErrorSistema =1

N

X |ei||bi|+ 1

donde N es la dimensión del sistema y ErrorSistema rep-resenta el error relativo medio al resolver el sistema. Enel denominador se añade 1 para evitar las posibles divi-siones por 0. Cuanto más pequeño sea ErrorSistema, mejoraproximada estará la solución del sistema.

Método de Cholesky

Este método sólo se puede aplicar a matrices simétricasy definidas positivas. El siguiente teorema da 3 posiblesdefiniciones equivalentes de una matriz definida positiva.

Teorema 13 Sea A una matriz simétrica, las 3 siguientesafirmaciones son definiciones equivalentes a que una ma-triz sea definida positiva

(i) ∀ v ∈ <N − 0 se cumple que tvAv > 0.(ii) Todos los autovalores λ de A son positivos.(iii) Los determinantes de todos los menores princi-

pales de A son positivos.

El método de Cholesky se basa en descomponer lamatriz A en la forma:

A = B·Bt

donde B es una matriz triangular inferior.

B =

⎛⎜⎜⎜⎜⎝b1,1 0 0 . 0b2,1 b2,2 0 . .b3,1 b3,2 b3,3 . .. . . . 0

bn,1 bn,2 bn,3 . bn,n

⎞⎟⎟⎟⎟⎠

Problema 40 (2 puntos) Demostrar que si A = B ·Bt

(B triangular inferior) y |B| 6= 0, entonces A es simétricay definida positiva.

Problema 41 (2 puntos) Descomponer la siguiente ma-triz A por el método de Cholesky:

A =

⎛⎝ 1 1 41 5 64 6 26

⎞⎠De forma general, el algoritmo para calcular B es el

siguiente

Para i = 1, ..., N

bi,i =

r³ai,i −

Pi−1k=1 b

2i,k

´Para j = i+ 1, ..., N

bj,i =1bi,i

³aj,i −

Pi−1k=1 bj,kbi,k

´Fin Para j

Fin Para i

2 1

Page 22: Apuntes Analisis Numerico

El interés de descomponer una matriz A por el métodode Cholesky es que, a continuación, es muy sencillo resolverel sistema de ecuaciones Au = b. Efectivamente, bastadescomponer el sistema de la siguiente forma:

Bz = btBu = z

Ambos sistemas se resuelvan rápidamente haciendoun remonte y un descenso.

Nota: Normalmente, para evitar tener que almacenar dosmatrices, una para B y otra para Bt, se almacena todoen una única matriz B, simétrica, escribiendo en la partetriangular superior de B la parte correspondiente a Bt.

Problema 42 (2 puntos) Calcular el número de opera-ciones necesarias para resolver un sistema por el métodode Cholesky.

Problema 43 (2 puntos) Demostrar que a partir de unmétodo para resolver sistemas de ecuaciones se puede con-struir de forma inmediata un método para calcular la in-versa A−1 de una matriz A.

Práctica 4 (Método de Cholesky, 6 horas)

Implementar en Fortran 77 las siguientes funciones :

• FUNCTION ICHOLESKY_FACTORIZACION(A,DB,N,Nmax): Calcula la descomposición deCholesky de A y la devuelve en la matriz DB. De-vuelve 0 si termina bien y −1 en caso contrario.

• FUNCTION IDESCENSO(DB,DZ,B,N,Nmax): Re-suelve un sistema triangular inferior, donde DB es lamatriz, B es el término independiente y DZ es el vec-tor donde devuelve la solución. Devuelve 0 si terminabien y −1 en caso contrario.

• FUNCTION IREMONTE(DB,DU,DZ,N,Nmax): Re-suelve un sistema triangular superior, donde DB es lamatriz, DZ es el término independiente y DU es el vec-tor donde devuelve la solución. Devuelve 0 si terminabien y −1 en caso contrario

• FUNCTION ERROR_SISTEMA(A,DU,B,N,Nmax):Devuelve el error cometido al resolver el sistema dadopor la expresión ErrorSistema de la sección anterior.

• FUNCTION ICHOLESKY(A,B,DU,N,Nmax): Re-suelve un sistema por el método de Cholesky y de-vuelve la solución en DU. Devuelve 0 si termina bieny −1 en caso contrario.

Hay que hacer una versión en simple precisión y otraversión en doble precisión donde todas las variables queempiecen por D sean de doble precisión (la matriz A yel vector B siempre serán de simple precisión). Hay queresolver los sistemas ejemplo y calcular el ErrorSistema,tanto en doble como en simple precisión.Nota: El programa debe permitir introducir el sistemadirectamente por teclado o desde disco duro, utilizandolas funciones definidas en an.h. Resolver los siguientessistemas ejemplo:

1.

⎛⎝ 1 1 41 5 64 6 26

⎞⎠⎛⎝ xyz

⎞⎠ =

⎛⎝ 61236

⎞⎠

2.

⎛⎝ 1 1 41 1 44 4 17

⎞⎠⎛⎝ xyz

⎞⎠ =

⎛⎝ 61236

⎞⎠

3.

⎛⎝ 1 1 41 5 64 6 17

⎞⎠⎛⎝ xyz

⎞⎠ =

⎛⎝ 61236

⎞⎠

4.

⎛⎝ 2 −1 0−1 2 −10 −1 −4

⎞⎠⎛⎝ xyz

⎞⎠ =

⎛⎝ 10−5

⎞⎠

Resolver también los sistemas que aparecen enel directorio /users/asignaturas/ii-an de la máquinaserdis.dis.ulpgc.es. En este directorio hay tres ejemplosde sistemas de dimensión 10, 100 y 500. Los 3 sistemascorresponden a matrices simétricas y definidas positivas.Estos archivos ejemplo sólo se pueden utilizar al compilarel programa en serdis bajo UNIX. Si utilizamos Linux, elprograma no reconocerá el formato de los archivos.

Método de Crout para matrices tridiagonales

El caso de sistemas de ecuaciones con matrices A tridi-agonales posee una forma especialmente simple de factor-ización. Vamos a descomponer A en el producto de dosmatrices triangulares de la forma siguiente:⎛⎜⎜⎝

a1 b1 . 0c1 a2 . 00 . . bN−10 . cN−1 aN

⎞⎟⎟⎠ =

⎛⎜⎜⎝l1 0 . 0m1 l2 . 00 . . 00 . mN−1 lN

⎞⎟⎟⎠⎛⎜⎜⎝1 u1 . 00 1 . 00 . . uN−10 . 0 1

⎞⎟⎟⎠Los vectores mi, li, y ui se calculan utilizando el es-

quema:

l1 = a1u1 =

b1l1

Para i = 2, .., N − 1

2 2

Page 23: Apuntes Analisis Numerico

mi−1 = ci−1li = ai −mi−1ui−1ui =

bili

Fin ParamN−1 = cN−1lN = aN −mN−1uN−1

Problema 44 (3 puntos) Demostrar el algoritmo deCrout para descomponer matrices tridiagonales.

Problema 45 (2 puntos) Resolver utilizando el métodode Crout el siguiente sistema de ecuaciones:⎛⎝ 2 4 0

−1 0 40 −1 0

⎞⎠⎛⎝ xyz

⎞⎠ =

⎛⎝ 63−1

⎞⎠

Problema 46 (2 puntos) Calcular el número de opera-ciones necesarias para resolver un sistema tridiagonal porel método de Crout.

Subrutinas en Fortran 77 para la lectura y escrituraen disco de vectores y matrices

Programa 12 Subrutinas en Fortran 77 que leen y es-criben en disco vectores y matrices.****** Función que lee un vector de disco de nombreString, lo almacena****** en la tabla Vector y devuelve la dimension del vec-tor

FUNCTION LeerVector(String,Vector)CHARACTER * (*) StringDIMENSION Vector(*)OPEN(1,FILE=String,STATUS=’OLD’,

form=’UNFORMATTED’)READ(1) ANdimension=INT(A)PRINT *,’DIMENSION DEL VECTOR

’,String,’=’,NdimensionDO 1 K=1,NdimensionREAD(1) Vector(K)

1 CONTINUECLOSE(1)LeerVector=NdimensionEND

***** Procedimiento que escribe en el fichero String el vec-tor Vector***** de dimension Ndimension

SUBROUTINE EscribirVec-tor(String,Vector,Ndimension)

CHARACTER * (*) String

DIMENSION Vector(*)OPEN(1,FILE=String, STATUS=’NEW’,

form=’UNFORMATTED’,ERR=1)GOTO 2

1 OPEN(1,FILE=String, STATUS=’OLD’,form=’UNFORMATTED’)2 A=Ndimension

WRITE(1) ADO 3 K=1,NdimensionWRITE(1) Vector(K)

3 CONTINUECLOSE(1)END

****** Función que lee una matriz cuadrada de discode nombre String, lo almacena****** en la tabla A y devuelve la dimension de la matriz

FUNCTION LeerMatriz(String,A,Nmax)CHARACTER * (*) StringDIMENSION A(Nmax,*)OPEN(1,FILE=String, STATUS=’OLD’,

form=’UNFORMATTED’)READ(1) BNdimension=INT(B)PRINT *,’DIMENSION DE LA MATRIZ ’,

String,’=’, NdimensionDO 1 K=1,NdimensionDO 2 L=1,NdimensionREAD(1) A(K,L)

2 CONTINUE1 CONTINUE

CLOSE(1)LeerMatriz=NdimensionEND

***** Procedimiento que escribe en el fichero String la ma-triz A***** cuadrada de dimension Ndimension

SUBROUTINE EscribirMa-triz(String,A,Ndimension,Nmax)

CHARACTER * (*) StringDIMENSION 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) BDO 3 K=1,NdimensionDO 4 L=1,NdimensionWRITE(1) A(K,L)

4 CONTINUE3 CONTINUE

CLOSE(1)

2 3

Page 24: Apuntes Analisis Numerico

END

Programa 13 Programa en Fortran 77 donde se describeun ejemplo de lectura/escritura de vectores y matrices.

INCLUDE ’an.h’PARAMETER(Nmax=100)CHARACTER * 10,StringDIMENSION V(Nmax), A(Nmax,Nmax)

String=’vector.dat’Ndimension=LeerVector(String,V)PRINT *,NdimensionDO 1 K=1,NdimensionPRINT *,V(K)V(K)=2*V(K)

1 CONTINUECALL EscribirVector(’vector3.dat’,V,Ndimension)N=LeerVector(’vector3.dat’,V)PRINT *,’N=’,NDO 2 k=1,NPRINT *,V(K)

2 CONTINUE

Ndimension=3DO 3K=1,NdimensionDO 4 L=1,NdimensionA(L,K)=L+KPRINT *,A(L,K)

4 CONTINUEPRINT *

3 CONTINUECALL EscribirMatriz(’matriz.dat’,A,Ndimension,Nmax)Ndimension=LeerMatriz(’matriz.dat’,A,Nmax)PRINT *,NdimensionDO 5 K=1,NdimensionDO 6 L=1,NdimensionPRINT *,A(L,K)

6 CONTINUEPRINT *

5 CONTINUEEND

Nota la declaraciónINCLUDE 0an.h0

incluye el fichero an.h que se encuentra en el directorio detrabajo, en el cuerpo del programa. La declaración

CHARACTER ∗ 10, Stringdefine un string de caracteres de tamaño 10.

DIFERENCIACIÓN E INTEGRACIÓNNUMÉRICA

Una fórmula de diferenciación numérica es un proced-imiento que permite aproximar la derivada de la funciónf(x) en un punto xi. utilizando el valor de f(x) en otrospuntos vecinos a xi. Por otro lado, una fórmula de inte-gración numérica es un procedimiento que permite aprox-imar el valor de la integral en un intervalo [a, b] a partirde la evaluación de f(x) en algunos puntos incluidos en elintervalo [a, b].

Diferenciación Numérica

La manera habitual de aproximar la derivada de una fun-ción f(x) en un punto xi consiste en utilizar el desarrollode Taylor centrado en xi:

f(x) = f(xi)+f 0(xi)

1!(x−xi)+ ...+

fN)(xi)

N !(x−xi)N + ...

Si tomamos un punto xj 6= xi, truncamos el desarrollode Taylor y despejamos, obtenemos la siguiente expresión:

f 0(xi) ≈f(xj)− f(xi)

xj − xi+O (|xj − xi|)

donde O (|xj − xi|) indica, básicamente, que el errorcometido es una suma de potencias de |xj − xi| en la quela potencia más pequeña es 1. Se denomina orden de laaproximación a la potencia más pequeña que aparece enel término del error. Por lo tanto, en este caso, diremosque el orden de aproximación es 1. Si xj > xi, entonces laderivada se calcula hacia adelante, mientras que si xj < xi,la derivada se calcula hacia atrás.

Ejemplo 10 Veremos en este ejemplo como, cuanto máspróximo esté el punto xj al punto xi, mejor será el valoraproximado de la derivada. Consideremos la funciónf(x) = x3. La derivada de f(x) en x = 1 es f 0(1) = 3 Sitomamos xi = 1 y xj = 2 en la fórmula anterior, obten-emos la aproximación

f 0(1) ≈ 23 − 132− 1 = 7

Si tomamos ahora xj = 1.1, obtenemos

f 0(1) ≈ 1.13 − 13

1.1− 1 = 3. 31

que está mucho más próximo al valor real.

Problema 47 (2 puntos) Calcular analítica y numéri-camente la matriz gradiente en el punto (1, 1) (utilizarh = 0.1) de la función:

f(x, y) =

½x2 + y2 − 1

x− y

2 4

Page 25: Apuntes Analisis Numerico

Problema 48 (3 puntos) Dados 3 puntos distintosxl, xi, xr, demostrar que la fórmula

f 0(xi) ≈(xi − xl)

f(xr)−f(xi)xr−xi + (xr − xi)

f(xi)−f(xl)xi−xl

xr − xl

aproxima la derivada de f 0(xi) con un orden de aproxi-mación de 2.

Nótese que, si xr = xi + h, y xl = xi − h, entonces lafórmula anterior resulta

f 0(xi) =f(xi + h)− f(xi − h)

2h

que es una conocida fórmula de diferencias centradas.

Ejemplo 11 Veremos en este ejemplo como, utilizando laexpresión anterior para aproximar la derivada de f(x) =x3 en x = 1, la precisión es mayor que con la fórmulaanterior. Por ejemplo, si tomamos xi = 1 y h = 1, laexpresión anterior nos da

f 0(1) ≈ 23 − 032

= 4

Si tomamos ahora xj = 0.1

f 0(1) ≈ 1.13 − 0.930.2

= 3. 01

que está más próximo al valor real que utilizando laprimera fórmula. En general, comprobamos que, cuantomayor es el orden de una fórmula de aproximación, máspreciso es el valor de la derivada.

Nota: Utilizar el desarrollo de Taylor para aproximarf 0(x) es equivalente a interpolar f(x) con el polinomio deLagrange y posteriormente derivar el polinomio.

Problema 49 (3 puntos) Dados 3 puntos distintosxl, xi, xr, calcular el polinomio de Lagrange que interpolaa f(x) en esos 3 puntos, calcular la derivada de ese poli-nomio en xi, y comprobar que da la misma fórmula que lapresentada en el problema anterior.

Problema 50 (2 puntos) Calcular una aproximación dela derivada tercera f 000(xi) de una función f(x) en unpunto xi, utilizando f(xi), f(xi+h), f(xi−h), f(xi−2h).

Problema 51 (3 puntos) Dados 3 puntos, demostrarque la fórmula

f 00(xi) ≈ 2f(xr)−f(xi)

xr−xi − f(xi)−f(xl)xi−xl

xr − xl

aproxima la derivada segunda de f(x) en xi con un ordende aproximación de 1.

Problema 52 (2 puntos) Considerar en el problema an-terior que xl = xi− h, y xr = xi+ h. Deducir como quedala fórmula anterior para aproximar la derivada segunda, ydemostrar que, en este caso, el orden de aproximación es2.

Problema 53 (3 puntos) Dados 3 puntos xl < xi < xr,calcular el polinomio de Lagrange que interpola a f(x) enesos 3 puntos, calcular la derivada segunda de ese poli-nomio en xi, y comprobar que da la misma fórmula queutilizando los desarrollos de Taylor.

Problema 54 (2 puntos) Calcular una aproximación dela derivada primera y segunda de una función f(x) en x =0, teniendo en cuenta que f(0) = 1, f(1) = 0, f(4) = 9

Diferenciación numérica en dimensiones superiores

Estudiaremos, en este apartado, la aproximación de lasderivadas de una función de varias variables. Para sim-plificar la exposición, supondremos que la dimensión es 2.Para discretizar las derivadas de una función F (x, y), seutilizan los desarrollos de Taylor siguientes en 2 variables.Utilizaremos la siguiente nomenclatura: Fx = ∂F (x,y)

∂x ,

Fy =∂F (x,y)

∂y , Fxx = ∂2F (x,y)∂x2 , Fxy =

∂2F (x,y)∂x∂y , Fyy =

∂2F (x,y)∂y2

1. F (x+ h, y) = F + hFx +h2

2 Fxx +O(h3)

2. F (x− h, y) = F − hFx +h2

2 Fxx +O(h3)

3. F (x, y + l) = F + lFy +l2

2 Fyy +O(l3)

4. F (x, y − l) = F − lFy +l2

2 Fyy +O(l3)

5. F (x+h, y+ l) = F +hFx+ lFy+12(h

2Fxx+2hlFxy+

l2Fyy) +O(¡h2 + l2

¢ 32 )

6. F (x−h, y− l) = F −hFx− lFy+ 12(h

2Fxx+2hlFxy+

l2Fyy) +O(¡h2 + l2

¢ 32 )

7. F (x+h, y− l) = F +hFx− lFy+ 12(h

2Fxx−2hlFxy+l2Fyy) +O(

¡h2 + l2

¢ 32 )

8. F (x−h, y+ l) = F −hFx+ lFy+12(h

2Fxx−2hlFxy+l2Fyy) +O(

¡h2 + l2

¢ 32 )

Prestaremos particular atención a dos operadoresdiferenciales que se utilizan con frecuencia en la práctica:El gradiente ∇F (x, y) = (Fx(x, y), Fy(x, y)), que es el vec-tor de derivadas parciales, y el Laplaciano ∆F (x, y) =Fxx(x, y) + Fyy(x, y). Utilizaremos la notación Fi,j ∼=F (hi, lj).

2 5

Page 26: Apuntes Analisis Numerico

Discretización del Laplaciano

Para discretizar el operador ∆F en un entorno de 3 × 3puntos, pueden utilizarse diferentes esquemas. Para sim-plificar, supondremos que l = h.

Problema 55 (3 puntos) Demostrar, utilizando el de-sarrollo de Taylor, que las siguientes expresiones son dis-cretizaciones del laplaciano:

∆F =Fi+1,j+1 + Fi−1,j+1 + Fi−1,j−1 + Fi+1,j−1 − 4Fi,j

2h2

∆F =Fi+1,j + Fi−1,j + Fi,j+1 + Fi,j−1 − 4Fi,j

h2

El resultado del anterior problema nos proporciona2 formas distintas de evaluar el laplaciano, por tanto,cualquier promediado de las dos expresiones también esuna discretización del laplaciano, es decir:

∆F =

= γFi+1,j+1 + Fi−1,j+1 + Fi−1,j+1 + Fi+1,j−1 − 4Fi,j

2h2+

+(1− γ)Fi+1,j + Fi−1,j + Fi,j+1 + Fi,j−1 − 4Fi,j

h2+

+O(h)donde γ es un parámetro libre a elegir. La elección de di-cho parámetro γ la haremos de forma que la discretizaciónde ∆F respete lo máximo posible la invarianza por rota-ciones de la función F (x, y). Para ello, consideremos unafunción tal que en un entorno de un punto (hi0, hj0) tienelos siguientes valores:

1 1 10 0 00 0 0

Si calculamos ∆F en el punto central a través de laanterior fórmula obtenemos:

∆F (hi0, hj0) = γ2

2h2+ (1− γ)

1

h2

Ahora bien, si rotamos 45 grados, la función inicial entorno al punto (hi0, hj0), obtenemos como imagen:

1 1 01 0 00 0 0

Si calculamos de nuevo ∆F en el mismo punto obten-emos:

∆F (hi0, hj0) = γ1

2h2+ (1− γ)

2

h2

Por lo tanto, si queremos que ambos valores de ∆Fcoincidan, debemos elegir γ = 2

3 . Hablando en términosde teoría de la señal, el calculo de ∆F nos llevaría a con-volucionar la imagen con la siguiente máscara:

1

h2

13

13

13

13 −83

13

13

13

13

Problema 56 (2 puntos) Calcular una aproximacióndel laplaciano de una función F (x, y) en el punto (x, y) =(0, 0) conociendo los siguientes valores: F (0, 0) = 0,F (12 , 0) =

14 , F (−

12 , 0) =

14 , F (0,

12 ) =

14 , F (0,−

12) =

14 ,

F (12 ,12) =

12 , F (−

12 ,−

12) =

12 , F (−

12 ,

12) =

12 , F (

12 ,−

12 ) =

12 .

Discretización del gradiente

Siguiendo el desarrollo de Taylor mostrado anteriormente,obtenemos la siguiente expresión para el gradiente:

(Fi,j)x = (1− γ)(Fi+1,j − Fi−1,j)

2h+

+γ(Fi+1,j+1 − Fi−1,j+1 + Fi+1,j−1 − Fi−1,j−1)

4h

(Fi,j)y = (1− γ)(Fi,j+1 − Fi,j−1)

2h+

+γ(Fi+1,j+1 − Fi+1,j−1 + Fi−1,j+1 − Fi−1,j−1)

4h

donde γ es, de nuevo, un parámetro a elegir. Teniendoen cuenta que la norma euclídea del gradiente es invari-ante por rotaciones, lo será en particular para rotacionesde 45 grados, de donde deducimos, utilizando el mismoargumento que para el ∆F , que γ = 2−

√2. Por lo tanto,

estamos calculando Fx utilizando la máscara

1

4h

−(2−√2) 0 (2−

√2)

−2(√2− 1) 0 2(

√2− 1)

−(2−√2) 0 (2−

√2)

y Fy utilizando

1

4h

−(2−√2) 2(

√2− 1) −(2−

√2)

0 0 0(2−

√2) −2(

√2− 1) (2−

√2)

Problema 57 (3 puntos) Demostrar que las máscaras

Fx =1

4h

−¡2−√2¢

0¡2−√2¢

−2¡√2− 1

¢0 2

¡√2− 1

¢−¡2−√2¢

0¡2−√2¢

Fy =1

4h

−¡2−√2¢−2¡√2− 1

¢−¡2−√2¢

0 0 0¡2−√2¢

2¡√2− 1

¢ ¡2−√2¢

dan lugar a una discretización del gradiente tal que sunorma euclídea es invariante por rotaciones de 45 grados.

Problema 58 (2 puntos) Calcular una aproximacióndel gradiente de una función F (x, y) en el punto (x, y) =(0, 0) conociendo los siguientes valores: F (0, 0) = 0,F (12 , 0) =

12 , F (−

12 , 0) = −

12 , F (0,

12) = −

12 , F (0,−

12) =

12 , F ( 12 ,

12) = 0, F (− 12 ,−

12 ) = 0, F (−12 ,

12 ) = −1,

F (12 ,−12) = 1.

2 6

Page 27: Apuntes Analisis Numerico

Integración Numérica

Métodos de Cuadratura de Gauss

Sea f(x) una función definida en un intervalo [a, b], vamosa aproximar el valor de la integral de f(x) en [a, b] uti-lizando la evaluación de f(x) en ciertos puntos de [a, b].Es decir, una fórmula de integración numérica se puedeescribir como Z b

a

f(x)dx ≈NXk=1

wkf(xk)

donde xk representa los puntos de evaluación de f(x) y wk

el peso de cada punto de evaluación.

Definición 2 Una fórmula de integración numérica se de-nomina exacta de orden M si, para cualquier polinomioP (x) de grado menor o igual que M, la fórmula es exacta.Es decir Z b

a

P (x)dx =NXk=1

wkP (xk)

Definición 3 Se denominan polinomios de LegendreLn(x) a la familia de polinomios dada por L0(x) = 1,L1(x) = x, y para n = 2, 3, ....

nLn(x) = (2n− 1)xLn−1(x)− (n− 1)Ln−2(x)

Teorema 14 Seanxkk=1,..,N los ceros del polinomio deLegendre LN(x). Si definimos

wk =

Z 1

−1

Πi6=k(x− xi)Πi6=k(xk − xi)

dx

entonces la fórmula de integración numérica generada porlos puntos xk y los pesos wk es exacta hasta el orden 2N−1para el intervalo [−1, 1].

Demostración [Hu] Pg. 205-209

Ejemplo 12 A continuación se exponen algunos valoresde raíces xk y coeficientes wk en función del grado delpolinomio Ln(x) :

n xk wk

2 0.5773502692 1.−0.5773502692 1

3 0.7745966692 0.55555555560. 0.8888888889

− 0.7745966692 0.55555555564 0.8611363116 0.3478548451

0.3399810436 0.6251451549−0.3399810436 0.6251451549− 0.8611363116 0.3478548451

Problema 59 (2 puntos) Aproximar el valor de la sigu-iente integral, utilizando las fórmulas de Legendre paran = 2 y n = 3: Z 1

−1

¡x3 − x4

¢dx

¿Cuál es el valor exacto de la integral?

Problema 60 (2 puntos) Se consideran, para el inter-valo [−1, 1], los puntos x0 = −0.5, x1 = 0 y x2 = 0.5 ylos pesos w0 = w1 = w2 = 2/3. Estos puntos y estos pe-sos se utilizan para aproximar la integral de una funciónen [−1, 1]. Usar esta fórmula de integración para calcularnúmericamente la siguiente integral y compararla con elresultado análitico (exacto).Z π

2

−π2

cos(x)dx

Problema 61 (2 puntos) Encontrar, utilizando losceros y pesos asociados a los polinomios de Legendre, cuálsería la fórmula de integración numérica de Legendre uti-lizando un sólo punto de interpolación. ¿Cuál sería suexactitud?

Problema 62 (2 puntos) A partir de los ceros y de lospesos asociados a los polinomios de Legendre, y dado unintervalo [a, b] cualquiera, encontrar los puntos xk y lospesos wk que hacen exacta hasta orden 2N−1 una fórmulade integración numérica sobre el intervalo [a, b].

Problema 63 (2 puntos) Utilizar el resultado del prob-lema anterior para calcular de forma exacta la siguienteintegral: Z 1

0

¡x2 − x3

¢dx

Cuando el intervalo [a, b] es infinito, es decir, a = −∞o b = ∞, hay que emplear otros métodos para aproximarlas integrales. En el caso [a, b] = (−∞,∞), se utilizan losceros de los denominados polinomios de Hermite, definidoscomo H0(x) = 1, H1(x) = 2x, y

Hn(x) = 2xHn−1(x)− 2(n− 1)Hn−2(x)

para n ≥ 2. En este caso, la fórmula de integraciónnumérica aproxima la integral de la siguiente forma:Z ∞

−∞f(x)e−x

2

dx ≈NXk=0

wkf(xk)

2 7

Page 28: Apuntes Analisis Numerico

Teorema 15 Si xk son los ceros del polinomio de Hermitey definimos

wk =

Z ∞−∞

Πi6=k(x− xi)Πi6=k(xk − xi)

e−x2

dx

entonces la fórmula de integración numérica generada porlos puntos xk y los pesos wk es exacta hasta orden 2N − 1para el intervalo (−∞,∞).

Demostración [Hu] Pg. 213-214

Ejemplo 13 A continuación se exponen algunos valoresde raíces xk y coeficientes wk en función del grado delpolinomio Hn(x) :

n xk wk

1 0. 1. 772 453 8512 −0. 707 106 781 0. 886 226 925 5

0. 707 106 781 0. 886 226 925 5

Problema 64 (2 puntos) Calcular de forma exacta laintegral Z ∞

−∞

¡x3 − x2

¢e−x

2

dx

utilizando los polinomios de Hermite.

Problema 65 (2 puntos) Aproximar, utilizando dospuntos de aproximación, el valor de la integral:Z ∞

−∞

1

1 + x2dx

Para el intervalo (0,∞), se utilizan los polinomios deLaguerre Ln(x), definidos por L0(x) = 1, L1(x) = 1−x, y

Ln(x) = (2n− 1− x)Ln−1(x)− (n− 1)2Ln−2(x).

para n ≥ 2. En este caso, la fórmula de integraciónnumérica aproxima:Z ∞

0

f(x)e−xdx ≈NXk=0

wkf(xk)

Teorema 16 Si xk son los ceros del polinomio de La-guerre y definimos

wk =

Z ∞0

Πi6=k(x− xi)Πi6=k(xk − xi)

e−xdx

entonces la fórmula de integración numérica generada porlos puntos xk y los pesos wk es exacta hasta orden 2N − 1para el intervalo (0,∞).

Demostración [Hu] Pg. 211-213

Ejemplo 14 A continuación se exponen algunos valoresde raíces xk y coeficientes wk en función del grado delpolinomio Ln(x) :

n xk wk

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 laintegral Z ∞

0

¡x3 − x2

¢e−xdx

utilizando los polinomios de Laguerre.

Problema 67 (2 puntos) Calcular una fórmula deaproximación numérica de la integral siguiente:Z ∞

a

f(x)e−xdx

donde a es un número real cualquiera.

Fórmulas de Integración Numérica Compuestas

Con las fórmulas que hemos visto hasta ahora, para au-mentar la precisión es necesario aumentar el grado de lospolinomios, lo cual resulta complejo para valores grandesde N. Una alternativa consiste en dividir previamente laintegral en subintegrales de la manera siguiente:Z b

a

f(x)dx =MXk=0

Z xk+1

xk

f(x)dx

donde a = x0 < x1 < .... < xM+1 = b. A continuación seaproxima numéricamente cada una de las integralesZ xk+1

xk

f(x)dx

Para ello, se pueden utilizar los desarrollos a partirde los polinomios de Legendre, o bien las fórmulas mássimples siguientes:

Fórmula del rectánguloZ xk+1

xk

f(x)dx ≈ f

µxk + xk+1

2

¶(xk+1 − xk)

Esta fórmula se obtiene fácilmente aproximando f(x)por el polinomio interpolador en x = xk+xk+1

2 . Es decir:

Z xk+1

xk

f(x)dx ≈Z xk+1

xk

f

µxk + xk+1

2

¶dx =

= f

µxk + xk+1

2

¶(xk+1 − xk)

2 8

Page 29: Apuntes Analisis Numerico

Fórmula del trapecioZ xk+1

xk

f(x)dx ≈ f(xk+1) + f(xk)

2(xk+1 − xk)

Esta fórmula se deduce aproximando f(x) por su poli-nomio interpolador en xk y xk+1. Es decir:

Z xk+1

xk

f(x)dx ≈

≈Z xk+1

xk

µf(xk)

x− xk+1xk − xk+1

+ f(xk+1)x− xk

xk+1 − xk

¶dx =

=f(xk+1) + f(xk)

2(xk+1 − xk)

Fórmula de Simpson

Z xk+1

xk

f(x)dx ≈f(xk+1) + f(xk) + 4f

³xk+xk+1

2

´6

(xk+1 − xk)

Esta fórmula se deduce aproximando f(x) por su de-sarrollo en serie de Taylor centrado en el punto xm =xk+xk+1

2 . Es decir:

Z xk+1

xk

f(x)dx ≈

≈Z xk+1

xk

µf(xm) + f 0(xm)(x− xm) +

f 00(xm)

2(x− xm)

2

¶dx =

= f(xm)(xk+1 − xk) +f 00(xm)

3

µxk+1 − xk

2

¶3Ahora bien, teniendo en cuenta los resultados de

la sección anterior sobre derivación numérica f 00(xm), sepuede aproximar como

f 00(xm) ≈f(xk+1)− 2f(xm) + f(xk)³

xk+1−xk2

´2Por tanto, sustituyendo este valor en la aproximación

anterior obtenemos

Z xk+1

xk

f(x)dx ≈ f(xm)(xk+1 − xk)+

+f(xk+1)− 2f(xm) + f(xk)

3

µxk+1 − xk

2

¶=

=f(xk+1) + f(xk) + 4f

³xk+xk+1

2

´6

(xk+1 − xk)

Aunque estas fórmulas sean menos precisas que las de-ducidas a partir de los ceros de los polinomios de Legendre,tienen la ventaja de que pueden ser utilizadas cuando sóloconocemos la función a integrar en un conjunto equiespa-ciado de puntos, es decir, cuando sólo conocemos f(x) enun conjunto de la forma xk = x0+hk. Nótese que, en estecaso, la integración a partir de los ceros de los polinomiosde Legendre no puede utilizarse.

Problema 68 (2 puntos) Aproximar, por el método deSimpson, la integral Z 1

−1

¡x3 − x4

¢dx

utilizando únicamente el valor de la función en los puntos:−1,−12 , 0,

12 y 1.

Práctica 5 (Implementación Método de Inte-gración de Simpson, 2 horas)

Crear una función en fortran 77 donde se implemente elmétodo de Simpson. Los parámetros de la función serán:Los límites del intervalo de integración en precisión real yel número de subintervalos en los que se dividirá el inter-valo inicial. La función a integrar se definirá aparte (comoen el caso del mérodo Müller). La función devolverá elvalor de la integral obtenido. Probar el método para aprox-imar las siguientes integrales con diferentes valores para elparámetro de número de subintervalos y comprobar que elresultado se aproxima al valor exacto de la integral.

1.R π0sin(x)dx = 2

2.R 10

x√1−x2 dx = 1

3.R∞−∞ e−x

2

dx =√π = 1. 772 5

Nota: Las integrales con límites infinitos se aproximaráncambiando el infinito por un número grande.

Integración numérica en dimensiones superiores

En esta sección, estudiaremos las técnicas de integraciónnumérica sobre dominios Ω de dimensión superior a 1. Parasimplificar la exposición, supondremos que la dimensión es2. Es decir, pretendemos aproximarZ

Ω

F (x, y)dxdy

Aproximaremos esta integral a través de la fórmulanumérica: Z

Ω

F (x, y)dxdy ≈Xi,j

wijF (xi, yj)

donde debemos elegir los puntos (xi, yj) y los pesoswij. Para realizar esta elección se utilizan técnicas decuadratura. Es decir, se exige que la fórmula sea exactapara polinomios en x e y de hasta un cierto grado:Z

Ω

xmyndxdy =Xi,j

wij (xi)m(yj)

n

2 9

Page 30: Apuntes Analisis Numerico

donde m y n determinan el grado de los polinomios. Deestas relaciones se puede deducir, en general, los valores delos puntos y los pesos. Un caso particularmente sencilloes cuando Ω es un rectángulo [a, b]x[c, d]. En este caso,podemos escribir:Z

Ω

xmyndxdy =

Z b

a

xmdx

Z d

c

yndy

y, por tanto, la exactitud en dimensión 2 la podemos de-ducir a partir de la exactitud en dimensión 1, que, en estecaso, viene dada, como hemos visto anteriormente, por lospolinomios de Legendre.

Problema 69 (3 puntos) Deducir la fórmula de inte-gración numérica sobre el rectángulo [−1, 1]x[−1, 1] resul-tante de aplicar la integración numérica en una variableen los intervalos [−1, 1], y [−1, 1].

Problema 70 (2 puntos) Deducir la fórmula de inte-gración numérica sobre un rectángulo [a, b]x[c, d] resultantede aplicar la integración numérica en una variable en losintervalos [a, b], y [c, d].

Problema 71 (2 puntos) Calcular de forma exacta laintegral Z 1

−1

Z 1

−1x2y2dxdy

utilizando integración numérica.

Nótese que, al igual que en dimensión 1, tambiénpodemos extender los resultados al caso en que los inter-valos sean infinitos, de tal forma que podemos construirfácilmente fórmulas de integración numérica para las inte-grales Z ∞

−∞

Z ∞−∞

F (x, y)e−x2−y2dxdy

y Z ∞0

Z ∞0

F (x, y)e−x−ydxdy

Problema 72 (2 puntos) Calcular una aproximaciónnumérica de la integralZ ∞

−∞

Z 2

0

x

1 + ey2dxdy

utilizando la evaluación de F (x, y) en 4 puntos.

En el caso de que Ω sea un triángulo, el cálculo esun poco más complejo. Consideremos un triángulo Tde vértices (x0, y0), (x1, y1), (x2, y2). Denotaremos por

AREA(T ) el área del triángulo T. En función de los vér-tices, el área viene determinada por

AREA(T ) =1

2ABS

⎛⎝¯¯ 1 1 1x0 x1 x2y0 y1 y2

¯¯⎞⎠

A continuación presentaremos algunas fórmulas de in-tegración numérica sobre triángulos utilizando diferentesnúmeros de puntos

Integración sobre triángulos utilizando unpunto.ZT

F (x, y) ∼= F

µx0 + x1 + x2

3,y0 + y1 + y2

3

¶AREA(T )

Integración sobre triángulos utilizando 3 pun-tos. Z

T

F (x, y) ∼= AREA(T )3X

k=1

wkF (exk, eyk)donde

w1 = w2 = w3 =1

3ex1 =x0 + x12

ey1 = y0 + y12ex2 =

x0 + x22

ey2 = y0 + y22ex3 =

x2 + x12

ey3 = y2 + y12

Integración sobre triángulos utilizando 4 pun-tos. Z

T

F (x, y) ∼= AREA(T )4X

k=1

wkF (exk, eyk)donde

w1 = w2 = w3 =25

48w4 = −

27

48ex1 =6x0 + 2x1 + 2x2

10ey1 = 6y0 + 2y1 + 2y2

10ex2 =2x0 + 6x1 + 2x2

10ey2 = 2y0 + 6y1 + 2y2

10ex3 =2x0 + 2x1 + 6x2

10ey3 = 2y0 + 2y1 + 6y2

10ex4 =x0 + x1 + x2

3ey4 = y0 + y1 + y2

3

Problema 73 (2 puntos) Se considera el triángulo T devértices (0, 0), (1, 0) y (0, 1). Deducir cual debe ser el punto(x0, y0) y el peso w0 para que la fórmula de integraciónnumérica: Z

T

F (x, y)dxdy ≈ F (x0, y0)w0

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

3 0

Page 31: Apuntes Analisis Numerico

Problema 74 (2 puntos) Calcular una aproximaciónnumérica de la integralZ

Ω

x2ydxdy

donde Ω es el triángulo de vértices (0, 0), (2, 0) y (0, 2),utilizando 1 punto, 3 puntos y 4 puntos.

ANÁLISIS NUMÉRICO MATRICIAL II

En esta sección veremos algunos aspectos más avanzadosdel análisis matricial, incluyendo técnicas iterativas de res-olución de sistemas de ecuaciones y cálculo de autovalores.

Normas de vectores y matrices

Definición 4 Una norma k . k es una aplicación de unespacio vectorial E en R+ ∪ 0 que verifica las siguientespropiedades:

• k x k= 0 si y sólo si x = 0

• k λx k=| λ |k x k para todo λ ∈ K y x ∈ E

• k x+ y k≤k x k + k y k para todo x, y ∈ E.

Básicamente, una norma mide la magnitud o tamañode un vector x. Por ejemplo, en el espacio vectorial de losnúmeros reales, la norma ”natural” es el valor absoluto.Sin embargo, cuando trabajamos en varias dimensiones,esto es, x = (x1, x2, ...., xN ), existen múltiples formas dedefinir una norma. La definición más utilizada es la de-nominada norma p, donde p es un número real positivo,que viene definida por

k x kp=Ã

NXi=1

| xi |p! 1

p

Un caso particularmente interesante es p = 2, quecorresponde a la norma euclídea. Otro caso interesantees aquél que se produce cuando hacemos tender p haciainfinito, lo que da lugar a la denominada norma infinito,definida por

k x k∞= maxi| xi |

Problema 75 (4 puntos) Tomar N = 2 , p = 2, y de-mostrar que la norma k x kp verifica las propiedades de ladefinición de norma.

Problema 76 (3 puntos) Demostrar que

Limp→∞ k x kp= maxi| xi |

Problema 77 (2 puntos) Tomar N = 2 y dibujar ellugar geométrico de los vectores x = (x1, x2) que verificanque

1. k x k1< 1

2. k x k2< 1

3. k x k∞< 1

Problema 78 (2 puntos) Tomar N = 2 y demostrar lasiguiente desigualdad:

k x k∞≤k x k2≤k x k1

Dada una matriz A de dimensión NxN , se podríadefinir su norma considerando la matriz como un vectorde dimensión NxN . Sin embargo, resulta más útil definirla norma de una matriz subordinándola a la norma de unvector de la siguiente manera:

Definición 5 Sea A una matriz y sea k . k una normavectorial. Se define la norma de A, subordinada a la normavectorial k . k como

k A k= supx6=0

k Ax kk x k

La propiedad fundamental que verifica una norma ma-tricial definida de esta forma es la siguiente:

Teorema 17 Sea A una matriz y k . k una norma vecto-rial. Entonces, para cualquier vector x se verifica que

k Ax k≤k A k · k x k

Demostración: Si x = 0, la desigualdad es trivial. Six 6= 0, entonces, puesto que k x k> 0, la desigualdadanterior es equivalente a

k Ax kk x k ≤k A k

Ahora bien, esta desigualdad es cierta por la propiadefinición de k A k.

Problema 79 (2 puntos) Demostrar que si A y B sondos matrices de dimensión NxN, entonces, para cualquiernorma de matrices subordinada a una norma vectorial, severifica

k AB k≤k A k · k B k

A continuación veremos la relación que existe entrela norma de una matriz y sus autovalores. Empezaremosrecordando algunos conceptos relacionados con los auto-valores.

3 1

Page 32: Apuntes Analisis Numerico

Definición 6 Un autovalor de A es un número λ real ocomplejo tal que existe un vector x, denominado autovec-tor, tal que

Ax = λx

Definición 7 Se denomina polinomio característico P (λ)de la matriz A, al polinomio dado por el determinante

P (λ) =| A− λI |

Problema 80 (1 punto) Demostrar que los autovaloresde A son los ceros del polinomio característico P (λ).

Definición 8 Se define el radio espectral de una matriz Acomo

ρ(A) = maxi| λi | : λi autovalor de A

Teorema 18 Sea A una matriz y k . k una norma vecto-rial. Entonces

k A k≥ ρ(A)

Demostración: Si λ es un autovalor de A, entonces existeun autovector x tal que Ax = λx, por tanto

k Ax kk x k =

k λx kk x k = |λ| ≤k A k

Lo que demuestra el teorema.

Teorema 19 Si los autovectores de una matriz A de di-mensión NxN forman una base ortonormal de RN , en-tonces

k A k2= ρ(A)

Demostración: Recordamos, en primer lugar, que unabase ortonormal de vectores es un conjunto de vectorestales que cualquier otro vector se puede expresar comocombinación lineal de ellos y, además, su producto escalarverifica que

(xi, xj) =NXk=1

(xi)k (xj)k =

½0 si i 6= j1 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 desigual-dad en el otro sentido, tendríamos la igualdad, y por tantoel resultado del Teorema. Sea x un vector cualquiera.Puesto que A posee una base ortonormal de autovectores

xi, el vector x se podrá expresar como una combinaciónlineal de autovectores, de la forma:

x = η1x1 + η2x2 + ..+ ηNxN

Al hacer Ax, y puesto que los xi son autovectores,obtenemos que

Ax = η1λ1x1 + η2λ2x2 + ..+ ηNλNxN

Como los autovectores son ortonormales, se cumpleque

k x k2=q(η1)

2 + ..+ (ηN )2

k Ax k2=q(η1λ1)

2+ ..+ (ηNλN )

2

Y, por tanto,

k Ax k2k x k2

≤ ρ(A)

para cualquier vector x. En consecuencia, al tomar elsupremo en x, la desigualdad se mantiene, lo que demues-tra que

k A k2≤ ρ(A)

Teorema 20 Si una matriz A de dimensión NxN essimétrica, entonces todos sus autovalores son reales y,además, sus autovectores forman una base ortonormal deRN .

Demostración: [La-Th] Pg. 53.

Problema 81 (2 puntos) Calcular los autovectores dela matriz ⎛⎝ 1 1 0

1 1 00 0 2

⎞⎠y determinar una base ortonormal de R3 compuesta porautovectores de A.

Teorema 21 Sea A una matriz cualquiera, entonces

• k A k2=pρ(tAA)

• k A k1= maxj (P

i | aij |)

• k A k∞= maxi³P

j | aij |´

Demostración: [La-Th] Pg. 73,75.

Problema 82 (2 puntos) Calcular las normas 2, 1 einfinito de la matriz

A =

µ1 01 1

3 2

Page 33: Apuntes Analisis Numerico

Problema 83 (2 puntos) Demostrar la siguiente igual-dad:

ρ(tAA) = ρ(A ·t A)

Teorema 22 Sea A una matriz cualquiera, entonces

Limn→∞ k An k= 0⇐⇒ ρ(A) < 1

Demostración:[La-Th] Pg. 80.

Condicionamiento de una matriz

El condicionamiento de una matriz es un número quenos indica la ”bondad” o buen comportamiento numéricode la matriz cuando se trabaja con ella numéricamente.Para ilustrar de qué estamos hablando, veamos el sigu-iente ejemplo:

Ejemplo 15 Consideremos el siguiente sistema de ecua-ciones ⎛⎜⎜⎝

10 7 8 77 5 6 58 6 10 97 5 9 10

⎞⎟⎟⎠⎛⎜⎜⎝

xyzv

⎞⎟⎟⎠ =

⎛⎜⎜⎝32233331

⎞⎟⎟⎠cuya solución es (1, 1, 1, 1). Vamos a considerar ahora elmismo sistema, perturbando ligeramente el término inde-pendiente:

⎛⎜⎜⎝10 7 8 77 5 6 58 6 10 97 5 9 10

⎞⎟⎟⎠⎛⎜⎜⎝

xyzv

⎞⎟⎟⎠ =

⎛⎜⎜⎝32.122.933.130.9

⎞⎟⎟⎠La solución de este sistema es (9.2,−12.6, 4.5,−1.1).

Como podemos observar, a pesar de que la perturbacióndel sistema es del orden de 0.1, la perturbación de la solu-ción del sistema puede llegar a ser del orden de 13.6.

Consideremos de forma genérica un sistema de ecua-ciones 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 lasolución del sistema a partir del error relativo en el tér-mino independiente b. Es decir, queremos encontrar unaestimación del tipo

k δu kk u k ≤ χ(A)

k δb kk b k

donde χ(A) es un número que llamaremos condi-cionamiento de la matriz. Obviamente, cuanto más pe-queño sea χ(A), mejor comportamiento numérico tendrála matriz A.

Teorema 23 Si definimos

χ(A) =k A k · k A−1 k

entoncesk δu kk u k ≤ χ(A)

k δb kk b k

Demostración: Como A(u + δu) = b + δb y Au = b, seobtiene que Aδu = δb, de donde δu = A−1δb y, por tanto,

kδuk ≤°°A−1°° kδbk

Por otro lado, también se cumple que

kbk = kAuk ≤ kAk kuk

de donde obtenemos que

1

kuk ≤kAkkbk

Así, multiplicando esta desigualdad con la anterior-mente obtenida para kδuk , concluimos la demostracióndel teorema.

Problema 84 (2 puntos) Demostrar que, si los autovec-tores de una matriz A de dimensión NxN forman una baseortonormal de RN , entonces, para la norma 2, se cumpleque

χ(A) =k A k2 · k A−1 k2=maxi| λi |mini| λi |

Nota: En el caso del ejemplo 15 los autovalores de lamatriz son 0.01, 0.84, 3.86, y 30.29, por tanto el condi-cionamiento sería

χ(A) =30.29

0.01= 3029

lo cual indica un condicionamiento bastante malo.

Problema 85 (2 puntos) Calcular el condicionamientopara la norma 2, de las siguientes matrices:

A =

⎛⎝ 2 2 −22 1 1−2 1 1

⎞⎠

A =

⎛⎝ 2 −1 0−1 2 −10 −1 2

⎞⎠

Cálculo de autovalores y autovectores

En esta sección veremos algunos métodos elementales parael cálculo de autovalores y autovectores de matrices.

3 3

Page 34: Apuntes Analisis Numerico

Método de Jacobi

Este método se aplica a matrices reales y simétricas. Sebasa en el hecho de que, dadas dos matrices A y R, severifica que los autovalores de A son los mismos que losautovalores de R−1AR. Este método intenta diagonalizarA realizando transformaciones del tipo R−1AR.

Problema 86 (2 puntos) Sean las matrices A y R. De-mostrar que la matriz A y la matriz B = R−1AR poseenlos mismos autovalores

Problema 87 (2 puntos) Se considera la matriz

A =

µ1 11 1

¶calcular el ángulo α tal que la matriz

R =

µcosα sinα− sinα cosα

¶verifique que la matriz B = R−1AR sea diagonal.

En el método de Jacobi se utilizan las denominadasmatrices de rotación, que tienen la forma siguiente:

Rpq(α) =

⎛⎜⎜⎜⎜⎜⎜⎜⎜⎝

1 0 0 0 0 0 00 1 . . . . 00 . cosα . sinα . 00 . . 1 . . 00 . − sinα . cosα . 00 . . . . 1 00 0 0 0 0 0 1

⎞⎟⎟⎟⎟⎟⎟⎟⎟⎠donde los cosenos y senos están situados en las columnasy filas p y q. Al ser una matriz de rotación, se verificaque (Rpq(α))

−1=t Rpq(α). Al realizar la operación A0 =t

Rpq(α)ARpq(α), sólo se ven afectadas las filas y columnasde índices p y q.Además, la matrizA0 también es simétrica.Concretamente, si A es una matriz simétrica, los cambiosque se producen en A0 son los siguientes:

a0pq =(app − aqq)

2sin 2α+ apq cos 2α

a0pp = app cos2 α+ aqq sin

2 α− apq sin 2α

a0qq = app sin2 α+ aqq cos

2 α+ apq sin 2α

a0pj = apj cosα− aqj sinα j 6= p, q

a0qj = apj sinα+ aqj cosα j 6= p, q

El método de Jacobi se basa en ir modificando la ma-triz A mediante el procedimiento anterior, haciendo 0 loselementos no diagonales mayores en módulo. Para anularun valor a0pq, basta con elegir α tal que

(app − aqq)

2sin 2α+ apq cos 2α = 0

Es decir,

cot(2α) =cos 2α

sin 2α=(aqq − app)

2apq

Ejemplo 16 Consideremos la matriz⎛⎝ 2 −1 0−1 2 −10 −1 2

⎞⎠Para convertir en 0 el elemento a12 = −1 de la matriz,

debemos elegir α tal que

cot(2α) =(a22 − a11)

2a12= 0

De donde α = −π4 . Por tanto, la matriz R12 es

R12 =

⎛⎝ 1√2− 1√

20

1√2

1√2

0

0 0 1

⎞⎠y al hacer la operación Rt

12AR12 obtenemos⎛⎝ 1.0 0 −. 707 1070 3.0 −. 707 107

−. 707 107 −. 707 107 2.0

⎞⎠Para evitar tener que evaluar funciones trigonométri-

cas, que son costosas computacionalmente, y simpli-ficar el algoritmo, podemos apoyarnos en las igualdadestrigonométricas dadas en el siguiente problema:

Problema 88 (3 puntos) Demostrar las siguientesigualdades trigonométricas:

tan(α) = − cot(2α) + sign(cot(2α))q1 + cot2(2α)

donde α ∈¡−π4 ,

π4

¢, sign(x) = 1 si x ≥ 0 y sign(x) = −1

si x < 0,

cosα =1p

1 + tan2(α)

sinα = tan(α) cosα

cot(2α) =− tan(α) + sin(2α)

2 sin2(α)

Utilizando las anteriores igualdades trigonométricas,la transformación de la matriz A mediante el método deJacobi se puede escribir como

a0pq = 0

a0pp = app − tan(α)apqa0qq = aqq + tan(α)apq

a0pj = apj cosα− aqj sinα j 6= p, q

a0qj = apj sinα+ aqj cosα j 6= p, q

3 4

Page 35: Apuntes Analisis Numerico

Problema 89 (3 puntos) Dentro del método de Jacobipara el cálculo de autovalores, demostrar las igualdadessiguientes:

a0pq = 0

a0pp = app − tan(α)apqa0qq = aqq + tan(α)apq

a0pj = apj cosα− aqj sinα j 6= p, q

a0qj = apj sinα+ aqj cosα j 6= p, q

Veamos ahora la convergencia del método de Jacobipara el cálculo de autovalores.

Teorema 24 Sea una matriz A simétrica. Sea A1 = A,y sea Ak la matriz transformada de Ak−1, haciendo ceroel elemento no diagonal mayor en módulo de la matrizAk−1, entonces los elementos diagonales de la matriz Ak

convergen (k → ∞) hacia los autovalores de la matriz A.Además los elementos no diagonales de A convergen hacia0.

Demostración: [La-The] Pg. 576-577.

Algoritmo del Método de Jacobi para el Cálculode autovalores.

Los parámetros de entrada son la matriz simétricaA, su dimensión DIM, el número máximo de iteracionesNmax y la tolerancia TOL para decidir cuándo son ceroslos elementos no diagonales.

PARA n = 1, .., N max HACERp = 2q = 1R = ABS(A(p, q))PARA i = 3, ...,DIM HACERPARA j = 1, ..., i− 1 HACERIF ABS(A(i, j)) > R HACERR = ABS(A(i, j))p = jq = i

FIN IFFIN PARA j

FIN PARA iIF R < TOL HACERPROCEDIMIENTO TERMINADO CORREC-

TAMENTE.LOS AUTOVALORES SE ENCUENTRAN EN

LA DIAGONAL DE A.SALIR

FIN IFC = (A(q, q)−A(p, p))/(2 ∗A(p, q))IF C < 0 HACERT = −C − SQRT (1.+ C ∗ C)

ELSET = −C + SQRT (1.+ C ∗ C)

FIN IFCO = 1./SQRT (1.+ T ∗ T )SI = CO ∗ TPARA j = 1, ...,DIM HACERIF ( j 6= p AND j 6= q) HACERD = 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 IFFIN PARA jA(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 nPROCEDIMIENTO TERMINADO INCORRECTA-

MENTENÚMERO DE ITERACIONES MÁXIMO EXCE-

DIDO

Veamos ahora cómo podemos calcular los autovec-tores. Al utilizar el método de Jacobi, vamos transfor-mando la matriz A multiplicándola por una secuencia dematrices de rotación R1, ...., RM , de tal forma que

R−1M · .... ·R−11 AR1 · .... ·RM = D

donde D es una matriz diagonal que contiene los auto-valores de A en la diagonal. Denotemos por B la matrizB = R1 · .... · RM . Despejando de la anterior igualdadobtenemos que

AB = BD

Si denotamos por bi el vector columna i de la matrizB, de la expresión anterior se obtiene que

Abi = diibi

Es decir, bi es el autovector de A asociado al autovalordii. Por tanto, la matriz B determina los autovectores.Numéricamente, para calcular la matriz B en el algoritmoanterior que calcula los autovalores, añadiremos en cadaiteración las operaciones necesarios para ir obteniendo B.En primer lugar, inicializamos B a la identidad antes deentrar en el bucle. A continuación, en cada iteración hare-mos B = B · Ri.Ahora bien, como Ri es una matriz derotación del tipo Rpq(α), cuando multiplicamos una matrizB por la derecha por una matriz del tipo Rpq(α) (denote-mos por B0 = B ·Rpq(α) el resultado de la multiplicación)podemos observar que lo único que cambia en B son losvectores columnas p y q, que se transforman de la siguientemanera:

b0ip = cos(α)bip − sin(α)biq i = 1, .., N

b0iq = sin(α)bip + cos(α)biq i = 1, .., N

Problema 90 (3 puntos) Utilizar el método de Jacobipara aproximar los autovalores y autovectores de la sigu-iente matriz:

A =

⎛⎝ 2 0 10 1 01 0 1

⎞⎠3 5

Page 36: Apuntes Analisis Numerico

Nota. Para no tener que buscar en cada paso el máximode los elementos no-diagonales de Ak, el algoritmo de Ja-cobi se puede modificar haciendo cero el primer elementoapq que se encuentre que verifique |apq| ≥ TOL.

Práctica 6 (Método de Jacobi para el cálculo deautovalores y autovectores 6 horas)

Desarrollar en Fortran 77 la siguiente función :

• FUNCTION ERROR_VECTORES(U,V,N) : De-vuelve la diferencia entre los vectores U y V, de di-mensión N, utilizando la fórmula :

ERROR_V ECTORES =1

N

NXi=1

ABS(U(i)− V (i))

ABS(U(i)) + 1.

• FUNCTION JACOBI(A,B,N,Nmax,TOL,Niter): Re-aliza el cálculo de los autovalores y autovectores deuna matriz simétrica A por el método de Jacobi. Bes una matriz donde se guardan los autovectores porcolumnas. La función devuelve 0 si termina bien y −1en caso contrario.

• FUNCTION ERROR_AUTOVECTORES(A,AUTOVECTORES,AUTOVALORES,N,Nmax):Para comprobar que los autovalores λi y su au-tovectores xi están bien estimados, compararpara cada autovalor λi, utilizando la función ER-ROR_VECTORES(), los vectores Axi y λixi.Devolver la expresión

ERROR_AUTOV ECTORES =

maxi=1,N

ERROR_V ECTORES(Axi, λxi)

Comprobar los resultados obtenidos con los siguientesejemplos, tomando TOL = 0.0001 y Niter = 1000:

1. A =

⎛⎝ 2 2 −22 1 1−2 1 1

⎞⎠Resultado:⎧⎨⎩⎛⎝ 1−11

⎞⎠⎫⎬⎭ ↔ −2,

⎧⎨⎩⎛⎝ −2−1

1

⎞⎠⎫⎬⎭ ↔

4,

⎧⎨⎩⎛⎝ 011

⎞⎠⎫⎬⎭↔ 2

2. A =

⎛⎝ 2 −1 0−1 2 −10 −1 2

⎞⎠Resultado:

⎧⎨⎩⎛⎝ −10

1

⎞⎠⎫⎬⎭ ↔ 2,

⎧⎨⎩⎛⎝ 1

−√2

1

⎞⎠⎫⎬⎭ ↔ 2 +

√2,

⎧⎨⎩⎛⎝ 1√

21

⎞⎠⎫⎬⎭↔ 2−√2

3. Las matrices de dimensión 10 y 100 del directorio dela asignatura.

4. A =

⎛⎜⎜⎜⎜⎜⎜⎝0 1 6 0 0 01 0 2 7 0 06 2 0 3 8 00 7 3 0 4 90 0 8 4 0 50 0 0 9 5 0

⎞⎟⎟⎟⎟⎟⎟⎠Resultados:

16. 6↔

⎛⎜⎜⎜⎜⎜⎜⎝. 363 27. 626 28. 9011. 176 31.0

. 938 54

⎞⎟⎟⎟⎟⎟⎟⎠ 5. 942 ↔

⎛⎜⎜⎜⎜⎜⎜⎝2. 984 4−. 796 843. 088 8−1. 985 41.0

−2. 165 3

⎞⎟⎟⎟⎟⎟⎟⎠

2. 11↔

⎛⎜⎜⎜⎜⎜⎜⎝−. 593 8−1. 562 80.05 170−. 400 891.0

. 659 86

⎞⎟⎟⎟⎟⎟⎟⎠ − 2. 465 ↔

⎛⎜⎜⎜⎜⎜⎜⎝−1. 746 5. 853 75. 575 36−. 215 571.0

−1. 241 2

⎞⎟⎟⎟⎟⎟⎟⎠

−10. 06↔

⎛⎜⎜⎜⎜⎜⎜⎝. 521 32. 741 24−. 998 09−. 855 21.0

. 268 11

⎞⎟⎟⎟⎟⎟⎟⎠ − 12. 12↔

⎛⎜⎜⎜⎜⎜⎜⎝. 729 18−. 896 18−1. 324 61. 826 81.0

−1. 767 6

⎞⎟⎟⎟⎟⎟⎟⎠Nota: Obsérvese, al comparar los resultados, que los au-tovectores están definidos módulo la multiplicación poruna constante.

Método de la potencia

Teorema 25 Sea una matriz A que posee una base de au-tovectores tal que en módulo su autovalor máximo λmax esúnico. Sea un vector u1 no ortogonal al subespacio engen-drado por los autovectores del autovalor λmax, entonces, sidefinimos la secuencia

un = Aun−1

k un−1 kse verifica que

Limn→∞sign¡¡un, un−1

¢¢k un k= λmax

3 6

Page 37: Apuntes Analisis Numerico

Limn→∞¡sign

¡¡un, un−1

¢¢¢n un

k un k es un autovector de λmax

Además, dicho autovector tiene norma 1.

Teorema 26 sign¡¡un, un−1

¢¢es el signo del producto

escalar de un y un−1, es decir sign¡¡un, un−1

¢¢= 1 si¡

un, un−1¢≥ 0 y sign

¡¡un, un−1

¢¢= −1 si

¡un, un−1

¢<

0.

Demostración. En primer lugar, vamos a demostrar porinducción la siguiente igualdad:

un+1 =Anu1

kAn−1u1k

Para n = 1 la igualdad se cumple por la definición deu2. Supongamos que se cumple para n−1, y demostrémoslopara n:

un+1 = Aun

k un k = A

An−1u1

kAn−2u1kkAn−1u1kkAn−2u1k

=Anu1

kAn−1u1k

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 espaciogenerado por los autovectores asociados a λmax, entoncesu1 se puede escribir como

u1 = µ1x1 + ...+ µNxN

donde supondremos que x1 es un autovector asociado aλmax y que µ1 6= 0. Por la igualdad anteriormente de-mostrada obtenemos que

un =An−1u1

kAn−2u1k =µ1λ

n−1maxx1 + ...+ µNλ

n−1N xN°°µ1λn−2maxx1 + ...+ µNλn−2N xN

°° == |λmax|

µ1

³λmax|λmax|

´n−1x1 + ...+ µN

³λN

|λmax|

´n−1xN°°°°µ1 ³ λmax

|λmax|

´n−2x1 + ...+ µN

³λN

|λmax|

´n−2xN

°°°°Cuando hacemos tender n hacia infinito, todos los co-

cientes de la forma µλi

|λmax|

¶ntienden hacia 0, salvo si λi = λmax. En este caso, dichocociente es 1n, si λmax es positivo, o (−1)n , si λmax es neg-ativo. Por tanto, para n suficientemente grande el signo deλmax coincide con el signo del producto escalar (un, un−1).Además

Limn→∞ kunk =

= |λmax|

°°°°µ1 ³ λmax|λmax|

´n−1x1 + ...+ µN

³λN

|λmax|

´n−1xN

°°°°°°°°µ1 ³ λmax|λmax|

´n−2x1 + ...+ µN

³λN

|λmax|

´n−2xN

°°°° == |λmax|

y por tanto

Limn→∞sign¡¡un, un−1

¢¢k un k= λmax

Por otro lado, el término¡sign

¡¡un, un−1

¢¢¢npara n

suficientemente grande es 1n si λmax es positivo o (−1)nsi λmax es negativo. Sean x1, ...., xM los autovectores aso-ciados a λmax, obtenemos que

Limn→∞¡sign

¡¡un, un−1

¢¢¢n un

k un k =

=µ1x1 + ...+ µMxMkµ1x1 + ...+ µMxMk

que es un autovector de λmax de norma 1.

Problema 91 (3 puntos) Aplicar el método de la po-tencia para aproximar el autovalor máximo y el autovec-tor asociado de las siguientes matrices, realizando 3 it-eraciones en el método, hasta calcular u4 y partiendo deu1 = (1, 1).

A =

µ2 10 1

¶A =

µ−3 01 1

Método de la potencia inversa

El método anterior también se puede utilizar para el cál-culo del autovalor de módulo menor λmin, teniendo encuenta que

λmin =1

maxλ0i autovalores de A−1

Por tanto, si aplicamos el método anterior a A−1,obtenemos que la secuencia

un = A−1un−1

k un−1 k

verifica que

Limn→∞sign¡¡un, un−1

¢¢k un k= 1

λmin

3 7

Page 38: Apuntes Analisis Numerico

Limn→∞sign¡¡un, un−1

¢¢ un

k un k es un autovector de λmin

En los casos prácticos, se evita calcular directamenteA−1, y se obtiene un resolviendo el sistema

Aun =un−1

k un−1 k

Problema 92 (2 puntos) Calcular el autovalor mayor

y el autovector correspondiente de la matrizµ

2 −1−1 1

¶utilizando el método de la potencia, realizando 2 itera-ciones del método a partir de u1 = (1, 1) y tomando comonorma kuk = maxi |ui|.

Problema 93 (2 puntos) Utilizar el método de la po-tencia inversa para aproximar el autovalor menor de lamatriz

A =

µ−2 10 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 calculaprimero una aproximación µ del autovalor λ de tal formaque µ se encuentre más cercano a λ que a cualquier otroautovalor. Por ejemplo, utilizando el método de Jacobi, siconsideramos la matriz A0 = A − µI, donde µ es uno delos elementos diagonales de la matriz que resulta de aplicarel método de Jacobi, entonces se obtiene que el autovalormenor de A0 es justamente λ, y, por tanto, podemos aplicarel método de la potencia inversa anterior. Nótese que si elautovalor µ está calculado con mucha precisión, entoncesel autovalor más pequeño de A0 está muy próximo a 0, ycomo el determinante de una matriz es el producto de susautovalores, ello indicaría que el determinante deA0 estaríamuy próximo a 0 y podemos tener problemas al resolverel sistema utilizado por ejemplo el método de GAUSS através de la función de la librería an.h IGAUSS(). Paraevitar esto, podemos perturbar ligeramente el valor de µpara que IGAUSS() no dé problemas. Algorítmicamente,quedaría como sigue: Si µ es el autovalor que estamostratando, haremos

= 10−11

1 A0 = A− µIdJ = IGAUSS(A0, ......)IF (J.NE.0) THEN

= ∗ 10.µ = µ(1 + )GOTO 1

ENDIF

Problema 94 (3 puntos) Calcular el autovalor y au-tovector más cercano a 2 de la matriz⎛⎝ 0 −1 0

0 3 −10 0 −1

⎞⎠

Para ello, calcular dos iteraciones del método de lapotencia inversa partiendo de u1 = (1, 1, 1).

Métodos iterativos de resolución de sistemas lin-eales

Estas técnicas consisten en transformar un sistema de laforma

Au = b

en una ecuación de punto fijo de la forma

u =Mu+ c

de tal manera que, al hacer iteraciones de la forma

un =Mun−1 + c

se obtenga que un converge hacia u, la solución del sistemaoriginal.

Ejemplo 17 Consideremos el sistema de ecuaciones

2x− y = 1

−x+ 2y − z = 0

−y + 2z = 1

Buscar la solución de este sistema es equivalente a buscarun vector u = (x, y, z) que verifique que

x =1 + y

2

y =x+ z

2

z =1 + y

2

Hacer iteraciones de esta ecuación de punto fijo con-siste en partir de una aproximación inicial (x1, y1, z1) yhacer iteraciones de la forma

xn =1 + yn−1

2

yn =xn−1 + zn−1

2

zn =1 + yn−1

2

En este caso, la solución exacta del sistema es u = (1, 1, 1).Si hacemos iteraciones del esquema anterior a partir de laaproximación inicial u1 = (0, 0, 0), obtenemos que

x2 =1 + 0

2=1

2

y2 =0 + 0

2= 0

z2 =1 + 0

2=1

2

3 8

Page 39: Apuntes Analisis Numerico

De la misma forma, obtenemos que

u3 =

⎛⎝ 0.50.250.5

⎞⎠ .... u8 =

⎛⎝ .84.73.84

⎞⎠ .... u17 =

⎛⎝ .98.96.98

⎞⎠Como puede observarse, las sucesivas iteraciones se vanaproximando a la solución u = (1, 1, 1). En este caso, lamatrizM y el vector c que determinan el esquema iterativovienen dados por

MJ =

⎛⎝ 0 12 0

12 0 1

20 1

2 0

⎞⎠ cJ =

⎛⎝ 12012

⎞⎠

Teorema 27 Si el esquema iterativo

un =Mun−1 + c

converge hacia un vector u, entonces u verifica que

u =Mu+ c

Existen diferentes métodos para convertir un sistemade la forma Au = b en una ecuación de punto fijo u =Mu + c. Todas se basan en descomponer A de la formaA = L+D+U, donde D es la matriz diagonal que corre-sponde a la parte diagonal de A, L es la matriz triangularinferior que corresponde a la parte de A situada por de-bajo de la diagonal, y U es la matriz triangular superiorque corresponde a la parte de A situada por encima de ladiagonal.

Método de Jacobi

Este método consiste en tomar

MJ = D−1(−L− U)

cJ = D−1b

Es el que se ha utilizado en el ejemplo anterior. Elpaso de una iteración a otra del método de Jacobi puedeexpresarse de la siguiente forma:

un1 =−a12un−12 − ...− a1Nu

n−1N + b1

a11

un2 =−a21un−11 − a23u

n−13 ...− a2Nu

n−1N + b2

a22.

unN =−aN1un−11 − aN2u

n−12 ...− aNN−1u

n−1N−1 + bN

aNN

Problema 95 (3 puntos) Escribiren Fortran las funciones siguientes:SIGNO_PRODUCTO_ESCALAR(uf,vf,Nf) que

devuelve el signo del producto escalar de los vec-tores uf y vf de dimensión Nf (12 líneas decódigo como máximo), y la función AUTO-VALOR_MAXIMO(Af,uf,Nf,Nfmax,Nfiter,Tolf) quedevuelve el autovalor máximo de una matriz y su au-tovector por el método de la potencia. Los parámetrosson la matriz Af, el vector candidato inicial uf, Nf ladimensión real, Nfmax, la dimensión para coger memoria,Nfiter número máximo de iteraciones, y Tolf la tolerancia.Esta función devuelve el valor 2.**120 si no terminacorrectamente. Tomar como norma kuk =

PiABS(ui)

(28 líneas de código como máximo).

Problema 96 (2 puntos) Calcular 3 iteraciones delmétodo de Jacobi para resolver el sistema⎛⎝ 1 −1 0

−1 2 00 −1 3

⎞⎠⎛⎝ xyz

⎞⎠ =

⎛⎝ −131

⎞⎠partiendo de u1 = (0, 0, 0)

Método de Gauss-Seidel

Este método consiste en tomar

MGS = (D + L)−1(−U)

cGS = (D + L)−1

b

A efectos prácticos, la aplicación de este método norequiere el cálculo directo de la matriz inversa (D + L)−1 ,puesto que el paso de una iteración a otra puede hacersede la siguiente forma:

un1 =−a12un−12 − ...− a1Nu

n−1N + b1

a11

un2 =−a21un1 − a23u

n−13 ...− a2Nu

n−1N + b2

a22.

unN =−aN1un1 − aN2u

n2 ...− aNN−1u

nN−1 + bN

aNN

Si hacemos un barrido para el cálculo de la soluciónde arriba hacia abajo, y vamos actualizando las compo-nentes del vector aproximación según las vamos calcu-lando, obtenemos el método de Gauss-Seidel. Por tanto,básicamente, podemos decir que la diferencia entre elmétodo de Gauss-Seidel y el método de Jacobi es que enel método de Gauss-Seidel se actualiza el vector aproxi-mación después del cálculo de cada componente, y en elcaso de Jacobi se actualiza sólo al final, después de habercalculado todas las componentes por separado.

Ejemplo 18 Vamos a aplicar el método de Gauss-Seidelal sistema del ejemplo anterior, es decir

2x− y = 1

−x+ 2y − z = 0

−y + 2z = 1

3 9

Page 40: Apuntes Analisis Numerico

Las iteraciones del método de Gauss-Seidel aplicadoa este sistema consisten en

xn =1 + yn−1

2

yn =xn + zn−1

2

zn =1 + yn2

Si hacemos iteraciones del esquema anterior a partir de laaproximación inicial u1 = (0, 0, 0), obtenemos que

x2 =1 + 0

2=1

2

y2 =12 + 0

2=1

4

z2 =1 + 1

4

2=5

8

De la misma forma, obtenemos que

u3 =

⎛⎝ . 5. 25. 625

⎞⎠ .... u8 =

⎛⎝ . 976 56. 976 56. 988 28

⎞⎠

Problema 97 (2 puntos) Calcular una base ortogonal

de autovectores de la matriz

⎛⎝ 1 0 10 2 01 0 1

⎞⎠

Problema 98 (2 puntos) Calcular 3 iteraciones delmétodo de Gauss-Seidel para resolver el sistema⎛⎝ 1 −1 0

−1 2 00 −1 3

⎞⎠⎛⎝ xyz

⎞⎠ =

⎛⎝ −131

⎞⎠partiendo de u1 = (0, 0, 0)

Problema 99 (1 punto) Una variante del método deGauss-Seidel consiste en tomar M = (D + U)−1 (−L), yc = (D + U)

−1b. Indicar, en este caso, qué diferencias de

implementación habría con respecto al caso anterior.

Método de relajación

El objetivo de este método es intentar mejorar el métodode Gauss-Seidel introduciendo un parámetro de relajaciónw. Se toman, en este caso,

Mw = (D + wL)−1((1− w)D − wU)

cw = w (D + wL)−1 b

Estas nuevas matrices permiten realizar un prome-diado entre el resultado obtenido por Gauss-Seidel y el

estado de la solución en la etapa anterior, de la formasiguiente:

un1 = w−a12un−12 − ...− a1Nu

n−1N + b1

a11+ (1− w)un−11

un2 = w−a21un1 ...− a2Nu

n−1N + b2

a22+ (1− w)un−12

.

unN = w−aN1un1 ...− aNN−1u

nN−1 + bN

aNN+ (1− w)un−1N

La elección del parámetro w es, en general, un prob-lema difícil. Sin embargo, en el caso de matrices tridiag-onales, es decir, matrices con todos los elementos nulossalvo la diagonal principal y sus codiagonales, el siguienteresultado muestra la forma de calcular el valor óptimo dew.

Teorema 28 Si A es una matriz tridiagonal y ρ(MJ) < 1,entonces el valor de w que optimiza la velocidad de con-vergencia del método es:

wopt =2

1 +p1− ρ(MJ)2

Como puede observarse de la expresión anterior, elvalor de wopt se encuentra siempre entre 1 y 2.Demostración [La-Th]. Pg.358-362.

Ejemplo 19 Vamos aplicar el método de relajación al sis-tema del ejemplo anterior, es decir

2x− y = 1

−x+ 2y − z = 0

−y + 2z = 1

En este caso, ρ(MJ) =1√2y wopt = 1. 17. Las it-

eraciones del método de relajación aplicado a este sistemaconsisten en

xn = w1 + yn−1

2+ (1− w)xn−1

yn = wxn + zn−1

2+ (1− w)yn−1

zn = w1 + yn2

+ (1− w)zn−1

Si hacemos iteraciones del esquema anterior a partirde la aproximación inicial u1 = (0, 0, 0) y tomando w =wopt = 1.17, obtenemos que

u2 =

⎛⎝ . 585. 342. 785

⎞⎠ .... u3 =

⎛⎝ . 686. 802. 921

⎞⎠ ... u8 =

⎛⎝ . 999. 999. 999

⎞⎠

4 0

Page 41: Apuntes Analisis Numerico

Problema 100 (3 puntos) Calcular 3 iteraciones delmétodo de relajación para resolver el sistema⎛⎝ 1 −1 0

−1 2 00 −1 3

⎞⎠⎛⎝ xyz

⎞⎠ =

⎛⎝ −131

⎞⎠partiendo de u1 = (0, 0, 0). Calcular previamente elparámetro de relajación óptimo.

Convergencia de los métodos iterativos

Vamos a denotar por en = un − u el error relativo entrela solución del sistema u y la aproximación en la etapa n,un.

Teorema 29 Se considera el esquema iterativo un =Mun−1 + c. Entonces

en =Mn−1e1

Demostración: La solución del sistema satisface que u =Mu + c. Restando esta igualdad de la igualdad un =Mun−1 + c, obtenemos que

un − u =M(un−1 − u) =Mn−1(u1 − u)

Teorema 30 El método iterativo un = Mun−1 + c con-verge para cualquier aproximación inicial si y sólo siρ(M) < 1.

Demostración: El resultado es inmediato a partir delhecho de que una matriz Mn converge hacia 0 cuandon→∞ si y sólo si ρ(M) < 1

Teorema 31 Si en el método de relajación w /∈ (0, 2),entonces ρ(Mw) ≥ 1.

Demostración: En primer lugar, observamos que las ma-trices D+Lw y (1−w)D−wU son matrices triangulares y,por tanto, su determinante es el producto de los elementosdiagonales. Además, teniendo en cuenta que el determi-nante del producto de dos matrices es el producto de susdeterminantes y que el determinante de la matriz inversaes el inverso del determinante, obtenemos que

|Mw| =|(1− w)D − wU ||(D + wL)| =

(1− w)NΠiaiiΠiaii

Por lo tanto, como el determinante de una matriz esel producto de sus autovalores, obtenemos que, si w /∈(0, 2), entonces |1− w| ≥ 1 y, en consecuencia, Mw poseeal menos un autovalor de módulo mayor o igual que uno.

Teorema 32 Si una matriz A verifica que

| aii |>Xj 6=i

| aij | ∀i.

o| ajj |>

Xi6=j

| aij | ∀j.

entonces el método de Jacobi asociado al sistema Au = bconverge para cualquier aproximación inicial.

Demostración: En primer lugar, observamos que la ma-triz MJ puede expresarse como:⎛⎜⎜⎜⎜⎜⎝

0 −a12a11

−a13a11

. −a1Na11

−a21a22

0 −a23a22

. −a2Na22

. . . . .− aN−1,1

aN−1,N−1− aN−1,2

aN−1,N−1. 0 − aN−1,N

aN−1,N−1

− aN,1aN,N

− aN,2aN,N

. −aN,N−1aN,N

0

⎞⎟⎟⎟⎟⎟⎠Teniendo en cuenta que las normas 1 e infinito de una

matriz son el máximo de las sumas por filas o columnas envalor absoluto, se tiene, por las condiciones del teorema,que kMJk < 1 para la norma 1 o infinito. Por tanto,el teorema se concluye teniendo en cuenta que cualquiernorma de una matriz es siempre mayor o igual que su radioespectral.

Este resultado se puede generalizar un poco al casode matrices irreducibles de la siguiente forma:

Definición 9 Una matriz A es irreducible si un sistemade la forma Au = b no puede descomponerse en dos sub-sistemas independientes de dimensión menor

Dicho de otra forma, una matriz es irreducible si elcambio de cualquier valor del vector b del sistema Au = bafecta a todos los elementos del vector u.

Teorema 33 Si A es una matriz irreducible y se verificaque

| aii |≥Xj 6=i

| aij | ∀i.

o| ajj |≥

Xi6=j

| aij | ∀j.

con la desigualdad estricta en al menos una fila o columna,entonces los métodos iterativos convergen.

Demostración. [La-The] Pg.346-347.

Ejemplo 20 La matriz del sistema ejemplo tratado ante-riormente, esto es ⎛⎝ 2 −1 0

−1 2 −10 −1 2

⎞⎠satisface las hipótesis del Teorema anterior.

4 1

Page 42: Apuntes Analisis Numerico

Problema 101 (2 puntos) Escribir enFortran la función siguiente: CONDI-CIONAMIENTO(Af,Nf,Nfmax,TOLf,Nfiter) que devuelveel condicionamiento de una matriz utilizando el método deJacobi para calcular los autovalores. Se supondrá imple-mentada la función JACOBI(A,N,Nmax,TOL,Niter) quedevuelve 0 si termina bien y 1 si termina mal. La funciónCONDICIONAMIENTO devuelve 2.*120 si termina malporque Jacobi da un error o se produce una división porcero. Los parámetros son la matriz Af, Nf la dimensiónreal, Nfmax, la dimensión para coger memoria, Nfiternúmero máximo de iteraciones, y Tolf la tolerancia (21líneas de instrucciones como máximo).

Problema 102 (2 puntos) Demostrar que, si una ma-triz A verifica que por filas o columnas su suma es siempreigual a 0, entonces el determinante de A es cero, y portanto el sistema asociado a A no tiene solución.

Problema 103 (3 puntos) Dado un sistema iterativo

un =Mun−1 + c

Demostrar que, aunque el radio espectral de M seamayor que 1, si u1 y c son combinaciones lineales de au-tovectores deM correspondientes a autovalores de módulomenor que 1, entonces el método converge.

Práctica 7 (Método de relajación, 2 horas)

Desarrollar una función en Fortran 77 donde se implementeel método de relajación. Los parámetros de la funciónserán: la matriz A, el vector b, un vector u donde se alma-cenará la solución, y que inicialmente será el vector aprox-imación inicial, que por defecto se tomará 0, el parámetrode relajación w, el número máximo de iteraciones N max,y la tolerancia TOL para evaluar la diferencia entre un yun−1. La función devolverá el número de iteraciones nece-sarias para alcanzar la solución. Si el método no convergedevuelve −1. Comparar la diferencia en la velocidad deconvergencia entre el método de Gauss-Seidel y el Métodode relajación. Probar el método para los sistemas

1.

⎛⎝ 1 −1 0−1 2 00 −1 3

⎞⎠⎛⎝ xyz

⎞⎠ =

⎛⎝ −131

⎞⎠

2.

⎛⎝ 2 −1 0−1 2 −10 −1 2

⎞⎠⎛⎝ xyz

⎞⎠ =

⎛⎝ 101

⎞⎠

3.

⎛⎝ 1 3 33 1 33 3 1

⎞⎠⎛⎝ xyz

⎞⎠ =

⎛⎝ 777

⎞⎠

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

Método de Newton-Raphson para sistemas deecuaciones no lineales

En las aplicaciones reales, muchas veces nos encontramoscon sistemas no lineales de ecuaciones. Por ejemplo, cal-cular las raíces, reales o complejas, de un polinomio degrado 2 dado por P2(z) = az2 + bz + c, donde z = x+ yi,es equivalente a resolver el sistema

ax2 + bx− ay2 + c = 0

2ayx+ by = 0

que es un sistema no lineal de ecuaciones. En general, unsistema no lineal de ecuaciones de dimensión N, se escribecomo 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 función de<N → <N , y u = (u1, ...., uN). El método de Newton-Raphson para sistemas de ecuaciones se basa en desarrollarpor Taylor la función f y truncar el desarrollo para quequede un sistema lineal, es decir

f(u) = f(u0) +∇f(u0)¡u− u0

¢+O

¡k u− u0 k2

¢donde u0 es una aproximación de la solución de f(u) = 0.Si truncamos el desarrollo e igualamos a 0 (para aproximarla raíz) obtenemos que la raíz del sistema lineal se obtieneresolviendo el sistema

∇f(u0)z = −f(u0)u1 = u0 + z

En el caso general, a partir de una aproximación un

se obtiene la aproximación un+1 en dos etapas:

∇f(un)z = −f(un)un+1 = un + z

Ejemplo 21 Consideremos el siguiente sistema no linealde ecuaciones:

x2 − y2 + 1 = 0

2xy = 0

La matriz gradiente de esta función viene dada por

∇f(un) =µ2x −2y2y 2x

4 2

Page 43: Apuntes Analisis Numerico

Tomemos como aproximación inicial u1 = (1, 1). El sis-tema que hay que resolver para pasar de una iteración aotra esµ

2xn −2yn2yn 2xn

¶µz1z2

¶= −

µx2n − y2n + 12ynxn

¶Si partimos de u1 = (1, 1), para obtener u2 tenemos queresolver µ

2 −22 2

¶µz1z2

¶=

µ−1−2

¶que tiene por solución

¡−34 ,−

14

¢. Por tanto, u2 viene dado

por

u2 =

µ11

¶+

µ−34−14

¶=

µ1434

¶Para calcular u3, tenemos que resolver el sistemaµ

12 −3232

12

¶µz1z2

¶= −

µ ¡14

¢2 − ¡34¢2 + 1616

¶cuya solución es

¡−1340 ,−

940

¢. Por tanto, u3 viene dado por

u3 =

µ1434

¶+

µ−1340940

¶=

µ− 3403940

¶que ya es una buena aproximación de la solución exactadada por el vector (0, 1).

Problema 104 (3 puntos) Calcular 2 iteraciones delmétodo de Newton-Raphson no lineal para aproximar unaraíz del sistema de ecuaciones

x2 + y2 − 1 = 0

y − x = 0

partiendo de (x, y) = (1, 1).

Problema 105 (2 puntos) Plantear el algoritmo nece-sario para calcular, utilizando el método de Newton-Raphson, las raíces complejas o reales de un polinomio degrado 3.

Problema 106 (2 puntos) Se considera el sistema nolineal

(x− 1)y = 0

(y − 2)x = 0

A partir de u1 = (1, 1), calcular u2 y u3 utilizando elmétodo de Newton-Raphson para aproximar un cero delsistema no lineal.

Problema 107 (2 puntos) Calcular una iteración delmétodo de Newton-Raphson no lineal para aproximar unaraíz del sistema de ecuaciones

exyz − 1 = 0

y2 − z3 − 2 = 0

(z − 1)x4 − 3 = 0

partiendo de (x, y, z) = (1, 1, 1).

INTERPOLACIÓN DE FUNCIONES II

Esta sección es la continuación natural del tema interpo-lación de funciones visto anteriormente. Por motivos decoordinación entre los programas teórico y práctico de laasignatura, el tema de interpolación de funciones se dividióen dos partes, siendo ésta la segunda parte.

Interpolación de Hermite

En ocasiones, resulta de interés interpolar no sólo el valorde la función en ciertos puntos xii=0,..,N , sino tambiénel valor de sus derivadas. Un ejemplo clásico de ello esel desarrollo de Taylor de una función en un punto a. Eneste caso, aproximamos f(x) por un polinomio de gradoN ,PN (x) tal que f(x) y PN (x) poseen las mismas derivadasen el punto a desde el orden 0 hasta el orden N.

PN (x) = f(a) +f 0(a)

1!(x− a) + ..+

fN)(a)

N !(x− a)N

El error de interpolación viene dado por la fórmula

f(x)− PN (x) =fN+1)(ξ)

(N + 1)!(x− a)N+1

donde ξ es un valor intermedio entre x y a. En el casogeneral, donde buscamos un polinomio P (x) tal que él ytodas sus derivadas hasta un cierto ordenM coincidan conuna función f(x) en los puntos xii=0,..,N , se utilizan losdenominados polinomios base de Hermite Hi,j(x), que sonpolinomios de grado menor o igual que (N +1)(M +1)−1dados por las siguientes condiciones:

∂lHi,j

∂xl(xk) =

½1 si l = j y k = i0 l 6= j o k 6= i

A partir de los polinomios base de Hermite, el poli-nomio interpolador de Hermite se define como:

P (x) =NXi=0

MXj=0

∂jf

∂xj(xi)Hi,j(x)

Problema 108 (3 puntos) Calcular los polinomios basede Hermite que corresponden a tomar como puntos de in-terpolación x0 = −1, x1 = 1, y el orden de derivaciónM = 1.

Interpolación por splines cúbicos

Uno de los problemas básicos del polinomio interpoladorde Lagrange, es que, para valores grandes de N, los poli-nomios de grado N pueden tener un carácter fuertementeoscilante, y los resultados obtenidos por la interpolaciónpueden no ser muy satisfactorios, como indica el ejemplosiguiente.

4 3

Page 44: Apuntes Analisis Numerico

Ejemplo 22 El polinomio base de Lagrange centrado en0 sobre los puntos xi = −5,−4,−3,−2,−1, 0, 1, 2, 3, 4, 5 es

P 0(x) =(x2 − 1)(x2 − 4)(x2 − 9)(x2 − 16)(x2 − 25)

−14400

Tiene un marcado carácter oscilante como muestra sugráfica en el intervalo [−5, 5].

Ejemplo 23

(x2 − 1)(x2 − 4)(x2 − 9)(x2 − 16)(x2 − 25)−14400 =

52.50-2.5-5

5

3.75

2.5

1.25

0

x

y

x

y

Para evitar este problema de oscilaciones de los poli-nomios de Lagrange, cuando se trabaja con muchos puntosde interpolación, se suele interpolar la función utilizandopolinomios a trozos, definiendo un polinomio distinto paracada intervalo [xi, xi+1]. La técnica más conocida es lainterpolación por splines cúbicos, que son polinomios degrado 3. Por tanto, tendremos un polinomio de grado 3 dis-tinto P i

3(x) = di(x−xi)3+ci(x−xi)2+bi(x−xi)+ai paracada intervalo [xi, xi+1]. Si hay N+1 puntos, el número depolinomios es N. Para definir estos polinomios, se imponenlas siguientes condiciones:

P i3(xi) = f(xi) i = 0, .., N − 1

P i3(xi+1) = f(xi+1) i = 0, ..., N − 1

∂P i3

∂x(xi+1) =

∂P i+13

∂x(xi+1) i = 0, .., N − 2

∂2P i3

∂x2(xi+1) =

∂2P i+13

∂x2(xi+1) i = 0, ..., N − 2

Vamos a introducir la notación hi =xi+1 − xi. Nótese que, para definir los poli-nomios, tenemos que buscar 4N valores, es decir:a0, ...., aN−1, b0, ..., bN−1, c0, ....., cN−1,d0, ...., dN−1.

Por razones técnicas, como veremos posteriormente,vamos a utilizar también los valores aN y cN .

Teorema 34 Si una familia de polinomios P i3(x) = di(x−

xi)3 + ci(x − xi)

2 + bi(x − xi) + ai, i = 0, .., N, satisface

las condiciones anteriores, entonces

ai = f(xi) i = 0, ..,N

di =ci+1 − ci3hi

i = 0, .., N − 1

bi =ai+1 − ai

hi− hi (2ci + ci+1)

3i = 0, .., N − 1

hi−1ci−1 + 2(hi−1 + hi)ci + hici+1 =

=3(ai+1 − ai)

hi− 3 (ai − ai−1)

hi−1

para i = 1, .., N − 1.

Demostración De la condición P i3(xi) = f(xi), se ob-

tiene de forma inmediata que ai = f(xi). De la condición∂2P i+1

3

∂x2 (xi+1) =∂2P i

3

∂x2 (xi+1), se obtiene que

2ci+1 = 6dihi + 2ci

de donde, despejando, obtenemos que

di =ci+1 − ci3hi

De la Condición P i3(xi+1) = f(xi+1), se obtiene que

dih3i + cih

2i + bihi + ai = ai+1

Despejando, obtenemos que

bi =ai+1 − ai

hi− dih

2i − cihi =

ai+1 − aihi

− hi (2ci + ci+1)

3

Finalmente, de la condición ∂P i3

∂x (xi) =∂P i−1

3

∂x (xi), seobtiene que

bi = 3di−1h2i−1 + 2ci−1hi−1 + bi−1

y, despejando todo en función de ci, se obtiene la relación

hi−1ci−1 + 2(hi−1 + hi)ci + hici+1 =

=3(ai+1 − ai)

hi− 3 (ai − ai−1)

hi−1

Nótese que esta última relación determina un sistemade ecuaciones donde las incógnitas son las variables ci. Di-cho sistema tiene N+1 incognitas (c0, ..., cN ) y N−1 ecua-ciones. Para completar dicho sistema, hay que añadir unaecuación que involucre a c0 y otra ecuación que involucrea cN . Para añadir estas dos ecuaciones hay dos proced-imientos estándares. El primero consiste simplemente enfijar c0 = cN = 0, lo que significa que

c0 =∂2P 03∂x2

(x0) = 0

cN =∂2PN−1

3

∂x2(xN ) = 0

4 4

Page 45: Apuntes Analisis Numerico

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

∂P 03∂x

(x0) = f 0(a)

∂PN−13

∂x(xN ) = f 0(b)

de donde salen las ecuaciones

f 0(a) =a1 − a0h0

− h03(2c0 + c1)

f 0(b) =aN − aN−1

hN−1− hN−1

3(2cN−1 + cN )

Por lo tanto, siguiendo con el resultado del teoremaanterior, para calcular los splines cúbicos es necesario, enprimer lugar, tomar ai = f(xi).A continuación, se resuelveun sistema de ecuaciones tridiagonal para el cálculo de losci. Los bj y dj se calculan directamente a partir de lasrelaciones mostradas en el teorema anterior.

Ejemplo 24 Vamos a calcular los polinomios interpo-ladores utilizando splines cúbicos al interpolar la funciónf(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. Eneste caso hi = 1. Debemos definir 3 polinomios distintosque corresponden a los intervalos [0, 1], [1, 2], y [2, 3]. Lostérminos ai vienen dados por

⎛⎜⎜⎝a0a1a2a3

⎞⎟⎟⎠ =

⎛⎜⎜⎝0102

⎞⎟⎟⎠

El sistema que debemos resolver para calcular los cies

Ejemplo 25µ4 11 4

¶µc1c2

¶=

µ−69

¶cuya solución esµ

c1c2

¶=

µ−2.22.8

¶.

Los valores bi y di vienen dados por

d0 =−2.2− 0

3= −0.733

d1 =2.8 + 2.2

3= 1.667

d2 =0.− 2.83

= −0.933

b0 = 1− −2.23

= 1.733

b1 = −1− −4.4 + 2.83

= −0.467

b2 = 2− 5.6 + 03

= 0.133

Por tanto, los polinomios son

P0(x) = −0.733x3 + 1.733xP1(x) = 1.667 (x− 1)3 − 2.2 (x− 1)2

−0.467 (x− 1) + 1P2(x) = −0.933 (x− 2)3 + 2.8 (x− 2)2 + 0.133 (x− 2)

A continuación se muestra una gráfica con los 3 poli-nomios concatenados en el intervalo [0, 3] :

Como puede observarse, por las condiciones sobre lasderivadas que hemos impuesto, no es posible distinguir ge-ométricamente, al trazar la curva, cuales son los puntos deunión entre los tres polinomios. Es decir, parece, a simplevista, el trazado de una única función. Veamos ahora grá-ficamente el perfil de la derivada de los polinomios P0(x),P1(x), y P2(x).

32.752.52.2521.751.51.2510.750.50.250

2.752.5

2.252

1.751.5

1.251

0.750.5

0.250

-0.25-0.5

-0.75-1

-1.25

x

y

x

y

como puede observarse, tampoco sobre la derivada se apre-cian los puntos de unión de los polinomios. Sin embargo,sobre la gráfica de la derivada segunda los puntos de uniónse detectan en los lugares donde encontramos un pico, taly como se muestra en la gráfica de la derivada segundasiguiente:

32.752.52.2521.751.51.2510.750.50.250

5

4

3

2

1

0

-1

-2

-3

-4

x

y

x

y

4 5

Page 46: Apuntes Analisis Numerico

Problema 109 (3 puntos) Calcular los polinomios quedeterminan la interpolación por splines cúbicos de la fun-ción f(x) = sin

¡π2x¢para los puntos x = −1, 0, 1 y 2.

La interpolación a través de la función seno cardi-nal

Una base de funciones interpolantes muy utilizada en lateoría de Fourier es la base formada a partir de la funciónseno cardinal, definida por

sin c(x) =sin(x)

x

cuya gráfica es

50250-25-50

1

0.75

0.5

0.25

0

x

y

x

y

Esta función tiene la propiedad de que en x = 0,sin c(0) = 1, y para cualquier entero i distinto de 0,sin c(πi) = 0. Dada una función f(x), su función inter-polante en los puntos xi = a · i para i = M, ..., N vienedada por la función

ef(x) = NXi=M

f(xi)sin(π

¡xa − i

¢)

π¡xa − i

¢

Ejemplo 26 Consideremos la función f(x), definida enlos puntos x = 0, 1, 2, y 3, tal que f(0) = 0, f(1) = 1,f(2) = 0, f(3) = 2. La interpolación de esta función uti-lizando la función seno cardinal viene dada por la función

ef(x) = sin(π (x− 1))π(x− 1) + 2

sin(π (x− 3))π(x− 3)

cuya gráfica es

32.521.510.50

2

1.5

1

0.5

0

x

y

x

y

Ejemplo 27 Vamos a comparar gráficamente el resultadode interpolar la función del ejemplo anterior utilizandola interpolación de Lagrange normal, la interpolación porsplines cúbicos y la interpolación a través de la funciónseno cardinal. El polinomio interpolador de Lagrange sepuede calcular fácilmente y da como resultado

P (x) = x− x(x− 1) + 56x(x− 1)(x− 2)

En la siguiente figura se muestran juntas las gráficasdel polinomio de Lagrange (línea a trozos), los polinomiosde la interpolación por splines cúbicos (línea sólida), y lainterpolación utilizando la función sin c(x) (línea a trozos).

32.752.52.2521.751.51.2510.750.50.250

2

1.8

1.6

1.4

1.2

1

0.8

0.6

0.4

0.2

0

x

y

x

y

Como puede observarse, la interpolación por splinescúbicos es la menos oscilante. Por otro lado, cuando elnúmero de puntos de interpolación aumenta, la diferenciaentre los diferentes tipos de interpolación también lo hace.

Problema 110 (2 puntos) Calcular la función que in-terpola, utilizando la función sin c(x), la función f(x) =sin(x) en los puntos x = −π,−π

2 , 0,π2 , π.

La interpolación a través de polinomiostrigonométricos

La base de la transformada de Fourier discreta es la uti-lización de los polinomios trigonométricos dados por la ex-presión

P k(x) = eikx

4 6

Page 47: Apuntes Analisis Numerico

Dada una función f(x), definida en el intervalo[−π, π], pretendemos aproximar f(x) como

f(x) ≈NX

k=−Ncke

ikx

donde ck son coeficientes, en general complejos. El sigu-iente resultado determina la forma de calcular dichos coe-ficientes ck:

Teorema 35 Los coeficientes ck que minimizan el errorcuadrático medio

E(c−N , ..., cN ) =

Z π

−π

Ãf(x)−

NXk=−N

ckeikx

!2dx

vienen dados por

ck =

R π−π f(x)e

−ikxdx

Demostración En primer lugar, observamos que, dadala forma cuadrática del funcional E(c−N , ..., cN ), éstedebe poseer mínimos. Por otro lado, en un mínimo,las derivadas parciales de E(c−N , ..., cN) con respecto acualquier ck son cero, y por tanto

∂E

∂ck(c−N , ..., cN ) =

Z π

−π

Ãf(x)−

NXl=−N

cleilx

!eikxdx = 0

con lo que el resultado del teorema sale de forma inmedi-ata, teniendo en cuenta queZ π

−πeilxeikxdx =

½2π si l = −k0 si l 6= k

Ejemplo 28 Consideremos la función

f(x) =

½1 si x ∈ [−π

2 ,π2 ]

0 si x /∈ [−π2 ,

π2 ]

Vamos a calcular el polinomio trigonométrico inter-polante para N = 3. Los valores de ck son

c0 =

R π−π f(x)dx

2π=1

2

c1 = c−1 =

R π−π f(x)e

ixdx

2π=1

π

c2 = c−2 =

R π−π f(x)e

2ixdx

2π= 0

c3 = c−3 =

R π−π f(x)e

3ixdx

2π= − 1

Por tanto, el polinomio trigonométrico interpolador es

P3(x) =1

2+2

πcos(x)− 2

3πcos(3x)

La siguiente gráfica muestra la aproximación entref(x) y P3(x):

2.51.250-1.25-2.5

1

0.75

0.5

0.25

0

x

y

x

y

Problema 111 (3 puntos) Calcular el polinomiotrigonométrico, tomando N = 2, que interpola la funciónf(x) = |x| en el intervalo [−π, π].

Aproximación por mínimos cuadrados

La aproximación mínimo cuadrática aproxima, a través deuna función, un conjunto de valores de forma global, sinexigir que la función aproximante pase exactamente porese conjunto de puntos.

Dado un conjunto de valores (xi, yi)i=1,..,N , laaproximación mínimo cuadrática lineal consiste en buscarla recta y = ax+ b, tal que la función de error cuadrático

E(a, b) =NXi=1

(axi + b− yi)2

sea mínima.

Teorema 36 Los valores a y b que minimizan el errorcuadrático anterior son

a =NPN

i=1 xiyi −PN

i=1 xiPN

i=1 yi

NPN

i=1 x2i −

³PNi=1 xi

´2b =

PNi=1 x

2i

PNi=1 yi −

PNi=1 xiyi

PNi=1 xi

NPN

i=1 x2i −

³PNi=1 xi

´2Demostración En primer lugar, observamos que, dadala forma cuadrática que tiene el funcional, debe poseer un

47

Page 48: Apuntes Analisis Numerico

mínimo. Además, en un mínimo del funcional E(a, b), lasderivadas parciales son cero, y por tanto

∂E

∂a(a, b) = 2

NXi=1

(axi + b− yi)xi = 0

∂E

∂b(a, b) = 2

NXi=1

(axi + b− yi) = 0

Esto da lugar a un sistema lineal de ecuaciones cuyasincógnitas son a y b, y cuya resolución lleva al resultadoestablecido en el teorema.

Problema 112 (2 puntos) Calcular la aproximaciónmínimo cuadrática lineal de la tabla

xi yi0 01 12 03 2

BIBLIOGRAFÍA BÁSICA

[Bu-Fa] Burden R., Faires D. ”Análisis Numérico”, GrupoEditorial Iberoamérica 1985. Esta obra es un clásico delCálculo Numérico, destaca por una exposición simple y almismo tiempo clara, con múltiples ejemplos y una descrip-ción de los algoritmos bien diseñada.

[Bo] Borse G. ”Programación en fortran 77” Anaya,1989. En esta obra se presenta el lenguaje de programaciónfortran 77 con numerosas aplicaciones al análisis numérico.

[Ci] Ciarlet P.G. ”Introduction à l’analyse numériquematricielle et à l’optimisation”, Masson , 1990. Con unexquisito rigor se abordan los temas básicos del AnálisisNumérico Matricial y métodos de optimización, incluyendola resolución de sistemas a través de métodos directos, it-erativos y métodos tipo gradiente, así como el cálculo deautovalores y vectores propios.

[Hi] Higham N. "Accuracy and Stability of Numeri-cal Algorithms", SIAM, 1996 Esta obra, muy reciente, dauna visión general sobre los últimos avances en AnálisisNumérico, haciendo especial énfasis en la precisión de losalgoritmos numéricos y en la propagación de errores, tam-bién resulta de interés la descripción de las aritméticas queutilizan los ordenadores más recientes como la aritméticaStandard de I.E.E.E..

[Hu] Hultquist P. F. ”Numerical Methods forEngineers and Computer Scientists”, The Ben-jamin/Cummings Publishing Company, Inc. 1988.Esta obra, presenta una cuidada selección de temasbásicos en Análisis Numérico, sin pretender ser tanexhaustiva como otras obras de carácter más general,la buena presentación de los temas elegidos la hacen deinterés.

[Is-Ke] Isaacson E., Keller H. ”Analysis of NumericalMethods”. John Wiley and Sons, 1966. Uno de los librosclásicos más conocidos en Análisis Numérico. Destaca porel rigor matemático en su exposición.

[Ki-Ch] Kincaid D., Cheney W. "Análisis Numérico".Addison-Wesley Iberoamericana, 1994. Excelente libro debase para un curso de Métodos Numéricos. Contiene todoslos tópicos habituales con una descripción muy completay detallada. Los algoritmos están muy bien descritos através de un seudocódigo. Trae una buena selección deproblemas.

[La-Th] Lascaux P., Théodor R. "Analyse numériquematricielle appliquée à l’art de l’ingénieur. Vol. 1 Méth-odes directes y Vol. 2 Méthodes itératives ", Masson, 1993.Esta obra, dividida en dos volúmenes, trata en profundi-dad todos los tópicos relacionados con el Análisis NuméricoMatricial. Su mayor virtud es el rigor matemático con elque se tratan los temas y una cuidada presentación.

[St] Stewart G.W. ”Afternotes on Numerical Analy-sis” SIAM, 1996. Esta obra, sin pretender ser exhaustiva,muestra las últimas tendencias en cuanto a la enseñanzade los conceptos básicos del Análisis Numérico.

48

Page 49: Apuntes Analisis Numerico

APÉNDICE A: Resumen de los comandos deUNIX

En este breve resumen seguiremos el siguiente esquema.En primer lugar, aparece el comando UNIX. A contin-uación, entre paréntesis, su equivalente en MS-DOS (siexiste). Finalmente, un comentario y un ejemplo.

cd (cd) cambia el directorio activo>cd /users/p701/fortran77

more (type) visualiza el contenido de un fichero>more /users/p701/fortran77/programas/prog1.f

ls (dir) visualiza contenido de un directorio>ls /users/p701/fortran77

cp (copy) copia un fichero en otro.>cp /users/p701/fortran77/programas/prog1.f .

rm (del) borra un fichero>del prog1.f

man (help) suministra ayuda sobre un comando> man ls

logout se termina la sesión y se sale del sistema>logout

ps visualiza los números de procesos que están abiertosque corresponden al usuario alumno

>ps -u alumnokill interrumpe la ejecución de un proceso de númeroNproceso

>kill -9 Nprocesomkdir (mkdir) crea un directorio

>mkdir practica1rmdir (rmdir) borra un directorio

>rmdir practica1mv (move) cambia de nombre o ubicación un archivo.

>mv prog1.f practica1.fchmod cambia los permisos de lectura, escritura y eje-cución de un fichero. Este comando es de utilidad parasalvaguardar la información de directorios y ficheros demiradas ajenas.

Hacer > man chmod para mirar las opciones.chown cambia el propietario de un fichero.

Hacer > man chown para mirar las opciones.du (tree) visualiza la cadena de directorios

>du /users/p701find busca un archivo de nombre file en el directorio dir

>find dir -name file -printgrep busca los ficheros que contenga la cadena de carac-teres string

>grep string *

APÉNDICE B: Resumen del procesador de textovi

El procesador de texto vi tiene la ventaja de estar pre-sente en cualquier máquina que trabaje sobre UNIX y norequiere ningún entorno gráfico. Puede ejecutarse en dosmodos. El modo comando (el que está por defecto al en-trar en vi), donde se ejecutan comandos, y el modo edición,que es donde se escribe normalmente el texto.

Intercambio entre modo comando y modo ediciónESC pasa de modo edición a modo comandoi pasa de modo comando a modo ediciónA pasa a modo edición y pone el cursor al final

de la líneaO inserta una nueva línea, pasa a modo edición y

pone el cursor al principio de la nueva línea

Manejo de Ficheros (en modo comando):w escribe en disco el fichero:wq escribe en disco el fichero y sale del vi:e fichero.name edita el fichero fichero.name:q! sale del vi sin guardar cambios.:w fichero.name escribe el fichero actual en el

fichero fichero.name en disco!comando ejecuta el comando UNIX comando:set nu presenta los números de línea en pantalla

Comandos para desplazarse por el texto (en modocomando)

Crtl F página adelanteCrtl B página atrás$ pone el cursor en el final de la línea0 pone el cursor en el principio de línea/string busca hacia adelante el string string?string busca hacia atras el string stringn repite la última búsquedaG va al final del texto3 G va a la línea número 3.

Comandos para borrar líneas o caracteres (enmodo comando)

x borra el carácter donde se encuentra el cursorr character remplaza el carácter donde se encuen-

tra el cursor por el carácter characterdd borra la línea donde se encuentra el cursor3 dd borra 3 líneas desde donde se encuentra el

cursor hacia abajodw borra la palabra donde se encuentra el cursor

Comandos para copiar y desplazar bloques (enmodo comando)

yy copia en el buffer la línea donde se encuentrael cursor

3yy copia en el buffer 3 líneas hacia abajo desdeel cursor

dd copia (y borra) al buffer la línea donde se en-cuentra el cursor

3dd copia (y borra) al buffer 3 líneas hacia abajodesde el cursor

p copia el contenido del buffer en el texto.

APÉNDICE C: Algunos fallos comunes enFortran

1. No poner END al final del programa principal o dela función.

49

Page 50: Apuntes Analisis Numerico

2. Escribir números como 1/2 ó 10 ∗ ∗20 en precisiónentera. Solución: Escribir 1./2.ó 10. ∗ ∗20.

3. Utilizar variables enteras como flotantes o al revés.Sugerencia: Aunque no sea necesario, declarar lostipos de todas las variables que se utilicen al principiodel programa o función.

4. Utilizar un parámetro de una función para asignardinámicamente memoria a un vector o matriz en el in-terior de la función. Solución: Poner una declaraciónde PARAMETER al principio de la función y con ellaasignar las memorias de forma estática.

5. No poner ningún comentario en los programas.

6. Anidar excesivamente los programas. Siempre hayque buscar que el número de anidamientos sea mín-imo.

7. No respetar los tipos en los pasos de parámetros delas funciones.

8. Utilizar vectores sin declararlos con la sentencia DI-MENSION.

9. No pasar la dimensión de un vector como parámetrode una función.

10. Exceso de sentencias GOTO. Las sentencias GOTOpueden dificultar el seguimiento del flujo del programay sólo hay que utilizarlas cuando sean indispensables.

11. A veces, los programas pueden fallar por errores deredondeo en los cálculos. Fortran da la posibilidadde cambiar el número de bits utilizados para alma-cenar 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 precisión de laaritmética para las variables reales. Análogamente,si en lugar de utilizar la directiva -rn utilizamos -dnaumentaremos la precisión de las variables declaradasDOUBLE PRECISION, y si utilizamos -in las vari-ables enteras.

5 0