Académique Documents
Professionnel Documents
Culture Documents
1
9 BIBLIOGRAFÍA BÁSICA 47 optado por reducir los contenidos e impartir una selección
de los métodos numéricos más representativos.
10 APÉNDICE A: Resumen de los comandos
de LINUX/UNIX 48 ARITMÉTICAS DE PRECISIÓN FINITA Y
FUENTES DE ERRORES NUMÉRICOS
11 APÉNDICE B: Resumen del procesador de
texto vi. 48 Aritméticas de precisión finita.
12 APÉNDICE C: Algunos fallos comunes en Un número entero z se representa en el ordenador a través
Programación 48 de un número fijo de bits (16 bits habitualmente), donde
uno de los bits se utiliza para determinar el signo y los
INTRODUCCIÓN restantes para expresar el valor absoluto del número, de
tal manera que la secuencia de bits
El presente documento es un texto de referencia básico so-
bre los contenidos de la disciplina de Análisis Numérico a1 a2 a3 ......an
en el contexto curricular de una Ingeniería Informática.
donde ai = 0 o ai = 1, representa el valor absoluto del
Aunque el texto cubre los contenidos mínimos necesarios,
número
resultará de gran interés para los alumnos complementar
la información aquí suminisftrada con los textos de ref- | z |= an + an−1 2 + an−2 22 + ... + a1 2n−1
erencia básicos mencionados en la bibliografía. Muchas
de las demostraciones de los resultados presentados se en- Así, utilizando 16 bits, el mayor número entero que
cuentran en este texto. En los casos en que las demostra- podemos representar es
ciones no se incluyen, se suministra el libro y la página
donde se encuentra tal demostración, para que el alumno 1 + 2 + 22 + ..... + 214 = 215 − 1 = 32767
interesado pueda estudiarla por su cuenta. En general, to-
dos los temas presentados aparecen bien desarrollados en Es decir, los número enteros que podemos expresar
los libros de texto clásicos mencionados en la bibliografía. con una aritmética de 16 bits van desde −32767 hasta
La única excepción es el tema de aritméticas de precisión 32767.
finita, que se ha desarrollado en este texto con algo más Para representar un número real y en el ordenador
de detalle y con un enfoque algo más moderno que en los nos basaremos en el siguiente resultado:
libros clásicos, por considerar que, en el contexto de una Teorema 1 Un número real positivo y se puede expresar
Ingeniería Informática, este tema es de especial relevancia. como
En el texto se proponen unas prácticas de laboratorio X∞
an
para realizar a lo largo de la asignatura. El lenguaje de y = 2e
n=1
2n
programación que se utilizará para las prácticas es el C.
Para establecer el orden de impartición de los contenidos donde e es un número entero, a1 = 1, y para n > 1, an = 0
presentes en este documento se ha utilizado, como criterio o an = 1.
preferente, la coordinación entre el programa de prácticas
y el programa teórico de la asignatura, de tal forma que, Demostración. Dado un número real positivo y, existe
con un desarrollo normal de la docencia, los contenidos un entero e tal que 2e−1 ≤ y < 2e , y por tanto 2−1 ≤
teóricos sean presentados con antelación al desarrollo de y2−e < 1. Por otro lado, si definimos las sucesiones Sn y
las prácticas. an de la siguiente forma: S1 = 2−1 , an = 1 y para n > 1
Para el buen seguimiento de la asignatura, resulta de 1
an = 0 si Sn−1 + 2n > y2−e
gran interés tener cierta soltura en el manejo de los con- 1
an = 1 si Sn−1 + 2n ≤ y2−e
ceptos elementales del Análisis Matemático, el Álgebra,
y la programación de Algoritmos. La materia expuesta n
X ak
en esta documentación está programada para ser impar- Sn =
2k
tida en un cuatrimestre a razón de 3 horas/semana en el k=1
aula y 2 horas/semana en el laboratorio informático, lo entonces es claro que | Sn − y2−e |≤ 21n , y por tanto Sn →
que hace un total de, aproximadamente, 45 horas en aula y2−e lo que concluye la demostración del teorema.
(3 créditos teóricos) y 30 horas de laboratorio (2 créditos
prácticos). Dado el escaso tiempo disponible, se han elim- Ejemplo 1 Consideremos y = 10. 125, podemos expresar
inado algunos temas clásicos de un curso completo anual este número como
de Análisis Numérico como son las ecuaciones diferenciales
1 1 1
ordinarias y las ecuaciones en derivadas parciales. Nor- 10. 125 = 24 ( + 3 + 7 )
malmente, dichos temas se verán en detalle en asignaturas 2 2 2
posteriores. Además, en lugar de presentar de forma ex- Es decir, e = 4, a1 = a3 = a7 = 1, y el resto de los an
haustiva todos los métodos numéricos que se pueden en- es 0. En este caso, el número de elementos an distintos de
contrar en los libros de Análisis Numérico clásicos, se ha 0 es un número finito, en general no ocurre así.
2
Evidentemente, cualquier número que tenga un Es importante resaltar que los números reales en una
número finito de elementos an distintos de 0 es un número aritmética de precisión finita no están equiespaciados, es
racional y, por tanto, los números irracionales se represen- decir, los números están más cercanos entre sí cerca de 0,
tarán siempre con un número infinito de elementos an no y más alejados al alejarnos de 0.
nulos. Sin embargo, como muestra el siguiente problema, En 1985, la sociedad I.E.E.E. presentó una serie de
existen otros muchos números además de los irracionales, especificaciones estándares para la definición de una arit-
que no se pueden representar con un número finito de ele- mética de precisión finita para los números reales. En este
mentos an no nulos. trabajo, se codifica un número real en simple precisión uti-
lizando 32 bits de memoria, de los cuales 23 bits se utilizan
para la mantisa (es decir t = 24 puesto que a1 = 1 no se
Problema 1 (2 puntos) Demostrar que al representar almacena), 1 bit se utiliza para el signo y 8 bits se utilizan
el número real 0.1 como para el exponente e, lo cual da un rango de 28 = 256 val-
X∞ ores posibles para el exponente e. En este caso, se toma
an
0.1 = 2e emin = −125 y emax = 128. Como puede observarse, el
n=1
2n
número total de exponentes posibles es 254, dos menos
el número de elementos no nulos an es infinito. que los 256 posibles, ello se hace así, porque se reservan
dos casos para tratar las denominadas excepciones, como
se verá más adelante.
Problema 2 (2 puntos) Representar el número 0.0 Por tanto, el valor máximo que puede tomar un
703 125 como número real en esta aritmética es
X∞ 24
an X 1
0.0 703 125 = 2e yemax = 2128 = 3. 4 × 1038
n=1
2n 2n
n=1
3
Evidentemente, estos estándares no se siguen al pie .
de la letra por los diferentes fabricantes de ordenadores.
Así, aunque existe bastante homogeneidad en este sentido,
los valores pueden cambiar ligeramente de una máquina a Programa 2 Pseudocódigo para calcular el mayor
otra. Por otro lado, aunque en la mayoría de los orde- número positivo de una aritmética. El programa devuelve
nadores actuales la base de representación de los números un entero M tal que 2M es el número positivo mayor
es 2, todavía pueden encontrarse algunos sistemas donde posible.
la base es 10 ó 16. Nosotros no entraremos aquí a estudiar
este tipo de bases. El estudio es básicamente el mismo, Algoritmo Mayor_Numero_Positivo
adaptándolo a la base de representación. variable real A←1.
variable real B←2.
Tratamiento de las excepciones en el estándar de variable entera M←0
I.E.E.E. mientras B>A hacer
Denominaremos excepciones a las expresiones que no se A←2*A
pueden expresar en una aritmética usual, B←2*A
√ como son el 0, M←M+1
el infinito, operaciones no válidas (como −1), etc. Estas
excepciones son tratadas en el estándar de I.E.E.E. de la finmientras
siguiente forma: dentro de las posiciones de memoria ded- escribir(M)
icadas al exponente e de un número, se reservan dos, que finalgoritmo
corresponden a emin − 1 y emax + 1, para trabajar con con
las excepciones. La regla que se utiliza es la siguiente:
Problema 5 (2 puntos) Dada una aritmética de pre-
1. Si el valor de una variable y tiene por exponente cisión finita cualquiera, calcular la distancia que hay entre
emax + 1 y todos los coeficientes de la mantisa valen el número 1 y su inmediato superior, es decir, el número
0, entonces y se considera infinito. Por ejemplo 1/0 que va después de 1, y la distancia entre el número 1 y su
debe dar infinito. inmediato inferior.
4
B←1+A Demostración. Un número real cualquiera z, que
M←M+1 tomaremos positivo sin pérdida de generalidad, se puede
finmientras expresar como
X∞
escribir(A) an
finalgoritmo z = 2e
n=1
2n
donde a0 = 1 y, en general, an = 0 o an = 1. Además,
para un número natural t cualquiera tenemos que
Problema 6 (3 puntos) Se considera una aritmética de à t !
Xt X an
16 bits donde se dedica 1 bit al signo, 9 bits a la mantisa e an e 1
(t = 10) y 6 bits al exponente (emin = −30 emax = 31). 2 ≤z≤2 + t
n=1
2n n=1
2n 2
Escribir, si es posible, los siguientes números en esta ar-
itmética: Por el problema anterior, el número que está a la
derecha de la desigualdad también pertenece a la arit-
1. 2, y los números más cercanos a 2 por arriba y por
mética de precisión finita, y por tanto
debajo.
2e 2−t
2. El cero, el infinito y NaN. | z − ze |≤
2
Ahora bien, como a0 = 1, se tiene que 2e < 2 | z | y,
3. Los números positivos mayor y menor de la aritmética
por tanto
(teniendo en cuenta las excepciones).
| z − ze |≤| z | 2−t =| z | u
1 con lo que queda demostrado el teorema.
4. 9.
¡1 1
¢
5. 2 2 − 210 .
Problema
P 9 (2 puntos) Dado un número ze =
7 ¢(2 puntos) ¡ Sean 2e tn=1 a2nn , en una aritmética de precisión finita. Cal-
Problema
¡ ¢A =
cular el número inmediatamente inferior a él en dicha ar-
2 12 + 213 + 215 B = 23 12 + 216 + 1
27 . Calcular
B+A y B−A itmética.
5
pero en este caso le estamos dando una significación espe- Para poder verificar si la práctica está bien, a contin-
cial a A con respecto a B. uación se dan los resultados que se deben obtener:
6
número real. Como vimos en la sección anterior, las arit- Problema 11 (2 puntos) Escribir el Pseudocódigo para
méticas estándares de ordenador trabajan en base 2. Sin implementar el cálculo de las raíces de ax2 + bx + c = 0
embargo, los humanos pensamos y razonamos en términos evitando los errores de cancelación y teniendo en cuenta
de números en base 10. Por ejemplo, números tan naturales las diferentes opciones que aparecen cuando a 6= 0 y a = 0.
para nosotros como 0.1 no pueden representarse de forma
exacta en una aritmética en base 2. Esto quiere decir que,
al representar 0.1 el ordenador, va a producir un pequeño
redondeo, y este pequeño error de redondeo se puede ir pro- CÁLCULO DE LOS CEROS DE UNA
pagando hasta producir errores apreciables. Por ejemplo, FUNCIÓN
parece razonable pensar que, cuando sumamos 100 veces
En esta sección vamos a estudiar algunos métodos para
el número 0.01, el resultado sea exactamente 1, pero, no
calcular los ceros de una función de una variable, f (x),
es así. Sin embargo, si sumamos 128 = 27 veces el número
esto es, los valores de x para los cuales f (x) = 0.
2−7 , el resultado sí es exactamente 1.
Como conclusión de este apartado, podemos extraer
que, para ser más precisos numéricamente, cuando tra- Método de la bisección.
bajamos con números más pequeños que la unidad de-
beríamos pensar en términos de 2−m en lugar de 10−m , Se considera un intervalo [a, b] donde la función f (x) cam-
que es como solemos hacerlo. bia de signo, es decir f (a)·f (b) < 0. El método consiste en
ir dividiendo el intervalo [a, b] por la mitad de la siguiente
Errores por Cancelación. Estos errores se producen al forma:
restar números de aproximadamente la misma magnitud. Se toma el punto medio a+b 2 . Si f ( a+b
2 ) = 0 ya
a+b
Hay que tener en cuenta que, al realizar operaciones sobre hemos encontrado la raíz x = 2 . En caso contrario,
una variable, los errores de redondeo se van acumulando si f ( a+b a+b
2 ) · f (b) < 0 entonces hacemos a = 2 y volvemos
en la parte menos significativa del número (los dígitos de a subdividir el nuevo intervalo [a, b]. Si, por el contrario,
menos valor), dejando relativamente intacta la parte más f (a) · f ( a+b a+b
2 ) < 0, entonces hacemos b = 2 y volvemos
significativa del número, que corresponde a los dígitos de a empezar. Las sucesivas subdivisiones del intervalo [a, b]
mayor valor. Por ello, al restar dos números de magnitud van aproximando la raíz.
parecida, se cancelan las partes significativas, quedando
la aportación de los dígitos de menos valor, que es donde
más error hay. Por ejemplo, en el programa anterior, se Problema 12 (2 puntos) Calcular 2 iteraciones del al-
ha utilizado este fenómeno de cancelación para poner de goritmo de la bisección para buscar un cero de la función
manifiesto la diferencia entre trabajar con bases distintas. f (x) = x2 − 2 en el intervalo [−2, 0].
En los algoritmos, muchas veces se intenta evitar la posi-
bilidad de restar 2 números que pudieran ser de magnitud
parecida. Por ejemplo, en la conocida fórmula del cálculo Problema 13 (2 puntos) Escribir el Pseudocódigo para
de raíces de un polinomio de grado 2, ax2 + bx + c = 0 implementar el método de la bisección
(con a 6= 0) √
−b ± b2 − 4ac
x=
2a Método de la Regula-falsi
una forma
√ de evitar la cancelación que se produce cuando Este método es una variación del anterior en el sentido
b ≈ b2 − 4ac consiste en calcular primero la raíz de siguiente: En lugar de tomar el punto medio a+b 2 del in-
mayor valor absoluto, es decir tervalo, se considera el punto de intersección de la recta
¡ √ ¢ que pasa por los puntos (a, f (a)) y (b, f (b)) con el eje x.
− b + sign(b) b2 − 4ac
x1 = Es decir, en el razonamiento anterior, se sustituye el valor
2a xm = a+b2 por el valor
y después la segunda raíz x2 utilizando la relación x1 x2 = b−a
c xm = a − f (a)
a. f (b) − f (a)
Por lo tanto, en los algoritmos, se deberá evitar, en la
medida de lo posible, la resta de variables que tengan una
magnitud cercana. Problema 14 (2 puntos) Calcular 2 iteraciones del al-
goritmo de la regula-falsi para buscar un cero de la función
f (x) = x2 − 2 en el intervalo [0, 2].
Problema 10 (1 punto) Calcular las raíces del poli-
nomio P (x) = x2 − 2x + 0.01 evitando los errores de
Problema 15 (2 puntos) Escribir el Pseudocódigo para
cancelación.
implementar el método de la Regula-falsi.
7
Método de Newton-Raphson El método de la Secante
Éste es, sin duda, uno de los métodos más importantes y Este método es una variante del método de Newton para
útiles para el cálculo de raíces. Dada una aproximación el caso en que no sea posible calcular la derivada de f (x)
inicial de la raíz x0 , se busca, a partir de x0 , una aprox- de una forma analítica. En este caso, se sustituye el valor
imación mejor x1 de la raíz, de la siguiente forma: Se f 0 (xn ) en el algoritmo, por el valor
sustituye la función f (x) por el valor de su desarrollo de
Taylor centrado en x0 hasta el orden 1, es decir f (xn ) − f (xn−1 )
xn − xn−1
f (x) ≈ f (x0 ) + f 0 (x0 )(x − x0 )
que corresponde a una aproximación de f 0 (xn ). Para ini-
que corresponde a un polinomio de grado 1, y a contin- ciar el algoritmo, son necesarias dos aproximaciones ini-
uación se calcula x1 como el cero de este polinomio, es ciales, x0 y x1.
decir:
f (x0 )
x1 = x0 − 0 Problema 16 (1 punto) Calcular una iteración del
f (x0 )
método de Newton-Raphson para calcular un cero de la
y por tanto, de forma general, obtenemos, a partir de x0 función f (x) = x3 − 3 partiendo de x0 = 1.
una secuencia xn de valores que van aproximando la raíz,
definidos por
f (xn )
xn+1 = xn − 0 Problema 17 (1 punto) Calcular una iteración del
f (xn )
método de la secante para calcular un cero de la función
A continuación veremos una aplicación de este método f (x) = x3 − 3 partiendo de x0 = 0, x1 = 1.
para calcular la raíz cuadrada √
de un número positivo A,
teniendo en cuenta que si x = A, entonces f (x) = x2 −
A = 0.
Problema 18 (2 puntos) Escribir el pseudocódigo del
algoritmo del método de la secante. Los datos de entrada
Programa 4 Pseudocódigo para calcular una aproxi- son las aproximaciones iniciales, x0 y x1 , el número máx-
mación de la raíz cuadrada de un número positivo A con imo de iteraciones, N max, y la tolerancia, T OL, para
una tolerancia T OL, y un número máximo de iteraciones determinar la igualdad de dos números.
N max .
Algoritmo Raiz_Cuadrada
Método de Müller.
variables reales A,TOL
variable entera Nmax Este método es una generalización del método de Newton-
variables reales X0, X1 Raphson. En lugar de quedarnos con la parte lineal del
leer(A,TOL) desarrollo de Taylor de la función, nos quedamos con los
leer(Nmax) términos hasta el orden 2, de tal forma que hacemos
si A<0 entonces
f 00 (xn−1 )
escribir(’El numero A no es positivo’) f (x) ≈ f (xn−1 )+f 0 (xn−1 )(x−xn−1 )+ (x−xn−1 )2
devolver CODIGO DE ERROR 2
finsi donde xn−1 es una aproximación de una raíz de la fun-
X0←(1+A)/2. ción f (x). Para obtener una aproximación xn mejor de la
para K←1 hasta Nmax hacer raíz calculamos los ceros del polinomio de segundo grado
X1←X0-(X0*X0-A)/(2.*X0) anterior, es decir
si X0=X1 mod TOL entonces q
escribir (’LA RAIZ DE A ES’,X0) −f 0 (xn−1 ) ± (f 0 (xn−1 ))2 − 2f (xn−1 )f 00 (xn−1 )
devolver X1 xn = xn−1 +
f 00 (xn−1 )
sino
X0←X1 De las dos posibles raíces, nos quedamos con aquélla
finsi que sea más cercana a xn−1 . Dicha raíz será la aproxi-
finpara mación xn de la raíz de f (x) en la etapa n. En el caso
escribir(’No máximo de iterac. excedido’) en que f 00 (xn−1 ) = 0, calculamos xn por el método de
devolver CODIGO DE ERROR Newton-Raphson. En el caso en que no conozcamos
finalgoritmo analíticamente el valor de la primera y segunda derivada
de f (x), podemos utilizar las siguientes aproximaciones:
f (xn−2 )−f (xn−3 ) f (xn−1 )−f (xn−2 )
xn−2 −xn−3 − xn−1 −xn−2
f 00 (xn−1 ) ≈ 2 xn−3 −xn−1
8
f (xn−1 )−f (xn−2 ) f 00 (xn−1 )
f 0 (xn−1 ) ≈ xn−1 −xn−2 + 2 (xn−1 − xn−2 ) 1. f (x) = x − 2 : Para todos los métodos la solución
se alcanza en una iteración y no hay diferencia con
Como veremos posteriormente, la elección de las fór- respecto la precisión de la aritmética
mulas anteriores equivale a aproximar f (x) por la parábola
que pasa por los puntos (xn−3 , f (xn−3 )) , (xn−2 , f (xn−2 )) 2. f (x) = x2 − 2 :
y (xn−1 , f (xn−1 )), y calcular posteriormente las derivadas √
(a) M1 (float) : 3 iteraciones raiz ' 2 f (raiz) '
de dicha parábola.
10−8
√
(b) M2 (float) : 3 iteraciones raiz ' 2 f (raiz) '
Práctica 2 (El método de Newton-Raphson y la 10−8
secante) √
(c) M2 (float) : 4 iteraciones raiz ' 2 f (raiz) '
Implementar en C++ el método de Newton-Raphson y el 10−8
√
de la secante teniendo en cuenta las siguientes posibili- (d) M1 (double) : 5 iteraciones raiz ' 2
dades : f (raiz) ' 10−16
√
1. Método 1 (M1) : Newton-Raphson conociendo la fun- (e) M2 (double) : 5 iteraciones raiz ' 2
ción y su función derivada como funciones independi- f (raiz) ' 10−16
√
entes (f) M2 (double) : 6 iteraciones raiz ' 2
f (raiz) ' 10−16
2. Método 2 (M2) : Newton-Raphson conociendo sólo la √
función. La derivada se calcula haciendo (g) M1 (long double) : 5 iteraciones raiz ' 2
f (raiz) ' 10−19
f (x + (x + 1)h) − f (x) √
f 0 (x) = (h) M2 (long double) : 5 iteraciones raiz ' 2
(x + 1)h
√ f (raiz) ' 10−19
donde h = u, siendo u la unidad de redondeo de la √
(i) M2 (long double) : 6 iteraciones raiz ' 2
aritmética f (raiz) ' 10−19
3. Método 3 (M3) : Método de la secante. Se dan 2
proximaciones y la derivada se calcula haciendo 3. f (x) = cos(x) + 1
9
Cálculo de las raíces de un polinomio. Teorema 4 (Método de Horner). Sea P (x) = an xn +
an−1 xn−1 + ...... + a0 , si definimos bk como
Los polinomios son un tipo particular de funciones que, por
su gran utilidad, requieren un análisis algo más detallado. bn = an
Nos ocuparemos sólo de las raíces reales de los polinomios,
aunque también hay que indicar que existen algoritmos bk = ak + bk+1 x0
versátiles para el cálculo de las raíces complejas, como,
por ejemplo, el método de Müller, visto anteriormente. entonces se verifica que
A menudo, los alumnos pueden tener la impresión de
P (x0 ) = b0
que los algoritmos y técnicas que se aprenden en una asig-
natura como análisis numérico les serán de poca utilidad en P 0 (x0 ) = bn xn−1 + bn−1 xn−2 + ........ + b1
0 0
el futuro. Mi experiencia como docente en esta disciplina
es que, con frecuencia, una vez terminada la carrera y en
el desarrollo de la actividad profesional, aparecen proble- Demostración Sea el polinomio Q(x) = bn xn−1 +
mas que, para su resolución, requieren el uso de alguna de bn−1 xn−2 + ..... + b1 . Veamos que se verifica que
las técnicas presentadas en esta asignatura. El siguiente
ejemplo es una buena prueba de ello. P (x) = (x − x0 )Q(x) + b0
10
Teorema 5 Sea un polinomio P (x) = an xn +an−1 xn−1 + Teorema 7 Entre dos raíces de una función derivable
...... + a0 con an 6= 0, entonces las raíces reales de P (x) f (x) hay una raíz de f 0 (x).
están en el intervalo
∙ ¸ Demostración Teorema de Rolle.
maxk=0,..,n−1 | ak | maxk=0,..,n−1 | ak |
−1 − ,1 +
| an | | an |
Teorema 8 La derivada k − ésima P k) (x) del polinomio
maxk=0,..,n−1 |ak |
Demostración Veamos que si |x| > 1 + |an | , P (x) = an xn + an−1 xn−1 + ......a0 es
entonces |P (x)| > 0. Efectivamente,
an n! n−k an−1 (n − 1) ! n−k−1 k!
n−1 P k) (x) = x + x +...+ak
X (n − k)! (n − k − 1)! 1
|P (x)| ≥ |an xn | − max |ak | |x|k =
k=0,,,n−1
k=0 Demostración Es inmediato, derivando sucesivamente el
n polinomio P (x).
1 − |x|
= |an | |x|n − max |ak | ≥
k=0,,,n−1 1 − |x|
Los dos resultados anteriores permiten aislar las posi-
n |x|n
≥ |an | |x| − max |ak | = bles raíces de P (x) de la forma siguiente: Si llamamos
k=0,,,n−1 |x| − 1 maxk=0,..,n−1 |ak |
Pmax a 1 + |an | , entonces las m raíces distintas
|x|n (|an | (|x| − 1) − maxk=0,,,n−1 |ak |)
= >0 x1 < x2 < .... < xm de P (x) están intercaladas con las
|x| − 1 raíces x01 < x02 < .... < x0m−1 de P 0 (x), es decir
Teorema 6 Sea un polinomio P (x) = an xn +an−1 xn−1 + Volviendo a aplicar este razonamiento sucesivamente
...... + a0 , entonces el número de raíces positivas es igual al sobre P 0 (x), P 00 (x), etc., para intercalar los ceros de una
número de cambios de signo en los coeficientes an , ......, a0 derivada con los ceros de la siguiente, podemos deducir
(saltando los posibles coeficientes nulos), o bien ese mismo el siguiente algoritmo para aislar todas las raíces de un
número menos un número par. Polinomio P (x):
11
100 100
y y
80 80
60 60
40 40
20 20
-3 -2 -1 1 2 3 -3 -2 -1 1 2 3
x x
Polinomio P (x) = x4 − x3 − 7x2 + x + 6 Polinomio P 000 (x) = 24x − 6
12
CALCULAMOS LOS FACTORIALES NECE- sino
SARIOS Y LO ALMACEMANOS EN F() retornar
F(0)=1. finsi
para K←− 1 hasta N hacer sino
F(K)=F(K-1)*K RP1=RP-PX/PPX
finpara si (RP1 ES IGUAL A RP MODULO TOL)
CALCULO INTERVALO INICIAL entonces
variable real PMAX←−ABS(A(0)) RP=RP1
para K←− 1 hasta N-1 hacer R(L)=0.
si (PMAX < ABS(A(K)) entonces retornar
PMAX=ABS(A(K) sino
finsi RP=RP1
finpara finsi
PMAX=PMAX/ABS(A(N))+1. finsi
PI(0)=-PMAX finhacer
PI(1)=-(A(N-1)*F(N-1))/(A(N)*F(N)) finalgoritmo
para K←2 hasta N hacer
PI(2)=PMAX
finpara
Problema 23 (2 puntos) Aislar en intervalos las raíces
CALCULO COEFICIENTES DEL POLINOMIO
del polinomio P (x) = 2x3 + 3x2 − 12x + 1.
DERIVADA
para K←2 hasta N hacer
PI(K)=PMAX
finpara INTERPOLACIÓN DE FUNCIONES I
para K←N-2 hasta 0 hacer
para L←0 hasta N-K hacer El problema general de la interpolación de funciones con-
AP(L)=A(L+K)*(F(K+L)/F(L)) siste en, a partir del conocimiento del valor de una función
finpara (y eventualmente de sus derivadas) en un conjunto finito
finpara de puntos, aproximar el valor de la función fuera de ese
CALCULAR LOS CEROS DE AP EN LOS INTER- conjunto finito de puntos.
VALOS PI()
para L← 1 hasta N-K hacer
PI(L)=RP(N-K,AP,PI(L-1),PI(L),TOL,R,L-1) Interpolación por polinomios de Lagrange.
finpara
PASAMOS LAS RAICES AL VECTOR R() Sea una función f (x) que conocemos en un conjunto finito
variable entera M←0 de valores {xi }i=0,..,N . Es decir, sabemos que f (xi ) =
para K← 1 hasta N hacer fi . El polinomio interpolador de Lagrange PN (x) de f (x)
si (R(K-1) ES IGUAL A 0) entonces en los puntos {xi }i=0,..,N , es el único polinomio de grado
R(M)=PI(K) M=M+1 menor o igual que N tal que
finsi
PN (xi ) = f (xi ) ∀i = 0, .., N
finpara
devolver(M) PN (x) se puede expresar en término de los denomina-
finalgoritmo dos polinomios base de Lagrange P i (x), definidos como:
ΠN
j6=i (x − xj )
RP(N,A,X1,X2,TOL,R,L) P i (x) =
ΠN
j6=i (xi − xj )
Algoritmo Cálculo raíz polinomio en un intervalo
R(L)=1. estos polinomios base tienen la propiedad fundamental
si (X1 ES IGUAL A X2) entonces siguiente ½
devolver(X1) 1 si i = j
P i (xj ) =
finsi 0 si i 6= j
RP=(X1+X2)/2.
Por tanto, el polinomio interpolador de Lagrange
para K← 1 hasta N hacer
puede expresarse como
EVALUAR POLINOMIO Y SU DERIVADA
POR EL METODO DE HORNER N
X
si (PPX ES IGUAL A 0.) entonces PN (x) = f (xi )P i (x)
si (PX ES IGUAL A 0.) entonces i=0
R(L)=0.
13
Ejemplo 5 Consideremos una función f (x) = ex , vamos Error de interpolación de Lagrange y polinomios
a interpolarla en los puntos x0 = 0, x1 = −1 y x2 = 1. de Chebychev.
Para calcular P2 (x), el polinomio interpolador de Lagrange
Evidentemente, al aproximar f (x) por el polinomio inter-
en estos puntos, calcularíamos los polinomios base:
polador PN (x) en un intervalo [a, b] se comete, en general,
un error de interpolación, que viene determinado por el
(x + 1)(x − 1) siguiente teorema.
P 0 (x) =
−1
x(x − 1) Teorema 10 Sea f (x) una función, y PN (x) su polinomio
P 1 (x) = interpolador de Lagrange en los puntos {xi }i=0,..,N ⊂ [a, b]
2
x(x + 1) y x ∈ [a, b], entonces
P 2 (x) =
2 f N +1) (ξ) N
f (x) − PN (x) = Π (x − xi )
siendo el polinomio interpolador: (N + 1)! i=0
w(t) = ΠNi=0 (t − xi )
En la siguiente figura comparamos la gráfica del poli-
nomio P2 (x) (trazo continuo) con la gráfica de la función f (x) − PN (x)
λ =
ex (trazo discontinuo) w(x)
φ(t) = f (t) − PN (t) − λw(t)
Ejemplo 6
La función φ(t) tiene al menos n + 1 ceros en los pun-
y4 tos xi y en el punto x. Por tanto, su función derivada φ0 (t)
tiene al menos n ceros repartidos entre los ceros de φ(t).
Análogamente, φ00 (t) tiene al menos n − 1 ceros y así suce-
3 sivamente hasta llegar a φN +1 (t), que tiene al menos 1
cero. Si llamamos ξ a dicho cero, obtenemos
2
φN +1 (ξ) = f N +1) (ξ) − λ(N + 1)!
1
de donde, despejando y sustituyendo λ por su valor, obten-
emos el resultado del Teorema.
-1.4-1.2 -1.0 -0.8 -0.6-0.4-0.2 0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4
x
Problema 25 (2 puntos) Calcular la expresión del er-
ror de interpolación al aproximar la función f (x) = sen(x)
en el intervalo [0, 2π] interpolando en los puntos 0, π2 , π y
3π
Problema 24 (2 puntos) Calcular el polinomio inter- 2 , y acotarlo superiormente.
polador de Lagrange P3 (x) de la función f (x) = sen(x) en
los puntos 0, π2 , π y 3π
2 . La cuestión que vamos a abordar en este apartado es,
en el caso en que queramos interpolar una función en un
intervalo [a, b], y que nosotros podamos elegir los valores de
Teorema 9 El polinomio interpolador de Lagrange es el interpolación xi , cómo elegirlos de tal forma que el error de
único polinomio de grado igual o inferior a N tal que interpolación sea mínimo. Para ello, elegiremos los puntos
xi tales que ΠN i=0 (x − xi ) sea lo más pequeño posible en
PN (xi ) = f (xi ) ∀i = 0, .., N
[a, b].
Demostración Sea P (x) un polinomio de grado inferior
o igual a N que verifique que P (xi ) = f (xi ) ∀i = 0, .., N.
Entonces, el polinomio Q(x) = P (x) − PN (x) es un poli- Teorema 11 Sea N ≥ 0, y un intervalo [a, b] Se consid-
nomio de grado inferior o igual a N que verifica que eran los puntos xi dados por
Q(xi ) = 0 y, por tanto, posee N + 1 raíces, lo cual es µ µ ¶¶
b−a 2i + 1
imposible, salvo que Q(x) sea identicamente igual a cero. xi = a + 1 + cos π i = 0, ..., N
2 2N + 2
Por tanto Q(x) ≡ 0 y P (x) = PN (x).
14
entonces Newton. El método consiste en ir calculando progresiva-
µ ¶N +1 mente los polinomios Pk (x) que interpolan la función en
b−a 1 los puntos x0 , ..., xk de la siguiente forma:
max | ΠN
i=0 (x − xi ) |= ≤
x∈[a,b] 2 2N
P0 (x) = a0
≤ max | ΠN ej ) |
j=0 (x − x
x∈[a,b] P1 (x) = P0 (x) + a1 (x − x0 )
P2 (x) = P1 (x) + a2 (x − x0 )(x − x1 )
para cualquier otra elección posible de valores de interpo-
ej .
lación x ...
PN (x) = PN −1 (x) + aN (x − x0 )(x − x1 )...(x − xN −1 )
Demostración La demostración para el intervalo [−1, 1]
se encuentra en [Ki-Ch] Pg. 292-294. La demostración A los coeficientes ak los denotamos por
para un intervalo cualquiera [a, b] se obtiene fácilmente ak = f [x0 , ..., xk ]
transformando el intervalo [−1, 1] en [a, b].
Por tanto, utilizando este resultado, el error de inter- Ejemplo 8 Vamos a interpolar la función f (x) = ex en
polación máximo viene determinado por: los puntos x0 = 0, x1 = 1 y x2 = 2.
µ ¶N+1 P0 (x) = 1
maxx∈[a,b] f N+1) (ξ) b−a
| f (x) − PN (x) |≤ P1 (x) = 1 + a1 x
(N + 1)!2N 2
Como P1 (1) debe ser igual a e, despejando obtenemos
Ejemplo 7 Se considera [a, b] = [0, 1] y N = 5 (es decir
6 puntos de interpolación). Los puntos de interpolación a1 = e − 1
dados por el teorema anterior son:
Por último
x0 = . 982 96 P2 (x) = P1 (x) + a2 x(x − 1)
x1 = . 853 55
Como P2 (2) debe ser igual a e2 , despejando obten-
x2 = . 629 41 emos
x3 = . 370 59 e2 − P1 (2)
a2 =
2
x4 = . 146 45
Por tanto, el polinomio P2 (x) lo expresamos como
x5 = 1. 703 7 × 10−2
e2 − 2e + 1
P2 (x) = 1 + (e − 1)x + x(x − 1)
2
15
Demostración En primer lugar, observamos que En la siguiente gráfica se muestra la diferencia ex −
f [xi , ..., xi+k ] indica, para cada Pk (x), el coeficiente que P3 (x) en el intervalo [0, 3] :
acompaña a la potencia xk en el polinomio interpolador
Pk (x) para los puntos xi , ..., xi+k . Como el polinomio in-
terpolador es único, f [xi , ..., xi+k ] no depende del orden en
que tomemos los puntos xi , ..., xi+k y, por tanto: y 0.1
donde -0.2
bj = f [xi+k , .., xi+k−j ]
Por la unicidad del polinomio interpolador obtenemos
que Pk (x) = Qk (x) y, por tanto
ak = f [xi , ....., xi+k ] = f [xi+k , ....., xi ] = bk
De nuevo, por la unicidad del polinomio interpolador, Problema 27 (2 puntos) Interpolar la función f (x) =
10
los coeficientes que acompañan a la potencia xk−1 en am- x2 +1 en los puntos x0 = −2, x1 = −1, x2 = 1, x3 = 2
bos polinomios coinciden y, por tanto: utilizando las diferencias de Newton y evaluar el polinomio
en x = 0 utilizando el algoritmo de Horner.
k−1
X k
X
ak−1 − ak xi+j = bk−1 − bk xi+j
j=0 j=1 Problema 28 (2 puntos) Calcular el polinomio inter-
polador de Lagrange P3 (x) de la función f (x) = sen(x) en
Despejando obtenemos
los puntos 0, π2 , π y 3π
2 utilizando las diferencias divididas
bk−1 − ak−1 de Newton.
ak =
xk+i − xi
Finalmente obtenemos el resultado del teorema, te-
niendo en cuenta que Problema 29 (3 puntos) Calcular el polinomio inter-
polador de Lagrange P3 (x) de la función f (x) = 2x en
ak−1 = f [xi , ...., xi+k−1 ] los puntos 0, 1, 3 y 4 utilizando las diferencias divididas de
bk−1 = f [xi+k ...., xi+1 ] = f [xi+1 ...., xi+k ] Newton. Expresar el polinomio tomando en primer lugar
x0 = 0, x1 = 1, x2 = 3 y x3 = 4 y, en segundo lugar,
x0 = 4, x1 = 3, x2 = 1 y x3 = 0.
Ejemplo 9 Sea f (x) = ex , si interpolamos f (x) en los
puntos x0 = 0, x1 = 1, x2 = 2, x3 = 3, obtenemos el Problema 30 (3 puntos) Dada una función f (x) y una
polinomio interpolador de la siguiente forma: secuencia de valores xn , aproximar f (x) por la parábola
f [0, 1] = e1 − 1 que pasa por los puntos (xn−1 , f (xn−1 )) , (xn−2 , f (xn−2 ))
y (xn−3 , f (xn−3 )). Calcular posteriormente las derivadas
f [1, 2] = e2 − e1
del polinomio y comprobar que coinciden con las fórmu-
f [2, 3] = e3 − e2 las dadas en el método de Müller para el cálculo de las
e2 − 2e + 1 derivadas f 00 (xn−1 ) y f 0 (xn−1 ).
f [0, 1, 2] =
2
e3 − 2e2 + e1 Programa 7 Pseudocódigo donde se definen las fun-
f [1, 2, 3] =
2 ciones IDIFNEWTON, que a partir del vector X(0 : N ) de
e3 − 3e2 + 3e1 − 1 puntos de interpolación y el vector F (0 : N ) de valores de
f [0, 1, 2, 3] =
6 la función f (x) en los puntos de interpolación, devuelve el
Por tanto el polinomio interpolador de Lagrange es: vector A(0 : N ) de coeficientes de diferencias divididas que
definen el polinomio de Lagrange (A(K) = f [x0 , x1 , .., xK ]
e2 − 2e + 1 ), y la función EVDIFNEWTON(A,X,X0,N) que a partir
P3 (x) = 1 + (e − 1) x + x(x − 1) +
2 de los coeficientes dados por el vector A(0 : N ) y el con-
e3 − 3e2 + 3e1 − 1 junto de puntos de interpolación, devuelve el valor de la
x(x − 1)(x − 2) evaluación del polinomio de Lagrange en el punto X0.
6
16
0
FUNCTION IDIFNEWTON(A,X,F,N) de ex para x0 ∈ [0, 1]. Utilizando como puntos de interpo-
Algoritmo Cálculo polinomio interpolador por difer- lación los asociados a los polinomios de Chebychev:
encias de Newton µ µ ¶¶
1 2i + 1
vector real B de dimensión N+1 xi = 1 + cos π i = 0, ..., N
2 2N + 2
para K← 0 hasta N hacer
B(K)=F(K) obtenemos que el error relativo verifica que:
finpara 0 µ ¶N+1
| ex − PN (x) | e 1
A(0)=F(0) ≤
ex0 (N + 1)!2N 2
para K← 1 hasta N hacer
para L←0 hasta N-K hacer Para N = 6, el error relativo es menor que 6.6 × 10−8
si (X(K+L).EQ.X(L)) entonces y, por tanto, del mismo orden que la unidad de redondeo
devolver(1) u en una aritmética de 32 bits. Asi, tomando un poli-
finsi nomio de grado N = 6, es decir 7 puntos de interpolación,
B(L)=(B(L+1)-B(L))/(X(K+L)-X(L)) obtenemos ya la mejor aproximación posible de ex en el
finpara intervalo [0, 1] en una aritmética de 32 bits.
A(K)=B(0)
finpara Práctica 3 (Aproximación de ex )
devolver(0)
Crear una función en C que devuelva el valor de ex con
finalgoritmo
x ∈ [0, 1] utilizando el polinomio de Lagrange P6 (x) que
interpola a ex en los puntos:
FUNCTION EVDIFNEWTON(A,X,X0,N) µ µ ¶¶
1 2i + 1
Algoritmo Evaluar Polinomio interpolador xi = 1 + cos π i = 0, ..., 6
2 14
EVDIFNEWTON=A(N)
para K=N-1 hasta 0 hacer Comprobar que el polinomio esta bien construido, es
EVDIFNEWTON=EVDIFNEWTON*(X0- decir que P6 (xi ) = exi para todos los xi . Introducir por
X(K))+A(K) teclado un valor x, evaluar y mostrar P6 (x) y ex . Utilizar
finpara x = 0, 1, 0.5, 2 y 3.
finalgoritmo
Nota: Utilizar las funciones IDIFNEWTON(.), que cal-
cula el polinomio interpolador a partir de los puntos y val-
ores de interpolación, y EVDIFNEWTON(.), que evalua
el polinomio interpolador en un punto ya implementadas
Implementación de funciones elementales.
en la librería correspondiente
Una vez definida una aritmética en precisión finita y las 4
operaciones básicas (suma, resta, multiplicación, división), Los resultados que se deben obtener son los siguientes
es necesario definir, a partir de estas operaciones, las fun- : Para los puntos de interpolación xi y para cualquier
ciones elementales que todos usamos, como son: la raíz precisión se obtiene
√
cuadrada x, las funciones trigonométricas: sen(x) cos(x) xi exi |exi − P6 (xi )|
y tan(x), la función ln(x), la función ex , la función xy , etc. 0.9874 2.6844 0
Las técnicas elementales para definir estas funciones con- 0.8909 2.4373 0
sisten en utilizar la interpolación polinómica, los desarrol- 0.7169 2.0481 0
los de Taylor y los algoritmos
√ de búsqueda de ceros (como 0.5 1.6487 0
vimos anteriormente para x). 0.2830 1.3271 0
0.109 1.1152 0
0.012 1.0126 0
Aproximación de la exponencial ex .
Para los puntos x = 0, 1, 0.5, 2 y 3 se obtiene
Un número real x siempre se puede expresar como x =
m + x0 , donde m es un número entero y x0 ∈ [0, 1]. Dado
Precisión double
que 0 x ex |ex − P6 (x)|
ex = em ex 0 1 4 × 10−8
podemos descomponer el cálculo de ex en el cálculo, por 0.5 1.6487 0
un lado, de em , donde al ser m un entero el cálculo es in- 1. 2.7182 6 × 10−8
mediato a partir de multiplicaciones sucesivas de potencias 2. 7.3890 6 × 10−3
naturales de e ó e−1 (si m<0), y por otro, en el cálculo 3. 20.085 3 × 10−1
No se aprecian diferencias apreciables en los resulta-
dos al cambiar la precisión de la aritmética
17
Aproximación de funciones trigonométricas Problema 31 (3 puntos) Aproximar la función sen(x)
en el intervalo [0, π4 ] utilizando el desarrollo de Taylor y
Utilizaremos como modelo las funciones f (x) = cos(x) y
calcular el valor de n a partir del cual la aproximación es
f (x) = sen(x). Puesto que estas funciones son 2π per-
la mejor posible dentro de una aritmética de 32 bits.
iódicas, utilizando algunas relaciones trigonométricas es
suficiente definir las funciones cos(x) y sen(x) en el in-
tervalo [0, π4 ] y a partir de ellas definir las funciones para
cualquier valor x (en radianes). Efectivamente, denotemos Problema 32 (2 puntos) Demostrar que, utilizando
por cos[0, π4 ] (x) y sen[0, π4 ] (x) a las funciones trigonométri- relaciones trigonométricas, es posible calcular las fun-
cas definidas sobre el intervalo [0, π4 ]. Podemos definir en- ciones sen(x) y cos(x) para cualquier x (en radianes), uti-
tonces las siguientes funciones: lizando únicamente su valor en el intervalo [0, π8 ].
½
cos[0, π4 ] (x) si x ≤ π4
cos[0, π2 ] (x) =
sen[0, π4 ] ( 2 − x) si x > π4
π
Problema 33 (3 puntos) Calcular los polinomios nece-
½ sarios para interpolar las funciones trigonométricas cos(x)
π
sen[0, π4 ] (x) si x ≤ 4 y sen(x) en el intervalo [0, π8 ] en una aritmética de 32 bits.
sen[0, π2 ] (x) = π π
cos[0, 4 ] ( 2 − x) si x >
π
4
½ π
cos[0, π2 ] (x) si x ≤ 2
cos[0,π] (x) = π
− cos[0, π2 ] (π − x) si x > 2 Aproximación de la función ln(x)
½ π
sen[0, π2 ] (x) si x ≤ 2 Como hemos visto anteriormente, un número x real en
sen[0,π] (x) = π
sen[0, π2 ] (π − x) si x > 2
una aritmética de precisión finita viene expresado habit-
½ ualmente como à t !
cos[0,π] (x) si x ≤ π X an
cos[0,2π] (x) = m
cos[0,π] (2π − x) si x > π x=2
½ n=1
2n
sen[0,π] (x) si x ≤ π
sen[0,2π] (x) = donde m es un número entero, a1 =
³P1 y para´n > 1 an = 0
−sen[0,π] (2π − x) si x > π t an
ó an = 1. Por tanto, el número n=1 2n es mayor o
El desarrollo en Serie de Taylor centrado en 0 del igual que 12 y menor que 1. Aplicando las propiedades del
cos(x) es: ln(x) obtenemos que
à t !
X an
x2 x4 x2n ln(x) = m ln(2) + ln
cos(x) u Pn (x) = 1. − + + .... + (−1)n 2n
2 4! (2n)! n=1
y el error máximo cometido por el desarrollo de Taylor en Dado que el número ln(2) es una constante que supon-
un punto x ∈ [0, π4 ] es dremos calculada anteriormente ( ln(2) ∼ = .6931471806),
podemos reducir el cálculo del ln(x) al rango de valores
(x)2n+1 1
2 ≤ x ≤ 1.
| Pn (x) − cos(x) |≤ sen(x)
(2n + 1)! Utilizaremos los puntos de interpolación generados
por los polinomios de Chebychev, que para el intervalo
La ventaja de utilizar el desarrollo de Taylor centrado [ 12 , 1] son:
en 0 es que las potencias impares de x no aparecen, lo que µ µ ¶¶
simplifica el cálculo numérico. El error relativo es 1 1 2i + 1
xi = + 1 + cos π i = 0, ..., N
2 4 2N + 2
| Pn (x) − cos(x) | (x)2n+1
≤ tan(x) Dado que ln(1) = 0, para minimizar el error relativo
cos(x) (2n + 1)!
añadiremos como punto interpolante xN +1 = 1. El error
Además, como tan(x) es creciente en [0, π4 ], el valor de interpolación relativo entre PN +1 (x) y ln(x) es:
máximo del error se encuentra en x = π4 . Por ejemplo, para
n = 5 obtenemos que el error relativo máximo cometido | ln(x) − PN +1 (x) | | (x − 1)ΠN
i=0 (x − xi ) |
= N +1
en x = π4 es del orden de | ln(x) | ξ (N + 2) | ln(x) |
¡ π ¢2∗5+1 donde ξ ∈ [ 12 , 1]. Además se tiene que en el intervalo [ 12 , 1]
π
tan( ) 4 = 1. 8 × 10−9
4 (2 ∗ 5 + 1)! |x−1|
≤1
| ln(x) |
Por tanto, si trabajamos con una aritmética de 32 bits,
cuya unidad de redondeo u es del orden de 10−8 , tenemos Por tanto:
que con n = 5 obtenemos una aproximación del cos(x) que µ ¶N +1
es la mejor posible dentro de esta aritmética y no tendría | ln(x) − PN +1 (x) | 2N +1 1 1
≤
sentido aumentar el valor de n. | ln(x) | (N + 2) 4 2N
18
Para N = 10 el error máximo es 3. 973 6 × 10−8 , que b, y con ello habremos obtenido un sistema equivalente
es menor que la unidad de redondeo u y, por tanto, en una tal que la primera columna es cero de la diagonal hacia
aritmética de 32 bits tendríamos la mejor aproximación abajo. Volvemos ahora a hacer lo mismo para convertir
posible de la función ln(x). la segunda columna cero de la diagonal para abajo, y así
sucesivamente hasta llegar a la mencionada matriz A0 .
19
Problema 39 (2 puntos) Resolver por el método de U(K)=(B(Nrow(K))-C)/A(Nrow(K),K)
Gauss el siguiente sistema de ecuaciones: finpara
⎛ ⎞⎛ ⎞ ⎛ ⎞ para I=1 hasta N hacer
0 −1 2 u1 1 B(I)=U(I)
⎝ −1 2 −1 ⎠ ⎝ u2 ⎠ = ⎝ 0 ⎠ finpara
2 −1 0 u3 1 devolver(0)
finalgoritmo
20
Problema 40 (2 puntos) Demostrar que si A = B · B t • int an_descenso(const real **B,real *z,const real
(B triangular inferior) y |B| 6= 0, entonces A es simétrica *b,const int N): Resuelve un sistema triangular in-
y definida positiva. ferior, donde B es la matriz, b es el término inde-
pendiente y z es el vector donde devuelve la solución.
Devuelve 0 si termina bien y −1 en caso contrario.
Problema 41 (2 puntos) Descomponer la siguiente ma-
triz A por el método de Cholesky: • int an_remonte(const real **B,real *u,const real
⎛ ⎞ *z,const int N): Resuelve un sistema triangular su-
1 1 4 perior, donde B es la matriz, z es el término inde-
A=⎝ 1 5 6 ⎠ pendiente y u es el vector donde devuelve la solución.
4 6 26 Devuelve 0 si termina bien y −1 en caso contrario
• real an_error_sistema(const real **A,const real
De forma general, el algoritmo para calcular B es el *u,const real *b,const int N): Devuelve el error
siguiente cometido al resolver el sistema dado por la expresión
ErrorSistema de la sección anterior.
Para i =r0, ..., N − 1
³ P ´
• int an_cholesky(const real **A,const real *b,real
bi,i = ai,i − i−1 b2
k=0 i,k *u,const int N): Resuelve un sistema Au = b por el
Para j = i +³1, ..., N − 1 ´ método de Cholesky . Devuelve 0 si termina bien y
1
Pi−1
bj,i = bi,i aj,i − k=0 bj,k bi,k −1 en caso contrario.
Fin Para j
Hay que resolver los sistemas ejemplo que se dan a
Fin Para i
continuación y los ejemplos de dimensión 10, 100 y 1000
El interés de descomponer una matriz A por el método que se encuentran en el repositorio de la asignatura. Para
de Cholesky es que, a continuación, es muy sencillo resolver todos los ejemplos que tienen solución, su solución es el
el sistema de ecuaciones Au = b. Efectivamente, basta vector constante u = (1, 1, 1, ....), en todos lo casos hay
descomponer el sistema de la siguiente forma: que comparar con la solución que da el método de gauss
(ya implementado en an_lapack.c
Bz = b ⎛ ⎞⎛ ⎞ ⎛ ⎞
t
Bu = z 1 1 4 x 6
1. ⎝ 1 5 6 ⎠ ⎝ y ⎠ = ⎝ 12 ⎠
Ambos sistemas se resuelvan rápidamente haciendo 4 6 26 z 36
un remonte y un descenso. ⎛ ⎞⎛ ⎞ ⎛ ⎞
1 1 4 x 6
Nota: Normalmente, para evitar tener que almacenar dos 2. ⎝ 1 1 4 ⎠ ⎝ y ⎠ = ⎝ 12 ⎠
matrices, una para B y otra para B t , se almacena todo 4 4 17 z 36
en una única matriz B, simétrica, escribiendo en la parte ⎛ ⎞⎛ ⎞ ⎛ ⎞
2 −1 0 x 1
triangular superior de B la parte correspondiente a B t . 3. ⎝ −1 2 −1 ⎠ ⎝ y ⎠ = ⎝ 0 ⎠
0 −1 −4 z −5
Problema 42 (2 puntos) Calcular el número de opera-
ciones necesarias para resolver un sistema por el método
de Cholesky. Los resultados que se deben encontrar son los sigu-
ientes
21
Matriz 100x100 (Precisión float) Para i = 2, .., N − 1
Método Gauss : ErrorSistema=3 × 10−5 mi−1 = ci−1
Método Cholesky : ErrorSistema=3 × 10−5 li = ai − mi−1 ui−1
ui = blii
Matriz 1000x1000 (Precisión float) Fin Para
Método Gauss : ErrorSistema=4 × 10−3 mN−1 = cN−1
Método Cholesky : ErrorSistema=4 × 10−3 lN = aN − mN −1 uN −1
El caso de sistemas de ecuaciones con matrices A tridi- La manera habitual de aproximar la derivada de una fun-
agonales posee una forma especialmente simple de factor- ción f (x) en un punto xi consiste en utilizar el desarrollo
ización. Vamos a descomponer A en el producto de dos de Taylor centrado en xi :
matrices triangulares de la forma siguiente: f 0 (xi ) f N) (xi )
⎛ ⎞ f (x) = f (xi ) + (x − xi ) + ... + (x − xi )N + ...
a1 b1 . 0 1! N!
⎜ c1 a2 . 0 ⎟ Si tomamos un punto xj 6= xi , truncamos el desarrollo
⎜ ⎟=
⎝ 0 . . bN −1 ⎠ de Taylor y despejamos, obtenemos la siguiente expresión:
0 . cN −1 aN
f (xj ) − f (xi )
⎛ ⎞⎛ ⎞ f 0 (xi ) ≈ + O (|xj − xi |)
l1 0 . 0 1 u1 . 0 xj − xi
⎜ m1 l2 . 0 ⎟ ⎜ 0 ⎟
⎜ ⎟⎜ 0 1 . ⎟ donde O (|xj − xi |) indica, básicamente, que el error
⎝ 0 . . 0 ⎠ ⎝ 0 . . uN −1 ⎠
cometido es una suma de potencias de |xj − xi | en la que
0 . mN −1 lN 0 . 0 1
la potencia más pequeña es 1. Se denomina orden de la
Los vectores mi , li, y ui se calculan utilizando el es- aproximación a la potencia más pequeña que aparece en
quema: el término del error. Por lo tanto, en este caso, diremos
que el orden de aproximación es 1. Si xj > xi , entonces la
l1 = a1 derivada se calcula hacia adelante, mientras que si xj < xi ,
u1 = bl11 la derivada se calcula hacia atrás.
22
Ejemplo 11 Veremos en este ejemplo como, cuanto más Problema 49 (3 puntos) Dados 3 puntos distintos
próximo esté el punto xj al punto xi , mejor será el valor xl , xi , xr , calcular el polinomio de Lagrange que interpola
aproximado de la derivada. Consideremos la función a f (x) en esos 3 puntos, calcular la derivada de ese poli-
f (x) = x3 . La derivada de f (x) en x = 1 es f 0 (1) = 3 Si nomio en xi , y comprobar que da la misma fórmula que la
tomamos xi = 1 y xj = 2 en la fórmula anterior, obten- presentada en el problema anterior.
emos la aproximación
Problema 50 (2 puntos) Calcular una aproximación de
23 − 13
0 la derivada tercera f 000 (xi ) de una función f (x) en un
f (1) ≈ =7
2−1 punto xi , utilizando f (xi ), f (xi + h), f (xi − h), f (xi − 2h).
Si tomamos ahora xj = 1.1, obtenemos
1.13 − 13
f 0 (1) ≈ = 3. 31 Problema 51 (3 puntos) Dados 3 puntos, demostrar
1.1 − 1
que la fórmula
que está mucho más próximo al valor real.
f (xr )−f (xi ) f (xi )−f (xl )
xr −xi − xi −xl
f 00 (xi ) ≈ 2
Problema 47 (2 puntos) Calcular analítica y numéri- xr − xl
camente la matriz gradiente en el punto (1, 1) (utilizar aproxima la derivada segunda de f (x) en xi con un orden
h = 0.1) de la función: de aproximación de 1.
½ 2
x + y2 − 1
f (x, y) =
x−y
Problema 52 (2 puntos) Considerar en el problema an-
terior que xl = xi − h, y xr = xi + h. Deducir como queda
Problema 48 (3 puntos) Dados 3 puntos distintos la fórmula anterior para aproximar la derivada segunda, y
xl , xi , xr , demostrar que la fórmula demostrar que, en este caso, el orden de aproximación es
(xi − xl ) f (xxrr)−f (xi )
+ (xr − xi ) f (xxi i)−f (xl ) 2.
0 −xi −xl
f (xi ) ≈
xr − xl
aproxima la derivada de f 0 (xi ) con un orden de aproxi- Problema 53 (3 puntos) Dados 3 puntos xl < xi < xr ,
mación de 2. calcular el polinomio de Lagrange que interpola a f (x) en
esos 3 puntos, calcular la derivada segunda de ese poli-
Nótese que, si xr = xi + h, y xl = xi − h, entonces la nomio en xi , y comprobar que da la misma fórmula que
fórmula anterior resulta utilizando los desarrollos de Taylor.
f (xi + h) − f (xi − h) Problema 54 (2 puntos) Calcular una aproximación de
f 0 (xi ) =
2h la derivada primera y segunda de una función f (x) en x =
que es una conocida fórmula de diferencias centradas. 0, teniendo en cuenta que f (0) = 1, f (1) = 0, f (4) = 9
23
5. F (x + h, y + l) = F + hFx + lFy + 12 (h2 Fxx + 2hlFxy +
¡ ¢3 Ahora bien, si rotamos 45 grados, la función inicial en
l2 Fyy ) + O( h2 + l2 2 )
torno al punto (hi0 , hj0 ), obtenemos como imagen:
6. F (x − h, y − l) = F − hFx − lFy + 12 (h2 Fxx + 2hlFxy +
¡ ¢3 1 1 0
l2 Fyy ) + O( h2 + l2 2 ) 1 0 0
7. F (x + h, y − l) = F + hFx − lFy + 12 (h2 Fxx − 2hlFxy + 0 0 0
¡ ¢3
l2 Fyy ) + O( h2 + l2 2 ) Si calculamos de nuevo ∆F en el mismo punto obten-
emos:
8. F (x − h, y + l) = F − hFx + lFy + 12 (h2 Fxx − 2hlFxy + 1 2
¡ ¢3 ∆F (hi0 , hj0 ) = γ 2 + (1 − γ) 2
l2 Fyy ) + O( h2 + l2 2 ) 2h h
Por lo tanto, si queremos que ambos valores de ∆F
coincidan, debemos elegir γ = 23 . Hablando en términos
Prestaremos particular atención a dos operadores de teoría de la señal, el calculo de ∆F nos llevaría a con-
diferenciales que se utilizan con frecuencia en la práctica: volucionar la imagen con la siguiente máscara:
El gradiente ∇F (x, y) = (Fx (x, y), Fy (x, y)), que es el vec- 1 1 1
tor de derivadas parciales, y el Laplaciano ∆F (x, y) = 1 3
1
3 3
Fxx (x, y) + Fyy (x, y). Utilizaremos la notación Fi,j ∼ = 3 − 83 1
3
h2 1 1 1
F (hi, lj). 3 3 3
24
Problema 57 (3 puntos) Demostrar que las máscaras Demostración [Hu] Pg. 205-209
¡ √ ¢ ¡ √ ¢
− ¡√
2− 2¢ 0 2− 2 ¢
¡√ Ejemplo 13 A continuación se exponen algunos valores
1
Fx = −2¡ 2 √
− 1¢ 0 2¡ 2 √ − 1¢ de raíces x̃k y coeficientes w̃k en función del grado del
4h
− 2− 2 0 2− 2 polinomio Ln (x) :
¡ √ ¢ ¡√ ¢ ¡ √ ¢ n x̃k w̃k
− 2− 2 −2 2 − 1 − 2− 2 2 0.5773502692 1.
1
Fy = 0√ ¢ ¡√ 0 ¡ 0√ ¢ −0.5773502692 1
4h ¡ ¢
2− 2 2 2−1 2− 2 3 0.7745966692 0.5555555556
dan lugar a una discretización del gradiente tal que su 0. 0.8888888889
norma euclídea es invariante por rotaciones de 45 grados. − 0.7745966692 0.5555555556
4 0.8611363116 0.3478548451
Problema 58 (2 puntos) Calcular una aproximación 0.3399810436 0.6251451549
del gradiente de una función F (x, y) en el punto (x, y) = −0.3399810436 0.6251451549
(0, 0) conociendo los siguientes valores: F (0, 0) = 0, − 0.8611363116 0.3478548451
F ( 12 , 0) = 12 , F (− 12 , 0) = − 12 , F (0, 12 ) = − 12 , F (0, − 12 ) =
1 1 1 1 1 1 1
2 , F ( 2 , 2 ) = 0, F (− 2 , − 2 ) = 0, F (− 2 , 2 ) = −1,
1 1
F ( 2 , − 2 ) = 1. Problema 59 (2 puntos) Aproximar el valor de la sigu-
iente integral, utilizando las fórmulas de Legendre para
n = 2 y n = 3: Z 1
Integración Numérica ¡ 3 ¢
x − x4 dx
Métodos de Cuadratura de Gauss −1
Sea f (x) una función definida en un intervalo [a, b], vamos ¿Cuál es el valor exacto de la integral?
a aproximar el valor de la integral de f (x) en [a, b] uti-
lizando la evaluación de f (x) en ciertos puntos de [a, b]. Problema 60 (2 puntos) Se consideran, para el inter-
Es decir, una fórmula de integración numérica se puede valo [−1, 1], los puntos x0 = −0.5, x1 = 0 y x2 = 0.5 y
escribir como los pesos w0 = w1 = w2 = 2/3. Estos puntos y estos pe-
Z b XN
sos se utilizan para aproximar la integral de una función
f (x)dx ≈ wk f (xk ) en [−1, 1]. Usar esta fórmula de integración para calcular
a k=1 númericamente la siguiente integral y compararla con el
donde xk representa los puntos de evaluación de f (x) y wk resultado análitico (exacto).
el peso de cada punto de evaluación. Z π2
cos(x)dx
Definición 2 Una fórmula de integración numérica se de- −π
2
25
Cuando el intervalo [a, b] es infinito, es decir, a = −∞ Teorema 16 Si x̃k son los ceros del polinomio de La-
o b = ∞, hay que emplear otros métodos para aproximar guerre y definimos
las integrales. En el caso [a, b] = (−∞, ∞), se utilizan los Z ∞
ceros de los denominados polinomios de Hermite, definidos Πi6=k (x − x̃i) −x
w̃k = e dx
como H0 (x) = 1, H1 (x) = 2x, y 0 Πi6=k (xk − x̃i)
Hn (x) = 2xHn−1 (x) − 2(n − 1)Hn−2 (x) entonces la fórmula de integración numérica generada por
los puntos x̃k y los pesos w̃k es exacta hasta orden 2N − 1
para n ≥ 2. En este caso, la fórmula de integración para el intervalo (0, ∞).
numérica aproxima la integral de la siguiente forma:
Z N Demostración [Hu] Pg. 211-213
∞ X
−x2
f (x)e dx ≈ wk f (xk )
−∞ k=0
Ejemplo 15 A continuación se exponen algunos valores
Teorema 15 Si x̃k son los ceros del polinomio de Hermite de raíces x̃k y coeficientes w̃k en función del grado del
y definimos polinomio Ln (x) :
Z ∞ n x̃k w̃k
Πi6=k (x − x̃i) −x2
w̃k = e dx 1 1. 1.
−∞ Πi6=k (xk − x̃i)
2 0. 585 786 438 0. 853 553 390 3
entonces la fórmula de integración numérica generada por 3. 414 213 562 0. 146 446 609 3
los puntos x̃k y los pesos w̃k es exacta hasta orden 2N − 1
para el intervalo (−∞, ∞).
Demostración [Hu] Pg. 213-214 Problema 66 (2 puntos) Calcular de forma exacta la
integral Z ∞
¡ 3 ¢
Ejemplo 14 A continuación se exponen algunos valores x − x2 e−x dx
de raíces x̃k y coeficientes w̃k en función del grado del 0
26
Fórmula del rectángulo
Z xk+1 µ ¶ Z xk+1
xk + xk+1 f (x)dx ≈ f (xm )(xk+1 − xk )+
f (x)dx ≈ f (xk+1 − xk ) xk
xk 2 µ ¶
f (xk+1 ) − 2f (xm ) + f (xk ) xk+1 − xk
+ =
3 2
Esta fórmula se obtiene fácilmente aproximando f (x) ³ ´
por el polinomio interpolador en x = xk +x k+1
. Es decir: f (xk+1 ) + f (xk ) + 4f xk +x 2
k+1
2 = (xk+1 − xk )
6
Z xk+1 Z xk+1 ¶µ
xk + xk+1 Aunque estas fórmulas sean menos precisas que las de-
f (x)dx ≈ f dx = ducidas a partir de los ceros de los polinomios de Legendre,
xk xk 2
µ ¶ tienen la ventaja de que pueden ser utilizadas cuando sólo
xk + xk+1
= f (xk+1 − xk ) conocemos la función a integrar en un conjunto equiespa-
2 ciado de puntos, es decir, cuando sólo conocemos f (x) en
Fórmula del trapecio un conjunto de la forma xk = x0 + hk. Nótese que, en este
caso, la integración a partir de los ceros de los polinomios
Z xk+1
f (xk+1 ) + f (xk ) de Legendre no puede utilizarse.
f (x)dx ≈ (xk+1 − xk )
xk 2
Problema 68 (2 puntos) Aproximar, por el método de
Simpson, la integral
Esta fórmula se deduce aproximando f (x) por su poli- Z 1
¡ 3 ¢
nomio interpolador en xk y xk+1 . Es decir: x − x4 dx
−1
Z xk+1 utilizando únicamente el valor de la función en los puntos:
f (x)dx ≈ −1, − 12 , 0, 12 y 1.
k x
Z xk+1 µ ¶
x − xk+1 x − xk
≈ f (xk ) + f (xk+1 ) dx =
xk xk − xk+1 xk+1 − xk Práctica 5 (Implementación Método de Integración de
f (xk+1 ) + f (xk ) Simpson).
= (xk+1 − xk )
2
Crear una función en C++ donde se implemente el método
Fórmula de Simpson de Simpson. Los parámetros de la función serán: Los
³ ´ límites del intervalo de integración en precisión real y el
Z xk+1 f (xk+1 ) + f (xk ) + 4f xk +x k+1
número de subintervalos en los que se dividirá el intervalo
2
f (x)dx ≈ (xk+1 − xk ) inicial. La función a integrar se definirá aparte (como en
xk 6
el caso de la práctica 1). La función devolverá el valor
Esta fórmula se deduce aproximando f (x) por su de- de la integral obtenido. Probar el método para aproxi-
sarrollo en serie de Taylor centrado en el punto xm = mar las siguientes integrales con diferentes valores para el
xk +xk+1
. Es decir: parámetro de número de subintervalos y comprobar que el
2
resultado se aproxima al valor exacto de la integral.
Z xk+1
Rπ
f (x)dx ≈ 1. 0
sin(x)dx = 2
xk
Z µ
xk+1 ¶
f 00 (xm )
≈ f (xm ) + f 0 (xm )(x − xm ) + (x − xm )2 dx = 2. R 1 √ x dx = 1
xk 2 0 1−x2
00
µ ¶3
f (xm ) xk+1 − xk
= f (xm )(xk+1 − xk ) + R∞ 2
3 2 3. −∞ √12π e−x /2 dx = 1
27
R1
Integral √ x dx (se toma b = 0.9999999) donde m y n determinan el grado de los polinomios. De
0 1−x2
o
N interv. Error estas relaciones se puede deducir, en general, los valores de
float 219 10−4 los puntos y los pesos. Un caso particularmente sencillo
double 224 10−4 es cuando Ω es un rectángulo [a, b]x[c, d]. En este caso,
long double 224 10−4 podemos escribir:
219 Z Z b Z d
R∞ 2
xm y n dxdy = xm dx y n dy
Integral √1 e−x /2 dx (se toma [-10,10]) Ω a c
−∞ 2π
o
N interv. Error y, por tanto, la exactitud en dimensión 2 la podemos de-
float 25 10−7 ducir a partir de la exactitud en dimensión 1, que, en este
double 26 0 caso, viene dada, como hemos visto anteriormente, por los
long double 26 0 polinomios de Legendre.
Se puede también implementar una versión del al- Problema 69 (3 puntos) Deducir la fórmula de inte-
goritmo de Simpson que calcule de forma automática el gración numérica sobre el rectángulo [−1, 1]x[−1, 1] resul-
número de intervalos. El siguiente pseudocódigo indica tante de aplicar la integración numérica en una variable
una manera de hacerlo en los intervalos [−1, 1], y [−1, 1].
Programa 9 Algoritmo iterativo para calcular la integral
por el método de Simpson. Los parámetros son la función Problema 70 (2 puntos) Deducir la fórmula de inte-
a integrar, el intervalo, una tolerancia T OL. gración numérica sobre un rectángulo [a, b]x[c, d] resultante
de aplicar la integración numérica en una variable en los
Algoritmo Simpson iterativo intervalos [a, b], y [c, d].
variable entera N=1 (Número intervalos)
variable real integral= Cálculo Integral de Simp-
son para N intervalos
variable real error=TOL+1 (Número intervalos) Problema 71 (2 puntos) Calcular de forma exacta la
mientras (error>TOL) integral Z 1Z 1
N=N*2
x2 y 2 dxdy
variable real integral2= Cálculo Integral de −1 −1
Simpson para N intervalos
utilizando integración numérica.
error=an_distancia(integral,integral2)
integral=integral2
fin mientras K←0 hasta N hacer Nótese que, al igual que en dimensión 1, también
finalgoritmo podemos extender los resultados al caso en que los inter-
valos sean infinitos, de tal forma que podemos construir
fácilmente fórmulas de integración numérica para las inte-
Integración numérica en dimensiones superiores. grales Z Z
∞ ∞
2
−y 2
En esta sección, estudiaremos las técnicas de integración F (x, y)e−x dxdy
−∞ −∞
numérica sobre dominios Ω de dimensión superior a 1. Para
y Z Z
simplificar la exposición, supondremos que la dimensión es ∞ ∞
2. Es decir, pretendemos aproximar F (x, y)e−x−y dxdy
Z 0 0
F (x, y)dxdy
Ω
Aproximaremos esta integral a través de la fórmula Problema 72 (2 puntos) Calcular una aproximación
numérica: numérica de la integral
Z X Z ∞Z 2
F (x, y)dxdy ≈ wij F (xi , yj ) x
y2
dxdy
Ω i,j −∞ 0 1 + e
donde debemos elegir los puntos (xi , yj ) y los pesos utilizando la evaluación de F (x, y) en 4 puntos.
wij . Para realizar esta elección se utilizan técnicas de
cuadratura. Es decir, se exige que la fórmula sea exacta
para polinomios en x e y de hasta un cierto grado: En el caso de que Ω sea un triángulo, el cálculo es
Z X un poco más complejo. Consideremos un triángulo T
xm y n dxdy = wij (xi )m (yj )n de vértices (x0 , y0 ), (x1 , y1 ), (x2 , y2 ). Denotaremos por
Ω i,j
28
AREA(T ) el área del triángulo T. En función de los vér- Problema 74 (2 puntos) Calcular una aproximación
tices, el área viene determinada por numérica de la integral
⎛¯ ¯⎞ Z
¯ 1 1 1 ¯¯
1 ¯ x2 ydxdy
AREA(T ) = ABS ⎝¯¯ x0 x1 x2 ¯¯⎠ Ω
2 ¯ y0 y1 y2 ¯
donde Ω es el triángulo de vértices (0, 0), (2, 0) y (0, 2),
A continuación presentaremos algunas fórmulas de in- utilizando 1 punto, 3 puntos y 4 puntos.
tegración numérica sobre triángulos utilizando diferentes
números de puntos
ANÁLISIS NUMÉRICO MATRICIAL II
Integración sobre triángulos utilizando un
En esta sección veremos algunos aspectos más avanzados
punto.
del análisis matricial, incluyendo técnicas iterativas de res-
Z µ ¶
x0 + x1 + x2 y0 + y1 + y2 olución de sistemas de ecuaciones y cálculo de autovalores.
∼
F (x, y) = F , AREA(T )
T 3 3
Normas de vectores y matrices.
Integración sobre triángulos utilizando 3 pun-
tos.
Z 3
X Definición 4 Una norma k . k es una aplicación de un
F (x, y) ∼
= AREA(T ) xk , yek )
wk F (e espacio vectorial E en R+ ∪ {0} que verifica las siguientes
T k=1 propiedades:
donde
• k x k= 0 si y sólo si x = 0
1
w1 = w2 = w3 = • k λx k=| λ |k x k para todo λ ∈ K y x ∈ E
3
x0 + x1 y0 + y1
e1
x = ye1 = • k x + y k≤k x k + k y k para todo x, y ∈ E.
2 2
x0 + x2 y0 + y2
e2
x = ye2 =
2 2 Básicamente, una norma mide la magnitud o tamaño
x2 + x1 y2 + y1
e3
x = ye3 = de un vector x. Por ejemplo, en el espacio vectorial de los
2 2
números reales, la norma ”natural” es el valor absoluto.
Integración sobre triángulos utilizando 4 pun- Sin embargo, cuando trabajamos en varias dimensiones,
tos. esto es, x = (x1 , x2 , ...., xN ), existen múltiples formas de
Z 4
X definir una norma. La definición más utilizada es la de-
F (x, y) ∼
= AREA(T ) xk , yek )
wk F (e
T nominada norma p, donde p es un número real positivo,
k=1
que viene definida por
donde
ÃN ! p1
25 27 X
w1 = w2 = w3 = w4 = − k x kp = | xi | p
48 48
6x0 + 2x1 + 2x2 6y0 + 2y1 + 2y2 i=1
e1
x = ye1 =
10 10 Un caso particularmente interesante es p = 2, que
2x0 + 6x1 + 2x2 2y0 + 6y1 + 2y2
e2
x = ye2 = corresponde a la norma euclídea. Otro caso interesante
10 10 es aquél que se produce cuando hacemos tender p hacia
2x0 + 2x1 + 6x2 2y0 + 2y1 + 6y2
e3
x = ye3 = infinito, lo que da lugar a la denominada norma infinito,
10 10 definida por
x0 + x1 + x2 y0 + y1 + y2
e4
x = ye4 = k x k∞ = max | xi |
3 3 i
P (x, y) = ax + by + c.
29
Problema 77 (2 puntos) Tomar N = 2 y dibujar el Definición 6 Un autovalor de A es un número λ real o
lugar geométrico de los vectores x = (x1 , x2 ) que verifican complejo tal que existe un vector x, denominado autovec-
que tor, tal que
Ax = λx
1. k x k1 < 1
2. k x k2 < 1
3. k x k∞ < 1 Definición 7 Se denomina polinomio característico P (λ)
de la matriz A, al polinomio dado por el determinante
Problema 78 (2 puntos) Tomar N = 2 y demostrar la P (λ) =| A − λI |
siguiente desigualdad:
k x k∞ ≤k x k2 ≤k x k1
La propiedad fundamental que verifica una norma ma- Demostración: Si λ es un autovalor de A, entonces existe
tricial definida de esta forma es la siguiente: un autovector x tal que Ax = λx, por tanto
k Ax k k λx k
= = |λ| ≤k A k
Teorema 17 Sea A una matriz y k . k una norma vecto- kxk kxk
rial. Entonces, para cualquier vector x se verifica que
Lo que demuestra el teorema.
k Ax k≤k A k · k x k
k A k2 ≤ ρ(A)
A continuación veremos la relación que existe entre
Dado que el teorema anterior determina la desigual-
la norma de una matriz y sus autovalores. Empezaremos
dad en el otro sentido, tendríamos la igualdad, y por tanto
recordando algunos conceptos relacionados con los auto-
el resultado del Teorema. Sea x un vector cualquiera.
valores.
Puesto que A posee una base ortonormal de autovectores
30
xi , el vector x se podrá expresar como una combinación Problema 83 (2 puntos) Demostrar la siguiente igual-
lineal de autovectores, de la forma: dad:
ρ(t AA) = ρ(A ·t A)
x = η 1 x1 + η2 x2 + .. + η N xN
Al hacer Ax, y puesto que los xi son autovectores, Teorema 22 Sea A una matriz cualquiera, entonces
obtenemos que
Limn→∞ k An k= 0 ⇐⇒ ρ(A) < 1
Ax = η 1 λ1 x1 + η2 λ2 x2 + .. + η N λN xN
Demostración:[La-Th] Pg. 80.
Como los autovectores son ortonormales, se cumple
que
q Condicionamiento de una matriz.
k x k2 = (η 1 )2 + .. + (ηN )2 El condicionamiento de una matriz es un número que
q nos indica la ”bondad” o buen comportamiento numérico
2 2
k Ax k2 = (η1 λ1 ) + .. + (ηN λN ) de la matriz cuando se trabaja con ella numéricamente.
Para ilustrar de qué estamos hablando, veamos el sigu-
Y, por tanto,
iente ejemplo:
k Ax k2
≤ ρ(A)
k x k2 Ejemplo 16 Consideremos el siguiente sistema de ecua-
ciones
para cualquier vector x. En consecuencia, al tomar el ⎛ ⎞⎛ ⎞ ⎛ ⎞
supremo en x, la desigualdad se mantiene, lo que demues- 10 7 8 7 x 32
tra que ⎜ 7 5 6 5 ⎟ ⎜ y ⎟ ⎜ 23 ⎟
⎜ ⎟⎜ ⎟ ⎜ ⎟
k A k2 ≤ ρ(A) ⎝ 8 6 10 9 ⎠ ⎝ z ⎠ = ⎝ 33 ⎠
7 5 9 10 v 31
cuya solución es (1, 1, 1, 1). Vamos a considerar ahora el
mismo sistema, perturbando ligeramente el término inde-
Teorema 20 Si una matriz A de dimensión N xN es
pendiente:
simétrica, entonces todos sus autovalores son reales y,
además, sus autovectores forman una base ortonormal de ⎛ ⎞⎛ ⎞ ⎛ ⎞
RN . 10 7 8 7 x 32.1
⎜ 7 5 6 5 ⎟ ⎜ y ⎟ ⎜ 22.9 ⎟
⎜ ⎟⎜ ⎟=⎜ ⎟
Demostración: [La-Th] Pg. 53. ⎝ 8 6 10 9 ⎠ ⎝ z ⎠ ⎝ 33.1 ⎠
7 5 9 10 v 30.9
Problema 81 (2 puntos) Calcular los autovectores de La solución de este sistema es (9.2, −12.6, 4.5, −1.1).
la matriz ⎛ ⎞ Como podemos observar, a pesar de que la perturbación
1 1 0 del sistema es del orden de 0.1, la perturbación de la solu-
⎝ 1 1 0 ⎠
ción del sistema puede llegar a ser del orden de 13.6.
0 0 2
Consideremos de forma genérica un sistema de ecua-
y determinar una base ortonormal de R3 compuesta por
ciones de la forma
autovectores de A.
Au = b
y, al mismo tiempo, el sistema de ecuaciones perturbado
Teorema 21 Sea A una matriz cualquiera, entonces
p A (u + δu) = b + δb
• k A k2 = ρ(t AA)
P Nosotros queremos controlar el error relativo en la
• k A k1 = maxj ( i | aij |) solución del sistema a partir del error relativo en el tér-
³P ´ mino independiente b. Es decir, queremos encontrar una
• k A k∞ = maxi j | aij | estimación del tipo
31
Teorema 23 Si definimos Método de Jacobi.
(app − aqq )
sin 2α + apq cos 2α = 0
2
32
Es decir, Problema 89 (3 puntos) Dentro del método de Jacobi
cos 2α (aqq − app ) para el cálculo de autovalores, demostrar las igualdades
cot(2α) = = siguientes:
sin 2α 2apq
a0pq = 0
Ejemplo 17 Consideremos la matriz a0pp = app − tan(α)apq
⎛ ⎞ a0qq = aqq + tan(α)apq
2 −1 0
⎝ −1 2 −1 ⎠ a0pj = apj cos α − aqj sin α j=
6 p, q
0 −1 2 a0qj = apj sin α + aqj cos α j=6 p, q
Para convertir en 0 el elemento a12 = −1 de la matriz,
debemos elegir α tal que
(a22 − a11 )
cot(2α) = =0 Veamos ahora la convergencia del método de Jacobi
2a12
para el cálculo de autovalores.
De donde α = − π4 . Por tanto, la matriz R12 es
⎛ √1 ⎞
− √12 0
2 Teorema 24 Sea una matriz A simétrica. Sea A1 = A,
R12 = ⎝ √1 2
√1
2
0 ⎠ y sea Ak la matriz transformada de Ak−1 , haciendo cero
0 0 1 el elemento no diagonal mayor en módulo de la matriz
t
y al hacer la operación R12 AR12 obtenemos Ak−1 , entonces los elementos diagonales de la matriz Ak
⎛ ⎞ convergen (k → ∞) hacia los autovalores de la matriz A.
1.0 0 −. 707 107 Además los elementos no diagonales de A convergen hacia
⎝ 0 3.0 −. 707 107 ⎠ 0.
−. 707 107 −. 707 107 2.0
Demostración: [La-The] Pg. 576-577.
Para evitar tener que evaluar funciones trigonométri- Pseudocódigo del Método de Jacobi para el Cálculo
cas, que son costosas computacionalmente, y simpli-
de autovalores.
ficar el algoritmo, podemos apoyarnos en las igualdades
Los parámetros de entrada son la matriz simétrica
trigonométricas dadas en el siguiente problema: A, su dimensión DIM, el número máximo de iteraciones
N max y la tolerancia T OL para decidir cuándo son ceros
Problema 88 (3 puntos) Demostrar las siguientes los elementos no diagonales.
igualdades trigonométricas:
PARA n = 0, .., N max − 1 HACER
q p=1
tan(α) = − cot(2α) + sign(cot(2α)) 1 + cot2 (2α) q=0
¡ ¢ R = ABS(A(p, q))
donde α ∈ − π4 , π4 , sign(x) = 1 si x ≥ 0 y sign(x) = −1 PARA i = 2, ..., DIM − 1 HACER
si x < 0, PARA j = 0, ..., i − 1 HACER
1 IF ABS(A(i, j)) > R HACER
cos α = p
1 + tan2 (α) R = ABS(A(i, j))
p=j
sin α = tan(α) cos α
q=i
− tan(α) + sin(2α) FIN IF
cot(2α) =
2 sin2 (α) FIN PARA j
FIN PARA i
IF R < T OL HACER
Utilizando las anteriores igualdades trigonométricas, PROCEDIMIENTO TERMINADO CORREC-
la transformación de la matriz A mediante el método de TAMENTE.
Jacobi se puede escribir como LOS AUTOVALORES SE ENCUENTRAN EN
LA DIAGONAL DE A.
a0pq = 0 SALIR
a0pp = app − tan(α)apq FIN IF
a0qq = aqq + tan(α)apq C = (A(q, q) − A(p, p))/(2 ∗ A(p, q))
a0pj = apj cos α − aqj sin α j 6= p, q IF C < 0 HACER
T = −C − SQRT (1. + C ∗ C)
a0qj = apj sin α + aqj cos α j =6 p, q ELSE
T = −C + SQRT (1. + C ∗ C)
33
FIN IF
CO = 1./SQRT (1. + T ∗ T )
SI = CO ∗ T
PARA j = 0, ..., DIM − 1 HACER Nota. Para no tener que buscar en cada paso el máximo
IF ( j 6= p AND j 6= q) HACER de los elementos no-diagonales de Ak , el algoritmo de Ja-
D = A(p, j) cobi se puede modificar haciendo cero el primer elemento
A(j, p) = A(p, j) = CO ∗ D − SI ∗ A(q, j) apq que se encuentre que verifique |apq | ≥ T OL.
A(j, q) = A(q, j) = SI ∗ D + CO ∗ A(q, j)
FIN IF
FIN PARA j Práctica 6 (Método de Jacobi para el cálculo de autoval-
A(p, p) = A(p, p) − T ∗ A(p, q) ores y autovectores)
A(q, q) = A(q, q) + T ∗ A(p, q) Implementar en C las siguientes funciones :
A(p, q) = A(q, p) = 0
FIN PARA n • real an_error_vectores(const real *u,const real
PROCEDIMIENTO TERMINADO INCORRECTA- *v,const int N) Devuelve la diferencia entre los vec-
MENTE tores U y V, de dimensión N, utilizando la fórmula
NÚMERO DE ITERACIONES MÁXIMO EXCE- :
DIDO
N
1 X ABS(U (i) − V (i))
Veamos ahora cómo podemos calcular los autovec- ERROR_V ECT ORES =
N i=1 ABS(U (i)) +
tores. Al utilizar el método de Jacobi, vamos transfor-
mando la matriz A multiplicándola por una secuencia de
matrices de rotación R1 , ...., RM , de tal forma que • int an_jacobi(const real **A,real **Autovectores,
−1
real *Autovalores, const int N,const real TOL,const
RM · .... · R1−1 AR1 · .... · RM = D int Niter): Realiza el cálculo de los autovalores y au-
donde D es una matriz diagonal que contiene los auto- tovectores de una matriz simétrica A por el método de
valores de A en la diagonal. Denotemos por B la matriz Jacobi. Autovectores es una matriz donde se guardan
B = R1 · .... · RM . Despejando de la anterior igualdad los autovectores por columnas. La función devuelve 0
obtenemos que si termina bien y −1 en caso contrario.
AB = BD • real an_error_autovectores(const real **A, const real
Si denotamos por bi el vector columna i de la matriz **Autovectores, const real *Autovalores, const int N)
B, de la expresión anterior se obtiene que : Para comprobar que los autovalores λi y su autovec-
tores x̄i están bien estimados, comparar para cada au-
Abi = dii bi
tovalor λi , utilizando la función an_error_vectores(),
Es decir, bi es el autovector de A asociado al autovalor para los vectores Ax̄i y λi x̄i . Devolver la expresión
dii . Por tanto, la matriz B determina los autovectores.
Numéricamente, para calcular la matriz B en el algoritmo ERROR_AU T OV ECT ORES =
anterior que calcula los autovalores, añadiremos en cada
iteración las operaciones necesarios para ir obteniendo B. max ERROR_V ECT ORES(Ax̄i , λx̄i )
i=1,N
En primer lugar, inicializamos B a la identidad antes de
entrar en el bucle. A continuación, en cada iteración hare- Comprobar los resultados obtenidos con los siguientes
mos B = B · Ri .Ahora bien, como Ri es una matriz de ejemplos, tomando T OL = 0.0001 y N iter = 10000:
rotación del tipo Rpq (α), cuando multiplicamos una matriz ⎛ ⎞
B por la derecha por una matriz del tipo Rpq (α) (denote- 2 2 −2
mos por B 0 = B · Rpq (α) el resultado de la multiplicación) 1. A = ⎝ 2 1 1 ⎠
podemos observar que lo único que cambia en B son los −2 1 1
vectores columnas p y q, que se transforman de la siguiente Resultado:
⎧⎛ ⎞⎫ ⎧⎛ ⎞⎫
⎨ 1 ⎬ ⎨ −2 ⎬
manera: ⎝ −1 ⎠ ↔ −2, ⎝ −1 ⎠ ↔
⎩ ⎭ ⎩ ⎭
b0ip = cos(α)bip − sin(α)biq i = 1, .., N 1
⎧⎛ ⎞⎫ 1
b0iq = sin(α)bip + cos(α)biq i = 1, .., N ⎨ 0 ⎬
4, ⎝ 1 ⎠ ↔ 2
⎩ ⎭
1
Problema 90 (2 puntos) Utilizar el método de Jacobi ⎛ ⎞
para aproximar los autovalores y autovectores de la sigu- 2 −1 0
iente matriz: ⎛ ⎞ 2. A = ⎝ −1 2 −1 ⎠
2 0 1 0 −1 2
A=⎝ 0 1 0 ⎠ Resultado:
1 0 1
34
⎧⎛ ⎞⎫ ⎧⎛ ⎞⎫
⎨ −1 ⎬ ⎨ 1
√ ⎬ Error Ejemplo M_1000 = 1 × 10−5
⎝ 0 ⎠ ↔ 2, ⎝ − 2 ⎠ ↔ 2 +
⎩ ⎭ ⎩ ⎭
1 1 Precisión long double
⎧⎛ ⎞⎫
√ ⎨ √1 ⎬ √ Error Ejemplo 1 = 4 × 10−6
2, ⎝ 2 ⎠ ↔ 2 − 2 Error Ejemplo 2 = 9 × 10−6
⎩ ⎭ Error Ejemplo 4 = 1 × 10−5
1
Error Ejemplo M_10 = 8 × 10−6
3. Las matrices de dimensión 10, 100 y 1000 del directo- Error Ejemplo M_100 = 2 × 10−5
rio de la asignatura. Error Ejemplo M_1000 = 1 × 10−5
⎛ ⎞
0 1 6 0 0 0
⎜ 1 0 2 7 0 0 ⎟
⎜ ⎟
⎜ 6 2 0 3 8 0 ⎟
4. A = ⎜⎜ ⎟ Método de la potencia
⎟
⎜ 0 7 3 0 4 9 ⎟
⎝ 0 0 8 4 0 5 ⎠
0 0 0 9 5 0 Teorema 25 Sea una matriz A que posee una base de au-
tovectores tal que en módulo su autovalor máximo λmax es
Resultados: único. Sea un vector u1 no ortogonal al subespacio engen-
⎛ ⎞ ⎛ ⎞ drado por los autovectores del autovalor λmax , entonces, si
−0.283 29 0.556 95 definimos la secuencia
⎜ −0.745 57 ⎟ ⎜ −0.148 71 ⎟
⎜ ⎟ ⎜ ⎟
⎜ 0.02466 5 ⎟ ⎜ 0.576 44 ⎟ un−1
16. 6 ↔ ⎜
⎜ −0.191 25
⎟
⎟ 5. 942 ↔ ⎜
⎜
⎟
⎟ un = A
⎜ ⎟ ⎜ −0.370 52 ⎟ k un−1 k
⎝ 0.477 07 ⎠ ⎝ 0.186 62 ⎠
0.314 8 −0.404 09 se verifica que
⎛ ⎞ ⎛ ⎞ ¡¡ n n−1 ¢¢
−. 593 8 −0.674 87 Limn→∞ sign u ,u k un k= λmax
⎜ −1. 562 8 ⎟ ⎜ 0.329 9 ⎟
⎜ ⎟ ⎜ ⎟
⎜ 0.05 170 ⎟ ⎜ 0.222 33 ⎟ ¡ ¡¡ ¢¢¢n un
2. 11 ↔ ⎜
⎜
⎟
⎟ − 2. 465 ↔ ⎜
⎜
⎟
⎟ Limn→∞ sign un , un−1 es un autovector de λmax
⎜ −. 400 89 ⎟ ⎜ −0.08329 9 ⎟ k un k
⎝ 1.0 ⎠ ⎝ 0.386 41 ⎠
. 659 86 −0.479 62
Además, dicho autovector tiene norma 1.
⎛ ⎞ ⎛ ⎞ ¡¡ ¢¢
0.273 98 0.224 49 Teorema 26 sign un , un−1 es el¡¡signo del¢¢producto
⎜ 0.389 55 ⎟ ⎜ −0.275 90 ⎟
⎜ ⎟ ⎜ ⎟ ¡escalar de¢ un y un−1 ,¡¡es decir sign
¢¢ un , un−1
¡ = 1¢ si
⎜ −0.524 54 ⎟ ⎜ −0.407 79 ⎟
−10. 06 ↔ ⎜ ⎟ − 12. 12 ↔ ⎜ ⎟ n n−1 n n−1
u ,u ≥ 0 y sign u , u = −1 si un , un−1 <
⎜ −0.449 45 ⎟ ⎜ 0.562 40 ⎟
⎜ ⎟ ⎜ ⎟ 0.
⎝ 0.525 54 ⎠ ⎝ 0.307 86 ⎠
0.140 9 −0.544 17 Demostración. En primer lugar, vamos a demostrar por
inducción la siguiente igualdad:
Nota: Obsérvese, al comparar los resultados,
que los autovectores están definidos módulo la An u1
un+1 =
multiplicación por una constante. Respecto al kAn−1 u1 k
ERROR_AU T OV ECT ORES (que denotaremos por
Error) los resultados deben ser los siguientes : Para n = 1 la igualdad se cumple por la definición de
u2 . Supongamos que se cumple para n−1, y demostrémoslo
Precisión float para n:
Error Ejemplo 1 = 4 × 10−6
Error Ejemplo 2 = 9 × 10−6 An−1 u1
Error Ejemplo 4 = 1 × 10−5 n+1 un kAn−2 u1 k An u1
u = A n = A kAn−1 u1 k =
Error Ejemplo M_10 = 8 × 10−6 ku k n−2 1
kAn−1 u1 k
kA u k
Error Ejemplo M_100 = 2 × 10−5
Error Ejemplo M_1000 = 9 × 10−5
Con lo que queda demostrado este primer resultado.
Precisión double Por otro lado, como A posee una base de autovectores,
Error Ejemplo 1 = 4 × 10−6 que denotaremos por xi , y u1 no es ortogonal al espacio
Error Ejemplo 2 = 9 × 10−6 generado por los autovectores asociados a λmax , entonces
Error Ejemplo 4 = 1 × 10−5 u1 se puede escribir como
Error Ejemplo M_10 = 8 × 10−6
Error Ejemplo M_100 = 2 × 10−5 u1 = µ1 x1 + ... + µN xN
35
donde supondremos que x1 es un autovector asociado Método de la potencia inversa.
a λmax y que µ1 6= 0. Por la igualdad anteriormente
demostrada obtenemos que El método anterior también se puede utilizar para el cál-
culo del autovalor de módulo menor λmin , teniendo en
cuenta que
An−1 u1 µ1 λn−1 n−1
max x1 + ... + µN λN xN
un = = ° °= 1
kAn−2 u1 k °µ1 λn−2 n−2
max x1 + ... + µN λN xN
° λmin = 0
³ ´n−1 ³ ´n−1 max{λi autovalores de A−1 }
λmax λN
µ1 |λmax | x1 + ... + µN |λmax | xN
= |λmax | ° ³ ´ ³ ´ ° Por tanto, si aplicamos el método anterior a A−1 ,
° n−2 n−2 °
°µ1 λmax x1 + ... + µN |λλmax
N
xN ° obtenemos que la secuencia
° |λmax | | °
un−1
Cuando hacemos tender n hacia infinito, todos los co- un = A−1
cientes de la forma k un−1 k
µ ¶n
λi verifica que
|λmax | ¡¡ ¢¢ 1
tienden hacia 0, salvo si λi = λmax . En este caso, dicho Limn→∞ sign un , un−1 k un k=
n
λmin
cociente es 1n , si λmax es positivo, o (−1) , si λmax es neg-
ativo. Por tanto, para n suficientemente grande el signo de ¡¡ ¢¢ u n
Limn→∞ sign un , un−1 es un autovector de λmin
λmax coincide con el signo del producto escalar (un , un−1 ). k un k
Además En los casos prácticos, se evita calcular directamente
A−1 , y se obtiene un resolviendo el sistema
Limn→∞ kun k =
° ³ ´n−1 ³ ´n−1 ° un−1
° ° Aun =
°µ1 λmax x + ... + µ λN
x ° k un−1 k
° |λmax | 1 N |λmax | N°
°
= |λmax | ° ³ ´n−2 ³ ´n−2 °=
°
°µ1 λmax λN
x1 + ... + µN |λmax | xN °
° |λmax | °
Problema 92 (2 puntos) Calcular el autovalor µ mayor
¶
= |λmax | 2 −1
y el autovector correspondiente de la matriz
y por tanto −1 1
utilizando el método de la potencia, realizando 2 itera-
¡¡ n n−1 ¢¢ ciones del método a partir de u1 = (1, 1) y tomando como
Limn→∞ sign u ,u k un k= λmax norma kuk = maxi |ui |.
¡ ¡¡ ¢¢¢n
Por otro lado, el término sign un , un−1 para n
suficientemente grande es 1n si λmax es positivo o (−1)n Problema 93 (2 puntos) Utilizar el método de la po-
si λmax es negativo. Sean x1 , ...., xM los autovectores aso- tencia inversa para aproximar el autovalor menor de la
ciados a λmax , obtenemos que matriz µ ¶
−2 1
¡ ¡¡ ¢¢¢n A=
un 0 3
Limn→∞ sign un , un−1 =
k un k
µ1 x1 + ... + µM xM Llegar hasta u3 partiendo de u = (1, 1).
= El método de la potencia directa e inversa nos per-
kµ1 x1 + ... + µM xM k
mite calcular el autovalor más grande y más pequeño de
que es un autovector de λmax de norma 1. una matriz. Ahora bien para calcular los autovalores que
se encuentren entre λmin y λmax necesitamos información
Problema 91 (3 puntos) Aplicar el método de la po- adicional como puede ser tener una aproximación del au-
tencia para aproximar el autovalor máximo y el autovec- tovalor buscado. Por ejemplo si µ es una aproximación del
tor asociado de las siguientes matrices, realizando 3 it- autovalor λ de tal forma que µ se encuentre más cercano
eraciones en el método, hasta calcular u4 y partiendo de a λ que a cualquier otro autovalor, podemos construir la
u1 = (1, 1). matriz A0 = A − µI. Si llamamos λ0min al autovalor más
µ ¶ pequeño de A0 , se cumple que
2 1
A =
0 1 A0 x̄ = (A − µI)x̄ = λ0min x̄
µ ¶
−3 0
A = de donde despejando
1 1
Ax̄ = (λ0min + µ)x̄
36
y por tanto λ0min + µ es el autovalor de A más cercano a µ. Métodos iterativos de resolución de sistemas lin-
eales.
El razonamiento anterior nos lleva al siguiente algo-
Estas técnicas consisten en transformar un sistema de la
ritmo general para calcular todos los autovectores y auto-
forma
valores de una matriz cualquiera:
Au = b
en una ecuación de punto fijo de la forma
1. Paso 1: Se calcula el polinomio característico |A −
λI| = 0. u = Mu + c
2. Paso 2: Se calculan las raíces {λi } del polinomio car- de tal manera que, al hacer iteraciones de la forma
acterístico
un = M un−1 + c
3. Paso 3 : Utilizando el método de la potencia inversa se
calcula los autovectores más pequeños de las matrices se obtenga que un converge hacia u, la solución del sistema
A − λi I original.
37
matriz M y el vector c que determinan el esquema iterativo Método de Gauss-Seidel
vienen dados por
Este método consiste en tomar
⎛ ⎞ ⎛ 1 ⎞
0 12 0 2 MGS = (D + L)−1 (−U )
MJ = ⎝ 12 0 12 ⎠ cJ = ⎝ 0 ⎠
−1
0 12 0 1
2
cGS = (D + L) b
38
⎛ ⎞ ⎛ ⎞ Teorema 28 Si A es una matriz tridiagonal y ρ(MJ ) < 1,
.5 . 976 56 entonces el valor de w que optimiza la velocidad de con-
u3 = ⎝ . 25 ⎠ .... u8 = ⎝ . 976 56 ⎠ vergencia del método es:
. 625 . 988 28
2
wopt = p
1 + 1 − ρ(MJ )2
39
Demostración: La solución del sistema satisface que u = valor absoluto, se tiene, por las condiciones del teorema,
M u + c. Restando esta igualdad de la igualdad un = que kMJ k < 1 para la norma 1 o infinito. Por tanto,
M un−1 + c, obtenemos que el teorema se concluye teniendo en cuenta que cualquier
norma de una matriz es siempre mayor o igual que su radio
un − u = M (un−1 − u) = M n−1 (u1 − u) espectral.
Este resultado se puede generalizar un poco al caso
¥ de matrices irreducibles de la siguiente forma:
Demostración: En primer lugar, observamos que la ma- Problema 101 (3 puntos) Dado un sistema iterativo
triz MJ puede expresarse como:
⎛ ⎞ un = M un−1 + c
0 − aa12
11
− aa13
11
. − aa1N
11
⎜ − aa21 0 − aa23 . − aa2N ⎟ Demostrar que, aunque el radio espectral de M sea
⎜ ⎟
⎜ .
22
. .
22
. .
22
⎟ mayor que 1, si u1 y c son combinaciones lineales de au-
⎜ ⎟
⎜ − aN −1,1 aN −1,2 aN−1,N ⎟ tovectores de M correspondientes a autovalores de módulo
⎝ aN −1,N−1 − aN −1,N −1 . 0 − aN−1,N −1 ⎠
aN,1 aN,2 aN,N −1 menor que 1, entonces el método converge.
− aN,N − aN,N . − aN,N 0
40
Práctica 7 (Método de relajación). Precision long double
Ejemplo w No Iter Error
Desarrollar una función en C donde se implemente el
1 1 54 10−18
método de relajación. Los parámetros de la función serán:
1 1.2 25 10−18
la matriz A, el vector b, un vector u donde se almacenará
2 1 52 10−17
la solución, y que inicialmente será el vector aproximación
2 1.2 25 10−18
inicial, que por defecto se tomará 0, el parámetro de re-
lajación w, el número máximo de iteraciones N max, y 3 1 NO sol.
la tolerancia T OL para evaluar la diferencia entre un y 3 NO sol
un−1 . La función devolverá el número de iteraciones nece- M_10 1 822 10−16
sarias para alcanzar la solución. Si el método no converge M_10 1.7 106 10−16
devuelve −1. Comparar la diferencia en la velocidad de M_100 1 >N max −
convergencia entre el método de Gauss-Seidel y el Método M_100 1.95 1862 10−15
de relajación. Probar el método para los sistemas
Método de Newton-Raphson para sistemas de
⎛ ⎞⎛ ⎞ ⎛ ⎞
1 −1 0 x −1 ecuaciones no lineales
1. ⎝ −1 2 0 ⎠ ⎝ y ⎠ = ⎝ 3 ⎠
En las aplicaciones reales, muchas veces nos encontramos
0 −1 3 z 1
con sistemas no lineales de ecuaciones. Por ejemplo, cal-
⎛ ⎞⎛ ⎞ ⎛ ⎞ cular las raíces, reales o complejas, de un polinomio de
2 −1 0 x 1 grado 2 dado por P2 (z) = az 2 + bz + c, donde z = x + yi,
2. ⎝ −1 2 −1 ⎠ ⎝ y ⎠ = ⎝ 0 ⎠ es equivalente a resolver el sistema
0 −1 2 z 1
ax2 + bx − ay 2 + c = 0
⎛ ⎞⎛ ⎞ ⎛ ⎞
1 3 3 x 7 2ayx + by = 0
3. ⎝ 3 1 3 ⎠ ⎝ y ⎠ = ⎝ 7 ⎠
3 3 1 z 7 que es un sistema no lineal de ecuaciones. En general, un
sistema no lineal de ecuaciones de dimensión N, se escribe
4. Los sistemas de matrices de dimensión 10 y 100. como N ecuaciones del tipo
f1 (u1 , ...., uN ) = 0
Para las pruebas tomaremos N max = 10000 y
T OL = 103 u donde u es la unidad de redondeo. Los re- f2 (u1 , ...., uN ) = 0
sultados que se deben obtener son los siguientes .
fN (u1 , ...., uN ) = 0
Precision float
Ejemplo w No Iter Error
donde f (u) = (f1 (u), f2 (u), ..., fN (u)) es una función de
1 1 14 10−5
<N → <N , y u = (u1 , ...., uN ). El método de Newton-
1 1.2 8 10−6
Raphson para sistemas de ecuaciones se basa en desarrollar
2 1 12 10−5
por Taylor la función f y truncar el desarrollo para que
2 1.25 8 10−5 quede un sistema lineal, es decir
3 1 NO sol.
¡ ¢ ¡ ¢
3 NO sol f (u) = f (u0 ) + ∇f (u0 ) u − u0 + O k u − u0 k2
M_10 1 139 10−4
M_10 1.7 36 10−4 donde u0 es una aproximación de la solución de f (u) = 0.
M_100 1 3322 10−3 Si truncamos el desarrollo e igualamos a 0 (para aproximar
M_100 1.95 293 10−3 la raíz) obtenemos que la raíz del sistema lineal se obtiene
resolviendo el sistema
Precision double
∇f (u0 )z = −f (u0 )
Ejemplo w No Iter Error
1 1 43 10−14 u1 = u0 + z
1 1.2 20 10−15
En el caso general, a partir de una aproximación un
2 1 41 10−14
se obtiene la aproximación un+1 en dos etapas:
2 1.2 20 10−15
3 1 NO sol. ∇f (un )z = −f (un )
3 NO sol
un+1 = un + z
M_10 1 634 10−13
M_10 1.7 83 10−13
M_100 1 >N max −
M_100 1.95 1431 10−12
41
Ejemplo 22 Consideremos el siguiente sistema no lineal A partir de u1 = (1, 1), calcular u2 y u3 utilizando el
de ecuaciones: método de Newton-Raphson para aproximar un cero del
sistema no lineal.
x2 − y 2 + 1 = 0
2xy = 0 Problema 105 (2 puntos) Calcular una iteración del
método de Newton-Raphson no lineal para aproximar una
La matriz gradiente de esta función viene dada por
raíz del sistema de ecuaciones
µ ¶
2x −2y exyz − 1 = 0
∇f (un ) =
2y 2x
y − z3 − 2 = 0
2
Si partimos de u1 = (1, 1), para obtener u2 tenemos que Esta sección es la continuación natural del tema interpo-
resolver µ ¶µ ¶ µ ¶ lación de funciones visto anteriormente. Por motivos de
2 −2 z1 −1 coordinación entre los programas teórico y práctico de la
=
2 2 z2 −2 asignatura, el tema de interpolación de funciones se dividió
¡ 3 1¢ en dos partes, siendo ésta la segunda parte.
que tiene por solución − 4 , − 4 . Por tanto, u2 viene dado
por µ ¶ µ 3 ¶ µ 1 ¶
2 1 −4
u = + = 4 Interpolación de Hermite.
1 − 14 3
4
En ocasiones, resulta de interés interpolar no sólo el valor
Para calcular u3 , tenemos que resolver el sistema
de la función en ciertos puntos {xi }i=0,..,N , sino también
µ 1 ¶µ ¶ µ ¡ ¢2 ¡ ¢2 ¶
− 32 z1 1
− 34 + 1 el valor de sus derivadas. Un ejemplo clásico de ello es
2 = − 4
3 1
z2 6 el desarrollo de Taylor de una función en un punto a. En
2 2 16
¡ ¢ este caso, aproximamos f (x) por un polinomio de grado N ,
cuya solución es − 13 9 3
40 , − 40 . Por tanto, u viene dado por
PN (x) tal que f (x) y PN (x) poseen las mismas derivadas
µ 1 ¶ µ 13 ¶ µ ¶ en el punto a desde el orden 0 hasta el orden N.
3
− 40 − 40
u3 = 4
3 + 9 = 39
4 40 40 f 0 (a) f N ) (a)
PN (x) = f (a) + (x − a) + .. + (x − a)N
que ya es una buena aproximación de la solución exacta 1! N!
dada por el vector (0, 1). El error de interpolación viene dado por la fórmula
f N +1) (ξ)
Problema 102 (2 puntos) Calcular 2 iteraciones del f (x) − PN (x) = (x − a)N +1
(N + 1)!
método de Newton-Raphson no lineal para aproximar una
donde ξ es un valor intermedio entre x y a. En el caso
raíz del sistema de ecuaciones
general, donde buscamos un polinomio P (x) tal que él y
x2 + y 2 − 1 = 0 todas sus derivadas hasta un cierto orden M coincidan con
una función f (x) en los puntos {xi }i=0,..,N , se utilizan los
y−x = 0
denominados polinomios base de Hermite Hi,j (x), que son
partiendo de (x, y) = (1, 1). polinomios de grado menor o igual que (N + 1)(M + 1) − 1
dados por las siguientes condiciones:
½
Problema 103 (2 puntos) Plantear el algoritmo nece- ∂ l Hi,j 1 si l = j y k = i
(xk ) =
sario para calcular, utilizando el método de Newton- ∂xl 0 l 6= j o k 6= i
Raphson, las raíces complejas o reales de un polinomio de A partir de los polinomios base de Hermite, el poli-
grado 3. nomio interpolador de Hermite se define como:
N X
X M
∂j f
P (x) = (xi )Hi,j (x)
∂xj
Problema 104 (2 puntos) Se considera el sistema no i=0 j=0
lineal Problema 106 (3 puntos) Calcular los polinomios base
de Hermite que corresponden a tomar como puntos de in-
(x − 1)y = 0
terpolación x0 = −1, x1 = 1, y el orden de derivación
(y − 2)x = 0 M = 1.
42
Interpolación por splines cúbicos. Por razones técnicas, como veremos posteriormente,
vamos a utilizar también los valores aN y cN .
Uno de los problemas básicos del polinomio interpolador
de Lagrange, es que, para valores grandes de N, los poli-
nomios de grado N pueden tener un carácter fuertemente Teorema 34 Si una familia de polinomios P3i (x) = di (x−
oscilante, y los resultados obtenidos por la interpolación xi )3 + ci (x − xi )2 + bi (x − xi ) + ai , i = 0, .., N, satisface
pueden no ser muy satisfactorios, como indica el ejemplo las condiciones anteriores, entonces
siguiente.
ai = f (xi ) i = 0, .., N
Ejemplo 23 El polinomio base de Lagrange centrado en ci+1 − ci
di = i = 0, .., N − 1
0 sobre los puntos xi = −5, −4, −3, −2, −1, 0, 1, 2, 3, 4, 5 es 3hi
ai+1 − ai hi (2ci + ci+1 )
(x2 − 1)(x2 − 4)(x2 − 9)(x2 − 16)(x2 − 25) bi = − i = 0, .., N − 1
P 0 (x) = hi 3
−14400
3(ai+1 − ai ) 3 (ai − ai−1 )
Tiene un marcado carácter oscilante como muestra su hi−1 ci−1 +2(hi−1 +hi )ci +hi ci+1 = −
gráfica en el intervalo [−5, 5]. hi hi−1
para i = 1, .., N − 1.
Ejemplo 24
Demostración De la condición P3i (xi ) = f (xi ), se ob-
(x2 − 1)(x2 − 4)(x2 − 9)(x2 − 16)(x2 − 25) tiene de forma inmediata que ai = f (xi ). De la condición
=
−14400 ∂ 2 P3i+1 ∂ 2 P3i
∂x2 (xi+1 ) = ∂x2 (xi+1 ), se obtiene que
2ci+1 = 6di hi + 2ci
6
y de donde, despejando, obtenemos que
ci+1 − ci
4 di =
3hi
De la Condición P3i (xi+1 ) = f (xi+1 ), se obtiene que
2
di h3i + ci h2i + bi hi + ai = ai+1
Despejando, obtenemos que
-5 -4 -3 -2 -1 1 2 3 4 5 ai+1 − ai
x bi = − di h2i − ci hi =
hi
ai+1 − ai hi (2ci + ci+1 )
−
hi 3
Para evitar este problema de oscilaciones de los poli- ∂P3i ∂P3i−1
Finalmente, de la condición ∂x (xi ) = ∂x (xi ), se
nomios de Lagrange, cuando se trabaja con muchos puntos
obtiene que
de interpolación, se suele interpolar la función utilizando
polinomios a trozos, definiendo un polinomio distinto para bi = 3di−1 h2i−1 + 2ci−1 hi−1 + bi−1
cada intervalo [xi , xi+1 ]. La técnica más conocida es la
interpolación por splines cúbicos, que son polinomios de y, despejando todo en función de ci , se obtiene la relación
grado 3. Por tanto, tendremos un polinomio de grado 3 dis- 3(ai+1 − ai ) 3 (ai − ai−1 )
tinto P3i (x) = di (x− xi )3 + ci (x−xi )2 + bi (x− xi ) +ai para hi−1 ci−1 +2(hi−1 +hi )ci +hi ci+1 = −
hi hi−1
cada intervalo [xi , xi+1 ]. Si hay N +1 puntos, el número de
polinomios es N. Para definir estos polinomios, se imponen
las siguientes condiciones: Nótese que esta última relación determina un sistema
de ecuaciones donde las incógnitas son las variables ci . Di-
P3i (xi ) = f (xi ) i = 0, .., N − 1
cho sistema tiene N +1 incognitas (c0 , ..., cN ) y N −1 ecua-
P3i (xi+1 ) = f (xi+1 ) i = 0, ..., N − 1 ciones. Para completar dicho sistema, hay que añadir una
∂P3i ∂P3i+1 ecuación que involucre a c0 y otra ecuación que involucre
(xi+1 ) = (xi+1 ) i = 0, .., N − 2
∂x ∂x a cN . Para añadir estas dos ecuaciones hay dos proced-
∂ P3i
2 i+1
∂ 2 P3 imientos estándares. El primero consiste simplemente en
(xi+1 ) = (xi+1 ) i = 0, ..., N − 2 fijar c0 = cN = 0, lo que significa que
∂x2 ∂x2
Vamos a introducir la notación hi = ∂ 2 P30
c0 = (x0 ) = 0
xi+1 − xi . Nótese que, para definir los poli- ∂x2
nomios, tenemos que buscar 4N valores, es decir: ∂ 2 P3N −1
a0 , ...., aN −1 , b0 , ..., bN−1 , c0 , ....., cN−1, d0 , ...., dN−1. cN = (xN ) = 0
∂x2
43
El segundo procedimiento se utiliza cuando utilizamos −2.2
b0 = 1− = 1.733
los valores de f 0 (a) y f 0 (b). En este caso, imponemos que 3
−4.4 + 2.8
b1 = −1 − = −0.467
3
∂P30 5.6 + 0
(x0 ) = f 0 (a) b2 = 2− = 0.133
∂x 3
∂P3N−1
(xN ) = f 0 (b)
∂x
de donde salen las ecuaciones
Ejemplo 27 Por tanto, los polinomios son
0 a1 − a0 h0
f (a) = − (2c0 + c1 ) P0 (x) = −0.733x3 + 1.733x
h0 3
aN − aN−1 hN −1 P1 (x) = 1.667 (x − 1)3 − 2.2 (x − 1)2 − 0.467 (x − 1) + 1
f 0 (b) = − (2cN −1 + cN )
hN −1 3 P2 (x) = −0.933 (x − 2)3 + 2.8 (x − 2)2 + 0.133 (x − 2)
Por lo tanto, siguiendo con el resultado del teorema
anterior, para calcular los splines cúbicos es necesario, en
primer lugar, tomar ai = f (xi ). A continuación, se resuelve
un sistema de ecuaciones tridiagonal para el cálculo de los A continuación se muestra una gráfica con los 3 poli-
ci . Los bj y dj se calculan directamente a partir de las nomios concatenados en el intervalo [0, 3] :
relaciones mostradas en el teorema anterior.
Como puede observarse, por las condiciones sobre las
derivadas que hemos impuesto, no es posible distinguir ge-
Ejemplo 25 Vamos a calcular los polinomios interpo- ométricamente, al trazar la curva, cuales son los puntos de
ladores utilizando splines cúbicos al interpolar la función unión entre los tres polinomios. Es decir, parece, a simple
f (x) en los puntos x = 0, 1, 2, y 3, sabiendo que f (0) = 0, vista, el trazado de una única función. Veamos ahora grá-
f (1) = 1, f (2) = 0, f (3) = 2, tomando c0 = c3 = 0. En ficamente el perfil de la derivada de los polinomios P0 (x),
este caso hi = 1. Debemos definir 3 polinomios distintos P1 (x), y P2 (x).
que corresponden a los intervalos [0, 1], [1, 2], y [2, 3]. Los
términos ai vienen dados por
Ejemplo 28
⎛ ⎞ ⎛ ⎞ 3
a0 0 y
⎜ a1 ⎟ ⎜ 1 ⎟
⎜ ⎟ ⎜ ⎟
⎝ a2 ⎠ = ⎝ 0 ⎠ 2
a3 2
1
44
Ejemplo 29 Consideremos la función f (x), definida en
los puntos x = 0, 1, 2, y 3, tal que f (0) = 0, f (1) = 1,
y
f (2) = 0, f (3) = 2. La interpolación de esta función uti-
4
lizando la función seno cardinal viene dada por la función
sin(π (x − 1)) sin(π (x − 3))
2 fe(x) = +2
π(x − 1) π(x − 3)
0 cuya gráfica es
1 2 3
x
-2
2.0
y
-4
1.5
1.0
Problema 107 (3 puntos) Calcular los polinomios que
determinan la interpolación
¡ ¢ por splines cúbicos de la fun- 0.5
ción f (x) = sin π2 x para los puntos x = −1, 0, 1 y 2.
0.0
1 2 3
x
La interpolación a través de la función seno cardi-
nal.
Una base de funciones interpolantes muy utilizada en la
teoría de Fourier es la base formada a partir de la función Ejemplo 30 Vamos a comparar gráficamente el resultado
seno cardinal, definida por de interpolar la función del ejemplo anterior utilizando
la interpolación de Lagrange normal, la interpolación por
sin(x)
sin c(x) = splines cúbicos y la interpolación a través de la función
x
seno cardinal. El polinomio interpolador de Lagrange se
cuya gráfica es puede calcular fácilmente y da como resultado
5
P (x) = x − x(x − 1) + x(x − 1)(x − 2)
6
1.0
y En la siguiente figura se muestran juntas las gráficas
0.8 del polinomio de Lagrange (línea a trozos), los polinomios
de la interpolación por splines cúbicos (línea sólida), y la
0.6
interpolación utilizando la función sin c(x) (línea a trozos).
0.4
0.2 2.0
y
1.5
-50 -40 -30 -20 -10 10 20 30 40 50
-0.2
x
1.0
45
Problema 108 (2 puntos) Calcular la función que in- Vamos a calcular el polinomio trigonométrico inter-
terpola, utilizando la función sin c(x), la función f (x) = polante para N = 3. Los valores de ck son
sin(x) en los puntos x = −π, − π2 , 0, π2 , π. Rπ
−π
f (x)dx 1
c0 = =
2πR 2
π
La interpolación a través de polinomios −π
f (x)eix dx 1
c1 = c−1 = =
trigonométricos. Rπ 2π π
f (x)e2ix dx
La base de la transformada de Fourier discreta es la uti- c2 = c−2 = −π =0
lización de los polinomios trigonométricos dados por la ex- Rπ 2π
3ix
presión f (x)e dx 1
c3 = c−3 = −π =−
P k (x) = eikx 2π 3π
Dada una función f (x), definida en el intervalo Por tanto, el polinomio trigonométrico interpolador es
[−π, π], pretendemos aproximar f (x) como
N
X 1 2 2
f (x) ≈ ck eikx P3 (x) = + cos(x) − cos(3x)
2 π 3π
k=−N
sea mínima.
46
Teorema 36 Los valores a y b que minimizan el error [Hu] Hultquist P. F. ”Numerical Methods for
cuadrático anterior son Engineers and Computer Scientists”, The Ben-
PN PN PN jamin/Cummings Publishing Company, Inc. 1988.
N i=1 xi yi − i=1 xi i=1 yi Esta obra, presenta una cuidada selección de temas
a = PN ³P ´2
N i=1 x2i −
N
x básicos en Análisis Numérico, sin pretender ser tan
i=1 i
PN 2 PN PN PN exhaustiva como otras obras de carácter más general,
i=1 xi i=1 yi − i=1 xi yi i=1 xi la buena presentación de los temas elegidos la hacen de
b = PN 2 ³PN ´2 interés.
N i=1 xi − i=1 xi [Is-Ke] Isaacson E., Keller H. ”Analysis of Numerical
Methods”. John Wiley and Sons, 1966. Uno de los libros
Demostración En primer lugar, observamos que, dada clásicos más conocidos en Análisis Numérico. Destaca por
la forma cuadrática que tiene el funcional, debe poseer un el rigor matemático en su exposición.
mínimo. Además, en un mínimo del funcional E(a, b), las [Ki-Ch] Kincaid D., Cheney W. "Análisis Numérico".
derivadas parciales son cero, y por tanto Addison-Wesley Iberoamericana, 1994. Excelente libro de
N base para un curso de Métodos Numéricos. Contiene todos
∂E X
(a, b) = 2 (axi + b − yi ) xi = 0 los tópicos habituales con una descripción muy completa
∂a i=1 y detallada. Los algoritmos están muy bien descritos a
N través de un seudocódigo. Trae una buena selección de
∂E X
(a, b) = 2 (axi + b − yi ) = 0 problemas.
∂b i=1 [La-Th] Lascaux P., Théodor R. "Analyse numérique
matricielle appliquée à l’art de l’ingénieur. Vol. 1 Méth-
Esto da lugar a un sistema lineal de ecuaciones cuyas odes directes y Vol. 2 Méthodes itératives ", Masson, 1993.
incógnitas son a y b, y cuya resolución lleva al resultado Esta obra, dividida en dos volúmenes, trata en profundi-
establecido en el teorema. dad todos los tópicos relacionados con el Análisis Numérico
Matricial. Su mayor virtud es el rigor matemático con el
que se tratan los temas y una cuidada presentación.
Problema 110 (2 puntos) Calcular la aproximación [St] Stewart G.W. ”Afternotes on Numerical Analy-
mínimo cuadrática lineal de la tabla sis” SIAM, 1996. Esta obra, sin pretender ser exhaustiva,
xi yi muestra las últimas tendencias en cuanto a la enseñanza
0 0 de los conceptos básicos del Análisis Numérico.
1 1
2 0
3 2
BIBLIOGRAFÍA BÁSICA
47
APÉNDICE A: Resumen de los comandos de Intercambio entre modo comando y modo edición
LINUX/UNIX ESC pasa de modo edición a modo comando
i pasa de modo comando a modo edición
A pasa a modo edición y pone el cursor al final de
En este breve resumen seguiremos el siguiente esquema. la línea
En primer lugar, aparece el comando LINUX/UNIX. A O inserta una nueva línea, pasa a modo edición y
continuación, entre paréntesis, su equivalente en MS-DOS pone el cursor al principio de la nueva línea
(si existe). Finalmente, un comentario y un ejemplo.
Manejo de Ficheros (en modo comando)
cd (cd) cambia el directorio activo :w escribe en disco el fichero
>cd /users/p701/fortran77 :wq escribe en disco el fichero y sale del vi
more (type) visualiza el contenido de un fichero :e f ichero.name edita el fichero f ichero.name
>more /users/p701/fortran77/programas/prog1.f :q! sale del vi sin guardar cambios.
ls (dir) visualiza contenido de un directorio :w f ichero.name escribe el fichero actual en el
>ls /users/p701/fortran77 fichero f ichero.name en disco
cp (copy) copia un fichero en otro. !comando ejecuta el comando UNIX comando
>cp /users/p701/fortran77/programas/prog1.f . :set nu presenta los números de línea en pantalla
rm (del) borra un fichero
>del prog1.f Comandos para desplazarse por el texto (en modo
man (help) suministra ayuda sobre un comando comando)
> man ls Crtl F página adelante
logout se termina la sesión y se sale del sistema Crtl B página atrás
>logout $ pone el cursor en el final de la línea
ps visualiza los números de procesos que están abiertos 0 pone el cursor en el principio de línea
que corresponden al usuario alumno /string busca hacia adelante el string string
>ps -u alumno ?string busca hacia atras el string string
kill interrumpe la ejecución de un proceso de número n repite la última búsqueda
N proceso G va al final del texto
>kill -9 N proceso 3 G va a la línea número 3.
mkdir (mkdir) crea un directorio
>mkdir practica1 Comandos para borrar líneas o caracteres (en
rmdir (rmdir) borra un directorio modo comando)
>rmdir practica1 x borra el carácter donde se encuentra el cursor
mv (move) cambia de nombre o ubicación un archivo. r character remplaza el carácter donde se encuentra
>mv prog1.f practica1.f el cursor por el carácter character
chmod cambia los permisos de lectura, escritura y eje- dd borra la línea donde se encuentra el cursor
cución de un fichero. Este comando es de utilidad para 3 dd borra 3 líneas desde donde se encuentra el cur-
salvaguardar la información de directorios y ficheros de sor hacia abajo
miradas ajenas. dw borra la palabra donde se encuentra el cursor
Hacer > man chmod para mirar las opciones.
chown cambia el propietario de un fichero. Comandos para copiar y desplazar bloques (en
Hacer > man chown para mirar las opciones. modo comando)
du (tree) visualiza la cadena de directorios yy copia en el buffer la línea donde se encuentra el
>du /users/p701 cursor
find busca un archivo de nombre f ile en el directorio dir 3yy copia en el buffer 3 líneas hacia abajo desde el
>find dir -name f ile -print cursor
grep busca los ficheros que contenga la cadena de carac- dd copia (y borra) al buffer la línea donde se en-
teres string cuentra el cursor
>grep string * 3dd copia (y borra) al buffer 3 líneas hacia abajo
desde el cursor
APÉNDICE B: Resumen del procesador de texto p copia el contenido del buffer en el texto.
vi.
El procesador de texto vi tiene la ventaja de estar presente APÉNDICE C: Algunos fallos comunes en
en cualquier máquina que trabaje sobre LINUX/UNIX y Programación
no requiere ningún entorno gráfico. Puede ejecutarse en
dos modos. El modo comando (el que está por defecto
al entrar en vi), donde se ejecutan comandos, y el modo 1. Escribir números como 1/2 en precisión entera. Solu-
edición, que es donde se escribe normalmente el texto. ción: Añadir siempre el punto a la derecha del número
48
cuando quiero trabajar en precisión real. Es decir es-
cribir 1./2.
2. Modificar el parámetro de una función en el interior
de la función
3. No poner ningún comentario en los programas.
4. Anidar excesivamente los programas. Siempre hay
que buscar que el número de anidamientos sea mín-
imo.
5. No respetar los tipos en los pasos de parámetros de
las funciones.
49