Professional Documents
Culture Documents
1
División Académica de Ciencias Básicas – UJAT
2
Facultad de Ciencias – UNAM
Presentación
Por otro lado, la presente nota es el resultado de los apuntes presentados en los cursos de
Análisis Numérico I que se imparte en la Facultad de Ciencias de la Universidad Nacional
Autónoma de México, y de Análisis Numérico I que se imparte en la Maestría en Ciencias
en Matemáticas Aplicadas, en la División Académica de Ciencias Básicas de la Universidad
Juárez Autónoma de Tabasco. La versión preliminar se presentó en el semestre Febrero -
Junio de 2008, y desde entonces se ha venido corrigiendo y ampliándose cada semestre que
se imparte el curso.
ii
Índice general
Presentación ii
iii
iv ÍNDICE GENERAL
4. Ceros de funciones 91
4.1. Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.2. Método de bisección . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
4.3. Método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
4.4. Método de la secante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
4.5. Método de interpolación cuadrática inversa . . . . . . . . . . . . . . . . . . . 103
4.6. Sistemas de ecuaciones no lineales . . . . . . . . . . . . . . . . . . . . . . . . 103
4.6.1. Existencia y unicidad . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
4.6.2. Método de Newton . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
4.6.3. Convergencia local del método de Newton . . . . . . . . . . . . . . . 107
4.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Referencias 151
vi ÍNDICE GENERAL
Capítulo 1
1. Las columnas del 1 al 5 se reservan para etiquetas o niveles de las declaraciones. Las
etiquetas deben ser enteros positivos. Si la columna 1 contiene un asterisco (*) o la
letra mayúscula C, el contenido de la línea se toma como un comentario.
2. La columna 6 se usa para indicar la continuación de una declaración. Se puede usar
cualquier caracter salvo el cero en la columna 6 de la siguiente línea para indicar la
continuación. Cuando se requiere escribir una declaración o fórmula muy larga, puede
haber varias continuaciones de línea.
3. Las columnas del 7 al 72 se usan para escribir las declaraciones de FORTRAN 77.
Cualquier declaración más allá de la columna 72 es ignorado. Ver figura 1.1.
1
2 1.1. Repaso de FORTRAN 77
Columnas 6 Columnas 7 − 72
1−5
Declaraciones de FORTRAN 77
Caracter para continuación de línea
Etiquetas o niveles
C:\WATFOR87\TRABAJO\
con un nombre apropiado y con extensión .FOR, por ejemplo: MINOMBRE.FOR (el nombre
debe contener máximo 8 caracteres).
C PROGRAMA MINOMBRE.FOR
C
C2345678...
CHARACTER NOMBRE*20
C
WRITE(*,*)’HOLA’
PAUSE
WRITE(*,*)’DAME TU NOMBRE ENTRE APOSTROFE: ’
READ(*,*)NOMBRE
PAUSE
WRITE(6,10)NOMBRE
10 FORMAT(/,10X,’GRACIAS’,1X,A)
END
1. Ejecute WATFOR87.exe
EDIT MINOMBRE.FOR
RUN MINOMBRE.FOR
Si todo está bien, el cual casi nunca ocurre la primera vez que se ejecuta un programa,
enseguida aparecerán los resultados del programa en la pantalla. Por ejemplo, una salida
es:
HOLA
DAME TU NOMBRE ENTRE APOSTROFE:
GRACIAS JUSTINO ALAVEZ
PUT MINOMBRE.FOR
RUN/LIST/NOXTYPE MINOMBRE.FOR
Dale todos los datos en el orden en que deben ir. Finalmente aparecerá nada en la pantalla,
pero se generó y se guardó automáticamente un programa con el mismo nombre pero con
extensión .LST en el directorio TRABAJO. Puede editarlo como cualquier otro archivo de
texto, o bien desde la ventanilla de comandos como:
EDIT MINOMBRE.LST
Con esto tendrá un lista completo del programa y los errores si las hubo, o bien, un
listado completo y los resultados del programa si no hubo errores. Para abandonar el listado
y regresar al programa MINOMBRE.FOR, escriba desde la ventanilla de comandos la palabra:
BYE y luego presione la tecla ENTER. Después de hacer las correcciones en su programa,
deberá guardarlo para poder ejecutarlo de nuevo.
Puede cambiar el color de fondo de la pantalla durante la sesión de WATFOR87, pre-
sionando las teclas SHIFT y F4 simultáneamente, hasta encontrar un color que le agrade.
Lo anterior va acompañado con cambios de color para las fuentes, que se realiza al presionar
simultáneamente las teclas SHIFT y F3.
Para otros tipos de ayuda, escriba desde la ventanilla de comandos la palabra: HELP y
enseguida presione la tecla ENTER.
1.1.2. Prácticas
Objetivo. Aprender a programar las instrucciones básicas de FORTRAN 77 mediante la
solución de problemas simples de aplicaciones numéricas.
READ(*,*) A,B
WRITE(*,*) A,B
Las instrucciones WRITE y READ están en formato estándar. El primer asterisco indica
un identificador de unidad (UNIT en inglés), y puede ser también cualquier número entero
positivo que se refiera a una unidad de entrada/salida válido. El segundo asterisco indica un
identificador de formato (FMT), y también puede ser un número entero positivo donde se
especifique dicho formato en el programa. Más información en Page (2003) [20] página 105.
La estructura general que debe tener todo programa de cómputo es el siguiente:
{Documentación del programa}
{Entrada de datos}
{Procesamiento de los datos por algún algoritmo numérico}
{Salida de resultados}
En la documentación del programa hay que especificar el objetivo del programa, el signifi-
cado de cada una de las variables involucradas, y en lo posible las referencias bibliográficas. Es
importante tener en cuenta que antes de la entrada de datos del problema, hay que declarar
todas las variables que se van a utilizar. El programa completo de la práctica 1 es el siguiente:
AREA=DABS(0.5D0*(A*(D-F)-C*(B-F)+E*(B-D)))
C
C SALIDA DE RESULTADOS
C
WRITE(6,10) AREA
10 FORMAT(1X,’ EL AREA DEL TRIANGULO ES:’,2X,D23.16,2X,
+’ UNIDADES CUADRADAS’)
END
Práctica 2. Escribe un programa en precisión simple que lea e imprima un número real x,
e imprima el valor de:
3
x − 2x2 + 3x − 5, si 0≤x≤1
f (x) = x3 + x2 − 7x + 6, si 1<x≤2
3
x − x + 8, si x < 0 ó x > 2
Sugerencia. Para realizar esta actividad necesita de algunos de los operadores lógicos:
.LT. < .GT. > .AND. y
.LE. ≤ .GE. ≥ .OR. o (uno o ambos)
.EQ. = .NE. =
6 .NOT. no
y de la construcción de IF. Existen varias forma de construir el IF en FORTRAN 77, la más
simple es:
IF ({Expresión lógica}) {Instrucción ejecutable}
Si se requieren varias instrucciones ejecutables la construcción es:
C
C FORMATOS RECOMENDABLES DE ESCRITURA
C
C SIMPLE PRECISION: E14.7
C DOBLE PRECISION: D23.16
C ESTANDAR: F10.5
C
STOP
END
C
C ****************************************************
C
REAL FUNCTION G(X)
REAL X
G = X**2 - 34.0*X + 8.0
RETURN
END
C
C ****************************************************
C
REAL FUNCTION F(Y)
REAL Y
F = SQRT(ABS(Y))
RETURN
END
Práctica 4. Escribe una rutina MONTH (LENGTH, START) que lea el número de días en
un mes en LENGTH y el día de comienzo del mes (1= Domingo, . . ., 7= Sábado) en START
e imprima el calendario del mes. Por ejemplo, MONTH (30, 5) imprimirá:
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30
Práctica 5. Supóngase que A ∈ Rn×n y que x ∈ Rn×1 son dados. Diseña un algoritmo
1. Introducción a la computación científica y el análisis numérico 9
indica que A es una matriz de tamaño 100 × 200 de tipo REAL, es decir con entradas en pre-
cisión simple. También puede ser de tipo INTEGER o DOUBLE PRECISION, entre otros. Se
puede usar la instrucción PARAMETER para asignar una variable simbólica a la dimensión
de los arreglos. Por ejemplo, las primeras líneas ejecutables del programa pueden ser:
INTEGER N
PARAMETER (N=3)
REAL A(N,N), X(N)
INTEGER N
PARAMETER (N=3)
REAL A(N,N),X(N),S,B
INTEGER I,J
C
C DATA A/10000*1.0/, X/100*2.0/ C
DATA A(1,1)/4.2/, A(2,1)/-3.2/, A(3,1)/2.0/
+ A(1,2)/-4.2/, A(2,2)/-5.2/, A(3,2)/10.0/
+ A(1,3)/14.2/, A(2,3)/-15.2/, A(3,3)/-10.0/
DATA X/-2.1, 5.4, 7.8/
C
S=0.0
DO 10 J=1,N
B=0.0
DO 20 I=1,N
B=B+A(I,J)*X(I)
20 CONTINUE
S=S+B*X(J)
10 CONTINUE
C
C SALIDA DE RESULTADOS
C
WRITE(6,30) S,N
30 FORMAT(6X,’*******************************************’,/
+ 6X,’R E S U L T A D O S :’,//
+ 6X,’ EL PRODUCTO XT*A*X ES:’,2X,E14.7,//
+ 6X,’LA DIMENSION DEL VECTOR X ES:’,2X,I3,/
+ 6X,’*******************************************’)
END
D). Representar los resultados numéricos obtenidos en alguna forma comprehensible tales
como visualización gráfica.
E). Interpretar y validar los resultados numéricos obtenidos (confrontarlos con la realidad),
repetir parte o todo el proceso numérico si es necesario.
Durante el curso se abordará el estudios de métodos numéricos conocidos, y se implantarán
algunos haciendo programas domésticos en FORTRAN o en MATLAB, y la implantación de
otros usando rutinas profesionales también de FORTRAN y MATLAB.
Para que un problema matemático se pueda resolver con la ayuda de una computadora a
través de métodos numéricos, es necesario transformarlo a su vez en un problema computa-
cional. El proceso de transformación se llama discretización del problema matemático. Una
esquematización del proceso se muestra en la figura 1.2.
Para discretizar un problema matemático se sigue algunas de las estrategias siguientes:
2
Jacques Salomon Hadamard, matemático francés, 1865-1963.
1. Introducción a la computación científica y el análisis numérico 13
Modelación Problemas
matemática bien planteados
Problemas Problemas Problemas
científicos matemáticos computacionales
Discretización
Métodos Software
numéricos numérico
Software
Interpretación Visualización numérico
Soluciones
y gráfica numéricas
validación
B). Reemplazar procesos infinitos a procesos finitos (por ejemplo, una integral o una serie
infinita en una suma finita).
G). Reemplazar matrices generales en matrices que tienen formas simples (como triangular
superior).
obtuvo bajo el supuesto de que las presas disponen de una cantidad ilimitada de alimentos,
y que interactúan con los predadores en un hábitat cerrado, entre otros.
2. De mediciones empíricas. Ocurren cuando hay necesidad de obtener datos en un lab-
oratorio o en el campo experimental, pues todos los instrumentos de medición hasta ahora
inventados son de precisión finita (errores sistemáticos). La exactitud de los datos puede estar
fuertemente limitado por el tamaño de la muestra, o las lecturas pueden estar sujetos a ruidos
aleatorios (errores accidentales). Por ejemplo, cuando hay necesidad de medir la temperatura
durante una determinada hora del día durante un mes, o cuando hay necesidad de obtener
el censo de población de un país.
3. De cálculos previos. Ocurren cuando los datos de entrada del problema fueron resultados
de cálculos aritméticos previos cuyos resultados fueron únicamente aproximados.
Estos tres tipos de fuentes de aproximación ocurren entre el problema científico y su
planteamiento al problema matemático, por lo que en general, los errores que generan quedan
fuera de control del analista numérico. Las otras dos fuentes de aproximación ocurren entre el
problema matemático y la solución del problema computacional. Los errores que se generan
en estas dos últimas fuentes pueden ser controlados por el analista numérico.
4. De discretización (aproximación o truncamiento). Ocurren cuando el problema
matemático es transformado en un problema computacional, pues algunas características
del modelo matemático pueden ser omitidos o simplificados. Por ejemplo, cuando una suma
infinita
X∞ XN
an es “reemplazado00 por la suma finita an ,
n=1 n=1
o cuando una
Z b N
X
f (x)dx es “reemplazado00 por una suma finita de la forma ωn f (xn ) .
a n=1
medida (errores accidentales). Dado que el salón es bastante largo, si sólo se dispone de una
regla o cinta métrica de 3 metros, se necesitará medir la longitud del salón por tramos; por
lo que tanto la base como la altura pueden ser el resultado de cálculos previos.
Suponiendo que la base = 4.35 m y la altura = 9.18 m, entonces
A = 4.35 m × 9.18 m = 39.9330 m2 ∼
= 40 m2 .
Esto último se llama aproximación por redondeo y ocurren prácticamente en todas las
operaciones aritméticas que se realizan. 2
El estudio del efecto que producen las aproximaciones sobre los resultados de un problema
científico o matemático, se llama análisis de error.
B). Cuando
|b
x − x| ∼ −p
= 10 , x 6= 0 ,
|x|
significa que x
b coincide con x hasta p dígitos significativos aproximadamente.
x = (±0.d1 d2 · · · dt · · · ) × 10e ,
f : R −→ R , (1.2)
donde x ∈ R son los datos verdaderos del problema y f (x) la solución verdadera deseada.
Dado que hay errores en los datos verdaderos x, se trabajará con datos aproximados x b, y
dado que también hay necesidad de discretizar el problema f como un problema computa-
cional fb, entonces en lugar del problema (1.2), se estaría resolviendo un problema aproximado
(vecino):
fb : R −→ R
b 7−→ fb(b
x x) .
Dado que también tiene sentido en resolver el problema f con los datos aproximados x
b,
tiene lugar la figura 1.3.
f -
x • • f (x)
1 • f (b
x)
f
x
b • fb - • fb(b
x)
b
Figura 1.3: Diagrama del problema f y f.
fb(b
x) − f (x) = [fb(b
x) − f (b
x)] + [f (b
x) − f (x)] ,
f (x) = cos x ,
f -
x • • y = f (x)
Q
6 Q 6
Q
Q
Q fb
Error retrospectivo QQ Error prospectivo
Q
Q
Q
Q
? f Q
s
Q ?
x
b • - • y
b= fb(x) = f (b
x)
√
Ejemplo 1.6.1. Hacer el análisis del error retrospectivo y prospectivo del problema y = 2
si yb = 1.4 es una solución aproximada.
√
Solución. Para el análisis del error retrospectivo, se trata de encontrar x
b tal que yb = xb.
yb 2 = x
b =⇒ b = (1.4)2 = 1.96
x
∆x = xb − x = 1.96 − 2 = −0.04
|∆x|
× 100 = 0.02 × 100 = 2 % ,
|x|
por lo que la solución yb es razonablemente bueno.
Para el análisis de error prospectivo, se tiene:
fb(b
x) − f (x) = [fb(b
x) − f (b
x)] + [f (b
x) − f (x)]
| {z } | {z }
“Error computacional” “Propagación del error de los datos”
Así que
∆y
= κ ∆x , x 6= 0, y 6= 0 , (1.3)
y x
por lo que el número de condición es un factor de amplificación de la magnitud del error
prospectivo relativo respecto de la magnitud del error retrospectivo relativo.
Así que un problema bien condicionado debe tener su número de condición razonablemente
“pequeño”.
En este caso, el número de condición del problema puede ser arbitrariamente grande.
En la práctica, no siempre es posible obtener la igualdad en (1.3), por lo que es suficiente
con tener una estimación de la forma:
∆y ∆x
y / κ x , x 6= 0, y 6= 0 .
Ejemplo 1.7.1. Análisis de sensibilidad del problema de evaluar una función diferenciable
f : R −→ R.
∆x = x
b−x =⇒ x
b = x + ∆x
f (b
x) − f (x) = f (x + ∆x) − f (x) ∼
= f 0 (x)∆x .
T.V.M.
1. Introducción a la computación científica y el análisis numérico 21
Por lo tanto
f (b
x ) − f (x)
f (x) xf 0 (x)
κ= ∼
= , f (x) 6= 0 ,
xb − x f (x)
x
depende de x, f y f 0 .
por lo que el problema de calcular logaritmos es bien condicionado para x grande y para x
“cercano” a 0, pero mal condicionado “cerca” de 1. Por ejemplo, para x = 1.0001 y x
b = 1.0002 :
∆x ∼ −4
b − x = 10−4
∆x = x y = 10 ,
x
y
y = ln(1.0001) = 9.9995 × 10−5 y yb = ln(1.0002) = 1.9998 × 10−4
∆y ∼
∆y = yb − y = 9.9985 × 10−5 y = 1.
y
Por lo que
∆y ∼ 4 ∆x
κ∼
= 104 y = 10
y x
El número de condición es muy grande, por lo que el error relativo de la solución se
amplifica diez mil veces el error relativo del dato de entrada.
Ejemplo 1.7.2. Análisis de sensibilidad del problema de calcular raíces reales de funciones
continuamente diferenciables f : R −→ R.
Problema matemático: hallar α ∈ R tal que f (α) = 0 .
22 1.7. Nociones de sensibilidad numérica y número de condición
Y
y = f (x)
0 (α, 0) X
y = f (x)
0 (α, 0) X
Desde el punto de vista del análisis del error retrospectivo, un algoritmo es numéricamente
estable si los resultados que produce es la solución exacta de un problema vecino (correc-
tamente formulado), es decir, que las perturbaciones que ocurren durante el cálculo afectan
menos que pequeños errores de los datos de entrada del problema dado.
Sea y la solución verdadera de un problema matemático f y yb una solución aproximada
obtenida por un método fb.
Definición 1.8.2. Se dice que yb es exacta como solución del problema matemático f si la
magnitud del error prospectivo |b
y − y| es “suficientemente pequeño”.
Puesto que
b
|b
y − y| ≤ f (b
x) − f (b
x) + |f (b
x) − f (x)|
| {z } | {z }
“Sensibilidad del problema matemático”
“Estabilidad numérica del método”
Entonces
C). Métodos numéricamente estables aplicados a problemas mal condicionados pueden pro-
ducir resultados inexactos del problema.
1.9. Ejercicios
1. Discuta si es falso o verdadero las afirmaciones 1.1 al 1.6 de la página 39 de Heath
(2002) [12].
2. Contesta brevemente las preguntas 1.12 al 1.17 de la página 40 de Heath (2002) [12].
La parte entera binaria se lee de abajo hacia arriba, y la parte fraccionaria de arriba hacia
abajo, por lo que el resultado es x = 1111011.011101 · · · , que se puede representar en forma
normalizado como:
x = (0.1111011011101 · · · ) × 27 .
25
26 2.1. Representación de números reales en bases arbitrarias
con e ∈ Z y x−ν ∈ {0, 1, . . . , β − 1}. Más aún, existe una única representación de tipo (2.1)
con x−1 6= 0 y con la propiedad de que para cualquier n ∈ N, existe un ν ≥ n tal que
x−ν 6= β − 1 . (2.2)
Demostración. Una prueba se da en Hämmerlin and Hoffmann (1991) [11], y es el siguiente:
Para la existencia de la representación, sea x ∈ R, x 6= 0. Entonces el signo de x queda
únicamente determinado si x > 0 o x < 0, y el número entero e := min{k ∈ Z : |x| < β k }.
Sea
x1 := β −e |x| ,
y se aplica a x1 el método de la parte fraccionaria del ejemplo 2.1.1, con β en lugar de 2.
La definición de e implica que β e−1 ≤ |x| < β e y que 0 < x1 < 1. Generalizando el método
del ejemplo 2.1.1, se considera la regla
β · xν = xν+1 + x−ν , ν ∈ N,
donde x−ν es el entero más grande que no excede a β · xν . Así se producen dos sucesiones de
números {xν }ν∈N y {x−ν }ν∈N con las propiedades
0 ≤ xν < 1 ,
x−ν ∈ {0, 1, · · · , β − 1} , ν ∈ N.
La primera propiedad es claro para ν = 1, pues por definición 0 < x1 < 1. Se supone
cierto para ν > 1 y se probará para ν + 1. Puesto que β · xν = xν+1 + x−ν , donde x−ν es
el entero más grande que no excede a β · xν , es decir x−ν ≤ β · xν < x−ν + 1, entonces
0 ≤ β · xν − x−ν < 1, lo que implica que 0 ≤ xν+1 < 1.
Se probará la segunda propiedad. Para ν = 1, se tiene que 0 < x1 < 1 implica 0 <
β · x1 < β, y si β · x1 = x2 + x−1 , entonces 0 ≤ β · x1 − x2 = x−1 < β − x2 ≤ β. Por
lo que x−1 tiene la propiedad deseada. Se supone que x−ν tiene la propiedad deseada para
ν > 1 y se probará para ν + 1. Como β · xν+1 = xν+2 + x−(ν+1) , donde 0 ≤ xν+1 < 1,
0 ≤ xν+2 < 1 y x−(ν+1) es el mayor entero que no excede a β · xν+1 . Así que 0 ≤ β · xν+1 < β y
0 ≤ β · xν+1 − xν+2 = x−(ν+1) < β − xν+2 ≤ β, lo que muestra que x−(ν+1) tiene la propiedad
deseada.
El argumento inductivo anterior muestra que para cualquier n ∈ N, x1 se puede expandir
como n
X
x1 = x−ν β −ν + β −n xn+1 , (2.3)
ν=1
2. Aritmética de punto flotante 27
donde
∞ ∞
" #
X X 1 β β −n
−ν −n−1 −ν −n−1 −n−1
β =β β =β 1 =β = ,
ν=n+1 ν=0
1− β
β−1 β−1
por lo que
n
X
x1 = x−ν β −ν + β −n .
ν=1
Comparando esta última igualdad con la fórmula (2.3), se tiene que xn+1 = 1 que con-
tradice con el hecho de que 0 ≤ xn+1 < 1. Esta contradicción muestra que la propiedad (2.2)
se debe cumplir.
Para probar la unicidad de la representación (2.1), se supone que x1 tiene dos expansiones
∞
X ∞
X
−ν
x1 = x−ν β y y1 = y−ν β −ν .
ν=1 ν=1
P
Sea z−ν := y−ν − x−ν para todo ν ∈ N. Es claro que ∞ ν=1 z−ν β
−ν
= 0, y hay que probar
que z−ν = 0 para todo ν ∈ N. Suponga por el contrario que existe un primer índice n − 1 tal
28 2.2. Sistemas de punto flotante
que z−(n−1) 6= 0. Es claro que se puede suponer que z−(n−1) ≥ 1. Puesto que
∞
X ∞
X ∞
X
−ν −ν −ν
z−(n−1) β −(n−1) = (−z−ν )β ≤ |z−ν |β ≤ (β − 1)β
ν=n ν=n ν=n
" # (2.4)
∞
X 1
= (β − 1) β −ν = (β − 1)β −n 1 = β −(n−1) ,
ν=n
1− β
entonces z−(n−1) ≤ 1, y por el supuesto anterior se debe tener que z−(n−1) = 1. Esto significa
que la desigualdad en (2.4) realmente debe ser una igualdad, por lo que
La única posibilidad para que se cumpla la igualdad anterior es que y−ν = 0 y x−ν = β −1,
para todo ν ≥ n. Pero esto contradice con el supuesto de que x1 satisface la propiedad (2.2),
por lo que z−ν = 0 para todo ν ∈ N. Así que las dos expansiones deben ser lo mismo.
Las bases más usados son β = 2 (binario), 8 (octal), 10 (decimal) y 16 (hexadecimal)
donde los dígitos en este último caso son 0, 1, · · · , 9, A, B, C, D, E y F.
Note que si e ≥ 1, entonces (2.1) se escribe simplemente en la forma β−cimal:
donde β es un número entero ≥ 2 que se llama base del sistema, t también es un número
entero > 0 que se le llama precisión del sistema, y [L, U ] es el rango del exponente e con
L entero negativo y U entero positivo. Algunos ejemplos típicos que se encuentran en la
literatura se muestran en la tabla 2.2. Los elementos del S.P.F. se llaman números punto
flotante.
Observación 2.2.1. Si x = ±0.d1 d2 · · · dt × β e ∈ fl(β, t, L, U ), d1 6= 0, y m = 0.d1 d2 · · · dt ,
entonces
β −1 ≤ m < 1 ,
por lo que se dice que los números punto flotante distintos de cero tienen formato normali-
zado. Al número m se le llama mantisa de x.
2. Aritmética de punto flotante 29
Sistema β t L U
IEEE SP 2 24 −126 127
IEEE DP 2 53 −1 022 1 023
Cray 2 48 −16 383 16 384
HP calculator 10 12 −499 499
IBM mainframe 16 6 −64 63
Tabla 2.2: Parámetros típicos de sistemas de punto flotante.
Existe una forma alternativa para normalizar los números punto flotante, pero aquí se
sigue la notación de Buchanan and Turner (1992) [1], Hämmerlin and Hoffmann (1991) [11],
y Stoer and Bulirsch (1993) [24].
En un sistema binario, d1 es siempre 1 y no hay necesidad de almacenarlo, por lo que se
gana un bit extra de precisión para un campo de ancho dado (así el número 1 se le considera
un bit escondido). El sistema IEEE1 SP (formato simple) es un sistema binario de 32 bits
(ancho de campo): 1 bit para el signo, 8 bits para el exponente e y 23 bits para la mantisa m
(equivalente a 7 dígitos decimales significativos). El bit del signo es 0 para números positivos y
1 para los negativos. El sistema IEEE DP (formato doble) es un sistema binario de 64 bits: 1
bit para el signo, 11 bits para el exponente e y 52 bits para la mantisa m (equivalente entre 15
y 16 dígitos decimales significativos). Los microprocesadores Intel realizan su aritmética con
un formato extendido en hardware de 80 bits: 1 bit para el signo, 15 bits para el exponente
y 64 bits para la mantisa m (equivalente entre 19 y 20 dígitos decimales significativos), en
este caso d1 no está oculto (Overton, 2002 [19]).
Se presentan a continuación dos programas que imprimen resultados en formato simple y
doble precisión.
C IMPRESION DE RESULTADOS EN PRECISION SIMPLE
C
C2345678...
REAL NUMERO, RAIZC
NUMERO = 145
RAIZC = -SQRT(NUMERO)
WRITE(6,10)RAIZC
10 FORMAT(/,8X,’ EL RESULTADO DE LA RAIZ ES:’,1X,E13.7)
END
Al ejecutar el programa imprime el resultado (nótese el formato):
EL RESULTADO DE LA RAIZ ES: -.1204159E+02
C
C2345678...
DOUBLE PRECISION NUMERO, RAIZC
NUMERO = .145D+3
RAIZC = -DSQRT(NUMERO)
WRITE(6,10)RAIZC
10 FORMAT(/,8X,’ EL RESULTADO DE LA RAIZ ES:’,1X,D21.15)
END
El resultado de la ejecución ahora es:
EL RESULTADO DE LA RAIZ ES: -.120415945787923D+02
Observa la diferencia entre los dos programas y las impresiones correspondientes.
xmin = 1. 00 · · · 0} ×2L−1 ,
| {z
t−1 ceros
y se guarda su mantisa solamente los t − 1 ceros (el 1 está oculto), se aprovechan los espacios
que ocupan dichos ceros para almacenar otros números más pequeños de la forma:
que se les llama números subnormales. Estos números no están normalizados y por consi-
guiente son menos precisos.
2. Aritmética de punto flotante 31
2.3. Redondeo
Definición 2.3.1. Un número real x 6= 0 está en el intervalo normalizado del S.P.F. si:
Más aún:
x+ − x− = β e−t .
Demostración. Dado que
d
1 d2 dt dt+1 e dt+1
x = + 2 + · · · + t + t+1 + · · · × β = x− + + · · · × β e < x+ ,
β β β β β t+1
| {z }
mantisa de x−
entonces
1
x+ = x − + × β e = x− + β e−t .
βt
En este caso se dice que x− se obtiene por truncamiento, pues simplemente se descartan
los dígitos di , i ≥ t + 1.
Casos especiales
32 2.3. Redondeo
definido por
En el caso de un empate |x − x− | = |x − x+ | :
1) En un sistema binario (β = 2), se escoge el red(x) como el flotante que tenga
su bit menos significativo igual a 0 (Overton, 2002 [19]).
2. Aritmética de punto flotante 33
2) Si β > 2, el red(x) puede ser más complicado pero una forma simple es elegir
el flotante cuyo último dígito significativo sea par (redondeo al par más
cercano).
El estándar IEEE usa por defecto el modo de redondeo al más cercano, y es la que se usa
casi siempre en la práctica. En adelante se referirá por redondeo a dicho modo.
Ejercicio 2.3.1. Sea x en un sistema binario dado por
x = (0.1b2 b3 · · · dt−1 dt dt+1 · · · ) × 2e . (2.5)
Demuestra que
A). Si dt+1 = 0 entonces red(x) = x− .
B). Si dt+1 = 1 y di = 1 para algún i > t + 1, entonces red(x) = x+ .
C). Si dt+1 = 1 y di = 0 para todo i ≥ t + 2, entonces |x − x− | = |x − x+ |.
“Los bits menos significativos, es decir, los bits finales de x− y x+ deben ser distintos,
y para romper el empate se escoge aquél cuyo bit final sea 0”.
Ejemplo 2.3.1. Redondeos al par más cercano con dos dígitos significativos:
red(2.750) = 2.8, red(2.850) = 2.8 y red(−1.450) = −1.4 .
Teorema 2.3.2. Sea β ≥ 2 un entero par, t ∈ Z+ y x ∈ R, x 6= 0, con representación
x = ±(0.d1 d2 · · · dt · · · ) × β e ,
donde d1 ∈ {1, 2, . . . , β − 1} y di ∈ {0, 1, . . . , β − 1}, i ≥ 2. Entonces
1 e−t red(x) − x 1 −(t−1) red(x) − x 1 −(t−1)
|red(x) − x| ≤ β , ≤ β y
2 x 2 red(x) ≤ 2 β .
β ≤ m < 1. De donde
−1
1
1< ≤β.
m
Así que
1 e−t
red(x) − x |red(x) − x| β 1 1 −t 1 1−t 1 −(t−1)
= ≤ 2
= β ≤ β = β .
x |x| m×β e 2m 2 2
Similarmente se verifica la tercera desigualdad.
34 2.4. Operaciones básicas de punto flotante
2.6. Sumas
2.6.1. Análisis de estabilidad numérica
Problema 2.6.1. Para a1 , a2 , . . . , an en R, calcular
Xn
S= ak .
k=1
Algoritmo 2.6.1. El algoritmo estándar para calcular la suma del problema 2.6.1 está dado
por:
sum ← 0.0
Para k = 1 : n, hacer
sum ← sum + ak
Terminar.
donde |εj | ≤ u, j = 1 : n, ε1 = 0.
2. Aritmética de punto flotante 37
n+1
X n+1
Y
= ak ∗ (1 + εj ), ε1 = 0, |εj | ≤ u, j = 2 : n + 1 .
k=1 j=k
Lema 2.6.2. Sea n entero positivo tal que nu < 0.01 y 0 < |εj | ≤ u para j = 1 : n.
n
Y
Si (1 + εj ) = 1 + δn , entonces |δn | ≤ 1.01nu.
j=1
Así que
n 2 n 3 n
|δn | ≤ nu + u + u +···+ un
2 3 n
n(n − 1) 2 n(n − 1)(n − 2) 3 n(n − 1)(n − 2)(n − 3) 4
= nu + u + u + u + · · · + un
2! 3! 4!
0.01 (0.01)2 (0.01)3 (0.01)n−1
< nu + nu + + +···+
2! 3! 4! n!
1 1 1 1
= nu + nu + + +···+
200 60 000 24 000 000 n! × 102(n−1)
∼
= nu + nu(0.005 + 0.00001666 · · · + 0.000000041666 · · · + · · · )
∼
= nu + nu(0.00501670833 · · · ) ≤ nu + 0.01nu = 1.01nu .
38 2.6. Sumas
Por lo tanto, la suma de números positivos hecha en orden natural por el algoritmo
2.6.1 es numéricamente estable. Sin embargo, esto no garantiza que el resultado que
se obtiene de la suma sea exacto.
Por lo que la desigualdad (2.8) sigue siendo válida, así que el algoritmo 2.6.1 también
es numéricamente estable, para este caso.
donde b
ak = ak (1 + δn−k+1 ), |δj | ≤ 1.01ju, j = 1 : n − 1, δn = δn−1 .
Demostración. Se sigue de los lemas 2.6.1 y 2.6.2.
Observación 2.6.2. Del teorema 2.6.2 o 2.6.1, se sigue que
!
Xn Xn
fl a k − a k ≤ |a1 | |δn−1 | + |a2 | |δn−1 | + |a3 | |δn−2 | + · · · + |an | |δ1 |
k=1 k=1
≤ 1.01u [(n − 1)|a1 | + (n − 1)|a2 | + (n − 2)|a3 | + · · · + 2|an−1 | + |an | ].
Lo anterior sugiere construir algoritmos más efectivos que el algoritmo estándar 2.6.1 para
la suma de n números arbitrarios. Investiga sobre el algoritmo “divide y vencerás”.
Ejemplo 2.6.1. Calcula la suma en orden creciente y decreciente en el sistema fl(10, 4, −9, 9)
con redondeo al par más cercano, de los siguientes números: a 1 = 1.234×101 , a2 = 3.453×100 ,
a3 = 3.441 × 10−2 , a4 = 4.667 × 10−3 y a5 = 9.876 × 10−4 .
x2 x3
ex = 1 + x + + +···
2! 3!
Para x < 0, la serie de Taylor es alternante, por lo que puede haber resultados desas-
trosos por cancelación numérica.
v
uX
u n 2
B). kxk2 := t xk “Norma Euclidiana”
k=1
conocido como fórmula de dos pasos (uno para calcular la media y la otra para la
desviación estándar). Para una mejor eficiencia, se puede usar la fórmula equivalente
de un solo paso
" n
!#1/2
1 X
σ= x2 − nx 2 . (2.11)
n − 1 k=1 k
`11 x1 = c1
`21 x1 + `22 x2 = c2
(2.12)
··· ··· ··· ···
`n1 x1 + `n2 x2 + · · · + `nn xn = cn
x2 xn
y = ex = 1 + x + +···+ , n = n(x) ,
2! n!
y se hará el análisis al realizar la suma con el algoritmo 2.6.1.
Bajo el supuesto de que cada xk /k! son bien calculados y que nu < 0.01, se sigue del lema
2.6.1 y lema 2.6.2 que
n
X xk
yb = fl(y) = (1 + δn−k+1 ) , con |δj | ≤ 1.01ju, j = 1 : n, y δn+1 = δn .
k=0
k!
Así que
n
X n
X
|x|k |x|k
|b
y − y| ≤ |δn−k+1 | ≤ 1.01(nu) = 1.01(nu)e|x| . (2.14)
k=0
k! k=0
k!
Si x ≥ 0, se sigue de (2.14) que el error apriori es acotado por
|b
y − y|
≤ 1.01nu .
|y|
|b
y − y|
≤ 1.01(nu) e−2x ,
|y|
κ := e−2x > 1 .
Así que para x << −1, el método de la serie de Taylor es numéricamente inestable.
2. Aritmética de punto flotante 43
1. Se dirá que f (x) = O(g(x)) cuando x → x0 si existe una constante C > 0 y δ > 0 tal
que
f (x)
g(x) ≤ C ,
2. Se dirá que f (x) = o(g(x)) cuando x → x0 si para cualquier constante C > 0 existe
δ > 0 tal que
f (x)
g(x) ≤ C ,
D). f (x) = O(g1 (x)) y g1 (x) = O(g2 (x)) ⇒ f (x) = O(g2 (x)).
E). f1 (x) = O(g1 (x)) y f2 (x) = O(g2 (x)) ⇒ f1 (x) · f2 (x) = O(g1 (x) · g2 (x)).
Xn
∂f
∆y := yb − y ≡ f (x + δx) − f (x) = (x) δxk + ψ(δx) , (2.15)
k=1
∂x k
donde
ψ(δx)
−→ 0 cuando δx → 0 ,
kδxk∞
δx = (δx1 , δx2 , . . . , δxn )T , δxk ≡ ∆xk := x
bk − xk , k = 1 : n.
El análisis del error prospectivo dada por la fórmula (2.15), se llama análisis de error
de primer orden para el problema y = f (x).
Así que
∆z δb
≤ 2 max δa , + ψ ∗ (δx) ,
z a b
donde
b b
∗
ψ (δx) = |ψ(δx)| = O kδxk2∞ , lo que implica que ψ ∗ (δx) = O kδxk2∞ .
a a
a + ∆a
z + ∆z = .
b + ∆b
De aquí se sigue que
a + ∆a a b∆a − a∆b a ab ∆a − ∆b z b
∆z = − = = = ∆a − ∆b
b + ∆b b b(b + ∆b) b b + ∆b b + ∆b a
z b z ∆a ∆b
= ∆b
∆a − ∆b = ∆b
− ,
b 1+ b a 1+ b a b
de donde
∆z 1 ∆a ∆b
= − ,
z 1 + ∆b
b
a b
por lo que
∆z
≤ 2 max ∆a , ∆b .
z 1 +
∆b a b
b
Si |∆b| ≤ ε|b| con 0 < ε 1, entonces −ε|b| ≤ ∆ ≤ ε|b|. Si b > 0, entonces −εb ≤ ∆b ≤
εb, de donde
∆b
−ε ≤ ≤ ε,
b
que también es válido para b < 0.
Así que
∆b
1−ε≤1+ ≤ 1+ε,
b
46 2.8. Ejercicios
Por lo tanto,
∆z ∆a ∆b
∗
z ≤ κ max a , b ,
donde
2
κ∗ = ,
1−ε
que para 0 < ε 1, κ∗ es relativamente pequeño, por lo que se deduce de nuevo que el pro-
blema es numéricamente bien condicionado. 2
2.8. Ejercicios
Representación de números reales en bases arbitrarias
2. En la tabla 2.3 se presenta la tabla de multiplicar en base 5, muy útil para realizar
operaciones aritméticas elementales en base 5.
5 0 1 2 3 4 10
0 0 0 0 0 0 0
1 0 1 2 3 4 10
2 0 2 4 11 13 20
3 0 3 11 14 22 30
4 0 4 13 22 31 40
10 0 10 20 30 40 100
Tabla 2.3: Multiplicación en base 5.
Tablas similares se pueden construir en otras bases. ¿Cuáles serán las tablas de multi-
plicación en bases 2, 3 y 4?.
±(0.a1 a2 · · · ak b1 b2 ...bs ) × β p .
donde 0 < b−m < β, 0 ≤ bk < β, k = −(m − 1), −(m − 2), · · · , converge a un número
real.
A). Demuestra que {qn }n∈N es una sucesión creciente y acotada. Luego, por el axioma
del supremo, existe a∗ ∈ R tal que a∗ = sup qn (o bien que qn → a∗ ∈ R, cuando
n∈N
n → ∞).
B). Demuestra que 0 ≤ a − qn ≤ β p−n . Esto es, que qn → a cuando n → ∞. Así,
concluye que a = a∗ ∈ R.
18. Indica cuáles de los números siguientes no pertenecen a fl(2, 4, −2, 2):
20. Verifica que los números subnormales positivos más pequeño y más grande que se
pueden representar en un sistema binario son:
smin = 2L−t y smax = 1 − 2−(t−1) 2L−1 .
Redondeo
23. Con respecto al sistema fl(10, 4, −2, 3), halla el fl(x) para x = (2./3.)T , x = (3./7.)R ,
x = (9.99999)R y x = (π)R . Aquí, (·)T significa con truncamiento y (·)R con redondeo.
24. Considera el sistema de números punto flotante fl(β, t, L, U ) con unidad de redondeo u.
A). Si α > 0 es el elemento más chico en fl(β, t, L, U ) ¿Es cierto que u < α?
B). Si 2 |β y 1 − t > L, demuestra que u ∈ fl(β, t, L, U ).
2. Aritmética de punto flotante 49
C). ¿En los estándares de IEEE 32 bits, u ∈ fl(2, 24, −126, 127)?
1
entonces u = eps.
2
Algunos autores como Overton (2002) [19], definen a eps como el epsilon de la
máquina.
26. El algoritmo siguiente es debido a Moler y sirve para el cálculo de la unidad de redondeo
u de la máquina:
a ← 4.0/3.0
b ← a − 1.0
c←b+b+b
u ← |c − 1.0|
C). Compara tus resultados con los del ejemplo 2.3.2 y del ejercicio 26. Explica.
29. Recordando que fl(a) = a(1 + δ), para algún δ con |δ| ≤ u, verifique que si:
1. √
A). fl10 = 0.25 B). fl10 2 = 1.414214
4.
1.
C). fl10 = 0.3333333 D). fl10 (π) = 3.14159265359
3.
1
¿Cuánto vale δ? ¿Cuánto vale u (la unidad de redondeo)? ¿Es |δ| ≤ u?
2
30. En una aritmética de punto flotante (A.P.F.) ¿Es cierto que:
(b − (a + b)) + a = 0 ?
32. En una A.P.F. de 5 dígitos significativos con redondeo, halla la solución positiva más
chica de la ecuación:
fl(123.45 + a) = a .
33. En una A.P.F. de 5 dígitos significativos con redondeo, halla la solución positiva más
grande de la ecuación:
fl(123.45 + b) = 123.45 .
2. Aritmética de punto flotante 51
Cancelación numérica
35. En general se evita la cancelación numérica con el fin de obtener métodos numérica-
mente estables. Sin embargo, existen casos en donde evitarla nos conduce a resultados
sorprendentemente absurdos. En una aritmética de punto flotante de 4 decimales con
redondeo, para a = 0.8717 y b = 0.8719, calcula el punto medio c = 21 (a + b) del
intervalo [a, b]. ¿De qué otra manera se puede calcular c?
36. Escribe la forma conveniente para evaluar, evitando cancelación numérica, cada una de
las siguientes funciones:
√
A). f (x) = x2 + 1 − x, para x = 105 con t = 7 y redondeo al par más cercano.
√
B). f (x) = ln(x − x2 − 1), para x >> 1 .
C). f (x) = (a + x)n − an , para x ∼
= 0.
D). f (x) = ex − x − 1, para x ∼
= 0.
√
E). f (x) = (tg x − sen x)/ x − 1 + x2 , para x = 0.125 × 10−9 .
37. Evalúa f (x) = (1 − cos x)/x2 , para x = 1, 0.1, 0.01, . . . , 10−19 , en precisión simple y
doble. Estudia tus resultados.
38. Elabora un buen programa, usando sólo aritmética real, para el cálculo de las raíces
(reales o complejas) de la ecuación de segundo grado ax2 + bx + c = 0: 1. Sin evitar
cancelación catastrófica, y 2. Evitando cancelación catastrófica. Prueba tu programa
con las ecuaciones siguientes e imprima los resultados de cada una.
39. En el año 250 A. de C., el matemático griego Arquímedes estimó el número π como
sigue. Consideró un círculo con diámetro 1 y circunferencia π. Inscribió un cuadrado.
El perímetro del cuadrado es menor que la circunferencia, y este es una cota inferior de
π. Luego, Arquímedes consideró un octágono inscrito, un dieciseiságono, etc., cada vez
duplicaba el número de lados del polígono inscrito y obtenía una mejor aproximación
de π. Usando un polígono inscrito y un circunscrito de 96 lados, pudo mostrar que
223/71 < π < 22/7. Existe una forma recursiva para estas estimaciones.
52 2.8. Ejercicios
n
A). Sea pn el perímetro del polígono
√ inscrito con 2 lados. Entonces p2 es el perímetro
del cuadrado inscrito, p2 = 2 2. En general:
q p
n
pn+1 = 2 2(1 − 1 − (pn /2n )2 ) , n ≥ 2 . (2.17)
donde p √
rn+1 = 2(1 − 1 − (pn /2n )2 ), r3 = 2/(2 + 2) .
Muestra que
rn
rn+1 = √ , n ≥ 3. (2.18)
2 + 4 − rn
C). Usa la iteración (2.18) para calcular rn , n = 3, 4, . . . , 90, en simple presición y
n = 3, 4, . . . , 550 en doble precisión (esta modificación lo propuso W. Kahan).
D). Observa que eventualmente, 4 − rn se redondeará a 4, y consecuentemente la
fórmula (2.18) se verá afectada también por errores de redondeo para n0 s grandes.
¿Nos debemos preocupar por esto?
Es obvio que hay una línea recta que mejor se ajusta a estos puntos. Para hallar la
recta y = bb + mx
b de ajuste óptimo, según el criterio de mínimo de cuadrados, se suelen
usar las populares fórmulas:
x1 y1 + x2 y2 + x3 y3 − 1/3(x1 + x2 + x3 )(y1 + y2 + y3 )
m
b = , y
(x21 + x22 + x23 ) − 1/3(x1 + x2 + x3 )2
bb = 1 m
b
(y1 + y2 + y3 ) − (x1 + x2 + x3 ) .
3 3
Sumas
41. En una A.P.F. de 5 decimales con redondeo, calcula el valor límite de la sucesión
sn+1 = fl(sn + a), n ≥ 0, con s0 = 0.0, para a = 1.0, 51.0, 100.0, y 555.0 ¿Cuál es tu
conjetura?
42. En una A.P.F. de 3 decimales con redondeo
A). Calcula la suma de los números siguientes:
1050, 44, 3, 4, 9910, 38, 49, 48, 547 y 145
¿Cuál es el error relativo de tu resultado? ¿Cuántas cifras de tu resultado son
correctas?
B). Repite el inciso anterior, pero sumando del número menor al mayor.
Comenta.
43. Análisis de estabilidad en el cálculo de un producto.
n
Y
Sean ak ∈ R, ak 6= 0, k = 1 : n, calcular el producto: P = ak .
k=1
Algoritmo 2.8.1. El algoritmo estándar para calcular el producto P está dado por:
prod ← 1.0
Para k = 1 : n, hacer
prod ← prod ∗ ak
Terminar.
Demuestra que:
A). [Análisis de error retrospectivo].
n
! n
Y Y
fl ak = a1 ak (1 + εk ) , donde |εk | ≤ u, k = 2 : n
k=1 k=2
n
Y
= ak ,
b donde b
a 1 = a1 , b
ak = ak (1 + εk ), k = 2 : n.
k=1
54 2.8. Ejercicios
= xT yb , donde ybk = yk (1 + δk ), k = 1 : n ,
P
B). Para la expresión popular dada por S1P ≡ nk=1 x2k − nx2 (compare conP la fórmula
de un solo paso dado por (2.11)), y bajo el supuesto de que fl(S1P ) = fl ( nk=1 x2k )−
nx, demuestra que
|fl(S1P ) − S1P |
≤ 1.01(nu)κ(S1P ) ,
|S1P |
donde
nx 2
κ(S1P ) = 1 + .
S1P
Escriba sus conclusiones.
C). Demuestra ahora que una expresión alternativa para κ(S1P ), de fácil interpretación,
y por ello de mayor importancia práctica, es
2 2
x kxk2
< κ(S1P ) < ,
σ σ
47. Una forma de evaluar ex , para x pequeña, es vía su desarrollo en serie de Taylor, en
base al segmento del algoritmo siguiente:
s ← 1.0
term ← 1.0
k←1
Hasta que |sa − s| ≤ s ? tol, hacer:
term ← x ? (term/k)
k ←k+1
write(?, ?)k, s, term
sa ← s
s ← s + term
A). El programa que se anexa está basado en el algoritmo anterior. Captura el pro-
grama y pruébalo en WATFOR87 para un x dado, por ejemplo, para x = −5.5.
C CALCULO DE LA EXP(X) A TRAVES DE LA SERIE DE TAYLOR
C2345678
REAL S,TERM,SA,X,TOL,EXPO,EAPOS,KAPPA,EAPRIO
INTEGER K
WRITE(*,*)’DAME X:’
READ(*,*)X
C
CALL MOLER(TOL)
C
S=1.0
TERM=1.0
K=1
100 CONTINUE
TERM=X*(TERM/K)
K=K+1
WRITE(*,*)K,S,TERM
SA=S
S=S+TERM
IF (.NOT. (ABS(S-SA) .LE. TOL*ABS(S))) GO TO 100
C
EXPO=EXP(X)
EAPOS=ABS(EXPO-S)/EXPO
C
IF (X .LT. 0.0) THEN
KAPPA=EXP(-2.0*X)
ELSE
KAPPA=1.0
2. Aritmética de punto flotante 57
ENDIF
EAPRIO=(1.01*K)*KAPPA*TOL
WRITE(*,*)X,EXPO,SA,K,EAPOS,KAPPA,EAPRIO
STOP
END
C
C **************************************************
C
SUBROUTINE MOLER(TOL)
REAL A,B,C
C
A=4.0/3.0
B=A-1.0
C=B+B+B
TOL=ABS(C-1.0)
RETURN
END
C
C **************************************************
C). Ejecuta tu programa para x = ±1.5, ±5.5, ±10.5, ±15.5 y ±20.5. ¿Cuáles son los
errores relativos apriori y aposteriori, en cada caso? Comenta.
D). ¿En qué paso de la recursión se da la cancelación numérica para x = −20.5? ¿De
qué otra forma calcularías e−20.5 ? Comenta.
ψ(δx)
lim =0 sı́ y sólo si ψ(δx) = o(kδxk∞ ) cuando δx → 0 .
δx→0 kδxk∞
50. Desarrolla el análisis de sensibilidad numérica (usando análisis de primer orden) para el pro-
ducto de dos números reales (i.e., el análisis de sensibilidad de la función z = a · b). Comenta.
donde
|a| |b| |a|
κ ≡ 2 · max , =2 ,
|z| |z| |z|
|fl(a − b) − (a − b)|
≤ κu ,
|a − b|
donde β −(t−1) < κu < β −(t−3) , (es decir, para fines prácticos, κu ∼
= β −(t−2) ).
2. Aritmética de punto flotante 59
52. Análisis de sensibilidad numérica del problema de cálculo de raíces de una ecuación
cuadrática con respecto a los coeficientes. Sea la ecuación ax 2 +bx+c = 0 con coeficientes
reales con a 6= 0 tales que b2 − 4ac > 0, y con raíces r1 y r2 (r1 6= r2 ). Usando la aproximación
del primer orden
∂r1 ∂r1 ∂r1
∆r1 = δa + δb + δc + ψ ,
∂a ∂b ∂c
con
ψ
−→ 0 cuando (δa, δb, δc) → 0 ,
max{|δa|, |δb|, |δc| }
demuestra que
|∆r1 | |r1 | + |r2 | |δa| |δb| |δc|
≤ + + + ψ∗ ,
|r1 | |r2 − r1 | |a| |b| |c|
donde
ψ∗
−→ 0 cuando (δa, δb, δc) → 0 ,
max{|δa|, |δb|, |δc| }
y por lo tanto
|∆r1 | |δa| |δb| |δc|
≤ κ · max , , + ψ∗ ,
|r1 | |a| |b| |c|
en donde
|r1 | + |r2 |
κ := 3 ,
|r2 − r1 |
A). Verifica que las raíces rb1 y rb2 de la ecuación x2 − 4x + (4 − ε) = 0, con 0 < ε 1, están
√ √ √
dadas por rb1 = 2 − ε y rb2 = 2 + ε. Luego, se tiene que |b r1, 2 − 2| / |2| = 12 ε; y en
consecuencia, si ε = 10−6 , las raíces se ven perturbadas, respecto a ε, por un factor de
103 .
B). Muestra que las raíces rb1 y rb2 de la ecuación (1 − ε)x2 − 4x + 4 = 0, con 0 < ε 1,
están dadas por √ √
2−2 ε 2+2 ε
rb1 = y rb2 = ,
1−ε 1−ε
En consecuencia, se tiene que |b ∼ √ε. Y por lo tanto, para ε = 10−6 las
r1, 2 − 2| / |2| =
raíces se ven perturbadas por un factor de 2·10 3 .
C). Repite el análisis anterior para la ecuación x 2 − (4 + 2ε)x + 4 = 0, donde 0 < ε 1.
60 2.8. Ejercicios
2 kxk2
κ(σ) := √ , (2.19)
n − 1σ
κ(σ) ≥ 2 .
|b
σ − σ|
≤ κ(σ)u + O u2 ,
σ
61
62 3.1. Normas vectoriales y matriciales
y las p−normas
kAxkp
kAkp = sup , A ∈ Rm×n , x ∈ Rn , p ≥ 1 .
x6=0 kxkp
Propiedad 3.1.1 (Consistencia).
kAxkβ
kAkα,β = sup , A ∈ Rm×n , x ∈ Rn ,
x6=0 kxkα
por lo que se dice que que la norma matricial k · kα,β está subordinada a (o es consistente
con) las normas vectoriales k · kα y k · kβ . √
Note que para la matriz identidad In×n : kIn×n kF = n y kIn×n kp = 1.
Propiedad 3.1.2 (Submultiplicativa).
entonces m
X
kAk1 = max |aij | , A ∈ Rm×n
j=1:n
i=1
donde κ(A) := kAk kA−1 k se le llama número de condición de la matriz A, con la con-
vención que κ(A) = ∞ si A es singular.
“El número de condición es una medida de sensibilidad del error relativo en la solución
del sistema lineal (3.2) a cambios en el lado derecho b”.
Demostración. Dado que A(x + ∆x) = b + ∆b , y A es no singular, se sigue que
∆x = A−1 ∆b .
Así que
k∆xk ≤ kA−1 k k∆bk . (3.3)
Y dado que
1 kAk
kbk = kAxk ≤ kAk kxk =⇒ ≤ , x 6= 0 , b 6= 0 .
kxk kbk
Conclusión 3.2.1. El problema de resolver el sistema lineal (3.2) es muy mal condicionado
si κ(A) >> 1 , y bien condicionado cuando κ(A) es “pequeño”.
Conclusión 3.2.2. Si los datos A ∈ Rn×n no singular y b ∈ Rn , b 6= 0 , son exactos a
precisión de la máquina, entonces una cota razonable para el error relativo en la solución del
sistema lineal Ax = b es dado por
kb
x − xk
/ 2κ(A)u = β logβ (κ(A))−t+1 ,
kxk
lo que dice que la solución calculada x
b pierde alrededor de log β (κ(A)) dígitos significativos
con respecto de la exactitud de los datos de entrada.
3.2.2. Residuales
Definición 3.2.1. El residual de la solución aproximada x
b de un sistema lineal Ax = b,
está definido por
r := b − Ab
x.
Es claro que si A es no singular, entonces k∆xk = kb x − xk = 0 si y sólo si krk = 0 .
Sin embargo, esto no necesariamente ocurre en la práctica, es decir, k∆xk y krk pueden
no ser simultáneamente pequeños, ya que cuando Ax = b se multiplica por una constante
c 6= 0 su solución no cambia, mientras que r = c(b − Ab x) “puede ser arbitrariamente grande
o pequeño”. Así que se introduce la siguiente definición:
Definición 3.2.2. El residual relativo de la solución aproximada x
b de un sistema lineal
Ax = b, se define como
krk
rrel := ,
kAk kb
xk
A ∈ Rn×n no singular, y x
b ∈ Rn , x
b 6= 0.
Proposición 3.2.1. Si A ∈ Rn×n es no singular, b ∈ Rn , y x b es solución aproximada de
Ax = b , entonces
k∆xk krk
≤ κ(A) .
kb
xk kAk kbxk
“Así que cuando A es bien condicionada, un residual relativo pequeño implica un error
relativo pequeño en la solución”.
Demostración.
x − xk = kA−1 Ab
k∆xk = kb x − A−1 bk = kA−1 (Ab
x − b)k = k − A−1 rk ≤ kA−1 k krk .
Dividiendo entre kb
xk y completando el lado derecho, se tiene el resultado.
3. Sistemas lineales de ecuaciones algebraicas 67
krk k∆Ak
≤ .
kAk kb
xk kAk
“Así que un residual relativo grande implica un error retrospectivo grande en la matriz
A, lo que significa que el algoritmo usado para calcular la solución xb es numéricamente
inestable”.
Demostración. De (A + ∆A)b
x = b se tiene que
krk = kb − Ab
xk = k(∆A)b
xk ≤ k∆Ak kb
xk ,
kAk∞ = max {1.572, 0.787} = 1.572 , κ∞ (A) = cond(A, inf) = 1.696 × 104 ,
x
ba2 1.001 (1.57 × 10−3 , 7.87 × 10−4 )T 1.57 × 10−3 9.98 × 10−4
Tabla 3.1: Residuales y residuales relativos.
El residual y residual relativo más pequeño lo tiene x ba1 , sin embargo, no es la mejor
solución pues la solución exacta es x = (1, −1)T . El problema radica en que la matriz A es
mal condicionada.
68 3.3. Regla de Cramer y métodos de eliminación Gaussiana
∆k
xk = , cuando ∆ 6= 0, k = 1 : n, (3.6)
∆
donde
a11 a12 · · · a1n
a21 a22 · · · a2n
∆ = det(A) = .. .. .. .. ,
. . . .
an1 an2 · · · ann
y ∆k es el determinante de la matriz que se obtiene de A al remplazar su columna k−ésima
por el vector b = (b1 , b2 , . . . , bn )T .
Ejemplo 3.3.1. Resolver el siguiente sistema en una A.P.F. de cuatro dígitos significativos
con redondeo al par más cercano:
0.457 0.330 x1 0.127
Ax = = = b. (3.7)
0.913 0.659 x2 0.254
Solución.
0.457 0.330
∆ = = 0.3012 − 0.3013 = −10−4 .
0.913 0.659
Por lo tanto, el sistema tiene solución única en f l(10, 4, L, U ).
0.127 0.330
∆1 = = 0.08369 − 0.08382 = −0.13 × 10−3 ,
0.254 0.659
3. Sistemas lineales de ecuaciones algebraicas 69
0.457 0.127
∆2 = = 0.1161 − 0.1160 = 10−4 .
0.913 0.254
Aplicando la fórmula (3.6) se obtiene la solución deseada del sistema (3.7):
Ejemplo 3.3.2. Resolver ahora el s.l.a. (3.7) en la misma A.P.F. de cuatro dígitos signi-
ficativos con redondeo al par más cercano.
Solución. Se aplicarán operaciones elementales sobre la matriz aumentada del sistema (3.7),
que está dada por
0.457 0.330 0.127
[A|b] := . (3.10)
0.913 0.659 0.254
Sean R1 y R2 los renglones 1 y 2, respectivamente de la matriz aumentada (3.10), y
reemplazando:
a21 R1
R2 ← − R1 + R2 = −a21 ∗ + R2 ,
a11 a11
70 3.3. Regla de Cramer y métodos de eliminación Gaussiana
donde
R1
−a21 ∗ = −.913 ∗ [1, 0.7221, 0.2779] = [−0.913, −0.6593, −0.2537] .
a11
Resolviendo el sistema triangular superior (3.11) con el método de sustitución retrospec-
tiva, se obtiene la solución
k∆Ak1 k∆bk1
/u y / u,
kAk1 kbk1
donde
1 1
u= × 10−(4−1) = × 10−3 .
2 2
Así que
k∆xk1 k∆Ak1 k∆bk1
/ κ1 (A) ∗ + / 17 .
kxk1 kAk1 kbk1
3. Sistemas lineales de ecuaciones algebraicas 71
Es decir,
k∆xk1
× 100 / 1 700 % .
kxk1
No hay garantía de que alguna de las dos soluciones sea bueno.
Por otro lado, el residual r = b − Ab
x y el residual relativo de cada una de las soluciones se
muestran en la tabla 3.2. En este caso, el residual correspondiente a la solución xG = (1, −1)T
es el vector 0, lo que confirma que es la solución exacta del sistema. Mientras que, tanto el
tamaño del residual como el residual relativo correspondiente a la solución xC = (1.3, 1)T son
grandes, lo que dice que la regla de Cramer es numéricamente inestable.
B). En caso de que el elemento pivote ak1 6= 0, permutar el renglón k con el renglón
1 de
[A|b] (este procedimiento se llama pivoteo). El resultado es la matriz A|b .
C). Remplazar los renglones R2 hasta Rn de la matriz A|b como
ai1
Ri ← − R1 + R i , i = 2 : n.
a11
El resultado es una matriz A(1) |b(1) .
72 3.3. Regla de Cramer y métodos de eliminación Gaussiana
h i
D). Repetir los pasos (A), (B) y (C) sobre la matriz Ã|b̃ , donde
.. ..
(1) (1) ã 11 . ã T
. b̃ 1
A |b = ··· ··· ··· ··· ··· ,
.. ..
0 . Ã . b̃
por lo que el costo computacional de la regla de Cramer usando la definición del determinante
es
c1 (n) = nD + n!(n − 1)(n + 1)M + (n! − 1)(n + 1)A = n[(n + 1)!] − 1 flops .
3. Sistemas lineales de ecuaciones algebraicas 73
(n − 1)n (n − 1)n
c2 (n) = nD + M+ A = n2 . (3.16)
2 2
que da un total de
2 3 13 2
c3 (n) = n3 + n2 − n ∼
= n3 (3.17)
3 2 6 3
flops para n suficientemente grande.
Así que el costo computacional total del método de eliminación Gaussiana es
2 5 13 2
c4 (n) = n3 + n2 − n ∼
= n3 , (3.18)
3 2 6 3
n R.C. E.G.
2 11 11
3 71 34
5 3 599 135
10 399 167 999 895
12 74 724 249 599 1 486
14 18 307 441 151 999 2 289
Tabla 3.3: Costo computacional de los métodos. El costo del método de E.G.P. aumenta “ligeramente”
por la búsqueda del pivote y el pivoteo.
3.4. Factorización LU
En esta sección se describirán los pasos B), C), D) y E) del algoritmo de eliminación
Gaussiana con pivote parcial en términos de matrices elementales. Únicamente se trabajará
con A ∈ Rn×n .
74 3.4. Factorización LU
Una vez localizado el pivote parcial ak1 en el paso A), el pivoteo de los renglones 1 y k
del paso B) para obtener la matriz A, se puede ver como:
0 ··· 1 0 ··· 0 a11 ··· a1k a1,k+1 ··· a1n
.. . . . .. .. . . . .. .. ..
.
.. .. ..
.
..
. . . . . . . .
1 ··· 0 0 ··· 0 ak1 ··· akk ak,k+1 ··· akn
A = P1 A =
0 ··· 0 1 ··· 0 ak+1,1 · · · ak+1,k ak+1,k+1 · · · ak+1,n
. . .. .
.. . . ... ... . . . . ..
..
.
..
.
..
.
..
.
..
.
0 ··· 0 0 ··· 1 an1 ··· ank an,k+1 ··· ann
ak1 · · · akk ak,k+1 ··· akn
.. ..
.
.. .. ..
.
..
. . . .
a11 · · · a1k a1,k+1 ··· a1n
= ,
ak+1,1 · · · ak+1,k ak+1,k+1 ··· ak+1,n
. .. .. .. .. ..
.. . . . . .
an1 · · · ank an,k+1 ··· ann
IV ). Si j > k, entonces
Mk Mj = I − m(k) ebkT − m(j) ebjT .
Así que tomando m(1) = (0, m2 , m3 , . . . , mn )T con mi = ai1 /ak1 , i = 2 : n; la matriz A(1)
del paso (C) se obtiene como:
1 0 0 ··· 0 ak1 ak2 ak3 · · · akn
−m2 1 0 · · · 0 a21 a22 a23 · · · a2,n
A(1) = M1 A = −m3 0 1 · · · 0 a31 a32 a33 · · · a3n
.. .. .. . . .. .. .. .. .. ..
. . . . . . . . . .
−mn 0 0 · · · 1 an1 an2 an3 · · · ann
ak1 ak2 ak3 · · · akn
0 ã22 ã23 · · · ã2,n
= 0 ã32 ã33 · · · ã3n “Nótese el efecto sobre A 00 .
.. .. .. .. ..
. . . . .
0 ãn2 ãn3 · · · ãnn
Mn−1 Pn−1 · · · M2 P2 M1 P1 A = U
P A = LU ,
donde P = Pn−1 · · · P2 P1 .
Se ha probado el siguiente teorema:
76 3.4. Factorización LU
entonces
P A = LU ,
donde P = Pn−1 · · · P2 P1 y L es una matriz triangular inferior con 10 s en la diagonal principal
y |`ij | ≤ 1. La k−ésima columna de L debajo de la diagonal principal es una permutación
del k−ésimo vector de Gauss. En particular, si Mk = I − m(k) ebkT entonces L(k + 1 : n, k) =
g(k + 1 : n), donde g = Pn−1 · · · Pk+2 Pk+1 m(k) .
Demostración. Es un ejercicio, pero si hay dudas se puede consultar en Golub and Van Loan
(1989) [10].
Solución.
0 0 1 6 18 −12
P1 = 0 1 0 =⇒ P1 A = 2 4 −2 .
1 0 0 3 17 10
1 0 0 6 18 −12
M1 = −1/3 1 0 =⇒ M1 P1 A = 0 −2 2 .
−1/2 0 1 0 8 16
1 0 0 6 18 −12
P2 = 0 0 1 =⇒ P2 M1 P1 A = 0 8 16 .
0 1 0 0 −2 2
1 0 0 6 18 −12
M2 = 0 1 0 =⇒ M2 P2 M1 P1 A = 0 8 16 = U .
0 1/4 1 0 0 6
Por lo que la factorización LU es
P A = LU ,
donde
3. Sistemas lineales de ecuaciones algebraicas 77
0 0 1
P = P 2 P1 = 1 0 0 .
0 1 0
1 0 0
L = P2 (M2 P2 M1 )−1 = P2 M1−1 P2−1 M2−1 = P2 M1−1 0 −1/4 1
0 1 0
1 0 0 1 0 0
= P2 1/3 −1/4 1 = 1/2 1 0 .
1/2 1 0 1/3 −1/4 1
Observa que
det(A) = (−1)2 × 6 × 8 × 6 = 288 ,
por haber realizado dos permutaciones en la factorización de A.
donde u11 , u22 , · · · , unn son los elementos de la diagonal principal de la matriz triangular
superior U , y se elige el signo menos si el número total de permutaciones es impar. Observa
que esto disminuye significativamente el costo computacional del cálculo del determinante de
A.
El siguiente algoritmo permite obtener el sistema triangular superior equivalente de un
sistema lineal Ax = b :
Algoritmo 3.4.1. Facorización LU por eliminación Gaussiana con pivote parcial.
Para k = 1 : n − 1 {iteración sobre columnas}
Encontrar el índice p tal que
|apk | ≥ |aik | para i = k : n {búsqueda del pivote}
Si p 6= k entonces
intercambiar las filas k y p
78 3.5. Factorización de Cholesky
Si akk = 0 entonces
continuar con el siguiente k
Para i = k + 1 : n
mik = aik /akk {cálculo de multiplicadores}
Termina
Para j = k + 1 : n
Para i = k + 1 : n
aij = aij − mik akj
Termina
Termina
Termina.
Se sigue que
x̃T Ãx̃ = xT Ax > 0 ,
por lo que à es definida positiva.
Para completar la prueba es suficiente con mostrar que det(A) > 0. Para ello, se aplica
inducción sobre n. Para n = 1 es claro, pues A = (α) donde α > 0, y por tanto det(A) =
α > 0. Se supone que el teorema es cierto para matrices simétricas y definidas positivas de
orden n − 1, y sea A una matriz simétrica y definida positiva de orden n. De acuerdo con la
primera parte de la prueba
α11 α12 · · · α1n
α21 α22 · · · α2n
−1
A = .. .. . . ..
. . . .
αn1 αn2 · · · αnn
existe y es simétrica y definida positiva, por lo que α11 > 0. Además es bien conocido que
a22 · · · a2n
det ... ..
..
. .
a2n · · · ann
α11 = ,
det(A)
y por hipótesis de inducción,
a22 · · · a2n
det ... .. > 0 ,
..
. .
a2n · · · ann
A = LLT .
Se supone que el teorema es cierto para matrices simétricas y definidas positivas de orden
n − 1. Sea A una matriz simétrica y definida positiva de orden n, entonces
An−1 b
A= ,
bT ann
donde b ∈ Rn−1 , y por el teorema 3.5.1 An−1 ∈ R(n−1)×(n−1) es simétrica y definida positiva.
De la hipótesis de inducción se sigue que existe una única Ln−1 ∈ R(n−1)×(n−1) que satisface
An−1 = Ln−1 LTn−1 , `ik = 0 para k > i, `ii > 0 .
Se considera la matriz
Ln−1 0
L= ,
cT α
y se tratará de determinar c ∈ Rn−1 y α > 0 tales que
T
Ln−1 0 Ln−1 c An−1 b
= = A. (3.20)
cT α 0 α bT ann
Para ello, se debe cumplir que
Ln−1 c = b
c c + α2 = ann ,
T
α > 0.
La primera ecuación tiene una única solución c = L−1 n−1 b, pues Ln−1 es una matriz trian-
gular inferior con det(Ln−1 ) = `11 `22 · · · `(n−1)(n−1) > 0, por lo que el vector c existe.
Ahora de (3.20) se sigue que det(A) = [det(Ln−1 )]2 α2 , y como A es simétrica y definida
positiva se sigue del teorema 3.5.1 que det(A) > 0, por lo que α 2 existe y es positiva. Así que
de la segunda ecuación se tiene que α2 = ann − cT c > 0, por lo que basta tomar
p
α = + ann − cT c > 0 .
3. Sistemas lineales de ecuaciones algebraicas 81
Algoritmo 3.5.1 (Cholesky). Dada una matriz simétrica y definida positiva A ∈ R n×n ,
el siguiente algoritmo calcula la matriz triangular inferior L tal que A = LL T . Para todo
i ≥ j , `ij se escribe sobre aij .
Para k = 1 : n, hacer
√
akk = akk
Para i = k + 1 : n, hacer
aik = aik /akk
Termina
Para j = k + 1 : n, hacer
Para i = j : n, hacer
aij = aij − aik ajk
Termina
Termina
Termina.
Ejemplo 3.5.1. Calcular en una aritmética flotante de precisión 4 y redondeo al más cercano
par, la factorización de Cholesky de la matriz
100 15 0.01
A = 15 2.3 0.01 .
0.01 0.01 1.00
Solución. Para k = 1, aplicando los primeros dos pasos del Algoritmo 3.5.1 se tiene:
10 10 10
1.5 0.05 ,→ 1.5 0.2236 ,→ 1.5 0.2236 .
0.001 0.0085 1.000 0.001 0.03801 0.9986 0.001 0.03801 0.9993
3.6. Ejercicios
Normas vectoriales y matriciales
1. Demuestra que la función norma N : Rn → R es uniformemente continua con respecto
a la métrica ρ(x, y) = max |xi − yi | en Rn .
i=1:n
√
A). kxk2 ≤ kxk1 ≤ n kxk2 .
√
B). kxk∞ ≤ kxk2 ≤ n kxk∞ .
C). kxk∞ ≤ kxk1 ≤ n kxk∞ .
3. Para todo x ∈ Rn dado, demuestra que
lim kxkp = kxk∞ .
p→∞
7. Demuestra que p
kAk2 = λmax (AT A) , A ∈ Rm×n ,
A). Muestra que la norma inducida por este producto interior es la norma de Frobenius
dada por (3.1).
B). Prueba que k · kF es consistente con la norma vectorial euclidiana k · k2 .
C). Prueba que k · kF es submultiplicativa.
D). ¿Cuándo se dice que A, B ∈ Rm×n son ortogonales entre sí ?
12. Contesta si son falsos o verdaderos las afirmaciones 2.21 al 2.25 de la página 93 de
Heath (2002) [12].
13. Contesta las preguntas 2.60 al 2.62 de la página 95, y las preguntas 2.65 y 2.67 de la
página 96 de Heath (2002) [12].
84 3.6. Ejercicios
14. Hallar κ1 (A), κ2 (A) y κ∞ (A), para cada una de las siguientes matrices:
1 2 1 2
A= y B= .
3 7 3 4
para toda D ∈ Rn×n diagonal. Esto es, la equilibración por renglones mejora el número
de condición de la matriz.
18. Sea A = diag(1/2) una matriz diagonal n × n con entradas en la diagonal = 1/2.
A). ¿Cuál es el valor del det(A)?
B). ¿Cuál es el valor del κp (A) para p = 1, 2 e ∞?
C). ¿Qué conclusión puedes obtener de estos resultados?
19. Sea A ∈ Rn×n no singular, demuestra que
1 kE − Akp
≤ , p ≥ 1,
κp (A) kAkp
haga lo siguiente:
A). Prueba que kωk2 = max |ω T x|2 , para todo ω ∈ Rn .
kxk2 =1
Residuales
24. Contesta las preguntas 2.63 y 2.67 de las páginas 95 y 96, respectivamente de Heath
(2002) [12].
25. Considera al sistema lineal algebraico (s.l.a.):
0.780x1 + 0.563x2 = 0.217
0.913x1 + 0.659x2 = 0.254
86 3.6. Ejercicios
A). Calcula los residuales y residuales relativos en norma 1 para las soluciones aproxi-
madas
ba1 = (0.341, −0.087)T y x
x ba2 = (0.999, −1.001)T .
¿Cuál es la mejor solución?
B). Halla la solución exacta.
C). Calcula el número de condición κ1 (A).
D). Explica la situación en lenguaje geométrico.
Comenta.
ba = (0.9911, −0.4870)T ?
¿Cuánto vale el residual y el residual relativo para x
¿Cuánto vale κ1 (A)? Comenta.
Nota. La solución exacta es x = (2, −2)T .
Utilizando una A.P.F. de 4 decimales con redondeo al más cercano par llena las tablas
3.4 y 3.5, donde r = (r1 , r2 )T = b − Ab
x ¿Cuál es el valor de la unidad de redondeo? ¿Es
la regla de Cramer un método numéricamente estable? ¿Es el método de eliminación
Gaussiana sin pivoteo parcial numéricamente estable?
Para cada caso, compara el residual relativo contra u (la unidad de redondeo). Comenta.
3. Sistemas lineales de ecuaciones algebraicas 87
30. Con la ayuda de una computadora, en simple y en doble precisión, resuelve el s.l.a.
siguiente:
0.2038x + 0.1218y = 0.2014
0.4071x + 0.2436y = 0.4038
31. Sean
0.1 0.2 0.3 0.1
A = 0.4 0.5 0.6 y b = 0.3 .
0.7 0.8 0.9 0.5
n κ1 (A)
2
3
..
.
30
Comenta.
3. Sistemas lineales de ecuaciones algebraicas 89
C). Halla una subestimación para κ2 (A). Para ello, muestre que
√
1
1
T
n
T
2n−1 1 eb1
= 2n−1 1 eb1 2 = 2n−1 .
2
Muestra que κ∞ (A) > 1021 y que |λmax (A)|/|λmin (A)| ∼= 1.1976 .
Sugerencia. Para estimar kA−1 k∞ , resuelve el sistema lineal Ax = eb100 .
Factorización LU
36. Contesta las preguntas 2.40, 2.41 y 2.43 de la página 94, y la pregunta 2.58 de la página
95 de Heath (2002) [12].
A continuación resuelve nuevamente este sistema por eliminación Gaussiana con pivoteo
parcial. ¿Cuáles son los factores de la descomposición LU de A? ¿Cuánto vale det(A)?
Compara resultados y comenta.
Factorización de Cholesky
43. Contesta las preguntas 2.73 al 2.78 de la página 96 de Heath (2002) [12].
44. Calcula el costo computacional del algoritmo de Cholesky 3.5.1 incluyendo las raíces
cuadradas.
45. Implanta el Algoritmo de Cholesky 3.5.1 en FORTRAN y úsalo para resolver el proble-
ma 2.6 de la página 101 de Heath (2002) [12].
Capítulo 4
Ceros de funciones
91
92 4.2. Método de bisección
La tolerancia T OL se puede elegir como f actor ∗ u, con 0 < f actor < 1 y u la unidad de
redondeo de la aritmética flotante que se está usando. Discutir el criterio de paro |β − α| ≥
T OL ∗ |β| con el criterio |f (γ)| < T OL.
Sugerencias para programar el algoritmo de bisección:
A). Programar f (x) como function.
B). Programar el método de bisección como function.
C). Una simulación de Mientras (While) en Fortran es:
Actividad 4.2.1. Capture el programa BISEC.FOR anexo. Dicho programa está basado en
el algoritmo de la bisección y tiene la siguiente estructura:
{Documentación del programa
{Lea f (x) como function
Programa principal
EXTERNAL F
Llama BISEC como function
Imprima resultados
{Lea BISEC como function
Programa BISEC.FOR
C APROXIMA LA RAIZ DE LA ECUACION F(X)=0 SOBRE [A,B]
C USANDO EL METODO DE LA BISECCION
C
C JUSTINO ALAVEZ RAMIREZ
C
4. Ceros de funciones 93
C FEBRERO DE 2006
C
C DATOS: F(X), A, B, TOL
C
C DONDE: F:[A,B]–>R
C TOL TOLERANCIA PARA APROXIMAR LA RAIZ DE F(X)=0
C
C SALIDA: R, FR, N, NMAX
C
C DONDE: R RAIZ APROXIMADA DE F(X)=0
C FR VALOR DE F(R)
C N ITERACION EN QUE SE LOGRA R
C NMAX ITERACION MAXIMA SIN CONVERGENCIA
C
C ****************************************************************
C
REAL FUNCTION F(X)
REAL X
F = X**7-2.0
C F = X**4 + X**3 - X**2 - 2.0*X - 2.0
C F = X - EXP(-X)
RETURN
END
C
C ****************************************************************
C
EXTERNAL F
REAL A,B,R,FR,TOL,BISEC
INTEGER N,NMAX
C
A = 1.0
B = 2.0
TOL = 1.0E-6
NMAX = 1500
R = BISEC(A,B,F,FR,TOL,N,NMAX)
C
IF (N .EQ. NMAX) THEN
WRITE(6,10)NMAX
10 FORMAT(//,6X,’**************************************************
+*********’,/,
+ 8X,’NO SE LOGRO CONVERGENCIA DESPUES DE’,2X,I5,2X,
+ ’ITERACIONES’,/,
+ 8X,’REINICIE CON UNA NUEVA TOLERANCIA O CON MAS’,1X,
94 4.2. Método de bisección
+’ITERACIONES’,/,
+ 6X,’*****************************************************
+******’)
ELSE
WRITE(6,20)R,FR,N
20 FORMAT(//,6X,’**********************************************’,/,
+ 14X,’R E S U L T A D O S’,//,
+ 8X,’LA RAIZ APROXIMADA ES:’,3X,E15.8,/,
+ 8X,’EL VALOR DE F(RAIZ) ES:’,2X,E15.8,/,
+ 8X,’DESPUES DE’,1X,I3,2X,’ITERACIONES’,/,
+ 6X,’**********************************************’)
ENDIF
STOP
END
C
C *********************************************************************
C
REAL FUNCTION BISEC(A,B,F,FR,TOL,N,NMAX)
REAL A,B,F,FR,TOL
INTEGER N,NMAX
C
C CALCULO DE UNA RAIZ DE F(X)=0 SOBRE [A,B] POR EL
C METODO DE LA BISECCION
C
REAL ALPHA,BETA,GAMMA,FG,FB,R
C
C INICIALIZANDO
C
ALPHA = A
BETA = B
N = 1
C
C VERIFICANDO CONDICION DE CONVERGENCIA
C
30 IF (ABS(BETA-ALPHA) .GE. ABS(BETA)*TOL) THEN
GAMMA = (ALPHA+BETA)/2.0
FG = F(GAMMA)
FB = F(BETA)
IF (FG*FB .GT. 0.0) THEN
BETA=GAMMA
ELSE
ALPHA=GAMMA
ENDIF
4. Ceros de funciones 95
N = N+1
IF (N .EQ. NMAX) THEN
ALPHA = BETA
ENDIF
GO TO 30
ENDIF
C
R = BETA
C R = ALPHA
FR = F(R)
BISEC = R
RETURN
END
Actividad 4.2.3. Para p(x) = x7 − 2, con a = 1.0 y b = 2.0, ejecuta tu programa con los
parámetros siguientes:
A). T OL = 10−7 y N M AX = 1 500
B). T OL = 10−6 y N M AX = 1 500
Comenta.
f (x0
x+ = x 0 − .
f 0 (x0 )
Esto da lugar a la iteración de Newton-Raphson:
f (xk )
xk+1 = xk − si f 0 (xk ) 6= 0, k ≥ 0 .
f 0 (xk )
f (xk )
xk+1 = g(xk ) = xk − , k ≥ 0,
f 0 (xk )
de donde
|ek | ≤ C|ek−1 | ≤ C 2 |ek−2 | ≤ · · · ≤ C k |e0 | .
Como 0 < C < 1, se sigue que C k → 0 cuando k → ∞, así que |ek | → 0 cuando k → ∞,
y así se tiene que xk → x∗ cuando k → ∞.
Ahora, de la fórmula de Lagrange para el residuo en la aproximación de Taylor de primer
orden para f en un entorno de xk es
1
f (x) = f (xk ) + f 0 (xk )(x − xk ) + f 00 (ξk )(x − xk )2 ,
2
1
0 = f (x∗ ) = f (xk ) + f 0 (xk )(x∗ − xk ) + f 00 (ξk )(x∗ − xk )2 .
2
Agrupando términos, resulta
f (xk ) f 00 (ξk )
x∗ − xk − 0 =− 0 (x∗ − xk )2 ,
f (xk ) 2f (xk )
de donde
f 00 (ξk )
x∗ − xk+1 =− 0 (x∗ − xk )2 .
2f (xk )
Por lo que 00
|ek+1 | f (ξk ) f 00 (x∗ )
lim = lim 0 =
2f 0 (x∗ ) .
k→∞ |ek |2 k→∞ 2f (xk )
00
f (x∗ )
Observación 4.3.2. Si C = 0 , entonces de (4.1) se tiene que
2f (x∗ )
|ek+1 | ∼
= C|ek |2 para k 0 s grandes.
|ek | ∼
= 2−t , entonces |ek+1 | ∼
= 2−2t .
Esto significa que en cada iteración se duplican los dígitos decimales (binarios) correctos
de la aproximación a la raíz x∗ .
x2k + 2
xk+1 = , k ≥ 0.
2xk
Observa cómo se va duplicando los dígitos correctos de la raíz de 2:
x0 = 2, x1 = 1.5, x2 = 1.41666666666667, x3 = 1.41421568627451,
x4 = 1.41421356237469, x5 = 1.41421356237309.
Observación 4.3.3. Si C ∼
= 1 y |ek | ≤ 1/2, entonces:
Definición 4.3.1. Una iteración convergente {xk }k≥0 se dice que tiene convergencia de tasa
(orden) d, si la sucesión de errores {ek }k≥1 satisface:
|ek+1 |
lim = C < ∞.
k→∞ |ek |d
Ejercicio 4.3.1. Muestre que el método de bisección tiene tasa de convergencia lineal y que
C = 1/2.
1 q
f (x) = arctan(x)
0.5
−xc
0 q q
xc X
−0.5
−1
q
−1.5
−2
−4 −3 −2 −1 0 1 2 3 4
f (x0 )
x+ ← x 0 −
f 0 (x0 )
IT ER ← IT ER + 1
Si IT ER = N M AX, hacer
x0 = x +
Terminar.
La tolerancia T OL se puede elegir como f actor ∗ u, con 0 < f actor < 1 y u la unidad de
redondeo de la aritmética flotante usada. Discutir el criterio de paro |x+ − x0 | < T OL ∗ |x+ |
con el criterio |f (x+ )| < T OL.
Sugerencias para programar el algoritmo de Newton-Raphson:
A). Programar f (x) como function.
B). Programar f 0 (x) como function.
C). Programar el algoritmo como function.
D). Una simulación de Hasta (Until ) en Fortran es:
{Etiqueta} CONTINUE
{Bloque de instrucciones}
IF ({Expresión lógica}) GO TO {Etiqueta}
Actividad 4.3.1. Escriba un programa para el algoritmo de Newton-Raphson en WATFOR87
con las sugerencias anteriores. Úsalo para resolver de nuevo los dos problemas de la actividad
4.2.4. Compara los resultados y comenta.
Ejercicio 4.3.2. ¿Qué hacer si x+ se sale fuera del intervalo donde f está definida?
Actividad 4.3.2. Escriba un programa híbrido en WATFOR87 que combine los algoritmos
de bisección y Newton-Raphson, para aproximar la raíz real (si existe) de f (x) = 0 sobre
un intervalo [a, b]. Úsalo para resolver una vez más los dos problemas de la actividad 4.2.4.
Compara los resultados y comenta.
Observación 4.3.5. Si x∗ no es raíz simple de f (x) = 0, el teorema 4.3.1 no se puede
aplicar. Sin embargo, sí se puede aplicar el método de Newton aunque ya no se garantice
convergencia cuadrática. De hecho, la convergencia del método de Newton a una raíz doble
de f (x) = 0 es lineal.
Por ejemplo, f (x) = x2 tiene como raíz doble a x∗ = 0, y la iteración de Newton corre-
spondiente es:
x2 1
xk+1 = xk − k = xk , xk 6= 0, k ≥ 0
2xk 2
y
ek+1 xk+1 − 0 1
= =
ek xk − 0 2
Por lo tanto, xk → 0 linealmente.
4. Ceros de funciones 101
Observación 4.3.6. Otra desventaja del método de Newton es que requiere evaluar f (x) y
f 0 (x) en cada iteración. En la práctica, evaluar f (x) y f 0 (x) pueden ser muy caros o de plano
sea imposible evaluar f 0 (x).
Observación 4.3.7. La principal importancia del método de Newton, radica en que se puede
aplicar para aproximar ceros complejos de funciones analíticas, y se puede extender para
solucionar sistemas de ecuaciones no lineales de varias variables.
donde 00
f (x∗ ) 1/d
1 √
∼
C= 0 y d = 5 + 1 = 1.618 .
2f (x∗ ) 2
Demostración. Una prueba de convergencia se puede encontrar en Ortega and Rheinboldt
(1971) [18].
Para determinar la tasa de convergencia, sea
|ek+1 |
sk = , k ≥ 0.
|ek |d
102 4.4. Método de la secante
Se tiene que
d 2
|ek+1 | = sk |ek |d = sk sk−1 |ek−1 |d = sk sdk−1 |ek−1 |d ,
así que
2
|ek+1 | sk sdk−1 |ek−1 |d d2 −d−1
= d
= sk sd−1
k−1 |ek−1 | , k ≥ 1.
|ek | · |ek−1 | sk−1 |ek−1 | |ek−1 |
Como |ek | → 0 cuando k → ∞, mientras el lado izquierdo de la igualdad anterior se puede
probar que tiende a una constante no cero, entonces dicha igualdad será válida solamente si
d2 − d − 1 = 0 .
Observación 4.4.1. No hay manera de determinar el tamaño del intervalo I, por lo que no
es posible elegir adecuadamente x0 y x1 que garanticen convergencia de la iteración (4.2).
Así que el método de la secante es de convergencia local.
Observación 4.4.3. El método de la secante trabaja bien para aproximar ceros de funciones
analíticas de una variable compleja, pero tiene serias dificultades para ser extendida a calcular
soluciones de sistemas de ecuaciones no lineales de varias variables.
4. Ceros de funciones 103
xk+1 = g(0) .
Observación 4.5.1. Los tres valores fk−2 , fk−1 y fk deben ser distintos a pares para evitar
división por 0.
El programa ZEROIN.FOR escrito por Shampine y Watts (1970), combina los métodos
de bisección, secante e interpolación cuadrática inversa, para la búsqueda de una raíz real de
f (x) = 0 sobre un intervalo [a, b].
Actividad 4.5.1. Ponga a punto el programa ZEROIN.FOR para resolver los dos proble-
mas de la actividad 4.2.4. Compara los resultados con los que obtuvo en la actividad 4.4.1.
Comenta.
A). La aplicación G se llama una contracción en D si existe 0 < γ < 1 tal que
para todo x, y ∈ D.
B). Para cualquier x0 ∈ D, la sucesión {xk }k≥0 generado por xk+1 = G(xk ), k ≥ 0, per-
manece en D y converge q−linealmente a x∗ con constante γ.
ηγ k
kxk − x∗ k ≤ , k ≥ 0.
1−γ
Observa que desde cualquier x0 ∈ D, la longitud de paso kxk+1 −xk k decrece por lo menos
en un factor γ en cada iteración, pues
F (x + s) ∼
= F (x) + JF (x)s ,
donde
∂f1 ∂f1 ∂f1
(x) (x) · · · (x)
∂x1 ∂x2 ∂xn
∂f2 ∂f2 ∂f2
(x) (x) · · · (x)
∂x1 ∂x2 ∂xn
JF (x) =
.. .. .. ..
. . . .
∂fn ∂fn ∂fn
(x) (x) · · · (x)
∂x1 ∂x2 ∂xn
es la matriz Jacobiana de F en x.
Puesto que el objetivo es encontrar un x∗ tal que F (x∗ ) = 0, entonces si s satisface el
sistema de ecuaciones lineales:
JF (x)s = −F (x) ,
entonces
x+ = x + s ,
puede ser una buena aproximación del cero x∗ de F . A s se le llama el paso de Newton.
En este sentido, el método de Newton reemplaza el problema de resolver un sistema de
ecuaciones no lineales, por una sucesión de sistemas de ecuaciones lineales.
si existe en una aritmética de punto flotante de precisión 7 y redondeo al par más cercano.
106 4.6. Sistemas de ecuaciones no lineales
kxk+1 − x∗ k ≤ βγkxk − x∗ k2 , k ≥ 0.
Demostración. Se aplica inducción sobre k, y la prueba se puede ver en Dennis and Schnabel
(1983) [4].
Las constantes γ y β se pueden combinar en una sola constante γRel = γ · β, una constante
de Lipschitz que mide la no linealidad relativa de F en x∗ , pues
kJF (x∗ )−1 [JF (x) − JF (x∗ )]k ≤ kJF (x∗ )−1 k kJF (x) − JF (x∗ )k
≤ βγkx − x∗ k
= γRel kx − x∗ k ,
para todo x ∈ B(x∗ ; r). Puesto que en la prueba del teorema 4.6.2, el radio de convergencia
se elige como:
1
ε = min r, ,
2βγ
entonces se puede decir que el radio de convergencia del método de Newton es inversamente
proporcional a la no linealidad relativa de F en x∗ .
Algunas ventajas y desventajas del método de Newton para sistemas de ecuaciones no
lineales son:
Ventajas
1. Es de convergencia q−cuadrática cuando se eligen buenos puntos de inicio x0 , y cuando
JF (x∗ ) es no singular.
2. Obtiene solución exacta en una sola iteración cuando F es afín (y es exacta en cada
iteración en las funciones componentes de F que sean afín).
Desventajas
108 4.7. Ejercicios
3. En cada iteración necesita resolver un sistema de ecuaciones lineales que puede ser
singular o mal condicionada.
4.7. Ejercicios
1. Hallar todos los ceros de las siguientes funciones sobre los intervalos que se indican:
2. En el año 1225 Leonardo de Pisa (mejor conocido como Fibonacci) estudió la ecuación
cúbica:
x3 + 2x2 + 10x − 20 = 0 ,
y obtuvo la raíz x = 1.368808107. Nadie sabe qué método utilizó Leonardo para encon-
trar este valor aunque fue un resultado notable en ese tiempo. Verifica que el resultado
de Leonardo es correcto en todas sus cifras decimales, usando el método de Newton.
tan(x) tanh(x) = 1 ,
Determina el valor de x.
6. El factor de fricción f para los flujos turbulentos en una tubería está dado por:
1 e 9.35
√ = 1.14 − 2 log + √ ,
f D Re f
8. Para cada una de las funciones f (x) = x, f (x) = x2 + x, f (x) = ex − 1, contesta las
siguientes preguntas:
sen(xy) − y + x = 0
y cos(xy) + 1 = 0 .
f (xi ) = yi , i = 1 : m.
En el pasado se usaron los interpolantes para generar tablas de raíces cuadradas, raíces
cúbicas, logaritmos y de funciones trigonométricas, entre otros. Hoy día la interpolación por
polinomios sigue siendo la base de muchas fórmulas de uso general para la integración y
diferenciación numérica. Más aún, la interpolación polinomial y racional se usan para con-
struir “métodos de extrapolación” para problemas de integración de ecuaciones diferenciales y
problemas relacionados. La interpolación trigonométrica es ampliamente usado en el análisis
de Fourier numérico de series de tiempo y en fenómenos cíclicos. Son particularmente impor-
tantes en el análisis de las “transformadas rápidas de Fourier”. La interpolación exponencial
es usado en el análisis del decaimiento radiactivo. La interpolación por spline es una poderosa
111
112 5.1. Interpolación global uniformemente espaciada
herramienta para representar curvas empíricas, y para aproximar funciones matemáticas com-
plicadas. Se ha incrementado su uso en el tratamiento de ecuaciones diferenciales ordinarias
y parciales.
¿Cómo se construye un interpolante?
Se abordará el problema de interpolación lineal (en el cuál están incluidos la interpo-
lación por polinomios e interpolación trigonométrica). Se requiere de un conjunto linealmente
independiente (l.i.) de funciones {φ1 (x), φ2 (x), . . . , φn (x)} que se llamarán funciones bases,
para construir f en el espacio de dimensión n generado por estas funciones bases, es decir
n
X
f (x) := cj φj (x), x ∈ R,
j=1
donde c1 , c2 , . . . , cn , son parámetros por determinar. Nótese que f depende linealmente de los
parámetros c1 , c2 , . . . , cn .
En el caso de interpolación no lineal se encuentran la interpolación racional y expo-
nencial.
Puesto que
Así que
det(Vn ) = Π (xj − xi ) 6= 0, si xi 6= xj , i 6= j .
i<j
Ejercicio 5.1.3. Calcula el costo computacional (número de flops) que se requieren para cal-
cular el interpolante de Lagrange, y su evaluación en m puntos de interés, según el Algoritmo
5.1.1.
Actividad 5.1.1. Programa el Algoritmo 5.1.1 en FORTRAN o en MATLAB y que genere
las gráficas del interpolante y los datos.
por lo que A es no singular, y en consecuencia el sistema lineal (5.10) tiene una única solución
c = (c1 , c2 , . . . , cn )T . Así que el interpolante de Newton dado por (5.9) existe y es único. La
solución del sistema lineal (5.10) se obtiene con una sustitución progresiva, y está dada por
c1 = y 1
y2 − y 1
c2 =
x2 − x 1 (5.11)
P
yj − j−1
k=1 πk (xj )ck
cj = , j = 3 : n.
πj (xj )
Teorema 5.1.1. Si Pj−1 (x) es el polinomio de grado a lo más j − 1 que interpola los puntos
(x1 , y1 ), (x2 , y2 ), . . . , (xj , yj ), entonces
Ejemplo 5.1.1. Calcular el interpolante de los puntos (−1, −3), (0, −2), (1, −1) y (2, 6).
Solución. Es claro que P0 (x) = −3 es el interpolante de (−1, −3). De (5.12) el interpolante
de (−1, −3) y (0, −2) será el polinomio
y2 − P0 (x2 ) −2 + 3
P1 (x) = P0 (x) + c2 π2 (x) = −3 + π2 (x) = −3 + (x + 1) = x − 2.
π2 (x2 ) 1
Ahora, el interpolante de (−1, −3), (0, −2) y (1, −1) será el polinomio
y3 − P1 (x3 ) −1 + 1
P2 (x) = P1 (x) + c3 π3 (x) = P1 (x) + π3 (x) = P1 (x) + π3 (x) = P1 (x).
π3 (x3 ) 2
Finalmente, el interpolante buscado será
y4 − P2 (x4 ) 6−0
P3 (x) = P2 (x) + c4 π4 (x) = P2 (x) + π4 (x) = x − 2 + (x + 1)x(x − 1) = x3 − 2.
π4 (x4 ) 6
Por lo tanto, P3 (x) = x3 − 2.
Diferencias divididas
Los parámetros c1 , c2 , . . . , cn dados en (5.11) se les llama diferencias divididas, y la
j − ésima diferencia dividida se denota por
cj = f [x1 , x2 , . . . , xj ], j = 1 : n,
Teorema 5.1.2. Si Pj−2 (x) es el interpolante de grado a lo más j − 2 de los puntos (x1 , y1 ),
(x2 , y2 ), . . . , (xj−1 , yj−1 ), y Pj−2 ∗
(x) es el interpolante de grado a lo más j − 2 de los puntos
(x2 , y2 ), (x3 , y3 ), . . . , (xj , yj ), entonces
x − x1 ∗
Pj−1 (x) = Pj−2 (x) + Pj−2 (x) − Pj−2 (x) , (5.13)
xj − x 1
c∗j−1 − cj−1
cj = ; j = 2 : n,
xj − x 1
que es equivalente a
En la tabla 5.1 se muestra un esquema práctico para el cálculo de las diferencias divididas.
Ejemplo 5.1.2. Calcular las diferencias divididas de los puntos (−1, −3), (0, −2), (1, −1) y
(2, 6), y obtener de nuevo su interpolante.
Solución. Las diferencias divididas son los que aparecen en la diagonal superior del esquema
de la tabla 5.2:
P4 (x) = −3 + (x + 1) + (x + 1)x(x − 1) = x3 − 2 .
118 5.1. Interpolación global uniformemente espaciada
Algoritmo 5.1.3. Evaluación del interpolante de Newton dado por (5.9) en m puntos de
interés w1 , w2 , . . . , wm , vía diferencias divididas.
Datos de entrada: [x1 , x2 , . . . , xn ], [c1 , c2 , . . . , cn ] y [w1 , w2 , . . . , wm ].
Datos de salida: pj = Pn−1 (wj ), j = 1 : m.
Para j = 1 : m, hacer
pj ← c n
Para k = n − 1 : −1 : 1, hacer
pj ← pj (wj − xk ) + ck
Terminar
Terminar.
Ejercicio 5.1.5. Calcula el costo computacional (número de flops) que se requieren para
calcular el interpolante de Newton (Algoritmo 5.1.2), y su evaluación en m puntos de interés
(Algoritmo 5.1.3). Compara con el costo del Algoritmo 5.1.1 que obtuvo en el ejercicio 5.1.3.
Actividad 5.1.2. Escriba un programa en FORTRAN o en MATLAB que integre los algo-
ritmos 5.1.2 y 5.1.3 y genere las gráficas del interpolante y los datos.
5. Interpolación polinomial y splines cúbico 119
Actividad 5.1.3. Interpola la función de Runge fR (x) con polinomios Pn−1 (x) de grado n−1
para n = 6, 11, 16, 21 y 26, en puntos uniformemente espaciados como en (5.15).
A). Calcula Pn−1 (x) como interpolante estándar resolviendo el sistema lineal (5.4).
B). Calcula κ1 (Vn )
C). Grafica Pn−1 (x), fR (x) y los datos generados, sobre un mismo sistema de coordenadas.
¿Qué observa? Escriba sus conclusiones.
Teorema 5.1.3. Si f tiene derivadas continuas hasta de orden n y Pn−1 es el polinomio
de grado a lo más n − 1 que interpola a f en n puntos (xi , yi ), i = 1 : n dados, con
a = x1 < x2 < · · · < xn = b, entonces para cada x ∈ [a, b] existe un θ ∈ (a, b) tal que
f (n) (θ)
f (x) − Pn−1 (x) = w(x) , (5.17)
n!
donde
w(x) = (x − x1 )(x − x2 ) · · · (x − xn ) . (5.18)
Demostración. Sea x ∈ [a, b] fijo con x 6= xi , i = 1 : n, y se elige una constante K tal que
F (t) := f (t) − Pn−1 (t) − Kw(t), t ∈ [a, b] ,
se anule en t = x.
Note que F (t) tiene al menos n + 1 ceros en [a, b] a saber x1 , x2 , . . . , xn , x. Aplicando
n − veces el teorema de Rolle, F 0 (t) tiene al menos n ceros en (a, b), así sucesivamente F (n) (t)
tiene al menos un cero θ ∈ (a, b). Como F (n) (t) = f (n) (t) − 0 − Kn! , entonces 0 = F (n) (θ) =
f (n) (θ) − Kn! de donde K = f (n) (θ)/n!. De aquí se sigue el resultado deseado.
120 5.2. Interpolación global sobre puntos de Tchebyshev
se minimiza sobre el intervalo I = [a, b] cuando los puntos de interpolación se eligen como
raíces o puntos extremos de un polinomio de Tchebyshev de grado apropiado.
5. Interpolación polinomial y splines cúbico 121
y que sus k + 1 puntos extremos (incluye los extremos del intervalo [−1, 1]) están dados por
iπ
xk,i = cos , i = 0 : k, (5.20)
k
y que
|Tk (xk,i )| = 1, i = 0 : k.
Definición 5.2.1. Los ceros de un polinomio de Tchebyshev de primer tipo dado en (5.19) o
los puntos extremos de dicho polinomio dado en (5.20), se les llama puntos de Tchebyshev.
Actividad 5.2.1. Grafica los puntos (xi , yi ) y (xi , 0), i = 1 : k, para k = 14, 19 y 24. ¿Qué
observa? Escriba sus conclusiones.
Actividad 5.2.2. Verifica que los puntos (xi , yi ), i = 1 : k, están uniformemente espaciados
sobre el círculo unitario, y que las xi , i = 1 : k, se concentran en los extremos del intervalo
[−1, 1].
Actividad 5.2.3. Interpola la función de Runge fR (x) con polinomios Pn (x) de grado n − 1
para n = 6, 11, 16, 21 y 26, en puntos de Tchebyshev para k = n − 2. Grafica los polinomios
junto con fR (x) sobre un mismo sistema de coordenadas. ¿Qué observa? Escriba sus conclu-
siones.
Ejercicio 5.2.1. Demuestra que usando los puntos {ξn,k }nk=1 de Tchebyshev como puntos de
interpolación, se tiene
Sugerencia. Hecha mano de (5.17) con xk = ξn,k y usa el hecho de que ...
122 5.3. Interpolación polinomial por pedazos
donde Pk,n (x) es una función construida por pedazos por polinomios de grado k ≥ 1, de
manera similar como se construyó P5,n (x).
Actividad 5.3.2. Construya P1,21 (x) y P2,21 (x) y grafícalos junto con fR (x) en un mismo
sistema de coordenadas. ¿Qué observa? Escriba sus conclusiones.
Así que un spline cúbico consta de n − 1 polinomios cúbicos por piezas cuyos valores y los
de sus primeras dos derivadas coinciden en los nodos o puntos de ruptura xi , i = 2 : n−1.
Si y1 , y2 , . . . , yn son n números reales arbitrarios, entonces un spline cúbico inter-
polante de los puntos (xi , yi ), i = 1 : n, es un spline cúbico s que satisface
s(xi ) = yi , i = 1 : n.
Si se denota el spline cúbico sobre [xi−1 , xi ] por z(x), entonces las expresiones equivalentes
a (5.22) y (5.23) para z 0 (x) y z(x) son
z 00 (xi ) − z 00 (xi−1 )
z 0 (x) = z 0 (xi−1 ) + z 00 (xi−1 )(x − xi−1 ) + (x − xi−1 )2 ,
2(xi − xi−1 )
124 5.4. Interpolación por splines cúbico
C). s0 (a) = y10 , s0 (b) = yn0 , con y10 y yn0 dados, “spline cúbico completo”,
garantizan la existencia y unicidad del spline cúbico s(x) que interpola los puntos (x 1 , y1 ),
(x2 , x2 ), . . . , (xn , yn ).
5. Interpolación polinomial y splines cúbico 125
Demostración. Caso A). Si s00 (a) = s00 (b) = 0 entonces s001 = 0 y s00n = 0. Introduciendo las
abreviaciones
λ1 := 0, d1 := 0, µn := 0, dn := 0 ,
hi hi−1
λi := , µi := 1 − λi = ,
hi−1 + hi hi−1 + hi
(5.28)
6 yi+1 − yi yi − yi−1
di := − , i = 2 : n −1.
hi−1 + hi hi hi−1
Y si s0 (b) = yn0 entonces s0n = yn0 , y del ejercicio 5.4.1 se obtiene la ecuación
00 00 0 yn − yn−1
hn−1 sn−1 + 2hn−1 sn = 6 yn − . (5.33)
hn−1
Ahora definiendo
6 y2 − y 1
λ1 := 1, d1 := − y10 ,
h1 h1
y
6 yn − yn−1
µn := 1, dn := yn0 − ,
hn−1 hn−1
y junto con (5.28), se obtiene del sistema (5.27) y de las ecuaciones (5.32) y (5.33) el mismo
sistema lineal dado por (5.29). Así que también en este caso, existe una única solución
s = (s001 , s002 , . . . , s00n−1 , s00n )T .
Ejemplo 5.4.1. Determina el spline cúbico natural que interpola los puntos (0, 1), (1, 2),
(2, 0.5) y (2.5, 2), en una aritmética flotante de precisión 4.
Solución. h1 = 1, h2 = 1 y h3 = 0.5.
)
s001 + 4s002 + s003 = −15
(5.34)
s002 + 3s003 + 0.5s004 = 27
Ahora, de acuerdo con la fórmula (5.23) se obtiene el spline cúbico natural deseado:
1 + 2.091x − 1.091x3 , 0≤x≤1
s(x) = 2 − 1.181(x − 1) − 3.272(x − 1)2 + 2.953(x − 1)3 , 1≤x≤2
0.5 + 1.136(x − 2) + 5.590(x − 2)2 − 3.727(x − 2)3 , 2 ≤ x ≤ 2.5 .
Ejercicio 5.4.2. Demuestra que la matriz de coeficientes del sistema lineal (5.29) y (5.31)
son no singulares.
Actividad 5.4.1. Interpola la función de Runge fR (x) con splines cúbicos sn (x) en puntos
uniformemente espaciados −1 = x1 < x2 < . . . < xn = 1 dados en (5.15), para n =
6, 11, 16, 21 y 26. Grafica los splines cúbicos junto con fR (x) sobre un mismo sistema de
coordenadas. ¿Qué observa? Escriba sus conclusiones.
Sugerencia. Analiza y usa la función “spline” de MATLAB.
Una ventaja de interpolar una función f suficientemente suave con splines cúbicos, es que
permite estimar también f 0 , f 00 y f 000 con aceptable precisión.
Teorema 5.4.2. Si f tiene derivadas continuas hasta de orden 4 y s es el spline cúbico que
interpola a f en n puntos dados: a = x1 < x2 < · · · < xn = b, entonces para cada x ∈ [a, b] :
o sea que
|f (x) − s(x)| = O h4 ,
y que
|f 0 (x) − s0 (x)| = O h3 ,
|f 00 (x) − s00 (x)| = O h2 ,
Actividad 5.4.2. Calcule s(x), s0 (x), s00 (x) y s000 (x), donde s(x) es el spline cúbico que
interpola la función de Runge fR (x) en puntos uniformemente espaciados −1 = x1 < x2 <
· · · < xn = 1 dados en (5.15), para n = 21.
A). Grafica s(x) y fR (x) junto con los datos en un mismo sistema de coordenadas.
128 5.5. Teoremas de Faber
B). Grafica s0 (x) y fR0 (x) junto con los datos en un mismo sistema de coordenadas.
C). Grafica s00 (x) y fR00 (x) junto con los datos en un mismo sistema de coordenadas.
D). Grafica s000 (x) y fR000 (x) junto con los datos en un mismo sistema de coordenadas.
(k)
E). Compara s(k) (0.85) con fR (0.85), para k = 0, 1, 2 y 3.
Teorema 5.5.1 (Primer teorema de Faber). Dada ∆ existe f ∈ C(I) tal que Pn (x) 9 f (x).
Teorema 5.5.2 (Segundo teorema de Faber). Dada f ∈ C(I) existe ∆ tal que Pn (x) → f (x)
uniformemente sobre I.
5.6. Ejercicios
1. ¿Qué problemas dieron origen a la interpolación polinomial? Dar la formulación ex-
plícita de tales problemas.
2. ¿Es la interpolación polinomial por n nodos siempre de grado n−1? Ilustra con ejemplos.
3. Para los datos (1, 2) y (2, 4), halla el polinomio p(x) de menor grado que los interpola.
Halla también un polinomio q(x) de grado dos que interpola estos datos. ¿Contradice
esto el teorema de unicidad de la interpolación?
4. Demuestra que el conjunto {`1 (x), `2 (x), . . . , `n (x)} formado por los polinomios de La-
grange dados por (5.5) es l.i. para cualquier n ≥ 1.
5. Demuestra que el conjunto {π1 (x), π2 (x), . . . , πn (x)} formado por los polinomios de
Newton dados por (5.7) es l.i. para cualquier n ≥ 1.
f [x1 , x2 , . . . , xj ] = 0 ,
para j > n.
x 0 1 2 ··· k
y 1 e e 2 · · · ek
para k = 3, 7, 9, 11 y 15.
Muestra que la solución exacta es
k−1
(e − 1)2 (e − 1)k Y
pk (x) = 1 + (e − 1)(x − 0) + (x − 0)(x − 1) + · · · + (x − j) .
2! k! j=0
9. Considera a la función f (x) = e−x , x ∈ [0, 1]. Sea pn−1 (x) el polinomio de grado a lo
más n − 1 que interpola a f (x) por los nodos 0 = ξ1 < ξ2 < · · · < ξn = 1 (igualmente
espaciados). ¿Con cuántos nodos se logra que
−x
e − pn−1 (x) ≤ 10−7 ,
11. Considera a la función f (x) = sen (x), x ∈ [0, π/2]. Sea pn−1 (x) el polinomio de grado
a lo más n − 1 que interpola a f (x) por los nodos 0 = ξ1 < ξ2 < · · · < ξn = π/2
(igualmente espaciados). ¿Cuál es la menor n tal que
14. Sea Π := a = x1 < x2 < · · · < xn = b una partición uniformemente espaciada. Sean
p(f )(x) y p fb (x) los polinomios de interpolación de Lagrange de las tablas
Tf : (xi , yi ), yi = f (xi ), i = 1 : n ,
y
Tf : (xi , yi ), yi = fb(xi ), i = 1 : n ,
respectivamente.
|δp(x)| ≤ 2n−1 ε, x1 ≤ x ≤ x n .
15. Sea a = x1 < x2 < · · · < xn = b una partición del intervalo I = [a, b].
17. Sea f ∈ C ∞ (I), I = [a, b] y a = x1 < x2 < · · · < xn = b una partición arbitraria de
I = [a, b]. Demuestra que si |f (n) (x)| ≤ Mn para todo x ∈ [a, b], entonces:
M n hn
max |f (x) − Pn−1 (x)| ≤ , (5.37)
x∈I 4n
con h dado por (5.36). Si |f (n) (x)| permanece acotada, entonces el error de interpolación
disminuye cuando n crece (y h decrece).
(n)
18. Calcula fR (x), para n = 1, 2, 3, 4 y 5. ¿Cómo es el comportamiento de cada una de
ellas? ¿La desigualdad (5.37) es válida para la función de Runge?
19. Sea f ∈ C[a, b] dada. Si pn−1 (x) es el polinomio de interpolación para f con respecto a
la partición uniformemente espaciada Π := a = x1 < x2 < · · · < xn = b de [a, b]. ¿Se
u
tiene siempre que pn−1 −→ f (i.e., max |f (x) − pn−1 (x)| −→ 0 cuando n → ∞)?
x∈[a,b]
para −1 ≤ x ≤ 1?
21. Calcula y gráfica el spline cuadrático de interpolación s(x) para la función de Runge
dada en el ejercicio 19, con nodos Π : −1, −1/3, −1/5, −1/10, 0, 1/10, 1/5, 1/3, 1. A
continuación calcula y gráfica el polinomio de interpolación global. ¿Cuál es el grado
de este polinomio? Comenta.
132 5.6. Ejercicios
xi 0 1 4 9 16 25 36 49 64
yi 0 1 2 3 4 5 6 7 8
Φi [f ] = mi , i = 0 : n,
donde Z 1
Φi [f ] = ti f (t)dt ,
0
que se le llama de momentos, tiene una única solución sobre Pn (espacio de polinomios
de grado a los más n).
5. Interpolación polinomial y splines cúbico 133
es la matriz de Hilbert
1 1
1 ···
2 n+1
1 1 1
···
2 3 n+2
Hn+1 = .
.. .. .. ..
. . . .
1 1 1
···
n+1 n+2 2n + 1
25. Sea Π : 0 = x1 < x2 < · · · < xn = 1 una partición uniforme del intervalo [0, 1], y sea
Y = {y ∈ C 2 [0, 1] : y(0) = y(1) = 1}. Considera a la familia de funciones
en donde Bj (x) es la función B-spline cúbica con soporte [xj−2 , xj+2 ]. Prueba que tal
familia es l.i. Esto es, {ϕj (x)}n+1
j=0 es una base para S(Π, 3) el espacio de las funciones
splines cúbicas sobre [0, 1] con puntos de ruptura xj .
la cual se obtiene de expresar a s(x) ∈ Snat (Π, 3), Π : a = x0 < x1 < · · · < xn = b en
términos de los B-splines cúbicos Bi,3 (x), i = −1 : n + 1, es no singular.
134 5.6. Ejercicios
27. Sea X(I), I = [a, b], a < b, un espacio vectorial normado de funciones g : I → R para
el cual todas las funcionales de evaluación
Φxi (p) = yi , i = 0 : n,
det(AΠ ) 6= 0 ,
donde AΠ = (aij ), aij = Φxi (bj ). Muestra que la condición de Haar es esencial,
(es decir, si Vn+1 no es de Haar, existe β base de Vn+1 y Π partición de I tal que
det(AΠ ) = 0).
C). Sea AΠ como en B). Y sea ΦΠ : X −→ Rn+1 dado por
Si ΦΠ es sobreyectivo, demuestra que det(AΠ ) 6= 0 ssi (PI) tiene una única solución
en Vn+1 con respecto a β y Π. En otras palabras, det(AΠ ) 6= 0 ssi Vn+1 generado
por β con respecto a Π es complemento topológico del subespacio N (ΦΠ ), (es
decir, X = N (ΦΠ ) ⊕ Vn+1 ). En particular, si Vn+1 es de Haar entonces Vn+1 es
siempre un complemento topológico de N (ΦΠ ), sin importar la base β para Vn+1
ni la partición Π para I elegidas.
28. Sea X un espacio vectorial normado de funciones f : Ω ⊂ R → R y {bj (x)}nj=1 ⊂ X. Se
dice que {bj (x)}nj=1 es de Haar o uniresolvente si det(bj (ξi )) 6= 0 para toda partición
Π = {ξi : ξi 6= ξj , i 6= j} de Ω. Y se dice de Tchebychev si además {bj (x)}nj=1 ⊂ C(Ω).
D E
Demuestra que si {bj (x)}nj=1 es de Tchebychev en Ω entonces no existe f ∈ {bj (x)}nj=1
no idénticamente nula con más de n − 1 ceros en Ω. Enuncia y demuestra el inverso de
este resultado. ¿Es esta discusión válida para el caso de funciones f : Ω ⊂ Rn → R?
5. Interpolación polinomial y splines cúbico 135
29. Sea Π : a = x0 < x1 < · · · < xn = b una partición arbitraria de [a, b], y wi (x) =
Πj6=i (x − xj ), i = 0 : m + 1.
pm+1 (f ; x) = c0 + c1 (x − x0 ) + · · · + cm+1 Πm
j=0 (x − xj ) .
d(m+1)
Y que por lo tanto, K(t) no puede tener más de m − 1 cambios de signo.
dt(m+1)
30. Sea X un subespacio lineal de C[a, b] y Π : a = x0 < x1 < · · · < xn = b una partición
de [a, b]. Prueba que la funcional ϕ : X → R dada por
ϕ(f ) := f [x0 , x1 , . . . , xn ]
de donde
|∆I| b−a b−a k∆f k∞
≤ k∆f k∞ = kf k∞ , I(f ) 6= 0 .
|I(f )| |I(f )| |I(f )| kf k∞
136
6. Integración y diferenciación numérica 137
Definición 6.1.1. El número de condición relativa del Problema 6.1.1 se define como
(b − a)kf k∞
κrel (f ) := , I(f ) 6= 0 .
|I(f )|
Observación 6.1.1. |I(f )| ≤ (b − a)kf k∞ implica κrel (f ) ≥ 1, para toda f ∈ C[a, b].
Observación 6.1.2. Si 0 < |I(f )| < ε con ε > 0 arbitrario, es posible que κrel (f ) >>
1, aunque kf k∞ sea pequeño. Así que en este caso, el Problema 6.1.1 puede ser muy mal
condicionado.
de donde
|b|
κrel (b) ≤ max |f (x)| ,
|I(f )| b≤x≤b
y cuando I(f ) = 0 :
R Rb
b
a f (x)dx − a f (x)dx
κabs (b) = ≤ max |f (x)| .
b
b − b b≤x≤b
En ambos casos, los números de condición pueden ser arbitrariamente grandes si f es sin-
gular “cerca” de b. Por lo que en este caso, el Problema 6.1.1 puede ser muy mal condicionado
con respecto a perturbaciones en los límites de integración.
138 6.1. Integración numérica
Definición 6.1.2. Se define una suma de Riemann para f sobre [a, b] por
n
X
Rn (f, Πn ) = (xi+1 − xi )f (ξi ) ,
i=1
donde xi ≤ ξi ≤ xi+1 , i = 1 : n .
donde a ≤ x1 < x2 < · · · < xn ≤ b, que se les llama fórmulas abiertas si a < x1 y xn < b,
y fórmulas cerradas si a = x1 y xn = b. Los puntos xi se les llama nodos y wi se les llama
pesos.
Hay varias alternativas para la primera pregunta, la más inmediata es elegir los nodos
uniformemente espaciados, es decir
b−a
xi = a + (i − 1) , i = 1 : n , n ≥ 2 .
n−1
Para la segunda pregunta, se procede de la siguiente manera:
6. Integración y diferenciación numérica 139
Sea yi = f (xi ), i = 1 : n .
Sea Pn−1 (x) el polinomio de grado ≤ n − 1 que interpola los puntos (xi , yi ) , i = 1 : n .
Y sea {`i (x)}ni=1 la base de Lagrange, es decir,
Demostración.
Z b n
X Z b n
X
Pn−1 (x)dx = f (xi ) `i (x)dx = wi f (xi ) = Qn (f ) ,
a i=1 a i=1
Rb
con wi = a
`i (x)dx.
Lema 6.1.2. Si P (x) es un polinomio de grado ≤ n−1 y Pn−1 (x) es el interpolante polinomial
de los puntos (xi , yi ) con yi = P (xi ), i = 1 : n, entonces Pn−1 (x) ≡ P (x) para todo x ∈ R.
Demostración. Nótese que Q(x) = P (x) − Pn−1 (x) es un polinomio de grado ≤ n − 1 que
tiene a xi como raíz para i = 1 : n, por lo que se sigue del teorema fundamental del álgebra
que Q(x) ≡ 0 para toda x ∈ R. Por lo tanto, Pn−1 (x) ≡ P (x).
1 1 w1 b−a
V2T w = = 1 2 = c,
a b w2 2
(b − a2 )
de donde w1 = w2 = (b − a)/2 = h/2 . Por lo tanto,
h
Q2 (f ) = [f (a) + f (b)] ,
2
que se le llama la regla del trapecio.
1 1 1 w1 b−a
V3T w =
a
1
2
(a + b) b w2 = 1 (b2 − a2 ) = c ,
2
1 1 3
a2 4
(a + b)2 b2 w3 3
(b − a 3
)
de donde
1 2 1
w3 = (b − a) , w2 = (b − a) y w1 = (b − a) .
6 3 6
Por lo tanto,
h a+b
Q3 (f ) = f (a) + 4f + f (b) ,
3 2
que se le llama la regla de Simpson. La función quad.m de MATLAB se basa en esta regla
en forma adaptiva recurrente.
6. Integración y diferenciación numérica 141
1 1 1 1 w1 b−a
1 1
a 3
(2a + b) 3
(a + 2b) b w2 21 (b2 − a2 )
V4T w =
2 1 1
2
=
= c,
a 9
(2a + b)2 9
(a + 2b)2 b w3 31 (b3 − a3 )
1 1 1 4
a3 27
(2a + b)3 27
(a + 2b)3 b3 w4 4
(b − a4 )
Demostración.
|I(f ) − Qn (f )| = |I(f ) − I(Pn−1 )| = |I(f − Pn−1 )|
Z b
≤ |f (x) − Pn−1 (x)|dx ≤ (b − a)kf − Pn−1 k∞ .
a
142 6.1. Integración numérica
Teorema 6.1.2. Si f ∈ C n [a, b] y existe M > 0 tal que
f (n)
∞ ≤ M para todo n ≥ 1,
entonces lim Qn (f ) = I(f ) .
n→∞
Observa que
1 n+1
|I(f ) − Qn (f )| ≤
h max f (n) (x) .
4 a≤x≤b
Sin embargo, en casos particulares se puede mejorar la cota para el error absoluto, como
se puede mostrar en los siguientes ejercicios.
Ejercicio 6.1.2. Para la regla del trapecio: si f ∈ C 2 [a, b], demuestra que
Z b
h 1 3 00
f (x)dx = [f (a) + f (b)] − h f (ξ) ,
a 2 12
para algún ξ ∈ (a, b) y h = b − a.
Ejercicio 6.1.3. Para la regla de Simpson: si f ∈ C 4 [a, b], demuestra que
Z b
h a+b 1 5 (4)
f (x)dx = f (a) + 4f + f (b) − h f (ξ) ,
a 3 2 90
para algún ξ ∈ (a, b) y h = (b − a)/2.
Ejercicio 6.1.4. Para la regla 3/8 de Simpson: si f ∈ C 4 [a, b], demuestra que
Z b
3h 2a + b a + 2b 3 5 (4)
f (x)dx = f (a) + 3f + 3f + f (b) − h f (ξ) ,
a 8 3 3 80
para algún ξ ∈ (a, b) y h = (b − a)/3.
6. Integración y diferenciación numérica 143
de donde !
n
X
b
b
Qn (f ) − Qn (f ) ≤ |wi |
f − f
.
∞
i=1
B). Si wi < 0 para alguna i, entonces κasb (Qn ) puede ser muy grande, en consecuencia, Qn
puede ser numéricamente inestable. Es el caso, cuando n es muy grande, por ejemplo:
κasb (Q21 ) = 542.25 ∗ (b − a).
Ejemplo 6.1.4. Los pesos para la fórmula de cuadratura Q9 están dados por
h
w= [3 956, 23 552, −3 712, 41 984, −18 160, 41 984, −3 712, 23 552, 3 956] T ,
14 175
donde h = (b − a)/8. En este caso, κasb (Q9 ) = 1.45 ∗ (b − a). La función quad8.m de
MATLAB se basa en Q9 en forma adaptiva recurrente. Esta regla es de orden 8.
s
h s s s
a = x1 x2 x3 x4 x5 x6 b = x7
(n−1)/2
X h h5 (4)
= [f (x2i−1 ) + 4f (x2i ) + f (x2i+1 )] − f (ξi )
i=1
3 90
(n−1)/2 (n−3)/2 5 (n−1)/2
h X X h X
= f (x1 ) + 4 f (x2i ) + 2 f (x2i+1 ) + f (xn ) − f (4) (ξi ) ,
3 i=1 i=1
90 i=1
Demostración. Se sigue al aplicar el teorema del valor extremo y el teorema de valores inter-
medios de Bolzano a f (4) (x).
Algoritmo 6.1.1. Algoritmo de la regla de Simpson compuesta.
Datos de entrada: a, b, f : [a, b] → R continua, T OL > 0, N M AX
Rb
Datos de salida: Valor aproximado S de a f (x)dx
N ←3
Mientras |S − Sprevio | ≥ T OL ∗ |S| o N ≤ N M AX, hacer
Sprevio ← S
h ← (b − a)/(N − 1)
S1 ← 0.0
S2 ← 0.0
6. Integración y diferenciación numérica 145
Para i = 2 : N − 1, hacer
x ← a + (i − 1) ∗ h
Si i es par, entonces
S2 ← S2 + f (x)
En caso contrario
S1 ← S1 + f (x)
Terminar
Terminar
S = h ∗ (f (a) + f (b) + 2 ∗ S1 + 4 ∗ S2 )/3.0
N ←N +2
Terminar.
Actividad 6.1.1. Programa el algoritmo de la regla de Simpson compuesta en FORTRAN
o en MATLAB. Prueba tu programa calculando ϕ(2), donde
Z x π
ϕ(x) = sen t2 dt .
0 2
Sugerencia. Elija T OL a precisión de la máquina, S = 1.0 y Sprevio = 0.0 .
y dado que y (ti ) = f (ti , yi ), se sigue que
yi+1 = yi + hf (ti , yi ) ; i = 0 : n− 1, (6.5)
que se le llama método de Euler (explícito). Es un método de un sólo paso, y es el más
sencillo de las técnicas numéricas para ecuaciones diferenciales. Si la solución de (6.4) se
requiere en t = tf , basta con elegir alguna n suficientemente grande y para h = (tf − t0 )/n
se tendrá tn = tf , y yn será una aproximación para y(tn ). La pregunta esencial es: ¿Qué tan
buena es esta aproximación? ¿Tiene alguna relación con y(tf ).
Discretizando con la fórmula de diferencia retrospectiva se tiene que
y(ti ) − y(ti−1 ) ∼ yi − yi−1
y (ti ) ∼
= = ,
h h
de donde se obtiene el llamado método de Euler hacia atrás:
yi = yi−1 + hf (ti , yi ) ; i = 1 : n, (6.6)
donde la derivada se evalúa al final del paso. Este tipo de métodos que evalúan la derivada
al final del paso se les llama también métodos implícitos.
Ahora, discretizando la ecuación diferencial del problema (6.4) con la fórmula de diferencia
central, se tiene que
y(ti+1 ) − y(ti−1 ) ∼ yi+1 − yi−1
y 0 (ti ) ∼
= = ,
2h 2h
de donde se obtiene el método del punto medio:
yi+1 = yi−1 + 2hf (ti , yi ) ; i = 1 : n −1, (6.7)
que es un método de dos pasos.
Este método de pasos múltiples es muy importante, por ejemplo, se utiliza como base de
un método de extrapolación de Bulirsch y Stoer (England, 2003 [6]). El método (6.7) necesita
de un método de un solo paso para arrancar, y en este caso se puede utilizar el método de
Euler (6.5):
y1 = y0 + hf (t0 , y0 ) .
.. .. .. (6.8)
. . .
y = f (t, y , y , · · · , y )
n n 1 2 n
148 6.3. Ejercicios
yi = y (i−1)
y1 = y , y2 = y , i = 3 : n,
6.3. Ejercicios
Integración numérica
1. Contesta las preguntas 8.1, 8.3, 8.7, 8.8 y 8.9 de la página 373 de Heath (2002) [12].
6. Integración y diferenciación numérica 149
que es una integral elíptica de segunda clase, y es imposible evaluarla con métodos
elementales de integración.
C). Calcule la longitud de la rosa con un 0.01 % de error.
¿Cuántos dígitos correctos se logran con este orden de error?
4. El periodo de un péndulo simple está determinado por la integral elíptica completa de
1a clase Z π/2
dθ
K(x) = √ .
0 1 − x2 sen2 θ
Dibuje una gráfica suave de K(x) sobre el intervalo 0 ≤ x ≤ 1.
Diferenciación numérica
5. Contesta las preguntas 8.39 al 8.42 de la página 375 de Heath (2002) [12].
6. Un algoritmo simple que se basa en el método de Euler prospectivo para aproximar
numéricamente la solución de (6.4) sobre el intervalo: t0 ≤ t ≤ tf , es el siguiente:
Datos de entrada: t0 , tf , y0 , f (t, y), N
Datos de salida: Valor aproximado y i de y(ti ), i = 0 : N .
h ← (tf − t0 )/N
Para i = 0 : N − 1, hacer
yi+1 ← yi + h ∗ f (ti , yi )
xi+1 ← xi + h
Terminar.
sobre el intervalo 0 ≤ t ≤ 1.
sobre el intervalo 1 ≤ t ≤ 2.
Compárela con la solución analítica dada por y(t) = t/(1 + ln t).
Bibliografía
[1] Buchanan, J. L., and Turner, P. R., Numerical Methodos and Analysis. McGraw-Hill,
Inc., 1992.
[2] Coleman, T. F., and Van Loan, Ch., Handbook for Matrix Computations. SIAM,
Philadelphia, 1988.
[4] Dennis, J. E. JR., and Schnabel, R. B. Numerical Methods for Uncostrained Opti-
mization and Nonlinear Equations. Prentice-Hall, Inc., Englewood Cliffs, New Jersey,
1983.
[6] England, R., Solución Numérica de Ecuaciones Diferenciales, XIII ENOAN, UAdeC,
México, 2003.
[7] Etter, D. M., Fortran 77 with Numerical Methods for Engineers and Scientifics. Ben-
jamin/Cummings, 1992.
[8] Forsythe, G. F., Malcolm, M. A., and Moler, C. B. Computer Methods for Mathemat-
ical Computations. Prentice-Hall Inc., 1977.
[10] Golub, G. H., and Van Loan, Ch. F., Matrix Computations, 2nd Edition. The Johns
Hopkins University Press, 1989.
[11] Hämmerlin, G., and Hoffmann, K-H., Numerical Mathematics. Springer-Verlag New
York Inc., 1991.
151
152 BIBLIOGRAFÍA
[13] Kahan, W., Numerical Linear Algebra. Canadian Math. Bull. 9, 757–801, 1966.
[14] Kahaner, D., Moler C., and Nash S. Numerical Methods and Software. Prentice-Hall,
1989.
[16] Moler, C. B., Cramer’s Rule on 2-by-2 Systems. New Mexico University, Alburquerque.
[18] Ortega, J. M., and Rheinboldt, W. C., Iterative Solution of Nonlinear Equations in
Several Variables. Academic Press, New York, 1971.
[19] Overton, M. L. Numerical Computing with IEEE Floating Point Arithmetic. Society
for Industrial and Applied Mathematics. Philadelphia, 2001.
Versión en español: Cómputo Numérico con Aritmética de Punto Flotante. SMM,
2002.
[20] Page, C. G., Professional Programmer’s Guide to FORTRAN 77. University of Leices-
ter, UK. 1988, 2001. Last update/bug fix: 2003 September 3.
http://www.fortran.com/
[22] Shampine, L. F., Allen, R. C. Jr., and Pruess, S. Fundamentals of Numerical Com-
puting. John Wiley & Sons, Inc., 1997.
[23] Spivak, M. Cálculo Infinitesimal. Tomo I. Editorial Reverté, S. A., España, 1978.
[24] Stoer, J., and Bulirsch, R., Introduction to Numerical Analysis. Springer-verlag, New
York, Inc., 1993.