Sunteți pe pagina 1din 50

ANLISIS NUMRICO

Miguel Alemn Flores, Luis lvarez Len y Javier Snchez Prez


Departamento de Informtica y Sistemas
Universidad de Las Palmas
Campus de Tara
35017 Las Palmas, Espaa
Email: {maleman,lalvarez,jsanchez}@dis.ulpgc.es
Contenidos
1 INTRODUCCIN 2
2 ARITMTICAS DE PRECISIN FINITA
Y FUENTES DE ERRORES NUMRICOS 2
2.1 Aritmticas de precisin nita . . . . . . . . 2
2.2 Prctica 1 (Aritmticas nitas, 2 horas) . 5
2.3 Fuentes de errores numricos . . . . . . . . 7
3 CLCULO DE LOS CEROS DE UNA FUN-
CIN 8
3.1 Mtodo de la biseccin . . . . . . . . . . . . 8
3.2 Mtodo de la Regula-falsi (regla de lo falso) 8
3.3 Mtodo de Newton-Raphson . . . . . . . . . 8
3.4 El mtodo de la Secante . . . . . . . . . . . 8
3.5 Mtodo de Mller . . . . . . . . . . . . . . . 9
3.6 Prctica 2 (Mtodo de Mller, 4 horas) . . 9
3.7 Clculo de las races de un polinomio . . . . 10
3.7.1 Algoritmo de Horner para evaluar
un polinomio en un punto . . . . . . 10
4 INTERPOLACIN DE FUNCIONES I 14
4.1 Interpolacin por polinomios de Lagrange . 14
4.2 Error de interpolacin de Lagrange y poli-
nomios de Chebychev . . . . . . . . . . . . 15
4.3 Mtodo de diferencias de Newton para el
clculo del polinomio interpolador de La-
grange . . . . . . . . . . . . . . . . . . . . . 15
4.4 Implementacin de funciones elementales . . 18
4.4.1 Aproximacin de la exponencial e
x
. 18
4.5 Prctica 3 (Aproximacin de e
x
, 2 horas) . 18
4.5.1 Aproximacin de funciones
trigonomtricas . . . . . . . . . . . . 18
4.5.2 Aproximacin de la funcin ln(x) . . 19
5 ANLISIS NUMRICO MATRICIAL I 19
5.1 Mtodo de Gauss . . . . . . . . . . . . . . . 19
5.2 Estimacin del error de un mtodo para re-
solver sistemas . . . . . . . . . . . . . . . . 21
5.3 Mtodo de Cholesky . . . . . . . . . . . . . 21
5.4 Prctica 4 (Mtodo de Cholesky, 6 horas) 22
5.5 Mtodo de Crout para matrices tridiagonales 22
5.6 Subrutinas en Fortran 77 para la lectura y
escritura en disco de vectores y matrices . . 23
6 DIFERENCIACIN E INTEGRACIN
NUMRICA 24
6.1 Diferenciacin Numrica . . . . . . . . . . . 24
6.2 Diferenciacin numrica en dimensiones su-
periores . . . . . . . . . . . . . . . . . . . . 25
6.2.1 Discretizacin del Laplaciano . . . . 26
6.2.2 Discretizacin del gradiente . . . . . 26
6.3 Integracin Numrica . . . . . . . . . . . . . 27
6.3.1 Mtodos de Cuadratura de Gauss . . 27
6.3.2 Frmulas de Integracin Numrica
Compuestas . . . . . . . . . . . . . . 28
6.4 Prctica 5 (Implementacin Mtodo de In-
tegracin de Simpson, 2 horas) . . . . . . . 29
6.5 Integracin numrica en dimensiones supe-
riores . . . . . . . . . . . . . . . . . . . . . . 29
7 ANLISIS NUMRICO MATRICIAL II 31
7.1 Normas de vectores y matrices . . . . . . . 31
7.2 Condicionamiento de una matriz . . . . . . 33
7.3 Clculo de autovalores y autovectores . . . 33
7.3.1 Mtodo de Jacobi . . . . . . . . . . 34
7.4 Prctica 6 (Mtodo de Jacobi para el cl-
culo de autovalores y autovectores 6 horas) 36
7.4.1 Mtodo de la potencia . . . . . . . . 36
7.4.2 Mtodo de la potencia inversa . . . . 37
7.5 Mtodos iterativos de resolucin de sis-
temas lineales . . . . . . . . . . . . . . . . . 38
7.5.1 Mtodo de Jacobi . . . . . . . . . . 39
7.5.2 Mtodo de Gauss-Seidel . . . . . . . 39
7.5.3 Mtodo de relajacin . . . . . . . . . 40
7.5.4 Convergencia de los mtodos iterativos 41
7.6 Prctica 7 (Mtodo de relajacin, 2 horas) 42
7.7 Mtodo de Newton-Raphson para sistemas
de ecuaciones no lineales . . . . . . . . . . . 42
8 INTERPOLACIN DE FUNCIONES II 43
8.1 Interpolacin de Hermite . . . . . . . . . . . 43
8.2 Interpolacin por splines cbicos . . . . . . 43
8.3 La interpolacin a travs de la funcin seno
cardinal . . . . . . . . . . . . . . . . . . . . 46
8.4 La interpolacin a travs de polinomios
trigonomtricos . . . . . . . . . . . . . . . . 46
8.5 Aproximacin por mnimos cuadrados . . . 47
9 BIBLIOGRAFA BSICA 48
1
10 APNDICE A: Resumen de los comandos
de UNIX 49
11 APNDICE B: Resumen del procesador de
texto vi 49
12 APNDICE C: Algunos fallos comunes en
Fortran 49
INTRODUCCIN
El presente documento es un texto de referencia bsico so-
bre los contenidos de la disciplina de Anlisis Numrico
en el contexto curricular de una Ingeniera Informtica.
Aunque el texto cubre los contenidos mnimos necesarios,
resultar de gran inters para los alumnos complementar
la informacin aqu suministrada con los textos de referen-
cia bsicos mencionados en la bibliografa. Muchas de las
demostraciones de los resultados presentados se encuen-
tran en este texto. En los casos en que las demostraciones
no se incluyen, se suministra el libro y la pgina donde
se encuentra tal demostracin, para que el alumno intere-
sado pueda estudiarla por su cuenta. En general, todos los
temas presentados aparecen bien desarrollados en los libros
de texto clsicos mencionados en la bibliografa. La nica
excepcin es el tema de aritmticas de precisin nita, que
se ha desarrollado en este texto con algo ms de detalle y
con un enfoque algo ms moderno que en los libros clsi-
cos, por considerar que, en el contexto de una Ingeniera
Informtica, este tema es de especial relevancia.
El lenguaje de programacin que se utilizar es el For-
tran. Se ha elegido este lenguaje por ser la plataforma
donde se han desarrollado habitualmente los grandes pro-
gramas de clculo numrico y por estar especialmente
orientado al clculo cientco. En el texto se va intro-
duciendo este lenguaje de programacin a travs de pro-
gramas ejemplo. Estos programas ejemplo se encuentran a
disposicin de los alumnos en el directorio de la asignatura
/users/asignaturas/ii-an de la mquina serdis.dis.ulpgc.es.
Tambin se encuentra a disposicin de los alumnos el
chero an.h, donde se encuentran todas las subrutinas
denidas en estos programas ejemplo.
En el texto se proponen unas prcticas de laboratorio
para realizar a lo largo de la asignatura. Para estable-
cer el orden de imparticin de los contenidos presentes en
este documento se ha utilizado, como criterio preferente,
la coordinacin entre el programa de prcticas y el pro-
grama terico de la asignatura, de tal forma que, con un
desarrollo normal de la docencia, los contenidos tericos
sean presentados con antelacin al desarrollo de las prc-
ticas, comenzando las prcticas de laboratorio a partir de
la segunda semana de clase.
Para el buen seguimiento de la asignatura, resulta de
gran inters tener cierta soltura en el manejo de los con-
ceptos elementales del Anlisis Matemtico, el lgebra,
y la programacin de Algoritmos. La materia expuesta
en esta documentacin est programada para ser impar-
tida en un cuatrimestre a razn de 3 horas/semana en el
aula y 2 horas/semana en el laboratorio informtico, lo
que hace un total de, aproximadamente, 45 horas en aula
(3 crditos tericos) y 30 horas de laboratorio (2 crditos
prcticos). Dado el escaso tiempo disponible, se han elim-
inado algunos temas clsicos de un curso completo anual
de Anlisis Numrico como son las ecuaciones diferenciales
ordinarias y las ecuaciones en derivadas parciales. Nor-
malmente, dichos temas se vern en detalle en asignaturas
posteriores. Adems, en lugar de presentar de forma ex-
haustiva todos los mtodos numricos que se pueden en-
contrar en los libros de Anlisis Numrico clsicos, se ha
optado por reducir los contenidos e impartir una seleccin
de los mtodos numricos ms representativos.
ARITMTICAS DE PRECISIN FINITA Y
FUENTES DE ERRORES NUMRICOS
Aritmticas de precisin nita
Un nmero entero z se representa en el ordenador a travs
de un nmero jo de bits (16 bits habitualmente), donde
uno de los bits se utiliza para determinar el signo y los
restantes para expresar el valor absoluto del nmero, de
tal manera que la secuencia de bits
a
1
a
2
a
3
......a
n
donde a
i
= 0 o a
i
= 1, representa el valor absoluto del
nmero
| z |= a
n
+a
n1
2 +a
n2
2
2
+... +a
1
2
n1
As, utilizando 16 bits, el mayor nmero entero que
podemos representar es
1 + 2 + 2
2
+..... + 2
14
= 2
15
1 = 32767
Es decir, los nmero enteros que podemos expresar
con una aritmtica de 16 bits van desde 32767 hasta
32767.
Para representar un nmero real y en el ordenador
nos basaremos en el siguiente resultado:
Teorema 1 Un nmero real positivo y se puede expresar
como
y = 2
e

X
n=1
a
n
2
n
donde e es un nmero entero, a
1
= 1, y para n > 1, a
n
= 0
o a
n
= 1.
Demostracin. Dado un nmero real positivo y, existe
un entero e tal que 2
e1
y < 2
e
, y por tanto 2
1

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 y algn coeciente de la mantisa es distinto de 0, y


se considera que no est normalizado (es decir a
1
= 0)
y el valor de y sera
y = 2
emin1
t
X
n=2
a
n
2
n
Programa 1 Programa en Fortran 77 para calcular el
menor nmero positivo de una aritmtica. El programa
devuelve un entero M tal que 2
M
es el menor nmero
real positivo normalizado.
A=1.
M=0
1 A=A/2.
IF(A.GT.0) THEN
M=M+1
GOTO 1
ENDIF
PRINT *,M
END
Nota En Fortran 77 no es necesario declarar las variables.
Por defecto, las variables cuyo nombre empieza por las
letras
I, J, K, L, M, N
son variables enteras, y el resto son variables reales. Las
cinco primeras columnas de cada lnea de un programa
Fortran 77 estn reservadas para escribir un nmero de
etiqueta.
La columna 6 est reservada para indicar si una lnea
es continuacin de la anterior (en este caso basta con es-
cribir un carcter en la columna 6.)
Un o una C en la primera columna indica que la
lnea es de comentario.
En el Fortran 77 estndar no existe la instruccin
WHILE. Sin embargo, como se muestra en el programa
anterior, se puede simular fcilmente un WHILE con un
GOTO.
Los operadores de comparacin en fortran 77 son:
.GT., .GE., .EQ., .NE., .LT. y .LE., que signican mayor
que, mayor o igual a, igual a, no igual a, menor que y
menor o igual a, respectivamente. Los operadores lgicos
son .AND. y .OR., que realizan las operaciones de con-
juncin y disyuncin, respectivamente.
Programa 2 Programa en Fortran 77 para calcular el
mayor nmero positivo de una aritmtica. El programa
devuelve un entero M tal que 2
M
es el nmero cuya rep-
resentacin corresponde a la excepcin que codica el in-
nito.
A=1.
B=1.
M=0
1 B=2.*A
IF(B.GT.A) THEN
A=B
M=M+1
GOTO 1
ENDIF
PRINT *,M
END
4
Problema 5 (2 puntos) Dada una aritmtica de pre-
cisin nita cualquiera, calcular la distancia que hay entre
el nmero 1 y su inmediato superior, es decir, el nmero
que va despus de 1, y la distancia entre el nmero 1 y su
inmediato inferior.
Vamos a llamar A, al conjunto de valores reales a los
que da lugar una aritmtica de precisin nita, es decir
A =
(
2
e
t
X
n=1
a
n
2
n
)
{0}
Dado un nmero real cualquiera y, al representarlo
en una aritmtica de precisin nita se produce un error
de redondeo, llamaremos e y A al nmero real que mejor
aproxima a y dentro de A.
Denicin 1 Dada una aritmtica de precisin nita, se
dene la unidad de redondeo u como
u = 2
t
Por ejemplo, si t = 24 (reales en simple precisin)
u = 2
24
= 5. 97 10
8
, y en doble precisin (t = 53),
u = 2
53
= 1. 1 10
16
.
Programa 3 Programa en Fortran 77 para calcular la
unidad de redondeo de una aritmtica. El programa de-
vuelve un entero M tal que u = 2
M
A=1.
M=1
1 A=A*2.
IF((1.+1./A).GT.1) THEN
M=M+1
GOTO 1
ENDIF
PRINT *,M
END
Prctica 1 (Aritmticas nitas, 2 horas)
La lnea de comando para la compilacin de un programa
en Fortran 77 tiene la forma:
> f77 prog1.f o prog1
Esta lnea compila el programa prog1.f y genera el
ejecutable prog1.
Para compilar un programa en Fortran, necesitamos
una mquina que tenga instalado el compilador. Por
ejemplo, la mquina serdis.dis.ulpgc.es tiene dicho compi-
lador. Para utilizar el compilador desde un entorno Win-
dows, basta con conectarse a travs de la utilidad SSH a
serdis.dis.ulpgc.es y trabajar directamente sobre el termi-
nal de conexin. Los cheros se pueden editar y corregir
en entorno Windows.
Compilar y ejecutar los programas 1, 2 y 3 para com-
probar cules son el menor y el mayor nmero positivo,
y la unidad de redondeo del ordenador en precisin sim-
ple. Dichos programas se encuentran en el directorio
de la asignatura /users/asignaturas/ii-an de la mquina
serdis.dis.ulpgc.es.
Si ponemos en la cabecera del programa la instruccin
IMPLICIT DOUBLE PRECISION(D)
cualquier variable cuyo nombre empiece por D ser un
nmero real en doble precisin. Hacer las modicaciones
pertinentes en los programas 1, 2 y 3, para comprobar
cules son el menor y el mayor nmero positivo, y la unidad
de redondeo del ordenador en doble precisin. Adems,
hacer operaciones del tipo 1/0, 1/, /0, /,

1
e imprimir los resultados para ver cmo trata las excep-
ciones el FORTRAN en la arquitectura de los ordenadores
del laboratorio.
Problema 6 (4 puntos) Se considera una aritmtica de
16 bits donde se dedica 1 bit al signo, 9 bits a la mantisa
(t = 10) y 6 bits al exponente (e
min
= 30 e
max
= 31).
Escribir, si es posible, los siguientes nmeros en esta ar-
itmtica:
1. 2, y los nmeros ms cercanos a 2 por arriba y por
debajo.
2. El cero, el innito y NaN.
3. Los nmeros positivos mayor y menor de la aritmtica
(teniendo en cuenta las excepciones).
4.
1
9
.
5. 2

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
|

Demostracin Veamos que si |x| > 1 +


max
k=0,..,n1
|a
k
|
|a
n
|
,
entonces |P(x)| > 0. Efectivamente,
|P(x)| |a
n
x
n
| max
k=0,,,n1
|a
k
|
n1
X
k=0
|x|
k
=
= |a
n
| |x|
n
max
k=0,,,n1
|a
k
|
1 |x|
n
1 |x|

|a
n
| |x|
n
max
k=0,,,n1
|a
k
|
|x|
n
|x| 1
=
=
|x|
n
(|a
n
| (|x| 1) max
k=0,,,n1
|a
k
|)
|x| 1
> 0
Teorema 6 Sea un polinomio P(x) = a
n
x
n
+a
n1
x
n1
+
...... +a
0
, entonces el nmero de races positivas es igual al
nmero de cambios de signo en los coecientes a
n
, ......, a
0
(saltando los posibles coecientes nulos), o bien ese mismo
nmero menos un nmero par.
Demostracin [Is-Ke] Pg. 126.
Para la estimacin del nmero de races reales nega-
tivas, se aplica el teorema anterior cambiando x por x.
Ejemplo 3 Sea P(x) = 3x
4
+ 10x
3
10x 3, los sig-
nos de los coecientes son: + + . Por tanto, hay un
nico cambio de signo y hay una raz positiva. Si cambi-
amos x por x, los signos de los coecientes son ++.
Por tanto, hay 3 cambios de signo y hay una o tres races
negativas. En este caso, las races son x = 1, 1, 3,
1
3
.
Problema 19 (1 punto) Calcular una iteracin del
mtodo de Mller para calcular un cero de la funcin
f(x) = x
3
3 partiendo de x
0
= 1 (Calculando las
derivadas de la funcin de forma exacta) y quedndonos
con la raz ms cercana a x
0
.
Problema 20 (2 puntos) Dado el polinomio P(x) =
2x
3
+ 3x
2
+ 4x + 5, evaluar el polinomio y su derivada
en el punto x = 2, utilizando el algoritmo de Horner.
Problema 21 (1 punto) Calcular el nmero mximo de
races positivas y negativas del polinomio x
5
35x
3
+30x
2
+
124x 120, y localizarlas en un intervalo.
Teorema 7 Entre dos races de una funcin derivable
f(x) hay una raz de f
0
(x).
Demostracin Teorema de Rolle.
Teorema 8 La derivada k esima P
k)
(x) del polinomio
P(x) = a
n
x
n
+a
n1
x
n1
+......a
0
es
P
k)
(x) =
a
n
n!
(n k)!
x
nk
+
a
n1
(n 1) !
(n k 1)!
x
nk1
+... +a
k
k!
1
Demostracin Es inmediato, derivando sucesivamente el
polinomio P(x).
Los dos resultados anteriores permiten aislar las posi-
bles races de P(x) de la forma siguiente: Si llamamos
P
max
a 1 +
max
k=0,..,n1
|a
k
|
|a
n
|
, entonces las m races distintas
x
1
< x
2
< .... < x
m
de P(x) estn intercaladas con las
races x
0
1
< x
0
2
< .... < x
0
m1
de P
0
(x), es decir
P
max
x
1
x
0
1
x
2
x
0
2
... x
0
m1
x
m
P
max
Volviendo a aplicar este razonamiento sucesivamente
sobre P
0
(x), P
00
(x), etc., para intercalar los ceros de una
derivada con los ceros de la siguiente, podemos deducir
el siguiente algoritmo para aislar todas las races de un
Polinomio P(x):
1 1
1. Se parte del intervalo [P
max
, P
max
]
2. Se calcula la raz x
n1)
1
del Polinomio P
n1)
(x) (que
es un polinomio de grado 1)
3. Para k = n 2, ..., 1
Se calculan las races de P
k
(x) en los intervalos
P
max
< x
k+1)
1
< x
k+1)
2
< ... < x
k+1)
m
k+1
< P
max
Al nal del procedimiento, habremos aislado comple-
tamente a las races de P(x). Este procedimiento se puede
utilizar para grados relativamente pequeos (n < 30),
puesto que su utilizacin requiere el clculo de factori-
ales, que se dispara rpidamente. Por ejemplo, 30! = 2.
610
32
. Existen mtodos mejores para el clculo de races
de polinomios, pero que utilizan tcnicas ms complejas.
El mtodo presente en el siguiente programa, que combina
el aislamiento de las races del polinomio a travs de los
ceros de sus derivadas con el mtodo de Newton-Raphson,
funciona razonablemente bien para grados de polinomios
pequeos. En el caso de races mltiples los resultados
acumulan mayores errores de redondeo debido a que tanto
el polinomio como su derivada son cero en el mismo punto.
Ejemplo 4 Consideremos el polinomio P(x) = x
4
x
3

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

14x +1,cuyas races son x = 1. 574, 7. 05 10


2
, 2. 253 y
cuya grca es
2.5 1.25 0 -1.25 -2.5
50
25
0
-25
-50
-75
-100
x
y
x
y
Polinomio P
0
(x) = 4x
3
3x
2
14x + 1
La derivada segunda de este polinomio es
P
00
(x) = 12x
2
6x 14,cuyas races son x = 0.858, 1.
358 y cuya grca es
2.5 1.25 0 -1.25 -2.5
125
100
75
50
25
0
x
y
x
y
Polinomio P
00
(x) = 12x
2
6x 14
La derivada tercera de este polinomio es
P
000
(x) = 24x 6, cuya raz es x = 0.25, y cuya
grca es
2.5 1.25 0 -1.25 -2.5
50
25
0
-25
-50
-75
x
y
x
y
Polinomio P
000
(x) = 24x 6
El mtodo funcionara de la siguiente forma: Primero
calculamos el cero de P
000
(x), es decir x = 0.25, por tanto
los ceros de P
00
(x) estaran en los intervalos [2.166, 0.25]
y [0.25, 2.166]. Puesto que hay cambio de signo de P
00
(x)
en cada uno de estos intervalos, buscamos las races de
P
00
(x) en esos intervalos, utilizando cualquier mtodo
numrico de los vistos anterioremente, por ejemplo, el
mtodo de la Regula-falsi, obteniendo 0.858 para el inter-
1 2
valo [2.166, 0.25] y 1. 358 para el intervalo [0.25, 2.166].
Por tanto, las posibles races de P
0
(x) estarn en los in-
tervalos [4.5, 0.858], [0.858, 1.358] y [1.358, 4.5]. Bus-
camos ahora las races de P
0
(x) es esos intervalos, obte-
niendo x = 1. 574, 7. 05 10
2
y 2. 253. Por tanto, los
posibles ceros de P(x) estarn en los intervalos [8, 1.
574], [1.574, 7. 0510
2
], [7. 0510
2
, 2. 253] y [2.253, 8].
Buscamos, nalmente, las races de P(x) en cada un de
esos intervalos y obtenemos x = 2, 1, 1, 3.
Problema 22 (2 puntos) Aislar en intervalos las races
del polinomio P(x) = 20x
3
45x
2
+ 30x 1.
Programa 9 Programa en Fortran 77 donde se imple-
menta la funcin ICEROPOL(A, R, TOL, N, Nmaxx),
que devuelve las races reales de un polinomio. Dicha sub-
rutina tiene como parmetros un vector A(), donde es-
tn los coecientes del polinomio, un vector R(), donde
se guardan las races del polinomio una vez calculadas,
la tolerancia TOL, con la que consideramos que dos
nmeros son iguales, el grado del polinomio N, y el
nmero mximo de iteraciones N max xx, para el proceso
de Newton-Raphson. Tambin se dene la funcin aux-
iliar RP(N, A, X1, X2, TOL, Nmaxx, R, L), que devuelve
la raz del polinomio que se obtiene aplicando el mtodo
de Newton-Raphson, tomando como valor inicial el punto
medio del intervalo [X1, X2].
PARAMETER(NMAX=30)
DIMENSION A(0:NMAX),R(0:NMAX-1)
COMMON/POL/PX,PPX
PRINT *,Escribir Grado del Polinomio
READ *,N
IF(N.GT.NMAX) THEN
PRINT *, Grado Superior al Maximo
STOP
ENDIF
PRINT *,Escribir Coef. Polin.
DO 1 K=0,N
1 READ *,A(K)
PRINT *, Escribir Tolerancia
READ *,TOL
PRINT *, Escribir No. iter. Max. para Newton-
Raphson
READ *,Nmaxx
M=ICEROPOL(A,R,TOL,N,Nmaxx)
PRINT *,El Pol. tiene,M, raices
DO 9 K=0,M-1
9 PRINT *,R(K)
END
FUNCTION ICEROPOL(A,R,TOL,N,Nmaxx)
PARAMETER(NMAX=30)
DIMENSION A(0:*), R(0:*), F(0:NMAX),
AP(0:NMAX), PI(0:NMAX+1)
COMMON/POL/PX,PPX
**** Calculo de los factoriales
F(0)=1.
DO 2 K=1,N
2 F(K)=F(K-1)*K
*** Calculo intervalo inicial
PMAX=ABS(A(0))
DO 3 K=1,N-1
IF(PMAX.LT.ABS(A(K)) THEN
PMAX=ABS(A(K)
ENDIF
3 CONTINUE
PMAX=PMAX/ABS(A(N))+1.
PI(0)=-PMAX
PI(1)=-(A(N-1)*F(N-1))/(A(N)*F(N))
DO 10 K=2,N
10 PI(2)=PMAX
*** Calculo de los coecientes del
*** polinomio derivada
DO 7 K=2,N
7 PI(K)=PMAX
DO 4 K=N-2,0,-1
DO 5 L=0,N-K
AP(L)=A(L+K)*(F(K+L)/F(L))
5 CONTINUE
***CALCULAR LOS CEROS DE AP EN LOS INTER-
VALOS PI()
DO 6 L=1,N-K
PI(L)=RP(N-K,AP,PI(L-
1),PI(L),TOL,Nmaxx,R,L-1)
6 CONTINUE
4 CONTINUE
*** Pasamos las raices al vector R()
M=0
DO 8 K=1,N
IF(R(K-1).EQ.0) THEN
R(M)=PI(K) M=M+1
ENDIF
8 CONTINUE
ICEROPOL=M
END
FUNCTION RP(N,A,X1,X2,TOL,Nmaxx,R,L)
DIMENSION A(0:*),R(0:*)
COMMON/POL/PX,PPX
R(L)=1.
IF (X1.EQ.X2) THEN
RP=X1
RETURN
ENDIF
RP=(X1+X2)/2.
DO 1 K=1,Nmaxx
CALL HORNER(N,A,RP)
IF (PPX.EQ.0.) THEN
IF(PX.EQ.0.) THEN
1 3
R(L)=0.
RETURN
ELSE
RETURN ENDIF
ELSE
RP1=RP-PX/PPX
IF(IGUAL(RP1,RP,TOL).EQ.0) THEN
RP=RP1
R(L)=0.
RETURN
ELSE
RP=RP1
ENDIF
ENDIF
1 CONTINUE
END
Problema 23 (2 puntos) Aislar en intervalos las races
del polinomio P(x) = 2x
3
+ 3x
2
12x + 1.
INTERPOLACIN DE FUNCIONES I
El problema general de la interpolacin de funciones con-
siste en, a partir del conocimiento del valor de una funcin
(y eventualmente de sus derivadas) en un conjunto nito
de puntos, aproximar el valor de la funcin fuera de ese
conjunto nito de puntos.
Interpolacin por polinomios de Lagrange
Sea una funcin f(x) que conocemos en un conjunto nito
de valores {x
i
}
i=0,..,N
. Es decir, sabemos que f(x
i
) =
f
i
. El polinomio interpolador de Lagrange P
N
(x) de f(x)
en los puntos {x
i
}
i=0,..,N
, es el nico polinomio de grado
menor o igual que N tal que
P
N
(x
i
) = f(x
i
) i = 0, .., N
P
N
(x) se puede expresar en trmino de los denomina-
dos polinomios base de Lagrange P
i
(x), denidos como:
P
i
(x) =

N
j6=i
(x x
j
)

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

x, las funciones trigonomtricas: sen(x) cos(x)


y tan(x), la funcin ln(x), la funcin e
x
, la funcin x
y
, etc.
Las tcnicas elementales para denir estas funciones con-
sisten en utilizar la interpolacin polinmica, los desarrol-
los de Taylor y los algoritmos de bsqueda de ceros (como
vimos anteriormente para

x).
Aproximacin de la exponencial e
x
Un nmero real x siempre se puede expresar como x =
m + x
0
, donde m es un nmero entero y x
0
[0, 1]. Dado
que
e
x
= e
m
e
x
0
podemos descomponer el clculo de e
x
en el clculo, por
un lado, de e
m
, donde al ser m un entero el clculo es in-
mediato a partir de multiplicaciones sucesivas de potencias
naturales de e e
1
(si m<0), y por otro, en el clculo
de e
x
0
para x
0
[0, 1]. Utilizando como puntos de interpo-
lacin los asociados a los polinomios de Chebychev:
x
i
=
1
2

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

La descomposicin de la matriz A lleva las siguientes


fases:

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

de la misma forma, el vector b se ha transformado de la


forma siguiente

0
24
8

24
0
8

24
8
4

24
8
8

y el remonte da como solucin u


1
= 6, u
2
= 6, u
3
= 8.
Problema 36 (2 puntos) Resolver por el mtodo de
Gauss el sistema

1 2
2 1

x
y

3
0

Problema 37 (3 puntos) Calcular el nmero de op-


eraciones bsicas necesarias para descomponer el sistema
Au = b en el sistema A
0
u = b
0
utilizando el mtodo de
Gauss, teniendo en cuenta la siguiente relacin:
M1
X
k=1
k
2
=
1
3
M
3

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

Programa 11 Programa en fortran 77 que implementa


el mtodo de Gauss. Se dene una funcin IGAUSS que
tiene como parmetros la matriz A, el vector independi-
ente b, un vector auxiliar Nrow, la dimensin del sistema
y la dimensin mxima admitida. La funcin devuelve un
valor entero M que indica si se ha terminado correcta-
mente (M = 0) o incorrectamente (M = 1, 2). En el caso
en que se ha terminado correctamente, la solucin se de-
vuelve en el propio vector b.
Parameter(Nmax=1000)
DIMENSION A(Nmax,Nmax),B(Nmax),Nrow(Nmax)
PRINT *, Introducir Dimension
READ *,N
PRINT *,Introducir matriz
DO 2 K=1,N
DO 2 L=1,N
2 READ *,A(K,L)
PRINT *,Introducir vector
DO 3 K=1,N
3 READ *,B(K)
M=IGAUSS(A,B,N,Nrow,Nmax)
IF(M.EQ.0) THEN
PRINT *,SOLUCION
DO 1 K=1,N
PRINT *,B(K)
1 CONTINUE
ELSE IF(M.EQ.1)THEN
PRINT *,Una columna es toda cero
ELSE
PRINT *,A(N,N)=0
ENDIF
END
FUNCTION IGAUSS(A,B,N,Nrow,Nmax)
PARAMETER (NmaxGAUSS=1000)
DIMENSION A(Nmax,*),B(*),Nrow(*)
DIMENSION U(NmaxGAUSS)
IF (N.GT .NmaxGAUSS) THEN
IGAUSS=3
PRINT *,DIMENSION DEL SISTEMA MAYOR
DE LA PERMITIDA
RETURN
ENDIF
DO 1 K=1,N
1 Nrow(K)=K
DO 2 K=1,N-1
XMax=ABS(A(Nrow(K),K))
M=K
DO 3 L=K+1,N
2 0
IF(ABS(A(Nrow(L),K)).GT.XMax) THEN
XMax=ABS(A(Nrow(L),K))
M=L
ENDIF
3 CONTINUE
IF(XMax.LT.(2.**(-100))) THEN
IGAUSS=1
RETURN
ENDIF
IF(K.NE.M) THEN
MP=Nrow(K)
Nrow(K)=Nrow(M)
Nrow(M)=MP
ENDIF
DO 4 L=K+1,N
C=A(Nrow(L),K)/A(Nrow(K),K)
DO 5 M=K,N
A(Nrow(L),M)=A(Nrow(L),M)-
C*A(Nrow(K),M)
5 CONTINUE
B(Nrow(L))=B(Nrow(L))-C*B(Nrow(K))
4 CONTINUE
2 CONTINUE
IF(ABS(A(Nrow(N),N)).LT.(2.**(-100))) THEN
IGAUSS=2
RETURN
ENDIF
U(N)=B(Nrow(N))/A(Nrow(N),N)
DO 6 K=N-1,1,-1
C=0
DO 7 L=K+1,N
C=C+A(Nrow(K),L)*U(L)
7 CONTINUE
U(K)=(B(Nrow(K))-C)/A(Nrow(K),K)
6 CONTINUE
DO I=1,N
B(I)=U(I)
ENDDO
IGAUSS=0
END
Estimacin del error de un mtodo para resolver
sistemas
Para estimar la abilidad de la solucin numrica de un
sistema de ecuaciones, haremos lo siguiente: dada una ma-
triz A, un vector de trminos independientes b y un vector
solucin u, calculado utilizando alguna tcnica numrica,
si la solucin es perfecta entonces Aub = 0. Ahora bien,
esto no suele suceder, porque los errores de redondeo y de
clculo producen que esta estimacin no sea exacta. Para
estimar el error cometido al resolver el sistema utilizaremos
la expresin siguiente, donde e es el vector e = Au b :
ErrorSistema =
1
N
X
|e
i
|
|b
i
| + 1
donde N es la dimensin del sistema y ErrorSistema rep-
resenta el error relativo medio al resolver el sistema. En
el denominador se aade 1 para evitar las posibles divi-
siones por 0. Cuanto ms pequeo sea ErrorSistema, mejor
aproximada estar la solucin del sistema.
Mtodo de Cholesky
Este mtodo slo se puede aplicar a matrices simtricas
y denidas positivas. El siguiente teorema da 3 posibles
deniciones equivalentes de una matriz denida positiva.
Teorema 13 Sea A una matriz simtrica, las 3 siguientes
armaciones son deniciones equivalentes a que una ma-
triz sea denida positiva
(i) v <
N
{0} se cumple que
t
vAv > 0.
(ii) Todos los autovalores de A son positivos.
(iii) Los determinantes de todos los menores princi-
pales de A son positivos.
El mtodo de Cholesky se basa en descomponer la
matriz A en la forma:
A = BB
t
donde B es una matriz triangular inferior.
B =

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

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


t
(B triangular inferior) y |B| 6= 0, entonces A es simtrica
y denida positiva.
Problema 41 (2 puntos) Descomponer la siguiente ma-
triz A por el mtodo de Cholesky:
A =

1 1 4
1 5 6
4 6 26

De forma general, el algoritmo para calcular B es el


siguiente
Para i = 1, ..., N
b
i,i
=
r

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

Resolver tambin los sistemas que aparecen en


el directorio /users/asignaturas/ii-an de la mquina
serdis.dis.ulpgc.es. En este directorio hay tres ejemplos
de sistemas de dimensin 10, 100 y 500. Los 3 sistemas
corresponden a matrices simtricas y denidas positivas.
Estos archivos ejemplo slo se pueden utilizar al compilar
el programa en serdis bajo UNIX. Si utilizamos Linux, el
programa no reconocer el formato de los archivos.
Mtodo de Crout para matrices tridiagonales
El caso de sistemas de ecuaciones con matrices A tridi-
agonales posee una forma especialmente simple de factor-
izacin. Vamos a descomponer A en el producto de dos
matrices triangulares de la forma siguiente:

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

Problema 46 (2 puntos) Calcular el nmero de opera-


ciones necesarias para resolver un sistema tridiagonal por
el mtodo de Crout.
Subrutinas en Fortran 77 para la lectura y escritura
en disco de vectores y matrices
Programa 12 Subrutinas en Fortran 77 que leen y es-
criben en disco vectores y matrices.
****** Funcin que lee un vector de disco de nombre
String, lo almacena
****** en la tabla Vector y devuelve la dimension del vec-
tor
FUNCTION LeerVector(String,Vector)
CHARACTER * (*) String
DIMENSION Vector(*)
OPEN(1,FILE=String,STATUS=OLD,
form=UNFORMATTED)
READ(1) A
Ndimension=INT(A)
PRINT *,DIMENSION DEL VECTOR
,String,=,Ndimension
DO 1 K=1,Ndimension
READ(1) Vector(K)
1 CONTINUE
CLOSE(1)
LeerVector=Ndimension
END
***** Procedimiento que escribe en el chero String el vec-
tor Vector
***** de dimension Ndimension
SUBROUTINE EscribirVec-
tor(String,Vector,Ndimension)
CHARACTER * (*) String
DIMENSION Vector(*)
OPEN(1,FILE=String, STATUS=NEW,
form=UNFORMATTED,ERR=1)
GOTO 2
1 OPEN(1,FILE=String, STATUS=OLD,
form=UNFORMATTED)
2 A=Ndimension
WRITE(1) A
DO 3 K=1,Ndimension
WRITE(1) Vector(K)
3 CONTINUE
CLOSE(1)
END
****** Funcin que lee una matriz cuadrada de disco
de nombre String, lo almacena
****** en la tabla A y devuelve la dimension de la matriz
FUNCTION LeerMatriz(String,A,Nmax)
CHARACTER * (*) String
DIMENSION A(Nmax,*)
OPEN(1,FILE=String, STATUS=OLD,
form=UNFORMATTED)
READ(1) B
Ndimension=INT(B)
PRINT *,DIMENSION DE LA MATRIZ ,
String,=, Ndimension
DO 1 K=1,Ndimension
DO 2 L=1,Ndimension
READ(1) A(K,L)
2 CONTINUE
1 CONTINUE
CLOSE(1)
LeerMatriz=Ndimension
END
***** Procedimiento que escribe en el chero String la ma-
triz A
***** cuadrada de dimension Ndimension
SUBROUTINE EscribirMa-
triz(String,A,Ndimension,Nmax)
CHARACTER * (*) String
DIMENSION A(Nmax,*)
OPEN(1,FILE=String, STATUS=NEW,
form=UNFORMATTED, ERR=1)
GOTO 2
1 OPEN(1, FILE=String, STATUS=OLD,
form=UNFORMATTED)
2 B=Ndimension
WRITE(1) B
DO 3 K=1,Ndimension
DO 4 L=1,Ndimension
WRITE(1) A(K,L)
4 CONTINUE
3 CONTINUE
CLOSE(1)
2 3
END
Programa 13 Programa en Fortran 77 donde se describe
un ejemplo de lectura/escritura de vectores y matrices.
INCLUDE an.h
PARAMETER(Nmax=100)
CHARACTER * 10,String
DIMENSION V(Nmax), A(Nmax,Nmax)
String=vector.dat
Ndimension=LeerVector(String,V)
PRINT *,Ndimension
DO 1 K=1,Ndimension
PRINT *,V(K)
V(K)=2*V(K)
1 CONTINUE
CALL EscribirVector(vector3.dat,V,Ndimension)
N=LeerVector(vector3.dat,V)
PRINT *,N=,N
DO 2 k=1,N
PRINT *,V(K)
2 CONTINUE
Ndimension=3
DO 3
K=1,Ndimension
DO 4 L=1,Ndimension
A(L,K)=L+K
PRINT *,A(L,K)
4 CONTINUE
PRINT *
3 CONTINUE
CALL EscribirMatriz(matriz.dat,A,Ndimension,Nmax)
Ndimension=LeerMatriz(matriz.dat,A,Nmax)
PRINT *,Ndimension
DO 5 K=1,Ndimension
DO 6 L=1,Ndimension
PRINT *,A(L,K)
6 CONTINUE
PRINT *
5 CONTINUE
END
Nota la declaracin
INCLUDE 0an.h0
incluye el chero an.h que se encuentra en el directorio de
trabajo, en el cuerpo del programa. La declaracin
CHARACTER 10, String
dene un string de caracteres de tamao 10.
DIFERENCIACIN E INTEGRACIN
NUMRICA
Una frmula de diferenciacin numrica es un proced-
imiento que permite aproximar la derivada de la funcin
f(x) en un punto x
i.
utilizando el valor de f(x) en otros
puntos vecinos a x
i
. Por otro lado, una frmula de inte-
gracin numrica es un procedimiento que permite aprox-
imar el valor de la integral en un intervalo [a, b] a partir
de la evaluacin de f(x) en algunos puntos incluidos en el
intervalo [a, b].
Diferenciacin Numrica
La manera habitual de aproximar la derivada de una fun-
cin f(x) en un punto x
i
consiste en utilizar el desarrollo
de Taylor centrado en x
i
:
f(x) = f(x
i
) +
f
0
(x
i
)
1!
(xx
i
) +... +
f
N)
(x
i
)
N!
(xx
i
)
N
+...
Si tomamos un punto x
j
6= x
i
, truncamos el desarrollo
de Taylor y despejamos, obtenemos la siguiente expresin:
f
0
(x
i
)
f(x
j
) f(x
i
)
x
j
x
i
+ O(|x
j
x
i
|)
donde O(|x
j
x
i
|) indica, bsicamente, que el error
cometido es una suma de potencias de |x
j
x
i
| en la que
la potencia ms pequea es 1. Se denomina orden de la
aproximacin a la potencia ms pequea que aparece en
el trmino del error. Por lo tanto, en este caso, diremos
que el orden de aproximacin es 1. Si x
j
> x
i
, entonces la
derivada se calcula hacia adelante, mientras que si x
j
< x
i
,
la derivada se calcula hacia atrs.
Ejemplo 10 Veremos en este ejemplo como, cuanto ms
prximo est el punto x
j
al punto x
i
, mejor ser el valor
aproximado de la derivada. Consideremos la funcin
f(x) = x
3
. La derivada de f(x) en x = 1 es f
0
(1) = 3 Si
tomamos x
i
= 1 y x
j
= 2 en la frmula anterior, obten-
emos la aproximacin
f
0
(1)
2
3
1
3
2 1
= 7
Si tomamos ahora x
j
= 1.1, obtenemos
f
0
(1)
1.1
3
1
3
1.1 1
= 3. 31
que est mucho ms prximo al valor real.
Problema 47 (2 puntos) Calcular analtica y numri-
camente la matriz gradiente en el punto (1, 1) (utilizar
h = 0.1) de la funcin:
f(x, y) =

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

dan lugar a una discretizacin del gradiente tal que su


norma eucldea es invariante por rotaciones de 45 grados.
Problema 58 (2 puntos) Calcular una aproximacin
del gradiente de una funcin F(x, y) en el punto (x, y) =
(0, 0) conociendo los siguientes valores: F(0, 0) = 0,
F(
1
2
, 0) =
1
2
, F(
1
2
, 0) =
1
2
, F(0,
1
2
) =
1
2
, F(0,
1
2
) =
1
2
, F(
1
2
,
1
2
) = 0, F(
1
2
,
1
2
) = 0, F(
1
2
,
1
2
) = 1,
F(
1
2
,
1
2
) = 1.
2 6
Integracin Numrica
Mtodos de Cuadratura de Gauss
Sea f(x) una funcin denida en un intervalo [a, b], vamos
a aproximar el valor de la integral de f(x) en [a, b] uti-
lizando la evaluacin de f(x) en ciertos puntos de [a, b].
Es decir, una frmula de integracin numrica se puede
escribir como
Z
b
a
f(x)dx
N
X
k=1
w
k
f(x
k
)
donde x
k
representa los puntos de evaluacin de f(x) y w
k
el peso de cada punto de evaluacin.
Denicin 2 Una frmula de integracin numrica se de-
nomina exacta de orden M si, para cualquier polinomio
P(x) de grado menor o igual que M, la frmula es exacta.
Es decir
Z
b
a
P(x)dx =
N
X
k=1
w
k
P(x
k
)
Denicin 3 Se denominan polinomios de Legendre
L
n
(x) a la familia de polinomios dada por L
0
(x) = 1,
L
1
(x) = x, y para n = 2, 3, ....
nL
n
(x) = (2n 1)xL
n1
(x) (n 1)L
n2
(x)
Teorema 14 Sean{ x
k
}
k=1,..,N
los ceros del polinomio de
Legendre L
N
(x). Si denimos
w
k
=
Z
1
1

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

A continuacin presentaremos algunas frmulas de in-


tegracin numrica sobre tringulos utilizando diferentes
nmeros de puntos
Integracin sobre tringulos utilizando un
punto.
Z
T
F(x, y)

= 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

y determinar una base ortonormal de R


3
compuesta por
autovectores de A.
Teorema 21 Sea A una matriz cualquiera, entonces
k A k
2
=
p
(
t
AA)
k A k
1
= max
j
(
P
i
| a
ij
|)
k A k

= max
i

P
j
| a
ij
|

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


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

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

cuya solucin es (1, 1, 1, 1). Vamos a considerar ahora el


mismo sistema, perturbando ligeramente el trmino inde-
pendiente:

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

La solucin de este sistema es (9.2, 12.6, 4.5, 1.1).


Como podemos observar, a pesar de que la perturbacin
del sistema es del orden de 0.1, la perturbacin de la solu-
cin del sistema puede llegar a ser del orden de 13.6.
Consideremos de forma genrica un sistema de ecua-
ciones de la forma
Au = b
y, al mismo tiempo, el sistema de ecuaciones perturbado
A(u +u) = b +b
Nosotros queremos controlar el error relativo en la
solucin del sistema a partir del error relativo en el tr-
mino independiente b. Es decir, queremos encontrar una
estimacin del tipo
k u k
k u k
(A)
k b k
k b k
donde (A) es un nmero que llamaremos condi-
cionamiento de la matriz. Obviamente, cuanto ms pe-
queo sea (A), mejor comportamiento numrico tendr
la matriz A.
Teorema 23 Si denimos
(A) =k A k k A
1
k
entonces
k u k
k u k
(A)
k b k
k b k
Demostracin: Como A(u + u) = b + b y Au = b, se
obtiene que Au = b, de donde u = A
1
b y, por tanto,
kuk

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

Clculo de autovalores y autovectores


En esta seccin veremos algunos mtodos elementales para
el clculo de autovalores y autovectores de matrices.
3 3
Mtodo de Jacobi
Este mtodo se aplica a matrices reales y simtricas. Se
basa en el hecho de que, dadas dos matrices A y R, se
verica que los autovalores de A son los mismos que los
autovalores de R
1
AR. Este mtodo intenta diagonalizar
A realizando transformaciones del tipo R
1
AR.
Problema 86 (2 puntos) Sean las matrices A y R. De-
mostrar que la matriz A y la matriz B = R
1
AR poseen
los mismos autovalores
Problema 87 (2 puntos) Se considera la matriz
A =

1 1
1 1

calcular el ngulo tal que la matriz


R =

cos sin
sin cos

verique que la matriz B = R


1
AR sea diagonal.
En el mtodo de Jacobi se utilizan las denominadas
matrices de rotacin, que tienen la forma siguiente:
R
pq
() =

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

donde los cosenos y senos estn situados en las columnas


y las p y q. Al ser una matriz de rotacin, se verica
que (R
pq
())
1
=
t
R
pq
(). Al realizar la operacin A
0
=
t
R
pq
()AR
pq
(), slo se ven afectadas las las y columnas
de ndices p y q. Adems, la matriz A
0
tambin es simtrica.
Concretamente, si A es una matriz simtrica, los cambios
que se producen en A
0
son los siguientes:
a
0
pq
=
(a
pp
a
qq
)
2
sin2 +a
pq
cos 2
a
0
pp
= a
pp
cos
2
+a
qq
sin
2
a
pq
sin2
a
0
qq
= a
pp
sin
2
+a
qq
cos
2
+a
pq
sin2
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
El mtodo de Jacobi se basa en ir modicando la ma-
triz A mediante el procedimiento anterior, haciendo 0 los
elementos no diagonales mayores en mdulo. Para anular
un valor a
0
pq
, basta con elegir tal que
(a
pp
a
qq
)
2
sin2 +a
pq
cos 2 = 0
Es decir,
cot(2) =
cos 2
sin2
=
(a
qq
a
pp
)
2a
pq
Ejemplo 16 Consideremos la matriz

2 1 0
1 2 1
0 1 2

Para convertir en 0 el elemento a


12
= 1 de la matriz,
debemos elegir tal que
cot(2) =
(a
22
a
11
)
2a
12
= 0
De donde =

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

1.0 0 . 707 107


0 3.0 . 707 107
. 707 107 . 707 107 2.0

Para evitar tener que evaluar funciones trigonomtri-


cas, que son costosas computacionalmente, y simpli-
car el algoritmo, podemos apoyarnos en las igualdades
trigonomtricas dadas en el siguiente problema:
Problema 88 (3 puntos) Demostrar las siguientes
igualdades trigonomtricas:
tan() = cot(2) +sign(cot(2))
q
1 + cot
2
(2)
donde

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

Nota: Obsrvese, al comparar los resultados, que los au-


tovectores estn denidos mdulo la multiplicacin por
una constante.
Mtodo de la potencia
Teorema 25 Sea una matriz A que posee una base de au-
tovectores tal que en mdulo su autovalor mximo
max
es
nico. Sea un vector u
1
no ortogonal al subespacio engen-
drado por los autovectores del autovalor
max
, entonces, si
denimos la secuencia
u
n
= A
u
n1
k u
n1
k
se verica que
Lim
n
sign

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

es el signo del producto


escalar de u
n
y u
n1
, es decir sign

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

Cuando hacemos tender n hacia innito, todos los co-


cientes de la forma


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

Mtodo de la potencia inversa


El mtodo anterior tambin se puede utilizar para el cl-
culo del autovalor de mdulo menor
min
, teniendo en
cuenta que

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

utilizando el mtodo de la potencia, realizando 2 itera-


ciones del mtodo a partir de u
1
= (1, 1) y tomando como
norma kuk = max
i
|u
i
|.
Problema 93 (2 puntos) Utilizar el mtodo de la po-
tencia inversa para aproximar el autovalor menor de la
matriz
A =

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

Para ello, calcular dos iteraciones del mtodo de la


potencia inversa partiendo de u
1
= (1, 1, 1).
Mtodos iterativos de resolucin de sistemas lin-
eales
Estas tcnicas consisten en transformar un sistema de la
forma
Au = b
en una ecuacin de punto jo de la forma
u = Mu +c
de tal manera que, al hacer iteraciones de la forma
u
n
= Mu
n1
+c
se obtenga que u
n
converge hacia u, la solucin del sistema
original.
Ejemplo 17 Consideremos el sistema de ecuaciones
2x y = 1
x + 2y z = 0
y + 2z = 1
Buscar la solucin de este sistema es equivalente a buscar
un vector u = (x, y, z) que verique que
x =
1 +y
2
y =
x +z
2
z =
1 +y
2
Hacer iteraciones de esta ecuacin de punto jo con-
siste en partir de una aproximacin inicial (x
1
, y
1
, z
1
) y
hacer iteraciones de la forma
x
n
=
1 +y
n1
2
y
n
=
x
n1
+z
n1
2
z
n
=
1 +y
n1
2
En este caso, la solucin exacta del sistema es u = (1, 1, 1).
Si hacemos iteraciones del esquema anterior a partir de la
aproximacin inicial u
1
= (0, 0, 0), obtenemos que
x
2
=
1 + 0
2
=
1
2
y
2
=
0 + 0
2
= 0
z
2
=
1 + 0
2
=
1
2
3 8
De la misma forma, obtenemos que
u
3
=

0.5
0.25
0.5

.... u
8
=

.84
.73
.84

.... u
17
=

.98
.96
.98

Como puede observarse, las sucesivas iteraciones se van


aproximando a la solucin u = (1, 1, 1). En este caso, la
matriz M y el vector c que determinan el esquema iterativo
vienen dados por
M
J
=

0
1
2
0
1
2
0
1
2
0
1
2
0

c
J
=

1
2
0
1
2

Teorema 27 Si el esquema iterativo


u
n
= Mu
n1
+c
converge hacia un vector u, entonces u verica que
u = Mu +c
Existen diferentes mtodos para convertir un sistema
de la forma Au = b en una ecuacin de punto jo u =
Mu + c. Todas se basan en descomponer A de la forma
A = L +D +U, donde D es la matriz diagonal que corre-
sponde a la parte diagonal de A, L es la matriz triangular
inferior que corresponde a la parte de A situada por de-
bajo de la diagonal, y U es la matriz triangular superior
que corresponde a la parte de A situada por encima de la
diagonal.
Mtodo de Jacobi
Este mtodo consiste en tomar
M
J
= D
1
(L U)
c
J
= D
1
b
Es el que se ha utilizado en el ejemplo anterior. El
paso de una iteracin a otra del mtodo de Jacobi puede
expresarse de la siguiente forma:
u
n
1
=
a
12
u
n1
2
... a
1N
u
n1
N
+b
1
a
11
u
n
2
=
a
21
u
n1
1
a
23
u
n1
3
... a
2N
u
n1
N
+b
2
a
22
.
u
n
N
=
a
N1
u
n1
1
a
N2
u
n1
2
... a
NN1
u
n1
N1
+b
N
a
NN
Problema 95 (3 puntos) Escribir
en Fortran las funciones siguientes:
SIGNO_PRODUCTO_ESCALAR(uf,vf,Nf ) que
devuelve el signo del producto escalar de los vec-
tores uf y vf de dimensin Nf (12 lneas de
cdigo como mximo), y la funcin AUTO-
VALOR_MAXIMO(Af,uf,Nf,Nfmax,Nter,Tolf ) que
devuelve el autovalor mximo de una matriz y su au-
tovector por el mtodo de la potencia. Los parmetros
son la matriz Af, el vector candidato inicial uf, Nf la
dimensin real, Nfmax, la dimensin para coger memoria,
Nter nmero mximo de iteraciones, y Tolf la tolerancia.
Esta funcin devuelve el valor 2.**120 si no termina
correctamente. Tomar como norma kuk =
P
i
ABS(u
i
)
(28 lneas de cdigo como mximo).
Problema 96 (2 puntos) Calcular 3 iteraciones del
mtodo de Jacobi 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)
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

Problema 97 (2 puntos) Calcular una base ortogonal


de autovectores de la matriz

1 0 1
0 2 0
1 0 1

Problema 98 (2 puntos) Calcular 3 iteraciones del


mtodo de Gauss-Seidel 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)
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

Teniendo en cuenta que las normas 1 e innito de una


matriz son el mximo de las sumas por las o columnas en
valor absoluto, se tiene, por las condiciones del teorema,
que kM
J
k < 1 para la norma 1 o innito. Por tanto,
el teorema se concluye teniendo en cuenta que cualquier
norma de una matriz es siempre mayor o igual que su radio
espectral.
Este resultado se puede generalizar un poco al caso
de matrices irreducibles de la siguiente forma:
Denicin 9 Una matriz A es irreducible si un sistema
de la forma Au = b no puede descomponerse en dos sub-
sistemas independientes de dimensin menor
Dicho de otra forma, una matriz es irreducible si el
cambio de cualquier valor del vector b del sistema Au = b
afecta a todos los elementos del vector u.
Teorema 33 Si A es una matriz irreducible y se verica
que
| a
ii
|
X
j6=i
| a
ij
| i.
o
| a
jj
|
X
i6=j
| a
ij
| j.
con la desigualdad estricta en al menos una la o columna,
entonces los mtodos iterativos convergen.
Demostracin. [La-The] Pg.346-347.
Ejemplo 20 La matriz del sistema ejemplo tratado ante-
riormente, esto es

2 1 0
1 2 1
0 1 2

satisface las hiptesis del Teorema anterior.


4 1
Problema 101 (2 puntos) Escribir en
Fortran la funcin siguiente: CONDI-
CIONAMIENTO(Af,Nf,Nfmax,TOLf,Nter) que devuelve
el condicionamiento de una matriz utilizando el mtodo de
Jacobi para calcular los autovalores. Se supondr imple-
mentada la funcin JACOBI(A,N,Nmax,TOL,Niter) que
devuelve 0 si termina bien y 1 si termina mal. La funcin
CONDICIONAMIENTO devuelve 2.*120 si termina mal
porque Jacobi da un error o se produce una divisin por
cero. Los parmetros son la matriz Af, Nf la dimensin
real, Nfmax, la dimensin para coger memoria, Nter
nmero mximo de iteraciones, y Tolf la tolerancia (21
lneas de instrucciones como mximo).
Problema 102 (2 puntos) Demostrar que, si una ma-
triz A verica que por las o columnas su suma es siempre
igual a 0, entonces el determinante de A es cero, y por
tanto el sistema asociado a A no tiene solucin.
Problema 103 (3 puntos) Dado un sistema iterativo
u
n
= Mu
n1
+c
Demostrar que, aunque el radio espectral de M sea
mayor que 1, si u
1
y c son combinaciones lineales de au-
tovectores de M correspondientes a autovalores de mdulo
menor que 1, entonces el mtodo converge.
Prctica 7 (Mtodo de relajacin, 2 horas)
Desarrollar una funcin en Fortran 77 donde se implemente
el mtodo de relajacin. Los parmetros de la funcin
sern: la matriz A, el vector b, un vector u donde se alma-
cenar la solucin, y que inicialmente ser el vector aprox-
imacin inicial, que por defecto se tomar 0, el parmetro
de relajacin w, el nmero mximo de iteraciones N max,
y la tolerancia TOL para evaluar la diferencia entre u
n
y
u
n1
. La funcin devolver el nmero de iteraciones nece-
sarias para alcanzar la solucin. Si el mtodo no converge
devuelve 1. Comparar la diferencia en la velocidad de
convergencia entre el mtodo de Gauss-Seidel y el Mtodo
de relajacin. Probar el mtodo para los sistemas
1.

1 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

4. Los sistemas ejemplos del directorio de la asignatura.


Estos ejemplos tienen siempre como solucin el vector
(1, 1, ...., 1).
Mtodo de Newton-Raphson para sistemas de
ecuaciones no lineales
En las aplicaciones reales, muchas veces nos encontramos
con sistemas no lineales de ecuaciones. Por ejemplo, cal-
cular las races, reales o complejas, de un polinomio de
grado 2 dado por P
2
(z) = az
2
+bz +c, donde z = x +yi,
es equivalente a resolver el sistema
ax
2
+bx ay
2
+c = 0
2ayx +by = 0
que es un sistema no lineal de ecuaciones. En general, un
sistema no lineal de ecuaciones de dimensin N, se escribe
como N ecuaciones del tipo
f
1
(u
1
, ...., u
N
) = 0
f
2
(u
1
, ...., u
N
) = 0
.
f
N
(u
1
, ...., u
N
) = 0
donde f(u) = (f
1
(u), f
2
(u), ..., f
N
(u)) es una funcin de
<
N
<
N
, y u = (u
1
, ...., u
N
). El mtodo de Newton-
Raphson para sistemas de ecuaciones se basa en desarrollar
por Taylor la funcin f y truncar el desarrollo para que
quede un sistema lineal, es decir
f(u) = f(u
0
) +f(u
0
)

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

que tiene por solucin

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

que ya es una buena aproximacin de la solucin exacta


dada por el vector (0, 1).
Problema 104 (3 puntos) Calcular 2 iteraciones del
mtodo de Newton-Raphson no lineal para aproximar una
raz del sistema de ecuaciones
x
2
+y
2
1 = 0
y x = 0
partiendo de (x, y) = (1, 1).
Problema 105 (2 puntos) Plantear el algoritmo nece-
sario para calcular, utilizando el mtodo de Newton-
Raphson, las races complejas o reales de un polinomio de
grado 3.
Problema 106 (2 puntos) Se considera el sistema no
lineal
(x 1)y = 0
(y 2)x = 0
A partir de u
1
= (1, 1), calcular u
2
y u
3
utilizando el
mtodo de Newton-Raphson para aproximar un cero del
sistema no lineal.
Problema 107 (2 puntos) Calcular una iteracin del
mtodo de Newton-Raphson no lineal para aproximar una
raz del sistema de ecuaciones
e
xyz
1 = 0
y
2
z
3
2 = 0
(z 1)x
4
3 = 0
partiendo de (x, y, z) = (1, 1, 1).
INTERPOLACIN DE FUNCIONES II
Esta seccin es la continuacin natural del tema interpo-
lacin de funciones visto anteriormente. Por motivos de
coordinacin entre los programas terico y prctico de la
asignatura, el tema de interpolacin de funciones se dividi
en dos partes, siendo sta la segunda parte.
Interpolacin de Hermite
En ocasiones, resulta de inters interpolar no slo el valor
de la funcin en ciertos puntos {x
i
}
i=0,..,N
, sino tambin
el valor de sus derivadas. Un ejemplo clsico de ello es
el desarrollo de Taylor de una funcin en un punto a. En
este caso, aproximamos f(x) por un polinomio de grado N,
P
N
(x) tal que f(x) y P
N
(x) poseen las mismas derivadas
en el punto a desde el orden 0 hasta el orden N.
P
N
(x) = f(a) +
f
0
(a)
1!
(x a) +.. +
f
N)
(a)
N!
(x a)
N
El error de interpolacin viene dado por la frmula
f(x) P
N
(x) =
f
N+1)
()
(N + 1)!
(x a)
N+1
donde es un valor intermedio entre x y a. En el caso
general, donde buscamos un polinomio P(x) tal que l y
todas sus derivadas hasta un cierto orden M coincidan con
una funcin f(x) en los puntos {x
i
}
i=0,..,N
, se utilizan los
denominados polinomios base de Hermite H
i,j
(x), que son
polinomios de grado menor o igual que (N +1)(M +1) 1
dados por las siguientes condiciones:

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

El sistema que debemos resolver para calcular los c


i
es
Ejemplo 25

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

para los puntos x = 1, 0, 1 y 2.


La interpolacin a travs de la funcin seno cardi-
nal
Una base de funciones interpolantes muy utilizada en la
teora de Fourier es la base formada a partir de la funcin
seno cardinal, denida por
sinc(x) =
sin(x)
x
cuya grca es
50 25 0 -25 -50
1
0.75
0.5
0.25
0
x
y
x
y
Esta funcin tiene la propiedad de que en x = 0,
sinc(0) = 1, y para cualquier entero i distinto de 0,
sinc(i) = 0. Dada una funcin f(x), su funcin inter-
polante en los puntos x
i
= a i para i = M, ..., N viene
dada por la funcin
e
f(x) =
N
X
i=M
f(x
i
)
sin(

x
a
i

x
a
i

Ejemplo 26 Consideremos la funcin f(x), denida en


los puntos x = 0, 1, 2, y 3, tal que f(0) = 0, f(1) = 1,
f(2) = 0, f(3) = 2. La interpolacin de esta funcin uti-
lizando la funcin seno cardinal viene dada por la funcin
e
f(x) =
sin( (x 1))
(x 1)
+ 2
sin( (x 3))
(x 3)
cuya grca es
3 2.5 2 1.5 1 0.5 0
2
1.5
1
0.5
0
x
y
x
y
Ejemplo 27 Vamos a comparar grcamente el resultado
de interpolar la funcin del ejemplo anterior utilizando
la interpolacin de Lagrange normal, la interpolacin por
splines cbicos y la interpolacin a travs de la funcin
seno cardinal. El polinomio interpolador de Lagrange se
puede calcular fcilmente y da como resultado
P(x) = x x(x 1) +
5
6
x(x 1)(x 2)
En la siguiente gura se muestran juntas las grcas
del polinomio de Lagrange (lnea a trozos), los polinomios
de la interpolacin por splines cbicos (lnea slida), y la
interpolacin utilizando la funcin sinc(x) (lnea a trozos).
3 2.75 2.5 2.25 2 1.75 1.5 1.25 1 0.75 0.5 0.25 0
2
1.8
1.6
1.4
1.2
1
0.8
0.6
0.4
0.2
0
x
y
x
y
Como puede observarse, la interpolacin por splines
cbicos es la menos oscilante. Por otro lado, cuando el
nmero de puntos de interpolacin aumenta, la diferencia
entre los diferentes tipos de interpolacin tambin lo hace.
Problema 110 (2 puntos) Calcular la funcin que in-
terpola, utilizando la funcin sinc(x), la funcin f(x) =
sin(x) en los puntos x = ,

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

S-ar putea să vă placă și