You are on page 1of 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 Tafira
35017 Las Palmas, España
Email: {maleman,lalvarez,jsanchez}@dis.ulpgc.es

Contenidos 6 DIFERENCIACIÓN E INTEGRACIÓN


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

1
10 APÉNDICE A: Resumen de los comandos que hace un total de, aproximadamente, 45 horas en aula
de UNIX 49 (3 créditos teóricos) y 30 horas de laboratorio (2 créditos
prácticos). Dado el escaso tiempo disponible, se han elim-
11 APÉNDICE B: Resumen del procesador de inado algunos temas clásicos de un curso completo anual
texto vi 49 de Análisis Numérico como son las ecuaciones diferenciales
ordinarias y las ecuaciones en derivadas parciales. Nor-
12 APÉNDICE C: Algunos fallos comunes en malmente, dichos temas se verán en detalle en asignaturas
Fortran 49 posteriores. Además, en lugar de presentar de forma ex-
haustiva todos los métodos numéricos que se pueden en-
INTRODUCCIÓN contrar en los libros de Análisis Numérico clásicos, se ha
optado por reducir los contenidos e impartir una selección
El presente documento es un texto de referencia básico so- de los métodos numéricos más representativos.
bre los contenidos de la disciplina de Análisis Numérico
en el contexto curricular de una Ingeniería Informática.
ARITMÉTICAS DE PRECISIÓN FINITA Y
Aunque el texto cubre los contenidos mínimos necesarios,
FUENTES DE ERRORES NUMÉRICOS
resultará de gran interés para los alumnos complementar
la información aquí suministrada con los textos de referen- Aritméticas de precisión finita
cia básicos mencionados en la bibliografía. Muchas de las
demostraciones de los resultados presentados se encuen- Un número entero z se representa en el ordenador a través
tran en este texto. En los casos en que las demostraciones de un número fijo de bits (16 bits habitualmente), donde
no se incluyen, se suministra el libro y la página donde uno de los bits se utiliza para determinar el signo y los
se encuentra tal demostración, para que el alumno intere- restantes para expresar el valor absoluto del número, de
sado pueda estudiarla por su cuenta. En general, todos los tal manera que la secuencia de bits
temas presentados aparecen bien desarrollados en los libros
a1 a2 a3 ......an
de texto clásicos mencionados en la bibliografía. La única
excepción es el tema de aritméticas de precisión finita, que donde ai = 0 o ai = 1, representa el valor absoluto del
se ha desarrollado en este texto con algo más de detalle y número
con un enfoque algo más moderno que en los libros clási-
cos, por considerar que, en el contexto de una Ingeniería | z |= an + an−1 2 + an−2 22 + ... + a1 2n−1
Informática, este tema es de especial relevancia.
Así, utilizando 16 bits, el mayor número entero que
El lenguaje de programación que se utilizará es el For-
podemos representar es
tran. Se ha elegido este lenguaje por ser la plataforma
donde se han desarrollado habitualmente los grandes pro- 1 + 2 + 22 + ..... + 214 = 215 − 1 = 32767
gramas de cálculo numérico y por estar especialmente
orientado al cálculo científico. En el texto se va intro- Es decir, los número enteros que podemos expresar
duciendo este lenguaje de programación a través de pro- con una aritmética de 16 bits van desde −32767 hasta
gramas ejemplo. Estos programas ejemplo se encuentran a 32767.
disposición de los alumnos en el directorio de la asignatura Para representar un número real y en el ordenador
/users/asignaturas/ii-an de la máquina serdis.dis.ulpgc.es. nos basaremos en el siguiente resultado:
También se encuentra a disposición de los alumnos el
Teorema 1 Un número real positivo y se puede expresar
fichero an.h, donde se encuentran todas las subrutinas
como
definidas en estos programas ejemplo. X∞
an
En el texto se proponen unas prácticas de laboratorio y = 2e
2n
para realizar a lo largo de la asignatura. Para estable- n=1
cer el orden de impartición de los contenidos presentes en donde e es un número entero, a1 = 1, y para n > 1, an = 0
este documento se ha utilizado, como criterio preferente, o an = 1.
la coordinación entre el programa de prácticas y el pro-
grama teórico de la asignatura, de tal forma que, con un Demostración. Dado un número real positivo y, existe
desarrollo normal de la docencia, los contenidos teóricos un entero e tal que 2e−1 ≤ y < 2e , y por tanto 2−1 ≤
sean presentados con antelación al desarrollo de las prác- y2−e < 1. Por otro lado, si definimos las sucesiones Sn y
ticas, comenzando las prácticas de laboratorio a partir de an de la siguiente forma: S1 = 2−1 , an = 1 y para n > 1
la segunda semana de clase. an = 0 si Sn−1 + 1
> y2−e
2n
Para el buen seguimiento de la asignatura, resulta de an = 1 si Sn−1 + 1
≤ y2−e
2n
gran interés tener cierta soltura en el manejo de los con-
n
X
ceptos elementales del Análisis Matemático, el Álgebra, ak
y la programación de Algoritmos. La materia expuesta Sn =
2k
k=1
en esta documentación está programada para ser impar-
tida en un cuatrimestre a razón de 3 horas/semana en el entonces es claro que | Sn − y2−e |≤ 21n , y por tanto Sn →
aula y 2 horas/semana en el laboratorio informático, lo y2−e lo que concluye la demostración del teorema.

2
Ejemplo 1 Consideremos y = 10. 125, podemos expresar Problema 4 (2 puntos) Calcular todos los números
este número como reales que se pueden construir tomando 5 bits de la forma
1 1 1 siguiente: 1 bit para el signo, 2 bits para la mantisa (es
10. 125 = 24 ( + 3 + 7 ) decir t = 3, puesto que a1 = 1 y sólo se almacenan a2
2 2 2
y a3 ) y 2 bits para el exponente e, tomando como rango
Es decir, e = 4, a1 = a3 = a7 = 1, y el resto de los an de e = −1, 0, 1, 2. Representar dichos números sobre una
es 0. En este caso, el número de elementos an distintos de recta.
0 es un número finito, en general no ocurre así.
Es importante resaltar que los números reales en una
Evidentemente, cualquier número que tenga un aritmética de precisión finita no están equiespaciados, es
número finito de elementos an distintos de 0 es un número decir, los números están más cercanos entre sí cerca de 0,
racional y, por tanto, los números irracionales se represen- y más alejados al alejarnos de 0.
tarán siempre con un número infinito de elementos an no En 1985, la sociedad I.E.E.E. presentó una serie de
nulos. Sin embargo, como muestra el siguiente problema, especificaciones estándares para la definición de una arit-
existen otros muchos números además de los irracionales, mética de precisión finita para los números reales. En este
que no se pueden representar con un número finito de ele- trabajo, se codifica un número real en simple precisión uti-
mentos an no nulos. lizando 32 bits de memoria, de los cuales 23 bits se utilizan
para la mantisa (es decir t = 24 puesto que a1 = 1 no se
Problema 1 (2 puntos) Demostrar que al representar almacena), 1 bit se utiliza para el signo y 8 bits se utilizan
el número real 0.1 como para el exponente e, lo cual da un rango de 28 = 256 val-

ores posibles para el exponente e. En este caso, se toma
X an
0.1 = 2e emin = −125 y emax = 128. Como puede observarse, el
n=1
2n número total de exponentes posibles es 254, dos menos
que los 256 posibles, ello se hace así, porque se reservan
el número de elementos no nulos an es infinito. dos casos para tratar las denominadas excepciones, como
se verá más adelante.
Problema 2 (2 puntos) Representar el número 0.0 Por tanto, el valor máximo que puede tomar un
703 125 como número real en esta aritmética es
∞ X24
X an 1
0.0 703 125 = 2e yemax = 2128 n
= 3. 4 × 1038
2n n=1
2
n=1

Para definir una aritmética de precisión finita de y el valor mínimo positivo es


número reales, lo que se hace habitualmente es discretizar
1
la fórmula de representación anterior, tomando un número yemin = 2−125 = 1. 18 × 10−38
2
finito de valores posibles ai y un número finito de valores
para el exponente e. Como puede observarse, cada valor Además, el número de combinaciones posibles que
ai viene representado por un bit. Además, puesto que el puede tener la mantisa es 224 ≈ 1. 68 × 107 . Es decir,
valor a1 es siempre igual a 1, no es necesario almacenar su la aritmética tiene una precisión de 7 dígitos decimales.
valor en memoria al guardar un número real. Esta representación equivale a normalizar el número bina-
Por tanto, en una aritmética de precisión finita, los rio colocando la coma detrás del primer 1, representar en
números reales distintos de cero se representan como la mantisa la parte fraccionaria, puesto que la parte entera
t
es un 1 implícito, y el exponente en exceso 127, es decir,
X an sumando esta cantidad al exponente resultante de la nor-
ye = ±2e
n=1
2n malización, de forma que el rango que va desde 1 hasta
254 representa los exponentes que van desde −126 hasta
donde e varía entre dos valores limites emin ≤ e ≤ emax . Al 127 (se reservan los valores 0 y 255 para las excepciones).
valor t se le llama precisión de la aritmética. A la secuencia También se define en este trabajo de I.E.E.E. un es-
a1 a2 a3 ......at , (donde ai ∈ {0, 1}) se le denomina mantisa. tándar para una aritmética en doble precisión. En este
Hay que hacer notar aquí que, dado que hemos impuesto caso, se utilizan 64 bits para almacenar un número real,
siempre que a1 = 1, el número 0 debemos añadirlo a la de los cuales 52 bits se utilizan para la mantisa (t = 53),
aritmética, ya que 0 no se puede representar de la forma 1 bit para el signo y 11 bits para el exponente, lo que da
anterior. lugar a 211 = 2048 posibilidades de elección de exponente
e. En este caso, se toma emin = −1021 y emax = 1024.
Problema 3 (1 punto) Calcular los valores positivos Por tanto, el valor máximo que puede tomar un
mínimo y máximo que puede tomar un número real en número real en esta aritmética es
una aritmética de precisión finita en función de t, emin y X53
1
emax . yemax = 21024 n
= 1. 78 × 10308
n=1
2

3
y el valor mínimo positivo es 1 A=A/2.
IF(A.GT.0) THEN
1 M=M+1
yemin = 2−1021 = 2. 23 × 10−308
2 GOTO 1
Además, el número de combinaciones posibles que ENDIF
puede tener la mantisa es 253 ≈ 9. 0 × 1015 . Es decir, la PRINT *,M
aritmética tiene una precisión de 15 dígitos decimales. END
Evidentemente, estos estándares no se siguen al pie
de la letra por los diferentes fabricantes de ordenadores.
Así, aunque existe bastante homogeneidad en este sentido, Nota En Fortran 77 no es necesario declarar las variables.
los valores pueden cambiar ligeramente de una máquina a Por defecto, las variables cuyo nombre empieza por las
otra. Por otro lado, aunque en la mayoría de los orde- letras
nadores actuales la base de representación de los números I, J, K, L, M, N
es 2, todavía pueden encontrarse algunos sistemas donde son variables enteras, y el resto son variables reales. Las
la base es 10 ó 16. Nosotros no entraremos aquí a estudiar cinco primeras columnas de cada línea de un programa
este tipo de bases. El estudio es básicamente el mismo, Fortran 77 están reservadas para escribir un número de
adaptándolo a la base de representación. etiqueta.

Tratamiento de las excepciones en el estándar de La columna 6 está reservada para indicar si una línea
I.E.E.E. es continuación de la anterior (en este caso basta con es-
Denominaremos excepciones a las expresiones que no se cribir un carácter en la columna 6.)
pueden expresar en una aritmética usual, √ como son el 0,
el infinito, operaciones no válidas (como −1), etc. Estas Un ∗ o una C en la primera columna indica que la
excepciones son tratadas en el estándar de I.E.E.E. de la línea es de comentario.
siguiente forma: dentro de las posiciones de memoria ded-
icadas al exponente e de un número, se reservan dos, que En el Fortran 77 estándar no existe la instrucción
corresponden a emin − 1 y emax + 1, para trabajar con con W HILE. Sin embargo, como se muestra en el programa
las excepciones. La regla que se utiliza es la siguiente: anterior, se puede simular fácilmente un W HILE con un
GOT O.
1. Si el valor de una variable y tiene por exponente
emax + 1 y todos los coeficientes de la mantisa valen Los operadores de comparación en fortran 77 son:
0, entonces y se considera infinito. Por ejemplo 1/0 .GT., .GE., .EQ., .N E., .LT. y .LE., que significan mayor
debe dar infinito. que, mayor o igual a, igual a, no igual a, menor que y
2. Si el valor de una variable y tiene por exponente menor o igual a, respectivamente. Los operadores lógicos
emax + 1 y algún coeficiente de la mantisa es distinto son .AN D. y .OR., que realizan las operaciones de con-
de 0, entonces y se considera que no √ es un número junción y disyunción, respectivamente.
(NaN (Not a Number)). Por ejemplo −1 debe dar
NaN.
Programa 2 Programa en Fortran 77 para calcular el
3. Si el valor de una variable y tiene por exponente mayor número positivo de una aritmética. El programa
emin − 1 y todos los coeficientes de la mantisa valen 0, devuelve un entero M tal que 2M es el número cuya rep-
entonces y se considera igual a 0. resentación corresponde a la excepción que codifica el in-
finito.
4. Si el valor de una variable y tiene por exponente emin −
1 y algún coeficiente de la mantisa es distinto de 0, y A=1.
se considera que no está normalizado (es decir a1 = 0) B=1.
y el valor de y sería M=0
1 B=2.*A
Xt
emin −1 an IF(B.GT.A) THEN
y=2
n=2
2n A=B
M=M+1
Programa 1 Programa en Fortran 77 para calcular el GOTO 1
menor número positivo de una aritmética. El programa ENDIF
devuelve un entero M tal que 2−M es el menor número PRINT *,M
real positivo normalizado. END

A=1.
M=0

4
Problema 5 (2 puntos) Dada una aritmética de pre- serdis.dis.ulpgc.es y trabajar directamente sobre el termi-
cisión finita cualquiera, calcular la distancia que hay entre nal de conexión. Los ficheros se pueden editar y corregir
el número 1 y su inmediato superior, es decir, el número en entorno Windows.
que va después de 1, y la distancia entre el número 1 y su Compilar y ejecutar los programas 1, 2 y 3 para com-
inmediato inferior. 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 directorio
Vamos a llamar A, al conjunto de valores reales a los de la asignatura /users/asignaturas/ii-an de la máquina
que da lugar una aritmética de precisión finita, es decir serdis.dis.ulpgc.es.
( t
) Si ponemos en la cabecera del programa la instrucción
X an
e
A = ±2 ∪ {0}
2n IM P LICIT DOU BLE P RECISION (D)
n=1

Dado un número real cualquiera y, al representarlo cualquier variable cuyo nombre empiece por D será un
en una aritmética de precisión finita se produce un error número real en doble precisión. Hacer las modificaciones
de redondeo, llamaremos ye ∈ A al número real que mejor pertinentes en los programas 1, 2 y 3, para comprobar
aproxima a y dentro de A. cuáles son el menor y el mayor número positivo, y la unidad
de redondeo del ordenador en doble precisión. Además, √
hacer operaciones del tipo 1/0, 1/∞, ∞/0, ∞/∞, −1
Definición 1 Dada una aritmética de precisión finita, se e imprimir los resultados para ver cómo trata las excep-
define la unidad de redondeo u como ciones el FORTRAN en la arquitectura de los ordenadores
del laboratorio.
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), Problema 6 (4 puntos) Se considera una aritmética de
u = 2−53 = 1. 1 × 10−16 . 16 bits donde se dedica 1 bit al signo, 9 bits a la mantisa
(t = 10) y 6 bits al exponente (emin = −30 emax = 31).
Escribir, si es posible, los siguientes números en esta ar-
Programa 3 Programa en Fortran 77 para calcular la itmética:
unidad de redondeo de una aritmética. El programa de-
vuelve un entero M tal que u = 2−M 1. 2, y los números más cercanos a 2 por arriba y por
debajo.
A=1.
M=1 2. El cero, el infinito y NaN.
1 A=A*2.
IF((1.+1./A).GT.1) THEN 3. Los números positivos mayor y menor de la aritmética
M=M+1 (teniendo en cuenta las excepciones).
GOTO 1
ENDIF 1
4. 9.
PRINT *,M
END ¡1 1
¢
5. 2 2 − 210 .

Problema
¡ 7 ¢(2 puntos) ¡ Sean ¢A =
2 12 + 213 + 215 B = 23 12 + 216 + 1
27 . Calcular
Práctica 1 (Aritméticas finitas, 2 horas)
B+A y B−A
La línea de comando para la compilación de un programa
en Fortran 77 tiene la forma:
Problema 8 (2 puntos) Sean emin , emax , los valores
> f 77 prog1.f − o prog1
mínimo y máximo del exponente e. Demostrar que si
Esta línea compila el programa prog1.f y genera el emin < e < emax , entonces los números:
ejecutable prog1. Ã t !
X an 1
Para compilar un programa en Fortran, necesitamos 2e ± t
una máquina que tenga instalado el compilador. Por n=1
2n 2
ejemplo, la máquina serdis.dis.ulpgc.es tiene dicho compi-
lador. Para utilizar el compilador desde un entorno Win- pertenecen al conjunto A de números reales generados por
dows, basta con conectarse a través de la utilidad SSH a la aritmética de precisión finita.

5
A continuación, mostraremos un resultado que indica que las variables A y B están cercanas entre sí con una
el error de redondeo máximo que se produce al aproximar tolerancia T OL si se cumple que
un número real cualquiera en una aritmética de precisión
finita. | A − B |≤ max {| A |, | B |} T OL

Este criterio es simétrico en el sentido de que trata de


Teorema 2 Sean yemin , yemax los valores positivos menor igual modo los números A y B. También se puede utilizar
y mayor de una aritmética de precisión finita. Sea u la un criterio más simple, como
unidad de redondeo de dicha aritmética. Si un número
| A − B |≤| A | T OL
real z verifica que yemin <| z |< yemax , entonces
pero en este caso le estamos dando una significación espe-
| z − ze |≤| z | u cial a A con respecto a B.
donde ze es el número más cercano a z en la aritmética.
Estos criterios de comparación de números funcionan
Demostración. Un número real cualquiera z, que bien salvo cuando los números A y B están muy próximos
tomaremos positivo sin pérdida de generalidad, se puede a 0. Por ejemplo, si B = 0, los criterios anteriores quedan
expresar como
X∞ | A |≤| A | T OL
an
z = 2e
n=1
2n lo cual es imposible (si T OL < 1), salvo que A también
sea 0. Para evitar este comportamiento, se puede añadir
donde a0 = 1 y, en general, an = 0 o an = 1. Además, al criterio un valor > 0 de la siguiente forma:
para un número natural t cualquiera tenemos que
t
à t ! | A − B |≤ (max {| A |, | B |} + ) T OL
X an X an 1
e e
2 ≤z≤2 + t
n=1
2n n=1
2n 2

Por el problema anterior, el número que está a la


Programa 4 Programa en Fortran 77 que determina si
derecha de la desigualdad también pertenece a la arit-
dos variables A, B son iguales con una tolerancia T OL
mética de precisión finita, y por tanto
(tomando el máximo de A, B), con = 10−10
2e 2−t
| z − ze |≤ READ *,A,B,TOL
2
IF(IGUAL(A,B,TOL).EQ.0) THEN
Ahora bien, como a0 = 1, se tiene que 2e < 2 | z | y, PRINT *,’A=B segun la tolerancia TOL’
por tanto STOP
| z − ze |≤| z | 2−t =| z | u ELSE
PRINT *,’A distinto de B segun la tolerancia
con lo que queda demostrado el teorema.
TOL’
STOP
Problema 9 (2 puntos) Dado un número ze = ENDIF
P END
2e tn=1 a2nn , en una aritmética de precisión finita. Cal-
cular el número inmediatamente inferior a él en dicha ar-
itmética. FUNCTION IGUAL(A,B,TOL)
IF(ABS(A).GT.ABS(B)) THEN
Un resultado importante para la comparación de dos IF(ABS(A-B).LE.(TOL*(ABS(A)+10.**(-
números es el siguiente: 10.))) THEN
IGUAL=0
RETURN
Teorema 3 Si ze1 , ze2 ∈ A son distintos entonces ELSE
IGUAL=1
| ze1 − ze2 |≥ max {| ze1 |, | ze2 |} u RETURN
ENDIF
ELSE
Demostración: Ejercicio IF(ABS(A-B).LE.(TOL*(ABS(B)+10.**(-
En muchos algoritmos, el test de parada incluye el 10.))) THEN
hecho de que dos variables estén próximas entre sí. para IGUAL=0
ello se fija un umbral o tolerancia T OL que por supuesto RETURN
será mayor que la unidad de redondeo u y expresaremos ELSE
IGUAL=1

6
RETURN C=0.01
ENDIF D=0
ENDIF DO 1 K=1,2**7
END B=B+A
1 CONTINUE
DO 2 K=1,100
Asociado a cualquier aritmética de precisión finita de D=D+C
números reales, existen 4 operaciones básicas, que son la 2 CONTINUE
suma, la resta, la multiplicación y la división de números PRINT *,(1-B)*(10**10)
reales dentro de la aritmética. Nosotros no vamos a entrar PRINT *,(1-D)*(10**10)
en este curso en cómo se pueden definir algorítmicamente END
estas operaciones. Solamente queremos mencionar que, a
menudo, para minimizar el efecto de los redondeos en las
Además, este programa permite identificar la base de
operaciones, antes de realizarlas se aumenta la precisión
la aritmética con la que trabaja el ordenador.
de los números reales (por ejemplo pasando de simple pre-
cisión a doble precisión) para, a continuación, realizar la Como conclusión de este apartado, podemos extraer
operación en una aritmética de mayor precisión y, final- que, para ser más precisos numéricamente, cuando tra-
mente, el resultado se redondea para pasarlo a la precisión bajamos con números más pequeños que la unidad de-
inicial. beríamos pensar en términos de 2−m en lugar de 10−m ,
que es como solemos hacerlo.

Fuentes de errores numéricos Errores por Cancelación. Estos errores se producen al


restar números de aproximadamente la misma magnitud.
Dentro de las posibles fuentes de errores numéricos,
Hay que tener en cuenta que, al realizar operaciones sobre
destacaremos 3 tipos:
una variable, los errores de redondeo se van acumulando
en la parte menos significativa del número (los dígitos de
Errores de redondeo. Son los que se producen al ”re-
menos valor), dejando relativamente intacta la parte más
dondear” un número real para poder expresarlo en una
significativa del número, que corresponde a los dígitos de
aritmética de precisión finita. Como vimos en la sec-
mayor valor. Por ello, al restar dos números de magnitud
ción anterior, este error está controlado por la denominada
parecida, se cancelan las partes significativas, quedando la
unidad de redondeo, u = 2−t , de tal forma que, al tomar
aportación de los dígitos de menos valor, que es donde más
un número real z y aproximarlo en la aritmética por el
error hay. Por ejemplo, en el programa Fortran anterior,
valor ze ∈ A más próximo, el error de redondeo tiene la
se ha utilizado este fenómeno de cancelación para poner de
expresión:
manifiesto la diferencia entre trabajar con bases distintas.
| z − ze |≤| z | u
En los algoritmos, muchas veces se intenta evitar la posi-
bilidad de restar 2 números que pudieran ser de magnitud
Errores de cambio de base. Este tipo de errores se parecida. Por ejemplo, en la conocida fórmula del cálculo
produce al realizar un cambio de base para representar un de raíces de un polinomio de grado 2, ax2 + bx + c = 0
número real. Como vimos en la sección anterior, las arit- (con a 6= 0) √
méticas estándares de ordenador trabajan en base 2. Sin −b ± b2 − 4ac
embargo, los humanos pensamos y razonamos en términos x=
2a
de números en base 10. Por ejemplo, números tan naturales una forma de evitar la cancelación que se produce cuando

para nosotros como 0.1 no pueden representarse de forma b ≈ b2 − 4ac consiste en calcular primero la raíz de
exacta en una aritmética en base 2. Esto quiere decir que, mayor valor absoluto, es decir
al representar 0.1 el ordenador, va a producir un pequeño ¡ √ ¢
redondeo, y este pequeño error de redondeo se puede ir pro- − b + sign(b) b2 − 4ac
x1 =
pagando hasta producir errores apreciables. Por ejemplo, 2a
parece razonable pensar que, cuando sumamos 100 veces y después la segunda raíz x2 utilizando la relación x1 x2 =
el número 0.01, el resultado sea exactamente 1, pero, no c
a.
es así. Sin embargo, si sumamos 128 = 27 veces el número
2−7 , el resultado sí es exactamente 1. Este resultado se Por lo tanto, en los algoritmos, se deberá evitar, en la
pone de manifiesto en el siguiente programa Fortran: medida de lo posible, la resta de variables que tengan una
magnitud cercana.

Programa 5 Programa en Fortran 77 para comprobar la


diferencia entre trabajar en base 10 y trabajar en base 2. Problema 10 (1 punto) Calcular las raíces del poli-
nomio P (x) = x2 − 2x + 0.01 evitando los errores de
A=2**(-7.) cancelación.
B=0

7
Problema 11 (3 puntos) Escribir el código en Fortran Método de Newton-Raphson
77 para implementar el cálculo de las raíces de ax2 + bx +
Éste es, sin duda, uno de los métodos más importantes y
c = 0 evitando los errores de cancelación y teniendo en
útiles para el cálculo de raíces. Dada una aproximación
cuenta las diferentes opciones que aparecen cuando a 6= 0
inicial de la raíz x0 , se busca, a partir de x0 , una aprox-
y a = 0.
imación mejor x1 de la raíz, de la siguiente forma: Se
sustituye la función f (x) por el valor de su desarrollo de
Taylor centrado en x0 hasta el orden 1, es decir
CÁLCULO DE LOS CEROS DE UNA
FUNCIÓN f (x) ≈ f (x0 ) + f 0 (x0 )(x − x0 )

En esta sección vamos a estudiar algunos métodos para que corresponde a un polinomio de grado 1, y a contin-
calcular los ceros de una función de una variable, f (x), uación se calcula x1 como el cero de este polinomio, es
esto es, los valores de x para los cuales f (x) = 0. decir:
f (x0 )
x1 = x0 − 0
f (x0 )
Método de la bisección y por tanto, de forma general, obtenemos, a partir de x0
Se considera un intervalo [a, b] donde la función f (x) cam- una secuencia xn de valores que van aproximando la raíz,
bia de signo, es decir f (a)·f (b) < 0. El método consiste en definidos por
f (xn )
ir dividiendo el intervalo [a, b] por la mitad de la siguiente xn+1 = xn − 0
forma: f (xn )
Se toma el punto medio a+b 2 . Si f ( a+b
2 ) = 0 ya A continuación veremos una aplicación de este método
a+b
hemos encontrado la raíz x = 2 . En caso contrario, para calcular la raíz cuadrada √
de un número positivo A,
si f ( a+b a+b
2 ) · f (b) < 0 entonces hacemos a = 2 y volvemos
teniendo en cuenta que si x = A, entonces f (x) = x2 −
a subdividir el nuevo intervalo [a, b]. Si, por el contrario, A = 0.
f (a) · f ( a+b a+b
2 ) < 0, entonces hacemos b = 2 y volvemos
a empezar. Las sucesivas subdivisiones del intervalo [a, b]
van aproximando la raíz. Programa 6 Programa en Fortran 77 para calcular una
aproximación de la raíz cuadrada de un número positivo A
con una tolerancia T OL, y un número máximo de itera-
Problema 12 (2 puntos) Calcular 2 iteraciones del al- ciones N max .
goritmo de la bisección para buscar un cero de la función
f (x) = x2 − 2 en el intervalo [−2, 0]. READ *,A,TOL,Nmax
IF(A.LE.0) THEN
PRINT *,’El numero A no es positivo’
Problema 13 (3 puntos) Escribir el código en Fortran STOP
77 para implementar el método de la bisección ENDIF
X0=(1+A)/2.
DO 1 K=1,Nmax
Método de la Regula-falsi (regla de lo falso) X1=X0-(X0*X0-A)/(2.*X0)
IF(IGUAL(X0,X1,TOL).EQ.0) THEN
Este método es una variación del anterior en el sentido
PRINT *,’LA RAIZ DE A ES’,X0
siguiente: En lugar de tomar el punto medio a+b 2 del in- STOP
tervalo, se considera el punto de intersección de la recta
ELSE
que pasa por los puntos (a, f (a)) y (b, f (b)) con el eje x.
X0=X1
Es decir, en el razonamiento anterior, se sustituye el valor
ENDIF
xm = a+b2 por el valor 1 CONTINUE
b−a PRINT *,’No máximo de iterac. excedido’
xm =a− f (a)
f (b) − f (a) END

Problema 14 (2 puntos) Calcular 2 iteraciones del al-


goritmo de la regula-falsi para buscar un cero de la función
f (x) = x2 − 2 en el intervalo [0, 2]. El método de la Secante
Este método es una variante del método de Newton para
Problema 15 (3 puntos) Escribir el código en Fortran el caso en que no sea posible calcular la derivada de f (x)
77 para implementar el método de la Regula-falsi.

8
f (xn−1 )−f (xn−2 ) f 00 (xn−1 )
de una forma analítica. En este caso, se sustituye el valor f 0 (xn−1 ) ≈ xn−1 −xn−2 + 2 (xn−1 − xn−2 )
f 0 (xn ) en el algoritmo, por el valor
Como veremos posteriormente, la elección de las fór-
f (xn ) − f (xn−1 )
mulas anteriores equivale a aproximar f (x) por la parábola
xn − xn−1 que pasa por los puntos (xn−3 , f (xn−3 )) , (xn−2 , f (xn−2 ))
que corresponde a una aproximación de f 0 (xn ). Para ini- y (xn−1 , f (xn−1 )), y calcular posteriormente las derivadas
ciar el algoritmo, son necesarias dos aproximaciones ini- de dicha parábola.
ciales, x0 y x1.
Programa 7 Programa en Fortran 77 donde se muestra
un ejemplo de manejo de números complejos.
Problema 16 (1 punto) Calcular una iteración del
método de Newton-Raphson para calcular un cero de la IMPLICIT COMPLEX (C)
función f (x) = x3 − 3 partiendo de x0 = 1. CX=(-1,0)
CY=CF(CX)
PRINT *,CY
Problema 17 (1 punto) Calcular una iteración del END
método de la secante para calcular un cero de la función FUNCTION CF(CX)
f (x) = x3 − 3 partiendo de x0 = 0, x1 = 1. IMPLICIT COMPLEX(C)
CF=SQRT(CX)
END
Problema 18 (3 puntos) Escribir un programa en For-
tran 77 que implemente el método de la Secante utilizando
reales de doble precisión. Los datos de entrada son las
Práctica 2 (Método de Müller, 4 horas)
aproximaciones iniciales, x0 y x1 , el número máximo de
iteraciones, N max, y la tolerancia, T OL, para determinar Implementar el método de Müller. Crear un programa
la igualdad de dos números. en Fortran 77 que tenga como datos de entrada: las tres
primeras aproximaciones de la raíz, x0 , x1 y x2 , el número
máximo de iteraciones N max, y la tolerancia T OL, para
determinar la igualdad entre dos números. La función a
Método de Müller la que se le calculan los ceros se define en el propio cuerpo
Este método es de utilidad para calcular raíces comple- del programa. Utilizar el método para calcular los posibles
jas de funciones, como por ejemplo polinomios. Es una ceros de las siguientes funciones:
generalización del método de Newton-Raphson, en el sen-
1. f (x) = x2 + 1
tido de que, en lugar de quedarnos con la parte lineal del
desarrollo de Taylor de la función, nos quedamos con los 2. f (x) = (x2 + 1)x
términos hasta el orden 2, de tal forma que hacemos
3. f (x) = ex − 1
0 f 00 (xn−1 )
f (x) ≈ f (xn−1 )+f (xn−1 )(x−xn−1 )+ (x−xn−1 )2 4. f (x) = x − 2
2
donde xn−1 es una aproximación de una raíz compleja de 5. f (x) = 1
la función f (x). Para obtener una aproximación xn mejor
de la raíz calculamos los ceros del polinomio de segundo
grado anterior, es decir Nota: Utilizar como tolerancia T OL = 0.0001 y N max =
q 100. Para el ejemplo 1 tomar como datos iniciales x0 =
−f 0 (xn−1 ) ± (f 0 (xn−1 ))2 − 2f (xn−1 )f 00 (xn−1 ) (3, 0), x1 = (2, 0) x2 = (1, 0). Para el ejemplo 2 tomar
xn = xn−1 + como datos iniciales x0 = (3, 0), x1 = (2, 0), x2 = (1, 0) y
f 00 (xn−1 )
x0 = (1, 0), x1 = (0.1, 0), x2 = (0.01, 0). Para el ejemplo 3
De las dos posibles raíces, nos quedamos con aquélla tomar como datos iniciales x0 = (3, 0), x1 = (2, 0), x2 =
que sea más cercana a xn−1 . Dicha raíz será la aproxi- (1, 0). Para el ejemplo 4 tomar como datos iniciales x0 =
mación xn de la raíz de f (x) en la etapa n. En el caso (3, 0), x1 = (2, 0), x2 = (1, 0). Para el ejemplo 5 tomar
en que f 00 (xn−1 ) = 0, calculamos xn por el método de como datos iniciales x0 = (3, 0), x1 = (2, 0), x2 = (1, 0).
Newton-Raphson. En el caso en que no conozcamos
analíticamente el valor de la primera y segunda derivada
de f (x), podemos utilizar las siguientes aproximaciones:
f (xn−2 )−f (xn−3 ) f (xn−1 )−f (xn−2 )
xn−2 −xn−3 − xn−1 −xn−2
f 00 (xn−1 ) ≈ 2 xn−3 −xn−1

9
Cálculo de las raíces de un polinomio resultado muestra una forma rápida y sencilla de evaluar
simultáneamente un polinomio y su derivada.
Los polinomios son un tipo particular de funciones que, por
su gran utilidad, requieren un análisis algo más detallado. Teorema 4 (Método de Horner). Sea P (x) = an xn +
Nos ocuparemos sólo de las raíces reales de los polinomios, an−1 xn−1 + ...... + a0 , si definimos bk como
aunque también hay que indicar que existen algoritmos
versátiles para el cálculo de las raíces complejas, como, bn = an
por ejemplo, el método de Müller, visto anteriormente.
A menudo, los alumnos pueden tener la impresión de bk = ak + bk+1 x0
que los algoritmos y técnicas que se aprenden en una asig-
entonces se verifica que
natura como análisis numérico les serán de poca utilidad en
el futuro. Mi experiencia como docente en esta disciplina P (x0 ) = b0
es que, con frecuencia, una vez terminada la carrera y en
el desarrollo de la actividad profesional, aparecen proble- P 0 (x0 ) = bn xn−1
0 + bn−1 xn−2
0 + ........ + b1
mas que, para su resolución, requieren el uso de alguna de
las técnicas presentadas en esta asignatura. El siguiente
ejemplo es una buena prueba de ello. Demostración Sea el polinomio Q(x) = bn xn−1 +
bn−1 xn−2 + ..... + b1 . Veamos que se verifica que

Ejemplo 2 Actualmente están muy de moda los planes de P (x) = (x − x0 )Q(x) + b0


pensiones. Las entidades financieras venden a sus clientes
los planes de pensiones de la siguiente forma, por ejem- Efectivamente, dado que ak = bk − bk+1 x0 y an = bn ,
plo: si usted aporta durante 30 años 100.000 pesetas to- obtenemos la igualdad anterior teniendo en cuenta que
dos los años, aportación que se va incrementando cada
año en un 10%, es decir el primer año 100.000, el se- (x − x0 )Q(x) + b0 =
gundo año 110.000, etc., entonces, le aseguramos que al
bn xn + (bn−1 − bn x0 )xn + ..... + (b0 − b1 x0 )
final del trigésimo año tendrá a su disposición la cantidad
de 26.000.000 de pesetas. Ahora bien, el dato más im- Por último, obtenemos
portante para el futuro pensionista (que a menudo oculta
la entidad financiera) es el interés nominal anual que se P 0 (x) = (x − x0 )Q0 (x) + Q(x)
está aplicando año tras año al dinero depositado. Si lla-
mamos i al interés nominal anual que se aplica al dinero, de donde sale obviamente que P 0 (x0 ) = Q(x0 ).
la ecuación que debemos resolver para obtener i es
Este teorema permite calcular el polinomio y su
derivada en un punto de forma muy sencilla, como muestra
29
X n el siguiente programa Fortran.
(100.000) (1.1) (1. + i)30−n = 26.000.000
n=0

Ahora bien, para calcular i, debemos calcular las Programa 8 El siguiente programa en Fortran 77 calcula
raíces del polinomio en i dado por la evaluación de un polinomio y su derivada en un punto
X, almacenándolos en las variables P X y P P X.
29
X n
P (i) = (100.000) (1.1) (1. + i)30−n − 26.000.000 PARAMETER(NMAX=1000)
n=0 DIMENSION A(0:NMAX)
El cálculo de las raíces de este polinomio nos lleva COMMON/POL/PX,PPX
a i = 4.487%. Este ejemplo muestra como un problema PRINT *,’Escribir Grado del Polinomio’
financiero sencillo nos lleva a la necesidad de calcular los READ *,N
ceros de un polinomio. IF(N.GT.NMAX) THEN
PRINT *, ’Grado Superior al Maximo’
STOP
Algoritmo de Horner para evaluar un polinomio en un ENDIF
punto PRINT *,’EscriBir Coef. Polin.’
DO 1 K=0,N
Dado un polinomio P (x) = an xn + an−1 xn−1 + 1 READ *,A(K)
...... + a0 , éste se puede expresar tam- PRINT *,’Escribir valor de X’
bién de la forma siguiente: P (x) = a0 + READ *,X
x (a1 + x (a2 + x (a3 + x(..... + x (an−1 + xan ))))) . CALL HORNER(N,A,X)
Además, si queremos utilizar un método de cálculo PRINT *,’P(X)= ’,PX
de raíces como el de Newton-Raphson, necesitamos PRINT *,’P ‘(X)= ’,PPX
evaluar tanto el polinomio como su derivada. El siguiente END

10
SUBROUTINE HORNER(N,A,X) Demostración [Is-Ke] Pg. 126.
DIMENSION A(0:*)
COMMON/POL/PX,PPX Para la estimación del número de raíces reales nega-
PX=A(N) tivas, se aplica el teorema anterior cambiando x por −x.
PPX=A(N)
DO 1 K=N-1,1,-1 Ejemplo 3 Sea P (x) = 3x4 + 10x3 − 10x − 3, los sig-
PX=PX*X+A(K) nos de los coeficientes son: + + −−. Por tanto, hay un
PPX=PPX*X+PX único cambio de signo y hay una raíz positiva. Si cambi-
1 CONTINUE amos x por −x, los signos de los coeficientes son + − +−.
PX=PX*X+A(0) Por tanto, hay 3 cambios de signo y hay una o tres raíces
END negativas. En este caso, las raíces son x = 1, −1, −3, − 13 .

Nota: La declaración
P ARAM ET ER(N M AX = 1000) Problema 19 (1 punto) Calcular una iteración del
permite definir constantes. La declaración método de Müller para calcular un cero de la función
DIM EN SION A(0 : N M AX) f (x) = x3 − 3 partiendo de x0 = 1 (Calculando las
define un vector A, de reales en precisión simple, de derivadas de la función de forma exacta) y quedándonos
tamaño N M AX + 1, y numerados desde 0 hasta N M AX. con la raíz más cercana a x0 .
La declaración
COM M ON/P OL/P X, P P X
define la zona de memoria denomina P OL donde se en- Problema 20 (2 puntos) Dado el polinomio P (x) =
cuentran las variables globales P X, P P X. Para que una 2x3 + 3x2 + 4x + 5, evaluar el polinomio y su derivada
subrutina pueda hacer uso de esas variables, debe incluir en el punto x = 2, utilizando el algoritmo de Horner.
en su inicio la misma sentencia COM M ON.
Otros resultados interesantes de utilidad para lo-
calizar en qué zonas pueden estar las raíces del polinomio
son: Problema 21 (1 punto) Calcular el número máximo de
raíces positivas y negativas del polinomio x5 −35x3 +30x2 +
124x − 120, y localizarlas en un intervalo.
Teorema 5 Sea un polinomio P (x) = an xn +an−1 xn−1 +
...... + a0 con an 6= 0, entonces las raíces reales de P (x)
están en el intervalo Teorema 7 Entre dos raíces de una función derivable
∙ ¸ f (x) hay una raíz de f 0 (x).
maxk=0,..,n−1 | ak | maxk=0,..,n−1 | ak |
−1 − ,1 +
| an | | an | Demostración Teorema de Rolle.
maxk=0,..,n−1 |ak |
Demostración Veamos que si |x| > 1 + |an | ,
Teorema 8 La derivada k − ésima P k) (x) del polinomio
entonces |P (x)| > 0. Efectivamente,
P (x) = an xn + an−1 xn−1 + ......a0 es
n−1
X k an n! n−k an−1 (n − 1) ! n−k−1 k!
|P (x)| ≥ |an xn | − max |ak | |x| = P k) (x) = x + x +...+ak
k=0,,,n−1
k=0
(n − k)! (n − k − 1)! 1
n
1 − |x| Demostración Es inmediato, derivando sucesivamente el
= |an | |x|n − max |ak | ≥
k=0,,,n−1 1 − |x| polinomio P (x).
n
n |x|
≥ |an | |x| − max |ak | = Los dos resultados anteriores permiten aislar las posi-
k=0,,,n−1 |x| − 1 bles raíces de P (x) de la forma siguiente: Si llamamos
|x|n (|an | (|x| − 1) − maxk=0,,,n−1 |ak |) Pmax a 1 +
maxk=0,..,n−1 |ak |
, entonces las m raíces distintas
= >0 |an |
|x| − 1 x1 < x2 < .... < xm de P (x) están intercaladas con las
raíces x01 < x02 < .... < x0m−1 de P 0 (x), es decir
−Pmax ≤ x1 ≤ x01 ≤ x2 ≤ x02 ≤ ... ≤ x0m−1 ≤ xm ≤ Pmax
Teorema 6 Sea un polinomio P (x) = an xn +an−1 xn−1 +
Volviendo a aplicar este razonamiento sucesivamente
...... + a0 , entonces el número de raíces positivas es igual al
sobre P 0 (x), P 00 (x), etc., para intercalar los ceros de una
número de cambios de signo en los coeficientes an , ......, a0
derivada con los ceros de la siguiente, podemos deducir
(saltando los posibles coeficientes nulos), o bien ese mismo
el siguiente algoritmo para aislar todas las raíces de un
número menos un número par.
Polinomio P (x):

11
1. Se parte del intervalo [−Pmax , Pmax ]
y
50
n−1)
2. Se calcula la raíz x1 del Polinomio P n−1) (x) (que
25
es un polinomio de grado 1)
0
-2.5 -1.25 0 1.25 2.5
3. Para k = n − 2, ..., 1
-25 x
Se calculan las raíces de P k (x) en los intervalos -50

k+1) k+1)
−Pmax < x1 < x2 < ... < xk+1)
mk+1 < Pmax -75

-100

Al final del procedimiento, habremos aislado comple-


tamente a las raíces de P (x). Este procedimiento se puede
utilizar para grados relativamente pequeños (n < 30), Polinomio P 0 (x) = 4x3 − 3x2 − 14x + 1
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íces La derivada segunda de este polinomio es
de polinomios, pero que utilizan técnicas más complejas. P 00 (x) = 12x2 − 6x − 14,cuyas raíces son x = −0.858, 1.
El método presente en el siguiente programa, que combina 358 y cuya gráfica es
el aislamiento de las raíces del polinomio a través de los
ceros de sus derivadas con el método de Newton-Raphson, y 125
funciona razonablemente bien para grados de polinomios
100
pequeños. En el caso de raíces múltiples los resultados
acumulan mayores errores de redondeo debido a que tanto 75
el polinomio como su derivada son cero en el mismo punto.
50

25
Ejemplo 4 Consideremos el polinomio P (x) = x4 − x3 −
7x2 +x+6, que tiene por raices x = 1, 3, −1, −2. Para este 0
-2.5 -1.25 0 1.25 2.5
polinomio, tenemos que Pmax = 8. Por tanto, las raíces x
están en el intervalo [−8, 8]. Por otro lado su gráfica es
Polinomio P 00 (x) = 12x2 − 6x − 14
y

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

y
20
50

0 25
-2.5 -1.25 0 1.25 2.5
0
x
-2.5 -1.25 0 1.25 2.5

-25 x

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

-75

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 y Polinomio P 000 (x) = 24x − 6
cuya gráfica es
El método funcionaría de la siguiente forma: Primero
calculamos el cero de P 000 (x), es decir x = 0.25, por tanto
los ceros de P 00 (x) 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 de
P 00 (x) en esos intervalos, utilizando cualquier método
numérico de los vistos anterioremente, por ejemplo, el
método de la Regula-falsi, obteniendo −0.858 para el inter-

12
valo [−2.166, 0.25] y 1. 358 para el intervalo [0.25, 2.166]. DIMENSION A(0:*), R(0:*), F(0:NMAX),
Por tanto, las posibles raíces de P 0 (x) estarán en los in- AP(0:NMAX), PI(0:NMAX+1)
tervalos [−4.5, −0.858], [−0.858, 1.358] y [1.358, 4.5]. Bus- COMMON/POL/PX,PPX
camos ahora las raíces de P 0 (x) es esos intervalos, obte- **** Calculo de los factoriales
niendo x = −1. 574, 7. 05 × 10−2 y 2. 253. Por tanto, los F(0)=1.
posibles ceros de P (x) estarán en los intervalos [−8, −1. DO 2 K=1,N
574], [−1.574, 7. 05×10−2 ], [7. 05×10−2 , 2. 253] y [2.253, 8]. 2 F(K)=F(K-1)*K
Buscamos, finalmente, las raíces de P (x) en cada un de *** Calculo intervalo inicial
esos intervalos y obtenemos x = −2, −1, 1, 3. PMAX=ABS(A(0))
DO 3 K=1,N-1
IF(PMAX.LT.ABS(A(K)) THEN
Problema 22 (2 puntos) Aislar en intervalos las raíces PMAX=ABS(A(K)
del polinomio P (x) = 20x3 − 45x2 + 30x − 1. ENDIF
3 CONTINUE
PMAX=PMAX/ABS(A(N))+1.
PI(0)=-PMAX
Programa 9 Programa en Fortran 77 donde se imple-
PI(1)=-(A(N-1)*F(N-1))/(A(N)*F(N))
menta la función ICEROP OL(A, R, T OL, N, N maxx),
DO 10 K=2,N
que devuelve las raíces reales de un polinomio. Dicha sub-
10 PI(2)=PMAX
rutina tiene como parámetros un vector A(), donde es-
*** Calculo de los coeficientes del
tán los coeficientes del polinomio, un vector R(), donde
*** polinomio derivada
se guardan las raíces del polinomio una vez calculadas,
DO 7 K=2,N
la tolerancia T OL, con la que consideramos que dos
7 PI(K)=PMAX
números son iguales, el grado del polinomio N, y el
DO 4 K=N-2,0,-1
número máximo de iteraciones N max xx, para el proceso
DO 5 L=0,N-K
de Newton-Raphson. También se define la función aux-
AP(L)=A(L+K)*(F(K+L)/F(L))
iliar RP (N, A, X1, X2, T OL, N maxx, R, L), que devuelve
5 CONTINUE
la raíz del polinomio que se obtiene aplicando el método
***CALCULAR LOS CEROS DE AP EN LOS INTER-
de Newton-Raphson, tomando como valor inicial el punto
VALOS PI()
medio del intervalo [X1, X2].
DO 6 L=1,N-K
PI(L)=RP(N-K,AP,PI(L-
1),PI(L),TOL,Nmaxx,R,L-1)
PARAMETER(NMAX=30) 6 CONTINUE
DIMENSION A(0:NMAX),R(0:NMAX-1) 4 CONTINUE
COMMON/POL/PX,PPX *** Pasamos las raices al vector R()
PRINT *,’Escribir Grado del Polinomio’ M=0
READ *,N DO 8 K=1,N
IF(N.GT.NMAX) THEN IF(R(K-1).EQ.0) THEN
PRINT *, ’Grado Superior al Maximo’ R(M)=PI(K) M=M+1
STOP ENDIF
ENDIF 8 CONTINUE
PRINT *,’Escribir Coef. Polin.’ ICEROPOL=M
DO 1 K=0,N END
1 READ *,A(K)
PRINT *, ’Escribir Tolerancia’
READ *,TOL FUNCTION RP(N,A,X1,X2,TOL,Nmaxx,R,L)
PRINT *, ’Escribir No. iter. Max. para Newton- DIMENSION A(0:*),R(0:*)
Raphson’ COMMON/POL/PX,PPX
READ *,Nmaxx R(L)=1.
M=ICEROPOL(A,R,TOL,N,Nmaxx) IF (X1.EQ.X2) THEN
PRINT *,’El Pol. tiene’,M,’ raices’ RP=X1
DO 9 K=0,M-1 RETURN
9 PRINT *,R(K) ENDIF
END RP=(X1+X2)/2.
DO 1 K=1,Nmaxx
CALL HORNER(N,A,RP)
FUNCTION ICEROPOL(A,R,TOL,N,Nmaxx) IF (PPX.EQ.0.) THEN
PARAMETER(NMAX=30) IF(PX.EQ.0.) THEN

13
R(L)=0. Ejemplo 5 Consideremos una función f (x) = ex , vamos
RETURN a interpolarla en los puntos x0 = 0, x1 = −1 y x2 = 1.
ELSE Para calcular P2 (x), el polinomio interpolador de Lagrange
RETURN ENDIF en estos puntos, calcularíamos los polinomios base:
ELSE
RP1=RP-PX/PPX
IF(IGUAL(RP1,RP,TOL).EQ.0) THEN (x + 1)(x − 1)
P 0 (x) =
RP=RP1 −1
R(L)=0. x(x − 1)
P 1 (x) =
RETURN 2
ELSE x(x + 1)
P 2 (x) =
RP=RP1 2
ENDIF
ENDIF siendo el polinomio interpolador:
1 CONTINUE
END
(x + 1)(x − 1) x(x − 1) x(x + 1)
P2 (x) = e0 + e−1 +e
−1 2 2
Problema 23 (2 puntos) Aislar en intervalos las raíces
del polinomio P (x) = 2x3 + 3x2 − 12x + 1.

En la siguiente figura comparamos la gráfica del poli-


nomio P2 (x) (trazo continuo) con la gráfica de la función
INTERPOLACIÓN DE FUNCIONES I ex (trazo discontinuo)
El problema general de la interpolación de funciones con- y
siste en, a partir del conocimiento del valor de una función 4
(y eventualmente de sus derivadas) en un conjunto finito
de puntos, aproximar el valor de la función fuera de ese 3
conjunto finito de puntos.
2

Interpolación por polinomios de Lagrange 1

Sea una función f (x) que conocemos en un conjunto finito


de valores {xi }i=0,..,N . Es decir, sabemos que f (xi ) = -1.5 -1 -0.5 0 0.5 1 1.5

fi . El polinomio interpolador de Lagrange PN (x) de f (x) x

en los puntos {xi }i=0,..,N , es el único polinomio de grado


menor o igual que N tal que

PN (xi ) = f (xi ) ∀i = 0, .., N Problema 24 (2 puntos) Calcular el polinomio inter-


polador de Lagrange P3 (x) de la función f (x) = sen(x) en
PN (x) se puede expresar en término de los denomina- los puntos 0, π2 , π y 3π
2 .
dos polinomios base de Lagrange P i (x), definidos como:

ΠN
j6=i (x − xj )
P i (x) =
ΠN
j6=i (xi − xj ) Teorema 9 El polinomio interpolador de Lagrange es el
único polinomio de grado igual o inferior a N tal que
estos polinomios base tienen la propiedad fundamental
siguiente ½ PN (xi ) = f (xi ) ∀i = 0, .., N
1 si i = j
P i (xj ) =
0 si i 6= j Demostración Sea P (x) un polinomio de grado inferior o
igual a N que verifique que P (xi ) = f (xi ) ∀i = 0, .., N.
Por tanto, el polinomio interpolador de Lagrange
Entonces, el polinomio Q(x) = P (x) − PN (x) es un poli-
puede expresarse como
nomio de grado inferior o igual a N que verifica que
N
X Q(xi ) = 0 y, por tanto, posee N + 1 raíces, lo cual es
PN (x) = f (xi )P i (x) imposible, salvo que Q(x) sea identicamente igual a cero.
i=0 Por tanto Q(x) ≡ 0 y P (x) = PN (x).

14
Error de interpolación de Lagrange y polinomios entonces
de Chebychev µ ¶N+1
b−a 1
Evidentemente, al aproximar f (x) por el polinomio inter- max | ΠN
i=0 (x − xi ) |= ≤
x∈[a,b] 2 2N
polador PN (x) en un intervalo [a, b] se comete, en general,
un error de interpolación, que viene determinado por el ≤ max | ΠN ej ) |
j=0 (x − x
x∈[a,b]
siguiente teorema.
para cualquier otra elección posible de valores de interpo-
Teorema 10 Sea f (x) una función, y PN (x) su polinomio ej .
lación x
interpolador de Lagrange en los puntos {xi }i=0,..,N ⊂ [a, b]
y x ∈ [a, b], entonces Demostración La demostración para el intervalo [−1, 1]
se encuentra en [Ki-Ch] Pg. 292-294. La demostración
f N +1) (ξ) N para un intervalo cualquiera [a, b] se obtiene fácilmente
f (x) − PN (x) = Π (x − xi )
(N + 1)! i=0 transformando el intervalo [−1, 1] en [a, b].

donde ξ es un valor intermedio perteneciente a [a, b]. Por tanto, utilizando este resultado, el error de inter-
polación máximo viene determinado por:
Demostración Si x = xi , el error de interpolación es cero
y por tanto la fórmula anterior es válida. Consideremos µ ¶N+1
maxx∈[a,b] f N +1) (ξ) b−a
ahora x distinto a los xi y definamos | f (x) − PN (x) |≤
(N + 1)!2N 2
w(t) = ΠNi=0 (t − xi ) Ejemplo 6 Se considera [a, b] = [0, 1] y N = 5 (es decir
f (x) − PN (x) 6 puntos de interpolación). Los puntos de interpolación
λ =
w(x) dados por el teorema anterior son:
φ(t) = f (t) − PN (t) − λw(t)
x0 = . 982 96
La función φ(t) tiene al menos n + 1 ceros en los pun- x1 = . 853 55
tos xi y en el punto x. Por tanto, su función derivada φ0 (t) x2 = . 629 41
tiene al menos n ceros repartidos entre los ceros de φ(t).
Análogamente, φ00 (t) tiene al menos n − 1 ceros y así suce- x3 = . 370 59
sivamente hasta llegar a φN+1 (t), que tiene al menos 1 x4 = . 146 45
cero. Si llamamos ξ a dicho cero, obtenemos x5 = 1. 703 7 × 10−2

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

de donde, despejando y sustituyendo λ por su valor, obten- Problema 26 (2 puntos) Calcular el error máximo de
emos el resultado del Teorema. interpolación en el intervalo [0, 1] al interpolar la función
cos(x) en los puntos descritos en el ejemplo anterior.

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 caso de que [a, b] = [−1, 1], los valores ópti-
en el intervalo [0, 2π] interpolando en los puntos 0, π2 , π y mos de interpolación xi dados por la fórmula anterior son

2 , y acotarlo superiormente. las raíces de los denominados polinomios de Chebychev,
TN (x), construidos de la manera siguiente:

La cuestión que vamos a abordar en este apartado es, T0 (x) = 1


en el caso en que queramos interpolar una función en un T1 (x) = x
intervalo [a, b], y que nosotros podamos elegir los valores de
interpolación xi , cómo elegirlos de tal forma que el error de TN (x) = 2xTN−1 (x) − TN −2 (x)
interpolación sea mínimo. Para ello, elegiremos los puntos
xi tales que ΠN i=0 (x − xi ) sea lo más pequeño posible en
Método de diferencias de Newton para el cálculo
[a, b]. del 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 polinomios
Teorema 11 Sea N ≥ 0, y un intervalo [a, b] Se consid-
de grado N. Además, si queremos añadir un nuevo punto
eran los puntos xi dados por
de interpolación, debemos cambiar todos los polinomios
µ µ ¶¶ base de Lagrange. Un método más directo para el cál-
b−a 2i + 1
xi = a + 1 + cos π i = 0, ..., N culo de PN (x) es el denominado método de diferencias de
2 2N + 2

15
Newton. El método consiste en ir calculando progresiva- Demostración En primer lugar, observamos que
mente los polinomios Pk (x) que interpolan la función en f [xi , ..., xi+k ] indica, para cada Pk (x), el coeficiente que
los puntos x0 , ..., xk de la siguiente forma: acompaña a la potencia xk en el polinomio interpolador
Pk (x) para los puntos xi , ..., xi+k . Como el polinomio in-
P0 (x) = a0
terpolador es único, f [xi , ..., xi+k ] no depende del orden en
P1 (x) = P0 (x) + a1 (x − x0 ) que tomemos los puntos xi , ..., xi+k y, por tanto:
P2 (x) = P1 (x) + a2 (x − x0 )(x − x1 )
f [xi , ....., xi+k ] = f [xi+k , ....., xi ]
...
PN (x) = PN −1 (x) + aN (x − x0 )(x − x1 )...(x − xN−1 ) Consideremos ahora el polinomio interpolador Qk (x)
que interpola en los puntos xi+k , ..., xi , es decir, cambiando
A los coeficientes ak los denotamos por el orden de los puntos. Qk (x) se puede escribir como
ak = f [x0 , ..., xk ]
Qk (x) = b0 + b1 (x − xi+k ) + b2 (x − xk+i )(x − xk+i−1 ) + ...

donde
Ejemplo 7 Vamos a interpolar la función f (x) = ex en bj = f [xi+k , .., xi+k−j ]
los puntos x0 = 0, x1 = 1 y x2 = 2.
Por la unicidad del polinomio interpolador obtenemos
P0 (x) = 1 que Pk (x) = Qk (x) y, por tanto
P1 (x) = 1 + a1 x
ak = f [xi , ....., xi+k ] = f [xi+k , ....., xi ] = bk
Como P1 (1) debe ser igual a e, despejando obtenemos
De nuevo, por la unicidad del polinomio interpolador,
a1 = e − 1 los coeficientes que acompañan a la potencia xk−1 en am-
Por último bos polinomios coinciden y, por tanto:
k−1
X k
X
P2 (x) = P1 (x) + a2 x(x − 1)
ak−1 − ak xi+j = bk−1 − bk xi+j
Como P2 (2) debe ser igual a e2 , despejando obten- j=0 j=1
emos
e2 − P1 (2) Despejando obtenemos
a2 =
2 bk−1 − ak−1
Por tanto, el polinomio P2 (x) lo expresamos como ak =
xk+i − xi
e2 − 2e + 1
P2 (x) = 1 + (e − 1)x + x(x − 1) Finalmente obtenemos el resultado del teorema, te-
2 niendo en cuenta que
ak−1 = f [xi , ...., xi+k−1 ]
Como veremos en el teorema siguiente, los coeficientes bk−1 = f [xi+k ...., xi+1 ] = f [xi+1 ...., xi+k ]
f [x0 , ..., xk ], que se denominan diferencias divididas de
Newton, verifican las siguientes propiedades:
Ejemplo 8 Sea f (x) = ex , si interpolamos f (x) en los
f [xi ] = f (xi )
puntos x0 = 0, x1 = 1, x2 = 2, x3 = 3, obtenemos el
f [xi+1 ] − f [xi ] polinomio interpolador de la siguiente forma:
f [xi , xi+1 ] =
xi+1 − xi
. f [0, 1] = e1 − 1
f [xi+1 , .., xi+k ] − f [xi , .., xi+k−1 ]
f [xi , .., xi+k ] = f [1, 2] = e2 − e1
xi+k − xi
f [2, 3] = e3 − e2
e2 − 2e + 1
Teorema 12 Si denotamos por ak = f [x0 , .., xk ], en- f [0, 1, 2] =
2
tonces el polinomio de interpolación de Lagrange PN (x) e3 − 2e2 + e1
viene dado por f [1, 2, 3] =
2
N
X e3 − 3e2 + 3e1 − 1
PN (x) = ak Πk−1 f [0, 1, 2, 3] =
i=0 (x − xi ) 6
k=0
Por tanto el polinomio interpolador de Lagrange es:
donde los coeficientes f [xi , ..., xk ] verifican
e2 − 2e + 1
f [xi+1 , .., xi+k ] − f [xi , .., xi+k−1 ] P3 (x) = 1 + (e − 1) x + x(x − 1) +
f [xi , .., xi+k ] = 2
xi+k − xi
e3 − 3e2 + 3e1 − 1
x(x − 1)(x − 2)
6

16
En la siguiente gráfica se muestra la diferencia ex − PARAMETER(Nmax=1000)
P3 (x) en el intervalo [0, 3] : DIMENSION A(0:1000),F(0:1000),X(0:1000)
PRINT *,’Introducir No. Ptos Interp.’
READ *,N
N=N-1
y
0.1 PRINT *,’Introducir Ptos Interpol.’
0.05 DO 1 K=0,N
0
1 READ *, X(K)
0 0.5 1 1.5 2 2.5 3 PRINT *,’Introducir Valores de F()’
-0.05 x
DO 2 K=0,N
-0.1
2 READ *,F(K)
-0.15 IF(IDIFNEWTON(A,X,F,N).EQ.1) THEN
-0.2 PRINT *,’Puntos de Interpolacion repetidos’
-0.25
STOP
ENDIF
PRINT *,’Coef. Polinomio’
DO 3 K=0,N
3 PRINT *,A(K)
PRINT *,’Test de Comprobacion’
Problema 27 (2 puntos) Interpolar la función f (x) = DO 4 K=0,N
10
x2 +1 en los puntos x0 = −2, x1 = −1, x2 = 1, x3 = 2 4 PRINT *,X(K),F(K),EVDIFNEWTON(A,X,X(K),N)
utilizando las diferencias de Newton y evaluar el polinomio END
en x = 0 utilizando el algoritmo de Horner.
FUNCTION IDIFNEWTON(A,X,F,N)
Parameter(Nmax=1000)
Problema 28 (2 puntos) Calcular el polinomio inter- DIMENSION A(0:*),X(0:*),F(0:*),B(0:Nmax)
polador de Lagrange P3 (x) de la función f (x) = sen(x) en DO 1 K=0,N
los puntos 0, π2 , π y 3π
2 utilizando las diferencias divididas 1 B(K)=F(K)
de Newton. A(0)=F(0)
DO 2 K=1,N
DO 3 L=0,N-K
Problema 29 (3 puntos) Calcular el polinomio inter- IF (X(K+L).EQ.X(L)) THEN
polador de Lagrange P3 (x) de la función f (x) = 2x en IDIFNEWTON=1
los puntos 0, 1, 3 y 4 utilizando las diferencias divididas de RETURN
Newton. Expresar el polinomio tomando en primer lugar ENDIF
x0 = 0, x1 = 1, x2 = 3 y x3 = 4 y, en segundo lugar, B(L)=(B(L+1)-B(L))/(X(K+L)-X(L))
x0 = 4, x1 = 3, x2 = 1 y x3 = 0. 3 CONTINUE
A(K)=B(0)
2 CONTINUE
Problema 30 (3 puntos) Dada una función f (x) y una IDIFNEWTON=0
secuencia de valores xn , aproximar f (x) por la parábola END
que pasa por los puntos (xn−1 , f (xn−1 )) , (xn−2 , f (xn−2 ))
y (xn−3 , f (xn−3 )). Calcular posteriormente las derivadas
del polinomio y comprobar que coinciden con las fórmu- FUNCTION EVDIFNEWTON(A,X,X0,N)
las dadas en el método de Müller para el cálculo de las DIMENSION A(0:*),X(0:*)
derivadas f 00 (xn−1 ) y f 0 (xn−1 ). EVDIFNEWTON=A(N)
DO 1 K=N-1,0,-1
Programa 10 Programa en Fortran 77 donde se definen 1 EVDIFNEWTON=EVDIFNEWTON*(X0-
las funciones IDIFNEWTON, que a partir del vector X(0 : X(K))+A(K)
N ) de puntos de interpolación y el vector F (0 : N ) END
de valores de la función f (x) en los puntos de interpo-
lación, devuelve el vector A(0 : N ) de coeficientes de
diferencias 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 por
el vector A(0 : N ) y el conjunto de puntos de interpo-
lación, devuelve el valor de la evaluación del polinomio de
Lagrange en el punto X0.

17
Implementación de funciones elementales Aproximación de funciones trigonométricas
Una vez definida una aritmética en precisión finita y las 4 Utilizaremos como modelo las funciones f (x) = cos(x) y
operaciones básicas (suma, resta, multiplicación, división), f (x) = sen(x). Puesto que estas funciones son 2π per-
es necesario definir, a partir de estas operaciones, las fun- iódicas, utilizando algunas relaciones trigonométricas es
ciones elementales
√ que todos usamos, como son: la raíz suficiente definir las funciones cos(x) y sen(x) en el in-
cuadrada x, las funciones trigonométricas: sen(x) cos(x) tervalo [0, π4 ] y a partir de ellas definir las funciones para
y tan(x), la función ln(x), la función ex , la función xy , etc. cualquier valor x (en radianes). Efectivamente, denotemos
Las técnicas elementales para definir estas funciones con- por cos[0, π4 ] (x) y sen[0, π4 ] (x) a las funciones trigonométri-
sisten en utilizar la interpolación polinómica, los desarrol- cas definidas sobre el intervalo [0, π4 ]. Podemos definir en-
los de Taylor y los algoritmos
√ de búsqueda de ceros (como tonces las siguientes funciones:
vimos anteriormente para x). ½
cos[0, π4 ] (x) si x ≤ π4
cos[0, π2 ] (x) =
sen[0, π4 ] ( 2 − x) si x > π4
π

Aproximación de la exponencial ex ½ π
sen[0, π4 ] (x) si x ≤ 4
Un número real x siempre se puede expresar como x = sen[0, π2 ] (x) = π π
cos[0, 4 ] ( 2 − x) si x >
π
4
m + x0 , donde m es un número entero y x0 ∈ [0, 1]. Dado ½ π
que cos[0, π2 ] (x) si x ≤ 2
0 cos[0,π] (x) = π
ex = em ex − cos[0, π2 ] (π − x) si x > 2
½
podemos descomponer el cálculo de ex en el cálculo, por sen[0, π2 ] (x) si x ≤ π
2
un lado, de em , donde al ser m un entero el cálculo es in- sen[0,π] (x) = π
sen[0, π2 ] (π − x) si x > 2
mediato a partir de multiplicaciones sucesivas de potencias ½
naturales de e ó e−1 (si m<0), y por otro, en el cálculo cos[0,π] (x) si x ≤ π
cos[0,2π] (x) =
0
de ex para x0 ∈ [0, 1]. Utilizando como puntos de interpo- cos[0,π] (2π − x) si x > π
½
lación los asociados a los polinomios de Chebychev: sen[0,π] (x) si x ≤ π
µ µ ¶¶ sen[0,2π] (x) =
1 2i + 1 −sen[0,π] (2π − x) si x > π
xi = 1 + cos π i = 0, ..., N
2 2N + 2
El desarrollo en Serie de Taylor centrado en 0 del
obtenemos que el error relativo verifica que: cos(x) es:
0 µ ¶N+1
| ex − PN (x) | e 1 x2 x4 x2n
≤ cos(x) u Pn (x) = 1. − + + .... + (−1)n
ex0 (N + 1)!2N 2 2 4! (2n)!
Para N = 6, el error relativo es menor que 6.6 × 10−8 y el error máximo cometido por el desarrollo de Taylor en
y, por tanto, del mismo orden que la unidad de redondeo un punto x ∈ [0, π4 ] es
u en una aritmética de 32 bits. Asi, tomando un poli-
nomio de grado N = 6, es decir 7 puntos de interpolación, (x)2n+1
obtenemos ya la mejor aproximación posible de ex en el | Pn (x) − cos(x) |≤ sen(x)
(2n + 1)!
intervalo [0, 1] en una aritmética de 32 bits.
La ventaja de utilizar el desarrollo de Taylor centrado
Práctica 3 (Aproximación de ex , 2 horas) en 0 es que las potencias impares de x no aparecen, lo que
simplifica el cálculo numérico. El error relativo es
Crear una función en Fortran 77 que devuelva el valor de
ex con x ∈ [0, 1] utilizando el polinomio de Lagrange P6 (x) | Pn (x) − cos(x) | (x)2n+1
que interpola a ex en los puntos: ≤ tan(x)
cos(x) (2n + 1)!
µ µ ¶¶ Además, como tan(x) es creciente en [0, π4 ], el valor
1 2i + 1
xi = 1 + cos π i = 0, ..., 6 máximo del error se encuentra en x = π4 . Por ejemplo, para
2 14
n = 5 obtenemos que el error relativo máximo cometido
Comprobar que el polinomio esta bien construido, es en x = π4 es del orden de
decir que P6 (xi ) = exi para todos los xi . Introducir por ¡ π ¢2∗5+1
teclado un valor x, evaluar y mostrar P6 (x) y ex . Utilizar π
x = 0, 1, 0.5, 2 y 3. tan( ) 4 = 1. 8 × 10−9
4 (2 ∗ 5 + 1)!
Nota: Utilizar las funciones de an.h IDIFNEWTON(.), Por tanto, si trabajamos con una aritmética de 32 bits,
que calcula el polinomio interpolador a partir de los pun- cuya unidad de redondeo u es del orden de 10−8 , tenemos
tos y valores de interpolación, y EVDIFNEWTON(.), que que con n = 5 obtenemos una aproximación del cos(x) que
evalua el polinomio interpolador en un punto. es la mejor posible dentro de esta aritmética y no tendría
sentido aumentar el valor de n.

18
Problema 31 (3 puntos) Aproximar la función sen(x) Para N = 10 el error máximo es 3. 973 6 × 10−8 , que
en el intervalo [0, π4 ] utilizando el desarrollo de Taylor y es menor que la unidad de redondeo u y, por tanto, en una
calcular el valor de n a partir del cual la aproximación es aritmética de 32 bits tendríamos la mejor aproximación
la mejor posible dentro de una aritmética de 32 bits. posible de la función ln(x).

Problema 32 (2 puntos) Demostrar que, utilizando Problema 34 (1 punto) ¿Cómo se puede obtener la fun-
relaciones trigonométricas, es posible calcular las fun- ción y x , donde x e y son números reales, utilizando las
ciones sen(x) y cos(x) para cualquier x (en radianes), uti- funciones ex y ln(x)?
lizando únicamente su valor en el intervalo [0, π8 ].

Problema 33 (3 puntos) Calcular los polinomios nece- ANÁLISIS NUMÉRICO MATRICIAL I


sarios para interpolar las funciones trigonométricas cos(x) En esta primera sección dedicada a la resolución de sis-
y sen(x) en el intervalo [0, π8 ] en una aritmética de 32 bits. 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
Aproximación de la función ln(x) Au = b

Como hemos visto anteriormente, un número x real en donde A = (ai,j ) es una matriz de N xN, b = (bi ) es un
una aritmética de precisión finita viene expresado habit- vector de tamaño N que determina los términos indepen-
ualmente como à t ! dientes, y u = (ui ) es el vector solución buscado.
X an
m
x=2 Método de Gauss
n=1
2n
donde m es un número entero, a1 = 1 y para´n > 1 an = 0 Este método, aunque no es de los más rápidos, tiene la gran
³P
t an ventaja de que se puede aplicar a todo tipo de matrices,
ó an = 1. Por tanto, el número n=1 2n es mayor o
algo que, como veremos en el futuro, no ocurre con otros
igual que 12 y menor que 1. Aplicando las propiedades del métodos más rápidos, pero que requieren, por ejemplo,
ln(x) obtenemos que que la matriz sea simétrica o definida positiva. El método
à t ! de Gauss se basa en transformar el sistema Au = b en
X an
ln(x) = m ln(2) + ln un sistema equivalente A0 u = b0 tal que la solución sea
n=1
2n la misma y que la matriz A0 sea triangular superior, es
decir, que tenga valores nulos de la diagonal hacia abajo.
Dado que el número ln(2) es una constante que supon- Una vez obtenidos la matriz A0 y el vector b0 , el cálculo
dremos calculada anteriormente ( ln(2) ∼ = .6931471806), de la solución u es inmediata, siguiendo un remonte de las
podemos reducir el cálculo del ln(x) al rango de valores variables a través del siguiente esquema recursivo:
1
2 ≤ x ≤ 1.
Utilizaremos los puntos de interpolación generados b0N
por los polinomios de Chebychev, que para el intervalo uN =
a0N,N
[ 12 , 1] son: PN
0
µ µ ¶¶ bk − l=k+1 a0k,l ul
1 1 2i + 1 uk = k = N − 1, .., 1
xi = + 1 + cos π i = 0, ..., N a0k,k
2 4 2N + 2
Dado que ln(1) = 0, para minimizar el error relativo
añadiremos como punto interpolante xN +1 = 1. El error
de interpolación relativo entre PN +1 (x) y ln(x) es: Problema 35 (2 puntos) Calcular el número de op-
eraciones básicas (sumas, restas, multiplicaciones y divi-
| ln(x) − PN+1 (x) | | (x − 1)ΠN
i=0 (x − xi ) | siones) necesarias para realizar un remonte como el pre-
= N +1 sentado arriba en función de la dimensión N .
| ln(x) | ξ (N + 2) | ln(x) |
donde ξ ∈ [ 12 , 1]. Además se tiene que en el intervalo [ 12 , 1] Para obtener A0 y b0 se calcula, en primer lugar, el
valor máximo en valor absoluto de la primera columna de
|x−1| A, denominado pivote. A continuación, se intercambia la
≤1
| ln(x) | primera fila de A con la fila donde se encuentra el pivote,
Por tanto: y se hace lo mismo con el vector b, para que el sistema
µ ¶N +1 sea equivalente. A continuación, se multiplica la primera
| ln(x) − PN +1 (x) | 2N+1 1 1 fila de A por el valor −a
a1 y se suma a la fila k − ésima
k

| ln(x) | (N + 2) 4 2N de A para k = 2, ..., N. Se hace lo mismo para el vector

19
b, y con ello habremos obtenido un sistema equivalente Problema 39 (2 puntos) Resolver por el método de
tal que la primera columna es cero de la diagonal hacia Gauss el siguiente sistema de ecuaciones:
abajo. Volvemos ahora a hacer lo mismo para convertir ⎛ ⎞⎛ ⎞ ⎛ ⎞
la segunda columna cero de la diagonal para abajo, y así 0 −1 2 u1 1
⎝ −1 2 −1 ⎠ ⎝ u2 ⎠ = ⎝ 0 ⎠
sucesivamente hasta llegar a la mencionada matriz A0 .
2 −1 0 u3 1

Ejemplo 9 Ejemplo de descomposición según el método


de Gauss. Se considera el sistema Programa 11 Programa en fortran 77 que implementa
⎛ ⎞⎛ ⎞ ⎛ ⎞
−2 −2 0 u1 0 el método de Gauss. Se define una función IGAU SS que
⎝ 6 18 12 ⎠ ⎝ u2 ⎠ = ⎝ 24 ⎠ tiene como parámetros la matriz A, el vector independi-
3 11 7 u3 8 ente b, un vector auxiliar N row, la dimensión del sistema
y la dimensión máxima admitida. La función devuelve un
La descomposición de la matriz A lleva las siguientes
valor entero M que indica si se ha terminado correcta-
fases:
⎛ ⎞ ⎛ ⎞ mente (M = 0) o incorrectamente (M = 1, 2). En el caso
−2 −2 0 6 18 12 en que se ha terminado correctamente, la solución se de-
⎝ 6 −−−−→
18 12 ⎠ pivoteo ⎝ −2 −2 0 ⎠ vuelve en el propio vector b.
3 11 7 3 11 7
⎛ ⎞ ⎛ ⎞ Parameter(Nmax=1000)
6 18 12 −−−−−−−−−−−−−→ 6 18 12
⎝ −2 −2 0 ⎠ ceros 1a colu mna ⎝ 0 4 4 ⎠ DIMENSION A(Nmax,Nmax),B(Nmax),Nrow(Nmax)
PRINT *, ’Introducir Dimension’
3 11 7 0 2 1
⎛ ⎞ ⎛ ⎞ READ *,N
6 18 12 −−−−−−− − −−−−−→ 6 18 12 PRINT *,’Introducir matriz’
⎝ 0 4 4 ⎠ ceros 2a colu mna ⎝ 0 4 4 ⎠ DO 2 K=1,N
0 2 1 0 0 −1 DO 2 L=1,N
de la misma forma, el vector b se ha transformado de la 2 READ *,A(K,L)
forma siguiente PRINT *,’Introducir vector’
⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ DO 3 K=1,N
0 24 24 24 3 READ *,B(K)
⎝ 24 ⎠ → ⎝ 0 ⎠→⎝ 8 ⎠→⎝ 8 ⎠ M=IGAUSS(A,B,N,Nrow,Nmax)
8 8 −4 −8 IF(M.EQ.0) THEN
y el remonte da como solución u1 = 6, u2 = −6, u3 = 8. PRINT *,’SOLUCION’
DO 1 K=1,N
PRINT *,B(K)
Problema 36 (2 puntos) Resolver por el método de 1 CONTINUE
Gauss
µ el sistema¶ µ ¶ µ ¶ ELSE IF(M.EQ.1)THEN
−1 2 x 3
= PRINT *,’Una columna es toda cero’
2 −1 y 0
ELSE
PRINT *,’A(N,N)=0’
Problema 37 (3 puntos) Calcular el número de op- ENDIF
eraciones básicas necesarias para descomponer el sistema END
Au = b en el sistema A0 u = b0 utilizando el método de
Gauss, teniendo en cuenta la siguiente relación: FUNCTION IGAUSS(A,B,N,Nrow,Nmax)
M−1
X PARAMETER (NmaxGAUSS=1000)
1 3 1 2 1
k2 = M − M + M DIMENSION A(Nmax,*),B(*),Nrow(*)
3 2 6 DIMENSION U(NmaxGAUSS)
k=1
IF (N.GT .NmaxGAUSS) THEN
IGAUSS=3
Problema 38 (2 puntos) Implementar en FORTRAN PRINT *,’DIMENSION DEL SISTEMA MAYOR
la funcion IDESCEN SO(A, b, u, N, N max) que resuelve DE LA PERMITIDA’
un sistema, donde A es una matriz triangular inferior, b es RETURN
el vector de términos independientes, u el vector solución, ENDIF
N es la dimensión real del sistema y N max la dimensión DO 1 K=1,N
que se utilizó para reservar la memoria de la matriz A. La 1 Nrow(K)=K
función devuelve 0 si termina correctamente y 1 en caso DO 2 K=1,N-1
contrario. Nota Importante: Las líneas de código tienen XMax=ABS(A(Nrow(K),K))
que ir todas numeradas y no pueden superar las 15 líneas. M=K
DO 3 L=K+1,N

20
IF(ABS(A(Nrow(L),K)).GT.XMax) THEN donde N es la dimensión del sistema y ErrorSistema rep-
XMax=ABS(A(Nrow(L),K)) resenta el error relativo medio al resolver el sistema. En
M=L el denominador se añade 1 para evitar las posibles divi-
ENDIF siones por 0. Cuanto más pequeño sea ErrorSistema, mejor
3 CONTINUE aproximada estará la solución del sistema.
IF(XMax.LT.(2.**(-100))) THEN
IGAUSS=1
RETURN Método de Cholesky
ENDIF
IF(K.NE.M) THEN Este método sólo se puede aplicar a matrices simétricas
MP=Nrow(K) y definidas positivas. El siguiente teorema da 3 posibles
Nrow(K)=Nrow(M) definiciones equivalentes de una matriz definida positiva.
Nrow(M)=MP
ENDIF
Teorema 13 Sea A una matriz simétrica, las 3 siguientes
DO 4 L=K+1,N
afirmaciones son definiciones equivalentes a que una ma-
C=A(Nrow(L),K)/A(Nrow(K),K)
triz sea definida positiva
DO 5 M=K,N
(i) ∀ v ∈ <N − {0} se cumple que t vAv > 0.
A(Nrow(L),M)=A(Nrow(L),M)-
(ii) Todos los autovalores λ de A son positivos.
C*A(Nrow(K),M)
(iii) Los determinantes de todos los menores princi-
5 CONTINUE
pales de A son positivos.
B(Nrow(L))=B(Nrow(L))-C*B(Nrow(K))
4 CONTINUE
2 CONTINUE El método de Cholesky se basa en descomponer la
IF(ABS(A(Nrow(N),N)).LT.(2.**(-100))) THEN matriz A en la forma:
IGAUSS=2
RETURN A = B·B t
ENDIF
U(N)=B(Nrow(N))/A(Nrow(N),N) donde B es una matriz triangular inferior.
DO 6 K=N-1,1,-1 ⎛ ⎞
b1,1 0 0 . 0
C=0 ⎜ b2,1 ⎟
⎜ b2,2 0 . . ⎟
DO 7 L=K+1,N
B=⎜ ⎜ b3,1 b3,2 b3,3 . . ⎟

C=C+A(Nrow(K),L)*U(L) ⎝ . ⎠
. . . 0
7 CONTINUE
bn,1 bn,2 bn,3 . bn,n
U(K)=(B(Nrow(K))-C)/A(Nrow(K),K)
6 CONTINUE
DO I=1,N
B(I)=U(I)
Problema 40 (2 puntos) Demostrar que si A = B · B t
ENDDO
(B triangular inferior) y |B| 6= 0, entonces A es simétrica
IGAUSS=0
y definida positiva.
END

Problema 41 (2 puntos) Descomponer la siguiente ma-


triz A por el método de Cholesky:
Estimación del error de un método para resolver ⎛ ⎞
sistemas 1 1 4
A=⎝ 1 5 6 ⎠
4 6 26
Para estimar la fiabilidad de la solución numérica de un
sistema de ecuaciones, haremos lo siguiente: dada una ma-
triz A, un vector de términos independientes b y un vector De forma general, el algoritmo para calcular B es el
solución u, calculado utilizando alguna técnica numérica, siguiente
si la solución es perfecta entonces Au − b = 0. Ahora bien,
esto no suele suceder, porque los errores de redondeo y de Para i =r1, ..., N
³ P ´
cálculo producen que esta estimación no sea exacta. Para bi,i = ai,i − i−1 b 2
k=1 i,k
estimar el error cometido al resolver el sistema utilizaremos
la expresión siguiente, donde e es el vector e = Au − b : Para j = i +³1, ..., N ´
P
1
bj,i = bi,i aj,i − i−1 b j,k b i,k
1 X |ei |
k=1
ErrorSistema = Fin Para j
N |bi | + 1 Fin Para i

21
El interés de descomponer una matriz A por el método Hay que hacer una versión en simple precisión y otra
de Cholesky es que, a continuación, es muy sencillo resolver versión en doble precisión donde todas las variables que
el sistema de ecuaciones Au = b. Efectivamente, basta empiecen por D sean de doble precisión (la matriz A y
descomponer el sistema de la siguiente forma: el vector B siempre serán de simple precisión). Hay que
resolver los sistemas ejemplo y calcular el ErrorSistema,
Bz = b tanto en doble como en simple precisión.
t Nota: El programa debe permitir introducir el sistema
Bu = z
directamente por teclado o desde disco duro, utilizando
Ambos sistemas se resuelvan rápidamente haciendo las funciones definidas en an.h. Resolver los siguientes
un remonte y un descenso. sistemas ejemplo:
⎛ ⎞⎛ ⎞ ⎛ ⎞
Nota: Normalmente, para evitar tener que almacenar dos 1 1 4 x 6
matrices, una para B y otra para B t , se almacena todo 1. ⎝ 1 5 6 ⎠ ⎝ y ⎠ = ⎝ 12 ⎠
en una única matriz B, simétrica, escribiendo en la parte 4 6 26 z 36
triangular superior de B la parte correspondiente a B t . ⎛ ⎞⎛ ⎞ ⎛ ⎞
1 1 4 x 6
2. ⎝ 1 1 4 ⎠ ⎝ y ⎠ = ⎝ 12 ⎠
Problema 42 (2 puntos) Calcular el número de opera- 4 4 17 z 36
ciones necesarias para resolver un sistema por el método ⎛ ⎞⎛ ⎞ ⎛ ⎞
de Cholesky. 1 1 4 x 6
3. ⎝ 1 5 6 ⎠ ⎝ y ⎠ = ⎝ 12 ⎠
4 6 17 z 36
⎛ ⎞⎛ ⎞ ⎛ ⎞
Problema 43 (2 puntos) Demostrar que a partir de un 2 −1 0 x 1
método para resolver sistemas de ecuaciones se puede con- 4. ⎝ −1 2 −1 ⎠ ⎝ y ⎠ = ⎝ 0 ⎠
struir de forma inmediata un método para calcular la in- 0 −1 −4 z −5
versa A−1 de una matriz A.

Resolver también los sistemas que aparecen en


el directorio /users/asignaturas/ii-an de la máquina
Práctica 4 (Método de Cholesky, 6 horas) serdis.dis.ulpgc.es. En este directorio hay tres ejemplos
Implementar en Fortran 77 las siguientes funciones : de sistemas de dimensión 10, 100 y 500. Los 3 sistemas
corresponden a matrices simétricas y definidas positivas.
• FUNCTION ICHOLESKY_FACTORIZACION Estos archivos ejemplo sólo se pueden utilizar al compilar
(A,DB,N,Nmax): Calcula la descomposición de el programa en serdis bajo UNIX. Si utilizamos Linux, el
Cholesky de A y la devuelve en la matriz DB. De- programa no reconocerá el formato de los archivos.
vuelve 0 si termina bien y −1 en caso contrario.
• FUNCTION IDESCENSO(DB,DZ,B,N,Nmax): Re- Método de Crout para matrices tridiagonales
suelve un sistema triangular inferior, donde DB es la
matriz, B es el término independiente y DZ es el vec- El caso de sistemas de ecuaciones con matrices A tridi-
tor donde devuelve la solución. Devuelve 0 si termina agonales posee una forma especialmente simple de factor-
bien y −1 en caso contrario. ización. Vamos a descomponer A en el producto de dos
matrices triangulares de la forma siguiente:
• FUNCTION IREMONTE(DB,DU,DZ,N,Nmax): Re- ⎛ ⎞
suelve un sistema triangular superior, donde DB es la a1 b1 . 0
matriz, DZ es el término independiente y DU es el vec- ⎜ c1 a2 . 0 ⎟
⎜ ⎟=
tor donde devuelve la solución. Devuelve 0 si termina ⎝ 0 . . bN −1 ⎠
bien y −1 en caso contrario 0 . cN −1 aN
• FUNCTION ERROR_SISTEMA(A,DU,B,N,Nmax): ⎛ ⎞⎛ ⎞
l1 0 . 0 1 u1 . 0
Devuelve el error cometido al resolver el sistema dado ⎜ m1 l2 . 0 ⎟ ⎜ 0 ⎟
por la expresión ErrorSistema de la sección anterior. ⎜ ⎟⎜ 0 1 . ⎟
⎝ 0 . . 0 ⎠ ⎝ 0 . . uN −1 ⎠
• FUNCTION ICHOLESKY(A,B,DU,N,Nmax): Re- 0 . mN−1 lN 0 . 0 1
suelve un sistema por el método de Cholesky y de- Los vectores mi , li, y ui se calculan utilizando el es-
vuelve la solución en DU. Devuelve 0 si termina bien quema:
y −1 en caso contrario.
l1 = a1
u1 = bl11
Para i = 2, .., N − 1

22
mi−1 = ci−1 DIMENSION Vector(*)
li = ai − mi−1 ui−1 OPEN(1,FILE=String, STATUS=’NEW’,
ui = blii form=’UNFORMATTED’,ERR=1)
Fin Para GOTO 2
mN−1 = cN −1 1 OPEN(1,FILE=String, STATUS=’OLD’,
lN = aN − mN −1 uN −1 form=’UNFORMATTED’)
2 A=Ndimension
WRITE(1) A
Problema 44 (3 puntos) Demostrar el algoritmo de DO 3 K=1,Ndimension
Crout para descomponer matrices tridiagonales. WRITE(1) Vector(K)
3 CONTINUE
CLOSE(1)
END
Problema 45 (2 puntos) Resolver utilizando el método
de Crout el siguiente sistema de ecuaciones:
⎛ ⎞⎛ ⎞ ⎛ ⎞
2 4 0 x 6 ****** Función que lee una matriz cuadrada de disco
⎝ −1 0 4 ⎠ ⎝ y ⎠ = ⎝ 3 ⎠ de nombre String, lo almacena
0 −1 0 z −1 ****** en la tabla A y devuelve la dimension de la matriz
FUNCTION LeerMatriz(String,A,Nmax)
CHARACTER * (*) String
DIMENSION A(Nmax,*)
Problema 46 (2 puntos) Calcular el número de opera- OPEN(1,FILE=String, STATUS=’OLD’,
ciones necesarias para resolver un sistema tridiagonal por form=’UNFORMATTED’)
el método de Crout. READ(1) B
Ndimension=INT(B)
PRINT *,’DIMENSION DE LA MATRIZ ’,
Subrutinas en Fortran 77 para la lectura y escritura String,’=’, Ndimension
en disco de vectores y matrices DO 1 K=1,Ndimension
DO 2 L=1,Ndimension
Programa 12 Subrutinas en Fortran 77 que leen y es- READ(1) A(K,L)
criben en disco vectores y matrices. 2 CONTINUE
****** Función que lee un vector de disco de nombre 1 CONTINUE
String, lo almacena CLOSE(1)
****** en la tabla Vector y devuelve la dimension del vec- LeerMatriz=Ndimension
tor END
FUNCTION LeerVector(String,Vector)
CHARACTER * (*) String
DIMENSION Vector(*)
OPEN(1,FILE=String,STATUS=’OLD’, ***** Procedimiento que escribe en el fichero String la ma-
form=’UNFORMATTED’) triz A
READ(1) A ***** cuadrada de dimension Ndimension
Ndimension=INT(A) SUBROUTINE EscribirMa-
PRINT *,’DIMENSION DEL VECTOR triz(String,A,Ndimension,Nmax)
’,String,’=’,Ndimension CHARACTER * (*) String
DO 1 K=1,Ndimension DIMENSION A(Nmax,*)
READ(1) Vector(K) OPEN(1,FILE=String, STATUS=’NEW’,
1 CONTINUE form=’UNFORMATTED’, ERR=1)
CLOSE(1) GOTO 2
LeerVector=Ndimension 1 OPEN(1, FILE=String, STATUS=’OLD’,
END form=’UNFORMATTED’)
2 B=Ndimension
WRITE(1) B
DO 3 K=1,Ndimension
***** Procedimiento que escribe en el fichero String el vec- DO 4 L=1,Ndimension
tor Vector WRITE(1) A(K,L)
***** de dimension Ndimension 4 CONTINUE
SUBROUTINE EscribirVec- 3 CONTINUE
tor(String,Vector,Ndimension) CLOSE(1)
CHARACTER * (*) String

23
END DIFERENCIACIÓN E INTEGRACIÓN
NUMÉRICA

Una fórmula de diferenciación numérica es un proced-


imiento que permite aproximar la derivada de la función
Programa 13 Programa en Fortran 77 donde se describe f (x) en un punto xi. utilizando el valor de f (x) en otros
un ejemplo de lectura/escritura de vectores y matrices. puntos vecinos a xi . Por otro lado, una fórmula de inte-
gración numérica es un procedimiento que permite aprox-
INCLUDE ’an.h’ imar el valor de la integral en un intervalo [a, b] a partir
PARAMETER(Nmax=100) de la evaluación de f (x) en algunos puntos incluidos en el
CHARACTER * 10,String intervalo [a, b].
DIMENSION V(Nmax), A(Nmax,Nmax)
Diferenciación Numérica
String=’vector.dat’
Ndimension=LeerVector(String,V) La manera habitual de aproximar la derivada de una fun-
PRINT *,Ndimension ción f (x) en un punto xi consiste en utilizar el desarrollo
DO 1 K=1,Ndimension de Taylor centrado en xi :
PRINT *,V(K)
V(K)=2*V(K) f 0 (xi ) f N) (xi )
f (x) = f (xi ) + (x − xi ) + ... + (x − xi )N + ...
1 CONTINUE 1! N!
CALL EscribirVector(’vector3.dat’,V,Ndimension) Si tomamos un punto xj 6= xi , truncamos el desarrollo
N=LeerVector(’vector3.dat’,V) de Taylor y despejamos, obtenemos la siguiente expresión:
PRINT *,’N=’,N
DO 2 k=1,N f (xj ) − f (xi )
f 0 (xi ) ≈ + O (|xj − xi |)
PRINT *,V(K) xj − xi
2 CONTINUE
donde O (|xj − xi |) indica, básicamente, que el error
cometido es una suma de potencias de |xj − xi | en la que
Ndimension=3 la potencia más pequeña es 1. Se denomina orden de la
DO 3 aproximación a la potencia más pequeña que aparece en
K=1,Ndimension el término del error. Por lo tanto, en este caso, diremos
DO 4 L=1,Ndimension que el orden de aproximación es 1. Si xj > xi , entonces la
A(L,K)=L+K derivada se calcula hacia adelante, mientras que si xj < xi ,
PRINT *,A(L,K) la derivada se calcula hacia atrás.
4 CONTINUE
PRINT * Ejemplo 10 Veremos en este ejemplo como, cuanto más
3 CONTINUE próximo esté el punto xj al punto xi , mejor será el valor
CALL EscribirMatriz(’matriz.dat’,A,Ndimension,Nmax) aproximado de la derivada. Consideremos la función
Ndimension=LeerMatriz(’matriz.dat’,A,Nmax) f (x) = x3 . La derivada de f (x) en x = 1 es f 0 (1) = 3 Si
PRINT *,Ndimension tomamos xi = 1 y xj = 2 en la fórmula anterior, obten-
DO 5 K=1,Ndimension emos la aproximación
DO 6 L=1,Ndimension
23 − 13
PRINT *,A(L,K) f 0 (1) ≈ =7
6 CONTINUE 2−1
PRINT * Si tomamos ahora xj = 1.1, obtenemos
5 CONTINUE
END 1.13 − 13
f 0 (1) ≈ = 3. 31
1.1 − 1

Nota la declaración que está mucho más próximo al valor real.


IN CLU DE 0an.h0
incluye el fichero an.h que se encuentra en el directorio de
trabajo, en el cuerpo del programa. La declaración Problema 47 (2 puntos) Calcular analítica y numéri-
CHARACT ER ∗ 10, String camente la matriz gradiente en el punto (1, 1) (utilizar
define un string de caracteres de tamaño 10. h = 0.1) de la función:
½ 2
x + y2 − 1
f (x, y) =
x−y

24
Problema 48 (3 puntos) Dados 3 puntos distintos Problema 52 (2 puntos) Considerar en el problema an-
xl , xi , xr , demostrar que la fórmula terior que xl = xi − h, y xr = xi + h. Deducir como queda
la fórmula anterior para aproximar la derivada segunda, y
0
(xi − xl ) f (xxrr)−f
−xi
(xi )
+ (xr − xi ) f (xxi i)−f
−xl
(xl )
demostrar que, en este caso, el orden de aproximación es
f (xi ) ≈
xr − xl 2.

aproxima la derivada de f 0 (xi ) con un orden de aproxi-


mación de 2. Problema 53 (3 puntos) Dados 3 puntos xl < xi < xr ,
calcular el polinomio de Lagrange que interpola a f (x) en
esos 3 puntos, calcular la derivada segunda de ese poli-
Nótese que, si xr = xi + h, y xl = xi − h, entonces la nomio en xi , y comprobar que da la misma fórmula que
fórmula anterior resulta utilizando los desarrollos de Taylor.
f (xi + h) − f (xi − h)
f 0 (xi ) = Problema 54 (2 puntos) Calcular una aproximación de
2h
la derivada primera y segunda de una función f (x) en x =
que es una conocida fórmula de diferencias centradas. 0, teniendo en cuenta que f (0) = 1, f (1) = 0, f (4) = 9

Ejemplo 11 Veremos en este ejemplo como, utilizando la


expresión anterior para aproximar la derivada de f (x) = Diferenciación numérica en dimensiones superiores
x3 en x = 1, la precisión es mayor que con la fórmula
Estudiaremos, en este apartado, la aproximación de las
anterior. Por ejemplo, si tomamos xi = 1 y h = 1, la
derivadas de una función de varias variables. Para sim-
expresión anterior nos da
plificar la exposición, supondremos que la dimensión es 2.
23 − 03 Para discretizar las derivadas de una función F (x, y), se
f 0 (1) ≈ =4 utilizan los desarrollos de Taylor siguientes en 2 variables.
2
Utilizaremos la siguiente nomenclatura: Fx = ∂F∂x (x,y)
,
Si tomamos ahora xj = 0.1 ∂F (x,y) ∂ 2 F (x,y) ∂ 2 F (x,y)
Fy = ∂y , Fxx = ∂x2 , Fxy = ∂x∂y , Fyy =
1.13 − 0.93 ∂ 2 F (x,y)
f 0 (1) ≈ = 3. 01 ∂y2
0.2
h2
que está más próximo al valor real que utilizando la 1. F (x + h, y) = F + hFx + 2 Fxx + O(h3 )
primera fórmula. En general, comprobamos que, cuanto h2
mayor es el orden de una fórmula de aproximación, más 2. F (x − h, y) = F − hFx + 2 Fxx + O(h3 )
preciso es el valor de la derivada. l2
3. F (x, y + l) = F + lFy + 2 Fyy + O(l3 )
Nota: Utilizar el desarrollo de Taylor para aproximar l2
4. F (x, y − l) = F − lFy + 2 Fyy + O(l3 )
f 0 (x) es equivalente a interpolar f (x) con el polinomio de
Lagrange y posteriormente derivar el polinomio. 5. F (x + h, y + l) = F + hFx + lFy + 12 (h2 Fxx + 2hlFxy +
¡ ¢3
l2 Fyy ) + O( h2 + l2 2 )
Problema 49 (3 puntos) Dados 3 puntos distintos
6. F (x − h, y − l) = F − hFx − lFy + 12 (h2 Fxx + 2hlFxy +
xl , xi , xr , calcular el polinomio de Lagrange que interpola ¡ ¢3
a f (x) en esos 3 puntos, calcular la derivada de ese poli- l2 Fyy ) + O( h2 + l2 2 )
nomio en xi , y comprobar que da la misma fórmula que la
7. F (x + h, y − l) = F + hFx − lFy + 12 (h2 Fxx − 2hlFxy +
presentada en el problema anterior. ¡ ¢3
l2 Fyy ) + O( h2 + l2 2 )
Problema 50 (2 puntos) Calcular una aproximación de
la derivada tercera f 000 (xi ) de una función f (x) en un 8. F (x − h, y + l) = F − hFx + lFy + 12 (h2 Fxx − 2hlFxy +
¡ ¢3
punto xi , utilizando f (xi ), f (xi + h), f (xi − h), f (xi − 2h). l2 Fyy ) + O( h2 + l2 2 )

Problema 51 (3 puntos) Dados 3 puntos, demostrar Prestaremos particular atención a dos operadores
que la fórmula diferenciales que se utilizan con frecuencia en la práctica:
El gradiente ∇F (x, y) = (Fx (x, y), Fy (x, y)), que es el vec-
f (xr )−f (xi ) f (xi )−f (xl ) tor de derivadas parciales, y el Laplaciano ∆F (x, y) =
00 xr −xi − xi −xl
f (xi ) ≈ 2 Fxx (x, y) + Fyy (x, y). Utilizaremos la notación Fi,j ∼ =
xr − xl
F (hi, lj).
aproxima la derivada segunda de f (x) en xi con un orden
de aproximación de 1.

25
Discretización del Laplaciano Problema 56 (2 puntos) Calcular una aproximación
del laplaciano de una función F (x, y) en el punto (x, y) =
Para discretizar el operador ∆F en un entorno de 3 × 3
(0, 0) conociendo los siguientes valores: F (0, 0) = 0,
puntos, pueden utilizarse diferentes esquemas. Para sim-
F ( 12 , 0) = 14 , F (− 12 , 0) = 14 , F (0, 12 ) = 14 , F (0, − 12 ) = 14 ,
plificar, supondremos que l = h.
F ( 12 , 12 ) = 12 , F (− 12 , − 12 ) = 12 , F (− 12 , 12 ) = 12 , F ( 12 , − 12 ) =
1
Problema 55 (3 puntos) Demostrar, utilizando el de- 2.
sarrollo de Taylor, que las siguientes expresiones son dis-
cretizaciones del laplaciano:
Fi+1,j+1 + Fi−1,j+1 + Fi−1,j−1 + Fi+1,j−1 − 4Fi,j Discretización del gradiente
∆F =
2h2 Siguiendo el desarrollo de Taylor mostrado anteriormente,
Fi+1,j + Fi−1,j + Fi,j+1 + Fi,j−1 − 4Fi,j obtenemos la siguiente expresión para el gradiente:
∆F =
h2 (Fi+1,j − Fi−1,j )
(Fi,j )x = (1 − γ) +
El resultado del anterior problema nos proporciona 2h
(Fi+1,j+1 − Fi−1,j+1 + Fi+1,j−1 − Fi−1,j−1 )
2 formas distintas de evaluar el laplaciano, por tanto, +γ
cualquier promediado de las dos expresiones también es 4h
una discretización del laplaciano, es decir:
(Fi,j+1 − Fi,j−1 )
∆F = (Fi,j )y = (1 − γ) +
2h
Fi+1,j+1 + Fi−1,j+1 + Fi−1,j+1 + Fi+1,j−1 − 4Fi,j (Fi+1,j+1 − Fi+1,j−1 + Fi−1,j+1 − Fi−1,j−1 )
=γ + +γ
2h2 4h
Fi+1,j + Fi−1,j + Fi,j+1 + Fi,j−1 − 4Fi,j donde γ es, de nuevo, un parámetro a elegir. Teniendo
+(1 − γ) +
h2 en cuenta que la norma euclídea del gradiente es invari-
+O(h) ante por rotaciones, lo será en particular para rotaciones
donde γ es un parámetro libre a elegir. La elección de di- de 45 grados, de donde deducimos, utilizando
√ el mismo
cho parámetro γ la haremos de forma que la discretización argumento que para el ∆F , que γ = 2 − 2. Por lo tanto,
de ∆F respete lo máximo posible la invarianza por rota- estamos calculando Fx utilizando la máscara
ciones de la función F (x, y). Para ello, consideremos una √ √
−(2√− 2) 0 (2√− 2)
función tal que en un entorno de un punto (hi0 , hj0 ) tiene 1
los siguientes valores: −2( 2 √ − 1) 0 2( 2 √ − 1)
4h
−(2 − 2) 0 (2 − 2)
1 1 1
0 0 0 y Fy utilizando
0 0 0
√ √ √
Si calculamos ∆F en el punto central a través de la −(2 − 2) 2( 2 − 1) −(2 − 2)
1
anterior fórmula obtenemos: 0√ √0 0√
4h
2 1 (2 − 2) −2( 2 − 1) (2 − 2)
∆F (hi0 , hj0 ) = γ 2 + (1 − γ) 2
2h h
Problema 57 (3 puntos) Demostrar que las máscaras
Ahora bien, si rotamos 45 grados, la función inicial en ¡ √ ¢ ¡ √ ¢
torno al punto (hi0 , hj0 ), obtenemos como imagen: − ¡√
2− 2¢ 0 ¡√ 2 ¢
2 −
1
Fx = −2¡ 2 √
− 1¢ 0 2¡ 2 √ − 1¢
1 1 0 4h
1 0 0 − 2− 2 0 2− 2
0 0 0 ¡ √ ¢ ¡√ ¢ ¡ √ ¢
− 2− 2 −2 2 − 1 − 2− 2
1
Si calculamos de nuevo ∆F en el mismo punto obten- Fy = 0√ ¢ ¡√ 0 ¡ 0√ ¢
4h ¡ ¢
emos: 2− 2 2 2−1 2− 2
1 2
∆F (hi0 , hj0 ) = γ 2 + (1 − γ) 2 dan lugar a una discretización del gradiente tal que su
2h h
Por lo tanto, si queremos que ambos valores de ∆F norma euclídea es invariante por rotaciones de 45 grados.
coincidan, debemos elegir γ = 23 . Hablando en términos
de teoría de la señal, el calculo de ∆F nos llevaría a con- Problema 58 (2 puntos) Calcular una aproximación
volucionar la imagen con la siguiente máscara: del gradiente de una función F (x, y) en el punto (x, y) =
1 1 1 (0, 0) conociendo los siguientes valores: F (0, 0) = 0,
1 3
1
3 3 F ( 12 , 0) = 12 , F (− 12 , 0) = − 12 , F (0, 12 ) = − 12 , F (0, − 12 ) =
3 − 83 1
3 1 1 1 1 1 1 1
h2 1 1 1 2 , F ( 2 , 2 ) = 0, F (− 2 , − 2 ) = 0, F (− 2 , 2 ) = −1,
1 1
3 3 3 F ( 2 , − 2 ) = 1.

26
Integración Numérica Problema 59 (2 puntos) Aproximar el valor de la sigu-
iente integral, utilizando las fórmulas de Legendre para
Métodos de Cuadratura de Gauss
n = 2 y n = 3: Z 1
Sea f (x) una función definida en un intervalo [a, b], vamos ¡ 3 ¢
x − x4 dx
a aproximar el valor de la integral de f (x) en [a, b] uti- −1
lizando la evaluación de f (x) en ciertos puntos de [a, b].
Es decir, una fórmula de integración numérica se puede ¿Cuál es el valor exacto de la integral?
escribir como
Z b N
X Problema 60 (2 puntos) Se consideran, para el inter-
f (x)dx ≈ wk f (xk ) valo [−1, 1], los puntos x0 = −0.5, x1 = 0 y x2 = 0.5 y
a k=1 los pesos w0 = w1 = w2 = 2/3. Estos puntos y estos pe-
sos se utilizan para aproximar la integral de una función
donde xk representa los puntos de evaluación de f (x) y wk
en [−1, 1]. Usar esta fórmula de integración para calcular
el peso de cada punto de evaluación.
númericamente la siguiente integral y compararla con el
resultado análitico (exacto).
Definición 2 Una fórmula de integración numérica se de- Z π
2
nomina exacta de orden M si, para cualquier polinomio cos(x)dx
P (x) de grado menor o igual que M, la fórmula es exacta. −π
2

Es decir
Z b N
X
P (x)dx = wk P (xk )
a k=1 Problema 61 (2 puntos) Encontrar, utilizando los
ceros y pesos asociados a los polinomios de Legendre, cuál
sería la fórmula de integración numérica de Legendre uti-
Definición 3 Se denominan polinomios de Legendre lizando un sólo punto de interpolación. ¿Cuál sería su
Ln (x) a la familia de polinomios dada por L0 (x) = 1, exactitud?
L1 (x) = x, y para n = 2, 3, ....

nLn (x) = (2n − 1)xLn−1 (x) − (n − 1)Ln−2 (x) Problema 62 (2 puntos) A partir de los ceros y de los
pesos asociados a los polinomios de Legendre, y dado un
intervalo [a, b] cualquiera, encontrar los puntos xk y los
pesos wk que hacen exacta hasta orden 2N −1 una fórmula
Teorema 14 Sean{x̃k }k=1,..,N los ceros del polinomio de de integración numérica sobre el intervalo [a, b].
Legendre LN (x). Si definimos
Z 1
Πi6=k (x − x̃i) Problema 63 (2 puntos) Utilizar el resultado del prob-
w̃k = dx
−1 Πi6=k (x̃k − x̃i) lema anterior para calcular de forma exacta la siguiente
integral: Z 1
entonces la fórmula de integración numérica generada por ¡ 2 ¢
los puntos x̃k y los pesos w̃k es exacta hasta el orden 2N −1 x − x3 dx
0
para el intervalo [−1, 1].

Demostración [Hu] Pg. 205-209


Cuando el intervalo [a, b] es infinito, es decir, a = −∞
o b = ∞, hay que emplear otros métodos para aproximar
Ejemplo 12 A continuación se exponen algunos valores las integrales. En el caso [a, b] = (−∞, ∞), se utilizan los
de raíces x̃k y coeficientes w̃k en función del grado del ceros de los denominados polinomios de Hermite, definidos
polinomio Ln (x) : como H0 (x) = 1, H1 (x) = 2x, y
n x̃k w̃k
2 0.5773502692 1. Hn (x) = 2xHn−1 (x) − 2(n − 1)Hn−2 (x)
−0.5773502692 1
3 0.7745966692 0.5555555556 para n ≥ 2. En este caso, la fórmula de integración
numérica aproxima la integral de la siguiente forma:
0. 0.8888888889
− 0.7745966692 0.5555555556 Z ∞ N
X
2
4 0.8611363116 0.3478548451 f (x)e−x dx ≈ wk f (xk )
0.3399810436 0.6251451549 −∞ k=0
−0.3399810436 0.6251451549
− 0.8611363116 0.3478548451

27
Teorema 15 Si x̃k son los ceros del polinomio de Hermite Ejemplo 14 A continuación se exponen algunos valores
y definimos de raíces x̃k y coeficientes w̃k en función del grado del
Z ∞ polinomio Ln (x) :
Πi6=k (x − x̃i) −x2 n x̃k w̃k
w̃k = e dx
−∞ Π i6=k (xk − x̃i) 1 1. 1.
2 0. 585 786 438 0. 853 553 390 3
entonces la fórmula de integración numérica generada por
los puntos x̃k y los pesos w̃k es exacta hasta orden 2N − 1 3. 414 213 562 0. 146 446 609 3
para el intervalo (−∞, ∞).

Demostración [Hu] Pg. 213-214 Problema 66 (2 puntos) Calcular de forma exacta la


integral Z ∞
¡ 3 ¢
Ejemplo 13 A continuación se exponen algunos valores x − x2 e−x dx
de raíces x̃k y coeficientes w̃k en función del grado del 0
polinomio Hn (x) : utilizando los polinomios de Laguerre.
n x̃k w̃k
1 0. 1. 772 453 851
2 −0. 707 106 781 0. 886 226 925 5 Problema 67 (2 puntos) Calcular una fórmula de
0. 707 106 781 0. 886 226 925 5 aproximación numérica de la integral siguiente:
Z ∞
f (x)e−x dx
Problema 64 (2 puntos) Calcular de forma exacta la a

integral Z ∞ donde a es un número real cualquiera.


¡ 3 ¢ 2
x − x2 e−x dx
−∞

utilizando los polinomios de Hermite. 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 los
Problema 65 (2 puntos) Aproximar, utilizando dos polinomios, lo cual resulta complejo para valores grandes
puntos de aproximación, el valor de la integral: de N. Una alternativa consiste en dividir previamente la
Z ∞ integral en subintegrales de la manera siguiente:
1
dx Z M Z
−∞ 1 + x2 b X xk+1
f (x)dx = f (x)dx
a k=0 xk

donde a = x0 < x1 < .... < xM+1 = b. A continuación se


Para el intervalo (0, ∞), se utilizan los polinomios de aproxima numéricamente cada una de las integrales
Laguerre Ln (x), definidos por L0 (x) = 1, L1 (x) = 1 − x, y Z xk+1
Ln (x) = (2n − 1 − x)Ln−1 (x) − (n − 1)2 Ln−2 (x). f (x)dx
xk

para n ≥ 2. En este caso, la fórmula de integración Para ello, se pueden utilizar los desarrollos a partir
numérica aproxima: de los polinomios de Legendre, o bien las fórmulas más
Z N
simples siguientes:
∞ X
f (x)e−x dx ≈ wk f (xk ) Fórmula del rectángulo
0 k=0
Z xk+1 µ ¶
xk + xk+1
Teorema 16 Si x̃k son los ceros del polinomio de La- f (x)dx ≈ f (xk+1 − xk )
guerre y definimos xk 2
Z ∞
Πi6=k (x − x̃i) −x
w̃k = e dx Esta fórmula se obtiene fácilmente aproximando f (x)
0 Πi6=k (xk − x̃i) por el polinomio interpolador en x = xk +x k+1
. Es decir:
2
entonces la fórmula de integración numérica generada por
Z xk+1 Z xk+1 µ¶
los puntos x̃k y los pesos w̃k es exacta hasta orden 2N − 1 xk + xk+1
para el intervalo (0, ∞). f (x)dx ≈ f dx =
xk xk 2
µ ¶
Demostración [Hu] Pg. 211-213 xk + xk+1
= f (xk+1 − xk )
2

28
Fórmula del trapecio Problema 68 (2 puntos) Aproximar, por el método de
Z xk+1 Simpson, la integral
f (xk+1 ) + f (xk )
f (x)dx ≈ (xk+1 − xk ) Z 1
xk 2 ¡ 3 ¢
x − x4 dx
−1
Esta fórmula se deduce aproximando f (x) por su poli-
nomio interpolador en xk y xk+1 . Es decir: utilizando únicamente el valor de la función en los puntos:
−1, − 12 , 0, 12 y 1.
Z xk+1
f (x)dx ≈
xk Práctica 5 (Implementación Método de Inte-
Z
xk+1 µ ¶
x − xk+1 x − xk gración de Simpson, 2 horas)
≈ f (xk ) + f (xk+1 ) dx =
xk xk − xk+1 xk+1 − xk
Crear una función en fortran 77 donde se implemente el
f (xk+1 ) + f (xk ) método de Simpson. Los parámetros de la función serán:
= (xk+1 − xk )
2 Los límites del intervalo de integración en precisión real y
Fórmula de Simpson el número de subintervalos en los que se dividirá el inter-
³ ´ valo inicial. La función a integrar se definirá aparte (como
Z xk+1 f (xk+1 ) + f (xk ) + 4f xk +x k+1
en el caso del mérodo Müller). La función devolverá el
2
f (x)dx ≈ (xk+1 − xk ) valor de la integral obtenido. Probar el método para aprox-
xk 6
imar las siguientes integrales con diferentes valores para el
Esta fórmula se deduce aproximando f (x) por su de- parámetro de número de subintervalos y comprobar que el
sarrollo en serie de Taylor centrado en el punto xm = resultado se aproxima al valor exacto de la integral.
xk +xk+1
2 . Es decir:

Z xk+1 1. 0 sin(x)dx = 2
f (x)dx ≈
xk R1 x
Z xk+1 µ ¶
0 f 00 (xm ) 2
2. 0 √1−x 2
dx = 1
≈ f (xm ) + f (xm )(x − xm ) + (x − xm ) dx =
xk 2
00
µ ¶3 R∞ √
f (xm ) xk+1 − xk 2
3. −∞ e−x dx = π = 1. 772 5
= f (xm )(xk+1 − xk ) +
3 2
Ahora bien, teniendo en cuenta los resultados de
Nota: Las integrales con límites infinitos se aproximarán
la sección anterior sobre derivación numérica f 00 (xm ), se
cambiando el infinito por un número grande.
puede aproximar como
f (xk+1 ) − 2f (xm ) + f (xk ) Integración numérica en dimensiones superiores
f 00 (xm ) ≈ ³ ´2
xk+1 −xk
2 En esta sección, estudiaremos las técnicas de integración
numérica sobre dominios Ω de dimensión superior a 1. Para
Por tanto, sustituyendo este valor en la aproximación simplificar la exposición, supondremos que la dimensión es
anterior obtenemos 2. Es decir, pretendemos aproximar
Z
Z xk+1
F (x, y)dxdy
f (x)dx ≈ f (xm )(xk+1 − xk )+ Ω
xk
µ ¶
f (xk+1 ) − 2f (xm ) + f (xk ) xk+1 − xk Aproximaremos esta integral a través de la fórmula
+ =
3 2 numérica:
³ ´ Z
f (xk+1 ) + f (xk ) + 4f xk +x k+1 X
2 F (x, y)dxdy ≈ wij F (xi , yj )
= (xk+1 − xk ) Ω
6 i,j

Aunque estas fórmulas sean menos precisas que las de- donde debemos elegir los puntos (xi , yj ) y los pesos
ducidas a partir de los ceros de los polinomios de Legendre, wij . Para realizar esta elección se utilizan técnicas de
tienen la ventaja de que pueden ser utilizadas cuando sólo cuadratura. Es decir, se exige que la fórmula sea exacta
conocemos la función a integrar en un conjunto equiespa- para polinomios en x e y de hasta un cierto grado:
ciado de puntos, es decir, cuando sólo conocemos f (x) en
Z X
un conjunto de la forma xk = x0 + hk. Nótese que, en este m n
xm y n dxdy = wij (xi ) (yj )
caso, la integración a partir de los ceros de los polinomios Ω i,j
de Legendre no puede utilizarse.

29
donde m y n determinan el grado de los polinomios. De AREA(T ) el área del triángulo T. En función de los vér-
estas relaciones se puede deducir, en general, los valores de tices, el área viene determinada por
los puntos y los pesos. Un caso particularmente sencillo ⎛¯ ¯⎞
¯ 1 1 1 ¯¯
es cuando Ω es un rectángulo [a, b]x[c, d]. En este caso, 1 ¯
podemos escribir: AREA(T ) = ABS ⎝¯¯ x0 x1 x2 ¯¯⎠
2 ¯ y0 y1 y2 ¯
Z Z b Z d
xm y n dxdy = xm dx y n dy A continuación presentaremos algunas fórmulas de in-
Ω a c tegración numérica sobre triángulos utilizando diferentes
y, por tanto, la exactitud en dimensión 2 la podemos de- números de puntos
ducir a partir de la exactitud en dimensión 1, que, en este
Integración sobre triángulos utilizando un
caso, viene dada, como hemos visto anteriormente, por los
punto.
polinomios de Legendre. µ ¶
Z
∼ x0 + x1 + x2 y0 + y1 + y2
Problema 69 (3 puntos) Deducir la fórmula de inte- F (x, y) = F , AREA(T )
T 3 3
gración numérica sobre el rectángulo [−1, 1]x[−1, 1] resul-
tante de aplicar la integración numérica en una variable
en los intervalos [−1, 1], y [−1, 1]. Integración sobre triángulos utilizando 3 pun-
tos.
Z 3
X
F (x, y) ∼
= AREA(T ) xk , yek )
wk F (e
Problema 70 (2 puntos) Deducir la fórmula de inte- T k=1
gración numérica sobre un rectángulo [a, b]x[c, d] resultante
de aplicar la integración numérica en una variable en los donde
intervalos [a, b], y [c, d]. 1
w1 = w2 = w3 =
3
x0 + x1 y0 + y1
e1
x = ye1 =
2 2
Problema 71 (2 puntos) Calcular de forma exacta la x0 + x2 y0 + y2
integral e2
x = ye2 =
Z 1Z 1 2 2
x2 y 2 dxdy x2 + x1 y2 + y1
e3
x = ye3 =
−1 −1 2 2
utilizando integración numérica. Integración sobre triángulos utilizando 4 pun-
tos.
Z 4
X
Nótese que, al igual que en dimensión 1, también F (x, y) ∼
= AREA(T ) xk , yek )
wk F (e
T
podemos extender los resultados al caso en que los inter- k=1
valos sean infinitos, de tal forma que podemos construir donde
fácilmente fórmulas de integración numérica para las inte- 25 27
grales w1 = w2 = w3 = w4 = −
Z Z∞ ∞ 48 48
2
−y2
F (x, y)e−x dxdy e1
x =
6x0 + 2x1 + 2x2
ye1 =
6y0 + 2y1 + 2y2
−∞ −∞ 10 10
y Z 2x0 + 6x1 + 2x2 2y0 + 6y1 + 2y2
∞Z ∞ e2
x = ye2 =
F (x, y)e−x−y dxdy 10 10
0 0 2x0 + 2x1 + 6x2 2y0 + 2y1 + 6y2
e3
x = ye3 =
10 10
x0 + x1 + x2 y0 + y1 + y2
e4
x = ye4 =
Problema 72 (2 puntos) Calcular una aproximación 3 3
numérica de la integral
Z ∞Z 2
x Problema 73 (2 puntos) Se considera el triángulo T de
y2
dxdy
−∞ 0 1 + e vé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ón
utilizando la evaluación de F (x, y) en 4 puntos. numérica:
Z
F (x, y)dxdy ≈ F (x0 , y0 )w0
En el caso de que Ω sea un triángulo, el cálculo es T
un poco más complejo. Consideremos un triángulo T sea exacta para polinomios de grado 1 en x e y. Es decir
de vértices (x0 , y0 ), (x1 , y1 ), (x2 , y2 ). Denotaremos por P (x, y) = ax + by + c.

30
Problema 74 (2 puntos) Calcular una aproximación Problema 77 (2 puntos) Tomar N = 2 y dibujar el
numérica de la integral lugar geométrico de los vectores x = (x1 , x2 ) que verifican
Z que
x2 ydxdy
Ω 1. k x k1 < 1

donde Ω es el triángulo de vértices (0, 0), (2, 0) y (0, 2), 2. k x k2 < 1


utilizando 1 punto, 3 puntos y 4 puntos.
3. k x k∞ < 1

ANÁLISIS NUMÉRICO MATRICIAL II


Problema 78 (2 puntos) Tomar N = 2 y demostrar la
En esta sección veremos algunos aspectos más avanzados siguiente desigualdad:
del análisis matricial, incluyendo técnicas iterativas de res-
olución de sistemas de ecuaciones y cálculo de autovalores. k x k∞ ≤k x k2 ≤k x k1

Dada una matriz A de dimensión N xN , se podría


Normas de vectores y matrices definir su norma considerando la matriz como un vector
de dimensión N xN . Sin embargo, resulta más útil definir
Definición 4 Una norma k . k es una aplicación de un la norma de una matriz subordinándola a la norma de un
espacio vectorial E en R+ ∪ {0} que verifica las siguientes vector de la siguiente manera:
propiedades:

• k x k= 0 si y sólo si x = 0 Definición 5 Sea A una matriz y sea k . k una norma


vectorial. Se define la norma de A, subordinada a la norma
• k λx k=| λ |k x k para todo λ ∈ K y x ∈ E vectorial k . k como
• k x + y k≤k x k + k y k para todo x, y ∈ E. k Ax k
k A k= sup
x6=0 kxk
Básicamente, una norma mide la magnitud o tamaño La propiedad fundamental que verifica una norma ma-
de un vector x. Por ejemplo, en el espacio vectorial de los tricial definida de esta forma es la siguiente:
nú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 de Teorema 17 Sea A una matriz y k . k una norma vecto-
definir una norma. La definición más utilizada es la de- rial. Entonces, para cualquier vector x se verifica que
nominada norma p, donde p es un número real positivo,
que viene definida por k Ax k≤k A k · k x k

ÃN ! p1 Demostración: Si x = 0, la desigualdad es trivial. Si


X x 6= 0, entonces, puesto que k x k> 0, la desigualdad
p
k x kp = | xi |
i=1
anterior es equivalente a

Un caso particularmente interesante es p = 2, que k Ax k


≤k A k
corresponde a la norma euclídea. Otro caso interesante kxk
es aquél que se produce cuando hacemos tender p hacia
Ahora bien, esta desigualdad es cierta por la propia
infinito, lo que da lugar a la denominada norma infinito,
definición de k A k.
definida por
k x k∞ = max | xi |
i
Problema 79 (2 puntos) Demostrar que si A y B son
dos matrices de dimensión N xN, entonces, para cualquier
norma de matrices subordinada a una norma vectorial, se
Problema 75 (4 puntos) Tomar N = 2 , p = 2, y de-
verifica
mostrar que la norma k x kp verifica las propiedades de la
k AB k≤k A k · k B k
definición de norma.

Problema 76 (3 puntos) Demostrar que


A continuación veremos la relación que existe entre
Limp→∞ k x kp = max | xi | la norma de una matriz y sus autovalores. Empezaremos
i
recordando algunos conceptos relacionados con los auto-
valores.

31
Definición 6 Un autovalor de A es un número λ real o xi , el vector x se podrá expresar como una combinación
complejo tal que existe un vector x, denominado autovec- lineal de autovectores, de la forma:
tor, tal que
Ax = λx x = η 1 x1 + η2 x2 + .. + η N xN

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


obtenemos que
Definición 7 Se denomina polinomio característico P (λ)
Ax = η1 λ1 x1 + η2 λ2 x2 + .. + η N λN xN
de la matriz A, al polinomio dado por el determinante
Como los autovectores son ortonormales, se cumple
P (λ) =| A − λI |
que
q
k x k2 = (η 1 )2 + .. + (ηN )2
q
Problema 80 (1 punto) Demostrar que los autovalores 2
k Ax k2 = (η1 λ1 ) + .. + (ηN λN )
2
de A son los ceros del polinomio característico P (λ).
Y, por tanto,
Definición 8 Se define el radio espectral de una matriz A k Ax k2
como ≤ ρ(A)
k x k2
ρ(A) = max{| λi | : λi autovalor de A} para cualquier vector x. En consecuencia, al tomar el
i
supremo en x, la desigualdad se mantiene, lo que demues-
tra que
Teorema 18 Sea A una matriz y k . k una norma vecto- k A k2 ≤ ρ(A)
rial. Entonces
k A k≥ ρ(A)

Demostración: Si λ es un autovalor de A, entonces existe Teorema 20 Si una matriz A de dimensión N xN es


un autovector x tal que Ax = λx, por tanto simétrica, entonces todos sus autovalores son reales y,
además, sus autovectores forman una base ortonormal de
k Ax k k λx k RN .
= = |λ| ≤k A k
kxk kxk
Demostración: [La-Th] Pg. 53.
Lo que demuestra el teorema.

Problema 81 (2 puntos) Calcular los autovectores de


Teorema 19 Si los autovectores de una matriz A de di- la matriz ⎛ ⎞
mensión N xN forman una base ortonormal de RN , en- 1 1 0
tonces ⎝ 1 1 0 ⎠
k A k2 = ρ(A) 0 0 2

Demostración: Recordamos, en primer lugar, que una y determinar una base ortonormal de R3 compuesta por
base ortonormal de vectores es un conjunto de vectores autovectores de A.
tales que cualquier otro vector se puede expresar como
combinación lineal de ellos y, además, su producto escalar Teorema 21 Sea A una matriz cualquiera, entonces
verifica que
p
N ½ • k A k2 = ρ(t AA)
X 0 si i 6= j
(xi , xj ) = (xi )k (xj )k = P
1 si i = j • k A k1 = maxj ( i | aij |)
k=1
³P ´
donde (xi )k indica la coordenada k-ésima del vector xi . • k A k∞ = maxi j | aij |
Vamos a demostrar la desigualdad
Demostración: [La-Th] Pg. 73,75.
k A k2 ≤ ρ(A)
Problema 82 (2 puntos) Calcular las normas 2, 1 e
Dado que el teorema anterior determina la desigual- infinito de la matriz
dad en el otro sentido, tendríamos la igualdad, y por tanto µ ¶
el resultado del Teorema. Sea x un vector cualquiera. 1 0
A=
Puesto que A posee una base ortonormal de autovectores 1 1

32
Problema 83 (2 puntos) Demostrar la siguiente igual- Teorema 23 Si definimos
dad:
ρ(t AA) = ρ(A ·t A) χ(A) =k A k · k A−1 k

entonces
k δu k k δb k
Teorema 22 Sea A una matriz cualquiera, entonces ≤ χ(A)
kuk kbk
Limn→∞ k An k= 0 ⇐⇒ ρ(A) < 1
Demostración: Como A(u + δu) = b + δb y Au = b, se
Demostración:[La-Th] Pg. 80. obtiene que Aδu = δb, de donde δu = A−1 δb y, por tanto,
° °
kδuk ≤ °A−1 ° kδbk
Condicionamiento de una matriz
Por otro lado, también se cumple que
El condicionamiento de una matriz es un número que
nos indica la ”bondad” o buen comportamiento numérico kbk = kAuk ≤ kAk kuk
de la matriz cuando se trabaja con ella numéricamente.
Para ilustrar de qué estamos hablando, veamos el sigu- de donde obtenemos que
iente ejemplo:
1 kAk

kuk kbk
Ejemplo 15 Consideremos el siguiente sistema de ecua-
ciones Así, multiplicando esta desigualdad con la anterior-
⎛ ⎞⎛ ⎞ ⎛ ⎞ mente obtenida para kδuk , concluimos la demostración
10 7 8 7 x 32
⎜ 7 5 6 5 ⎟ ⎜ y ⎟ ⎜ 23 ⎟ del teorema.
⎜ ⎟⎜ ⎟ ⎜ ⎟
⎝ 8 6 10 9 ⎠ ⎝ z ⎠ = ⎝ 33 ⎠
7 5 9 10 v 31 Problema 84 (2 puntos) Demostrar que, si los autovec-
tores de una matriz A de dimensión N xN forman una base
cuya solución es (1, 1, 1, 1). Vamos a considerar ahora el ortonormal de RN , entonces, para la norma 2, se cumple
mismo sistema, perturbando ligeramente el término inde- que
pendiente: maxi {| λi |}
χ(A) =k A k2 · k A−1 k2 =
⎛ ⎞⎛ ⎞ ⎛ ⎞ mini {| λi |}
10 7 8 7 x 32.1
⎜ 7 5 6 5 ⎟ ⎜ y ⎟ ⎜ 22.9 ⎟
⎜ ⎟⎜ ⎟=⎜ ⎟ Nota: En el caso del ejemplo 15 los autovalores de la
⎝ 8 6 10 9 ⎠ ⎝ z ⎠ ⎝ 33.1 ⎠
matriz son 0.01, 0.84, 3.86, y 30.29, por tanto el condi-
7 5 9 10 v 30.9 cionamiento sería
La solución de este sistema es (9.2, −12.6, 4.5, −1.1). 30.29
Como podemos observar, a pesar de que la perturbación χ(A) = = 3029
0.01
del 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. lo cual indica un condicionamiento bastante malo.

Consideremos de forma genérica un sistema de ecua- Problema 85 (2 puntos) Calcular el condicionamiento


ciones de la forma para la norma
⎛ 2, de las siguientes
⎞ matrices:
Au = b 2 2 −2
A=⎝ 2 1 1 ⎠
y, al mismo tiempo, el sistema de ecuaciones perturbado
−2 1 1
A (u + δu) = b + δb ⎛ ⎞
2 −1 0
Nosotros queremos controlar el error relativo en la A = ⎝ −1 2 −1 ⎠
solución del sistema a partir del error relativo en el tér- 0 −1 2
mino independiente b. Es decir, queremos encontrar una
estimación del tipo
k δu k k δb k Cálculo de autovalores y autovectores
≤ χ(A)
kuk kbk
En esta sección veremos algunos métodos elementales para
donde χ(A) es un número que llamaremos condi- el cálculo de autovalores y autovectores de matrices.
cionamiento de la matriz. Obviamente, cuanto más pe-
queño sea χ(A), mejor comportamiento numérico tendrá
la matriz A.

33
Método de Jacobi Es decir,
Este método se aplica a matrices reales y simétricas. Se cos 2α (aqq − app )
cot(2α) = =
basa en el hecho de que, dadas dos matrices A y R, se sin 2α 2apq
verifica que los autovalores de A son los mismos que los
autovalores de R−1 AR. Este método intenta diagonalizar
A realizando transformaciones del tipo R−1 AR. Ejemplo 16 Consideremos la matriz
⎛ ⎞
2 −1 0
⎝ −1 2 −1 ⎠
Problema 86 (2 puntos) Sean las matrices A y R. De- 0 −1 2
mostrar que la matriz A y la matriz B = R−1 AR poseen
los mismos autovalores Para convertir en 0 el elemento a12 = −1 de la matriz,
debemos elegir α tal que
(a22 − a11 )
Problema 87 (2 puntos) Se considera la matriz cot(2α) = =0
2a12
µ ¶
1 1 De donde α = − π4 . Por tanto, la matriz R12 es
A=
1 1 ⎛ √1 ⎞
2
− √12 0
calcular el ángulo α tal que la matriz R12 = ⎝ √1 2
√1
2
0 ⎠
µ ¶ 0 0 1
cos α sin α
R= t
− sin α cos α y al hacer la operación R12 AR12 obtenemos
⎛ ⎞
verifique que la matriz B = R−1 AR sea diagonal. 1.0 0 −. 707 107
⎝ 0 3.0 −. 707 107 ⎠
−. 707 107 −. 707 107 2.0
En el método de Jacobi se utilizan las denominadas
matrices de rotación, que tienen la forma siguiente: Para evitar tener que evaluar funciones trigonométri-
⎛ ⎞ cas, que son costosas computacionalmente, y simpli-
1 0 0 0 0 0 0 ficar el algoritmo, podemos apoyarnos en las igualdades
⎜ 0 1 . . . . 0 ⎟
⎜ ⎟ trigonométricas dadas en el siguiente problema:
⎜ 0 . cos α . sin α . 0 ⎟
⎜ ⎟
Rpq (α) = ⎜⎜ 0 . . 1 . . 0 ⎟ ⎟
⎜ 0 . − sin α . cos α . 0 ⎟ Problema 88 (3 puntos) Demostrar las siguientes
⎜ ⎟ igualdades trigonométricas:
⎝ 0 . . . . 1 0 ⎠
0 0 0 0 0 0 1 q
tan(α) = − cot(2α) + sign(cot(2α)) 1 + cot2 (2α)
donde los cosenos y senos están situados en las columnas
y filas p y q. Al ser una matriz de rotación, se verifica ¡ ¢
−1
donde α ∈ − π4 , π4 , sign(x) = 1 si x ≥ 0 y sign(x) = −1
que (Rpq (α)) =t Rpq (α). Al realizar la operación A0 =t si x < 0,
Rpq (α)ARpq (α), sólo se ven afectadas las filas y columnas
de índices p y q. Además, la matriz A0 también es simétrica. 1
cos α = p
Concretamente, si A es una matriz simétrica, los cambios 1 + tan2 (α)
que se producen en A0 son los siguientes: sin α = tan(α) cos α
(app − aqq ) − tan(α) + sin(2α)
a0pq = sin 2α + apq cos 2α cot(2α) =
2 2 sin2 (α)
a0pp = app cos2 α + aqq sin2 α − apq sin 2α
a0qq = app sin2 α + aqq cos2 α + apq sin 2α Utilizando las anteriores igualdades trigonométricas,
a0pj = apj cos α − aqj sin α j 6= p, q la transformación de la matriz A mediante el método de
a0qj = apj sin α + aqj cos α j 6= p, q Jacobi se puede escribir como

El método de Jacobi se basa en ir modificando la ma- a0pq = 0


triz A mediante el procedimiento anterior, haciendo 0 los a0pp = app − tan(α)apq
elementos no diagonales mayores en módulo. Para anular a0qq = aqq + tan(α)apq
un valor a0pq , basta con elegir α tal que a0pj = apj cos α − aqj sin α j 6= p, q
(app − aqq ) a0qj = apj sin α + aqj cos α j =6 p, q
sin 2α + apq cos 2α = 0
2

34
Problema 89 (3 puntos) Dentro del método de Jacobi FIN IF
para el cálculo de autovalores, demostrar las igualdades CO = 1./SQRT (1. + T ∗ T )
siguientes: SI = CO ∗ T
PARA j = 1, ..., DIM HACER
a0pq = 0 IF ( j 6= p AND j 6= q) HACER
a0pp = app − tan(α)apq D = A(p, j)
a0qq = aqq + tan(α)apq A(j, p) = A(p, j) = CO ∗ D − SI ∗ A(q, j)
A(j, q) = A(q, j) = SI ∗ D + CO ∗ A(q, j)
a0pj = apj cos α − aqj sin α j=
6 p, q
FIN IF
a0qj = apj sin α + aqj cos α j=6 p, q FIN PARA j
A(p, p) = A(p, p) − T ∗ A(p, q)
A(q, q) = A(q, q) + T ∗ A(p, q)
A(p, q) = A(q, p) = 0
FIN PARA n
Veamos ahora la convergencia del método de Jacobi
PROCEDIMIENTO TERMINADO INCORRECTA-
para el cálculo de autovalores.
MENTE
NÚMERO DE ITERACIONES MÁXIMO EXCE-
Teorema 24 Sea una matriz A simétrica. Sea A1 = A, DIDO
y sea Ak la matriz transformada de Ak−1 , haciendo cero
Veamos ahora cómo podemos calcular los autovec-
el elemento no diagonal mayor en módulo de la matriz
tores. Al utilizar el método de Jacobi, vamos transfor-
Ak−1 , entonces los elementos diagonales de la matriz Ak
mando la matriz A multiplicándola por una secuencia de
convergen (k → ∞) hacia los autovalores de la matriz A.
matrices de rotación R1 , ...., RM , de tal forma que
Además los elementos no diagonales de A convergen hacia
−1
0. RM · .... · R1−1 AR1 · .... · RM = D

Demostración: [La-The] Pg. 576-577. donde D es una matriz diagonal que contiene los auto-
valores de A en la diagonal. Denotemos por B la matriz
Algoritmo del Método de Jacobi para el Cálculo B = R1 · .... · RM . Despejando de la anterior igualdad
de autovalores. obtenemos que
Los parámetros de entrada son la matriz simétrica AB = BD
A, su dimensión DIM, el número máximo de iteraciones Si denotamos por bi el vector columna i de la matriz
N max y la tolerancia T OL para decidir cuándo son ceros B, de la expresión anterior se obtiene que
los elementos no diagonales.
Abi = dii bi
PARA n = 1, .., N max HACER
Es decir, bi es el autovector de A asociado al autovalor
p=2
dii . Por tanto, la matriz B determina los autovectores.
q=1
Numéricamente, para calcular la matriz B en el algoritmo
R = ABS(A(p, q))
anterior que calcula los autovalores, añadiremos en cada
PARA i = 3, ..., DIM HACER
iteración las operaciones necesarios para ir obteniendo B.
PARA j = 1, ..., i − 1 HACER
En primer lugar, inicializamos B a la identidad antes de
IF ABS(A(i, j)) > R HACER
entrar en el bucle. A continuación, en cada iteración hare-
R = ABS(A(i, j))
mos B = B · Ri .Ahora bien, como Ri es una matriz de
p=j
rotación del tipo Rpq (α), cuando multiplicamos una matriz
q=i
B por la derecha por una matriz del tipo Rpq (α) (denote-
FIN IF
mos por B 0 = B · Rpq (α) el resultado de la multiplicación)
FIN PARA j
podemos observar que lo único que cambia en B son los
FIN PARA i
vectores columnas p y q, que se transforman de la siguiente
IF R < T OL HACER
manera:
PROCEDIMIENTO TERMINADO CORREC-
TAMENTE. b0ip = cos(α)bip − sin(α)biq i = 1, .., N
LOS AUTOVALORES SE ENCUENTRAN EN b0iq = sin(α)bip + cos(α)biq i = 1, .., N
LA DIAGONAL DE A.
SALIR
FIN IF Problema 90 (3 puntos) Utilizar el método de Jacobi
C = (A(q, q) − A(p, p))/(2 ∗ A(p, q)) para aproximar los autovalores y autovectores de la sigu-
IF C < 0 HACER iente matriz: ⎛ ⎞
T = −C − SQRT (1. + C ∗ C) 2 0 1
ELSE A=⎝ 0 1 0 ⎠
T = −C + SQRT (1. + C ∗ C) 1 0 1

35
⎧⎛ ⎞⎫ ⎧⎛ ⎞⎫
⎨ −1 ⎬ ⎨ 1
√ ⎬
⎝ 0 ⎠ ↔ 2, ⎝ − 2 ⎠ ↔ 2 +
⎩ ⎭ ⎩ ⎭
1 1
⎧⎛ ⎞⎫
Nota. Para no tener que buscar en cada paso el máximo
√ ⎨ √1 ⎬ √
de los elementos no-diagonales de Ak , el algoritmo de Ja- 2, ⎝ 2 ⎠ ↔ 2 − 2
cobi se puede modificar haciendo cero el primer elemento ⎩ ⎭
1
apq que se encuentre que verifique |apq | ≥ T OL.
3. Las matrices de dimensión 10 y 100 del directorio de
la asignatura.
Práctica 6 (Método de Jacobi para el cálculo de ⎛ ⎞
0 1 6 0 0 0
autovalores y autovectores 6 horas) ⎜ 1 0 2 7 0 0 ⎟
⎜ ⎟
Desarrollar en Fortran 77 la siguiente función : ⎜ 6 2 0 3 8 0 ⎟
4. A = ⎜⎜ 0 7 3 0 4 9


⎜ ⎟
• FUNCTION ERROR_VECTORES(U,V,N) : De- ⎝ 0 0 8 4 0 5 ⎠
vuelve la diferencia entre los vectores U y V, de di- 0 0 0 9 5 0
mensión N, utilizando la fórmula :
Resultados:
N
1 X ABS(U (i) − V (i))
ERROR_V ECT ORES = ⎛ ⎞ ⎛ ⎞
N i=1 ABS(U (i)) + 1. . 363 27 2. 984 4
⎜ . 626 28 ⎟ ⎜ −. 796 84 ⎟
⎜ ⎟ ⎜ ⎟
⎜ . 901 ⎟ ⎜ 3. 088 8 ⎟
• FUNCTION JACOBI(A,B,N,Nmax,TOL,Niter): Re- 16. 6 ↔ ⎜


⎟ 5. 942 ↔ ⎜⎜ −1. 985 4 ⎟

aliza el cálculo de los autovalores y autovectores de ⎜ 1. 176 3 ⎟ ⎜ ⎟
⎝ 1.0 ⎠ ⎝ 1.0 ⎠
una matriz simétrica A por el método de Jacobi. B
es una matriz donde se guardan los autovectores por . 938 54 −2. 165 3
columnas. La función devuelve 0 si termina bien y −1 ⎛ ⎞ ⎛ ⎞
−. 593 8 −1. 746 5
en caso contrario. ⎜ −1. 562 8 ⎟ ⎜ . 853 75 ⎟
⎜ ⎟ ⎜ ⎟
• FUNCTION ERROR_AUTOVECTORES ⎜ 0.05 170 ⎟ ⎜ . 575 36 ⎟

2. 11 ↔ ⎜ ⎟ ⎜
− 2. 465 ↔ ⎜ ⎟
⎟ ⎟
(A,AUTOVECTORES,AUTOVALORES,N,Nmax): ⎜ −. 400 89 ⎟ ⎜ −. 215 57 ⎟
Para comprobar que los autovalores λi y su au- ⎝ 1.0 ⎠ ⎝ 1.0 ⎠
tovectores x̄i están bien estimados, comparar . 659 86 −1. 241 2
para cada autovalor λi , utilizando la función ER- ⎛ ⎞ ⎛ ⎞
ROR_VECTORES(), los vectores Ax̄i y λi x̄i . . 521 32 . 729 18
Devolver la expresión ⎜ . 741 24 ⎟ ⎜ −. 896 18 ⎟
⎜ ⎟ ⎜ ⎟
⎜ −. 998 09 ⎟ ⎜ ⎟
−10. 06 ↔ ⎜ ⎟ − 12. 12 ↔ ⎜ −1. 324 6 ⎟
ERROR_AU T OV ECT ORES = ⎜ −. 855 2 ⎟ ⎜ 1. 826 8 ⎟
⎜ ⎟ ⎜ ⎟
⎝ 1.0 ⎠ ⎝ 1.0 ⎠
max ERROR_V ECT ORES(Ax̄i , λx̄i ) . 268 11 −1. 767 6
i=1,N

Comprobar los resultados obtenidos con los siguientes Nota: Obsérvese, al comparar los resultados, que los au-
ejemplos, tomando T OL = 0.0001 y N iter = 1000: tovectores están definidos módulo la multiplicación por
una constante.
⎛ ⎞
2 2 −2
1. A = ⎝ 2 1 1 ⎠
−2 1 1
Método de la potencia
Resultado:
⎧⎛ ⎞⎫ ⎧⎛ ⎞⎫
⎨ 1 ⎬ ⎨ −2 ⎬
⎝ −1 ⎠ ↔ −2, ⎝ −1 ⎠ ↔ Teorema 25 Sea una matriz A que posee una base de au-
⎩ ⎭ ⎩ ⎭
1
⎧⎛ ⎞⎫ 1 tovectores tal que en módulo su autovalor máximo λmax es
⎨ 0 ⎬ único. Sea un vector u1 no ortogonal al subespacio engen-
4, ⎝ 1 ⎠ ↔ 2 drado por los autovectores del autovalor λmax , entonces, si
⎩ ⎭ definimos la secuencia
1
⎛ ⎞ un−1
2 −1 0 un = A
2. A = ⎝ −1 2 −1 ⎠ k un−1 k
0 −1 2 se verifica que
Resultado:
¡¡ n n−1 ¢¢
Limn→∞ sign u ,u k un k= λmax

36
¡ ¡¡ ¢¢¢n un
Limn→∞ sign un , un−1 es un autovector de λmax
k un k
Limn→∞ kun k =
° ³ ´n−1 ³ ´n−1 °
Además, dicho autovector tiene norma 1. ° °
°µ1 λmax λN
x1 + ... + µN |λmax | xN °
° |λmax | °
¡¡ ¢¢ = |λmax | ° °=
Teorema 26 sign un , un−1 es el¡¡signo del¢¢producto ° ³λ ´n−2 ³ ´n−2 °
°µ1 max
x + ... + µ λN
x °
¡escalar de¢ un y un−1 ,¡¡es decir sign
¢¢ un , un−1 = 1¢ si
¡ n n−1 ° |λmax | 1 N |λmax | N°
n n−1 n n−1
u ,u ≥ 0 y sign u , u = −1 si u , u <
= |λmax |
0.
y por tanto
Demostración. En primer lugar, vamos a demostrar por
inducción la siguiente igualdad:
¡¡ n n−1 ¢¢
Limn→∞ sign u ,u k un k= λmax
An u1
un+1 = ¡ ¡¡ ¢¢¢n
kAn−1 u1 k Por otro lado, el término sign un , un−1 para n
suficientemente grande es 1n si λmax es positivo o (−1)n
Para n = 1 la igualdad se cumple por la definición de
si λmax es negativo. Sean x1 , ...., xM los autovectores aso-
u2 . Supongamos que se cumple para n−1, y demostrémoslo
ciados a λmax , obtenemos que
para n:

¡ ¡¡ ¢¢¢n un
An−1 u1 Limn→∞ sign un , un−1 =
un kAn−2 u1 k An u1 k un k
un+1 = A =A kAn−1 u1 k
=
k un k kAn−1 u1 k µ1 x1 + ... + µM xM
kAn−2 u1 k =
kµ1 x1 + ... + µM xM k
que es un autovector de λmax de norma 1.
Con lo que queda demostrado este primer resultado.
Por otro lado, como A posee una base de autovectores,
que denotaremos por xi , y u1 no es ortogonal al espacio Problema 91 (3 puntos) Aplicar el método de la po-
generado por los autovectores asociados a λmax , entonces tencia para aproximar el autovalor máximo y el autovec-
u1 se puede escribir como tor asociado de las siguientes matrices, realizando 3 it-
eraciones en el método, hasta calcular u4 y partiendo de
u1 = µ1 x1 + ... + µN xN u1 = (1, 1).
µ ¶
donde supondremos que x1 es un autovector asociado a 2 1
A =
λmax y que µ1 6= 0. Por la igualdad anteriormente de- 0 1
mostrada obtenemos que µ ¶
−3 0
A =
1 1

An−1 u1 µ1 λn−1 n−1


max x1 + ... + µN λN xN
un = = ° °=
kAn−2 u1 k °µ1 λn−2 n−2
max x1 + ... + µN λN xN
°
³ ´n−1 ³ ´n−1 Método de la potencia inversa
µ1 |λλmax
max |
x1 + ... + µN |λλmax
N
| xN
= |λmax | ° ° ³λ ´n−2 ³ ´n−2 °
° El método anterior también se puede utilizar para el cál-
°µ1 max
x + ... + µ λN
x °
° |λmax | 1 N |λmax | N ° culo del autovalor de módulo menor λ
min , teniendo en
cuenta que
Cuando hacemos tender n hacia infinito, todos los co-
cientes de la forma 1
λmin = 0
µ ¶n max{λi autovalores de A−1 }
λi
|λmax | Por tanto, si aplicamos el método anterior a A−1 ,
obtenemos que la secuencia
tienden hacia 0, salvo si λi = λmax . En este caso, dicho
cociente es 1n , si λmax es positivo, o (−1)n , si λmax es neg- un−1
un = A−1
ativo. Por tanto, para n suficientemente grande el signo de k un−1 k
n n−1
λmax coincide con el signo del producto escalar (u , u ).
Además verifica que
¡¡ ¢¢ 1
Limn→∞ sign un , un−1 k un k=
λmin

37
¡¡ n n−1 ¢¢ un Para ello, calcular dos iteraciones del método de la
Limn→∞ sign u ,u es un autovector de λmin
k un k potencia inversa partiendo de u1 = (1, 1, 1).
En los casos prácticos, se evita calcular directamente
A−1 , y se obtiene un resolviendo el sistema
un−1
Aun =
k un−1 k Métodos iterativos de resolución de sistemas lin-
eales
Problema 92 (2 puntos) Calcular el autovalor µ mayor
¶ Estas técnicas consisten en transformar un sistema de la
2 −1 forma
y el autovector correspondiente de la matriz
−1 1 Au = b
utilizando el método de la potencia, realizando 2 itera-
en una ecuación de punto fijo de la forma
ciones del método a partir de u1 = (1, 1) y tomando como
norma kuk = maxi |ui |. u = Mu + c

Problema 93 (2 puntos) Utilizar el método de la po- de tal manera que, al hacer iteraciones de la forma
tencia inversa para aproximar el autovalor menor de la
matriz µ ¶ un = M un−1 + c
−2 1
A= se obtenga que un converge hacia u, la solución del sistema
0 3
original.
Llegar hasta u3 partiendo de u = (1, 1).
Para autovalores que se encuentren entre λmin y λmax ,
se puede proceder de la manera siguiente: Se calcula Ejemplo 17 Consideremos el sistema de ecuaciones
primero una aproximación µ del autovalor λ de tal forma
2x − y = 1
que µ se encuentre más cercano a λ que a cualquier otro
autovalor. Por ejemplo, utilizando el método de Jacobi, si −x + 2y − z = 0
consideramos la matriz A0 = A − µI, donde µ es uno de −y + 2z = 1
los elementos diagonales de la matriz que resulta de aplicar
el método de Jacobi, entonces se obtiene que el autovalor Buscar la solución de este sistema es equivalente a buscar
menor de A0 es justamente λ, y, por tanto, podemos aplicar un vector u = (x, y, z) que verifique que
el método de la potencia inversa anterior. Nótese que si el
1+y
autovalor µ está calculado con mucha precisión, entonces x =
el autovalor más pequeño de A0 está muy próximo a 0, y 2
x+z
como el determinante de una matriz es el producto de sus y =
autovalores, ello indicaría que el determinante de A0 estaría 2
1+y
muy próximo a 0 y podemos tener problemas al resolver z =
el sistema utilizado por ejemplo el método de GAUSS a 2
través de la función de la librería an.h IGAUSS(). Para Hacer iteraciones de esta ecuación de punto fijo con-
evitar esto, podemos perturbar ligeramente el valor de µ siste en partir de una aproximación inicial (x1 , y1 , z1 ) y
para que IGAUSS() no dé problemas. Algorítmicamente, hacer iteraciones de la forma
quedaría como sigue: Si µ es el autovalor que estamos
1 + yn−1
tratando, haremos xn =
2
= 10−11 xn−1 + zn−1
0
yn =
1 A = A − µId 2
J = IGAU SS(A0 , ......) 1 + yn−1
zn =
IF (J.N E.0) T HEN 2
= ∗ 10.
En este caso, la solución exacta del sistema es u = (1, 1, 1).
µ = µ(1 + )
Si hacemos iteraciones del esquema anterior a partir de la
GOT O 1
aproximación inicial u1 = (0, 0, 0), obtenemos que
EN DIF
1+0 1
x2 = =
Problema 94 (3 puntos) Calcular el autovalor y au- 2 2
tovector más cercano a 2 de la matriz 0+0
⎛ ⎞ y2 = =0
0 −1 0 2
⎝ 0 3 −1 ⎠ 1+0 1
z2 = =
0 0 −1 2 2

38
De la misma forma, obtenemos que devuelve el signo del producto escalar de los vec-
⎛ ⎞ ⎛ ⎞ ⎛ ⎞ tores uf y vf de dimensión Nf (12 líneas de
0.5 .84 .98 código como máximo), y la función AUTO-
u3 = ⎝ 0.25 ⎠ .... u8 = ⎝ .73 ⎠ .... u17 = ⎝ .96 ⎠ VALOR_MAXIMO(Af,uf,Nf,Nfmax,Nfiter,Tolf ) que
0.5 .84 .98 devuelve el autovalor máximo de una matriz y su au-
tovector por el método de la potencia. Los parámetros
Como puede observarse, las sucesivas iteraciones se van
son la matriz Af, el vector candidato inicial uf, Nf la
aproximando a la solución u = (1, 1, 1). En este caso, la
dimensión real, Nfmax, la dimensión para coger memoria,
matriz M y el vector c que determinan el esquema iterativo
Nfiter número máximo de iteraciones, y Tolf la tolerancia.
vienen dados por
Esta función devuelve el valor 2.**120 si P no termina
⎛ ⎞ ⎛ 1 ⎞ correctamente. Tomar como norma kuk = i ABS(ui )
0 12 0 2
MJ = ⎝ 12 0 12 ⎠ cJ = ⎝ 0 ⎠ (28 líneas de código como máximo).
0 12 0 1
2
Problema 96 (2 puntos) Calcular 3 iteraciones del
método de Jacobi para resolver el sistema
⎛ ⎞⎛ ⎞ ⎛ ⎞
Teorema 27 Si el esquema iterativo 1 −1 0 x −1
⎝ −1 2 0 ⎠ ⎝ y ⎠ = ⎝ 3 ⎠
un = M un−1 + c 0 −1 3 z 1
converge hacia un vector u, entonces u verifica que partiendo de u1 = (0, 0, 0)

u = Mu + c
Método de Gauss-Seidel
Existen diferentes métodos para convertir un sistema Este método consiste en tomar
de la forma Au = b en una ecuación de punto fijo u = −1
MGS = (D + L) (−U )
M u + c. Todas se basan en descomponer A de la forma
−1
A = L + D + U, donde D es la matriz diagonal que corre- cGS = (D + L) b
sponde a la parte diagonal de A, L es la matriz triangular
A efectos prácticos, la aplicación de este método no
inferior que corresponde a la parte de A situada por de-
requiere el cálculo directo de la matriz inversa (D + L)−1 ,
bajo de la diagonal, y U es la matriz triangular superior
puesto que el paso de una iteración a otra puede hacerse
que corresponde a la parte de A situada por encima de la
de la siguiente forma:
diagonal.
−a12 un−1 − ... − a1N un−1 + b1
un1 = 2 N
a11
Método de Jacobi −a21 un1 − a23 un−1 ... − a2N un−1 + b2
3
un2 = N
a22
Este método consiste en tomar .
−aN1 un1 − aN 2 un2 ... − aNN −1 unN −1 + bN
MJ = D−1 (−L − U ) unN =
aN N
cJ = D−1 b Si hacemos un barrido para el cálculo de la solución
de arriba hacia abajo, y vamos actualizando las compo-
Es el que se ha utilizado en el ejemplo anterior. El
nentes del vector aproximación según las vamos calcu-
paso de una iteración a otra del método de Jacobi puede
lando, obtenemos el método de Gauss-Seidel. Por tanto,
expresarse de la siguiente forma:
básicamente, podemos decir que la diferencia entre el
−a12 un−1 − ... − a1N un−1 + b1 método de Gauss-Seidel y el método de Jacobi es que en
2
un1 = N
el método de Gauss-Seidel se actualiza el vector aproxi-
a11
mación después del cálculo de cada componente, y en el
−a21 un−1
1 − a n−1
23 u3 ... − a2N un−1 + b2 caso de Jacobi se actualiza sólo al final, después de haber
un2 = N
a22 calculado todas las componentes por separado.
.
−aN1 un−1
1 − aN 2 un−1
2 ... − aNN −1 un−1
N −1 + bN
unN = Ejemplo 18 Vamos a aplicar el método de Gauss-Seidel
aN N
al sistema del ejemplo anterior, es decir

2x − y = 1
Problema 95 (3 puntos) Escribir
en Fortran las funciones siguientes: −x + 2y − z = 0
SIGNO_PRODUCTO_ESCALAR(uf,vf,Nf ) que −y + 2z = 1

39
Las iteraciones del método de Gauss-Seidel aplicado estado de la solución en la etapa anterior, de la forma
a este sistema consisten en siguiente:
1 + yn−1 −a12 un−1 − ... − a1N un−1 + b1
xn = un1 = w 2 N
+ (1 − w)un−1
2 a11 1
xn + zn−1 n−1
yn = n
−a21 u1 ... − a2N uN + b2
2 un2 = w + (1 − w)un−1
2
1 + yn a22
zn = .
2 −aN1 un1 ... − aN N−1 unN−1 + bN
unN = w + (1 − w)un−1
N
Si hacemos iteraciones del esquema anterior a partir de la aNN
aproximación inicial u1 = (0, 0, 0), obtenemos que
La elección del parámetro w es, en general, un prob-
1+0 1 lema difícil. Sin embargo, en el caso de matrices tridiag-
x2 = = onales, es decir, matrices con todos los elementos nulos
2 2
1 salvo la diagonal principal y sus codiagonales, el siguiente
2 +0 1
y2 = = resultado muestra la forma de calcular el valor óptimo de
2 4
w.
1 + 14 5
z2 = =
2 8
De la misma forma, obtenemos que Teorema 28 Si A es una matriz tridiagonal y ρ(MJ ) < 1,
entonces el valor de w que optimiza la velocidad de con-
⎛ ⎞ ⎛ ⎞
.5 . 976 56 vergencia del método es:
u3 = ⎝ . 25 ⎠ .... u8 = ⎝ . 976 56 ⎠ 2
. 625 . 988 28 wopt = p
1 + 1 − ρ(MJ )2

Problema 97 (2 puntos) ⎛ Calcular una⎞ base ortogonal Como puede observarse de la expresión anterior, el
1 0 1 valor de wopt se encuentra siempre entre 1 y 2.
de autovectores de la matriz ⎝ 0 2 0 ⎠ Demostración [La-Th]. Pg.358-362.
1 0 1
Ejemplo 19 Vamos aplicar el método de relajación al sis-
Problema 98 (2 puntos) Calcular 3 iteraciones del tema del ejemplo anterior, es decir
método de Gauss-Seidel para resolver el sistema
⎛ ⎞⎛ ⎞ ⎛ ⎞ 2x − y = 1
1 −1 0 x −1
⎝ −1 2 0 ⎠ ⎝ y ⎠ = ⎝ 3 ⎠ −x + 2y − z = 0
0 −1 3 z 1 −y + 2z = 1

partiendo de u1 = (0, 0, 0) En este caso, ρ(MJ ) = √12 y wopt = 1. 17. Las it-
eraciones del método de relajación aplicado a este sistema
consisten en
Problema 99 (1 punto) Una variante del método de
Gauss-Seidel consiste en tomar M = (D + U )−1 (−L), y 1 + yn−1
xn = w + (1 − w)xn−1
−1
c = (D + U ) b. Indicar, en este caso, qué diferencias de 2
xn + zn−1
implementación habría con respecto al caso anterior. yn = w + (1 − w)yn−1
2
1 + yn
zn = w + (1 − w)zn−1
Método de relajación 2

El objetivo de este método es intentar mejorar el método Si hacemos iteraciones del esquema anterior a partir
de Gauss-Seidel introduciendo un parámetro de relajación de la aproximación inicial u1 = (0, 0, 0) y tomando w =
w. Se toman, en este caso, wopt = 1.17, obtenemos que

Mw = (D + wL)
−1
((1 − w)D − wU ) ⎛ ⎞ ⎛ ⎞ ⎛ ⎞
. 585 . 686 . 999
−1
cw = w (D + wL) b u2 = ⎝ . 342 ⎠ .... u3 = ⎝ . 802 ⎠ ... u8 = ⎝ . 999 ⎠
. 785 . 921 . 999
Estas nuevas matrices permiten realizar un prome-
diado entre el resultado obtenido por Gauss-Seidel y el

40
Problema 100 (3 puntos) Calcular 3 iteraciones del o X
método de relajación para resolver el sistema | ajj |> | aij | ∀j.
⎛ ⎞⎛ ⎞ ⎛ ⎞ i6=j
1 −1 0 x −1
⎝ −1 2 0 ⎠ ⎝ y ⎠ = ⎝ 3 ⎠ entonces el método de Jacobi asociado al sistema Au = b
0 −1 3 z 1 converge para cualquier aproximación inicial.

Demostración: En primer lugar, observamos que la ma-


partiendo de u1 = (0, 0, 0). Calcular previamente el
triz MJ puede expresarse como:
parámetro de relajación óptimo.
⎛ ⎞
0 − aa12
11
− aa13
11
. − aa1N
11
Convergencia de los métodos iterativos ⎜ a21
− a22 0 a23
− a22 . − aa2N ⎟
⎜ ⎟
⎜ . . . . .
22

Vamos a denotar por en = un − u el error relativo entre ⎜ ⎟
⎜ − aN −1,1 aN −1,2 a
− aNN−1,N ⎟
la solución del sistema u y la aproximación en la etapa n, ⎝ aN−1,N−1 − aN−1,N−1 . 0 −1,N −1 ⎠
aN,1 aN,2 aN,N −1
un . − aN,N − aN,N . − aN,N 0

Teorema 29 Se considera el esquema iterativo un = Teniendo en cuenta que las normas 1 e infinito de una
M un−1 + c. Entonces matriz son el máximo de las sumas por filas o columnas en
valor absoluto, se tiene, por las condiciones del teorema,
en = M n−1 e1 que kMJ k < 1 para la norma 1 o infinito. Por tanto,
el teorema se concluye teniendo en cuenta que cualquier
Demostración: La solución del sistema satisface que u =
norma de una matriz es siempre mayor o igual que su radio
M u + c. Restando esta igualdad de la igualdad un =
espectral.
M un−1 + c, obtenemos que
Este resultado se puede generalizar un poco al caso
un − u = M (un−1 − u) = M n−1 (u1 − u) de matrices irreducibles de la siguiente forma:

Teorema 30 El método iterativo un = M un−1 + c con-


verge para cualquier aproximación inicial si y sólo si Definición 9 Una matriz A es irreducible si un sistema
ρ(M ) < 1. de la forma Au = b no puede descomponerse en dos sub-
sistemas independientes de dimensión menor
Demostración: El resultado es inmediato a partir del
hecho de que una matriz M n converge hacia 0 cuando
n → ∞ si y sólo si ρ(M ) < 1 Dicho de otra forma, una matriz es irreducible si el
cambio de cualquier valor del vector b del sistema Au = b
afecta a todos los elementos del vector u.
Teorema 31 Si en el método de relajación w ∈
/ (0, 2),
entonces ρ(Mw ) ≥ 1.
Teorema 33 Si A es una matriz irreducible y se verifica
Demostración: En primer lugar, observamos que las ma- que X
trices D +Lw y (1−w)D −wU son matrices triangulares y, | aii |≥ | aij | ∀i.
por tanto, su determinante es el producto de los elementos j6=i
diagonales. Además, teniendo en cuenta que el determi- o
nante del producto de dos matrices es el producto de sus X
| ajj |≥ | aij | ∀j.
determinantes y que el determinante de la matriz inversa i6=j
es el inverso del determinante, obtenemos que
con la desigualdad estricta en al menos una fila o columna,
entonces los métodos iterativos convergen.
|(1 − w)D − wU | (1 − w)N Πi aii Demostración. [La-The] Pg.346-347.
|Mw | = =
|(D + wL)| Πi aii

Por lo tanto, como el determinante de una matriz es Ejemplo 20 La matriz del sistema ejemplo tratado ante-
el producto de sus autovalores, obtenemos que, si w ∈ / riormente, esto es
(0, 2), entonces |1 − w| ≥ 1 y, en consecuencia, Mw posee ⎛ ⎞
al menos un autovalor de módulo mayor o igual que uno. 2 −1 0
⎝ −1 2 −1 ⎠
0 −1 2
Teorema 32 Si una matriz A verifica que
satisface las hipótesis del Teorema anterior.
X
| aii |> | aij | ∀i.
j6=i

41
Problema 101 (2 puntos) Escribir en 4. Los sistemas ejemplos del directorio de la asignatura.
Fortran la función siguiente: CONDI- Estos ejemplos tienen siempre como solución el vector
CIONAMIENTO(Af,Nf,Nfmax,TOLf,Nfiter) que devuelve (1, 1, ...., 1).
el condicionamiento de una matriz utilizando el método de
Jacobi para calcular los autovalores. Se supondrá imple-
mentada la función JACOBI(A,N,Nmax,TOL,Niter) que
devuelve 0 si termina bien y 1 si termina mal. La función Método de Newton-Raphson para sistemas de
CONDICIONAMIENTO devuelve 2.*120 si termina mal ecuaciones no lineales
porque Jacobi da un error o se produce una división por En las aplicaciones reales, muchas veces nos encontramos
cero. Los parámetros son la matriz Af, Nf la dimensión con sistemas no lineales de ecuaciones. Por ejemplo, cal-
real, Nfmax, la dimensión para coger memoria, Nfiter cular las raíces, reales o complejas, de un polinomio de
número máximo de iteraciones, y Tolf la tolerancia (21 grado 2 dado por P2 (z) = az 2 + bz + c, donde z = x + yi,
líneas de instrucciones como máximo). es equivalente a resolver el sistema

ax2 + bx − ay 2 + c = 0
Problema 102 (2 puntos) Demostrar que, si una ma-
triz A verifica que por filas o columnas su suma es siempre 2ayx + by = 0
igual a 0, entonces el determinante de A es cero, y por que es un sistema no lineal de ecuaciones. En general, un
tanto el sistema asociado a A no tiene solución. sistema no lineal de ecuaciones de dimensión N, se escribe
como N ecuaciones del tipo

Problema 103 (3 puntos) Dado un sistema iterativo f1 (u1 , ...., uN ) = 0


f2 (u1 , ...., uN ) = 0
un = M un−1 + c
.
Demostrar que, aunque el radio espectral de M sea fN (u1 , ...., uN ) = 0
mayor que 1, si u1 y c son combinaciones lineales de au-
tovectores de M correspondientes a autovalores de módulo donde f (u) = (f1 (u), f2 (u), ..., fN (u)) es una función de
menor que 1, entonces el método converge. <N → <N , y u = (u1 , ...., uN ). El método de Newton-
Raphson para sistemas de ecuaciones se basa en desarrollar
por Taylor la función f y truncar el desarrollo para que
Práctica 7 (Método de relajación, 2 horas) quede un sistema lineal, es decir
¡ ¢ ¡ ¢
Desarrollar una función en Fortran 77 donde se implemente f (u) = f (u0 ) + ∇f (u0 ) u − u0 + O k u − u0 k2
el método de relajación. Los parámetros de la función
serán: la matriz A, el vector b, un vector u donde se alma- donde u0 es una aproximación de la solución de f (u) = 0.
cenará la solución, y que inicialmente será el vector aprox- Si truncamos el desarrollo e igualamos a 0 (para aproximar
imación inicial, que por defecto se tomará 0, el parámetro la raíz) obtenemos que la raíz del sistema lineal se obtiene
de relajación w, el número máximo de iteraciones N max, resolviendo el sistema
y la tolerancia T OL para evaluar la diferencia entre un y
un−1 . La función devolverá el número de iteraciones nece- ∇f (u0 )z = −f (u0 )
sarias para alcanzar la solución. Si el método no converge u1 = u0 + z
devuelve −1. Comparar la diferencia en la velocidad de
convergencia entre el método de Gauss-Seidel y el Método En el caso general, a partir de una aproximación un
de relajación. Probar el método para los sistemas se obtiene la aproximación un+1 en dos etapas:

∇f (un )z = −f (un )
⎛ ⎞⎛ ⎞ ⎛ ⎞
1 −1 0 x −1 un+1 = un + z
1. ⎝ −1 2 0 ⎠ ⎝ y ⎠ = ⎝ 3 ⎠
0 −1 3 z 1

⎛ ⎞⎛ ⎞ ⎛ ⎞ Ejemplo 21 Consideremos el siguiente sistema no lineal


2 −1 0 x 1 de ecuaciones:
2. ⎝ −1 2 −1 ⎠ ⎝ y ⎠ = ⎝ 0 ⎠
0 −1 2 z 1 x2 − y 2 + 1 = 0
2xy = 0
⎛ ⎞⎛ ⎞ ⎛ ⎞
1 3 3 x 7 La matriz gradiente de esta función viene dada por
3. ⎝ 3 1 3 ⎠ ⎝ y ⎠ = ⎝ 7 ⎠ µ ¶
3 3 1 z 7 2x −2y
∇f (un ) =
2y 2x

42
Tomemos como aproximación inicial u1 = (1, 1). El sis- INTERPOLACIÓN DE FUNCIONES II
tema que hay que resolver para pasar de una iteración a
otra es Esta sección es la continuación natural del tema interpo-
µ ¶µ ¶ µ 2 ¶ lación de funciones visto anteriormente. Por motivos de
2xn −2yn z1 xn − yn2 + 1
=− coordinación entre los programas teórico y práctico de la
2yn 2xn z2 2yn xn
asignatura, el tema de interpolación de funciones se dividió
Si partimos de u1 = (1, 1), para obtener u2 tenemos que en dos partes, siendo ésta la segunda parte.
resolver µ ¶µ ¶ µ ¶
2 −2 z1 −1
=
2 2 z2 −2
¡ 3 1¢ Interpolación de Hermite
que tiene por solución − 4 , − 4 . Por tanto, u2 viene dado
por En ocasiones, resulta de interés interpolar no sólo el valor
µ ¶ µ 3 ¶ µ 1 ¶ de la función en ciertos puntos {xi }i=0,..,N , sino también
2 1 −4 4
u = + = el valor de sus derivadas. Un ejemplo clásico de ello es
1 − 14 3
4
el desarrollo de Taylor de una función en un punto a. En
Para calcular u3 , tenemos que resolver el sistema este caso, aproximamos f (x) por un polinomio de grado N ,
µ 1 ¶µ ¶ µ ¡ ¢2 ¡ ¢2 ¶
− 32 z1 1
− 34 + 1 PN (x) tal que f (x) y PN (x) poseen las mismas derivadas
2 = − 4
3 1
z2 6 en el punto a desde el orden 0 hasta el orden N.
2 2 16
¡ ¢
cuya solución es − 13 9 3
40 , − 40 . Por tanto, u viene dado por
µ 1 ¶ µ 13 ¶ µ ¶ f 0 (a) f N ) (a)
3 − 40 3
− 40 PN (x) = f (a) + (x − a) + .. + (x − a)N
u = 4
3 + 9 = 39 1! N!
4 40 40
El error de interpolación viene dado por la fórmula
que ya es una buena aproximación de la solución exacta
dada por el vector (0, 1). f N +1) (ξ)
f (x) − PN (x) = (x − a)N +1
(N + 1)!
Problema 104 (3 puntos) Calcular 2 iteraciones del
método de Newton-Raphson no lineal para aproximar una donde ξ es un valor intermedio entre x y a. En el caso
raíz del sistema de ecuaciones general, donde buscamos un polinomio P (x) tal que él y
todas sus derivadas hasta un cierto orden M coincidan con
x2 + y 2 − 1 = 0 una función f (x) en los puntos {xi }i=0,..,N , se utilizan los
y−x = 0 denominados polinomios base de Hermite Hi,j (x), que son
polinomios de grado menor o igual que (N + 1)(M + 1) − 1
partiendo de (x, y) = (1, 1).
dados por las siguientes condiciones:
½
Problema 105 (2 puntos) Plantear el algoritmo nece- ∂ l Hi,j 1 si l = j y k = i
sario para calcular, utilizando el método de Newton- (xk ) =
∂xl 0 l 6= j o k 6= i
Raphson, las raíces complejas o reales de un polinomio de
grado 3. A partir de los polinomios base de Hermite, el poli-
nomio interpolador de Hermite se define como:
N X
X M
Problema 106 (2 puntos) Se considera el sistema no ∂j f
P (x) = (xi )Hi,j (x)
lineal i=0 j=0
∂xj
(x − 1)y = 0
Problema 108 (3 puntos) Calcular los polinomios base
(y − 2)x = 0 de Hermite que corresponden a tomar como puntos de in-
A partir de u1 = (1, 1), calcular u2 y u3 utilizando el terpolación x0 = −1, x1 = 1, y el orden de derivación
método de Newton-Raphson para aproximar un cero del M = 1.
sistema no lineal.
Interpolación por splines cúbicos
Problema 107 (2 puntos) Calcular una iteración del Uno de los problemas básicos del polinomio interpolador
método de Newton-Raphson no lineal para aproximar una de Lagrange, es que, para valores grandes de N, los poli-
raíz del sistema de ecuaciones nomios de grado N pueden tener un carácter fuertemente
exyz − 1 = 0 oscilante, y los resultados obtenidos por la interpolación
y2 − z 3 − 2 = 0 pueden no ser muy satisfactorios, como indica el ejemplo
siguiente.
(z − 1)x4 − 3 = 0
partiendo de (x, y, z) = (1, 1, 1).

43
Ejemplo 22 El polinomio base de Lagrange centrado en las condiciones anteriores, entonces
0 sobre los puntos xi = −5, −4, −3, −2, −1, 0, 1, 2, 3, 4, 5 es
ai = f (xi ) i = 0, .., N
(x2 − 1)(x2 − 4)(x2 − 9)(x2 − 16)(x2 − 25) ci+1 − ci
P 0 (x) = di = i = 0, .., N − 1
−14400 3hi
ai+1 − ai hi (2ci + ci+1 )
Tiene un marcado carácter oscilante como muestra su bi = − i = 0, .., N − 1
gráfica en el intervalo [−5, 5]. hi 3

Ejemplo 23 hi−1 ci−1 + 2(hi−1 + hi )ci + hi ci+1 =


(x2 − 1)(x2 − 4)(x2 − 9)(x2 − 16)(x2 − 25) 3(ai+1 − ai ) 3 (ai − ai−1 )
= = −
−14400 hi hi−1
para i = 1, .., N − 1.

y Demostración De la condición P3i (xi ) = f (xi ), se ob-


tiene de forma inmediata que ai = f (xi ). De la condición
5
∂ 2 P3i+1 ∂ 2 P3i
∂x2 (xi+1 ) = ∂x2 (xi+1 ), se obtiene que
3.75

2ci+1 = 6di hi + 2ci


2.5

1.25
de donde, despejando, obtenemos que
0 ci+1 − ci
-5 -2.5 0 2.5 5 di =
3hi
x

De la Condición P3i (xi+1 ) = f (xi+1 ), se obtiene que

di h3i + ci h2i + bi hi + ai = ai+1

Para evitar este problema de oscilaciones de los poli- Despejando, obtenemos que
nomios de Lagrange, cuando se trabaja con muchos puntos
ai+1 − ai
de interpolación, se suele interpolar la función utilizando bi = − di h2i − ci hi =
polinomios a trozos, definiendo un polinomio distinto para hi
cada intervalo [xi , xi+1 ]. La técnica más conocida es la ai+1 − ai hi (2ci + ci+1 )

interpolación por splines cúbicos, que son polinomios de hi 3
grado 3. Por tanto, tendremos un polinomio de grado 3 dis- ∂P3i ∂P3i−1
tinto P3i (x) = di (x− xi )3 + ci (x−xi )2 + bi (x− xi ) +ai para Finalmente, de la condición ∂x (xi ) = ∂x (xi ), se
cada intervalo [xi , xi+1 ]. Si hay N +1 puntos, el número de obtiene que
polinomios es N. Para definir estos polinomios, se imponen
bi = 3di−1 h2i−1 + 2ci−1 hi−1 + bi−1
las siguientes condiciones:
y, despejando todo en función de ci , se obtiene la relación
P3i (xi ) = f (xi ) i = 0, .., N − 1
P3i (xi+1 ) = f (xi+1 ) i = 0, ..., N − 1 hi−1 ci−1 + 2(hi−1 + hi )ci + hi ci+1 =
∂P3i ∂P3i+1 3(ai+1 − ai ) 3 (ai − ai−1 )
(xi+1 ) = (xi+1 ) i = 0, .., N − 2 = −
∂x ∂x hi hi−1
i+1
∂ 2 P3i ∂ 2 P3
(xi+1 ) = (xi+1 ) i = 0, ..., N − 2
∂x2 ∂x2
Nótese que esta última relación determina un sistema
Vamos a introducir la notación hi = de ecuaciones donde las incógnitas son las variables ci . Di-
xi+1 − xi . Nótese que, para definir los poli- cho sistema tiene N +1 incognitas (c0 , ..., cN ) y N −1 ecua-
nomios, tenemos que buscar 4N valores, es decir: ciones. Para completar dicho sistema, hay que añadir una
a0 , ...., aN −1 , b0 , ..., bN−1 , c0 , ....., cN−1, d0 , ...., dN−1. ecuación que involucre a c0 y otra ecuación que involucre
Por razones técnicas, como veremos posteriormente, a cN . Para añadir estas dos ecuaciones hay dos proced-
vamos a utilizar también los valores aN y cN . imientos estándares. El primero consiste simplemente en
fijar c0 = cN = 0, lo que significa que

Teorema 34 Si una familia de polinomios P3i (x) = di (x− ∂ 2 P30


c0 = (x0 ) = 0
xi )3 + ci (x − xi )2 + bi (x − xi ) + ai , i = 0, .., N, satisface ∂x2
∂ 2 P3N −1
cN = (xN ) = 0
∂x2

44
El segundo procedimiento se utiliza cuando utilizamos −2.2
b0 = 1− = 1.733
los valores de f 0 (a) y f 0 (b). En este caso, imponemos que 3
−4.4 + 2.8
b1 = −1 − = −0.467
3
∂P30 5.6 + 0
(x0 ) = f 0 (a) b2 = 2− = 0.133
∂x 3
∂P3N−1
(xN ) = f 0 (b) Por tanto, los polinomios son
∂x
de donde salen las ecuaciones P0 (x) = −0.733x3 + 1.733x
a1 − a0 h0 P1 (x) = 1.667 (x − 1)3 − 2.2 (x − 1)2
f 0 (a) = − (2c0 + c1 ) −0.467 (x − 1) + 1
h0 3
3 2
aN − aN−1 hN −1 P2 (x) = −0.933 (x − 2) + 2.8 (x − 2) + 0.133 (x − 2)
f 0 (b) = − (2cN −1 + cN )
hN −1 3

Por lo tanto, siguiendo con el resultado del teorema


anterior, para calcular los splines cúbicos es necesario, en A continuación se muestra una gráfica con los 3 poli-
primer lugar, tomar ai = f (xi ). A continuación, se resuelve nomios concatenados en el intervalo [0, 3] :
un sistema de ecuaciones tridiagonal para el cálculo de los
ci . Los bj y dj se calculan directamente a partir de las Como puede observarse, por las condiciones sobre las
relaciones mostradas en el teorema anterior. derivadas que hemos impuesto, no es posible distinguir ge-
ométricamente, al trazar la curva, cuales son los puntos de
unión entre los tres polinomios. Es decir, parece, a simple
Ejemplo 24 Vamos a calcular los polinomios interpo- vista, el trazado de una única función. Veamos ahora grá-
ladores utilizando splines cúbicos al interpolar la función ficamente el perfil de la derivada de los polinomios P0 (x),
f (x) en los puntos x = 0, 1, 2, y 3, sabiendo que f (0) = 0, P1 (x), y P2 (x).
f (1) = 1, f (2) = 0, f (3) = 2, tomando c0 = c3 = 0. En
este caso hi = 1. Debemos definir 3 polinomios distintos
y
que corresponden a los intervalos [0, 1], [1, 2], y [2, 3]. Los 2.75
2.5
términos ai vienen dados por 2.25
2
1.75
1.5
⎛ ⎞ ⎛ ⎞ 1.25
a0 0 1
0.75
⎜ a1 ⎟ ⎜ 1 ⎟ 0.5
⎜ ⎟ ⎜ ⎟
⎝ a2 ⎠ = ⎝ 0
0.25
⎠ 0
0 0.25 0.5 0.75 1 1.25 1.5 1.75 2 2.25 2.5 2.75 3
-0.25
a3 2 -0.5
-0.75 x
-1
-1.25

El sistema que debemos resolver para calcular los ci como puede observarse, tampoco sobre la derivada se apre-
es cian los puntos de unión de los polinomios. Sin embargo,
sobre la gráfica de la derivada segunda los puntos de unión
µ ¶µ ¶ µ ¶ se detectan en los lugares donde encontramos un pico, tal
4 1 c1 −6
Ejemplo 25 = y como se muestra en la gráfica de la derivada segunda
1 4 c2 9
siguiente:
cuya
µ solución
¶ µ es ¶
c1 −2.2
= .
c2 2.8 y
5

4
Los valores bi y di vienen dados por
3

−2.2 − 0 2
d0 = = −0.733 1
3 0
2.8 + 2.2 0 0.25 0.5 0.75 1 1.25 1.5 1.75 2 2.25 2.5 2.75 3
d1 = = 1.667 -1
3 -2
x

0. − 2.8 -3
d2 = = −0.933
3 -4

45
y 2

Problema 109 (3 puntos) Calcular los polinomios que


determinan la interpolación
¡ ¢ por splines cúbicos de la fun- 1.5

ción f (x) = sin π2 x para los puntos x = −1, 0, 1 y 2.


1

0.5

La interpolación a través de la función seno cardi-


nal 0
0 0.5 1 1.5 2 2.5 3

Una base de funciones interpolantes muy utilizada en la x

teoría de Fourier es la base formada a partir de la función


seno cardinal, definida por

sin(x)
sin c(x) = Ejemplo 27 Vamos a comparar gráficamente el resultado
x
de interpolar la función del ejemplo anterior utilizando
cuya gráfica es la interpolación de Lagrange normal, la interpolación por
splines cúbicos y la interpolación a través de la función
seno cardinal. El polinomio interpolador de Lagrange se
y 1
puede calcular fácilmente y da como resultado
0.75 5
P (x) = x − x(x − 1) + x(x − 1)(x − 2)
6
0.5
En la siguiente figura se muestran juntas las gráficas
0.25
del polinomio de Lagrange (línea a trozos), los polinomios
de la interpolación por splines cúbicos (línea sólida), y la
0 interpolación utilizando la función sin c(x) (línea a trozos).
-50 -25 0 25 50

y 2
1.8
1.6

Esta función tiene la propiedad de que en x = 0, 1.4

sin c(0) = 1, y para cualquier entero i distinto de 0, 1.2


1
sin c(πi) = 0. Dada una función f (x), su función inter-
0.8
polante en los puntos xi = a · i para i = M, ..., N viene 0.6
dada por la función 0.4

N ¡ ¢ 0.2
X sin(π xa − i ) 0
fe(x) = f (xi ) ¡x ¢ 0 0.25 0.5 0.75 1 1.25 1.5 1.75 2 2.25 2.5 2.75 3

i=M
π a −i x

Como puede observarse, la interpolación por splines


Ejemplo 26 Consideremos la función f (x), definida en cúbicos es la menos oscilante. Por otro lado, cuando el
los puntos x = 0, 1, 2, y 3, tal que f (0) = 0, f (1) = 1, número de puntos de interpolación aumenta, la diferencia
f (2) = 0, f (3) = 2. La interpolación de esta función uti- entre los diferentes tipos de interpolación también lo hace.
lizando la función seno cardinal viene dada por la función
Problema 110 (2 puntos) Calcular la función que in-
sin(π (x − 1)) sin(π (x − 3))
fe(x) = +2 terpola, utilizando la función sin c(x), la función f (x) =
π(x − 1) π(x − 3) sin(x) en los puntos x = −π, − π2 , 0, π2 , π.
cuya gráfica es
La interpolación a través de polinomios
trigonomé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

46
Dada una función f (x), definida en el intervalo 1 2 2
P3 (x) = + cos(x) − cos(3x)
[−π, π], pretendemos aproximar f (x) como 2 π 3π

N
X
f (x) ≈ ck eikx
La siguiente gráfica muestra la aproximación entre
k=−N
f (x) y P3 (x):
donde ck son coeficientes, en general complejos. El sigu-
iente resultado determina la forma de calcular dichos coe-
y
ficientes ck : 1

Teorema 35 Los coeficientes ck que minimizan el error 0.75


cuadrático medio
Z π Ã N
X
!2 0.5

ikx
E(c−N , ..., cN ) = f (x) − ck e dx 0.25
−π k=−N
0

vienen dados por -2.5 -1.25 0 1.25 2.5

Rπ x

−π
f (x)e−ikx dx
ck =

Demostración En primer lugar, observamos que, dada
la forma cuadrática del funcional E(c−N , ..., cN ), éste Problema 111 (3 puntos) Calcular el polinomio
debe poseer mínimos. Por otro lado, en un mínimo, trigonométrico, tomando N = 2, que interpola la función
las derivadas parciales de E(c−N , ..., cN ) con respecto a f (x) = |x| en el intervalo [−π, π].
cualquier ck son cero, y por tanto
Z π Ã N
X
!
∂E ilx Aproximación por mínimos cuadrados
(c−N , ..., cN ) = f (x) − cl e eikx dx = 0
∂ck −π l=−N La aproximación mínimo cuadrática aproxima, a través de
con lo que el resultado del teorema sale de forma inmedi- una función, un conjunto de valores de forma global, sin
ata, teniendo en cuenta que exigir que la función aproximante pase exactamente por
ese conjunto de puntos.
Z π ½
2π si l = −k
eilx eikx dx = Dado un conjunto de valores {(xi , yi )}i=1,..,N , la
−π 0 si l 6= k
aproximación mínimo cuadrática lineal consiste en buscar
la recta y = ax + b, tal que la función de error cuadrático
N
X
Ejemplo 28 Consideremos la función E(a, b) = (axi + b − yi )2
½ i=1
1 si x ∈ [− π2 , π2 ]
f (x) =
0 si x ∈ / [− π2 , π2 ] sea mínima.

Teorema 36 Los valores a y b que minimizan el error


Vamos a calcular el polinomio trigonométrico inter- cuadrático anterior son
polante para N = 3. Los valores de ck son P PN PN
N N i=1 xi yi − i=1 xi i=1 yi
Rπ a = PN 2 ³PN ´2
f (x)dx 1 N i=1 xi −
c0 = −π
= i=1 xi
2πR 2 PN 2 PN PN PN
i=1 xi i=1 yi − i=1 xi yi i=1 xi
π ix
f (x)e dx 1 b =
c1 = c−1 = −π = PN 2 ³PN ´2
N i=1 xi − i=1 xi
R π 2π 2ix π
f (x)e dx
c2 = c−2 = −π =0 Demostración En primer lugar, observamos que, dada
Rπ 2π
f (x)e3ix dx la forma cuadrática que tiene el funcional, debe poseer un
1
c3 = c−3 = −π =−
2π 3π
Por tanto, el polinomio trigonométrico interpolador es

47
mínimo. Además, en un mínimo del funcional E(a, b), las [Is-Ke] Isaacson E., Keller H. ”Analysis of Numerical
derivadas parciales son cero, y por tanto Methods”. John Wiley and Sons, 1966. Uno de los libros
clásicos más conocidos en Análisis Numérico. Destaca por
X N
∂E el rigor matemático en su exposición.
(a, b) = 2 (axi + b − yi ) xi = 0 [Ki-Ch] Kincaid D., Cheney W. "Análisis Numérico".
∂a i=1
Addison-Wesley Iberoamericana, 1994. Excelente libro de
X N
∂E base para un curso de Métodos Numéricos. Contiene todos
(a, b) = 2 (axi + b − yi ) = 0
∂b los tópicos habituales con una descripción muy completa
i=1
y detallada. Los algoritmos están muy bien descritos a
Esto da lugar a un sistema lineal de ecuaciones cuyas través de un seudocódigo. Trae una buena selección de
incógnitas son a y b, y cuya resolución lleva al resultado problemas.
establecido en el teorema. [La-Th] Lascaux P., Théodor R. "Analyse numérique
matricielle appliquée à l’art de l’ingénieur. Vol. 1 Méth-
odes directes y Vol. 2 Méthodes itératives ", Masson, 1993.
Problema 112 (2 puntos) Calcular la aproximación Esta obra, dividida en dos volúmenes, trata en profundi-
mínimo cuadrática lineal de la tabla dad todos los tópicos relacionados con el Análisis Numérico
Matricial. Su mayor virtud es el rigor matemático con el
xi yi
que se tratan los temas y una cuidada presentación.
0 0 [St] Stewart G.W. ”Afternotes on Numerical Analy-
1 1 sis” SIAM, 1996. Esta obra, sin pretender ser exhaustiva,
2 0 muestra las últimas tendencias en cuanto a la enseñanza
3 2 de los conceptos básicos del Análisis Numérico.

BIBLIOGRAFÍA BÁSICA

[Bu-Fa] Burden R., Faires D. ”Análisis Numérico”, Grupo


Editorial Iberoamérica 1985. Esta obra es un clásico del
Cálculo Numérico, destaca por una exposición simple y al
mismo 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ón
fortran 77 con numerosas aplicaciones al análisis numérico.
[Ci] Ciarlet P.G. ”Introduction à l’analyse numérique
matricielle et à l’optimisation”, Masson , 1990. Con un
exquisito rigor se abordan los temas básicos del Análisis
Numérico Matricial y métodos de optimización, incluyendo
la resolución de sistemas a través de métodos directos, it-
erativos y métodos tipo gradiente, así como el cálculo de
autovalores y vectores propios.
[Hi] Higham N. "Accuracy and Stability of Numeri-
cal Algorithms", SIAM, 1996 Esta obra, muy reciente, da
una visión general sobre los últimos avances en Análisis
Numérico, haciendo especial énfasis en la precisión de los
algoritmos numéricos y en la propagación de errores, tam-
bién resulta de interés la descripción de las aritméticas que
utilizan los ordenadores más recientes como la aritmética
Standard de I.E.E.E..
[Hu] Hultquist P. F. ”Numerical Methods for
Engineers and Computer Scientists”, The Ben-
jamin/Cummings Publishing Company, Inc. 1988.
Esta obra, presenta una cuidada selección de temas
básicos en Análisis Numérico, sin pretender ser tan
exhaustiva como otras obras de carácter más general,
la buena presentación de los temas elegidos la hacen de
interés.

48
APÉNDICE A: Resumen de los comandos de Intercambio entre modo comando y modo edición
UNIX ESC pasa de modo edición a modo comando
i pasa de modo comando a modo edición
A pasa a modo edición y pone el cursor al final
En este breve resumen seguiremos el siguiente esquema. de la línea
En primer lugar, aparece el comando UNIX. A contin- O inserta una nueva línea, pasa a modo edición y
uación, entre paréntesis, su equivalente en MS-DOS (si pone el cursor al principio de la nueva línea
existe). Finalmente, un comentario y un ejemplo.
Manejo de Ficheros (en modo comando)
cd (cd) cambia el directorio activo
:w escribe en disco el fichero
>cd /users/p701/fortran77
:wq escribe en disco el fichero y sale del vi
more (type) visualiza el contenido de un fichero
:e f ichero.name edita el fichero f ichero.name
>more /users/p701/fortran77/programas/prog1.f
:q! sale del vi sin guardar cambios.
ls (dir) visualiza contenido de un directorio
:w f ichero.name escribe el fichero actual en el
>ls /users/p701/fortran77
fichero f ichero.name en disco
cp (copy) copia un fichero en otro.
!comando ejecuta el comando UNIX comando
>cp /users/p701/fortran77/programas/prog1.f .
:set nu presenta los números de línea en pantalla
rm (del) borra un fichero
>del prog1.f Comandos para desplazarse por el texto (en modo
man (help) suministra ayuda sobre un comando comando)
> man ls Crtl F página adelante
logout se termina la sesión y se sale del sistema Crtl B página atrás
>logout $ pone el cursor en el final de la línea
ps visualiza los números de procesos que están abiertos 0 pone el cursor en el principio de línea
que corresponden al usuario alumno /string busca hacia adelante el string string
>ps -u alumno ?string busca hacia atras el string string
kill interrumpe la ejecución de un proceso de número n repite la última búsqueda
N proceso G va al final del texto
>kill -9 N proceso 3G va a la línea número 3.
mkdir (mkdir) crea un directorio
>mkdir practica1 Comandos para borrar líneas o caracteres (en
rmdir (rmdir) borra un directorio modo comando)
>rmdir practica1 x borra el carácter donde se encuentra el cursor
mv (move) cambia de nombre o ubicación un archivo. r character remplaza el carácter donde se encuen-
>mv prog1.f practica1.f tra el cursor por el carácter character
chmod cambia los permisos de lectura, escritura y eje- dd borra la línea donde se encuentra el cursor
cución de un fichero. Este comando es de utilidad para 3 dd borra 3 líneas desde donde se encuentra el
salvaguardar la información de directorios y ficheros de cursor hacia abajo
miradas ajenas. dw borra la palabra donde se encuentra el cursor
Hacer > man chmod para mirar las opciones.
chown cambia el propietario de un fichero. Comandos para copiar y desplazar bloques (en
Hacer > man chown para mirar las opciones. modo comando)
du (tree) visualiza la cadena de directorios yy copia en el buffer la línea donde se encuentra
>du /users/p701 el cursor
find busca un archivo de nombre f ile en el directorio dir 3yy copia en el buffer 3 líneas hacia abajo desde
>find dir -name f ile -print el cursor
grep busca los ficheros que contenga la cadena de carac- dd copia (y borra) al buffer la línea donde se en-
teres string cuentra el cursor
>grep string * 3dd copia (y borra) al buffer 3 líneas hacia abajo
desde el cursor
APÉNDICE B: Resumen del procesador de texto p copia el contenido del buffer en el texto.
vi

El procesador de texto vi tiene la ventaja de estar pre- APÉNDICE C: Algunos fallos comunes en
sente en cualquier máquina que trabaje sobre UNIX y no Fortran
requiere ningún entorno gráfico. Puede ejecutarse en dos
modos. El modo comando (el que está por defecto al en-
trar en vi), donde se ejecutan comandos, y el modo edición, 1. No poner EN D al final del programa principal o de
que es donde se escribe normalmente el texto. la función.

49
2. Escribir números como 1/2 ó 10 ∗ ∗20 en precisión
entera. Solución: Escribir 1./2.ó 10. ∗ ∗20.
3. Utilizar variables enteras como flotantes o al revés.
Sugerencia: Aunque no sea necesario, declarar los
tipos de todas las variables que se utilicen al principio
del programa o función.
4. Utilizar un parámetro de una función para asignar
dinámicamente memoria a un vector o matriz en el in-
terior de la función. Solución: Poner una declaración
de PARAMETER al principio de la función y con ella
asignar las memorias de forma estática.
5. No poner ningún comentario en los programas.
6. Anidar excesivamente los programas. Siempre hay
que buscar que el número de anidamientos sea mín-
imo.
7. No respetar los tipos en los pasos de parámetros de
las funciones.
8. Utilizar vectores sin declararlos con la sentencia DI-
MENSION.
9. No pasar la dimensión de un vector como parámetro
de una función.
10. Exceso de sentencias GOT O. Las sentencias GOT O
pueden dificultar el seguimiento del flujo del programa
y sólo hay que utilizarlas cuando sean indispensables.
11. A veces, los programas pueden fallar por errores de
redondeo en los cálculos. Fortran da la posibilidad
de 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 la
aritmética para las variables reales. Análogamente,
si en lugar de utilizar la directiva -rn utilizamos -dn
aumentaremos la precisión de las variables declaradas
DOUBLE PRECISION, y si utilizamos -in las vari-
ables enteras.

50

You might also like