Vous êtes sur la page 1sur 49

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

Contents 6 DIFERENCIACIÓN E INTEGRACIÓN


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

1
9 BIBLIOGRAFÍA BÁSICA 47 optado por reducir los contenidos e impartir una selección
de los métodos numéricos más representativos.
10 APÉNDICE A: Resumen de los comandos
de LINUX/UNIX 48 ARITMÉTICAS DE PRECISIÓN FINITA Y
FUENTES DE ERRORES NUMÉRICOS
11 APÉNDICE B: Resumen del procesador de
texto vi. 48 Aritméticas de precisión finita.
12 APÉNDICE C: Algunos fallos comunes en Un número entero z se representa en el ordenador a través
Programación 48 de un número fijo de bits (16 bits habitualmente), donde
uno de los bits se utiliza para determinar el signo y los
INTRODUCCIÓN restantes para expresar el valor absoluto del número, de
tal manera que la secuencia de bits
El presente documento es un texto de referencia básico so-
bre los contenidos de la disciplina de Análisis Numérico a1 a2 a3 ......an
en el contexto curricular de una Ingeniería Informática.
donde ai = 0 o ai = 1, representa el valor absoluto del
Aunque el texto cubre los contenidos mínimos necesarios,
número
resultará de gran interés para los alumnos complementar
la información aquí suminisftrada con los textos de ref- | z |= an + an−1 2 + an−2 22 + ... + a1 2n−1
erencia básicos mencionados en la bibliografía. Muchas
de las demostraciones de los resultados presentados se en- Así, utilizando 16 bits, el mayor número entero que
cuentran en este texto. En los casos en que las demostra- podemos representar es
ciones no se incluyen, se suministra el libro y la página
donde se encuentra tal demostración, para que el alumno 1 + 2 + 22 + ..... + 214 = 215 − 1 = 32767
interesado pueda estudiarla por su cuenta. En general, to-
dos los temas presentados aparecen bien desarrollados en Es decir, los número enteros que podemos expresar
los libros de texto clásicos mencionados en la bibliografía. con una aritmética de 16 bits van desde −32767 hasta
La única excepción es el tema de aritméticas de precisión 32767.
finita, que se ha desarrollado en este texto con algo más Para representar un número real y en el ordenador
de detalle y con un enfoque algo más moderno que en los nos basaremos en el siguiente resultado:
libros clásicos, por considerar que, en el contexto de una Teorema 1 Un número real positivo y se puede expresar
Ingeniería Informática, este tema es de especial relevancia. como
En el texto se proponen unas prácticas de laboratorio X∞
an
para realizar a lo largo de la asignatura. El lenguaje de y = 2e
n=1
2n
programación que se utilizará para las prácticas es el C.
Para establecer el orden de impartición de los contenidos donde e es un número entero, a1 = 1, y para n > 1, an = 0
presentes en este documento se ha utilizado, como criterio o an = 1.
preferente, la coordinación entre el programa de prácticas
y el programa teórico de la asignatura, de tal forma que, Demostración. Dado un número real positivo y, existe
con un desarrollo normal de la docencia, los contenidos un entero e tal que 2e−1 ≤ y < 2e , y por tanto 2−1 ≤
teóricos sean presentados con antelación al desarrollo de y2−e < 1. Por otro lado, si definimos las sucesiones Sn y
las prácticas. an de la siguiente forma: S1 = 2−1 , an = 1 y para n > 1
Para el buen seguimiento de la asignatura, resulta de 1
an = 0 si Sn−1 + 2n > y2−e
gran interés tener cierta soltura en el manejo de los con- 1
an = 1 si Sn−1 + 2n ≤ y2−e
ceptos elementales del Análisis Matemático, el Álgebra,
y la programación de Algoritmos. La materia expuesta n
X ak
en esta documentación está programada para ser impar- Sn =
2k
tida en un cuatrimestre a razón de 3 horas/semana en el k=1
aula y 2 horas/semana en el laboratorio informático, lo entonces es claro que | Sn − y2−e |≤ 21n , y por tanto Sn →
que hace un total de, aproximadamente, 45 horas en aula y2−e lo que concluye la demostración del teorema.
(3 créditos teóricos) y 30 horas de laboratorio (2 créditos
prácticos). Dado el escaso tiempo disponible, se han elim- Ejemplo 1 Consideremos y = 10. 125, podemos expresar
inado algunos temas clásicos de un curso completo anual este número como
de Análisis Numérico como son las ecuaciones diferenciales
1 1 1
ordinarias y las ecuaciones en derivadas parciales. Nor- 10. 125 = 24 ( + 3 + 7 )
malmente, dichos temas se verán en detalle en asignaturas 2 2 2
posteriores. Además, en lugar de presentar de forma ex- Es decir, e = 4, a1 = a3 = a7 = 1, y el resto de los an
haustiva todos los métodos numéricos que se pueden en- es 0. En este caso, el número de elementos an distintos de
contrar en los libros de Análisis Numérico clásicos, se ha 0 es un número finito, en general no ocurre así.

2
Evidentemente, cualquier número que tenga un Es importante resaltar que los números reales en una
número finito de elementos an distintos de 0 es un número aritmética de precisión finita no están equiespaciados, es
racional y, por tanto, los números irracionales se represen- decir, los números están más cercanos entre sí cerca de 0,
tarán siempre con un número infinito de elementos an no y más alejados al alejarnos de 0.
nulos. Sin embargo, como muestra el siguiente problema, En 1985, la sociedad I.E.E.E. presentó una serie de
existen otros muchos números además de los irracionales, especificaciones estándares para la definición de una arit-
que no se pueden representar con un número finito de ele- mética de precisión finita para los números reales. En este
mentos an no nulos. trabajo, se codifica un número real en simple precisión uti-
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-
X∞ ores posibles para el exponente e. En este caso, se toma
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
el número de elementos no nulos an es infinito. que los 256 posibles, ello se hace así, porque se reservan
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
X∞ 24
an X 1
0.0 703 125 = 2e yemax = 2128 = 3. 4 × 1038
n=1
2n 2n
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
la fórmula de representación anterior, tomando un número 1
yemin = 2−125 = 1. 18 × 10−38
finito de valores posibles ai y un número finito de valores 2
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
ye = ±2e sumando esta cantidad al exponente resultante de la nor-
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

Problema 4 (2 puntos) Calcular todos los números y el valor mínimo positivo es


reales que se pueden construir tomando 5 bits de la forma 1
siguiente: 1 bit para el signo, 2 bits para la mantisa (es yemin = 2−1021 = 2. 23 × 10−308
2
decir t = 3, puesto que a1 = 1 y sólo se almacenan a2
y a3 ) y 2 bits para el exponente e, tomando como rango Además, el número de combinaciones posibles que
de e = −1, 0, 1, 2. Representar dichos números sobre una puede tener la mantisa es 253 ≈ 9. 0 × 1015 . Es decir, la
recta. aritmética tiene una precisión de 15 dígitos decimales.

3
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,
los valores pueden cambiar ligeramente de una máquina a Programa 2 Pseudocódigo para calcular el mayor
otra. Por otro lado, aunque en la mayoría de los orde- número positivo de una aritmética. El programa devuelve
nadores actuales la base de representación de los números un entero M tal que 2M es el número positivo mayor
es 2, todavía pueden encontrarse algunos sistemas donde posible.
la base es 10 ó 16. Nosotros no entraremos aquí a estudiar
este tipo de bases. El estudio es básicamente el mismo, Algoritmo Mayor_Numero_Positivo
adaptándolo a la base de representación. variable real A←1.
variable real B←2.
Tratamiento de las excepciones en el estándar de variable entera M←0
I.E.E.E. mientras B>A hacer
Denominaremos excepciones a las expresiones que no se A←2*A
pueden expresar en una aritmética usual, B←2*A
√ como son el 0, M←M+1
el infinito, operaciones no válidas (como −1), etc. Estas
excepciones son tratadas en el estándar de I.E.E.E. de la finmientras
siguiente forma: dentro de las posiciones de memoria ded- escribir(M)
icadas al exponente e de un número, se reservan dos, que finalgoritmo
corresponden a emin − 1 y emax + 1, para trabajar con con
las excepciones. La regla que se utiliza es la siguiente:
Problema 5 (2 puntos) Dada una aritmética de pre-
1. Si el valor de una variable y tiene por exponente cisión finita cualquiera, calcular la distancia que hay entre
emax + 1 y todos los coeficientes de la mantisa valen el número 1 y su inmediato superior, es decir, el número
0, entonces y se considera infinito. Por ejemplo 1/0 que va después de 1, y la distancia entre el número 1 y su
debe dar infinito. inmediato inferior.

2. Si el valor de una variable y tiene por exponente


emax + 1 y algún coeficiente de la mantisa es distinto Vamos a llamar A, al conjunto de valores reales a los
de 0, entonces y se considera que no √ es un número que da lugar una aritmética de precisión finita, es decir
(NaN (Not a Number)). Por ejemplo −1 debe dar ( t
)
X an
NaN. A = ±2 e
∪ {0}
n=1
2n
3. Si el valor de una variable y tiene por exponente
emin − 1 y todos los coeficientes de la mantisa valen 0, Dado un número real cualquiera y, al representarlo
entonces y se considera igual a 0. en una aritmética de precisión finita se produce un error
de redondeo, llamaremos ye ∈ A al número real que mejor
4. Si el valor de una variable y tiene por exponente emin −
aproxima a y dentro de A.
1 y algún coeficiente de la mantisa es distinto de 0, y
se considera que no está normalizado (es decir a1 = 0)
y el valor de y sería Definición 1 Dada una aritmética de precisión finita, se
t define la unidad de redondeo u como
X an
y = 2emin −1
n=2
2n u = 2−t

Por ejemplo, si t = 24 (reales en simple precisión)


Programa 1 Pseudocódigo para calcular el número posi-
u = 2−24 = 5. 97 × 10−8 , y en doble precisión (t = 53),
tivo (mayor que cero) más pequeño
u = 2−53 = 1. 1 × 10−16 .
Algoritmo Menor_Numero_Positivo
variable real A←1. Programa 3 Pseudocódigo para calcular la unidad de re-
variable entera M←0 dondeo de una aritmética. El programa devuelve un entero
mientras A>0 hacer M tal que u = 2−M
A←A/2
M←M+1 Algoritmo Unidad_Redondeo
finmientras variable real A←1.
escribir(M) variable real B←2
finalgoritmo variable entera M←1
mientras B>1 hacer
A←A/2

4
B←1+A Demostración. Un número real cualquiera z, que
M←M+1 tomaremos positivo sin pérdida de generalidad, se puede
finmientras expresar como
X∞
escribir(A) an
finalgoritmo z = 2e
n=1
2n
donde a0 = 1 y, en general, an = 0 o an = 1. Además,
para un número natural t cualquiera tenemos que
Problema 6 (3 puntos) Se considera una aritmética de à t !
Xt X an
16 bits donde se dedica 1 bit al signo, 9 bits a la mantisa e an e 1
(t = 10) y 6 bits al exponente (emin = −30 emax = 31). 2 ≤z≤2 + t
n=1
2n n=1
2n 2
Escribir, si es posible, los siguientes números en esta ar-
itmética: Por el problema anterior, el número que está a la
derecha de la desigualdad también pertenece a la arit-
1. 2, y los números más cercanos a 2 por arriba y por
mética de precisión finita, y por tanto
debajo.
2e 2−t
2. El cero, el infinito y NaN. | z − ze |≤
2
Ahora bien, como a0 = 1, se tiene que 2e < 2 | z | y,
3. Los números positivos mayor y menor de la aritmética
por tanto
(teniendo en cuenta las excepciones).
| z − ze |≤| z | 2−t =| z | u
1 con lo que queda demostrado el teorema.
4. 9.

¡1 1
¢
5. 2 2 − 210 .
Problema
P 9 (2 puntos) Dado un número ze =
7 ¢(2 puntos) ¡ Sean 2e tn=1 a2nn , en una aritmética de precisión finita. Cal-
Problema
¡ ¢A =
cular el número inmediatamente inferior a él en dicha ar-
2 12 + 213 + 215 B = 23 12 + 216 + 1
27 . Calcular
B+A y B−A itmética.

Un resultado importante para la comparación de dos


números es el siguiente:
Problema 8 (2 puntos) Sean emin , emax , los valores
mínimo y máximo del exponente e. Demostrar que si
emin < e < emax , entonces los números: Teorema 3 Si ze1 , ze2 ∈ A son distintos entonces
à t !
X an 1 | ze1 − ze2 |≥ max {| ze1 |, | ze2 |} u
e
2 ± t
n=1
2n 2

pertenecen al conjunto A de números reales generados por Demostración: Ejercicio


la aritmética de precisión finita. En muchos algoritmos, el test de parada incluye el
hecho de que dos variables estén próximas entre sí. para
ello se fija un umbral o tolerancia T OL que por supuesto
A continuación, mostraremos un resultado que indica será mayor que la unidad de redondeo u y expresaremos
el error de redondeo máximo que se produce al aproximar que las variables A y B están cercanas entre sí con una
un número real cualquiera en una aritmética de precisión tolerancia T OL si se cumple que
finita.
| A − B |≤ max {| A |, | B |} T OL

Teorema 2 Sean yemin , yemax los valores positivos menor o equivalententemente


y mayor de una aritmética de precisión finita. Sea u la |A−B |
unidad de redondeo de dicha aritmética. Si un número ≤ T OL
max {| A |, | B |}
real z verifica que yemin <| z |< yemax , entonces
Este criterio es simétrico en el sentido de que trata de
| z − ze |≤| z | u igual modo los números A y B. También se puede utilizar
un criterio más simple, como
donde ze es el número más cercano a z en la aritmética.
|A−B |
≤ T OL
|A|

5
pero en este caso le estamos dando una significación espe- Para poder verificar si la práctica está bien, a contin-
cial a A con respecto a B. uación se dan los resultados que se deben obtener:

Estos criterios de comparación de números funcionan Precisión aritmética : float


bien salvo cuando los números A y B están muy próximos
a 0. Por ejemplo, si B = 0, los criterios anteriores quedan • unidad de redondeo = 2−25 ≈ 5.9 × 10−8

|A| • Número menor = 2−150 ≈ 2 × 10−53


≤ T OL
|A| • Número mayor = 2128 ≈ 1 × 1031
lo cual es imposible (si T OL < 1) Para evitar este com-
portamiento, se puede añadir al criterio un valor > 0 de Precisión aritmética : double
la siguiente forma:
• unidad de redondeo = 2−54 ≈ 1.1 × 10−16
|A−B |
≤ T OL • Número menor = 2−1075 ≈ 2 × 10−324
(max {| A |, | B |} + )

o bien • Número mayor = 21024 ≈ 2 × 10308


|A−B |
≤ T OL
(| A | + )
Precisión aritmética : long double

• unidad de redondeo = 2−65 ≈ 5.42 × 10−20


Asociado a cualquier aritmética de precisión finita de
números reales, existen 4 operaciones básicas, que son la • Número menor = 2−16446 ≈ 4 × 10−5275
suma, la resta, la multiplicación y la división de números
reales dentro de la aritmética. Nosotros no vamos a entrar • Número mayor = 216384 ≈= 1 × 104932
en este curso en cómo se pueden definir algorítmicamente
estas operaciones. Solamente queremos mencionar que, a
menudo, para minimizar el efecto de los redondeos en las Además calcularemos la distancia relativa entre los
operaciones, antes de realizarlas se aumenta la precisión números A = 1000 y B = 1001 utilizando la fórmula
de los números reales (por ejemplo pasando de simple pre-
cisión a doble precisión) para, a continuación, realizar la |A−B |
operación en una aritmética de mayor precisión y, final- (max {| A |, | B |} + 1)
mente, el resultado se redondea para pasarlo a la precisión
inicial. que es la fórmula que utilizaremos durante el curso para
comparar números.

Para observar como gestiona las excepciones el com-


Práctica 1 (Aritméticas finitas).
piladore vamos a acumular
√ en variables reales las opera-
Para compilar los programas utilizaremos el entorno Dev ciones 1/0, 1/∞, ∞·0, y −1 e imprimir los resultados por
C++ que puede descargarse gratuitamente desde el sitio pantalla. En C la raiz cuadrada se calcula con la función
web : http://www.bloodshed.net/dev/devcpp.html sqrt().
En la página de la asignatura también se encuentran
todos los ficheros y utilidades necesarias para hacer las Fuentes de errores numéricos.
prácticas. En particular el programa 3 de cálculo de la
unidad de redondeo está implementado. Dentro de las posibles fuentes de errores numéricos,
La práctica consiste en implementar los programas 1, destacaremos 3 tipos:
2 y 3, y ejecutarlos para las diferententes aritméticas en
precisión real que ofrece el C. Concretamente las variables Errores de redondeo. Son los que se producen al ”re-
en precisión real del C son de 3 tipos : dondear” un número real para poder expresarlo en una
aritmética de precisión finita. Como vimos en la sec-
1. float ción anterior, este error está controlado por la denominada
unidad de redondeo, u = 2−t , de tal forma que, al tomar
2. double un número real z y aproximarlo en la aritmética por el
valor ze ∈ A más próximo, el error de redondeo tiene la
3. long double
expresión:
Además con la opción de depuración se seguirá paso | z − ze |≤| z | u
a paso la ejecución de los programas. Para poder utilizar
las funciones de la librería matemática hay que incluir al Errores de cambio de base. Este tipo de errores se
principio del fichero #include <math.h> produce al realizar un cambio de base para representar un

6
número real. Como vimos en la sección anterior, las arit- Problema 11 (2 puntos) Escribir el Pseudocódigo para
méticas estándares de ordenador trabajan en base 2. Sin implementar el cálculo de las raíces de ax2 + bx + c = 0
embargo, los humanos pensamos y razonamos en términos evitando los errores de cancelación y teniendo en cuenta
de números en base 10. Por ejemplo, números tan naturales las diferentes opciones que aparecen cuando a 6= 0 y a = 0.
para nosotros como 0.1 no pueden representarse de forma
exacta en una aritmética en base 2. Esto quiere decir que,
al representar 0.1 el ordenador, va a producir un pequeño
redondeo, y este pequeño error de redondeo se puede ir pro- CÁLCULO DE LOS CEROS DE UNA
pagando hasta producir errores apreciables. Por ejemplo, FUNCIÓN
parece razonable pensar que, cuando sumamos 100 veces
En esta sección vamos a estudiar algunos métodos para
el número 0.01, el resultado sea exactamente 1, pero, no
calcular los ceros de una función de una variable, f (x),
es así. Sin embargo, si sumamos 128 = 27 veces el número
esto es, los valores de x para los cuales f (x) = 0.
2−7 , el resultado sí es exactamente 1.
Como conclusión de este apartado, podemos extraer
que, para ser más precisos numéricamente, cuando tra- Método de la bisección.
bajamos con números más pequeños que la unidad de-
beríamos pensar en términos de 2−m en lugar de 10−m , Se considera un intervalo [a, b] donde la función f (x) cam-
que es como solemos hacerlo. bia de signo, es decir f (a)·f (b) < 0. El método consiste en
ir dividiendo el intervalo [a, b] por la mitad de la siguiente
Errores por Cancelación. Estos errores se producen al forma:
restar números de aproximadamente la misma magnitud. Se toma el punto medio a+b 2 . Si f ( a+b
2 ) = 0 ya
a+b
Hay que tener en cuenta que, al realizar operaciones sobre hemos encontrado la raíz x = 2 . En caso contrario,
una variable, los errores de redondeo se van acumulando si f ( a+b a+b
2 ) · f (b) < 0 entonces hacemos a = 2 y volvemos
en la parte menos significativa del número (los dígitos de a subdividir el nuevo intervalo [a, b]. Si, por el contrario,
menos valor), dejando relativamente intacta la parte más f (a) · f ( a+b a+b
2 ) < 0, entonces hacemos b = 2 y volvemos
significativa del número, que corresponde a los dígitos de a empezar. Las sucesivas subdivisiones del intervalo [a, b]
mayor valor. Por ello, al restar dos números de magnitud van aproximando la raíz.
parecida, se cancelan las partes significativas, quedando
la aportación de los dígitos de menos valor, que es donde
más error hay. Por ejemplo, en el programa anterior, se Problema 12 (2 puntos) Calcular 2 iteraciones del al-
ha utilizado este fenómeno de cancelación para poner de goritmo de la bisección para buscar un cero de la función
manifiesto la diferencia entre trabajar con bases distintas. f (x) = x2 − 2 en el intervalo [−2, 0].
En los algoritmos, muchas veces se intenta evitar la posi-
bilidad de restar 2 números que pudieran ser de magnitud
parecida. Por ejemplo, en la conocida fórmula del cálculo Problema 13 (2 puntos) Escribir el Pseudocódigo para
de raíces de un polinomio de grado 2, ax2 + bx + c = 0 implementar el método de la bisección
(con a 6= 0) √
−b ± b2 − 4ac
x=
2a Método de la Regula-falsi
una forma
√ de evitar la cancelación que se produce cuando Este método es una variación del anterior en el sentido
b ≈ b2 − 4ac consiste en calcular primero la raíz de siguiente: En lugar de tomar el punto medio a+b 2 del in-
mayor valor absoluto, es decir tervalo, se considera el punto de intersección de la recta
¡ √ ¢ que pasa por los puntos (a, f (a)) y (b, f (b)) con el eje x.
− b + sign(b) b2 − 4ac
x1 = Es decir, en el razonamiento anterior, se sustituye el valor
2a xm = a+b2 por el valor
y después la segunda raíz x2 utilizando la relación x1 x2 = b−a
c xm = a − f (a)
a. f (b) − f (a)
Por lo tanto, en los algoritmos, se deberá evitar, en la
medida de lo posible, la resta de variables que tengan una
magnitud cercana. Problema 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].
Problema 10 (1 punto) Calcular las raíces del poli-
nomio P (x) = x2 − 2x + 0.01 evitando los errores de
Problema 15 (2 puntos) Escribir el Pseudocódigo para
cancelación.
implementar el método de la Regula-falsi.

7
Método de Newton-Raphson El método de la Secante
Éste es, sin duda, uno de los métodos más importantes y Este método es una variante del método de Newton para
útiles para el cálculo de raíces. Dada una aproximación el caso en que no sea posible calcular la derivada de f (x)
inicial de la raíz x0 , se busca, a partir de x0 , una aprox- de una forma analítica. En este caso, se sustituye el valor
imación mejor x1 de la raíz, de la siguiente forma: Se f 0 (xn ) en el algoritmo, por el valor
sustituye la función f (x) por el valor de su desarrollo de
Taylor centrado en x0 hasta el orden 1, es decir f (xn ) − f (xn−1 )
xn − xn−1
f (x) ≈ f (x0 ) + f 0 (x0 )(x − x0 )
que corresponde a una aproximación de f 0 (xn ). Para ini-
que corresponde a un polinomio de grado 1, y a contin- ciar el algoritmo, son necesarias dos aproximaciones ini-
uación se calcula x1 como el cero de este polinomio, es ciales, x0 y x1.
decir:
f (x0 )
x1 = x0 − 0 Problema 16 (1 punto) Calcular una iteración del
f (x0 )
método de Newton-Raphson para calcular un cero de la
y por tanto, de forma general, obtenemos, a partir de x0 función f (x) = x3 − 3 partiendo de x0 = 1.
una secuencia xn de valores que van aproximando la raíz,
definidos por
f (xn )
xn+1 = xn − 0 Problema 17 (1 punto) Calcular una iteración del
f (xn )
método de la secante para calcular un cero de la función
A continuación veremos una aplicación de este método f (x) = x3 − 3 partiendo de x0 = 0, x1 = 1.
para calcular la raíz cuadrada √
de un número positivo A,
teniendo en cuenta que si x = A, entonces f (x) = x2 −
A = 0.
Problema 18 (2 puntos) Escribir el pseudocódigo del
algoritmo del método de la secante. Los datos de entrada
Programa 4 Pseudocódigo para calcular una aproxi- son las aproximaciones iniciales, x0 y x1 , el número máx-
mación de la raíz cuadrada de un número positivo A con imo de iteraciones, N max, y la tolerancia, T OL, para
una tolerancia T OL, y un número máximo de iteraciones determinar la igualdad de dos números.
N max .

Algoritmo Raiz_Cuadrada
Método de Müller.
variables reales A,TOL
variable entera Nmax Este método es una generalización del método de Newton-
variables reales X0, X1 Raphson. En lugar de quedarnos con la parte lineal del
leer(A,TOL) desarrollo de Taylor de la función, nos quedamos con los
leer(Nmax) términos hasta el orden 2, de tal forma que hacemos
si A<0 entonces
f 00 (xn−1 )
escribir(’El numero A no es positivo’) f (x) ≈ f (xn−1 )+f 0 (xn−1 )(x−xn−1 )+ (x−xn−1 )2
devolver CODIGO DE ERROR 2
finsi donde xn−1 es una aproximación de una raíz de la fun-
X0←(1+A)/2. ción f (x). Para obtener una aproximación xn mejor de la
para K←1 hasta Nmax hacer raíz calculamos los ceros del polinomio de segundo grado
X1←X0-(X0*X0-A)/(2.*X0) anterior, es decir
si X0=X1 mod TOL entonces q
escribir (’LA RAIZ DE A ES’,X0) −f 0 (xn−1 ) ± (f 0 (xn−1 ))2 − 2f (xn−1 )f 00 (xn−1 )
devolver X1 xn = xn−1 +
f 00 (xn−1 )
sino
X0←X1 De las dos posibles raíces, nos quedamos con aquélla
finsi que sea más cercana a xn−1 . Dicha raíz será la aproxi-
finpara mación xn de la raíz de f (x) en la etapa n. En el caso
escribir(’No máximo de iterac. excedido’) en que f 00 (xn−1 ) = 0, calculamos xn por el método de
devolver CODIGO DE ERROR Newton-Raphson. En el caso en que no conozcamos
finalgoritmo 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

8
f (xn−1 )−f (xn−2 ) f 00 (xn−1 )
f 0 (xn−1 ) ≈ xn−1 −xn−2 + 2 (xn−1 − xn−2 ) 1. f (x) = x − 2 : Para todos los métodos la solución
se alcanza en una iteración y no hay diferencia con
Como veremos posteriormente, la elección de las fór- respecto la precisión de la aritmética
mulas anteriores equivale a aproximar f (x) por la parábola
que pasa por los puntos (xn−3 , f (xn−3 )) , (xn−2 , f (xn−2 )) 2. f (x) = x2 − 2 :
y (xn−1 , f (xn−1 )), y calcular posteriormente las derivadas √
(a) M1 (float) : 3 iteraciones raiz ' 2 f (raiz) '
de dicha parábola.
10−8

(b) M2 (float) : 3 iteraciones raiz ' 2 f (raiz) '
Práctica 2 (El método de Newton-Raphson y la 10−8
secante) √
(c) M2 (float) : 4 iteraciones raiz ' 2 f (raiz) '
Implementar en C++ el método de Newton-Raphson y el 10−8

de la secante teniendo en cuenta las siguientes posibili- (d) M1 (double) : 5 iteraciones raiz ' 2
dades : f (raiz) ' 10−16

1. Método 1 (M1) : Newton-Raphson conociendo la fun- (e) M2 (double) : 5 iteraciones raiz ' 2
ción y su función derivada como funciones independi- f (raiz) ' 10−16

entes (f) M2 (double) : 6 iteraciones raiz ' 2
f (raiz) ' 10−16
2. Método 2 (M2) : Newton-Raphson conociendo sólo la √
función. La derivada se calcula haciendo (g) M1 (long double) : 5 iteraciones raiz ' 2
f (raiz) ' 10−19
f (x + (x + 1)h) − f (x) √
f 0 (x) = (h) M2 (long double) : 5 iteraciones raiz ' 2
(x + 1)h
√ f (raiz) ' 10−19
donde h = u, siendo u la unidad de redondeo de la √
(i) M2 (long double) : 6 iteraciones raiz ' 2
aritmética f (raiz) ' 10−19
3. Método 3 (M3) : Método de la secante. Se dan 2
proximaciones y la derivada se calcula haciendo 3. f (x) = cos(x) + 1

f (x1 ) − f (x0 ) (a) M1 (float) : 8 iteraciones raiz ' 3.13


f 0 (x1 ) = f (raiz) ' 10−6
(x1 − x0 )
(b) M2 (float) : 8 iteraciones raiz ' 3.13
f (raiz) ' 10−6
Las funciones devuelven el número de iteraciones re-
alizadas o un número negativo si han fallado. La raiz se (c) M2 (float) : 12 iteraciones raiz ' 3.13
devuelve como un parámetro de entrada/salida. Además f (raiz) ' 10−6
se tendrá como parámetros el número máximo de itera- (d) M1 (double) : 22 iteraciones raiz ' π
ciones N max, y la tolerancia T OL, para determinar la f (raiz) ' 10−14
igualdad entre dos números. En los ejemplos se tomará
(e) M2 (double) : 22 iteraciones raiz ' π
siempre T OL = 100 · u donde u es la unidad de redondeo
f (raiz) ' 10−15
de la aritmética y N max = 100000.
La función a la que se le calculan los ceros se define en (f) M2 (double) : 32 iteraciones raiz ' π
el propio cuerpo del programa. Utilizar los métodos para f (raiz) ' 10−15
calcular los posibles ceros de las siguientes funciones: (g) M1 (long double) : 28 iteraciones raiz ' π
f (raiz) ' 10−18
1. f (x) = x − 2
(h) M2 (long double) : 28 iteraciones raiz ' π
2. f (x) = x2 − 2 f (raiz) ' 10−18
3. f (x) = cos(x) + 1 (i) M2 (long double) : 40 iteraciones raiz ' π
f (raiz) ' 10−18
4. f (x) = 1
5. f (x) = x2 + 1 4. f (x) = 1 (los 3 métodos fallan)
5. f (x) = x2 + 1 (los 3 métodos fallan)
Nota: Utilizar como tolerancia T OL = 100 · u donde u es
la unidad de redondeo de la aritmética y N max = 100000.
Tomar siempre como aproximación inicial de la raiz x0 =
1. (para el método de la secante tomar x1 = 1.1). Los
resultados que se deben obtener son

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

Efectivamente, dado que ak = bk − bk+1 x0 y an = bn ,


Ejemplo 2 Actualmente están muy de moda los planes de
obtenemos la igualdad anterior teniendo en cuenta que
pensiones. Las entidades financieras venden a sus clientes
los planes de pensiones de la siguiente forma, por ejemplo: (x − x0 )Q(x) + b0 =
si usted aporta durante 30 años 600 euros todos los años,
aportación que se va incrementando cada año en un 10%, bn xn + (bn−1 − bn x0 )xn + ..... + (b0 − b1 x0 )
es decir el primer año 600, el segundo año 610, etc., en-
tonces, le aseguramos que al final del trigésimo año tendrá Por último, obtenemos
a su disposición la cantidad de 156.263 de euros. Ahora
P 0 (x) = (x − x0 )Q0 (x) + Q(x)
bien, el dato más importante para el futuro pensionista
(que a menudo oculta la entidad financiera) es el interés de donde sale obviamente que P 0 (x0 ) = Q(x0 ).
nominal anual que se está aplicando año tras año al dinero
depositado. Si llamamos i al interés nominal anual que Este teorema permite calcular el polinomio y su
se aplica al dinero, la ecuación que debemos resolver para derivada en un punto de forma muy sencilla, como muestra
obtener i es el siguiente algoritmo
29
X n
(600) (1.1) (1. + i)30−n = 156.263
Programa 5 El siguiente algoritmo calcula la evaluación
n=0
de un polinomio y su derivada en un punto X, almacenán-
Ahora bien, para calcular i, debemos calcular las dolos en las variables P X y P P X.
raíces del polinomio en i dado por
29
X Algoritmo Horner
n
P (i) = (600) (1.1) (1. + i)30−n − 156.263 variable entera N (Grado del Polinomio)
n=0 leer(N)
El cálculo de las raíces de este polinomio nos lleva vector variables reales A de tamaño N+1
a i = 4.487%. Este ejemplo muestra como un problema para K←0 hasta N hacer
financiero sencillo nos lleva a la necesidad de calcular los leer(A(K))
ceros de un polinomio. finpara
PX=A(N)
PPX=A(N)
Algoritmo de Horner para evaluar un polinomio en un para K←N-1 hasta 1 hacer
punto PX=PX*X+A(K)
PPX=PPX*X+PX
Dado un polinomio P (x) = an xn + an−1 xn−1 + finpara
...... + a0 , éste se puede expresar tam- PX=PX*X+A(0)
bién de la forma siguiente: P (x) = a0 + finalgoritmo
x (a1 + x (a2 + x (a3 + x(..... + x (an−1 + xan ))))) .
Además, si queremos utilizar un método de cálculo
de raíces como el de Newton-Raphson, necesitamos Otros resultados interesantes de utilidad para lo-
evaluar tanto el polinomio como su derivada. El siguiente calizar en qué zonas pueden estar las raíces del polinomio
resultado muestra una forma rápida y sencilla de evaluar son:
simultáneamente un polinomio y su derivada.

10
Teorema 5 Sea un polinomio P (x) = an xn +an−1 xn−1 + Teorema 7 Entre dos raíces de una función derivable
...... + a0 con an 6= 0, entonces las raíces reales de P (x) f (x) hay una raíz de f 0 (x).
están en el intervalo
∙ ¸ Demostración Teorema de Rolle.
maxk=0,..,n−1 | ak | maxk=0,..,n−1 | ak |
−1 − ,1 +
| an | | an |
Teorema 8 La derivada k − ésima P k) (x) del polinomio
maxk=0,..,n−1 |ak |
Demostración Veamos que si |x| > 1 + |an | , P (x) = an xn + an−1 xn−1 + ......a0 es
entonces |P (x)| > 0. Efectivamente,
an n! n−k an−1 (n − 1) ! n−k−1 k!
n−1 P k) (x) = x + x +...+ak
X (n − k)! (n − k − 1)! 1
|P (x)| ≥ |an xn | − max |ak | |x|k =
k=0,,,n−1
k=0 Demostración Es inmediato, derivando sucesivamente el
n polinomio P (x).
1 − |x|
= |an | |x|n − max |ak | ≥
k=0,,,n−1 1 − |x|
Los dos resultados anteriores permiten aislar las posi-
n |x|n
≥ |an | |x| − max |ak | = bles raíces de P (x) de la forma siguiente: Si llamamos
k=0,,,n−1 |x| − 1 maxk=0,..,n−1 |ak |
Pmax a 1 + |an | , entonces las m raíces distintas
|x|n (|an | (|x| − 1) − maxk=0,,,n−1 |ak |)
= >0 x1 < x2 < .... < xm de P (x) están intercaladas con las
|x| − 1 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):

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


1. Se parte del intervalo [−Pmax , Pmax ]
Para la estimación del número de raíces reales nega-
n−1)
tivas, se aplica el teorema anterior cambiando x por −x. 2. Se calcula la raíz x1 del Polinomio P n−1) (x) (que
es un polinomio de grado 1)
Ejemplo 3 Sea P (x) = 3x4 + 10x3 − 10x − 3, los sig- 3. Para k = n − 2, ..., 1
nos de los coeficientes son: + + −−. Por tanto, hay un Se calculan las raíces de P k (x) en los intervalos
único cambio de signo y hay una raíz positiva. Si cambi-
amos x por −x, los signos de los coeficientes son + − +−. −Pmax < x1
k+1) k+1)
< x2 < ... < xk+1)
mk+1 < Pmax
Por tanto, hay 3 cambios de signo y hay una o tres raíces
negativas. En este caso, las raíces son x = 1, −1, −3, − 13 .
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),
Problema 19 (1 punto) Calcular una iteración del puesto que su utilización requiere el cálculo de factori-
método de Müller para calcular un cero de la función ales, que se dispara rápidamente. Por ejemplo, 30! = 2.
f (x) = x3 − 3 partiendo de x0 = 1 (Calculando las 6 × 1032 . Existen métodos mejores para el cálculo de raíces
derivadas de la función de forma exacta) y quedándonos de polinomios, pero que utilizan técnicas más complejas.
con la raíz más cercana a x0 . El método presente en el siguiente programa, que combina
el aislamiento de las raíces del polinomio a través de los
ceros de sus derivadas con el método de Newton-Raphson,
Problema 20 (2 puntos) Dado el polinomio P (x) = funciona razonablemente bien para grados de polinomios
2x3 + 3x2 + 4x + 5, evaluar el polinomio y su derivada pequeños. En el caso de raíces múltiples los resultados
en el punto x = 2, utilizando el algoritmo de Horner. acumulan mayores errores de redondeo debido a que tanto
el polinomio como su derivada son cero en el mismo punto.

Ejemplo 4 Consideremos el polinomio P (x) = x4 − x3 −


Problema 21 (1 punto) Calcular el número máximo de 7x2 + x+6, que tiene por raices x = 1, 3, −1, −2. Para este
raíces positivas y negativas del polinomio x5 −35x3 +30x2 + polinomio, tenemos que Pmax = 8. Por tanto, las raíces
124x − 120, y localizarlas en un intervalo. están en el intervalo [−8, 8]. Por otro lado su gráfica es

11
100 100
y y
80 80

60 60

40 40

20 20

-3 -2 -1 1 2 3 -3 -2 -1 1 2 3
x x
Polinomio P (x) = x4 − x3 − 7x2 + x + 6 Polinomio P 000 (x) = 24x − 6

El método funcionaría de la siguiente forma: Primero


La derivada de este polinomio es P 0 (x) = 4x3 − 3x2 − calculamos el cero de P 000 (x), es decir x = 0.25, por tanto
14x + 1,cuyas raíces son x = −1. 574, 7. 05 × 10−2 , 2. 253 y los ceros de P 00 (x) estarían en los intervalos [−2.166, 0.25]
cuya gráfica es 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
100 P 00 (x) en esos intervalos, utilizando cualquier método
y numérico de los vistos anterioremente, por ejemplo, el
80 método de la Regula-falsi, obteniendo −0.858 para el inter-
valo [−2.166, 0.25] y 1. 358 para el intervalo [0.25, 2.166].
60 Por tanto, las posibles raíces de P 0 (x) estarán en los in-
tervalos [−4.5, −0.858], [−0.858, 1.358] y [1.358, 4.5]. Bus-
40
camos ahora las raíces de P 0 (x) es esos intervalos, obte-
20 niendo x = −1. 574, 7. 05 × 10−2 y 2. 253. Por tanto, los
posibles ceros de P (x) estarán en los intervalos [−8, −1.
574], [−1.574, 7. 05×10−2 ], [7. 05×10−2 , 2. 253] y [2.253, 8].
-3 -2 -1 1 2 3 Buscamos, finalmente, las raíces de P (x) en cada un de
x
esos intervalos y obtenemos x = −2, −1, 1, 3.
Polinomio P 0 (x) = 4x3 − 3x2 − 14x + 1
Problema 22 (2 puntos) Aislar en intervalos las raíces
del polinomio P (x) = 20x3 − 45x2 + 30x − 1.
La derivada segunda de este polinomio es
P 00 (x) = 12x2 − 6x − 14,cuyas raíces son x = −0.858, 1.
358 y cuya gráfica es Programa 6 Pseudocódigo de la función
ICEROP OL(A, R, T OL, N ), que devuelve las raíces
100 reales de un polinomio. Dicha función tiene como
y parámetros un vector real A(), donde están los coeficientes
80 del polinomio, un vector real R(), donde se guardan
las raíces del polinomio una vez calculadas, la toler-
60
ancia T OL, con la que consideramos que dos números
40 son iguales, el grado del polinomio N, y el número
máximo de iteraciones N max xx, para el proceso de
20 Newton-Raphson. También se define la función auxiliar
RP (N, A, X1, X2, T OL, R, L), que devuelve la raíz del
polinomio que se obtiene aplicando el método de Newton-
-3 -2 -1 1 2 3
x Raphson, tomando como valor inicial el punto medio del
-20
intervalo [X1, X2].
Polinomio P 00 (x) = 12x2 − 6x − 14

La derivada tercera de este polinomio es ICEROPOL(A,R,TOL,N)


000
P (x) = 24x − 6, cuya raíz es x = 0.25, y cuya Algoritmo Cálculo ceros polinomio
gráfica es vectores de variables reales F,AP y PI de di-
mensión N+1

12
CALCULAMOS LOS FACTORIALES NECE- sino
SARIOS Y LO ALMACEMANOS EN F() retornar
F(0)=1. finsi
para K←− 1 hasta N hacer sino
F(K)=F(K-1)*K RP1=RP-PX/PPX
finpara si (RP1 ES IGUAL A RP MODULO TOL)
CALCULO INTERVALO INICIAL entonces
variable real PMAX←−ABS(A(0)) RP=RP1
para K←− 1 hasta N-1 hacer R(L)=0.
si (PMAX < ABS(A(K)) entonces retornar
PMAX=ABS(A(K) sino
finsi RP=RP1
finpara finsi
PMAX=PMAX/ABS(A(N))+1. finsi
PI(0)=-PMAX finhacer
PI(1)=-(A(N-1)*F(N-1))/(A(N)*F(N)) finalgoritmo
para K←2 hasta N hacer
PI(2)=PMAX
finpara
Problema 23 (2 puntos) Aislar en intervalos las raíces
CALCULO COEFICIENTES DEL POLINOMIO
del polinomio P (x) = 2x3 + 3x2 − 12x + 1.
DERIVADA
para K←2 hasta N hacer
PI(K)=PMAX
finpara INTERPOLACIÓN DE FUNCIONES I
para K←N-2 hasta 0 hacer
para L←0 hasta N-K hacer El problema general de la interpolación de funciones con-
AP(L)=A(L+K)*(F(K+L)/F(L)) siste en, a partir del conocimiento del valor de una función
finpara (y eventualmente de sus derivadas) en un conjunto finito
finpara de puntos, aproximar el valor de la función fuera de ese
CALCULAR LOS CEROS DE AP EN LOS INTER- conjunto finito de puntos.
VALOS PI()
para L← 1 hasta N-K hacer
PI(L)=RP(N-K,AP,PI(L-1),PI(L),TOL,R,L-1) Interpolación por polinomios de Lagrange.
finpara
PASAMOS LAS RAICES AL VECTOR R() Sea una función f (x) que conocemos en un conjunto finito
variable entera M←0 de valores {xi }i=0,..,N . Es decir, sabemos que f (xi ) =
para K← 1 hasta N hacer fi . El polinomio interpolador de Lagrange PN (x) de f (x)
si (R(K-1) ES IGUAL A 0) entonces en los puntos {xi }i=0,..,N , es el único polinomio de grado
R(M)=PI(K) M=M+1 menor o igual que N tal que
finsi
PN (xi ) = f (xi ) ∀i = 0, .., N
finpara
devolver(M) PN (x) se puede expresar en término de los denomina-
finalgoritmo dos polinomios base de Lagrange P i (x), definidos como:

ΠN
j6=i (x − xj )
RP(N,A,X1,X2,TOL,R,L) P i (x) =
ΠN
j6=i (xi − xj )
Algoritmo Cálculo raíz polinomio en un intervalo
R(L)=1. estos polinomios base tienen la propiedad fundamental
si (X1 ES IGUAL A X2) entonces siguiente ½
devolver(X1) 1 si i = j
P i (xj ) =
finsi 0 si i 6= j
RP=(X1+X2)/2.
Por tanto, el polinomio interpolador de Lagrange
para K← 1 hasta N hacer
puede expresarse como
EVALUAR POLINOMIO Y SU DERIVADA
POR EL METODO DE HORNER N
X
si (PPX ES IGUAL A 0.) entonces PN (x) = f (xi )P i (x)
si (PX ES IGUAL A 0.) entonces i=0
R(L)=0.

13
Ejemplo 5 Consideremos una función f (x) = ex , vamos Error de interpolación de Lagrange y polinomios
a interpolarla en los puntos x0 = 0, x1 = −1 y x2 = 1. de Chebychev.
Para calcular P2 (x), el polinomio interpolador de Lagrange
Evidentemente, al aproximar f (x) por el polinomio inter-
en estos puntos, calcularíamos los polinomios base:
polador PN (x) en un intervalo [a, b] se comete, en general,
un error de interpolación, que viene determinado por el
(x + 1)(x − 1) siguiente teorema.
P 0 (x) =
−1
x(x − 1) Teorema 10 Sea f (x) una función, y PN (x) su polinomio
P 1 (x) = interpolador de Lagrange en los puntos {xi }i=0,..,N ⊂ [a, b]
2
x(x + 1) y x ∈ [a, b], entonces
P 2 (x) =
2 f N +1) (ξ) N
f (x) − PN (x) = Π (x − xi )
siendo el polinomio interpolador: (N + 1)! i=0

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


(x + 1)(x − 1) x(x − 1) x(x + 1)
P2 (x) = e0 + e−1 +e Demostración Si x = xi , el error de interpolación es cero
−1 2 2 y por tanto la fórmula anterior es válida. Consideremos
ahora x distinto a los xi y definamos

w(t) = ΠNi=0 (t − xi )
En la siguiente figura comparamos la gráfica del poli-
nomio P2 (x) (trazo continuo) con la gráfica de la función f (x) − PN (x)
λ =
ex (trazo discontinuo) w(x)
φ(t) = f (t) − PN (t) − λw(t)
Ejemplo 6
La función φ(t) tiene al menos n + 1 ceros en los pun-
y4 tos xi y en el punto x. Por tanto, su función derivada φ0 (t)
tiene al menos n ceros repartidos entre los ceros de φ(t).
Análogamente, φ00 (t) tiene al menos n − 1 ceros y así suce-
3 sivamente hasta llegar a φN +1 (t), que tiene al menos 1
cero. Si llamamos ξ a dicho cero, obtenemos
2
φN +1 (ξ) = f N +1) (ξ) − λ(N + 1)!
1
de donde, despejando y sustituyendo λ por su valor, obten-
emos el resultado del Teorema.
-1.4-1.2 -1.0 -0.8 -0.6-0.4-0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4
x
Problema 25 (2 puntos) Calcular la expresión del er-
ror de interpolación al aproximar la función f (x) = sen(x)
en el intervalo [0, 2π] interpolando en los puntos 0, π2 , π y

Problema 24 (2 puntos) Calcular el polinomio inter- 2 , y acotarlo superiormente.
polador de Lagrange P3 (x) de la función f (x) = sen(x) en
los puntos 0, π2 , π y 3π
2 . La cuestión que vamos a abordar en este apartado es,
en el caso en que queramos interpolar una función en un
intervalo [a, b], y que nosotros podamos elegir los valores de
Teorema 9 El polinomio interpolador de Lagrange es el interpolación xi , cómo elegirlos de tal forma que el error de
único polinomio de grado igual o inferior a N tal que 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
PN (xi ) = f (xi ) ∀i = 0, .., N
[a, b].
Demostración Sea P (x) un polinomio de grado inferior
o igual a N que verifique que P (xi ) = f (xi ) ∀i = 0, .., N.
Entonces, el polinomio Q(x) = P (x) − PN (x) es un poli- Teorema 11 Sea N ≥ 0, y un intervalo [a, b] Se consid-
nomio de grado inferior o igual a N que verifica que eran los puntos xi dados por
Q(xi ) = 0 y, por tanto, posee N + 1 raíces, lo cual es µ µ ¶¶
b−a 2i + 1
imposible, salvo que Q(x) sea identicamente igual a cero. xi = a + 1 + cos π i = 0, ..., N
2 2N + 2
Por tanto Q(x) ≡ 0 y P (x) = PN (x).

14
entonces Newton. El método consiste en ir calculando progresiva-
µ ¶N +1 mente los polinomios Pk (x) que interpolan la función en
b−a 1 los puntos x0 , ..., xk de la siguiente forma:
max | ΠN
i=0 (x − xi ) |= ≤
x∈[a,b] 2 2N
P0 (x) = a0
≤ max | ΠN ej ) |
j=0 (x − x
x∈[a,b] P1 (x) = P0 (x) + a1 (x − x0 )
P2 (x) = P1 (x) + a2 (x − x0 )(x − x1 )
para cualquier otra elección posible de valores de interpo-
ej .
lación x ...
PN (x) = PN −1 (x) + aN (x − x0 )(x − x1 )...(x − xN −1 )
Demostración La demostración para el intervalo [−1, 1]
se encuentra en [Ki-Ch] Pg. 292-294. La demostración A los coeficientes ak los denotamos por
para un intervalo cualquiera [a, b] se obtiene fácilmente ak = f [x0 , ..., xk ]
transformando el intervalo [−1, 1] en [a, b].

Por tanto, utilizando este resultado, el error de inter- Ejemplo 8 Vamos a interpolar la función f (x) = ex en
polación máximo viene determinado por: los puntos x0 = 0, x1 = 1 y x2 = 2.
µ ¶N+1 P0 (x) = 1
maxx∈[a,b] f N+1) (ξ) b−a
| f (x) − PN (x) |≤ P1 (x) = 1 + a1 x
(N + 1)!2N 2
Como P1 (1) debe ser igual a e, despejando obtenemos
Ejemplo 7 Se considera [a, b] = [0, 1] y N = 5 (es decir
6 puntos de interpolación). Los puntos de interpolación a1 = e − 1
dados por el teorema anterior son:
Por último
x0 = . 982 96 P2 (x) = P1 (x) + a2 x(x − 1)
x1 = . 853 55
Como P2 (2) debe ser igual a e2 , despejando obten-
x2 = . 629 41 emos
x3 = . 370 59 e2 − P1 (2)
a2 =
2
x4 = . 146 45
Por tanto, el polinomio P2 (x) lo expresamos como
x5 = 1. 703 7 × 10−2
e2 − 2e + 1
P2 (x) = 1 + (e − 1)x + x(x − 1)
2

Problema 26 (2 puntos) Calcular el error máximo de


interpolación en el intervalo [0, 1] al interpolar la función
cos(x) en los puntos descritos en el ejemplo anterior. Como veremos en el teorema siguiente, los coeficientes
f [x0 , ..., xk ], que se denominan diferencias divididas de
Newton, verifican las siguientes propiedades:
En el caso de que [a, b] = [−1, 1], los valores ópti- f [xi ] = f (xi )
mos de interpolación xi dados por la fórmula anterior son
f [xi+1 ] − f [xi ]
las raíces de los denominados polinomios de Chebychev, f [xi , xi+1 ] =
TN (x), construidos de la manera siguiente: xi+1 − xi
.
f [xi+1 , .., xi+k ] − f [xi , .., xi+k−1 ]
T0 (x) = 1 f [xi , .., xi+k ] =
xi+k − xi
T1 (x) = x
TN (x) = 2xTN−1 (x) − TN−2 (x)
Teorema 12 Si denotamos por ak = f [x0 , .., xk ], en-
Método de diferencias de Newton para el cálculo tonces el polinomio de interpolación de Lagrange PN (x)
del polinomio interpolador de Lagrange. viene dado por
N
X
Numéricamente, el cálculo de PN (x) a través de los poli- PN (x) = ak Πk−1
i=0 (x − xi )
nomios base necesita de la evaluación de N + 1 polinomios k=0
de grado N. Además, si queremos añadir un nuevo punto
de interpolación, debemos cambiar todos los polinomios donde los coeficientes f [xi , ..., xk ] verifican
base de Lagrange. Un método más directo para el cál- f [xi+1 , .., xi+k ] − f [xi , .., xi+k−1 ]
culo de PN (x) es el denominado método de diferencias de f [xi , .., xi+k ] =
xi+k − xi

15
Demostración En primer lugar, observamos que En la siguiente gráfica se muestra la diferencia ex −
f [xi , ..., xi+k ] indica, para cada Pk (x), el coeficiente que P3 (x) en el intervalo [0, 3] :
acompaña a la potencia xk en el polinomio interpolador
Pk (x) para los puntos xi , ..., xi+k . Como el polinomio in-
terpolador es único, f [xi , ..., xi+k ] no depende del orden en
que tomemos los puntos xi , ..., xi+k y, por tanto: y 0.1

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


0.0
Consideremos ahora el polinomio interpolador Qk (x) 1 2 3
que interpola en los puntos xi+k , ..., xi , es decir, cambiando x
el orden de los puntos. Qk (x) se puede escribir como
-0.1
Qk (x) = b0 + b1 (x − xi+k ) + b2 (x − xk+i )(x − xk+i−1 ) + ...

donde -0.2
bj = f [xi+k , .., xi+k−j ]
Por la unicidad del polinomio interpolador obtenemos
que Pk (x) = Qk (x) y, por tanto
ak = f [xi , ....., xi+k ] = f [xi+k , ....., xi ] = bk
De nuevo, por la unicidad del polinomio interpolador, Problema 27 (2 puntos) Interpolar la función f (x) =
10
los coeficientes que acompañan a la potencia xk−1 en am- x2 +1 en los puntos x0 = −2, x1 = −1, x2 = 1, x3 = 2
bos polinomios coinciden y, por tanto: utilizando las diferencias de Newton y evaluar el polinomio
en x = 0 utilizando el algoritmo de Horner.
k−1
X k
X
ak−1 − ak xi+j = bk−1 − bk xi+j
j=0 j=1 Problema 28 (2 puntos) Calcular el polinomio inter-
polador de Lagrange P3 (x) de la función f (x) = sen(x) en
Despejando obtenemos
los puntos 0, π2 , π y 3π
2 utilizando las diferencias divididas
bk−1 − ak−1 de Newton.
ak =
xk+i − xi
Finalmente obtenemos el resultado del teorema, te-
niendo en cuenta que Problema 29 (3 puntos) Calcular el polinomio inter-
polador de Lagrange P3 (x) de la función f (x) = 2x en
ak−1 = f [xi , ...., xi+k−1 ] los puntos 0, 1, 3 y 4 utilizando las diferencias divididas de
bk−1 = f [xi+k ...., xi+1 ] = f [xi+1 ...., xi+k ] Newton. Expresar el polinomio tomando en primer lugar
x0 = 0, x1 = 1, x2 = 3 y x3 = 4 y, en segundo lugar,
x0 = 4, x1 = 3, x2 = 1 y x3 = 0.
Ejemplo 9 Sea f (x) = ex , si interpolamos f (x) en los
puntos x0 = 0, x1 = 1, x2 = 2, x3 = 3, obtenemos el Problema 30 (3 puntos) Dada una función f (x) y una
polinomio interpolador de la siguiente forma: secuencia de valores xn , aproximar f (x) por la parábola
f [0, 1] = e1 − 1 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
f [1, 2] = e2 − e1
del polinomio y comprobar que coinciden con las fórmu-
f [2, 3] = e3 − e2 las dadas en el método de Müller para el cálculo de las
e2 − 2e + 1 derivadas f 00 (xn−1 ) y f 0 (xn−1 ).
f [0, 1, 2] =
2
e3 − 2e2 + e1 Programa 7 Pseudocódigo donde se definen las fun-
f [1, 2, 3] =
2 ciones IDIFNEWTON, que a partir del vector X(0 : N ) de
e3 − 3e2 + 3e1 − 1 puntos de interpolación y el vector F (0 : N ) de valores de
f [0, 1, 2, 3] =
6 la función f (x) en los puntos de interpolación, devuelve el
Por tanto el polinomio interpolador de Lagrange es: vector A(0 : N ) de coeficientes de diferencias divididas que
definen el polinomio de Lagrange (A(K) = f [x0 , x1 , .., xK ]
e2 − 2e + 1 ), y la función EVDIFNEWTON(A,X,X0,N) que a partir
P3 (x) = 1 + (e − 1) x + x(x − 1) +
2 de los coeficientes dados por el vector A(0 : N ) y el con-
e3 − 3e2 + 3e1 − 1 junto de puntos de interpolación, devuelve el valor de la
x(x − 1)(x − 2) evaluación del polinomio de Lagrange en el punto X0.
6

16
0
FUNCTION IDIFNEWTON(A,X,F,N) de ex para x0 ∈ [0, 1]. Utilizando como puntos de interpo-
Algoritmo Cálculo polinomio interpolador por difer- lación los asociados a los polinomios de Chebychev:
encias de Newton µ µ ¶¶
1 2i + 1
vector real B de dimensión N+1 xi = 1 + cos π i = 0, ..., N
2 2N + 2
para K← 0 hasta N hacer
B(K)=F(K) obtenemos que el error relativo verifica que:
finpara 0 µ ¶N+1
| ex − PN (x) | e 1
A(0)=F(0) ≤
ex0 (N + 1)!2N 2
para K← 1 hasta N hacer
para L←0 hasta N-K hacer Para N = 6, el error relativo es menor que 6.6 × 10−8
si (X(K+L).EQ.X(L)) entonces y, por tanto, del mismo orden que la unidad de redondeo
devolver(1) u en una aritmética de 32 bits. Asi, tomando un poli-
finsi nomio de grado N = 6, es decir 7 puntos de interpolación,
B(L)=(B(L+1)-B(L))/(X(K+L)-X(L)) obtenemos ya la mejor aproximación posible de ex en el
finpara intervalo [0, 1] en una aritmética de 32 bits.
A(K)=B(0)
finpara Práctica 3 (Aproximación de ex )
devolver(0)
Crear una función en C que devuelva el valor de ex con
finalgoritmo
x ∈ [0, 1] utilizando el polinomio de Lagrange P6 (x) que
interpola a ex en los puntos:

FUNCTION EVDIFNEWTON(A,X,X0,N) µ µ ¶¶
1 2i + 1
Algoritmo Evaluar Polinomio interpolador xi = 1 + cos π i = 0, ..., 6
2 14
EVDIFNEWTON=A(N)
para K=N-1 hasta 0 hacer Comprobar que el polinomio esta bien construido, es
EVDIFNEWTON=EVDIFNEWTON*(X0- decir que P6 (xi ) = exi para todos los xi . Introducir por
X(K))+A(K) teclado un valor x, evaluar y mostrar P6 (x) y ex . Utilizar
finpara x = 0, 1, 0.5, 2 y 3.
finalgoritmo
Nota: Utilizar las funciones IDIFNEWTON(.), que cal-
cula el polinomio interpolador a partir de los puntos y val-
ores de interpolación, y EVDIFNEWTON(.), que evalua
el polinomio interpolador en un punto ya implementadas
Implementación de funciones elementales.
en la librería correspondiente
Una vez definida una aritmética en precisión finita y las 4
operaciones básicas (suma, resta, multiplicación, división), Los resultados que se deben obtener son los siguientes
es necesario definir, a partir de estas operaciones, las fun- : Para los puntos de interpolación xi y para cualquier
ciones elementales que todos usamos, como son: la raíz precisión se obtiene

cuadrada x, las funciones trigonométricas: sen(x) cos(x) xi exi |exi − P6 (xi )|
y tan(x), la función ln(x), la función ex , la función xy , etc. 0.9874 2.6844 0
Las técnicas elementales para definir estas funciones con- 0.8909 2.4373 0
sisten en utilizar la interpolación polinómica, los desarrol- 0.7169 2.0481 0
los de Taylor y los algoritmos
√ de búsqueda de ceros (como 0.5 1.6487 0
vimos anteriormente para x). 0.2830 1.3271 0
0.109 1.1152 0
0.012 1.0126 0
Aproximación de la exponencial ex .
Para los puntos x = 0, 1, 0.5, 2 y 3 se obtiene
Un número real x siempre se puede expresar como x =
m + x0 , donde m es un número entero y x0 ∈ [0, 1]. Dado
Precisión double
que 0 x ex |ex − P6 (x)|
ex = em ex 0 1 4 × 10−8
podemos descomponer el cálculo de ex en el cálculo, por 0.5 1.6487 0
un lado, de em , donde al ser m un entero el cálculo es in- 1. 2.7182 6 × 10−8
mediato a partir de multiplicaciones sucesivas de potencias 2. 7.3890 6 × 10−3
naturales de e ó e−1 (si m<0), y por otro, en el cálculo 3. 20.085 3 × 10−1
No se aprecian diferencias apreciables en los resulta-
dos al cambiar la precisión de la aritmética

17
Aproximación de funciones trigonométricas Problema 31 (3 puntos) Aproximar la función sen(x)
en el intervalo [0, π4 ] utilizando el desarrollo de Taylor y
Utilizaremos como modelo las funciones f (x) = cos(x) y
calcular el valor de n a partir del cual la aproximación es
f (x) = sen(x). Puesto que estas funciones son 2π per-
la mejor posible dentro de una aritmética de 32 bits.
iódicas, utilizando algunas relaciones trigonométricas es
suficiente definir las funciones cos(x) y sen(x) en el in-
tervalo [0, π4 ] y a partir de ellas definir las funciones para
cualquier valor x (en radianes). Efectivamente, denotemos Problema 32 (2 puntos) Demostrar que, utilizando
por cos[0, π4 ] (x) y sen[0, π4 ] (x) a las funciones trigonométri- relaciones trigonométricas, es posible calcular las fun-
cas definidas sobre el intervalo [0, π4 ]. Podemos definir en- ciones sen(x) y cos(x) para cualquier x (en radianes), uti-
tonces las siguientes funciones: lizando únicamente su valor en el intervalo [0, π8 ].
½
cos[0, π4 ] (x) si x ≤ π4
cos[0, π2 ] (x) =
sen[0, π4 ] ( 2 − x) si x > π4
π
Problema 33 (3 puntos) Calcular los polinomios nece-
½ sarios para interpolar las funciones trigonométricas cos(x)
π
sen[0, π4 ] (x) si x ≤ 4 y sen(x) en el intervalo [0, π8 ] en una aritmética de 32 bits.
sen[0, π2 ] (x) = π π
cos[0, 4 ] ( 2 − x) si x >
π
4
½ π
cos[0, π2 ] (x) si x ≤ 2
cos[0,π] (x) = π
− cos[0, π2 ] (π − x) si x > 2 Aproximación de la función ln(x)
½ π
sen[0, π2 ] (x) si x ≤ 2 Como hemos visto anteriormente, un número x real en
sen[0,π] (x) = π
sen[0, π2 ] (π − x) si x > 2
una aritmética de precisión finita viene expresado habit-
½ ualmente como à t !
cos[0,π] (x) si x ≤ π X an
cos[0,2π] (x) = m
cos[0,π] (2π − x) si x > π x=2
½ n=1
2n
sen[0,π] (x) si x ≤ π
sen[0,2π] (x) = donde m es un número entero, a1 =
³P1 y para´n > 1 an = 0
−sen[0,π] (2π − x) si x > π t an
ó an = 1. Por tanto, el número n=1 2n es mayor o
El desarrollo en Serie de Taylor centrado en 0 del igual que 12 y menor que 1. Aplicando las propiedades del
cos(x) es: ln(x) obtenemos que
à t !
X an
x2 x4 x2n ln(x) = m ln(2) + ln
cos(x) u Pn (x) = 1. − + + .... + (−1)n 2n
2 4! (2n)! n=1

y el error máximo cometido por el desarrollo de Taylor en Dado que el número ln(2) es una constante que supon-
un punto x ∈ [0, π4 ] es dremos calculada anteriormente ( ln(2) ∼ = .6931471806),
podemos reducir el cálculo del ln(x) al rango de valores
(x)2n+1 1
2 ≤ x ≤ 1.
| Pn (x) − cos(x) |≤ sen(x)
(2n + 1)! Utilizaremos los puntos de interpolación generados
por los polinomios de Chebychev, que para el intervalo
La ventaja de utilizar el desarrollo de Taylor centrado [ 12 , 1] son:
en 0 es que las potencias impares de x no aparecen, lo que µ µ ¶¶
simplifica el cálculo numérico. El error relativo es 1 1 2i + 1
xi = + 1 + cos π i = 0, ..., N
2 4 2N + 2
| Pn (x) − cos(x) | (x)2n+1
≤ tan(x) Dado que ln(1) = 0, para minimizar el error relativo
cos(x) (2n + 1)!
añadiremos como punto interpolante xN +1 = 1. El error
Además, como tan(x) es creciente en [0, π4 ], el valor de interpolación relativo entre PN +1 (x) y ln(x) es:
máximo del error se encuentra en x = π4 . Por ejemplo, para
n = 5 obtenemos que el error relativo máximo cometido | ln(x) − PN +1 (x) | | (x − 1)ΠN
i=0 (x − xi ) |
= N +1
en x = π4 es del orden de | ln(x) | ξ (N + 2) | ln(x) |
¡ π ¢2∗5+1 donde ξ ∈ [ 12 , 1]. Además se tiene que en el intervalo [ 12 , 1]
π
tan( ) 4 = 1. 8 × 10−9
4 (2 ∗ 5 + 1)! |x−1|
≤1
| ln(x) |
Por tanto, si trabajamos con una aritmética de 32 bits,
cuya unidad de redondeo u es del orden de 10−8 , tenemos Por tanto:
que con n = 5 obtenemos una aproximación del cos(x) que µ ¶N +1
es la mejor posible dentro de esta aritmética y no tendría | ln(x) − PN +1 (x) | 2N +1 1 1

sentido aumentar el valor de n. | ln(x) | (N + 2) 4 2N

18
Para N = 10 el error máximo es 3. 973 6 × 10−8 , que b, y con ello habremos obtenido un sistema equivalente
es menor que la unidad de redondeo u y, por tanto, en una tal que la primera columna es cero de la diagonal hacia
aritmética de 32 bits tendríamos la mejor aproximación abajo. Volvemos ahora a hacer lo mismo para convertir
posible de la función ln(x). la segunda columna cero de la diagonal para abajo, y así
sucesivamente hasta llegar a la mencionada matriz A0 .

Problema 34 (1 punto) ¿Cómo se puede obtener la fun-


ción y x , donde x e y son números reales, utilizando las
Ejemplo 10 Ejemplo de descomposición según el método
funciones ex y ln(x)?
de Gauss. Se considera el sistema
⎛ ⎞⎛ ⎞ ⎛ ⎞
−2 −2 0 u1 0
⎝ 6 18 12 ⎠ ⎝ u2 ⎠ = ⎝ 24 ⎠
ANÁLISIS NUMÉRICO MATRICIAL I 3 11 7 u3 8
La descomposición de la matriz A lleva las siguientes
En esta primera sección dedicada a la resolución de sis-
fases:
temas de ecuaciones lineales, estudiaremos los métodos di- ⎛ ⎞ ⎛ ⎞
rectos clásicos para la resolución de un sistema de ecua- −2 −2 0 6 18 12
⎝ 6 −−−−→
ciones de la forma 18 12 ⎠ pivoteo ⎝ −2 −2 0 ⎠
Au = b 3 11 7 3 11 7
⎛ ⎞ ⎛ ⎞
donde A = (ai,j ) es una matriz de N xN, b = (bi ) es un 6 18 12 −−−−−−−−−−−−−→ 6 18 12
vector de tamaño N que determina los términos indepen- ⎝ −2 −2 0 ⎠ ceros 1a colu mna ⎝ 0 4 4 ⎠
dientes, y u = (ui ) es el vector solución buscado. 3 11 7 0 2 1
⎛ ⎞ ⎛ ⎞
6 18 12 −−−−−−− − −−−−−→ 6 18 12
Método de Gauss ⎝ 0 4 4 ⎠ ceros 2a colu mna ⎝ 0 4 4 ⎠
Este método, aunque no es de los más rápidos, tiene la gran 0 2 1 0 0 −1
ventaja de que se puede aplicar a todo tipo de matrices, de la misma forma, el vector b se ha transformado de la
algo que, como veremos en el futuro, no ocurre con otros forma siguiente
métodos más rápidos, pero que requieren, por ejemplo, ⎛ ⎞ ⎛ ⎞ ⎛ ⎞ ⎛ ⎞
0 24 24 24
que la matriz sea simétrica o definida positiva. El método ⎝ 24 ⎠ → ⎝ 0 ⎠→⎝ 8 ⎠→⎝ 8 ⎠
de Gauss se basa en transformar el sistema Au = b en
8 8 −4 −8
un sistema equivalente A0 u = b0 tal que la solución sea
la misma y que la matriz A0 sea triangular superior, es y el remonte da como solución u1 = 6, u2 = −6, u3 = 8.
decir, que tenga valores nulos de la diagonal hacia abajo.
Una vez obtenidos la matriz A0 y el vector b0 , el cálculo Problema 36 (2 puntos) Resolver por el método de
de la solución u es inmediata, siguiendo un remonte de las Gauss
µ el sistema¶ µ ¶ µ ¶
variables a través del siguiente esquema recursivo: −1 2 x 3
=
2 −1 y 0
b0N
uN =
a0N,N
Problema 37 (3 puntos) Calcular el número de op-
0 PN
bk − 0
l=k+1 ak,l ul
eraciones básicas necesarias para descomponer el sistema
uk = k = N − 1, .., 1 Au = b en el sistema A0 u = b0 utilizando el método de
a0k,k
Gauss, teniendo en cuenta la siguiente relación:
M−1
X 1 3 1 2 1
k2 = M − M + M
Problema 35 (2 puntos) Calcular el número de op- 3 2 6
k=1
eraciones básicas (sumas, restas, multiplicaciones y divi-
siones) necesarias para realizar un remonte como el pre-
sentado arriba en función de la dimensión N . Problema 38 (2 puntos) Escribir el pseudocódigo de la
funcion IDESCEN SO(A, b, u, N, N max) que resuelve un
Para obtener A0 y b0 se calcula, en primer lugar, el sistema, donde A es una matriz triangular inferior, b es
valor máximo en valor absoluto de la primera columna de el vector de términos independientes, u el vector solución,
A, denominado pivote. A continuación, se intercambia la N es la dimensión real del sistema y N max la dimensión
primera fila de A con la fila donde se encuentra el pivote, que se utilizó para reservar la memoria de la matriz A. La
y se hace lo mismo con el vector b, para que el sistema función devuelve 0 si termina correctamente y 1 en caso
sea equivalente. A continuación, se multiplica la primera contrario. Nota Importante: Las líneas de código tienen
fila de A por el valor −a
a1 y se suma a la fila k − ésima
k
que ir todas numeradas y no pueden superar las 15 líneas.
de A para k = 2, ..., N. Se hace lo mismo para el vector

19
Problema 39 (2 puntos) Resolver por el método de U(K)=(B(Nrow(K))-C)/A(Nrow(K),K)
Gauss el siguiente sistema de ecuaciones: finpara
⎛ ⎞⎛ ⎞ ⎛ ⎞ para I=1 hasta N hacer
0 −1 2 u1 1 B(I)=U(I)
⎝ −1 2 −1 ⎠ ⎝ u2 ⎠ = ⎝ 0 ⎠ finpara
2 −1 0 u3 1 devolver(0)
finalgoritmo

Programa 8 Pseudocódigo del método de Gauss. Se de-


fine una función IGAU SS que tiene como parámetros la Estimación del error de un método para resolver
matriz A, el vector independiente b, un vector auxiliar sistemas.
N row, la dimensión del sistema. La función devuelve un
valor entero M que indica si se ha terminado correcta- Para estimar la fiabilidad de la solución numérica de un
mente (M = 0) o incorrectamente (M = 1, 2). En el caso sistema de ecuaciones, haremos lo siguiente: dada una ma-
en que se ha terminado correctamente, la solución se de- triz A, un vector de términos independientes b y un vector
vuelve en el propio vector b. solución u, calculado utilizando alguna técnica numérica,
si la solución es perfecta entonces Au − b = 0. Ahora bien,
FUNCTION IGAUSS(A,B,N,Nrow) esto no suele suceder, porque los errores de redondeo y de
Algoritmo Resolución Sistemas Método de GAUSS cálculo producen que esta estimación no sea exacta. Para
para K← 1 hasta N hacer estimar el error cometido al resolver el sistema utilizaremos
Nrow(K)=K la expresión siguiente, donde e es el vector e = Au − b :
finpara
1 X |ei |
para K← 1 hasta N-1 hacer ErrorSistema =
variable real XMax←ABS(A(Nrow(K),K)) N |bi | +
M=K donde N es la dimensión del sistema, es un número que
para L=K+1 hasta N hacer se pone para evitar posibles divisiones por cero. En to-
si (ABS(A(Nrow(L),K)) > XMax) entonces das las prácticas utilizaremos = 1.. ErrorSistema repre-
XMax=ABS(A(Nrow(L),K)) senta el error relativo medio al resolver el sistema. Cuanto
M=L más pequeño sea ErrorSistema, mejor aproximada estará
finsi la solución del sistema.
finpara
si (XMax < (1e-10))) entonces
devolver(1) Método de Cholesky
finsi
Este método sólo se puede aplicar a matrices simétricas
si (K.NE.M) entonces
y definidas positivas. El siguiente teorema da 3 posibles
MP=Nrow(K)
definiciones equivalentes de una matriz definida positiva.
Nrow(K)=Nrow(M)
Nrow(M)=MP
finsi Teorema 13 Sea A una matriz simétrica, las 3 siguientes
para L←K+1 hasta N hacer afirmaciones son definiciones equivalentes a que una ma-
C=A(Nrow(L),K)/A(Nrow(K),K) triz sea definida positiva
finpara (i) ∀ v ∈ <N − {0} se cumple que t vAv > 0.
para M←K hasta N hacer (ii) Todos los autovalores λ de A son positivos.
A(Nrow(L),M)=A(Nrow(L),M)- (iii) Los determinantes de todos los menores princi-
C*A(Nrow(K),M) pales de A son positivos.
finpara
B(Nrow(L))=B(Nrow(L))-C*B(Nrow(K)) El método de Cholesky se basa en descomponer la
finpara matriz A en la forma:
si (ABS(A(Nrow(N),N)) < (2.**(-100))) en-
A = B·B t
tonces
devolver(2) donde B es una matriz triangular inferior.
finsi ⎛ ⎞
b1,1 0 0 . 0
U(N)=B(Nrow(N))/A(Nrow(N),N) ⎜ b2,1 ⎟
⎜ b2,2 0 . . ⎟
para K←N-1 hasta 1 hacer
B=⎜ ⎜ b3,1 b3,2 b3,3 . . ⎟

C=0 ⎝ . ⎠
. . . 0
para L=K+1 hasta N hacer
bn,1 bn,2 bn,3 . bn,n
C=C+A(Nrow(K),L)*U(L)
finpara

20
Problema 40 (2 puntos) Demostrar que si A = B · B t • int an_descenso(const real **B,real *z,const real
(B triangular inferior) y |B| 6= 0, entonces A es simétrica *b,const int N): Resuelve un sistema triangular in-
y definida positiva. ferior, donde B es la matriz, b es el término inde-
pendiente y z es el vector donde devuelve la solución.
Devuelve 0 si termina bien y −1 en caso contrario.
Problema 41 (2 puntos) Descomponer la siguiente ma-
triz A por el método de Cholesky: • int an_remonte(const real **B,real *u,const real
⎛ ⎞ *z,const int N): Resuelve un sistema triangular su-
1 1 4 perior, donde B es la matriz, z es el término inde-
A=⎝ 1 5 6 ⎠ pendiente y u es el vector donde devuelve la solución.
4 6 26 Devuelve 0 si termina bien y −1 en caso contrario
• real an_error_sistema(const real **A,const real
De forma general, el algoritmo para calcular B es el *u,const real *b,const int N): Devuelve el error
siguiente cometido al resolver el sistema dado por la expresión
ErrorSistema de la sección anterior.
Para i =r0, ..., N − 1
³ P ´
• int an_cholesky(const real **A,const real *b,real
bi,i = ai,i − i−1 b2
k=0 i,k *u,const int N): Resuelve un sistema Au = b por el
Para j = i +³1, ..., N − 1 ´ método de Cholesky . Devuelve 0 si termina bien y
1
Pi−1
bj,i = bi,i aj,i − k=0 bj,k bi,k −1 en caso contrario.
Fin Para j
Hay que resolver los sistemas ejemplo que se dan a
Fin Para i
continuación y los ejemplos de dimensión 10, 100 y 1000
El interés de descomponer una matriz A por el método que se encuentran en el repositorio de la asignatura. Para
de Cholesky es que, a continuación, es muy sencillo resolver todos los ejemplos que tienen solución, su solución es el
el sistema de ecuaciones Au = b. Efectivamente, basta vector constante u = (1, 1, 1, ....), en todos lo casos hay
descomponer el sistema de la siguiente forma: que comparar con la solución que da el método de gauss
(ya implementado en an_lapack.c
Bz = b ⎛ ⎞⎛ ⎞ ⎛ ⎞
t
Bu = z 1 1 4 x 6
1. ⎝ 1 5 6 ⎠ ⎝ y ⎠ = ⎝ 12 ⎠
Ambos sistemas se resuelvan rápidamente haciendo 4 6 26 z 36
un remonte y un descenso. ⎛ ⎞⎛ ⎞ ⎛ ⎞
1 1 4 x 6
Nota: Normalmente, para evitar tener que almacenar dos 2. ⎝ 1 1 4 ⎠ ⎝ y ⎠ = ⎝ 12 ⎠
matrices, una para B y otra para B t , se almacena todo 4 4 17 z 36
en una única matriz B, simétrica, escribiendo en la parte ⎛ ⎞⎛ ⎞ ⎛ ⎞
2 −1 0 x 1
triangular superior de B la parte correspondiente a B t . 3. ⎝ −1 2 −1 ⎠ ⎝ y ⎠ = ⎝ 0 ⎠
0 −1 −4 z −5
Problema 42 (2 puntos) Calcular el número de opera-
ciones necesarias para resolver un sistema por el método
de Cholesky. Los resultados que se deben encontrar son los sigu-
ientes

Ejemplo 1 (Precisión double )


Problema 43 (2 puntos) Demostrar que a partir de un Método Gauss : ErrorSistema=0
método para resolver sistemas de ecuaciones se puede con- Método Cholesky : ErrorSistema=0
struir de forma inmediata un método para calcular la in-
versa A−1 de una matriz A. Ejemplo 2 (Precisión double )
Método Gauss : ErrorSistema=0
Método Cholesky : No encuentra solución
Práctica 4 (Método de Cholesky). Ejemplo 3 (Precisión double )
Método Gauss : ErrorSistema=0
Implementar en C las siguientes funciones : Método Cholesky : No encuentra solución
• int an_cholesky_factorizacion(const real **A,real Matriz 10x10 (Precisión float)
**B,const int N): Calcula la descomposición de Método Gauss : ErrorSistema=1 × 10−6
Cholesky de A y la devuelve en la matriz B. Devuelve Método Cholesky : ErrorSistema=3 × 10−7
0 si termina bien y −1 en caso contrario.

21
Matriz 100x100 (Precisión float) Para i = 2, .., N − 1
Método Gauss : ErrorSistema=3 × 10−5 mi−1 = ci−1
Método Cholesky : ErrorSistema=3 × 10−5 li = ai − mi−1 ui−1
ui = blii
Matriz 1000x1000 (Precisión float) Fin Para
Método Gauss : ErrorSistema=4 × 10−3 mN−1 = cN−1
Método Cholesky : ErrorSistema=4 × 10−3 lN = aN − mN −1 uN −1

Matriz 10x10 (Precisión double)


Método Gauss : ErrorSistema=7 × 10−16 Problema 44 (3 puntos) Demostrar el algoritmo de
Método Cholesky : ErrorSistema=5 × 10−16 Crout para descomponer matrices tridiagonales.

Matriz 100x100 (Precisión double)


Método Gauss : ErrorSistema=6 × 10−14 Problema 45 (2 puntos) Resolver utilizando el método
Método Cholesky : ErrorSistema=8 × 10−14 de Crout el siguiente sistema de ecuaciones:
⎛ ⎞⎛ ⎞ ⎛ ⎞
Matriz 1000x1000 (Precisión double) 2 4 0 x 6
Método Gauss : ErrorSistema=9 × 10−12 ⎝ −1 0 4 ⎠ ⎝ y ⎠ = ⎝ 3 ⎠
Método Cholesky : ErrorSistema=8 × 10−12 0 −1 0 z −1

Matriz 10x10 (Precisión long double)


Método Gauss : ErrorSistema=1 × 10−18
Método Cholesky : ErrorSistema=3 × 10−19 Problema 46 (2 puntos) Calcular el número de opera-
ciones necesarias para resolver un sistema tridiagonal por
Matriz 100x100 (Precisión long double) el método de Crout.
Método Gauss : ErrorSistema=4 × 10−17
Método Cholesky : ErrorSistema=3 × 10−17 DIFERENCIACIÓN E INTEGRACIÓN
NUMÉRICA
Matriz 1000x1000 (Precisión long double)
Método Gauss : ErrorSistema=3 × 10−15 Una fórmula de diferenciación numérica es un proced-
Método Cholesky : ErrorSistema=4 × 10−15 imiento que permite aproximar la derivada de la función
Los errores no tienen que ser exactamente iguales a f (x) en un punto xi. utilizando el valor de f (x) en otros
los que aparecen arriba, una desviación de un dígito en puntos vecinos a xi . Por otro lado, una fórmula de inte-
el exponente se considera admisible, es decir si arriba sale gración numérica es un procedimiento que permite aprox-
9 × 10−8 y obtenemos 4 × 10−7 se considera bien, pero imar el valor de la integral en un intervalo [a, b] a partir
5 × 10−6 se considera mal y hay que revisar el código de la evaluación de f (x) en algunos puntos incluidos en el
intervalo [a, b].

Método de Crout para matrices tridiagonales Diferenciación Numérica

El caso de sistemas de ecuaciones con matrices A tridi- La manera habitual de aproximar la derivada de una fun-
agonales posee una forma especialmente simple de factor- ción f (x) en un punto xi consiste en utilizar el desarrollo
ización. Vamos a descomponer A en el producto de dos de Taylor centrado en xi :
matrices triangulares de la forma siguiente: f 0 (xi ) f N) (xi )
⎛ ⎞ f (x) = f (xi ) + (x − xi ) + ... + (x − xi )N + ...
a1 b1 . 0 1! N!
⎜ c1 a2 . 0 ⎟ Si tomamos un punto xj 6= xi , truncamos el desarrollo
⎜ ⎟=
⎝ 0 . . bN −1 ⎠ de Taylor y despejamos, obtenemos la siguiente expresión:
0 . cN −1 aN
f (xj ) − f (xi )
⎛ ⎞⎛ ⎞ f 0 (xi ) ≈ + O (|xj − xi |)
l1 0 . 0 1 u1 . 0 xj − xi
⎜ m1 l2 . 0 ⎟ ⎜ 0 ⎟
⎜ ⎟⎜ 0 1 . ⎟ donde O (|xj − xi |) indica, básicamente, que el error
⎝ 0 . . 0 ⎠ ⎝ 0 . . uN −1 ⎠
cometido es una suma de potencias de |xj − xi | en la que
0 . mN −1 lN 0 . 0 1
la potencia más pequeña es 1. Se denomina orden de la
Los vectores mi , li, y ui se calculan utilizando el es- aproximación a la potencia más pequeña que aparece en
quema: el término del error. Por lo tanto, en este caso, diremos
que el orden de aproximación es 1. Si xj > xi , entonces la
l1 = a1 derivada se calcula hacia adelante, mientras que si xj < xi ,
u1 = bl11 la derivada se calcula hacia atrás.

22
Ejemplo 11 Veremos en este ejemplo como, cuanto más Problema 49 (3 puntos) Dados 3 puntos distintos
próximo esté el punto xj al punto xi , mejor será el valor xl , xi , xr , calcular el polinomio de Lagrange que interpola
aproximado de la derivada. Consideremos la función a f (x) en esos 3 puntos, calcular la derivada de ese poli-
f (x) = x3 . La derivada de f (x) en x = 1 es f 0 (1) = 3 Si nomio en xi , y comprobar que da la misma fórmula que la
tomamos xi = 1 y xj = 2 en la fórmula anterior, obten- presentada en el problema anterior.
emos la aproximación
Problema 50 (2 puntos) Calcular una aproximación de
23 − 13
0 la derivada tercera f 000 (xi ) de una función f (x) en un
f (1) ≈ =7
2−1 punto xi , utilizando f (xi ), f (xi + h), f (xi − h), f (xi − 2h).
Si tomamos ahora xj = 1.1, obtenemos
1.13 − 13
f 0 (1) ≈ = 3. 31 Problema 51 (3 puntos) Dados 3 puntos, demostrar
1.1 − 1
que la fórmula
que está mucho más próximo al valor real.
f (xr )−f (xi ) f (xi )−f (xl )
xr −xi − xi −xl
f 00 (xi ) ≈ 2
Problema 47 (2 puntos) Calcular analítica y numéri- xr − xl
camente la matriz gradiente en el punto (1, 1) (utilizar aproxima la derivada segunda de f (x) en xi con un orden
h = 0.1) de la función: de aproximación de 1.
½ 2
x + y2 − 1
f (x, y) =
x−y
Problema 52 (2 puntos) Considerar en el problema an-
terior que xl = xi − h, y xr = xi + h. Deducir como queda
Problema 48 (3 puntos) Dados 3 puntos distintos la fórmula anterior para aproximar la derivada segunda, y
xl , xi , xr , demostrar que la fórmula demostrar que, en este caso, el orden de aproximación es
(xi − xl ) f (xxrr)−f (xi )
+ (xr − xi ) f (xxi i)−f (xl ) 2.
0 −xi −xl
f (xi ) ≈
xr − xl
aproxima la derivada de f 0 (xi ) con un orden de aproxi- Problema 53 (3 puntos) Dados 3 puntos xl < xi < xr ,
mación de 2. 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) Problema 54 (2 puntos) Calcular una aproximación de
f 0 (xi ) =
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 12 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
anterior. Por ejemplo, si tomamos xi = 1 y h = 1, la Estudiaremos, en este apartado, la aproximación de las
expresión anterior nos da derivadas de una función de varias variables. Para sim-
23 − 03 plificar la exposición, supondremos que la dimensión es 2.
f 0 (1) ≈
=4 Para discretizar las derivadas de una función F (x, y), se
2
utilizan los desarrollos de Taylor siguientes en 2 variables.
Si tomamos ahora xj = 0.1 Utilizaremos la siguiente nomenclatura: Fx = ∂F∂x (x,y)
,
1.13 − 0.93 ∂F (x,y) ∂ 2 F (x,y) ∂ 2 F (x,y)
0
f (1) ≈ = 3. 01 Fy = ∂y , Fxx = ∂x2 , Fxy = ∂x∂y , Fyy =
0.2 ∂ 2 F (x,y)
∂y2
que está más próximo al valor real que utilizando la
primera fórmula. En general, comprobamos que, cuanto h2
1. F (x + h, y) = F + hFx + 2 Fxx + O(h3 )
mayor es el orden de una fórmula de aproximación, más
preciso es el valor de la derivada. 2. F (x − h, y) = F − hFx + h2
+ O(h3 )
2 Fxx
Nota: Utilizar el desarrollo de Taylor para aproximar l2
3. 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. 4. F (x, y − l) = F − lFy + l2
+ O(l3 )
2 Fyy

23
5. F (x + h, y + l) = F + hFx + lFy + 12 (h2 Fxx + 2hlFxy +
¡ ¢3 Ahora bien, si rotamos 45 grados, la función inicial en
l2 Fyy ) + O( h2 + l2 2 )
torno al punto (hi0 , hj0 ), obtenemos como imagen:
6. F (x − h, y − l) = F − hFx − lFy + 12 (h2 Fxx + 2hlFxy +
¡ ¢3 1 1 0
l2 Fyy ) + O( h2 + l2 2 ) 1 0 0
7. F (x + h, y − l) = F + hFx − lFy + 12 (h2 Fxx − 2hlFxy + 0 0 0
¡ ¢3
l2 Fyy ) + O( h2 + l2 2 ) Si calculamos de nuevo ∆F en el mismo punto obten-
emos:
8. F (x − h, y + l) = F − hFx + lFy + 12 (h2 Fxx − 2hlFxy + 1 2
¡ ¢3 ∆F (hi0 , hj0 ) = γ 2 + (1 − γ) 2
l2 Fyy ) + O( h2 + l2 2 ) 2h h
Por lo tanto, si queremos que ambos valores de ∆F
coincidan, debemos elegir γ = 23 . Hablando en términos
Prestaremos particular atención a dos operadores de teoría de la señal, el calculo de ∆F nos llevaría a con-
diferenciales que se utilizan con frecuencia en la práctica: volucionar la imagen con la siguiente máscara:
El gradiente ∇F (x, y) = (Fx (x, y), Fy (x, y)), que es el vec- 1 1 1
tor de derivadas parciales, y el Laplaciano ∆F (x, y) = 1 3
1
3 3
Fxx (x, y) + Fyy (x, y). Utilizaremos la notación Fi,j ∼ = 3 − 83 1
3
h2 1 1 1
F (hi, lj). 3 3 3

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: Discretización del gradiente.
Fi+1,j+1 + Fi−1,j+1 + Fi−1,j−1 + Fi+1,j−1 − 4Fi,j
∆F = Siguiendo el desarrollo de Taylor mostrado anteriormente,
2h2 obtenemos la siguiente expresión para el gradiente:
Fi+1,j + Fi−1,j + Fi,j+1 + Fi,j−1 − 4Fi,j
∆F = (Fi+1,j − Fi−1,j )
h2 (Fi,j )x = (1 − γ) +
2h
(Fi+1,j+1 − Fi−1,j+1 + Fi+1,j−1 − Fi−1,j−1 )
El resultado del anterior problema nos proporciona +γ
2 formas distintas de evaluar el laplaciano, por tanto, 4h
cualquier promediado de las dos expresiones también es
(Fi,j+1 − Fi,j−1 )
una discretización del laplaciano, es decir: (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 )
∆F = γ + +γ
2h2 4h
Fi+1,j + Fi−1,j + Fi,j+1 + Fi,j−1 − 4Fi,j
+(1 − γ) donde γ es, de nuevo, un parámetro a elegir. Teniendo
+ O(h)
h2 en cuenta que la norma euclídea del gradiente es invari-
donde γ es un parámetro libre a elegir. La elección de di- ante por rotaciones, lo será en particular para rotaciones
cho parámetro γ la haremos de forma que la discretización de 45 grados, de donde deducimos, utilizando
√ el mismo
de ∆F respete lo máximo posible la invarianza por rota- argumento que para el ∆F , que γ = 2 − 2. Por lo tanto,
ciones de la función F (x, y). Para ello, consideremos una estamos calculando Fx utilizando la máscara
función tal que en un entorno de un punto (hi0 , hj0 ) tiene √ √
los siguientes valores: −(2√− 2) 0 (2√− 2)
1
−2( 2 √ − 1) 0 2( 2 √ − 1)
1 1 1 4h
−(2 − 2) 0 (2 − 2)
0 0 0
0 0 0 y Fy utilizando
Si calculamos ∆F en el punto central a través de la √ √ √
anterior fórmula obtenemos: −(2 − 2) 2( 2 − 1) −(2 − 2)
1
2 1 0√ √0 0√
∆F (hi0 , hj0 ) = γ + (1 − γ) 2 4h
2h 2 h (2 − 2) −2( 2 − 1) (2 − 2)

24
Problema 57 (3 puntos) Demostrar que las máscaras Demostración [Hu] Pg. 205-209

¡ √ ¢ ¡ √ ¢
− ¡√
2− 2¢ 0 2− 2 ¢
¡√ Ejemplo 13 A continuación se exponen algunos valores
1
Fx = −2¡ 2 √
− 1¢ 0 2¡ 2 √ − 1¢ de raíces x̃k y coeficientes w̃k en función del grado del
4h
− 2− 2 0 2− 2 polinomio Ln (x) :
¡ √ ¢ ¡√ ¢ ¡ √ ¢ n x̃k w̃k
− 2− 2 −2 2 − 1 − 2− 2 2 0.5773502692 1.
1
Fy = 0√ ¢ ¡√ 0 ¡ 0√ ¢ −0.5773502692 1
4h ¡ ¢
2− 2 2 2−1 2− 2 3 0.7745966692 0.5555555556
dan lugar a una discretización del gradiente tal que su 0. 0.8888888889
norma euclídea es invariante por rotaciones de 45 grados. − 0.7745966692 0.5555555556
4 0.8611363116 0.3478548451
Problema 58 (2 puntos) Calcular una aproximación 0.3399810436 0.6251451549
del gradiente de una función F (x, y) en el punto (x, y) = −0.3399810436 0.6251451549
(0, 0) conociendo los siguientes valores: F (0, 0) = 0, − 0.8611363116 0.3478548451
F ( 12 , 0) = 12 , F (− 12 , 0) = − 12 , F (0, 12 ) = − 12 , F (0, − 12 ) =
1 1 1 1 1 1 1
2 , F ( 2 , 2 ) = 0, F (− 2 , − 2 ) = 0, F (− 2 , 2 ) = −1,
1 1
F ( 2 , − 2 ) = 1. Problema 59 (2 puntos) Aproximar el valor de la sigu-
iente integral, utilizando las fórmulas de Legendre para
n = 2 y n = 3: Z 1
Integración Numérica ¡ 3 ¢
x − x4 dx
Métodos de Cuadratura de Gauss −1

Sea f (x) una función definida en un intervalo [a, b], vamos ¿Cuál es el valor exacto de la integral?
a aproximar el valor de la integral de f (x) en [a, b] uti-
lizando la evaluación de f (x) en ciertos puntos de [a, b]. Problema 60 (2 puntos) Se consideran, para el inter-
Es decir, una fórmula de integración numérica se puede valo [−1, 1], los puntos x0 = −0.5, x1 = 0 y x2 = 0.5 y
escribir como los pesos w0 = w1 = w2 = 2/3. Estos puntos y estos pe-
Z b XN
sos se utilizan para aproximar la integral de una función
f (x)dx ≈ wk f (xk ) en [−1, 1]. Usar esta fórmula de integración para calcular
a k=1 númericamente la siguiente integral y compararla con el
donde xk representa los puntos de evaluación de f (x) y wk resultado análitico (exacto).
el peso de cada punto de evaluación. Z π2
cos(x)dx
Definición 2 Una fórmula de integración numérica se de- −π
2

nomina exacta de orden M si, para cualquier polinomio


P (x) de grado menor o igual que M, la fórmula es exacta.
Es decir Problema 61 (2 puntos) Encontrar, utilizando los
Z b N
X
P (x)dx = wk P (xk ) ceros y pesos asociados a los polinomios de Legendre, cuál
a k=1
sería la fórmula de integración numérica de Legendre uti-
lizando un sólo punto de interpolación. ¿Cuál sería su
exactitud?
Definición 3 Se denominan polinomios de Legendre
Ln (x) a la familia de polinomios dada por L0 (x) = 1,
Problema 62 (2 puntos) A partir de los ceros y de los
L1 (x) = x, y para n = 2, 3, ....
pesos asociados a los polinomios de Legendre, y dado un
nLn (x) = (2n − 1)xLn−1 (x) − (n − 1)Ln−2 (x) intervalo [a, b] cualquiera, encontrar los puntos xk y los
pesos wk que hacen exacta hasta orden 2N −1 una fórmula
de integración numérica sobre el intervalo [a, b].
Teorema 14 Sean{x̃k }k=1,..,N los ceros del polinomio de
Legendre LN (x). Si definimos
Z 1 Problema 63 (2 puntos) Utilizar el resultado del prob-
Πi6=k (x − x̃i) lema anterior para calcular de forma exacta la siguiente
w̃k = dx
−1 Πi6=k (x̃k − x̃i) integral: Z 1
¡ 2 ¢
entonces la fórmula de integración numérica generada por x − x3 dx
los puntos x̃k y los pesos w̃k es exacta hasta el orden 2N −1 0
para el intervalo [−1, 1].

25
Cuando el intervalo [a, b] es infinito, es decir, a = −∞ Teorema 16 Si x̃k son los ceros del polinomio de La-
o b = ∞, hay que emplear otros métodos para aproximar guerre y definimos
las integrales. En el caso [a, b] = (−∞, ∞), se utilizan los Z ∞
ceros de los denominados polinomios de Hermite, definidos Πi6=k (x − x̃i) −x
w̃k = e dx
como H0 (x) = 1, H1 (x) = 2x, y 0 Πi6=k (xk − x̃i)

Hn (x) = 2xHn−1 (x) − 2(n − 1)Hn−2 (x) 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
para n ≥ 2. En este caso, la fórmula de integración para el intervalo (0, ∞).
numérica aproxima la integral de la siguiente forma:
Z N Demostración [Hu] Pg. 211-213
∞ X
−x2
f (x)e dx ≈ wk f (xk )
−∞ k=0
Ejemplo 15 A continuación se exponen algunos valores
Teorema 15 Si x̃k son los ceros del polinomio de Hermite de raíces x̃k y coeficientes w̃k en función del grado del
y definimos polinomio Ln (x) :
Z ∞ n x̃k w̃k
Πi6=k (x − x̃i) −x2
w̃k = e dx 1 1. 1.
−∞ Πi6=k (xk − x̃i)
2 0. 585 786 438 0. 853 553 390 3
entonces la fórmula de integración numérica generada por 3. 414 213 562 0. 146 446 609 3
los puntos x̃k y los pesos w̃k es exacta hasta orden 2N − 1
para el intervalo (−∞, ∞).
Demostración [Hu] Pg. 213-214 Problema 66 (2 puntos) Calcular de forma exacta la
integral Z ∞
¡ 3 ¢
Ejemplo 14 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 ∞
¡ 3 ¢ 2 donde a es un número real cualquiera.
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-
Problema 65 (2 puntos) Aproximar, utilizando dos mentar la precisión es necesario aumentar el grado de los
puntos de aproximación, el valor de la integral: polinomios, lo cual resulta complejo para valores grandes
Z ∞ de N. Una alternativa consiste en dividir previamente la
1 integral en subintegrales de la manera siguiente:
dx
−∞ 1 + x2
Z b M Z
X xk+1
f (x)dx = f (x)dx
a k=0 xk
Para el intervalo (0, ∞), se utilizan los polinomios de
Laguerre Ln (x), definidos por L0 (x) = 1, L1 (x) = 1 − x, y donde a = x0 < x1 < .... < xM+1 = b. A continuación se
aproxima numéricamente cada una de las integrales
Ln (x) = (2n − 1 − x)Ln−1 (x) − (n − 1)2 Ln−2 (x). Z xk+1
para n ≥ 2. En este caso, la fórmula de integración f (x)dx
xk
numérica aproxima:
Z N
Para ello, se pueden utilizar los desarrollos a partir
∞ X de los polinomios de Legendre, o bien las fórmulas más
−x
f (x)e dx ≈ wk f (xk )
0 simples siguientes:
k=0

26
Fórmula del rectángulo
Z xk+1 µ ¶ Z xk+1
xk + xk+1 f (x)dx ≈ f (xm )(xk+1 − xk )+
f (x)dx ≈ f (xk+1 − xk ) xk
xk 2 µ ¶
f (xk+1 ) − 2f (xm ) + f (xk ) xk+1 − xk
+ =
3 2
Esta fórmula se obtiene fácilmente aproximando f (x) ³ ´
por el polinomio interpolador en x = xk +x k+1
. Es decir: f (xk+1 ) + f (xk ) + 4f xk +x 2
k+1

2 = (xk+1 − xk )
6
Z xk+1 Z xk+1 ¶µ
xk + xk+1 Aunque estas fórmulas sean menos precisas que las de-
f (x)dx ≈ f dx = ducidas a partir de los ceros de los polinomios de Legendre,
xk xk 2
µ ¶ tienen la ventaja de que pueden ser utilizadas cuando sólo
xk + xk+1
= f (xk+1 − xk ) conocemos la función a integrar en un conjunto equiespa-
2 ciado de puntos, es decir, cuando sólo conocemos f (x) en
Fórmula del trapecio un conjunto de la forma xk = x0 + hk. Nótese que, en este
caso, la integración a partir de los ceros de los polinomios
Z xk+1
f (xk+1 ) + f (xk ) de Legendre no puede utilizarse.
f (x)dx ≈ (xk+1 − xk )
xk 2
Problema 68 (2 puntos) Aproximar, por el método de
Simpson, la integral
Esta fórmula se deduce aproximando f (x) por su poli- Z 1
¡ 3 ¢
nomio interpolador en xk y xk+1 . Es decir: x − x4 dx
−1
Z xk+1 utilizando únicamente el valor de la función en los puntos:
f (x)dx ≈ −1, − 12 , 0, 12 y 1.
k x
Z xk+1 µ ¶
x − xk+1 x − xk
≈ f (xk ) + f (xk+1 ) dx =
xk xk − xk+1 xk+1 − xk Práctica 5 (Implementación Método de Integración de
f (xk+1 ) + f (xk ) Simpson).
= (xk+1 − xk )
2
Crear una función en C++ donde se implemente el método
Fórmula de Simpson de Simpson. Los parámetros de la función serán: Los
³ ´ límites del intervalo de integración en precisión real y el
Z xk+1 f (xk+1 ) + f (xk ) + 4f xk +x k+1
número de subintervalos en los que se dividirá el intervalo
2
f (x)dx ≈ (xk+1 − xk ) inicial. La función a integrar se definirá aparte (como en
xk 6
el caso de la práctica 1). La función devolverá el valor
Esta fórmula se deduce aproximando f (x) por su de- de la integral obtenido. Probar el método para aproxi-
sarrollo en serie de Taylor centrado en el punto xm = mar las siguientes integrales con diferentes valores para el
xk +xk+1
. Es decir: parámetro de número de subintervalos y comprobar que el
2
resultado se aproxima al valor exacto de la integral.
Z xk+1

f (x)dx ≈ 1. 0
sin(x)dx = 2
xk
Z µ
xk+1 ¶
f 00 (xm )
≈ f (xm ) + f 0 (xm )(x − xm ) + (x − xm )2 dx = 2. R 1 √ x dx = 1
xk 2 0 1−x2
00
µ ¶3
f (xm ) xk+1 − xk
= f (xm )(xk+1 − xk ) + R∞ 2
3 2 3. −∞ √12π e−x /2 dx = 1

Ahora bien, teniendo en cuenta los resultados de


la sección anterior sobre derivación numérica f 00 (xm ), se Llamaremos Error a la diferencia entre el resultado
puede aproximar como real y el resultado obtenido con el algoritmo. Los resulta-
dos que se deben obtener son :
f (xk+1 ) − 2f (xm ) + f (xk )
f 00 (xm ) ≈ ³ ´2 Rπ
xk+1 −xk integral 0 sin(x)dx
2
No interv. Error
Por tanto, sustituyendo este valor en la aproximación float 23 10−5
anterior obtenemos double 27 10−10
8
long double 2 10−11

27
R1
Integral √ x dx (se toma b = 0.9999999) donde m y n determinan el grado de los polinomios. De
0 1−x2
o
N interv. Error estas relaciones se puede deducir, en general, los valores de
float 219 10−4 los puntos y los pesos. Un caso particularmente sencillo
double 224 10−4 es cuando Ω es un rectángulo [a, b]x[c, d]. En este caso,
long double 224 10−4 podemos escribir:
219 Z Z b Z d
R∞ 2
xm y n dxdy = xm dx y n dy
Integral √1 e−x /2 dx (se toma [-10,10]) Ω a c
−∞ 2π
o
N interv. Error y, por tanto, la exactitud en dimensión 2 la podemos de-
float 25 10−7 ducir a partir de la exactitud en dimensión 1, que, en este
double 26 0 caso, viene dada, como hemos visto anteriormente, por los
long double 26 0 polinomios de Legendre.

Se puede también implementar una versión del al- Problema 69 (3 puntos) Deducir la fórmula de inte-
goritmo de Simpson que calcule de forma automática el gración numérica sobre el rectángulo [−1, 1]x[−1, 1] resul-
número de intervalos. El siguiente pseudocódigo indica tante de aplicar la integración numérica en una variable
una manera de hacerlo en los intervalos [−1, 1], y [−1, 1].
Programa 9 Algoritmo iterativo para calcular la integral
por el método de Simpson. Los parámetros son la función Problema 70 (2 puntos) Deducir la fórmula de inte-
a integrar, el intervalo, una tolerancia T OL. 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
Algoritmo Simpson iterativo intervalos [a, b], y [c, d].
variable entera N=1 (Número intervalos)
variable real integral= Cálculo Integral de Simp-
son para N intervalos
variable real error=TOL+1 (Número intervalos) Problema 71 (2 puntos) Calcular de forma exacta la
mientras (error>TOL) integral Z 1Z 1
N=N*2
x2 y 2 dxdy
variable real integral2= Cálculo Integral de −1 −1
Simpson para N intervalos
utilizando integración numérica.
error=an_distancia(integral,integral2)
integral=integral2
fin mientras K←0 hasta N hacer Nótese que, al igual que en dimensión 1, también
finalgoritmo podemos extender los resultados al caso en que los inter-
valos sean infinitos, de tal forma que podemos construir
fácilmente fórmulas de integración numérica para las inte-
Integración numérica en dimensiones superiores. grales Z Z
∞ ∞
2
−y 2
En esta sección, estudiaremos las técnicas de integración F (x, y)e−x dxdy
−∞ −∞
numérica sobre dominios Ω de dimensión superior a 1. Para
y Z Z
simplificar la exposición, supondremos que la dimensión es ∞ ∞
2. Es decir, pretendemos aproximar F (x, y)e−x−y dxdy
Z 0 0

F (x, y)dxdy

Aproximaremos esta integral a través de la fórmula Problema 72 (2 puntos) Calcular una aproximación
numérica: numérica de la integral
Z X Z ∞Z 2
F (x, y)dxdy ≈ wij F (xi , yj ) x
y2
dxdy
Ω i,j −∞ 0 1 + e

donde debemos elegir los puntos (xi , yj ) y los pesos utilizando la evaluación de F (x, y) en 4 puntos.
wij . Para realizar esta elección se utilizan técnicas de
cuadratura. Es decir, se exige que la fórmula sea exacta
para polinomios en x e y de hasta un cierto grado: En el caso de que Ω sea un triángulo, el cálculo es
Z X un poco más complejo. Consideremos un triángulo T
xm y n dxdy = wij (xi )m (yj )n de vértices (x0 , y0 ), (x1 , y1 ), (x2 , y2 ). Denotaremos por
Ω i,j

28
AREA(T ) el área del triángulo T. En función de los vér- Problema 74 (2 puntos) Calcular una aproximación
tices, el área viene determinada por numérica de la integral
⎛¯ ¯⎞ Z
¯ 1 1 1 ¯¯
1 ¯ x2 ydxdy
AREA(T ) = ABS ⎝¯¯ x0 x1 x2 ¯¯⎠ Ω
2 ¯ y0 y1 y2 ¯
donde Ω es el triángulo de vértices (0, 0), (2, 0) y (0, 2),
A continuación presentaremos algunas fórmulas de in- utilizando 1 punto, 3 puntos y 4 puntos.
tegración numérica sobre triángulos utilizando diferentes
números de puntos
ANÁLISIS NUMÉRICO MATRICIAL II
Integración sobre triángulos utilizando un
En esta sección veremos algunos aspectos más avanzados
punto.
del análisis matricial, incluyendo técnicas iterativas de res-
Z µ ¶
x0 + x1 + x2 y0 + y1 + y2 olución de sistemas de ecuaciones y cálculo de autovalores.

F (x, y) = F , AREA(T )
T 3 3
Normas de vectores y matrices.
Integración sobre triángulos utilizando 3 pun-
tos.
Z 3
X Definición 4 Una norma k . k es una aplicación de un
F (x, y) ∼
= AREA(T ) xk , yek )
wk F (e espacio vectorial E en R+ ∪ {0} que verifica las siguientes
T k=1 propiedades:
donde
• k x k= 0 si y sólo si x = 0
1
w1 = w2 = w3 = • k λx k=| λ |k x k para todo λ ∈ K y x ∈ E
3
x0 + x1 y0 + y1
e1
x = ye1 = • k x + y k≤k x k + k y k para todo x, y ∈ E.
2 2
x0 + x2 y0 + y2
e2
x = ye2 =
2 2 Básicamente, una norma mide la magnitud o tamaño
x2 + x1 y2 + y1
e3
x = ye3 = de un vector x. Por ejemplo, en el espacio vectorial de los
2 2
números reales, la norma ”natural” es el valor absoluto.
Integración sobre triángulos utilizando 4 pun- Sin embargo, cuando trabajamos en varias dimensiones,
tos. esto es, x = (x1 , x2 , ...., xN ), existen múltiples formas de
Z 4
X definir una norma. La definición más utilizada es la de-
F (x, y) ∼
= AREA(T ) xk , yek )
wk F (e
T nominada norma p, donde p es un número real positivo,
k=1
que viene definida por
donde
ÃN ! p1
25 27 X
w1 = w2 = w3 = w4 = − k x kp = | xi | p
48 48
6x0 + 2x1 + 2x2 6y0 + 2y1 + 2y2 i=1
e1
x = ye1 =
10 10 Un caso particularmente interesante es p = 2, que
2x0 + 6x1 + 2x2 2y0 + 6y1 + 2y2
e2
x = ye2 = corresponde a la norma euclídea. Otro caso interesante
10 10 es aquél que se produce cuando hacemos tender p hacia
2x0 + 2x1 + 6x2 2y0 + 2y1 + 6y2
e3
x = ye3 = infinito, lo que da lugar a la denominada norma infinito,
10 10 definida por
x0 + x1 + x2 y0 + y1 + y2
e4
x = ye4 = k x k∞ = max | xi |
3 3 i

Problema 73 (2 puntos) Se considera el triángulo T de Problema 75 (4 puntos) Tomar N = 2 , p = 2, y


vértices (0, 0), (1, 0) y (0, 1). Deducir cual debe ser el punto demostrar que la norma k x kp verifica las propiedades
(x0 , y0 ) y el peso w0 para que la fórmula de integración de la definición de norma.
numérica:
Z
Problema 76 (3 puntos) Demostrar que
F (x, y)dxdy ≈ F (x0 , y0 )w0
T
Limp→∞ k x kp = max | xi |
sea exacta para polinomios de grado 1 en x e y. Es decir i

P (x, y) = ax + by + c.

29
Problema 77 (2 puntos) Tomar N = 2 y dibujar el Definición 6 Un autovalor de A es un número λ real o
lugar geométrico de los vectores x = (x1 , x2 ) que verifican complejo tal que existe un vector x, denominado autovec-
que tor, tal que
Ax = λx
1. k x k1 < 1
2. k x k2 < 1
3. k x k∞ < 1 Definición 7 Se denomina polinomio característico P (λ)
de la matriz A, al polinomio dado por el determinante
Problema 78 (2 puntos) Tomar N = 2 y demostrar la P (λ) =| A − λI |
siguiente desigualdad:

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

Problema 80 (1 punto) Demostrar que los autovalores


Dada una matriz A de dimensión N xN , se podría de A son los ceros del polinomio característico P (λ).
definir su norma considerando la matriz como un vector
de dimensión N xN . Sin embargo, resulta más útil definir
la norma de una matriz subordinándola a la norma de un Definición 8 Se define el radio espectral de una matriz A
vector de la siguiente manera: como

ρ(A) = max{| λi | : λi autovalor de A}


i
Definición 5 Sea A una matriz y sea k . k una norma
vectorial. Se define la norma de A, subordinada a la norma
vectorial k . k como
Teorema 18 Sea A una matriz y k . k una norma vecto-
k Ax k rial. Entonces
k A k= sup
x6=0 k x k k A k≥ ρ(A)

La propiedad fundamental que verifica una norma ma- Demostración: Si λ es un autovalor de A, entonces existe
tricial definida de esta forma es la siguiente: un autovector x tal que Ax = λx, por tanto

k Ax k k λx k
= = |λ| ≤k A k
Teorema 17 Sea A una matriz y k . k una norma vecto- kxk kxk
rial. Entonces, para cualquier vector x se verifica que
Lo que demuestra el teorema.
k Ax k≤k A k · k x k

Demostración: Si x = 0, la desigualdad es trivial. Si Teorema 19 Si los autovectores de una matriz A de di-


x 6= 0, entonces, puesto que k x k> 0, la desigualdad mensión N xN forman una base ortonormal de RN , en-
anterior es equivalente a tonces
k A k2 = ρ(A)
k Ax k
≤k A k Demostración: Recordamos, en primer lugar, que una
kxk
base ortonormal de vectores es un conjunto de vectores
Ahora bien, esta desigualdad es cierta por la propia tales que cualquier otro vector se puede expresar como
definición de k A k. combinación lineal de ellos y, además, su producto escalar
verifica que
Problema 79 (2 puntos) Demostrar que si A y B son N ½
X 0 si i 6= j
dos matrices de dimensión N xN, entonces, para cualquier (xi , xj ) = (xi )k (xj )k =
norma de matrices subordinada a una norma vectorial, se 1 si i = j
k=1
verifica
k AB k≤k A k · k B k donde (xi )k indica la coordenada k-ésima del vector xi .
Vamos a demostrar la desigualdad

k A k2 ≤ ρ(A)
A continuación veremos la relación que existe entre
Dado que el teorema anterior determina la desigual-
la norma de una matriz y sus autovalores. Empezaremos
dad en el otro sentido, tendríamos la igualdad, y por tanto
recordando algunos conceptos relacionados con los auto-
el resultado del Teorema. Sea x un vector cualquiera.
valores.
Puesto que A posee una base ortonormal de autovectores

30
xi , el vector x se podrá expresar como una combinación Problema 83 (2 puntos) Demostrar la siguiente igual-
lineal de autovectores, de la forma: dad:
ρ(t AA) = ρ(A ·t A)
x = η 1 x1 + η2 x2 + .. + η N xN

Al hacer Ax, y puesto que los xi son autovectores, Teorema 22 Sea A una matriz cualquiera, entonces
obtenemos que
Limn→∞ k An k= 0 ⇐⇒ ρ(A) < 1
Ax = η 1 λ1 x1 + η2 λ2 x2 + .. + η N λN xN
Demostración:[La-Th] Pg. 80.
Como los autovectores son ortonormales, se cumple
que
q Condicionamiento de una matriz.
k x k2 = (η 1 )2 + .. + (ηN )2 El condicionamiento de una matriz es un número que
q nos indica la ”bondad” o buen comportamiento numérico
2 2
k Ax k2 = (η1 λ1 ) + .. + (ηN λN ) de la matriz cuando se trabaja con ella numéricamente.
Para ilustrar de qué estamos hablando, veamos el sigu-
Y, por tanto,
iente ejemplo:
k Ax k2
≤ ρ(A)
k x k2 Ejemplo 16 Consideremos el siguiente sistema de ecua-
ciones
para cualquier vector x. En consecuencia, al tomar el ⎛ ⎞⎛ ⎞ ⎛ ⎞
supremo en x, la desigualdad se mantiene, lo que demues- 10 7 8 7 x 32
tra que ⎜ 7 5 6 5 ⎟ ⎜ y ⎟ ⎜ 23 ⎟
⎜ ⎟⎜ ⎟ ⎜ ⎟
k A k2 ≤ ρ(A) ⎝ 8 6 10 9 ⎠ ⎝ z ⎠ = ⎝ 33 ⎠
7 5 9 10 v 31
cuya solución es (1, 1, 1, 1). Vamos a considerar ahora el
mismo sistema, perturbando ligeramente el término inde-
Teorema 20 Si una matriz A de dimensión N xN es
pendiente:
simétrica, entonces todos sus autovalores son reales y,
además, sus autovectores forman una base ortonormal de ⎛ ⎞⎛ ⎞ ⎛ ⎞
RN . 10 7 8 7 x 32.1
⎜ 7 5 6 5 ⎟ ⎜ y ⎟ ⎜ 22.9 ⎟
⎜ ⎟⎜ ⎟=⎜ ⎟
Demostración: [La-Th] Pg. 53. ⎝ 8 6 10 9 ⎠ ⎝ z ⎠ ⎝ 33.1 ⎠
7 5 9 10 v 30.9
Problema 81 (2 puntos) Calcular los autovectores de La solución de este sistema es (9.2, −12.6, 4.5, −1.1).
la matriz ⎛ ⎞ Como podemos observar, a pesar de que la perturbación
1 1 0 del sistema es del orden de 0.1, la perturbación de la solu-
⎝ 1 1 0 ⎠
ción del sistema puede llegar a ser del orden de 13.6.
0 0 2
Consideremos de forma genérica un sistema de ecua-
y determinar una base ortonormal de R3 compuesta por
ciones de la forma
autovectores de A.
Au = b
y, al mismo tiempo, el sistema de ecuaciones perturbado
Teorema 21 Sea A una matriz cualquiera, entonces
p A (u + δu) = b + δb
• k A k2 = ρ(t AA)
P Nosotros queremos controlar el error relativo en la
• k A k1 = maxj ( i | aij |) solución del sistema a partir del error relativo en el tér-
³P ´ mino independiente b. Es decir, queremos encontrar una
• k A k∞ = maxi j | aij | estimación del tipo

Demostración: [La-Th] Pg. 73,75. k δu k k δb k


≤ χ(A)
kuk kbk
Problema 82 (2 puntos) Calcular las normas 2, 1 e
donde χ(A) es un número que llamaremos condi-
infinito de la matriz
cionamiento de la matriz. Obviamente, cuanto más pe-
µ ¶ queño sea χ(A), mejor comportamiento numérico tendrá
1 0
A= la matriz A.
1 1

31
Teorema 23 Si definimos Método de Jacobi.

χ(A) =k A k · k A−1 k Este método se aplica a matrices reales y simétricas. Se


basa en el hecho de que, dadas dos matrices A y R, se
entonces verifica que los autovalores de A son los mismos que los
k δu k k δb k autovalores de R−1 AR. Este método intenta diagonalizar
≤ χ(A)
kuk kbk A realizando transformaciones del tipo R−1 AR.

Demostración: Como A(u + δu) = b + δb y Au = b, se


obtiene que Aδu = δb, de donde δu = A−1 δb y, por tanto, Problema 86 (2 puntos) Sean las matrices A y R.
° ° Demostrar que la matriz A y la matriz B = R−1 AR poseen
kδuk ≤ °A−1 ° kδbk los mismos autovalores
Por otro lado, también se cumple que
Problema 87 (2 puntos) Se considera la matriz
kbk = kAuk ≤ kAk kuk
µ ¶
1 1
de donde obtenemos que A=
1 1
1 kAk
≤ calcular el ángulo α tal que la matriz
kuk kbk
µ ¶
cos α sin α
Así, multiplicando esta desigualdad con la anterior- R=
− sin α cos α
mente obtenida para kδuk , concluimos la demostración
del teorema. verifique que la matriz B = R−1 AR sea diagonal.

Problema 84 (2 puntos) Demostrar que, si los autovec-


tores de una matriz A de dimensión N xN forman una base En el método de Jacobi se utilizan las denominadas
ortonormal de RN , entonces, para la norma 2, se cumple matrices de rotación, que tienen la forma siguiente:
que ⎛ ⎞
1 0 0 0 0 0 0
maxi {| λi |} ⎜ 0 1
χ(A) =k A k2 · k A−1 k2 = ⎜ . . . . 0 ⎟ ⎟
mini {| λi |} ⎜ 0 .
⎜ cos α . sin α . 0 ⎟ ⎟
Rpq (α) = ⎜⎜ 0 . . 1 . . 0 ⎟ ⎟
Nota: En el caso del ejemplo 16 los autovalores de la ⎜ 0 . − sin α . cos α . 0 ⎟
⎜ ⎟
matriz son 0.01, 0.84, 3.86, y 30.29, por tanto el condi- ⎝ 0 . . . . 1 0 ⎠
cionamiento sería 0 0 0 0 0 0 1
30.29 donde los cosenos y senos están situados en las columnas
χ(A) = = 3029
0.01 y filas p y q. Al ser una matriz de rotación, se verifica
−1
lo cual indica un condicionamiento bastante malo. que (Rpq (α)) =t Rpq (α). Al realizar la operación A0 =t
Rpq (α)ARpq (α), sólo se ven afectadas las filas y columnas
Problema 85 (2 puntos) Calcular el condicionamiento de índices p y q. Además, la matriz A0 también es simétrica.
para la norma
⎛ 2, de las siguientes
⎞ matrices: Concretamente, si A es una matriz simétrica, los cambios
2 2 −2 que se producen en A0 son los siguientes:
A=⎝ 2 1 1 ⎠
−2 1 1 (app − aqq )
a0pq = sin 2α + apq cos 2α
⎛ ⎞ 2
2 −1 0 a0pp = app cos2 α + aqq sin2 α − apq sin 2α
A = ⎝ −1 2 −1 ⎠ a0qq = app sin2 α + aqq cos2 α + apq sin 2α
0 −1 2
a0pj = apj cos α − aqj sin α j 6= p, q
a0qj = apj sin α + aqj cos α j 6= p, q

Cálculo de autovalores y autovectores. El método de Jacobi se basa en ir modificando la ma-


triz A mediante el procedimiento anterior, haciendo 0 los
En esta sección veremos algunos métodos elementales para
elementos no diagonales mayores en módulo. Para anular
el cálculo de autovalores y autovectores de matrices.
un valor a0pq , basta con elegir α tal que

(app − aqq )
sin 2α + apq cos 2α = 0
2

32
Es decir, Problema 89 (3 puntos) Dentro del método de Jacobi
cos 2α (aqq − app ) para el cálculo de autovalores, demostrar las igualdades
cot(2α) = = siguientes:
sin 2α 2apq
a0pq = 0
Ejemplo 17 Consideremos la matriz a0pp = app − tan(α)apq
⎛ ⎞ a0qq = aqq + tan(α)apq
2 −1 0
⎝ −1 2 −1 ⎠ a0pj = apj cos α − aqj sin α j=
6 p, q
0 −1 2 a0qj = apj sin α + aqj cos α j=6 p, q
Para convertir en 0 el elemento a12 = −1 de la matriz,
debemos elegir α tal que
(a22 − a11 )
cot(2α) = =0 Veamos ahora la convergencia del método de Jacobi
2a12
para el cálculo de autovalores.
De donde α = − π4 . Por tanto, la matriz R12 es
⎛ √1 ⎞
− √12 0
2 Teorema 24 Sea una matriz A simétrica. Sea A1 = A,
R12 = ⎝ √1 2
√1
2
0 ⎠ y sea Ak la matriz transformada de Ak−1 , haciendo cero
0 0 1 el elemento no diagonal mayor en módulo de la matriz
t
y al hacer la operación R12 AR12 obtenemos Ak−1 , entonces los elementos diagonales de la matriz Ak
⎛ ⎞ convergen (k → ∞) hacia los autovalores de la matriz A.
1.0 0 −. 707 107 Además los elementos no diagonales de A convergen hacia
⎝ 0 3.0 −. 707 107 ⎠ 0.
−. 707 107 −. 707 107 2.0
Demostración: [La-The] Pg. 576-577.
Para evitar tener que evaluar funciones trigonométri- Pseudocódigo del Método de Jacobi para el Cálculo
cas, que son costosas computacionalmente, y simpli-
de autovalores.
ficar el algoritmo, podemos apoyarnos en las igualdades
Los parámetros de entrada son la matriz simétrica
trigonométricas dadas en el siguiente problema: A, su dimensión DIM, el número máximo de iteraciones
N max y la tolerancia T OL para decidir cuándo son ceros
Problema 88 (3 puntos) Demostrar las siguientes los elementos no diagonales.
igualdades trigonométricas:
PARA n = 0, .., N max − 1 HACER
q p=1
tan(α) = − cot(2α) + sign(cot(2α)) 1 + cot2 (2α) q=0
¡ ¢ R = ABS(A(p, q))
donde α ∈ − π4 , π4 , sign(x) = 1 si x ≥ 0 y sign(x) = −1 PARA i = 2, ..., DIM − 1 HACER
si x < 0, PARA j = 0, ..., i − 1 HACER
1 IF ABS(A(i, j)) > R HACER
cos α = p
1 + tan2 (α) R = ABS(A(i, j))
p=j
sin α = tan(α) cos α
q=i
− tan(α) + sin(2α) FIN IF
cot(2α) =
2 sin2 (α) FIN PARA j
FIN PARA i
IF R < T OL HACER
Utilizando las anteriores igualdades trigonométricas, PROCEDIMIENTO TERMINADO CORREC-
la transformación de la matriz A mediante el método de TAMENTE.
Jacobi se puede escribir como LOS AUTOVALORES SE ENCUENTRAN EN
LA DIAGONAL DE A.
a0pq = 0 SALIR
a0pp = app − tan(α)apq FIN IF
a0qq = aqq + tan(α)apq C = (A(q, q) − A(p, p))/(2 ∗ A(p, q))
a0pj = apj cos α − aqj sin α j 6= p, q IF C < 0 HACER
T = −C − SQRT (1. + C ∗ C)
a0qj = apj sin α + aqj cos α j =6 p, q ELSE
T = −C + SQRT (1. + C ∗ C)

33
FIN IF
CO = 1./SQRT (1. + T ∗ T )
SI = CO ∗ T
PARA j = 0, ..., DIM − 1 HACER Nota. Para no tener que buscar en cada paso el máximo
IF ( j 6= p AND j 6= q) HACER de los elementos no-diagonales de Ak , el algoritmo de Ja-
D = A(p, j) cobi se puede modificar haciendo cero el primer elemento
A(j, p) = A(p, j) = CO ∗ D − SI ∗ A(q, j) apq que se encuentre que verifique |apq | ≥ T OL.
A(j, q) = A(q, j) = SI ∗ D + CO ∗ A(q, j)
FIN IF
FIN PARA j Práctica 6 (Método de Jacobi para el cálculo de autoval-
A(p, p) = A(p, p) − T ∗ A(p, q) ores y autovectores)
A(q, q) = A(q, q) + T ∗ A(p, q) Implementar en C las siguientes funciones :
A(p, q) = A(q, p) = 0
FIN PARA n • real an_error_vectores(const real *u,const real
PROCEDIMIENTO TERMINADO INCORRECTA- *v,const int N) Devuelve la diferencia entre los vec-
MENTE tores U y V, de dimensión N, utilizando la fórmula
NÚMERO DE ITERACIONES MÁXIMO EXCE- :
DIDO
N
1 X ABS(U (i) − V (i))
Veamos ahora cómo podemos calcular los autovec- ERROR_V ECT ORES =
N i=1 ABS(U (i)) +
tores. Al utilizar el método de Jacobi, vamos transfor-
mando la matriz A multiplicándola por una secuencia de
matrices de rotación R1 , ...., RM , de tal forma que • int an_jacobi(const real **A,real **Autovectores,
−1
real *Autovalores, const int N,const real TOL,const
RM · .... · R1−1 AR1 · .... · RM = D int Niter): Realiza el cálculo de los autovalores y au-
donde D es una matriz diagonal que contiene los auto- tovectores de una matriz simétrica A por el método de
valores de A en la diagonal. Denotemos por B la matriz Jacobi. Autovectores es una matriz donde se guardan
B = R1 · .... · RM . Despejando de la anterior igualdad los autovectores por columnas. La función devuelve 0
obtenemos que si termina bien y −1 en caso contrario.
AB = BD • real an_error_autovectores(const real **A, const real
Si denotamos por bi el vector columna i de la matriz **Autovectores, const real *Autovalores, const int N)
B, de la expresión anterior se obtiene que : Para comprobar que los autovalores λi y su autovec-
tores x̄i están bien estimados, comparar para cada au-
Abi = dii bi
tovalor λi , utilizando la función an_error_vectores(),
Es decir, bi es el autovector de A asociado al autovalor para los vectores Ax̄i y λi x̄i . Devolver la expresión
dii . Por tanto, la matriz B determina los autovectores.
Numéricamente, para calcular la matriz B en el algoritmo ERROR_AU T OV ECT ORES =
anterior que calcula los autovalores, añadiremos en cada
iteración las operaciones necesarios para ir obteniendo B. max ERROR_V ECT ORES(Ax̄i , λx̄i )
i=1,N
En primer lugar, inicializamos B a la identidad antes de
entrar en el bucle. A continuación, en cada iteración hare- Comprobar los resultados obtenidos con los siguientes
mos B = B · Ri .Ahora bien, como Ri es una matriz de ejemplos, tomando T OL = 0.0001 y N iter = 10000:
rotación del tipo Rpq (α), cuando multiplicamos una matriz ⎛ ⎞
B por la derecha por una matriz del tipo Rpq (α) (denote- 2 2 −2
mos por B 0 = B · Rpq (α) el resultado de la multiplicación) 1. A = ⎝ 2 1 1 ⎠
podemos observar que lo único que cambia en B son los −2 1 1
vectores columnas p y q, que se transforman de la siguiente Resultado:
⎧⎛ ⎞⎫ ⎧⎛ ⎞⎫
⎨ 1 ⎬ ⎨ −2 ⎬
manera: ⎝ −1 ⎠ ↔ −2, ⎝ −1 ⎠ ↔
⎩ ⎭ ⎩ ⎭
b0ip = cos(α)bip − sin(α)biq i = 1, .., N 1
⎧⎛ ⎞⎫ 1
b0iq = sin(α)bip + cos(α)biq i = 1, .., N ⎨ 0 ⎬
4, ⎝ 1 ⎠ ↔ 2
⎩ ⎭
1
Problema 90 (2 puntos) Utilizar el método de Jacobi ⎛ ⎞
para aproximar los autovalores y autovectores de la sigu- 2 −1 0
iente matriz: ⎛ ⎞ 2. A = ⎝ −1 2 −1 ⎠
2 0 1 0 −1 2
A=⎝ 0 1 0 ⎠ Resultado:
1 0 1

34
⎧⎛ ⎞⎫ ⎧⎛ ⎞⎫
⎨ −1 ⎬ ⎨ 1
√ ⎬ Error Ejemplo M_1000 = 1 × 10−5
⎝ 0 ⎠ ↔ 2, ⎝ − 2 ⎠ ↔ 2 +
⎩ ⎭ ⎩ ⎭
1 1 Precisión long double
⎧⎛ ⎞⎫
√ ⎨ √1 ⎬ √ Error Ejemplo 1 = 4 × 10−6
2, ⎝ 2 ⎠ ↔ 2 − 2 Error Ejemplo 2 = 9 × 10−6
⎩ ⎭ Error Ejemplo 4 = 1 × 10−5
1
Error Ejemplo M_10 = 8 × 10−6
3. Las matrices de dimensión 10, 100 y 1000 del directo- Error Ejemplo M_100 = 2 × 10−5
rio de la asignatura. Error Ejemplo M_1000 = 1 × 10−5
⎛ ⎞
0 1 6 0 0 0
⎜ 1 0 2 7 0 0 ⎟
⎜ ⎟
⎜ 6 2 0 3 8 0 ⎟
4. A = ⎜⎜ ⎟ Método de la potencia

⎜ 0 7 3 0 4 9 ⎟
⎝ 0 0 8 4 0 5 ⎠
0 0 0 9 5 0 Teorema 25 Sea una matriz A que posee una base de au-
tovectores tal que en módulo su autovalor máximo λmax es
Resultados: único. Sea un vector u1 no ortogonal al subespacio engen-
⎛ ⎞ ⎛ ⎞ drado por los autovectores del autovalor λmax , entonces, si
−0.283 29 0.556 95 definimos la secuencia
⎜ −0.745 57 ⎟ ⎜ −0.148 71 ⎟
⎜ ⎟ ⎜ ⎟
⎜ 0.02466 5 ⎟ ⎜ 0.576 44 ⎟ un−1
16. 6 ↔ ⎜
⎜ −0.191 25

⎟ 5. 942 ↔ ⎜


⎟ un = A
⎜ ⎟ ⎜ −0.370 52 ⎟ k un−1 k
⎝ 0.477 07 ⎠ ⎝ 0.186 62 ⎠
0.314 8 −0.404 09 se verifica que

⎛ ⎞ ⎛ ⎞ ¡¡ n n−1 ¢¢
−. 593 8 −0.674 87 Limn→∞ sign u ,u k un k= λmax
⎜ −1. 562 8 ⎟ ⎜ 0.329 9 ⎟
⎜ ⎟ ⎜ ⎟
⎜ 0.05 170 ⎟ ⎜ 0.222 33 ⎟ ¡ ¡¡ ¢¢¢n un
2. 11 ↔ ⎜


⎟ − 2. 465 ↔ ⎜


⎟ Limn→∞ sign un , un−1 es un autovector de λmax
⎜ −. 400 89 ⎟ ⎜ −0.08329 9 ⎟ k un k
⎝ 1.0 ⎠ ⎝ 0.386 41 ⎠
. 659 86 −0.479 62
Además, dicho autovector tiene norma 1.
⎛ ⎞ ⎛ ⎞ ¡¡ ¢¢
0.273 98 0.224 49 Teorema 26 sign un , un−1 es el¡¡signo del¢¢producto
⎜ 0.389 55 ⎟ ⎜ −0.275 90 ⎟
⎜ ⎟ ⎜ ⎟ ¡escalar de¢ un y un−1 ,¡¡es decir sign
¢¢ un , un−1
¡ = 1¢ si
⎜ −0.524 54 ⎟ ⎜ −0.407 79 ⎟
−10. 06 ↔ ⎜ ⎟ − 12. 12 ↔ ⎜ ⎟ n n−1 n n−1
u ,u ≥ 0 y sign u , u = −1 si un , un−1 <
⎜ −0.449 45 ⎟ ⎜ 0.562 40 ⎟
⎜ ⎟ ⎜ ⎟ 0.
⎝ 0.525 54 ⎠ ⎝ 0.307 86 ⎠
0.140 9 −0.544 17 Demostración. En primer lugar, vamos a demostrar por
inducción la siguiente igualdad:
Nota: Obsérvese, al comparar los resultados,
que los autovectores están definidos módulo la An u1
un+1 =
multiplicación por una constante. Respecto al kAn−1 u1 k
ERROR_AU T OV ECT ORES (que denotaremos por
Error) los resultados deben ser los siguientes : Para n = 1 la igualdad se cumple por la definición de
u2 . Supongamos que se cumple para n−1, y demostrémoslo
Precisión float para n:
Error Ejemplo 1 = 4 × 10−6
Error Ejemplo 2 = 9 × 10−6 An−1 u1
Error Ejemplo 4 = 1 × 10−5 n+1 un kAn−2 u1 k An u1
u = A n = A kAn−1 u1 k =
Error Ejemplo M_10 = 8 × 10−6 ku k n−2 1
kAn−1 u1 k
kA u k
Error Ejemplo M_100 = 2 × 10−5
Error Ejemplo M_1000 = 9 × 10−5
Con lo que queda demostrado este primer resultado.
Precisión double Por otro lado, como A posee una base de autovectores,
Error Ejemplo 1 = 4 × 10−6 que denotaremos por xi , y u1 no es ortogonal al espacio
Error Ejemplo 2 = 9 × 10−6 generado por los autovectores asociados a λmax , entonces
Error Ejemplo 4 = 1 × 10−5 u1 se puede escribir como
Error Ejemplo M_10 = 8 × 10−6
Error Ejemplo M_100 = 2 × 10−5 u1 = µ1 x1 + ... + µN xN

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

= |λmax | 2 −1
y el autovector correspondiente de la matriz
y por tanto −1 1
utilizando el método de la potencia, realizando 2 itera-
¡¡ n n−1 ¢¢ ciones del método a partir de u1 = (1, 1) y tomando como
Limn→∞ sign u ,u k un k= λmax norma kuk = maxi |ui |.
¡ ¡¡ ¢¢¢n
Por otro lado, el término sign un , un−1 para n
suficientemente grande es 1n si λmax es positivo o (−1)n Problema 93 (2 puntos) Utilizar el método de la po-
si λmax es negativo. Sean x1 , ...., xM los autovectores aso- tencia inversa para aproximar el autovalor menor de la
ciados a λmax , obtenemos que matriz µ ¶
−2 1
¡ ¡¡ ¢¢¢n A=
un 0 3
Limn→∞ sign un , un−1 =
k un k
µ1 x1 + ... + µM xM Llegar hasta u3 partiendo de u = (1, 1).
= El método de la potencia directa e inversa nos per-
kµ1 x1 + ... + µM xM k
mite calcular el autovalor más grande y más pequeño de
que es un autovector de λmax de norma 1. una matriz. Ahora bien para calcular los autovalores que
se encuentren entre λmin y λmax necesitamos información
Problema 91 (3 puntos) Aplicar el método de la po- adicional como puede ser tener una aproximación del au-
tencia para aproximar el autovalor máximo y el autovec- tovalor buscado. Por ejemplo si µ es una aproximación del
tor asociado de las siguientes matrices, realizando 3 it- autovalor λ de tal forma que µ se encuentre más cercano
eraciones en el método, hasta calcular u4 y partiendo de a λ que a cualquier otro autovalor, podemos construir la
u1 = (1, 1). matriz A0 = A − µI. Si llamamos λ0min al autovalor más
µ ¶ pequeño de A0 , se cumple que
2 1
A =
0 1 A0 x̄ = (A − µI)x̄ = λ0min x̄
µ ¶
−3 0
A = de donde despejando
1 1
Ax̄ = (λ0min + µ)x̄

36
y por tanto λ0min + µ es el autovalor de A más cercano a µ. Métodos iterativos de resolución de sistemas lin-
eales.
El razonamiento anterior nos lleva al siguiente algo-
Estas técnicas consisten en transformar un sistema de la
ritmo general para calcular todos los autovectores y auto-
forma
valores de una matriz cualquiera:
Au = b
en una ecuación de punto fijo de la forma
1. Paso 1: Se calcula el polinomio característico |A −
λI| = 0. u = Mu + c

2. Paso 2: Se calculan las raíces {λi } del polinomio car- de tal manera que, al hacer iteraciones de la forma
acterístico
un = M un−1 + c
3. Paso 3 : Utilizando el método de la potencia inversa se
calcula los autovectores más pequeños de las matrices se obtenga que un converge hacia u, la solución del sistema
A − λi I original.

Ejemplo 18 Consideremos el sistema de ecuaciones


La principal limitación del algoritmo anterior es que
calcular el polinomio característico tiene una complejidad 2x − y = 1
factorial, y por tanto el método es sólo aplicable para ma- −x + 2y − z = 0
trices de dimensión pequeña (para dimensión mayor que
−y + 2z = 1
12 el algoritmo se vuelve muy lento).
Buscar la solución de este sistema es equivalente a buscar
Para calcular el polinomio característico se puede pro- un vector u = (x, y, z) que verifique que
ceder de la siguiente manera: Dada una matriz A de di-
mensión N se calcula kAk1 ,lo cual es muy rápido pues 1+y
x =
sólo hay que sumar elementos de la matriz y calcular su 2
máximo, como todos los autovalores de A cumplen que x+z
y =
|λi | ≤ kAk1 , ello significa que todos los autovalores es- 2
tan en el intervalo [− kAk1 , kAk1 ]. Elegimos a continuación 1+y
z =
N + 1 valores xi equidistribuidos en [− kAk1 , kAk1 ]. Para 2
cada uno de esos valores tenemos que Hacer iteraciones de esta ecuación de punto fijo con-
N −1 siste en partir de una aproximación inicial (x1 , y1 , z1 ) y
|A − xi I| = aN xN
i + aN−1 xi + ...... + a0 hacer iteraciones de la forma
donde {aN , aN −1 , ....., a0 } representan los coeficientes del 1 + yn−1
xn =
polinomio característico buscado. Observese que para xi la 2
relación de arriba es una ecuación lineal en los coeficientes xn−1 + zn−1
yn =
del polinomio y por tanto dichos coeficientes se pueden 2
encontrar resolviendo el sistema : 1 + yn−1
zn =
⎛ N ⎞⎛ ⎞ ⎛ ⎞ 2
x0 x0N −1 . 1 aN |A − x0 I|
⎜ xN xN −1 . 1 ⎟ ⎜ aN −1 ⎟ ⎜ |A − x1 I| ⎟ En este caso, la solución exacta del sistema es u = (1, 1, 1).
⎜ 1 1 ⎟⎜ ⎟=⎜ ⎟
⎝ . . . . ⎠⎝ . ⎠ ⎝ . ⎠ Si hacemos iteraciones del esquema anterior a partir de la
N
xN xN N −1
. 1 a0 |A − xN I| aproximación inicial u1 = (0, 0, 0), obtenemos que
1+0 1
x2 = =
2 2
0+0
Problema 94 (3 puntos) Calcular el autovalor y au- y2 = =0
tovector más cercano a 2 de la matriz 2
⎛ ⎞ 1+0 1
z2 = =
0 −1 0 2 2
⎝ 0 3 −1 ⎠
De la misma forma, obtenemos que
0 0 −1
⎛ ⎞ ⎛ ⎞ ⎛ ⎞
0.5 .84 .98
Para ello, calcular dos iteraciones del método de la u3 = ⎝ 0.25 ⎠ .... u8 = ⎝ .73 ⎠ .... u17 = ⎝ .96 ⎠
potencia inversa partiendo de u1 = (1, 1, 1). 0.5 .84 .98

Como puede observarse, las sucesivas iteraciones se van


aproximando a la solución u = (1, 1, 1). En este caso, la

37
matriz M y el vector c que determinan el esquema iterativo Método de Gauss-Seidel
vienen dados por
Este método consiste en tomar
⎛ ⎞ ⎛ 1 ⎞
0 12 0 2 MGS = (D + L)−1 (−U )
MJ = ⎝ 12 0 12 ⎠ cJ = ⎝ 0 ⎠
−1
0 12 0 1
2
cGS = (D + L) b

A efectos prácticos, la aplicación de este método no


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

MJ = D−1 (−L − U ) Ejemplo 19 Vamos a aplicar el método de Gauss-Seidel


al sistema del ejemplo anterior, es decir
cJ = D−1 b

Es el que se ha utilizado en el ejemplo anterior. El


2x − y = 1
paso de una iteración a otra del método de Jacobi puede
expresarse de la siguiente forma: −x + 2y − z = 0
−y + 2z = 1
−a12 un−1
2 − ... − a1N un−1 + b1
un1 = N
Las iteraciones del método de Gauss-Seidel aplicado
a11
a este sistema consisten en
−a21 un−1
1 − a23 un−1
3 ... − a2N un−1 + b2
un2 = N
a22 1 + yn−1
. xn =
2
−aN1 un−1
1 − aN 2 un−1
2 ... − aNN −1 un−1
N −1 + bN xn + zn−1
unN = yn =
aN N 2
1 + yn
zn =
. 2
Si hacemos iteraciones del esquema anterior a partir de la
Problema 95 (2 puntos) Calcular 3 iteraciones del aproximación inicial u1 = (0, 0, 0), obtenemos que
método de Jacobi para resolver el sistema
⎛ ⎞⎛ ⎞ ⎛ ⎞ 1+0 1
1 −1 0 x −1 x2 = =
2 2
⎝ −1 2 0 ⎠ ⎝ y ⎠ = ⎝ 3 ⎠ 1
2 +0 1
0 −1 3 z 1 y2 = =
2 4
partiendo de u1 = (0, 0, 0) 1 + 14 5
z2 = =
2 8
De la misma forma, obtenemos que

38
⎛ ⎞ ⎛ ⎞ Teorema 28 Si A es una matriz tridiagonal y ρ(MJ ) < 1,
.5 . 976 56 entonces el valor de w que optimiza la velocidad de con-
u3 = ⎝ . 25 ⎠ .... u8 = ⎝ . 976 56 ⎠ vergencia del método es:
. 625 . 988 28
2
wopt = p
1 + 1 − ρ(MJ )2

Problema 96 (2 puntos) ⎛ Calcular una⎞ base ortogonal


1 0 1 Como puede observarse de la expresión anterior, el
de autovectores de la matriz ⎝ 0 2 0 ⎠ valor de wopt se encuentra siempre entre 1 y 2.
1 0 1 Demostración [La-Th]. Pg.358-362.

Ejemplo 20 Vamos aplicar el método de relajación al sis-


Problema 97 (2 puntos) Calcular 3 iteraciones del
tema del ejemplo anterior, es decir
método de Gauss-Seidel para resolver el sistema
⎛ ⎞⎛ ⎞ ⎛ ⎞
1 −1 0 x −1 2x − y = 1
⎝ −1 2 0 ⎠ ⎝ y ⎠ = ⎝ 3 ⎠
0 −1 3 z 1 −x + 2y − z = 0
−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
Problema 98 (1 punto) Una variante del método de consisten en
−1
Gauss-Seidel consiste en tomar M = (D + U ) (−L), y 1 + yn−1
c = (D + U )−1 b. Indicar, en este caso, qué diferencias de xn = w + (1 − w)xn−1
2
implementación habría con respecto al caso anterior. xn + zn−1
yn = w + (1 − w)yn−1
2
1 + yn
Método de relajación zn = w + (1 − w)zn−1
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
−1
Mw = (D + wL) ((1 − w)D − wU ) ⎛ ⎞ ⎛ ⎞ ⎛ ⎞
−1 . 585 . 686 . 999
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
estado de la solución en la etapa anterior, de la forma
siguiente: Problema 99 (2 puntos) Calcular 3 iteraciones del
método de relajación para resolver el sistema
−a12 un−1 − ... − a1N un−1 + b1 ⎛ ⎞⎛ ⎞ ⎛ ⎞
un1 = w 2 N
+ (1 − w)un−1
1 1 −1 0 x −1
a11
n−1
⎝ −1 2 0 ⎠ ⎝ y ⎠ = ⎝ 3 ⎠
n
−a21 u1 ... − a2N uN + b2
un2 = w + (1 − w)un−1
2
0 −1 3 z 1
a22
. partiendo de u1 = (0, 0, 0). Calcular previamente el
−aN1 un1 ... − aN N −1 unN −1 + bN parámetro de relajación óptimo.
unN = w + (1 − w)un−1
N
aN N
La elección del parámetro w es, en general, un prob- Convergencia de los métodos iterativos.
lema difícil. Sin embargo, en el caso de matrices tridiag- Vamos a denotar por en = un − u el error relativo entre
onales, es decir, matrices con todos los elementos nulos la solución del sistema u y la aproximación en la etapa n,
salvo la diagonal principal y sus codiagonales, el siguiente un .
resultado muestra la forma de calcular el valor óptimo de
w. Teorema 29 Se considera el esquema iterativo un =
M un−1 + c. Entonces
en = M n−1 e1

39
Demostración: La solución del sistema satisface que u = valor absoluto, se tiene, por las condiciones del teorema,
M u + c. Restando esta igualdad de la igualdad un = que kMJ k < 1 para la norma 1 o infinito. Por tanto,
M un−1 + c, obtenemos que el teorema se concluye teniendo en cuenta que cualquier
norma de una matriz es siempre mayor o igual que su radio
un − u = M (un−1 − u) = M n−1 (u1 − u) espectral.
Este resultado se puede generalizar un poco al caso
¥ 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
trices D +Lw y (1−w)D −wU son matrices triangulares y, X
| 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 X
nante del producto de dos matrices es el producto de sus
| 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
|Mw | = = Demostración. [La-The] Pg.346-347.
|(D + wL)| Πi aii
Por lo tanto, como el determinante de una matriz es
Ejemplo 21 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
X satisface las hipótesis del Teorema anterior.
| aii |> | aij | ∀i.
j6=i
Problema 100 (2 puntos) Demostrar que, si una ma-
o X triz A verifica que por filas o columnas su suma es siempre
| ajj |> | aij | ∀j.
igual a 0, entonces el determinante de A es cero, y por
i6=j
tanto el sistema asociado a A no tiene solución.
entonces el método de Jacobi asociado al sistema Au = b
converge para cualquier aproximación inicial.

Demostración: En primer lugar, observamos que la ma- Problema 101 (3 puntos) Dado un sistema iterativo
triz MJ puede expresarse como:
⎛ ⎞ un = M un−1 + c
0 − aa12
11
− aa13
11
. − aa1N
11
⎜ − aa21 0 − aa23 . − aa2N ⎟ Demostrar que, aunque el radio espectral de M sea
⎜ ⎟
⎜ .
22
. .
22
. .
22
⎟ mayor que 1, si u1 y c son combinaciones lineales de au-
⎜ ⎟
⎜ − aN −1,1 aN −1,2 aN−1,N ⎟ tovectores de M correspondientes a autovalores de módulo
⎝ aN −1,N−1 − aN −1,N −1 . 0 − aN−1,N −1 ⎠
aN,1 aN,2 aN,N −1 menor que 1, entonces el método converge.
− aN,N − aN,N . − aN,N 0

Teniendo en cuenta que las normas 1 e infinito de una


matriz son el máximo de las sumas por filas o columnas en

40
Práctica 7 (Método de relajación). Precision long double
Ejemplo w No Iter Error
Desarrollar una función en C donde se implemente el
1 1 54 10−18
método de relajación. Los parámetros de la función serán:
1 1.2 25 10−18
la matriz A, el vector b, un vector u donde se almacenará
2 1 52 10−17
la solución, y que inicialmente será el vector aproximación
2 1.2 25 10−18
inicial, que por defecto se tomará 0, el parámetro de re-
lajación w, el número máximo de iteraciones N max, y 3 1 NO sol.
la tolerancia T OL para evaluar la diferencia entre un y 3 NO sol
un−1 . La función devolverá el número de iteraciones nece- M_10 1 822 10−16
sarias para alcanzar la solución. Si el método no converge M_10 1.7 106 10−16
devuelve −1. Comparar la diferencia en la velocidad de M_100 1 >N max −
convergencia entre el método de Gauss-Seidel y el Método M_100 1.95 1862 10−15
de relajación. Probar el método para los sistemas
Método de Newton-Raphson para sistemas de
⎛ ⎞⎛ ⎞ ⎛ ⎞
1 −1 0 x −1 ecuaciones no lineales
1. ⎝ −1 2 0 ⎠ ⎝ y ⎠ = ⎝ 3 ⎠
En las aplicaciones reales, muchas veces nos encontramos
0 −1 3 z 1
con sistemas no lineales de ecuaciones. Por ejemplo, cal-
⎛ ⎞⎛ ⎞ ⎛ ⎞ cular las raíces, reales o complejas, de un polinomio de
2 −1 0 x 1 grado 2 dado por P2 (z) = az 2 + bz + c, donde z = x + yi,
2. ⎝ −1 2 −1 ⎠ ⎝ y ⎠ = ⎝ 0 ⎠ es equivalente a resolver el sistema
0 −1 2 z 1
ax2 + bx − ay 2 + c = 0
⎛ ⎞⎛ ⎞ ⎛ ⎞
1 3 3 x 7 2ayx + by = 0
3. ⎝ 3 1 3 ⎠ ⎝ y ⎠ = ⎝ 7 ⎠
3 3 1 z 7 que es un sistema no lineal de ecuaciones. En general, un
sistema no lineal de ecuaciones de dimensión N, se escribe
4. Los sistemas de matrices de dimensión 10 y 100. como N ecuaciones del tipo

f1 (u1 , ...., uN ) = 0
Para las pruebas tomaremos N max = 10000 y
T OL = 103 u donde u es la unidad de redondeo. Los re- f2 (u1 , ...., uN ) = 0
sultados que se deben obtener son los siguientes .
fN (u1 , ...., uN ) = 0
Precision float
Ejemplo w No Iter Error
donde f (u) = (f1 (u), f2 (u), ..., fN (u)) es una función de
1 1 14 10−5
<N → <N , y u = (u1 , ...., uN ). El método de Newton-
1 1.2 8 10−6
Raphson para sistemas de ecuaciones se basa en desarrollar
2 1 12 10−5
por Taylor la función f y truncar el desarrollo para que
2 1.25 8 10−5 quede un sistema lineal, es decir
3 1 NO sol.
¡ ¢ ¡ ¢
3 NO sol f (u) = f (u0 ) + ∇f (u0 ) u − u0 + O k u − u0 k2
M_10 1 139 10−4
M_10 1.7 36 10−4 donde u0 es una aproximación de la solución de f (u) = 0.
M_100 1 3322 10−3 Si truncamos el desarrollo e igualamos a 0 (para aproximar
M_100 1.95 293 10−3 la raíz) obtenemos que la raíz del sistema lineal se obtiene
resolviendo el sistema
Precision double
∇f (u0 )z = −f (u0 )
Ejemplo w No Iter Error
1 1 43 10−14 u1 = u0 + z
1 1.2 20 10−15
En el caso general, a partir de una aproximación un
2 1 41 10−14
se obtiene la aproximación un+1 en dos etapas:
2 1.2 20 10−15
3 1 NO sol. ∇f (un )z = −f (un )
3 NO sol
un+1 = un + z
M_10 1 634 10−13
M_10 1.7 83 10−13
M_100 1 >N max −
M_100 1.95 1431 10−12

41
Ejemplo 22 Consideremos el siguiente sistema no lineal A partir de u1 = (1, 1), calcular u2 y u3 utilizando el
de ecuaciones: método de Newton-Raphson para aproximar un cero del
sistema no lineal.
x2 − y 2 + 1 = 0
2xy = 0 Problema 105 (2 puntos) Calcular una iteración del
método de Newton-Raphson no lineal para aproximar una
La matriz gradiente de esta función viene dada por
raíz del sistema de ecuaciones
µ ¶
2x −2y exyz − 1 = 0
∇f (un ) =
2y 2x
y − z3 − 2 = 0
2

Tomemos como aproximación inicial u1 = (1, 1). El sis- (z − 1)x4 − 3 = 0


tema que hay que resolver para pasar de una iteración a
partiendo de (x, y, z) = (1, 1, 1).
otra es
µ ¶µ ¶ µ 2 ¶
2xn −2yn z1 xn − yn2 + 1
=− INTERPOLACIÓN DE FUNCIONES II
2yn 2xn z2 2yn xn

Si partimos de u1 = (1, 1), para obtener u2 tenemos que Esta sección es la continuación natural del tema interpo-
resolver µ ¶µ ¶ µ ¶ lación de funciones visto anteriormente. Por motivos de
2 −2 z1 −1 coordinación entre los programas teórico y práctico de la
=
2 2 z2 −2 asignatura, el tema de interpolación de funciones se dividió
¡ 3 1¢ en dos partes, siendo ésta la segunda parte.
que tiene por solución − 4 , − 4 . Por tanto, u2 viene dado
por µ ¶ µ 3 ¶ µ 1 ¶
2 1 −4
u = + = 4 Interpolación de Hermite.
1 − 14 3
4
En ocasiones, resulta de interés interpolar no sólo el valor
Para calcular u3 , tenemos que resolver el sistema
de la función en ciertos puntos {xi }i=0,..,N , sino también
µ 1 ¶µ ¶ µ ¡ ¢2 ¡ ¢2 ¶
− 32 z1 1
− 34 + 1 el valor de sus derivadas. Un ejemplo clásico de ello es
2 = − 4
3 1
z2 6 el desarrollo de Taylor de una función en un punto a. En
2 2 16
¡ ¢ este caso, aproximamos f (x) por un polinomio de grado N ,
cuya solución es − 13 9 3
40 , − 40 . Por tanto, u viene dado por
PN (x) tal que f (x) y PN (x) poseen las mismas derivadas
µ 1 ¶ µ 13 ¶ µ ¶ en el punto a desde el orden 0 hasta el orden N.
3
− 40 − 40
u3 = 4
3 + 9 = 39
4 40 40 f 0 (a) f N ) (a)
PN (x) = f (a) + (x − a) + .. + (x − a)N
que ya es una buena aproximación de la solución exacta 1! N!
dada por el vector (0, 1). El error de interpolación viene dado por la fórmula

f N +1) (ξ)
Problema 102 (2 puntos) Calcular 2 iteraciones del f (x) − PN (x) = (x − a)N +1
(N + 1)!
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
x2 + y 2 − 1 = 0 todas sus derivadas hasta un cierto orden M coincidan con
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
partiendo de (x, y) = (1, 1). polinomios de grado menor o igual que (N + 1)(M + 1) − 1
dados por las siguientes condiciones:
½
Problema 103 (2 puntos) Plantear el algoritmo nece- ∂ l Hi,j 1 si l = j y k = i
(xk ) =
sario para calcular, utilizando el método de Newton- ∂xl 0 l 6= j o k 6= i
Raphson, las raíces complejas o reales de un polinomio de A partir de los polinomios base de Hermite, el poli-
grado 3. nomio interpolador de Hermite se define como:
N X
X M
∂j f
P (x) = (xi )Hi,j (x)
∂xj
Problema 104 (2 puntos) Se considera el sistema no i=0 j=0
lineal Problema 106 (3 puntos) Calcular los polinomios base
de Hermite que corresponden a tomar como puntos de in-
(x − 1)y = 0
terpolación x0 = −1, x1 = 1, y el orden de derivación
(y − 2)x = 0 M = 1.

42
Interpolación por splines cúbicos. Por razones técnicas, como veremos posteriormente,
vamos a utilizar también los valores aN y cN .
Uno de los problemas básicos del polinomio interpolador
de Lagrange, es que, para valores grandes de N, los poli-
nomios de grado N pueden tener un carácter fuertemente Teorema 34 Si una familia de polinomios P3i (x) = di (x−
oscilante, y los resultados obtenidos por la interpolación xi )3 + ci (x − xi )2 + bi (x − xi ) + ai , i = 0, .., N, satisface
pueden no ser muy satisfactorios, como indica el ejemplo las condiciones anteriores, entonces
siguiente.
ai = f (xi ) i = 0, .., N
Ejemplo 23 El polinomio base de Lagrange centrado en ci+1 − ci
di = i = 0, .., N − 1
0 sobre los puntos xi = −5, −4, −3, −2, −1, 0, 1, 2, 3, 4, 5 es 3hi
ai+1 − ai hi (2ci + ci+1 )
(x2 − 1)(x2 − 4)(x2 − 9)(x2 − 16)(x2 − 25) bi = − i = 0, .., N − 1
P 0 (x) = hi 3
−14400
3(ai+1 − ai ) 3 (ai − ai−1 )
Tiene un marcado carácter oscilante como muestra su hi−1 ci−1 +2(hi−1 +hi )ci +hi ci+1 = −
gráfica en el intervalo [−5, 5]. hi hi−1
para i = 1, .., N − 1.
Ejemplo 24
Demostración De la condición P3i (xi ) = f (xi ), se ob-
(x2 − 1)(x2 − 4)(x2 − 9)(x2 − 16)(x2 − 25) tiene de forma inmediata que ai = f (xi ). De la condición
=
−14400 ∂ 2 P3i+1 ∂ 2 P3i
∂x2 (xi+1 ) = ∂x2 (xi+1 ), se obtiene que
2ci+1 = 6di hi + 2ci
6
y de donde, despejando, obtenemos que
ci+1 − ci
4 di =
3hi
De la Condición P3i (xi+1 ) = f (xi+1 ), se obtiene que
2
di h3i + ci h2i + bi hi + ai = ai+1
Despejando, obtenemos que
-5 -4 -3 -2 -1 1 2 3 4 5 ai+1 − ai
x bi = − di h2i − ci hi =
hi
ai+1 − ai hi (2ci + ci+1 )

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

43
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)
∂x
de donde salen las ecuaciones
Ejemplo 27 Por tanto, los polinomios son
0 a1 − a0 h0
f (a) = − (2c0 + c1 ) P0 (x) = −0.733x3 + 1.733x
h0 3
aN − aN−1 hN −1 P1 (x) = 1.667 (x − 1)3 − 2.2 (x − 1)2 − 0.467 (x − 1) + 1
f 0 (b) = − (2cN −1 + cN )
hN −1 3 P2 (x) = −0.933 (x − 2)3 + 2.8 (x − 2)2 + 0.133 (x − 2)
Por lo tanto, siguiendo con el resultado del teorema
anterior, para calcular los splines cúbicos es necesario, en
primer lugar, tomar ai = f (xi ). A continuación, se resuelve
un sistema de ecuaciones tridiagonal para el cálculo de los A continuación se muestra una gráfica con los 3 poli-
ci . Los bj y dj se calculan directamente a partir de las nomios concatenados en el intervalo [0, 3] :
relaciones mostradas en el teorema anterior.
Como puede observarse, por las condiciones sobre las
derivadas que hemos impuesto, no es posible distinguir ge-
Ejemplo 25 Vamos a calcular los polinomios interpo- ométricamente, al trazar la curva, cuales son los puntos de
ladores utilizando splines cúbicos al interpolar la función unión entre los tres polinomios. Es decir, parece, a simple
f (x) en los puntos x = 0, 1, 2, y 3, sabiendo que f (0) = 0, vista, el trazado de una única función. Veamos ahora grá-
f (1) = 1, f (2) = 0, f (3) = 2, tomando c0 = c3 = 0. En ficamente el perfil de la derivada de los polinomios P0 (x),
este caso hi = 1. Debemos definir 3 polinomios distintos P1 (x), y P2 (x).
que corresponden a los intervalos [0, 1], [1, 2], y [2, 3]. Los
términos ai vienen dados por
Ejemplo 28
⎛ ⎞ ⎛ ⎞ 3
a0 0 y
⎜ a1 ⎟ ⎜ 1 ⎟
⎜ ⎟ ⎜ ⎟
⎝ a2 ⎠ = ⎝ 0 ⎠ 2
a3 2
1

El sistema que debemos resolver para calcular los ci 0


1 2 3
es x
-1
µ ¶µ ¶ µ ¶
4 1 c1 −6
Ejemplo 26 =
1 4 c2 9 como puede observarse, tampoco sobre la derivada se apre-
cian los puntos de unión de los polinomios. Sin embargo,
cuya
µ solución
¶ µ es ¶ sobre la gráfica de la derivada segunda los puntos de unión
c1 −2.2
= . se detectan en los lugares donde encontramos un pico, tal
c2 2.8
y como se muestra en la gráfica de la derivada segunda
siguiente:
Los valores bi y di vienen dados por
−2.2 − 0
d0 = = −0.733
3
2.8 + 2.2
d1 = = 1.667
3
0. − 2.8
d2 = = −0.933
3

44
Ejemplo 29 Consideremos la función f (x), definida en
los puntos x = 0, 1, 2, y 3, tal que f (0) = 0, f (1) = 1,
y
f (2) = 0, f (3) = 2. La interpolación de esta función uti-
4
lizando la función seno cardinal viene dada por la función
sin(π (x − 1)) sin(π (x − 3))
2 fe(x) = +2
π(x − 1) π(x − 3)
0 cuya gráfica es
1 2 3
x
-2
2.0
y
-4
1.5

1.0
Problema 107 (3 puntos) Calcular los polinomios que
determinan la interpolación
¡ ¢ por splines cúbicos de la fun- 0.5
ción f (x) = sin π2 x para los puntos x = −1, 0, 1 y 2.
0.0
1 2 3
x
La interpolación a través de la función seno cardi-
nal.
Una base de funciones interpolantes muy utilizada en la
teoría de Fourier es la base formada a partir de la función Ejemplo 30 Vamos a comparar gráficamente el resultado
seno cardinal, definida por de interpolar la función del ejemplo anterior utilizando
la interpolación de Lagrange normal, la interpolación por
sin(x)
sin c(x) = splines cúbicos y la interpolación a través de la función
x
seno cardinal. El polinomio interpolador de Lagrange se
cuya gráfica es puede calcular fácilmente y da como resultado
5
P (x) = x − x(x − 1) + x(x − 1)(x − 2)
6
1.0
y En la siguiente figura se muestran juntas las gráficas
0.8 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.6
interpolación utilizando la función sin c(x) (línea a trozos).
0.4

0.2 2.0
y
1.5
-50 -40 -30 -20 -10 10 20 30 40 50
-0.2
x
1.0

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


sin c(0) = 1, y para cualquier entero i distinto de 0,
sin c(πi) = 0. Dada una función f (x), su función inter- 0.0
polante en los puntos xi = a · i para i = M, ..., N viene 1 2 3
x
dada por la función
N ¡ ¢
X sin(π xa − i )
fe(x) = f (xi ) ¡ ¢ Como puede observarse, la interpolación por splines
i=M
π xa − i cúbicos es la menos oscilante. Por otro lado, cuando el
número de puntos de interpolación aumenta, la diferencia
entre los diferentes tipos de interpolación también lo hace.

45
Problema 108 (2 puntos) Calcular la función que in- Vamos a calcular el polinomio trigonométrico inter-
terpola, utilizando la función sin c(x), la función f (x) = polante para N = 3. Los valores de ck son
sin(x) en los puntos x = −π, − π2 , 0, π2 , π. Rπ
−π
f (x)dx 1
c0 = =
2πR 2
π
La interpolación a través de polinomios −π
f (x)eix dx 1
c1 = c−1 = =
trigonométricos. Rπ 2π π
f (x)e2ix dx
La base de la transformada de Fourier discreta es la uti- c2 = c−2 = −π =0
lización de los polinomios trigonométricos dados por la ex- Rπ 2π
3ix
presión f (x)e dx 1
c3 = c−3 = −π =−
P k (x) = eikx 2π 3π
Dada una función f (x), definida en el intervalo Por tanto, el polinomio trigonométrico interpolador es
[−π, π], pretendemos aproximar f (x) como
N
X 1 2 2
f (x) ≈ ck eikx P3 (x) = + cos(x) − cos(3x)
2 π 3π
k=−N

donde ck son coeficientes, en general complejos. El sigu-


La siguiente gráfica muestra la aproximación entre
iente resultado determina la forma de calcular dichos coe-
f (x) y P3 (x):
ficientes ck :

Teorema 35 Los coeficientes ck que minimizan el error Ejemplo 32


cuadrático medio
y 1.0
Z π Ã N
X
!2
E(c−N , ..., cN ) = f (x) − ck eikx dx 0.8
−π k=−N
0.6
vienen dados por
0.4
Rπ −ikx
−π
f (x)e dx 0.2
ck =

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

Ejemplo 31 Consideremos la función Dado un conjunto de valores {(xi , yi )}i=1,..,N , la


½ aproximación mínimo cuadrática lineal consiste en buscar
1 si x ∈ [− π2 , π2 ] la recta y = ax + b, tal que la función de error cuadrático
f (x) =
0 si x ∈ / [− π2 , π2 ]
N
X 2
E(a, b) = (axi + b − yi )
i=1

sea mínima.

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

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.
[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..

47
APÉNDICE A: Resumen de los comandos de Intercambio entre modo comando y modo edición
LINUX/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 de
En este breve resumen seguiremos el siguiente esquema. la línea
En primer lugar, aparece el comando LINUX/UNIX. A O inserta una nueva línea, pasa a modo edición y
continuación, entre paréntesis, su equivalente en MS-DOS pone el cursor al principio de la nueva línea
(si 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 3 G 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 encuentra
>mv prog1.f practica1.f 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 cur-
salvaguardar la información de directorios y ficheros de sor 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 el
>du /users/p701 cursor
find busca un archivo de nombre f ile en el directorio dir 3yy copia en el buffer 3 líneas hacia abajo desde el
>find dir -name f ile -print 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 presente APÉNDICE C: Algunos fallos comunes en
en cualquier máquina que trabaje sobre LINUX/UNIX y Programación
no requiere ningún entorno gráfico. Puede ejecutarse en
dos modos. El modo comando (el que está por defecto
al entrar en vi), donde se ejecutan comandos, y el modo 1. Escribir números como 1/2 en precisión entera. Solu-
edición, que es donde se escribe normalmente el texto. ción: Añadir siempre el punto a la derecha del número

48
cuando quiero trabajar en precisión real. Es decir es-
cribir 1./2.
2. Modificar el parámetro de una función en el interior
de la función
3. No poner ningún comentario en los programas.
4. Anidar excesivamente los programas. Siempre hay
que buscar que el número de anidamientos sea mín-
imo.
5. No respetar los tipos en los pasos de parámetros de
las funciones.

49

Vous aimerez peut-être aussi