Metodos Numericos
Metodos Numericos
Metodos Numericos
para Ingenierı́a
usando Python
W ILLIAM L A C RUZ
Universidad Central de Venezuela
Facultad de Ingenierı́a
Escuela de Ingenierı́a Eléctrica
Departamento de Electrónica, Computación y Control
c 2019 W. La Cruz
Contenido
Contenido ii
Bibliografı́a 43
ii
Antes de leer y usar los programas
de este libro
Todos los programas en este libro se escribieron en el lenguaje Python versión 3.6
(https://www.python.org/), para una computadora personal. Los programas del libro
conforman el módulo calnum, que está disponible en el sitio Web:
http://neutron.ing.ucv.ve/cruzw/metnum.html
A lo largo del libro se asume que todos los objetos del módulo calnum están cargados
previamente, a través de la instrucción:
>>> from calnum import ∗
• Numpy: http://www.numpy.org/
• Scipy: https://www.scipy.org/
• Mapplotlib: https://matplotlib.org/
Los objetos de la librerı́a Numpy se utilizan con el prefijo np (siguiendo la sintaxis de una
clase), ya que se asume que Numpy se ha cargado previamente con la instrucción:
>>> import numpy as np
iii
1 Herramientas Matemáticas
Básicas
1
2 1.1. CONCEPTOS BÁSICOS DEL ÁLGEBRA LINEAL
A los elementos de un espacio vectorial se les acostumbra llamar vectores. Veamos dos
ejemplos de espacios vectoriales, dejando como ejercicio para el lector la comprobación,
en cada uno de ellos, de los axiomas enunciados en la Definición 1.1.
Ejemplo 1.1.
1. El conjunto de los números reales, denotado por R, con las operaciones habituales
de adición y multiplicación representa un espacio vectorial.
2. El conjunto formado por las n-uplas de números reales, esto es, x = (x1 , x2 , . . . , xn ),
donde xi ∈ R para todo i = 1, 2, . . . , n, es un espacio vectorial. Éste se denota por
Rn . Los elementos de Rn también se pueden representar como un vector columna,
x1
x2
x = . .
..
xn
A lo largo del libro denotaremos un vector de Rn como una n-upla o un vector columna.
W = span(v1 , . . . , vp )
= {v = αi v1 + · · · + αp vp : αi ∈ R}.
αi v1 + · · · + αm vm = 0
ei = (0, 0, . . . , 0, 1 , 0, . . . , 0),
↑
i-ésima componente
es decir, todas las componentes de ei son nulas salvo la i-ésima que es igual a 1.
Pasemos ahora a definir producto escalar, con el cual podremos introducir el concepto
de vectores ortogonales o perpendiculares.
Definición 1.6. Una norma vectorial, denotada por el sı́mbolo k · k, es una función real
definida en el espacio vectorial Rn , que satisface las siguientes propiedades:
n
X
kxk1 = |xi | = |x1 | + |x2 | + · · · + |xn |,
i=1
n
!1/2
X 1/2
kxk2 = x2i = x21 + x22 + · · · + x2n ,
i=1
La norma-2 también se denomina norma Euclı́dea. Las normas que más emplearemos
en este libro son la norma-2 y su norma matricial inducida, que más adelante definiremos.
El concepto de ortogonalidad es importante en muchas aplicaciones, particularmente
en álgebra lineal.
De esta forma, dos vectores x e y son ortogonales si el ángulo entre ellos es θ = 90◦ .
Una propiedad importante de las normas de Hölder es la desigualdad de Hölder,
xT y ≤ kxkp kykq ,
donde
1 1
+ = 1.
p q
Un caso especial de la desigualdad de Hölder es la desigualdad de Cauchy-Schwarz,
1.1.2 Matrices
Una matriz es un concepto muy importante en álgebra lineal, que tiene muchas aplica-
ciones en ingenierı́a y en las ciencias aplicadas.
Ejemplo 1.3. Observe las matrices A ∈ R3×3 , B ∈ R1×4 y C ∈ R3×1 , con sus respectivas
traspuestas.
3 −1.1 0 4
A= 0 2 0.4 , B = 1 −3.4 1
2 9 , C = −0.001 ,
−1 1 2.1 2
1
3 0 −1 −3.4
AT = −1.1 2 1 , B T =
1/2 , C T = 4 −0.001 2 .
0 0.4 2.1
9
Aprovechemos este ejemplo para comenzar a trabajar con Python. Las matrices A, B y
C pueden ser creadas y manipuladas en Python. Para ello, se utiliza la librerı́a Numpy.
Seguidamente se muestra la manera de hacerlo. Primero, en el Shell (escritorio de trabajo)
de Python, cargamos la librerı́a Numpy.
Con estas instrucciones se carga la librerı́a Numpy con el nombre np. Todas las funciones
disponibles en Numpy se utilizan con la siguiente sintaxis: np.funcion (siguiendo las reglas
de una clase). A lo largo del escrito utlizaremos el prefijo np para denotar la librerı́a Numpy,
la cual, por supuesto, debe cargarse previamente con el nombre np. Ahora bien, para crear
una matriz se pueden utilizar los comandos array o matrix de Numpy. Por ejemplo, las
matrices A, B y C dadas arriba se crean de la siguiente manera:
>>> A = np . a r r a y ( [ [ 3 , − 1 . 1 , 0 ] , [ 0 , 2 , 0 . 4 ] , [ − 1 , 1 , 2 . 1 ] ] )
>>> B = np . a r r a y ( [ 1 , − 3 . 4 , 0 . 5 , 9 ] )
>>> C = np . a r r a y ( [ [ 4 ] , [ − 0 . 0 0 1 ] , [ 2 ] ] )
>>> p r i n t (A)
[ [ 3 . −1.1 0 . ]
[ 0. 2. 0.4]
[ −1. 1. 2.1]]
>>> p r i n t (B)
[ 1 . −3.4 0 . 5 9 . ]
>>> p r i n t (C)
[ [ 4.00000000e+00]
[ −1.00000000e−03]
[ 2.00000000e+00]]
Para hallar la traspuesta de una matriz se utiliza uno de los comandos .transpose() o .T,
como se indica a continuación:
>>> A . T
a r r a y ( [ [ 3 . , 0 . , −1. ] ,
[ −1.1 , 2 . , 1 . ] ,
[ 0. , 0.4 , 2.1]])
>>> C . t r a n s p o s e ( )
a r r a y ( [ [ 4.00000000e+00, −1.00000000e −03, 2.00000000e +00]])
cij = αaij , i = 1, . . . , m, j = 1, . . . , n.
El conjunto de las matrices reales Rm×n con las operaciones algebraicas dadas en la
definición anterior, conforma un espacio vectorial.
Ejemplo 1.4.
−1 3 2 5 1 8 −1 3 −4 12
5 4 + −6 −2 = −1 2 , 4 5 4 = 20 16 ,
0 −2 8 6 8 4 0 −2 0 −8
3 −1 0 2 12
0
2 4 −6 = 20 .
−1 1 2 8 8
Definición 1.12. Una matriz A ∈ Rm×n es cuadrada si tiene el mismo número de co-
lumnas y filas, es decir, si m = n. Cuando una matriz cuadrada A tiene la propiedad
que AT = A, se dice que A es simétrica.
>>> np . eye ( 3 )
array ([[ 1. , 0. , 0.] ,
[ 0. , 1. , 0.] ,
[ 0. , 0. , 1.]])
i) (A−1 )−1 = A.
det(A) = a.
Esto significa que el determinante de una matriz de orden 2 × 2 está definido en términos
de determinantes de orden 1 × 1. El determinante de una matriz de orden 3 × 3 está
definido en términos de determinantes de orden 2 × 2, y ası́ sucesivamente. Para precisar,
introducimos las siguientes definiciones.
CAPÍTULO 1. HERRAMIENTAS MATEMÁTICAS BÁSICAS 9
Definición 1.16. Sean A = (aij ) una matriz cuadrada y Aij el cofactor de aij . La
traspuesta de la matriz de cofactores se conoce como la adjunta de la matriz A, denotada
por adj A,
adj A = (Aji ).
Teorema 1.4. Si A es una matriz no singular, entonces la inversa de A está dada por
1
A−1 = adj A.
det A
cargan solamente las funciones det, inv y trace, sin cargar las otras funciones de la librerı́a.
Ejemplo 1.6. La matriz A del Ejemplo 1.5 es definida positiva. En efecto, para todo
0 6= x ∈ R3 se tiene:
1 0 0 x1
T
x Ax = x1 x2 x3 0 2 1 x2 = x21 + 2x22 + 3x23 > 0.
0 −1 3 x2
Por tanto, cualquier norma vectorial en Rmn puede medir el “tamaño” de tal matriz. Sin
embargo, al tratar con el espacio vectorial de las matrices existen normas especiales que
son más útiles que las normas vectoriales definidas previamente. Éstas son las normas
inducidas.
kAxkp
kAkpq = máx .
x∈R n , x6=0 kxkq
Las normas matriciales satisfacen las propiedades usuales de las normas, esto es,
La norma matricial más importante que no es inducida por una norma vectorial es la
norma de Frobenius, definida por
1/2
Xm X n
kAkF = tr(AT A) = a2ij , para A ∈ Rm×n .
i=1 j=1
1713 √
kAk2 = , kAkF = 201.
130
El comando norm del módulo linalg de la librerı́a Numpy, se utiliza para calcular las normas
p y la norma de Frobenius. Para la matriz A,
>>> A = np . a r r a y ( [ [ 1 , 4 , 6 ] , [ 3 , − 1 , 5 ] , [ 0 , 8 , 7 ] ] )
se tiene que las normas calculadas anteriormente están dadas respectivamente por:
>>> np . l i n a l g . norm (A , 1 )
18.0
>>> np . l i n a l g . norm (A , np . i n f )
15.0
>>> np . l i n a l g . norm (A , 2 )
13.176932423207695
>>> np . l i n a l g . norm (A , ’ f r o ’ )
14.177446878757825
alc(A) = {y ∈ Rm : y = Ax, x ∈ Rn }.
>>> A1 = np . a r r a y ( [ [ 1 , 4 , 6 ] , [ 3 , − 1 , 5 ] , [ 0 , 8 , 7 ] ] )
>>> A2 = np . a r r a y ( [ [ 1 , 0 , 2 ] , [ 0 , 1 , 0 ] , [ 1 , 1 , 2 ] ] )
>>> np . l i n a l g . m a t r i x r a n k (A1)
3
>>> np . l i n a l g . m a t r i x r a n k (A2)
2
Matriz Diagonal
Las matrices diagonales son matrices cuadradas de orden n de la forma
d11
d22
D= .. ,
.
dnn
donde dij = 0 para i 6= j. Utilizamos la notación D = diag(d11 , d22 , . . . , dnn ) para indicar
que D es una matriz diagonal.
El determinante de una matriz diagonal es el producto de los elementos de su diagonal.
Una matriz diagonal D tiene inversa si todos los elementos de su diagonal son distintos de
cero y −1
d11
d−1
22
D −1 = .. .
.
d−1
nn
14 1.1. CONCEPTOS BÁSICOS DEL ÁLGEBRA LINEAL
Matrices Triangulares
Una matriz cuadrada A de orden n se dice triangular superior si aij = 0 para i > j,
mientras que ésta se dice triangular inferior si aij = 0 para i < j. Seguidamente se muestra
la forma de las matrices triangular inferior y triangular superior, respectivamente.
l11 0 · · · 0 u11 u12 · · · u1n
l21 l22 · · · 0 0 u22 · · · u1n
L= . .. . . .. , U = .. .. .. .. .
.. . . . . . . .
ln1 ln2 · · · lnn 0 0 · · · unn
Recordemos algunas propiedades algebraicas de las matrices triangulares que son fáciles
de verificar.
Matrices Bidiagonales
Matrices Tridiagonales
Una matriz cuadrada T de orden n se dice tridiagonal si tij = 0 para i, j tal que |j − i| >
1. Seguidamente se muestra la forma de una matriz tridiagonal.
t11 t12
..
t21 t22 .
T =
.. ..
. . tn−1,n
tn,n−1 tnn
Una matrix A = (aij ) se dice matriz de Hessenberg superior si ella tiene ceros debajo
de la primera subdiagonal principal, es decir, aij = 0 para i > j + 1. A continuación
CAPÍTULO 1. HERRAMIENTAS MATEMÁTICAS BÁSICAS 15
Matriz Permutación
Una matriz cuadrada se dice matriz permutación si sus columnas son una permutación
de las columnas de la matriz identidad. Seguidamente se muestran ejemplos.
1 0 0 0 0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 0 0 1 0 0
P1 =
0 1 0 0
, P2 =
0 1 0 0
, P3 =
0 0 1 0
.
0 0 0 1 4×4 1 0 0 0 4×4 1 0 0 0 4×4
Ax = λx, yT A = λyT .
y como det(AT − λI) = det((A − λI)T ) = det(A − λI), se concluye que σ(AT ) = σ(A).
De todo lo anterior se obtiene que una matriz es Qnsingular si y sólo si ésta tiene al menos
un autovalor nulo, dado que pA (0) = det(A) = i=1 λi = 0. Ahora, como A es una matriz
real, pA (λ) es un polinomio con coeficientes reales; por lo tanto, los autovalores complejos
de A deberán aparecer en pares complejos conjugados.
El módulo máximo de los autovalores de A se denomina radio espectral de A y es de-
notado por: ρ(A) = máxλ∈σ(A) |λ|. Seguidamente damos el Teorema de Cayley-Hamilton.
y y y
p(x) = 21 x4 − x2
2 f (x) = 2
g(x) = 79 x + 1
x x x
(a) f (x) = 2, función cons- (b) g(x) = 97 x + 1, función li- (c) p(x) = 12 x4 − x2 , polino-
tante neal mio de grado 4
Definición 1.22. Sean f una función definida de un intervalo (a, b) a R, y x0 ∈ (a, b).
Se dice que w ∈ R es un lı́mite de f cuando x tiende a x0 , si para todo ε > 0, existe
δ = δ(ε) tal que |f (x) − w| < ε siempre que 0 < |x − x0 | < δ. Para indicar que w es un
lı́mite de f cuando x tiende a x0 , se escribe
lı́m f (x) = w.
x→x0
Teorema 1.7. Sean f y g dos funciones reales tales que lı́m f (x) = A y lı́m g(x) = B.
x→x0 x→x0
Entonces:
i) lı́m [f (x) ± g(x)] = A ± B,
x→x0
ii) lı́m [f (x) · g(x)] = A · B,
x→x0
iii) lı́m [f (x)/g(x)] = A/B, si B 6= 0.
x→x0
Teorema 1.9 (Teorema de Bolzano). Sea f continua en cada punto del intervalo cerrado
[a, b] y supongamos que f (a)f (b) < 0. Entonces, existe por lo menos un punto c ∈ (a, b) tal
que f (c) = 0.
Teorema 1.10 (Teorema del valor intermedio). Sea f continua en cada punto de un
intervalo [a, b]. Si x1 < x2 son dos puntos cualesquiera de [a, b] tales que f (x1 ) 6= f (x2 ),
entonces la función f toma todos los valores comprendidos entre f (x1 ) y f (x2 ) por lo menos
una vez en el intervalo (x1 , x2 ).
Definición 1.24. Sea f una función definida por lo menos en un intervalo abierto (a, b).
La derivada de f en x ∈ (a, b), denotada por f ′ (x), se define como
f (x + h) − f (x)
f ′ (x) = lı́m ,
h→0 h
con tal que el lı́mite exista.
Como el Teorema 1.7, que nos enseña a calcular el lı́mite de la suma, diferencia, pro-
ducto y cociente de dos funciones, el siguiente teorema nos proporciona un conjunto de
reglas para el cálculo de derivadas.
Además, si f = u ◦ v tal que las derivadas v ′ (x) y u′ (y) existen con y = v(x), entonces la
derivada f ′ (x) también existe y está dada por la fórmula
Definición 1.25. Se dice que una función real f tiene un máximo absoluto en un con-
junto S ⊂ R, si existe por lo menos un punto c ∈ S tal que f (x) ≤ f (c), para todo
x ∈ S. Ahora, se dice que f tiene un máximo relativo en un punto c ∈ S, si existe un
cierto intervalo abierto I ⊂ R que contiene a c tal que f (x) ≤ f (c), para todo x ∈ I ∩ S.
Los conceptos de mı́nimo absoluto y mı́nimo relativo se definen del mismo modo con la
desigualdad invertida.
Teorema 1.12. Sea f una función definida en un intervalo abierto I, y supongamos que
f tiene un máximo relativo o un mı́nimo relativo en un punto c ∈ I. Si la derivada f ′ (c)
existe, entonces f ′ (c) = 0.
Teorema 1.13 (Teorema del Valor Medio para Derivadas). Si f es una función continua
en todo punto del intervalo [a, b] que tiene derivada en cada punto del intervalo (a, b),
entonces existe por lo menos un punto c ∈ (a, b) para el que
i) Si f ′ (x) > 0 para todo x < c y f ′ (x) < 0 para todo x > c, entonces f tiene un máximo
relativo en c.
ii) Si f ′ (x) < 0 para todo x < c y f ′ (x) > 0 para todo x > c, entonces f tiene un mı́nimo
relativo en c.
Teorema 1.15. Sea c un punto crı́tico de f en un intervalo (a, b); esto es, supongamos que
a < c < b y f ′ (c) = 0. Supongamos también que la segunda derivada f ′′ existe en (a, b).
Entonces:
i) Si f ′′ (x) < 0 para todo x ∈ (a, b), entonces f tiene un máximo relativo en c.
ii) Si f ′′ (x) > 0 para todo x ∈ (a, b), entonces f tiene un mı́nimo relativo en c.
20 1.2. CONCEPTOS BÁSICOS DEL CÁLCULO
Definición 1.27. Sea f una función acotada en el intervalo [a, b], esto es, existen
números m y M tales m ≤ f (x) ≤ M para x ∈ [a, b]. Para cada partición P de [a, b]
hacemos
n
X n
X
Mi = sup f (x), mi = inf f (x), U (P, f ) = Mi ∆xi , L(P, f ) = mi ∆xi .
xi−1 ≤x≤xi xi−1 ≤x≤xi
i i
Si las integrales superior e inferior son iguales, se dice que f es integrable en [a, b] y el
valor común de estas integrales se representa con el sı́mbolo
Z b
f (x) dx,
a
Entonces, F es continua en [a, b]; además, si f es continua en el algún punto z ∈ [a, b], la
derivada F ′ (z) existe y
F ′ (z) = f (z).
Teorema 1.18 (Teorema de Taylor). Sean f una función que tiene derivada continua de
orden n + 1 en el intervalo [a, b] y x0 ∈ [a, b]. Entonces, para todo x ∈ [a, b] existe β = β(x)
tal que
Xn
f (k) (x0 )
f (x) = (x − x0 )k + En (x),
k!
k=0
f (n+1) (β)
donde En (x) = (n+1)! (x − x0 )n+1 .
Los conceptos de campo escalar, campo vectorial y transformación lineal, son muy
importantes para el estudio de métodos para la aproximación de funciones, sistemas de
ecuaciones lineales y no lineales y optimización.
∂f f (x + ej ) − f (x)
(x) = lı́m ,
∂xj t→0 t
En el caso de un campo escalar el jacobiano tiene una sola fila y se le conoce con el
nombre de gradiente.
Teorema 1.19 (Teorema de Taylor para funciones de dos variables). Sean f(t, y) y sus
derivadas parciales hasta orden (n + 1) continuas en el rectángulo abierto
donde En (t, y) es el término de error que envuelve las derivadas parciales de f (t, y) de
orden (n + 1).
24 1.3. CALCULANDO CON NÚMEROS
El sistema decimal no es eficiente para ser usado internamente por una computadora.
En lugar de ello se utiliza, generalmente, el sistema de base 2 o binario. Un sistema
binario es semejante al sistema decimal, excepto que la base es 2, los dı́gitos binarios
(bits) permitidos son 0 y 1, y cada bit es multiplicado por una potencia de 2, dependiendo
de su posición relativa al punto binario. La conversión de binario a decimal y viceversa es
fácil:
x = ± 0.d1 d2 · · · dn dn+1 · · · × β e
s
|{z}|
e
{z }|
m
{z }
1 bit 11 bits 52 bits
El formato doble IEEE utiliza 64 bits (u 8 bytes); un bit es usado para el signo del
número s (1 cuando el número es negativo y 0 cuando es positivo), y 52 bits son dedi-
cados a la mantisa m. Los restantes 11 bits representan el exponente e. Un número x
representado por este arreglo se escribe como:
x = (−1)s × 1.(m)10 × 2E
El campo del exponente e es una representación sesgada de su valor actual E (entero en
base decimal); además, e y E están relacionados por
(e)10 = E + 1023.
La mantisa m es una fracción con el punto binario inmediatamente a su izquierda, por
ejemplo,
m = 1101000000000000000000000000000000000000000000000000
tiene un valor decimal
(m)10 = 2−1 + 2−2 + 2−4 = 0.8125
Ahora, e y s son considerados enteros. Pasemos a ver un ejemplo.
Ejemplo 1.10. Hallemos la representación del número −11.6 en el formato doble IEEE. Se
comienza expresando a −11.6 punto-flotante
−11.6 = (−1)1 × (1.4375) × 23
De allı́ se obtiene que s = 1. Ahora, para encontrar la representación binaria de la
parte fraccionaria, .4375, se procede de la siguiente manera. Debemos hallar los bits
a−1 , a−2 , a−3 , . . . tales que
.4375 = a−1 2−1 + a−2 2−2 + a−3 2−3 + · · ·
26 1.3. CALCULANDO CON NÚMEROS
Para hallar a−1 , multiplicamos por 2 la ecuación anterior en ambos lados. Ası́ obtenemos:
0.8750 = a−1 + a−2 2−1 + a−2 2−2 + · · ·
luego, a−1 = 0. Procediendo de la misma forma hallamos los siguientes bits. En su
totalidad, el procedimiento es el siguiente:
.4375
2
0 .8750
2
1 .7500
2
1 .5000
2
1 .0000
Por lo tanto, la mantisa m es la cadena de bits
m = 0111000000000000000000000000000000000000000000000000
El valor de E es 3; por lo tanto,
(e)10 = 1026 = 210 + 2.
Ası́,
e = 10000000010
Colocando juntos s, m y e, obtenemos que el número decimal −11.6 está representado en
el formato doble IEEE por la cadena de bits:
1100000000100111000000000000000000000000000000000000000000000000
Note que el formato doble IEEE tiene una longitud finita de bits (o cualquier otro
formato de punto-flotante). Por ello, este formato puede representar un conjunto finito de
números decimales. El rango de números que pueden ser representados varı́a de 2−1023 ≈
10−308 a 21024 ≈ 10309 .
Existen números reales que no pueden ser representados de forma exacta en punto-
flotante, es decir, se incurre en un error al representar el número real como un número
punto-flotante. Dos medidas muy utilizadas del error cometido al aproximar un número
son el error absoluto y el error relativo.
ası́,
0.1 ≈ x1 = (−1)0 × (1.(m1 )10 ) × 2−4
13
X
= 2−4 + (2−4k−1 + 2−4k−4 )
k=1
13
X
−4 −1 −4
=2 + (2 +2 ) 2−4k
k=1
+123 −1 2−52
= 2−4 +
24 1 − 24
≈ 0.09999999999999999167332731531133
Para la cadena de bits c2 , se observa que
s = 0,
e = 1111111011,
m2 = 1001100110011001100110011001100110011001100110011010;
por lo tanto, al realizar la conversión a decimal se obtiene:
(e)10 = 1019 ⇒ E = −4,
−52
(m2 )10 = (m1 )10 − 2 + 2−51 ,
ası́,
0.1 ≈ x2 = (−1)0 × (1.(m2 )10 ) × 2−4
3 −52
−4 2 +1 2 −1
=2 + − 2−56 + 2−55
24 1 − 24
≈ 0.10000000000000000555111512312579
28 1.3. CALCULANDO CON NÚMEROS
y un error relativo
|0.1 − x1 |
≈ 8.326673 × 10−17 .
0.1
Ahora, si se toma a x2 como la representación de punto-flotante del número 0.1, se comete
un error absoluto
|0.1 − x2 | ≈ 5.551115 × 10−18 ,
y un error relativo
|0.1 − x2 |
≈ 5.551115 × 10−17 .
0.1
además, |⌊x⌋ − x| ≤ 1, donde ⌊x⌋ es el entero más cercano a x tal que ⌊x⌋ ≤ x. Luego,
y de esto se obtiene
f l(x) = ⌊x253−α ⌋2α−53 .
De esta forma, podemos escribir:
que es una cota del error absoluto. Por (1.2) se tiene 1/|x| ≤ 21−α . Entonces, por (1.3)
obtenemos
x − f l(x)
≤ 2α−53 21−α = 2−52 ,
x
que es una cota del error relativo. Si tomamos µ = (f l(x) − x)/x, la desigualdad anterior
adquiere la siguiente forma:
El épsilon de la máquina eps también puede definirse como el número positivo más
pequeño tal que (1 + eps) > 1. Con esta definición diseñaremos un pequeño programa que
nos permitirá calcular el eps de la computadora que estemos utilizando.
Ejemplo 1.12. Para encontrar la medida del eps, le sumaremos el valor 1 a una sucesión
decreciente de números positivos, hasta que los resultados no muestren cambios. De esta
forma, encontraremos el número positivo eps tal que (1 + eps) > 1. Seguidamente se
muestra un simple programa que calcula el epsilon de la máquina.
eps = 1 .
w h i l e 1 . + eps > 1 . :
eps /= 2 .
eps ∗= 2 .
p r i n t ( eps )
Cuando este programa corre en nuestra computadora (en Python), el valor que imprime es
Teorema 1.20 (Leyes de la aritmética punto flotante). Sean x e y dos números punto-
flotante y sean f l(x + y), f l(x − y), f l(xy), y f l(x/y) la suma, resta, producto y división,
respectivamente. Entonces:
iv) Si x e y son números reales que no poseen representación exacta punto-flotante, en-
tonces se cumple la siguiente ley:
f l(x+y) = (x(1+µ1 )+y(1+µ2 ))(1+µ3 ), donde |µ1 | < eps, |µ2 | < eps, |µ3 | < eps.
Esta última propiedad se cumple de forma similar para la resta, el producto y la di-
visión.
El Ejemplo 1.11 es una evidencia que los errores de redondeo son inevitables y difı́ciles
de controlar. Existe otro tipo de errores que sı́ se pueden de alguna forma controlar. Un
error frecuente en análisis numérico es la pérdida de dı́gitos significativos que aparece
como consecuencia de descuidos durante el proceso de programación. El caso más em-
blemático es la sustracción de cantidades casi iguales. Como ejemplo veamos la magnitud
del error relativo que puede producirse al restar dos números muy cercanos.
x − y = 0.00000066910593
Si los cálculos se realizaran en una computadora decimal con mantisa de 8 dı́gitos, verı́amos
que
En otras palabras, el error relativo es grande. Ahora, el número f l(x) − f l(y) se representa
en la computadora como 0.66000000 × 10−6 , aunque los ceros de la mantisa sólo sirven
para denotar el lugar decimal. Note que se perdieron 6 dı́gitos significativos.
El siguiente teorema establece cotas del número de bits significativos que se pierden al
efectuar la sustracción x − y cuando x es cercano a y, en términos de la cantidad |1 − y/x|.
Teorema 1.21. Si x e y son números punto-flotantes, positivos y tales que x > y con
y
2−q ≤ 1 − ≤ 2−p ,
x
entonces en la resta x − y se pierden a lo sumo q y al menos p bits significativos.
Definición 1.41. Una operación punto-flotante es toda operación de suma, resta, mul-
tiplicación o división.
N
X 1
S= (−1)i+1 .
1 + i2
i=1
32 1.3. CALCULANDO CON NÚMEROS
Ejemplo 1.16. Un ejemplo simple de estabilidad son las operaciones aritméticas de punto-
flotante. Veamos que la suma de dos números punto-flotante es estable. Sean x e y dos
números punto-flotante. Por el Teorema 1.20 se tiene:
Por tanto, como |µ| < eps, la suma de x e y obtenida por f l(x+y) es cercana a la suma x+y
de los datos originales x e y. En consecuencia, la operación de sumar dos números punto-
flotante es estable. Dde una manera similar se muestra la estabilidad de la multiplicación
y la división.
es decir, se debe hallar l12 , u11 , u12 y u22 . Es claro que u11 = δ, u12 = −1, l21 = δ−1 y
u22 = 1 − l21 u12 = 1 + δ−1 . En aritmética punto-flotante, si δ es suficientemente pequeño
(δ < eps), entonces f l(u22 ) = δ−1 . Aun suponiendo que el resto de las cuentas se obtienen
de forma exacta, al multiplicar las dos matrices triangulares punto flotante, se obtiene la
matriz
δ −1
1 0
cuyo elemento (2, 2) difiere notablemente del elemento (2, 2) de la matriz A. Es decir, el
proceso de factorización realizado de esa manera reproduce una matriz que dista mucho
de la original, y por ende es un proceso inestable. Comprobemos esto numéricamente.
Inicialmente tomemos δ = 10−15 y calculemos el producto LU .
>>> d e l t a = 1 . 0 e−15
>>> L = np . a r r a y ( [ [ 1 , 0 ] , [ 1 / d e l t a , 1 ] ] )
>>> U = np . a r r a y ( [ [ d e l t a , −1] ,[0 ,1+(1/ d e l t a ) ] ] )
>>> L . dot (U)
a r r a y ( [ [ 1 . e −15, −1.e +00] ,
[ 1 . e+00, 1 . e +00]])
En este caso, el producto de las matrices L y U arroja la matriz A original. Ahora, tomemos
δ = 10−16 y calculemos nuevamente el producto LU .
>>> d e l t a = 1 . 0 e−16
>>> L = np . a r r a y ( [ [ 1 , 0 ] , [ 1 / d e l t a , 1 ] ] )
>>> U = np . a r r a y ( [ [ d e l t a , −1] ,[0 ,1+(1/ d e l t a ) ] ] )
>>> L . dot (U)
a r r a y ( [ [ 1 . e −16, −1.e +00] ,
[ 1 . e+00, 0 . e +00]])
El siguiente teorema establece que el error relativo en la solución x está dominado por
el número de condición de la matriz A, siempre que las perturbaciones relativas en A y b
sean pequeñas. Para la demostración de este resultado general ver, por ejemplo, el libro
[9, p. 123].
El comando cond del módulo linalg de la librerı́a Numpy, se utiliza para calcular el
número de condición κp (A), para valores de p = 1, 2, inf, ‘fro’, entre otros. Generalmente,
se emplea el número de condición κ2 (A) calculado con la norma-2 o norma Euclı́dea.
Veamos un ejemplo.
Ejemplo 1.19. Para la matriz A,
>>> A = np . a r r a y ( [ [ 1 , 4 , 6 ] , [ 3 , − 1 , 5 ] , [ 0 , 8 , 7 ] ] )
>>> A
array ([[ 1 , 4 , 6] ,
[ 3 , −1, 5 ] ,
[ 0 , 8 , 7]])
Es claro que el número de condición κp (A) está definido para matrices no singulares.
Se puede establecer que κp (A) es el inverso de la distancia a la singularidad, es decir, si
κp (A) es grande entonces A es muy cercana a una matriz singular ([4]).
En el siguiente teorema se establece la versión simplificada del Teorema 1.22 para el
caso en que la matriz no sufre perturbaciones, esto es, cuando △A = 0. Este es un caso de
interés, ya que en muchas aplicaciones la matriz A representa el modelo matemático fijo y
el ruido o perturbación aparece en el vector b de mediciones experimentales.
kδxkp kδbkp
≤ κp (A) .
kxkp kbkp
El Teorema 1.23 dice que el error relativo en la solución puede llegar a ser tan grande
como la κp (A) multiplicada por el error relativo en el vector b. Por tanto, si κp (A) no es
muy grande, entonces una pequeña perturbación en b tendrá poco efecto en la solución
obtenida. Mientras que si κp (A) es grande, entonces aún una pequeña perturbación en b
puede ocasionar un cambio muy grande en la solución.
CAPÍTULO 1. HERRAMIENTAS MATEMÁTICAS BÁSICAS 37
b 2
kb − bk kδbk2
= = 1.054 × 10−4 (pequeña).
kbk2 kbk2
lı́m xki = xi ,
k→∞
donde xki y xi son las componentes de los vectores correspondientes. Por otra parte, decir
que la sucesión {xk } converge x es equivalente a exigir que la sucesión {xk − x} converja a
0. Este hecho unido a que en Rn las normas son equivalentes, se establece el siguiente re-
sultado que permite definir convergencia de una sucesión de vectores utilizando cualquier
norma vectorial en Rn .
kxk+1 − x∗ k ≤ ck kxk − x∗ k.
n n
Solución. Es claro que las sucesiones { 21n }∞
n=0 , {2
−(3/2) }∞ y {3−2 }∞ convergen a 0.
n=0 n=0
Se tiene que
1 1 1
n+1
= · n , para todo n ≥ 0,
2 2 2
por tanto, la sucesión { 21n }∞
n=0 converge Q-linealmente a 0. Ahora,
n+1
n 3/2
2−(3/2) = 2−(3/2) , para todo n ≥ 0,
n
de lo cual se infiere que la sucesión {3−2 }∞n=0 converge Q-superlinealmente a 0. Por
último, se tiene que
n+1 n 2
3−2 = 3−2 , para todo n ≥ 0,
n
de lo cual se infiere que la sucesión {3−2 }∞
n=0 converge Q-cuadráticamente a 0. Numérica-
mente se puede mostrar la diferencia entre los órdenes de convergencia. En la siguiente
n
tabla se aprecian los siete primeros elementos de las sucesiones { 21n }∞
n=0 , {2−(3/2) }∞
n=0 y
n
{3−2 }∞n=0 . ¿Qué sucesión
se acerca más
{ 21n }∞
n n
n n=0 {2−(3/2) }∞
n=0 {3−2 }∞
n=0 rápido a 0 y
0 1.000000000000000000 0.500000000000000000 0.333333333333333315 en qué propor-
1 0.500000000000000000 0.353553390593273786 0.111111111111111105 ción?
2 0.250000000000000000 0.210224103813428626 0.012345679012345678
3 0.125000000000000000 0.096388176587996297 0.000152415790275873
4 0.062500000000000000 0.029925102521830428 0.000000023230573125
5 0.031250000000000000 0.005176705637342740 0.000000000000000540
6 0.015625000000000000 0.000372460486021616 0.000000000000000000
1.4 Ejercicios
1. Demuestre que Rn es un espacio vectorial de dimensión n.
a) kIk2 = 1.
√
b) kIkF = n.
4. Las p-normas vectoriales y matriciales están relacionadas por varias desigualdades que
envuelven las dimensiones m y n. Estas desigualdades hacen que las normas sean
equivalentes. Verifique cada una de las siguientes desigualdades y de un ejemplo de un
vector o una matriz distintos de cero (para m, n generales) para el cual la desigualdad
se cumple. En este problema x ∈ Rm y A ∈ Rm×n .
a) kxk∞ ≤ kxk2 .
40 1.4. EJERCICIOS
√
b) kxk2 ≤ mkxk∞ .
√
c) kAk∞ ≤ nkAk2 .
√
d) kAk2 ≤ mkAk∞ .
e) kAk2 ≤ kAkF .
√
f) kAkF ≤ nkAk2 .
5. Encuentre en cada uno de los siguientes casos, una fórmula equivalente a la dada que
evite la pérdida de cifras significativas.
a) 0.00001 con 0
1
b) con 0.333
3
c) 0.3000001 con 0.2999999
qP
n 2
7. Suponga que se desea calcular y = i=1 ai , para ai ∈ R. Determine una expresión
equivalente
Pn para calcular y de manera que se pueda evitar el overflow al calcular
2
i=1 ai , para valores grandes de los números ai .
9. En doble precisión, ¿cuál de los siguientes cálculos podrı́a resultar en una respuesta
distinta de cero?
1 a
15. Dada la matriz A = , determine:
a 1
a) Los valores de a para que A sea mal-condicionada.
b) El número de condición de condición de A, κ2 (A).
16. Use los resultados de los Ejercicios 9 y 10 para construir un algoritmo y un programa
en Python, que calcule las raı́ces de una ecuación cuadrática
√ en todas las situaciones
posibles, incluyendo los casos problemáticos cuando |b| ≈ b2 − 4ac.
17. a) Escriba un programa para calcular la media x y la desviación estándar σ de una su-
cesión finita xi . Su programa debe aceptar un vector x = (x1 , . . . , xn ) de dimensión
n como entrada y producir la media y la desviación estándar de la sucesión como
salida. Para la desviación estándar, utilice la fórmula de dos pasos
" n
#1/2
1 X
σ= (xi − x)2
n−1
i=1
y la fórmula de un paso
" n
!#1/2
1 X
σ= x2i − nx2
n−1
i=1
18. a) Escriba un programa en Python para construir la matriz A = (aij ) ∈ Rn×n triangular
inferior ([4]):
1, si i = j,
aij = −1, si i > j,
0, si i < j.
kx − x∗ k2 kb − Ax∗ k2
n κ2 (A) x∗
kxk2 kbk2
10
20
30
40
50
Bibliografı́a
[1] T. M. Apostol (1985). Calculus, Vol. I y II, Segunda Edición, Editorial Reverté, Barce-
lona.
[2] J. Butcher (1987). The Numerical Analysis of Ordinary Differential Equations: Runge-
Kutta and General Linear Methods, Wiley, Chichester.
[3] J.W. Cooley and J.W. Tukey (1965). An algorithm for the machine calculation of
complex Fourier series. Math. Comput. 19, 297—301.
[4] B.N. Datta, L.M. Hernández-Ramos y M. Raydan (2017). Análisis Numérico: Teorı́a y
Práctica, Editorial de la Universidad Nacional del Sur. Ediuns, Bahı́a Blanca.
[5] R. Fletcher and C.M. Reeves (1964). Function minimization by conjugate gradients.
Computer Journal 7, 149—154.
[6] W. Hackbusch (2016). Iterative Solution of Large Sparse Systems of Equations, Second
Edition, Springer.
[7] E. Hairer and G. Wanner (1980). Solving Ordinary Differential Equations I and II,
Springer-Verlag, Berlı́n.
[9] N.J. Higham (2002). Accuracy and Stability of Numerical Algorithms, Second Edition,
SIAM, Philadelphia.
[10] D. Kincaid y W. Cheney (1994). Análisis Numérico. Las Matemáticas del Cálculo Ci-
entı́fico, Addison-Wesley Iberoamericana, Wilmintong, Delaware.
[11] C. T. Kelley (1995). Iterative Methods for Linear and Nonlinear Equations, SIAM, Phi-
ladelphia.
[12] B. Noble and J. W. Daniel (1977). Applied Linear Algebra, Prentice-Hall, Englewood
Cliffs, NJ.
[13] J. Nocedal Stephen and J. Wright (2006). Numerical Optimization, Second Edition,
Springer, New York.
[14] J. Ortega and W. Rheinboldt (1970). Iterative Solution of Nonlinear Equations in Se-
veral Variables, Academic Press, New York.
[15] M. L. Overton (2001). Computing with IEEE Floating Point Arithmetic, SIAM, Phila-
delphia.
43
44 BIBLIOGRAFÍA
[16] E. Polak and G. Ribière (1969). Note sur la convergence de méthodes de directions
conjuguées. Revue Française d’Informatique et de Recherche Opérationnelle 16, 35—43.
[18] W.F. Ramirez (1998). Computational Methods in Process Simulation, Elsevier Science
& Technology Books.
[21] Y. Saad (2003). Iterative Methods for Sparse Linear Systems, Second Edition, SIAM,
Philadelphia.
[22] L. R. Scott (2011). Numerical Analysis, Princeton University Press, New Jersey.
[23] G. Strang (1988). Linear Algebra and its Applications, Academic Press, New York.
[24] L. N. Trefethen and D. Bau (1997). Numerical Linear Algebra. SIAM, Philadelphia.
[25] H. Zhang, C. Guo, X. Su, and C. Zhu. (2015). Measurement Data Fitting Based on
Moving Least Squares Method. Mathematical Problems in Engineering, V. 2015, Article
ID 195023, 10 pages.
[26] F. Zhang (1999). Matrix Theory: Basic Results and Techniques, Springer, New York.