Вы находитесь на странице: 1из 48

ANLISIS NUMRICO

Miguel Alemn Flores, Luis lvarez Len y Javier Snchez Prez


Departamento de Informtica y Sistemas
Universidad de Las Palmas
Campus de Tafira
35017 Las Palmas, Espaa
Email: {maleman,lalvarez,jsanchez}@dis.ulpgc.es

6 DIFERENCIACIN E INTEGRACIN
NUMRICA
6.1 Diferenciacin Numrica . . . . . . . . . . .
6.2 Diferenciacin numrica en dimensiones superiores . . . . . . . . . . . . . . . . . . . .
6.2.1 Discretizacin del Laplaciano . . . .
6.2.2 Discretizacin del gradiente. . . . . .
6.3 Integracin Numrica . . . . . . . . . . . . .
6.3.1 Mtodos de Cuadratura de Gauss . .
6.3.2 Frmulas de Integracin Numrica
Compuestas . . . . . . . . . . . . . .
6.3.3 Prctica
5
(Implementacin
Mtodo de Integracin de Simpson).
6.4 Integracin numrica en dimensiones superiores. . . . . . . . . . . . . . . . . . . . . .

Contents
1 INTRODUCCIN

2 ARITMTICAS DE PRECISIN FINITA


Y FUENTES DE ERRORES NUMRICOS 2
2.1 Aritmticas de precisin finita. . . . . . . .
2
2.2 Prctica 1 (Aritmticas finitas). . . . . . .
6
2.3 Fuentes de errores numricos. . . . . . . . .
6
3 CLCULO DE LOS CEROS DE UNA FUNCIN
7
3.1 Mtodo de la biseccin. . . . . . . . . . . .
7
3.2 Mtodo de la Regula-falsi . . . . . . . . . .
7
3.3 Mtodo de Newton-Raphson . . . . . . . . .
8
3.4 El mtodo de la Secante . . . . . . . . . . .
8
3.5 Mtodo de Mller. . . . . . . . . . . . . . .
8
3.6 Prctica 2 (El mtodo de NewtonRaphson y la secante) . . . . . . . . . . . .
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

23
23
24
24
24
26
27
27

7 ANLISIS NUMRICO MATRICIAL II


29
7.1 Normas de vectores y matrices. . . . . . . . 29
7.2 Condicionamiento de una matriz. . . . . . . 31
7.3 Clculo de autovalores y autovectores. . . . 31
7.3.1 Mtodo de Jacobi. . . . . . . . . . . 32
7.3.2 Prctica 6 (Mtodo de Jacobi para
el clculo de autovalores y autovectores) . . . . . . . . . . . . . . . . . 34
7.3.3 Mtodo de la potencia . . . . . . . . 35
7.3.4 Mtodo de la potencia inversa. . . . 36
7.4 Mtodos iterativos de resolucin de sistemas lineales. . . . . . . . . . . . . . . . . 37
7.4.1 Mtodo de Jacobi . . . . . . . . . . 37
7.4.2 Mtodo de Gauss-Seidel . . . . . . . 38
7.4.3 Mtodo de relajacin . . . . . . . . . 38
7.4.4 Convergencia de los mtodos iterativos. . . . . . . . . . . . . . . . . . 39
7.4.5 Prctica 7 (Mtodo de relajacin).
40
7.5 Mtodo de Newton-Raphson para sistemas
de ecuaciones no lineales . . . . . . . . . . . 41

4 INTERPOLACIN DE FUNCIONES I
13
4.1 Interpolacin por polinomios de Lagrange. . 13
4.2 Error de interpolacin de Lagrange y polinomios de Chebychev. . . . . . . . . . . . . 14
4.3 Mtodo de diferencias de Newton para el
clculo del polinomio interpolador de Lagrange. . . . . . . . . . . . . . . . . . . . . . 15
4.4 Implementacin de funciones elementales. . 17
4.4.1 Aproximacin de la exponencial . 17
4.4.2 Prctica 3 (Aproximacin de ) . 17
4.4.3 Aproximacin
de
funciones
trigonomtricas . . . . . . . . . . . . 18
4.4.4 Aproximacin de la funcin ln() . . 18
5 ANLISIS NUMRICO MATRICIAL I
5.1 Mtodo de Gauss . . . . . . . . . . . . . . .
5.2 Estimacin del error de un mtodo para resolver sistemas. . . . . . . . . . . . . . . . .
5.3 Mtodo de Cholesky . . . . . . . . . . . . .
5.4 Prctica 4 (Mtodo de Cholesky). . . . . .
5.5 Mtodo de Crout para matrices tridiagonales

22
22

19
19

8 INTERPOLACIN DE FUNCIONES II
42
8.1 Interpolacin de Hermite. . . . . . . . . . . 42
8.2 Interpolacin por splines cbicos. . . . . . . 42
8.3 La interpolacin a travs de la funcin seno
cardinal. . . . . . . . . . . . . . . . . . . . . 44
8.4 La interpolacin a travs de polinomios
trigonomtricos. . . . . . . . . . . . . . . . . 45
8.5 Aproximacin por mnimos cuadrados. . . . 46

20
20
20
21

9 BIBLIOGRAFA BSICA

optado por reducir los contenidos e impartir una seleccin


de los mtodos numricos ms representativos.

46

10 APNDICE A: Resumen de los comandos


de LINUX/UNIX
47

ARITMTICAS DE PRECISIN FINITA Y


FUENTES DE ERRORES NUMRICOS

11 APNDICE B: Resumen del procesador de


texto
47

Aritmticas de precisin finita.

12 APNDICE C: Algunos fallos comunes en


Programacin
48

Un nmero entero se representa en el ordenador a travs


de un nmero fijo 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

INTRODUCCIN
El presente documento es un texto de referencia bsico sobre 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 suminisftrada con los textos de referencia bsicos mencionados en la bibliografa. Muchas
de las demostraciones de los resultados presentados se encuentran 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
interesado 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
finita, que se ha desarrollado en este texto con algo ms
de detalle y con un enfoque algo ms moderno que en los
libros clsicos, por considerar que, en el contexto de una
Ingeniera Informtica, este tema es de especial relevancia.
En el texto se proponen unas prcticas de laboratorio
para realizar a lo largo de la asignatura. El lenguaje de
programacin que se utilizar para las prcticas es el C.
Para establecer 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 programa 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 prcticas.
Para el buen seguimiento de la asignatura, resulta de
gran inters tener cierta soltura en el manejo de los conceptos elementales del Anlisis Matemtico, el lgebra,
y la programacin de Algoritmos. La materia expuesta
en esta documentacin est programada para ser impartida 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 eliminado algunos temas clsicos de un curso completo anual
de Anlisis Numrico como son las ecuaciones diferenciales
ordinarias y las ecuaciones en derivadas parciales. Normalmente, dichos temas se vern en detalle en asignaturas
posteriores. Adems, en lugar de presentar de forma exhaustiva todos los mtodos numricos que se pueden encontrar en los libros de Anlisis Numrico clsicos, se ha

1 2 3
donde = 0 o = 1, representa el valor absoluto del
nmero
| |= + 1 2 + 2 22 + + 1 21
As, utilizando 16 bits, el mayor nmero entero que
podemos representar es
1 + 2 + 22 + + 214 = 215 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 en el ordenador
nos basaremos en el siguiente resultado:
Teorema 1 Un nmero real positivo se puede expresar
como

= 2
2
=1

donde es un nmero entero, 1 = 1 y para 1, = 0


o = 1
Demostracin. Dado un nmero real positivo , existe
un entero tal que 21 2 y por tanto 21
2 1 Por otro lado, si definimos las sucesiones y
de la siguiente forma: 1 = 21 , = 1 y para 1
= 0 1 +
= 1 1 +
=

1
2
1
2

2
2

=1

entonces es claro que | 2 | 21 , y por tanto


2 lo que concluye la demostracin del teorema.
Ejemplo 1 Consideremos = 10 125 podemos expresar
este nmero como
1
1
1
10 125 = 24 ( + 3 + 7 )
2 2
2
Es decir, = 4 1 = 3 = 7 = 1, y el resto de los
es 0 En este caso, el nmero de elementos distintos de
0 es un nmero finito, en general no ocurre as.
2

Evidentemente, cualquier nmero que tenga un


nmero finito de elementos distintos de 0 es un nmero
racional y, por tanto, los nmeros irracionales se representarn siempre con un nmero infinito de elementos 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 finito de elementos no nulos.

Es importante resaltar que los nmeros reales en una


aritmtica de precisin finita 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
especificaciones estndares para la definicin de una aritmtica de precisin finita para los nmeros reales. En este
trabajo, se codifica un nmero real en simple precisin utilizando 32 bits de memoria, de los cuales 23 bits se utilizan
para la mantisa (es decir = 24 puesto que 1 = 1 no se
almacena), 1 bit se utiliza para el signo y 8 bits se utilizan
para el exponente lo cual da un rango de 28 = 256 valores posibles para el exponente . En este caso, se toma
min = 125 y 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

Problema 1 (2 puntos) Demostrar que al representar


el nmero real 01 como
01 = 2

2
=1

el nmero de elementos no nulos es infinito.


Problema 2 (2 puntos) Representar el nmero 00
703 125 como
00 703 125 = 2

2
=1

emax = 2128

Para definir una aritmtica de precisin finita de


nmero reales, lo que se hace habitualmente es discretizar
la frmula de representacin anterior, tomando un nmero
finito de valores posibles y un nmero finito de valores
para el exponente . Como puede observarse, cada valor
viene representado por un bit. Adems, puesto que el
valor 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 finita, los
nmeros reales distintos de cero se representan como

24
X
1
= 3 4 1038

2
=1

y el valor mnimo positivo es


emin = 2125

1
= 1 18 1038
2

Adems, el nmero de combinaciones posibles que


puede tener la mantisa es 224 1 68 107 Es decir,
la aritmtica tiene una precisin de 7 dgitos decimales.
Esta representacin equivale a normalizar el nmero binario 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 normalizacin, 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 define en este trabajo de I.E.E.E. un estndar 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 ( = 53)
1 bit para el signo y 11 bits para el exponente, lo que da
lugar a 211 = 2048 posibilidades de eleccin de exponente
. En este caso, se toma min = 1021 y max = 1024.
Por tanto, el valor mximo que puede tomar un
nmero real en esta aritmtica es

e = 2
2
=1

donde vara entre dos valores limites min max . Al


valor se le llama precisin de la aritmtica. A la secuencia
1 2 3 (donde {0 1}) se le denomina mantisa.
Hay que hacer notar aqu que, dado que hemos impuesto
siempre que 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 finita en funcin de min
max

emax = 21024

53
X
1
= 1 78 10308

2
=1

y el valor mnimo positivo es

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 = 3, puesto que 1 = 1 y slo se almacenan 2
y 3 ) y 2 bits para el exponente , tomando como rango
de = 1 0 1 2 Representar dichos nmeros sobre una
recta.

emin = 21021

1
= 2 23 10308
2

Adems, el nmero de combinaciones posibles que


puede tener la mantisa es 253 9 0 1015 Es decir, la
aritmtica tiene una precisin de 15 dgitos decimales.
3

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

Programa 2 Pseudocdigo para calcular el mayor


nmero positivo de una aritmtica. El programa devuelve
un entero tal que 2 es el nmero positivo mayor
posible.
Algoritmo Mayor_Numero_Positivo
variable real A1.
variable real B2.
variable entera M0
mientras BA hacer
A2*A
B2*A
MM+1
finmientras
escribir(M)
finalgoritmo

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 infinito, 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 dedicadas al exponente de un nmero, se reservan dos, que
corresponden a min 1 y max + 1, para trabajar con con
las excepciones. La regla que se utiliza es la siguiente:

Problema 5 (2 puntos) Dada una aritmtica de precisin finita 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.

1. Si el valor de una variable tiene por exponente


max + 1 y todos los coeficientes de la mantisa valen
0, entonces se considera infinito. Por ejemplo 10
debe dar infinito.
2. Si el valor de una variable tiene por exponente
max + 1 y algn coeficiente de la mantisa es distinto
de 0, entonces se considera que no
es un nmero
(NaN (Not a Number)). Por ejemplo 1 debe dar
NaN.

Vamos a llamar , al conjunto de valores reales a los


que da lugar una aritmtica de precisin finita, es decir
(
)

= 2
{0}
2
=1

3. Si el valor de una variable tiene por exponente


min 1 y todos los coeficientes de la mantisa valen 0,
entonces se considera igual a 0

Dado un nmero real cualquiera , al representarlo


en una aritmtica de precisin finita se produce un error
de redondeo, llamaremos e al nmero real que mejor
aproxima a dentro de

4. Si el valor de una variable tiene por exponente min


1 y algn coeficiente de la mantisa es distinto de 0,
se considera que no est normalizado (es decir 1 = 0)
y el valor de sera
= 2min 1

Definicin 1 Dada una aritmtica de precisin finita, se


define la unidad de redondeo como

2
=2

= 2
Por ejemplo, si = 24 (reales en simple precisin)
= 224 = 5 97 108 y en doble precisin ( = 53),
= 253 = 1 1 1016

Programa 1 Pseudocdigo para calcular el nmero positivo (mayor que cero) ms pequeo
Algoritmo Menor_Numero_Positivo
variable real A1.
variable entera M0
mientras A0 hacer
AA/2
MM+1
finmientras
escribir(M)
finalgoritmo

Programa 3 Pseudocdigo para calcular la unidad de redondeo de una aritmtica. El programa devuelve un entero
tal que = 2
Algoritmo Unidad_Redondeo
variable real A1.
variable real B2
variable entera M1
mientras B1 hacer
AA/2
4

Demostracin.
Un nmero real cualquiera que
tomaremos positivo sin prdida de generalidad, se puede
expresar como

= 2
2
=1

B1+A
MM+1
finmientras
escribir(A)
finalgoritmo

donde 0 = 1 y, en general, = 0 o = 1. Adems,


para un nmero natural cualquiera tenemos que

!

X
X
1

2
2
+
2
2
2
=1
=1

Problema 6 (3 puntos) Se considera una aritmtica de


16 bits donde se dedica 1 bit al signo, 9 bits a la mantisa
( = 10) y 6 bits al exponente (min = 30 max = 31).
Escribir, si es posible, los siguientes nmeros en esta aritmtica:

Por el problema anterior, el nmero que est a la


derecha de la desigualdad tambin pertenece a la aritmtica de precisin finita, y por tanto

1. 2 y los nmeros ms cercanos a 2 por arriba y por


debajo.

| e |

2. El cero, el infinito y NaN.

Ahora bien, como 0 = 1, se tiene que 2 2 | | y,


por tanto
| e || | 2 =| |

3. Los nmeros positivos mayor y menor de la aritmtica


(teniendo en cuenta las excepciones).
4.

1
9

5. 2

2 2
2

con lo que queda demostrado el teorema.

1
2

1
210

Problema
7 (2

2 12 + 213 + 215

+ y

puntos) Sean
=
23 12 + 216 +

1
27

Problema
9 (2 puntos) Dado un nmero e =
P
2 =1 2 en una aritmtica de precisin finita. Calcular el nmero inmediatamente inferior a l en dicha aritmtica.

Calcular

Un resultado importante para la comparacin de dos


nmeros es el siguiente:
Problema 8 (2 puntos) Sean min , max los valores
mnimo y mximo del exponente Demostrar que si
min max entonces los nmeros:

!
X
1


2
2
2
=1

Teorema 3 Si e1 e2 son distintos entonces


| e1 e2 | max {| e1 | | e2 |}

Demostracin: Ejercicio
En muchos algoritmos, el test de parada incluye el
hecho de que dos variables estn prximas entre s. para
ello se fija un umbral o tolerancia que por supuesto
ser mayor que la unidad de redondeo y expresaremos
que las variables y estn cercanas entre s con una
tolerancia si se cumple que

pertenecen al conjunto de nmeros reales generados por


la aritmtica de precisin finita.
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
finita.

| | max {| | | |}
o equivalententemente

Teorema 2 Sean emin , emax los valores positivos menor


y mayor de una aritmtica de precisin finita. Sea la
unidad de redondeo de dicha aritmtica. Si un nmero
real verifica que emin | | emax , entonces

| |

max {| | | |}
Este criterio es simtrico en el sentido de que trata de
igual modo los nmeros y Tambin se puede utilizar
un criterio ms simple, como

| e || |

donde e es el nmero ms cercano a en la aritmtica.

| |

||
5

pero en este caso le estamos dando una significacin especial a con respecto a

Para poder verificar si la prctica est bien, a continuacin se dan los resultados que se deben obtener:

Estos criterios de comparacin de nmeros funcionan


bien salvo cuando los nmeros y estn muy prximos
a 0. Por ejemplo, si = 0, los criterios anteriores quedan

Precisin aritmtica : float


unidad de redondeo = 225 59 108
Nmero menor = 2150 2 1053

||

||

Nmero mayor = 2128 1 1031

lo cual es imposible (si 1) Para evitar este comportamiento, se puede aadir al criterio un valor 0 de
la siguiente forma:

Precisin aritmtica : double


unidad de redondeo = 254 11 1016

| |

(max {| | | |} + )
o bien

Nmero menor = 21075 2 10324


Nmero mayor = 21024 2 10308

| |

(| | +)

Precisin aritmtica : long double


unidad de redondeo = 265 542 1020

Asociado a cualquier aritmtica de precisin finita 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 definir 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 precisin a doble precisin) para, a continuacin, realizar la
operacin en una aritmtica de mayor precisin y, finalmente, el resultado se redondea para pasarlo a la precisin
inicial.

Nmero menor = 216446 4 105275


Nmero mayor = 216384 = 1 104932

Adems calcularemos la distancia relativa entre los


nmeros = 1000 y = 1001 utilizando la frmula
| |
(max {| | | |} + 1)
que es la frmula que utilizaremos durante el curso para
comparar nmeros.
Para observar como gestiona las excepciones el compiladore vamos a acumular
en variables reales las operaciones 10, 1, 0, y 1 e imprimir los resultados por
pantalla. En C la raiz cuadrada se calcula con la funcin
().

Prctica 1 (Aritmticas finitas).


Para compilar los programas utilizaremos el entorno Dev
C++ que puede descargarse gratuitamente desde el sitio
web : http://www.bloodshed.net/dev/devcpp.html
En la pgina de la asignatura tambin se encuentran
todos los ficheros y utilidades necesarias para hacer las
prcticas. En particular el programa 3 de clculo de la
unidad de redondeo est implementado.
La prctica consiste en implementar los programas 1,
2 y 3, y ejecutarlos para las diferententes aritmticas en
precisin real que ofrece el C. Concretamente las variables
en precisin real del C son de 3 tipos :

Fuentes de errores numricos.


Dentro de las posibles fuentes de errores numricos,
destacaremos 3 tipos:
Errores de redondeo. Son los que se producen al redondear un nmero real para poder expresarlo en una
aritmtica de precisin finita. Como vimos en la seccin anterior, este error est controlado por la denominada
unidad de redondeo, = 2 , de tal forma que, al tomar
un nmero real y aproximarlo en la aritmtica por el
valor e ms prximo, el error de redondeo tiene la
expresin:
| e || |

1. float
2. double
3. long double
Adems con la opcin de depuracin se seguir paso
a paso la ejecucin de los programas. Para poder utilizar
las funciones de la librera matemtica hay que incluir al
principio del fichero #include math.h

Errores de cambio de base. Este tipo de errores se


produce al realizar un cambio de base para representar un
6

Problema 11 (2 puntos) Escribir el Pseudocdigo para


implementar el clculo de las races de 2 + + = 0
evitando los errores de cancelacin y teniendo en cuenta
las diferentes opciones que aparecen cuando 6= 0 y = 0

nmero real. Como vimos en la seccin anterior, las aritmticas 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 01 no pueden representarse de forma
exacta en una aritmtica en base 2. Esto quiere decir que,
al representar 01 el ordenador, va a producir un pequeo
redondeo, y este pequeo error de redondeo se puede ir propagando hasta producir errores apreciables. Por ejemplo,
parece razonable pensar que, cuando sumamos 100 veces
el nmero 001, el resultado sea exactamente 1, pero, no
es as. Sin embargo, si sumamos 128 = 27 veces el nmero
27 el resultado s es exactamente 1
Como conclusin de este apartado, podemos extraer
que, para ser ms precisos numricamente, cuando trabajamos con nmeros ms pequeos que la unidad deberamos pensar en trminos de 2 en lugar de 10
que es como solemos hacerlo.

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, (),
esto es, los valores de para los cuales () = 0

Mtodo de la biseccin.
Se considera un intervalo [ ] donde la funcin () cambia de signo, es decir () () 0. El mtodo consiste en
ir dividiendo el intervalo [ ] por la mitad de la siguiente
forma:
Se toma el punto medio +
Si ( +
2 .
2 ) = 0 ya
+
hemos encontrado la raz = 2 . En caso contrario,
+
si ( +
2 ) () 0 entonces hacemos = 2 y volvemos
a subdividir el nuevo intervalo [ ] Si, por el contrario,
+
() ( +
2 ) 0, entonces hacemos = 2 y volvemos
a empezar. Las sucesivas subdivisiones del intervalo [ ]
van aproximando la raz.

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 significativa del nmero (los dgitos de
menos valor), dejando relativamente intacta la parte ms
significativa del nmero, que corresponde a los dgitos de
mayor valor. Por ello, al restar dos nmeros de magnitud
parecida, se cancelan las partes significativas, quedando
la aportacin de los dgitos de menos valor, que es donde
ms error hay. Por ejemplo, en el programa anterior, se
ha utilizado este fenmeno de cancelacin para poner de
manifiesto la diferencia entre trabajar con bases distintas.
En los algoritmos, muchas veces se intenta evitar la posibilidad 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 2 + + = 0
(con 6= 0)

2 4
=
2
una forma
de evitar la cancelacin que se produce cuando
2 4 consiste en calcular primero la raz de
mayor valor absoluto, es decir

+ () 2 4
1 =
2

Problema 12 (2 puntos) Calcular 2 iteraciones del algoritmo de la biseccin para buscar un cero de la funcin
() = 2 2 en el intervalo [2 0]
Problema 13 (2 puntos) Escribir el Pseudocdigo para
implementar el mtodo de la biseccin

Mtodo de la Regula-falsi
Este mtodo es una variacin del anterior en el sentido
siguiente: En lugar de tomar el punto medio +
2 del intervalo, se considera el punto de interseccin de la recta
que pasa por los puntos ( ()) y ( ()) con el eje .
Es decir, en el razonamiento anterior, se sustituye el valor
= +
2 por el valor

y despus la segunda raz 2 utilizando la relacin 1 2 =

Por lo tanto, en los algoritmos, se deber evitar, en la


medida de lo posible, la resta de variables que tengan una
magnitud cercana.

()
() ()

Problema 14 (2 puntos) Calcular 2 iteraciones del algoritmo de la regula-falsi para buscar un cero de la funcin
() = 2 2 en el intervalo [0 2]

Problema 10 (1 punto) Calcular las races del polinomio () = 2 2 + 001 evitando los errores de
cancelacin.

Problema 15 (2 puntos) Escribir el Pseudocdigo para


implementar el mtodo de la Regula-falsi.

Mtodo de Newton-Raphson

El mtodo de la Secante

ste es, sin duda, uno de los mtodos ms importantes y


tiles para el clculo de races. Dada una aproximacin
inicial de la raz 0 , se busca, a partir de 0 una aproximacin mejor 1 de la raz, de la siguiente forma: Se
sustituye la funcin () por el valor de su desarrollo de
Taylor centrado en 0 hasta el orden 1, es decir

Este mtodo es una variante del mtodo de Newton para


el caso en que no sea posible calcular la derivada de ()
de una forma analtica. En este caso, se sustituye el valor
0 ( ) en el algoritmo, por el valor
( ) (1 )
1

() (0 ) + 0 (0 )( 0 )

que corresponde a una aproximacin de 0 ( ) Para iniciar el algoritmo, son necesarias dos aproximaciones iniciales, 0 y 1

que corresponde a un polinomio de grado 1 y a continuacin se calcula 1 como el cero de este polinomio, es
decir:
(0 )
1 = 0 0
(0 )

Problema 16 (1 punto) Calcular una iteracin del


mtodo de Newton-Raphson para calcular un cero de la
funcin () = 3 3 partiendo de 0 = 1

y por tanto, de forma general, obtenemos, a partir de 0


una secuencia de valores que van aproximando la raz,
definidos por
( )
+1 = 0
( )

Problema 17 (1 punto) Calcular una iteracin del


mtodo de la secante para calcular un cero de la funcin
() = 3 3 partiendo de 0 = 0 1 = 1.

A continuacin veremos una aplicacin de este mtodo


para calcular la raz cuadrada
de un nmero positivo ,
teniendo en cuenta que si = entonces () = 2
= 0.

Problema 18 (2 puntos) Escribir el pseudocdigo del


algoritmo del mtodo de la secante. Los datos de entrada
son las aproximaciones iniciales, 0 y 1 el nmero mximo de iteraciones, max y la tolerancia, , para
determinar la igualdad de dos nmeros.

Programa 4 Pseudocdigo para calcular una aproximacin de la raz cuadrada de un nmero positivo con
una tolerancia y un nmero mximo de iteraciones
max
Algoritmo Raiz_Cuadrada
variables reales A,TOL
variable entera Nmax
variables reales X0, X1
leer(A,TOL)
leer(Nmax)
si A<0 entonces
escribir(El numero A no es positivo)
devolver CODIGO DE ERROR
finsi
X0(1+A)/2.
para K1 hasta Nmax hacer
X1X0-(X0*X0-A)/(2.*X0)
si X0=X1 mod TOL entonces
escribir (LA RAIZ DE A ES,X0)
devolver X1
sino
X0X1
finsi
finpara
escribir(No mximo de iterac. excedido)
devolver CODIGO DE ERROR
finalgoritmo

Mtodo de Mller.
Este mtodo es una generalizacin del mtodo de NewtonRaphson. 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
() (1 )+ 0 (1 )(1 )+

00 (1 )
(1 )2
2

donde 1 es una aproximacin de una raz de la funcin () Para obtener una aproximacin mejor de la
raz calculamos los ceros del polinomio de segundo grado
anterior, es decir
q
0 (1 ) ( 0 (1 ))2 2 (1 ) 00 (1 )
= 1 +
00 (1 )
De las dos posibles races, nos quedamos con aqulla
que sea ms cercana a 1 . Dicha raz ser la aproximacin de la raz de () en la etapa En el caso
en que 00 (1 ) = 0 calculamos por el mtodo de
Newton-Raphson. En el caso en que no conozcamos
analticamente el valor de la primera y segunda derivada
de () podemos utilizar las siguientes aproximaciones:
00 (1 ) 2
8

(2 ) (3 )
(1 ) (2 )

2 3
1 2

3 1

0 (1 )

(1 ) (2 )
1 2

00 (1 )
(1
2

1. () = 2 : Para todos los mtodos la solucin


se alcanza en una iteracin y no hay diferencia con
respecto la precisin de la aritmtica

2 )

Como veremos posteriormente, la eleccin de las frmulas anteriores equivale a aproximar () por la parbola
que pasa por los puntos (3 (3 )) (2 (2 ))
y (1 (1 )), y calcular posteriormente las derivadas
de dicha parbola.

2. () = 2 2 :
(a) M1 (float) : 3 iteraciones '
108
(b) M2 (float) : 3 iteraciones '
108

Prctica 2 (El mtodo de Newton-Raphson y la


secante)

(c) M2 (float) : 4 iteraciones '


108

Implementar en C++ el mtodo de Newton-Raphson y el


de la secante teniendo en cuenta las siguientes posibilidades :

(d) M1 (double) :
() ' 1016
(e) M2 (double) :
() ' 1016

1. Mtodo 1 (M1) : Newton-Raphson conociendo la funcin y su funcin derivada como funciones independientes

(f) M2 (double) :
() ' 1016

2. Mtodo 2 (M2) : Newton-Raphson conociendo slo la


funcin. La derivada se calcula haciendo
0 () =
donde =
aritmtica

() '
() '
() '

5 iteraciones

'

5 iteraciones

'

6 iteraciones

'

(g) M1 (long double) : 5 iteraciones '


() ' 1019

( + ( + 1)) ()
( + 1)

(h) M2 (long double) : 5 iteraciones '


() ' 1019

siendo la unidad de redondeo de la

(i) M2 (long double) : 6 iteraciones '


() ' 1019

3. Mtodo 3 (M3) : Mtodo de la secante. Se dan 2


proximaciones y la derivada se calcula haciendo
0 (1 ) =

3. () = cos() + 1

(1 ) (0 )
(1 0 )

(a) M1 (float) : 8 iteraciones


() ' 106

'

313

'

313

(c) M2 (float) : 12 iteraciones


() ' 106

'

313

(b) M2 (float) : 8 iteraciones


() ' 106

Las funciones devuelven el nmero de iteraciones realizadas o un nmero negativo si han fallado. La raiz se
devuelve como un parmetro de entrada/salida. Adems
se tendr como parmetros el nmero mximo de iteraciones max y la tolerancia para determinar la
igualdad entre dos nmeros. En los ejemplos se tomar
siempre = 100 donde es la unidad de redondeo
de la aritmtica y max = 100000
La funcin a la que se le calculan los ceros se define en
el propio cuerpo del programa. Utilizar los mtodos para
calcular los posibles ceros de las siguientes funciones:

(d) M1 (double) :
() ' 1014
(e) M2 (double) :
() ' 1015
(f) M2 (double) :
() ' 1015

22 iteraciones

'

22 iteraciones

'

32 iteraciones

'

(g) M1 (long double) : 28 iteraciones '


() ' 1018

1. () = 2

(h) M2 (long double) : 28 iteraciones '


() ' 1018

2. () = 2 2

(i) M2 (long double) : 40 iteraciones '


() ' 1018

3. () = cos() + 1
4. () = 1

4. () = 1 (los 3 mtodos fallan)

5. () = 2 + 1

5. () = 2 + 1 (los 3 mtodos fallan)


Nota: Utilizar como tolerancia = 100 donde es
la unidad de redondeo de la aritmtica y max = 100000
Tomar siempre como aproximacin inicial de la raiz 0 =
1 (para el mtodo de la secante tomar 1 = 11). Los
resultados que se deben obtener son
9

Teorema 4 (Mtodo de Horner). Sea () = +


1 1 + + 0 si definimos como

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 asignatura 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 problemas 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.

=
= + +1 0
entonces se verifica que
(0 ) = 0
0 (0 ) = 1
+ 1 2
+ + 1
0
0
Demostracin Sea el polinomio () = 1 +
1 2 + + 1 . Veamos que se verifica que
() = ( 0 )() + 0
Efectivamente, dado que = +1 0 y = ,
obtenemos la igualdad anterior teniendo en cuenta que

Ejemplo 2 Actualmente estn muy de moda los planes de


pensiones. Las entidades financieras venden a sus clientes
los planes de pensiones de la siguiente forma, por ejemplo:
si usted aporta durante 30 aos 600 euros todos los aos,
aportacin que se va incrementando cada ao en un 10%
es decir el primer ao 600 el segundo ao 610, etc., entonces, le aseguramos que al final del trigsimo ao tendr
a su disposicin la cantidad de 156263 de euros. Ahora
bien, el dato ms importante para el futuro pensionista
(que a menudo oculta la entidad financiera) es el inters
nominal anual que se est aplicando ao tras ao al dinero
depositado. Si llamamos al inters nominal anual que
se aplica al dinero, la ecuacin que debemos resolver para
obtener es
29
X

( 0 )() + 0 =
+ (1 0 ) + + (0 1 0 )
Por ltimo, obtenemos
0 () = ( 0 )0 () + ()
de donde sale obviamente que 0 (0 ) = (0 ).
Este teorema permite calcular el polinomio y su
derivada en un punto de forma muy sencilla, como muestra
el siguiente algoritmo

(600) (11) (1 + )30 = 156263

Programa 5 El siguiente algoritmo calcula la evaluacin


de un polinomio y su derivada en un punto almacenndolos en las variables y

=0

Ahora bien, para calcular debemos calcular las


races del polinomio en dado por
() =

29
X

=0

Algoritmo Horner
variable entera N (Grado del Polinomio)
leer(N)
vector variables reales A de tamao N+1
para K0 hasta N hacer
leer(A(K))
finpara
PX=A(N)
PPX=A(N)
para KN-1 hasta 1 hacer
PX=PX*X+A(K)
PPX=PPX*X+PX
finpara
PX=PX*X+A(0)
finalgoritmo

(600) (11) (1 + )30 156263

El clculo de las races de este polinomio nos lleva


a = 4487% Este ejemplo muestra como un problema
financiero 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 () = + 1 1 +
+ 0
ste
se
puede
expresar
tambin de la forma siguiente:
()
=
0 +
(1 + (2 + (3 + ( + (1 + )))))
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.

Otros resultados interesantes de utilidad para localizar en qu zonas pueden estar las races del polinomio
son:

10

Teorema 5 Sea un polinomio () = +1 1 +


+ 0 con 6= 0 entonces las races reales de ()
estn en el intervalo

max=01 | |
max=01 | |
1 +
1
| |
| |
Demostracin Veamos que si || 1 +
entonces | ()| 0 Efectivamente,
| ()| | |

max

=01

| |

1
X
=0

Teorema 7 Entre dos races de una funcin derivable


() hay una raz de 0 ().
Demostracin Teorema de Rolle.
Teorema 8 La derivada ) () del polinomio
() = + 1 1 + 0 es

max=01 | |
,
| |

) () =

|| =

Demostracin Es inmediato, derivando sucesivamente el


polinomio ()

1 ||

1 ||
||

=
| | || max | |
=01
|| 1
|| (| | (|| 1) max=01 | |)
=
0
|| 1
= | | ||

max

=01

!
! 1 ( 1) ! 1
+
++

( )!
( 1)!
1

| |

Los dos resultados anteriores permiten aislar las posibles races de () de la forma siguiente: Si llamamos
max=01 | |
max a 1 +
entonces las races distintas
| |
1 2 de () estn intercaladas con las
races 01 02 01 de 0 (), es decir
max 1 01 2 02 01 max

Teorema 6 Sea un polinomio () = +1 1 +


+ 0 entonces el nmero de races positivas es igual al
nmero de cambios de signo en los coeficientes 0
(saltando los posibles coeficientes nulos), o bien ese mismo
nmero menos un nmero par.

Volviendo a aplicar este razonamiento sucesivamente


sobre 0 () 00 () 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 ():

Demostracin [Is-Ke] Pg. 126.


1. Se parte del intervalo [max max ]

Para la estimacin del nmero de races reales negativas, se aplica el teorema anterior cambiando por .

1)

del Polinomio 1) () (que


2. Se calcula la raz 1
es un polinomio de grado 1)

Ejemplo 3 Sea () = 34 + 103 10 3, los signos de los coeficientes son: + + . Por tanto, hay un
nico cambio de signo y hay una raz positiva. Si cambiamos por , los signos de los coeficientes son + +.
Por tanto, hay 3 cambios de signo y hay una o tres races
negativas. En este caso, las races son = 1 1 3 13 .

3. Para = 2 1

Se calculan las races de () en los intervalos


+1)

max 1

+1)

+1)
+1 max

Al final del procedimiento, habremos aislado completamente a las races de () Este procedimiento se puede
utilizar para grados relativamente pequeos ( 30),
puesto que su utilizacin requiere el clculo de factoriales, que se dispara rpidamente. Por ejemplo, 30! = 2
6 1032 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.

Problema 19 (1 punto) Calcular una iteracin del


mtodo de Mller para calcular un cero de la funcin
() = 3 3 partiendo de 0 = 1 (Calculando las
derivadas de la funcin de forma exacta) y quedndonos
con la raz ms cercana a 0

Problema 20 (2 puntos) Dado el polinomio () =


23 + 32 + 4 + 5, evaluar el polinomio y su derivada
en el punto = 2, utilizando el algoritmo de Horner.

Ejemplo 4 Consideremos el polinomio () = 4 3


72 + +6 que tiene por raices = 1 3 1 2 Para este
polinomio, tenemos que max = 8 Por tanto, las races
estn en el intervalo [8 8]. Por otro lado su grfica es

Problema 21 (1 punto) Calcular el nmero mximo de


races positivas y negativas del polinomio 5 353 +302 +
124 120 y localizarlas en un intervalo.
11

-3

-2

100

80

80

60

60

40

40

20

20

-1

-3

100
80
60
40
20

-2

-1

Polinomio 0 () = 43 32 14 + 1

100

60
40
20
-2

-1

-20

Programa 6 Pseudocdigo
de
la
funcin
( ) que devuelve las races
reales de un polinomio.
Dicha funcin tiene como
parmetros un vector real () donde estn los coeficientes
del polinomio, un vector real () donde se guardan
las races del polinomio una vez calculadas, la tolerancia con la que consideramos que dos nmeros
son iguales, el grado del polinomio y el nmero
mximo de iteraciones max para el proceso de
Newton-Raphson. Tambin se define la funcin auxiliar
( 1 2 ) que devuelve la raz del
polinomio que se obtiene aplicando el mtodo de NewtonRaphson, tomando como valor inicial el punto medio del
intervalo [1 2]

80

-3

Problema 22 (2 puntos) Aislar en intervalos las races


del polinomio () = 203 452 + 30 1.

La derivada segunda de este polinomio es


00 () = 122 6 14cuyas races son = 0858 1
358 y cuya grfica es

-1

El mtodo funcionara de la siguiente forma: Primero


calculamos el cero de 000 (), es decir = 025 por tanto
los ceros de 00 () estaran en los intervalos [2166 025]
y [025 2166] Puesto que hay cambio de signo de 00 ()
en cada uno de estos intervalos, buscamos las races de
00 () en esos intervalos, utilizando cualquier mtodo
numrico de los vistos anterioremente, por ejemplo, el
mtodo de la Regula-falsi, obteniendo 0858 para el intervalo [2166 025] y 1 358 para el intervalo [025 2166]
Por tanto, las posibles races de 0 () estarn en los intervalos [45 0858] [0858 1358] y [1358 45] Buscamos ahora las races de 0 () es esos intervalos, obteniendo = 1 574 7 05 102 y 2 253 Por tanto, los
posibles ceros de () estarn en los intervalos [8 1
574] [1574 7 05102 ] [7 05102 2 253] y [2253 8]
Buscamos, finalmente, las races de () en cada un de
esos intervalos y obtenemos = 2 1 1 3

La derivada de este polinomio es 0 () = 43 32


14 + 1cuyas races son = 1 574 7 05 102 2 253 y
cuya grfica es

-3

-2

Polinomio 000 () = 24 6

Polinomio () = 4 3 72 + + 6

100

Polinomio 00 () = 122 6 14
ICEROPOL(A,R,TOL,N)
Algoritmo Clculo ceros polinomio
vectores de variables reales F,AP y PI de dimensin N+1

La derivada tercera de este polinomio es


() = 24 6 cuya raz es = 025 y cuya
grfica es
000

12

sino
retornar
finsi
sino
RP1=RP-PX/PPX
si (RP1 ES IGUAL A RP MODULO TOL)
entonces
RP=RP1
R(L)=0.
retornar
sino
RP=RP1
finsi
finsi
finhacer
finalgoritmo

CALCULAMOS LOS FACTORIALES NECESARIOS Y LO ALMACEMANOS EN F()


F(0)=1.
para K 1 hasta N hacer
F(K)=F(K-1)*K
finpara
CALCULO INTERVALO INICIAL
variable real PMAXABS(A(0))
para K 1 hasta N-1 hacer
si (PMAX ABS(A(K)) entonces
PMAX=ABS(A(K)
finsi
finpara
PMAX=PMAX/ABS(A(N))+1.
PI(0)=-PMAX
PI(1)=-(A(N-1)*F(N-1))/(A(N)*F(N))
para K2 hasta N hacer
PI(2)=PMAX
finpara
CALCULO COEFICIENTES DEL POLINOMIO
DERIVADA
para K2 hasta N hacer
PI(K)=PMAX
finpara
para KN-2 hasta 0 hacer
para L0 hasta N-K hacer
AP(L)=A(L+K)*(F(K+L)/F(L))
finpara
finpara
CALCULAR LOS CEROS DE AP EN LOS INTERVALOS PI()
para L 1 hasta N-K hacer
PI(L)=RP(N-K,AP,PI(L-1),PI(L),TOL,R,L-1)
finpara
PASAMOS LAS RAICES AL VECTOR R()
variable entera M0
para K 1 hasta N hacer
si (R(K-1) ES IGUAL A 0) entonces
R(M)=PI(K) M=M+1
finsi
finpara
devolver(M)
finalgoritmo

Problema 23 (2 puntos) Aislar en intervalos las races


del polinomio () = 23 + 32 12 + 1

INTERPOLACIN DE FUNCIONES I
El problema general de la interpolacin de funciones consiste en, a partir del conocimiento del valor de una funcin
(y eventualmente de sus derivadas) en un conjunto finito
de puntos, aproximar el valor de la funcin fuera de ese
conjunto finito de puntos.

Interpolacin por polinomios de Lagrange.


Sea una funcin () que conocemos en un conjunto finito
de valores { }=0 . Es decir, sabemos que ( ) =
. El polinomio interpolador de Lagrange () de ()
en los puntos { }=0 , es el nico polinomio de grado
menor o igual que tal que
( ) = ( ) = 0
() se puede expresar en trmino de los denominados polinomios base de Lagrange (), definidos como:
() =

RP(N,A,X1,X2,TOL,R,L)
Algoritmo Clculo raz polinomio en un intervalo
R(L)=1.
si (X1 ES IGUAL A X2) entonces
devolver(X1)
finsi
RP=(X1+X2)/2.
para K 1 hasta N hacer
EVALUAR POLINOMIO Y SU DERIVADA
POR EL METODO DE HORNER
si (PPX ES IGUAL A 0.) entonces
si (PX ES IGUAL A 0.) entonces
R(L)=0.

6= ( )

6= ( )

estos polinomios base tienen la propiedad fundamental


siguiente

1 =
( ) =
0 6=
Por tanto, el polinomio interpolador de Lagrange
puede expresarse como
() =

X
=0

13

( ) ()

Ejemplo 5 Consideremos una funcin () = , vamos


a interpolarla en los puntos 0 = 0 1 = 1 y 2 = 1
Para calcular 2 (), el polinomio interpolador de Lagrange
en estos puntos, calcularamos los polinomios base:

Error de interpolacin de Lagrange y polinomios


de Chebychev.
Evidentemente, al aproximar () por el polinomio interpolador () en un intervalo [ ] se comete, en general,
un error de interpolacin, que viene determinado por el
siguiente teorema.

( + 1)( 1)
1
( 1)
2
( + 1)
2

0 () =
1 () =
2 () =

Teorema 10 Sea () una funcin, y () su polinomio


interpolador de Lagrange en los puntos { }=0 [ ]
y [ ] entonces
() () =

siendo el polinomio interpolador:

+1) ()
( )
( + 1)! =0

donde es un valor intermedio perteneciente a [ ]


2 () = 0

( + 1)
( + 1)( 1)
( 1)
+ 1
+
1
2
2

Demostracin Si = , el error de interpolacin es cero


y por tanto la frmula anterior es vlida. Consideremos
ahora distinto a los y definamos
() =
=0 ( )
() ()
=
()
() = () () ()

En la siguiente figura comparamos la grfica del polinomio 2 () (trazo continuo) con la grfica de la funcin
(trazo discontinuo)
Ejemplo 6

La funcin () tiene al menos + 1 ceros en los puntos y en el punto Por tanto, su funcin derivada 0 ()
tiene al menos ceros repartidos entre los ceros de ()
Anlogamente, 00 () tiene al menos 1 ceros y as sucesivamente hasta llegar a +1 () que tiene al menos 1
cero. Si llamamos a dicho cero, obtenemos

y4
3
2

+1 () = +1) () ( + 1)!

de donde, despejando y sustituyendo por su valor, obtenemos el resultado del Teorema.

-1.4-1.2 -1.0 -0.8 -0.6-0.4-0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4

x
Problema 25 (2 puntos) Calcular la expresin del error de interpolacin al aproximar la funcin () = ()
en el intervalo [0 2] interpolando en los puntos 0 2 y
3
2 y acotarlo superiormente.

Problema 24 (2 puntos) Calcular el polinomio interpolador de Lagrange 3 () de la funcin () = () en


los puntos 0 2 y 3
2 .

La cuestin que vamos a abordar en este apartado es,


en el caso en que queramos interpolar una funcin en un
intervalo [ ] y que nosotros podamos elegir los valores de
interpolacin , cmo elegirlos de tal forma que el error de
interpolacin sea mnimo. Para ello, elegiremos los puntos
tales que
=0 ( ) sea lo ms pequeo posible en
[ ]

Teorema 9 El polinomio interpolador de Lagrange es el


nico polinomio de grado igual o inferior a tal que
( ) = ( )

= 0

Demostracin Sea () un polinomio de grado inferior


o igual a que verifique que ( ) = ( ) = 0
Entonces, el polinomio () = () () es un polinomio de grado inferior o igual a que verifica que
( ) = 0 y, por tanto, posee + 1 races, lo cual es
imposible, salvo que () sea identicamente igual a cero.
Por tanto () 0 y () = ()

Teorema 11 Sea 0 y un intervalo [ ] Se consideran los puntos dados por

2 + 1
1 + cos

= 0
= +
2
2 + 2

14

entonces
max

[]

=0 ( ) |=

max |
e ) |
=0 (

+1

Newton. El mtodo consiste en ir calculando progresivamente los polinomios () que interpolan la funcin en
los puntos 0 de la siguiente forma:

0 () = 0
1 () = 0 () + 1 ( 0 )
2 () = 1 () + 2 ( 0 )( 1 )

() = 1 () + ( 0 )( 1 )( 1 )

[]

para cualquier otra eleccin posible de valores de interpolacin


e

Demostracin La demostracin para el intervalo [1 1]


se encuentra en [Ki-Ch] Pg. 292-294. La demostracin
para un intervalo cualquiera [ ] se obtiene fcilmente
transformando el intervalo [1 1] en [ ]

A los coeficientes los denotamos por


= [0 ]
Ejemplo 8 Vamos a interpolar la funcin () = en
los puntos 0 = 0 1 = 1 y 2 = 2

Por tanto, utilizando este resultado, el error de interpolacin mximo viene determinado por:
| () () |

max[] +1) ()
( + 1)!2

+1

0 () = 1
1 () = 1 + 1
Como 1 (1) debe ser igual a , despejando obtenemos

Ejemplo 7 Se considera [ ] = [0 1] y = 5 (es decir


6 puntos de interpolacin). Los puntos de interpolacin
dados por el teorema anterior son:
0
1
2
3
4
5

=
=
=
=
=
=

1 = 1
Por ltimo

982 96
853 55
629 41
370 59
146 45
1 703 7 102

2 () = 1 () + 2 ( 1)

Como 2 (2) debe ser igual a 2 despejando obtenemos


2 1 (2)
2 =
2
Por tanto, el polinomio 2 () lo expresamos como
2 () = 1 + ( 1) +

Problema 26 (2 puntos) Calcular el error mximo de


interpolacin en el intervalo [0 1] al interpolar la funcin
cos() en los puntos descritos en el ejemplo anterior.

2 2 + 1
( 1)
2

Como veremos en el teorema siguiente, los coeficientes


[0 ] que se denominan diferencias divididas de
Newton, verifican las siguientes propiedades:

En el caso de que [ ] = [1 1] los valores ptimos de interpolacin dados por la frmula anterior son
las races de los denominados polinomios de Chebychev,
() construidos de la manera siguiente:

[ ] = ( )
[+1 ] [ ]
[ +1 ] =
+1

[+1 + ] [ +1 ]
[ + ] =
+

0 () = 1
1 () =
() = 21 () 2 ()

Teorema 12 Si denotamos por = [0 ] entonces el polinomio de interpolacin de Lagrange ()


viene dado por

Mtodo de diferencias de Newton para el clculo


del polinomio interpolador de Lagrange.
Numricamente, el clculo de () a travs de los polinomios base necesita de la evaluacin de + 1 polinomios
de grado Adems, si queremos aadir un nuevo punto
de interpolacin, debemos cambiar todos los polinomios
base de Lagrange. Un mtodo ms directo para el clculo de () es el denominado mtodo de diferencias de

() =

=0

1
=0 ( )

donde los coeficientes [ ] verifican


[ + ] =

15

[+1 + ] [ +1 ]
+

En la siguiente grfica se muestra la diferencia


3 () en el intervalo [0 3] :

Demostracin En primer lugar, observamos que


[ + ] indica, para cada () el coeficiente que
acompaa a la potencia en el polinomio interpolador
() para los puntos + Como el polinomio interpolador es nico, [ + ] no depende del orden en
que tomemos los puntos + y, por tanto:

0.1

[ + ] = [+ ]
0.0

Consideremos ahora el polinomio interpolador ()


que interpola en los puntos + es decir, cambiando
el orden de los puntos. () se puede escribir como

-0.1

() = 0 + 1 ( + ) + 2 ( + )( +1 ) +
donde

-0.2

= [+ + ]
Por la unicidad del polinomio interpolador obtenemos
que () = () y, por tanto
= [ + ] = [+ ] =
Problema 27 (2 puntos) Interpolar la funcin () =
10
2 +1 en los puntos 0 = 2 1 = 1 2 = 1 3 = 2
utilizando las diferencias de Newton y evaluar el polinomio
en = 0 utilizando el algoritmo de Horner.

De nuevo, por la unicidad del polinomio interpolador,


los coeficientes que acompaan a la potencia 1 en ambos polinomios coinciden y, por tanto:
1

1
X
=0

+ = 1

+
Problema 28 (2 puntos) Calcular el polinomio interpolador de Lagrange 3 () de la funcin () = () en
los puntos 0 2 y 3
2 utilizando las diferencias divididas
de Newton.

=1

Despejando obtenemos
=

1 1
+

Finalmente obtenemos el resultado del teorema, teniendo en cuenta que


1
1

Problema 29 (3 puntos) Calcular el polinomio interpolador de Lagrange 3 () de la funcin () = 2 en


los puntos 0 1 3 y 4 utilizando las diferencias divididas de
Newton. Expresar el polinomio tomando en primer lugar
0 = 0 1 = 1 2 = 3 y 3 = 4 y, en segundo lugar,
0 = 4 1 = 3 2 = 1 y 3 = 0

= [ +1 ]
= [+ +1 ] = [+1 + ]

Ejemplo 9 Sea () = si interpolamos () en los


puntos 0 = 0 1 = 1 2 = 2 3 = 3, obtenemos el
polinomio interpolador de la siguiente forma:

Problema 30 (3 puntos) Dada una funcin () y una


secuencia de valores , aproximar () por la parbola
que pasa por los puntos (1 (1 )) (2 (2 ))
y (3 (3 )). Calcular posteriormente las derivadas
del polinomio y comprobar que coinciden con las frmulas dadas en el mtodo de Mller para el clculo de las
derivadas 00 (1 ) y 0 (1 )

[0 1] = 1 1
[1 2] = 2 1
[2 3] = 3 2
2 2 + 1
[0 1 2] =
2
3 22 + 1
[1 2 3] =
2
3 32 + 31 1
[0 1 2 3] =
6

Programa 7 Pseudocdigo donde se definen las funciones IDIFNEWTON, que a partir del vector (0 : ) de
puntos de interpolacin y el vector (0 : ) de valores de
la funcin () en los puntos de interpolacin, devuelve el
vector (0 : ) de coeficientes de diferencias divididas que
definen el polinomio de Lagrange (() = [0 1 ]
), y la funcin EVDIFNEWTON(A,X,X0,N) que a partir
de los coeficientes dados por el vector (0 : ) y el conjunto de puntos de interpolacin, devuelve el valor de la
evaluacin del polinomio de Lagrange en el punto 0

Por tanto el polinomio interpolador de Lagrange es:


2 2 + 1
( 1) +
2
3 32 + 31 1
( 1)( 2)
6

3 () = 1 + ( 1) +

16

de para 0 [0 1] Utilizando como puntos de interpolacin los asociados a los polinomios de Chebychev:

1
2 + 1
=
1 + cos

= 0
2
2 + 2

FUNCTION IDIFNEWTON(A,X,F,N)
Algoritmo Clculo polinomio interpolador por diferencias de Newton
vector real B de dimensin N+1
para K 0 hasta N hacer
B(K)=F(K)
finpara
A(0)=F(0)
para K 1 hasta N hacer
para L0 hasta N-K hacer
si (X(K+L).EQ.X(L)) entonces
devolver(1)
finsi
B(L)=(B(L+1)-B(L))/(X(K+L)-X(L))
finpara
A(K)=B(0)
finpara
devolver(0)
finalgoritmo

obtenemos que el error relativo verifica que:


+1
0

1
| () |

0
( + 1)!2 2

Para = 6 el error relativo es menor que 66 108


y, por tanto, del mismo orden que la unidad de redondeo
en una aritmtica de 32 bits. Asi, tomando un polinomio de grado = 6 es decir 7 puntos de interpolacin,
obtenemos ya la mejor aproximacin posible de en el
intervalo [0 1] en una aritmtica de 32 bits.
Prctica 3 (Aproximacin de )
Crear una funcin en que devuelva el valor de con
[0 1] utilizando el polinomio de Lagrange 6 () que
interpola a en los puntos:

FUNCTION EVDIFNEWTON(A,X,X0,N)
Algoritmo Evaluar Polinomio interpolador
EVDIFNEWTON=A(N)
para K=N-1 hasta 0 hacer
EVDIFNEWTON=EVDIFNEWTON*(X0X(K))+A(K)
finpara
finalgoritmo

1
2

2 + 1
1 + cos

14

= 0 6

Comprobar que el polinomio esta bien construido, es


decir que 6 ( ) = para todos los Introducir por
teclado un valor , evaluar y mostrar 6 () y Utilizar
= 0 1 05 2 y 3
Nota: Utilizar las funciones IDIFNEWTON(.), que calcula el polinomio interpolador a partir de los puntos y valores de interpolacin, y EVDIFNEWTON(.), que evalua
el polinomio interpolador en un punto ya implementadas
en la librera correspondiente

Implementacin de funciones elementales.


Una vez definida una aritmtica en precisin finita y las 4
operaciones bsicas (suma, resta, multiplicacin, divisin),
es necesario definir, a partir de estas operaciones, las funciones elementales
que todos usamos, como son: la raz

cuadrada , las funciones trigonomtricas: () cos()


tan() la funcin ln() la funcin , la funcin etc.
Las tcnicas elementales para definir estas funciones consisten en utilizar la interpolacin polinmica, los desarrollos de Taylor y los algoritmos
de bsqueda de ceros (como
vimos anteriormente para )

Los resultados que se deben obtener son los siguientes


: Para los puntos de interpolacin y para cualquier
precisin se obtiene

0.9874
0.8909
0.7169
0.5
0.2830
0.109
0.012

Aproximacin de la exponencial

2.6844
2.4373
2.0481
1.6487
1.3271
1.1152
1.0126

| 6 ( )|
0
0
0
0
0
0
0

Para los puntos = 0 1 05 2 y 3 se obtiene

Un nmero real siempre se puede expresar como =


+ 0 , donde es un nmero entero y 0 [0 1] Dado
que
0
=

Precisin double

| 6 ()|
0
1
4 108
0.5 1.6487 0
1.
2.7182 6 108
2.
7.3890 6 103
3.
20.085 3 101

podemos descomponer el clculo de en el clculo, por


un lado, de , donde al ser un entero el clculo es inmediato a partir de multiplicaciones sucesivas de potencias
naturales de 1 (si 0), y por otro, en el clculo

No se aprecian diferencias apreciables en los resultados al cambiar la precisin de la aritmtica


17

Problema 31 (3 puntos) Aproximar la funcin ()


en el intervalo [0 4 ] utilizando el desarrollo de Taylor y
calcular el valor de a partir del cual la aproximacin es
la mejor posible dentro de una aritmtica de 32 bits.

Aproximacin de funciones trigonomtricas


Utilizaremos como modelo las funciones () = cos() y
() = () Puesto que estas funciones son 2 peridicas, utilizando algunas relaciones trigonomtricas es
suficiente definir las funciones cos() y () en el intervalo [0 4 ] y a partir de ellas definir las funciones para
cualquier valor (en radianes). Efectivamente, denotemos
por cos[0 4 ] () y [0 4 ] () a las funciones trigonomtricas definidas sobre el intervalo [0 4 ] Podemos definir entonces las siguientes funciones:

cos[0 4 ] ()
4
cos[0 2 ] () =

[0 4 ] ( 2 ) 4
[0 2 ] () =
cos[0] () =

[0] () =
cos[02] () =
[02] () =

cos[0 2 ] ()

cos[0 2 ] ( )

[0 4 ] ()

cos[0 4 ] ( 2 )

[0 2 ] ()

[0 2 ] ( )

Problema 32 (2 puntos) Demostrar que, utilizando


relaciones trigonomtricas, es posible calcular las funciones () y cos() para cualquier (en radianes), utilizando nicamente su valor en el intervalo [0 8 ]

Problema 33 (3 puntos) Calcular los polinomios necesarios para interpolar las funciones trigonomtricas cos()
y () en el intervalo [0 8 ] en una aritmtica de 32 bits.

Aproximacin de la funcin ln()

Como hemos visto anteriormente, un nmero real en


una aritmtica de precisin finita viene expresado habitualmente como

!
X

=2
2
=1

cos[0] ()

cos[0] (2 )
[0] ()

[0] (2 )

1 y para 1 = 0
donde es un nmero entero, 1 =
P

= 1 Por tanto, el nmero


es mayor o
=1 2
igual que 12 y menor que 1 Aplicando las propiedades del
ln() obtenemos que

!
X
ln() = ln(2) + ln
2
=1

El desarrollo en Serie de Taylor centrado en 0 del


cos() es:
cos() u () = 1

2
4
2
+
+ + (1)
2
4!
(2)!

y el error mximo cometido por el desarrollo de Taylor en


un punto [0 4 ] es
| () cos() | ()

Dado que el nmero ln(2) es una constante que supondremos calculada anteriormente ( ln(2)
= 6931471806),
podemos reducir el clculo del ln() al rango de valores
1
2 1
Utilizaremos los puntos de interpolacin generados
por los polinomios de Chebychev, que para el intervalo
[ 12 1] son:

1 1
2 + 1
= +
1 + cos

= 0
2 4
2 + 2

()2+1
(2 + 1)!

La ventaja de utilizar el desarrollo de Taylor centrado


en 0 es que las potencias impares de no aparecen, lo que
simplifica el clculo numrico. El error relativo es
| () cos() |
()2+1
tan()
cos()
(2 + 1)!

Dado que ln(1) = 0 para minimizar el error relativo


aadiremos como punto interpolante +1 = 1 El error
de interpolacin relativo entre +1 () y ln() es:

Adems, como tan() es creciente en [0 4 ] el valor


mximo del error se encuentra en = 4 Por ejemplo, para
= 5 obtenemos que el error relativo mximo cometido
en = 4 es del orden de

| ( 1)
| ln() +1 () |
=0 ( ) |
= +1
| ln() |

( + 2) | ln() |

25+1

tan( ) 4
= 1 8 109
4 (2 5 + 1)!

donde [ 12 1] Adems se tiene que en el intervalo [ 12 1]


|1|
1
| ln() |

Por tanto, si trabajamos con una aritmtica de 32 bits,


cuya unidad de redondeo es del orden de 108 , tenemos
que con = 5 obtenemos una aproximacin del cos() que
es la mejor posible dentro de esta aritmtica y no tendra
sentido aumentar el valor de

Por tanto:
| ln() +1 () |
2 +1

| ln() |
( + 2)
18

+1
1
1
4
2

Para = 10 el error mximo es 3 973 6 108 que


es menor que la unidad de redondeo y, por tanto, en una
aritmtica de 32 bits tendramos la mejor aproximacin
posible de la funcin ln()

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

Problema 34 (1 punto) Cmo se puede obtener la funcin donde e son nmeros reales, utilizando las
funciones y ln()?

Ejemplo 10 Ejemplo de descomposicin segn el mtodo


de Gauss. Se considera el sistema

2 2 0
1
0
6
18 12 2 = 24
3
11 7
8
3

ANLISIS NUMRICO MATRICIAL I

La descomposicin de la matriz lleva las siguientes


fases:

2 2 0
6
18 12

6
18 12 2 2 0
3
11 7
3
11 7

6
18 12
6
18
12

2 2 0 1 mn 0 4 4
3
11 7
0 2 1

6 18 12
6 18 12

0 4 4 2 mn 0 4
4
0 2 1
0 0 1

En esta primera seccin dedicada a la resolucin de sistemas de ecuaciones lineales, estudiaremos los mtodos directos clsicos para la resolucin de un sistema de ecuaciones de la forma
=
donde = ( ) es una matriz de = ( ) es un
vector de tamao que determina los trminos independientes, y = ( ) 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 definida positiva. El mtodo
de Gauss se basa en transformar el sistema = en
un sistema equivalente 0 = 0 tal que la solucin sea
la misma y que la matriz 0 sea triangular superior, es
decir, que tenga valores nulos de la diagonal hacia abajo.
Una vez obtenidos la matriz 0 y el vector 0 el clculo
de la solucin es inmediata, siguiendo un remonte de las
variables a travs del siguiente esquema recursivo:
=
0

de la misma forma,
forma siguiente

0
24
8

24
24
24
0 8 8
8
4
8

y el remonte da como solucin 1 = 6 2 = 6 3 = 8

Problema 36 (2 puntos) Resolver por el mtodo de


Gauss
el sistema

1 2

3
=
2 1

0
0

0
=+1
0

el vector se ha transformado de la

Problema 37 (3 puntos) Calcular el nmero de operaciones bsicas necesarias para descomponer el sistema
= en el sistema 0 = 0 utilizando el mtodo de
Gauss, teniendo en cuenta la siguiente relacin:

= 1 1

1
X

Problema 35 (2 puntos) Calcular el nmero de operaciones bsicas (sumas, restas, multiplicaciones y divisiones) necesarias para realizar un remonte como el presentado arriba en funcin de la dimensin .

=1

2 =

1 3 1 2 1
+
3
2
6

Problema 38 (2 puntos) Escribir el pseudocdigo de la


funcion ( N max) que resuelve un
sistema, donde es una matriz triangular inferior, es
el vector de trminos independientes, el vector solucin,
es la dimensin real del sistema y max la dimensin
que se utiliz para reservar la memoria de la matriz 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.

Para obtener 0 y 0 se calcula, en primer lugar, el


valor mximo en valor absoluto de la primera columna de
denominado pivote. A continuacin, se intercambia la
primera fila de con la fila donde se encuentra el pivote,
y se hace lo mismo con el vector para que el sistema
sea equivalente. A continuacin, se multiplica la primera

fila de por el valor

1 y se suma a la fila
de para = 2 Se hace lo mismo para el vector
19

Problema 39 (2 puntos) Resolver por


Gauss el siguiente sistema de ecuaciones:


0 1 2
1
1 2 1 2 =
2 1 0
3

Problema 40 (2 puntos) Demostrar que si =


( triangular inferior) y || 6= 0 entonces es simtrica
y definida positiva.

el mtodo de

1
0
1

Problema 41 (2 puntos) Descomponer la siguiente matriz por el mtodo de Cholesky:

1 1 4
= 1 5 6
4 6 26

Estimacin del error de un mtodo para resolver


sistemas.
Para estimar la fiabilidad de la solucin numrica de un
sistema de ecuaciones, haremos lo siguiente: dada una matriz un vector de trminos independientes y un vector
solucin calculado utilizando alguna tcnica numrica,
si la solucin es perfecta entonces = 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 es el vector = :
1 X | |
ErrorSistema =

| | +

De forma general, el algoritmo para calcular es el


siguiente
Para =r
0 1

P
2
=

1
=0

Para = +1 1

P1
1
=
=0
Fin Para
Fin Para

El inters de descomponer una matriz por el mtodo


de Cholesky es que, a continuacin, es muy sencillo resolver
el sistema de ecuaciones = . Efectivamente, basta
descomponer el sistema de la siguiente forma:

donde es la dimensin del sistema, es un nmero que


se pone para evitar posibles divisiones por cero. En todas las prcticas utilizaremos = 1. ErrorSistema representa el error relativo medio al resolver el sistema. Cuanto
ms pequeo sea ErrorSistema, mejor aproximada estar
la solucin del sistema.

=
=

Ambos sistemas se resuelvan rpidamente haciendo


un remonte y un descenso.

Mtodo de Cholesky
Este mtodo slo se puede aplicar a matrices simtricas
y definidas positivas. El siguiente teorema da 3 posibles
definiciones equivalentes de una matriz definida positiva.

Nota: Normalmente, para evitar tener que almacenar dos


matrices, una para y otra para se almacena todo
en una nica matriz simtrica, escribiendo en la parte
triangular superior de la parte correspondiente a .

Teorema 13 Sea una matriz simtrica, las 3 siguientes


afirmaciones son definiciones equivalentes a que una matriz sea definida positiva
() < {0} se cumple que 0
() Todos los autovalores de son positivos.
() Los determinantes de todos los menores principales de son positivos.

Problema 42 (2 puntos) Calcular el nmero de operaciones 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 construir de forma inmediata un mtodo para calcular la inversa 1 de una matriz

El mtodo de Cholesky se basa en descomponer la


matriz en la forma:
=
donde es una matriz

11
21

=
31

1

triangular inferior.
0
22
32

0
0
33

Prctica 4 (Mtodo de Cholesky).

Implementar en C las siguientes funciones :


int an_cholesky_factorizacion(const real **A,real
**B,const int N): Calcula la descomposicin de
Cholesky de A y la devuelve en la matriz B. Devuelve
0 si termina bien y 1 en caso contrario.
20

int an_descenso(const real **B,real *z,const real


*b,const int N): Resuelve un sistema triangular inferior, donde B es la matriz, b es el trmino independiente y z es el vector donde devuelve la solucin.
Devuelve 0 si termina bien y 1 en caso contrario.

Matriz 100x100 (Precisin float)


Mtodo Gauss : ErrorSistema=3 105
Mtodo Cholesky : ErrorSistema=3 105
Matriz 1000x1000 (Precisin float)
Mtodo Gauss : ErrorSistema=4 103
Mtodo Cholesky : ErrorSistema=4 103

int an_remonte(const real **B,real *u,const real


*z,const int N): Resuelve un sistema triangular superior, donde B es la matriz, z es el trmino independiente y u es el vector donde devuelve la solucin.
Devuelve 0 si termina bien y 1 en caso contrario

Matriz 10x10 (Precisin double)


Mtodo Gauss : ErrorSistema=7 1016
Mtodo Cholesky : ErrorSistema=5 1016

real an_error_sistema(const real **A,const real


*u,const real *b,const int N): Devuelve el error
cometido al resolver el sistema dado por la expresin
ErrorSistema de la seccin anterior.

Matriz 100x100 (Precisin double)


Mtodo Gauss : ErrorSistema=6 1014
Mtodo Cholesky : ErrorSistema=8 1014
Matriz 1000x1000 (Precisin double)
Mtodo Gauss : ErrorSistema=9 1012
Mtodo Cholesky : ErrorSistema=8 1012

int an_cholesky(const real **A,const real *b,real


*u,const int N): Resuelve un sistema = por el
mtodo de Cholesky . Devuelve 0 si termina bien y
1 en caso contrario.

Matriz 10x10 (Precisin long double)


Mtodo Gauss : ErrorSistema=1 1018
Mtodo Cholesky : ErrorSistema=3 1019

Hay que resolver los sistemas ejemplo que se dan a


continuacin y los ejemplos de dimensin 10 100 y 1000
que se encuentran en el repositorio de la asignatura. Para
todos los ejemplos que tienen solucin, su solucin es el
vector constante = (1 1 1 ) en todos lo casos hay
que comparar con la solucin que da el mtodo de gauss
(ya implementado en an_lapack.c

1 1 4

6
1. 1 5 6 = 12
4 6 26

36

1 1 4

6
2. 1 1 4 = 12
4 4 17

36

2 1 0

1
3. 1 2 1 = 0
0 1 4

Matriz 100x100 (Precisin long double)


Mtodo Gauss : ErrorSistema=4 1017
Mtodo Cholesky : ErrorSistema=3 1017
Matriz 1000x1000 (Precisin long double)
Mtodo Gauss : ErrorSistema=3 1015
Mtodo Cholesky : ErrorSistema=4 1015
Los errores no tienen que ser exactamente iguales a
los que aparecen arriba, una desviacin de un dgito en
el exponente se considera admisible, es decir si arriba sale
9 108 y obtenemos 4 107 se considera bien, pero
5 106 se considera mal y hay que revisar el cdigo
Mtodo de Crout para matrices tridiagonales
El caso de sistemas de ecuaciones con matrices tridiagonales posee una forma especialmente simple de factorizacin. Vamos a descomponer en el producto de dos
matrices triangulares de la forma siguiente:

1 1

0
1 2

=
0

1
0
1

1 0
1 1

0
0
1 2

0 1
0

0 0 1
0
1
0 0
1

Los resultados que se deben encontrar son los siguientes


Ejemplo 1 (Precisin double )
Mtodo Gauss : ErrorSistema=0
Mtodo Cholesky : ErrorSistema=0
Ejemplo 2 (Precisin double )
Mtodo Gauss : ErrorSistema=0
Mtodo Cholesky : No encuentra solucin
Ejemplo 3 (Precisin double )
Mtodo Gauss : ErrorSistema=0
Mtodo Cholesky : No encuentra solucin

Los vectores y se calculan utilizando el esquema:

Matriz 10x10 (Precisin float)


Mtodo Gauss : ErrorSistema=1 106
Mtodo Cholesky : ErrorSistema=3 107

1 = 1
1 = 11
21

Para = 2 1
1 = 1
= 1 1
=
Fin Para
1 = 1
= 1 1

Ejemplo 11 Veremos en este ejemplo como, cuanto ms


prximo est el punto al punto , mejor ser el valor
aproximado de la derivada. Consideremos la funcin
() = 3 La derivada de () en = 1 es 0 (1) = 3 Si
tomamos = 1 y = 2 en la frmula anterior, obtenemos la aproximacin
23 13
=7
21
Si tomamos ahora = 11, obtenemos
0 (1)

Problema 44 (3 puntos) Demostrar el algoritmo de


Crout para descomponer matrices tridiagonales.

113 13
= 3 31
11 1
que est mucho ms prximo al valor real.
0 (1)

Problema 45 (2 puntos) Resolver utilizando el mtodo


de Crout el siguiente sistema de ecuaciones:

2
4 0

6
1 0 4 = 3
0 1 0

Problema 47 (2 puntos) Calcular analtica y numricamente la matriz gradiente en el punto (1 1) (utilizar


= 01) de la funcin:
2
+ 2 1
( ) =

Problema 46 (2 puntos) Calcular el nmero de operaciones necesarias para resolver un sistema tridiagonal por
el mtodo de Crout.

Problema 48 (3 puntos) Dados 3 puntos distintos


, demostrar que la frmula

DIFERENCIACIN E INTEGRACIN
NUMRICA

( )

( )
( )
+ ( ) ( )
( ) ()

aproxima la derivada de 0 ( ) con un orden de aproximacin de 2

Una frmula de diferenciacin numrica es un procedimiento que permite aproximar la derivada de la funcin
() en un punto utilizando el valor de () en otros
puntos vecinos a Por otro lado, una frmula de integracin numrica es un procedimiento que permite aproximar el valor de la integral en un intervalo [ ] a partir
de la evaluacin de () en algunos puntos incluidos en el
intervalo [ ]

Ntese que, si = + y = , entonces la


frmula anterior resulta
( + ) ( )
0 ( ) =
2
que es una conocida frmula de diferencias centradas.

Diferenciacin Numrica
Ejemplo 12 Veremos en este ejemplo como, utilizando la
expresin anterior para aproximar la derivada de () =
3 en = 1, la precisin es mayor que con la frmula
anterior. Por ejemplo, si tomamos = 1 y = 1 la
expresin anterior nos da

La manera habitual de aproximar la derivada de una funcin () en un punto consiste en utilizar el desarrollo
de Taylor centrado en :
() = ( ) +

0 ( )
) ( )
( ) + +
( ) +
1!
!

23 03
=4
2
Si tomamos ahora = 01
0 (1)

Si tomamos un punto 6= , truncamos el desarrollo


de Taylor y despejamos, obtenemos la siguiente expresin:
0 ( )

113 093
= 3 01
02
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.

( ) ( )
+ O (| |)

0 (1)

donde O (| |) indica, bsicamente, que el error


cometido es una suma de potencias de | | 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 , entonces la
derivada se calcula hacia adelante, mientras que si ,
la derivada se calcula hacia atrs.

Nota: Utilizar el desarrollo de Taylor para aproximar


0 () es equivalente a interpolar () con el polinomio de
Lagrange y posteriormente derivar el polinomio.

22

Problema 49 (3 puntos) Dados 3 puntos distintos


, calcular el polinomio de Lagrange que interpola
a () en esos 3 puntos, calcular la derivada de ese polinomio en , y comprobar que da la misma frmula que la
presentada en el problema anterior.

5. ( + + ) = + + + 12 (2 + 2 +

3
2 ) + O( 2 + 2 2 )

Problema 50 (2 puntos) Calcular una aproximacin de


la derivada tercera 000 ( ) de una funcin () en un
punto utilizando ( ) ( + ) ( ) ( 2).

7. ( + ) = + + 12 (2 2 +

3
2 ) + O( 2 + 2 2 )

6. ( ) = + 12 (2 + 2 +

3
2 ) + O( 2 + 2 2 )
8. ( + ) = + + 12 (2 2 +

3
2 ) + O( 2 + 2 2 )

Problema 51 (3 puntos) Dados 3 puntos, demostrar


que la frmula
00 ( ) 2

( ) ( )

Prestaremos particular atencin a dos operadores


diferenciales que se utilizan con frecuencia en la prctica:
El gradiente ( ) = ( ( ) ( )), que es el vector de derivadas parciales, y el Laplaciano ( ) =
( ) + ( ). Utilizaremos la notacin
=
( )

( ) ( )

aproxima la derivada segunda de () en con un orden


de aproximacin de 1

Discretizacin del Laplaciano


Problema 52 (2 puntos) Considerar en el problema anterior que = y = + Deducir como queda
la frmula anterior para aproximar la derivada segunda, y
demostrar que, en este caso, el orden de aproximacin es
2

Para discretizar el operador en un entorno de 3 3


puntos, pueden utilizarse diferentes esquemas. Para simplificar, supondremos que = .
Problema 55 (3 puntos) Demostrar, utilizando el desarrollo de Taylor, que las siguientes expresiones son discretizaciones del laplaciano:

Problema 53 (3 puntos) Dados 3 puntos ,


calcular el polinomio de Lagrange que interpola a () en
esos 3 puntos, calcular la derivada segunda de ese polinomio en , 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 () en =
0 teniendo en cuenta que (0) = 1 (1) = 0 (4) = 9

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:

Diferenciacin numrica en dimensiones superiores


Estudiaremos, en este apartado, la aproximacin de las
derivadas de una funcin de varias variables. Para simplificar la exposicin, supondremos que la dimensin es 2
Para discretizar las derivadas de una funcin ( ), se
utilizan los desarrollos de Taylor siguientes en 2 variables.
()
Utilizaremos la siguiente nomenclatura: =

()

2 ()
2

2 ()

2 ()

1. ( + ) = + +

2
2

+ O(3 )

2. ( ) = +

2
2

+ O(3 )

3. ( + ) = + +

2
2

+ O(3 )

4. ( ) = +

2
2

+ O(3 )

+1+1 + 1+1 + 11 + +11 4


22
+1 + 1 + +1 + 1 4
=
2

+1+1 + 1+1 + 1+1 + +11 4


+
22
+1 + 1 + +1 + 1 4
+(1 )
+O
2

donde es un parmetro libre a elegir. La eleccin de dicho parmetro la haremos de forma que la discretizacin
de respete lo mximo posible la invarianza por rotaciones de la funcin ( ). Para ello, consideremos una
funcin tal que en un entorno de un punto (0 0 ) tiene
los siguientes valores:

1
0
0

1
0
0

1
0
0

Si calculamos en el punto central a travs de la


anterior frmula obtenemos:
(0 0 ) =
23

2
1
+ (1 ) 2
2
2

Problema 57 (3 puntos) Demostrar que las mscaras


Ahora bien, si rotamos 45 grados, la funcin inicial en
torno al punto (0 0 ) obtenemos como imagen:
1
1
0

1
0
0


2 2 0
2 2

1
=
2 2
1 0 2 2
1
4
2 2
0
2 2

2 2
2 2 1
2 2
1
0
=
0

0
4
2 21
2 2
2 2

0
0
0

Si calculamos de nuevo en el mismo punto obtenemos:


1
2
(0 0 ) = 2 + (1 ) 2
2

Por lo tanto, si queremos que ambos valores de


coincidan, debemos elegir = 23 . Hablando en trminos
de teora de la seal, el calculo de nos llevara a convolucionar la imagen con la siguiente mscara:
1
2

1
3
1
3
1
3

1
3
83
1
3

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 ( ) en el punto ( ) =
(0 0) conociendo los siguientes valores: (0 0) = 0
( 12 0) = 12 ( 12 0) = 12 (0 12 ) = 12 (0 12 ) =
1
1 1
1
1
1 1
2 ( 2 2 ) = 0 ( 2 2 ) = 0 ( 2 2 ) = 1
1
1
( 2 2 ) = 1.

1
3
1
3
1
3

Problema 56 (2 puntos) Calcular una aproximacin


del laplaciano de una funcin ( ) en el punto ( ) =
(0 0) conociendo los siguientes valores: (0 0) = 0
( 12 0) = 14 ( 12 0) = 14 (0 12 ) = 14 (0 12 ) = 14
( 12 12 ) = 12 ( 12 12 ) = 12 ( 12 12 ) = 12 ( 12 12 ) =
1
2.

Integracin Numrica
Mtodos de Cuadratura de Gauss
Sea () una funcin definida en un intervalo [ ] vamos
a aproximar el valor de la integral de () en [ ] utilizando la evaluacin de () en ciertos puntos de [ ]
Es decir, una frmula de integracin numrica se puede
escribir como
Z

X
()
( )

Discretizacin del gradiente.


Siguiendo el desarrollo de Taylor mostrado anteriormente,
obtenemos la siguiente expresin para el gradiente:
( )

(+1 1 )
= (1 )
+
2
(+1+1 1+1 + +11 11 )
+
4

donde representa los puntos de evaluacin de () y


el peso de cada punto de evaluacin.
Definicin 2 Una frmula de integracin numrica se denomina exacta de orden si, para cualquier polinomio
() de grado menor o igual que la frmula es exacta.
Es decir
Z

X
() =
( )

(+1 1 )
+
2
(+1+1 +11 + 1+1 11 )
+
4
donde es, de nuevo, un parmetro a elegir. Teniendo
en cuenta que la norma eucldea del gradiente es invariante por rotaciones, lo ser en particular para rotaciones
de 45 grados, de donde deducimos, utilizando
el mismo

argumento que para el , que = 2 2. Por lo tanto,


estamos calculando utilizando la mscara

(2 2) 0 (2 2)
1
2( 2
1) 0 2( 2
1)
4
(2 2) 0 (2 2)
( )

= (1 )

2( 2 1)
0
2( 2 1)

=1

Definicin 3 Se denominan polinomios de Legendre


() a la familia de polinomios dada por 0 () = 1
1 () = y para = 2 3
() = (2 1)1 () ( 1)2 ()
Teorema 14 Sean{
}=1 los ceros del polinomio de
Legendre () Si definimos
Z 1
6= (
)


)
1 6= (

y utilizando

(2 2)
1
0
4
(2 2)

=1

(2 2)
0
(2 2)

entonces la frmula de integracin numrica generada por


los puntos
y los pesos
es exacta hasta el orden 2 1
para el intervalo [1 1]
24

Demostracin [Hu] Pg. 205-209

Cuando el intervalo [ ] es infinito, es decir, =


o = hay que emplear otros mtodos para aproximar
las integrales. En el caso [ ] = ( ), se utilizan los
ceros de los denominados polinomios de Hermite, definidos
como 0 () = 1 1 () = 2 y

Ejemplo 13 A continuacin se exponen algunos valores


en funcin del grado del
de races
y coeficientes
polinomio () :

2
05773502692
1
05773502692
1
3
07745966692
05555555556
0
08888888889
07745966692 05555555556
4
08611363116
03478548451
03399810436
06251451549
03399810436 06251451549
08611363116 03478548451

() = 21 () 2( 1)2 ()
para 2 En este caso, la frmula de integracin
numrica aproxima la integral de la siguiente forma:
Z

()

( )

=0

Teorema 15 Si
son los ceros del polinomio de Hermite
y definimos
Z
6= (
) 2

)
6= (

Problema 59 (2 puntos) Aproximar el valor de la siguiente integral, utilizando las frmulas de Legendre para
= 2 y = 3:
Z 1
3

entonces la frmula de integracin numrica generada por


es exacta hasta orden 2 1
los puntos
y los pesos
para el intervalo ( )
Demostracin [Hu] Pg. 213-214

Cul es el valor exacto de la integral?

Ejemplo 14 A continuacin se exponen algunos valores


de races
y coeficientes
en funcin del grado del
polinomio () :

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 60 (2 puntos) Se consideran, para el intervalo [1 1] los puntos 0 = 05 1 = 0 2 = 05 y


los pesos 0 = 1 = 2 = 23 Estos puntos y estos pesos 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
cos()

Problema 64 (2 puntos) Calcular de forma exacta la


integral
Z
3

2
2

utilizando los polinomios de Hermite.

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 utilizando un slo punto de interpolacin. Cul sera su
exactitud?

Problema 65 (2 puntos) Aproximar, utilizando dos


puntos de aproximacin, el valor de la integral:
Z
1

1
+
2

Problema 62 (2 puntos) A partir de los ceros y de los


pesos asociados a los polinomios de Legendre, y dado un
intervalo [ ] cualquiera, encontrar los puntos y los
pesos que hacen exacta hasta orden 2 1 una frmula
de integracin numrica sobre el intervalo [ ].

Para el intervalo (0 ) se utilizan los polinomios de


Laguerre (), definidos por 0 () = 1 1 () = 1 y
() = (2 1 )1 () ( 1)2 2 ()

Problema 63 (2 puntos) Utilizar el resultado del problema anterior para calcular de forma exacta la siguiente
integral:
Z 1
2

para 2 En este caso, la frmula de integracin


numrica aproxima:
Z

25

()

=0

( )

Teorema 16 Si
son los ceros del polinomio de Laguerre y definimos
Z
6= (
)

=

6= (
)
0

Frmula del rectngulo

Z +1
+ +1
()
(+1 )
2

entonces la frmula de integracin numrica generada por


es exacta hasta orden 2 1
los puntos
y los pesos
para el intervalo (0 )

Esta frmula se obtiene fcilmente aproximando ()


+1
por el polinomio interpolador en = +
Es decir:
2
Z

Demostracin [Hu] Pg. 211-213


Ejemplo 15 A continuacin se exponen algunos valores
de races
y coeficientes
en funcin del grado del
polinomio () :

1
1
1
2
0 585 786 438
0 853 553 390 3
3 414 213 562
0 146 446 609 3

+ +1
=
2

+ +1
(+1 )
=
2

+1

()

+1

Frmula del trapecio


Z +1
(+1 ) + ( )
()
(+1 )
2

Esta frmula se deduce aproximando () por su polinomio interpolador en y +1 Es decir:

Problema 66 (2 puntos) Calcular de forma exacta la


integral
Z
3

2
0

utilizando los polinomios de Laguerre.

Problema 67 (2 puntos) Calcular una frmula de


aproximacin numrica de la integral siguiente:
Z
()

Con las frmulas que hemos visto hasta ahora, para aumentar la precisin es necesario aumentar el grado de los
polinomios, lo cual resulta complejo para valores grandes
de Una alternativa consiste en dividir previamente la
integral en subintegrales de la manera siguiente:

Z
X

=0

()

+1

+ (+1 )
( )
+1
+1
(+1 ) + ( )
=
(+1 )
2

(+1 ) + ( ) + 4

+1

()

++1
2

(+1 )

Esta frmula se deduce aproximando () por su desarrollo en serie de Taylor centrado en el punto =
++1
Es decir:
2

Frmulas de Integracin Numrica Compuestas

() =

donde es un nmero real cualquiera.

+1

+1

Frmula de Simpson

+1

()

+1

()

00 ( )
( ) + 0 ( )( ) +
( )2 =
2

3
00
( ) +1
= ( )(+1 ) +
3
2

+1

Ahora bien, teniendo en cuenta los resultados de


la seccin anterior sobre derivacin numrica 00 ( ) se
puede aproximar como

donde = 0 1 +1 = A continuacin se
aproxima numricamente cada una de las integrales
Z +1
()

00 ( )

Para ello, se pueden utilizar los desarrollos a partir


de los polinomios de Legendre, o bien las frmulas ms
simples siguientes:

(+1 ) 2 ( ) + ( )

2
+1
2

Por tanto, sustituyendo este valor en la aproximacin


anterior obtenemos

26

Integral
+1

() ( )(+1 )+

(+1 ) 2 ( ) + ( ) +1
+
=
3
2

+1
(+1 ) + ( ) + 4 +
2
(+1 )
=
6

Integral

3.

2
1 2
2

(se toma [-10,10])

N interv.
25
26
26

Error
107
0
0

Integracin numrica en dimensiones superiores.


En esta seccin, estudiaremos las tcnicas de integracin
numrica sobre dominios de dimensin superior a 1 Para
simplificar la exposicin, supondremos que la dimensin es
2 Es decir, pretendemos aproximar
Z
( )

sin() = 2

12

Error
104
104
104

Algoritmo Simpson iterativo


variable entera N=1 (Nmero intervalos)
variable real integral= Clculo Integral de Simpson para N intervalos
variable real error=TOL+1 (Nmero intervalos)
mientras (errorTOL)
N=N*2
variable real integral2= Clculo Integral de
Simpson para N intervalos
error=an_distancia(integral,integral2)
integral=integral2
fin mientras K0 hasta N hacer
finalgoritmo

Crear una funcin en C++ 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 intervalo
inicial. La funcin a integrar se definir aparte (como en
el caso de la prctica 1). La funcin devolver el valor
de la integral obtenido. Probar el mtodo para aproximar 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.

N interv.
219
224
224

Programa 8 Algoritmo iterativo para calcular la integral


por el mtodo de Simpson. Los parmetros son la funcin
a integrar, el intervalo, una tolerancia

Prctica 5 (Implementacin Mtodo de Integracin de


Simpson).

R1

(se toma = 09999999)

Se puede tambin implementar una versin del algoritmo de Simpson que calcule de forma automtica el
nmero de intervalos. El siguiente pseudocdigo indica
una manera de hacerlo

utilizando nicamente el valor de la funcin en los puntos:


1 12 0 12 y 1

2.

float
double
long double

12

219

Problema 68 (2 puntos) Aproximar, por el mtodo de


Simpson, la integral
Z 1
3

float
double
long double

Aunque estas frmulas sean menos precisas que las deducidas 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 equiespaciado de puntos, es decir, cuando slo conocemos () en
un conjunto de la forma = 0 + Ntese que, en este
caso, la integracin a partir de los ceros de los polinomios
de Legendre no puede utilizarse.

1.

R1

=1

2
1 2
2

Aproximaremos esta integral a travs de la frmula


numrica:
Z
X
( )
( )

=1

Llamaremos a la diferencia entre el resultado


real y el resultado obtenido con el algoritmo. Los resultados que se deben obtener son :
R
integral 0 sin()
N interv. Error
float
23
105
double
27
1010
8
long double 2
1011

donde debemos elegir los puntos ( ) y los pesos


Para realizar esta eleccin se utilizan tcnicas de
cuadratura. Es decir, se exige que la frmula sea exacta
para polinomios en e de hasta un cierto grado:
Z
X
=
( ) ( )

27

( ) el rea del tringulo En funcin de los vrtices, el rea viene determinada por

1
1
1

1
( ) = 0 1 2
2
0 1 2

donde y 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 [ ][ ] En este caso,
podemos escribir:
Z

A continuacin presentaremos algunas frmulas de integracin numrica sobre tringulos utilizando diferentes
nmeros de puntos

y, por tanto, la exactitud en dimensin 2 la podemos deducir a partir de la exactitud en dimensin 1, que, en este
caso, viene dada, como hemos visto anteriormente, por los
polinomios de Legendre.

Integracin sobre tringulos utilizando un


punto.

Z
0 + 1 + 2 0 + 1 + 2

( ) =

( )
3
3

Problema 69 (3 puntos) Deducir la frmula de integracin numrica sobre el rectngulo [1 1][1 1] resultante de aplicar la integracin numrica en una variable
en los intervalos [1 1] y [1 1].

Integracin sobre tringulos utilizando 3 puntos.

Problema 70 (2 puntos) Deducir la frmula de integracin numrica sobre un rectngulo [ ][ ] resultante


de aplicar la integracin numrica en una variable en los
intervalos [ ] y [ ].

donde

Problema 71 (2 puntos) Calcular de forma exacta la


integral
Z 1Z 1
2 2
1

Ntese que, al igual que en dimensin 1 tambin


podemos extender los resultados al caso en que los intervalos sean infinitos, de tal forma que podemos construir
fcilmente frmulas de integracin numrica para las integrales
Z
Z

= 2 = 3 =

e1

e3

0 + 1
2
0 + 2
2
2 + 1
2

3
X

=1

(e
e )

1
3

0 + 1
2
0 + 2
e2 =
2
2 + 1
e3 =
2
e1 =

Integracin sobre tringulos utilizando 4 puntos.

e2

utilizando integracin numrica.

( )
= ( )

( )

( )
= ( )

donde

( )

Problema 72 (2 puntos) Calcular una aproximacin


numrica de la integral
Z Z 2

2
0 1 +

= 2 = 3 =

e1

e3

e4

=1

(e
e )

25
27
4 =
48
48
60 + 21 + 22
60 + 21 + 22
e1 =
10
10
20 + 61 + 22
20 + 61 + 22
e2 =
10
10
20 + 21 + 62
20 + 21 + 62
e3 =
10
10
0 + 1 + 2
0 + 1 + 2
e4 =
3
3

e2

4
X

Problema 73 (2 puntos) Se considera el tringulo de


vrtices (0 0) (1 0) y (0 1) Deducir cual debe ser el punto
(0 0 ) y el peso 0 para que la frmula de integracin
numrica:
Z
( ) (0 0 )0

utilizando la evaluacin de ( ) en 4 puntos.


En el caso de que sea un tringulo, el clculo es
un poco ms complejo. Consideremos un tringulo
de vrtices (0 0 ) (1 1 ) (2 2 ) Denotaremos por

sea exacta para polinomios de grado 1 en e Es decir


( ) = + + .

28

Problema 77 (2 puntos) Tomar = 2 y dibujar el


lugar geomtrico de los vectores = (1 2 ) que verifican
que

Problema 74 (2 puntos) Calcular una aproximacin


numrica de la integral
Z
2

1. k k1 1

2. k k2 1

donde es el tringulo de vrtices (0 0), (2 0) y (0 2)


utilizando 1 punto, 3 puntos y 4 puntos.

3. k k 1

ANLISIS NUMRICO MATRICIAL II

Problema 78 (2 puntos) Tomar = 2 y demostrar la


siguiente desigualdad:

En esta seccin veremos algunos aspectos ms avanzados


del anlisis matricial, incluyendo tcnicas iterativas de resolucin de sistemas de ecuaciones y clculo de autovalores.

k k k k2 k k1
Dada una matriz de dimensin , se podra
definir su norma considerando la matriz como un vector
de dimensin . Sin embargo, resulta ms til definir
la norma de una matriz subordinndola a la norma de un
vector de la siguiente manera:

Normas de vectores y matrices.


Definicin 4 Una norma k k es una aplicacin de un
espacio vectorial en + {0} que verifica las siguientes
propiedades:

Definicin 5 Sea una matriz y sea k k una norma


vectorial. Se define la norma de , subordinada a la norma
vectorial k k como

k k= 0 si y slo si = 0
k k=| |k k para todo y
k + kk k + k k para todo

k k= sup
6=0

k k
kk

Bsicamente, una norma mide la magnitud o tamao


de un vector 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, = (1 2 ) existen mltiples formas de
definir una norma. La definicin ms utilizada es la denominada norma donde es un nmero real positivo,
que viene definida por

La propiedad fundamental que verifica una norma matricial definida de esta forma es la siguiente:

Demostracin: Si = 0 la desigualdad es trivial. Si


6= 0 entonces, puesto que k k 0 la desigualdad
anterior es equivalente a

k k =

=1

| |

Teorema 17 Sea una matriz y k k una norma vectorial. Entonces, para cualquier vector se verifica que
k kk k k k

! 1

k k
k k
kk

Un caso particularmente interesante es = 2 que


corresponde a la norma eucldea. Otro caso interesante
es aqul que se produce cuando hacemos tender hacia
infinito, lo que da lugar a la denominada norma infinito,
definida por
k k = max | |

Ahora bien, esta desigualdad es cierta por la propia


definicin de k k.

Problema 79 (2 puntos) Demostrar que si y son


dos matrices de dimensin entonces, para cualquier
norma de matrices subordinada a una norma vectorial, se
verifica
k kk k k k

Problema 75 (4 puntos) Tomar = 2 , = 2, y


demostrar que la norma k k verifica las propiedades
de la definicin de norma.
Problema 76 (3 puntos) Demostrar que

A continuacin veremos la relacin que existe entre


la norma de una matriz y sus autovalores. Empezaremos
recordando algunos conceptos relacionados con los autovalores.

k k = max | |

29

, el vector se podr expresar como una combinacin


lineal de autovectores, de la forma:

Definicin 6 Un autovalor de es un nmero real o


complejo tal que existe un vector , denominado autovector, tal que
=

= 1 1 + 2 2 + +
Al hacer y puesto que los son autovectores,
obtenemos que

Definicin 7 Se denomina polinomio caracterstico ()


de la matriz al polinomio dado por el determinante

= 1 1 1 + 2 2 2 + +
Como los autovectores son ortonormales, se cumple

() =| |

que
q
k k2 = ( 1 )2 + + ( )2
q
2
2
k k2 = (1 1 ) + + ( )

Problema 80 (1 punto) Demostrar que los autovalores


de son los ceros del polinomio caracterstico ()

Y, por tanto,
Definicin 8 Se define el radio espectral de una matriz
como

k k2
()
k k2

() = max{| | : }

para cualquier vector En consecuencia, al tomar el


supremo en la desigualdad se mantiene, lo que demuestra que
k k2 ()

Teorema 18 Sea una matriz y k k una norma vectorial. Entonces


k k ()

Teorema 20 Si una matriz de dimensin es


simtrica, entonces todos sus autovalores son reales y,
adems, sus autovectores forman una base ortonormal de

Demostracin: Si es un autovalor de entonces existe


un autovector tal que = por tanto
k k
k k
=
= || k k
kk
kk

Demostracin: [La-Th] Pg. 53.

Lo que demuestra el teorema.

Problema 81 (2 puntos) Calcular los autovectores de


la matriz

1 1 0
1 1 0
0 0 2

Teorema 19 Si los autovectores de una matriz de dimensin forman una base ortonormal de , entonces
k k2 = ()

y determinar una base ortonormal de 3 compuesta por


autovectores de

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
verifica que
( ) =

=1

( ) ( ) =

Teorema 21 Sea una matriz cualquiera, entonces


p
k k2 = ( )
P
k k1 = max ( | |)

P
k k = max
|

0 6=
1 =

donde ( ) indica la coordenada -sima del vector


Vamos a demostrar la desigualdad

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

k k2 ()

Problema 82 (2 puntos) Calcular las normas 2 1 e


infinito de la matriz

1 0
=
1 1

Dado que el teorema anterior determina la desigualdad en el otro sentido, tendramos la igualdad, y por tanto
el resultado del Teorema. Sea un vector cualquiera.
Puesto que posee una base ortonormal de autovectores
30

Problema 83 (2 puntos) Demostrar la siguiente igualdad:


( ) = ( )

Teorema 23 Si definimos
() =k k k 1 k
entonces

Teorema 22 Sea una matriz cualquiera, entonces


k k= 0 () 1

Demostracin: Como ( + ) = + y = se
obtiene que = de donde = 1 y, por tanto,

kk 1 kk

Demostracin:[La-Th] Pg. 80.


Condicionamiento de una matriz.

Por otro lado, tambin se cumple que

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 siguiente ejemplo:

kk = kk kk kk
de donde obtenemos que
1
kk

kk
kk

Ejemplo 16 Consideremos el siguiente sistema de ecuaciones

10 7 8 7

32
7 5 6 5 23

8 6 10 9 = 33
7 5 9 10

31

As, multiplicando esta desigualdad con la anteriormente obtenida para kk concluimos la demostracin
del teorema.
Problema 84 (2 puntos) Demostrar que, si los autovectores de una matriz de dimensin forman una base
ortonormal de entonces, para la norma 2 se cumple
que
max {| |}
() =k k2 k 1 k2 =
min {| |}

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


mismo sistema, perturbando ligeramente el trmino independiente:

10
7

8
7

7 8 7


5 6 5

6 10 9
5 9 10

k k
k k
()
kk
kk

321
229
=

331
309

Nota: En el caso del ejemplo 16 los autovalores de la


matriz son 001 084 386 y 3029 por tanto el condicionamiento sera

La solucin de este sistema es (92 126 45 11).


Como podemos observar, a pesar de que la perturbacin
del sistema es del orden de 01 la perturbacin de la solucin del sistema puede llegar a ser del orden de 136.

() =

3029
= 3029
001

lo cual indica un condicionamiento bastante malo.


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

2 2 2
= 2 1 1
2 1 1

2 1 0
= 1 2 1
0 1 2

Consideremos de forma genrica un sistema de ecuaciones de la forma


=
y, al mismo tiempo, el sistema de ecuaciones perturbado
( + ) = +
Nosotros queremos controlar el error relativo en la
solucin del sistema a partir del error relativo en el trmino independiente Es decir, queremos encontrar una
estimacin del tipo
k k
k k
()
kk
kk

Clculo de autovalores y autovectores.


En esta seccin veremos algunos mtodos elementales para
el clculo de autovalores y autovectores de matrices.

donde () es un nmero que llamaremos condicionamiento de la matriz. Obviamente, cuanto ms pequeo sea () mejor comportamiento numrico tendr
la matriz

31

Mtodo de Jacobi.

Es decir,

Este mtodo se aplica a matrices reales y simtricas. Se


basa en el hecho de que, dadas dos matrices y se
verifica que los autovalores de son los mismos que los
autovalores de 1 Este mtodo intenta diagonalizar
realizando transformaciones del tipo 1

cot(2) =

Ejemplo 17 Consideremos la matriz

2 1 0
1 2 1
0 1 2

Problema 86 (2 puntos) Sean las matrices y


Demostrar que la matriz y la matriz = 1 poseen
los mismos autovalores

Para convertir en 0 el elemento 12 = 1 de la matriz,


debemos elegir tal que

Problema 87 (2 puntos) Se considera la matriz

1 1
=
1 1

cot(2) =

En el mtodo de Jacobi se utilizan las denominadas


matrices de rotacin, que tienen la forma siguiente:

1 0
0
0
0
0 0
0 1

0
cos
sin 0

0
() =

0
0 sin cos 0

1 0
0 0
0
0
0
0 1

Para evitar tener que evaluar funciones trigonomtricas, que son costosas computacionalmente, y simplificar el algoritmo, podemos apoyarnos en las igualdades
trigonomtricas dadas en el siguiente problema:
Problema 88 (3 puntos) Demostrar las siguientes
igualdades trigonomtricas:
q
tan() = cot(2) + (cot(2)) 1 + cot2 (2)

donde 4 4 , () = 1 si 0 y () = 1
si 0

donde los cosenos y senos estn situados en las columnas


y filas y Al ser una matriz de rotacin, se verifica
1
que ( ()) = () Al realizar la operacin 0 =
() () slo se ven afectadas las filas y columnas
de ndices y Adems, la matriz 0 tambin es simtrica.
Concretamente, si es una matriz simtrica, los cambios
que se producen en 0 son los siguientes:

0
0
0

y al hacer la operacin 12
12 obtenemos

10
0
707 107

0
30
707 107
707 107 707 107
20

verifique que la matriz = 1 sea diagonal.

(22 11 )
=0
212

De donde = 4 Por tanto, la matriz 12 es

1
12 0
2
1
0
12 = 1

calcular el ngulo tal que la matriz

cos sin
=
sin cos

cos 2
( )
=
sin 2
2

1
p
1 + tan2 ()
sin = tan() cos

cos =

( )
sin 2 + cos 2
2
= cos2 + sin2 sin 2

cot(2) =

= sin2 + cos2 + sin 2


= cos sin 6=
= sin + cos 6=

tan() + sin(2)
2 sin2 ()

Utilizando las anteriores igualdades trigonomtricas,


la transformacin de la matriz mediante el mtodo de
Jacobi se puede escribir como
0
0
0
0
0

El mtodo de Jacobi se basa en ir modificando la matriz mediante el procedimiento anterior, haciendo 0 los
elementos no diagonales mayores en mdulo. Para anular
un valor 0 basta con elegir tal que
( )
sin 2 + cos 2 = 0
2
32

=
=
=
=
=

0
tan()
+ tan()
cos sin 6=
sin + cos =
6

Problema 89 (3 puntos) Dentro del mtodo de Jacobi


para el clculo de autovalores, demostrar las igualdades
siguientes:
0
0
0
0
0

=
=
=
=
=

0
tan()
+ tan()
cos sin
sin + cos

FIN IF
= 1 (1 + )
=
PARA = 0 1 HACER
IF ( 6= AND 6= ) HACER
= ( )
( ) = ( ) = ( )
( ) = ( ) = + ( )
FIN IF
FIN PARA
( ) = ( ) ( )
( ) = ( ) + ( )
( ) = ( ) = 0
FIN PARA
PROCEDIMIENTO TERMINADO INCORRECTAMENTE
NMERO DE ITERACIONES MXIMO EXCEDIDO

=
6
=
6

Veamos ahora la convergencia del mtodo de Jacobi


para el clculo de autovalores.
Teorema 24 Sea una matriz simtrica. Sea 1 = ,
y sea la matriz transformada de 1 haciendo cero
el elemento no diagonal mayor en mdulo de la matriz
1 entonces los elementos diagonales de la matriz
convergen ( ) hacia los autovalores de la matriz
Adems los elementos no diagonales de convergen hacia
0

Veamos ahora cmo podemos calcular los autovectores. Al utilizar el mtodo de Jacobi, vamos transformando la matriz multiplicndola por una secuencia de
matrices de rotacin 1 de tal forma que
1
11 1 =

donde es una matriz diagonal que contiene los autovalores de en la diagonal. Denotemos por la matriz
= 1 Despejando de la anterior igualdad
obtenemos que
=

Demostracin: [La-The] Pg. 576-577.


Pseudocdigo del Mtodo de Jacobi para el Clculo
de autovalores.
Los parmetros de entrada son la matriz simtrica
su dimensin el nmero mximo de iteraciones
y la tolerancia para decidir cundo son ceros
los elementos no diagonales.

Si denotamos por el vector columna de la matriz


de la expresin anterior se obtiene que
=

PARA = 0 1 HACER
=1
=0
= (( ))
PARA = 2 1 HACER
PARA = 0 1 HACER
IF (( )) HACER
= (( ))
=
=
FIN IF
FIN PARA
FIN PARA
IF HACER
PROCEDIMIENTO TERMINADO CORRECTAMENTE.
LOS AUTOVALORES SE ENCUENTRAN EN
LA DIAGONAL DE
SALIR
FIN IF
= (( ) ( ))(2 ( ))
IF 0 HACER
= (1 + )
ELSE
= + (1 + )

Es decir, es el autovector de asociado al autovalor


Por tanto, la matriz determina los autovectores.
Numricamente, para calcular la matriz en el algoritmo
anterior que calcula los autovalores, aadiremos en cada
iteracin las operaciones necesarios para ir obteniendo
En primer lugar, inicializamos a la identidad antes de
entrar en el bucle. A continuacin, en cada iteracin haremos = Ahora bien, como es una matriz de
rotacin del tipo () cuando multiplicamos una matriz
por la derecha por una matriz del tipo () (denotemos por 0 = () el resultado de la multiplicacin)
podemos observar que lo nico que cambia en son los
vectores columnas y que se transforman de la siguiente
manera:
0
0

= cos() sin()
= sin() + cos()

= 1
= 1

Problema 90 (2 puntos) Utilizar el mtodo de Jacobi


para aproximar los autovalores y autovectores de la siguiente matriz:

2 0 1
= 0 1 0
1 0 1
33

0
2 2

1
1

1
2 2 2 2

Nota. Para no tener que buscar en cada paso el mximo


de los elementos no-diagonales de el algoritmo de Jacobi se puede modificar haciendo cero el primer elemento
que se encuentre que verifique | |

2 +

3. Las matrices de dimensin 10, 100 y 1000 del directorio de la asignatura.

0 1 6 0 0 0
1 0 2 7 0 0

6 2 0 3 8 0

4. =

0 7 3 0 4 9
0 0 8 4 0 5
0 0 0 9 5 0

Prctica 6 (Mtodo de Jacobi para el clculo de autovalores y autovectores)


Implementar en C las siguientes funciones :
real an_error_vectores(const real *u,const real
*v,const int N) Devuelve la diferencia entre los vectores U y V, de dimensin N, utilizando la frmula
:

Resultados:

0283 29
0745 57

002466 5
16 6
0191 25

0477 07
0314 8

1 X ( () ())
_ =
=1 ( ()) +

int an_jacobi(const real **A,real **Autovectores,


real *Autovalores, const int N,const real TOL,const
int Niter): Realiza el clculo de los autovalores y autovectores de una matriz simtrica por el mtodo de
Jacobi. Autovectores es una matriz donde se guardan
los autovectores por columnas. La funcin devuelve 0
si termina bien y 1 en caso contrario.

2 11

real an_error_autovectores(const real **A, const real


**Autovectores, const real *Autovalores, const int N)
: Para comprobar que los autovalores y su autovectores
estn bien estimados, comparar para cada autovalor , utilizando la funcin an_error_vectores(),
para los vectores
y
Devolver la expresin

593 8
1 562 8
005 170
400 89
10
659 86

10 06

_ =
max _ (

)

=1

0273 98
0389 55
0524 54
0449 45
0525 54
0140 9

5 942

0556 95
0148 71
0576 44
0370 52
0186 62
0404 09

2 465

0674 87
0329 9
0222 33
008329 9
0386 41
0479 62

12 12

0224 49
0275 90
0407 79
0562 40
0307 86
0544 17

Nota: Obsrvese,
al comparar los resultados,
que los autovectores estn definidos mdulo la
multiplicacin por una constante.
Respecto al
_ (que denotaremos por
) los resultados deben ser los siguientes :

Comprobar los resultados obtenidos con los siguientes


ejemplos, tomando = 00001 y = 10000:

2 2 2
1. = 2 1 1
2 1 1
Resultado:

2
1

2 1

1
1

0
4 1 2

2 1 0
2. = 1 2 1
0 1 2
Resultado:

Precisin float
Error Ejemplo
Error Ejemplo
Error Ejemplo
Error Ejemplo
Error Ejemplo
Error Ejemplo

1 = 4 106
2 = 9 106
4 = 1 105
M_10 = 8 106
M_100 = 2 105
M_1000 = 9 105

Precisin double
Error Ejemplo 1 = 4 106
Error Ejemplo 2 = 9 106
Error Ejemplo 4 = 1 105
Error Ejemplo M_10 = 8 106
Error Ejemplo M_100 = 2 105
34

Error Ejemplo M_1000 = 1 105

donde supondremos que 1 es un autovector asociado


a max y que 1 6= 0 Por la igualdad anteriormente
demostrada obtenemos que

Precisin long double


Error Ejemplo 1 = 4 106
Error Ejemplo 2 = 9 106
Error Ejemplo 4 = 1 105
Error Ejemplo M_10 = 8 106
Error Ejemplo M_100 = 2 105
Error Ejemplo M_1000 = 1 105

Mtodo de la potencia

Cuando hacemos tender hacia infinito, todos los cocientes de la forma

|max |

Teorema 25 Sea una matriz que posee una base de autovectores tal que en mdulo su autovalor mximo max es
nico. Sea un vector 1 no ortogonal al subespacio engendrado por los autovectores del autovalor max , entonces, si
definimos la secuencia
=

1
1 1
1 1
max 1 + +

=
=
2
1 2

k2 1 k
max 1 + +

1 |max
1
|max |
max |

= |max |

2
2

1 max
1 + + |max |

|max |

tienden hacia 0 salvo si = max En este caso, dicho

cociente es 1 si max es positivo, o (1) si max es negativo. Por tanto, para suficientemente grande el signo de
max coincide con el signo del producto escalar ( 1 )
Adems

1
k 1 k

se verifica que
k k =

1 max

1 k k= max

|max |
|max |

=
= |max |
2

max


max
1 |max |
1 + + |max |

k k
= |max |

Adems, dicho autovector tiene norma 1

Teorema 26 1 es elsigno delproducto


de y 1 es decir
1
= 1 si
escalar

1

0 y
= 1 si 1
0

y por tanto

1

k k= max

Por otro lado, el trmino 1


para
suficientemente grande es 1 si max es positivo o (1)
si max es negativo. Sean 1 los autovectores asociados a max obtenemos que

Demostracin. En primer lugar, vamos a demostrar por


induccin la siguiente igualdad:
+1 =

1
k1 1 k

Para = 1 la igualdad se cumple por la definicin de


Supongamos que se cumple para 1 y demostrmoslo
para :

Problema 91 (3 puntos) Aplicar el mtodo de la potencia para aproximar el autovalor mximo y el autovector asociado de las siguientes matrices, realizando 3 iteraciones en el mtodo, hasta calcular 4 y partiendo de
1 = (1 1)

2 1
=
0 1

3 0
=
1 1

1
k2 1 k
= = k1 1 k =
k k
k1 1 k
2 1
k

1 1 + +
k1 1 + + k

que es un autovector de max de norma 1

1 1

+1

=
k k

Con lo que queda demostrado este primer resultado.


Por otro lado, como posee una base de autovectores,
que denotaremos por y 1 no es ortogonal al espacio
generado por los autovectores asociados a max entonces
1 se puede escribir como
1 = 1 1 + +
35

Mtodo de la potencia inversa.

y por tanto 0min + es el autovalor de ms cercano a

El mtodo anterior tambin se puede utilizar para el clculo del autovalor de mdulo menor min teniendo en
cuenta que

El razonamiento anterior nos lleva al siguiente algoritmo general para calcular todos los autovectores y autovalores de una matriz cualquiera:

min =

max{0

1
1 }

1. Paso 1: Se calcula el polinomio caracterstico |


| = 0

Por tanto, si aplicamos el mtodo anterior a 1


obtenemos que la secuencia
= 1

2. Paso 2: Se calculan las races { } del polinomio caracterstico

1
k 1 k

3. Paso 3 : Utilizando el mtodo de la potencia inversa se


calcula los autovectores ms pequeos de las matrices

verifica que

1

k k=

1
min

La principal limitacin del algoritmo anterior es que


calcular el polinomio caracterstico tiene una complejidad
factorial, y por tanto el mtodo es slo aplicable para matrices de dimensin pequea (para dimensin mayor que
12 el algoritmo se vuelve muy lento).

min
k k

En los casos prcticos, se evita calcular directamente


1 y se obtiene resolviendo el sistema

Para calcular el polinomio caracterstico se puede proceder de la siguiente manera: Dada una matriz de dimensin se calcula kk1 ,lo cual es muy rpido pues
slo hay que sumar elementos de la matriz y calcular su
mximo, como todos los autovalores de cumplen que
| | kk1 ello significa que todos los autovalores estan en el intervalo [ kk1 kk1 ] Elegimos a continuacin
+ 1 valores equidistribuidos en [ kk1 kk1 ]. Para
cada uno de esos valores tenemos que

1
=
k 1 k

Problema 92 (2 puntos) Calcular el autovalor


mayor

2 1
y el autovector correspondiente de la matriz
1 1
utilizando el mtodo de la potencia, realizando 2 iteraciones del mtodo a partir de 1 = (1 1) y tomando como
norma kk = max | |.

1
| | =
+ + 0
+ 1

donde { 1 0 } representan los coeficientes del


polinomio caracterstico buscado. Observese que para la
relacin de arriba es una ecuacin lineal en los coeficientes
del polinomio y por tanto dichos coeficientes se pueden
encontrar resolviendo el sistema :

0 0 1 1

| 0 |
1 1 1 | 1 |
1
1

| |
0

1

Problema 93 (2 puntos) Utilizar el mtodo de la potencia inversa para aproximar el autovalor menor de la
matriz

2 1
=
0 3
Llegar hasta 3 partiendo de = (1 1)
El mtodo de la potencia directa e inversa nos permite calcular el autovalor ms grande y ms pequeo de
una matriz. Ahora bien para calcular los autovalores que
se encuentren entre min y max necesitamos informacin
adicional como puede ser tener una aproximacin del autovalor buscado. Por ejemplo si es una aproximacin del
autovalor de tal forma que se encuentre ms cercano
a que a cualquier otro autovalor, podemos construir la
matriz 0 = Si llamamos 0min al autovalor ms
pequeo de 0 se cumple que

Problema 94 (3 puntos) Calcular el autovalor y autovector 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 1 = (1 1 1)

= ( )
= 0min

0
de donde despejando

= (0min + )
36

matriz y el vector que determinan el esquema iterativo


vienen dados por

0 12 0
2
= 12 0 12 = 0
1
0 12 0
2

Mtodos iterativos de resolucin de sistemas lineales.


Estas tcnicas consisten en transformar un sistema de la
forma
=
en una ecuacin de punto fijo de la forma
= +

Teorema 27 Si el esquema iterativo

de tal manera que, al hacer iteraciones de la forma

= 1 +

converge hacia un vector entonces verifica que

se obtenga que converge hacia , la solucin del sistema


original.

= +
Existen diferentes mtodos para convertir un sistema
de la forma = en una ecuacin de punto fijo =
+ . Todas se basan en descomponer de la forma
= + + donde es la matriz diagonal que corresponde a la parte diagonal de , es la matriz triangular
inferior que corresponde a la parte de situada por debajo de la diagonal, y es la matriz triangular superior
que corresponde a la parte de situada por encima de la
diagonal

Ejemplo 18 Consideremos el sistema de ecuaciones


2
+ 2
+ 2

= 1
= 0
= 1

Buscar la solucin de este sistema es equivalente a buscar


un vector = ( ) que verifique que
=

1+
2
+
2
1+
2

Mtodo de Jacobi
Este mtodo consiste en tomar

Hacer iteraciones de esta ecuacin de punto fijo consiste en partir de una aproximacin inicial (1 1 1 ) y
hacer iteraciones de la forma

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:

1 + 1
2
1 + 1
2
1 + 1
2

1 1
+ 1
12 1
2

11
23 1
2 1
+ 2
21 1
1
3

=
22

1 1
2 1
1 1
1
2
1 +
=

En este caso, la solucin exacta del sistema es = (1 1 1)


Si hacemos iteraciones del esquema anterior a partir de la
aproximacin inicial 1 = (0 0 0) obtenemos que
2

= 1 ( )
= 1

1+0
1
=
2
2
0+0
=0
2
1+0
1
=
2
2

.
Problema 95 (2 puntos) Calcular 3 iteraciones del
mtodo de Jacobi para resolver el sistema

1 1 0

1
1 2 0 = 3
0 1 3

De la misma forma, obtenemos que

05
84
98
3 = 025 8 = 73 17 = 96
05
84
98

partiendo de 1 = (0 0 0)

Como puede observarse, las sucesivas iteraciones se van


aproximando a la solucin = (1 1 1) En este caso, la
37

Mtodo de Gauss-Seidel

5
976 56
3 = 25 8 = 976 56
625
988 28

Este mtodo consiste en tomar

= ( + )1 ( )
= ( + )

A efectos prcticos, la aplicacin de este mtodo no


1
requiere el clculo directo de la matriz inversa ( + )
puesto que el paso de una iteracin a otra puede hacerse
de la siguiente forma:
1
2

Problema 96 (2 puntos)
Calcular
1 0
de autovectores de la matriz 0 2
1 0

1 1
+ 1
12 1
2

11
2 1
+ 2
21 1 23 1
3

=
22

1 1 2 2 1 1 +
=

=

una base ortogonal


1
0
1

Problema 97 (2 puntos) Calcular 3 iteraciones del


mtodo de Gauss-Seidel para resolver el sistema

1 1 0

1
1 2 0 = 3
0 1 3

Si hacemos un barrido para el clculo de la solucin


de arriba hacia abajo, y vamos actualizando las componentes del vector aproximacin segn las vamos calculando, 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 aproximacin despus del clculo de cada componente, y en el
caso de Jacobi se actualiza slo al final, despus de haber
calculado todas las componentes por separado.

partiendo de 1 = (0 0 0)

Problema 98 (1 punto) Una variante del mtodo de


1
Gauss-Seidel consiste en tomar = ( + ) (), y
= ( + )1 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
Se toman, en este caso,

Ejemplo 19 Vamos a aplicar el mtodo de Gauss-Seidel


al sistema del ejemplo anterior, es decir
2
+ 2
+ 2

= 1
= 0
= 1

1 + 1
2
+ 1
2
1 +
2

1
2

Si hacemos iteraciones del esquema anterior a partir de la


aproximacin inicial 1 = (0 0 0) obtenemos que
2

((1 ) )

= ( + )

Estas nuevas matrices permiten realizar un promediado entre el resultado obtenido por Gauss-Seidel y el
estado de la solucin en la etapa anterior, de la forma
siguiente:

Las iteraciones del mtodo de Gauss-Seidel aplicado


a este sistema consisten en

= ( + )

1 1
+ 1
12 1
2

+ (1 )1
1
11
1

21 1 2 + 2
=
+ (1 )1
2
22

1 1 1 1 +
=
+ (1 )1

La eleccin del parmetro es, en general, un problema difcil. Sin embargo, en el caso de matrices tridiagonales, 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
.

1+0
1
=
2
2
1
1
2 +0
=
2
4
1 + 14
5
=
2
8

De la misma forma, obtenemos que


38

Teorema 28 Si A es una matriz tridiagonal y ( ) 1,


entonces el valor de que optimiza la velocidad de convergencia del mtodo es:
=

Demostracin: La solucin del sistema satisface que =


+ . Restando esta igualdad de la igualdad =
1 + obtenemos que

2
p
1 + 1 ( )2

= (1 ) = 1 (1 )

Como puede observarse de la expresin anterior, el


valor de se encuentra siempre entre 1 y 2
Demostracin [La-Th]. Pg.358-362.

Teorema 30 El mtodo iterativo = 1 + converge para cualquier aproximacin inicial si y slo si


( ) 1

Ejemplo 20 Vamos aplicar el mtodo de relajacin al sistema del ejemplo anterior, es decir

Demostracin: El resultado es inmediato a partir del


hecho de que una matriz converge hacia 0 cuando
si y slo si ( ) 1

2
+ 2
+ 2

Teorema 31 Si en el mtodo de relajacin


(0 2)
entonces ( ) 1

= 1
= 0
= 1

Demostracin: En primer lugar, observamos que las matrices + y (1) son matrices triangulares y,
por tanto, su determinante es el producto de los elementos
diagonales. Adems, teniendo en cuenta que el determinante 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

En este caso, ( ) = 12 y = 1 17 Las iteraciones del mtodo de relajacin aplicado a este sistema
consisten en

1 + 1
+ (1 )1
2
+ 1
=
+ (1 )1
2
1 +
=
+ (1 )1
2
=

| | =

Si hacemos iteraciones del esquema anterior a partir


de la aproximacin inicial 1 = (0 0 0) y tomando =
= 117 obtenemos que

Por lo tanto, como el determinante de una matriz es


el producto de sus autovalores, obtenemos que, si

(0 2), entonces |1 | 1 y, en consecuencia, posee


al menos un autovalor de mdulo mayor o igual que uno.

585
686
999
2 = 342 3 = 802 8 = 999
785
921
999

Teorema 32 Si una matriz verifica que


X
| |
| |
6=

Problema 99 (2 puntos) Calcular 3 iteraciones del


mtodo de relajacin para resolver el sistema

1 1 0

1
1 2 0 = 3
0 1 3

o
| |

6=

| |

Demostracin: En primer lugar, observamos que la matriz puede expresarse como:

0
12
13

1
11
11
11

21
0
23

22
22
22

12

11

0
1
11 11
1 1
1
2
1

Convergencia de los mtodos iterativos.


Vamos a denotar por = el error relativo entre
la solucin del sistema y la aproximacin en la etapa ,

Teorema 29 Se considera el esquema iterativo =
1 + Entonces
=

entonces el mtodo de Jacobi asociado al sistema =


converge para cualquier aproximacin inicial.

partiendo de 1 = (0 0 0) Calcular previamente el


parmetro de relajacin ptimo.

|(1 ) |
(1 )
=
|( + )|

Teniendo en cuenta que las normas 1 e infinito de una


matriz son el mximo de las sumas por filas o columnas en

1 1

39

Prctica 7 (Mtodo de relajacin).

valor absoluto, se tiene, por las condiciones del teorema,


que k k 1 para la norma 1 o infinito. 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:

Desarrollar una funcin en C donde se implemente el


mtodo de relajacin. Los parmetros de la funcin sern:
la matriz el vector un vector donde se almacenar
la solucin, y que inicialmente ser el vector aproximacin
inicial, que por defecto se tomar 0 el parmetro de relajacin el nmero mximo de iteraciones max, y
la tolerancia para evaluar la diferencia entre y
1 La funcin devolver el nmero de iteraciones necesarias 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

Definicin 9 Una matriz A es irreducible si un sistema


de la forma = no puede descomponerse en dos subsistemas independientes de dimensin menor
Dicho de otra forma, una matriz es irreducible si el
cambio de cualquier valor del vector del sistema =
afecta a todos los elementos del vector

1 1 0

1
1. 1 2 0 = 3
0 1 3


2 1 0

1
2. 1 2 1 = 0
0 1 2

Teorema 33 Si es una matriz irreducible y se verifica


que
X
| |
| |
6=

| |

X
6=


1 3 3

7
3. 3 1 3 = 7
3 3 1

| |

con la desigualdad estricta en al menos una fila o columna,


entonces los mtodos iterativos convergen.

4. Los sistemas de matrices de dimensin 10 y 100.

Demostracin. [La-The] Pg.346-347.

Para las pruebas tomaremos max = 10000 y


= 103 donde es la unidad de redondeo. Los resultados que se deben obtener son los siguientes

Ejemplo 21 La matriz del sistema ejemplo tratado anteriormente, esto es

2 1 0
1 2 1
0 1 2

Precision float
Ejemplo
1
1
1
1.2
2
1
2
1.25
3
1
3
M_10
1
M_10
1.7
M_100
1
M_100
1.95

satisface las hiptesis del Teorema anterior.

Problema 100 (2 puntos) Demostrar que, si una matriz verifica que por filas o columnas su suma es siempre
igual a 0, entonces el determinante de es cero, y por
tanto el sistema asociado a no tiene solucin.

N Iter
14
8
12
8

139
36
3322
293

Error
105
106
105
105
NO sol.
NO sol
104
104
103
103

Precision double
Ejemplo
1
1
2
2
3
3
M_10
M_10
M_100
M_100

Problema 101 (3 puntos) Dado un sistema iterativo


= 1 +
Demostrar que, aunque el radio espectral de sea
mayor que 1 si 1 y son combinaciones lineales de autovectores de correspondientes a autovalores de mdulo
menor que 1 entonces el mtodo converge.

40

1
1.2
1
1.2
1

N Iter
43
20
41
20

1
1.7
1
1.95

634
83
max
1431

Error
1014
1015
1014
1015
NO sol.
NO sol
1013
1013

1012

Precision long double


Ejemplo
N Iter
1
1
54
1
1.2
25
2
1
52
2
1.2
25
3
1
3
M_10
1
822
M_10
1.7
106
M_100
1
max
M_100
1.95 1862

Ejemplo 22 Consideremos el siguiente sistema no lineal


de ecuaciones:

Error
1018
1018
1017
1018
NO sol.
NO sol
1016
1016

1015

2 2 + 1 = 0
2 = 0
La matriz gradiente de esta funcin viene dada por

2 2
( ) =
2 2
Tomemos como aproximacin inicial 1 = (1 1) El sistema que hay que resolver para pasar de una iteracin a
otra es

2 2
1
2 + 1
=
2
2 2
2

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, calcular las races, reales o complejas, de un polinomio de
grado 2 dado por 2 () = 2 + + , donde = +
es equivalente a resolver el sistema

Si partimos de 1 = (1 1) para obtener 2 tenemos que


resolver

2 2
1
1
=
2 2
2
2
3 1
que tiene por solucin 4 4 Por tanto, 2 viene dado
por
3 1
1
4
2
4
=
+
=
3
1
14
4

2 + 2 + = 0
2 + = 0

Para calcular 3 tenemos que resolver el sistema

2 2

1
1
1
32
34 + 1
2
4
=

3
1
6
2
2
2
16

9
3
cuya solucin es 13
40 40 . Por tanto, viene dado por
1 13

3
40
40
4
+
=
3 =
3
9
39

que es un sistema no lineal de ecuaciones. En general, un


sistema no lineal de ecuaciones de dimensin se escribe
como ecuaciones del tipo
1 (1 ) = 0
2 (1 ) = 0

(1 ) = 0

Problema 102 (2 puntos) Calcular 2 iteraciones del


mtodo de Newton-Raphson no lineal para aproximar una
raz del sistema de ecuaciones
2 + 2 1 = 0
= 0

donde es una aproximacin de la solucin de () = 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

partiendo de ( ) = (1 1)
Problema 103 (2 puntos) Plantear el algoritmo necesario para calcular, utilizando el mtodo de NewtonRaphson, las races complejas o reales de un polinomio de
grado 3

= (0 )
= 0 +

En el caso general, a partir de una aproximacin


se obtiene la aproximacin +1 en dos etapas:
( )
+1

40

que ya es una buena aproximacin de la solucin exacta


dada por el vector (0 1)

donde () = (1 () 2 () ()) es una funcin de


< < , y = (1 ) El mtodo de NewtonRaphson para sistemas de ecuaciones se basa en desarrollar
por Taylor la funcin y truncar el desarrollo para que
quede un sistema lineal, es decir

() = (0 ) + (0 ) 0 + O k 0 k2

(0 )
1

40

= ( )
= +

Problema 104 (2 puntos) Se considera el sistema no


lineal
( 1) = 0
( 2) = 0
41

A partir de 1 = (1 1), calcular 2 y 3 utilizando el


mtodo de Newton-Raphson para aproximar un cero del
sistema no lineal.

Interpolacin por splines cbicos.


Uno de los problemas bsicos del polinomio interpolador
de Lagrange, es que, para valores grandes de los polinomios de grado pueden tener un carcter fuertemente
oscilante, y los resultados obtenidos por la interpolacin
pueden no ser muy satisfactorios, como indica el ejemplo
siguiente.

Problema 105 (2 puntos) Calcular una iteracin del


mtodo de Newton-Raphson no lineal para aproximar una
raz del sistema de ecuaciones
1 = 0
3 2 = 0
( 1)4 3 = 0

Ejemplo 23 El polinomio base de Lagrange centrado en


0 sobre los puntos = 5 4 3 2 1 0 1 2 3 4 5 es

0 () =

partiendo de ( ) = (1 1 1)

(2 1)(2 4)(2 9)(2 16)(2 25)


14400

Tiene un marcado carcter oscilante como muestra su


grfica en el intervalo [5 5].

INTERPOLACIN DE FUNCIONES II

Ejemplo 24

Esta seccin es la continuacin natural del tema interpolacin 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.

(2 1)(2 4)(2 9)(2 16)(2 25)


=
14400

y6
Interpolacin de Hermite.
En ocasiones, resulta de inters interpolar no slo el valor
de la funcin en ciertos puntos { }=0 sino tambin
el valor de sus derivadas. Un ejemplo clsico de ello es
el desarrollo de Taylor de una funcin en un punto . En
este caso, aproximamos () por un polinomio de grado ,
() tal que () y () poseen las mismas derivadas
en el punto desde el orden 0 hasta el orden

-5

0 ()
) ()
( ) + +
( )
1!
!
El error de interpolacin viene dado por la frmula

-4

-3

-2

-1

() = () +

Para evitar este problema de oscilaciones de los polinomios de Lagrange, cuando se trabaja con muchos puntos
de interpolacin, se suele interpolar la funcin utilizando
polinomios a trozos, definiendo un polinomio distinto para
cada intervalo [ +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 distinto 3 () = ( )3 + ( )2 + ( ) + para
cada intervalo [ +1 ] Si hay +1 puntos, el nmero de
polinomios es Para definir estos polinomios, se imponen
las siguientes condiciones:

+1)

()

( )+1
( + 1)!
donde es un valor intermedio entre y En el caso
general, donde buscamos un polinomio () tal que l y
todas sus derivadas hasta un cierto orden coincidan con
una funcin () en los puntos { }=0 , se utilizan los
denominados polinomios base de Hermite () que son
polinomios de grado menor o igual que ( + 1)( + 1) 1
dados por las siguientes condiciones:


1 = =
(
)
=

0
6= 6=

() () =

3 ( ) = ( ) = 0 1
3 (+1 ) = (+1 ) = 0 1

A partir de los polinomios base de Hermite, el polinomio interpolador de Hermite se define como:
() =

X

=0 =0

3
(+1 ) =

2 3
(+1 ) =
2

( ) ()

3+1
(+1 ) = 0 2

+1
2 3
(+1 ) = 0 2
2

=
Vamos a introducir la notacin
+1 Ntese que, para definir los polinomios, tenemos que buscar 4 valores, es decir:
0 1 0 1 0 1 0 1

Problema 106 (3 puntos) Calcular los polinomios base


de Hermite que corresponden a tomar como puntos de interpolacin 0 = 1 1 = 1 y el orden de derivacin
= 1
42

Por razones tcnicas, como veremos posteriormente,


vamos a utilizar tambin los valores y

El segundo procedimiento se utiliza cuando utilizamos


los valores de 0 () y 0 () En este caso, imponemos que

Teorema 34 Si una familia de polinomios 3 () = (


)3 + ( )2 + ( ) + = 0 satisface
las condiciones anteriores, entonces

= ( ) = 0
+1
=
= 0 1
3
+1
(2 + +1 )
=

1 1 +2(1 + ) + +1 =

30
(0 ) = 0 ()

3 1
( ) = 0 ()

de donde salen las ecuaciones


0 () =

= 0 1

Por lo tanto, siguiendo con el resultado del teorema


anterior, para calcular los splines cbicos es necesario, en
primer lugar, tomar = ( ) A continuacin, se resuelve
un sistema de ecuaciones tridiagonal para el clculo de los
. Los y se calculan directamente a partir de las
relaciones mostradas en el teorema anterior.

para = 1 1
Demostracin De la condicin 3 ( ) = ( ) se obtiene de forma inmediata que = ( ) De la condicin
2 3+1
2 (+1 )

2 3
2 (+1 )

0 () =

3(+1 ) 3 ( 1 )

1 0 0
(20 + 1 )
0
3
1 1

(2 1 + )
1
3

se obtiene que

2+1 = 6 + 2
de donde, despejando, obtenemos que

Ejemplo 25 Vamos a calcular los polinomios interpoladores utilizando splines cbicos al interpolar la funcin
() en los puntos = 0 1 2 y 3 sabiendo que (0) = 0
(1) = 1 (2) = 0 (3) = 2 tomando 0 = 3 = 0 En
este caso = 1. Debemos definir 3 polinomios distintos
que corresponden a los intervalos [0 1] [1 2] y [2 3] Los
trminos vienen dados por

+1
=
3
De la Condicin 3 (+1 ) = (+1 ) se obtiene que
3 + 2 + + = +1
Despejando, obtenemos que


0
0
1 1

2 = 0
2
3

+1
2 =

+1
(2 + +1 )

Finalmente, de la condicin
obtiene que

3
( )

31
( )

se

= 31 21 + 21 1 + 1

El sistema que debemos resolver para calcular los

3(+1 ) 3 ( 1 )
4 1
1
6

Ejemplo 26
=

1
1 4
9
2
cuya
solucin

es
1
22
=

28
2

Ntese que esta ltima relacin determina un sistema


de ecuaciones donde las incgnitas son las variables Dicho sistema tiene +1 incognitas (0 ) y 1 ecuaciones. Para completar dicho sistema, hay que aadir una
ecuacin que involucre a 0 y otra ecuacin que involucre
a Para aadir estas dos ecuaciones hay dos procedimientos estndares. El primero consiste simplemente en
fijar 0 = = 0 lo que significa que
0

es

y, despejando todo en funcin de se obtiene la relacin


1 1 +2(1 + ) + +1 =

Los valores y vienen dados por

2 30
(0 ) = 0
2
2 3 1
( ) = 0
2
43

22 0
= 0733
3
28 + 22
= 1667
3
0 28
= 0933
3

0
1
2

22
= 1733
3
44 + 28
= 1
= 0467
3
56 + 0
= 2
= 0133
3
= 1

y
4
2
0

Ejemplo 27 Por tanto, los polinomios son

-2

0 () = 0733 + 1733

-4

1 () = 1667 ( 1)3 22 ( 1)2 0467 ( 1) + 1


2 () = 0933 ( 2)3 + 28 ( 2)2 + 0133 ( 2)

Problema 107 (3 puntos) Calcular los polinomios que


determinan la interpolacin
por splines cbicos de la fun
cin () = sin 2 para los puntos = 1 0 1 y 2.

A continuacin se muestra una grfica con los 3 polinomios concatenados en el intervalo [0 3] :


Como puede observarse, por las condiciones sobre las
derivadas que hemos impuesto, no es posible distinguir geomtricamente, 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 grficamente el perfil de la derivada de los polinomios 0 ()
1 () y 2 ()

La interpolacin a travs de la funcin seno cardinal.


Una base de funciones interpolantes muy utilizada en la
teora de Fourier es la base formada a partir de la funcin
seno cardinal, definida por
sin () =

Ejemplo 28

sin()

cuya grfica es

3
2

1.0
0.8

0.6

0.4

0.2

-1
-50

como puede observarse, tampoco sobre la derivada se aprecian los puntos de unin de los polinomios. Sin embargo,
sobre la grfica de la derivada segunda los puntos de unin
se detectan en los lugares donde encontramos un pico, tal
y como se muestra en la grfica de la derivada segunda
siguiente:

-40

-30

-20

-10

10

20

30

-0.2

40

50

Esta funcin tiene la propiedad de que en


sin (0) = 1 y para cualquier entero distinto
sin () = 0 Dada una funcin () su funcin
polante en los puntos = para =
dada por la funcin
e() =

44

sin( )

( )

=

= 0
de 0
interviene

Problema 108 (2 puntos) Calcular la funcin que interpola, utilizando la funcin sin () la funcin () =
sin() en los puntos = 2 0 2

Ejemplo 29 Consideremos la funcin () definida en


los puntos = 0 1 2 y 3 tal que (0) = 0 (1) = 1
(2) = 0 (3) = 2 La interpolacin de esta funcin utilizando la funcin seno cardinal viene dada por la funcin
sin( ( 1))
sin( ( 3))
e() =
+2
( 1)
( 3)

La interpolacin
trigonomtricos.

cuya grfica es

travs

Dada una funcin () definida en el intervalo


[ ], pretendemos aproximar () como

1.5
1.0

()

0.5

Teorema 35 Los coeficientes que minimizan el error


cuadrtico medio
!2
Z

X

()
( ) =

vienen dados por


=

5
() = ( 1) + ( 1)( 2)
6

()
2

Demostracin En primer lugar, observamos que, dada


la forma cuadrtica del funcional ( ) ste
debe poseer mnimos. Por otro lado, en un mnimo,
las derivadas parciales de ( ) con respecto a
cualquier son cero, y por tanto
!
Z

( ) =

()
= 0

En la siguiente figura se muestran juntas las grficas


del polinomio de Lagrange (lnea a trozos), los polinomios
de la interpolacin por splines cbicos (lnea slida), y la
interpolacin utilizando la funcin sin () (lnea a trozos).
2.0

con lo que el resultado del teorema sale de forma inmediata, teniendo en cuenta que

Z
2 =

=
0 6=

1.5
1.0
0.5
0.0

donde son coeficientes, en general complejos. El siguiente resultado determina la forma de calcular dichos coeficientes :

Ejemplo 30 Vamos a comparar grficamente 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

polinomios

La base de la transformada de Fourier discreta es la utilizacin de los polinomios trigonomtricos dados por la expresin
() =

2.0

0.0

de

Ejemplo 31 Consideremos la funcin

1 [ 2 2 ]
() =
0
[ 2 2 ]

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.

45

Teorema 36 Los valores y que minimizan el error


cuadrtico anterior son
P
P
P
=1 =1 =1
=
P
2
P

=1 2

=1
P
P
P 2 P
=1
=1
=1
=1
=
2
P 2 P
=1
=1

Vamos a calcular el polinomio trigonomtrico interpolante para = 3 Los valores de son


R
()
1

0 =
=
2R
2

()
1

1 = 1 =
=
2

R
()2
=0
2 = 2 =
2
R
3
()
1
=
3 = 3 =
2
3

Demostracin En primer lugar, observamos que, dada


la forma cuadrtica que tiene el funcional, debe poseer un
mnimo. Adems, en un mnimo del funcional ( ) las
derivadas parciales son cero, y por tanto

Por tanto, el polinomio trigonomtrico interpolador es

( + ) = 0
( ) = 2

=1

1
2
2
cos(3)
3 () = + cos()
2
3

( + ) = 0
( ) = 2

=1

La siguiente grfica muestra la aproximacin entre


() y 3 ():

Esto da lugar a un sistema lineal de ecuaciones cuyas


incgnitas son y y cuya resolucin lleva al resultado
establecido en el teorema.

Ejemplo 32

y 1.0

Problema 110 (2 puntos) Calcular la aproximacin


mnimo cuadrtica lineal de la tabla

0.8
0.6

0
1
2
3

0.4
0.2
-3

-2

-1

0
1
0
2

x
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 descripcin de los algoritmos bien diseada.
[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, iterativos y mtodos tipo gradiente, as como el clculo de
autovalores y vectores propios.
[Hi] Higham N. "Accuracy and Stability of Numerical 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, tambin resulta de inters la descripcin de las aritmticas que
utilizan los ordenadores ms recientes como la aritmtica
Standard de I.E.E.E..

Problema 109 (3 puntos) Calcular el polinomio


trigonomtrico, tomando = 2 que interpola la funcin
() = || 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 {( )}=1 la
aproximacin mnimo cuadrtica lineal consiste en buscar
la recta = + , tal que la funcin de error cuadrtico
( ) =

X
=1

( + )

sea mnima.

46

[Hu] Hultquist P. F. Numerical Methods for


Engineers and Computer Scientists, The Benjamin/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 Mthodes directes y Vol. 2 Mthodes itratives ", Masson, 1993.
Esta obra, dividida en dos volmenes, trata en profundidad 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 Analysis SIAM, 1996. Esta obra, sin pretender ser exhaustiva,
muestra las ltimas tendencias en cuanto a la enseanza
de los conceptos bsicos del Anlisis Numrico.

APNDICE A: Resumen de los comandos de


LINUX/UNIX
En este breve resumen seguiremos el siguiente esquema.
En primer lugar, aparece el comando LINUX/UNIX. A
continuacin, 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 fichero
more /users/p701/fortran77/programas/prog1.f
ls (dir) visualiza contenido de un directorio
ls /users/p701/fortran77
cp (copy) copia un fichero en otro.
cp /users/p701/fortran77/programas/prog1.f .
rm (del) borra un fichero
del prog1.f
man (help) suministra ayuda sobre un comando
man ls
logout se termina la sesin y se sale del sistema
logout
ps visualiza los nmeros de procesos que estn abiertos
que corresponden al usuario
ps -u
kill interrumpe la ejecucin de un proceso de nmero

kill -9
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 ejecucin de un fichero. Este comando es de utilidad para
salvaguardar la informacin de directorios y ficheros de
miradas ajenas.
Hacer chmod para mirar las opciones.
chown cambia el propietario de un fichero.
Hacer chown para mirar las opciones.
du (tree) visualiza la cadena de directorios
du /users/p701
find busca un archivo de nombre en el directorio
find -name -print
grep busca los ficheros que contenga la cadena de caracteres
grep *
APNDICE B: Resumen del procesador de texto

El procesador de texto tiene la ventaja de estar presente


en cualquier mquina que trabaje sobre LINUX/UNIX y
no requiere ningn entorno grfico. Puede ejecutarse en
dos modos. El modo comando (el que est por defecto
al entrar en ), donde se ejecutan comandos, y el modo
edicin, que es donde se escribe normalmente el texto.
47

cuando quiero trabajar en precisin real. Es decir escribir 12

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 final de
la lnea
O inserta una nueva lnea, pasa a modo edicin y
pone el cursor al principio de la nueva lnea

2. Modificar el parmetro de una funcin en el interior


de la funcin
3. No poner ningn comentario en los programas.
4. Anidar excesivamente los programas. Siempre hay
que buscar que el nmero de anidamientos sea mnimo.

Manejo de Ficheros (en modo comando)


:w escribe en disco el fichero
:wq escribe en disco el fichero y sale del
:e edita el fichero
:q! sale del sin guardar cambios.
:w escribe el fichero actual en el
fichero en disco
! ejecuta el comando UNIX
:set nu presenta los nmeros de lnea en pantalla

5. No respetar los tipos en los pasos de parmetros de


las funciones.

Comandos para desplazarse por el texto (en modo


comando)
Crtl F pgina adelante
Crtl B pgina atrs
$ pone el cursor en el final de la lnea
0 pone el cursor en el principio de lnea
/ busca hacia adelante el string
? busca hacia atras el string
n repite la ltima bsqueda
G va al final 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 remplaza el carcter donde se encuentra
el cursor por el carcter
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 encuentra 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


Programacin
1. Escribir nmeros como 12 en precisin entera. Solucin: Aadir siempre el punto a la derecha del nmero
48

Вам также может понравиться