Documente Academic
Documente Profesional
Documente Cultură
y2
e
< 1. Por otro lado, si denimos las sucesiones S
n
y
a
n
de la siguiente forma: S
1
= 2
1
, a
n
= 1 y para n > 1
a
n
= 0 si S
n1
+
1
2
n
> y2
e
a
n
= 1 si S
n1
+
1
2
n
y2
e
S
n
=
n
X
k=1
a
k
2
k
entonces es claro que | S
n
y2
e
|
1
2
n
, y por tanto S
n
y2
e
lo que concluye la demostracin del teorema.
2
Ejemplo 1 Consideremos y = 10. 125, podemos expresar
este nmero como
10. 125 = 2
4
(
1
2
+
1
2
3
+
1
2
7
)
Es decir, e = 4, a
1
= a
3
= a
7
= 1, y el resto de los a
n
es 0. En este caso, el nmero de elementos a
n
distintos de
0 es un nmero nito, en general no ocurre as.
Evidentemente, cualquier nmero que tenga un
nmero nito de elementos a
n
distintos de 0 es un nmero
racional y, por tanto, los nmeros irracionales se represen-
tarn siempre con un nmero innito de elementos a
n
no
nulos. Sin embargo, como muestra el siguiente problema,
existen otros muchos nmeros adems de los irracionales,
que no se pueden representar con un nmero nito de ele-
mentos a
n
no nulos.
Problema 1 (2 puntos) Demostrar que al representar
el nmero real 0.1 como
0.1 = 2
e
X
n=1
a
n
2
n
el nmero de elementos no nulos a
n
es innito.
Problema 2 (2 puntos) Representar el nmero 0.0
703 125 como
0.0 703 125 = 2
e
X
n=1
a
n
2
n
Para denir una aritmtica de precisin nita de
nmero reales, lo que se hace habitualmente es discretizar
la frmula de representacin anterior, tomando un nmero
nito de valores posibles a
i
y un nmero nito de valores
para el exponente e. Como puede observarse, cada valor
a
i
viene representado por un bit. Adems, puesto que el
valor a
1
es siempre igual a 1, no es necesario almacenar su
valor en memoria al guardar un nmero real.
Por tanto, en una aritmtica de precisin nita, los
nmeros reales distintos de cero se representan como
e y = 2
e
t
X
n=1
a
n
2
n
donde e vara entre dos valores limites e
min
e e
max
. Al
valor t se le llama precisin de la aritmtica. A la secuencia
a
1
a
2
a
3
......a
t
, (donde a
i
{0, 1}) se le denomina mantisa.
Hay que hacer notar aqu que, dado que hemos impuesto
siempre que a
1
= 1, el nmero 0 debemos aadirlo a la
aritmtica, ya que 0 no se puede representar de la forma
anterior.
Problema 3 (1 punto) Calcular los valores positivos
mnimo y mximo que puede tomar un nmero real en
una aritmtica de precisin nita en funcin de t, e
min
y
e
max
.
Problema 4 (2 puntos) Calcular todos los nmeros
reales que se pueden construir tomando 5 bits de la forma
siguiente: 1 bit para el signo, 2 bits para la mantisa (es
decir t = 3, puesto que a
1
= 1 y slo se almacenan a
2
y a
3
) y 2 bits para el exponente e, tomando como rango
de e = 1, 0, 1, 2. Representar dichos nmeros sobre una
recta.
Es importante resaltar que los nmeros reales en una
aritmtica de precisin nita no estn equiespaciados, es
decir, los nmeros estn ms cercanos entre s cerca de 0,
y ms alejados al alejarnos de 0.
En 1985, la sociedad I.E.E.E. present una serie de
especicaciones estndares para la denicin de una arit-
mtica de precisin nita para los nmeros reales. En este
trabajo, se codica un nmero real en simple precisin uti-
lizando 32 bits de memoria, de los cuales 23 bits se utilizan
para la mantisa (es decir t = 24 puesto que a
1
= 1 no se
almacena), 1 bit se utiliza para el signo y 8 bits se utilizan
para el exponente e, lo cual da un rango de 2
8
= 256 val-
ores posibles para el exponente e. En este caso, se toma
e
min
= 125 y e
max
= 128. Como puede observarse, el
nmero total de exponentes posibles es 254, dos menos
que los 256 posibles, ello se hace as, porque se reservan
dos casos para tratar las denominadas excepciones, como
se ver ms adelante.
Por tanto, el valor mximo que puede tomar un
nmero real en esta aritmtica es
e y
max
= 2
128
24
X
n=1
1
2
n
= 3. 4 10
38
y el valor mnimo positivo es
e y
min
= 2
125
1
2
= 1. 18 10
38
Adems, el nmero de combinaciones posibles que
puede tener la mantisa es 2
24
1. 68 10
7
. Es decir,
la aritmtica tiene una precisin de 7 dgitos decimales.
Esta representacin equivale a normalizar el nmero bina-
rio colocando la coma detrs del primer 1, representar en
la mantisa la parte fraccionaria, puesto que la parte entera
es un 1 implcito, y el exponente en exceso 127, es decir,
sumando esta cantidad al exponente resultante de la nor-
malizacin, de forma que el rango que va desde 1 hasta
254 representa los exponentes que van desde 126 hasta
127 (se reservan los valores 0 y 255 para las excepciones).
Tambin se dene en este trabajo de I.E.E.E. un es-
tndar para una aritmtica en doble precisin. En este
caso, se utilizan 64 bits para almacenar un nmero real,
de los cuales 52 bits se utilizan para la mantisa (t = 53),
1 bit para el signo y 11 bits para el exponente, lo que da
lugar a 2
11
= 2048 posibilidades de eleccin de exponente
e. En este caso, se toma e
min
= 1021 y e
max
= 1024.
Por tanto, el valor mximo que puede tomar un
nmero real en esta aritmtica es
e y
max
= 2
1024
53
X
n=1
1
2
n
= 1. 78 10
308
3
y el valor mnimo positivo es
e y
min
= 2
1021
1
2
= 2. 23 10
308
Adems, el nmero de combinaciones posibles que
puede tener la mantisa es 2
53
9. 0 10
15
. Es decir, la
aritmtica tiene una precisin de 15 dgitos decimales.
Evidentemente, estos estndares no se siguen al pie
de la letra por los diferentes fabricantes de ordenadores.
As, aunque existe bastante homogeneidad en este sentido,
los valores pueden cambiar ligeramente de una mquina a
otra. Por otro lado, aunque en la mayora de los orde-
nadores actuales la base de representacin de los nmeros
es 2, todava pueden encontrarse algunos sistemas donde
la base es 10 16. Nosotros no entraremos aqu a estudiar
este tipo de bases. El estudio es bsicamente el mismo,
adaptndolo a la base de representacin.
Tratamiento de las excepciones en el estndar de
I.E.E.E.
Denominaremos excepciones a las expresiones que no se
pueden expresar en una aritmtica usual, como son el 0,
el innito, operaciones no vlidas (como
1), etc. Estas
excepciones son tratadas en el estndar de I.E.E.E. de la
siguiente forma: dentro de las posiciones de memoria ded-
icadas al exponente e de un nmero, se reservan dos, que
corresponden a e
min
1 y e
max
+1, para trabajar con con
las excepciones. La regla que se utiliza es la siguiente:
1. Si el valor de una variable y tiene por exponente
e
max
+ 1 y todos los coecientes de la mantisa valen
0, entonces y se considera innito. Por ejemplo 1/0
debe dar innito.
2. Si el valor de una variable y tiene por exponente
e
max
+ 1 y algn coeciente de la mantisa es distinto
de 0, entonces y se considera que no es un nmero
(NaN (Not a Number)). Por ejemplo
1 debe dar
NaN.
3. Si el valor de una variable y tiene por exponente
e
min
1 y todos los coecientes de la mantisa valen 0,
entonces y se considera igual a 0.
4. Si el valor de una variable y tiene por exponente e
min
1
2
1
2
10
.
Problema 7 (2 puntos) Sean A =
2
1
2
+
1
2
3
+
1
2
5
B = 2
3
1
2
+
1
2
6
+
1
2
7
. Calcular
B +A y B A
Problema 8 (2 puntos) Sean e
min
, e
max
, los valores
mnimo y mximo del exponente e. Demostrar que si
e
min
< e < e
max
, entonces los nmeros:
2
e
t
X
n=1
a
n
2
n
1
2
t
!
pertenecen al conjunto A de nmeros reales generados por
la aritmtica de precisin nita.
5
A continuacin, mostraremos un resultado que indica
el error de redondeo mximo que se produce al aproximar
un nmero real cualquiera en una aritmtica de precisin
nita.
Teorema 2 Sean e y
min
, e y
max
los valores positivos menor
y mayor de una aritmtica de precisin nita. Sea u la
unidad de redondeo de dicha aritmtica. Si un nmero
real z verica que e y
min
<| z |< e y
max
, entonces
| z e z || z | u
donde e z es el nmero ms cercano a z en la aritmtica.
Demostracin. Un nmero real cualquiera z, que
tomaremos positivo sin prdida de generalidad, se puede
expresar como
z = 2
e
X
n=1
a
n
2
n
donde a
0
= 1 y, en general, a
n
= 0 o a
n
= 1. Adems,
para un nmero natural t cualquiera tenemos que
2
e
t
X
n=1
a
n
2
n
z 2
e
t
X
n=1
a
n
2
n
+
1
2
t
!
Por el problema anterior, el nmero que est a la
derecha de la desigualdad tambin pertenece a la arit-
mtica de precisin nita, y por tanto
| z e z |
2
e
2
t
2
Ahora bien, como a
0
= 1, se tiene que 2
e
< 2 | z | y,
por tanto
| z e z || z | 2
t
=| z | u
con lo que queda demostrado el teorema.
Problema 9 (2 puntos) Dado un nmero e z =
2
e
P
t
n=1
a
n
2
n
, en una aritmtica de precisin nita. Cal-
cular el nmero inmediatamente inferior a l en dicha ar-
itmtica.
Un resultado importante para la comparacin de dos
nmeros es el siguiente:
Teorema 3 Si e z
1
, e z
2
A son distintos entonces
| e z
1
e z
2
| max {| e z
1
|, | e z
2
|} u
Demostracin: Ejercicio
En muchos algoritmos, el test de parada incluye el
hecho de que dos variables estn prximas entre s. para
ello se ja un umbral o tolerancia TOL que por supuesto
ser mayor que la unidad de redondeo u y expresaremos
que las variables A y B estn cercanas entre s con una
tolerancia TOL si se cumple que
| AB | max {| A |, | B |} TOL
Este criterio es simtrico en el sentido de que trata de
igual modo los nmeros A y B. Tambin se puede utilizar
un criterio ms simple, como
| AB || A | TOL
pero en este caso le estamos dando una signicacin espe-
cial a A con respecto a B.
Estos criterios de comparacin de nmeros funcionan
bien salvo cuando los nmeros A y B estn muy prximos
a 0. Por ejemplo, si B = 0, los criterios anteriores quedan
| A || A | TOL
lo cual es imposible (si TOL < 1), salvo que A tambin
sea 0. Para evitar este comportamiento, se puede aadir
al criterio un valor > 0 de la siguiente forma:
| AB | (max {| A |, | B |} +) TOL
Programa 4 Programa en Fortran 77 que determina si
dos variables A, B son iguales con una tolerancia TOL
(tomando el mximo de A, B), con = 10
10
READ *,A,B,TOL
IF(IGUAL(A,B,TOL).EQ.0) THEN
PRINT *,A=B segun la tolerancia TOL
STOP
ELSE
PRINT *,A distinto de B segun la tolerancia
TOL
STOP
ENDIF
END
FUNCTION IGUAL(A,B,TOL)
IF(ABS(A).GT.ABS(B)) THEN
IF(ABS(A-B).LE.(TOL*(ABS(A)+10.**(-
10.))) THEN
IGUAL=0
RETURN
ELSE
IGUAL=1
RETURN
ENDIF
ELSE
IF(ABS(A-B).LE.(TOL*(ABS(B)+10.**(-
10.))) THEN
IGUAL=0
RETURN
ELSE
IGUAL=1
6
RETURN
ENDIF
ENDIF
END
Asociado a cualquier aritmtica de precisin nita de
nmeros reales, existen 4 operaciones bsicas, que son la
suma, la resta, la multiplicacin y la divisin de nmeros
reales dentro de la aritmtica. Nosotros no vamos a entrar
en este curso en cmo se pueden denir algortmicamente
estas operaciones. Solamente queremos mencionar que, a
menudo, para minimizar el efecto de los redondeos en las
operaciones, antes de realizarlas se aumenta la precisin
de los nmeros reales (por ejemplo pasando de simple pre-
cisin a doble precisin) para, a continuacin, realizar la
operacin en una aritmtica de mayor precisin y, nal-
mente, el resultado se redondea para pasarlo a la precisin
inicial.
Fuentes de errores numricos
Dentro de las posibles fuentes de errores numricos,
destacaremos 3 tipos:
Errores de redondeo. Son los que se producen al re-
dondear un nmero real para poder expresarlo en una
aritmtica de precisin nita. Como vimos en la sec-
cin anterior, este error est controlado por la denominada
unidad de redondeo, u = 2
t
, de tal forma que, al tomar
un nmero real z y aproximarlo en la aritmtica por el
valor e z A ms prximo, el error de redondeo tiene la
expresin:
| z e z || z | u
Errores de cambio de base. Este tipo de errores se
produce al realizar un cambio de base para representar un
nmero real. Como vimos en la seccin anterior, las arit-
mticas estndares de ordenador trabajan en base 2. Sin
embargo, los humanos pensamos y razonamos en trminos
de nmeros en base 10. Por ejemplo, nmeros tan naturales
para nosotros como 0.1 no pueden representarse de forma
exacta en una aritmtica en base 2. Esto quiere decir que,
al representar 0.1 el ordenador, va a producir un pequeo
redondeo, y este pequeo error de redondeo se puede ir pro-
pagando hasta producir errores apreciables. Por ejemplo,
parece razonable pensar que, cuando sumamos 100 veces
el nmero 0.01, el resultado sea exactamente 1, pero, no
es as. Sin embargo, si sumamos 128 = 2
7
veces el nmero
2
7
, el resultado s es exactamente 1. Este resultado se
pone de maniesto en el siguiente programa Fortran:
Programa 5 Programa en Fortran 77 para comprobar la
diferencia entre trabajar en base 10 y trabajar en base 2.
A=2**(-7.)
B=0
C=0.01
D=0
DO 1 K=1,2**7
B=B+A
1 CONTINUE
DO 2 K=1,100
D=D+C
2 CONTINUE
PRINT *,(1-B)*(10**10)
PRINT *,(1-D)*(10**10)
END
Adems, este programa permite identicar la base de
la aritmtica con la que trabaja el ordenador.
Como conclusin de este apartado, podemos extraer
que, para ser ms precisos numricamente, cuando tra-
bajamos con nmeros ms pequeos que la unidad de-
beramos pensar en trminos de 2
m
en lugar de 10
m
,
que es como solemos hacerlo.
Errores por Cancelacin. Estos errores se producen al
restar nmeros de aproximadamente la misma magnitud.
Hay que tener en cuenta que, al realizar operaciones sobre
una variable, los errores de redondeo se van acumulando
en la parte menos signicativa del nmero (los dgitos de
menos valor), dejando relativamente intacta la parte ms
signicativa del nmero, que corresponde a los dgitos de
mayor valor. Por ello, al restar dos nmeros de magnitud
parecida, se cancelan las partes signicativas, quedando la
aportacin de los dgitos de menos valor, que es donde ms
error hay. Por ejemplo, en el programa Fortran anterior,
se ha utilizado este fenmeno de cancelacin para poner de
maniesto la diferencia entre trabajar con bases distintas.
En los algoritmos, muchas veces se intenta evitar la posi-
bilidad de restar 2 nmeros que pudieran ser de magnitud
parecida. Por ejemplo, en la conocida frmula del clculo
de races de un polinomio de grado 2, ax
2
+ bx + c = 0
(con a 6= 0)
x =
b
b
2
4ac
2a
una forma de evitar la cancelacin que se produce cuando
b
b
2
4ac consiste en calcular primero la raz de
mayor valor absoluto, es decir
x
1
=
b +sign(b)
b
2
4ac
2a
y despus la segunda raz x
2
utilizando la relacin x
1
x
2
=
c
a
.
Por lo tanto, en los algoritmos, se deber evitar, en la
medida de lo posible, la resta de variables que tengan una
magnitud cercana.
Problema 10 (1 punto) Calcular las races del poli-
nomio P(x) = x
2
2x + 0.01 evitando los errores de
cancelacin.
7
Problema 11 (3 puntos) Escribir el cdigo en Fortran
77 para implementar el clculo de las races de ax
2
+bx+
c = 0 evitando los errores de cancelacin y teniendo en
cuenta las diferentes opciones que aparecen cuando a 6= 0
y a = 0.
CLCULO DE LOS CEROS DE UNA
FUNCIN
En esta seccin vamos a estudiar algunos mtodos para
calcular los ceros de una funcin de una variable, f(x),
esto es, los valores de x para los cuales f(x) = 0.
Mtodo de la biseccin
Se considera un intervalo [a, b] donde la funcin f(x) cam-
bia de signo, es decir f(a)f(b) < 0. El mtodo consiste en
ir dividiendo el intervalo [a, b] por la mitad de la siguiente
forma:
Se toma el punto medio
a+b
2
. Si f(
a+b
2
) = 0 ya
hemos encontrado la raz x =
a+b
2
. En caso contrario,
si f(
a+b
2
) f(b) < 0 entonces hacemos a =
a+b
2
y volvemos
a subdividir el nuevo intervalo [a, b]. Si, por el contrario,
f(a) f(
a+b
2
) < 0, entonces hacemos b =
a+b
2
y volvemos
a empezar. Las sucesivas subdivisiones del intervalo [a, b]
van aproximando la raz.
Problema 12 (2 puntos) Calcular 2 iteraciones del al-
goritmo de la biseccin para buscar un cero de la funcin
f(x) = x
2
2 en el intervalo [2, 0].
Problema 13 (3 puntos) Escribir el cdigo en Fortran
77 para implementar el mtodo de la biseccin
Mtodo de la Regula-falsi (regla de lo falso)
Este mtodo es una variacin del anterior en el sentido
siguiente: En lugar de tomar el punto medio
a+b
2
del in-
tervalo, se considera el punto de interseccin de la recta
que pasa por los puntos (a, f(a)) y (b, f(b)) con el eje x.
Es decir, en el razonamiento anterior, se sustituye el valor
x
m
=
a+b
2
por el valor
x
m
= a
b a
f(b) f(a)
f(a)
Problema 14 (2 puntos) Calcular 2 iteraciones del al-
goritmo de la regula-falsi para buscar un cero de la funcin
f(x) = x
2
2 en el intervalo [0, 2].
Problema 15 (3 puntos) Escribir el cdigo en Fortran
77 para implementar el mtodo de la Regula-falsi.
Mtodo de Newton-Raphson
ste es, sin duda, uno de los mtodos ms importantes y
tiles para el clculo de races. Dada una aproximacin
inicial de la raz x
0
, se busca, a partir de x
0
, una aprox-
imacin mejor x
1
de la raz, de la siguiente forma: Se
sustituye la funcin f(x) por el valor de su desarrollo de
Taylor centrado en x
0
hasta el orden 1, es decir
f(x) f(x
0
) +f
0
(x
0
)(x x
0
)
que corresponde a un polinomio de grado 1, y a contin-
uacin se calcula x
1
como el cero de este polinomio, es
decir:
x
1
= x
0
f(x
0
)
f
0
(x
0
)
y por tanto, de forma general, obtenemos, a partir de x
0
una secuencia x
n
de valores que van aproximando la raz,
denidos por
x
n+1
= x
n
f(x
n
)
f
0
(x
n
)
A continuacin veremos una aplicacin de este mtodo
para calcular la raz cuadrada de un nmero positivo A,
teniendo en cuenta que si x =
A, entonces f(x) = x
2
A = 0.
Programa 6 Programa en Fortran 77 para calcular una
aproximacin de la raz cuadrada de un nmero positivo A
con una tolerancia TOL, y un nmero mximo de itera-
ciones N max .
READ *,A,TOL,Nmax
IF(A.LE.0) THEN
PRINT *,El numero A no es positivo
STOP
ENDIF
X0=(1+A)/2.
DO 1 K=1,Nmax
X1=X0-(X0*X0-A)/(2.*X0)
IF(IGUAL(X0,X1,TOL).EQ.0) THEN
PRINT *,LA RAIZ DE A ES,X0
STOP
ELSE
X0=X1
ENDIF
1 CONTINUE
PRINT *,No mximo de iterac. excedido
END
El mtodo de la Secante
Este mtodo es una variante del mtodo de Newton para
el caso en que no sea posible calcular la derivada de f(x)
8
de una forma analtica. En este caso, se sustituye el valor
f
0
(x
n
) en el algoritmo, por el valor
f(x
n
) f(x
n1
)
x
n
x
n1
que corresponde a una aproximacin de f
0
(x
n
). Para ini-
ciar el algoritmo, son necesarias dos aproximaciones ini-
ciales, x0 y x1.
Problema 16 (1 punto) Calcular una iteracin del
mtodo de Newton-Raphson para calcular un cero de la
funcin f(x) = x
3
3 partiendo de x
0
= 1.
Problema 17 (1 punto) Calcular una iteracin del
mtodo de la secante para calcular un cero de la funcin
f(x) = x
3
3 partiendo de x
0
= 0, x
1
= 1.
Problema 18 (3 puntos) Escribir un programa en For-
tran 77 que implemente el mtodo de la Secante utilizando
reales de doble precisin. Los datos de entrada son las
aproximaciones iniciales, x
0
y x
1
, el nmero mximo de
iteraciones, N max, y la tolerancia, TOL, para determinar
la igualdad de dos nmeros.
Mtodo de Mller
Este mtodo es de utilidad para calcular races comple-
jas de funciones, como por ejemplo polinomios. Es una
generalizacin del mtodo de Newton-Raphson, en el sen-
tido de que, en lugar de quedarnos con la parte lineal del
desarrollo de Taylor de la funcin, nos quedamos con los
trminos hasta el orden 2, de tal forma que hacemos
f(x) f(x
n1
)+f
0
(x
n1
)(xx
n1
)+
f
00
(x
n1
)
2
(xx
n1
)
2
donde x
n1
es una aproximacin de una raz compleja de
la funcin f(x). Para obtener una aproximacin x
n
mejor
de la raz calculamos los ceros del polinomio de segundo
grado anterior, es decir
x
n
= x
n1
+
f
0
(x
n1
)
q
(f
0
(x
n1
))
2
2f(x
n1
)f
00
(x
n1
)
f
00
(x
n1
)
De las dos posibles races, nos quedamos con aqulla
que sea ms cercana a x
n1
. Dicha raz ser la aproxi-
macin x
n
de la raz de f(x) en la etapa n. En el caso
en que f
00
(x
n1
) = 0, calculamos x
n
por el mtodo de
Newton-Raphson. En el caso en que no conozcamos
analticamente el valor de la primera y segunda derivada
de f(x), podemos utilizar las siguientes aproximaciones:
f
00
(x
n1
) 2
f(x
n2
)f(x
n3
)
x
n2
x
n3
f(x
n1
)f(x
n2
)
x
n1
x
n2
xn3xn1
f
0
(x
n1
)
f(x
n1
)f(x
n2
)
x
n1
x
n2
+
f
00
(x
n1
)
2
(x
n1
x
n2
)
Como veremos posteriormente, la eleccin de las fr-
mulas anteriores equivale a aproximar f(x) por la parbola
que pasa por los puntos (x
n3
, f(x
n3
)) , (x
n2
, f(x
n2
))
y (x
n1
, f(x
n1
)), y calcular posteriormente las derivadas
de dicha parbola.
Programa 7 Programa en Fortran 77 donde se muestra
un ejemplo de manejo de nmeros complejos.
IMPLICIT COMPLEX (C)
CX=(-1,0)
CY=CF(CX)
PRINT *,CY
END
FUNCTION CF(CX)
IMPLICIT COMPLEX(C)
CF=SQRT(CX)
END
Prctica 2 (Mtodo de Mller, 4 horas)
Implementar el mtodo de Mller. Crear un programa
en Fortran 77 que tenga como datos de entrada: las tres
primeras aproximaciones de la raz, x
0
, x
1
y x
2
, el nmero
mximo de iteraciones N max, y la tolerancia TOL, para
determinar la igualdad entre dos nmeros. La funcin a
la que se le calculan los ceros se dene en el propio cuerpo
del programa. Utilizar el mtodo para calcular los posibles
ceros de las siguientes funciones:
1. f(x) = x
2
+ 1
2. f(x) = (x
2
+ 1)x
3. f(x) = e
x
1
4. f(x) = x 2
5. f(x) = 1
Nota: Utilizar como tolerancia TOL = 0.0001 y N max =
100. Para el ejemplo 1 tomar como datos iniciales x
0
=
(3, 0), x
1
= (2, 0) x
2
= (1, 0). Para el ejemplo 2 tomar
como datos iniciales x
0
= (3, 0), x
1
= (2, 0), x
2
= (1, 0) y
x
0
= (1, 0), x
1
= (0.1, 0), x
2
= (0.01, 0). Para el ejemplo 3
tomar como datos iniciales x
0
= (3, 0), x
1
= (2, 0), x
2
=
(1, 0). Para el ejemplo 4 tomar como datos iniciales x
0
=
(3, 0), x
1
= (2, 0), x
2
= (1, 0). Para el ejemplo 5 tomar
como datos iniciales x
0
= (3, 0), x
1
= (2, 0), x
2
= (1, 0).
9
Clculo de las races de un polinomio
Los polinomios son un tipo particular de funciones que, por
su gran utilidad, requieren un anlisis algo ms detallado.
Nos ocuparemos slo de las races reales de los polinomios,
aunque tambin hay que indicar que existen algoritmos
verstiles para el clculo de las races complejas, como,
por ejemplo, el mtodo de Mller, visto anteriormente.
A menudo, los alumnos pueden tener la impresin de
que los algoritmos y tcnicas que se aprenden en una asig-
natura como anlisis numrico les sern de poca utilidad en
el futuro. Mi experiencia como docente en esta disciplina
es que, con frecuencia, una vez terminada la carrera y en
el desarrollo de la actividad profesional, aparecen proble-
mas que, para su resolucin, requieren el uso de alguna de
las tcnicas presentadas en esta asignatura. El siguiente
ejemplo es una buena prueba de ello.
Ejemplo 2 Actualmente estn muy de moda los planes de
pensiones. Las entidades nancieras venden a sus clientes
los planes de pensiones de la siguiente forma, por ejem-
plo: si usted aporta durante 30 aos 100.000 pesetas to-
dos los aos, aportacin que se va incrementando cada
ao en un 10%, es decir el primer ao 100.000, el se-
gundo ao 110.000, etc., entonces, le aseguramos que al
nal del trigsimo ao tendr a su disposicin la cantidad
de 26.000.000 de pesetas. Ahora bien, el dato ms im-
portante para el futuro pensionista (que a menudo oculta
la entidad nanciera) es el inters nominal anual que se
est aplicando ao tras ao al dinero depositado. Si lla-
mamos i al inters nominal anual que se aplica al dinero,
la ecuacin que debemos resolver para obtener i es
29
X
n=0
(100.000) (1.1)
n
(1. +i)
30n
= 26.000.000
Ahora bien, para calcular i, debemos calcular las
races del polinomio en i dado por
P(i) =
29
X
n=0
(100.000) (1.1)
n
(1. +i)
30n
26.000.000
El clculo de las races de este polinomio nos lleva
a i = 4.487%. Este ejemplo muestra como un problema
nanciero sencillo nos lleva a la necesidad de calcular los
ceros de un polinomio.
Algoritmo de Horner para evaluar un polinomio en un
punto
Dado un polinomio P(x) = a
n
x
n
+ a
n1
x
n1
+
...... + a
0
, ste se puede expresar tam-
bin de la forma siguiente: P(x) = a
0
+
x(a
1
+x(a
2
+x(a
3
+x(..... +x(a
n1
+xa
n
))))) .
Adems, si queremos utilizar un mtodo de clculo
de races como el de Newton-Raphson, necesitamos
evaluar tanto el polinomio como su derivada. El siguiente
resultado muestra una forma rpida y sencilla de evaluar
simultneamente un polinomio y su derivada.
Teorema 4 (Mtodo de Horner). Sea P(x) = a
n
x
n
+
a
n1
x
n1
+...... +a
0
, si denimos b
k
como
b
n
= a
n
b
k
= a
k
+b
k+1
x
0
entonces se verica que
P(x
0
) = b
0
P
0
(x
0
) = b
n
x
n1
0
+b
n1
x
n2
0
+........ +b
1
Demostracin Sea el polinomio Q(x) = b
n
x
n1
+
b
n1
x
n2
+..... +b
1
. Veamos que se verica que
P(x) = (x x
0
)Q(x) +b
0
Efectivamente, dado que a
k
= b
k
b
k+1
x
0
y a
n
= b
n
,
obtenemos la igualdad anterior teniendo en cuenta que
(x x
0
)Q(x) +b
0
=
b
n
x
n
+ (b
n1
b
n
x
0
)x
n
+..... + (b
0
b
1
x
0
)
Por ltimo, obtenemos
P
0
(x) = (x x
0
)Q
0
(x) +Q(x)
de donde sale obviamente que P
0
(x
0
) = Q(x
0
).
Este teorema permite calcular el polinomio y su
derivada en un punto de forma muy sencilla, como muestra
el siguiente programa Fortran.
Programa 8 El siguiente programa en Fortran 77 calcula
la evaluacin de un polinomio y su derivada en un punto
X, almacenndolos en las variables PX y PPX.
PARAMETER(NMAX=1000)
DIMENSION A(0:NMAX)
COMMON/POL/PX,PPX
PRINT *,Escribir Grado del Polinomio
READ *,N
IF(N.GT.NMAX) THEN
PRINT *, Grado Superior al Maximo
STOP
ENDIF
PRINT *,EscriBir Coef. Polin.
DO 1 K=0,N
1 READ *,A(K)
PRINT *,Escribir valor de X
READ *,X
CALL HORNER(N,A,X)
PRINT *,P(X)= ,PX
PRINT *,P (X)= ,PPX
END
1 0
SUBROUTINE HORNER(N,A,X)
DIMENSION A(0:*)
COMMON/POL/PX,PPX
PX=A(N)
PPX=A(N)
DO 1 K=N-1,1,-1
PX=PX*X+A(K)
PPX=PPX*X+PX
1 CONTINUE
PX=PX*X+A(0)
END
Nota: La declaracin
PARAMETER(NMAX = 1000)
permite denir constantes. La declaracin
DIMENSION A(0 : NMAX)
dene un vector A, de reales en precisin simple, de
tamao NMAX+1, y numerados desde 0 hasta NMAX.
La declaracin
COMMON/POL/PX, PPX
dene la zona de memoria denomina POL donde se en-
cuentran las variables globales PX, PPX. Para que una
subrutina pueda hacer uso de esas variables, debe incluir
en su inicio la misma sentencia COMMON.
Otros resultados interesantes de utilidad para lo-
calizar en qu zonas pueden estar las races del polinomio
son:
Teorema 5 Sea un polinomio P(x) = a
n
x
n
+a
n1
x
n1
+
...... + a
0
con a
n
6= 0, entonces las races reales de P(x)
estn en el intervalo
1
max
k=0,..,n1
| a
k
|
| a
n
|
, 1 +
max
k=0,..,n1
| a
k
|
| a
n
|
7x
2
+x+6, que tiene por raices x = 1, 3, 1, 2. Para este
polinomio, tenemos que P
max
= 8. Por tanto, las races
estn en el intervalo [8, 8]. Por otro lado su grca es
2.5 1.25 0 -1.25 -2.5
60
40
20
0
x
y
x
y
Polinomio P(x) = x
4
x
3
7x
2
+x + 6
La derivada de este polinomio es P
0
(x) = 4x
3
3x
2
N
j6=i
(x
i
x
j
)
estos polinomios base tienen la propiedad fundamental
siguiente
P
i
(x
j
) =
1 si i = j
0 si i 6= j
Por tanto, el polinomio interpolador de Lagrange
puede expresarse como
P
N
(x) =
N
X
i=0
f(x
i
)P
i
(x)
Ejemplo 5 Consideremos una funcin f(x) = e
x
, vamos
a interpolarla en los puntos x
0
= 0, x
1
= 1 y x
2
= 1.
Para calcular P
2
(x), el polinomio interpolador de Lagrange
en estos puntos, calcularamos los polinomios base:
P
0
(x) =
(x + 1)(x 1)
1
P
1
(x) =
x(x 1)
2
P
2
(x) =
x(x + 1)
2
siendo el polinomio interpolador:
P
2
(x) = e
0
(x + 1)(x 1)
1
+e
1
x(x 1)
2
+e
x(x + 1)
2
En la siguiente gura comparamos la grca del poli-
nomio P
2
(x) (trazo continuo) con la grca de la funcin
e
x
(trazo discontinuo)
1.5 1 0.5 0 -0.5 -1 -1.5
4
3
2
1
x
y
x
y
Problema 24 (2 puntos) Calcular el polinomio inter-
polador de Lagrange P
3
(x) de la funcin f(x) = sen(x) en
los puntos 0,
2
, y
3
2
.
Teorema 9 El polinomio interpolador de Lagrange es el
nico polinomio de grado igual o inferior a N tal que
P
N
(x
i
) = f(x
i
) i = 0, .., N
Demostracin Sea P(x) un polinomio de grado inferior o
igual a N que verique que P(x
i
) = f(x
i
) i = 0, .., N.
Entonces, el polinomio Q(x) = P(x) P
N
(x) es un poli-
nomio de grado inferior o igual a N que verica que
Q(x
i
) = 0 y, por tanto, posee N + 1 races, lo cual es
imposible, salvo que Q(x) sea identicamente igual a cero.
Por tanto Q(x) 0 y P(x) = P
N
(x).
1 4
Error de interpolacin de Lagrange y polinomios
de Chebychev
Evidentemente, al aproximar f(x) por el polinomio inter-
polador P
N
(x) en un intervalo [a, b] se comete, en general,
un error de interpolacin, que viene determinado por el
siguiente teorema.
Teorema 10 Sea f(x) una funcin, y P
N
(x) su polinomio
interpolador de Lagrange en los puntos {x
i
}
i=0,..,N
[a, b]
y x [a, b], entonces
f(x) P
N
(x) =
f
N+1)
()
(N + 1)!
N
i=0
(x x
i
)
donde es un valor intermedio perteneciente a [a, b].
Demostracin Si x = x
i
, el error de interpolacin es cero
y por tanto la frmula anterior es vlida. Consideremos
ahora x distinto a los x
i
y denamos
w(t) =
N
i=0
(t x
i
)
=
f(x) P
N
(x)
w(x)
(t) = f(t) P
N
(t) w(t)
La funcin (t) tiene al menos n+1 ceros en los pun-
tos x
i
y en el punto x. Por tanto, su funcin derivada
0
(t)
tiene al menos n ceros repartidos entre los ceros de (t).
Anlogamente,
00
(t) tiene al menos n1 ceros y as suce-
sivamente hasta llegar a
N+1
(t), que tiene al menos 1
cero. Si llamamos a dicho cero, obtenemos
N+1
() = f
N+1)
() (N + 1)!
de donde, despejando y sustituyendo por su valor, obten-
emos el resultado del Teorema.
Problema 25 (2 puntos) Calcular la expresin del er-
ror de interpolacin al aproximar la funcin f(x) = sen(x)
en el intervalo [0, 2] interpolando en los puntos 0,
2
, y
3
2
, y acotarlo superiormente.
La cuestin que vamos a abordar en este apartado es,
en el caso en que queramos interpolar una funcin en un
intervalo [a, b], y que nosotros podamos elegir los valores de
interpolacin x
i
, cmo elegirlos de tal forma que el error de
interpolacin sea mnimo. Para ello, elegiremos los puntos
x
i
tales que
N
i=0
(x x
i
) sea lo ms pequeo posible en
[a, b].
Teorema 11 Sea N 0, y un intervalo [a, b] Se consid-
eran los puntos x
i
dados por
x
i
= a +
b a
2
1 + cos
2i + 1
2N + 2
i = 0, ..., N
entonces
max
x[a,b]
|
N
i=0
(x x
i
) |=
b a
2
N+1
1
2
N
max
x[a,b]
|
N
j=0
(x e x
j
) |
para cualquier otra eleccin posible de valores de interpo-
lacin e x
j
.
Demostracin La demostracin para el intervalo [1, 1]
se encuentra en [Ki-Ch] Pg. 292-294. La demostracin
para un intervalo cualquiera [a, b] se obtiene fcilmente
transformando el intervalo [1, 1] en [a, b].
Por tanto, utilizando este resultado, el error de inter-
polacin mximo viene determinado por:
| f(x) P
N
(x) |
max
x[a,b]
f
N+1)
()
(N + 1)!2
N
b a
2
N+1
Ejemplo 6 Se considera [a, b] = [0, 1] y N = 5 (es decir
6 puntos de interpolacin). Los puntos de interpolacin
dados por el teorema anterior son:
x
0
= . 982 96
x
1
= . 853 55
x
2
= . 629 41
x
3
= . 370 59
x
4
= . 146 45
x
5
= 1. 703 7 10
2
Problema 26 (2 puntos) Calcular el error mximo de
interpolacin en el intervalo [0, 1] al interpolar la funcin
cos(x) en los puntos descritos en el ejemplo anterior.
En el caso de que [a, b] = [1, 1], los valores pti-
mos de interpolacin x
i
dados por la frmula anterior son
las races de los denominados polinomios de Chebychev,
T
N
(x), construidos de la manera siguiente:
T
0
(x) = 1
T
1
(x) = x
T
N
(x) = 2xT
N1
(x) T
N2
(x)
Mtodo de diferencias de Newton para el clculo
del polinomio interpolador de Lagrange
Numricamente, el clculo de P
N
(x) a travs de los poli-
nomios base necesita de la evaluacin de N +1 polinomios
de grado N. Adems, si queremos aadir un nuevo punto
de interpolacin, debemos cambiar todos los polinomios
base de Lagrange. Un mtodo ms directo para el cl-
culo de P
N
(x) es el denominado mtodo de diferencias de
1 5
Newton. El mtodo consiste en ir calculando progresiva-
mente los polinomios P
k
(x) que interpolan la funcin en
los puntos x
0
, ..., x
k
de la siguiente forma:
P
0
(x) = a
0
P
1
(x) = P
0
(x) +a
1
(x x
0
)
P
2
(x) = P
1
(x) +a
2
(x x
0
)(x x
1
)
...
P
N
(x) = P
N1
(x) +a
N
(x x
0
)(x x
1
)...(x x
N1
)
A los coecientes a
k
los denotamos por
a
k
= f[x
0
, ..., x
k
]
Ejemplo 7 Vamos a interpolar la funcin f(x) = e
x
en
los puntos x
0
= 0, x
1
= 1 y x
2
= 2.
P
0
(x) = 1
P
1
(x) = 1 +a
1
x
Como P
1
(1) debe ser igual a e, despejando obtenemos
a
1
= e 1
Por ltimo
P
2
(x) = P
1
(x) +a
2
x(x 1)
Como P
2
(2) debe ser igual a e
2
, despejando obten-
emos
a
2
=
e
2
P
1
(2)
2
Por tanto, el polinomio P
2
(x) lo expresamos como
P
2
(x) = 1 + (e 1)x +
e
2
2e + 1
2
x(x 1)
Como veremos en el teorema siguiente, los coecientes
f[x
0
, ..., x
k
], que se denominan diferencias divididas de
Newton, verican las siguientes propiedades:
f[x
i
] = f(x
i
)
f[x
i
, x
i+1
] =
f[x
i+1
] f[x
i
]
x
i+1
x
i
.
f[x
i
, .., x
i+k
] =
f[x
i+1
, .., x
i+k
] f[x
i
, .., x
i+k1
]
x
i+k
x
i
Teorema 12 Si denotamos por a
k
= f[x
0
, .., x
k
], en-
tonces el polinomio de interpolacin de Lagrange P
N
(x)
viene dado por
P
N
(x) =
N
X
k=0
a
k
k1
i=0
(x x
i
)
donde los coecientes f[x
i
, ..., x
k
] verican
f[x
i
, .., x
i+k
] =
f[x
i+1
, .., x
i+k
] f[x
i
, .., x
i+k1
]
x
i+k
x
i
Demostracin En primer lugar, observamos que
f[x
i
, ..., x
i+k
] indica, para cada P
k
(x), el coeciente que
acompaa a la potencia x
k
en el polinomio interpolador
P
k
(x) para los puntos x
i
, ..., x
i+k
. Como el polinomio in-
terpolador es nico, f[x
i
, ..., x
i+k
] no depende del orden en
que tomemos los puntos x
i
, ..., x
i+k
y, por tanto:
f[x
i
, ....., x
i+k
] = f[x
i+k
, ....., x
i
]
Consideremos ahora el polinomio interpolador Q
k
(x)
que interpola en los puntos x
i+k
, ..., x
i
, es decir, cambiando
el orden de los puntos. Q
k
(x) se puede escribir como
Q
k
(x) = b
0
+b
1
(xx
i+k
) +b
2
(x x
k+i
)(x x
k+i1
) +...
donde
b
j
= f[x
i+k
, .., x
i+kj
]
Por la unicidad del polinomio interpolador obtenemos
que P
k
(x) = Q
k
(x) y, por tanto
a
k
= f[x
i
, ....., x
i+k
] = f[x
i+k
, ....., x
i
] = b
k
De nuevo, por la unicidad del polinomio interpolador,
los coecientes que acompaan a la potencia x
k1
en am-
bos polinomios coinciden y, por tanto:
a
k1
a
k
k1
X
j=0
x
i+j
= b
k1
b
k
k
X
j=1
x
i+j
Despejando obtenemos
a
k
=
b
k1
a
k1
x
k+i
x
i
Finalmente obtenemos el resultado del teorema, te-
niendo en cuenta que
a
k1
= f[x
i
, ...., x
i+k1
]
b
k1
= f[x
i+k
...., x
i+1
] = f[x
i+1
...., x
i+k
]
Ejemplo 8 Sea f(x) = e
x
, si interpolamos f(x) en los
puntos x
0
= 0, x
1
= 1, x
2
= 2, x
3
= 3, obtenemos el
polinomio interpolador de la siguiente forma:
f[0, 1] = e
1
1
f[1, 2] = e
2
e
1
f[2, 3] = e
3
e
2
f[0, 1, 2] =
e
2
2e + 1
2
f[1, 2, 3] =
e
3
2e
2
+e
1
2
f[0, 1, 2, 3] =
e
3
3e
2
+ 3e
1
1
6
Por tanto el polinomio interpolador de Lagrange es:
P
3
(x) = 1 + (e 1) x +
e
2
2e + 1
2
x(x 1) +
e
3
3e
2
+ 3e
1
1
6
x(x 1)(x 2)
1 6
En la siguiente grca se muestra la diferencia e
x
P
3
(x) en el intervalo [0, 3] :
3 2.5 2 1.5 1 0.5 0
0.1
0.05
0
-0.05
-0.1
-0.15
-0.2
-0.25
x
y
x
y
Problema 27 (2 puntos) Interpolar la funcin f(x) =
10
x
2
+1
en los puntos x
0
= 2, x
1
= 1, x
2
= 1, x
3
= 2
utilizando las diferencias de Newton y evaluar el polinomio
en x = 0 utilizando el algoritmo de Horner.
Problema 28 (2 puntos) Calcular el polinomio inter-
polador de Lagrange P
3
(x) de la funcin f(x) = sen(x) en
los puntos 0,
2
, y
3
2
utilizando las diferencias divididas
de Newton.
Problema 29 (3 puntos) Calcular el polinomio inter-
polador de Lagrange P
3
(x) de la funcin f(x) = 2
x
en
los puntos 0, 1, 3 y 4 utilizando las diferencias divididas de
Newton. Expresar el polinomio tomando en primer lugar
x
0
= 0, x
1
= 1, x
2
= 3 y x
3
= 4 y, en segundo lugar,
x
0
= 4, x
1
= 3, x
2
= 1 y x
3
= 0.
Problema 30 (3 puntos) Dada una funcin f(x) y una
secuencia de valores x
n
, aproximar f(x) por la parbola
que pasa por los puntos (x
n1
, f(x
n1
)) , (x
n2
, f(x
n2
))
y (x
n3
, f(x
n3
)). Calcular posteriormente las derivadas
del polinomio y comprobar que coinciden con las frmu-
las dadas en el mtodo de Mller para el clculo de las
derivadas f
00
(x
n1
) y f
0
(x
n1
).
Programa 10 Programa en Fortran 77 donde se denen
las funciones IDIFNEWTON, que a partir del vector X(0 :
N) de puntos de interpolacin y el vector F(0 : N)
de valores de la funcin f(x) en los puntos de interpo-
lacin, devuelve el vector A(0 : N) de coecientes de
diferencias divididas que denen el polinomio de Lagrange
(A(K) = f[x
0
, x
1
, .., x
K
] ), y la funcin EVDIFNEW-
TON(A,X,X0,N) que a partir de los coecientes dados por
el vector A(0 : N) y el conjunto de puntos de interpo-
lacin, devuelve el valor de la evaluacin del polinomio de
Lagrange en el punto X0.
PARAMETER(Nmax=1000)
DIMENSION A(0:1000),F(0:1000),X(0:1000)
PRINT *,Introducir No. Ptos Interp.
READ *,N
N=N-1
PRINT *,Introducir Ptos Interpol.
DO 1 K=0,N
1 READ *, X(K)
PRINT *,Introducir Valores de F()
DO 2 K=0,N
2 READ *,F(K)
IF(IDIFNEWTON(A,X,F,N).EQ.1) THEN
PRINT *,Puntos de Interpolacion repetidos
STOP
ENDIF
PRINT *,Coef. Polinomio
DO 3 K=0,N
3 PRINT *,A(K)
PRINT *,Test de Comprobacion
DO 4 K=0,N
4 PRINT *,X(K),F(K),EVDIFNEWTON(A,X,X(K),N)
END
FUNCTION IDIFNEWTON(A,X,F,N)
Parameter(Nmax=1000)
DIMENSION A(0:*),X(0:*),F(0:*),B(0:Nmax)
DO 1 K=0,N
1 B(K)=F(K)
A(0)=F(0)
DO 2 K=1,N
DO 3 L=0,N-K
IF (X(K+L).EQ.X(L)) THEN
IDIFNEWTON=1
RETURN
ENDIF
B(L)=(B(L+1)-B(L))/(X(K+L)-X(L))
3 CONTINUE
A(K)=B(0)
2 CONTINUE
IDIFNEWTON=0
END
FUNCTION EVDIFNEWTON(A,X,X0,N)
DIMENSION A(0:*),X(0:*)
EVDIFNEWTON=A(N)
DO 1 K=N-1,0,-1
1 EVDIFNEWTON=EVDIFNEWTON*(X0-
X(K))+A(K)
END
1 7
Implementacin de funciones elementales
Una vez denida una aritmtica en precisin nita y las 4
operaciones bsicas (suma, resta, multiplicacin, divisin),
es necesario denir, a partir de estas operaciones, las fun-
ciones elementales que todos usamos, como son: la raz
cuadrada
1 + cos
2i + 1
2N + 2
i = 0, ..., N
obtenemos que el error relativo verica que:
| e
x
0
P
N
(x) |
e
x
0
e
(N + 1)!2
N
1
2
N+1
Para N = 6, el error relativo es menor que 6.6 10
8
y, por tanto, del mismo orden que la unidad de redondeo
u en una aritmtica de 32 bits. Asi, tomando un poli-
nomio de grado N = 6, es decir 7 puntos de interpolacin,
obtenemos ya la mejor aproximacin posible de e
x
en el
intervalo [0, 1] en una aritmtica de 32 bits.
Prctica 3 (Aproximacin de e
x
, 2 horas)
Crear una funcin en Fortran 77 que devuelva el valor de
e
x
con x [0, 1] utilizando el polinomio de Lagrange P
6
(x)
que interpola a e
x
en los puntos:
x
i
=
1
2
1 + cos
2i + 1
14
i = 0, ..., 6
Comprobar que el polinomio esta bien construido, es
decir que P
6
(x
i
) = e
xi
para todos los x
i
. Introducir por
teclado un valor x, evaluar y mostrar P
6
(x) y e
x
. Utilizar
x = 0, 1, 0.5, 2 y 3.
Nota: Utilizar las funciones de an.h IDIFNEWTON(.),
que calcula el polinomio interpolador a partir de los pun-
tos y valores de interpolacin, y EVDIFNEWTON(.), que
evalua el polinomio interpolador en un punto.
Aproximacin de funciones trigonomtricas
Utilizaremos como modelo las funciones f(x) = cos(x) y
f(x) = sen(x). Puesto que estas funciones son 2 per-
idicas, utilizando algunas relaciones trigonomtricas es
suciente denir las funciones cos(x) y sen(x) en el in-
tervalo [0,
4
] y a partir de ellas denir las funciones para
cualquier valor x (en radianes). Efectivamente, denotemos
por cos
[0,
4
]
(x) y sen
[0,
4
]
(x) a las funciones trigonomtri-
cas denidas sobre el intervalo [0,
4
]. Podemos denir en-
tonces las siguientes funciones:
cos
[0,
2
]
(x) =
cos
[0,
4
]
(x) si x
4
sen
[0,
4
]
(
2
x) si x >
4
sen
[0,
2
]
(x) =
sen
[0,
4
]
(x) si x
4
cos
[0,
4
]
(
2
x) si x >
4
cos
[0,]
(x) =
cos
[0,
2
]
(x) si x
2
cos
[0,
2
]
( x) si x >
2
sen
[0,]
(x) =
sen
[0,
2
]
(x) si x
2
sen
[0,
2
]
( x) si x >
2
cos
[0,2]
(x) =
cos
[0,]
(x) si x
cos
[0,]
(2 x) si x >
sen
[0,2]
(x) =
sen
[0,]
(x) si x
sen
[0,]
(2 x) si x >
El desarrollo en Serie de Taylor centrado en 0 del
cos(x) es:
cos(x) u P
n
(x) = 1.
x
2
2
+
x
4
4!
+.... + (1)
n
x
2n
(2n)!
y el error mximo cometido por el desarrollo de Taylor en
un punto x [0,
4
] es
| P
n
(x) cos(x) | sen(x)
(x)
2n+1
(2n + 1)!
La ventaja de utilizar el desarrollo de Taylor centrado
en 0 es que las potencias impares de x no aparecen, lo que
simplica el clculo numrico. El error relativo es
| P
n
(x) cos(x) |
cos(x)
tan(x)
(x)
2n+1
(2n + 1)!
Adems, como tan(x) es creciente en [0,
4
], el valor
mximo del error se encuentra en x =
4
. Por ejemplo, para
n = 5 obtenemos que el error relativo mximo cometido
en x =
4
es del orden de
tan(
4
)
25+1
(2 5 + 1)!
= 1. 8 10
9
Por tanto, si trabajamos con una aritmtica de 32 bits,
cuya unidad de redondeo u es del orden de 10
8
, tenemos
que con n = 5 obtenemos una aproximacin del cos(x) que
es la mejor posible dentro de esta aritmtica y no tendra
sentido aumentar el valor de n.
1 8
Problema 31 (3 puntos) Aproximar la funcin sen(x)
en el intervalo [0,
4
] utilizando el desarrollo de Taylor y
calcular el valor de n a partir del cual la aproximacin es
la mejor posible dentro de una aritmtica de 32 bits.
Problema 32 (2 puntos) Demostrar que, utilizando
relaciones trigonomtricas, es posible calcular las fun-
ciones sen(x) y cos(x) para cualquier x (en radianes), uti-
lizando nicamente su valor en el intervalo [0,
8
].
Problema 33 (3 puntos) Calcular los polinomios nece-
sarios para interpolar las funciones trigonomtricas cos(x)
y sen(x) en el intervalo [0,
8
] en una aritmtica de 32 bits.
Aproximacin de la funcin ln(x)
Como hemos visto anteriormente, un nmero x real en
una aritmtica de precisin nita viene expresado habit-
ualmente como
x = 2
m
t
X
n=1
a
n
2
n
!
donde m es un nmero entero, a
1
= 1 y para n > 1 a
n
= 0
a
n
= 1. Por tanto, el nmero
P
t
n=1
a
n
2
n
es mayor o
igual que
1
2
y menor que 1. Aplicando las propiedades del
ln(x) obtenemos que
ln(x) = mln(2) + ln
t
X
n=1
a
n
2
n
!
Dado que el nmero ln(2) es una constante que supon-
dremos calculada anteriormente ( ln(2)
= .6931471806),
podemos reducir el clculo del ln(x) al rango de valores
1
2
x 1.
Utilizaremos los puntos de interpolacin generados
por los polinomios de Chebychev, que para el intervalo
[
1
2
, 1] son:
x
i
=
1
2
+
1
4
1 + cos
2i + 1
2N + 2
i = 0, ..., N
Dado que ln(1) = 0, para minimizar el error relativo
aadiremos como punto interpolante x
N+1
= 1. El error
de interpolacin relativo entre P
N+1
(x) y ln(x) es:
| ln(x) P
N+1
(x) |
| ln(x) |
=
| (x 1)
N
i=0
(x x
i
) |
N+1
(N + 2) | ln(x) |
donde [
1
2
, 1]. Adems se tiene que en el intervalo [
1
2
, 1]
| x 1 |
| ln(x) |
1
Por tanto:
| ln(x) P
N+1
(x) |
| ln(x) |
2
N+1
(N + 2)
1
4
N+1
1
2
N
Para N = 10 el error mximo es 3. 973 6 10
8
, que
es menor que la unidad de redondeo u y, por tanto, en una
aritmtica de 32 bits tendramos la mejor aproximacin
posible de la funcin ln(x).
Problema 34 (1 punto) Cmo se puede obtener la fun-
cin y
x
, donde x e y son nmeros reales, utilizando las
funciones e
x
y ln(x)?
ANLISIS NUMRICO MATRICIAL I
En esta primera seccin dedicada a la resolucin de sis-
temas de ecuaciones lineales, estudiaremos los mtodos di-
rectos clsicos para la resolucin de un sistema de ecua-
ciones de la forma
Au = b
donde A = (a
i,j
) es una matriz de NxN, b = (b
i
) es un
vector de tamao N que determina los trminos indepen-
dientes, y u = (u
i
) es el vector solucin buscado.
Mtodo de Gauss
Este mtodo, aunque no es de los ms rpidos, tiene la gran
ventaja de que se puede aplicar a todo tipo de matrices,
algo que, como veremos en el futuro, no ocurre con otros
mtodos ms rpidos, pero que requieren, por ejemplo,
que la matriz sea simtrica o denida positiva. El mtodo
de Gauss se basa en transformar el sistema Au = b en
un sistema equivalente A
0
u = b
0
tal que la solucin sea
la misma y que la matriz A
0
sea triangular superior, es
decir, que tenga valores nulos de la diagonal hacia abajo.
Una vez obtenidos la matriz A
0
y el vector b
0
, el clculo
de la solucin u es inmediata, siguiendo un remonte de las
variables a travs del siguiente esquema recursivo:
u
N
=
b
0
N
a
0
N,N
u
k
=
b
0
k
P
N
l=k+1
a
0
k,l
u
l
a
0
k,k
k = N 1, .., 1
Problema 35 (2 puntos) Calcular el nmero de op-
eraciones bsicas (sumas, restas, multiplicaciones y divi-
siones) necesarias para realizar un remonte como el pre-
sentado arriba en funcin de la dimensin N .
Para obtener A
0
y b
0
se calcula, en primer lugar, el
valor mximo en valor absoluto de la primera columna de
A, denominado pivote. A continuacin, se intercambia la
primera la de A con la la donde se encuentra el pivote,
y se hace lo mismo con el vector b, para que el sistema
sea equivalente. A continuacin, se multiplica la primera
la de A por el valor
a
k
a
1
y se suma a la la k esima
de A para k = 2, ..., N. Se hace lo mismo para el vector
1 9
b, y con ello habremos obtenido un sistema equivalente
tal que la primera columna es cero de la diagonal hacia
abajo. Volvemos ahora a hacer lo mismo para convertir
la segunda columna cero de la diagonal para abajo, y as
sucesivamente hasta llegar a la mencionada matriz A
0
.
Ejemplo 9 Ejemplo de descomposicin segn el mtodo
de Gauss. Se considera el sistema
2 2 0
6 18 12
3 11 7
u
1
u
2
u
3
0
24
8
2 2 0
6 18 12
3 11 7
pivoteo
6 18 12
2 2 0
3 11 7
6 18 12
2 2 0
3 11 7
ceros 1
a
columna
6 18 12
0 4 4
0 2 1
6 18 12
0 4 4
0 2 1
ceros 2
a
columna
6 18 12
0 4 4
0 0 1
0
24
8
24
0
8
24
8
4
24
8
8
1 2
2 1
x
y
3
0
1
2
M
2
+
1
6
M
Problema 38 (2 puntos) Implementar en FORTRAN
la funcion IDESCENSO(A, b, u, N, N max) que resuelve
un sistema, donde A es una matriz triangular inferior, b es
el vector de trminos independientes, u el vector solucin,
N es la dimensin real del sistema y N max la dimensin
que se utiliz para reservar la memoria de la matriz A. La
funcin devuelve 0 si termina correctamente y 1 en caso
contrario. Nota Importante: Las lneas de cdigo tienen
que ir todas numeradas y no pueden superar las 15 lneas.
Problema 39 (2 puntos) Resolver por el mtodo de
Gauss el siguiente sistema de ecuaciones:
0 1 2
1 2 1
2 1 0
u
1
u
2
u
3
1
0
1
b
1,1
0 0 . 0
b
2,1
b
2,2
0 . .
b
3,1
b
3,2
b
3,3
. .
. . . . 0
b
n,1
b
n,2
b
n,3
. b
n,n
1 1 4
1 5 6
4 6 26
a
i,i
P
i1
k=1
b
2
i,k
Para j = i + 1, ..., N
b
j,i
=
1
bi,i
a
j,i
P
i1
k=1
b
j,k
b
i,k
Fin Para j
Fin Para i
2 1
El inters de descomponer una matriz A por el mtodo
de Cholesky es que, a continuacin, es muy sencillo resolver
el sistema de ecuaciones Au = b. Efectivamente, basta
descomponer el sistema de la siguiente forma:
Bz = b
t
Bu = z
Ambos sistemas se resuelvan rpidamente haciendo
un remonte y un descenso.
Nota: Normalmente, para evitar tener que almacenar dos
matrices, una para B y otra para B
t
, se almacena todo
en una nica matriz B, simtrica, escribiendo en la parte
triangular superior de B la parte correspondiente a B
t
.
Problema 42 (2 puntos) Calcular el nmero de opera-
ciones necesarias para resolver un sistema por el mtodo
de Cholesky.
Problema 43 (2 puntos) Demostrar que a partir de un
mtodo para resolver sistemas de ecuaciones se puede con-
struir de forma inmediata un mtodo para calcular la in-
versa A
1
de una matriz A.
Prctica 4 (Mtodo de Cholesky, 6 horas)
Implementar en Fortran 77 las siguientes funciones :
FUNCTION ICHOLESKY_FACTORIZACION
(A,DB,N,Nmax): Calcula la descomposicin de
Cholesky de A y la devuelve en la matriz DB. De-
vuelve 0 si termina bien y 1 en caso contrario.
FUNCTION IDESCENSO(DB,DZ,B,N,Nmax): Re-
suelve un sistema triangular inferior, donde DB es la
matriz, B es el trmino independiente y DZ es el vec-
tor donde devuelve la solucin. Devuelve 0 si termina
bien y 1 en caso contrario.
FUNCTION IREMONTE(DB,DU,DZ,N,Nmax): Re-
suelve un sistema triangular superior, donde DB es la
matriz, DZ es el trmino independiente y DU es el vec-
tor donde devuelve la solucin. Devuelve 0 si termina
bien y 1 en caso contrario
FUNCTION ERROR_SISTEMA(A,DU,B,N,Nmax):
Devuelve el error cometido al resolver el sistema dado
por la expresin ErrorSistema de la seccin anterior.
FUNCTION ICHOLESKY(A,B,DU,N,Nmax): Re-
suelve un sistema por el mtodo de Cholesky y de-
vuelve la solucin en DU. Devuelve 0 si termina bien
y 1 en caso contrario.
Hay que hacer una versin en simple precisin y otra
versin en doble precisin donde todas las variables que
empiecen por D sean de doble precisin (la matriz A y
el vector B siempre sern de simple precisin). Hay que
resolver los sistemas ejemplo y calcular el ErrorSistema,
tanto en doble como en simple precisin.
Nota: El programa debe permitir introducir el sistema
directamente por teclado o desde disco duro, utilizando
las funciones denidas en an.h. Resolver los siguientes
sistemas ejemplo:
1.
1 1 4
1 5 6
4 6 26
x
y
z
6
12
36
2.
1 1 4
1 1 4
4 4 17
x
y
z
6
12
36
3.
1 1 4
1 5 6
4 6 17
x
y
z
6
12
36
4.
2 1 0
1 2 1
0 1 4
x
y
z
1
0
5
a
1
b
1
. 0
c
1
a
2
. 0
0 . . b
N1
0 . c
N1
a
N
l
1
0 . 0
m
1
l
2
. 0
0 . . 0
0 . m
N1
l
N
1 u
1
. 0
0 1 . 0
0 . . u
N1
0 . 0 1
Los vectores m
i
, l
i,
y u
i
se calculan utilizando el es-
quema:
l
1
= a
1
u
1
=
b
1
l
1
Para i = 2, .., N 1
2 2
m
i1
= c
i1
l
i
= a
i
m
i1
u
i1
u
i
=
b
i
li
Fin Para
m
N1
= c
N1
l
N
= a
N
m
N1
u
N1
Problema 44 (3 puntos) Demostrar el algoritmo de
Crout para descomponer matrices tridiagonales.
Problema 45 (2 puntos) Resolver utilizando el mtodo
de Crout el siguiente sistema de ecuaciones:
2 4 0
1 0 4
0 1 0
x
y
z
6
3
1
x
2
+y
2
1
x y
2 4
Problema 48 (3 puntos) Dados 3 puntos distintos
x
l
, x
i
, x
r
, demostrar que la frmula
f
0
(x
i
)
(x
i
x
l
)
f(xr)f(xi)
xrxi
+ (x
r
x
i
)
f(xi)f(x
l
)
xix
l
x
r
x
l
aproxima la derivada de f
0
(x
i
) con un orden de aproxi-
macin de 2.
Ntese que, si x
r
= x
i
+ h, y x
l
= x
i
h, entonces la
frmula anterior resulta
f
0
(x
i
) =
f(x
i
+h) f(x
i
h)
2h
que es una conocida frmula de diferencias centradas.
Ejemplo 11 Veremos en este ejemplo como, utilizando la
expresin anterior para aproximar la derivada de f(x) =
x
3
en x = 1, la precisin es mayor que con la frmula
anterior. Por ejemplo, si tomamos x
i
= 1 y h = 1, la
expresin anterior nos da
f
0
(1)
2
3
0
3
2
= 4
Si tomamos ahora x
j
= 0.1
f
0
(1)
1.1
3
0.9
3
0.2
= 3. 01
que est ms prximo al valor real que utilizando la
primera frmula. En general, comprobamos que, cuanto
mayor es el orden de una frmula de aproximacin, ms
preciso es el valor de la derivada.
Nota: Utilizar el desarrollo de Taylor para aproximar
f
0
(x) es equivalente a interpolar f(x) con el polinomio de
Lagrange y posteriormente derivar el polinomio.
Problema 49 (3 puntos) Dados 3 puntos distintos
x
l
, x
i
, x
r
, calcular el polinomio de Lagrange que interpola
a f(x) en esos 3 puntos, calcular la derivada de ese poli-
nomio en x
i
, y comprobar que da la misma frmula que la
presentada en el problema anterior.
Problema 50 (2 puntos) Calcular una aproximacin de
la derivada tercera f
000
(x
i
) de una funcin f(x) en un
punto x
i
, utilizando f(x
i
), f(x
i
+h), f(x
i
h), f(x
i
2h).
Problema 51 (3 puntos) Dados 3 puntos, demostrar
que la frmula
f
00
(x
i
) 2
f(x
r
)f(x
i
)
x
r
x
i
f(x
i
)f(x
l
)
x
i
x
l
x
r
x
l
aproxima la derivada segunda de f(x) en x
i
con un orden
de aproximacin de 1.
Problema 52 (2 puntos) Considerar en el problema an-
terior que x
l
= x
i
h, y x
r
= x
i
+h. Deducir como queda
la frmula anterior para aproximar la derivada segunda, y
demostrar que, en este caso, el orden de aproximacin es
2.
Problema 53 (3 puntos) Dados 3 puntos x
l
< x
i
< x
r
,
calcular el polinomio de Lagrange que interpola a f(x) en
esos 3 puntos, calcular la derivada segunda de ese poli-
nomio en x
i
, y comprobar que da la misma frmula que
utilizando los desarrollos de Taylor.
Problema 54 (2 puntos) Calcular una aproximacin de
la derivada primera y segunda de una funcin f(x) en x =
0, teniendo en cuenta que f(0) = 1, f(1) = 0, f(4) = 9
Diferenciacin numrica en dimensiones superiores
Estudiaremos, en este apartado, la aproximacin de las
derivadas de una funcin de varias variables. Para sim-
plicar la exposicin, supondremos que la dimensin es 2.
Para discretizar las derivadas de una funcin F(x, y), se
utilizan los desarrollos de Taylor siguientes en 2 variables.
Utilizaremos la siguiente nomenclatura: F
x
=
F(x,y)
x
,
F
y
=
F(x,y)
y
, F
xx
=
2
F(x,y)
x
2
, F
xy
=
2
F(x,y)
xy
, F
yy
=
2
F(x,y)
y
2
1. F(x +h, y) = F +hF
x
+
h
2
2
F
xx
+ O(h
3
)
2. F(x h, y) = F hF
x
+
h
2
2
F
xx
+ O(h
3
)
3. F(x, y +l) = F +lF
y
+
l
2
2
F
yy
+ O(l
3
)
4. F(x, y l) = F lF
y
+
l
2
2
F
yy
+ O(l
3
)
5. F(x+h, y +l) = F +hF
x
+lF
y
+
1
2
(h
2
F
xx
+2hlF
xy
+
l
2
F
yy
) + O(
h
2
+l
2
3
2
)
6. F(xh, y l) = F hF
x
lF
y
+
1
2
(h
2
F
xx
+2hlF
xy
+
l
2
F
yy
) + O(
h
2
+l
2
3
2
)
7. F(x+h, y l) = F +hF
x
lF
y
+
1
2
(h
2
F
xx
2hlF
xy
+
l
2
F
yy
) + O(
h
2
+l
2
3
2
)
8. F(xh, y +l) = F hF
x
+lF
y
+
1
2
(h
2
F
xx
2hlF
xy
+
l
2
F
yy
) + O(
h
2
+l
2
3
2
)
Prestaremos particular atencin a dos operadores
diferenciales que se utilizan con frecuencia en la prctica:
El gradiente F(x, y) = (F
x
(x, y), F
y
(x, y)), que es el vec-
tor de derivadas parciales, y el Laplaciano F(x, y) =
F
xx
(x, y) + F
yy
(x, y). Utilizaremos la notacin F
i,j
=
F(hi, lj).
2 5
Discretizacin del Laplaciano
Para discretizar el operador F en un entorno de 3 3
puntos, pueden utilizarse diferentes esquemas. Para sim-
plicar, supondremos que l = h.
Problema 55 (3 puntos) Demostrar, utilizando el de-
sarrollo de Taylor, que las siguientes expresiones son dis-
cretizaciones del laplaciano:
F =
F
i+1,j+1
+F
i1,j+1
+F
i1,j1
+F
i+1,j1
4F
i,j
2h
2
F =
F
i+1,j
+F
i1,j
+F
i,j+1
+F
i,j1
4F
i,j
h
2
El resultado del anterior problema nos proporciona
2 formas distintas de evaluar el laplaciano, por tanto,
cualquier promediado de las dos expresiones tambin es
una discretizacin del laplaciano, es decir:
F =
=
F
i+1,j+1
+F
i1,j+1
+F
i1,j+1
+F
i+1,j1
4F
i,j
2h
2
+
+(1 )
F
i+1,j
+F
i1,j
+F
i,j+1
+F
i,j1
4F
i,j
h
2
+
+O(h)
donde es un parmetro libre a elegir. La eleccin de di-
cho parmetro la haremos de forma que la discretizacin
de F respete lo mximo posible la invarianza por rota-
ciones de la funcin F(x, y). Para ello, consideremos una
funcin tal que en un entorno de un punto (hi
0
, hj
0
) tiene
los siguientes valores:
1 1 1
0 0 0
0 0 0
Si calculamos F en el punto central a travs de la
anterior frmula obtenemos:
F(hi
0
, hj
0
) =
2
2h
2
+ (1 )
1
h
2
Ahora bien, si rotamos 45 grados, la funcin inicial en
torno al punto (hi
0
, hj
0
), obtenemos como imagen:
1 1 0
1 0 0
0 0 0
Si calculamos de nuevo F en el mismo punto obten-
emos:
F(hi
0
, hj
0
) =
1
2h
2
+ (1 )
2
h
2
Por lo tanto, si queremos que ambos valores de F
coincidan, debemos elegir =
2
3
. Hablando en trminos
de teora de la seal, el calculo de F nos llevara a con-
volucionar la imagen con la siguiente mscara:
1
h
2
1
3
1
3
1
3
1
3
8
3
1
3
1
3
1
3
1
3
Problema 56 (2 puntos) Calcular una aproximacin
del laplaciano de una funcin F(x, y) en el punto (x, y) =
(0, 0) conociendo los siguientes valores: F(0, 0) = 0,
F(
1
2
, 0) =
1
4
, F(
1
2
, 0) =
1
4
, F(0,
1
2
) =
1
4
, F(0,
1
2
) =
1
4
,
F(
1
2
,
1
2
) =
1
2
, F(
1
2
,
1
2
) =
1
2
, F(
1
2
,
1
2
) =
1
2
, F(
1
2
,
1
2
) =
1
2
.
Discretizacin del gradiente
Siguiendo el desarrollo de Taylor mostrado anteriormente,
obtenemos la siguiente expresin para el gradiente:
(F
i,j
)
x
= (1 )
(F
i+1,j
F
i1,j
)
2h
+
+
(F
i+1,j+1
F
i1,j+1
+F
i+1,j1
F
i1,j1
)
4h
(F
i,j
)
y
= (1 )
(F
i,j+1
F
i,j1
)
2h
+
+
(F
i+1,j+1
F
i+1,j1
+F
i1,j+1
F
i1,j1
)
4h
donde es, de nuevo, un parmetro a elegir. Teniendo
en cuenta que la norma eucldea del gradiente es invari-
ante por rotaciones, lo ser en particular para rotaciones
de 45 grados, de donde deducimos, utilizando el mismo
argumento que para el F, que = 2
2. Por lo tanto,
estamos calculando F
x
utilizando la mscara
1
4h
(2
2) 0 (2
2)
2(
2 1) 0 2(
2 1)
(2
2) 0 (2
2)
y F
y
utilizando
1
4h
(2
2) 2(
2 1) (2
2)
0 0 0
(2
2) 2(
2 1) (2
2)
Problema 57 (3 puntos) Demostrar que las mscaras
F
x
=
1
4h
0
2
2 1
0 2
2 1
0
2
F
y
=
1
4h
2 1
0 0 0
2 1
2
i6=k
(x x
i)
i6=k
( x
k
x
i)
dx
entonces la frmula de integracin numrica generada por
los puntos x
k
y los pesos w
k
es exacta hasta el orden 2N1
para el intervalo [1, 1].
Demostracin [Hu] Pg. 205-209
Ejemplo 12 A continuacin se exponen algunos valores
de races x
k
y coecientes w
k
en funcin del grado del
polinomio L
n
(x) :
n x
k
w
k
2 0.5773502692 1.
0.5773502692 1
3 0.7745966692 0.5555555556
0. 0.8888888889
0.7745966692 0.5555555556
4 0.8611363116 0.3478548451
0.3399810436 0.6251451549
0.3399810436 0.6251451549
0.8611363116 0.3478548451
Problema 59 (2 puntos) Aproximar el valor de la sigu-
iente integral, utilizando las frmulas de Legendre para
n = 2 y n = 3:
Z
1
1
x
3
x
4
dx
Cul es el valor exacto de la integral?
Problema 60 (2 puntos) Se consideran, para el inter-
valo [1, 1], los puntos x
0
= 0.5, x
1
= 0 y x
2
= 0.5 y
los pesos w
0
= w
1
= w
2
= 2/3. Estos puntos y estos pe-
sos se utilizan para aproximar la integral de una funcin
en [1, 1]. Usar esta frmula de integracin para calcular
nmericamente la siguiente integral y compararla con el
resultado anlitico (exacto).
Z
2
2
cos(x)dx
Problema 61 (2 puntos) Encontrar, utilizando los
ceros y pesos asociados a los polinomios de Legendre, cul
sera la frmula de integracin numrica de Legendre uti-
lizando un slo punto de interpolacin. Cul sera su
exactitud?
Problema 62 (2 puntos) A partir de los ceros y de los
pesos asociados a los polinomios de Legendre, y dado un
intervalo [a, b] cualquiera, encontrar los puntos x
k
y los
pesos w
k
que hacen exacta hasta orden 2N1 una frmula
de integracin numrica sobre el intervalo [a, b].
Problema 63 (2 puntos) Utilizar el resultado del prob-
lema anterior para calcular de forma exacta la siguiente
integral:
Z
1
0
x
2
x
3
dx
Cuando el intervalo [a, b] es innito, es decir, a =
o b = , hay que emplear otros mtodos para aproximar
las integrales. En el caso [a, b] = (, ), se utilizan los
ceros de los denominados polinomios de Hermite, denidos
como H
0
(x) = 1, H
1
(x) = 2x, y
H
n
(x) = 2xH
n1
(x) 2(n 1)H
n2
(x)
para n 2. En este caso, la frmula de integracin
numrica aproxima la integral de la siguiente forma:
Z
f(x)e
x
2
dx
N
X
k=0
w
k
f(x
k
)
2 7
Teorema 15 Si x
k
son los ceros del polinomio de Hermite
y denimos
w
k
=
Z
i6=k
(x x
i)
i6=k
(x
k
x
i)
e
x
2
dx
entonces la frmula de integracin numrica generada por
los puntos x
k
y los pesos w
k
es exacta hasta orden 2N 1
para el intervalo (, ).
Demostracin [Hu] Pg. 213-214
Ejemplo 13 A continuacin se exponen algunos valores
de races x
k
y coecientes w
k
en funcin del grado del
polinomio H
n
(x) :
n x
k
w
k
1 0. 1. 772 453 851
2 0. 707 106 781 0. 886 226 925 5
0. 707 106 781 0. 886 226 925 5
Problema 64 (2 puntos) Calcular de forma exacta la
integral
Z
x
3
x
2
e
x
2
dx
utilizando los polinomios de Hermite.
Problema 65 (2 puntos) Aproximar, utilizando dos
puntos de aproximacin, el valor de la integral:
Z
1
1 +x
2
dx
Para el intervalo (0, ), se utilizan los polinomios de
Laguerre L
n
(x), denidos por L
0
(x) = 1, L
1
(x) = 1 x, y
L
n
(x) = (2n 1 x)L
n1
(x) (n 1)
2
L
n2
(x).
para n 2. En este caso, la frmula de integracin
numrica aproxima:
Z
0
f(x)e
x
dx
N
X
k=0
w
k
f(x
k
)
Teorema 16 Si x
k
son los ceros del polinomio de La-
guerre y denimos
w
k
=
Z
0
i6=k
(x x
i)
i6=k
(x
k
x
i)
e
x
dx
entonces la frmula de integracin numrica generada por
los puntos x
k
y los pesos w
k
es exacta hasta orden 2N 1
para el intervalo (0, ).
Demostracin [Hu] Pg. 211-213
Ejemplo 14 A continuacin se exponen algunos valores
de races x
k
y coecientes w
k
en funcin del grado del
polinomio L
n
(x) :
n x
k
w
k
1 1. 1.
2 0. 585 786 438 0. 853 553 390 3
3. 414 213 562 0. 146 446 609 3
Problema 66 (2 puntos) Calcular de forma exacta la
integral
Z
0
x
3
x
2
e
x
dx
utilizando los polinomios de Laguerre.
Problema 67 (2 puntos) Calcular una frmula de
aproximacin numrica de la integral siguiente:
Z
a
f(x)e
x
dx
donde a es un nmero real cualquiera.
Frmulas de Integracin Numrica Compuestas
Con las frmulas que hemos visto hasta ahora, para au-
mentar la precisin es necesario aumentar el grado de los
polinomios, lo cual resulta complejo para valores grandes
de N. Una alternativa consiste en dividir previamente la
integral en subintegrales de la manera siguiente:
Z
b
a
f(x)dx =
M
X
k=0
Z
x
k+1
x
k
f(x)dx
donde a = x
0
< x
1
< .... < x
M+1
= b. A continuacin se
aproxima numricamente cada una de las integrales
Z
x
k+1
x
k
f(x)dx
Para ello, se pueden utilizar los desarrollos a partir
de los polinomios de Legendre, o bien las frmulas ms
simples siguientes:
Frmula del rectngulo
Z
x
k+1
x
k
f(x)dx f
x
k
+x
k+1
2
(x
k+1
x
k
)
Esta frmula se obtiene fcilmente aproximando f(x)
por el polinomio interpolador en x =
x
k
+x
k+1
2
. Es decir:
Z
x
k+1
x
k
f(x)dx
Z
x
k+1
x
k
f
x
k
+x
k+1
2
dx =
= f
x
k
+x
k+1
2
(x
k+1
x
k
)
2 8
Frmula del trapecio
Z
x
k+1
x
k
f(x)dx
f(x
k+1
) +f(x
k
)
2
(x
k+1
x
k
)
Esta frmula se deduce aproximando f(x) por su poli-
nomio interpolador en x
k
y x
k+1
. Es decir:
Z
x
k+1
x
k
f(x)dx
Z
x
k+1
x
k
f(x
k
)
x x
k+1
x
k
x
k+1
+f(x
k+1
)
x x
k
x
k+1
x
k
dx =
=
f(x
k+1
) +f(x
k
)
2
(x
k+1
x
k
)
Frmula de Simpson
Z
x
k+1
x
k
f(x)dx
f(x
k+1
) +f(x
k
) + 4f
x
k
+x
k+1
2
6
(x
k+1
x
k
)
Esta frmula se deduce aproximando f(x) por su de-
sarrollo en serie de Taylor centrado en el punto x
m
=
x
k
+x
k+1
2
. Es decir:
Z
x
k+1
x
k
f(x)dx
Z
x
k+1
x
k
f(x
m
) +f
0
(x
m
)(x x
m
) +
f
00
(x
m
)
2
(x x
m
)
2
dx =
= f(x
m
)(x
k+1
x
k
) +
f
00
(x
m
)
3
x
k+1
x
k
2
3
Ahora bien, teniendo en cuenta los resultados de
la seccin anterior sobre derivacin numrica f
00
(x
m
), se
puede aproximar como
f
00
(x
m
)
f(x
k+1
) 2f(x
m
) +f(x
k
)
x
k+1
x
k
2
2
Por tanto, sustituyendo este valor en la aproximacin
anterior obtenemos
Z
x
k+1
x
k
f(x)dx f(x
m
)(x
k+1
x
k
)+
+
f(x
k+1
) 2f(x
m
) +f(x
k
)
3
x
k+1
x
k
2
=
=
f(x
k+1
) +f(x
k
) + 4f
x
k
+x
k+1
2
6
(x
k+1
x
k
)
Aunque estas frmulas sean menos precisas que las de-
ducidas a partir de los ceros de los polinomios de Legendre,
tienen la ventaja de que pueden ser utilizadas cuando slo
conocemos la funcin a integrar en un conjunto equiespa-
ciado de puntos, es decir, cuando slo conocemos f(x) en
un conjunto de la forma x
k
= x
0
+hk. Ntese que, en este
caso, la integracin a partir de los ceros de los polinomios
de Legendre no puede utilizarse.
Problema 68 (2 puntos) Aproximar, por el mtodo de
Simpson, la integral
Z
1
1
x
3
x
4
dx
utilizando nicamente el valor de la funcin en los puntos:
1,
1
2
, 0,
1
2
y 1.
Prctica 5 (Implementacin Mtodo de Inte-
gracin de Simpson, 2 horas)
Crear una funcin en fortran 77 donde se implemente el
mtodo de Simpson. Los parmetros de la funcin sern:
Los lmites del intervalo de integracin en precisin real y
el nmero de subintervalos en los que se dividir el inter-
valo inicial. La funcin a integrar se denir aparte (como
en el caso del mrodo Mller). La funcin devolver el
valor de la integral obtenido. Probar el mtodo para aprox-
imar las siguientes integrales con diferentes valores para el
parmetro de nmero de subintervalos y comprobar que el
resultado se aproxima al valor exacto de la integral.
1.
R
0
sin(x)dx = 2
2.
R
1
0
x
1x
2
dx = 1
3.
R
e
x
2
dx =
= 1. 772 5
Nota: Las integrales con lmites innitos se aproximarn
cambiando el innito por un nmero grande.
Integracin numrica en dimensiones superiores
En esta seccin, estudiaremos las tcnicas de integracin
numrica sobre dominios de dimensin superior a 1. Para
simplicar la exposicin, supondremos que la dimensin es
2. Es decir, pretendemos aproximar
Z
F(x, y)dxdy
Aproximaremos esta integral a travs de la frmula
numrica:
Z
F(x, y)dxdy
X
i,j
w
ij
F(x
i
, y
j
)
donde debemos elegir los puntos (x
i
, y
j
) y los pesos
w
ij
. Para realizar esta eleccin se utilizan tcnicas de
cuadratura. Es decir, se exige que la frmula sea exacta
para polinomios en x e y de hasta un cierto grado:
Z
x
m
y
n
dxdy =
X
i,j
w
ij
(x
i
)
m
(y
j
)
n
2 9
donde m y n determinan el grado de los polinomios. De
estas relaciones se puede deducir, en general, los valores de
los puntos y los pesos. Un caso particularmente sencillo
es cuando es un rectngulo [a, b]x[c, d]. En este caso,
podemos escribir:
Z
x
m
y
n
dxdy =
Z
b
a
x
m
dx
Z
d
c
y
n
dy
y, por tanto, la exactitud en dimensin 2 la podemos de-
ducir a partir de la exactitud en dimensin 1, que, en este
caso, viene dada, como hemos visto anteriormente, por los
polinomios de Legendre.
Problema 69 (3 puntos) Deducir la frmula de inte-
gracin numrica sobre el rectngulo [1, 1]x[1, 1] resul-
tante de aplicar la integracin numrica en una variable
en los intervalos [1, 1], y [1, 1].
Problema 70 (2 puntos) Deducir la frmula de inte-
gracin numrica sobre un rectngulo [a, b]x[c, d] resultante
de aplicar la integracin numrica en una variable en los
intervalos [a, b], y [c, d].
Problema 71 (2 puntos) Calcular de forma exacta la
integral
Z
1
1
Z
1
1
x
2
y
2
dxdy
utilizando integracin numrica.
Ntese que, al igual que en dimensin 1, tambin
podemos extender los resultados al caso en que los inter-
valos sean innitos, de tal forma que podemos construir
fcilmente frmulas de integracin numrica para las inte-
grales
Z
F(x, y)e
x
2
y
2
dxdy
y
Z
0
Z
0
F(x, y)e
xy
dxdy
Problema 72 (2 puntos) Calcular una aproximacin
numrica de la integral
Z
Z
2
0
x
1 +e
y
2
dxdy
utilizando la evaluacin de F(x, y) en 4 puntos.
En el caso de que sea un tringulo, el clculo es
un poco ms complejo. Consideremos un tringulo T
de vrtices (x
0
, y
0
), (x
1
, y
1
), (x
2
, y
2
). Denotaremos por
AREA(T) el rea del tringulo T. En funcin de los vr-
tices, el rea viene determinada por
AREA(T) =
1
2
ABS
1 1 1
x
0
x
1
x
2
y
0
y
1
y
2
= F
x
0
+x
1
+x
2
3
,
y
0
+y
1
+y
2
3
AREA(T)
Integracin sobre tringulos utilizando 3 pun-
tos.
Z
T
F(x, y)
= AREA(T)
3
X
k=1
w
k
F(e x
k
, e y
k
)
donde
w
1
= w
2
= w
3
=
1
3
e x
1
=
x
0
+x
1
2
e y
1
=
y
0
+y
1
2
e x
2
=
x
0
+x
2
2
e y
2
=
y
0
+y
2
2
e x
3
=
x
2
+x
1
2
e y
3
=
y
2
+y
1
2
Integracin sobre tringulos utilizando 4 pun-
tos.
Z
T
F(x, y)
= AREA(T)
4
X
k=1
w
k
F(e x
k
, e y
k
)
donde
w
1
= w
2
= w
3
=
25
48
w
4
=
27
48
e x
1
=
6x
0
+ 2x
1
+ 2x
2
10
e y
1
=
6y
0
+ 2y
1
+ 2y
2
10
e x
2
=
2x
0
+ 6x
1
+ 2x
2
10
e y
2
=
2y
0
+ 6y
1
+ 2y
2
10
e x
3
=
2x
0
+ 2x
1
+ 6x
2
10
e y
3
=
2y
0
+ 2y
1
+ 6y
2
10
e x
4
=
x
0
+x
1
+x
2
3
e y
4
=
y
0
+y
1
+y
2
3
Problema 73 (2 puntos) Se considera el tringulo T de
vrtices (0, 0), (1, 0) y (0, 1). Deducir cual debe ser el punto
(x
0
, y
0
) y el peso w
0
para que la frmula de integracin
numrica:
Z
T
F(x, y)dxdy F(x
0
, y
0
)w
0
sea exacta para polinomios de grado 1 en x e y. Es decir
P(x, y) = ax +by +c.
3 0
Problema 74 (2 puntos) Calcular una aproximacin
numrica de la integral
Z
x
2
ydxdy
donde es el tringulo de vrtices (0, 0), (2, 0) y (0, 2),
utilizando 1 punto, 3 puntos y 4 puntos.
ANLISIS NUMRICO MATRICIAL II
En esta seccin veremos algunos aspectos ms avanzados
del anlisis matricial, incluyendo tcnicas iterativas de res-
olucin de sistemas de ecuaciones y clculo de autovalores.
Normas de vectores y matrices
Denicin 4 Una norma k . k es una aplicacin de un
espacio vectorial E en R
+
{0} que verica las siguientes
propiedades:
k x k= 0 si y slo si x = 0
k x k=| |k x k para todo K y x E
k x +y kk x k + k y k para todo x, y E.
Bsicamente, una norma mide la magnitud o tamao
de un vector x. Por ejemplo, en el espacio vectorial de los
nmeros reales, la norma natural es el valor absoluto.
Sin embargo, cuando trabajamos en varias dimensiones,
esto es, x = (x
1
, x
2
, ...., x
N
), existen mltiples formas de
denir una norma. La denicin ms utilizada es la de-
nominada norma p, donde p es un nmero real positivo,
que viene denida por
k x k
p
=
N
X
i=1
| x
i
|
p
!
1
p
Un caso particularmente interesante es p = 2, que
corresponde a la norma eucldea. Otro caso interesante
es aqul que se produce cuando hacemos tender p hacia
innito, lo que da lugar a la denominada norma innito,
denida por
k x k
= max
i
| x
i
|
Problema 75 (4 puntos) Tomar N = 2 , p = 2, y de-
mostrar que la norma k x k
p
verica las propiedades de la
denicin de norma.
Problema 76 (3 puntos) Demostrar que
Lim
p
k x k
p
= max
i
| x
i
|
Problema 77 (2 puntos) Tomar N = 2 y dibujar el
lugar geomtrico de los vectores x = (x
1
, x
2
) que verican
que
1. k x k
1
< 1
2. k x k
2
< 1
3. k x k
< 1
Problema 78 (2 puntos) Tomar N = 2 y demostrar la
siguiente desigualdad:
k x k
k x k
2
k x k
1
Dada una matriz A de dimensin NxN, se podra
denir su norma considerando la matriz como un vector
de dimensin NxN. Sin embargo, resulta ms til denir
la norma de una matriz subordinndola a la norma de un
vector de la siguiente manera:
Denicin 5 Sea A una matriz y sea k . k una norma
vectorial. Se dene la norma de A, subordinada a la norma
vectorial k . k como
k A k= sup
x6=0
k Ax k
k x k
La propiedad fundamental que verica una norma ma-
tricial denida de esta forma es la siguiente:
Teorema 17 Sea A una matriz y k . k una norma vecto-
rial. Entonces, para cualquier vector x se verica que
k Ax kk A k k x k
Demostracin: Si x = 0, la desigualdad es trivial. Si
x 6= 0, entonces, puesto que k x k> 0, la desigualdad
anterior es equivalente a
k Ax k
k x k
k A k
Ahora bien, esta desigualdad es cierta por la propia
denicin de k A k.
Problema 79 (2 puntos) Demostrar que si A y B son
dos matrices de dimensin NxN, entonces, para cualquier
norma de matrices subordinada a una norma vectorial, se
verica
k AB kk A k k B k
A continuacin veremos la relacin que existe entre
la norma de una matriz y sus autovalores. Empezaremos
recordando algunos conceptos relacionados con los auto-
valores.
3 1
Denicin 6 Un autovalor de A es un nmero real o
complejo tal que existe un vector x, denominado autovec-
tor, tal que
Ax = x
Denicin 7 Se denomina polinomio caracterstico P()
de la matriz A, al polinomio dado por el determinante
P() =| AI |
Problema 80 (1 punto) Demostrar que los autovalores
de A son los ceros del polinomio caracterstico P().
Denicin 8 Se dene el radio espectral de una matriz A
como
(A) = max
i
{|
i
| :
i
autovalor de A}
Teorema 18 Sea A una matriz y k . k una norma vecto-
rial. Entonces
k A k (A)
Demostracin: Si es un autovalor de A, entonces existe
un autovector x tal que Ax = x, por tanto
k Ax k
k x k
=
k x k
k x k
= || k A k
Lo que demuestra el teorema.
Teorema 19 Si los autovectores de una matriz A de di-
mensin NxN forman una base ortonormal de R
N
, en-
tonces
k A k
2
= (A)
Demostracin: Recordamos, en primer lugar, que una
base ortonormal de vectores es un conjunto de vectores
tales que cualquier otro vector se puede expresar como
combinacin lineal de ellos y, adems, su producto escalar
verica que
(x
i
, x
j
) =
N
X
k=1
(x
i
)
k
(x
j
)
k
=
0 si i 6= j
1 si i = j
donde (x
i
)
k
indica la coordenada k-sima del vector x
i
.
Vamos a demostrar la desigualdad
k A k
2
(A)
Dado que el teorema anterior determina la desigual-
dad en el otro sentido, tendramos la igualdad, y por tanto
el resultado del Teorema. Sea x un vector cualquiera.
Puesto que A posee una base ortonormal de autovectores
x
i
, el vector x se podr expresar como una combinacin
lineal de autovectores, de la forma:
x =
1
x
1
+
2
x
2
+.. +
N
x
N
Al hacer Ax, y puesto que los x
i
son autovectores,
obtenemos que
Ax =
1
1
x
1
+
2
2
x
2
+.. +
N
N
x
N
Como los autovectores son ortonormales, se cumple
que
k x k
2
=
q
(
1
)
2
+.. + (
N
)
2
k Ax k
2
=
q
(
1
1
)
2
+.. + (
N
N
)
2
Y, por tanto,
k Ax k
2
k x k
2
(A)
para cualquier vector x. En consecuencia, al tomar el
supremo en x, la desigualdad se mantiene, lo que demues-
tra que
k A k
2
(A)
Teorema 20 Si una matriz A de dimensin NxN es
simtrica, entonces todos sus autovalores son reales y,
adems, sus autovectores forman una base ortonormal de
R
N
.
Demostracin: [La-Th] Pg. 53.
Problema 81 (2 puntos) Calcular los autovectores de
la matriz
1 1 0
1 1 0
0 0 2
= max
i
P
j
| a
ij
|
1 0
1 1
3 2
Problema 83 (2 puntos) Demostrar la siguiente igual-
dad:
(
t
AA) = (A
t
A)
Teorema 22 Sea A una matriz cualquiera, entonces
Lim
n
k A
n
k= 0 (A) < 1
Demostracin:[La-Th] Pg. 80.
Condicionamiento de una matriz
El condicionamiento de una matriz es un nmero que
nos indica la bondad o buen comportamiento numrico
de la matriz cuando se trabaja con ella numricamente.
Para ilustrar de qu estamos hablando, veamos el sigu-
iente ejemplo:
Ejemplo 15 Consideremos el siguiente sistema de ecua-
ciones
10 7 8 7
7 5 6 5
8 6 10 9
7 5 9 10
x
y
z
v
32
23
33
31
10 7 8 7
7 5 6 5
8 6 10 9
7 5 9 10
x
y
z
v
32.1
22.9
33.1
30.9
A
1
kbk
Por otro lado, tambin se cumple que
kbk = kAuk kAk kuk
de donde obtenemos que
1
kuk
kAk
kbk
As, multiplicando esta desigualdad con la anterior-
mente obtenida para kuk , concluimos la demostracin
del teorema.
Problema 84 (2 puntos) Demostrar que, si los autovec-
tores de una matriz A de dimensin NxN forman una base
ortonormal de R
N
, entonces, para la norma 2, se cumple
que
(A) =k A k
2
k A
1
k
2
=
max
i
{|
i
|}
min
i
{|
i
|}
Nota: En el caso del ejemplo 15 los autovalores de la
matriz son 0.01, 0.84, 3.86, y 30.29, por tanto el condi-
cionamiento sera
(A) =
30.29
0.01
= 3029
lo cual indica un condicionamiento bastante malo.
Problema 85 (2 puntos) Calcular el condicionamiento
para la norma 2, de las siguientes matrices:
A =
2 2 2
2 1 1
2 1 1
A =
2 1 0
1 2 1
0 1 2
1 1
1 1
cos sin
sin cos
1 0 0 0 0 0 0
0 1 . . . . 0
0 . cos . sin . 0
0 . . 1 . . 0
0 . sin . cos . 0
0 . . . . 1 0
0 0 0 0 0 0 1
2 1 0
1 2 1
0 1 2
4
. Por tanto, la matriz R
12
es
R
12
=
2
1
2
0
1
2
1
2
0
0 0 1
y al hacer la operacin R
t
12
AR
12
obtenemos
4
,
4
, sign(x) = 1 si x 0 y sign(x) = 1
si x < 0,
cos =
1
p
1 + tan
2
()
sin = tan() cos
cot(2) =
tan() + sin(2)
2 sin
2
()
Utilizando las anteriores igualdades trigonomtricas,
la transformacin de la matriz A mediante el mtodo de
Jacobi se puede escribir como
a
0
pq
= 0
a
0
pp
= a
pp
tan()a
pq
a
0
qq
= a
qq
+ tan()a
pq
a
0
pj
= a
pj
cos a
qj
sin j 6= p, q
a
0
qj
= a
pj
sin +a
qj
cos j 6= p, q
3 4
Problema 89 (3 puntos) Dentro del mtodo de Jacobi
para el clculo de autovalores, demostrar las igualdades
siguientes:
a
0
pq
= 0
a
0
pp
= a
pp
tan()a
pq
a
0
qq
= a
qq
+ tan()a
pq
a
0
pj
= a
pj
cos a
qj
sin j 6= p, q
a
0
qj
= a
pj
sin +a
qj
cos j 6= p, q
Veamos ahora la convergencia del mtodo de Jacobi
para el clculo de autovalores.
Teorema 24 Sea una matriz A simtrica. Sea A
1
= A,
y sea A
k
la matriz transformada de A
k1
, haciendo cero
el elemento no diagonal mayor en mdulo de la matriz
A
k1
, entonces los elementos diagonales de la matriz A
k
convergen (k ) hacia los autovalores de la matriz A.
Adems los elementos no diagonales de A convergen hacia
0.
Demostracin: [La-The] Pg. 576-577.
Algoritmo del Mtodo de Jacobi para el Clculo
de autovalores.
Los parmetros de entrada son la matriz simtrica
A, su dimensin DIM, el nmero mximo de iteraciones
Nmax y la tolerancia TOL para decidir cundo son ceros
los elementos no diagonales.
PARA n = 1, .., N max HACER
p = 2
q = 1
R = ABS(A(p, q))
PARA i = 3, ..., DIM HACER
PARA j = 1, ..., i 1 HACER
IF ABS(A(i, j)) > R HACER
R = ABS(A(i, j))
p = j
q = i
FIN IF
FIN PARA j
FIN PARA i
IF R < TOL HACER
PROCEDIMIENTO TERMINADO CORREC-
TAMENTE.
LOS AUTOVALORES SE ENCUENTRAN EN
LA DIAGONAL DE A.
SALIR
FIN IF
C = (A(q, q) A(p, p))/(2 A(p, q))
IF C < 0 HACER
T = C SQRT(1. +C C)
ELSE
T = C +SQRT(1. +C C)
FIN IF
CO = 1./SQRT(1. +T T)
SI = CO T
PARA j = 1, ..., DIM HACER
IF ( j 6= p AND j 6= q) HACER
D = A(p, j)
A(j, p) = A(p, j) = CO DSI A(q, j)
A(j, q) = A(q, j) = SI D +CO A(q, j)
FIN IF
FIN PARA j
A(p, p) = A(p, p) T A(p, q)
A(q, q) = A(q, q) +T A(p, q)
A(p, q) = A(q, p) = 0
FIN PARA n
PROCEDIMIENTO TERMINADO INCORRECTA-
MENTE
NMERO DE ITERACIONES MXIMO EXCE-
DIDO
Veamos ahora cmo podemos calcular los autovec-
tores. Al utilizar el mtodo de Jacobi, vamos transfor-
mando la matriz A multiplicndola por una secuencia de
matrices de rotacin R
1
, ...., R
M
, de tal forma que
R
1
M
.... R
1
1
AR
1
.... R
M
= D
donde D es una matriz diagonal que contiene los auto-
valores de A en la diagonal. Denotemos por B la matriz
B = R
1
.... R
M
. Despejando de la anterior igualdad
obtenemos que
AB = BD
Si denotamos por b
i
el vector columna i de la matriz
B, de la expresin anterior se obtiene que
Ab
i
= d
ii
b
i
Es decir, b
i
es el autovector de A asociado al autovalor
d
ii
. Por tanto, la matriz B determina los autovectores.
Numricamente, para calcular la matriz B en el algoritmo
anterior que calcula los autovalores, aadiremos en cada
iteracin las operaciones necesarios para ir obteniendo B.
En primer lugar, inicializamos B a la identidad antes de
entrar en el bucle. A continuacin, en cada iteracin hare-
mos B = B R
i
.Ahora bien, como R
i
es una matriz de
rotacin del tipo R
pq
(), cuando multiplicamos una matriz
B por la derecha por una matriz del tipo R
pq
() (denote-
mos por B
0
= B R
pq
() el resultado de la multiplicacin)
podemos observar que lo nico que cambia en B son los
vectores columnas p y q, que se transforman de la siguiente
manera:
b
0
ip
= cos()b
ip
sin()b
iq
i = 1, .., N
b
0
iq
= sin()b
ip
+ cos()b
iq
i = 1, .., N
Problema 90 (3 puntos) Utilizar el mtodo de Jacobi
para aproximar los autovalores y autovectores de la sigu-
iente matriz:
A =
2 0 1
0 1 0
1 0 1
3 5
Nota. Para no tener que buscar en cada paso el mximo
de los elementos no-diagonales de A
k
, el algoritmo de Ja-
cobi se puede modicar haciendo cero el primer elemento
a
pq
que se encuentre que verique |a
pq
| TOL.
Prctica 6 (Mtodo de Jacobi para el clculo de
autovalores y autovectores 6 horas)
Desarrollar en Fortran 77 la siguiente funcin :
FUNCTION ERROR_VECTORES(U,V,N) : De-
vuelve la diferencia entre los vectores U y V, de di-
mensin N, utilizando la frmula :
ERROR_V ECTORES =
1
N
N
X
i=1
ABS(U(i) V (i))
ABS(U(i)) + 1.
FUNCTION JACOBI(A,B,N,Nmax,TOL,Niter): Re-
aliza el clculo de los autovalores y autovectores de
una matriz simtrica A por el mtodo de Jacobi. B
es una matriz donde se guardan los autovectores por
columnas. La funcin devuelve 0 si termina bien y 1
en caso contrario.
FUNCTION ERROR_AUTOVECTORES
(A,AUTOVECTORES,AUTOVALORES,N,Nmax):
Para comprobar que los autovalores
i
y su au-
tovectores x
i
estn bien estimados, comparar
para cada autovalor
i
, utilizando la funcin ER-
ROR_VECTORES(), los vectores A x
i
y
i
x
i
.
Devolver la expresin
ERROR_AUTOV ECTORES =
max
i=1,N
ERROR_V ECTORES(A x
i
, x
i
)
Comprobar los resultados obtenidos con los siguientes
ejemplos, tomando TOL = 0.0001 y Niter = 1000:
1. A =
2 2 2
2 1 1
2 1 1
Resultado:
1
1
1
2,
2
1
1
4,
0
1
1
2
2. A =
2 1 0
1 2 1
0 1 2
Resultado:
1
0
1
2,
2
1
2 +
2,
2
1
2
3. Las matrices de dimensin 10 y 100 del directorio de
la asignatura.
4. A =
0 1 6 0 0 0
1 0 2 7 0 0
6 2 0 3 8 0
0 7 3 0 4 9
0 0 8 4 0 5
0 0 0 9 5 0
Resultados:
16. 6
. 363 27
. 626 28
. 901
1. 176 3
1.0
. 938 54
5. 942
2. 984 4
. 796 84
3. 088 8
1. 985 4
1.0
2. 165 3
2. 11
. 593 8
1. 562 8
0.05 170
. 400 89
1.0
. 659 86
2. 465
1. 746 5
. 853 75
. 575 36
. 215 57
1.0
1. 241 2
10. 06
. 521 32
. 741 24
. 998 09
. 855 2
1.0
. 268 11
12. 12
. 729 18
. 896 18
1. 324 6
1. 826 8
1.0
1. 767 6
u
n
, u
n1
k u
n
k=
max
3 6
Lim
n
sign
u
n
, u
n1
n u
n
k u
n
k
es un autovector de
max
Adems, dicho autovector tiene norma 1.
Teorema 26 sign
u
n
, u
n1
u
n
, u
n1
= 1 si
u
n
, u
n1
0 y sign
u
n
, u
n1
= 1 si
u
n
, u
n1
<
0.
Demostracin. En primer lugar, vamos a demostrar por
induccin la siguiente igualdad:
u
n+1
=
A
n
u
1
kA
n1
u
1
k
Para n = 1 la igualdad se cumple por la denicin de
u
2
. Supongamos que se cumple para n1, y demostrmoslo
para n:
u
n+1
= A
u
n
k u
n
k
= A
A
n1
u
1
kA
n2
u
1
k
kA
n1
u
1
k
kA
n2
u
1
k
=
A
n
u
1
kA
n1
u
1
k
Con lo que queda demostrado este primer resultado.
Por otro lado, como A posee una base de autovectores,
que denotaremos por x
i
, y u
1
no es ortogonal al espacio
generado por los autovectores asociados a
max
, entonces
u
1
se puede escribir como
u
1
=
1
x
1
+... +
N
x
N
donde supondremos que x
1
es un autovector asociado a
max
y que
1
6= 0. Por la igualdad anteriormente de-
mostrada obtenemos que
u
n
=
A
n1
u
1
kA
n2
u
1
k
=
1
n1
max
x
1
+... +
N
n1
N
x
N
n2
max
x
1
+... +
N
n2
N
x
N
=
= |
max
|
1
max
|
max
|
n1
x
1
+... +
N
N
|
max
|
n1
x
N
max
|
max
|
n2
x
1
+... +
N
N
|
max
|
n2
x
N
i
|
max
|
n
tienden hacia 0, salvo si
i
=
max
. En este caso, dicho
cociente es 1
n
, si
max
es positivo, o (1)
n
, si
max
es neg-
ativo. Por tanto, para n sucientemente grande el signo de
max
coincide con el signo del producto escalar (u
n
, u
n1
).
Adems
Lim
n
ku
n
k =
= |
max
|
max
|
max
|
n1
x
1
+... +
N
N
|
max
|
n1
x
N
max
|
max
|
n2
x
1
+... +
N
N
|
max
|
n2
x
N
=
= |
max
|
y por tanto
Lim
n
sign
u
n
, u
n1
k u
n
k=
max
Por otro lado, el trmino
sign
u
n
, u
n1
n
para n
sucientemente grande es 1
n
si
max
es positivo o (1)
n
si
max
es negativo. Sean x
1
, ...., x
M
los autovectores aso-
ciados a
max
, obtenemos que
Lim
n
sign
u
n
, u
n1
n u
n
k u
n
k
=
=
1
x
1
+... +
M
x
M
k
1
x
1
+... +
M
x
M
k
que es un autovector de
max
de norma 1.
Problema 91 (3 puntos) Aplicar el mtodo de la po-
tencia para aproximar el autovalor mximo y el autovec-
tor asociado de las siguientes matrices, realizando 3 it-
eraciones en el mtodo, hasta calcular u
4
y partiendo de
u
1
= (1, 1).
A =
2 1
0 1
A =
3 0
1 1
min
=
1
max{
0
i
autovalores de A
1
}
Por tanto, si aplicamos el mtodo anterior a A
1
,
obtenemos que la secuencia
u
n
= A
1
u
n1
k u
n1
k
verica que
Lim
n
sign
u
n
, u
n1
k u
n
k=
1
min
3 7
Lim
n
sign
u
n
, u
n1
u
n
k u
n
k
es un autovector de
min
En los casos prcticos, se evita calcular directamente
A
1
, y se obtiene u
n
resolviendo el sistema
Au
n
=
u
n1
k u
n1
k
Problema 92 (2 puntos) Calcular el autovalor mayor
y el autovector correspondiente de la matriz
2 1
1 1
2 1
0 3
Llegar hasta u
3
partiendo de u = (1, 1).
Para autovalores que se encuentren entre
min
y
max
,
se puede proceder de la manera siguiente: Se calcula
primero una aproximacin del autovalor de tal forma
que se encuentre ms cercano a que a cualquier otro
autovalor. Por ejemplo, utilizando el mtodo de Jacobi, si
consideramos la matriz A
0
= A I, donde es uno de
los elementos diagonales de la matriz que resulta de aplicar
el mtodo de Jacobi, entonces se obtiene que el autovalor
menor de A
0
es justamente , y, por tanto, podemos aplicar
el mtodo de la potencia inversa anterior. Ntese que si el
autovalor est calculado con mucha precisin, entonces
el autovalor ms pequeo de A
0
est muy prximo a 0, y
como el determinante de una matriz es el producto de sus
autovalores, ello indicara que el determinante de A
0
estara
muy prximo a 0 y podemos tener problemas al resolver
el sistema utilizado por ejemplo el mtodo de GAUSS a
travs de la funcin de la librera an.h IGAUSS(). Para
evitar esto, podemos perturbar ligeramente el valor de
para que IGAUSS() no d problemas. Algortmicamente,
quedara como sigue: Si es el autovalor que estamos
tratando, haremos
= 10
11
1 A
0
= AId
J = IGAUSS(A
0
, ......)
IF (J.NE.0) THEN
= 10.
= (1 +)
GOTO 1
ENDIF
Problema 94 (3 puntos) Calcular el autovalor y au-
tovector ms cercano a 2 de la matriz
0 1 0
0 3 1
0 0 1
0.5
0.25
0.5
.... u
8
=
.84
.73
.84
.... u
17
=
.98
.96
.98
0
1
2
0
1
2
0
1
2
0
1
2
0
c
J
=
1
2
0
1
2
1 1 0
1 2 0
0 1 3
x
y
z
1
3
1
partiendo de u
1
= (0, 0, 0)
Mtodo de Gauss-Seidel
Este mtodo consiste en tomar
M
GS
= (D +L)
1
(U)
c
GS
= (D +L)
1
b
A efectos prcticos, la aplicacin de este mtodo no
requiere el clculo directo de la matriz inversa (D +L)
1
,
puesto que el paso de una iteracin a otra puede hacerse
de la siguiente forma:
u
n
1
=
a
12
u
n1
2
... a
1N
u
n1
N
+b
1
a
11
u
n
2
=
a
21
u
n
1
a
23
u
n1
3
... a
2N
u
n1
N
+b
2
a
22
.
u
n
N
=
a
N1
u
n
1
a
N2
u
n
2
... a
NN1
u
n
N1
+b
N
a
NN
Si hacemos un barrido para el clculo de la solucin
de arriba hacia abajo, y vamos actualizando las compo-
nentes del vector aproximacin segn las vamos calcu-
lando, obtenemos el mtodo de Gauss-Seidel. Por tanto,
bsicamente, podemos decir que la diferencia entre el
mtodo de Gauss-Seidel y el mtodo de Jacobi es que en
el mtodo de Gauss-Seidel se actualiza el vector aproxi-
macin despus del clculo de cada componente, y en el
caso de Jacobi se actualiza slo al nal, despus de haber
calculado todas las componentes por separado.
Ejemplo 18 Vamos a aplicar el mtodo de Gauss-Seidel
al sistema del ejemplo anterior, es decir
2x y = 1
x + 2y z = 0
y + 2z = 1
3 9
Las iteraciones del mtodo de Gauss-Seidel aplicado
a este sistema consisten en
x
n
=
1 +y
n1
2
y
n
=
x
n
+z
n1
2
z
n
=
1 +y
n
2
Si hacemos iteraciones del esquema anterior a partir de la
aproximacin inicial u
1
= (0, 0, 0), obtenemos que
x
2
=
1 + 0
2
=
1
2
y
2
=
1
2
+ 0
2
=
1
4
z
2
=
1 +
1
4
2
=
5
8
De la misma forma, obtenemos que
u
3
=
. 5
. 25
. 625
.... u
8
=
. 976 56
. 976 56
. 988 28
1 0 1
0 2 0
1 0 1
1 1 0
1 2 0
0 1 3
x
y
z
1
3
1
partiendo de u
1
= (0, 0, 0)
Problema 99 (1 punto) Una variante del mtodo de
Gauss-Seidel consiste en tomar M = (D +U)
1
(L), y
c = (D +U)
1
b. Indicar, en este caso, qu diferencias de
implementacin habra con respecto al caso anterior.
Mtodo de relajacin
El objetivo de este mtodo es intentar mejorar el mtodo
de Gauss-Seidel introduciendo un parmetro de relajacin
w. Se toman, en este caso,
M
w
= (D +wL)
1
((1 w)DwU)
c
w
= w(D +wL)
1
b
Estas nuevas matrices permiten realizar un prome-
diado entre el resultado obtenido por Gauss-Seidel y el
estado de la solucin en la etapa anterior, de la forma
siguiente:
u
n
1
= w
a
12
u
n1
2
... a
1N
u
n1
N
+b
1
a
11
+ (1 w)u
n1
1
u
n
2
= w
a
21
u
n
1
... a
2N
u
n1
N
+b
2
a
22
+ (1 w)u
n1
2
.
u
n
N
= w
a
N1
u
n
1
... a
NN1
u
n
N1
+b
N
a
NN
+ (1 w)u
n1
N
La eleccin del parmetro w es, en general, un prob-
lema difcil. Sin embargo, en el caso de matrices tridiag-
onales, es decir, matrices con todos los elementos nulos
salvo la diagonal principal y sus codiagonales, el siguiente
resultado muestra la forma de calcular el valor ptimo de
w.
Teorema 28 Si A es una matriz tridiagonal y (M
J
) < 1,
entonces el valor de w que optimiza la velocidad de con-
vergencia del mtodo es:
w
opt
=
2
1 +
p
1 (M
J
)
2
Como puede observarse de la expresin anterior, el
valor de w
opt
se encuentra siempre entre 1 y 2.
Demostracin [La-Th]. Pg.358-362.
Ejemplo 19 Vamos aplicar el mtodo de relajacin al sis-
tema del ejemplo anterior, es decir
2x y = 1
x + 2y z = 0
y + 2z = 1
En este caso, (M
J
) =
1
2
y w
opt
= 1. 17. Las it-
eraciones del mtodo de relajacin aplicado a este sistema
consisten en
x
n
= w
1 +y
n1
2
+ (1 w)x
n1
y
n
= w
x
n
+z
n1
2
+ (1 w)y
n1
z
n
= w
1 +y
n
2
+ (1 w)z
n1
Si hacemos iteraciones del esquema anterior a partir
de la aproximacin inicial u
1
= (0, 0, 0) y tomando w =
w
opt
= 1.17, obtenemos que
u
2
=
. 585
. 342
. 785
.... u
3
=
. 686
. 802
. 921
... u
8
=
. 999
. 999
. 999
4 0
Problema 100 (3 puntos) Calcular 3 iteraciones del
mtodo de relajacin para resolver el sistema
1 1 0
1 2 0
0 1 3
x
y
z
1
3
1
partiendo de u
1
= (0, 0, 0). Calcular previamente el
parmetro de relajacin ptimo.
Convergencia de los mtodos iterativos
Vamos a denotar por e
n
= u
n
u el error relativo entre
la solucin del sistema u y la aproximacin en la etapa n,
u
n
.
Teorema 29 Se considera el esquema iterativo u
n
=
Mu
n1
+c. Entonces
e
n
= M
n1
e
1
Demostracin: La solucin del sistema satisface que u =
Mu + c. Restando esta igualdad de la igualdad u
n
=
Mu
n1
+c, obtenemos que
u
n
u = M(u
n1
u) = M
n1
(u
1
u)
Teorema 30 El mtodo iterativo u
n
= Mu
n1
+ c con-
verge para cualquier aproximacin inicial si y slo si
(M) < 1.
Demostracin: El resultado es inmediato a partir del
hecho de que una matriz M
n
converge hacia 0 cuando
n si y slo si (M) < 1
Teorema 31 Si en el mtodo de relajacin w / (0, 2),
entonces (M
w
) 1.
Demostracin: En primer lugar, observamos que las ma-
trices D+Lw y (1w)DwU son matrices triangulares y,
por tanto, su determinante es el producto de los elementos
diagonales. Adems, teniendo en cuenta que el determi-
nante del producto de dos matrices es el producto de sus
determinantes y que el determinante de la matriz inversa
es el inverso del determinante, obtenemos que
|M
w
| =
|(1 w)DwU|
|(D +wL)|
=
(1 w)
N
i
a
ii
i
a
ii
Por lo tanto, como el determinante de una matriz es
el producto de sus autovalores, obtenemos que, si w /
(0, 2), entonces |1 w| 1 y, en consecuencia, M
w
posee
al menos un autovalor de mdulo mayor o igual que uno.
Teorema 32 Si una matriz A verica que
| a
ii
|>
X
j6=i
| a
ij
| i.
o
| a
jj
|>
X
i6=j
| a
ij
| j.
entonces el mtodo de Jacobi asociado al sistema Au = b
converge para cualquier aproximacin inicial.
Demostracin: En primer lugar, observamos que la ma-
triz M
J
puede expresarse como:
0
a
12
a11
a
13
a11
.
a
1N
a11
a21
a
22
0
a23
a
22
.
a2N
a
22
. . . . .
a
N1,1
aN1,N1
a
N1,2
aN1,N1
. 0
a
N1,N
aN1,N1
aN,1
a
N,N
aN,2
a
N,N
.
aN,N1
a
N,N
0
2 1 0
1 2 1
0 1 2
1 1 0
1 2 0
0 1 3
x
y
z
1
3
1
2.
2 1 0
1 2 1
0 1 2
x
y
z
1
0
1
3.
1 3 3
3 1 3
3 3 1
x
y
z
7
7
7
u u
0
+ O
k u u
0
k
2
donde u
0
es una aproximacin de la solucin de f(u) = 0.
Si truncamos el desarrollo e igualamos a 0 (para aproximar
la raz) obtenemos que la raz del sistema lineal se obtiene
resolviendo el sistema
f(u
0
)z = f(u
0
)
u
1
= u
0
+z
En el caso general, a partir de una aproximacin u
n
se obtiene la aproximacin u
n+1
en dos etapas:
f(u
n
)z = f(u
n
)
u
n+1
= u
n
+z
Ejemplo 21 Consideremos el siguiente sistema no lineal
de ecuaciones:
x
2
y
2
+ 1 = 0
2xy = 0
La matriz gradiente de esta funcin viene dada por
f(u
n
) =
2x 2y
2y 2x
4 2
Tomemos como aproximacin inicial u
1
= (1, 1). El sis-
tema que hay que resolver para pasar de una iteracin a
otra es
2x
n
2y
n
2y
n
2x
n
z
1
z
2
x
2
n
y
2
n
+ 1
2y
n
x
n
Si partimos de u
1
= (1, 1), para obtener u
2
tenemos que
resolver
2 2
2 2
z
1
z
2
1
2
3
4
,
1
4
. Por tanto, u
2
viene dado
por
u
2
=
1
1
3
4
1
4
1
4
3
4
Para calcular u
3
, tenemos que resolver el sistema
1
2
3
2
3
2
1
2
z
1
z
2
=
1
4
3
4
2
+ 1
6
16
cuya solucin es
13
40
,
9
40
. Por tanto, u
3
viene dado por
u
3
=
1
4
3
4
13
40
9
40
3
40
39
40
l
H
i,j
x
l
(x
k
) =
1 si l = j y k = i
0 l 6= j o k 6= i
A partir de los polinomios base de Hermite, el poli-
nomio interpolador de Hermite se dene como:
P(x) =
N
X
i=0
M
X
j=0
j
f
x
j
(x
i
)H
i,j
(x)
Problema 108 (3 puntos) Calcular los polinomios base
de Hermite que corresponden a tomar como puntos de in-
terpolacin x
0
= 1, x
1
= 1, y el orden de derivacin
M = 1.
Interpolacin por splines cbicos
Uno de los problemas bsicos del polinomio interpolador
de Lagrange, es que, para valores grandes de N, los poli-
nomios de grado N pueden tener un carcter fuertemente
oscilante, y los resultados obtenidos por la interpolacin
pueden no ser muy satisfactorios, como indica el ejemplo
siguiente.
4 3
Ejemplo 22 El polinomio base de Lagrange centrado en
0 sobre los puntos x
i
= 5, 4, 3, 2, 1, 0, 1, 2, 3, 4, 5 es
P
0
(x) =
(x
2
1)(x
2
4)(x
2
9)(x
2
16)(x
2
25)
14400
Tiene un marcado carcter oscilante como muestra su
grca en el intervalo [5, 5].
Ejemplo 23
(x
2
1)(x
2
4)(x
2
9)(x
2
16)(x
2
25)
14400
=
5 2.5 0 -2.5 -5
5
3.75
2.5
1.25
0
x
y
x
y
Para evitar este problema de oscilaciones de los poli-
nomios de Lagrange, cuando se trabaja con muchos puntos
de interpolacin, se suele interpolar la funcin utilizando
polinomios a trozos, deniendo un polinomio distinto para
cada intervalo [x
i
, x
i+1
]. La tcnica ms conocida es la
interpolacin por splines cbicos, que son polinomios de
grado 3. Por tanto, tendremos un polinomio de grado 3 dis-
tinto P
i
3
(x) = d
i
(xx
i
)
3
+c
i
(xx
i
)
2
+b
i
(xx
i
)+a
i
para
cada intervalo [x
i
, x
i+1
]. Si hay N+1 puntos, el nmero de
polinomios es N. Para denir estos polinomios, se imponen
las siguientes condiciones:
P
i
3
(x
i
) = f(x
i
) i = 0, .., N 1
P
i
3
(x
i+1
) = f(x
i+1
) i = 0, ..., N 1
P
i
3
x
(x
i+1
) =
P
i+1
3
x
(x
i+1
) i = 0, .., N 2
2
P
i
3
x
2
(x
i+1
) =
2
P
i+1
3
x
2
(x
i+1
) i = 0, ..., N 2
Vamos a introducir la notacin h
i
=
x
i+1
x
i
. Ntese que, para denir los poli-
nomios, tenemos que buscar 4N valores, es decir:
a
0
, ...., a
N1
, b
0
, ..., b
N1
, c
0
, ....., c
N1,
d
0
, ...., d
N1.
Por razones tcnicas, como veremos posteriormente,
vamos a utilizar tambin los valores a
N
y c
N
.
Teorema 34 Si una familia de polinomios P
i
3
(x) = d
i
(x
x
i
)
3
+ c
i
(x x
i
)
2
+ b
i
(x x
i
) + a
i
, i = 0, .., N, satisface
las condiciones anteriores, entonces
a
i
= f(x
i
) i = 0, .., N
d
i
=
c
i+1
c
i
3h
i
i = 0, .., N 1
b
i
=
a
i+1
a
i
h
i
h
i
(2c
i
+c
i+1
)
3
i = 0, .., N 1
h
i1
c
i1
+ 2(h
i1
+h
i
)c
i
+h
i
c
i+1
=
=
3(a
i+1
a
i
)
h
i
3 (a
i
a
i1
)
h
i1
para i = 1, .., N 1.
Demostracin De la condicin P
i
3
(x
i
) = f(x
i
), se ob-
tiene de forma inmediata que a
i
= f(x
i
). De la condicin
2
P
i+1
3
x
2
(x
i+1
) =
2
P
i
3
x
2
(x
i+1
), se obtiene que
2c
i+1
= 6d
i
h
i
+ 2c
i
de donde, despejando, obtenemos que
d
i
=
c
i+1
c
i
3h
i
De la Condicin P
i
3
(x
i+1
) = f(x
i+1
), se obtiene que
d
i
h
3
i
+c
i
h
2
i
+b
i
h
i
+a
i
= a
i+1
Despejando, obtenemos que
b
i
=
a
i+1
a
i
h
i
d
i
h
2
i
c
i
h
i
=
a
i+1
a
i
h
i
h
i
(2c
i
+c
i+1
)
3
Finalmente, de la condicin
P
i
3
x
(x
i
) =
P
i1
3
x
(x
i
), se
obtiene que
b
i
= 3d
i1
h
2
i1
+ 2c
i1
h
i1
+b
i1
y, despejando todo en funcin de c
i
, se obtiene la relacin
h
i1
c
i1
+ 2(h
i1
+h
i
)c
i
+h
i
c
i+1
=
=
3(a
i+1
a
i
)
h
i
3 (a
i
a
i1
)
h
i1
Ntese que esta ltima relacin determina un sistema
de ecuaciones donde las incgnitas son las variables c
i
. Di-
cho sistema tiene N+1 incognitas (c
0
, ..., c
N
) y N1 ecua-
ciones. Para completar dicho sistema, hay que aadir una
ecuacin que involucre a c
0
y otra ecuacin que involucre
a c
N
. Para aadir estas dos ecuaciones hay dos proced-
imientos estndares. El primero consiste simplemente en
jar c
0
= c
N
= 0, lo que signica que
c
0
=
2
P
0
3
x
2
(x
0
) = 0
c
N
=
2
P
N1
3
x
2
(x
N
) = 0
4 4
El segundo procedimiento se utiliza cuando utilizamos
los valores de f
0
(a) y f
0
(b). En este caso, imponemos que
P
0
3
x
(x
0
) = f
0
(a)
P
N1
3
x
(x
N
) = f
0
(b)
de donde salen las ecuaciones
f
0
(a) =
a
1
a
0
h
0
h
0
3
(2c
0
+c
1
)
f
0
(b) =
a
N
a
N1
h
N1
h
N1
3
(2c
N1
+c
N
)
Por lo tanto, siguiendo con el resultado del teorema
anterior, para calcular los splines cbicos es necesario, en
primer lugar, tomar a
i
= f(x
i
). A continuacin, se resuelve
un sistema de ecuaciones tridiagonal para el clculo de los
c
i
. Los b
j
y d
j
se calculan directamente a partir de las
relaciones mostradas en el teorema anterior.
Ejemplo 24 Vamos a calcular los polinomios interpo-
ladores utilizando splines cbicos al interpolar la funcin
f(x) en los puntos x = 0, 1, 2, y 3, sabiendo que f(0) = 0,
f(1) = 1, f(2) = 0, f(3) = 2, tomando c
0
= c
3
= 0. En
este caso h
i
= 1. Debemos denir 3 polinomios distintos
que corresponden a los intervalos [0, 1], [1, 2], y [2, 3]. Los
trminos a
i
vienen dados por
a
0
a
1
a
2
a
3
0
1
0
2
4 1
1 4
c
1
c
2
6
9
cuya solucin es
c
1
c
2
2.2
2.8
.
Los valores b
i
y d
i
vienen dados por
d
0
=
2.2 0
3
= 0.733
d
1
=
2.8 + 2.2
3
= 1.667
d
2
=
0. 2.8
3
= 0.933
b
0
= 1
2.2
3
= 1.733
b
1
= 1
4.4 + 2.8
3
= 0.467
b
2
= 2
5.6 + 0
3
= 0.133
Por tanto, los polinomios son
P
0
(x) = 0.733x
3
+ 1.733x
P
1
(x) = 1.667 (x 1)
3
2.2 (x 1)
2
0.467 (x 1) + 1
P
2
(x) = 0.933 (x 2)
3
+ 2.8 (x 2)
2
+ 0.133 (x 2)
A continuacin se muestra una grca con los 3 poli-
nomios concatenados en el intervalo [0, 3] :
Como puede observarse, por las condiciones sobre las
derivadas que hemos impuesto, no es posible distinguir ge-
omtricamente, al trazar la curva, cuales son los puntos de
unin entre los tres polinomios. Es decir, parece, a simple
vista, el trazado de una nica funcin. Veamos ahora gr-
camente el perl de la derivada de los polinomios P
0
(x),
P
1
(x), y P
2
(x).
3 2.75 2.5 2.25 2 1.75 1.5 1.25 1 0.75 0.5 0.25 0
2.75
2.5
2.25
2
1.75
1.5
1.25
1
0.75
0.5
0.25
0
-0.25
-0.5
-0.75
-1
-1.25
x
y
x
y
como puede observarse, tampoco sobre la derivada se apre-
cian los puntos de unin de los polinomios. Sin embargo,
sobre la grca de la derivada segunda los puntos de unin
se detectan en los lugares donde encontramos un pico, tal
y como se muestra en la grca de la derivada segunda
siguiente:
3 2.75 2.5 2.25 2 1.75 1.5 1.25 1 0.75 0.5 0.25 0
5
4
3
2
1
0
-1
-2
-3
-4
x
y
x
y
4 5
Problema 109 (3 puntos) Calcular los polinomios que
determinan la interpolacin por splines cbicos de la fun-
cin f(x) = sin
2
x
x
a
i
x
a
i
2
, 0,
2
, .
La interpolacin a travs de polinomios
trigonomtricos
La base de la transformada de Fourier discreta es la uti-
lizacin de los polinomios trigonomtricos dados por la ex-
presin
P
k
(x) = e
ikx
4 6
Dada una funcin f(x), denida en el intervalo
[, ], pretendemos aproximar f(x) como
f(x)
N
X
k=N
c
k
e
ikx
donde c
k
son coecientes, en general complejos. El sigu-
iente resultado determina la forma de calcular dichos coe-
cientes c
k
:
Teorema 35 Los coecientes c
k
que minimizan el error
cuadrtico medio
E(c
N
, ..., c
N
) =
Z
f(x)
N
X
k=N
c
k
e
ikx
!
2
dx
vienen dados por
c
k
=
R
f(x)e
ikx
dx
2
Demostracin En primer lugar, observamos que, dada
la forma cuadrtica del funcional E(c
N
, ..., c
N
), ste
debe poseer mnimos. Por otro lado, en un mnimo,
las derivadas parciales de E(c
N
, ..., c
N
) con respecto a
cualquier c
k
son cero, y por tanto
E
c
k
(c
N
, ..., c
N
) =
Z
f(x)
N
X
l=N
c
l
e
ilx
!
e
ikx
dx = 0
con lo que el resultado del teorema sale de forma inmedi-
ata, teniendo en cuenta que
Z
e
ilx
e
ikx
dx =
2 si l = k
0 si l 6= k
Ejemplo 28 Consideremos la funcin
f(x) =
1 si x [
2
,
2
]
0 si x / [
2
,
2
]
Vamos a calcular el polinomio trigonomtrico inter-
polante para N = 3. Los valores de c
k
son
c
0
=
R
f(x)dx
2
=
1
2
c
1
= c
1
=
R
f(x)e
ix
dx
2
=
1
c
2
= c
2
=
R
f(x)e
2ix
dx
2
= 0
c
3
= c
3
=
R
f(x)e
3ix
dx
2
=
1
3
Por tanto, el polinomio trigonomtrico interpolador es
P
3
(x) =
1
2
+
2
cos(x)
2
3
cos(3x)
La siguiente grca muestra la aproximacin entre
f(x) y P
3
(x):
2.5 1.25 0 -1.25 -2.5
1
0.75
0.5
0.25
0
x
y
x
y
Problema 111 (3 puntos) Calcular el polinomio
trigonomtrico, tomando N = 2, que interpola la funcin
f(x) = |x| en el intervalo [, ].
Aproximacin por mnimos cuadrados
La aproximacin mnimo cuadrtica aproxima, a travs de
una funcin, un conjunto de valores de forma global, sin
exigir que la funcin aproximante pase exactamente por
ese conjunto de puntos.
Dado un conjunto de valores {(x
i
, y
i
)}
i=1,..,N
, la
aproximacin mnimo cuadrtica lineal consiste en buscar
la recta y = ax +b, tal que la funcin de error cuadrtico
E(a, b) =
N
X
i=1
(ax
i
+b y
i
)
2
sea mnima.
Teorema 36 Los valores a y b que minimizan el error
cuadrtico anterior son
a =
N
P
N
i=1
x
i
y
i
P
N
i=1
x
i
P
N
i=1
y
i
N
P
N
i=1
x
2
i
P
N
i=1
x
i
2
b =
P
N
i=1
x
2
i
P
N
i=1
y
i
P
N
i=1
x
i
y
i
P
N
i=1
x
i
N
P
N
i=1
x
2
i
P
N
i=1
x
i
2
Demostracin En primer lugar, observamos que, dada
la forma cuadrtica que tiene el funcional, debe poseer un
4 7
mnimo. Adems, en un mnimo del funcional E(a, b), las
derivadas parciales son cero, y por tanto
E
a
(a, b) = 2
N
X
i=1
(ax
i
+b y
i
) x
i
= 0
E
b
(a, b) = 2
N
X
i=1
(ax
i
+b y
i
) = 0
Esto da lugar a un sistema lineal de ecuaciones cuyas
incgnitas son a y b, y cuya resolucin lleva al resultado
establecido en el teorema.
Problema 112 (2 puntos) Calcular la aproximacin
mnimo cuadrtica lineal de la tabla
x
i
y
i
0 0
1 1
2 0
3 2
BIBLIOGRAFA BSICA
[Bu-Fa] Burden R., Faires D. Anlisis Numrico, Grupo
Editorial Iberoamrica 1985. Esta obra es un clsico del
Clculo Numrico, destaca por una exposicin simple y al
mismo tiempo clara, con mltiples ejemplos y una descrip-
cin de los algoritmos bien diseada.
[Bo] Borse G. Programacin en fortran 77 Anaya,
1989. En esta obra se presenta el lenguaje de programacin
fortran 77 con numerosas aplicaciones al anlisis numrico.
[Ci] Ciarlet P.G. Introduction lanalyse numrique
matricielle et loptimisation, Masson , 1990. Con un
exquisito rigor se abordan los temas bsicos del Anlisis
Numrico Matricial y mtodos de optimizacin, incluyendo
la resolucin de sistemas a travs de mtodos directos, it-
erativos y mtodos tipo gradiente, as como el clculo de
autovalores y vectores propios.
[Hi] Higham N. "Accuracy and Stability of Numeri-
cal Algorithms", SIAM, 1996 Esta obra, muy reciente, da
una visin general sobre los ltimos avances en Anlisis
Numrico, haciendo especial nfasis en la precisin de los
algoritmos numricos y en la propagacin de errores, tam-
bin resulta de inters la descripcin de las aritmticas que
utilizan los ordenadores ms recientes como la aritmtica
Standard de I.E.E.E..
[Hu] Hultquist P. F. Numerical Methods for
Engineers and Computer Scientists, The Ben-
jamin/Cummings Publishing Company, Inc. 1988.
Esta obra, presenta una cuidada seleccin de temas
bsicos en Anlisis Numrico, sin pretender ser tan
exhaustiva como otras obras de carcter ms general,
la buena presentacin de los temas elegidos la hacen de
inters.
[Is-Ke] Isaacson E., Keller H. Analysis of Numerical
Methods. John Wiley and Sons, 1966. Uno de los libros
clsicos ms conocidos en Anlisis Numrico. Destaca por
el rigor matemtico en su exposicin.
[Ki-Ch] Kincaid D., Cheney W. "Anlisis Numrico".
Addison-Wesley Iberoamericana, 1994. Excelente libro de
base para un curso de Mtodos Numricos. Contiene todos
los tpicos habituales con una descripcin muy completa
y detallada. Los algoritmos estn muy bien descritos a
travs de un seudocdigo. Trae una buena seleccin de
problemas.
[La-Th] Lascaux P., Thodor R. "Analyse numrique
matricielle applique lart de lingnieur. Vol. 1 Mth-
odes directes y Vol. 2 Mthodes itratives ", Masson, 1993.
Esta obra, dividida en dos volmenes, trata en profundi-
dad todos los tpicos relacionados con el Anlisis Numrico
Matricial. Su mayor virtud es el rigor matemtico con el
que se tratan los temas y una cuidada presentacin.
[St] Stewart G.W. Afternotes on Numerical Analy-
sis SIAM, 1996. Esta obra, sin pretender ser exhaustiva,
muestra las ltimas tendencias en cuanto a la enseanza
de los conceptos bsicos del Anlisis Numrico.
4 8
APNDICE A: Resumen de los comandos de
UNIX
En este breve resumen seguiremos el siguiente esquema.
En primer lugar, aparece el comando UNIX. A contin-
uacin, entre parntesis, su equivalente en MS-DOS (si
existe). Finalmente, un comentario y un ejemplo.
cd (cd) cambia el directorio activo
>cd /users/p701/fortran77
more (type) visualiza el contenido de un chero
>more /users/p701/fortran77/programas/prog1.f
ls (dir) visualiza contenido de un directorio
>ls /users/p701/fortran77
cp (copy) copia un chero en otro.
>cp /users/p701/fortran77/programas/prog1.f .
rm (del) borra un chero
>del prog1.f
man (help) suministra ayuda sobre un comando
> man ls
logout se termina la sesin y se sale del sistema
>logout
ps visualiza los nmeros de procesos que estn abiertos
que corresponden al usuario alumno
>ps -u alumno
kill interrumpe la ejecucin de un proceso de nmero
Nproceso
>kill -9 Nproceso
mkdir (mkdir) crea un directorio
>mkdir practica1
rmdir (rmdir) borra un directorio
>rmdir practica1
mv (move) cambia de nombre o ubicacin un archivo.
>mv prog1.f practica1.f
chmod cambia los permisos de lectura, escritura y eje-
cucin de un chero. Este comando es de utilidad para
salvaguardar la informacin de directorios y cheros de
miradas ajenas.
Hacer > man chmod para mirar las opciones.
chown cambia el propietario de un chero.
Hacer > man chown para mirar las opciones.
du (tree) visualiza la cadena de directorios
>du /users/p701
nd busca un archivo de nombre file en el directorio dir
>nd dir -name file -print
grep busca los cheros que contenga la cadena de carac-
teres string
>grep string *
APNDICE B: Resumen del procesador de texto
vi
El procesador de texto vi tiene la ventaja de estar pre-
sente en cualquier mquina que trabaje sobre UNIX y no
requiere ningn entorno grco. Puede ejecutarse en dos
modos. El modo comando (el que est por defecto al en-
trar en vi), donde se ejecutan comandos, y el modo edicin,
que es donde se escribe normalmente el texto.
Intercambio entre modo comando y modo edicin
ESC pasa de modo edicin a modo comando
i pasa de modo comando a modo edicin
A pasa a modo edicin y pone el cursor al nal
de la lnea
O inserta una nueva lnea, pasa a modo edicin y
pone el cursor al principio de la nueva lnea
Manejo de Ficheros (en modo comando)
:w escribe en disco el chero
:wq escribe en disco el chero y sale del vi
:e fichero.name edita el chero fichero.name
:q! sale del vi sin guardar cambios.
:w fichero.name escribe el chero actual en el
chero fichero.name en disco
!comando ejecuta el comando UNIX comando
:set nu presenta los nmeros de lnea en pantalla
Comandos para desplazarse por el texto (en modo
comando)
Crtl F pgina adelante
Crtl B pgina atrs
$ pone el cursor en el nal de la lnea
0 pone el cursor en el principio de lnea
/string busca hacia adelante el string string
?string busca hacia atras el string string
n repite la ltima bsqueda
G va al nal del texto
3 G va a la lnea nmero 3.
Comandos para borrar lneas o caracteres (en
modo comando)
x borra el carcter donde se encuentra el cursor
r character remplaza el carcter donde se encuen-
tra el cursor por el carcter character
dd borra la lnea donde se encuentra el cursor
3 dd borra 3 lneas desde donde se encuentra el
cursor hacia abajo
dw borra la palabra donde se encuentra el cursor
Comandos para copiar y desplazar bloques (en
modo comando)
yy copia en el buer la lnea donde se encuentra
el cursor
3yy copia en el buer 3 lneas hacia abajo desde
el cursor
dd copia (y borra) al buer la lnea donde se en-
cuentra el cursor
3dd copia (y borra) al buer 3 lneas hacia abajo
desde el cursor
p copia el contenido del buer en el texto.
APNDICE C: Algunos fallos comunes en
Fortran
1. No poner END al nal del programa principal o de
la funcin.
4 9
2. Escribir nmeros como 1/2 10 20 en precisin
entera. Solucin: Escribir 1./2. 10. 20.
3. Utilizar variables enteras como otantes o al revs.
Sugerencia: Aunque no sea necesario, declarar los
tipos de todas las variables que se utilicen al principio
del programa o funcin.
4. Utilizar un parmetro de una funcin para asignar
dinmicamente memoria a un vector o matriz en el in-
terior de la funcin. Solucin: Poner una declaracin
de PARAMETER al principio de la funcin y con ella
asignar las memorias de forma esttica.
5. No poner ningn comentario en los programas.
6. Anidar excesivamente los programas. Siempre hay
que buscar que el nmero de anidamientos sea mn-
imo.
7. No respetar los tipos en los pasos de parmetros de
las funciones.
8. Utilizar vectores sin declararlos con la sentencia DI-
MENSION.
9. No pasar la dimensin de un vector como parmetro
de una funcin.
10. Exceso de sentencias GOTO. Las sentencias GOTO
pueden dicultar el seguimiento del ujo del programa
y slo hay que utilizarlas cuando sean indispensables.
11. A veces, los programas pueden fallar por errores de
redondeo en los clculos. Fortran da la posibilidad
de cambiar el nmero de bits utilizados para alma-
cenar las variables en el momento de la compilacion.
Por ejemplo, si hacemos f77 -rn prueba.f -o prueba
donde n es 8 16, aumentaremos la precisin de la
aritmtica para las variables reales. Anlogamente,
si en lugar de utilizar la directiva -rn utilizamos -dn
aumentaremos la precisin de las variables declaradas
DOUBLE PRECISION, y si utilizamos -in las vari-
ables enteras.
5 0