Anda di halaman 1dari 1464

Escuela Tcnica Superior de Ingeniera Informtica

Clculo Infinitesimal
y Numrico
Departamento de Matemtica Aplicada 1

Miguel Angel Cifredo Campos

PRIMERO

--- REVERSO DE PORTADA ---

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema de Bolzano
En anlisis real el teorema de Bolzano es una propiedad de las funciones reales continuas definidas
en un intervalo. El teorema afirma que si una funcin es continua en un intervalo cerrado y acotado
y en los extremos del mismo sta toma valores con signos opuestos, entonces existe al menos una
raz de la funcin en el interior del intervalo.
En palabras ms vulgares, lo que viene a decir el teorema de Bolzano es lo siguiente: Suponiendo
que el eje de abscisas (eje x) fuese un ro, y el segmento (a, b) un camino que hemos de seguir: si en
el punto a, la grfica est en un lado del ro (tiene valor negativo) y en el punto b est en el otro lado
del ro (tiene valor positivo) y la grfica es continua en ese segmento, lgica y obligatoriamente ha
de cortar por lo menos en un punto con el eje x (el ro), con lo que podemos decir que para cruzar
el ro uno se ha de mojar.
Este teorema est ntimamente relacionado con los teoremas de Rolle y del valor medio.

Enunciado y demostracin
El teorema de Bolzano establece que:
Sea f una funcin real continua en un intervalo cerrado [a,b] con f(a) y f(b)
de signos contrarios. Entonces existe al menos un punto c del intervalo
abierto (a, b) con f(c) = 0.
El teorema como tal no especifica el nmero de puntos, solo demuestra que como mnimo existe
uno.
Demostracin 1: Para demostrarlo, suponemos que f(a)<0 y f(b)>0 (se demuestra anlogamente
para el caso contrario).
Suponemos un conjunto K, que contiene todos los puntos x del intervalo [a, b] que verifican que
f(x) <= 0. (K es distinto de vaco, ya que f(a) < 0).
Ese conjunto tiene un supremo c puesto que K es compacto de acuerdo a su definicin.
Ahora basta demostrar que f(c)= 0, por definicin de K.
Supongamos f(c) 0, ello implica que hay un intervalo (c-h, c+h) en el que f(x) y f(c) tienen el
mismo signo. Esto no puede pasar, porque contradice la definicin de c. Luego tiene que ser f(c)=0.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Demostracin 2: Sean X e Y dos espacios topolgicos y


una funcin continua entre
ellos. Entonces si
es un subconjunto conexo de X, f(A) es un subconjunto conexo de Y.
Demostracin: Es sencillo, suponiendo que f(A) no es conexo, significa que existen U y V abiertos
de X no vacos y disjuntos tales que

, como la funcin es continua

tenemos que
y por ser disjuntos tenemos,
no vacos, luego A no sera conexo lo que prueba el lema.

con U y V

Ahora el Teorema de Bolzano es sencillo porque como [a,b] es un intervalo conexo y la funcin es
continua, el intervalo [f(a),f(b)] debe ser conexo, si suponemos que no existe un valor c en [a,b] tal
que f(c) = 0 significa que
lo que implicara que, al ser [f(a),f(b)] conexo o bien 0
< f(a) y 0 < f(b) o bien 0 > f(a) y 0 > f(b) lo que entra en contradiccin con la hiptesis que f(a)f(b)
< 0, as pues queda probado el teorema.

Aplicaciones
1: Demostrar que una funcin f(x) corta al eje OX en un determinado intervalo.
2: Demostrar que dos funciones se cortan en un punto.
Para demostrar que la funcin f(x) y la funcin g(x) se cortan en al menos un punto establecer la
funcin h(x) como:
h(x)=f(x) - g(x).
Mediante la aplicacin del teorema de Bolzano podr establecer que estas funciones se cortan en un
punto c perteneciente a un intervalo concreto:
h(c)=0
f(c) - g(c)=0
f(c)=g(c)

Calcular el valor de c
Si f(x) es continua en el intervalo [a,b] es posible calcular el valor de c que verifique que f(c) = 0
utilizando el teorema de Bolzano, y ser la solucin de la siguiente sucesin:

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema de Rolle
El teorema de Rolle dice lo siguiente:
Si:

es una funcin continua definida en un intervalo cerrado [a, b]


es derivable sobre el intervalo abierto (a, b)
f (a) = f (b)

Entonces: existe al menos un nmero perteneciente al intervalo (a, b) tal que f (c) = 0.

En palabras ms sencillas, si una curva regular sale y llega a la misma altura, en algn punto tendr
tangente horizontal.
En la figura se ven tres casos distintos. Si la funcin empieza subiendo, tendr luego que bajar para
reencontrar su valor inicial, entre la subida y la bajada, hay un punto donde la funcin alcanza un
mximo, y en ste, f ' se anula. Lo mismo sucede si la funcin empieza bajando, y f ' es nula en el
mnimo de f. El tercer ejemplo muestra que no se garantiza la unicidad de c.

Prueba

Gracias a la continuidad de f, la imagen de [a, b], conjunto conexo es un conjunto conexo de


R, y por lo tanto es un intervalo, el intervalo imagen.
La imagen por una funcin continua de un conjunto compacto es un conjunto compacto, y
por lo tanto el intervalo imagen es cerrado y de longitud finita: es de la forma [m, M], con m
el valor mnimo de f y M su valor mximo.
Si m = M, la funcin es constante, y cualquier punto c de (a, b) conviene. Descartado este
caso, m M significa que uno de los dos no es igual a f(a) = f(b). Supongamos que sea M.
Entonces M > f(a) = f(b), y por lo tanto el mximo M est alcanzado en el interior del
intervalo (corresponde al primer ejemplo).
Sea c en (a, b) tal que f(c) = M. Por definicin del mximo, M = f(c) f(x) para todo x de [a,
b]. Entonces el cociente (f(c) - f(x)) / (c - x) es no negativo cuando x < c (porque su
numerador es siempre no negativo y su denominador es positivo no nulo), y es no positivo
cuando x > c (el denominador se vuelve negativo no nulo). Pero f '(c) es por definicin el
lmite de este cociente cuando x tiende hacia c. El lmite por la izquierda, f '(c-) positivo,
tiene que ser igual al lmite por la derecha, f '(c+). Por lo tanto este lmite comn es nulo, o
sea f '(c) = 0.

La prueba es muy parecida si es el mnimo que est alcanzado en (a, b).

Miguel Angel Cifredo Campos


macifredo@gmail.com

Otra forma
De manera similar se puede considerar la siguiente prueba. Se sabe que existen tres posibilidades: o
bien la funcin que consideramos es constante, o bien tiene algn punto x donde el valor de la
funcin es mayor o menor mayor que en los extremos. Para el primer caso es trivial que en algn
punto la funcin tiene derivada nula (en la definicin de derivada el cociente incremental es cero).
Para el segundo caso se puede probar lo siguiente:
Consideramos A como el conjunto imagen de f. Sabemos que A es un compacto ya que es la
imagen de una funcin continua en un compacto y por lo tanto la funcin alcanza mximo evaluada
en un punto x0 dentro del intervalo. Por ser la funcin derivable en (a, b), la funcin es derivable
tambin en x0.
Aproximamos entonces a la funcin en un entorno del punto x0 considerando la derivada de f, f'(x).
Entonces tenemos que si la derivada es positiva, entonces hay un entorno a la derecha de x 0 en
donde los valores de f(x) son mayores a f(x 0), lo cual es absurdo por ser f(x0) = M el mximo del
conjunto imagen.
De manera anloga, si la derivada fuera negativa tendramos un entorno a la izquierda de x 0 en
donde los valores de f(x) son mayores a f(x 0), lo cual es absurdo por ser f(x0) = M el mximo del
conjunto imagen.
La nica posibilidad que resta es que la derivada sea nula, lo cual demuestra el teorema de Rolle.
Basta tomar g(x) = -f(x) y repetir la prueba para verificar que se verifica tambin cuando la funcin
toma algn valor por debajo de los valores funcionales de los extremos.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema de Valor Medio, de Lagrange o de Incrementos


Finitos
Si:

f es una funcin continua definida en un intervalo [a, b]


f es derivable sobre el intervalo (a, b)

Entonces: existe al menos un nmero c en el intervalo (a, b) tal que:

Es decir que existe un punto en donde la tangente es paralela a la cuerda AB.


Su prueba es sencilla, pues utiliza el teorema precedente.
Sea p la pendiente de la cuerda: p = (f(b) - f(a)) / (b - a), y se define la funcin g(x) = f(x) - px.
Entonces g(b) - g(a) = f(b) - pb - (f(a) - pa) = f(b) - f(a) - p(b - a) = f(b) - f(a) -(f(b) - f(a)) = 0, y g
como f, es continua sobre [a, b] y derivable en su interior.
Segn el teorema anterior, existe un c en (a, b) tal que g '(c) = 0; pero esto se escribe f ' (c) = p.

Este teorema se escribe tambin, con las mismas hiptesis: f(b) = f(a) + f '(c)(b-a) lo que deja
entrever el teorema de Taylor-Young:
f(b) = f(a) + (b-a)f '(a) + ... + (b-a)n/n! f(n)(c), con f n veces derivable sobre (a, b).

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema del valor medio


En clculo diferencial, el teorema de valor medio (de Lagrange), tambin llamado teorema de
los incrementos finitos, teorema de Bonnet-Lagrange o teoria del punto medio es una
propiedad de las funciones derivables en un intervalo. Algunos matemticos consideran que este
teorema es el ms importante de clculo (ver tambin el teorema fundamental del clculo integral).
El teorema no se usa para resolver problemas matemticos; ms bien, se usa normalmente para
demostrar otros teoremas. El teorema de valor medio puede usarse para demostrar el teorema de
Taylor ya que es un caso especial.
Enunciado para una variable

Para una funcin que cumpla la hiptesis de ser definida y continua [a, b] y derivable en el intervalo abierto
(a, b) entonces existe al menos algn punto c en el intervalo (a, b) en que la pendiente de la curva es igual
que la pendiente media de la curva en el intervalo cerrado [a, b].

En esencia el teorema dice que dada cualquier funcin f continua en el intervalo [a, b] y
diferenciable en el intervalo abierto (a, b) entonces existe al menos algn punto c en el intervalo (a,
b) tal que la tangente a la curva en c es paralela a la recta secante que une los puntos (a, f(a)) y (b,
f(b)). Es decir:

Este teorema lo formul Lagrange.


El teorema del valor medio de Lagrange de hecho es una generalizacin del teorema de Rolle que
dice que si una funcin es definida y continua [ a , b ], diferenciable en el intervalo abierto ( a , b ) ,
y toma valores iguales en los extremos del intervalo --en otras palabras, f ( a ) = f ( b )-- entonces
existe al menos algn punto c en el intervalo ( a , b ) tal que la tangente a la curva en c es
horizontal, es decir f '( c)=0.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Mtodo de biseccin

Unas cuantas iteraciones del mtodo de biseccin aplicadas en un intervalo [a 1;b1]. El punto rojo es
la raz de la funcin.
En matemticas, el mtodo de biseccin es un algoritmo de bsqueda de races que trabaja
dividiendo el intervalo a la mitad y seleccionando el subintervalo que tiene la raz.

Introduccin
Este es uno de los mtodos ms sencillos y de fcil intuicin para resolver ecuaciones en una
variable. Se basa en el teorema del valor intermedio (TVI), el cual establece que toda funcin
continua f en un intervalo cerrado [a,b] toma todos los valores que se hallan entre f(a) y f(b). Esto es
que todo valor entre f(a) y f(b) es la imagen de al menos un valor en el intervalo [a,b]. En caso de
que f(a) y f(b) tengan signos opuestos, el valor cero sera un valor intermedio entre f(a) y f(b), por lo
que con certeza existe un p en [a, b] que cumple f(p)=0. De esta forma, se asegura la existencia de al
menos una solucin de la ecuacin f(a)=0.
El mtodo consiste en lo siguiente:

Debe existir seguridad sobre la continuidad de la funcin f(x) en el intervalo [a,b]


A continuacin se verifica que
Se calcula el punto medio m del intervalo [a,b] y se evala f(m) si ese valor es igual a cero,
ya hemos encontrado la raz buscada
En caso de que no lo sea, verificamos si f(m) tiene signo opuesto con f(a) o con f(b)
Se redefine el intervalo [a, b] como [a, m] [m, b] segn se haya determinado en cul de
estos intervalos ocurre un cambio de signo
Con este nuevo intervalo se contina sucesivamente encerrando la solucin en un intervalo
cada vez ms pequeo, hasta alcanzar la precisin deseada

Miguel Angel Cifredo Campos


macifredo@gmail.com

El mtodo de biseccin es menos eficiente que el mtodo de Newton, pero es mucho ms seguro
para garantizar la convergencia. Si f es una funcin continua en el intervalo [a, b] y f(a)f(b) < 0,
entonces este mtodo converge a la raz de f. De hecho, una cota del error absoluto es:

en la n-sima iteracin. La biseccin converge linealmente, por lo cual es un poco lento. Sin
embargo, se garantiza la convergencia si f(a) y f(b) tienen distinto signo.
Si existieran ms de una raz en el intervalo entonces el mtodo sigue siendo convergente pero no
resulta tan fcil caracterizar hacia qu raz converge el mtodo.

Algoritmo
Para aplicar el mtodo consideremos tres sucesiones
relaciones:

definidas por las siguientes

Donde los valores iniciales vienen dados por:

Se puede probar que las tres sucesiones convergen al valor de la nica raz del intervalo:

Miguel Angel Cifredo Campos


macifredo@gmail.com

Mtodo del punto fijo

Los dos puntos fijos, marcados en rojo, de la funcin f(x) = x2 4


El mtodo del punto fijo es un mtodo iterativo que permite resolver sistemas de ecuaciones no
necesariamente lineales. En particular se puede utilizar para determinar races de una funcin de la
forma f(x), siempre y cuando se cumplan los criterios de convergencia.

Descripcin del Mtodo


El mtodo de iteracin de punto fijo, tambin denominado mtodo de aproximacin sucesiva,
requiere volver a escribir la ecuacin f(x) = 0 en la forma

x = g(x).

Procedimiento
El procedimiento empieza con una estimacin o conjetura inicial de x, que es mejorada por iteracin
hasta alcanzar la convergencia. Para que ocurra convergencia, la derivada (dg / dx) debe ser menor
que 1 en magnitud (al menos para los valores x que se encuentran durante las iteraciones). La
convergencia ser establecida mediante el requisito de que el cambio en x de una iteracin a la
siguiente no sea mayor en magnitud que alguna pequea cantidad .

Algoritmo para iteracin de punto fijo


1. Se ubica la raz de f(x) analizando la grfica.
2. Se obtiene un despeje x = g(x) de la funcin.
3. Obtenemos de x = g(x) su derivada
4. Resolviendo la desigualdad -1
punto fijo llamado R.

.
1 obtenemos el rango de valores en los cuales est el

5. Con R buscamos la raz en g(x), es decir g(R) = R haciendo iteracin de las operaciones.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 1
Sea f(x) = x2 5x + 3 una funcin, encuentre la raz.
Ubicamos la raz analizando la grfica.

Obtenemos x = g(x):
Despus obtenemos la derivada de la funcin:

Entonces resolvemos las desigualdades:


La solucin es:

La solucin es:
O visto de otra manera, vemos que en la grfica de
la derivada existen valores entre -1 y 1:

Ya que se tienen los valores del rango R,


encontramos la raz haciendo la iteracin de las
operaciones:

En la tabla se puede ver el valor que en este caso se us de R, la iteracin consiste en usar ese valor
en x = g(x) para obtener los siguientes valores haciendo la misma operacin usando el valor
anterior.
Despus de un nmero considerable de iteraciones obtenemos la raz en 4.30268775.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo. Mtodo de biseccin Se desea hallar la raz cuadrada de 3 con error menos que 1014 (es
decir, con 14 cifras decimales exactas). Determinar cuantas iteraciones del mtodo de biseccin sern
necesarias para garantizar dicha precisin partiendo del intervalo inicial [1, 2]. Calcular las dos primeras
iteraciones.

Solucin. En primer lugar observemos que + 3 es unaraz de la ecuacin x2 3 = 0, de hecho es la


nica positiva. Por tanto, el intervalo [1, 2] contiene a + 3 y no a otra raz de la ecuacin. Adems, se
satisfacen las hiptesis del teorema de Bolzano en [1, 2].
2
Por tanto, el mtodo de biseccin
aplicado a f (x) = x 3 con intervalo inicial [a0 = 1, b0 = 2] genera
una sucesin {xn } convergente a 3.
Para determinar el nmero de iteraciones necesarias para que el mtodo de biseccin nos proporcione la precisin deseada, usaremos la frmula de la cota del valor absoluto del error.
n

ba
21
= n+1
2n+1
2

e impondremos que sea menor o igual que 1014 . Entonces tendremos:


1
1014 2n+1 > 1014 n 46,
2n+1
es decir, tendramos que calcular x46 para poder garantizar la precisin exigida. No obstante, esto
no quiere decir que no se alcance esta precisin eventualmente en una iteracin anterior.
Tenemos que a0 = 1, b0 = 2 y x0 = 1 +
entonces a1 = x0 = 10 5 y b1 = b0 = 2,

21
2

= 10 5. Sigamos los pasos del mtodo, f (a0 ) f (x0 ) > 0

x1 = a1

b1 a1
= 10 75.
2

f (a1 ) f (x1 ) < 0 entonces a2 = a1 = 10 5 y b2 = x1 = 10 75. Por tanto,


x2 = a2 +

b2 a2
10 75 10 5
= 10 5 +
= 10 625.
2
2

Repitiendo el proceso, iramos obteniendo la sucesin {xn } que converge a + 3.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo. Mtodo de Newton-Raphson. Se desea hallar la raz cuadrada de 3 con 14 cifras decimales
exactas. Calcular dicha aproximacin usando el mtodo de Newton partiendo del intervalo inicial [1, 2].
Indicar el nmero de iteraciones necesarias.

Solucin. Partimos de la ecuacin f (x) = x2 3 = 0, por lo que la frmula de Newton-Raphson queda




1
3
xn+1 =
xn +
.
(1)
2
xn

La regla de Fourier es la herramienta que nos permite asegurar que la sucesin {xn } converge a 3
y nos indica el valor que debemos tomar de x0 para este fin. A continuacin veremos que se verifican
todas las hiptesis que se exigen en la regla de Fourier.
La ecuacin f (x) = 0 presenta una raz (de hecho,

3) en el intervalo [1, 2].

Las funciones f 0 (x) = 2x y f 00 (x) = 2 no se anulan en ningn punto del intervalo [1, 2].
00
Entonces,
tomando x0 = 2 (pues f (2) f (2) > 0), la regla de Fourier nos asegura que la sucesin (1)
converge a 3. Obtenindose:

x0 = 2
x1 = 10 75

|f (x1 )|
mnx[1,2] |f 0 (x)|

= 00 03125

x2 = 10 7321428571428571429 . . .

|f (x2 )|
mnx[1,2] |f 0 (x)|

= 0,000159438775515 . . .

x3 = 10 7320508100147275405 . . .

|f (x3 )|
mnx[1,2] |f 0 (x)|

0,43 108

x4 = 10 7320508075688772953 . . .

|f (x4 )|
mnx[1,2] |f 0 (x)|

0,489 1014 < 1014 .

Por tanto,
es una aproximacin de

x4 = 10 73205080756888
3 con 14 cifras decimales exactas.

Miguel Angel Cifredo Campos


macifredo@gmail.com

# Mtodo de Biseccin
def Biseccion_Sage(f, x0, x1, epsilon = 0.001, max_it = 100):
ff = fast_float(f)
#Check conditions to fullfill
x0 = float(x0)
x1 = float(x1)
fa = ff(x0)
fb = ff(x1)
if fa*fb >= 0:
print 'Error valores ', x0, x1, ' no son adecuados.'
else:
n = 0
fc = abs(fa)
xm = x0
# Mientras no supere el lmite de iteraciones.
# Y mientras no alcance la precisin deseada.
while (abs(fc) > epsilon and n < max_it):
n = n +1
xm = (x0 + x1)/2
fc = ff(xm)
# Selecciono a que punto remplazar para la siguiente iteracin.
if fc*fa >0:
fa = fc
x0 = xm
else:
fb = fc
x1 = xm
if n < max_it:
print 'Raz: ', xm, 'con una precisin: ', fc, ' Iteraciones: ', n
else:
print 'Mtodo fallo con una xm = ', xm, ' una precisin', fc
****************************
f(x) = x^2 - 2
Biseccion_Sage(f, -1, 10)
****************************

# Mtodo de Biseccin
def biseccion(f=lambda x: x^2-1,a=0.01,b=2.99,tol=1e-5):
'''
Funcin que aplica el mtodo de biseccin a la funcin f en el intervalo [a,b] y
devuelve el valor aproximado del cero de la funcin. El mtodo se termina cuando
la longitud del intervalo es menor que tol.
biseccion(f,a,b,tol)
Ejemplo, de aplicacin:
f=lambda x: x^2-1;
biseccion(f,0,2,10^-9);
Si se quiere cambiar solo un parmetro se puede hacer como se ve a continuacin
biseccion(b=4)
'''
fa=f(a);fb=f(b);
if fa*fb > 0:
print('No se verifican las condiciones de Bolzano');
return('Nada');
while abs(b-a)>=tol:
x=float((a+b)/2);fx=float(f(x));
if fx==0:
return(x);
if fa*fx<0:
b=x;
else:
a=x;
return(x);
****************************
s=biseccion();print(s);
****************************
def g(x):
return(1+sin(x)-exp(3*x+0.1));
k=biseccion(g,-1,1.2,1e-12);print(k);
****************************

Miguel Angel Cifredo Campos


macifredo@gmail.com

# Mtodo de Newton
def newton(f=lambda x: x^2-3,x0=1.0,t=1e-5,m=500):
'''
Funcin que aplica el mtodo de Newton a la funcin f tomando punto inicial x0 y
devuelve el valor aproximado del cero y su imagen. El mtodo se termina cuando
la diferencia relativa entre un elemento y el siguiente es menor que tol o se
realizan m iteraciones.
newton(f,x0,t,m)
Ejemplo, de aplicacin:
f=lambda x: exp(x)+x^2-1;
newton(f,1,1e-12,200);
Si se quiere cambiar solo un parmetro se puede hacer como se ve a continuacin
newton(t=1e-8)
'''
fx=diff(f(x),x);
for k in range(m):
x1=float(x0-f(x0)/fx(x=x0));
if abs(x1-x0)<abs(x0)*t:
print('El mtodo de Newton converge a '+str(x1)+' en '+str(k)+\
' iteraciones.');
return(x1,f(x1));
x0=x1;
print('No cumple el criterio de convergencia tras '+str(m)+' iteraciones.');
return(x1,f(x1));

****************************
a1,fa1=newton();show(a1);show(fa1);
f(t)=t^2-t-1;
a2,fa2=newton(f);show(a2);
f=lambda x: exp(x)+x^2-3;
a3=newton(f,t=1e-12);show(a3);
****************************

Miguel Angel Cifredo Campos


macifredo@gmail.com

#Taylor P(x) = \sum { k=0, n } (f^k(x_0)/k!) * (x-x_0)^k


def NewtonRaphson(e,seed,f,f_): #seed es x_0, f_ es derivada
next = seed - f(seed)/f_(seed)
print "x_i=",next.n(digits=9), "f(x_i)=" , f(seed).n(digits=9), " f'(x)=", f_(seed), " error
relativo: ", abs((next-seed)/next)
if abs(next-seed)<e:
return next
else:
return NewtonRaphson(e,next,f,f_)
def NewtonRaphsonOptimizado(e,seed,f,f_):
exactitud = 6
next = (seed - f(seed/f_(seed))).n(digits=exactitud)
print "x_i: ",next.n(digits=exactitud), "f(x_i):" , f(seed).n(digits=exactitud)
if abs(next-seed)<e:
return next
else:
return NewtonRaphson(e,next,f,f_).n(digits=exactitud)
def NewtonRaphsonLibro(p0,e,numeroIteraciones,f,f_):
i = 1
while (i<=numeroIteraciones):
p = (p0 - f(p0)/f_(p0)).n(digits=6)
print "x_i: ",p.n(digits=6), "f(x_i):" , f(p).n(digits=6)
if abs(p-p0) < e:
print "Encontr, x: ", p, " f(x): ", f(p), "f'(x)" , f_(p)
return p
i = i+1
p0 = p
print "Mtodo no encontr nada"
def NewtonRaphsonCerosMultiples(p0, e, numeroIteraciones, f, f_):
exactitud = 10
i=1
f__(x)= derivative(f_)
while(i <=numeroIteraciones):
arriba = f(p0)/f_(p0)
abajo = (f__(p0)**2 - f(p0)*f__(p0))
p = p0 - ( arriba/abajo )
#p = p0 - (f(p0)*f_(p0))/(f_(p0)^2-f(p0)*f__(p0))
print "x_i: ", p.n(digits=exactitud), "f(x_i):", f(p).n(digits=exactitud)
if abs(p-p0)< e:
print "Encontr, x: ", p, " f(x): ", f(p), "f'(x)" , f_(p)
return p
i=i+1
p0=p
print " Mtodo no encontr nada"
def NewtonRaphsonCerosMultiplesOptimizado(p0, e, numeroIteraciones, f, f_):
exactitud = 10
i=1
f__(x)= derivative(f_)
while(i <=numeroIteraciones):
arriba = f(p0)/f_(p0)
abajo = (f__(p0)**2 - f(p0)*f__(p0))
p = (p0 - ( arriba/abajo )).n(digits=exactitud)
print "x_i: ", p.n(digits=exactitud), "f(x_i):", f(p).n(digits=exactitud)
if abs(p-p0)< e:
print "Encontr, x: ", p, " f(x): ", f(p), "f'(x)" , f_(p)
return p
i=i+1
p0=p
print " Mtodo no encontr nada"
def PuntoFijo(G,x0,e):
while abs(G(x0)-x0) > e:
print "x_i: " , x0, " G(x_i): ", G(x0)
x0 = G(x0)
return x0

Miguel Angel Cifredo Campos


macifredo@gmail.com

#Punto fijo, que avisa si la sucesin de nmeros dada la ecuacin de recurrencia G(x) no es una
contraccin, i.e. si | G'(x) | >= 1. Hay que mandarle la derivada de G(x), i.e. G_ en el parmetro
def PuntoFijoAPruebaDeMuladas(G,G_,x0,e):
if abs(G_(x0)) >= 1:
print "Esta funcin G(x) es difcil, la derivada evaluada en x=",x, " es mayor que 1, por
lo que se podra salir de la recta f(x)=x y no converger"
else:
print "x_i: " , x0, " G(x_i): ", G(x0)
x0 = G(x0)
return x
def BiseccionLibro(f,xmin,xmax,e,numeroMaximoIteraciones):
contador = 1
if (xmin >= xmax):
print "Parmetros no vlidos"
else:
if (f(xmax)*f(xmin) > 1):
print "Mal intevalo, no hay cambio de signo"
else:
while(contador <= numeroMaximoIteraciones):
puntoMedio = xmin + (xmax-xmin)/2
print "x: ", puntoMedio.n(digits=6), " f(x)", f(puntoMedio).n(digits=6)
if ((f(puntoMedio) == 0) or ((xmax-xmin)/2 < e)):
print "Encajono x: " , puntoMedio, " f(x)", f(puntoMedio)
return puntoMedio
contador = contador + 1
if f(xmin)*f(puntoMedio) > 0:
xmin = puntoMedio
else:
xmax = puntoMedio
print "No hubieron suficientes iteraciones"
def secanteLibro(f,x0,x1,e,numeroIteraciones):
contador = 2
fx0 = f(x0)
fx1 = f(x1)
while (contador <= numeroIteraciones):
nextX = x1 - fx1*(x1-x0)/(fx1-fx0)
print "next x: ", nextX.n(digits=6) , " f(x)", f(nextX).n(digits=6)
if (abs(nextX-x1) < e):
print "Encontro! x:", nextX , " f(x): ",f(nextX)
return nextX
print "paso"
contador = contador + 1
x0 = x1
fx0 = fx1
x1 = nextX
fx1 = f(nextX)
print "No encontro!"
#funcion que no tiene mucha exactitud en los puntos flotantes
def secanteLibroOptimizada(f,x0,x1,e,numeroIteraciones):
contador = 2
exactitud = 1000
decimales = 6 #numero de decimales a imprimir
fx0 = f(x0).n(digits=exactitud)
fx1 = f(x1).n(digits=exactitud)
while (contador <= numeroIteraciones):
nextX = (x1 - fx1*(x1-x0)/(fx1-fx0)).n(digits=exactitud)
print "next x: ", nextX.n(digits=decimales) , " f(x)", f(nextX).n(digits=decimales), "
error relativo: ", abs((nextX-x1)/nextX).n(digits=6)
if (abs(nextX-x1) < e):
print "Encontro! x:", nextX.n(digits=decimales) , " f(x):
",f(nextX).n(digits=decimales)
return nextX
print "paso"
contador = contador + 1
x0 = x1.n(digits=exactitud)
fx0 = fx1.n(digits=exactitud)
x1 = nextX.n(digits=exactitud)
fx1 = f(nextX).n(digits=exactitud)
print "No encontr!"

Miguel Angel Cifredo Campos


macifredo@gmail.com

def muller(f,x0,x1,x2,e,numeroIteraciones):
h1 = x1 - x0
h2 = x2 - x1
sigma1 = (f(x1)-f(x0))/h1
sigma2 = (f(x2)-f(x1))/h2
d = (sigma2-sigma1)/(h2+h1)
i = 2
while (i<=numeroIteraciones):
b = sigma2 + h2*d
D = sqrt(b**2-4*f(x2)*d)# NOTE: May be complex arithmetic
E = 0 #para
if abs(b-D)
E = b +
else:
E = b -

inicializarla en el ambiente
< abs(b+d):
D
D

h = -2*f(x2)/E
p = x2 + h
print "prximo x: ", p , " f(x)", f(p)
if abs(h) < e:
print "Encontr! x: ", p , " f(x)" , f(p)
return p
x0 = x1
x1 = x2
x2 = p
h1 = x1 - x0
h2 = x2 - x1
sigma1 = (f(x1)-f(x0))/h1
sigma2 = (f(x2)-f(x1))/h2
d = (sigma2-sigma1)/(h2+h1)
i = i + 1
print "No encontr"
def mullerOptimizado(f,x0,x1,x2,e,numeroIteraciones):
exactitud = 6
h1 = (x1 - x0).n(digits=exactitud)
h2 = (x2 - x1).n(digits=exactitud)
sigma1 = ((f(x1)-f(x0))/h1).n(digits=exactitud)
sigma2 = ((f(x2)-f(x1))/h2).n(digits=exactitud)
d = (sigma2-sigma1)/(h2+h1).n(digits=exactitud)
i = 2
while (i<=numeroIteraciones):
b = (sigma2 + h2*d).n(digits=exactitud)
D = sqrt(b**2-4*f(x2)*d).n(digits=exactitud)# NOTE: May be complex arithmetic
E = 0 #para inicialiarla en el ambiente
if abs(b-D) < abs(b+d):
E = (b + D).n(digits=exactitud)
else:
E = (b - D).n(digits=exactitud)
h = (-2*f(x2)/E).n(digits=exactitud)
p = (x2 + h).n(digits=exactitud)
print "proximo x: ", p.n(digits=exactitud) , " f(x)", f(p).n(digits=exactitud)
if abs(h) < e:
print "Encontr! x: ", p.n(digits=exactitud) , " f(x)" , f(p).n(digits=exactitud)
return p
x0 = x1
x1 = x2
x2 = p
h1 = x1 - x0
h2 = x2 - x1
sigma1 = ((f(x1)-f(x0))/h1).n(digits=6)
sigma2 = ((f(x2)-f(x1))/h2).n(digits=6)
d = ((sigma2-sigma1)/(h2+h1)).n(digits=6)
i = i + 1
print "No encontr"

Miguel Angel Cifredo Campos


macifredo@gmail.com

#Steffensen es parecido al de Aitken: al aplicarle el mtodo de aitken a una secuencia que


converge linealmente PARA PUNTO FIJO, podemos acelerar la convergencia a cuadrtica
#OJO, hay que mandar G(x) tal que el problema sea G(x) = x i.e. como punto fijo y no G(x) tal que
el problema sea G(x) = 0
def steffensen(g,p0,e,numeroIteraciones):
i = 1
while (i<=numeroIteraciones):
p1 = g(p0)
p2 = g(p1)
p = p0 - (p1-p0)**2/(p2-2*p1+p0)
if abs(p-p0)< e :
print "Encontro x:", p.n(digits=6) , " f(x)", f(p)
return p
i = i +1
p0 = p
print "No encontro nada!"
def steffensenOptimizada(g,p0,e,numeroIteraciones):
exactitud = 6
i = 1
while (i<=numeroIteraciones):
p1 = g(p0).n(digits=exactitud)
p2 = g(p1).n(digits=exactitud)
p = (p0 - (p1-p0)**2/(p2-2*p1+p0)).n(digits=exactitud)
if abs(p-p0) < e:
print "Encontro x: ", p.n(digits=exactitud)," f(x)", f(p)
return p
i = i + 1
p0 = p
print "No encontro nada"
def NewtonRaphsonGeneralizadoParaComplejos(f1,f2,xi,yi,tolerancia):
#derivadas parciales
f1x(x,y) = derivative(f1,x)
f1y(x,y) = derivative(f1,y)
f2x(x,y) = derivative(f2,y)
f2y(x,y) = derivative(f2,y)
#print "xi : ", xi, " yi: ", yi #, " f1x: ", f1x, " f2x: ", f2x, " f1y: ", f1y, " f2y: ", f2y
DeltaXi = var('DeltaXi')
DeltaYi = var('DeltaYi')
ecuacion1 = f1x(xi,yi)*DeltaXi + f1y(xi,yi)*DeltaYi == -f1(xi,yi)
ecuacion2 = f2x(xi,yi)*DeltaXi + f2y(xi,yi)*DeltaYi == -f2(xi,yi)
#print "ecuacion1: ", ecuacion1 , "\necuacion2: ",ecuacion2
sistema = [ecuacion1,ecuacion2]
soluciones = solve(sistema,DeltaXi,DeltaYi,solution_dict=True)[0]
dxi = soluciones[DeltaXi].n(digits=6)
dyi = soluciones[DeltaYi].n(digits=6)
xi_next = xi + dxi
yi_next = yi + dyi
print "dxi: ", dxi, " dyi: ", dyi
print "xi_next: ", xi_next, " yi_next: ", yi_next
maximo = max(abs(dxi),abs(dyi))
if (maximo < tolerancia):
return xi_next,yi_next
else:
NewtonRaphsonGeneralizadoParaComplejos(f1,f2,xi_next,yi_next,tolerancia)

Miguel Angel Cifredo Campos


macifredo@gmail.com

#devuelve el polinomio interpolante cubico entre dos puntos dados y los valores de sus derivadas
en ese punto
def hermiteInterpolanteCubico(x0,y0,yprima0,x1,y1,yprima1):
#a = var('a')
#b = var('b')
c = var('c')
d = var('d')
a = y0
b = yprima0
p(x) = a + b*(x-x0)+c*(x-x0)**2+d*(x-x0)**2*(x-x1)
#calcular valor de c
ecuacion1 = p(x1) == y1
valor_c = solve([ecuacion1],c,solution_dict=True)[0][c]
print a
print b
print valor_c
#calcular valor de d
p_(x) = b + 2*valor_c*(x-x0)+2*d(x-x0)*(x-x1)+d*(x-x0)**2
ecuacion2 = p_(x1) == yprima1
valor_d = solve([ecuacion2],d,solution_dict=True)[0][d]
polinomioCubicoInterpolante(x) = a + b*(x-x0)+valor_c*(x-x0)**2+valor_d*(x-x0)**2*(x-x1)
print valor_d
return polinomioCubicoInterpolante

Miguel Angel Cifredo Campos


macifredo@gmail.com

# Imprime (i.e. no devuelve nada) en cada lnea el polinomio cubico del trazador y dice para que
valores de x es "valido" interpolar. los puntos son mandados de la misma manera siempre
[(x_0,y_0),(x_1,y_1)...(x_n,y_n)], pueden estar desordenados
def trazadoresCubicosImpreso(puntos):
puntos.sort()
Xs = []
As = []
Bs = []
Cs = []
Ds = []
Hs = []
Ls = [1]
Us = [0]
Zs = [0]
Alpha = []
n=len(puntos)-1
for x,y in puntos:
As.append(y)
Xs.append(x)
i=0
while i<n:
Hs.append(Xs[i+1]-Xs[i])
i=i+1
i=0
while i<n-1:
primerTermino = ((3/Hs[i+1])*(As[i+2]-As[i+1]))
segundoTermino = ((3/Hs[i])*(As[i+1]-As[i]))
Alpha.append(primerTermino-segundoTermino)
i=i+1
i=1
while i<n:
Ls.append(2*(Xs[i+1]-Xs[i-1])-Hs[i-1]*Us[i-1])
Us.append(Hs[i]/Ls[i])
Zs.append((Alpha[i-1]-Hs[i-1]*Zs[i-1])/Ls[i])
i=i+1
Ls.append(1)
Zs.append(0)
Cs.append(0)
j=n-1
i=0
while j>=0:
Cs.append(Zs[j]-(Us[j]*Cs[i]))
Bs.append(((As[j+1]-As[j])/Hs[j])-((Hs[j]*(Cs[i]+2*Cs[i+1])/3)))
Ds.append((Cs[i]-Cs[i+1])/(3*Hs[j]))
j = j-1
i = i+1
listaTemp = []
retorno2 = []
i=0
Cs.reverse()
Bs.reverse()
Ds.reverse()
while i<n:
p=[As[i],Bs[i],Cs[i],Ds[i],Xs[i]]
listaTemp.append(p)
i=i+1
contador=0
linea=80
for k in listaTemp:
linea="%s+%s*(x-%s)+%s*(x-%s)^2+%s*(x-%s)^3 /\ %s<=x<=%s"
%(k[0],k[1],k[4],k[2],k[4],k[3],k[4],Xs[contador], Xs[contador+1])
contador=contador+1
retorno2.append(linea)
print linea

Miguel Angel Cifredo Campos


macifredo@gmail.com

# Devuelve el conjunto de los trazadores de la forma [p1(x),p2(x),p3(x)...pn(x)] en donde cada


pi(x) representa una funcin polinomial, los puntos son mandados de la misma manera siempre
[(x_0,y_0),(x_1,y_1)...(x_n,y_n)], pueden estar desordenados
def trazadoresCubicosConjunto(puntos):
puntos.sort()
Xs = []
As = []
Bs = []
Cs = []
Ds = []
Hs = []
Ls = [1]
Us = [0]
Zs = [0]
Alpha = []
n=len(puntos)-1
for x,y in puntos:
As.append(y)
Xs.append(x)
i=0
while i<n:
Hs.append(Xs[i+1]-Xs[i])
i=i+1
i=0
while i<n-1:
primerTermino = ((3/Hs[i+1])*(As[i+2]-As[i+1]))
segundoTermino = ((3/Hs[i])*(As[i+1]-As[i]))
Alpha.append(primerTermino-segundoTermino)
i=i+1
i=1
while i<n:
Ls.append(2*(Xs[i+1]-Xs[i-1])-Hs[i-1]*Us[i-1])
Us.append(Hs[i]/Ls[i])
Zs.append((Alpha[i-1]-Hs[i-1]*Zs[i-1])/Ls[i])
i=i+1
Ls.append(1)
Zs.append(0)
Cs.append(0)
j=n-1
i=0
while j>=0:
Cs.append(Zs[j]-(Us[j]*Cs[i]))
Bs.append(((As[j+1]-As[j])/Hs[j])-((Hs[j]*(Cs[i]+2*Cs[i+1])/3)))
Ds.append((Cs[i]-Cs[i+1])/(3*Hs[j]))
j = j-1
i = i+1
listaTemp = []
retorno2 = []
i=0
Cs.reverse()
Bs.reverse()
Ds.reverse()
while i<n:
p=[As[i],Bs[i],Cs[i],Ds[i],Xs[i]]
listaTemp.append(p)
i=i+1
contador=0
linea=80
conjuntoDeTrazadores = []
for i in listaTemp:
trazador(x) = k[0]+k[1]*(x-k[4])+k[2]*(x-k[4])**2+k[3]*(x-k[4])**3
conjuntoDetrazadores.append(trazador)
return conjuntoDeTrazadores

Miguel Angel Cifredo Campos


macifredo@gmail.com

#neville.sage
#Calcula los valores de Lagrange mediante el algoritmo de Neville
# -*- coding: utf-8 -*import numpy
def neville( X, tuplas ):
Q=numpy.matrix([[0]*len(tuplas)]*len(tuplas),dtype=float)
Xi=[]
count=0
for x,y in tuplas:
Q[count,0]=y
Xi.append(x)
count=count+1
for x in range(len(Xi)-1):
for y in range(len(Xi)-x-1):
i=x+y+1
j=x+1
Q[i,j]=((X-Xi[i-j])*Q[i,j-1]-(X-Xi[i])*Q[i-1,j-1])/(Xi[i]-Xi[i-j])
return Q

#puntos de la forma [(x_0,y_0,y'0),(x_1,y_1,y'1)...(x_n,y_n,y'n)], donde y'i es la derivada de f


evaluada en xi
def hermiteSoluciones (puntosConDerivadas):
#nuestra meta es resolver matrix*resultado = listaDeCoeficientes
n = len(puntosConDerivadas) - 1
matriz = matrix(2*(n+1))
incognitas = []
listaDeCoeficientes = []
#agregar cada yi en el vector de coeficientes
for yi in map(lambda puntosConDerivadaz:puntosConDerivadaz[1],puntosConDerivadas):
listaDeCoeficientes.append(yi)
#agregar cada derivada y'_i al vector de coeficientes
for yprima_i in map(lambda puntosConDerivadaz:puntosConDerivadaz[2],puntosConDerivadas):
listaDeCoeficientes.append(yprima_i)
filasHechas = 0
fila = []
fila2 = []
for xi in map(lambda puntosConDerivadaz:puntosConDerivadaz[0],puntosConDerivadas):
fila = []
fila2 = []
print "e"
for i in reversed(range(2*(n+1))):
fila.append(xi**(i))
fila2.append((i)*xi**(2*(i-1)))
print "fila2 ",fila2
print "fila ", fila
print "filas hechas ",filasHechas
matriz.set_row(filasHechas,fila)
matriz.set_row(filasHechas+1,fila2)
filasHechas = filasHechas+2
vectorDeResultados = matriz.solve_right(vector(listaDeCoeficientes))
return vectorDeResultados

Miguel Angel Cifredo Campos


macifredo@gmail.com

#dada una lista = [x_1,x_n], devuelve multiplicatoria de i hasta n de x_i


def multiplicatoriaDe(lista):
return reduce(lambda x,y: x*y, lista)
def sumatoriaDe(lista):
return reduce(lambda x,y: x+y, lista)
#mandar puntos de la forma:
#puntos = [(1,2),(4,3),(5,5)]
def polinomioDeLagrange(puntos):
terminosDeSumatoria = []
for x_k,y_k in puntos:
terminosDeMultiplicatoria = []
for x_i,y_i in puntos:
if x_k!=x_i:
terminosDeMultiplicatoria.append((x-x_i)/(x_k-x_i))
multiplicatoria = y_k*multiplicatoriaDe(terminosDeMultiplicatoria)
terminosDeSumatoria.append(multiplicatoria)
polinomioLagrange(x) = sumatoriaDe(terminosDeSumatoria)
return polinomioLagrange
def NewtonRaphson(e,seed,f,f_): #seed es x_0, f_ es derivada
next = seed - f(seed)/f_(seed)
print "x_i: ",next.n(digits=9), "f(x_i):" , f(seed).n(digits=9)
if abs(next-seed)<e:
return next
else:
return NewtonRaphson(e,next,f,f_)
def PuntoFijo(G,x0,e):
while abs(G(x0)-x0) > e:
print "x_i: " , x0, " G(x_i): ", G(x0)
x0 = G(x0)
return x0
def BiseccionLibro(f,xmin,xmax,e,numeroMaximoIteraciones):
contador = 1
if (xmin >= xmax):
print "Parmetros no vlidos"
else:
if (f(xmax)*f(xmin) > 1):
print "Mal intevalo, no hay cambi de signo"
else:
while(contador <= numeroMaximoIteraciones):
puntoMedio = xmin + (xmax-xmin)/2
print "x: ", puntoMedio.n(digits=6), " f(x)", f(puntoMedio).n(digits=6)
if ((f(puntoMedio) == 0) or ((xmax-xmin)/2 < e)):
print "Encajono x: " , puntoMedio, " f(x)", f(puntoMedio)
return puntoMedio
contador = contador + 1
if f(xmin)*f(puntoMedio) > 0:
xmin = puntoMedio
else:
xmax = puntoMedio
print "No hubieron suficientes iteraciones"
def secanteLibro(f,x0,x1,e,numeroIteraciones):
contador = 2
fx0 = f(x0)
fx1 = f(x1)
while (contador <= numeroIteraciones):
nextX = x1 - fx1*(x1-x0)/(fx1-fx0)
print "next x: ", nextX.n(digits=6) , " f(x)", f(nextX).n(digits=6)
if (abs(nextX-x1) < e):
print "Encontr! x:", nextX , " f(x): ",f(nextX)
return nextX
print "paso"
contador = contador + 1
x0 = x1
fx0 = fx1
x1 = nextX
fx1 = f(nextX)
print "No encontr!"

Miguel Angel Cifredo Campos


macifredo@gmail.com

#funcin que no tiene mucha exactitud en los puntos flotantes


def secanteLibroOptimizada(f,x0,x1,e,numeroIteraciones):
contador = 2
exactitud = 1000
decimales = 6 #numero de decimales a imprimir
fx0 = f(x0).n(digits=exactitud)
fx1 = f(x1).n(digits=exactitud)
while (contador <= numeroIteraciones):
nextX = (x1 - fx1*(x1-x0)/(fx1-fx0)).n(digits=exactitud)
print "next x: ", nextX.n(digits=decimales) , " f(x)", f(nextX).n(digits=decimales)
if (abs(nextX-x1) < e):
print "Encontr! x:", nextX.n(digits=decimales) , " f(x):
",f(nextX).n(digits=decimales)
return nextX
print "paso"
contador = contador + 1
x0 = x1.n(digits=exactitud)
fx0 = fx1.n(digits=exactitud)
x1 = nextX.n(digits=exactitud)
fx1 = f(nextX).n(digits=exactitud)
print "No encontr!"

Miguel Angel Cifredo Campos


macifredo@gmail.com

def muller(f,x0,x1,x2,e,numeroIteraciones):
h1 = x1 - x0
h2 = x2 - x1
sigma1 = (f(x1)-f(x0))/h1
sigma2 = (f(x2)-f(x1))/h2
d = (sigma2-sigma1)/(h2+h1)
i = 2
while (i<=numeroIteraciones):
b = sigma2 + h2*d
D = sqrt(b**2-4*f(x2)*d)# NOTE: May be complex arithmetic
E = 0 #para
if abs(b-D)
E = b +
else:
E = b -

inicializarla en el ambiente
< abs(b+d):
D
D

h = -2*f(x2)/E
p = x2 + h
print "prximo x: ", p , " f(x)", f(p)
if abs(h) < e:
print "Encontr! x: ", p , " f(x)" , f(p)
return p
x0 = x1
x1 = x2
x2 = p
h1 = x1 - x0
h2 = x2 - x1
sigma1 = (f(x1)-f(x0))/h1
sigma2 = (f(x2)-f(x1))/h2
d = (sigma2-sigma1)/(h2+h1)
i = i + 1
print "No encontr"

def mullerOptimizado(f,x0,x1,x2,e,numeroIteraciones):
exactitud = 6
h1 = (x1 - x0).n(digits=exactitud)
h2 = (x2 - x1).n(digits=exactitud)
sigma1 = ((f(x1)-f(x0))/h1).n(digits=exactitud)
sigma2 = ((f(x2)-f(x1))/h2).n(digits=exactitud)
d = (sigma2-sigma1)/(h2+h1).n(digits=exactitud)
i = 2
while (i<=numeroIteraciones):
b = (sigma2 + h2*d).n(digits=exactitud)
D = sqrt(b**2-4*f(x2)*d).n(digits=exactitud)# NOTE: May be complex arithmetic
E = 0 #para inicializarla en el ambiente
if abs(b-D) < abs(b+d):
E = (b + D).n(digits=exactitud)
else:
E = (b - D).n(digits=exactitud)
h = (-2*f(x2)/E).n(digits=exactitud)
p = (x2 + h).n(digits=exactitud)
print "proximo x: ", p.n(digits=exactitud) , " f(x)", f(p).n(digits=exactitud)
if abs(h) < e:
print "Encontr! x: ", p.n(digits=exactitud) , " f(x)" , f(p).n(digits=exactitud)
return p
x0 = x1
x1 = x2
x2 = p
h1 = x1 - x0
h2 = x2 - x1
sigma1 = ((f(x1)-f(x0))/h1).n(digits=6)
sigma2 = ((f(x2)-f(x1))/h2).n(digits=6)
d = ((sigma2-sigma1)/(h2+h1)).n(digits=6)
i = i + 1
print "No encontr"

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

!
"#

$ ! %!
& ( *! +(

* ) )!

<

= *! !

) )!

= & *! !
!
.

,
= ! +
+

( ! +(

! ( ! +(
!

) ) '!

'!

= !
= +( )!
*

/
( )
=

( )

*)

(
(

*)

= ( )
/

1
/
/

= +( )!
!
0
( ) 2 "( )

( )!
= "( )

/
-

(34
+( )!

= "( )
0

)
+( )
!

Miguel Angel Cifredo Campos


macifredo@gmail.com

= "( )

( !

= ( )
(
0
)!
! = "( )
!
= +( )!
-

)!

!
= "( )!

!
.

= ( )
( ! +( ) )

!
6

!6

! !
= "( )

+!

7
-

= +( )

!
,
/

,
= "( )

!+

:
!

+
(

*)

= (

= & *!
!
!

#)

!
$ *! ! % =

#'

* ) %!

$ ! (

) %!

! $# ! (

(
(

!
!

2 $ $ *! (
+

<

= " !!
* = *! # = ! +
-

)%% !
)!

)=

=*

7 0!

( )=

, !

#
(

"( ) =

=*

& *! !

!# '

Miguel Angel Cifredo Campos


macifredo@gmail.com

"

6
(

;;?

)!

! "( ) =
!
:
/

( )!
>

)!
,

= ( ! @! A! )

= ( B! + ! ! )

! =

"( ) = B + ( + )

"

)= (
/

= "( )
! -

*
@

= *! !

)!

;
A

!# !
-

!-

) .
-

+ ( )

"(

+ ( )

( )

0
= "( )
6

C
(
!

!
6

)
6

6
"( ) =

) .
"(

)= (

( )!
!

Miguel Angel Cifredo Campos


macifredo@gmail.com

:
% = !

=( (

%%=# +;) "


!
, !

1
/
7

* )!

)!

! (

! ! # )
> :
!

)) + %

>

!
>
!

;?

0>
= "( )

= ( *!

= "( )!

,
)

(-

!
(

! -

)!

( !

! +

( )=

"( ) =

( ) +

"( )
3

!
(

8
-

<

)!
!-

#+
.

>

#
.
= & *! ! !
0
(
-

#'

0
+
! &!

)+
#+

#+

!
( )
=

(
(

*)

#)

=( (

* )!

)!

! (

# ) )!

Miguel Angel Cifredo Campos


macifredo@gmail.com

= ( )

,
#+

( )=

6+
!

)C
!

"( ) =

( )
=*

"( ) =

#
#

=
= ( *!
-

# )!

"( ) = ( )!

= & *!

7
(

#'

= ( )

!
6

#+

8
/

)
1 +

"# !

= & *!

" 5

#'

#+

& *!

#'

C
)

) 5

#+

$ *!
$ *! # %

!
(# + )

( ) = "( ) +

()

( # + )F

"( ) =

*)

#%

#)

= *! !

( ) =

!#

$ *!

#%

Miguel Angel Cifredo Campos


macifredo@gmail.com

) 3

"( ) =

= ( *!

#
#

#)

"( ) =

!
#

#
#

#
*

#
#

G = ! G! + -

#+

>

#
#

HGH =

&)

(&!

'&=*

H G H *!

!
= G

( )

= ( *!

#)

Miguel Angel Cifredo Campos


macifredo@gmail.com

( ) "( )

= ( )!

( ) = ( ) "( ) ) (
)

)
(I

#)

!+ +

!
<
> = K( ) )! + 0
<

*)

(# + )

;)

#+

J (

#)

( )

0
0
#

#+

)(
( # + )F ) +

(
#+

>

!
#+ !

#+

J *!
= ( )
#+

= KK( )

> -

** !

J ( )J
> = K( )
-

<

<
*!

( )J (

( )=*

F) +

0
7
*

*)

!
#

) (
"( )!

#)

!
#!

C
(# + )

*)

() =

(# + )

(# + )

( ) ( # + )F ) = *!
(# + )

)=

/
,

( ) * ( # + )F ) !

()

( # + )F
(

;)
= ( )!
( ) = *!

= ! +
)!

+
-

Miguel Angel Cifredo Campos


macifredo@gmail.com

#
= & *!

5
"( ) =

! ' +

*+

+
*

= *!

* =*

+
@

+( )
*

"( ) =

.
=
( )
$ *! % !

"( )

$ *! % !

!
( ) "( ) =

!
-

()

;F

( ) !

$ *! %

"

( ) "( )

5
-

=*

*
"

"

= *! ! !

! & *! ! * '!

( )

!
( " ) ( ) " A
* B

+
$ *! % ! -

Miguel Angel Cifredo Campos


macifredo@gmail.com

:
E

( " ) ( ) " A

(
>( ! ) =

()

;F

$ *! % +

$ *! %

( )

$ *! %
>

.
-

=** B

AJM
:

= >( ! ) +

>
/

(+

:
6

6 /

6=

=** B

!
-

6
-

= ( ) /

!
+

= "( )!
3
6 >

!
6!

- 0

Miguel Angel Cifredo Campos


macifredo@gmail.com

$
=

.
,

"( ) = @ " + @ "


.
!

( ) +
@!

$ *! % !
= "( )

/
!

$ ! B% ! +

> )+
!-

E -

; .

= "( )

5
(
= N( )
"

( ) = N( ) N)! I
F
! /

+
= "( )

+
+

!
E

(# + )

( ) "( )
-

( )

()

( # + )F

( ) !
= & *!

( ) = (
!

#'

*)

#)

$ ! %!

Miguel Angel Cifredo Campos


macifredo@gmail.com

( )
(

>
$ ! %
)+

,
+

(# + )

>

( ) " ( # + )F !

!+

(# + )

( )

%
E
"( )

,
"( )

+
!

( ) =
( )
@! + /

;!
"( )!

$ *! % !

= & *! " ! '!

& *! ! * '

AJM
:
"

@ 3

"( )
( + " ) ( ) " A
-

$ *! %

!
0
= "( )
( !

( ) + ( )! +
*** ( )
/
= K?

/
)

P
!

+ ! +

Miguel Angel Cifredo Campos


macifredo@gmail.com

>

G !

"

= !

>

!
,

= & ! ! ;! @! B '

G =

;
@
B

"

;
@
B

;;
@;
B;

;@ !
@@
B@
( )=

>

( )

= @;?;A

= "( ) -

( )

"( )
!

(
+

"( )

!
- N( ) =
"( ) = N( )

N( )
!

= *! !

#!

! #!

.
.
/

= "( )
#! -

, ( )! + -

Miguel Angel Cifredo Campos


macifredo@gmail.com

,( )

"( )

+!

=
#

"( ) =

,( ) =

,*( ) +

, ( )+

,#( )

=*

,( )
&=

, ( &) =

!
&

*
+ -

C
#

) "( )

) "
"( ) =
"

,*( ) +

,( )+

,( )=

,#( ) =

*+

* =

*)

)(

*)

)(

#)

#)

!
#

,( ) =

&=*

( ) = (

,( ) =
( )
# +

( )

,( ) =

( )
( )

*)

&

&

&

#)

( )
( )

, ( &) =

( &)
( &)

*
( &)

,( )

= *

Miguel Angel Cifredo Campos


macifredo@gmail.com

"

!
!

"

,( )
& ( *! * )! ( !

= "( )
#

,( ) =
=*

, -

"

#= !

,*( ) =

(
(

= & *!

)(

)(

, ( )=

(
*

)(

)(

*)

*)

#)

/
)

*)

*)

.
(

*)

*)

'

*)

*)

+ , ( )=

& *!

#)'

' +

"( ) =

#!

# (

(
(

! (

( )

=*

)!

!+

( )

"( ) =

""
= & *!

! ' +

"( ) = *
*

@!

"

& *! ! * '!

( )

(* )

( )

( *) ( )

( *)

+ *
( *)

Miguel Angel Cifredo Campos


macifredo@gmail.com

,( )
.

!
!

!
!

"

"#

)!

, ( )!

P
/

/
.

"( )

+-

"

>+

+-

,( )
!

!
"#

>

( +/

)
( +-

E Q

"&
= & *!

! '

N( ) =
*

( )
+ *
(* )

( *) ( )

,
(

& ! *! '!

! N( )

( *)
+

( )
( *)

,( ) +
=
!
$ *! % )

Miguel Angel Cifredo Campos


macifredo@gmail.com

>

E Q
.

E Q

.
$ ! %!
+
! ! +

= ( )!
=& !

+ !

.
= ' = & *!

#'

!
#

( )

+.

,( )

+ .

,( )

=*

=*

/
(# + )

()

( # + )F

*)

#)

"

+
= ( )!

,( )

= *! !

( )

= ( )

!#!
#

( )

( ) =

*)

)+

#)

@)

=*

# 0

Miguel Angel Cifredo Campos


macifredo@gmail.com

#=

.
+

+ #=

E Q

#= !

"$

( )

( )+

@)

( )!

( );

KK( )!

< <

,*( )

,( )

KK( )

'

( )( )

( );
A

'

!
6
+
+
*=

( )( )

6
=
=

+
,

= ( ) <( ! ! ) = !
+

$ ! %!
!
,
"( ! ( ) ) + N( ! ( ) )!

Miguel Angel Cifredo Campos


macifredo@gmail.com

:
5

.
#+

( )

( )+

( ) + ( ) + .! !

.!

5
=& !

( )

KK( ) = 4(

R
,

"#
?B

+ ! '!

( ( ) + ( + )) +

.! =

"

?)
=( )"

( ( + ) + ( )) =

!
( ( )+

( + ) + ( ))

:
:

5
!

>

Miguel Angel Cifredo Campos


macifredo@gmail.com

!
,

!
(

)-

<( ! ! )
= & *!

9
0
/

>
-

"%

=&

! #=

*= !

#= !
=

+ !

'
.

E Q

E Q

@)!

= '!

( )

*)

)+

)!

(@)

( )!

M*

,*( )

=
( )

>

4(

( )

( )

( )

,( )

4(

( )
=

( )( )

,( )

< <

Miguel Angel Cifredo Campos


macifredo@gmail.com

. :
5

/
=
-

<( ! ! )
, (
>

>

>

! "( )! )

; .

#+

( )

( )+@

( ) +

( ) + ( ) !

+
.! =

(@)

( ) = 4(

<

& *! ! * '

"(
= & *!

5
!

! ' +

>

( )

Miguel Angel Cifredo Campos


macifredo@gmail.com

! '

"

( )

(*) +

+ ()

.!

< * AB

! '

"

( )

- "
-

(*) + @

+ ()

B?*
5

.!

";=
-

!,

( " )B

< *

M*

*M@ !

;3

E Q

E Q
P

- !

.
= "( ) =

( )

E Q
= "( )

E Q
"( ) 2

*)

*)

)+

"( ) =

*)

= *! !

(
!#

#)

Miguel Angel Cifredo Campos


macifredo@gmail.com

"( )
!
-

"( )
"( ) =

"

) 5 "(
) "

*)

)=

"(

*+

E Q

*) !

+ ,
(

*)

"(

*)

$ *!
-

*)

E Q

+ (

%!

)=

$ *!

$ !

&%

$ *!
!

( &) ( )
&

&

&

! $ ! &!

3%

% +

$ ! &!

3% =

$ &!

3%
3

3
,

$ !

&%

"

!
$ *!

3% =

$ !

3%

$ *!
3

Miguel Angel Cifredo Campos


macifredo@gmail.com

"

6!
*!

(
$ %= ( ) =

!
*% =

= $ *!

O
)=

"(

= $ *!

*%

+ $ *!
$ !

% =

*)

% $ *!

%(

*%

+ $ *!

*)

%(

*)

& ( *!

+ $ *!

)!

"( )

&

"( ) 2

*%

)- C
= $

% $

% =

(
-

!
*= $

;) "

#%

* )!

( !

*)

)!

! (

#!

#)'

#)

!
#

"( ) = $

*%

$ *!

%(

*)

)!

# 0

)!

$ *!

% =

) + ;)

$ !

!
!

% $ *!

%
!

= ! !

!#

Miguel Angel Cifredo Campos


macifredo@gmail.com

-.
.

& ( *!

* )!

( !

)!

! (

#!

!
-

$ %
*

$'%

$ '' %

%
$ *!

$ !
$ !
;

$ *!

;! -

5
/

;%

;%

;%

+
-

%
$ !

"( ) 2

$ ''' %

$ *!

E Q

#)'

*)

0 C
(

*)

(
;! +
@

*)

)+

*)

) ( )! + ( *) ( ) (

)(

= $ *!

)(

;%

! +

;)

Miguel Angel Cifredo Campos


macifredo@gmail.com

5
<

#+

)!

+-

#+

#+

,
#!

!
$#( ) !
P

$# + ( ) 6
#+ !
$# + ( ) = $#( ) + $ *!

"

!
-

#+

%(

*)

#)

#+

8
"

( @!
1

= $ *!

$ %

;!

@)

@%

$'%

$ '' %

$ ''' %

$ '@' %

$ *!
$ !
$ !
;

;!

;!

$ *!

>
)!

;!

@%

@%

@%

@%

(
.

;%

1
E

$ !
$ !

;%

;%

$ ;!

"
+

+-

E Q
0

Miguel Angel Cifredo Campos


macifredo@gmail.com

&"
= & *! " ! ' +

5
,

E Q
$ %
*

$'%

*
*

& ( *! * )! ( " ! )! ( ! * ) '

;; 3
E Q
"( ) 2 * +

1
-

0 C

$ '' %

>

*
*

& *! ! * '! -

( *) +

( *)

@+

!
/
-

!
*

+ !

= !
#

+# !

&

+
&

+&

) = (& )

Miguel Angel Cifredo Campos


macifredo@gmail.com

$ ' %!
$ '' %!
;

$ ''' %!
$' '%

!
E Q

>
6

+ "

& *!

# '!

3 (

(3 )

(3 )

-.
.

6
*

;@

Miguel Angel Cifredo Campos


macifredo@gmail.com

>

1
8

; @!

E Q

;@

( 8

)! +

"

(; ) (

= ;F

"

$ *!

% =

E Q

E Q
= ( # *) " #

&&
#

"( ) =

T
=

*)

& ( *!

* )!

( !

)!

! (

( ) )

#!

# ) '!

Miguel Angel Cifredo Campos


macifredo@gmail.com

"

!
$ ! %!

E Q
=( )"

"( ) =

*+

( ) +

= & *! " ! '

! +

& *!

( ) (

&#

= & *! ! ' +

& *! ! * '!

'!

!
& *!

'

=" !

0 C

*
*=
*

*
1

;B 3

& *! ! * '
1

;;

E Q
*

=*

1
="

+
"( ) =

"

II #

; B!

*+

"

( *) +

F ( " )

( *)

'

FF

Miguel Angel Cifredo Campos


macifredo@gmail.com

@7
9
-

/
-

,
+
-

"

0
!

#
=

"( ) -

"( ) = * ;@* * A

+* *

+ * *@ ?

+ * **** B*

+ * ;* *

= "( )
!

$ ! %

( )

M *

* B**

* ** ;M

* ;

*M

*M +

!
:

AJM
:
3

- !
/

= "( )

"( ) (

)
$ ! % !

/
:

0-

+ "( )

$ ! %

;*

Miguel Angel Cifredo Campos


macifredo@gmail.com

E
( 0

!
- P )! + -

'

!
+

>

, !

,
#"
( )=

$ ! % ! +

= ( ) +
>

"( ) = MB M

+* B *A

* MA * ?
O

* @ *B

M
;

*;

"( )

+*

?B
*

+*

@ ;!

*A

+A B

+
-

$ ! %

= "( ) (

!
:

/
6

= ( )
/

!
= "( )

"

>

>

)+
!

/
/

@;

"( +

) + "( )

$ ! %

Miguel Angel Cifredo Campos


macifredo@gmail.com

$( ) >
-

/
3

6! + -

( )=

!
$

0 -

"( +
!+-

- +
&

<

+
-

(+

"

<

. 7

!+ !

(+

@@

( )=

<

@@

<

( )=

$ ! %

<

Miguel Angel Cifredo Campos


macifredo@gmail.com

-0 1 0

2
5

( ) = (

>

(# + )

( ) "( ) =

()

( # + )F

*)

!
(

#)

( )

"

( )

>

(
-

P )

+ )
#

= *! !

+
,

"( +

)!

!#
( )=

<
-

$ ! %

!-

/
!

7 0!

!
"

!
!

+
,

,
/

!
(

<

>

6
!

;;

Miguel Angel Cifredo Campos


macifredo@gmail.com

3
9

,
,

6+

>

+
>

- P
'
- P

<
8

0 !
-

+
5

+
>

>

,
5

!
!

E Q

<

!
.

+
0

>

>
.

,
-

!
+
!

! P
6

6
3

>
!

(
>

0
)

/
+
-

"
-

!6
(

!-

)
= & *!

>

)
0

#'

8
(

!
)

!
!

+!

/
(

;@

Miguel Angel Cifredo Campos


macifredo@gmail.com

)!

+
O!

+
-

>

6)!

(6

!+

B 7

CU

9
0
!

!
!!

>

>

,
/

"

8
6
#

VU

E
!

+V

"

, !

>
1
< U ( ** )!

, !

>

>
+

!
!

>
!

6
8

,
(

W >
E

(0

)!
!
V

;B

Miguel Angel Cifredo Campos


macifredo@gmail.com

CIN Ingeniera del Software


.
.

.
..

Interpolacion Polinomial

Ma Cruz L
opez de los Mozos, Ma Teresa Gonz
alez Montesinos

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
1/27

on
. Introducci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Dados un conjunto de n + 1 puntos distintos S = {x0 , x1 , . . . , xn }, con


a = x0 < x1 < < xn = b, llamado soporte, y una funcion f : [a, b] R, tal
que f (xk ) = yk , k = 0, 1, . . . , n, esto es, conocemos la siguiente:
Tabla de Valores:

x
x0
y = f (x) y0

x1
y1

xn
yn

.
Problema de Interpolacion Polinomial
..
Hallar un polinomio Pn (x), de grado no superior a n tal que
.

Pn (xk ) = f (xk ), para cualquier 0 k n.

Dicho polinomio, si existe, se denomina polinomio de interpolaci


on de la
funci
on f en el soporte S.
Obs: El Soporte S se dice regular si sus puntos estan equiespaciados.
S se dice canonico de n + 1 puntos si S = {0, 1, 2, . . . , n}
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
2/27

on
. Introducci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Dados un conjunto de n + 1 puntos distintos S = {x0 , x1 , . . . , xn }, con


a = x0 < x1 < < xn = b, llamado soporte, y una funcion f : [a, b] R, tal
que f (xk ) = yk , k = 0, 1, . . . , n, esto es, conocemos la siguiente:
Tabla de Valores:

x
x0
y = f (x) y0

x1
y1

xn
yn

.
Problema de Interpolacion Polinomial
..
Hallar un polinomio Pn (x), de grado no superior a n tal que
.

Pn (xk ) = f (xk ), para cualquier 0 k n.

Dicho polinomio, si existe, se denomina polinomio de interpolaci


on de la
funci
on f en el soporte S.
Obs: El Soporte S se dice regular si sus puntos estan equiespaciados.
S se dice canonico de n + 1 puntos si S = {0, 1, 2, . . . , n}
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
2/27

Miguel Angel Cifredo Campos


y Unicidad del Polinomio Interpolador
. Existencia
macifredo@gmail.com
.

.
El polinomio interpolador es u
nico:
..
Sea un Soporte de n + 1 puntos distintos S = {x0 , x1 , . . . , xn }, con
a = x0 < x1 < < xn = b, una funcion y = f (x) denida en [a, b] tal que
yk = f (xk ), k = 1, . . . , n, esto es:
x
x0
y = f (x) y0

x1
y1

xn
yn

Entonces, existe un u
nico polinomio P(x), de grado menor o igual que n, que
interpola
a
f
(x)
en
el
soporte S, esto es: f (xk ) = P(xk ), k = 0, 1, . . . , n.
.

En los puntos de S, f (x) y P(x) coinciden: f (xk ) = P(xk ), k = 0, 1, . . . , n.


En cualquier otro punto x (comprendido entre x0 y xn ),
.

Interpolar f (x) es aproximar f (x) por P(x)

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
3/27

on
. Introducci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

.
Ejemplo 1:
..
Supongamos conocida la tabla de valores de y = f (x) en S = {0, 1, 2}:
x
0
y = f (x) 1

1
3

2
7

(Grado del Polinomio: n = 2)

El Polinomio de Interpolacion P2 (x) = ax 2 + bx + c debe vericar:


P2 (0) = f (0) = 1,

P2 (1) = f (1) = 1,

P2 (2) = f (2) = 7.

Obtenemos entonces el sistema de ecuaciones

c =1
a+ b+c =3
= a = b = c = 1 = P2 (x) = x 2 + x + 1.

4a + 2b + c = 7
Podemos
ahora interpolar el valor de f (1.5) P2 (1.5) = 4.75.
.
.
Que error se comete en esta aproximaci
on?
..
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
4/27

on
. Introducci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

.
Ejemplo 1:
..
PHxL
y
7
6
5
4
3
2
x

.
.

0.5

1.0

1.5

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

2.0

.
5/27

de interpolacion
. Error
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

.
Polinomio soporte
..
LLamamos polinomio soporte o de apoyo asociado a S al polinomio
.

(x) = (x x0 )(x x1 ) (x xn ).

.
Error de interpolacion
..
Si f es una funcion n + 1 veces derivable en (a, b), f n+1) es continua en [a, b] y
x [a, b], el error que se comete al aproximar f (x) por Pn (x) viene dado por
n (x) = |f (x) Pn (x)| =

|f n+1) (c)|
|(x)|
(n + 1)!

siendo
c (a, b) determinado por los puntos x, x0 , x1 , . . . , xn .
.
En
. la Practica: n (x)

M
|(x)|, donde M = max |f n+1) (x)|.
(n + 1)!
x[a,b]
.

M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
6/27

de interpolacion
. Error
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

.
Polinomio soporte
..
LLamamos polinomio soporte o de apoyo asociado a S al polinomio
.

(x) = (x x0 )(x x1 ) (x xn ).

.
Error de interpolacion
..
Si f es una funcion n + 1 veces derivable en (a, b), f n+1) es continua en [a, b] y
x [a, b], el error que se comete al aproximar f (x) por Pn (x) viene dado por
n (x) = |f (x) Pn (x)| =

|f n+1) (c)|
|(x)|
(n + 1)!

siendo
c (a, b) determinado por los puntos x, x0 , x1 , . . . , xn .
.
En
. la Practica: n (x)

M
|(x)|, donde M = max |f n+1) (x)|.
(n + 1)!
x[a,b]
.

M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
6/27

de interpolacion
. Error
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

.
Ejemplo 2: Queremos aproximar sen 1:
..
Para ello, interpolamos f (x) = sen x en el soporte S = {0, /4, /2}:
P2 (x) = 1.16401285994663 x 0.33574886736281 x 2 .
La aproximacion obtenida es
sen 1 P2 (1) = 0.82826399258382.
Como |f (x)| 1 = M, una cota del error vendra dada por
2 (1) = | sen 1 P2 (1)|

1
|(1)| 4.08 102 < 101 ,
3!

es
. decir, hemos interpolado sen 1 con una cifra decimal exacta.
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
7/27

de Interpolacion
. Error
.
.
Ejemplo 2:
..

Miguel Angel Cifredo Campos


macifredo@gmail.com

8sinHxL, P2 HxL<

y
1.0

0.8

0.6

0.4

0.2

.
.

0.5

1.0

1.5
.

M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
8/27

Miguel Angel Cifredo Campos


etodos para calcular el polinomio Interpolador
. M
macifredo@gmail.com
.

.
C
omo construimos el polinomio interpolador?
..
Planteando el sistema de ecuaciones lineales, (como en el Ejemplo 1).
Siempre es compatible determinado (la matriz de los coecientes es de
Vandermonde, y por tanto es regular).
Problema: No siempre es el metodo mas practico (costoso
computacionalmente, puede presentar problemas de condicionamiento).
Metodo de Lagrange.
.
.

Metodo de Newton.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
9/27

on de Lagrange
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

.
Polinomios (auxiliares) de Lagrange
..
Dado un soporte S = {x0 , x1 , . . . , xn }, llamamos polinomios de Lagrange
asociados a S a los denidos como
(x x0 ) (x xk1 )(x xk+1 ) (x xn )
(xk x0 ) (xk xk1 )(xk xk+1 ) (xk xn )
n

x xj
=
, k = 0, 1, 2, . . . , n.
xk xj

Lk (x) =

j=0
j=k

.
Los Polinomios de Lagrange verican:
..
{
1 si k = j,
.. Lk (xj ) =
para todo k = 1, . . . , n.
0 si k = j.

...

grado(Lk ) = n, cualquiera que sea 0 k n.

...

Se pueden expresar como: Lk (x) =

.
.

(x)
, k = 0, 1, . . . , n.
(x xk ) (xk )
.

M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
10/27

on de Lagrange
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

.
Interpolacion de Lagrange
..
Sea un soporte S = {x0 , x1 , . . . , xn }, y la tabla de valores de y = f (x) en S
x
x0
y = f (x) y0

x1
y1

xn
yn

Entonces, el Polinomio Interpolador de Lagrange de f (x) en S viene dado por:


Pn (x) = y0 L0 (x) + y1 L1 (x) + . . . yn Ln (x) =
.
.

yk Lk (x)

k=0

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
11/27

on de Lagrange
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

.
Ejemplo 3: Calcular el Polinomio Interpolador de Lagrange de y = f (x) que, en
el soporte S = {1, 2, 3, 4}, toma los valores {0, 1, 2, 5}, esto es:
x
y = f (x)

1
0

2
1

..
Los polinomios de Lagrange vienen dados por

.
.

3
2

4
5

L0 (x) =

1
(x 2)(x 3)(x 4)
= (x 3 9x 2 + 26x 24),
(1 2)(1 3)(1 4)
6

L1 (x) =

(x 1)(x 3)(x 4)
1
= (x 3 8x 2 + 19x 12),
(2 1)(2 3)(2 4)
2

L2 (x) =

(x 1)(x 2)(x 4)
1
= (x 3 7x 2 + 14x 8),
(3 1)(3 2)(3 4)
2

L3 (x) =

(x 1)(x 2)(x 3)
1
= (x 3 6x 2 + 11x 6).
(4 1)(4 2)(4 3)
6
.

M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
12/27

on de Lagrange
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

.
x
1
2
Ejemplo 3:
Tabla de valores:
y = f (x) 0 1
..
El polinomio de interpolacion de f (x) en S viene dado por

3
2

4
5

P3 (x) = y0 L0 (x) + y1 L1 (x) + y2 L2 (x) + y3 L3 (x) =


= 0 L0 (x) + (1) L1 (x) + 2 L2 (x) + (5) L3 (x),
Por tanto:

7
98
P3 (x) = x 3 + 16x 2 x + 19.
3
3

Problema Propuesto: Sea la funcion f (x) = sen x + cos x.

}
3
, ,
.
4 2 4
.. Dar una estimacion del error que se comete al aproximar el valor de f (2)
por P(2).

.
.

.. Hallar el polinomio de interpolacion, P(x), de f (x) en S =


1

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
13/27

on de Lagrange
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Los polinomios de Lagrange dependen u


nicamente del soporte y no de los valores
de la funcion: Si el soporte no vara, los polinomios de Lagrange tampoco varan.
.
Ventajas
..
Interpolar distintas funciones en el
mismo
soporte.
.

.
Inconvenientes
..
No es proceso dinamico:
si a
nadimos un nuevo punto al soporte,
hay que comenzar de nuevo todo el
proceso.
.

Se puede encontrar un proceso dinamico que permita a


nadir puntos en el
soporte aprovechando los calculos realizados hasta el momento?
Interpolaci
on de Newton
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
14/27

on de Lagrange
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Los polinomios de Lagrange dependen u


nicamente del soporte y no de los valores
de la funcion: Si el soporte no vara, los polinomios de Lagrange tampoco varan.
.
Ventajas
..
Interpolar distintas funciones en el
mismo
soporte.
.

.
Inconvenientes
..
No es proceso dinamico:
si a
nadimos un nuevo punto al soporte,
hay que comenzar de nuevo todo el
proceso.
.

Se puede encontrar un proceso dinamico que permita a


nadir puntos en el
soporte aprovechando los calculos realizados hasta el momento?
Interpolaci
on de Newton
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
14/27

on de Lagrange
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Los polinomios de Lagrange dependen u


nicamente del soporte y no de los valores
de la funcion: Si el soporte no vara, los polinomios de Lagrange tampoco varan.
.
Ventajas
..
Interpolar distintas funciones en el
mismo
soporte.
.

.
Inconvenientes
..
No es proceso dinamico:
si a
nadimos un nuevo punto al soporte,
hay que comenzar de nuevo todo el
proceso.
.

Se puede encontrar un proceso dinamico que permita a


nadir puntos en el
soporte aprovechando los calculos realizados hasta el momento?
Interpolaci
on de Newton
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
14/27

on de Lagrange
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Los polinomios de Lagrange dependen u


nicamente del soporte y no de los valores
de la funcion: Si el soporte no vara, los polinomios de Lagrange tampoco varan.
.
Ventajas
..
Interpolar distintas funciones en el
mismo
soporte.
.

.
Inconvenientes
..
No es proceso dinamico:
si a
nadimos un nuevo punto al soporte,
hay que comenzar de nuevo todo el
proceso.
.

Se puede encontrar un proceso dinamico que permita a


nadir puntos en el
soporte aprovechando los calculos realizados hasta el momento?
Interpolaci
on de Newton
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
14/27

on de Lagrange
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Los polinomios de Lagrange dependen u


nicamente del soporte y no de los valores
de la funcion: Si el soporte no vara, los polinomios de Lagrange tampoco varan.
.
Ventajas
..
Interpolar distintas funciones en el
mismo
soporte.
.

.
Inconvenientes
..
No es proceso dinamico:
si a
nadimos un nuevo punto al soporte,
hay que comenzar de nuevo todo el
proceso.
.

Se puede encontrar un proceso dinamico que permita a


nadir puntos en el
soporte aprovechando los calculos realizados hasta el momento?
Interpolaci
on de Newton
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
14/27

on de Newton
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Dados un soporte S = {a = x0 < x1 < < xn = b} y una funcion


f : [a, b] R, cuya tabla de valores en S viene dada por
x
x0
y = f (x) y0

x1
y1

xn
yn

.
Proposicion
..
El Polinomio de Interpolacion de la funcion f en el soporte S es de la forma
Pn (x) = c0 + c1 (x x0 )+
+ c2 (x x0 )(x x1 )+
+ c3 (x x0 )(x x1 )(x x2 )+
..
.
+ cn (x x0 )(x x1 )(x x2 ) (x xn1 ),
donde los coecientes c0 , c1 , . . . , cn dependen de x0 , . . . , xn y de los valores
que
toma la funcion en dichos puntos y0 = f (x0 ), . . . , yn = f (xn ).
.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
15/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

C
omo calculamos dichos coecientes?
Soporte cualquiera: Metodo de las diferencias divididas.
Soporte regular: Metodo de las diferencias finitas.
.
Denici
on: Diferencias Divididas
..
Cualquiera que sea 1 k n, la diferencia dividida de orden k:

f [x0 , x1 , . . . , xk ] =

f [x1 , . . . , xk ] f [x0 , . . . , xk1 ]


, con f [xj ] = yj , 0 j n
xk x0

.
Coecientes del Polinomio Interpolador
..
En el polinomio interpolador Pn (x), cada coeciente ck es la siguiente diferencia
dividida de orden k:
.
.

c0 = f [x0 ] = y0 , c1 = f [x0 , x1 ], . . . , ck = f [x0 , . . . , xk ]


.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
16/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

C
omo calculamos dichos coecientes?
Soporte cualquiera: Metodo de las diferencias divididas.
Soporte regular: Metodo de las diferencias finitas.
.
Denici
on: Diferencias Divididas
..
Cualquiera que sea 1 k n, la diferencia dividida de orden k:

f [x0 , x1 , . . . , xk ] =

f [x1 , . . . , xk ] f [x0 , . . . , xk1 ]


, con f [xj ] = yj , 0 j n
xk x0

.
Coecientes del Polinomio Interpolador
..
En el polinomio interpolador Pn (x), cada coeciente ck es la siguiente diferencia
dividida de orden k:
.
.

c0 = f [x0 ] = y0 , c1 = f [x0 , x1 ], . . . , ck = f [x0 , . . . , xk ]


.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
16/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

C
omo calculamos dichos coecientes?
Soporte cualquiera: Metodo de las diferencias divididas.
Soporte regular: Metodo de las diferencias finitas.
.
Denici
on: Diferencias Divididas
..
Cualquiera que sea 1 k n, la diferencia dividida de orden k:

f [x0 , x1 , . . . , xk ] =

f [x1 , . . . , xk ] f [x0 , . . . , xk1 ]


, con f [xj ] = yj , 0 j n
xk x0

.
Coecientes del Polinomio Interpolador
..
En el polinomio interpolador Pn (x), cada coeciente ck es la siguiente diferencia
dividida de orden k:
.
.

c0 = f [x0 ] = y0 , c1 = f [x0 , x1 ], . . . , ck = f [x0 , . . . , xk ]


.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
16/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
1
x
Ejemplo 4: Sea la tabla de valores:
y = f (x) 0
..
El Polinomio de Interpolacion es de grado 3, as que:

3
1

4
1

5
2

P3 (x) = c0 + c1 (x 1) + c2 (x 1)(x 3) + c3 (x 1)(x 3)(x 4)


c0 = f [x0 ] = 0, y ademas: f [x1 ] = 1, f [x2 ] = 1, y f [x3 ] = 2.
10
1
f [x1 ] f [x0 ]
=
= .
c1 = f [x0 , x1 ] =
x1 x0
31
2
f [x1 , x2 ] f [x0 , x1 ]
2 1/2
5
c2 = f [x0 , x1 , x2 ] =
=
= .
x2 x0
41
6
f [x1 , x2 , x3 ] f [x0 , x1 , x2 ]
5/2 (5/6)
5
c3 = f [x0 , x1 , x2 , x3 ] =
=
=
x3 x0
51
6
Por tanto
.
.

1
5
5
P3 (x) = 0 + (x 1) (x 1)(x 3) + (x 1)(x 3)(x 4)
2
6
6
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
17/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
x
1 3
4
5
Ejemplo 4:
Tabla de Diferencias Divididas:
y = f (x) 0 1 1 2
..
Los coecientes se pueden calcular construyendo la siguiente tabla, llamada
Tabla
de Diferencias Divididas:
.
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
18/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
x
1 3
4
5
Ejemplo 4:
Tabla de Diferencias Divididas:
y = f (x) 0 1 1 2
..
Los coecientes se pueden calcular construyendo la siguiente tabla, llamada
Tabla de Diferencias Divididas:
xi

f [xi ]

f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] f [xi , xi+1 , xi+2 , xi+3 ]

.
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
18/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
Ejemplo 4:
..

.
.

x
y = f (x)

1
0

3
1

4
1

5
Tabla de Diferencias Divididas:
2

f [x0 , x1 ] =

f1 f0
10
1
f [x1 ] f [x0 ]
=
=
= ,
x1 x0
x1 x0
31
2

f [x1 , x2 ] =

f [x2 ] f [x1 ]
f2 f1
1 1
=
=
= 2,
x2 x1
x2 x1
43

f [x2 , x3 ] =

f [x3 ] f [x2 ]
f3 f2
2 (1)
=
=
= 3,
x3 x2
x3 x2
54

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
18/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
Ejemplo 4:
..

x
y = f (x)
xi

f [xi ]

1
0

3
1

4
1

5
Tabla de Diferencias Divididas:
2

f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] f [xi , xi+1 , xi+2 , xi+3 ]


1/2

2
3

.
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
18/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
Ejemplo 4:
..

.
.

x
y = f (x)

1
0

3
1

4
1

5
Tabla de Diferencias Divididas:
2

f [x0 , x1 , x2 ] =

f [x1 , x2 ] f [x0 , x1 ]
2 1/2
5
=
= ,
x2 x0
41
6

f [x1 , x2 , x3 ] =

f [x2 , x3 ] f [x1 , x2 ]
3 (2)
5
=
= ,
x3 x1
53
2

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
18/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
Ejemplo 4:
..

x
y = f (x)
xi

f [xi ]

1
0

3
1

4
1

5
Tabla de Diferencias Divididas:
2

f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] f [xi , xi+1 , xi+2 , xi+3 ]


1/2

5/6

1
2/1

5/2
3/1

.
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
18/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
Ejemplo 4:
..

x
y = f (x)

f [x0 , x1 , x2 , x3 ] =

1
0

3
1

4
1

5
Tabla de Diferencias Divididas:
2

5/2 ( 5/6)
f [x1 , x2 , x3 ] f [x0 , x1 , x2 ]
5
=
= ,
x3 x0
51
6

.
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
18/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
Ejemplo 4:
..

x
y = f (x)
xi

f [xi ]

1
0

3
1

4
1

5
Tabla de Diferencias Divididas:
2

f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] f [xi , xi+1 , xi+2 , xi+3 ]


1/2

5/6

1
2/1

5/6
5/2

3/1

.
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
18/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
Ejemplo 4:
..

x
y = f (x)
xi

f [xi ]

1
0

3
1

4
1

5
Tabla de Diferencias Divididas:
2

f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] f [xi , xi+1 , xi+2 , xi+3 ]


1/2

5/6

1
2/1

5/6
5/2

3/1

El polinomio de interpolacion es pues


1
5
5
(x 1) (x 1)(x 3) + (x 1)(x 3)(x 4)
2
6
6
1
= (5x 3 45x 2 + 118x 78).
6

P3 (x) =
.
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
18/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
Ventaja de este metodo: Es un Proceso Dinamico
..
Si ahora a
nadimos un nuevo punto al soporte, no hay que rehacer todos los
calculos. Basta con a
nadir una nueva la en la tabla que tenamos elaborada
para calcular el coeciente f [x0 , x1 , x2 , x3 , x4 ] y determinar el polinomio
.
.

P4 (x) = P3 (x) + f [x0 , x1 , x2 , x3 , x4 ](x 1)(x 3)(x 4)(x 5).

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
19/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
Ejemplo 5:
..
A
nadamos el punto x4 = 7 con f4 = f (x4 ) = 3 en el soporte del Ejemplo 4:
x
1
y = f (x) 0
xi

f [xi ]

3
1

4
1

5
2

7
3

f [xi , xi+1 ] f [xi , xi+1 , xi+2 ] f [xi , xi+1 , xi+2 , xi+3 ] f [xi , . . . , xi+4 ]
1/2
5/6
2/1

5/6

5/18

5/2

5/6

3/1

5/6

2
1/2

.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
20/27

Miguel Angel Cifredo Campos


on de Newton: Diferencias Divididas
. Interpolaci
macifredo@gmail.com
.

.
Ejemplo 5:
..
P4 (x) = P3 (x)
.
.

5
(x 1)(x 3)(x 4)(x 5)
18

1
(5x 4 80x 3 + 430x 2 889x + 534).
18

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
20/27

Cifredo Campos
on de Newton: Diferencias FinitasMiguel Angel
. Interpolaci
macifredo@gmail.com
.

Cuando el soporte S es regular, los coecientes ck = f [x0 , . . . , xk ] se calculan


mas rapidamente por el metodo de las diferencias nitas.
.
Denici
on
..
Dados los valores y0 , y1 , . . . , yn , se denen las diferencias finitas de orden k,
k yi , con 0 i n 1 y 1 k n, como
.

yi = yi+1 yi ,

k yi = (k1 yi ).

Por ejemplo, para y0 , y1 , y2 , y3 tendremos que


y0 = y1 y0
y1 = y2 y1
y2 = y3 y2

2 y0 = y1 y0
2 y1 = y2 y1

3 y0 = 2 y1 2 y0

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
21/27

Cifredo Campos
on de Newton: Diferencias FinitasMiguel Angel
. Interpolaci
macifredo@gmail.com
.

Cuando el soporte S es regular, los coecientes ck = f [x0 , . . . , xk ] se calculan


mas rapidamente por el metodo de las diferencias nitas.
.
Denici
on
..
Dados los valores y0 , y1 , . . . , yn , se denen las diferencias finitas de orden k,
k yi , con 0 i n 1 y 1 k n, como
.

yi = yi+1 yi ,

k yi = (k1 yi ).

Por ejemplo, para y0 , y1 , y2 , y3 tendremos que


y0 = y1 y0
y1 = y2 y1
y2 = y3 y2

2 y0 = y1 y0
2 y1 = y2 y1

3 y0 = 2 y1 2 y0

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
21/27

Cifredo Campos
on de Newton: Diferencias FinitasMiguel Angel
. Interpolaci
macifredo@gmail.com
.

Dados los datos tabulados

x
y = f (x)

x0
y0

x1
y1

x2
y2

...
...

xn
yn

Sabemos que el Polinomio interpolador viene dado por:

(n1)

Pn (x) = c0 + c1 (x x0 ) + c2 (x x0 )(x x1 ) + . . . + cn

(x xi )

i=0

.
Proposicion
..
Sea S = {x0 , x1 , . . . , xn } un soporte regular en el que xi+1 xi = h, para
cualquier i = 0, 1, . . . , n 1, y sean yi = f (xi ) los valores que toma una funcion
f en dicho soporte. Entonces, c0 = f [x0 ] = y0 , y para cualquier k = 1, . . . , n, es

.
.

ck = f [x0 , . . . , xk ] =

k y0
.
hk k!

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
22/27

Cifredo Campos
on de Newton: Diferencias FinitasMiguel Angel
. Interpolaci
macifredo@gmail.com
.

Dados los datos tabulados

x
y = f (x)

x0
y0

x1
y1

x2
y2

...
...

xn
yn

Sabemos que el Polinomio interpolador viene dado por:

(n1)

Pn (x) = c0 + c1 (x x0 ) + c2 (x x0 )(x x1 ) + . . . + cn

(x xi )

i=0

.
Proposicion
..
Sea S = {x0 , x1 , . . . , xn } un soporte regular en el que xi+1 xi = h, para
cualquier i = 0, 1, . . . , n 1, y sean yi = f (xi ) los valores que toma una funcion
f en dicho soporte. Entonces, c0 = f [x0 ] = y0 , y para cualquier k = 1, . . . , n, es

.
.

ck = f [x0 , . . . , xk ] =

k y0
.
hk k!

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
22/27

Cifredo Campos
on de Newton: Diferencias FinitasMiguel Angel
. Interpolaci
macifredo@gmail.com
.

.
Polinomio de interpolacion
..
El polinomio de interpolacion de f en el soporte regular S (de paso h) es, por
tanto,
(
)
(
)(
)
x x0
2 y0 x x0
x x1
Pn (x) = y0 +y0
+
+
h
2!
h
h
(
) (
)
n y0 x x0
x xn1
+

.
n!
h
h
.
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
23/27

Cifredo Campos
on de Newton: Diferencias FinitasMiguel Angel
. Interpolaci
macifredo@gmail.com
.

.
Ejemplo 6 :
..

x
y = f (x)

2
3

4
45

6
175

8
441

yi

Tabla de Diferencias Finitas


(pues S es regular, de paso h = 2)

yi

2 yi

3 yi

42

45

88
130

175

48
136

226
441

.
P3 (x) = 3 +

42
1!

x 2
2

)
+

88
2!

x 2
2

)(

x 4
2

)
+

48
3!

x 2
2

)(

x 4
2

)(

x 6
2

)
.

.
Finalmente:
P3 (x) = x 3 x 2 x + 1.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
24/27

Cifredo Campos
on de Newton: Diferencias FinitasMiguel Angel
. Interpolaci
macifredo@gmail.com
.

.
Es un metodo dinamico:
..
Si agregamos otro punto al soporte, de modo que este siga siendo regular,
procederemos de forma identica al metodo de las diferencias divididas: bastara
con completar la tabla que ya hemos obtenido con la diferencia nita del orden
siguiente
y a
nadir un sumando a la expresi
on del polinomio interpolador.
.
.

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
25/27

Cifredo Campos
on de Newton: Diferencias FinitasMiguel Angel
. Interpolaci
macifredo@gmail.com
.

.
x
2
4
6
8
10
Ejemplo 7:
y = f (x) 3 45 175 441 915
..
Hemos a
nadido el punto 10 al soporte anterior con f (10) = 915, por tanto:
yi
3

yi

2 yi

3 yi

4 yi

42
45
Completamos
Tabla Diferencias Finitas:

88
130

175

48
136

226
441

24
72

208
474

915
(
)(
)(
)(
)
x 4
x 6
x 8
4 y0 x 2
=
4!
2
2
2
2
24 (x 2)(x 4)(x 6)(x 8)
1 4 1 3 31 2
= P3 (x) +
=
x x + x 26x + 25.
4!
24
16
4
4
.
.
.
.
.
.
.
P4 (x) = P3 (x) +

M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
26/27

Cifredo Campos
on de Newton: Diferencias FinitasMiguel Angel
. Interpolaci
macifredo@gmail.com
.

.
x
2
4
6
8
10
Ejemplo 7:
y = f (x) 3 45 175 441 915
..
Hemos a
nadido el punto 10 al soporte anterior con f (10) = 915, por tanto:
yi
3

yi

2 yi

3 yi

4 yi

42
45
Completamos
Tabla Diferencias Finitas:

88
130

175

48
136

226
441

24
72

208
474

915
(
)(
)(
)(
)
x 4
x 6
x 8
4 y0 x 2
=
4!
2
2
2
2
24 (x 2)(x 4)(x 6)(x 8)
1 4 1 3 31 2
= P3 (x) +
=
x x + x 26x + 25.
4!
24
16
4
4
.
.
.
.
.
.
.
P4 (x) = P3 (x) +

M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
26/27

on de Lagrange o de Newton?
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Distintas funciones en el mismo soporte S: usaremos los polinomios de


Lagrange pues estos solo dependen de S.
Soportes que se obtienen a
nadiendo puntos a un soporte previo:
utilizaremos la interpolacion de Newton:
.
Diferencias divididas
..
Alg
. un Soporte no es regular.

.
Diferencias nitas
..
.Todos los Soportes son regulares

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
27/27

on de Lagrange o de Newton?
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Distintas funciones en el mismo soporte S: usaremos los polinomios de


Lagrange pues estos solo dependen de S.
Soportes que se obtienen a
nadiendo puntos a un soporte previo:
utilizaremos la interpolacion de Newton:
.
Diferencias divididas
..
Alg
. un Soporte no es regular.

.
Diferencias nitas
..
.Todos los Soportes son regulares

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
27/27

on de Lagrange o de Newton?
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Distintas funciones en el mismo soporte S: usaremos los polinomios de


Lagrange pues estos solo dependen de S.
Soportes que se obtienen a
nadiendo puntos a un soporte previo:
utilizaremos la interpolacion de Newton:
.
Diferencias divididas
..
Alg
. un Soporte no es regular.

.
Diferencias nitas
..
.Todos los Soportes son regulares

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
27/27

on de Lagrange o de Newton?
. Interpolaci
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Distintas funciones en el mismo soporte S: usaremos los polinomios de


Lagrange pues estos solo dependen de S.
Soportes que se obtienen a
nadiendo puntos a un soporte previo:
utilizaremos la interpolacion de Newton:
.
Diferencias divididas
..
Alg
. un Soporte no es regular.

.
Diferencias nitas
..
.Todos los Soportes son regulares

.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos

Interpolaci
on Polinomial

.
27/27

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio propuesto:
Hallar el polinomio interpolador para el soporte S = {(1, 2), (0, 0), (2, 2), (3, 4)} usando el metodo
de diferencias divididas de Newton.
- Para ello, podeis consultar los archivos de la carpeta InterpolacionNewton1, y el archivo InterpolacionNewton2.pdf (transparencias correspondientes a la numeracion 18/27).
- El ejercicio se realizar
a en grupos de tres personas, y se valorara para las calificaciones finales en
caso de que este bien hecho.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Apuntes de Analisis Numerico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 1
Definiciones
1.1.

Clasificaci
on de errores

Se consideran tres tipos de errores distintos.


Inherentes o de entrada Son aquellos introducidos por los datos del problema.
Representan una incertidumbre en los datos de entrada.
De redondeo Son los que se producen por la aplicacion del redondeo simetrico,
o del truncamiento o corte.
De truncamiento Son los que se producen al discretizar un proceso continuo, o
al acotar un proceso infinito.

1.2.

Clasificaci
on de problemas

En el analisis numerico se trabaja con dos tipos de problemas: los matem


aticos, que se refieren a procesos infinitos, las ecuaciones, el planteo algebraico, etc;
y los num
ericos, que se refieren a procesos finitos.
Cuando a un problema matematico se lo aproxima a traves de un metodo
numerico se comete un error de truncamiento.
En los problemas numericos, los errores inherentes se propagan a traves de los
calculos.

1.3.
1.3.1.

Decimales significativos
Notaci
on

A representa el valor real y exacto de un dato particular.


A representa el valor estimado (es decir, numerico) de ese dato.
A es el error absoluto exacto cometido por la estimacion.
Y rA es el error relativo cometido por la estimacion: rA =
2

A
.
A

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.4 Representacion interna de n


umeros reales

En sntesis:
A = A + A
A
A =
1 rA

(1.3.1)
(1.3.2)

Es decir que, en general, no sera posible conocer el valor A con certeza, sino
que siempre se tendra un valor A con alg
un rango de incerteza, A.
Por otro lado, al no conocer el valor exacto de A, en general sera imposible
conocer los valores A y rA . En cada problema, sin embargo, sera posible acotarlos,
de manera que |A| A y rA RA , donde A y RA son las cotas del error
absoluto y relativo respectivamente.

1.3.2.

Determinaci
on de los decimales significativos

El rango de incerteza determinara cuantos decimales significativos tendra A.


T

Por ejemplo, si A = 0, 5 10 , y T > 0, A tendra T decimales significativos.


En cambio, si T 0, no habra decimales significativos.
Por ejemplo:
A = 124, 3257058
A = 0, 5 103 = 0, 0005 A = 124, 326 0, 0005
A = 0, 2 103 = 0, 0002 A = 124, 326 0, 0002
A = 0, 5 101 = 5
A = 120 5
La cantidad de decimales significativos esta relacionada con el error del dato.
Si un dato tiene 2 decimales significativos, el error sera del orden 102 .
Si x = 2,00 y esta correctamente redondeado, x tiene dos decimales significativos: T = 2 y x = 0,005 = 0,5 102 . La cota de error asociado a un valor
es la que les da significado a los dgitos.

1.3.3.

Dgitos medianamente significativos

Si la cota del error no es x = 0,510T , sino que se encuentra en el rango 0,5


10T 1 < x < 0,5 10T , con T > 0, el valor tendra T decimales significativos
y un decimal medianamente significativo.
Por ejemplo, si x = 5,687 y x = 0,03, entonces x = 5,69 0,03, donde el
segundo decimal es medianamente significativo.
Si T 0, el u
ltimo dgito significativo esta en 10T y en 10T 1 se encuentra
un dgito medianamente significativo.

1.4.

Representaci
on interna de n
umeros reales

Detro de la computadora, los n


umeros reales se representan utilizando la tecnica
del punto flotante.
3

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.4 Representacion interna de n


umeros reales
De forma que: A = m10q , donde A es el n
umero real que se quiere representar,
m es la mantisa (que debe cumplir 0, 1 |m| < 1) y q es el exponente. En la
computadora, el cero inicial no se almacena, para no guardar un cero a la izquierda.
La mantisa debe tener una cantidad T de dgitos, que indica la precision con
que se esta representando el n
umero. Si se utilizan 32 bits para representar cada
n
umero, se la denomina simple precisi
on y, si se utilizan 64, doble precisi
on.
Para analizar la precision maxima que puede tener un n
umero dentro de una
computadora, se utiliza la siguiente ecuacion.




A A m
m 0, 5 10T
10q m 10q m

= 0, 5 101T
=

= m
A
m 10q
0, 1
(1.4.1)
Mediante esta ecuacion podemos definir el valor , tambien llamado unidad de
maquina. Se trata del maximo error relativo que comete la computadora cuando
se representa un valor con T dgitos significativos.
= 0, 5 101T

1.4.1.

(1.4.2)

Conversi
on entre dgitos decimales y binarios

Para poder calcular cuantos dgitos binarios ocupara un determinado n


umero
decimal se utiliza la siguiente deduccion.
10d = 2b
d log 10 = b log 2
d
= b
log 2

(1.4.3)
(1.4.4)
(1.4.5)

Es decir que para representar una cantidad d de n


umeros decimales, se necesitan
aproximadamente b = 3,32 d dgitos binarios (bits).

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 2
Operaciones con Errores
2.1.

Errores Inherentes

Cuando se opera con datos que tienen una determinada incerteza, es necesario
propagar esa incerteza a medida que se realizan las operaciones, para poder obtener
la incerteza correspondiente al resultado final.

2.1.1.

Operaciones Elementales

Se analiza a continuacion la forma de obtener la incerteza de un resultado para


las operaciones elementales.
x1
x2
y
y

=
=
=
=

x1 + x1
x2 + x2
y + y
x1 op x2

Donde, op es la operacion a realizar entre x1 y x2 .


Suma y resta

y = x1 x2
y = x1 + x1 x2 + x2
y = (
x1 x2 ) + (x1 x2 )
Por lo tanto:
y = x1 x2
y = x1 x2

(2.1.1)
(2.1.2)

Si ahora buscamos el modulo de y:


|y| = |x1 x2 | |x1 | + |x2 | x1 + x2 = y
5

(2.1.3)

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.1 Errores Inherentes

Por ejemplo:
x1 = 23, 5 0, 2
x2 = 11, 7 0, 5 = 12 0, 5
x1 + x2 = 35, 2 0, 5 = 35 0, 5
Producto
Para el caso del producto se utiliza la expresion del valor relativo de x e y, en
lugar del valor absoluto.
y
x1
x2
=
.
1 ry
1 rx1 1 rx2
y = x1 x2
1
1
1
=
.
1 ry
1 rx1 1 rx2

2.1.2.

(2.1.4)
(2.1.5)
(2.1.6)

F
ormula general de propagaci
on

Si y = F (x1 , x2 , . . . , xn ), la cota del error absoluto y esta dada por:



n
X
F


y =
xi xi

(2.1.7)

i=1

Por ejemplo, si w = 3x + y z:



w
w
w




w = x + y + z
x
y
z
= 3x + y + z

(2.1.8)
(2.1.9)

El error relativo de w es:


rw
rw




w w x w y w z
=
=
+
+
w
x w
y w
z w



w rx x w ry y w rz z
+
+
=
x w
y w
z w

(2.1.10)
(2.1.11)

Se puede obtener una cota al error relativo Rw tomando los valores estimados
de las variables.

2.1.3.

Gr
afica de procesos - Factores de Amplificaci
on

Cuando se analiza un proceso en el que se efect


uan una o mas operaciones con
los datos de entrada, se puede utilizar la tecnica grafica para obtener la incerteza
total del proceso.

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.1 Errores Inherentes

Figura 2.1.1: Gr
afica general de un proceso unitario

En la figura 2.1.1, podemos ver la grafica tpica de un proceso unitario, donde


Z = F (X).
rZ = fX rX + U1
(2.1.12)
En la figura 2.1.2, podemos ver la grafica tpica de un proceso binario, donde
Z = X op Y y rZ = fX rX + fY rY + U1 .
En ambos casos U representa el error agregado por la unidad de maquina. Es
un error que siempre debe tenerse en cuenta cuando se realizan operaciones con la
computadora.

Figura 2.1.2: Gr
afica general de un proceso binario

Por ejemplo, para la operacion Z = A2 B 2 , una grafica posible para este


proceso estara dada por la representada en la figura 2.1.3. En este caso, el error
relativo del resultado estara dado por:
Z1
Z2
(rA + rA + U1 ) (rB + rB + U2 ) + U3
Z
Z
2rA Z1 2rB Z2 Z1 U1 Z2 U2

+
+
+ U3
=
Z
Z
Z
Z

rZ =
rZ

El problema de este proceso en particular surge cuando utilizamos valores muy


cercanos para A y B. Por ejemplo:
A = 43,21 0,005 = 43,21(1 1,2 104 )
B = 43,11 0,005 = 43,11(1 1,2 104 )
Al acotar rA , rB y U (con T = 6):
|rA | RA = 1,2 104
|rB | RB = 1,2 104
|U1 | = |U2 | = |U3 | U = 0,5 101T = 0,5 105
7

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.1 Errores Inherentes

Figura 2.1.3: Gr
afica de la operaci
on A2 B 2

Ahora, acotamos rZ :




Z1
Z2
Z
Z
2
1
+
+ 1 U = RZ
|rZ | 2RA + 2RB +
Z
Z
Z
Z

El u
ltimo termino, ZZ1 + ZZ2 + 1 U , es el error debido al redondeo, tambien
llamado factor de amplificaci
on global de redondeo.
Teniendo en cuenta que Z1 = 1867,1041, Z2 = 1858,4721, y Z = 8,632, tenemos
que: ZZ1 = 216,3 y ZZ2 = 215,3. De modo que:
RZ 420RA + 420RB + 421
RZ 0,05 + 0,05 + 0,002 = 0,102

Sin embargo, podemos recordar que los problemas numericos pueden ser evaluados de varias maneras diferentes. De modo que efectuamos el mismo calculo
utilizando la ecuacion: Z = (A + B)(A B), cuya grafica se representa en la figura
2.1.4.
En este caso, el error relativo del resultado estara dado por:




A
B
A
B
rZ =
rA
+ rB
+ U1 1 + rA
rB
+ U2 1 + U3
Z1
Z1
Z2
Z2




A
B
A
B
rZ = rA
+
+ rB

+ (U1 + U2 + U3 )
Z1 Z2
Z1 Z2




A(A B) + A(A + B)
B(A B) B(A + B)
rZ = rA
+ rB
+ (U1 + U2 + U3 )
Z
Z
 2
 2
2A
2B
rB
+ (U1 + U2 + U3 )
rZ = rA
Z
Z
8

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.1 Errores Inherentes

Figura 2.1.4: Gr
afica de la operaci
on (A + B)(A B)

Y al acotar rZ obtenemos:
2
2
B
A
|rZ | 2RA + 2RB + 3U
Z
Z
Es decir, la misma expresion que con el proceso anterior, excepto por el factor
global de amplificacion.

2.1.4.

Condici
on de un problema

La condici
on de un problema es la suma de los factores de amplificacion. En
el caso en que RA y RB sean de un mismo orden, pueden sumarse. Si los ordenes
de magnitud son similares, puede tomarse el mayor, y si son muy distintos, deben
considerarse por separado.
En el ejemplo considerado anteriormente, cuando se utilizaba la formula A2
B 2 , tenamos que RZ = 420RA + 420RB + 421. Mientras que cuando se utilizaba
la formula, (A + B)(A B), obtenamos RZ = 420RA + 420RB + 3.
En ambos casos, la condicion del problema es CP = 840. Podemos observar
que se trata de un problema muy mal condicionado, y esto se debe a que estamos
operando con n
umeros muy cercanos.
Regla: la cantidad T de dgitos significativos indica que el error va a
estar en 101T . Si la condicion del problema es de orden 10X , hace que
se pierdan X dgitos significativos. Por lo tanto, si se quiere tener Z
dgitos significativos en el resultado, se debe operar con un T = Z + X.
Un problema es estable cuando la condicion del problema es mucho menor
que la cantidad de terminos del problema. Mientras que cuando la condicion del
problema es mayor, el problema es inestable.
De la misma manera, cuando el factor de amplificacion que acompa
na a la
entrada es menor que 1, se dice que la entrada es estable, mientras que si el factor
de amplificacion es mayor que 1, la entrada sera inestable.
9

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.1 Errores Inherentes

2.1.5.

Condici
on del Algoritmo

Si se tiene un problema como el explicado anteriormente, que esta muy mal


condicionado, no se puede cambiar la condicion del problema, pero s se puede
trabajar sobre la condici
on del algoritmo, para obtener un menor factor global
de amplificacion.
La condicion del algoritmo esta dada por:
CA =

FGA
CP

(2.1.13)

De modo que, en el ejemplo anterior, CA1 = 421


mientras que CA2 =
840
podemos ver, el segundo algoritmo es mucho mejor que el primero.

3
.
840

Como

La unidad de maquina y el algoritmo que se elijan deben lograr -al menos- que
no se pierdan los dgitos significativos de los datos de entrada.
Si, por ejemplo, se utilizara T = 4 dgitos, se tendra una unidad de maquina
= 0,5 103 . Con este valor, para el primer algoritmo, se tendra RZ 1008
104 + 2150 104 . Es decir que el error relativo debido al redondeo es mayor que
el inherente. Esto es malsimo.
Si, en cambio, se elige el otro algoritmo: RZ 1008 104 + 15 104 .

2.1.6.

Perturbaciones Experimentales

El metodo de las perturbaciones experimentales consiste en realizar un cambio


en alguno de los valores de entrada, para analizar como cambia la salida.
En un proceso que tiene N datos de entrada y una salida:
proceso

x1 , x2 , . . . , xj , . . . , xN y
Se puede realizar una perturbacion en el dato xj :
proceso

x1 , x2 , . . . , xj + j , . . . , xN yj
Se define la perturbaci
on de entrada:

j
j =
xj

(2.1.14)

La perturbaci
on de salida:


yj y

j =
y

(2.1.15)

Y el factor de amplificaci
on del dato xj :
fj =

j
j

(2.1.16)
10

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.2 Errores de truncamiento

Si al graficar fj en funcion de j se obtiene una grafica lo suficientemente estable, esto implica que el algoritmo utilizado para el proceso funciona aceptablemente
bien.
Si, en cambio, no se logra obtener una zona lo suficientemente estable, esto
implica que el algoritmo es inestable.
Si, por ejemplo, se intenta mejorar el algoritmo utilizado en el proceso aumentando la precision, se obtendra una variacion relativa del resultado debido a que
la precision es mejor. Para el doble de precision, sera:


y y2T

(2.1.17)
2T =
y2T
Si se quiere propagar los errores en un problema, sin conocer el algoritmo, se
puede utilizar el metodo de las perturbaciones experimentales para aproximar la
derivada.
y
y
yj y

=
(2.1.18)
xj
xj
xj j
Para el caso de una funcion z(x, y), la propagacion de errores podra hacerse
seg
un:
zx
zy
z =
x +
y
(2.1.19)
x x
y y
Donde zx y zy representan las variaciones de la salida al variar x o y y
mantener la otra variable constante.

2.2.

Errores de truncamiento

Los errores de truncamiento son aquellos que se introducen al volver finito un


proceso infinito. Por ejemplo:

S =
P =

X
i=1
n
X

ai

(2.2.1)

ai

(2.2.2)

i=1

P implica tomar una cantidad N de terminos, de un problema con terminos


infinitos. El error cometido en este caso se puede obtener de:

S = P + P
P |S[n + 1] S[n]|
P an+1

(2.2.3)
(2.2.4)
(2.2.5)
11

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.2 Errores de truncamiento

Por ejemplo:

X
1
S =
y2
i=1

(2.2.6)

10
X
1
P =
= 1,549767731
2
y
i=1

(2.2.7)

1
= 0,008
112

(2.2.8)

De manera que S = 1,55 0,008.


En un caso en el que haya cancelacion de terminos, es posible introducir un
error de truncamiento, de forma que la formula aproximada sea mas precisa que
sin el truncamiento.
Tomamos como ejemplo un caso en el que queremos calcular la diferencia entre
los senos de dos n
umeros muy cercanos:
x1 = 0, 57640
x2 = 0, 57630

x1 = 0, 000005 = 0, 5 105
x2 = 0, 000005 = 0, 5 105

Por el metodo directo:


y = sen(
x1 ) sen(
x2 )
y = 0,54501 0,54493
y = 0,00008 0,00001
Ahora, para utilizar el metodo del truncamiento, vamos a tomar el desarrollo
en serie de Taylor de la funcion sin x2 alrededor del punto x1 :
(x2 x1 )2
+ ...
2
Ahora, al truncar la serie y quedarnos u
nicamente con los primeros dos terminos, podemos utilizarlos para calcular la diferencia deseada, y luego utilizar el
tercero para obtener una cota del error:
sen x2 = sen(x1 ) + cos(x1 )(x2 x1 ) sen(x1 )

y[1]
y[1]
y[1]
y[1]

=
=
=
=

sen(x1 ) sen(x2 )
cos(x1 )(x2 x1 )
(0,83843 0,000005)(0,00010)
0,00083843 0, 5 109

El error debido al truncamiento estara dado por:




2

(x

x
)
2
1
= 3 109
y[1] = sen(x1 )

2
De forma que el resultado final sera: y = 0,000083843 0,000000003.
12

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.3 Errores de Redondeo

2.3.

Errores de Redondeo
A = 0,1234567 100 0,00001234567 104
= 0,4711325 104 0,4711325
B
104

= A + B
= 0,47114484567 104

Ahora, redondeamos el valor de a: = 0,4711448 104 . Y operamos con el


valor C = 0,4711325 104 .
z = + C = 0,4711448 104 0,4711325 104 = 0,0000123 104
Es decir que:
+ C = 0,0000123 104
z = (A + B)
y C:

Si, en cambio hubieramos operado primero con B


= 0,4711325 104
B
0,4711325
104
C = 0,4711325 104 0,4711325 104
+ C
= B
= 0
104
Y al operar con A:
z = + A = 0 + 0,1234567 100 = 0,1234567 100
En conclusion, cuando se opera con n
umeros que no son todos de la misma
magnitud, el orden en que se realizan las operaciones puede ser muy significativo
a la hora de obtener los resultados.

13

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 3
Sistemas de ecuaciones lineales
3.1.

Repaso b
asico

Sea A una matriz perteniciente al espacio <N N . Si A es invertible, existe solucion del sistema de ecuaciones A~x = B.
Se define la matriz triangular inferior L como aquella cuyos valores por
encima de la diagonal son cero. Y la matriz triangular superior U como aquella
cuyos valores por debajo de la diagonal son cero.
Una matriz es diagonal dominante si el valor absoluto de cada elemento
de la diagonal es mayor que la suma de los valores absolutos de todos los otros
elementos de su misma fila o columna.

3.1.1.

Eliminaci
on gaussiana

La eliminacion gaussiana es un metodo para obtener la solucion de problema.


Se trata primero de realizar la eliminaci
on de ciertos valores de A para llegar a
la matriz diagonal superior U , luego realizar la sustituci
on de los valores y llegar
al vector ~x.
Para realizar la eliminacion, se utiliza la tecnica del pivoteo. Se elige un n
umero
que sera el pivote, y a partir de all se crea un multiplicador m.
Por ejemplo, para una matriz de 2 2, el multiplicador que se utilizara sera:
A21
. Donde el pivote es A11 .
m21 = A
11
Para obtener los nuevos valores de la matriz:
21
A21 = A21 A11 m21 = A21 A11 A
=0
A11
A21
A22 = A22 A12 m21 = A22 A12 A11

En el caso en que uno de los pivotes a elegir se anule, sera necesario intercambiar
esa fila con alguna otra cuyo pivote no se haya anulado. Si no es posible, el sistema
no tiene solucion.
Ademas pueden intercambiarse las filas con la finalidad de obtener un pivote
mas grande y tener un menor error de pivoteo. Esta tecnica es la que comunmente
se llama de pivoteo.

14

Miguel Angel Cifredo Campos


macifredo@gmail.com

3.1 Repaso basico

Si la matriz es sim
etrica y definida positiva, se puede realizar la eliminacion
gaussiana sin preocuparse de que el pivote se anule.

3.1.2.

Descomposici
on LU

Este metodo resulta u


til cuando se tienen que resolver varios sistemas que
tienen una misma matriz de coeficientes.
~ Y se descompone a la matriz A en dos matrices L
Se tiene el sistema A~x = B.
~ Se define ~y tal que U~x = ~y y L~y = B.
~
y U , de forma que LU~x = B.
Cuando los valores de la diagonal de L son todos 1, se la llama descomposicion
de Doolittle. En este caso, U es la matriz triangular obtenida al utilizar eliminacion
gaussiana, y L es la matriz de los pivotes utilizados, completada con unos en la
diagonal.
Al utilizar la eliminacion gaussiana, dejamos entre parentesis el pivote utilizado,
en lugar del cero.
Por ejemplo, para el caso de una matriz de 2 2:


3 4 5
2 3 4


=

4 5

( 23 )

1
3

2
3

A partir de estos datos podemos descomponer A en las matrices L y U :



A=

3.1.3.

3 4
2 3


= LU =

1 0
2
1
3



3 4
0 31

Norma Vectorial

Se llama Norma P , con 1 P < , a la norma dada por:


 P1

kXkP = |X1 |P + |X1 2P + . . . + |XN |P

(3.1.1)

Esta norma debe cumplir las siguientes propiedades:


~x 6= ~0 k~xk
~x = ~0 k~xk
k~xk
k~x + ~y k

>
=
=

0
0
|| k~xk
k~xk + k~y k

Seg
un el valor que tome P , seran distintas las operaciones que debamos realizar sobre las componentes del vector. En el caso en que P = 2, obtendremos
la distancia eucldea. En el caso en que P = 1, obtendremos la suma de las
componentes, y si P = , se tratara del maximo valor absoluto del vector.
15

Miguel Angel Cifredo Campos


macifredo@gmail.com

3.2 Errores

3.1.4.

Norma Matricial

La norma matricial se define con las mismas propiedades que la norma vectorial,
y un par mas:
AN M 6= 0N M kAN M k
kAN M k
kAN M + B N M k
kAN M B M P k
kAN M ~xk

>
=

0
|| kAN M k
kAN M k + kB N M k
kAN M k kB M P k
kAN M k k~xk

En particular, la u
ltima propiedad es la que sirve para definir la norma matricial.
Al igual que en el caso de la norma vectorial, se a partir de estas propiedades
se pueden definir varias normas matriciales:
kAN M ~xk
x6=0
k~xk
M
X
max
|Aij |

kAN M k = max
kAN M k =
N M

kA

k1 =

kAN M k2

1iN

j=1

max

1jM

N
X

|Aij |

i=1

max
=
mn

Es decir que la norma infinita equivale a la maxima suma por filas, y la norma
uno equivale a la maxima suma por columnas. La norma 2 se define solamente
para matrices simetricas.

3.2.

Errores

Los errores con los que se trabaja al analizar sistemas de ecuaciones lineales,
son errores inherentes o de redondeo. No hay errores de truncamiento.

3.2.1.

Errores Inherentes

~ teniendo en cuenta una matriz de incertezas A


Tomamos el sistema A~x = B,
~ para
y un vector de incertezas ~x con los cuales se obtiene el vector resultado B,
analizar la matriz.
16

Miguel Angel Cifredo Campos


macifredo@gmail.com

3.2 Errores

~
A~x = B
~
(A + A)(~x + ~x) = B
~
A~x + A~x + A(~x + ~x) = B
A~x = A(~x + ~x)
~x = A1 (A(~x + ~x))
k~xk kA1 k kAk k~x + ~xk
k~xk
kAk
kA1 k
kAk
k~x + ~xk
kAk
kAk
k~xk
K(A)
k~x + ~xk
kAk
K(A) = kA1 k kAk es el n
umero de condicion de la matriz. Juega el mismo rol
que el n
umero de condicion del problema.
A continuacion, se analiza el caso en el que hay incertezas u
nicamente en los
datos de entrada y salida, pero no en la matriz del sistema.
~
A~x = B
~ + B
~
A(~x + ~x) = B
~ + B
~
A~x + A~x = B
~
~x = A1 ( B)
~
k~xk kA1 k k Bk
~
kA1 k k Bk
k~xk

k~xk
k~xk
1
~
k~xk
kA k k Bk

~
k~xk
kAk kBk
~
k~xk
k Bk
K(A)
~
k~xk
kBk

3.2.2.

Residuos

~ se propone un x como solucion del sistema. Se


Tomando un sistema A~x = B,
define al residuo R:
R
R
1
A R
A1 R

=
=
=
=

b A
x
A(x x)
x x
e

(3.2.1)
(3.2.2)
(3.2.3)
(3.2.4)
17

Miguel Angel Cifredo Campos


macifredo@gmail.com

3.3 Refinamiento Iterativo

Donde e es el error que se comete al estimar x con x. Es importante notar que


no alcanza con saber si el residuo es peque
no, es necesario saber que el error sea
peque
no.
Podemos proponer una cota (no muy buena) para el error:
kek kA1 k kRk
kRk
kek
K(A)
~
k~xk
kBk

3.2.3.

3.3.

Propagaci
on de los errores de redondeo

Refinamiento Iterativo

El metodo de refinamiento iterativo, es un metodo directo, que busca corregir


el error de redondeo. No se ocupa de los errores inherentes, sino u
nicamente de los
de redondeo.

3.3.1.

Definici
on

Teniendo en cuenta la ecuacion (3.2.2), se puede afirmar que si se conociera x


dada por x = x + x, es posible conocer con exactitud el valor de x.
El metodo del refinamiento iterativo se basa en este concepto, para tratar de
lograr una mejor aproximacion de x a x.
xN +1 = xN + xN

(3.3.1)

Para obtener xN , se necesita obtener el residuo, evaluando la matriz A en xN ,


y luego multiplicar la inversa de A por el residuo obtenido. Es decir:
xN = A1 (B A
xN )

(3.3.2)

La resta (B A
xN ) debe efectuarse con el doble de los dgitos significativos
deseados, y luego guardar el resultado con la cantidad de dgitos requerida.
Para que todas estas operaciones se hagan mas sencillas, se utiliza la descomposicion A = LU :
LU ~x = R
L~y = R
U x = ~y
Es decir que teniendo la matriz L, se averigua en primer lugar el valor de ~y , y
luego, teniendo la matriz U se averigua el vector ~x.
18

Miguel Angel Cifredo Campos


macifredo@gmail.com

3.4 Metodos Iterativos

3.3.2.

N
umero de condici
on de la matriz

Ahora se puede tomar otra cota del n


umero de condicion de la matriz:
K(A) 10T

kxk
k
xk

(3.3.3)

Que nos permite definir el n


umero p:
p = log K(A) T + log

kxk
k
xk

(3.3.4)

Si p > T , se pierden todos los dgitos significativos. Pero si p < T , se pierden


algunos dgitos significativos, pero no todos. Se define la variable q = T p, que
identifica la cantidad de dgitos significativos que se quedan.
Con cada refinamiento iterativo, se gana un dgito significativo.

3.4.

M
etodos Iterativos

Se llama metodos iterativos a aquellos metodos que comienzan con una semilla cualquiera, y van iterando alrededor de la matriz hasta obtener valores que se
acerquen al valor real de la solucion.
Si tenemos un valor asignado para cada una de las las componentes de ~x, el
valor de x~i estara dado por:
xi = (bi ai1 x1 ai2 x2 . . . aii1 xi1 aii+1 xi+1 . . . aiN xN )

3.4.1.

1
aii

(3.4.1)

M
etodo de Jacobi

Requiere una matriz que cumpla con ciertas condiciones. Por ejemplo, este
metodo puede utilizarse para matrices que sean diagonal dominante.
En primer lugar, es necesario tener una semilla con valores asignados para
cada una de las componentes. Por ejemplo, puede tomarse el valor 0 para todas
las componentes.
A continuacion se realiza una iteracion utilizando la ecuacion (3.4.1) y se encuentran nuevos valores para las componenetes. Y as.
La ecuacion que define a este metodo es:
(k+1)
xi

3.4.2.

1
=
aii

bi

i1
X

(k)
aij xj

j=1

N
X

!
(k)
aij xj

(3.4.2)

j=i+1

M
etodo de Gauss-Seidel

Es muy similar al metodo de Jacobi. La diferencia reside en que a medida que


va calculando los nuevos valores de las componentes, los va utilizando en el calculo
de la siguiente.
19

Miguel Angel Cifredo Campos


macifredo@gmail.com

3.4 Metodos Iterativos

La ecuacion que lo define es:


(k+1)

xi

3.4.3.

1
aii

bi

i1
X

(k+1)

aij xj

N
X

!
(k)

aij xj

(3.4.3)

j=i+1

j=1

M
etodo SOR

Este metodo esta dado por la ecuacion:


(
!
)
N
i1
X
X
1
(k+1)
(k)
(k)
(k+1)
(k)
=
xi
aij xj

xi
aij xj
+ xi
bi
aii
j=i+1
j=1

(3.4.4)

Donde es el factor de aceleracion o frenado. Cuando = 1, esta ecuacion


es equivalente a la (3.4.3). Cuando > 1 el metodo esta sobre relajado y cuando
< 1, esta sub relajado.

3.4.4.

An
alisis de los m
etodos iterativos

Para analizar los metodos explicados, vamos a utilizar una descomposicion de


la matriz A = L + D U . Buscando obtener siempre una ecuacion de la forma
~
~x(k+1) = T ~x(k) + C.
La descomposicion sera tal que L es la matriz que tiene los valores recprocos
de A por debajo de la diagonal y cero en las otras posiciones.
U es la matriz que tiene los valores recprocos de A por encima de la diagonal
y cero en las otras posiciones.
Y D es la matriz que tiene los valores de la diagonal de A, y cero en las otras
posiciones.
De esta manera, la formula para el metodo de Jacobi estara dada por:
~ + L~x(k) + U~x(k)
D~x(k+1) = B
1 ~
~x(k+1) = D1 (L + U ) ~x(k) + D
| {z B}
|
{z
}
TJ

CJ

La formula para el metodo de Gauss-Seidel:


~ + L~x(k+1) + U~x(k)
D~x(k+1) = B
~ + U~x(k)
(D L)~x(k+1) = B
~
~x(k+1) = (D L)1 U ~x(k) + (D L)1 B
|
{z
}
|
{z
}
TGS

CGS

En el caso del metodo SOR es mas difcil obtener la formula deseada, de manera
que se expresan los valores T y C , que dependen del factor de aceleracion:
T = (D L)1 [(1 )D + U ]
~
C = (D L)1 B
20

Miguel Angel Cifredo Campos


macifredo@gmail.com

3.4 Metodos Iterativos

Convergencia
Si el sistema es convergente, va a llegar un punto en que ~x(k) = ~x(k+1) :
~x(k+1) ~x(k)
~e(k+1)
~e(k+1)
~e(k+1)

=
=
=
=

T (~x(k) ~x(k1) )
T~e(k)
T (T~e(k1) )
T k+1~e(0)

Donde ~e(k+1) es el error de truncamiento y ~e(0) es el error de arranque. De esta


forma, podemos acotar el error de truncamiento:
k~e(k+1) k kT k+1 k k~e(0) k
k~e(k+1) k kT kk+1 k~e(0) k
Es decir que el sistema sera convergente siempre y cuando kT k < 1.
Autovectores
Si ahora tenemos en cuenta los autovectores de la matriz, dados por A~x = ~x.
PN
i V i
~e(0) = ~x(0) x =
i=1

PN
(k+1)
k+1 (0)
k+1

V
~e
= T ~e
= T
i=1 i i
Utilizando los autovectores puedo demostrar que el metodo de Gauss-Seidel
converge mas rapidamente que el de Jacobi.

21

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 4
Ecuaciones No Lineales
Se trata de buscar las races que hacen que F (x) = 0, de ecuaciones que no son
lineales.
Teorema: sup F (x) C 0 [a0 , b0 ]F (a0 )F (b0 ) < 0 F (k ) = 0
para un n
umero impar de valores xk [a0 , b0 ]

(4.0.1)

En este caso, vamos a trabajar con la hipotesis de que en el intervalo en el cual


estamos operando hay una sola raz.

4.1.

M
etodo de la bisecci
on

El metodo de la biseccion consta de tres pasos:


1. Partir el intervalo en dos:
mk+1 =

ak + b k
2

2. Localizar el intervalo en que la funcion cambia de signo:


F (ak )F (mk+1 ) < 0 o F (mk+1 )F (bk ) < 0
3. Seleccionar ese intervalo para la proxima iteracion:

[ak , mk+1 ] si F (ak )F (mk+1 ) < 0
Ik+1 = [ak+1 , bk+1 ] =
[mk+1 , bk ] si F (ak )F (mk+1 ) > 0
Propiedades
1. Por construccion, se cumple que F (ak )F (bk ) < 0 k
2. Luego de N pasos, se cumple que: [aN , bN ] y ademas, la longitud del
0
intervalo IN es b02a
N .
22

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.1 Metodo de la biseccion

4.1.1.

Ejemplo

Se sabe que la funcion F (x) = x3 + 4x2 10 tiene una sola raz en el intervalo
I = [1, 2]. En primer lugar, evaluamos la funcion en ambos extremos:
F (1) = 1 + 4 10 = 5
F (2) = 8 + 16 10 = 14
A continuacion, vamos operando siguiendo los pasos indicados:
ak
1
1
1.25
1.25
1.3125
1.34375
1.359375

4.1.2.

bk
F (ak ) F (bk )
2
-5
14
1.5
-5
2.375
1.5
-1.8
2.375
1.375 -1.8
0.16
1.375 -0.84
0.16
1.375 -0.35
0.16
1.375 -0.10
0.16

mk+1
F (mk+1 )
1.5
2.375
1.25
-1.8
1.375
0.16
1.3125
-0.84
1.34375
-0.35
1.359375
-0.10
1.3671875
-0.03

Error de truncamiento

El error mas com


un es el de truncamiento. Se puede dar el caso en el que se
encuentre el valor exacto de , pero muchas veces simplemente se contin
ua con la
iteracion hasta que una determinada cantidad de dgitos de la operacion F (mk+1 )
sea cero.
Si mk+1 es una estimacion de , tenemos que:
= mk+1 k+1
b k ak
k+1 =
2
b 0 a0
(4.1.1)
k+1 =
2k+1
Es importante tener en cuenta que la cota de error de truncamiento no depende
de la funcion que se esta analizando.

4.1.3.

Error de redondeo

Puede suceder que al evaluar la funcion en alguno de los puntos, se cometa


un error de redondeo, de modo que F (xk ) = F (xk ) ek . Lo importante es poder
garantizar que el signo de F (xk ) sea el mismo que el signo de F (xk ). Para poder
garantizarlo, ek debe ser menor que mn(|F (ak )|, |F (ak )|).

4.1.4.

Convergencia

Analizando la ecuacion (4.1.1), podemos observar que:


b0 a0 k
0
2k+1
Es decir, el metodo de la biseccion converge incondicionalmente.
k+1 =

(4.1.2)

23

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.2 Metodo de Regula-Falsi

4.2.

M
etodo de Regula-Falsi

Este metodo es un poco mas inteligente. En el caso del metodo de la biseccion, puede suceder que se este muy cerca de la raz buscada, pero al siguiente
paso se aleje mucho. El metodo de Regula-Falsi contin
ua acercandose a la raz
constantemente.
Para lograr esto, se utiliza una expresion bastante mas compleja para el termino
mk+1 :


F (ak )
(4.2.1)
mk+1 = ak (bk ak )
F (bk ) F (ak )

4.2.1.

Ejemplo

Consideramos la misma funcion que se evaluo en el ejemplo del metodo de la


biseccion.
ak
bk
1
2
1.263 2
2
1.34
1.358 2
1.363 2
1.365 2
1.3652 2

F (ak ) F (bk )
mk+1
F (mk+1 )
-5
14
1.263
-1.60
-1.60
14
1.34
-0.41
-0.41
14
1.358
-0.12
-0.12
14
1.363
-0.04
-0.04
14
1.365
-0.004
-0.004
14
1.3652
-0.0005
-0.0005
14
1.36522 -0.0002

Podemos ver que en la misma cantidad de pasos, el metodo de Regula Falsi ha


llegado mucho mas cerca de la raz que el metodo de la biseccion.

4.2.2.

Convergencia

Al igual que el metodo de la biseccion, el metodo de Regula Falsi converge


siempre, con k .

4.2.3.

Errores

De Truncamiento
Si f 6= 0y C, entonces podemos acotar el error de truncamiento con la
siguiente inecuacion:
|mk+1 | |mk+1 mk |
De Redondeo
Si llamamos Ek+1 una cota del error absoluto producido a causa del redondeo,
podemos introducir esta cota en la inecuacion anterior:
|mk+1 | |mk+1 mk | + 2Ek+1
24

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.3 Metodo del punto fijo

4.3.

M
etodo del punto fijo

Definimos una funcion g(x) = x qF (x). Y llamamos punto fijo de g, al punto


que satisface g() = . Al analizar lo que significa que se punto fijo de g(x),
llegamos a la conclusion de que es raz de F (x):
g() = qF ()
= qF ()
F () = 0

Teorema:
g(x) C[a, b]; g(x) [a, b] x [a, b] / g() =

(4.3.1)

Adem
as:
g 0 (x) [a, b]; k/ 0 < k < 1; |g 0 (x)| k x [a, b]
es u
nico

(4.3.2)

La tecnica que este metodo propone consiste en elegir una semilla, con alguno
de los metodos de arranque, y luego iterar alrededor de esa semilla, tomandola
como aproximacion al punto fijo.
xk+1 = g(xk )

4.3.1.

(4.3.3)

Ejemplo

Se resuelve a continuacion el mismo ejemplo elegido para los dos metodos anteriores, es decir, F (x) = x3 + 4x2 10, buscando una raz en el intervalo [1, 2].
Construcci
on de la funci
on g(x)
La eleccion de la funcion g(x) a utilizar es muy importante, ya que de esta
funcion dependera que el metodo converja rapidamente, lentamente, o no converja
nunca.
Hay muchas formas de construir estas funciones. En primer lugar, podemos
utilizar la formula: g(x) = x qF (x) y elegir alg
un valor determinado para q,
como por ejemplo, q = 1. Por otro lado, podemos igualar F (x) = 0 y despejar x
de alguna manera, hasta obtener una ecuacion de la forma x = g(x). Otra tecnica
que se puede aplicar cuando F (x) se puede derivar, es hacer: g(x) = x FF0(x)
.
(x)
1. Caso mas simple:
g1 (x) = x F (x)
g1 (x) = x3 4x2 + x + 10
25

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.3 Metodo del punto fijo

2. Despejando:
x3 = 10 4x2
10
4x2
x2 =
x
r
10
4x2
g2 (x) =
x
3. Otro despeje:
3
4x2 = 10
rx
10 x3
g3 (x) =
4

4. Otro despeje posible:


x2 (x + 4) = 10
10
(x + 4)
r
10
g4 (x) =
x+4
x2 =

5. Utilizando la derivada:
F (x)
F 0 (x)
x3 + 4x2 10
g5 (x) = x
3x2 + 8x

g5 (x) = x

Tablas de valores
Una vez que tenemos las funciones g(x) que vamos a utilizar, tenemos que
aplicarlas para ver cual funciona mejor.
k g1 (x)
g2 (x)
g3 (x) g4 (x)
0
1,5
1,5
1,5
1,5
0,81
...
...
1 0,87
2
6,7
2,99
...
...
3 470 ERROR
...
...
4
...
...
...
25
5 10
...
...
...
...
...
...
11
...
...

...
...
...
31
...

g5 (x)
1,5
1,373
1,3634
1,3652
1,36523

De los resultados podemos concluir que las dos primeras funciones elegidas
no converjen, las siguientes dos converjen lentamente, y la u
ltima converje muy
rapidamente.
26

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.3 Metodo del punto fijo

4.3.2.

Convergencia

Si se cumplen las condiciones indicadas en las ecuaciones (4.3.1) y (4.3.2),


tambien se cumple que:
x0 [a, b] xk+1 = g(xk )/ ! lm g(xk ) = [a, b].
k

(4.3.4)

Al analizar la funcion g1 (x), que en el ejercicio realizado no produjo una suce/


sion convergente, vemos que: g10 (x) = 3x2 8x + 1, de modo que |g10 (1)| = 10
0
[1, 2]. Es decir que no la condicion de que g (x) [a, b] x [a, b], expresada por
la ecuacion (4.3.2).
Suele suceder cuando se utilizan los metodos no lineales, que haya intervalos
para los que una funcion converge, y otros intervalos para los que no converge.

4.3.3.

Corolarios para la elegir la funci


on m
as veloz

Cota para el error absoluto


|xn | k n max(x0 a, b x0 )

(4.3.5)

Con un k cercano a cero, converge muy rapidamente. Si, en cambio, k es cercano


a uno, converge lentamente.
Orden de convergencia - Constante asint
otica de error
Definimos P , orden de convergencia y C, constante asintotica de error, de forma
que:
ek + 1
lm
=C
(4.3.6)
k
ePk
Es decir que, en el lmite, ln ek+1 = ln C + p ln ek .
Ahora, aplicamos estas definiciones al metodo del punto fijo.
xk+1 = g(xk )
xk+1 = g(xk )
xk+1 = g(xk ) g()
Utilizando el desarrollo de Taylor alrededor de , aplicado en xk , (xk , ),
se obtiene:
g(xk )
xk+1
xk+1
ek+1
ek+1
ek

=
=
=
=

g() + (xk )g 0 ()
g() + (xk )g 0 () g()
(xk )g 0 ()
ek g 0 ()

= g 0 ()
27

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.3 Metodo del punto fijo

De modo que el orden de convergencia de este metodo es p = 1, es decir que el


error cometido se reduce linealmente en cada paso. Y la constante asintotica del
error es g 0 ().
En el caso en que g 0 () = 0, sera necesario tomar un termino mas de la serie
de Taylor. Volviendo a aplicar los pasos anteriores:
(xk )2 00
g ()
2
(xk )2 00
xk+1 =
g ()
2
ek+1
= g 00 ()
e2k
g(xk ) = g() +

De modo que, en este caso el orden de convergencia de este metodo es p = 2, y


por lo tanto el error se reduce en forma cuadratica. Por otro lado, la la constante
asintotica del error es g 00 ().

4.3.4.

Error de truncamiento

Se analiza a continuacion el error que se comete al truncar la sucesion en el


termino xk .
(xk )g 0 ()
g 0 ()(xk xk+1 + xk+1 )
g 0 ()(xk xk+1 ) + g 0 ()(xk+1 )
g 0 ()(xk xk+1 )
g 0 ()
(xk xk+1 )
xk+1 =
1 g 0 ()

xk+1
xk+1
xk+1
(1 g 0 ())(xk+1 )

=
=
=
=

Teniendo en cuenta las condiciones planteadas en la ecuacion (4.3.2), su puede


afirmar que |g 0 (x)| K. Por lo tanto, se puede acotar el error de truncamiento
con la siguiente expresion.
K
|xk+1 xk |
(4.3.7)
1K
Es decir que, cuando mas cercano a cero sea K, mas rapida sera la converengencia de la sucesion.
|xk+1 |

4.3.5.

Error de redondeo

Llamamos k al error de redondeo cometido en el paso k. Este valor es tal, que


|deltak | .
xk+1 = g(xk ) g() + k
K

|xk+1 |
|xk+1 xk | +
1K
1K

(4.3.8)
(4.3.9)
(4.3.10)
28

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.4 Metodo de Newton Raphson

Es importante notar que el valor k tiende a ser mucho menor que el error de
truncamiento.

4.4.

M
etodo de Newton Raphson

Este metodo consiste en construir una buena funcion para utilizar con el metodo
de punto fijo. De tal manera que se consiga orden de convergencia cuadratico.
Para llegar a obetener esa expresion, se analiza el desarrollo de Taylor de la
funcion F (x) alrededor del punto x, y luego alrededor del punto .
1
F (
x) = F (x) + (
x x)F 0 (x) + (
x x)2 F 00 ()
2
1
0
F () = 0 = F (x) + ( x)F (x) + ( x)2 F 00 ()
2
Tomando un x cercano a , se puede eliminar el tercer termino de la serie,
dejandolo como cota del error de truncamiento cometido. De modo que podemos
obtener una expresion para .
F (x) = +( x)F 0 (x) +
F (x)
x 0
=
F (x)
As se llega a la expresion recursiva que en el ejercicio efectuado con el metodo
de punto fijo logro una convergencia muy veloz.
xk+1 = xk

4.4.1.

F (xk )
F 0 (xk )

(4.4.1)

Condiciones de convergencia

Para que esta sucesion recursiva sea convergente, sera necesario que se cumplan
las siguientes condiciones.
1. g(x) [a, b] x [a, b]
2. F 0 (x) 6= 0 [a, b], ya que es el denominador de la funcion.
3. F 00 (x), pues es necesaria para que exista g 0 (x).
00

(x)
|<1
4. g 0 (x) = | F (x)F
F 0 (x)2

4.4.2.

Orden de convergencia

Continuando con el analisis realizado para el metodo del punto fijo, se puede
observar que, al aplicar a g 0 (x), se obtiene el valor g 0 () = 0, lo que nos indica
29

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.5 Metodo de la secante

que el orden de convergencia es cuadratico.


F (x)F 00 (x)
F 0 (x)2
F ()F 00 ()
g 0 () =
F 0 ()2
0 F 00 ()
0
g () =
=0
F 0 ()2
g 0 (x) =

4.5.

M
etodo de la secante

El metodo de la secante es similar al metodo de Newton Raphson, la diferencia


reside en que en lugar de utilizar la derivada de la funcion, se la aproxima mediante
diferencias. De esta forma, es posible realizar los calculos mediante una computadora, sin tener que agregar programacion especial para calcular la derivada.
La ecuacion de la secante sera:
F 0 (xk ) =

F (xk ) F (xk1 )
xk xk1

(4.5.1)

Y la ecuacion de xk+1 , sera:


xk+1 = xk

F (xk )(xk xk1 )


F (xk ) F (xk1 )

(4.5.2)

La desventaja de este metodo es que se pierde el orden 2 de convergencia que


se consegua con el metodo de Newton Raphson. Es un metodo intermedio, que
tiene un orden de convergencia 1 < p < 2, llamado super lineal.

4.6.

Res
umen de los distintos m
etodos

Metodo
Tablas / Graficos
Biseccion
Regula-Falsi
Punto fijo
Newton-Raphson
Secante

Ventajas
Inmediato
Muy facil de implementar.
Siempre converge
Es mas convergente
Facil aplicacion
Orden 2 (p = 2)

Desventajas
No tiene precision
Es lento

Es lento
Muchas condiciones
Se necesita mucha informacion y la derivada
No se calcula la derivada. Es Pierde el orden 2
muy rapido

30

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 5
Sistemas de ecuaciones no lineales
Los sistemas de ecuaciones no lineales que se analicen, seran de la forma:

F1 (x1 , . . . , xN ) = 0

F2 (x1 , . . . , xN ) = 0
F (~x) = 0
...

FN (x1 , . . . , xN ) = 0

5.1.

M
etodo del punto fijo

Para analizar estos sistemas, se utiliza un metodo analogo al de punto fijo,


utilizado para analizar ecuaciones no lineales. En este caso, se define un sistema
~ = .
~
de ecuaciones G(~x) = ~x F (~x) y un vector fijo ~ tal que G()
Teorema:
Se define un dominio D = {x/ ai < x bi 1 i N }.
Si se tiene G(~x) D <N ; tal que G(~x) D x D
Se puede afirmar
/ g() =

(5.1.1)

Si ademas, K < 1 tal que | gxi (x)


|< K
i, j, la sucesion ak+1 = G(~xk ) x0
N
j
D converge al u
nico punto fijo ~ D.
Corolario.
~
k~xk k

5.1.1.

Kk
kx1 x0 k
1K

(5.1.2)

Ejemplo

Para analizar el comportamiento de este metodo utilizaremos el siguiente sistema de ecuaciones no lineales.

x1 13 cos x2 = 13
F~ (~x) =
1 x1
e
+ x2 = 21
20
31

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 6
T
ecnicas de Ajuste
Las tecnicas de ajuste permiten tener una forma analitica de una funcion, a
partir de datos experimentales. Estan basadas en la teora lineal de aproximacion.

f (x) =

N
X

Cj j (x) = C0 0 (x) + C1 1 (x) + . . . + CN N (x)

(6.0.1)

j=0

Donde Cj son N + 1 incognitas, y j son N + 1 funciones preestablecidas.


Se tienen M + 1 datos, si se quiere que f pase por todos ellos, se formara un
sistema de ecuaciones lineales, con M + 1 ecuaciones y N + 1 incognitas. De modo
que :
N
X
f (xi ) =
Cj j (xi ) = f (i);
(6.0.2)
j=0

En el caso en que M < N , el problema queda indeterminado. Si, en cambio,


M = N , el problema suele tener una solucion u
nica (si j son li), que se obtiene
por interpolacion o colocacion.
Por u
ltimo, si se diera el caso en que M > N , el problema esta sobre determinado. Es necesario imponer alg
un criterio para poder resolverlo. Se denomina
ajuste al criterio qeu se aplica a un problema sobre determinado.

6.1.

Cuadrados mnimos

La idea del metodo de cuadrados mnimos consiste en tratar de minimizar los


errores cometidos utilzando errores cuadraticos.
ei = f (xi ) fi
M
M
X
X
e =
(fi f (xi ))2 =
e2i
i=0

i=0

Para poder minimizar el error que se comete, es necesario que definir un juego
de coeficientes Ck , que lleven al mnimo valor de e. Esto es posible lograrlo si
e
= 0 k = 0, . . . , N .
Ck
32

Miguel Angel Cifredo Campos


macifredo@gmail.com

6.1 Cuadrados mnimos

A continuacion, se opera con estas ecuaciones en busca de los valores correspondientes a los coeficientes Ck .
!
M
X

0 =
(fi f (xi ))2
Ck i=0

=
Ck

!#2

Cj j (xi )

j=0
{z
}

"
X
M

fi

i=0
|

N
X

Ri

M
X

M
X

Ri
2
Ri
=
Ri =
2Ri
Ck
Ck
i=0
i=0
i=0
"
!#
"
!#
M
N
N
X
X
X

=
2 fi
Cj j (xi )
fi
Cj j (xi )
Ck
i=0
j=0
j=0
"
!#
M
N
X
X
=
2 fi
Cj j (xi )
k (xi )

=
Ck

i=0

= 2

= 2

M
X

j=0
M
X

[fi k (xi )]

M X
N
X

i=0

i=0 j=0

M
X

N
X

[fi k (xi )]

i=0

!
Cj j (xi )k (xi )

"
Cj

M
X

j=0

= 2 f~ ~k

N
X



Cj ~j ~k

#!
j (xi )k (xi )

i=0

j=0

Finalmente, llegamos a un sistema de ecuaciones comunes, que utiliza el producto interno de los vectores. Este sistema tendra solucion si las funciones j son
li.
N
X

Cj

 

~
~
~
~
j k = f k ; k = 0, . . . , N

(6.1.1)

j=0

6.1.1.

Ejemplo

Se analizara el metodo de ajuste de cuadrados mnimos, teniendo la siguiente


tabla de valores.
1,5 1 0,5 0 0,5 1 1,5
x
f (x) 2,4 1,4 1,1 0,9 1,2 1,5 2,3
La funcion f propuesta es: f (x) = C0 + C1 ex + C2 ex . De modo que N = 2
y M = 6. Para resolver el sistema, sera necesario armar los vectores (x)
33

Miguel Angel Cifredo Campos


macifredo@gmail.com

6.1 Cuadrados mnimos

0j = 1
1j = exj
1j = exj

(0 , 0 )
(0 , 1 )
(0 , 2 )

~0 = (1, 1, 1, 1, 1, 1, 1)
~0 = (e1,5 , e1 , e0,5 , e0 , e0,5 , e1 , e1,5 )
~0 = (e1,5 , e1 , e0,5 , e0 , e0,5 , e1 , e1,5 )

(1 , 0 ) (2 , 0 )
c0
(f, 0 )
(1 , 1 ) (2 , 1 ) c1 (f, 1 )
(1 , 2 ) (2 , 2 )
c2
(f, 2 )

Reemplazando los valores de los vectores en la matriz, obtenemos el sistema de


ecuaciones que debemos resolver.

7
11,047 11,047
c0
10,8
11,047 31,749
c1 18,983
7
11,047
7
31,749
c2
19,069
La solucion a este sistema es: C0 = 0,0689, C1 = 0,5089, C2 = 0,5124. De
modo que la funcion final es: f (x) = 0,0689 + 0,5089ex + 0,5124ex . Se puede
corroborar que realmente esta es una buena funcion de ajuste para los datos dados,
calculando la norma del error cometido.
ei = fi f (xi )
kek = 0,18
kek
4%
kf k

6.1.2.

Casos especiales

Cuando las funciones j son ortogonales, la matriz obtenida es una matriz


(f,k )
diagonal. Es decir que, los valores de Ck podran obtenerse como Ck = (
, si se
j ,j )
cumple que:

= 0 j 6= k
(j , k ) =
6= 0 j = k
Si, ademas, el sistema es ortonormal ((j , j ) = 1, se deduce que Ck = (f, k ).

6.1.3.

Polinomios

Si se quiere tomar una f (x) = AxP , no es posible utilizar el metodo planteado,


porque tanto A como P son incognitas. Sin embargo, utilizando el logaritmo, es
posible encontrar los valores.
ln f (xj ) = |{z}
P ln xj + |{z}
ln A
| {z }
|{z}
yj

C1

zj

C0

En este contexto, es posible resolver el problema con ajuste en escala lineal.


Una vez realizado el ajuste, A = eC0 y P = C1 .
34

Miguel Angel Cifredo Campos


macifredo@gmail.com

6.2 Ajuste de funciones a traves de polinomios

6.2.

Ajuste de funciones a trav


es de polinomios

Muchas veces se utiliza el ajuste a traves de un polinomio para estudiar funciones mas complejas, como el seno o el coseno, ya que el polinomio es mucho mas
sencillo de trabajar. En este caso, no se trata de ajustar 3 o mas puntos, sino de
ajustar la funcion completa.
P
k
Teorema de Weirstrass: el polinomio sera de la forma PN (x) = N
k=0 ak x ,
y la funcion que se quiera aproximar mediante el polinomio sera f (x) C[a, b]. El
ajuste se realizara de modo tal que el error E(x) = f (x) P (x), tienda a cero a
medida que el grado N del polinomio tiende a .
Es decir que cuanto mayor sea el grado del polinomio que se utiliza para aproximar la funcion, mejor sera la aproximacion que se realiza. Pero como se trabaja
con problemas numericos, N no puede ser , de modo que se toman N + 1 datos.
Para minimizar el error, tenemos en cuenta que la derivada en cada uno de los
E
= 0 j):
puntos debe anularse ( a
j
De modo que:
!2
Z b
N
X
f (x)
aK xK dx
E(a0 , . . . , aN ) =
a

k=0
b

f 2 (x)dx 2

E =

f (x)
a

E
aj

N
X

Z
= 02

f (x)xj dx + 2

0 =

N
X

xj

b
j

f (x)x dx +
a

N
X
k=0

k=0

aK xK dx +

N
X

!2
aK xK

dx

k=0

!
aK x K

dx

k=0

Z
aK

j+K


dx

De modo que los coeficientes necesarios se pueden encontrar utilizando la siguiente ecuacion.
Z b

Z b
N
X
j+K
j
f (x)x dx =
aK
x
dx
(6.2.1)
a
a
k=0
|
{z
}
Hj+1,k+1

La matriz H es la matriz de Hilbert. No depende del problema, sino u


nicamente
de los coeficientes a y b. Es una matriz mal condicionada.
Hj+1,k+1 =

6.2.1.

bk+j+1 ak+j+1
j+k+1

(6.2.2)

Ejemplo

Se quiere determinar el polinomio PM (x), que coincida con la funcion f (xi ) =


fi , en M + 1 puntos de una grilla. En primer lugar, se puede decir que el polinomio
existe y es u
nico. Es el polinomio que anula a la funcion error en ese intervalo.
! p(x)/ p(x) = C0 + C1 (x x0 ) + C2 (x x0 )(x x1 )
+ . . . + CM (x x0 )(x x1 ) . . . (x xM 1 )
35

Miguel Angel Cifredo Campos


macifredo@gmail.com

6.2 Ajuste de funciones a traves de polinomios


Si f (x) C N +1 [a, b], y p(x) PN (x), se puede afirmar que p(xi ) = f (xi ). Y
por lo tanto, el error estara dado por: e(x) = f (x) p(x), que puede ser acotado
por la siguiente expresion.
e(x) =
Al termino

6.2.2.

f (N +1) ()
(M +1)!

f (N +1) ()
(x x0 )...(x xM )
(M + 1)!

(6.2.3)

lo identificamos como A(). [a, b].

Polinomio de Taylor

Desarrolla la funcion alrededor de un punto x, no interpola M + 1 puntos, sino


solamente 1.

6.2.3.

Interpolaci
on de Lagrange

La Interpolacion de Lagrange es una tecnica alternativa de definir los coeficienes, teniendo en cuenta que f (xi ) = fi .




x x1
x x0
p(x) =
f0 +
f1 = L0 f0 + L1 f1
(6.2.4)
x0 x1
x1 x0
|
{z
}
|
{z
}
L0

L1

L0 y L1 son dos polinomios de Lagrange. Tengase en cuenta que no son coeficientes, sino polinomios en s, que se combinan para formar el polinomio interpolador de Lagrange. Estos polinomios cumplen con las siguientes propiedades:
L0 (x0 ) = L1 (x1 ) = 1 y L0 (x1 ) = L1 (x0 ) = 0.
Generalizaci
on para N + 1 puntos
Es posible encontrar los polinomios de Lagrange para cualquier cantidad de
puntos, utilizando la siguiente ecuacion.
N
Y

x xi
LN k (x) =
xk xi
i=0;i6=k




6 k
LN k (xj ) = 0 j =

1 j=k

(6.2.5)

Es decir que el polinomio se anula en todos los puntos excepto en el que j = k.


Definici
on
Sea f una funcion definida en x0 , . . . , xN , que conforman N +1 puntos distintos,
!p(x) PM (x) con M N , tal que f (xk ) = p(xk ), para k = 0, . . . , N . El
polinomio interpolante con la tecnica de Lagrange sera:
p(x) =

N
X

fk LN k (x)

(6.2.6)

k=0

36

Miguel Angel Cifredo Campos


macifredo@gmail.com

6.2 Ajuste de funciones a traves de polinomios

Ejemplo
Se desea construir un polinomio interpolador para los siguientes datos.

k
xk
fk

0
1
2
0,25 0,5 0,75
1
1
1
2
2

Sera necesario contar con tres polinomios de Lagrange para poder construir el
polinomio interpolador.

2
Y

x xi
x0 xi
i=0;i6=0



x 0,5
x 0,75
L0 (x) =
0,25 0,5
0,25 0,75
2
L0 (x) = 8x 10x + 3
L0 (x) =

2
Y

x xi
x1 xi
i=0;i6=1



x 0,25
x 0,75
L1 (x) =
0,5 0,25
0,5 0,75
2
L1 (x) = 16x + 16x 3
L1 (x) =

2
Y

x xi
x2 xi
i=0;i6=2



x 0,25
x 0,5
L2 (x) =
0,75 0,25
0,75 0,5
2
L2 (x) = 8x 6x + 1
L2 (x) =

Una vez obtenidos los tres polinomios se colocan en la ecuacion (6.2.6), para
obtener la ecuacion general del polinomio interpolador de Lagrange.

pL (x) = L0 (x)f0 + L1 (x)f1 + L2 (x)f2


8x2 10x + 3
8x2 6x + 1

pL (x) =
16x2 + 16x 3 +
2
2
1
1
4
pL (x) = 16x2 ( 1) + 16x(1 ) + ( 3)
2
2
2
37

Miguel Angel Cifredo Campos


macifredo@gmail.com

6.2 Ajuste de funciones a traves de polinomios

6.2.4.

Interpolaci
on de Newton
f (x) = C0 + C1 (x x0 ) + C2 (x x0 )(x x1 )
+ . . . + CN (x x0 )(x x1 ) . . . (x xM 1 )
+A(x)(x x0 )(x x1 ) . . . (x xM 1 )
m+1

f ()
1
A(x) = d dxm+1
(M +1)!
f (x0 ) = C0

Notaci
on de diferencia dividida
f (x) f (x0 )
= C1 + C2 (x x1 ) + . . . +
x x0
CN (x x1 ) . . . (x xM 1 ) + A(x)(x x1 ) . . . (x xM 1 )

f [x0 , x] =

f [x0 , x1 ] = C1
f [x0 , x1 , x] =

f [x0 , x1 ] C1
= C2 + C3 (x x2 ) + . . .
x x1

Generalizaci
on
f [x0 , x1 , . . . , xk , x] =

p(x) = f0 +

M
X

f [x0 , x1 , . . . , xk1 ] f [x0 , x1 , . . . , xk ]


x xk

f [x0 , x1 , . . . , xj ](x x0 )(x x1 ) . . . (x xj1 )

j=1

R = f (x) p(x) = f0 + f [x0 , x1 , . . . , xM , x](x x0 )(x x1 ) . . . (x xM )


Ejemplo
Se desea realizar una interpolacion de Newton con los siguientes datos.
k
xk
fk

0
0,25
1
2

1
0,5
1
1 1

2
0,75
1
2
1

2
2
f [xj , xk ]
0,50,25
0,750,5




Es decir que , f [x0 , x1 ] = 4 1 12 , y f [x1 , x2 ] = 4 12 1 . La expresion
para f [x0 , x1 , x2 ], en este caso, sera:






4 12 1 4 1 12
1
f [x0 , x1 , x2 ] =
= 16 1
0,75 0,25
2

38

Miguel Angel Cifredo Campos


macifredo@gmail.com

6.2 Ajuste de funciones a traves de polinomios

Finalmente, el polinomio interpolante obtenido sera:






1
1
1
p(x) = + 4 1 (x 0,25) 4 1 (x 0,25)(x 0,5)
2
2
2

6.2.5.

Interpolaci
on de Hermite

La interpolacion de Hermite su utiliza cuando se posee informacion de f y de


su derivada.
Sea f C 0 [a, b], x0 , . . . , xN [a, b], y x= 6= x1 6= . . . 6= xN , !P de mnimo
grado, que coincide con f y f 0 en x0 , . . . , xN . Se trata de un polinomio cuyo grado
es, a lo sumo, 2N + 1, y esta dado por la siguiente ecuacion.
H2M +1 (x) =

M
X

fj HM j (x) +

j=0

M
X

M j (x)
fj0 H

(6.2.7)

j=0

M j (x) estan definidas por las siguientes ecuaciones.


Donde, HM j (x) y H


HM j (x) 1 2(x xj )L0M j (xj ) L2M j (x)
M j (x) (x xj )L2 (x)
H
Mj
Metodologa
1. Construir el polinomio de Lagrange: L0 , L1 , . . . , LN .
2. Derivar L00 , L01 , . . . , L0N .
3. Construir HM j .
Mj.
4. Construir H
5. Construir H2M +1 .
Ejemplo
En el siguiente ejemplo, M = 1, y el polinomio de Hermite que se busca es,
por lo tanto, H3 .

df
xi fi dx
i
0 0
1
1 3
6
1. L0 =

x1
01

= 1 x y L1 =

x0
10

=x

2. L00 = 1, L01 = 1.
3. H10 = (1 2x(1)) (1 x)2 = 2x3 3x2 + 4x 1.
H11 = (1 2(x 1)) x2 = 2x3 + 3x2 .
39

Miguel Angel Cifredo Campos


macifredo@gmail.com

6.2 Ajuste de funciones a traves de polinomios


10 = (x 0)(1 x)2 = x3 2x2 + x.
4. H
11 = (x 1)x2 = x3 x2 .
H
5. H3 = 0 H10 (x) + 3(2x3 + 3x2 ) + 1(x3 2x2 + x) + 6(x3 x2 ) = x3 + x2 + x.
A continuacion, se comprueba que el polinomio obtenido coincida verdaderamente con los valores tanto de la funcion como de la derivada. H3 (0) = 0 y
H3 (1) = 3. H30 (0) = 1 y H3 (1) = 6.

6.2.6.

Fen
omeno de Runge

El fenomeno de Runge ocurre en los casos en los que se calcula un polinomio de


un grado alto (10, por ejemplo) de una funcion buena. Cerca del centro de la funcion
se hace una buena aproximacion, pero a medida que el polinomio se va alejando, la
aproximacion es cada vez peor, ya que aparecen ondas que se diferencian en gran
medida de la funcion.
La solucion a este problema es cambiar la escala de las abcisas, es decir, no
utilizar puntos equidistantes, sino las abcisas de Tcheby Cheff. En un intervalo
normalizado I = [1, 1] con una cantidad de M puntos, las abcisas equidistantes
2i
, pero las abcisas de Tcheby Cheff seran:
estaran dadas por xi = 1 + M


2i + 1
xi = cos
(6.2.8)
M +12
Una vez obtenidas las abcisas adecuadas, la interpolacion se realiza utilizando
el polinomio de Tcheby Cheff.
TM (x) = cos (M arc cos(x))

(6.2.9)

Si M = 0, la ecuacion (6.2.9) es equivalente a T0 = cos(0) = 1. Mientras que si


M = 1, la misma ecuacion sera T1 = cos(arc cos(x)) = x. Finalmente, si M = 2,
T2 = cos(2 arc cos(x)) = 2x2 1
Interpolaci
on de la funci
on exponencial
Se desea realizar una interpolacion de la funcion exponencial en el intervalo
[0, 1], con distintas metodologas. Se analiza el error que se comete en cada uno de
los metodos.
Taylor, es una buena aproximacion alrededor del punto cero, pero es muy
mala en los extremos.
Lagrange, es una mejor aproximacion, cuyo error vale cero en los puntos 0,
0,5 y 1, donde se tomaron las muestras.
Tcheby cheff, el error no vale cero en los extremos, pero es el que presenta
la banda de error mas peque
na.

40

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 7
Integraci
on
En este captulo se estudian diversas tecnicas Rde integracion numerica. El prob
blema a resolver sera siempre de la forma I = a f (x)d(x), contara con N + 1
puntos, que delimitaran N intervalos. Las operaciones que se realicen con esos
puntos marcaran las diferencias entre una tecnica y otra.
El primero de los puntos sera x0 = a, mientras que el punto final sera xN = b.
es el
Cada uno de los puntos comprendidos sera xi = x0 + iH, donde H = ba
N
ancho de cada uno de los intervalos.

7.1.

Cuadratura Num
erica

El metodo basico para calcular integrales definidas es el metodo de cuadratura.


En este metodo, se multiplica la altura de la funcion en cada uno de los puntos
por el ancho de cada uno de los intervalos.
Z

f (x)dx
a

7.2.

N
X

Hf (xi )

(7.1.1)

i=0

Rect
angulos

En la tecnica de los rectangulos, se toma el punto medio del intervalo como su


altura y se lo multiplica por el intervalo para obtener el area de ese rectangulo.

I RH =

N
X
i=1

RH = H

h
H f (xi )
2

N
X

fi h
2

i=1

41

Miguel Angel Cifredo Campos


macifredo@gmail.com

7.2 Rectangulos

7.2.1.

Errores

El error absoluto que se comete al utilizar la aproximacion de RH , estara dado


por las siguientes ecuaciones.
EA = |RH I| =

N
X

Ii nIi

i=1

xi

Ii =
xi1


H
f (xi ) f (x) dx
2

Para analizar el significado de estas expresiones, se desarrolla el polinomio de


Taylor de la funcion f (x) alrededor del punto xi H2 .
f (x) = f (xi

H
H
H
f ()
H
) + f 0 (xi )(x (xi ) +
(x (xi ))2
2
2
2
2
2

Luego se utiliza ese desarrollo en serie dentro de la integral anterior, retirando


el termino en , para ser usado mas adelante.


Z xi
H
H
0
Ii =
f (xi )(x (xi ) dx
2
2
xi1

xi
i
x
H
H
H x2
0
0
f (xi )(xi )x
= f (xi )
2 2 xi1
2
2
xi1
H x2i
H (xi1 )2
) f 0 (xi )
2 2
2
2
H
H
H
H
0
0
f (xi )(xi )xi + f (xi )(xi )(xi1 )
2
2
2
2
= 0

= f 0 (xi

Ahora, para acotar el error absoluto, se utiliza el termino de la segunda derivada, que sera la verdaderamente importante.

Z xi 00
}|
{
z
f ()
Ii =
x (xi H2 ) dx
2
| {z }
xi1

H
;
2

Ii
Ii

= xi
= x ; xi =
00
|f [a, b]| M2
Z H
f 00 () 2 2
=
u du
2
H
2
!
3
H3
00
H2
f () 2
=

2
3
3

Ii

H
;
2

xi1 = H2

M2 H 3
2 12

EA = RH I nIi

(b a) M2 H 3
(b a)(M2 H 2 )
=
H
24
24
42

Miguel Angel Cifredo Campos


macifredo@gmail.com

7.3 Trapecio

En conclusion, el error de truncamiento al utilizar el metodo de los rectangulos,


es de orden 2. Mientras que el grado de precision es 1, es decir que un polinomio
de grado 1 puede ser acotado con precision.

7.3.

Trapecio

El metodo del trapecio utiliza los puntos de inicio y final de cada intervalo
para obtener rectas interpolantes, de modo que el area que se calcula para cada
intervalo no es el area de un rectangulo, sino el area de un trapecio.
Se deduce a continuacion la formula para calcular la integral numerica utilizando este metodo. Partiendo del calculo de cada una de las areas como la suma
de un rectangulo y un triangulo.
I TH =
=

N
X
i=0
N
X
i=0
N
X

f (xi )H + (f (xi+1 ) f (xi )) H2




f (xi+1 ) f (xi )

H f (xi ) +
2
2
H
2

(f (xi ) + f (xi+1 ))

i=0

"

I TH

N 1

f0 + fN X
= H
+
fi
2
i=1

Es decir, en el u
ltimo paso se han agrupado todas las apariciones duplicadas
de f (xi ), ya que solamente f0 y fN aparecen una sola vez en la sumatoria.

7.3.1.

Error

El error en este metodo esta acotado por la siguiente ecuacion.


EA

7.4.

(b a)
M2 H 2
12

(7.3.1)

Simpson

Existen dos versiones del metodo del Simpson. La forma simple consiste en
dos intervalos u
nicamente, la forma compuesta consiste en una cantidad par de
intervalos.
La ecuacion para el metodo simple sera la siguiente.
H
[f0 + 4f1 + f2 ]
3
La ecuacion para el metodo complejo sera la siguiente.

N
N
1
2
2
X
X
H
f2i + 4
f2i
S(h) =
f0 + 4fN + 2
3
i=1
i=1
I S(h) =

(7.4.1)

(7.4.2)

43

Miguel Angel Cifredo Campos


macifredo@gmail.com

7.5 Extrapolacion de Richardson

7.4.1.

Error

El error absoluto que se comete al utilizar este metodo esta dado por la siguiente
ecuacion.
(b a)
EA
M4 H 4
(7.4.3)
180
Es decir que con este metodo podemos integrar hasta una funcion c
ubica sin
error.

7.5.

Extrapolaci
on de Richardson

Llamamos F (H) a una funcion que se utiliza para realizar la integracion numerica, utilizando un paso de tama
no H.
Teniendo en cuenta que el paso que vamos a utilizar para los caculos tiene un
valor H, a medida que H se hace mas peque
no, el esfuerzo de calculo es mayor, y
tambien son mayores los errores de redondeo.
El error que se comete en cada caso, es el que determina el orden del metodo.
Es decir, F = FH + ET , donde ET = O(H P ). Siempre que se conozca el orden del
metodo es posible utilizar la extrapolacion de Richardson.
El efecto que produce la extrapolacion de Richardson es correjir el error de
truncamiento, teniendo en cuenta el orden.
En las ecuaciones siguientes, H 0, R > P , y se conoce el valor exacto de a0 .
F (H1 ) = a0 + a1 H1P + O(H1R )
F (H2 ) = a0 + a1 H2P + O(H2R )
F (H1 ) F (H2 ) = a1 (H P H2P ) + O(H1R )
F (H1 ) F (H2 )
a1 =
H1 P (H2 )P
F (H1 ) F (H2 )
F = F (H1 ) +
+ O(H1R )
H2 P
1 H1
Se requiere conocer el valor de P , el orden del metodo, la relacion entre los dos
valores H1 y H2 y las funciones F (H1 ) y F (H2 ).
La u
ltima ecuacion es la que extrapola ambos valores y obtiene un valor corregido. Para poder hacer la extrapolacion, se desprecia O(H1R ).
Una vez que se ha hecho la extrapolacion, F = F + O(H R ), es decir, se reduce
el error de truncamiento.
La aplicacion de la extrapolacion de Richardson sucesivamente a valores obtenidos por trapecio se llama Romberg.
El error de truncamiento en el metodo del trapecio es de orden 2, al realizar
una primera extrapolacion, el orden es 4, y en una segunda extrapolacion, el orden
es 6. Los terminos pares no aparecen utilizando el metodo de Romberg.
44

Miguel Angel Cifredo Campos


macifredo@gmail.com

7.5 Extrapolacion de Richardson

Para pasar de Trapecio (orden 2) a Simpson (orden 4), se utiliza la siguiente


ecuacion.
TH TH2
T = TH1 1
(7.5.1)
H2 2
1 H
1
Para avanzar de Simpson (orden 4) a Romberg 3 (orden 6), se utiliza la siguiente
ecuacion.
SH1 SH2
S = SH1
(7.5.2)
2
2
1 H
H1
Se puede generalizar esta formula, si los pasos siempre se van dividiendo por 2:
F = FH1

7.5.1.

FH1 SH2
1 2P

(7.5.3)

Ejemplo

Se obtienen en primer lugar los tres puntos por el metodo de trapecio.


T (h) =
h
T( ) =
2
h
T( ) =
4

fb + fa
H
2
fa + fb + 2fa+ h

(7.5.4)

2
H
2 

fa + fb + 2 fa+ h + fa+ h + fa+ 3h
4

(7.5.5)
H

(7.5.6)
(7.5.7)

Luego, a partir de esos tres puntos, se pueden obtener 2 puntos, mediante la


extrapolacion de Richardson, que son equivalentes a obtener esos puntos mediante
Simpson.
A partir de esos dos valores, se calcula un nuevo valor, que pasa a ser de orden 6.
Este metodo permite obtener los valores deseados de una forma mucho mas
rapida que cualquier otro metodo.

7.5.2.

F
ormula general
F (h) = a0 + a1 hp1 + a2 hp2 + a3 hp3 + . . .

(7.5.8)

Donde p1 < p2 < p3 < . . ..

FK+1 (H) = FK (H) +

FK (H) FK (qH)
; FN (H) = a0 + aN hPN
qP k 1

(7.5.9)
45

Miguel Angel Cifredo Campos


macifredo@gmail.com

7.6 Formulas de Newton Cotes

7.5.3.

Otro ejemplo

R2
. Con una cantidad T de dgitos signifiSe quiere evaluar la integral I = 1 dx
x
cativos. Para poder evaluar la integral, se tomaran en total 5 puntos del intervalo
[1, 2].
x
1 1,25 1,5
1,75
2
f (x) 1 0,8 0,66 0,5714 0,5
Con estos valores, se encuentra en primer lugar los valores obtenidos mediante
el metodo del trapecio, luego se extrapola a Simpson, y luego a Romberg 3.
T (h)
S(h) R3 (h)
h
1
0,75
0,5 0,7082 0,6945
0,25 0,6970 0,6932 0,6931
0,125 0,6941 0,6931 0,6931
Efectivamente, ln 2 = 0,6931.

7.6.

F
ormulas de Newton Cotes

Las formulas de Newton Cotes pueden ser cerradas o abiertas.

7.6.1.

Cerradas

La ecuacion para las cerradas es la siguiente.


Z b
N
X
f (x)dx
ai f (xi )
a

(7.6.1)

i=0

xN

ai =

Z
Li (x)dx =

x0

N
xN Y

x0

x xj
dx
x

x
i
j
j=0

(7.6.2)

Al igual que en los casos anteriores, se trabaja con N + 1 puntos, donde xi =


x0 + iH, x0 = a, xN = b, y H = ba
.
N
En el caso en que N sea par, la integral sera exacta hasta polinomios de grado
N + 1. Estara dada por la siguiente ecuacion.
Z b
Z
N
X
h(n+3) f (n+2) () N 2
t (t 1)(t 2) . . . (t N )dt (7.6.3)
f (x)dx
ai f (xi ) +
(n + 2)!
0
a
i=0
Mientras que si N es impar, la integral sera exacta hasta polinomios de grado
N , y estara dada por la siguiente ecuacion.
Z b
Z
N
X
h(n+2) f (n+1) () N
f (x)dx
ai f (xi ) +
t(t 1)(t 2) . . . (t N )dt (7.6.4)
(n + 1)!
a
0
i=0
En conclusion, no tiene sentido agregar un punto, es necesario agregar dos para
que aumente la precision.
46

Miguel Angel Cifredo Campos


macifredo@gmail.com

7.7 Metodos de cuadratura

7.6.2.

Abiertas

Las premisas en este caso son distintas que las usadas anteriormente, si bien se
trabaja con N +1 puntos, y xi = x0 +iH, los valores de inicio y fin son: x0 = a+H,
xN = b H, y H = Nba
.
+2
Para el caso en que N es par, la integral estara dada por la siguiente ecuacion.
Z

f (x)dx
a

N
X
i=0

h(n+3) f (n+2) ()
ai f (xi ) +
(n + 2)!

N +1

t2 (t 1)(t 2) . . . (t N )dt

(7.6.5)
Los lmites de la u
ltima integral indican que la precision otorgada por esta
ecuacion es menor que la se consigue utilizando las formulas cerradas.

7.6.3.

Relaci
on con las otras f
ormulas

Para las formulas cerradas, cuando N = 1, se obtiene la formula del trapecio,


cuando N = 2 se obtiene la de Simpson, cuando N = 3, se obtiene la formula
llamada Simpson 3/8.
I =

3h5 (4)
3H
[f0 + 3fi + 3f2 + f3 ]
f ()
8
80

(7.6.6)

Para las formulas abiertas, cuando N = 0, se obtiene la formula llamada del


punto medio.
h3
I = 2Hf0 + f 00 ()
(7.6.7)
3
Y en el caso N = 1, se obtiene la siguiente formula.
I =

7.7.

3H
3h3 00
[f0 f1 ] +
f ()
2
4

(7.6.8)

M
etodos de cuadratura

Los metodos de cuadratura consisten en separar la funcion en dos partes, de


forma que resulte mas sencillo de calcular.
Z

f (x)w(x)dx

(7.7.1)

7.7.1.

M
etodo de coeficientes indeterminados

En la siguiente ecuacion, los terminos f0 , f1 y f2 son valores conocidos mientras


que los terminos A0 , A1 y A2 , son valores desconocidos. Se llama H = x1 x0 y
47

Miguel Angel Cifredo Campos


macifredo@gmail.com

7.7 Metodos de cuadratura

2H = x2 x0 .
Z b

x2

f (x)dx A0 f0 + A1 f1 + A2 f2
Z x2
Z
f00 (x x0 )dx
f0 dx +
f (x)dx =
x0
x0
x0
Z x2 00
Z x2 000
f0 (x x0 )2
f0 (x x0 )3
dx +
dx + . . .
+
2!
3!
x0
x0
i
h
0
00 H 2
A0 f0 + A1 f1 + A2 f2 = A0 f0 + A1 f0 + f0 H + f0 2 + . . .
h
i
2
+A1 f0 + f00 2H + f000 (2H)
+
.
.
.
2
Z x2
dx = f0 (x2 x0 ) = f0 2H = f0 (A0 + A1 + A2 )
f0
f (x)dx =

Zx0x2

a
x2

x0

2H = A0 + A1 + A2

2 x2
0 (x2 x0 )
2
0
0
0
(x x0 )dx = f0
f0
= f0 2H = f0 (A1 + 2A2 )H
2
x0
x0
2H = A1 + 2A2

Z x2
3 x2
2
(x x0 )2
22 H 2
8H 3 00
00
00 (x2 x0 )
00 H
f0
dx = f0
f
=
f
(
A
+
A2 )
=
1
0

2
3
3 0
2
2
x0
x0
4H

= A1 + 4A2
3
Z

x2

Finalmente, se pueden obtener los valores de A0 = H3 , A1 = 4H


, A2 = H3 . De
3
modo que la integral obtenida es I = H3 [f0 + 4f1 + f2 ].
Se trata de un desarrollo en adelanto, porque se esta centrando en el valor de
x0 . Podra tambier desarrollarse en atraso o centrado.
An
alisis del Error
Para f0000 .
D1

Z
f0000 x2
=
(x x0 )3 dx
3! x0
x
f0000 (x x0 )4 2
=

3!
4
x0
=

2H
f0000

Por otro lado,


f0000 3
(H A1 + 8H 3 A2 )
3!
f 000 4H 4 8H 4
= 0 (
+
)
3! 3
3
2H 4
= f0000
3

D2 =

48

Miguel Angel Cifredo Campos


macifredo@gmail.com

7.7 Metodos de cuadratura


Es decir que no hay error, se avanza a la siguiente derivada, f00000 .
Z
f00000 x2
D3 =
(x x0 )4 dx
4! x0
x
f00000 (x x0 )5 2
=

4!
5
x0
= f00000

4H 5
15

Por otro lado,


D4

f00000 4
=
(H A1 + 16H 4 A2 )
4!
f00000 4H 5 16H 5
=
(
+
)
3!
3
3
5H 5
= f00000
18

En este caso, son diferentes valores, y es posible proporcionar una cota para el
error.


4
1
5
0000
I I = f

H 5 = f 0000 H 5
(7.7.2)
18 15
90
Forma mec
anica
Expresion de cuadratura.
Z x2
f (x) = A0 f0 + A1 f1 + A2 f2

(7.7.3)

x0

Si f (x) = (x x0 )i , con i = 0:
Z x2
Z x2
Z
0
f (x)dx =
(x x0 ) dx =
x0

x0

x2

dx = A0 + A1 + A2 = 2H

(7.7.4)

x0

Con i = 1:
Z

x2

(x x0 )1 dx =

x0

Con i = 2:
Z

x2

x0

7.7.2.

4H 2
= 2H 2 = A1 H + A2 2H
2

8H 3
(x x0 ) dx =
= A1 H 2 + A2 (2H)2
3
2

(7.7.5)

(7.7.6)

Cuadratura de Gauss

El metodo de cuadratura gaussiana, utiliza una H que no es constante. Permite hacer una interpolacion que utilizando una recta (grado1) puede integrar un
polinomio de grado 2.
49

Miguel Angel Cifredo Campos


macifredo@gmail.com

7.7 Metodos de cuadratura

El metodo parte de la ecuacion siguiente.


Z b
X
f (x)dx =
Ai (i )

(7.7.7)

Donde Ai son los coeficientes, y i son los puntos. Es necesario obtener valores para 2(N + 1) incognitas, ya que tanto los coeficientes como los puntos son
incognitas.
El metodo de eleccion de los puntos busca obtener una mayor precision. La
expresion hallada utilizando esos puntos sera exacta hasta polinomios de grado
2(N + 1).
La diferencia esencial con los otros metodos utilizados son los puntos que se
van a usar para hacer la aproximacion. Estos puntos son las races del polinomio
de Legendre, del grado que corresponda a la cantidad de puntos.
En primer lugar, es necesario normalizar la funcion.
Z b
Z 1
X
f (x)dx =
()d =
Ai (i )

(7.7.8)

En este caso, los coeficientes Ai pueden obtenerse mediante el metodo de coeficientes indeterminados, y i son los ceros del polinomio de Legendre, que se
encuentran tabulados.
Ejemplo para dos puntos
Se quiere aproximar la curva 0 + 1 , mediante la curva (), de manera que
el area encerrada por ambas curvas en el intervalo [1, 1] sea la misma.
Z 1
Z 1
0 + 1 =
()d
(7.7.9)
1

Teniendo IG = A0 (0 ) + A1 (1 ). Tomo () = a0 + a1 + a2 2 + a3 3 ,
integrando c
ubico. () = 0 + 1 + ( 0 )( 1 )(0 + 1 ). De forma que
(0 ) = y0 y (1 ) = y1 .
Operando.
Z 1
Z 1
[0 + 1 + ( 0 )( 1 )(0 + 1 )] d
() =
1
1
Z 1
=
(0 + 1 )d.
1
Z 1
y
( 0 )( 1 )(0 + 1 )d = 0
1
Z 1
2
0 =
( 0 )( 1 )d) = + 20 1 = 0
3
1
Z 1
2
1 =
( 0 )( 1 )d) = + (0 + 1 ) = 0
3
1
50

Miguel Angel Cifredo Campos


macifredo@gmail.com

7.7 Metodos de cuadratura

Si () = 1, se obtiene que
1
y 1 = sqrt3

R1
1

1
d = A0 + A1 2, y por lo tanto 0 = sqrt3

R1
Si, por otro lado, () = , se obtiene que 1 d = A0 0 + A1 1 = 0, y por




1
1
1
+ A1 sqrt3
= (A1 A0 ) sqrt3
lo tanto A0 sqrt3
y finalmente, A0 = A1 = 1.
En conclusion.
1
1
I = IC = A0 (0 ) + A1 (1 ) = (
) + (
)
sqrt3
sqrt3

(7.7.10)

51

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 8
Diferenciaci
on Num
erica
8.1.
8.1.1.

Derivadas de primer orden


Descentrada en adelanto

La formula mas sencilla para el calculo de una derivada de forma numerica


esta dada por:
f 0 (x0 ) =

f (x0 + h) f (x0 )
h

(8.1.1)

C
alculo del error
Para estimar el error cometido se utiliza el desarrollo de Taylor de f (x) alrededor de x0 .
f 00 ()(x x0 )2
f (x) = f (x0 ) + f (x0 )(x x0 ) +
2
0

(8.1.2)

De manera que f 0 (x0 ), con x = X0 + h sera:


f 0 (x0 ) =

f (x0 + h) f (x0 ) f 00 ()h2


+
h
2h

(8.1.3)

Es decir que al utilizar la estimacion anterior, el error que se comete esta dado
por:
f 00 ()h
2

(8.1.4)

Se trata de una formula con orden de precision 1 y error de truncamiento O(h).

8.1.2.

Centrada

Otra formula para calcular la derivada en un punto puede obtenerse realizando


el desarrollo de Taylor para dos puntos x0 + h y x0 h:
52

Miguel Angel Cifredo Campos


macifredo@gmail.com

8.2 Derivadas de segundo orden

f 00 (x0 )h2 f 000 ()h3


+
2
6
000
3
00
2
f
()h
f
(x
)h
0
0

f (x0 h) = f (x0 ) f (x0 )h +


2
6
f (x0 + h) = f (x0 ) + f 0 (x0 )h +

(8.1.5)
(8.1.6)

Restando estas dos ecuaciones, se obtiene:


f (x0 + h) f (x0 h)
f 00 ()h3
+2
(8.1.7)
2h
12h
De manera que en este caso, el orden de precision es 2, mientras que el error
de truncamiento es O(h2 ).
f 0 (x0 ) =

8.1.3.

Descentrada, tomando 3 puntos

Se puede obtener una forma descentrada de la derivada de segundo orden,


haciendo los desarrollos de Taylor en x0 h y x0 2h, y operando con las ecuaciones
de tal manera que se anule el termino de la derivada segunda.
f 00 (x0 )h2 f 000 (x0 )h3

2
6
00
2
f (x0 )h
f 000 (x0 )h3
f (x0 2h) = f (x0 ) f 0 (x0 )2h + 4
8
2
6
f (x0 h) = f (x0 ) f 0 (x0 )h +

(8.1.8)
(8.1.9)

Si la primera ecuacion se multiplica por 4 y se le resta la segunda, se obtiene:

4f (x0 h) f (x0 2h) = 4f (x0 ) f (x0 ) 4f 0 (x0 )h + 2f 0 (x0 )h


f 0 (x0 ) =

3f (x0 ) 4f (x0 h) + f (x0 2h)


f 000 (x0 )h3
+4
2h
12h

De manera que esta derivada tiene orden de precision 2, y el error de truncamiento es O(h2 ).

8.2.
8.2.1.

Derivadas de segundo orden


Centrada

De la misma manera que antes, a partir del desarrollo de Taylor de la funcion


evaluada en x0 + h y x0 h, se puede obtener la formula para la derivada centrada.
f 00 (x0 )h2 f 000 (x0 )h3 f 0000 ()h4
+
+
(8.2.1)
2
6
24
f 00 (x0 )h2 f 000 (x0 )h3 f 0000 ()h4
f (x0 h) = f (x0 ) f 0 (x0 )h +

+
(8.2.2)
2
6
24
f (x0 + h) = f (x0 ) + f 0 (x0 )h +

53

Miguel Angel Cifredo Campos


macifredo@gmail.com

8.2 Derivadas de segundo orden

En este caso, sumamos las ecuaciones, para obtener:


f 00 (x0 )h2 f 0000 ()h4
f (x0 + h) + f (x0 h) = 2f (x0 ) + 2
+ (8.2.3)
2
24
0000
4
f
(x
+
h)

2f
(x
)
+
f
(x

h)
f
()h
0
0
0
f 00 (x0 ) =
+
(8.2.4)
h2
24h2
Con lo que el orden de precision para esta estimacion es 3, mientras que el error
de truncamiento es O(h2 ).

54

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 9
Resoluci
on num
erica de
ecuaciones diferenciales ordinarias
9.1.

Problemas de Valores Iniciales

Se busca resolver problemas de la forma:


dy
= f (y, t)
dt

y(0) = y0

(9.1.1)

Para resolver estos problemas, se discretizaran las funciones, de manera que la


ecuacion diferencial pasa a ser una ecuacion en diferencias. La variable pasa a ser
tn = hn y la funcion y(t) se convierte en la sucesion un = y(tn ).

9.1.1.

Definiciones

Consistencia
Se dice que un metodo es consistente si el lmite del maximo error local tiene
a cero, cuando h tiende a cero.
La ecuacion en diferencias tiende a la ecuacion diferencial cuando el paso tiende
a cero
Convergencia
Se dice que un metodo es convergente si el lmite cuando h tiene a cero de
un y(tn ) es cero.
La solucion de la ecuacion en diferencias tiende a la ecuacion diferencial.
Estabilidad
Esta situacion aparece cuando los datos no son exactos. Un metodo es estable
cuando las perturbaciones peque
nas en los valores iniciales, originan perturbaciones
peque
nas en los resultados.
55

Miguel Angel Cifredo Campos


macifredo@gmail.com

9.2 Metodo de Euler

9.2.

M
etodo de Euler

El metodo de Euler es una discretizacion muy sencilla de una ecuacion diferencial.


un+1 = un + hf (tn , xn )

(9.2.1)

A partir de la condicion inicial del problema, se pueden ir obteniendo los siguientes valores de un , de forma iterativa.
C
alculo del error
Al utilizar esta aproximacion, se esta descartando el siguiente termino de la
serie de Taylor, es decir:
y 00 () 2
h
(9.2.2)
2
Este termino es el que corresponde al error local, debido a una sola iteracion, y
es O(h2 ). Sin embargo, despues de m iteraciones iguales, el error acumulado sera m
veces mayor:
X
k

= 1m

y 00 () 2 b a y 00 () 2 (b a)y 00 ()
y 00 () 2
h =m
h =
h =
h
2
2
h
2
2

(9.2.3)

Es decir que el error global es O(h).

9.2.1.

M
etodo de Taylor

El metodo de Taylor es una generalizacion del metodo de Euler, que permite


resolver ecuaciones diferenciales de orden N (Euler solo sirve para resolver ecuaciones diferenciales de orden 1).

9.2.2.

M
etodos implcitos

9.2.3.

M
etodos de Runge-Kutta

9.2.4.

M
etodos multi-paso

Los metodos multi-paso se refieren no solamente al valor obtenido para el paso


anterior de la funcion (un ), sino tambien a pasos previos (un1 , un2 , etc).
Es necesario contar con mas de un valor inicial de la funcion. Para obtenerlos
se suelen utilizar metodos de un solo paso, como el metodo de Euler o el de RungeKutta.
Es importante tener en cuenta que si se utiliza un metodo multi-paso de orden
N , se debe utilizar como metodo de arranque un metodo de un solo paso, del
mismo orden.
Los metodos multi-paso son los Adams-Bashforth, Adams-Moulton y el predictorcorrector de Milne.
56

Miguel Angel Cifredo Campos


macifredo@gmail.com

9.3 Problemas de Valores de Contorno

9.2.5.

Extrapolaci
on de Richardson

9.2.6.

Sistemas de ecuaciones

9.2.7.

Problemas rgidos

Un problema rgido consiste en una ecuacion diferencial cuya solucion mediante


metodos numericos es inestable, a menos que se tome un paso extremadamente
peque
no.
Por ejemplo, una ecuacion diferencial de la forma:
dy
= ky(t),
dt

y(0) = y0

(9.2.4)

Cuya solucion exacta es y0 ekt .


Si esta ecuacion se intenta resolver por el metodo de Euler, un+1 = un hkun ,
exhibira comportamientos oscilatorios, a
un para valores del paso h peque
nos.
Sin embargo, este mismo problema puede resolverse por otras tecnicas, como
por ejemplo la Adam-Bashforth, lograndose la solucion esperada.

9.3.

Problemas de Valores de Contorno

Los problemas de valores de contorno son aquellos en los cuales en lugar de


tener las condiciones para el punto inicial de la ecuacion diferencial, se tiene alg
un
valor para el punto inicial y alg
un otro valor para el punto final.

9.3.1.

M
etodo directo centrado

9.3.2.

Condiciones de contorno

9.3.3.

Problemas de capa lmite

Los problemas de capa lmite son un caso especial de problemas de contorno


que suelen aparecer en la fsica, especialmente en el estudio de la mecanica de los
fluidos.

9.3.4.

Refinamiento vs Upwinding

9.3.5.

M
etodo del tiro

El metodo del tiro se utiliza para transformar un problema de valores de contorno en un problema de valores iniciales. Consiste en proponer un valor ficticio
como condicion inicial del problema, luego resolverlo como un problema de valores iniciales y finalmente corregir el valor propuesto inicialmente para que las
condiciones de contorno se cumplan.
La aproximacion de S se puede ir mejorando de la siguiente manera:
Sj = Sj1

[y(b, Sj1 ](Sj1 Sj2 )


y(b, Sj1 ) y(b, Sj2 )

(9.3.1)
57

Miguel Angel Cifredo Campos


macifredo@gmail.com

9.4 Problemas de valores iniciales conservativos

Donde y(b) = e y(a) = . Utiliza el metodo de la secante, para obtener las


races de la funcion y(b, S).

9.4.

Problemas de valores iniciales conservativos

9.4.1.

M
etodo de Taylor

9.4.2.

M
etodo de Newmark

9.4.3.

M
etodo de N
ystrom

58

Miguel Angel Cifredo Campos


macifredo@gmail.com

CALCULO
DIFERENCIAL

1. INTERROGANTES CENTRALES DEL CAPITULO


Lmite de una funcion

Maximos y mnimos relativos

Lmites laterales

Polinomios de Taylor

Reglas para el calculo de lmites

Series de potencias

Regla del bocadillo

Teorema de Taylor

Continuidad de una funcion

Algoritmo de biseccion

Propiedades de las funciones continuas

Metodo de iteracion del punto fijo

Teorema del valor intermedio

Metodo de Newton-Raphson

Derivada de una funcion


Interpretacion geometrica de la derivada

Polinomio interpolante de Lagrange

Teorema de Rolle

Metodo de interpolacion iterada

Teorema del valor medio

Metodo de diferencias divididas

2. CONTENIDOS FUNDAMENTALES DEL CAPITULO

2.1. Lmite de una funcion

2.1.1. Definiciones
La nocion de lmite es basica en todo el calculo, por lo que es sumamente importante adquirir un buen manejo y
conocimiento de los lmites antes de adentrarnos en otros temas.
Sea f (x) una funcion y consideremos x0 un numero real (no necesariamente en el dominio de f ). Si f (x) se
acerca arbitrariamente a un u nico valor L cuando x se aproxima a x0 por ambos lados (sin llegar nunca a ser igual
a x0 ), decimos que el lmite de f (x) cuando x tiende a x0 es L, y escribimos
lim f (x) = L.

xx0

En la definicion anterior observamos que solo interesa conocer como esta definida la funcion f cerca del punto

Miguel Angel Cifredo Campos


macifredo@gmail.com

x0 . Si la funcion existe o no en el punto x0 no tiene importancia. La cuestion crucial aqu es la siguiente: que
significa que f (x) se acerca arbitrariamente a L? que ocurre si x se aproxima a x0 solo por un lado?
El comportamiento de las funciones en relacion a los lmites puede ser de lo mas diverso. Solo como un boton de
muestra, veamos las siguientes funciones.

f (x) = x/( x + 1 1): El lmite de f (x) cuando x 0 vale 2, ya que si nos acercamos por la izquierda
obtenemos valores menores que 2 pero cada vez mas proximos a 2; y si nos acercamos por la derecha
obtenemos valores mayores que 2 pero cada vez mas proximos a 2. Sin embargo, la funcion f no esta
definida en x = 0.
f (x) = |x|/x: Cuando nos acercamos a 0 por la izquierda, entonces f (x) = 1 por lo que el lmite vale 1.
Pero si nos acercamos por la derecha entonces f (x) = 1 y as el lmite vale 1. Por tanto, no existe el lmite.
f (x) = 1/x2 : Cuando x se aproxima a 0, f (x) se va haciendo cada vez mas grande, por lo que no existe ningun
numero real L al cual tienda f (x). Por tanto no existe el lmite de f (x) cuando x 0.
En los ejemplos anteriores hemos visto que hay funciones que se aproximan a un valor L1 cuando x se aproxima
a x0 por la izquierda y se aproximan a L2 si nos acercamos por la derecha. Este comportamiento nos lleva a
considerar las siguientes definiciones.
Sea f (x) una funcion y consideremos x0 un numero real (no necesariamente en el dominio de f ).
(1) Si f (x) se acerca arbitrariamente a un u nico valor L cuando x se aproxima a x0 por la izquierda (sin llegar
nunca a ser igual a x0 ), decimos que el lmite por la izquierda de f (x) cuando x tiende a x0 es L, y
escribimos
lim f (x) = L.
xx0

(2) Si f (x) se acerca arbitrariamente a un u nico valor L cuando x se aproxima a x0 por la derecha (sin llegar
nunca a ser igual a x0 ), decimos que el lmite por la derecha de f (x) cuando x tiende a x0 es L, y
escribimos
lim + f (x) = L.
xx0

Entonces existe el lmite de una funcion f (x) en x0 si existen los lmites laterales en x0 y coinciden.

2.1.2. Reglas para el calculo de lmites


Si b y c son numeros reales, n un entero positivo y f , g son funciones que tienen lmite cuando x tiende a c,
entonces son ciertas las siguientes propiedades:

(1) Multiplo escalar: lim [bf (x)] = b[ lim f (x)]


xc

xc

(2) Suma/Diferencia: lim [f (x) g(x)] = lim f (x) lim g(x)


xc

xc

xc

(3) Producto: lim [f (x)g(x)] = lim f (x) lim g(x)


xc

(4) Cociente: lim [


xc

xc

xc

limxc f (x)
f (x)
]=
, siempre que limxc g(x) 6= 0.
g(x)
limxc g(x)

Miguel Angel Cifredo Campos


macifredo@gmail.com

(5) Potencia: lim [f (x)]n = [ lim f (x)]n


xc

xc

q
p
(6) Raz: lim n f (x) = n lim f (x). Si n es par suponemos que lim f (x) es no negativo.
xc

xc

xc

Para poder calcular lmites solo es necesario, ademas de utilizar las reglas anteriores, tener en cuenta que lim b = b
xc
y lim x = c.
xc

Como una consecuencia de la aplicacion de las propiedades anteriores tenemos las siguientes reglas:
(1) Si p(x) es un polinomio entonces
lim p(x) = p(c).

xc

(2) Si r(x) = p(x)/q(x), q(c) 6= 0, es una funcion racional entonces


lim

xc

p(c)
p(x)
=
.
q(x)
q(c)

(3) Si c > 0 y n es cualquier entero positivo, o si c < 0 y n es un entero positivo impar, entonces

lim n x = n c.
xc

(4) Si f y g son funciones tales que lim g(x) = L y lim f (x) = f (L) entonces
xc

xL

lim f (g(x)) = f (L).

xc

Para finalizar este apartado vamos a enunciar la regla del bocadillo o teorema de intercalacion, herramienta muy
u til que permite calcular lmites por comparacion.
Regla del Bocadillo. Si f (x) 6 g(x) 6 h(x) para todo x en un intervalo abierto que contiene a c (no importa lo
que suceda en c) y
lim f (x) = lim h(x) = L,
xc

xc

entonces
lim g(x) = L.

xc

2.2. Continuidad de una funcion


El termino continuidad en matematicas tiene exactamente el mismo significado que tiene en el lenguaje cotidiano:
una funcion f es continua en un punto a si su grafica no se interrumpe en a, no tiene saltos ni huecos en ese punto.
La u nica diferencia que existe es en la formulacion rigurosa.
Continuidad en un punto: Una funcion f es continua en a si se verifican las siguientes condiciones:
3. lim f (x) = f (a).
1. f (a) esta definida.
2. lim f (x) existe.
xa

xa

Continuidad en un intervalo abierto: Una funcion f se dice continua en un intervalo abierto (b, c) si lo es en
todos los puntos de ese intervalo.
Si f es continua en toda la recta real (, ) diremos simplemente que f es una funcion continua. Se dice que
f es discontinua en a si no es continua en dicho punto.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Existen varios tipos de discontinuidades: las evitables y las no evitables. Se dice que una discontinuidad en x = a
es evitable si la funcion f puede hacerse continua en a redefiniendola en dicho punto. En caso contrario, se dira
que la discontinuidad es no evitable.
Continuidad por la derecha: Una funcion f es continua por la derecha en a si se verifican las siguientes condiciones:
3. lim+ f (x) = f (a).
1. f (a) esta definida.
2. lim+ f (x) existe.
xa

xa

Continuidad por la izquierda: Una funcion f es continua por la izquierda en a si se verifican las siguientes
condiciones:
3. lim f (x) = f (a).
1. f (a) esta definida.
2. lim f (x) existe.
xa

xa

Continuidad en un intervalo cerrado: Una funcion f se dice continua en un intervalo cerrado [b, c] si es continua
en (b, c) y tambien es continua por la derecha en b y por la izquierda en c.

2.2.1. Propiedades de las funciones continuas


Teniendo en cuenta que la continuidad se ha definido como un lmite, podemos utilizar las propiedades de los
lmites para comprobar inmediatamente las siguientes propiedades acerca de la continuidad.
Sean f y g dos funciones continuas en un punto a, entonces tambien son continuas en a las siguientes funciones:
(1) Suma y diferencia: f g.
(2) Multiplo escalar: f , siendo un numero real.
(3) Producto: f g.
(4) Cociente: f /g siempre que g(a) 6= 0.
Listamos a continuacion algunos de los tipos mas comunes de funciones continuas en todo punto de su dominio:
(1) Funciones polinomicas: p(x) = an xn + an1 xn1 + + a1 x + a0
(2) Funciones racionales: r(x) = p(x)/q(x), si q(x) 6= 0.
p
(3) Funciones radicales: f (x) = n p(x), si p(x) > 0 cuando n es par.
Uno de los resultados que nos permitira combinar las propiedades anteriores para probar la continuidad de funciones mas complejas es el siguiente: Si g es continua en c y f es continua en g(c) entonces la funcion compuesta
f g es continua en c.
Finalizamos esta seccion con un teorema relativo al comportamiento de las funciones continuas en un intervalo
cerrado, cuya demostracion hace uso de la completitud de los numeros reales.
Teorema del valor intermedio: Si f es una funcion continua en [a, b] y k es cualquier valor entre f (a) y f (b),
entonces existe al menos un numero c [a, b] tal que f (c) = k.
El teorema del valor intermedio es u til para localizar los ceros de una funcion continua en un intervalo cerrado.
Mas concretamente, se tiene el siguiente resultado.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema de Bolzano: Si f es una funcion en [a, b] y f (a), f (b) difieren de signo, entonces existe al menos un
numero c [a, b] tal que f (c) = 0.
Es importante hacer notar que tanto en el teorema del valor intermedio como en el teorema de Bolzano es capital
que la funcion sea continua en el intervalo cerrado [a, b]. Pueden encontrarse ejemplos muy sencillos de funciones
discontinuas que no verifican los teoremas anteriores.

2.3. Lmites infinitos


En la seccion previa donde hemos definido el concepto de lmite L de una funcion f en un punto a, solo hemos
considerado el caso en que tanto a como L fuesen numeros reales. Sin embargo, es posible extender el concepto
de lmite a otros casos, en un cierto sentido que ahora pasamos a precisar.

2.3.1. Lmites infinitos cuando a es un numero


real

Se dice que f (x) crece sin tope cuando x tiende a a si para todo numero real M siempre existe un intervalo I de
a tal que f (x) > M para todo punto x de I. Analogamente, se dice que f (x) decrece sin tope cuando x tiende a
a si para todo numero real M siempre existe un intervalo I de a tal que f (x) < M para todo punto x de I.
Si f (x) crece sin tope cuando x tiende hacia a diremos que el lmite de f cuando x tiende a a es y escribiremos
lim f (x) = .

xa

Por el contrario, si f (x) decrece sin tope cuando x tiende hacia a diremos que el lmite de f cuando x tiende a a
es y escribiremos
lim f (x) = .
xa

El signo de igualdad en las expresiones anteriores no significa que exista un lmite, sino que nos dan una razon
por la que la funcion f no puede tener lmite en el punto a: porque no esta acotada. Lo que de verdad se quiere
decir es que el lmite no existe y la funcion f tiene una discontinuidad no evitable (de salto infinito).
Los lmites infinitos por la izquierda y por la derecha se definen analogamente. Los cuatro posibles lmites laterales
son los siguientes:
(1) lim f (x) = ,
xa

(2) lim f (x) = ,


xa

(3) lim+ f (x) = ,


xa

(4) lim+ f (x) = .


xa

Si alguno de los lmites laterales anteriores se satisface, decimos que f tiene en a una discontinuidad infinita.
En este caso, diremos que la recta x = a es una asntota vertical de f . Uno de los ejemplos mas tpicos de
existencia de asntotas verticales se da en las funciones racionales: si f y g son funciones continuas en un
intervalo conteniendo a c, y se satisface f (c) 6= 0 y g(c) = 0, entonces la funcion racional r(x) = f (x)/g(x)
tiene una asntota vertical en x = c.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Terminamos esta seccion con las siguientes propiedades de lmites infinitos. Si c, L son numeros reales y f , g son
funciones tales que
y
lim g(x) = L,
lim f (x) =
xc

xc

entonces las siguientes propiedades se verifican:


(1) Suma y diferencia: lim [f g] = .
xc

(2) Multiplo escalar: lim [f ] = , si > 0 y lim [f ] = , si < 0.


xc

xc

(3) Producto: lim [f g] = si L > 0 y lim [f g] = si L < 0.


xc

xc

(4) Cociente: lim [g/f ] = 0.


xc

(Propiedades similares son validas para lmites laterales y para funciones para las cuales el lmite de f (x) cuando
x tiende a c es ).

2.3.2. Lmites infinitos cuando L es un numero


real

Si f (x) tiende a L cuando x se hace arbitrariamente grande, entonces decimos que el lmite de f (x) cuando x
tiende a infinito es L, y escribimos
lim f (x) = L.
x

Analogamente, si f (x) tiende a L cuando x se hace arbitrariamente pequeno, entonces decimos que el lmite de
f (x) cuando x tiende a menos infinito es L, y escribimos
lim f (x) = L.

En ambos casos se dice que la recta y = L es una asntota horizontal de la funcion f . Uno de los ejemplos mas
tpicos de existencia de asntotas horizontales se da en las funciones racionales: si f y g son dos polinomios del
mismo grado, entonces la funcion racional r(x) = f (x)/g(x) tiene una asntota horizontal en y = L, siendo L el
cociente entre los coeficientes principales de f y g.
Terminamos esta seccion con las siguientes propiedades de lmites infinitos. Si L1 , L2 son numeros reales y f , g
son funciones tales que
y
lim g(x) = L2 ,
lim f (x) = L1
x

entonces las siguientes propiedades se verifican:


(1) Suma y diferencia: lim [f g] = L1 L2 .
x

(2) Multiplo escalar: lim [f ] = L1 .


x

(3) Producto: lim [f g] = L1 L2 .


x

(4) Cociente: lim [f /g] = L1 /L2 si L2 6= 0.


x

(Propiedades similares son validas para lmites de f (x) cuando x tiende a ).


Las propiedades anteriores tambien pueden ser validas si L1 = o L2 = o ambas condiciones al mismo
tiempo. No obstante, existen ciertas restricciones con el fin de evitar las indeterminaciones: , 0., /,
etc.

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.4. Derivada de una funcion


El calculo matematico nacio y se fortalecio a raz de cuatro clasicos problemas sobre los que los matematicos
europeos trabajaron durante el siglo XVII. Estos problemas son:
(1) El problema de la recta tangente.
(2) El problema de la velocidad y la aceleracion.
(3) El problema de los maximos y mnimos.
(4) El problema del a rea.
En este captulo abordaremos los tres primeros problemas, dejando el u ltimo para el captulo siguiente. Cada uno
de los problemas anteriores requiere el concepto de lmite, ya introducido al comienzo del captulo, y es por s
solo suficiente para motivar e introducir el calculo.
La derivada de una funcion f en un punto a, que se denota por f 0 (a), se define como
lim

xa

f (x) f (a)
f (a + h) f (a)
= lim
,
h0
xa
h

supuesto que tal lmite exista.

2.4.1. Interpretacion geometrica: Recta tangente


Si consideramos los puntos del plano (x, f (x)) y (a, f (a)), entonces la recta que los une tiene una pendiente m
dada por
f (x) f (a)
.
m=
xa
En consecuencia, f 0 (a) es el lmite de las pendientes de las rectas secantes que unen los puntos (x, f (x)) y
(a, f (a)), y por tanto constituye la pendiente de la recta tangente a f en a (ver Figura 2.1).
Utilizando la forma punto-pendiente para expresar la ecuacion de una recta, podemos decir que si f 0 (a) existe
entonces la recta tangente a la curva y = f (x) en el punto (a, f (a)) viene dada por
y f (a) = f 0 (a)(x a).
Una funcion f definida en un intervalo abierto (a, b) se dice que es derivable (o diferenciable) si existe f 0 (c) en
todo punto c del intervalo. Si f es una funcion derivable entonces podemos definir otra funcion, denominada la
derivada de f y denotada por f 0 , por la siguiente formula:
f 0 (x) = lim

h0

f (x + h) f (x)
.
h

El dominio de f 0 siempre es un subconjunto del dominio de f y una de las propiedades fundamentales de la


derivada queda recogida en el siguiente teorema: si f es derivable en x = a entonces f es continua en x = a.
De lo anterior se deduce que podemos definir un operador en el conjunto de las funciones derivables que asocia a
cada funcion f (x) su derivada f 0 (x). Dicho operador se denomina la derivada y se denota por
d
dx
de manera que

df
d
(f ) es una notacion para indicar f 0 . Asimismo, otra notacion para f 0 (a) es
(a).
dx
dx

Miguel Angel Cifredo Campos


macifredo@gmail.com

f (x) f (a)
)

f (a)

xa

geometrica

Figura 2.1: Interpretacion


de la derivada.

2.4.2. Reglas de derivacion


Aunque la nocion de derivada se apoya en el concepto de lmite, no es conveniente calcular las derivadas recurriendo a la definicion, ya que los calculos son engorrosos y en ocasiones difciles de realizar. En esta seccion
vamos a presentar una serie de reglas que nos permitiran hallar derivadas sin recurrir a la definicion, de una forma
mas sencilla.
Regla de la constante. La derivada de una constante c es cero:
d
[c] = 0.
dx
Regla de las potencias. Si n es un numero racional,
d n
[x ] = nxn1 .
dx

Regla del multiplo


constante. Si c es un numero real,
d
[cf (x)] = cf 0 (x).
dx
Regla de la suma y diferencia. La derivada de una suma (o diferencia) de dos funciones derivables es la suma
(o diferencia) de sus derivadas:
d
[f (x) g(x)] = f 0 (x) g 0 (x).
dx
Regla del producto. El producto de dos funciones derivables es tambien derivable y su derivada viene dada por
d
[f (x)g(x)] = f 0 (x)g(x) + f (x)g 0 (x).
dx

Miguel Angel Cifredo Campos


macifredo@gmail.com

Regla del cociente. El cociente de dos funciones derivables es tambien derivable y su derivada viene dada por


d f (x)
f 0 (x)g(x) f (x)g 0 (x)
.
=
dx g(x)
g(x)2
Regla de la cadena. La composicion de dos funciones derivables es tambien derivable y su derivada viene dada
por
d
[f (g(x))] = f 0 (g(x))g 0 (x).
dx

2.4.3. Derivacion implcita


En las secciones anteriores hemos visto como derivar funciones y = f (x). Sin embargo, en ocasiones las variables
x e y se hallan relacionadas por una ecuacion F (x, y) = 0 que no permite despejar y en funcion de x. En estos
casos se utiliza la tecnica de la derivacion implcita, la cual presupone que la variable y es funcion de x.
Cuando queremos calcular dy/dx a partir de una ecuacion F (x, y) = 0 debemos tener presente que estamos
derivando respecto de x. Por tanto, cuando derivemos terminos en los que aparece y debemos utilizar la regla de
la cadena, ya que y esta definida implcitamente como una funcion de x.
El resultado de la derivacion implcita dy/dx no suele ser una funcion que solo depende de x, sino mas bien una
nueva funcion que depende de x y de y.

2.4.4. Extremos (absolutos y relativos)


Sea f una funcion definida en un intervalo I conteniendo un punto a. Entonces f (a) es el mnimo de f en I si
f (a) 6 f (x) para todo x en I. Analogamente, f (a) es el maximo de f en I si f (a) > f (x) para todo x en I. En
ocasiones, el maximo y el mnimo de una funcion f se denominan el maximo absoluto y el mnimo absoluto en
ese intervalo, respectivamente (ver Figura 2.2).
Si el intervalo I es abierto, entonces f no tiene por que tener un maximo o un mnimo en dicho intervalo. Sin
embargo, si I es un intervalo cerrado [a, b], entonces f tiene un maximo M y un mnimo m (teorema del valor
extremo).
A veces no interesa tanto el comportamiento global de la funcion como el comportamiento local, es decir, el comportamiento en intervalos pequenos. En este caso, las definiciones anteriores pueden ser ligeramente modificadas
en el siguiente sentido.
f (a) es un mnimo relativo de f si f (a) 6 f (x) para todo x en un intervalo abierto I conteniendo a a.
Analogamente, f (a) es un maximo relativo de f si f (a) > f (x) para todo x en un intervalo abierto I conteniendo a a (ver Figura 2.2).
Como podemos utilizar el calculo para la determinacion de los extremos relativos de una funcion? Para ello
necesitamos introducir el concepto de punto crtico. Si f esta definida en a, se dice que a es punto crtico de f si
f 0 (a) = 0. Por convenio, todos los puntos que no pertenecen al dominio de f 0 son crticos.
La primera aproximacion nos la da el teorema de Fermat, que dice lo siguiente: Si f tiene un extremo relativo
en a entonces f 0 (a) = 0. Como consecuencia de lo anterior, los extremos relativos de una funcion solo pueden
aparecer en los puntos crticos, lo que justifica la siguiente gua para determinar los extremos de una funcion en
un intervalo cerrado:

Miguel Angel Cifredo Campos


macifredo@gmail.com

y = f (x)

Figura 2.2: Maximos


y mnimos de una funcion.

(1) Determinar los puntos crticos de f .


(2) Evaluar f en sus puntos crticos.
(3) Calcular f (a) y f (b).
(4) El menor de los valores anteriores es el mnimo; el mayor es el maximo.

2.4.5. Teoremas de Rolle y del valor medio


El teorema del valor extremo discutido anteriormente garantiza la existencia de extremos absolutos en las funciones continuas definidas en un intervalo cerrado, pero no sabemos si estos extremos se alcanzan en los extremos
del intervalo o en el interior. El siguiente teorema garantiza la existencia de extremos en el interior del intervalo.
Teorema de Rolle. Sea f una funcion continua en un intervalo cerrado [a, b] y derivable en el intervalo abierto
(a, b) tal que f (a) = f (b). Entonces existe un punto c (a, b) tal que f 0 (c) = 0.
Debemos hacer notar que todas las hipotesis son imprescindibles. Si f no es derivable en (a, b) o f (a) 6= f (b)
entonces podemos encontrar ejemplos de funciones que no satisfacen el teorema de Rolle.
Como una generalizacion del teorema anterior tenemos el siguiente resultado.
Teorema del valor medio. Sea f una funcion continua en un intervalo cerrado [a, b] y derivable en el intervalo
abierto (a, b). Entonces existe un punto c (a, b) tal que
f 0 (c) =

f (b) f (a)
.
ba

Geometricamente, el teorema anterior nos dice que, en las hipotesis del teorema, siempre existe un punto c tal
que la recta tangente a la curva y = f (x) en c tiene la misma pendiente que la recta secante que une los puntos
(a, f (a)) y (b, f (b)).

Miguel Angel Cifredo Campos


macifredo@gmail.com

El teorema del valor medio es uno de los resultados basicos del calculo, fundamentalmente por su utilizacion en
la demostracion de muchos otros resultados. Una de las consecuencias mas bonitas es la siguiente: Si f 0 (x) = 0
para todo punto x (a, b) entonces f es constante en (a, b).

2.4.6. Funciones crecientes y decrecientes


Una funcion f es (estrictamente) creciente en un intervalo I si para todo par de puntos x1 y x2 en I tales
que x1 < x2 se satisface f (x1 ) < f (x2 ). Analogamente, una funcion f es (estrictamente) decreciente en un
intervalo I si para todo par de puntos x1 y x2 en I tales que x1 < x2 se satisface f (x1 ) > f (x2 ).
Si la funcion f es derivable, podemos utilizar el signo de la derivada f 0 (x) para saber si una funcion es creciente
o decreciente:
(1) Si f 0 (x) > 0 para todo x en (a, b) entonces f es creciente en (a, b).
(2) Si f 0 (x) < 0 para todo x en (a, b) entonces f es decreciente en (a, b).
(3) Si f 0 (x) = 0 para todo x en (a, b) entonces f es constante en (a, b).

Figura 2.3: Crecimiento y decrecimiento de una funcion.

Las anteriores propiedades nos permiten elaborar la siguiente gua para determinar los intervalos donde una funcion derivable es creciente o decreciente.

(1) Localizar los puntos crticos de f


(2) Determinar el signo de f 0 en cada uno de los intervalos determinados por dos puntos crticos consecutivos.
(3) Utilizar las propiedades anteriores para cada uno de los intervalos obtenidos.

Una vez determinados los intervalos de crecimiento y decrecimiento de una funcion f es muy facil determinar si
los puntos crticos obtenidos son maximos o mnimos relativos, segun las siguientes reglas (ver Figura 2.3):
(1) Si f 0 cambia de negativa a positiva en c entonces f (c) es un mnimo relativo de f .
(2) Si f 0 cambia de positiva a negativa en c entonces f (c) es un maximo relativo de f .
(3) Si f 0 no cambia de signo en c entonces f (c) no es ni maximo ni mnimo relativo.

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.4.7. Concavidad y puntos de inflexion


Si f es una funcion derivable en un intervalo abierto (a, b), se dice que la grafica de f es concava hacia arriba
si f 0 es creciente en dicho intervalo, y concava hacia abajo si f 0 es decreciente en dicho intervalo. Observemos
que las definiciones anteriores significan que la grafica de f se encuentra por arriba (resp. abajo) de todas sus
tangentes.
En ocasiones se utilizan los terminos concava y convexa para las graficas que son concavas hacia arriba y concavas
hacia abajo, respectivamente.

Figura 2.4: Concavidad de una funcion.

La determinacion de los intervalos de concavidad (hacia arriba y hacia abajo) puede obtenerse teniendo en cuenta
el signo de la derivada segunda, segun la siguiente propiedad:

(1) Si f 00 (x) > 0 para todo x en (a, b) entonces la grafica de f es concava hacia arriba.
(2) Si f 00 (x) < 0 para todo x en (a, b) entonces la grafica de f es concava hacia abajo.
(3) Si f 00 (x) = 0 para todo x en (a, b) entonces f es una funcion lineal.

Un punto (c, f (c)) se dice que es un punto de inflexion de una curva y = f (x) si la grafica de f cambia de
concava hacia arriba a concava hacia abajo, o viceversa, en dicho punto.
Como consecuencia de la definicion, la recta tangente a la curva y = f (x) en el punto de inflexion corta a la
grafica de f . Ademas, si (c, f (c)) es un punto de inflexion de la grafica de f entonces f 00 (c) = 0 o f 00 no esta
definida en x = c.
Finalizamos esta seccion con el criterio de la derivada segunda para la determinacion de los extremos relativos. El
criterio se basa en que en que si f 0 (c) = 0 y existe un intervalo de c donde la grafica de f es concava hacia abajo
entonces f (c) es un maximo de f ; por el contrario, si la grafica de f es concava hacia arriba entonces f (c) es un
mnimo de f .

(1) Si f 00 (c) > 0 entonces f (c) es un mnimo relativo.


(2) Si f 00 (c) < 0 entonces f (c) es un maximo relativo.
(3) Si f 00 (c) = 0 entonces el criterio no decide.

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.4.8. Representacion de funciones


Para realizar correctamente la grafica de una funcion f es conveniente seguir los pasos que a continuacion se
indican:
Dominio
Intersecciones con los ejes
Simetras
Puntos de discontinuidad
Asntotas verticales
Asntotas horizontales
Crecimiento y decrecimiento
Extremos relativos
Concavidad y puntos de inflexion

En ocasiones no es necesario calcular todos los apartados anteriores. Suelen ser imprescindibles el dominio, las
asntotas (horizontales y verticales) y los siguientes puntos: de interseccion con los ejes, extremos relativos y de
inflexion.

2.5. Teorema de Taylor

2.5.1. Sucesiones y lmites de sucesiones


Una sucesion {an } es una funcion cuyo dominio es el conjunto de los numeros naturales (o enteros positivos: 1,
2, 3, . . . ). Los valores a1 , a2 , . . . se llaman los terminos de la sucesion.

2.5.1.1. Lmites de sucesiones

Es posible que conforme vaya aumentando el valor de n los correspondientes numeros an se vayan aproximando
a un numero fijo L. Si esto ocurre, se dice que la sucesion es convergente y su lmite es L:
lim an = L

En caso contrario diremos que la sucesion es divergente. La definicion rigurosa es la siguiente:

La sucesion {an } es convergente con lmite L si para todo numero  > 0 existe M > 0 tal que |an L| < 
siempre que n > M .
A veces es mas facil calcular el lmite de una funcion que el de una sucesion y esto puede permitirnos, aunque no
lo parezca, resolver lmites de sucesiones. El siguiente resultado nos ofrece la clave.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Sea f una funcion de una variable real tal que lim f (x) = L. Si {an } es una sucesion tal que an = f (n)
x
entonces
lim an = L.

Los lmites de sucesiones satisfacen propiedades similares a los lmites de funciones, ya descritos en una seccion
anterior. Los recordamos aqu. Sean {an } y {bn } dos sucesiones tales que
lim an = L

lim bn = K.

Entonces:

(1) lim (an bn ) = L K.


n

(2) lim (can ) = cL.


n

(3) lim (an bn ) = LK.


n

(4) lim (an /bn ) = L/K, si bn 6= 0 y K 6= 0.


n

Otras propiedades importantes de los lmites de sucesiones son las siguientes.

(1) Si lim an = L = lim bn y existe un entero N tal que an 6 cn 6 bn para todo n > N entonces
n

lim cn = L.

(2) Si lim |an | = 0 entonces lim an = 0.


n

2.5.1.2. Tipos de sucesiones

Una sucesion {an } se dice monotona si sus terminos son no decrecientes


a1 6 a2 6 a 3 6 6 an 6
o no crecientes
a 1 > a2 > a3 > > an >
Una sucesion {an } se dice acotada si existe un numero real positivo M tal que |an | 6 M para todo n. El numero
M se denomina cota (superior) de la sucesion.
Uno de los principales resultados acerca de sucesiones acotadas y convergentes es el siguiente: Toda sucesion
monotona y acotada es convergente .

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.5.2. Polinomios de Taylor y aproximacion


El objetivo fundamental de esta seccion es mostrar como se pueden utilizar polinomios para aproximar otras
funciones. Para ello, lo primero que debemos hacer es fijar un punto c alrededor del cual vamos a realizar la
aproximacion. Este punto c es el centro de la aproximacion y el objetivo es encontrar el polinomio (de un cierto
grado predeterminado) que mejor se aproxima (en un cierto sentido) a la funcion f en un entorno del punto c.
Si f tiene n derivadas en c, el polinomio
Pn (x) = f (c) + f 0 (c)(x c) +

f 00 (c)
f (n) (c)
(x c)2 + +
(x c)n
2!
n!

se denomina el n-esimo polinomio de Taylor de f centrado en c. Si c = 0, entonces el polinomio anterior se


denomina el n-esimo polinomio de Maclaurin de f .
Cualquier metodo de aproximacion tiene una utilidad relativa (mas bien poca) si se desconoce el error que se
comete. Para medir la precision al aproximar un valor f (x) por el polinomio de Taylor Pn (x) descomponemos
f (x) = Pn (x) + Rn (x), donde Rn (x) es el resto. El error cometido en la aproximacion es el valor absoluto del
resto, es decir,
error = |Rn (x)| = |f (x) Pn (x)|.
El siguiente teorema estima el error anterior.
Teorema de Taylor. Si una funcion f es derivable hasta el orden n + 1 en un intervalo (a, b) conteniendo a c,
entonces para todo x en (a, b) existe un numero z entre x y c tal que
f (x) = Pn (x) + Rn (x),

Rn (x) =

f (n+1) (z)
(x c)n+1 .
(n + 1)!

La expresion anterior de Rn (x) se denomina forma de Lagrange para el resto. A la hora de utilizar el teorema
anterior no se trata de encontrar explcitamente el valor de z si no mas bien encontrar cotas para f (n+1) (z), que
nos daran una idea mas o menos precisa del tamano del resto.

2.5.3. Series de potencias: coeficientes y radio de convergencia


Una serie de potencias es una serie infinita de la forma

a n xn = a 0 + a 1 x + a 2 x 2 + a 3 x 3 + + a n x n +

n=0

donde x denota una variable. De forma general, una serie de potencias centrada en c es una serie infinita de la
forma

X
an (x c)n = a0 + a1 (x c) + a2 (x c)2 + a3 (x c)3 + + an (x c)n +
n=0

Los numeros {an } se denominan los coeficientes de la serie.


Para una serie de potencias centrada en c ha de ocurrir exactamente una de las tres posibilidades siguientes:
1. La serie converge solo en c.
2. Existe un numero real R > 0 tal que la serie converge (absolutamente) si |xc| < R y diverge si |xc| > R.

Miguel Angel Cifredo Campos


macifredo@gmail.com

3. La serie converge para todo x.


El numero R se llama radio de convergencia de la serie de potencias. Si la serie converge solo en c diremos que
el radio de convergencia es cero, y si la serie es convergente para todo x diremos que el radio de convergencia es
infinito. El conjunto de valores x donde la serie es convergente se denomina el intervalo de convergencia de la
serie de potencias.

2.5.4. Operaciones con series de potencias


Las operaciones basicas con series de potencias son las siguientes. Sean
f (x) =

X
n=0

a n xn

g(x) =

bn xn

n=0

dos series de potencias. Entonces:

(1) f (kx) =

a n k n xn

n=0

(2) f (xm ) =

an xnm

n=0

(3) f (x) g(x) =

(an bn )xn

n=0

(4) f (x)g(x) =

n
X

n=0

m=0

!
am bnm

xn

2.5.5. Series de Taylor y de Maclaurin


P
n
Si f (x) =
n=0 an (x c) es una serie de potencias (convergente) entonces los coeficientes {an } de la serie
quedan determinados por
f (n) (c)
.
an =
n!
Como consecuencia, si una funcion f (x) admite un desarrollo en serie de potencias, tal desarrollo tiene que ser
necesariamente el siguiente:

X
f (n) (c)
(x c)n .
n!
n=0
La serie anterior se denomina serie de Taylor en c. Cuando c = 0, tal serie se conoce con el nombre de serie de
Maclaurin de f .
Una funcion f (x) se dice que es analtica si coincide con su serie de potencias en todos los puntos del dominio,
es decir, si

X
f (n) (c)
(x c)n .
f (x) =
n!
n=0
Algunas de las series de potencias asociadas a funciones elementales aparecen recogidas en la Tabla 2.1, junto con
los intervalos de convergencia.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Funcion
1
1+x

Serie

(1)n xn

Intervalo
1 < x < 1

n=0

ln(x)

X
(1)n1
(x 1)n
n
n=1

0<x62

ex

X
xn
n!
n=0

< x <

sin(x)

X
(1)n x2n+1
(2n + 1)!
n=0

< x <

cos(x)

X
(1)n x2n
(2n)!
n=0

< x <

usuales.
Tabla 2.1: Series de potencias asociadas a algunas de las funciones m as

2.6. Calculo Numerico

2.6.1. Metodos numericos de resolucion de ecuaciones


Uno de los problemas mas basicos del analisis numerico consiste en encontrar los valores x que satisfacen una determinada ecuacion f (x) = 0, para una funcion f dada. Este problema, conocido como el problema de busqueda
de races, no es un problema trivial y prueba de ello es que sigue estando de plena actualidad. La dificultad no estriba en encontrar metodos para obtener soluciones, sino encontrar metodos que permitan encontrar las soluciones
en un tiempo razonable. En esta seccion vamos a discutir tres metodos: el algoritmo de biseccion, el metodo de
iteracion del punto fijo y el metodo de Newton-Raphson.

2.6.1.1. Algoritmo de biseccion

La justificacion teorica de este metodo debemos buscarla en el teorema de Bolzano: si f es una funcion continua
en [a, b] con signos opuestos en los extremos (es decir, f (a)f (b) < 0), entonces existe un cero de f en (a, b).

El algoritmo de biseccion o metodo de busqueda


binaria puede describirse como sigue. Comenzamos definiendo a1 = a y b1 = b, y sea p1 el punto medio del intervalo (a1 , b1 ). Si f (p1 ) = 0, ya hemos encontrado el cero.
De lo contrario, f (p1 ) 6= 0 y entonces puede suceder una de las dos afirmaciones siguientes:
1. f (p1 )f (a1 ) < 0. En este caso tomamos a2 = a1 y b2 = p1 .
2. f (p1 )f (b1 ) < 0. En este caso tomamos a2 = p1 y b2 = b1 .
Ahora repetimos el proceso anterior al intervalo [a2 , b2 ].

Miguel Angel Cifredo Campos


macifredo@gmail.com

y6
f (b)

(b, f (b))

p1

p2

f (a)
(a, f (a))

Figura 2.5: Algoritmo de biseccion.

Observemos que en cada etapa la longitud del intervalo resultante es la mitad de la longitud del intervalo precedente, por lo que
1
1
L([an , bn ]) = n L([a, b]) = n (b a)
2
2
Esto significa que, siempre que se verifiquen las condiciones del teorema de Bolzano, el metodo proporciona una
solucion, ya que la sucesion {pn } es de Cauchy y, por tanto, convergente.
No obstante, en la practica no se suele encontrar el valor exacto de la solucion por lo que conviene introducir algun
mecanismo de paro. Algunos de los mecanismos de paro mas usuales son:

(1) Fijar un numero maximo n0 de iteraciones.


(2) Seguir hasta que |pn pn1 | < .
(3) Seguir hasta que

|pn pn1 |
<  con pn 6= 0. Este mecanismo es el mejor criterio de paro, ya que mide el
|pn |

error relativo.
(4) Seguir hasta que |f (pn )| < .

2.6.1.2. Metodo de iteracion del punto fijo

Un punto fijo de una funcion g es un punto a tal que g(a) = a. Dada una funcion f , podemos considerar
la funcion g(x) = x f (x), de forma que a es un cero de f si y solo si a es punto fijo de g. Por tanto, la
determinacion de puntos fijos puede ayudar a la determinacion de races.
En este punto surge un problema: todas las funciones tienen puntos fijos? Si la respuesta es negativa, entonces
que condiciones debe satisfacer una funcion para que tenga puntos fijos?
Condiciones para la existencia de puntos fijos. Si g es una funcion continua definida en [a, b] y con valores en el
mismo intervalo, entonces g tiene un punto fijo. Si ademas g es derivable en (a, b) y satisface |g 0 (x)| 6 k < 1 en
(a, b) entonces solo existe un punto fijo.
Si g es una funcion que satisface el resultado anterior y p0 es un punto cualquiera del intervalo [a, b] entonces la
sucesion
pn = g(pn1 )

Miguel Angel Cifredo Campos


macifredo@gmail.com

y
b

y=x
6

g(p) = p
y = g(x)
a
-

del punto fijo.


Figura 2.6: Metodo
de iteracion

converge al u nico punto fijo p de g en [a, b]. Ademas, una cota para el error cometido si se utiliza pn para aproximar
a p viene dada por
|pn p| 6 kn max{p0 a, b p0 }.

2.6.1.3. Metodo de Newton-Raphson

Este metodo, tambien conocido solo como metodo de Newton, es uno de los algoritmos mas conocidos y poderosos
en la resolucion de ecuaciones f (x) = 0. La idea del metodo es construir una sucesion de puntos que se aproximan
a la solucion utilizando para ello las rectas tangentes a la funcion f .

y = f (x)
6

p0
0

p2

p1

Figura 2.7: Esquema del metodo


de Newton.

La justificacion teorica del metodo es la siguiente. Sea p el punto fijo y consideremos un punto y proximo a p que
no es una raz de f 0 , es decir, f 0 (y) 6= 0. Utilizando el polinomio de Taylor de grado 1 para la funcion f alrededor
del punto y obtenemos
f 00 (z)
(x y)2 ,
f (x) = f (y) + f 0 (y)(x y) +
2
donde z es un numero entre x e y. Particularizando la ecuacion anterior en x = p obtenemos
0 = f (y) + f 0 (y)(p y) +

f 00 (z)
(p y)2 .
2

Miguel Angel Cifredo Campos


macifredo@gmail.com

Si suponemos que |p y| es pequeno, entonces (p y)2 es despreciable frente a |p y| por lo que la ecuacion
anterior queda 0 f (y) + f 0 (y)(p y). Despejando p es esta ecuacion se obtiene
py

f (y)
,
f 0 (y)

lo que es una aproximacion mejor a p que y. El metodo de Newton consiste en considerar la sucesion de puntos
pn = pn1

f (pn1 )
, n > 1.
f 0 (pn1 )

En consecuencia, el metodo no puede seguir aplicandose cuando f 0 (pn1 ) = 0 para algun n.

2.6.2. Interpolacion polinomica


El problema de la interpolacion polinomica consiste en determinar el polinomio de menor grado que pasa por
n + 1 puntos (x0 , y0 ), . . . , (xn , yn ) prefijados. El grado de dicho polinomio es a lo mas n.

2.6.2.1. Polinomio de interpolacion de Lagrange

Si (x0 , y0 ), . . . , (xn , yn ) son n + 1 pares de puntos tales que sus abcisas x0 , x1 , . . . , xn son todas distintas,
entonces existe un u nico polinomio P , denominado polinomio interpolante de Lagrange, de grado a lo mas n
con la propiedad de que
k = 0, 1, . . . , n.
P (xk ) = yk ,
Este polinomio esta dado por
P (x) = y0 Ln,0 (x) + y1 Ln,1 (x) + . . . + yn Ln,n (x) =

n
X

yk Ln,k (x)

k=0

donde
Ln,k (x) =

n
Y
i=0,i6=k

(x xi )
.
(xk xi )

Una pregunta importante en analisis numerico es la referida al error cometido cuando se realiza una aproximacion.
En este caso, el termino residual o cota de error cometido en la aproximacion de una funcion por su polinomio
interpolante viene dado en el siguiente resultado.
Cota de error. Sea f una funcion suficientemente derivable en el intervalo [a, b] y consideremos (x0 , y0 ), . . . ,
(xn , yn ) n + 1 pares de puntos tales que yk = f (xk ) para todo k = 0, 1, . . . , n. Entonces
f (x) = P (x) +

f (n+1) (z)
(x x0 )(x x1 ) (x xn ),
(n + 1)!

con z (a, b), donde P es el polinomio interpolante de Lagrange.


Observemos la similitud existente entre el resto en la aproximacion anterior y el resto en el polinomio de Taylor
estudiado anteriormente.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ln,k (x)
6

x0

x1

xk

xk+1

xk1

xn

xn1

Figura 2.8: Polinomio interpolante de Lagrange.

2.6.2.2. Metodo de interpolacion iterada

El metodo descrito en la seccion anterior para calcular el polinomio interpolante es muy complicado y poco
practico. En primer lugar, la precision del polinomio no se puede determinar hasta que los calculos han sido
completados. En segundo lugar, los calculos realizados para la obtencion de unos polinomios interpolantes no
se pueden utilizar para calcular los polinomios interpolantes de grados superiores: siempre es necesario partir de
cero. En esta seccion vamos a describir un metodo que permite aprovechar el trabajo realizado. La justificacion
teorica del metodo es el siguiente resultado.

Sea f una funcion definida en x0 , x1 , . . . , xn y supongamos que m1 , m2 , . . . , mk son k enteros distintos con
0 6 mi 6 n para cada i. El polinomio de Lagrange de grado menor que k que coincide con f en xm1 , xm2 , . . . ,
xmk se denota por Pm1 ,m2 ,...,mk . Si xj , xi son dos numeros distintos y
P (x) =

(x xj )P0,1,...,j1,j+1,...,k (x) (x xi )P0,1,...,i1,i+1,...,k (x)


(xi xj )

entonces P es el polinomio interpolante de Lagrange de grado menor o igual que k que interpola a f en x0 , x1 ,
. . . , xk .

2.6.2.3. Metodo de diferencias divididas

Los metodos que nos permiten representar explcitamente el polinomio interpolante a partir de datos tabulados se
conocen con el nombre de metodos de diferencias divididas. Sean x0 , x1 , . . . , xn puntos distintos y consideremos Pn el polinomio de Lagrange que interpola a f en dichos puntos. Entonces existen constantes apropiadas a0 ,
a1 , . . . , an tales que
Pn (x) = a0 + a1 (x x0 ) + a2 (x x0 )(x x1 ) + + an (x x0 ) (x xn1 ).
Tales constantes pueden determinarse de la siguiente manera. En primer lugar, a0 = Pn (x0 ) = f (x0 ). Si ahora
evaluamos en x1 se obtiene f (x0 ) + a1 (x1 x0 ) = Pn (x1 ) = f (x1 ) de donde
a1 =

f (x1 ) f (x0 )
.
x1 x0

Miguel Angel Cifredo Campos


macifredo@gmail.com

Para determinar el resto de constantes vamos a introducir la siguiente notacion.


f [xi ] =
f [xi , xi+1 ] =
..
.
f [xi , xi+1 , . . . , xi+k1 , xi+k ] =

f (xi ),
f [xi+1 ] f [xi ]
,
xi+1 xi
f [xi+1 , . . . , xi+k ] f [xi , . . . , xi+k1 ]
xi+k xi

Ahora es un mero ejercicio de manipulacion algebraica deducir que


ak = f [x0 , x1 , . . . , xk ],

3.

k = 0, 1, . . . , n.

DE LOS CONOCIMIENTOS
ACTIVIDADES DE APLICACION
2

A.2.1. Hallar la ecuacion de la recta tangente a la curva y = 32x

+1

en el punto (0, 3).

A.2.2. Dada la parabola de ecuacion y = x2 8x + 12, determinar el punto donde la tangente es paralela al eje
de abscisas.
A.2.3. Escribir la ecuacion de la recta tangente a la hiperbola xy = 1 en el punto de abscisa x = 3.
A.2.4. En que punto de la grafica de la funcion f (x) = x2 6x + 8 la tangente es paralela al eje de abscisas?
A.2.5. Determinar los puntos de la curva y = x3 + 9x2 9x + 15 en los cuales la tangente es paralela a la recta
y = 12x + 5.
A.2.6. Determinar los puntos de la curva y = x4 7x3 + 13x2 + x + 1 que tienen la tangente formando un a ngulo
de /4 radianes con el eje de abcisas.
A.2.7. Probar que la recta tangente a la curva f (x) = log2 (x) en el punto (a, f (a)) se traza uniendolo con el
punto (0, f (a) 2 log a).
A.2.8. Obtener las ecuaciones de la rectas tangente y normal a la curva y = x3 en los puntos (1, 2) y (2, 8).
A.2.9. Obtener las ecuaciones de la rectas tangente y normal a la curva y = (x + 1)(3 x)1/3 en el punto (2, 3).
A.2.10. La curva dada por y = x2 + ax + b pasa por el punto (2, 1) y alcanza un extremo relativo en x = 3.
Hallar a y b.
A.2.11. Hallar a, b, c y d para que la curva dada por y = ax3 +bx2 +cx+d tenga un maximo en el punto (2, 21)
y un mnimo en el punto (1, 6).
A.2.12. Hallar dos numeros cuya suma sea 20 y su producto el mayor posible.
A.2.13. Descomponer el numero 25 en dos sumandos tales que el doble del cuadrado del primero mas el triple
del cuadrado del segundo sea mnimo.
A.2.14. Calcular las dimensiones del mayor rectangulo cuyo permetro es 40 metros.
A.2.15. Demostrar que la suma de un numero real positivo no nulo y su inverso es mayor o igual que 2.
A.2.16. Hallar dos numeros cuya suma es 18, sabiendo que el producto del uno por el cuadrado del otro ha de ser
maximo.
A.2.17. Hallar las dimensiones de un campo rectangular de 3600 metros cuadrados de superficie para poderlo
cercar mediante una valla de longitud mnima.

Miguel Angel Cifredo Campos


macifredo@gmail.com

A.2.18. Se quiere vallar un campo rectangular que esta junto a un camino. Si la valla del lado del camino cuesta
800 pesetas/metro y la de los otros lados cuesta 100 pesetas/metro, hallar el a rea del mayor campo que se
puede cercar con 288000 pesetas.
A.2.19. Un jardinero ha de construir un parterre en forma de sector circular con permetro de 20 metros. Cual
sera el radio que da el parterre de a rea maxima? Cual sera la amplitud en radianes del sector?
A.2.20. Los barriles que se utilizan para almacenar petroleo tienen forma cilndrica y una capacidad de 160 litros.
Hallar las dimensiones del barril para que la chapa empleada en su construccion sea mnima.
A.2.21. De todos los triangulos isosceles de 12 metros de permetro, hallar las dimensiones del que tenga a rea
maxima.
A.2.22. Entre todos los rectangulos inscritos en una circunferencia de 12 metros de radio, hallar las dimensiones
del que tenga a rea maxima.
A.2.23. Averiguar como ha de ser un triangulo isosceles de a rea maxima inscrito en una circunferencia de radio
r.
A.2.24. Entre todos los cilindros rectos de volumen fijo V , hallar el de menor superficie.
A.2.25. Una hoja de papel debe contener 18 centmetros cuadrados de texto impreso. Los margenes superior e
inferior deben tener 2 centmetros cada uno y los laterales 1 centmetro. Calcular las dimensiones de la hoja
para que el gasto de papel sea mnimo.
A.2.26. Hallar los puntos de la curva y 2 = 6x cuya distancia al punto (4, 0) sea mnima.
A.2.27. Determinar la distancia mnima del origen a la curva xy = 1.
A.2.28. Determinar las dimensiones de una piscina no cubierta de volumen 32 m3 con un fondo cuadrado, de
manera que la superficie de sus paredes y del suelo necesiten la mnima cantidad de material.
A.2.29. De una lamina cuadrada de 10dm de lado se cortan cuadrados en cada uno de los vertices con el objeto
de hacer una caja abierta por arriba. Calcular el lado del cuadrado que se debe cortar para que el volumen
de la caja sea maximo.
A.2.30. Las agujas de un reloj miden 4 y 6cm. Uniendo sus extremos se forma un triangulo. Determinar el
instante entre las 12h y las 12h30m en el cual el a rea del triangulo es maxima.
A.2.31. La tangente en un punto a una curva es paralela al eje horizontal. Que puede decirse de su inclinacion?
Y de su pendiente? Y de la derivada de la curva en ese punto?
A.2.32. a) Calcular el polinomio de Taylor de tercer grado alrededor de x0 = 0 para f (x) = (1 + x)1/2 .

b) Usar el polinomio de la parte (a) para aproximar 1.1.


A.2.33. Con el polinomio de Taylor de tercer grado P3 (x) obtenido en el ejercicio anterior, aproximar f (0.1),
f (0.5), f (1), f (2) y f (10). Calcular el error cometido en cada caso.
A.2.34. Encontrar el polinomio de Taylor de grado 2 para f (x) = x2 3 alrededor del punto
a) x0 = 1.
b) x0 = 0.
A.2.35. Obtener el polinomio de Taylor de tercer grado para f (x) = (1 + x)2 alrededor de x0 = 0, y usar este
polinomio para aproximar f (0.05).
A.2.36. Sea f (x) = ln(1 + x). Encontrar el polinomio de Taylor de grado 4 para f alrededor de x0 = 0, y usarlo
para aproximar ln(1.1).
A.2.37. Usando los numeros, o nodos, x0 = 2, x1 = 2.5 y x2 = 4, calcular el polinomio interpolante de Lagrange
de segundo grado para la funcion f (x) = 1/x. Usar dicho polinomio para calcular el valor de f (3) y obtener
el error cometido.

Miguel Angel Cifredo Campos


macifredo@gmail.com

A.2.38. Usar los polinomios interpolantes de Lagrange apropiados, de grado uno, dos, tres y cuatro, para aproximar
(a) f (2.5) si
f (2) = 0.5103757, f (2.2) = 0.5207843, f (2.4) = 0.5104147,
f (2.6) = 0.4813306, f (2.8) = 0.435916.
(b) f (0) si
f (0.3) = 0.20431, f (0.1) = 0.08993, f (0.1) = 0.11007,
f (0.3) = 0.39569, f (0.5) = 0.79845.
(c) f (1.25) si
f (1) = 0.24255, f (1.1) = 0.48603, f (1.2) = 0.8616, f (1.3) = 1.59751, f (1.4) = 3.76155.
(d) f (0.5) si
f (0.2) = 0.9798652, f (0.4) = 0.917771, f (0.6) = 0.8080348,
f (0.8) = 0.6386093, f (1) = 0.3843735.
(e) f (0.2) si
f (0.1) = 1.2314028, f (0.3) = 1.9121188, f (0.4) = 2.3855409,
f (0.5) = 2.9682818, f (0.6) = 3.6801169.
A.2.39. Usar los valores siguientes para construir un polinomio de Lagrange de grado dos o menor. Encontrar
una aproximacion para sen(0.34).
sen 0.3 = 0.29552 sen 0.32 = 0.31457 sen 0.35 = 0.3429
A.2.40. Agregar el valor sen 0.33 = 0.32402 a los datos del ejercicio anterior y construir un polinomio de Lagrange de grado tres o menor. Aproximar sen 0.34.
A.2.41. Usar los valores siguientes para construir una aproximacion polinomica de Lagrange de tercer grado para
f (1.09). La funcion que se esta aproximando es f (x) = log10 tan(x).
f (1) = 0.1924 f (1.05) = 0.2414 f (1.1) = 0.2933 f (1.15) = 0.3492
A.2.42. Usar el polinomio interpolante de Lagrange de grado tres o menor para aproximar cos 0.75 usando los
siguientes valores:
cos 0.698 = 0.7661 cos 0.733 = 0.7432
cos 0.768 = 0.7193 cos 0.803 = 0.6946
A.2.43. La funcion f (x) = x3 + 4x2 10 tiene una raz en [1, 2]. Utilizar el algoritmo de biseccion (10 etapas)
para calcular una aproximacion de la raz. Calcular el error sabiendo que la raz exacta, con nueve cifras
decimales, es p = 1.365230013.
A.2.44. Demostrar que f (x) = x3 x 1 tiene exactamente un cero en el intervalo [1, 2]. Aproximar el cero con
0.01 de precision usando el algoritmo de biseccion.
A.2.45. Usar el algoritmo de biseccion para encontrar soluciones con una exactitud de 0.01 para x4 2x3 4x2 +
4x + 4 = 0 en
(a) [2, 0]
(b) [0, 2]
(c) [1, 2].
A.2.46. Usar el algoritmo de biseccion para encontrar una solucion con una exactitud de 0.01 para x = tan x en
[4, 4.5].
A.2.47. Usar el algoritmo de biseccion para encontrar todas las soluciones de x3 7x2 + 14x 6 = 0 con una
precision de 0.001.
A.2.48. Usar el metodo de iteracion del punto fijo para determinar una solucion exacta a 0.01 para 2 sen x + x =
0 en [1, 2]. Tomar p0 = 1.
A.2.49. Resolver x3 x 1 = 0 para la raz en [1, 2] usando el metodo de iteracion del punto fijo. Obtener una
aproximacion a la raz exacta a 0.01.

Miguel Angel Cifredo Campos


macifredo@gmail.com

A.2.50. Usar el metodo de iteracion del punto fijo para determinar una solucion exacta a 0.001 de x = tan x en
[4, 5].

A.2.51. Aproximar con 0.01 de precision las races de las siguientes ecuaciones en los intervalos dados usando el
metodo de Newton y el metodo de la secante.
(a) x3 2x2 5 = 0 en [1, 4].
(b) x3 + 3x2 1 = 0 en [4, 0].
(c) x cos x = 0 en [0, /2].
(d) x 0.8 0.2 sen x = 0 en [0, /2].

4. ACTIVIDADES PRACTICAS
DEL CAPITULO

4.1. Introduccion
La practica se va a realizar con el programa de calculo matematico DERIVE for Windows, version 4.05, de Soft
Warehouse. DERIVE for Windows permite realizar calculos y manipulaciones matematicas de caracter general,
lo cual significa que realiza muchas cosas de forma aceptable aunque no tiene la potencia de otros programas
especficos. No obstante, DERIVE for Windows permite realizar todos los calculos que un usuario medio puede
necesitar.
En esta practica nos vamos a centrar en el calculo diferencial en una variable. Aprenderemos a calcular lmites
de funciones, determinaremos los maximos, mnimos, y puntos de inflexion de una funcion, lo que nos permitira
representar graficamente dicha funcion (lo cual, dicho sea de paso, hace automaticamente el programa).
Antes de comenzar la practica sera conveniente que recordemos brevemente la botonera de DERIVE for Windows (ver Figura 2.9), ya que simplifica enormemente la introduccion de datos y la realizacion de calculos. Los
botones permiten realizar las siguientes tareas (de izquierda a derecha): New (abrir una nueva hoja de trabajo),
Open (abrir una hoja de trabajo existente), Save (guardar la sesion de trabajo), Print (imprimir la sesion de trabajo), Remove (eliminar la expresion marcada), Unremove (recuperar la u ltima expresion eliminada), Renumber
(renumerar las expresiones), Author expression (introducir una expresion sencilla), Author vector (introducir un vector), Author matrix (introducir una matriz), Simplify (simplificar), Approximate (calcular un valor
aproximado), Solve (resolver algebraicamente o numericamente una expresion), Substitute for variables
(realizar una sustitucion), Calculate limit (calcular un lmite), Calculate derivative (calcular una derivada), Calculate integral (calcular una integral), Calculate sum (calcular una suma), Calculate product
(calcular un producto), 2D-plot window (realizar un grafico bidimensional) y 3D-plot window (realizar un
grafico tridimensional).

Figura 2.9: El uso de la botonera de DERIVE for Windows nos puede simplificar mucho el trabajo. Otro elemento
interesante es la existencia de teclas calientes que nos permiten evitar los menus,
con lo que se gana
en rapidez.

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.2. Ejemplos de ilustracion


Con DERIVE for Windows podemos calcular la derivada (de cualquier orden) de una funcion, el lmite de una
funcion f (x) cuando x tiende a un numero finito x0 o infinito, los maximos, mnimos y puntos de inflexion, y
tambien podemos utilizar la informacion anterior para representar graficamente una funcion. Veamos mediante
ejemplos como hacer cada una de las tareas anteriores.

Hallar el siguiente lmite: lim

x0

ln(1 + x) ln(1 x)
x

Elejimos Author y escribimos (ln(1+x)-ln(1-x))/x. Despues de seleccionar las opciones Calculus|Limit


(o bien pulsamos el boton lim ) nos aparece la ventana de la Figura 2.10. El programa nos solicita la funcion,
la variable, el punto que utilizaremos para el calculo del lmite y el tipo de aproximacion: Left (lmite por la
izquierda), Right (lmite por la derecha) y Both (lmite ordinario). En nuestro caso, seleccionamos x, 0 y Both.
Finalmente para obtener el resultado debemos pulsar la tecla Simplify, con lo que el programa nos devuelve
como valor del lmite el numero 2.

Figura 2.10: Ventana del programa que nos permite calcular lmites de funciones.

Calcular la derivada de (3x2 + 5x 1)4

Elejimos Author e introducimos la expresion (3x^2+5x-1)^4. A continuacion seleccionamos las opciones


Calculus|Differentiate (o bien pulsamos el boton ) y nos aparece la ventana de la Figura 2.11. Entonces
el programa nos ofrece la expresion que queremos derivar (por defecto la que estaba seleccionada), la variable de
derivacion (por defecto x) y el orden de la derivada que queremos calcular (por defecto 1). Tras pulsar la tecla
obtenemos 4(6x + 5)(3x2 + 5x 1)3 . Si queremos desarrollar la expresion anterior deberemos seleccionar las
opciones Simplify|Expand (o simplemente teclear Ctrl+B) y nos aparece la ventana de la Figura 2.12. Tras
pulsar el boton Expand obtendremos el siguiente polinomio: 648x7 + 3780x6 + 7452x5 + 4800x4 884x3
960x2 + 276x 20.

Calcular la derivada decima de e2x+1

Seguimos los mismos pasos que en el ejemplo anterior. Introducimos la expresion #e^(2x+1) y seleccionamos

Miguel Angel Cifredo Campos


macifredo@gmail.com

Figura 2.11: Ventana del programa que nos permite derivar funciones.

Figura 2.12: Ventana del programa que nos permite desarrollar y simplificar expresiones.

las opciones Calculus|Differentiate. La variable de derivacion es x y el orden de derivacion es 10. Despues


de desarrollar el resultado (pulsando la tecla Simplify) se obtiene 1024e2x+1 .

Calcular los extremos y puntos de inflexion de la funcion 12x5 105x4 + 40x3 + 840x2 1440x

En este caso, lo conveniente es almacenar la funcion. Para ello, elegimos Declare y a continuacion Function
definition, y nos aparece la ventana de la Figura 2.13. El programa nos solicita el nombre, la variable (o variables) independiente y la definicion de la funcion. Tecleamos el nombre de la funcion (por ejemplo, F), el nombre
de la variable (por ejemplo, x) y la definicion mediante la expresion 12x^5-105x^4+40x^3+840x^2-1440x.
Para los extremos debemos calcular los ceros de la derivada; para ello, seleccionamos las opciones Calculus|
Differentiate (con los valores de x para la variable y de 1 para el orden) y obtenemos 64x4 420x3 +
120x2 + 1680x 1440. A continuacion determinamos los ceros de este polinomio mediante las opciones
Solve|Algebraically, obteniendo x=1, x=2, x=-2, x=6.
Para determinar el caracter de estas races, debemos calcular el valor de la derivada segunda en ellos. Para ello,
seleccionamos la expresion que contiene la definicion de la funcion F o la expresion que contiene su derivada.
A continuacion seleccionamos las opciones Calculus|Differentiate, con el valor x para la variable y 2 o
1 para el orden (dependiendo de si hemos seleccionado la funcion F o su derivada). Una vez hemos calculado
la derivada segunda la almacenamos en una funcion, que llamaremos G, siguiendo los mismos pasos que antes
(Declare y Function definition. . . ), recordando que para copiar automaticamente la expresion seleccionada

Miguel Angel Cifredo Campos


macifredo@gmail.com

Figura 2.13: Venta del programa que permite declarar una funcion.
Existen ventanas similares para declarar el
valor de una variable (constante, vector o matriz).

debemos pulsar F3. Si ahora queremos calcular el valor de G en las races previamente calculadas, solo tenemos
que introducir la expresion G(1) y pulsar Simplify (analogamente para las demas), obteniendo los siguientes
resultados : G(1)=900 (luego en x=1 hay un mnimo), G(2)=-960 (maximo en x=2), G(-2)=-5760 (maximo
en x=-2) y G(6)=9600 (mnimo en x=6). Otra posibilidad es calcular los cuatro valores al mismo tiempo; para
ello introducimos la expresion como un vector de 4 elementos como [G(1),G(2),G(-2),G(6)], y el programa nos devolvera la solucion como un vector: [900, -960, -5760, 9600]. Para determinar las ordenadas
correspondientes a cada abscisa habremos de calcular F (1), F (2), F (2) y F (6), respectivamente, resultando:
F (1) = 653, F (2) = 496, F (2) = 3856 y F (6) = 12528.
Para calcular los puntos de inflexion debemos obtener los ceros de la derivada segunda. Si la precision de los
calculos es Exact entonces obtendremos la solucion en forma trigonometrica. Para obtener un resultado que
podamos manejar mas comodamente es conveniente aproximar seguidamente la solucion numericamente (utilizando para ello las opciones Simplify|Approximate con el numero de dgitos que nos parezca adecuado). Los
ceros de la derivada segunda que se obtienen son los siguientes (damos tambien la ordenada correspondiente):
(1.51, 573.59), (0.98, 2079.11) y (4.72, 7904.16).

4.3. Ejercicios de aplicacion


A continuacion se enuncian unos ejercicios sobre calculo diferencial de funciones reales de una variable. Si el
alumno encuentra alguna dificultad debe revisar detenidamente los ejemplos anteriores.

9n4 n + 3
.
(a) Calcular el lmite lim
n0 2n2 + 3n 1
(b) Calcular el lmite lim (1 x) tan(
x1

x
).
2

(c) Calcular la derivada quinta de e3x ln(x).


(d) Calcular los extremos y los puntos de inflexion de la funcion x4 2x2 .

4.4. Bibliografa
C. Paulogorron y C. Perez. Calculo matematico con DERIVE para PC, Ed. RA-MA, 1a Ed., 1994.

Miguel Angel Cifredo Campos


macifredo@gmail.com

DEL CAPITULO

5. BIBLIOGRAFIA
R.L. BURDEN y J.D. FAIRES Analisis Numerico, Grupo Editorial Iberoamericana, 1985. Secciones 2.1, 2.2,
2.3, 3.2, 3.3 y 3.4.
R.E. LARSON, R.P. HOSTETLER y B.H. EDWARDS Calculo y Geometra Analtica, 5a ed., vol. 1. McGrawHill, Madrid, 1995. Captulos 2,3 y 4.
J. STEWART Calculo, 2a ed. Grupo Editorial Iberoamerica, Mexico, 1994. Captulos 1,2, y 3.

6. PREGUNTAS DE EVALUACION
E.2.1. Representar graficamente la funcion dada por
y=

4x2 4x + 1
.
5x2 6x + 1

E.2.2. Determinar como ha de ser un triangulo isosceles de a rea maxima inscrito en una circunferencia de radio
r.
E.2.3. Se considera la siguiente tabla de datos:
x
0
1
3
5

f (x)
1
3
2
4

Utilizar interpolacion polinomica para calcular una aproximacion a f (2).


E.2.4. Se dispone de un alambre de longitud L con el que hay que construir un crculo y un cuadrado. Como se
debe dividir el alambre en dos trozos para que la suma de las a reas encerradas por el crculo y el cuadrado
sea mnima? Y para que dicha suma de a reas sea maxima?
E.2.5. Utilizar algun metodo numerico para aproximar, con una precision de 106 , el valor de x tal que la distancia entre el punto (1,0) y los puntos de la parabola (x, y(x)), y(x) = x2 , se hace mnima.

Observacion : Sea cual sea el metodo que se utilice, debe considerarse que un valor aproximado pn se acerca
al valor real con una precision de 106 si se satisface que |pn pn1 | < 106 .
E.2.6. Un pediatra esta realizando un seguimiento del peso de los ninos que pasan por su consulta. Elegida una
ficha al azar de su archivo, observa los siguientes datos:
Edad (anos)
Peso (Kg)

1
9

2
12

4
16

5
18

Miguel Angel Cifredo Campos


macifredo@gmail.com

Utilizar interpolacion polinomica de Lagrange para obtener una aproximacion numerica del peso del nino a
los 3 anos de edad.
E.2.7. Una persona se somete a una dieta de adelgazamiento durante 5 semanas. A continuacion se detalla su
peso al termino de cada una de esas semanas:
Al cabo de...(semanas)
Peso en Kg.

1
880 5

2
87

3
84

4
820 5

5
79

Calcular la ecuacion de un polinomio de grado 4 que relacione las dos variables. Usando dicho polinomio
que peso esperaramos que alcance esta persona si sigue la dieta dos semanas mas?
E.2.8. Representar graficamente la funcion f : R R definida como sigue:
f (x) =

(x 1)(x 2)(x 3)
.
(x 4)(x 5)(x 6)

Calcular solo los elementos que sean indispensables para realizar una representacion grafica correcta.
E.2.9. Utilizar cualquier metodo numerico, de entre los que han sido explicados en las clases de teora, para
calcular una raz de la ecuacion
x3 + 2x 1 = 0
con una cota de error de 00 001.

Miguel Angel Cifredo Campos


macifredo@gmail.com

CLCULO NUMRICO

Miguel Angel Cifredo Campos


macifredo@gmail.com

NDICE TEMTICO
Unidades
I Unidad N " "Teora de errores. Normas vectoriales y matriciales"
"" Introduccin a la teora de errores
""" Errores experimentales y de modelacin
""# Errores de tipo matemtico
""$ Errores absolutos y relativos
""% Grfica del error global
""& Condicionamiento y estabilidad

Pgina
1
3
3
4
4
6
7

"# Cifras significativas

"$ Ejercicios

Actividad Personal

13

"% Normas vectoriales y matriciales

14

1.4.1. Normas vectoriales


1.4.2. Distancia inducida por una norma
1.4.3. Convergencia en espacios normados
1.4.4. Normas matriciales

II.- Unidad N 2

"Sistema de ecuaciones lineales"

2.1. Nmero de condicin


2.1.1. Propiedades del nmero de condicin

2.2. Mtodos por factorizacin PY


2.2.1. Factorizacin de Cholesky(i)

2.3. Mtodos iterados


2.3.1. Mtodos de descomposicin

14
15
15
16

17
18
20
21
22
24
26

2.4. Ejercicios

30

Actividad Personal

39

40

III.- Unidad N 3

"Resolucin de ecuaciones no lineales"

3.1. Acotacin y separacin de races

41

3.2. Mtodo y algoritmo de la biseccin: anlisis de errores

41

3.3. Punto fijo e iteracin funcional

43

3.4. Mtodo de Newton: anlisis de errores y Regla de Fourier

45

3.5. Ejercicios

50

Actividad Personal

62

Miguel Angel Cifredo Campos


macifredo@gmail.com

IV.- Unidad N 4

"Aproximaciones"

63

4.1. Mejor Aproximacin en espacios normados

63

4.2. Aproximacin discreta de mnimos cuadrados

64

4.3. Aproximacin discreta de mnimos cuadrados, caso no lineal

65

4.3.1. Mtodo de Gauss-Newton

66

4.4. Ejercicios

68

Actividad Personal

71

V.- Unidad N 5

"Interpolacin"

72

5.1. Interpolacin polinomial

72

5.1.1. Interpolacin de Lagrange


5.1.2. Interpolacin de Newton
5.1.3. Fenmeno de Runge
5.1.4. Interpolacin de Hermite

72
73
76
77

5.2. Interpolacin por Spline

79

5.2.1. Clculo de los Splines cbicos de interpolacin

79

5.3. Ejercicios

81

Actividad Personal

87

VI.- Unidad N 6 "Integracin Numrica"

88

6.1. Frmulas de cuadratura

88

6.2. Frmulas de Newton-Cotes

90

6.2.1. Frmula del trapecio


6.2.2. Frmula de Simpson

90
91

6.3. Frmulas Compuestas

91
8
91
8

6.3.1. Simpson para


6.3.2. Trapecios para

par
impar

92

6.4. Ejercicios
Actividad Personal
VII.- Unidad N 7 "Solucin Numrica de Ecuaciones Diferenciales Ordinarias"

92
101

102

7.1. Introduccin a las E.D.O.

102

7.2. Mtodo
Taylorde Euler
7.3.1.de
Mtodo
7.3.2. de
Mtodo
de Euler Mejorado y Euler-Cauchy (o de Heun)
7.3. Mtodos
Runge-Kutta

104
106
108
105
109
110

7.4. Ejercicios
Actividad Personal

111
118

7.3.3. Runge-Kutta de tercer y cuarto orden


7.3.4. Runge-Kutta de orden superior

Miguel Angel Cifredo Campos


macifredo@gmail.com

El Anlisis Numrico trata de modelar o disear mtodos para aproximar, de manera eficiente,
la solucin a problemas numricos complejos utilizando operaciones de la aritmtica.
La eficiencia de los mtodos depende tanto de la precisin que se requiera como de la facilidad con que
pueda implementarse.
En la prctica, el problema matemtico se deriva de un fenmeno fsico sobre el cual se hacen
suposiciones para representarlo matemticamente. Muchas veces es ms conveniente encontrar una solucin
aproximada del problema matemtico ms complicado que encontrar una solucin exacta del modelo
simplificado.

Ejemplo de un osciloscopio:
Anlisis de datos en la interaccin con dispositivos de hardware

Los mtodos de clculo se denominan "algoritmos". El algoritmo es una secuencia de operaciones


algebraicas y lgicas que producen la aproximacin al problema matemtico y se espera que tambin
al problema fsico.
En la seleccin del algoritmo se debe tener en cuenta que los cambios tecnolgicos los afectan
significativamente, ya que computacionalmente dependen de la capacidad de almacenamiento de la computadora
y del costo asociado con los tiempos de cmputo.
Adems de esto se toman dos criterios muy evidentes: la rapidez y la precisin. La primera se ve ms
favorecida cuando sean problemas a gran escala, es decir, que el algoritmo ms rpido sera el elegido.

Superficie creada usando spline racional y su polinomio de Taylor

Modelo numrico de un huracn

Dado que un computador est compuesto de dispositivos que realizan las operaciones lgicas y
aritmticas, los procedimientos matemticos deben simplificarse a tal grado que sean accesibles para procesarse
en un computador.
Clculo Numrico

Pgina 1

Miguel Angel Cifredo Campos


macifredo@gmail.com

Las aplicaciones de los mtodos numricos son prcticamente ilimitadas y se requiere conocimiento
en diferentes disciplinas como la economa, fsica, ingeniera, etc.
En especial nuestra asignatura de Clculo Numrico constituye una introduccin a la resolucin
efectiva de los problemas de la Matemtica Aplicada planteados en las asignaturas de Clculo Infinitesimal (I, II,
III o Complemento) y lgebra Lineal, las cuales deben haber proporcionado la base terica necesaria para la
comprensin de los mismos; si no, te invitamos a que refuerces algunos conceptos que te sern de gran ayuda.
El esquema esencial que se sigue en este curso, con respecto a sus temas, es:
Planteamiento del problema.
Algoritmos de resolucin.
Anlisis de los errores.
Ejercicios desarrollados.
Autoevaluacin.
Se considera esencial que se entienda la verdadera dimensin de los problemas (por ejemplo, se trata de
resolver sistemas de miles de ecuaciones en otras tantas incgnitas o calcular la integral de una funcin slo
conocida en un nmero pequeo de puntos).
Slo de esta forma comprender la importancia del estudio de los diferentes errores que se producen en
la resolucin numrica de un problema, as como la necesidad de su control, seguimiento y acotacin.

Vista especular de un cuanto usando datos procedentes


de un microscopio de tnel de barrido.

En la mayora de los casos trataremos de buscar la solucin de una forma iterada, es decir, construyendo
una sucesin convergente a la solucin del problema.
En resumen, el siguiente diagrama explica grficamente todo lo anterior:

Clculo Numrico

Pgina 2

Miguel Angel Cifredo Campos


macifredo@gmail.com

"" Introduccin a la teora de errores


Las tcnicas del Clculo Numrico han experimentado un notable avance desde la aparicin de los PC's.
Dicho tipo de PC's ofrecen la posibilidad de realizar grandes cadenas de clculos en un tiempo prudencial, lo que
se traduce en que muchos mtodos que durante tiempo han permanecido en el terreno de lo utpico e irrealizable
son ahora factibles.
Sin embargo, y dado que el PC trabaja con un determinado nmero de cifras decimales, todos los
nmeros que aparecen en los clculos son redondeados. As por ejemplo, si trabajamos con cinco cifras
decimales e introducimos el nmero # "#$&'( el PC lo redondear a # "#$&( cometiendo un error de ! !!!!!$
que recibe el nombre de error de redondeo. Es evidente que para clculos con pocas operaciones este error es
prcticamente despreciable, pero estamos hablando de que los mtodos que eran utpicos y que resolvemos
ahora con la ayuda del PC constan de gran cantidad de operaciones y, por tanto, de redondeos.
Evidentemente no todos los errores que se comenten son de redondeo, sino que estos pueden ser
producidos por muchas otras causas que estudiaremos en este tema.
Lo que si debe quedar claro es que debido a la gran cantidad de operaciones que vamos a realizar en un
determinado proceso, es necesario realizar un detallado estudio de todos los errores que pueden ser arrastrados
en l, ya que de lo contrario, el resultado no sera fiable.
Comenzaremos, por ello, estudiando los diferentes tipos de errores que pueden producirse en
un proceso de clculo.

""" Errores experimentales y de modelacin


Estos errores son inherentes al planteamiento del problema y pueden ser de dos tipos:

Experimentales
Surgen de la utilizacin de datos afectados de error, bien debido a los aparatos de medida (por falta de
precisin de estos), bien debido a nuestros sentidos (errores personales entre ellos).

De modelizacin
Tienen su raz en la aproximacin de la realidad por modelos matemticos sobre los que se realiza el
estudio. Son generalmente de tipo fsico y debidos a que el modelo matemtico utilizado no refleja exactamente
la realidad sino una aproximacin de sta. Se pueden producir voluntariamente (intencionados) o
involuntariamente (por desconocimiento de algunas leyes).
Un ejemplo tpico de modelizacin es el tiro parablico. Es evidente que la trayectoria de un proyectil
no es exactamente una parbola, ya que sta se producira slo en el caso de que el aire no ofreciera resistencia,
que la gravedad no experimentara variaciones etc., sin embargo es evidente que cada vez que introducimos un
nuevo factor que pueda modificar la trayectoria, el modelo se complica. Es por ello, que resulta prcticamente
imposible tener en cuenta todos estos factores y es necesario despreciar alguno de ellos para que el modelo
resultante sea factible de estudiar. De esta manera, podemos comenzar diciendo que no tendremos en cuenta las
variaciones de la gravedad (estamos cometiendo un error de modelizacin voluntario).
Supongamos ahora que se quiere estimar la posicin de un cometa a partir de los datos obtenidos tras
una serie de observaciones. Es evidente que estos datos vendrn afectados de ciertos errores de medicin debidos
a mltiples causas como puedan ser la falta de precisin de los aparatos, las variaciones producidas por la
refraccin de la luz e incluso a errores personales. Es decir, vienen afectados de errores de experimentacin.

Clculo Numrico

Pgina 3

Miguel Angel Cifredo Campos


macifredo@gmail.com

""# Errores de tipo matemtico


Error de discretizacin
Cuando un computador trabaja con una funcin, por ejemplo con C B# , no lo hace con la funcin en
s sino con una serie de puntos por los que pasa dicha funcin, es decir, el PC no reconoce la funcin C B#
sino la que determinan, por ejemplo, los puntos ";" (" " " #"), (" # " %%), (" $ " '*), , etc. En otras
palabras, convierte un proceso continuo en otro de tipo discreto.
Otro ejemplo de error de discretizacin es el que se comente al sustituir la suma de una serie (infinitos
trminos) por la suma de sus 8 primeros trminos, de tal forma que el error que se comete es menor mientras
mayor sea el nmero de trminos que se
sumen.
Es interesante no discretizar cada modelo matemtico que se realice, sino estudiar familias de procesos
de discretizacin y estudiar si estos procesos son vlidos, en el sentido de que el error de discretizacin que se
comete tienda a cero a medida que se afina el proceso. As
8 por ejemplo, podemos discretizar el clculo de una
funcin sustituyendo
sta por
polinomio
grado
de sutrminos,
desarrollo
en integral
serie), por una
podemos
tambin sustituir
la un
suma
de una de
serie
por (obtenido,
la suma depor
losejemplo,
8 primeros
una
suma finita, etc.
0 B T8 B

"+3 "+3
_

3"

3"

( 0 B.B " +3 0 B3
,

3"

En resumen, no discretizamos el clculo de la funcin /B mediante el polinomio " B


estudiamos el problema de la discretizacin de una funcin mediante un polinomio.

B#
#x

B$
$x

sino que

Error de redondeo
Es el que se comete al manejar cantidades que desbordan la capacidad del aparato que utilizamos. No
puede estudiarse globalmente, sino que su estudio se realiza para cada problema particular.

Error transmitido
Es el que se comete al trabajar con unos datos iniciales afectados de errores. En otras palabras, el que se
transmite de los datos iniciales a la solucin del problema.

Error de truncamiento
Por ejemplo, la evaluacin de funciones mediante desarrollos en series infinitas, obliga a considerar en el
clculo slo un nmero finito de sumandos, truncando el resto de la sumatoria.

""$ Errores absolutos y relativos


Definicin.
. Sea B el valor exacto de un nmero real y B! el valor aproximado. Se define el error absoluto y
se denota por""
& como la diferencia B B! , y se expresa siempre en valor absoluto, es decir:
| & | | B B! |.
Al cociente entre el error absoluto & y el valor real B se le denomina error relativo y se denota por &< .
|& |
Se expresa tambin en valor absoluto, es decir: | &< |
.
|B|
Existen dos maneras de obtener el nmero de cifras decimales significativas de un valor aproximado B!:

por redondeo, cuya expresin es | &|

"
"!:
#

(: cifras decimales exactas)

por truncamiento, cuya expresin es | &| "!:


Clculo Numrico

Pgina 4

Miguel Angel Cifredo Campos


macifredo@gmail.com

Esta ltima expresin se denomina "en el sentido amplio" de la teora de errorres y la que utilizaremos
en este apunte. Debe observarse que ello no indica que han de coincidir las : primeras cifras decimales de B y B! .
Por ejemplo, si B # y B! " **** se tiene que |&| "!% y, por tanto, " **** tiene las cuatro cifras
decimales exactas (aunque no coincidan ninguno de los decimales de # !!!! con los de " ****).
Cuando se trabaja con datos que arrastran errores debe realizarse un estudio del comportamiento
del error de transmisin en cada una de las operaciones bsicas.
Para ello, consideremos los nmeros reales exactos B e C con sus valores aproximados B! e C! . Los
errores absolutos de cada uno de ellos vienen dados por las diferencias &B B B! y &C C C! .

Sumas y diferencias.
La suma (diferencia) exacta de los nmeros B e C es W B C , mientras que la aproximada es
W! B! C! El error de dicha suma (diferencia) viene dado por
&= W W! B C B! C! &B &C
?W & = & B & C & B & C

por lo que

Productos.
&: BC B! C! BC B &B C &C
BC BC B &B C &B &B &C
?T &: B&C C &B

( considerando despreciable &B &C )

Podemos observar entonces que el error absoluto del producto depende de las magnitudes B e C
Trabajando con los errores relativos tenemos que:
&<:

&C
B &C C &B & B & C
&:
&B
&B & C

&<B &<C &<B &<C


BC
BC
C
B
B C

&<: &B &C &B &/C &B &C , por lo que


?VT &<: &B &C

Es decir, el error relativo del producto es (aproximadamente) la suma de los errores relativos de los
factores y, en valor absoluto, es menor o igual a dicha suma.

Cocientes.
&- BC &<B &<C " &<C &#<C
En cuanto al error relativo
&<-

& &<B &<C &<B &<C &<C &<B &<C &#<C


BC

&<B &<C &<B &<C &#<C &<B &<C

?VG &<- &<B &<C

Clculo Numrico

Pgina 5

Miguel Angel Cifredo Campos


macifredo@gmail.com

Funciones.
&0 0 B 0 B! 0 B 0 B &B
0 B 0 B &B 0 w B
&B 0 w B

&#B ww
#x 0 B

&#B w w
0 B &B 0 w B
#x

?0 &0 &B 0 w B

Observacin importante: Aunque no podamos calcular exactamente el valor de 0 w B, podemos


sustituirlo por 0 w B0 ya que el error depende, en gran medida, del valor de &B.

""% Grfica del error global


En un proceso tpico de discretizacin, es decir, en una familia infinita de procesos que dependen de 8
(grado de un polinomio, nmero de trminos de una suma, etc.) sabemos que al aumentar 8 el error de
discretizacin tiende a cero, pero aumenta el nmero de operaciones y por tanto, el error de redondeo.

Figura "" Variacin de los errores de discretizacin y redondeo.

Las grficas (1) y (2) de la Figura "" nos muestran la variacin de los errores de discretizacin y de
8
redondeo, respectivamente, a medida que aumenta el valor de .
El error total que se comete en el proceso completo de discretizacin viene dado por la suma de ambos
errores, es decir:
&.
&<
>
| |=| |+| |
La grfica de la &variacin de dicho error se obtiene, evidentemente, sumando las grficas de las
variaciones de ambos errores, y se muestra en la Figura "#.

Figura "# Variacin del error total en un proceso de discretizacin.

Clculo Numrico

Pgina 6

Miguel Angel Cifredo Campos


macifredo@gmail.com

Puede observarse que la grfica de la variacin del error total presenta un mnimo, lo que nos dice que,
en un proceso de discretizacin, no se puede resolver un problema con un error inferior a dicho mnimo, es decir,
si aumentamos el valor de 8 para disminuir el error de discretizacin, aumenta el error total debido al incremento
del error de redondeo, y si disminuimos el valor de 8 para disminuir el error de redondeo, aumentamos tambin
el error total debido al incremento del error de discretizacin.
As pues, para poder resolver un problema con una precisin determinada, las nicas soluciones
posibles son el trabajar con otra discretizacin diferente (que tienda a cero ms rpidamente) o trabajar con un
mayor nmero de dgitos (disminuir los errores de redondeo).

""& Condicionamiento y estabilidad


Definicin "#. Si el algoritmo (proceso de discretizacin) que se aplica en la resolucin de un problema controla
el error de redondeo, es decir, si ste no se dispara al pasar de una etapa a la siguiente, se dice
que el algoritmo es estable.
Si el mnimo que presenta la grfica del error es grande, el problema se dice que est mal condicionado
y el proceso de discretizacin se dice que es inestable.
Si, por el contrario, una pequea modificacin en los datos va acompaada de una pequea
modificacin en el resultado, se dice que el problema est bien condicionado. En este caso, los errores de
redondeo hacen prcticamente despreciables a los de discretizacin.

"# Cifras significativas


Se considera que las cifras significativas de un nmero son aquellas que tienen significado real o
aportan alguna informacin. Las cifras no significativas aparecen como resultado de los clculos y no tienen
significado alguno. Las cifras significativas de un nmero vienen determinadas por su error. Son cifras
significativas aquellas que ocupan una posicin igual o superior al orden o posicin del error.
Por ejemplo, consideremos una medida de longitud que arroja un valor de &%$# %('% 7 con un error de
! ) 7. El error es por tanto del orden de dcimas de metro. Es evidente que todas las cifras del nmero que
ocupan una posicin menor que las dcimas no aportan ninguna informacin. En efecto, qu sentido tiene dar el
nmero con precisin de diezmilsimas si afirmamos que el error es de casi 1 metro?. Las cifras significativas en
el nmero sern por tanto las que ocupan la posicin de las dcimas, unidades, decenas, etc, pero no las
centsimas, milsimas ni diezmilsimas.
Cuando se expresa un nmero debe evitarse siempre la utilizacin de cifras no significativas, puesto que
puede suponer una fuente de confusin. Los nmeros deben redondearse de forma que contengan slo cifras
significativas. Se llama redondeo al proceso de eliminacin de cifras no significativas de un nmero.
Cmo pueden determinarse las cifras significativas a partir del nmero que expresa el error?. Hay que
tener siempre presente que todo error es una estimacin y est por tanto sujeto a su vez a una incertidumbre,
generalmente grande. Por esto no tiene sentido especificarlo con excesiva precisin.

Clculo Numrico

Pgina 7

Miguel Angel Cifredo Campos


macifredo@gmail.com

"$ Ejercicios
Ejercicio "" Exprese el nmero B $& %()%' truncado a cuatro y tres decimales. Calcular el error cometido.
Solucin: Truncado a cuatro cifras decimales significativas B! $& %()% . Luego, su error ser
| & | $& %()%' $& %()% ' ! "!& "!%

En cambio a tres decimales ser B! $& %() y su error es

| & | $& %()%' $& %() % ' "!% "!$

Ejercicio "# Sea el siguiente sistema de ecuaciones lineales


B +C &
,B #C .
, donde + " !!! ! !!# ,

"
y . , + Con qu exactitud podemos determinar el producto BC?
+

Solucin: Al resolver el sistema por reduccin:


"! +.
# +,

B
Luego, el producto ser:
BC

. &,
# +,

("! +. ) (. &, )
("! +. )(. &, )
EF

(# +, ) (# +, )
(# +, )#
G

Mtodo Primero:
+ " !!!
,

&+ ! !!#

"
"
+

&,

&+
&+
+#

. , + !

&. &, &+ #&+

E "! +. "!

&E + &. . &+ #&+

F . &, &

&F &. & &, (&+

G # +, "

&G # &+ # &, % &, %&+ "#&+

EF &!

&EF F &E E &F )!&+

BC

EF
G

&!

&0

&EF
G

EF &G
G#

')!&+

Sustituyendo valores, obtenemos el siguiente resultado


BC &! ! " %
Segundo Mtodo:
BC +$ "$+

$'
+

&! !! ! "!

&0 $+# "$ $'


+# &+ ! "!%
BC &! !! ! "!%

R 9>+ Por qu el error es mucho menor en el segundo mtodo?


Clculo Numrico

Pgina 8

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio "$ Calcular # tomando # " %"% (que tiene todas sus cifras exactas). Estimar el error
&

cometido

Solucin: | &> | | # " %"%& | | &B | & # "!% #! ! !!# "!#


&

Calculamos ahora el valor de " %"%& obteniendo:


$

, con | &< | # ' "! .

" %"%& & '&#&)%#* & '& &<

(No tiene sentido tomar ms de dos cifras decimales cuando ya el error de transmisin slo nos garantiza dos).
# & & '& & & & '& &
<
>

con
$

| & | | &< | | &> | # ' "! # "!

% ' "!

"!

por lo que # & '& con todas sus cifras exactas.


&

Llamando B! a la aproximacin de # , el error de transmisin es:


| &> | | # B!& | | &B | & #
&

#! | &B |.

&
Ejercicio "% Determinar la precisin con la que hay que tomar # para calcular # con tres cifras
decimales exactas.
$

Solucin: Para obtener tres cifras decimales exactas, ha de ser | &> | "! , es decir:
#! | &B | "!

| &B |

"!
#!

! & "!% "!%

Luego B! debe tomarse al menos con cuatro cifras decimales exactas tras el redondeo, es decir, dado

que # " %"%#"$ . . :


# " %"%#

con | &B | ! & "!% "!% .

Conclusin: el error de transmisin es superior al error en el dato. Partiendo de un valor que tiene cuatro cifras
decimales exactas, llegamos a un resultado del que slo podemos garantizar la exactitud de tres cifras decimales.
Ejercicio "& Calcular (# ")& tomando # " %"% (que tiene todas sus cifras exactas) y estimar el
error . Determinar la precisin con la que hay que tomar # para calcular (# ")& con tres cifras decimales
exactas.

Solucin: Partimos de que el valor aproximado de # " dado por B! " %"% " ! %"% tiene todas sus
$
cifras exactas, es decir, partimos de un error en los datos | &B | "! .

Si consideramos la funcin 0 (B) = B& , de la cual queremos obtener el valor de 0 (B) = 0 (# "), el
error de transmisin viene dado por
| &> | | &B | 0 ' (B! ) "!$ & (! %"%) % " %')) "!% " %( "!% "!$
por lo que no podremos obtener ms de tres cifras decimales exactas.
Clculo Numrico

Pgina 9

Miguel Angel Cifredo Campos


macifredo@gmail.com

Al calcular ! %"%& ! !"#"'"*!(... slo podremos garantizar como exactas, a lo ms, las tres
primeras cifras decimales.
Si redondeamos obtenemos ! %"%& ! !"# &< donde | &< | " '"*!(... "!% " '# "!% .
Finalmente, (# ")& (! %"%)& &> ! !"# &< &> ! !"# &

donde
%

| & | | &< | | &> | " '# "! " %( "!

por lo que (# ") ! !"# con todas sus cifras exactas.

$ !* "!% "! ,

En cuanto a la precisin con que debe conocerse # para obtener tres cifras decimales exactas al
5
calcular (# ") , vamos a ver que puede ser algo menor que la que nos dan en el enunciado.
Se trata de que | &> | | B & B!& | | (# ") B!& | "! .
5

| &> | | &B | | 0 w B | | &B | & B% "! .


Luego:
| &B |

"!
&B%

"!
& (#")%

! !!'(*%...

y este es el error mximo que debe tener B! .

$
Si se toma B! - on tres cifras exactas de # ", el error ser |&B | "! ! !!" ! !!'(*%... ,
pero observemos que podemos afinar an ms, y concluir diciendo que basta con tomar B! con dos cifras
decimales exactas y redondear, pues entonces:

| &B | ! & "!

! !!& ! !!'(*% ...

Por tanto, puesto que # " ! %"%#"$... , tomaremos:


B! ! %" con | &B | ! %"%#"$... ! !!&
y el error transmitido ser:
$

| &> | | &B | & B!% ! !!& & ! !#) ! !!!( ( "!% "! .

As pues, tomando # " %" obtenemos

(# ") ! %" &> ! !""&)&'... &>


5

&

redondeando se tiene que

5
(# ") ! !"# &> &< ! !"# &

donde
#

| & | | &< | | &> | ( "!% % # "!% "" # "!% "! .


Obsrvese, como conclusin, que el error transmitido es menor que el error en el dato, es decir, es
perfectamente posible que, partiendo de un dato con una determinada precisin, despus de operar con l, se
alcance mayor precisin en el resultado. En otras palabras, el operar con los datos aproximados no siempre
lleva a una prdida de precisin.

Clculo Numrico
Pgina 10

Miguel Angel Cifredo Campos


macifredo@gmail.com

6
Ejercicio "' Se quiere calcular el valor de (# ") utilizando el valor aproximado # " %. Cul de las
siguientes expresiones es mejor numricamente? Justifica la respuesta.

a) ($ ##)

b)

** (!#
"

Solucin: Si aproximamos # por " %, estamos trabajando con un error menor que "! .
"

a) La aproximacin de $ ## dada por B! $ # " % ! # tiene un error


por tanto ( $ ##) ! !!) &>
3

| &B | # "!

"

! #

, con

| &> | | &B | $ B! # (! #) ($) (! !%) ! !#% "!

"

con lo que podemos garantizar, a lo ms, un cifra decimal exacta:


( $ ##) ! ! &< &> ! ! &
3

"

con | & | | &< | | &> | ! !!) ! !#% ! !$# "! ,

es decir, obtenemos que (# ") ! ! , pero no podemos garantizar ninguna cifra decimal ms.
6

b) Aproximando ** (!# por el valor B! ** (! " % "*( , tenemos un error


|&B | (! "!

"

"
y aproximamos el valor buscado por el de 0 ( B! ) obtenemos que
B
"
"
=
con
&> ! !!&!('" ... &> ,
(** (!#) "*(

Si consideramos la funcin 0 (B) =

| &> | | & B |

"
"
(
" )!$... "!% "!$ .
"*( #
B!#

Si redondeamos a la tercera cifra decimal


(** (!# )
"

! !!& &< &> ! !!& & , donde

| & | | &< | | &> | ! !!!!) ! !!!"* ! !!!#( "!

6
es decir, obtenemos (# ") ! !!& con todas las cifras exactas.

En resumen, por el primer mtodo slo garantizamos una cifra decimal exacta, mientras que el segundo nos
garantiza tres.

4
Ejercicio "( Se desea calcular el valor de la expresin (( %$ ) utilizando el valor aproximado de $
" ($#!& (que tiene todas sus cifras exactas). Cul de las siguientes frmulas equivalentes es mejor desde el
punto de vista numrico?

a)

"
((%$ )4

b)

"
*(&'$ #

c) *( &'$ d) "))"( "!)'%$


#

e)

"))"( "!)'%$
"

&
Solucin: Trabajando con $ " ($#!&, es decir, con un error inicial de "! tenemos:

( %$ ! !(") &B

&

, con | &B | % "! , por lo que

Clculo Numrico
Pgina 11

Miguel Angel Cifredo Campos


macifredo@gmail.com

(( %$ ) ! !!!!#'&('%**... &>
4

por lo que (( %$ ) ! !!!!#' &


4

, con | &> | | &B | % ! !(") ' "!

"!

, con
)

| & | | &< | | &> | # $' "! ' "!

"!

es decir, obtenemos 7 cifras decimales exactas.


a)

"
! !!!!#'&("(%"...
(( % $ )4
y, por tanto,

, con | &> | | &B |

"
! !!!!#'&(# &
(( % $ )4

%
"!
*
$ " "! "!
"$ *#)#)&

, con

| & | | &< | | &> | (# ' $ ") "!

"!

"!

por lo que obtenemos 9 cifras decimales exactas.

b) *( &'$ "*$ **%) &B con | &B | &' "! , por lo que
&

*( &'$ #
"

es decir

! !!!!#'&("(#*... , con | &> | | &B |

"
! !!!!#'&(# &
*( &' #

#
"!
*
"!
$ " ' "!
"*$ **%)

, con

| & | | &< | | &> | (# ) " ') "!

"!

"!

por lo que, en este caso, tambin obtenemos 9 cifras decimales exactas.


c)

*( &'$ ! !!&# &B con | &B | &' "! , por lo que


&

(*( &'$ ) ! !!!!#(!%!... &>


2

es decir (*( &'$ ) ! !!!!$ &


2

, con | &> | | &B | # ! !!&# & )$ "!

'

"!

&

, con
'

| & | | &< | | &> | # *' "! & )$ "!

'

) (* "!

'

"!

&

slo obtenemos 5 cifras decimales exactas.

d) "))"( "!)'%$ ! !!)(******** &B


podemos garantizar ninguna cifra decimal.
e) "))"( "!)'%$ $('$$ **"# &B

, con | &B | "!)'% "!

("))"( "!)'%$)
"

con | &> | | &B |

, con | &B | "!)'% "!

("))"( "!)'%$)

! "!* , por lo que no

! "!)'% por lo que

! !!!!#'&("(#$#(( &>

"
""
"!
"!
# ( '(" "!
$('$$ **"#
"

&

&

, es decir

! !!!!#'&("( &

| & | | &< | | &> | (# $#) ( '(") "!

""

, con
"!

"!

que resulta ser el caso ptimo, ya que se obtiene el resultado con "! cifras decimales exactas.

Clculo Numrico
Pgina 12

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio ") Calcular la menor de las races de la ecuacin B # %! B " ! sabiendo que
$** "* *(& (con todas sus cifras exactas) y comparar los errores producidos.
a) Directamente
b) Utilizando la expresin (#! $**) " .

Solucin: Las races de la ecuacin son #! $** , por lo que la menor de ellas es B7 #! $** .
a) Si la calculamos directamente se obtiene que B7 #! "* *(& ! !#& con las tres cifras decimales
exactas.
b) #! $** $* *(& con un error | &B | "! .
$

"
! !#&!"&'$%((... &>
(#! $**)

, con | &> | | &B |

"
(
'
"! .
# ' $ "!
($* *(&)

Redondeando a la sexta cifra decimal


"
! !#&!"' &
(#! $**)

, con | & | | &< | | &> | $ 7 "! ' $ "!( "!

'

es decir, obtenemos ' cifras decimales exactas, frente a las 3 obtenidas mediante el clculo directo.

Actividad Personal
A continuacin se proponen ejercicios tomados en certmenes anteriores y ejercicios propuestos para
ser resueltos a modo de autoevaluacin.
" Evale el polinomio C B$ &B# 'B ! && en B # ($ Use $ dgitos significativos. Determine el
error.
# Con qu exactitud es necesario medir el radio de una esfera para que su volumen sea conocido con un
error relativo menor de ! !"%? Cuantos decimales es necesario emplear para el valor de 1?
$ La base y la altura de un tringulo son respectivamente #! -7 y $! -7 , medidos con una exactitud de "
77 . Calcular con que exactitud se conoce el rea del tringulo y estimar el error absoluto en la medida de
sta rea.
% Calcular el valor de la aceleracin de la gravedad y la precisin con que se determina al dejar caer
un cuerpo en un pozo de profundidad
%*& #"! 7 ! !!& 7 . La duracin de la cada es de "! !& = ! !" = .
& La resistencia que un conductor metlico presenta al paso de la corriente elctrica, vara con la temperatura
de dicho conductor. Para rangos de temperatura no muy elevados, esta variacin tiene la forma:
V V! " !>
, donde V! es la resistencia a !o G y ! es el coeficiente de variacin de la resistencia con la temperatura. La
resistencia se mide a &!o G con un mismo medidor que aprecia ! !!" y el termmetro usado para medir la
temperatura aprecia ! &o G . Los valores obtenidos de las mediciones fueron: # %!# ; # %!) ; # %!$ ; # %!( ;
# %!& . Se sabe que V! # !!* con un error sistemtico del "% . Calcular el error de escala y sistemtico que
se presenta al medir el coeficiente de variacin de la resistencia con la temperatura.

Clculo Numrico
Pgina 13

Miguel Angel Cifredo Campos


macifredo@gmail.com

"% Normas vectoriales y matriciales


Definicin "$. Sea un espacio vectorial definido sobre un cuerpo . Se define una norma como una
aplicacin, que denotaremos por el smbolo || ||, de en (cuerpo de los nmeros reales) que
verifica las siguientes propiedades:
" B ! a B , siendo B ! B ! (definida positiva).

# - B - B a - a B homogeneidad).

$ B C B C , a B C desigualdad triangular).
Un espacio en el que hemos definido una norma recibe el nombre de espacio normado.
Es frecuente que en el espacio se haya definido tambin el producto de dos elementos. En este caso,
si se verifica que
B C B C

se dice que la norma es multiplicativa. Esta propiedad es fundamental cuando trabajamos en el conjunto `88
de las matrices cuadradas de orden 8. Sin embargo no tiene mucha importancia cuando se trabaja en el espacio C
[+,, ] de las funciones continuas en el intervalo [+,,].

"%" Normas vectoriales


Sea un espacio normado de dimensin 8 y sea {?" , ?# , . . . , ?8 } una de l. Cualquier vector B de
puede ser expresado de forma nica en funcin de los vectores de la base .
B " B3 ?3
8

3 "

donde los escalares (B" , B# , . . . , B8 ) se conocen como coordenadas del vector B respecto de la base .
Utilizando esta notacin, son ejemplos de normas los siguientes:
B " " B 3

(llamada norma-1)

2
B 2 " B 3

(que recibe el nombre de norma euclideana)

3 "

B _ mx B3
3 "

(cuyo nombre es norma infinito)

Por ejemplo, en # consideremos el vector B" " # tenemos que las normas respectivas seran:
B" " B 3 B " + B # " # $
"
#

p
B" " B 3 2 " 2 # 2 &
2
3 "
3 "

B"
p

mx B3 mx " # #
3"#

Clculo Numrico
Pgina 14

Miguel Angel Cifredo Campos


macifredo@gmail.com

Observamos que las tres normas son distintas entre s, pero son equivalentes; concepto que no veremos.
p

En cambio, para B# ! " las normas respectivas dan:


B" " B 3 B " + B # ! " "
"
#

p
B" " B 3 2 ! 2 " 2 "
2
3 "
3 "

B"
p

mx B3 mx ! " "
3"#

es decir, las normas son iguales entre s, pero recordemos que en general esto no es as.

"%# Distancia inducida por una norma


Definicin "%. Dado un espacio vectorial , se define una distancia como una aplicacin . de en

cumpliendo:
" .B C

! a B C siendo .B C ! B C

# .B C .C B
$ .B C .B D .D C

a B C
a B C D

Definicin "&. Si ( , || || ) es un espacio normado, la norma || || induce una distancia en que se conoce como
distancia inducida por la norma || || y viene definida por:
.B C || B C ||
Veamos que, en efecto, se trata de una distancia:
" .B C

! porque es una norma, y adems .B C ! || B C || ! B C ! B C

# .B C || B C || || "C B || | "| || C B || || C B || .C B
$ .B C || B C || || B D D C || || B D || || D C || .B D .D C

"%$ Convergencia en espacios normados


Definicin "'. Una sucesin de vectores @" , @# , . . . , de un espacio vectorial normado ( , || ||) se dice que es
convergente a un vector @ si
lim || @5 @ || !

5 _

Esta definicin coincide con la idea intuitiva de que la distancia de los vectores de la sucesin al vector
lmite @ tiende a cero a medida que se avanza en la sucesin.
Teorema "(. Para un espacio vectorial normado de dimensin finita, el concepto de convergencia es
independiente de la norma utilizada.

Clculo Numrico
Pgina 15

Miguel Angel Cifredo Campos


macifredo@gmail.com

"%% Normas matriciales


Dada una matriz E y un vector B, consideremos el vector transformado EB. El mayor de los cocientes
entre dichas normas, para todos los vectores del espacio, es lo que vamos a definir como norma de la matriz E
E B E B

(no es lo mismo que la propiedad multiplicativa de una norma, ya que aqu se estn utilizando dos normas
diferentes, una de matriz y otra de vector), luego
E

mx
BZ !

E B
mx E B B "
B

de tal forma que a cada norma vectorial se le asociar, de forma natural, una norma matricial.
Norma-"

Si utilizamos la norma-1 de vector obtendremos


E mx E B B "
"
"
"

C3 " +35 B5 se tiene que


8

Dado que

EB C

5"

E mx "" +35 B5 B "


"
"
8

3" 5"

Por ltimo, si descargamos todo el peso sobre una coordenada, es decir, si tomamos un vector de la base
cannica, obtenemos que
E mx " +34
"
8

3 "

Norma-# (o norma euclideana)


Utilizando la norma-2 de vector se tendr que

E mx B E E B B B "
2

Descargando ahora el peso en los autovectores de la matriz obtenemos que


E mx B -3 B B B " mx -3 mx 53
2
3

Se dice que una matriz Q es hermtica si verifica que Q = Q *.


Norma infinito
Utilizando ahora la norma infinito de vector se tiene
que
8
E _ mx " +34 B4 B _ "

4 "

"
Como
ahora se dar el mximo en un vector
8 que tenga todas sus coordenadas iguales a , se tiene que
E _ mx " +34

4 "
3

Norma de Frobenius:

E !+34 # ><E E
J
34

Clculo Numrico
Pgina 16

Miguel Angel Cifredo Campos


macifredo@gmail.com

Para los sistemas de ecuaciones lineales, de la forma EB , , trataremos de buscar mtodos iterados, es
decir, transformando el sistema en otro equivalente de la forma B J B, donde J B Q B R .
Evidentemente habr que exigir algunas condiciones a la matriz Q para que el mtodo sea convergente y estas
condiciones se basan en los conceptos estudiados de normas vectoriales y matriciales.
Dada una aplicacin 0 7 8 y un vector , 8 , resolver el sistema de ecuaciones 0 B , es
buscar el conjunto de vectores de 7 cuya imagen mediante 0 es el vector ,, es decir, buscar la imagen inversa
de , mediante 0 .
Un sistema de ecuaciones se dice lineal en su componente 5 -sima si verifica que
0 B" B5" !B5 " B5 B5" B7 !0 B" B5" B5 B5" B7 "0 B" B5" B5 B5" B7

Diremos que un sistema es lineal si lo es en todas sus componentes, pudindose, en este caso, escribir
de la forma EB , . Centraremos nuestro estudio en los sistemas reales.
Podemos clasificar los sistemas de ecuaciones lineales atendiendo
a
Su tamao

Pequeos:8 $!! donde


Grandes:
8. $!!

representa el nmero de ecuaciones.

(Esta clasificacin corresponde al error de redondeo)


Su estructura
Lleno: si la matriz posee pocos elementos nulos.
Disperso o
: Si la matriz contiene

8 4):
muchos elementos nulos. Sparce
tridiagonales
Las triangulares
SonLas
matrices
de este tipo las siguientes
para superiores
+""
+
#"
0
!

+"#
+##
+$#
!

!
+#$
+$$
+%$

! +""
! !

0
+$%
+%% !

+"#
+##
!
!

+"$
+#$
+$$
!

+"%
+#%

+$%
+%%

Las triangulares inferiores


+""
+
#"
+$"
+%"

!
+##
+$#
+%#

!
!
+$$
+%$

!
!

!
+%%

En cuanto a los mtodos de resolucin de sistemas de ecuaciones lineales, podemos clasificarlos en


Mtodos directos
Aquellos mtodos que resuelven un sistema de ecuaciones lineales en un nmero finito de pasos. Se
utilizan para resolver sistemas pequeos.
Mtodos iterados
Crean una sucesin de vectores que convergen a la solucin del sistema. Estos mtodos se utilizan para
la resolucin de sistemas grandes, ya que al realizar un gran nmero de operaciones los errores de redondeo
pueden hacer inestable al proceso, es decir, pueden alterar considerablemente la solucin del sistema.

Clculo Numrico
Pgina 17

Miguel Angel Cifredo Campos


macifredo@gmail.com

#" Nmero de condicin


EB , se dice bien condicionado cuando los errores cometidos en
Un sistema de ecuaciones
los elementos
de la matriz E y del vector , producen en la solucin un error del mismo orden, mientras que
lineales
diremos que el sistema est mal condicionado si el error que producen en la solucin del sistema es de orden
superior al de los datos. Es decir:
E E y , , &
B B &

B B &
E E y , , &

Consideremos el sistema cuadrado EB , con E regular, es decir, un sistema compatible determinado.


En la prctica, los elementos de E y de , no suelen ser exactos ya sea porque procedan de clculos anteriores, o
bien porque sean irracionales, racionales peridicos, etc. Es decir, debemos resolver un sistema aproximado cuya
solucin puede diferir poco o mucho de la verdadera solucin del sistema.
As, por ejemplo, en un sistema de orden dos, la solucin representa el punto de interseccin de dos
rectas en el plano. Un pequeo error en la pendiente de una de ellas puede hacer que dicho punto de corte se
desplace slo un poco o una distancia considerable (vase la Figura #"), lo que nos dice que el sistema est bien
o mal condicionado, respectivamente.

Sistema bien condicionado

Sistema mal condicionado

Figura #" Condicionamiento de un sistema.

Podemos ver que el sistema est mal condicionado cuando las pendientes de las dos rectas son muy
similares y que mientras ms ortogonales sean las rectas, mejor condicionado estar el sistema.
Se puede observar entonces que si, en un sistema mal condicionado, sustituimos una de las ecuaciones
por una combinacin lineal de las dos, podemos hacer que el sistema resultante est bien condicionado.

Ejemplo #" Si consideramos el sistema


$B %C (
$B % !!!!"C ( !!!!"

, de solucin

y cometemos un pequeo error en los datos, podemos obtener el sistema

B
"
C "

$B %C (
$B $ *****C ( !!!!%

, de solucin

B
( '
C %

$B %C (
$B $ *****C ( !!!!&&

, de solucin

B
* '
C & &

o bien este otro

lo que nos dice que estamos ante un sistema mal condicionado.

Clculo Numrico
Pgina 18

Miguel Angel Cifredo Campos


macifredo@gmail.com

Si sustituimos la segunda ecuacin por la que resulta de sumarle la primera multiplicada por
" !!!!!"' y la ecuacin resultante se multiplica por "!' y se divide por " #, nos queda el sistema
, de solucin

$B %C (
%B $C "

B
"
C "

siendo ste un sistema bien condicionado.


El estudio del condicionamiento de un sistema se realiza a travs del denominado nmero de condicin
que estudiamos a continuacin.
Definicin #". Sea E una matriz cuadrada y regular. Se define el nmero de condicin de la matriz E y se
denota por R E como
R E E E"

donde la norma utilizada ha de ser una norma multiplicativa. Este nmero nos permite conocer el
condicionamiento del sistema EB , .
Dado que en la prctica el clculo de la matriz inversa E" presenta grandes dificultades, lo que se hace
es buscar una cota del nmero de condicin es decir, R E E E" 5 E siendo 5 una cota
de la norma de la matriz inversa.
Si M E " , entonces E"
EE" M

M M EE" M

M
En efecto,
" M E

E" M EE" M

E" M M EE"

E" M M EE" M M EE" M M EE"


E" M EE" M " M EE" M
E"

" M E

Debemos tener cuidado con esta acotacin ya que si tenemos una matriz casi regular, es decir, con
./>E !, quiere decir que tiene un autovalor prximo a cero, por lo que la matriz M E tiene un autovalor
prximo a " y ser el mayor de todos. En este caso || M E || ", por lo que 5 _ y dara lugar a un falso
condicionamiento, ya que E no tiene que estar, necesariamente, mal condicionada.
Ejemplo ## Para estudiar el condicionamiento del sistema
$B %C (
$B % !!!!"C ( !!!!"
Se tiene que
E

$
$

"
%
% !!!!"
./>+ ! !!!!$ E"

$
% !!!!"
! !!!!$

%
$

Si utilizamos la norma infinito E_ mx ! +34 obtenemos:


8

4"

Clculo Numrico
Pgina 19

Miguel Angel Cifredo Campos


macifredo@gmail.com

E ( !!!!"
) !!!!"
R E ")'''(" ''( " ) "!'
E"
#''''(
! !!!!$
es decir, se trata de un sistema mal condicionado.
Vamos a ver, a continuacin, algunas propiedades del nmero de condicin de una matriz.

#"" Propiedades del nmero de condicin.


Como ya se ha visto anteriormente R E

" cualquiera que sea la matriz cuadrada y regular E.

Si Y es una matriz unitaria, se verifica que R# E R# EY R# Y E.


Los sistemas mejor condicionados son aquellos que tienen sus filas o columnas ortogonales y
mientras mayor sea la dependencia lineal existente entres ellas peor es el condicionamiento del sistema.
Trataremos de buscar mtodos de resolucin de sistemas de ecuaciones lineales que trabajen con
matrices unitarias que no empeoren el condicionamiento del sistema como lo hace, por ejemplo, el mtodo de
Gauss basado en la factorizacin PY . Sin embargo, dado que ha sido estudiado en la asignatura de lgebra
Lineal, comenzaremos estudiando dicho mtodo aunque pueda alterarnos el condicionamiento del
problema.
mtodos directos, los basados en la factorizacin PY y el de
Cholesky.Empezaremos estudiando pues, como

Clculo Numrico
Pgina 20

Miguel Angel Cifredo Campos


macifredo@gmail.com

##. Mtodos por Factorizacin PY


Al aplicar el mtodo de Gauss al sistema EB , realizamos transformaciones elementales para
conseguir triangularizar la matriz del sistema. Si este proceso puede realizarse sin intercambios de filas, la matriz
triangular superior Y obtenida viene determinada por el producto de un nmero finito de transformaciones fila
J" J# J5 aplicadas a la matriz E. Llamando P" J5 J5" J" ya que el determinante de una
transformacin fila es " y, por tanto, su producto es inversible) se tiene que P" E Y , o lo que es lo mismo,
E PY . Adems, la matriz P es una triangular inferior con unos en la diagonal.
Debido a la unicidad de la factorizacin, sta puede ser calculada por un mtodo directo, es decir,
haciendo
"
6#"

E 6$"

68"

!
"
6$#

68#

!
!
"

68$

! ?""
!
!

!
!

"
!

?"#
?##
!

?"$
?#$
?$$

?"8
?#8

?$8

?88

8# y calculando los valores de los


elementos
que aparecen entre las dos matrices.
PY B ,
Por tanto, EB ,
PY B , y si hacemos Y B D el sistema es equivalente a
PD ,

Y B P" ,

D P" ,

B Y " P" ,

El procedimeiento que desdobla el sistema EB , en los dos sistemas triangulares encerrados en un


rectngulo se conoce como Mtodo de Doolittle.
En cambio, si la matriz que lleva los unos en la diagonal principal es Y y no P, el mtodo se llamar
Mtodo de Crout.
Ejemplo #$ Dada la matriz E

EPY

"
6#"
6$"

!
"
6$#

?""
6#" ?""
6$" ?""

$
'
$

! ?""
!
!
" !
?"#
6#" ?"# ?##
6$" ?"# 6$# ?##

por lo que de la primera fila obtenemos que:

#
#
tenemos:
)

"
$
!
?"#
?##
!

?"$ $
?#$
'
?$$ $

"
$
!

#
#
)

?"$
$
6#" ?"$ ?#$
'

6$" ?"$ 6$# ?#$ ?$$ $

"
$
!

#
#

?"" $ ?"# " ?"$ #

de la segunda (teniendo en cuenta los valores ya obtenidos) se tiene:


$6#" '
6#" ?## $
#6#" ?#$ #

6#" #
?## "
?#$ #

y de la tercera

es decir,

$6$" $
6$" 6$# !

#6$" #6$# ?$$ )

6$" "
6$# "
?$$ %

Clculo Numrico
Pgina 21

Miguel Angel Cifredo Campos


macifredo@gmail.com

$
'
$

"
$
!

# "
#
#
) "

!
"
"

! $
! !
" !

"
"
!

#
# PY
%

Definicin ##. Se denominan matrices fundamentales de una matriz E, y se denotan por E5 , a las submatrices
constituidas por los elementos de E situados en las 5 primeras filas y las 5 primeras columnas, es decir:
+"" +"# +"$
+
+"#
+#" +## +#$ etc.
E" a+"" b
E# ""
E

$
+#" +##
+$" +$# +$$
Teorema #$. Una matriz regular E admite factorizacin PY si, y slo si, sus matrices fundamentales E3
3 " 8 son todas regulares.
Comprobar si una matriz admite factorizacin PY estudiando si todas sus matrices fundamentales son
regulares es un mtodo demasiado costoso debido al nmero de determinantes que hay que calcular.
Definicin #%. Dada una matriz cuadrada E, se dice que es una matriz de diagonal dominante si
+33 ! +35
8

3 " 8

5"
53

As, por ejemplo, la matriz E

$
!
#

"
#
#

"
" es diagonal dominante.
&

Teorema #&. Toda matriz diagonal dominante es regular.


Teorema #'. Las matrices fundamentales E5 de una matriz E de diagonal dominante, son tambin de
dominante.
diagonal
#$ #& #'
Como consecuencia de los
, podemos deducir el siguiente corolario.
PY
Corolario #(. Toda matriz diagonal dominante admite factorizacin
.
Otro tipo de matrices de las que se puede asegurar que admiten factorizacin PY son las hermticas
definidas positivas, ya que las matrices fundamentales de stas tienen todas determinante positivo, por lo que el
Teorema #' garantiza la existencia de las matrices P y Y .
Teoremas

##" Factorizacin de Cholesky


Una vez visto el mtodo de Gauss basado en la factorizacin PY vamos a estudiar otros mtodos que
basan en se
otros tipos de descomposiciones de la matriz del sistema.
Es conocido que toda matriz hermtica y definida positiva tiene sus autovalores reales y positivos y,
adems, en la factorizacin PY todos los pivotes son reales y positivos.

Clculo Numrico
Pgina 22

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema #). [Factorizacin de Cholesky] Toda matriz E hermtica y definida positiva puede ser descompuesta
de la forma E FF con F una matriz triangular inferior (F traspuesta de la matriz F ; el hace una
diferencia entre matriz compleja y real .
Nota: En la prctica pondremos E V V con V una triangular superior.
La unicidad de las matrices P y Y implica la unicidad de la matriz F y, por tanto, sta puede ser
calculada por un mtodo directo.
Ejemplo
el sistema B #C %D '

#%" Sea

#B "$C #$D *
%B #$C ((D &&
% B '
" #
# "$ #$
C
*

%
#$
((
D
&&
Que escrito matricialmente es
Luego, escribimos la matriz asociada al sistema como un producto de dos matrices, una triangular
inferior y la otra su traspuesta (que es una triangular superior)
,""
,#"
,$"

! ,""
!
!

,$$ !

!
,##
,$#

#
,""
,#" ,""
, ,
$" ""

#
,""
"

,"" ,#"
#
#
,#"
,##
,$" ,#" ,$# ,##

,#"
,##
!

#
"$
#$

,"" ,$"
"
,#" ,$" ,## ,$# #
%
#
#
#
,$"
,$#
,$$

,#" #

,"" ,$" %

,$" %

#
,##

"$

,$# &

#
,$"

,$$ '

#
,$#

#
,$$

((

De esta forma, el sistema nos queda


"
#
%

Ahora, hacemos

"
!
!

"
#
%

Por tanto,

#
"$
#$

%
#$
((

,## $

,#" ,$" ,## ,$# #$

%
#$
((

,"" "

,"" ,#" #
#
,#"

,$" "
,$# #
,$$ %

#
$
!
!
$
&

!
$
&

! "
! !
' !

% B +
&
C = ,
' D -

#
$
!

% B '
*
&
C

' D &&

el cual es equivalente a

! + '
! , = *
' - &&

+' , " - '

" # % B '
! $ &
C = "
D " C # B'
! ! ' D '

Clculo Numrico
Pgina 23

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo #%# Consideremos el sistema

%
#3
% #3

#3
#
# #3

% #3 B" !
# #3
B#
!
"! B$ %

Realicemos la factorizacin de Cholesky FF * directamente, es decir


FF *
,"" ,""
,#" ,""
,$" ,""

#,#"

,""
,#"
,$"

!
,##
,$#

! ,""
! !
,$$ !

,"" ,#"
,#" ,#" ,## ,##
,$" ,#" ,$# ,##

,#"
,##
!

,$" %
#3

,$#
,$$ % #3

#3
#
# #3

,"" ,$"
%

#3

,#" ,$" ,## ,$#


% #3

,$" ,$" ,$# ,$# ,$$ ,$$

% #3
# #3
"!
% #3
# #3
"!

#3
#
# #3

Igualando trmino a trmino se obtiene: | ,"" |# % ,"" #. Utilizando este resultado tenemos que
#3, por lo que ,#" 3 y que #,$" % #3 por lo que ,$" # 3.
Por otro lado, | ,#" |# + | ,## |# #, por lo que | ,## |# " y, por tanto, ,## ".

Como ,#" ,$" ,## ,$# # #3 tenemos que " #3 ,$# # #3 , es decir ,$# "
,$# ".

y, por tanto,

Por ltimo, | ,$" |# + | ,$# |# + | ,$$ |# "!, por lo que & " | ,$$ |# "!, es decir | ,$$ |# % y, por
tanto, ,$$ #. As pues, el sistema nos queda de la forma
#
3
# 3

Haciendo ahora
#
!
!

#
3
# 3
3
"
!

B" "

!
"
"

!
"
"

! #
!
!
# !

3
"
!

! C" !
!
C#
!
# C$ "

# 3 B" !
"
B#
!
# B$ #

B# "

# 3 B" !
"
B#
!
# B$ "

se obtiene

C" !
C#
!
C$ #

y de aqu, que

de donde la solucin del sistema es


B$ "

Hemos visto que toda matriz hermtica y definida positiva admite factorizacin de Cholesky, pero
podemos llegar ms lejos y enunciar el siguiente teorema.
Teorema #*. Una matriz hermtica y regular E es definida positiva si, y slo si, admite factorizacin de
Cholesky.

#$ Mtodos iterados
Un mtodo iterado de resolucin del sistema EB , es aquel que genera, a partir de un vector inicial
B! , una sucesin de vectores B" , B# , . . . B8 ,
Definicin #"!. Un mtodo iterado se dir que es consistente con el sistema EB , , si el lmite B de la
sucesin (B8 ), en caso de existir, es solucin del sistema. Se dir que el mtodo es convergente si la sucesin
generada por cualquier vector inicial B! es convergente a la solucin del sistema.

Clculo Numrico
Pgina 24

Miguel Angel Cifredo Campos


macifredo@gmail.com

Es evidente que si un mtodo es convergente es consistente, sin embargo, el recproco no es cierto como
prueba el siguiente ejemplo.
Ejemplo #& El mtodo B8" #B8 E" , es consistente con el sistema EB , pero no es convergente. En
efecto:
B8" B #B8 E" , B
#B8 #B E" , B
#B8 B E" , B
y como E" , B, se tiene que
B8" B #B8 B
Si existe

lim B8 B

8_

tendremos que

B* B #(B* B)
B* B !
B* B

, es decir, el lmite es solucin del sistema EB , ,

por lo que el mtodo es consistente.


Sin embargo, de B8" B #B8 B obtenemos que
|| B8" B || # || B8 B ||

, es decir, el vector B8"

dista de B el doble de lo que distaba B8 , por lo que el mtodo no puede ser convergente.
Los mtodos iterados que trataremos son de la forma B8" OB8 - en los que O ser la que
denominemos matriz del mtodo y que depender de E y de , y en el que - es un vector que vendr dado en
funcin de E, O y , .
Teorema #"". Un mtodo iterado, de la forma B8" OB8 - , es consistente con el sistema EB , si, y slo
si, el vector - es de la forma - M OE" , y la matriz M O es invertible.
Teorema #"#. Un mtodo iterado de la forma B8" OB8 - y consistente con el sistema EB , es
convergente si, y slo si, lim O 8 !.
8_

Teorema #"$. Si || O || ", el mtodo B8" OB8 - (a B! 8 ) converge a la solucin de la ecuacin


B OB - , que existe y es nica (cualquiera sea la norma matricial empleada).
Es evidente que, en la prctica, no podremos nunca llegar al valor de B (ya que habra que realizar
infinitas iteraciones), por lo que ser necesario detenernos en una determinada iteracin y tomar el valor de B8
como una aproximacin de la solucin B.
El error cometido se mide calculando la distancia entre ambos vectores, es decir, la norma del vector
error || B8 B ||, pero como no conocemos el vector B lo que se hace es medir la distancia entre sus
transformados, es decir
|| I || = || EB8 , || .

Clculo Numrico
Pgina 25

Miguel Angel Cifredo Campos


macifredo@gmail.com

#$" Mtodos de descomposicin


Los mtodos que vamos a estudiar, a continuacin, consisten en descomponer la matriz invertible E del
sistema EB , de la forma E Q R de manera que la matriz Q sea fcilmente invertible, por lo que
reciben el nombre genrico de mtodos de descomposicin. El sistema queda entonces de la forma
( Q R )B , Q B R B ,
B Q " R B Q " ,
, es decir, expresamos el sistema de la forma B OB - con O Q " R y - Q " , .
Dado que
( M O )E" , ( M Q " R )(Q R )" , Q " ( Q R ) (Q R )" , Q " , y la matriz (M O ) (M Q " R ) Q " Q R Q " E es invertible, estamos en las condiciones del
Teorema #"' por lo que el mtodo B8" OB8 - es consistente con el sistema EB , . Es decir, si el
proceso converge, lo hace a la solucin del
sistema.
#"$, que el proceso ser convergente si se verifica que
||Q " R ||Sabemos
" para alguna
norma
tambin,
por matricial.
el Teorema
Para el estudio de los mtodos que trataremos a continuacin, vamos a descomponer la matriz E de la
forma E H I J siendo
+""
!

H !

!
+##
!

!
!
+$$

!
!
! +#"

!
-I +$"

+8"
+88

!
!
+$#

+8#

!
!
!

+8$

!
!
!
!

!
-J !

!
!

+"#
!
!

+"$
+#$
!

+"8
+#8

+$8

Mtodo de Jacobi
Consiste en realizar la descomposicin E Q R H I J . El sistema EB , queda de la
forma HB I J B , , o lo que es lo mismo, B H" I J B H " , . Es decir:
B NB con N H" I J

- H" ,

La matriz N H" I J H" H E M H" E se denomina matriz de Jacobi.


Teorema #"%. Si E es una matriz diagonal dominante, el mtodo de Jacobi es convergente.

Clculo Numrico
Pgina 26

Miguel Angel Cifredo Campos


macifredo@gmail.com

#
!
"

"
%
"

! B "
$
C
"
, donde
& D %
!
!
# ! ! !
$ HIJ ! % !
!
!
! ! & " "
&

es decir, H

#
!
!

!
%
!

!
!
! I
!
"
&

Ejemplo #'" Sea el sistema

#
!
"

Luego,

"
N M H" E !
!
y

!
"
!

- H" ,
%

&

"
%
"

!
!
"

! #
! !
" !
"

!
"
%

!
!
! yJ !
!
!
! # "

! %
!
" " "
&

"
!
!

! !
! !
! !

"
!
!

!
$
!

!
$
!

! !
$ !
& "
&

"#
!
"&

!
$%
!

"
#
"
%

Por tanto, de
!
B" !
"
&

!
B# !
"
&

!
B$ !
"
&

B8" N B8 - se tiene, considerando el vector inicial B!


"#
!
"&
"#
!
"&
"#
!
"&

"
"
"
!
! "
# #
#"
! %
$%
$% "%
"#
% "
! " %& "&
&

"
! :
"

! #" "# %" "# $%


"
$%
"%
$%
"%
"
#
! " %& ! %& %&

! $% #" #" #" !


$
"

$%
%"

%"
"(
#!
&
%
(
% #$

! & %& #!
#!
&

B%

B"' ! " "w


B"( ! " "w
la solucin del sistema es

B !

C "

D "

Mtodo de Gauss-Seidel
Este mtodo es el resultado de realizar la descomposicin E Q R H I J . El sistema
EB , queda de la forma H IB J B , , o bien B H I" J B H I" , . Es decir:
B P" B con P" H I" J
La matriz

y - H I" ,

P" H I" J E J " E J E M E J " E M H I" E

recibe el nombre de matriz de Gauss-Seidel.


Teorema ##!. Si E es una matriz diagonal dominante, el mtodo de Gauss-Seidel es convergente.

Clculo Numrico
Pgina 27

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo #'# Resolvamos el ejemplo anterior por este mtodo


Aqu,
P" H I" J

#
!
"

- H I" ,

! !
!
!
& !
"

!
%
"
"
#

!
"
"!

Por tanto, de

"#
!

!
B# !
!

"#
!

B$ !
!

"#
!

"#
!

B& !
!

"#
!

"
"!

"
"!

!
B' !
!

#"
!

!
B( !
!

#"
!

!
B) !
!

"#
!

"
"!

"
"!

"
"!

"
%

"
"!

"
"!

"
"!

"

!
"
%

"
#!

! !

!
!
" !
&

"
!
!

! !
$ !
! !

se tiene, considerando el vector inicial B!

"#
!
"
"!

!
$%
$
#!

!
! :
!

"
"
"
! !
#" ! #" #"
$

!
%
!

%
%
%
$ !
"* ! "* "*
#!
#!
#!
#!
$
"
! "# "#

)
! "#& "# ((
$
"
"

!
("#&
%

%
%
%
)!

$
"*
! ""(&
"*
"* %#(
#!
#!
#!
#!
%!!
((
"
$
! $) "# "'!
#

"'!
$
((
"
"#)"
"

" !&!'$
)!
%
"'!!
%
$ %#(
"* &"" "* " !"$))
#!
#!
#!
)!!!
%!!

"
"
!
! !")(& #" ! &#&$"& #" ! !#&$"&
$

" !"!%"
" !&!'$
! ('!%"
%

%
%
$ " !"$))
"* ! !%(!"* "* ! **(!"*
#!
#!
#!
"
"
! ! !#&$"&
# ! &!&#!& # ! !!&#!&

"
"

! **(('%
! (%(('%
%$ " !"!%"

%
%

$ ! **(!"*
"*
"*

!
!%)&""*

! **)&"#
#!
#!
#!

"
"
! ! !!&#!&

#" ! %*)))# "# ! !!""")


$

! **(('%
! (%)))%
%

! **)))%
%
%

$
! **)&"#
! !&!!!!%
"
"*
"*
#!
#!
#!
"
"
! ! !!""")
# ! %**%%# # ! !!!&&)

"
"

! **)))%
! (&
"
$%

%
%

$
"*
"*
"
! !&!"""'

" !!!""
#!
#!
#!
"
"
! ! !!!&&)
! &
!
#
#

"
"

!
(&!!)$
"
!!!!)
$% "

%
%
$ " !!!""
"* ! !&!!"'& "* " !!!!#
#!
#!
#!

la solucin del sistema es

"
#!

! #
$ !
! "
"!

"
!
" #"

! "

%
" %
"*
&
#!

B8" P" B8 -

!
B" !
!

!
B% !
!

"
!
!

B !

C "

D "

Clculo Numrico
Pgina 28

Miguel Angel Cifredo Campos


macifredo@gmail.com

Mtodos de relajacin SOR (Succesive OverRelaxation)


Este mtodo realiza
la" descomposicin
"
=
"
"=
H I J H =I
H J Q R
=
=
=
=
E H
El sistema EB , se transforma entonces en
"
"=
H =IB
H J B , H =IB a" =H =J bB =,
=
=
B H =I" a" =H =J bB =H =I" ,

Es decir:
B P= B con P= H =I" a" =bH =J y - =H =I" ,
La matriz del mtodo P= H =I" a" =bH =J recibe el nombre de matriz de relajacin.
Si = " la matriz se reduce a , es decir, se trata del mtodo de Gauss Seidel.
Si = " se dice que se trata de un mtodo de sobre-relajacin.
Si = " se dice que se trata de un mtodo de sub-relajacin.

= ! #
Teorema #"&. Una condicin necesaria para que converjan los mtodos de relajacin es que
( ).
E
cualquiera
que sea
(! "]. del sistema es diagonal dominante, los mtodos de relajacin son convergentes
Teorema #"'.
Si la= matriz
Teorema #"(. Si la matriz E del sistema es simtrica y definida positiva, los mtodos de relajacin convergen si,
y slo si, = (! #).

Clculo Numrico
Pgina 29

Miguel Angel Cifredo Campos


macifredo@gmail.com

#% Ejercicios
"
Ejercicio #" Considere el sistema lineal E\ , dado por
"
a) Calcule su solucin exacta.

"
b) altere la segunda fila del sistema obteniendo
"
c) Es la matriz mal condicionada?

"
B
#

; y, calcule su solucin exacta.


" !"" C # !"

Solucin:
a) Despejando la primera ecuacin y reemplazando en la segunda
obtenemos

B#C
BC #
# C " !"C # !"

! !"C ! !"

b) Anlogamente, # C " !""C # !"

"
B
#

" !" C # !"

C" y B"

! !""C ! !"

"!
""

! *!

c) Discucin en grupo.
Ejercicio #" Estudiar el nmero de condicin de Frobenius de la matriz E

+
+&

,
,

Solucin: A efectos de norma, en todo el ejercicio trataremos a la matriz como un vector de %.


El determinante de E es ./>E +, ,+ & , &.
Si tanto , como & son distintos de cero, el determinante de la matriz E es no nulo y, por tanto, A es
invertible, siendo su inversa:
E"

"
,
,

,& + & +

El nmero de condicin de Frobenius viene dado por RJ E EJ E" J .


E# +# , # + &# , # #+# #, # #+& &#
#

E" #
#

, # , # + &# +#
#+# #, # #+& &#

, # &#
, # &#

Por lo que:
R## E

#+# #, # #+& &# #


#+# #, # #+& &#
R# E
#
#
, &
, &

Obsrvese que cuando & tiende a cero, el nmero de condicin de Frobenius RJ E lo hace a infinito,
por lo que la matriz E est mal condicionada.
Por ejemplo: para + "! y , " se tiene que
R# E

#!# #!& &#


#!#

#! &
&
&

Si & "!) el nmero de condicin de Frobenius resulta ser RJ E # "!"! .

Clculo Numrico
Pgina 30

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio ## Dado el sistema B C #


#B C $
1.Calcular su nmero de condicin de Frobenius.
2.Calcular + para que el nmero de condicin del sistema resultante de sumarle a la segunda ecuacin la primera
multiplicada por dicha constante +, sea mnimo.
Solucin:

1.La matriz del sistema es E

"
"
E"
"
#

"
#

"
, por lo que
"

E # (
J
RJ# E (# RJ E (
E" # (
J

2.El sistema resultante sera

BC #
: cuya matriz es
+ #B + "C #+ $

"
F
+#

"
+ "

+"
F "
+#

"
"

y, por tanto,

F # #+# '+ (
J
RJ# F #+# '+ ( RJ F #+# '+ (
F " # #+# '+ (
J

Para hallar el mnimo de RJ F con + ( _ _) derivamos y obtenemos RJw %+ ', que se


anula para + $# .
Dado que RJww (F ) % ! se trata, efectivamente, de un mnimo.
El sistema resultante es, en ese caso:

BC #
"
"
B C !
#
#
&
y su nmero de condicin de Frobenius es RJ F # &.
#
Ejercicio #$ Dado el sistema $B %C ( Sustituir la segunda ecuacin por una combinacin lineal de
$B &C )
ambas, de forma que el nmero de condicin sea mnimo.
$
%
Solucin: La matriz resultante de la combinacin lineal es
$+ $, %+ &,
F
Una matriz tiene nmero de condicin euclideano mnimo (y vale ") si, y slo si, es proporcional a una matriz
unitaria. Por tanto, F debe tener las filas (o las columnas) ortogonales y de igual norma.
a. a $
b. a $

% b

$+ $,
!
%+ &,

$$+ $, %%+ &, !

#&+ #*, !

$
% b #& (cuadrado de la norma de la primera fila).
%

c. a $+ $,

%+ &, b

$+ $,
#&+# $%, # &)+, (cuadrado de la norma de la segunda fila).
%+ &,

Las condiciones que tenemos son:


#&+ #*, !
,
#&+ $%, # &)+, #&
#

#&
#* +

Clculo Numrico
Pgina 31

Miguel Angel Cifredo Campos


macifredo@gmail.com

Sustituyendo en la segunda condicin se obtiene:


#&+# $%

#&
#&
$% #& &) #
+ &)+ + #& "
+ "
#*
#*
#*#
#*
#

)&!
* #
)%"
#*
"+# "
+ " +#
+
)%"
)%"
*
$

#&
#&
#*
#&
+
#*
#*
$
$

Tomando, por ejemplo, +

#*
#&
y,
(el otro caso es anlogo), obtenemos:
$
$
F

$
%

%
! '
&
$
! )

! )
&Y
! '

es decir, donde F es proporcional a una matriz unitaria (que posee norma uno), por lo que el sistema resultante
$B %C ( tiene nmero de condicin eucldeo R# F ".
%B $C "

Ejercicio #% Comprobar que la matriz

"
"

!
!

#
%
%
!
!

!
$
*
*
!

!
!
%
"'
"'

!
!

!
admite

&
#&

factorizacin PY y realizarla.

Solucin: Dado que los menores principales (como vemos a continuacin) son todos no nulos, la matriz admite
factorizacin PY (vase el Teorema #').

" # !
"
#

E" " " ! E#


% # # ! E$ " % $ $' ") "# ' !
" %

! % *

" # ! !

% $ !
" $ !
"
%
$
!

E%
" % * % # ! * % #%! # "!) #% !
! % * %

! * "'
! * "'
! ! * "'
E&

"

"

#
%
%
!
!

!
$
*
*
!

!
!
%
"'
"'

%
!

%
! "

!
&

!
#&

$
*
*
!

!
%
"'
"'

!
"

!
!
#
&
!

#&
!

$
*
*
!

!
%
"'
"'

&

#&

% *

%
"'
"'

!
%

& $ !

#&
!

%
"'
"'

!
*

& # *

#&
!

%
"'
"'

&

#&

% "*)! $ "#)! # "*)! "#! !


Ambas matrices ( P y Y ) son bidiagonales, por lo que
E PY

"
"

!
!

#
%
%
!
!

!
$
*
*
!

!
!
%
"'
"'

! "
! 6#"

!
!

&
!
#& !

!
"
6$#
!
!

!
!
"
6%$
!

!
!
!
"
6&%

! ?""
!
!

!
!

!
!
" !

?"#
?##
!
!
!

!
?#$
?$$
!
!

!
!
?$%
?%%
!

!
!

?%&
?&&

Es evidente que ?"" " y que ?"# # (basta para ello calcular la primera fila de la matriz producto e
igualarla con la primera fila de la matriz E ).
6#" ?"" +#" " 6#" "

6#" ?"# ?## +## % ?## % # #

?#$ +#$ $

6$# ?## +$# % 6$# #

6$# ?#$ ?$$ +$$ * ?$$ $ ?$% +$% %


6%$ ?$$ +%$ * 6%$ $

6%$ ?$% ?%% +%% "' ?%% %

Clculo Numrico
Pgina 32

Miguel Angel Cifredo Campos


macifredo@gmail.com

?%& +%& &

6&% ?%% +&% "' 6&% %

6&% ?%& ?&& +&& #& ?&& &


Por tanto,

"
"

P !

!
!

!
"
#
!
!

!
!
"
$
!

!
!
!
"
%

!
"
!
!

!
y Y !

!
!
!
"

#
#
!
!
!

!
$
$
!
!

!
!

&
&

!
!
%
%
!
"
"
"
"

Ejercicio #& Realizar la factorizacin de Cholesky de la matriz E


Solucin: La matriz E es hermtica por tratarse de una simtrica y real.

"
&
$
$

"
$
""
&

"
$

&

"*

Adems, dado que los menores principales son positivos, es definida positiva.
E" " " !

"
E$ "

"

E# "
"

"

E% "
"

"

"

$ $' !

""

"
&
$

"
%!
&
"
&
$
$

"
$
""
&

"

$
&(' !
&

"*

Al tratarse de una matriz hermtica y definida positiva, el Teorema #"" nos garantiza su factorizacin
de Cholesky. En dicha factorizacin (E V V ), al ser E una matriz real, se tiene que V V > , por lo que:
<""
<#"

<$"
<%"

!
<##
<$#
<%#

!
!
<$$
<%$

! <""
!
!

!
!
<%% !

<#"
<##
!
!

<$"
<$#
<$$
!

<%" "
<%# "

<%$
"
<%% "

"
&
$
$

"
$
""
&

"
$

&
"*

de donde
#
<""
" <"" "

<#" <$" <## <$# $ <$# "

<"" <#" " <#" "

<#" <%" <$# <%# $ <%# "

<"" <$" " <$" "

<$" <%" <$# <%# <$# <%$ & <%$ "


#
#
#
<$"
<$#
<$$
"" <$$ $

<"" <%" " <%" "


#
#
<#"
<##
& <## #

y, por tanto,
E

"
"

"
"

"
&
$
$

"
$
""
&

#
#
#
#
<%"
<%#
<%$
<%%
"* <%% %

" "
$ "

&
"

"
"*

!
#
"
"

!
!
$
"

! "
!
!

!
!
% !

Ejercicio #' Resolver, por el mtodo de Cholesky, el sistema

"
#
!
!

"
"
$
!

"
#
$

"
"
V V

"

#
&
%

$ B" (
%
B#
*
"% B$ $$

Solucin: Es fcil comprobar que la matriz del sistema es hermtica (por ser simtrica y real) y definida positiva
(comprubese que sus tres menores principales son positivos) y que, por tanto, el Teorema #"" nos garantiza la
factorizacin de Cholesky.

Clculo Numrico
Pgina 33

Miguel Angel Cifredo Campos


macifredo@gmail.com

Al tratarse de un sistema real, la factorizacin de Cholesky es de la forma E V > V siendo V una


matriz triangular superior.
<""
E V V <"#
<"$
>

!
<##
<#$

! <""
!
!
<$$ !

<"$ "
<#$ #
<$$ $

<"#
<##
!

#
<""
" <"" "
<"" <"# # <"# #
"
<"" <"$ $ <"$ $
!

#
#

<"#
<##
& <## "
!
<"# <"$ <## <#$ % <#$ #
#
#
#
<"$
<#$
<$$
"% <$$ "

#
"
!

#
&
%

$
%

"%

$
#
"

El sistema EB , se transforma en V > VB , , por lo que haciendo VB C


descomponemos en dos sistemas triangulares de fcil resolucin.
V>C ,

VB C

"
!
!

#
"
!

"
#
$

!
"
#

! C" (
!
C#
*

" C$ $$

$ B" (
#
B#
&
" B$ #

y VC , lo

C" (
#C" C# * C# &
$C" #C# C$ $$ C$ #

B$ #
B# #B$ & B# "
B" #B# $B$ ( B" #

Es decir, la solucin del sistema es B" $, B# " y B$ #.

Ejercicio #( Resolver, por el mtodo de Cholesky, el sistema

'
" $3
" #3

" $3
$
"3

" #3 B" " #3


"3
B#
"3
B$ " #3
#

Solucin: La matriz E del sistema verifica que E E es decir, se trata de una matriz hermtica. Adems, dado
que
E" ' !

E#

'

E$ " $3

" #3

'
" $3
" $3
$
"3

" $3
") "! ) !
$

" #3

" 3

; y, adems de hermtica es definida positiva, por lo que el Teorema #"" nos garantiza su factorizacin de
Cholesky E V V donde V es una matriz triangular superior.

'
" $3
" #3

" $3
$
"3

" #3 <""
" 3 <"#
<"$
#

!
<##
<#$

! <""
!
!
<$$ !

<"#
<##
!

<"$
<#$
<$$

Clculo Numrico
Pgina 34

Miguel Angel Cifredo Campos


macifredo@gmail.com

#
<""
' <"" '
<"" <"# " $3 <"#

"$3
'
<"" <"$ " #3 <"$ "#3
'
#
#
<"# <## $ <## #
$

<"# <"$ <## <#$ " 3 <#$


#
#
#
<"$
<#$
<$$
"% <$$ "

"(3
% $

'

V !
!

% $

"$3
'
#
$

"#3
'
"
# #

El sistema, que podemos expresar de la forma V VB ,, se reduce a dos sistemas triangulares:


V C , y VB C .

'
"$3
V C , '

#
$
"(3
% $

"#3
'

'

VB C !

"$3
'
#
$

Obtenindose como solucin:

! C

" " #3
C"

!
C#
"3
C#
" #3
C$
"
C$

# #
"#3
'
"(3
% $
"
# #

B"

B#


B$

"#3
'
""3
% $
"#3
# #

"#3
'
""3
% $
"#3
# #

B
" #3
"
$3
B#

B$ " #3

B" " #3

B# $ 3

B$ " #3 .

Ejercicio #) Resolver por el mtodo de Cholesky el sistema

"
#3
# #3

#3
#
" $3

# #3 B" # #3
" $3
B#
$3
( B$ $ %3

Solucin: La matriz E del sistema verifica que E E* es decir, se trata de una matriz hermtica. Adems, es
fcil comprobar que sus tres menores principales son positivos, por lo que adems de hermtica es definida
positiva y, por tanto, el Teorema #"" nos garantiza su factorizacin de Cholesky E V V donde V es una
matriz triangular superior.

"
#3
# #3

#3
#
" $3

# #3 <""
" $3 <"#
( <"$

!
<##
<#$

! <""
!
!
<$$ !

<"#
<##
!

<"$
<#$
<$$

#
<""
% <"" #
<"" <"# #3 <"# 3
#
<"" <"$ # #3 <"$ " 3
V !
#
<"# # <##
# <## "
!
<"# <"$ <## <#$ " $3 <#$ #3
#
#
#
<"$
<#$
<$$
( <$$ "

3 " 3
"
#3
!
"

El sistema EB , , que puede expresarse de la forma V *VB , , se descompone en dos: V *C , y


VB C.

#
3
" 3
#
!
!

3
"
!

!
"
#3

! C" # #3
C" " 3
!
C#
$3
C# # #3
C$ "
" C$ $ %3

" 3 B" " 3


B" "
#3
B# # #3 B#
#
B$ "
" B$ "

Por lo que la solucin del sistema es B" ", B# # y B$ ".

Clculo Numrico
Pgina 35

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio #* Dada la matriz E

:
:
#:

:
:#
"

#:
"
se pide:
': "

1.Determinar para qu valores de : E es hermtica y definida positiva.


2.Para : ", efectuar la factorizacin de Cholesky y utilizarla para resolver el sistema EB ,, siendo
, a " ! $ b> .
Solucin: 1.Una matriz E es hermtica si verifica que E E, por lo que nuestra matriz ser hermtica si, y slo
si : :; es decir, si : es real.
Para que sea definida positiva han de ser positivos los tres menores fundamentales de la matriz.
E" : !

E # :
:

:
E$ :

#:

:
#: !
: #

#:

" :%:# ): $ !

': "

:
:#
"

Como ha de ser : ! se tiene que |E$ | ! si %:# ): $ !.


"
#

%:# ): $ ! :

$
#

%:# ): $ !

"
#

$
#

En conclusin: E es hermtica y definida positiva si, y slo si, : es un nmero real comprendido entre
2.Para : " se trata de la matriz E

"
"
#

"
$
"

#
"
&

"
#

y $# .

y como " "# $# , se trata de una matriz hermtica y

definida positiva, por lo que el Teorema #"" nos garantiza su factorizacin de Cholesky E V > V (pues se trata
de una matriz real y, por tanto, V * V > ).
E

"
"
#

"
$
"

# <""
" <"#
& <"$

#
<""
" <"" "
<"" <"# " <"# "
<"" <"$ # <"$ #
#
<"# # <##
$ <## #

<"# <"$ <## <#$ " <#$

#
#

#
#
#
<"$
<#$
<$$
& <$$

#
#

!
<##
<#$

! <""
!
!
<$$ !

"

V !
!

"
#
!

<"#
<##
!

<"$
<#$
<$$

#
#
#
#

El sistema EB , puede escribirse de la forma V > VB , y descomponerse en dos: V > C , y VB C.


"
"
#

"

"
#
!

#
#
#
#

!
#
#
#

"
! C
" "
C" "

!
C# ! C# #
#
C$ "
C$ $

"
B" "
B" "

B# #
!
B#
B$ "
B$ "
#

por lo que la solucin del sistema es B" ", B# ! y B$ ".

Clculo Numrico
Pgina 36

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio #"! Resolver por los mtodos de Jacobi, Gauss-Seidel y SOR con = " # , el sistema
$B" B# B$ !
B" B# $B$ !
$B# B$ &
Solucin: Si permutamos las dos ltimas ecuaciones, el sistema se convierte en uno de diagonal dominante, lo
que nos asegura la convergencia de los dos primeros mtodos (Teoremas #"* y ##!) sin haber alterado el
nmero de condicin de la matriz, ya que un intercambio de filas se realiza mediante una transformacin
unitaria. Respecto al tercero de los mtodos, el Teorema ##" nos dice que el mtodo puede ser convergente,
pero no podemos garantizar su convergencia. Resolveremos, por tanto el sistema
$B" B# B$ !
$B# B$ &
B" B# $B$ !
Si realizamos la descomposicin E H I J donde H es una matriz diagonal con los elementos
diagonales de la matriz E, I la triangular inferior de E H y J la triangular superior de E H ,
obtenemos que
H

$
!
!

!
$
!

!
!
&

!
!
"

!
!
"

!
!
!

!
!
!

"
!
!

"
"
!

obtenindose, para cada uno de los mtodos:


".Jacobi: B8" N B8 - con

!
N H I J !
"
$
"

"
$

!
"$

"$
!
"$
y - H" , &$
!
!

iniciando el proceso con el vector nulo e iterando mientras que la norma del error sea || EB ,|| "!"%
(como ejercicio a mano que sea "!& obtenemos, con MATLAB, que B&& (" # ").
#.Gauss-Seidel: B8" P" B8 - con

P" H I J !
!
"

"
$

!
*"

"$
"$ y
#
*

!
&
- H I , $
&*
"

tomando como vector inicial al vector nulo e iterando mientras que la norma del error sea || EB ,|| "!"%
(como ejercicio a mano que sea "!& obtenemos, con MATLAB, que B$" " # ".
3.SOR: B8" P= B8 - con
P= H = I" " = H = J
- =H = I" ,

! #

"
!
P

"
#

I
!
#

"
#

"#
! !)

#
- " #H " # I" ,
! )

! %
! #
! !)

! %
! %
! "#

Comenzando con el vector nulo B! ! ! ! e iterando mientras que la norma del error sea
||EB , || "!"% (como ejercicio a mano que sea "!& obtenemos, con MATLAB, que B$% (" # ").

Clculo Numrico
Pgina 37

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio #"" Resolver por los mtodos de Jacobi, Gauss-Seidel y SOR con = " # , el sistema
"!B" B# #B$
'
B" ""B# B$ $B% #&
#B" B# "!B$ B% ""
$B# B$ )B% "&
Solucin: Al ser de diagonal dominante la matriz del sistema, sabemos que los dos primeros mtodos van a ser
convergentes (vanse los Teoremas #"* y ##!). Respecto al tercero de ellos, slo sabemos, por el Teorema
##", que el mtodo puede ser convergente, ya que " # pertenece al intervalo (! #).
Realizando la descomposicin E H I J tenemos que
"!
!
H
!
!

!
""
!
!

!
!
"!
!

!
I

!
"
#
!

!
!
"
$

!
!
"!
"

!
!
! !
J

!
!
!
!

"
!
!
!

#
"
!
!

!
$

"

Obtenindose, para los distintos mtodos:


".Jacobi: B8" N B8 - con

!
! !*
N H I J
! #
!
"

! "
!
! "
! $(&

! #
! !*
!
! "#&

! '
# #(
! #(
y -

! "
" "

!
" )(&

y tomando como vector inicial al vector nulo e iterando mientras que la norma del error sea
||EB , || "!"% (como ejercicio a mano que sea "!& obtenemos, con MATLAB, que B%# " # " ".
#.Gauss-Seidel: B8" P" B8 - con

!
!
P" H I J
!
!
"

! "
! !!*
! !"*!
! !!&(*&%

! #
! !(#
! !%(#
! !#"$'

!
! '

! #(
# $#(
y -

! *)(#
! !(#

! )())'$
! """$'

iniciando el proceso con el vector nulo e iterando mientras que la norma del error sea || EB ,|| "!"%
(como ejercicio a mano que sea "!& obtenemos, utilizando MATLAB, que B"' (" # " ").
$.SOR: B8" P= B8 - con
P= H = I" " = H = J
- =H = I" ,

! "#
! #%

! #

! ")'*!
! !)#*!
P ! !#")
"#
! !%&$)" ! !&"##*! ! "$#%&!*

! !"''#&% ! !('%#%(#
! !&("('(#

! (#

# )!&)"

"

"
#H

"
#

I
,

" "&'"!")

! )"$*''&%

! $$(

! !)!(#

! !%!'")

Comenzando con el vector nulo e iterando mientras que la norma del error sea || EB ,|| "!"% (como
ejercicio a mano que sea "!& obtenemos, con MATLAB, que B#% (" # " ").

Clculo Numrico
Pgina 38

Miguel Angel Cifredo Campos


macifredo@gmail.com

Actividad Personal
A continuacin se proponen ejercicios tomados en certmenes anteriores y ejercicios propuestos para
ser resueltos a modo de autoevaluacin.
BC
!
tiene solucin exacta B "!' / C "!' . Encuentre la
" El sistema
B ! ******C "
BC
!
solucin exacta del sistema
. Comente los resultados.
B " !!!!!"C "
# Chequee si E tiene factorizacin PY
"
"
a) E
#

"
#
"

%
$
b) E
#
"

"
#
"

# "
$ #

% $
$%

$
%
$
#

$ Verifique si alguna de las siguientes matrices pueden ser factorizadas por Choleski. Si es as resuelva
alguna de ellas.
# #&
$ !
a) E
% &

$ !
& !
"! !

% &
"! !
$% !

"&
")
b) E
"&
$

")
#%
")
%

"&
")
")
$

$
%

$
"

% Para los siguientes sistemas de ecuaciones, verifique si los mtodos iteativos de Jacobi y Gauss-Seidel
convergen o no. Donde haya convergencia calcule las iteraciones hasta un error menor que "!$

#B C
a) B 'C
#C D

#+ , $b) + $, # $+ , $-

"
$
"

#B C D

d) B C
B C #D

"
"
#

+ #, .

$+ , %e)
+ - $.
#+ , -

"
"#
!

B #B $B
"
#
$
%B" B# B$
#B" $B# B$

c)

!
'
#

!
#
"
"

& Reordene convenientemente, si se puede, los sistemas anteriores de tal manera que pueda usar el mtodo
WSV con
a) = " #
b) = 0,8

Clculo Numrico
Pgina 39

Miguel Angel Cifredo Campos


macifredo@gmail.com

Wada una funcin no nula 0 : V V resolver la ecuacin 0 (B) ! es hallar los valores de B que
anulan a dicha funcin. A estos valores de B se les denomina races o soluciones de la ecuacin, o tambin, ceros
de la funcin 0 (B).
Los mtodos de resolucin de ecuaciones y sistemas de ecuaciones se clasifican en directos e iterados.
Los del primer grupo nos proporcionan la solucin mediante un nmero finito de operaciones elementales,
mientras que los iterados producen una sucesin convergente a la solucin del problema.
Un ejemplo de mtodo directo es la conocida frmula de resolucin de las ecuaciones de segundo grado
+B # ,B - !, cuyas soluciones vienen dadas por la frmula:
B

, , # %+#+

Sin embargo, el siglo antepasado Abel prob que no existe ninguna frmula equivalente (en trmino de
races) para resolver ecuaciones de grado superior a cuatro. Adems, si la ecuacin no es polinmica no podemos
resolverla ms que mediante mtodos iterados que, incluso en el caso de las polinmicas de grado no superior
a cuatro, son ms eficientes.
Definicin $". Una solucin B de la ecuacin 0 (B) ! se dice que tiene multiplicidad 8 si
0 B 0 w B 0 ww B 0 8" B ! y 0 8 B !
Si la multiplicidad de una raz es ", diremos que es simple.
Todos los mtodos numricos de resolucin de ecuaciones presentan dificultades cuando la ecuacin
tiene races mltiples, ya que todos ellos se basan en los cambios de signo de la funcin y stos son difcilmente
detectables en un entorno de una raz mltiple. Ese hecho produce que en estos casos el problema est mal
condicionado.
En el caso de las ecuaciones algebraicas T8 (B) ! este problema se puede solucionar buscando otra
ecuacin que posea las mismas races que la dada pero todas ellas simples, es decir, eliminando las races
mltiples.
Por el Teorema fundamental del lgebra sabemos que T 8 (B) posee 8 races y, por tanto, puede ser
factorizado de la forma T8 (B) + ! (B B" )(B B# ) (B B8 ) donde B" ,B# , . . . , B8 son los ceros del
polinomio.
Si existen races mltiples, las podemos agrupar para obtener
7
7
7
T8 (B) + ! (B B" ) " (B B# ) # (B B5 ) 5 donde 7 3 representa la multiplicidad de
la raz B 3 (3 " 5 ) y verificndose que 7 " 7 # + 7 5 8.
Derivando esta expresin obtenemos:
T8 w (B) 8+ ! (B B" )

7" "

(B B# )

7# #

(B B5 )

75 5

U 5" (B)

con U 5" (B" ) distinto de cero para cualquier 3 " 5 .


Por tanto, si B es una raz de la ecuacin T8 (B) ! con multiplicidad 5 , es tambin una raz de T8w (B)
! pero con multiplicidad 5 ", por lo que
7" "

H(B) = M.C.D. [T8 (B), T8 w (B)] (B B" )

7# #

(B B# )

75 5

(B B5 )

obtenindose que:
U(B)

T8 (B)
H(B)

+ ! (B B" ) (B B# ) (B B5 )

es un polinomio cuyas races son las mismas que las de T8 (B) pero todas ellas simples.
Si ya conocemos que una ecuacin slo tiene races simples y queremos encontrarlas, parece apropiado
que un primer paso consista en detectar las posibles situaciones en stas. As por ejemplo, si son reales,
determinar intervalos de una amplitud reducida en los que se encuentren las races de la ecuacin.

Clculo Numrico
Pgina 40

Miguel Angel Cifredo Campos


macifredo@gmail.com

$" Acotacin y separacin de races.


Definicin $#. Dada una ecuacin 0 (B) ! (en general compleja) se denomina acotar las races a buscar dos
nmeros reales positivos < y V tales que < | B | V para cualquier raz B de la ecuacin.

Figura $" Acotacin de raices

Geomtricamente consiste en determinar una corona circular de radios < y V , que se muestra en la
Figura $", y dentro de la cual se encuentran todas las races. En el caso real se reduce a los intervalos ( V ,
<) y (<, V ).
Veamos una cota para las races de una ecuacin algebraica.
Proposicin $$. Si B es una raz de la ecuacin T (B) + ! B 8 +" B 8" +8 !, se verifica que:
B " E
siendo
E mx +3
+
3 "

Proposicin $%. [Regla de Laguerre] Consideremos la ecuacin


T (B) +! B8 +" B8" +8 !.
Sean G (x) = + ! B 8 " ,8# B ,8" el cuociente y < el resto de la divisin del T (B) entre B - .
Si < ! y ,3 ! para cualquier ! 3 8 ", el nmero real - es una cota superior para las races
positivas de la ecuacin. (Trivialmente lo es tambin para las races negativas).
El procedimiento consiste en comenzar con la cota obtenida anteriormente (que no suelen ser muy
buena) e ir disminuyndola hasta afinarla todo lo que podamos.
Las cotas obtenidas anteriormente nos delimitan la zona en la que debemos estudiar la existencia de
soluciones de la ecuacin pero, en realidad, lo que ms nos acerca a nuestro problema (resolver la ecuacin) es
separar cada raz en un intervalo. A este proceso se le conoce como separacin de races y estudiaremos un
mtodo que se conoce como mtodo de Sturm que nos permite separar las races de una ecuacin, aunque en la
prctica slo se utiliza en el caso de las ecuaciones algebraicas

$# Mtodo y algoritmo de la biseccin: anlisis de errores


Este mtodo consiste en la aplicacin directa del teorema de Bolzano.
Teorema $&. [Teorema de Bolzano] Si 0 (B) es una funcin continua en el intervalo cerrado [ + , ] y 0 (+)0 (, )
!, existe un punto + en (+,,) para el cual es 0 (+) !.
Nuestro problema se reduce a localizarla. Para ello, supongamos que est separada, es decir, que en el
intervalo [+ , ] es la nica raz que existe. Esto podemos garantizarlo, por ejemplo, viendo que 0 '(B ) es distinta
de cero en todo el intervalo, ya que entonces, el Teorema de Rolle (que se enuncia a continuacin) nos garantiza
la unicidad de la raz.
Teorema $'. [Teorema de Rolle] Si 0 (B) es una funcin continua en el intervalo cerrado [+ , ], derivable en el
abierto (+ , ) y 0 (+) 0 (, ), existe un punto a en (+ , ) para el que 0 '(+) !.

Clculo Numrico
Pgina 41

Miguel Angel Cifredo Campos


macifredo@gmail.com

En efecto, si 0 (B) tuviese dos races +" y + # en el intervalo [+ , ], verificara las hiptesis del teorema de
Rolle en el intervalo [+" ,+ # ] (que se encuentra contenido en [+ , ]) , por lo que debera existir un punto a de
(+" ,+ # ) y por tanto de (+ ,) en el que se anulara la derivada, por lo que si 0 '(B) no se anula en todo el intervalo
[+ , ], no pueden existir dos races de la ecuacin en dicho intervalo.
Si dividimos el intervalo por la mitad, la funcin ha de tener necesariamente signos opuestos en los
extremos de uno de los semi-intervalos, por lo que la raz buscada se encuentra en dicho semi-intervalo.
Reiterando el proceso podemos conseguir acercarnos tanto como queramos a la raz buscada.
Supongamos, sin prdida de generalidad, que 0 (B) es creciente en [+ ,].
P1 Tomamos + ! =

+ ,
, +
y &
#
#

P# Si 0 (+! ) ! entonces FIN. + + ! es la raz exacta


Si 0 (+! ) ! entonces hacemos , + !
Si 0 (+! ) ! entonces hacemos + + !
Se repite el paso 1, es decir, hacemos + ! =

+ ,
#

y &

, +
#

P$ Si & "! (error prefijado), entonces FIN. El valor de + ! es la raz


buscada con 5 cifras decimales exactas.
5
Si & "! , entonces repetimos el paso 2.
El error cometido, tomando como raz de la ecuacin el punto medio del intervalo obtenido en la
(, + )

"

iteracin 8-sima , viene dado por &8 8 " , por lo que si , + " y 8 * se tiene que &* "! "! ,
#
#
es decir, en * iteraciones obtenemos tres cifras decimales exactas.
$#". Algoritmo
Para 3 ! " # 8 M3 [+3 ,3 ] y 73

+3 ,3
#

punto medio del intervalo M3

[+3 73 ] si sig (0 (+3 ) sig (0 (73 )


M! [+ , ] y M3 "
[73 ,3 ] si sig (0 (,3 ) sig (0 (73 )
0 7 !

El proceso debe repetirse hasta que o bien


,3 +3 & con & !
3

Se tiene, por tanto:

prefijado.

M8:?>: + , & 0 B
S?>:?>: 7
A236/ , +# &
7 + , +#
30 0 7 !
+7
,7
/8. 30
30 =3180 + =3180 7
+7
/8. 30
30 =3180 , =3180 7
,7
/8. 30
/8.
:<38> 7

Clculo Numrico
Pgina 42

Miguel Angel Cifredo Campos


macifredo@gmail.com

El hecho de calcular el punto medio de [+ , ] como 7 +,+


es debido a que para valores muy
#
)
pequeos de + y , puede darse el caso de que +,
se
encuentre
fuera
del
intervalo
[ + ,].
#
Ejemplo $" Supongamos que se quiere calcular la raz cuadrada de 3, para lo que vamos a buscar la raz
positiva de la ecuacin 0 (B) ! con 0 (B) B # $.
Dado que 0 (") # ! y 0 (#) =1 !, el teorema de Bolzano nos garantiza la existencia de una
raz (que adems, el teorema de Rolle nos asegura que es nica ya que 0 w (B) #B no se anula en el intervalo
[" #]).
"%

Para obtener la raz con 14 cifras decimales exactas, es decir, con un error menor que "! tendramos
"%
8 "
"%
que detener el proceso cuando #"
"! o, lo que es lo mismo, cuando # "! para lo que ha de ser
#8 "
8 %' es decir, tendramos que detenernos en 7%' para poder garantizar la precisin exigida.
Vamos a ver a continuacin otros mtodos que reducen, de forma considerable, el nmero de
operaciones.
$$Punto fijo e iteracin funcional
Ya se coment que los mtodos iterados consisten en crear una sucesin convergente a la solucin del
problema.
Definicin $( Una funcin 0 : V V se dice contractiva si verifica |0 (B" ) 0 (B# )| |B" B# | cualesquiera
que sean B" , B# V .
Si la funcin es derivable, basta comprobar que cualquiera que sea el valor de B V para poder
garantizar que se trata de una funcin contractiva.
Si se desea resolver la ecuacin 0 (B) !, se escribe esta de la forma B : (B), donde : (B) es una
funcin contractiva, y partiendo de un determinado valor inicial B! , se construye la sucesin B8 " : (B). La
convergencia de esta sucesin la garantiza el siguiente teorema.
Teorema $). [Teorema del punto fijo] Dada la ecuacin B : (B) en la que :' (B) ; " cualquiera que
sea B [+ , ] y un punto B! [+ , ], la sucesin B! , B" , . . . , B8 , . . . en la que B8 " = : (B8 ) converge a un valor
B que es la nica solucin de la ecuacin en dicho intervalo.

Figura $# Esquema de la convergencia para el teorema del punto fijo

En la Figura $# puede observarse que el mtodo converge si :' (B) ; ", mientras que si :'
(B) " el mtodo es divergente.

En los casos (+) y (, ), en los que :' (B) ; " el mtodo converge montonamente en (+) y de
forma oscilatoria o en espiral en (,).

En los casos (- ) y (. ), en los que : ' (B ) ; " el mtodo diverge de forma montona en (+) y de
forma oscilatoria en (,).

Clculo Numrico
Pgina 43

Miguel Angel Cifredo Campos


macifredo@gmail.com

$$". Cota del error "a posteriori"


Si 0 (B) es una funcin continua en el intervalo [+ ,] y derivable en el abierto (+ ,), sabemos por el
)0 (+)
teorema del valor medio que existe un punto - (+ , ) tal que 0 (,,+
0 w -.
Sea B una solucin de la ecuacin 0 (B) ! y sea B8 aproximacin de ella obtenida por un mtodo
cualquiera. Supongamos 0 B continua en el intervalo cerrado [B8 B] [B B8 ] (dependiendo de que B sea mayor
o menor que B8 ) y derivable en el abierto. Existe entonces un punto - (B8 B) - (B B8 ) tal que
0 (B) 0 B8 )
0 w -.
B B8

Como 0 B ! y (B B8 ) &8 , nos queda que &8


&8 =

0 B8
0 w -

0 B8
0 w -

, obtenindose que

0 B8
mn 0 w B

B + ,

Lo nico que debemos exigir es que la derivada de la funcin no se anule en ningn punto del intervalo
(+ , ).
Observacin: La transformacin B : (B se puede llevar a cabo mediante operaciones algebraicas o
simplemente agregando B a cada lado de la ecuacin original.
Ejemplo $# El clculo de la raz cuadrada de 3 equivale al clculo de la raz positiva de la ecuacin B # $.
Aunque ms adelante veremos mtodos cuya convergencia es ms rpida, vamos a realizar los siguientes
cambios:
$B
B # $ B B# B $ B " B $ B B
"B
Es decir, hemos escrito la ecuacin de la forma B : (B) con : (B)
raz de $ est comprendida entre " y # y que | :w (B)|

$B
. Dado que sabemos que la
"B

#
"
#
#
"
" B#
#
#

para cualquier B [" #],

podemos garantizar que partiendo de B! " el mtodo converger a la raz cuadrada de $.


As pues, partiendo de B! " y haciendo B8 "
B"
B#
B$
B%
B&
B'
B(
B)
B*
B"!
B""
B"#
B"$

#
" '''''''''''''(
" (&!!!!!!!!!!!!
" (#(#(#(#(#(#($
" ($$$$$$$$$$$$$
" ($"(!($"(!($"(
" ($#"%#)&("%#)'
" ($#!#'"%$(*!)&
" ($#!&"#)#!&"#)
" ($#!%*!$'(((&)
" ($#!&"#)#!&"#)
" ($#!&!')!%$"(#
" ($#!&!)%"'$&")

$ B8
obtenemos:
" B8
B"%
B"&
B"'
B"(
B")
B"*
B#!
B#"
B##
B#$
B#%
B#&
B#'

" ($#!&!(*)%%!)%
" ($#!&!)"!!"%($
" ($#!&!)!'*"$&"
" ($#!&!)!((%%%)
" ($#!&!)!(&#")#
" ($#!&!)!(&)"%)
" ($#!&!)!(&'&&!
" ($#!&!)!(&'*()
" ($#!&!)!(&')'$
" ($#!&!)!(&')*%
" ($#!&!)!(&'))'
" ($#!&!)!(&')))
" ($#!&!)!(&')))

El error, calculado a posteriori ,vendr dado por


&8

0 B8
mn 0 w B8

B "#

donde 0 (B) B # $, por lo que

Clculo Numrico
Pgina 44

Miguel Angel Cifredo Campos


macifredo@gmail.com

&#'

B#'# $
"&
"%
% ))%*)"$!)$&!')) "! "!
#

es decir, $ " ($#!&!)!(&'))) con todas sus cifras decimales exactas.

Obsrvese que en el Ejemplo $" vimos cmo eran necesarias 46 iteraciones para calcular la raz
cuadrada de 3 (con 14 cifras decimales exactas) mediante el mtodo de la biseccin, mientras que ahora slo
hemos necesitado 26. Sin embargo vamos a ver a continuacin cmo se puede reducir an ms el nmero de
iteraciones aplicando el mtodo conocido como mtodo de Newton.
$%Mtodo de Newton: anlisis de errores
Si tratamos de resolver la ecuacin 0 (B) ! y lo que obtenemos no es la solucin exacta B sino slo
una buena aproximacin B8 tal que B B8 2 tendremos que
0 B 0 B8 2 0 w B8
por lo que

B B8

0 B8
0 w B8

0 B8
0 w B8

btenindose la denominada frmula de Newton-Raphson:


B8 " B8

0 B8
0 w B8

Si, a partir de ella, construimos la sucesin (B8 ) y sta converge, se tendr que lim B8 B, ya que nos
8_

quedara, aplicando lmites en la frmula de Newton-Raphson que


lim B8 " lim B8

8_

8_

0 w

lim B8

lim B8

8_

0 lim B8 !
8_

8_

siempre que 0 w lim B8 no se anule, lo cual se verifica si exigimos que la funcin posea una nica raz en
8_

[+ , ]. Dado que la raz de la ecuacin en el intervalo [+ , ] es nica, necesariamente lim B8 B


8_

Este mtodo es tambin conocido como mtodo de la tangente, ya que si trazamos la tangente a la curva
C 0 B en el punto B8 0 B8 obtenemos la recta C 0 B8 0 w B8 B B8 , que corta al eje C ! en el
0 B
punto de abscisa B B8 0 w B8 , que es precisamente el valor de B8 " de la frmula de Newton-Raphson.
8

En la Figura $$ puede observarse cmo acta geomtricamente el mtodo de Newton-Raphson.

Figura $$ El proceso de Newton

Lo ms dificultoso del mtodo consiste en el clculo de la derivada de la funcin as como la obtencin


del valor inicial que debe tomarse, es decir, el valor de B! .
Busquemos, a continuacin, alguna cota del error.
&8 " B B8 " B B8

0 B8
0 B8
0 B
&8 w 8
B B8 w
0 w B8
0 B8
0 B8

Clculo Numrico
Pgina 45

Miguel Angel Cifredo Campos


macifredo@gmail.com

Desarrollando 0 B) en un entorno de B8 se obtiene


! 0 B 0 B8 &8 0 B8 0 w B8 &8

0 ww > #
&8
#x

con >

B B8 si B B8
(B8 B si B B8

Supuesto que 0 w B8 es distinta de cero, podemos dividir por dicha derivada para obtener
!

por lo que &8 "

0 B8
0 ww > #
0 ww > #
&8
&8 & 8 "
&
w
w
0 B8
#0 B8
#0 w B8

0 ww > #
& 5 &8#
#0 w B8 8

donde
5 mx
B +,

0 ww >
#0 w B8

siendo [+ ,] cualquier intervalo, en caso de existir, que contenga a la solucin B y a todas las aproximaciones B8 .
Esta ltima desigualdad podemos (no queriendo precisar tanto) modificarla para escribir
5

mx 0 ww B
# mn 0 w B

con

B + , y

0 w B 0

Supuesta la existencia de dicho intervalo [+ ,], el valor de 5 es independiente de la iteracin que se


realiza, por lo que
5 &8 " 5 &8 5 &8 " 5 &!
#

o lo que es lo mismo:

& 8

#8 "

"
#8
5 &!
5

donde es necesario saber acotar el valor de &! B B! .


Es decir, si existe un intervalo [+ ,] que contenga a la solucin y a todas las aproximaciones B8 se
puede determinar a priori una cota del error, o lo que es lo mismo, se puede determinar el nmero de iteraciones
necesarias para obtener la solucin con un determinado error.
Evidentemente, el proceso converger si 5 &! ", es decir, si &!

la convergencia es de segundo orden.

"
. En caso de ser convergente,
5

$%" Algoritmo
Una vez realizado un estudio previo para ver que se cumplen las condiciones que requiere el mtodo,
establecer el valor inicial B! y calcular el valor de
7 mn 0 w B
B +,

el algoritmo es el siguiente
M8:?> + , B! &! 0 B 7
S?>:?> B
B B!
0 B
/ +,=

7
A236/ / &
0 B
B B w
0 B
0 B
/ +,=

7
/8.

Clculo Numrico
Pgina 46

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo $$ En el Ejemplo $# calculamos la raz de 3 con 14 cifras decimales exactas en 26 iteraciones.


Vamos a ver cmo se disminuye considerablemente el nmero de iteraciones cuando se utiliza la frmula de
Newton-Raphson.
Partimos de la ecuacin 0 (B) B # $ !, por lo que la frmula de Newton-Raphson nos dice que,
teniendo en cuenta que 0 w B #B
B8 " B8

0 B8
0 w B8

B8 " B8

B#8 $
#B8

B8 "

"
$
B
# 8 B8

Dado que la raz de 3 es un nmero comprendido entre " y # y la funcin 0 w (B) #B no se anula en
dicho intervalo, podemos aplicar el mtodo de Newton tomando como valor inicial B! #
B! #

B" " (&!!!!!!!!!!!!

B# " ($#"%#)&("%#)'

El error a posteriori vendr dado por


0 B8
&8
por lo que
mn 0 w B8
B "#

B$ " ($#!&!)"!!"%($

&%

B% " ($#!&!)!(&')))

B%# $
% ))%*)"$!)$&!'))
#

es decir, la raz cuadrada de $ es " ($#!&!)!(&'))) con todas sus cifras decimales exactas.
Se observa que la convergencia de Newton-Raphson es mucho ms rpida que biseccin, ya que slo
hemos necesitado 5 iteraciones frente a las 46 de la biseccin.
De hecho, existen mtodos para determinar el valor inicial B! que debe tomarse para que en la segunda
iteracin se disponga ya de 8 cifras decimales exactas.

$%# Regla de Fourier


Supongamos que tenemos acotada, en el intervalo [+ , ], una nica raz B de la ecuacin 0 (B ) ! y que
0 w (B) y 0 ww (B) no se anulan en ningn punto del intervalo [+ ,], es decir, que ambas derivadas tienen signo
constante en dicho intervalo.
En cualquiera de los cuatro casos posibles (Figura 2.4), la funcin cambia de signo en los extremos del
intervalo, es decir, dado que la segunda derivada tiene signo constante en [+ , ], en uno de los dos extremos la
funcin tiene el mismo signo que su segunda derivada.
En estos casos, el mtodo de Newton es convergente debindose tomar como valor inicial
B!

+ , si 0 w + 0 ww + !
, , si 0 w , 0 ww , !

es decir, el extremo en el que la funcin tiene el mismo signo que su derivada segunda.

0 w B !
0 w B !
0 w B !
0 w B !
0 ww B !
0 ww B !
0 ww B !
0 ww B !
B! +
B! ,
B! +
B! ,
Figura $% Los cuatro casos posibles

Gracias a que la convergencia es de segundo orden, es posible modificar el mtodo de Newton para
resolver ecuaciones que poseen races mltiples.

Clculo Numrico
Pgina 47

Miguel Angel Cifredo Campos


macifredo@gmail.com

$%$ Mtodo de Newton para races mltiples


Cuando el mtodo de Newton converge lentamente nos encontramos con una raz mltiple y, a
diferencia de lo que ocurra con otros mtodos, podemos modificar el mtodo para acelerar la convergencia.
Sea B una raz de multiplicidad 5 de la ecuacin 0 (B) !. En este caso, el mtodo de Newton converge
muy lentamente y con grandes irregularidades debido al mal condicionamiento del problema.
0 B
0 B
Si en vez de hacer B8 " B8 w 8 hacemos B8 " B8 5 w 8 donde 5 representa el orden de
0 B8
0 B8
la primera derivada que no se anula (multiplicidad de la raz B ), el mtodo sigue siendo de segundo orden.
En la prctica, el problema es que no conocemos 5 pero a ello nos ayuda la rapidez del mtodo.
Ejemplo $% Para resolver la ecuacin B =/8 B ! comenzamos escribindola de la forma B =/8B , por lo
que las soluciones sern los puntos de interseccin de la recta C B con la curva C =/8 B.
Aunque es conocido que la solucin de la ecuacin es B !, supondremos que slo conocemos que
est comprendida entre " y " y vamos aplicar el mtodo de Newton.
B =/8 B8
=/8 B8 B8 -9= B8
B8 " B8 8

" -9= B8
" -9= B8

Figura $& Las funciones C B y C =/8 B

Comenzando con B! " se obtiene:


B! "
.. . . . . . . . . . . . . . . . . .

0 w B"! ! !!!"
B"! ! !"')##(** 0 ww B"! ! !"'
0 w w w B"! ! ***)
.. . . . . . . . . . . . . . . . . .
0 w B#! ! !!!!!!!"
B#! ! !!!!"*% 0 ww B#! ! !!"*
0 w w w B#! ! ****

Como la convergencia es muy lenta, hace pensar que se trata de una raz mltiple. Adems, como la
primera y la segunda derivadas tienden a cero y la tercera lo hace a ", parece que nos encontramos ante una raz
triple, por lo que aplicamos el mtodo generalizado de Newton.
B =/8 B8
B8 " B8 $ 8
" -9= B8
y comenzando, al igual que antes, por B! " se obtiene:
B! "

B " ! !$%

B# ! !!!!!"$('

B$ ! !!!!!!!!!!!!!*

que se ve que converge rpidamente a la solucin B !.


Dado que B ! 0 B B =/8 B ! la solucin es exacta. Por otra parte, podemos ver que
0 w B " -9= B 0 w B !
0 ww B =/8 B 0 ww B !
0 ''' B -9= B 0 ''' B "
lo que nos indica que la raz es, en efecto, triple.

Clculo Numrico
Pgina 48

Miguel Angel Cifredo Campos


macifredo@gmail.com

Al aplicar el mtodo de Newton hay que tener en cuenta que a pesar de que su comportamiento es en
general muy bueno existen casos en que se encuentran dificultades, no slo si existen races mltiples sino en
muchos casos en los que las races son simples pero presentan ciertas particularidades.
"!
Ejemplo $& Tratemos de determinar, por el mtodo de Newton, la raz positiva de la funcin , 0 B B

tomando como valor inicial B! ! &. La frmula de Newton-Raphson es, en este caso:
"

B8 " B8

B"!
"
8

"! B*8

Aplicando el algoritmo se obtienen los valores


B" &" '& B# %' %)& B$ %")$'& B% $( '&#)& B& $$ ))(&'&...
B"! #! !"!#')#&')&!"# ... B#! ' *(("%*"#$#**!'... B$! # %$#)!"$**&%#$!...
B%! " !!#$"'!#%"((%" B%" " !!!!#$*$%#*!)% B%# " !!!!!!!!#&(('! B%$ ".
Puede observarse que la convergencia es muy lenta y slo se acelera (a partir de B%! ) cuando estamos
muy cerca de la raz buscada.
Adems de existir casos como el anterior donde la convergencia es muy lenta, la naturaleza de la
funcin puede originar otras dificultades, llegando incluso a hacer que el mtodo no converja.
Si en las proximidades de la raz existe un punto de inflexin, las iteraciones divergen progresivamente de la
raz.

El mtodo de Newton oscila en los alrededores de un mximo o un mnimo local, persistiendo o llegando a
encontrarse con pendientes cercanas a cero, en cuyo caso la solucin se aleja del rea de inters.

Un valor inicial cercano a una raz puede converger a otra raz muy distante de la anterior como consecuencia
de encontrarse pendientes cercanas a cero. Una pendiente nula provoca una divisin por cero (geomtricamente,
una tangente horizontal que jams corta al eje de abscisas).

Todo esto nos indica que aunque existen software que resuelven ecuaciones (generalmente aplicando
Newton), hay que realizar un estudio previo para tratar de detectar cualquier tipo de anomala que se presente.

Clculo Numrico
Pgina 49

Miguel Angel Cifredo Campos


macifredo@gmail.com

$& Ejercicios
Ejercicio $" Dada la ecuacin B/ B " !, se pide:
1.Estudiar grficamente sus races reales y acotarlas.
2.Aplicar el mtodo de la biseccin y acotar el error despus de siete iteraciones.
3. Queda de Tarea resolverla por iteracin funcional.
4.Aplicar el mtodo de Newton, hasta obtener tres cifras decimales exactas.
Solucin: 1. La ecuacin puede escribirse de la forma: / B

"
.
B

Grficamente, se observa que existe una nica solucin real (interseccin de las dos curvas) y que esta es
positiva. La demostracin analtica de este hecho es la siguiente:

Para B ! es

"
"
! y / B !, por lo que / B
y, por tanto, no existen races negativas.
B
B

0 ! " !
Para B ! es 0 B B/ B ", por lo que
0 _ _ !
de races positivas (al menos una).

y existe, por tanto, un nmero impar

La funcin derivada 0 w B B/ B / B B " / B slo se anula para B ". Dado que, si existiese ms
de una raz positiva, el teorema de Rolle nos asegura que la funcin derivada debe anularse en algn punto
intermedio y hemos visto que 0 w B no se anula para ningun valor positivo de la variable podemos asegurar que
slo existe una raz real + y que esta es positiva y simple, pues 0 w + !.
Dado que 0 " / " ! y 0 ! " !, podemos asegurar que la nica raz real de la ecuacin se
encuentra en el intervalo (! ").
#Mtodo de la biseccin
0 ! " !
[+! ,! ] [+ , ] [! "] con
0 " / " !
0 ! & ! [+" ," ] [! & "]
0 ! '#& ! [+$ ,$ ] [! & ! '#&]
0 ! &*$(& !
[+& ,& ] [! &'#& ! &*$(&]
0 ! &(!$"#& ! [+( ,( ] [! &'#& ! &(!$"#&]

0 ! (& ! [+# ,# ] [! & ! (&]


0 ! &'#& ! [+% ,% ] [! &'#& ! '#&]
0 ! &()"#& ! [+' ,' ] [! &'#& ! &()"#&]

Tomando como aproximacin de la raz el punto medio del intervalo B( ! &''%!'#& se obtiene un error
"
#
| &( | ) ! !!$*!'#& | &( | "!
#
Si redondeamos a las dos primeras cifras decimales, es decir, si tomamos B ! &( , el error acumulado
verifica que
| & | | ! &( ! &''%!'#&| ! !!$*!'#& ! !!(& "!

! &( con las dos cifras decimales exactas.


por lo que puede asegurarse que la solucin de la ecuacin es

Clculo Numrico
Pgina 50

Miguel Angel Cifredo Campos


macifredo@gmail.com

4Mtodo de Newton
La frmula de Newton-Raphson es B8 " B8

0 B8
0 B8

Dado que, por el apartado anterior, se conoce que la raz se encuentra en el intervalo [ ! &'#&;! &(!$"#&] y
que0 ! &'#& ! , 0 ! &(!$"#& !:
0 B B/ B "

0 ! &'#& !
0 ! &(!$"#& !

0 w B B " / B

0 w B ! a B [! &'#&; ! &(!$"#&]

0 ww B B # / B

0 ww B ! a B [! &'#&; ! &(!$"#&]

la regla de Fourier nos dice que B! ! &(!$"#&.


Al ser positiva la segunda derivada, 0 w B es creciente, por lo que

0 w B 0 w ! &'#& # (%##(#*!"&!!%(

mn
B[!&'#& !&(!$"#&]

es decir, el error a posteriori vendr dado por

0 B8

&
n

mn

0 w B

0 B8
# (%

B [!&'#& !&(!$"#&]

obtenindose que
B! ! &(!$"#&

con &!

B" ! &'("&"%*)$&*!!

0 B!
# (%

con &"

! !!$#!%$()&'&!&
0 B!
# (%

! !!!!!)#((&("##

Si redondeamos a ! &'( el error acumulado es


| & | ! !!!"&"%*)$&*!! ! !!!!!)#((&("## "!

Por lo que la solucin de la ecuacin es B ! &'( con sus tres cifras decimales exactas.

Ejercicio $# Se considera la ecuacin real

# -9=#B %B 5 !.

1.Determinar el valor de 5 para que tenga una nica raz triple en el intervalo [! "].
2.Para 5 $, probar que posee una nica raz simple en el intervalo [! "], y calcularla con 6 cifras decimales
exactas utilizando el mtodo de Newton.
Solucin:
1.Si tiene una raz triple, debe anularse no slo la funcin sino tambin sus dos primeras derivadas, por lo que
0 B # -9=#B %B 5 !
0 w B % =/8#B % !
1
1
0 ww B )-9=#B ! #B
B
#
%
Debe verificarse entonces que 0 1% # -9= 1# 1 5 !, por lo que 5 1 .
En ese caso,

1
%

es una raz triple por anular a 0 , 0 w y 0 ww pero no anular a 0 '''B "' =/8#B.

Adems, dado que 0 ! y 0 " tienen signos contrarios, existe un nmero impar de races de 0 B en el
intervalo [! "], pero de existir tres, la primera derivada debera de anularse dos veces (consecuencia directa del
Teorema de Rolle) y slo lo hace una vez en B 1% , por lo que podemos asegurar entonces que si 5 1 la
funcin slo posee una raz triple en el intervalo [! "] y que sta es 1% .

Clculo Numrico
Pgina 51

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.Para 5 $ se tiene que 0 B # -9=#B %B $ pero sus derivadas son independientes del valor asignado
a la 5 .
Como 0 ! " y 0 " # -9=#B ! "'((... !, la funcin tiene, al menos, una raz en dicho intervalo
y, por razones anlogas a las del apartado anterior, slo puede tener una.
Dado que en [! "] se anula la derivada (0 1% !) nos interesa reducir el intervalo en el que vamos a buscar
la raz. Para ello, y dado que 0 ! & # -9=" " ! !)!'... !, podemos restringirnos al intervalo [! ! &]
en el que sabemos que no se anula la derivada.
Como
0 w B % =/8#B % !
y

, cualquiera que sea B [!; ! &]

0 ww B )-9=#B ! para cualquier B [!; ! &],

la regla de Fourier nos dice que el mtodo de Newton converge tomando como valor inicial B! ! .
Para acotar el error, como 0 ww B ! cualquiera que sea B [!; ! &], sabemos que 0 w B es decreciente en
dicho intervalo, por lo que
B[! !&]

mn 0 w B 0 w ! & % =/8 " % ! '$%"

Por tanto el error a posteriori vendr dado por


& 8

0 B8
0 B8

#0 B8
! &
mn 0 w B

B[!; !&]

y la frmula de Newton-Raphson queda de la forma:


B8 " B8

% =/8#B # -9=#B $
0 B8

w
0 B8
% =/8#B %

por lo que se obtiene


B!
B"
B#
B$
B%
B&

!
! #&
! $'(&(*")"%&!#$
! %!&*""'&()")!"
! %!&))&((&'!$%"
! %!&*""'&()")!"

&!
&"
&#
&$
&%
&&

#
! %)*''*(&#&$)&"
! !*#%')$&'&!$%%
! !!("&$")&''!%*
&
& ')$&()'%!!!!!!! "!
*
$ '))""&!!!!!!!!! "!

Por tanto B ! %!&*"# con un error


| & | (! %!&*"# ! %!&*""'&()")!") $ '))""&!! "!

$ %#")"** "! $ '))"&!! "!

"!

'

Ejercicio $$ Probar que la ecuacin B # 68 B ! slo tiene una raz real y hallarla, por el mtodo de
Newton, con 6 cifras decimales exactas.
Solucin: Si representamos las grficas de las funciones C 68 B e C B # obtenemos

Clculo Numrico
Pgina 52

Miguel Angel Cifredo Campos


macifredo@gmail.com

Puede observarse que slo existe un punto de corte entre ellas, por lo que la ecuacin B # 68 B !
slo posee una raz real.
Analticamente hay que probar que las grficas no vuelven a cortarse en ningn otro punto, sin
embargo, dado que en su dominio de definicin, que es (! _), 68 B es creciente y B # decreciente, no
pueden volver a cortarse.
Partiendo de B! ! " y aplicando el mtodo de Newton, en el intervalo (! " "), dado por la frmula
B8 " B8

0 B8
B # 68 B8
B $ B8 B8 68 B8
B8 8
8
"
w
0 B8
#B8# "
#B8 B8

y con un error a posteriori dado por

& 8

0 B8
0 B8

$
mn 0 w B

B[!";"]

obtenemos
B"
B#
B$
B%

! $#%('$#%%%""")
! &*)!**(!*)&**"
! '&#&)&'(#%)(&!
! '&#*")'$$'$$%)

&"
&#
&$
&%

! $$*(#*#
! !&#!*"&
%
$ "%*#* "!
*
' %"(* "!

Por lo que la raz buscada es ! '&#*"* con un error


| & | (! '&#*"* ! '&#*")'$$'$$%) ) ' %"(* "!

! !!!!!!$''$''%# . . . . . . ' %"(* "!

"!

'

es decir, con las seis cifras decimales exactas.


Ejercicio $% Resolver, por los mtodos de la biseccin y Newton, la ecuacin 68B =/8B !, acotando
previamente sus races.
Solucin: La ecuacin dada puede escribirse de la forma 68 B =/8 B, por lo que hallaremos grficamente la
interseccin entre las curvas C 68 B e C =/8 B.
El mximo de la funcin C =/8 B es " y, por tanto, cuando la curva C 68 B tome valores mayores
que ", no puede volver a intersecar a la del =/8 B. De esta forma sabemos que como 68 B " siempre que
B / # (". . ., las posibles soluciones de la ecuacin se encuentran en el intervalo (! /), del que se han
excluido los extremos ya que, evidentemente, no son soluciones de la ecuacin.
Adems de la raz que se observa en el intervalo [! 1], ambas grficas slo podran volver a
intersecarse en puntos en los que B $#1 , (en que sen B vuelve a ser creciente), pero como $#1 /, no existen
ms races.

Antes de aplicar cualquier mtodo de resolucin, afinemos el intervalo en el que puede hallarse la raz.
0 # 68 # =/8 # ! #"'"& ! B # /
0 # & 68 # & =/8 # & ! $"()" ! B # # &
Partiremos ahora de esta ltima acotacin: B # # &.

Clculo Numrico
Pgina 53

Miguel Angel Cifredo Campos


macifredo@gmail.com

"Mtodo de la biseccin
'
Dado que | &5 | #,+
5" "! , debemos tomar 5 "*, es decir, debemos calcular los valores de B5 hasta B"* .
0 # & ! !$#)&(! ! B # # &
0 # "#& ! !*'&%(* !
B # "#&; # #&
0 # ")(& ! !$$!#** !
B # ")(&; # #&
0 # #")(& ! !!!$('& ! B # #")(&; # #&
0 # #$%$(& ! !"'"')& !
B # #")(&; # #$%$(&
0 # ##'&'#& ! !!()((* !
B # #")(&; # ##'&'#&
0 # ###'&'#& ! !!$(%'" ! B # #")(&; # ###'&'#&
0 # ##!(!$"#& ! !!"')$' ! B # #")(&; # ##!(!$"#&
0 # #"*(#'&'#& ! !!!'&$# !
B # #")(&; # #"*(#'&'#&
0 # #"*#$)#)"#& ! !!!"$)# !
B # #")(&; # #"*#$)#)"#&
0 # #")**%"%!'#& ! !!!"" !
B # #")**%"%!'#&; # #"*#$)#)"#&
0 # #"*""'#"!*$(& ! !!!!!* !
B # #")**%"%!'#&; # #"*""'#"!*$(&
0 # #"*!&&"(&()"#& ! !!!!& ! B # #"*!&&"(&()"#&; # #"*""'#"!*$(&
0 # #"*!)&'*$$&*$(& ! !!!!##' ! B # #"*!)&'*$$&*$(& # #"*""'#"!*$(&
;
0 # #"*"!!*&##"%)%$( ! !!!!!'& ! B # #"*"!!*&##"%)%$( # #"*""'#"!*$(&
;
0 # #"*"!)&)"&%#*'* ! !!!!!"& ! B # #"*"!!*&##"%)%$( # #"*"!)&)"&%#*'*
;
0 # #"*"!%('')%&(!$ ! !!!!!#& ! B # #"*"!%('')%&(!$ # #"*"!)&)"&%#*'*
B"* # #"*"!("&"!$"#&! (punto medio
del intervalo), el error viene dado
;
por
0 # #"*"!''(%"*%$
! &
(
$'
! !!!!!!&
| &19 | #! % (')$("&)#!$"#&! "!
#
! B #
#"*"!''(%"*%$$'
y si redondeamos a # #"*"!( el error total vendr dado por
# #"*"!)&)"&%#*'*
'
; "!( % (')$("& "!( "!
| & | (# #"*"!( # #"*"!("&"!$"%*) %,(')$("&... "!( " &"!$"%*
0 # #"*"!('#()')'&# ! !!!!!!& ! B # #"*"!''(%"*%$$' #
por lo que las seis cifras decimales son exactas.
#"*"!('#()')'&# ;

por
lo que, de
tomando
la aproximacin
Newton

# Mtodo
Ya hemos visto que en el intervalo [# # &] son positivas 0 w B y 0 ww B, luego podemos aplicar la regla de
Fourier. Como 0 # & ! tomamos B! # & y aplicamos la frmula de Newton-Raphson.
B8 " B8

Al ser creciente 0 B, sabemos que

0 B8
0 w B8

mn 0 w B 0 w # ! *"'" por lo que la formula

B[# #&]

del error a posteriori es

obtenindose que

& 8

B!
B"
B#
B$

0 B8
! *

# &
# #$&%!$$%!*!#$%
# #"*")!'*'$*(!(
# #"*"!("&!%$(#(

&! ! $&$"$"('%")*""
&" ! !"*")!&!)%'(!%
&# ! !!!!)'"(#'(#('
'
&$ ! !!!!!!!!"()&!" "!

Si redondeamos a # #"*"!(, el error acumulado es

|&| # #"*"!( # #"*"!("&!%$(#( ",()&!" "!

",&#"!

"!

'

por lo que la raz de la ecuacin es B # #"*"!( con las seis cifras decimales exactas.

Clculo Numrico
Pgina 54

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio $& Separar las races reales de la ecuacin B/B B # " !, y obtenerlas con ocho cifras
decimales exactas por el mtodo de Newton, aplicando previamente la regla de Fourier.
Solucin: Comenzaremos por transformar la ecuacin para despejar la exponencial.
B/B B# " ! B/B B # "
La funcin C
oblicua C B.

B # "
B

/B

B# "
B

es una cnica (hiprbola) con una asntota vertical de ecuacin B ! y otra

Grficamente se observan dos intersecciones, una de ellas en los valores negativos de la variable y la
otra en los positivos.

Vemoslo con ms detalle. La funcin J B /B B B" tiene las mismas races (ya que B ! no
es solucin de la ecuacin) que la funcin 0 B B/B B # " !.
J w B /B

B #B B # "
B# "
"
/B
/B " B
#
B
B#
B

Tenemos entonces que J w B ! cualquiera que sea el valor que tome la variable B y adems, J
! _. Por tanto, J w B nunca se anula.

No podemos aplicar directamente el Teorema de Rolle a la funcin J B en ( _ _) ya que no es


continua ni derivable en B !, pero s podemos hacerlo en los intervalos ( _ !) y (! _).
Si J B se anulara dos o ms veces en (! _), su derivada J w B se debera anular en algn punto
de dicho intervalo, por lo que podemos asegurar que J B tiene, a lo ms, una raz en (! _). El mismo
razonamiento nos lleva a asegurar que slo posee una raz en el intervalo ( _ !). En conclusin, J B tiene, a
lo sumo, dos races reales, como ya observamos grficamente.
Basta entonces con probar la existencia de dichas races. Para ello consideramos, de nuevo, la funcin
0 B B/B B # " (que no tiene singularidades).
0 " / !

0 ! " !

Existe una raz en " !

0 " /" !
Existe una raz en " #
0 # #/# $ !
Al ser 0 w B B/B /B #B " B/B #B, tenemos que:
Para B " ! es " B !, /B ! y #B ! por lo que 0 w B !

Para B " # es " B !, /B ! y

#B ! por lo que 0 w B !

Por tanto, 0 w B no se anula en ninguno de los intervalos, por lo que podemos asegurar que ambas
races son simples.

Clculo Numrico
Pgina 55

Miguel Angel Cifredo Campos


macifredo@gmail.com

Regla de Fourier
1.Para B ( " !) es
B ! ".

2.Para B (" #) es

0 w B !
0 ww B B #/B # !

0 w B !
0 ww B B #/B # !

, luego como 0 " !, tomamos

, luego al ser 0 # !, tomamos

B! #.

Mtodo de Newton
La frmula de Newton-Raphson B8 " B8
los valores

0 B8
aplicada a la funcin 0 B B/B B # " nos genera
0 w B8

Intervalo " #

Intervalo " !

B!
B"
B#
B$
B%
B&

B!
B"
B#
B$
B%
B&
B'

#
" $$***)!$
" "(*$*#"(%
" "'('&!'##
" "'(&)&&#*
" "'(&)&&#(

"
! '$%%(!("!(
! %*'(()'!'#
%()%('&$')
%()"(#%)!#
!%()"(#$*(#
! %()"(#$*(#

Dado que 0 w B es negativa y decreciente en el intervalo (" #), |0 w B| = 0 w B es creciente y alcanza


el mnimo en B ", por lo que
mn 0 w B 0 w " # #
[

B "#

la expresin del error a posteriori nos queda de la forma

& 8

0 B8
#

El error para B& " "'(&)&&#( es


&8

0 " "'(&)&&#(
#

! %%' "!
#

! ##$ "!

por lo que si redondeamos a " "'(&)&&$ obtenemos que el error viene dado por
| & | (" "'(&)&&$ " "'(&)&&#() ! !!!!!!!!!##$ "!)
es decir, la raz buscada es " "'(&)&&$ con las ocho cifras decimales exactas.
Anlogamente, para el intervalo ( " !), 0 w B es positiva y decreciente, por lo que el mnimo de
|0 B| 0 w B se alcanza en B !, es decir
w

mn 0 w B 0 w 0 1 &8 0 B8 .

B ["!]

El error para B' ! %()"(#$*(# es

|&6 | 0 ! %()"(#$*(# ! )!$' "!

por lo que redondeando a ! %()"(#%! obtenemos que el error es

| & | ! %()"(#%! ! %()"(#$*(# ! !!!!!!!!!)!$8 "!)

es decir, la raz negativa es ! %()"(#%! con todas las cifras decimales exactas.

Clculo Numrico
Pgina 56

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio $'. Dada la ecuacin / B B ## !, probar que slo posee una raz real y obtenerla, por el
mtodo de Newton, con seis cifras decimales exactas.
Solucin: Las grficas de las funciones C / B y C B ## vienen dadas en la figura adjunta.

Puede observarse que slo existe un punto de corte entre ellas, por lo que la ecuacin
/ B B "# ! slo posee una raz real.
Dado que el crecimiento de la exponencial es mucho ms rpido que el del polinomio, es evidente que
no volvern a cortarse.
Partiendo de B! ! y aplicando el mtodo de Newton, en el intervalo (! "), dado por la frmula de
Newton-Raphson
B8 " B8

con un error a posteriori, dado por


& 8

0 B8
/B8 B8 ##
B8 B
w
0 B8
/ 8 #B8 #

0 B8
0 B8

$
mn 0 w B

B[! "]

obtenemos:

B" ! '
B# ! '#*)$!($%')$$)
B$ ! '#*)%'""&')('(

&" ! !%&*'!$**)'*)$
&
&# # $'(%' "!
"#
&$ % )$(*) "!

Redondeando obtenemos que la raz es ! '#*)%' con un error

| & | ! '#*)%' ! '#*)%'""&')('( % )$(*) "!

"#

"!

'

Por lo que la raz buscada es ! '#*)%' con las seis cifras decimales exactas.
Ejercicio $(. Dada la ecuacin / B B "# !, se pide:
1.Estudiar grficamente sus races reales y acotarlas.
2.Obtener la mayor de ellas con dos cifras decimales exactas por el mtodo de la biseccin.
3.Obtenerla con seis cifras decimales exactas por el mtodo de Newton.
Solucin: Se trata de buscar las races de la ecuacin / B B "# .
1.Acotacin y separacin:
La grfica de C / B interseca tres veces a la de C B "# . Las negativa y nula son evidentes. Para la
positiva basta con observar que C / B comienza tomando valores inferiores a los de C B "# pero, sin
embargo, el crecimiento de la exponencial es superior al de la funcin cuadrtica, por lo que necesariamente
volvern a cortarse sus grficas.

Clculo Numrico
Pgina 57

Miguel Angel Cifredo Campos


macifredo@gmail.com

Acotndolas por Bolzano vemos que, aparte de la raz x = 0, las otras dos se encuentran en los intervalos
( # ") y (# $).
2.Mtodo de la biseccin:
La mayor de las races se encuentra en el intervalo [+ ,] [#;$] y adems es 0 # ! y 0 $ !.
Aplicando el mtodo de la biseccin obtenemos:
0 # & ! ' !
0 # (& " &) !
0 # '#& ! '' !
0 # &'#& ! #( !
0 # &$"#& ! !* !
0 # &"&'#& ! !" !

[+" ," ] # & $


[+# ,# ] # & # (&
[+$ ,$ ] # & # '#&
[+% ,% ] # & # &'#&
[+& ,& ] # & # &$"#&
[+' ,' ] # & # &"&'#&

Tomando el punto medio del intervalo, obtenemos que B # &!()"#& con un error menor que
! !!()"#& por lo que si redondeamos a # &" obtenemos un error
| & | # &" # &!()"#& ! !!()"#& ! !"

3.Mtodo de Newton:
En # & ; # &"&'#& sabemos que 0 ww B ! y 0 w B ! (el mnimo se encuentra en (" #), luego se dan las
condiciones de la regla de Fourier. Debemos tomar como B! el extremos en que 0 B y 0 ww B tienen el mismo
signo, por lo que B! # &"&'#&, ya que 0 2,5 ! y 0 # &"&'#& !. De esta forma, tenemos garantizada la
convergencia.
Como 0 ww B ! en todo el intervalo, se tiene que 0 w B) es creciente, por lo que
mn
B[#&;#&"&'#&]

0 w B 0 w # & / #& ( & ")#%*$*'!(!$%( .

y, por tanto, el error a posteriori viene dado por


&8
B[#&;#&"&'#&]

0 B8
0 B8

0 w B
&
mn

Utilizando la frmula de Newton-Raphson , obtenemos

B! # &"&'#&
&! ! !!#*%%#$'*''"%
'
B" # &"#)'*)")#(#*& &" ( )''& "!
""
B# # &"#)'#%"($!&'# &# & ''$% "!

por lo que redondeando a # &"#)'# obtenemos un error

| & | # &"#)'# # &"#)'#%"($!&'# ! !!!!!!!!!!&''$ "!

'

Ejercicio $) La ecuacin !)"B " 68 B !, tiene dos races reales, una de las cuales es la unidad.
Calcular la otra por el mtodo de Newton, estudiando previamente el campo de convergencia.
Solucin: La ecuacin dada es equivalente a !)"B " = 68 B. Es decir, se trata de encontrar las intersecciones
de la recta C !)"B " con la curva C 68B cuyas grficas se dan a continuacin.

Clculo Numrico
Pgina 58

Miguel Angel Cifredo Campos


macifredo@gmail.com

Sea 0 B !)"B " 68B la ecuacin a estudiar sea 0 B !


Se puede observar que para valores mayores que " , pero prximos a B " la funcin es negativa,
mientras que para B # es 0 # !)" 68# !, por lo que la raz se encuentra en (" #).
El valor mnimo se calcula haciendo 0 w B ! )"

"
!, por lo que B7 " #$%&'(*!"#$%&(...
B

Dado que 0 " $ ! podemos reducir el intervalo a (B7 #], en el cual no se anula la derivada (es
siempre positiva) y tampoco se anula la segunda derivada (0 ww B B# ! para cualquier B [" $ #]).
Por tanto, se cumplen los requisitos de la regla de Fourier y podemos garantizar la convergencia
iniciando el proceso en B! " $. (El campo de convergencia a la raz comprendida entre " $ y # es el intervalo
(B7 , _), ya que se verifican las condiciones de Fourier.)
mn 0 w B 0 w # ! $"

Dado que

B["$ #]

&8

, por lo que
B!
B"
B#
B$
B%
B&

, el error a posteriori viene dado por

" $
" ((%*(#&#%'(%$"
" &&'#$'"#(!!)%"
" &!'((%$!#%$'()
" &!$#%((%)*'%(#
" &!$##))!!*')'!

con
con
con
con
con
con

0 B8
! $

&! ! !'%&%(&%)##%*(
&" ! "(*)!*$$(%&""%
&# ! !#('!$'&$&#&*!
&$ ! !!"(#!"%##'$%"
&% ! !!!!!*"%$*!#%"
&& ! !!!!!!!!!#'%)!

Por tanto, la raz buscada es " &!$##* con un error

| & | " &!$##* " &!$##))!!*')'! ! !!!!!!!!!#'%)! "!

'

Ejercicio $* Se considera la ecuacin (B ") 68 B # #B # (B ( !. Separar sus races y obtener la


mayor de ellas con seis cifras decimales exactas por el mtodo de Newton aplicando, previamente, la regla de
Fourier.
Solucin: En primer lugar vamos a despejar el logaritmo de la ecuacin.
(B ") 68 B # #B # (B ( #B ")68 | B | #B # (B ( !

, por lo que

68 | B|

#B # (B (
#B ")

La funcin C 68 | B | es simtrica respecto al eje de ordenadas y tiene una asntota vertical en B !.


La funcin C
C (B # &)

"
(B")

#B # (B (
es una hiprbola. Se puede simplificar su expresin escribiendo
#B ")

con lo que es evidente que sus asntotas son las rectas C B # & y B " .

Grficamente se observan cuatro races reales, aunque las dos mayores podran no serlo si el
crecimiento del logaritmo fuese ms lento que el de la hiprbola. Si embargo, mediante comprobacin de signos
vemos que efectivamente existe las cuatro races y que se encuentran en los intervalos ( " !), (! "), (" #) y
($ %).

Clculo Numrico
Pgina 59

Miguel Angel Cifredo Campos


macifredo@gmail.com

En efecto: llamando 0 B (B ") 68 B # #B # (B ( se tiene que


0 " "' !
B" ( " !)
0 ! _ !
0 " # !
B$ (" #)
0 # ! $) !

0 ! _ !
B# (! ")
0 " # !
0 $ ! $* !
B% ($ %)
0 % # ') !

La mayor de las races es la comprendida en el intervalo ($ %).


Estudiemos, en primer lugar, las condiciones de la regla de Fourier.
0 w B #

B"
"
%B # *B #
%B "B #
68 B %B ( #68 B %B * #68 B
# 68 B
B
B
B
B

por lo que si B pertenece al intervalo ($ %) es


0 w B # 68 %
0 w B #

% $ "$ #
! )*... !.
$

"
"
#
#B "#B "
# % # #B # B "
B
B
B
B#

Por lo que en el intervalo ($ %) es 0 ww B !.


Como 0 % # '). . . !, tomando B! % converge el mtodo de Newton.
Dado que en el intervalo [$ %] es 0 ww B !, la funcin 0 w B es decreciente y, adems, sabemos que es
negativa, por lo que |0 ww B| es creciente y, por tanto
[

mn 0 w B 0 w $ " %'*%%#!
]

B $%

El error a posteriori vendr dado,


iteracin,
0 Ben8 cada

0 B8 por
&8

" %'*
mn 0 w B8

B $%

Aplicando la frmula de NewtonRaphson B! %


B"
B#
B$
B$

$ %$#'#"!"!&*%$"
$ #%$*'%')(()$%(
$ #")#)*!%)!&("*
$ #"()!"%$#$&*"&

B8 " B8

0 B8
, obtenemos:
0 w B8

&! " )#&)*!*'))((#$


&" ! $'&&&*$"%'$#%$
&# ! !$*"$!$(!!*"!#
%
&$ ( "&*&')#)!&*##$ "!
(
&$ # &((*"!$"**%&&% "!

Si redondeamos a seis decimales obtenemos B $ #"()!" con un error

| & | $ #"()!" $ #"()!"%$#$&*"& ! !!!!!!#&((*"!$ "!

'

por lo que la mayor de las soluciones de la ecuacin es B $ #"()!" con sus seis cifras decimales exactas.

Ejercicio $"! Dada la ecuacin 0 (B) / B

(B # (B()
"!(B") #

! se pide:

1.Determinar el nmero de races reales que posee y separarlas.


2.Demostrar que para cualquier B " ' es 0 w (B) ! y 0 ww (B) !.
3.Calcular la mayor de las races, con dos cifras decimales exactas, por el mtodo de Newton.
Solucin: 1.Consideremos la funcin 1(B)
2 (B ) /

B #

(B # (B()
"!(B") #

y estudiemos grficamente su interseccin con

Clculo Numrico
Pgina 60

Miguel Angel Cifredo Campos


macifredo@gmail.com

La funcin 1(B) posee una asntota vertical en B " y otra horizontal en C ! ".
Su derivada 1 w (B)

(&B()
"!(B")$

1 ww (B)

se anula para B

"!B"'
"!(B")%

(
&

" %.

1 ww (" %) !

por lo que 1(B) tiene un mnimo en (" %; 1(" %)) (" % ; ! &#&).
Los puntos de corte de 1(B) con el eje de abscisas viene dados por las races de la ecuacin
B # (B ( !, es decir 1,208... y 5,791... .
B # (B(
"!(B") #

Los cortes con su asntota horizontal los determina la ecuacin ! "


#
(B (B () (B ") # o lo que es lo mismo, &B ' ! y por tanto B " #.

es decir

La funcin 2(B) = / B conocida como Campana de Gauss (conocida en algn curso de estadstica), tiene la
#
#
asntota horizontal C !. Sus dos primeras derivadas son: 2w (B) #B /B B # y 2ww (B) (%B # #) / B .
El nico punto en el que se anula la derivada 2w (B ) es B !, siendo 2ww (!) # !, por lo que posee un
mximo en el punto (!, 2 (!)) (! ").
Grficamente se detectan cuatro puntos de corte entre ambas funciones. (Obsrvese que entre & y ' ambas
grficas vuelven a cortarse, ya que la campana de Gauss se hace prcticamente nula mientras que la otra grfica
va buscando la asntota horizontal C ! " !).

Aplicando el Teorema de Bolzano a la funcin 0 ( B) / B


obtenemos:
0 " !
0 ! ! =" " !
0 " ! =# ! "
0 # ! =$ " #

(B # (B()
"!(B") #

para separar sus races,

0 $ !
0 % !
0 & !
0 ' ! =% & '

As pues, existen cuatro races situadas en los intervalos ( " !), (! "), (" #) y (& ') respectivamente.
2.Las dos primeras derivadas de la funcin 0 (B) son
#

0 w B #B /B

&B (
"!B "$

0 ww B (%B # #) / B

"!B "'
"!B "%

Para valores de B mayores que " ' se tiene que


#

#B /B !
&B(
B"$

!
#

(%B # #) / B
"!B"'
B"%

&B(
"!B"$

w
0 B !

a B " '

%B # #
!
ww
/B #
0 B !

a B " '

Es decir, ambas derivadas tienen signo constante en dicho intervalo.

Clculo Numrico
Pgina 61

Miguel Angel Cifredo Campos


macifredo@gmail.com

3.Calculemos ahora la solucin existente en el intervalo (& ').


0 & !
0 w B !

En primer lugar aplicamos la regla de Fourier:


El error a posteriori vendr dado por

& 8

y
y

0 (') !
B! &
0 ww B !

0 B8
0 B8
0 B8

w
" %'*
" %'*
mn 0 B8

B[&']

Haciendo uso de la frmula de Newton-Raphson B8 " B8


B! &
B" & ''''''''$)')&!
B# & ())"*%%%%$!&$%

con
con

0 B8
, obtenemos:
0 w B8

&! " !"*!#"($*))&#"


con
&" ! "$)'%#%"''(**)
&# ! !!$$&)!)$)!*"#

Si redondeamos la segunda cifra decimal para escribir B &(*, el error vendr dado por
| & | &(* & ())"*%%%%$!&$% ! !!$$&)!)$)!*"# "!

por lo que B &(* es la solucin pedida con dos cifras decimales exactas.

Actividad Personal
A continuacin se proponen ejercicios tomados en certmenes anteriores y ejercicios propuestos para
ser resueltos a modo de autoevaluacin.
" Por el mtodo de biseccin obtenga la nica raz positiva de la ecuacin no lineal:
% -9=B /B !

, con B ! & ".

# Sea la ecuacin /B " . Encuentre la raz no nula de esta ecuacin usando Newton-Raphson

(B # $

B
$

"

$ Resuelva la ecuacin C B$ -9= B# " . Utilice Newton-Raphson para multiplicidad de raices.


% Por iteracin funcional resuelva la ecuacin B 68B ! Grafique previamente.
$

7
& Se tiene un canal rectangular de base , & 7 por el cual escurre un caudal U "& =/1
. Se sabe que
este canal posee una energa I " ( 7. Se pide encontrar la altura crtica (altura donde el escurrimiento
cambia de estado) sabiendo que se cumple la relacin:

I 2-

;#
#12-#

donde ;

U
y 2- es la altura crtica.
,

Indicacin: Utilice 4 dgitos significativos y redondeo. Adems, una buena aproximacin para la altura crtica es
el rango entre " $ y " (.

Clculo Numrico
Pgina 62

Miguel Angel Cifredo Campos


macifredo@gmail.com

Cuando queremos evaluar una funcin 0 B en un PC, en general ser ms eficiente en tiempo y
espacio tener una aproximacin analtica de ella que almacenar un conjunto de datos para determinar valores
entre los datos que tenemos. Al tener datos experimentales, los cuales estn sujetos a distintos tipos de errores,
debemos tomar suficientes lecturas experimentales de tal manera que las leyes estadsticas cancelen los errores
introducidos. Por las leyes fsicas es posible ajustar los datos a una funcin conocida, luego el problema se
reduce a resolver la determinacin de la "mejor funcin" que represente a los datos.
El criterio que utilizaremos para cumplir este objetivo ser el de los Mnimos Cuadrados. Este criterio
recibe el nombre Bondad de Ajuste.
Nos centraremos slo en resolver el problema de que al tener un conjunto de puntos T5 B5 C5 ,
encontrar la ecuacin C 9 B que relacione las cantidades medidas B e C en el sentido de que su grfico
represente de la "mejor forma posible" al conjunto de puntos.
En general, la formulacin del problema es que dado un elemento 0 de un espacio mtrico I . , se
pide encontrar un elemento 9* de un subespacio (J . de I ., tal que la distancia de 9* al elemento 0 sea la
menor entre todas las distancias de los 9 J al 0 dado, es decir,
.9 0 min .9 0
9J

donde el elemento 9* recibe el nombre de mejor aproximacin a 0 por elementos de J (si es que existe dicho
elemento).
%" Mejor aproximacin en espacios normados.
9* Para este elemento
unicidad y construccin.

estudiaremos su existencia,

I
J
Teorema
%"(Existencia
de finita,
en espacios
Sea un elemento
un espacio
y sea aproximacin
un subespacio
de
I . Si J
es de dimensin
entoncesnormados):
existe al menos
9* Jnormado
que es mejor
de
0 I por elementos de J Es
9* decir,
b 9* J tal que:

0 9 * min 0 9
9J

Si I es un espacio prehilbert (real) y J un subespacio de I , de dimensin


finita, de este teorema se deduce que existe una mejor aproximacin 9* J de 0 I , la cual satisface
0 9 * min 0 9
9J

Teorema %#. (Caracterizacin de 9* ) Una condicin necesaria y suficiente para que 9* J sea una mejor
aproximacin de 0 I es que
0 9* , 9 !

a9 J

Teorema %$ (Unicidad de 9* ): La mejor aproximacin 9* J de 0 I por elementos de J , si existe, es


nica.
%"" Sistema de Ecuaciones Normales
Para el espacio prehilbert I , J un subespacio de I .37J 8 y 0 I , consideremos la
base de J que denotaremos U <" <8 Por tanto, la relacin siguiente
! <5 <4 +5 0 <4 a 4 " 8
8

5"

corresponde a un sistema de ecuaciones lineales de orden 8 8, donde las indeterminadas +5 5 " 8 son los
coeficientes para construir la combinacin lineal que detrerminar a 9* . Es decir,
9* ! +5 <5
8

5"

Clculo Numrico
Pgina 63

Miguel Angel Cifredo Campos


macifredo@gmail.com

%# Aproximacin discreta de mnimos cuadrados.


Las leyes fsicas que rigen el fenmeno que se estudia experimentalmente nos proporcionan
informacin importante que debemos considerar para proponer la forma de la funcin 9* B que queremos
ajustar a los datos.
Consideremos el intervalo cerrado + , tal que B5 pertenezca a l (5 " R , donde R /= es el nmero
de datos Sea 0 V[+ , y 8 V[+ , un subespacio de dimensin 8 Adems, tomemos la base
U <" <8 de 8 .
La funcin

9* =! +5 <5 8
8

es la mejor aproximacin discreta, en el sentido de los mnimos cuadrados,

5"

de la funcin 0 si

"=B3 0 B3 9* B3 # min "=B3 0 B3 9 B3 #


R

3"

3"

9 8

siendo = una funcin de peso definida en [+ ,, tal que =(B3 ! para algn 3 " # R , que para efectos
de simplificacin de clculos consideraremos igual a uno.
Nota importante: En este apunte nos remitiremos slo al uso de la base polinimial U " B B# B8 ;
dependiendo si es lineal 8 ", parablico 8 #, cbico 8 $, etc.
Los coeficientes +5 con 5 " 8 se obtienen resolviendo el sistema de ecuaciones normales
R +" +# ! B3 +8 !B38" !0 B3
R

3"

3"

3"

! B3 +" +# ! B#3 +8 ! B38

#
! B#3 +" +# ! B3$ +8 ! B8"
!
3

0 B3 B3

3"

3"

3"

3"

! 8"
B3 +"
3"

+#

3"

! 8
B3
3"

3"

+8

(%"

3"

3"

! 0 B3 B3

! #8#
B3
3"
R

! 0 B3 B3
R

8"

3"

Ejemplo %# Determinemos la "mejor aproximacin discreta" de la funcin 0 V " % de la cual se conocen


los puntos dados por la tabla
B3
0 B3

"
#

"
"

#
$

$
&

%
'

Solucin: Del comportamiento de los puntos (ver grfica) la "mejor aproximacin discreta" ser una recta
(8 2, es decir una regresin lineal). Luego, dado que R &, aplicando (%" nos da el sistema
+" " " " " " +# " " # $ % "$
+" " " # $ % +# " " % * "' %)

o equivalentemente
5+" *+# "$
*+# $"+# %)

Por tanto,

9 B

+"

#*
! $*")*
(%

#*
"#$
#* "#$
"
B

B
(%
(%
(%
(%

y +#

"#$
" ''#"'
(%
" B %.

Clculo Numrico
Pgina 64

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo %$ Determinemos la mejor aproximacin discreta de la funcin 0 V " " de la cual se conocen
los puntos dados por la tabla
B3
0 B3

"
#

"
#

!
"

&
%

"
#
&
%

"
#

Solucin: De igual forma nos damos cuenta por la grfica del conjunto de datos que la "mejor aproximacin
discreta" ser por una parbola (8 $ y R &); luego, aplicando (%" nos da el sistema
+" " " " " " +# "
+" "
+" "

"
%

"
#

"
%

"
#

" +# "

"

+#

"

"
#

"
#

" +$ "

"
%

"
%

" +$ "

"
)

"
)

"

+$ "

"
%

"
)

"
)

"
%

"

"
)

"
)

"&
#

" !

"

$(
)

o equivalentemente
5+" +
&
# +"

"&
#
! +# !
$(

"(
) +$ )

&
# +#

&
# +$

5+" #& +$
&
*
# +" % +$

"&
#
$(
)

+" " y +$ "

Por tanto, 9 B " " " B# " B# " B ".


Representando grficamente tenemos

%$ Aproximacin discreta de mnimos cuadrados, caso no lineal.


9 En el caso en que la mejor aproximacin
no es de la forma lineal, es posible intentar una
transformacin por algn mtodo adecuado.
B3 C3
Ejemplo %$ Si tenemos el conjunto de puntos
en"la tabla
B
!
#
$
3

0 B3 C3

$ !!

! %"

! !&

! !"

y queremos encontrar la mejor aproximacin discreta 9 B que obedezca a la forma +" /+# B , para ! B $,
linealizamos aplicando logaritmo natural para obtener
689 B 68+" +# B
Luego, haciendo las sustituciones G B 689 B -" 68+" y -# +# , obtenemos
G B -" -# B

, lo que nos lleva a


B3
D3 68C3

!
" "!

"
! )*

#
$ !!

$
% '"

; luego, aplicando (%" da el sistema


%-" '-# ( $!
'-" "%-# #! '#

; lo cual da como resultado:

-" " !* y -# " *%

Clculo Numrico
Pgina 65

Miguel Angel Cifredo Campos


macifredo@gmail.com

As, G B " !* " *%B Es decir, al volver a las incgnitas originales tenemos
+" /-" # *'
+# -# " *%

De esta forma la funcin requerida es:

9 B # *'/"*%B .

%$" Mtodo de Gauss-Newton


Este mtodo permite tratar los casos no lineales que no se pueden linealizar por algn mtodo.
Consideremos los puntos dados B3 C3 3 " R , para los cuales queremos encontrar la mejor aproximacin
discreta de la forma
, donde -" -8 son parmetros a determinar.

9 B 0 -" -8 B

Algoritmo del mtodo: Dado un vector inicial - ! 8 , se determinan los nuevos vectores - 3"
3 ! " # como sigue teniendo en cuenta la definicin siguiente
05 8
05 -" -8 0 -" -8 B5 5 " R

Paso " Para - 3 se calcula el punto de mnimo =3 que resuelve el problema lineal
min <- 3 H0 - 3 D

D8

#
#

, es decir el vector solucin

del sistema

H0 - 3 > H0 - 3 =3 H0 - 3 > <- 3

donde

0 - 0" - 0R -> , - -" -8 8

C C" CR >

<- C 0 - <" <R >

Paso # Sea <7 C 0 - 3 7 =3

y sea 5 ! el entero ms pequeo que satisface la relacin

<#5 <! C 0 - 3

Paso $ Se define - 3" - 3

#
#

" 3
=
#5

Paso % El proceso se detiene si se satisface la relacin


-4

3"

max
"48

-4
3

3"
-4
"!"!

&

, para un & ! dado.

Si no se cumple la desigualdad anterior, volver al Paso ". con el - 3" recin calculado.

Clculo Numrico
Pgina 66

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo %% Determinemos la mejor aproximacin discreta de mnimos cuadrados de la forma


0 -" -# B -" /-# B tomando como vector inicial - ! " !! " !!, para la tabla
B3
0 B3

!
$ !!

"
! %"

#
! !&

$
! !"

Solucin: Dado que R % entonces haciendo: 0 -" -# B" 0" -" -# -"
0 -" -# B# 0# -" -# -" /-#
0 -" -# B$ 0$ -" -# -" /#-#
0 -" -# B% 0% -" -# -" /$-#

!! " !!
""!!
$ !! " !!

/
! $(
! %" ! $(
!
0 - #!!
<- C 0 -

! "%
! !&
! "%
/
/$!! ! !&
! !" ! !&

"/#
H0 - ! #-#
/
/$-#

!
" !!
-" /-#
! $(

#-" /#-#
! "%
$-" /$-# "!! "!! ! !&

H0 - ! > H0 - !

" "'
! ")

! !!
! $(

! #(
! "&

! ")
! #$

# !!
! !%

! !*
! !%

H0 - ! > <- !

; tenemos

# !!
! !#

De aqu, el sistema de ecuaciones normales ser:


" "'
! ")

! ")
=
# !!
=! " *) " '%
"
! #$ =# ! !#

Para 5 !, tenemos

<#! <" c ! !#
<! c # !!

! !%

! #!

! !$

! !" d> # ! !% ;
#

! !% d> # % !"

mientras que

! !*

es decir, <" <!. Luego, - " - ! =! # *) # '%.


Por tanto,

- " # *) # '%
-4 -4
"

Por paso % el test de detencin da:

max
"4#

-4 "!"!
"

! '';

lo que para una condicin

preestablecida (& ! se detiene o se contina con - " # *) # '% en vez de - !

Clculo Numrico
Pgina 67

Miguel Angel Cifredo Campos


macifredo@gmail.com

%% Ejercicios
Ejercicio %" Determinar la mejor aproximacin discreta de la funcin 0 V " " de la cual se conocen los
puntos dados por la tabla
B3
0 B3

"
"

"
#

!
!

"
#

"
#
"
#

"
"

Solucin: Tomemos 8 $ y apliquemos (%" dando el siguiente sistema


&+"
# &+"

# &+$ $
!
"(
) +$ # #&

# &+#

Por tanto, 9 B

'
$&

'
(

+# ! +"

'
$&

y +$

'
(

B# " B " .

Ejercicio %# Determine la mejor aproximacin discreta de la funcin 0 V # # de la cual se conocen los


puntos dados por la tabla
B3
0 B3

#
$

"
!

!
"

"
!

#
$

Solucin: De manera anloga al ejemplo 4.2 da el sistema


+" " " " " " +# # " ! " # +$ % " ! " % &
+" # " ! " # +# % " ! " % +$ ) " ! " ) !
+" % " ! " % +# ) " ! " ) +$ "' " ! " "' #%

o equivalentemente
5+" +

"!+$ &
"!+#

"!+"

+# !

5+" "!+$ &


"!+" $%+$ "#

$%+$ "#

Por tanto, 9 B

&
(

"

"
(

B#

&
(

+"

&
(

y +$

"
(

"( B# # B #.

Ejercicio %$ Idem para la tabla


B3
0 B3

$
$#

#
*

"
!

!
"

"
!

Solucin: Ajustemos estos puntos con 8 % para obtener el sistema


&+" &+# "&+$ $&+% %!
&+" "&+# $&+$ **+% ""%
"&+" $&+# **+$ #(&+% #(*
$&+" **+# #(&+$ (*&+% *$'

Por lo tanto,

9 B

"($
(

+1

"($
(

%(
#)

"'**
&'

"

, +#
B#

)$
)

%(
#)

, +$

B$

"'**
&'
"($
(

y +%

%(
#) B

)$
)

"'** #
&' B

)$ $
) B

" B ".

Clculo Numrico
Pgina 68

Miguel Angel Cifredo Campos


macifredo@gmail.com

>

Ejercicio %% Obtener la mejor aproximacin discreta de mnimos cuadrados del tipo 3 3! / VG para la tabla
>=
3E

"
) ")(

#
' (!$

$
& %))

%
% %*$

&
$ '(*

Adems, calcular los valores de 3! y VG


>

Solucin: En este caso es posible linealizar 3 3! / VG aplicando logaritmo natural, lo que nos da
683 683!

"
VG >

Luego, haciendo las sustituciones G B 683 -" 683! y -#

"
VG ,

obtenemos

, lo que nos lleva a

G B -" -# >

>
D 68>

"
# "!$

#
" *!$

$
" (!$

%
" &!$

; luego, aplicando (%" da el sistema

&
" $!$

&-" "&-# ) &"&


"&-" &&-# #$ &%&

; lo cual da como resultado

-" # $!$ y -# ! #
As, G B # $!$ ! #> Es decir, al volver a las incgnitas originales tenemos

"
VG

3! /-" /#$!$ "! !!%


-# ! # VG &

Por lo tanto la mejor aproximacin es

9 B # $!$/!#> .

Ejercicio %& En un trabajo experimental se han obtenido los valores que a continuacin se indican
>
C>

" !!
& "#

$ !!
$ !!

' !!
# %)

* !!
# $%

"& !!
# ")

Si el modelo que describe el fenmeno est dado por C>

-"
determinar por el mtodo de los
-# >

cuadrados mnimos las constantes + y , de la frmula indicada, analizando el condicionamiento del sistema de
ecuaciones normales.

Solucin: Debemos determinar la mejor aproximacin discreta de mnimos cuadrados de la forma


-"
tomando como vector inicial - ! " !! " !!

0 -" -# >

-# >

Solucin: Dado que R & entonces haciendo


-"
-# "
-"
0# -" -#
-# $
-"
0$ -" -#
-# '

-"
-# *
-"
0& -" -#
-# "&

0" -" -#

tenemos

0 -

-"
-# "
-"
-# $
-"
-# '
-"
-# *
-"
-# "&

0 - !

1
1"
1
1$
1
1'
1
1*
1
1"&

0% -" -#

"
#
"
%
"
(
"
"!
"
"'

! &

! #&


! "%


! "

! !'

& "# ! & % '#


$ !! ! #& # (&

<- ! C 0 - ! # %) ! "% # $%

# $%
! "
# #%
# ") ! !' # "#

Clculo Numrico
Pgina 69

Miguel Angel Cifredo Campos


macifredo@gmail.com

H0 - !

H0 - ! > H0 - !

-"
-# "#
-"
-# $
#
-"
-# '#
-"
-# *
#
-"
-# "&
#

"
-# "
"
-# $
"
-# '
"
-# *
"
-# "&

! $&
! "%

! &
! #&

! "%

! "
! !'

! #&
! !'

! !#

! !"

"!! "!!

! "%
$ ')
y H0 - ! > <- !
! !(
" $*

De aqu, el sistema de ecuaciones normales ser:


! "%
=
$ ')
"
=! *# #* #!% %$
! !( =# " $*

! $&
! "%
Para 5 !, tenemos

<#! <" c ! !#
<! c # !!

! !%

! #!

! !*

! !$

! !" d> # ! !% ;
#

! !% d> # % !"

mientras que

es decir, <" <!. Luego, - " - ! =! # *) # '%


Por tanto, - " # *) # '%
Ahora, por paso % el test de detencin nos da:
-4 -4
"

max
"4#

"
-4 "!"!

! '';

lo que para una condicin preestablecida (& !

se contina con - " # *) # '% en lugar de - !

Ejercicio %' Se analiza el crecimiento poblacional de una determinada poblacin, obteniendo los datos
siguientes:
>
:>

!
&

"
%&

#
#"(

$
$&!

%
$(#

Se pide determinar la mejor aproximacin discreta de mnimos cuadrados de la forma :>

$(&
" " / # >

Solucin: Tarea!

Ejercicio %( A cierto fenmeno se le quiere ajustar el modelo C>


fenmeno se han obtenido los datos siguientes
>
C>

" !!
& "#

$ !!
$ !!

+
. En pruebas experimentales a este
,>

' !!
# %)

* !!
# $%

"& !!
# ")

Obtenga la mejor aproximacin discreta de mnimos cuadrados del tipo del modelo que quiere ajustar.
Solucin: Tarea!

Clculo Numrico
Pgina 70

Miguel Angel Cifredo Campos


macifredo@gmail.com

Actividad Personal
A continuacin se proponen ejercicios tomados en certmenes anteriores y ejercicios nuevos propuestos
para ser resueltos a modo de autoevaluacin.
" Ajuste a una lnea recta los valores de B e C dados en la tabla siguiente
B
C

"
! &

#
# &

$
# !

%
% !

&
$ &

'
' !

#
" (

$
$ %

%
& (

&
) %

(
& &

# Para la ecuacin C +B, ajuste a los datos


B
C

"
! &

$ Adece los datos siguientes a un modelo exponencial


B
C

! %
(&!

! )
"!!!

" #
"%!!

" '
#!!!

# !
#(!!

# $
$(&!

% Considere lo datos
B
C

&
"'

"!
#&

"&
$#

#!
$$

#&
$)

$!
$'

Ajuste una:
a) recta.
b) ecuacin de potencias.
c) parbola.
& Dada la funcin C 0 B +" /,B y el valor inicial " " ajuste el conjunto de puntos
B
C

! #&
! #)

! (&
! &(

" #&
! ')

" (&
! (%

# #&
! (*

Clculo Numrico
Pgina 71

Miguel Angel Cifredo Campos


macifredo@gmail.com

Supongamos que se conocen los 8 " valores que toma una funcin 0 B, en los puntos del conjunto {
B! B" B8 } denominado soporte, es decir, supongamos conocidos 0 B! C! , 0 B" C" , 0 B8 C8 .
El problema de la interpolacin consiste en encontrar una funcin 1B de determinadas caractersticas
y tal que 1B3 C3 para 3 ! 8. En caso de existir, se dice que 1B interpola a 0 B en el soporte { B! B" B8
}.

Al decir de w determinadas caractersticasw nos referimos a que se exige que 1B sea, por ejemplo, un
polinomio, un cociente de polinomios, una funcin trigonomtrica, etc.
La finalidad de encontrar una funcin 1B que interpola a otra 0 B en el soporte {B! B" B8 } es la
de aproximar la funcin 0 B en un punto B de tal forma que se pueda decir que 0 B 1B una vez
encontrada 1B. (Otra cosa es la evaluacin de 0 B 1B). Si el valor de B se encuentra en el intervalo
[B! B8 ] se dice que estamos interpolando. Si se encuentran fuera de dicho intervalo, se dice que estamos
extrapolando.
Como aplicaciones ms directas tenemos:
Evaluacin: (una aproximacin) de una funcin complicada 0 , en un cierto punto B .

Sustitucin: Si 1B es cmoda de derivar o integrar, la sustitucin, en cierta medida, de 0 w por 1w o ( 0 por


,

( 1.
,

En este tema slo trataremos la interpolacin polinomial y la interpolacin polinomial a trozos o por
splines.
Ejemplo &" Dada la tabla de valores

B
C

!
"

"
$

#
(

, dado que los tres puntos no estn alineados, no existe

ninguna recta que interpole a dichos valores.


Si queremos calcular la parbola C +B# ,B - que interpola a dichos valores, planteando el
correspondiente sistema se obtiene, como solucin nica, C B# B ".
Si nuestra intencin es buscar una parbola cbica C +B$ ,B# -B . , nos encontramos con que
existen infinitas soluciones que son de la forma
C B# B " !BB "B #
para cualquiera que sea ! .
Por ltimo, para calcular la funcin polinmica de grado 8 que interpola a dichos valores obtenemos
C B# B " !B8" B "8# B #8$
para cualesquiera 8" 8# 8$ 8 y cualquier ! .
&" Interpolacin polinomial
Trataremos en esta seccin los tres tipos ms generalizados de interpolacin polinomial, a
saber: Lagrange, Newton y Hermite.
&"" Interpolacin de Lagrange
Como en cualquier problema de interpolacin, consideremos la tabla
B
C

B!
C!

B"
C"

B8
C8

y construyamos el polinomio de grado 8 que interpola a dichos valores. Para ello, consideremos los
denominados polinomios de Lagrange
B B" B B# B B8
B! B" B! B# B! B8
B B! B B# B B8
P" B
B" B! B" B# B" B8

8
B B4
43
P3 B $
B B4
4! 3
P! B

B B! B B" B B8"
P8 B
B8 B! B8 B" B8 B8"

Clculo Numrico
Pgina 72

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema &". Los polinomios de Lagrange, definidos anteriormente, verifican:


+ P3 B4

! 3 4

" 3 4

, 1<+.9P3 B 8 cualesquiera que sea ! 3 8


- El polinomio

T8 B C! P! B C" P" B C8 P8 B

B! B" B8

siendo 1<+.9T B 8

Ejemplo &# Para interpolar los valores de la tabla

interpola los valores de la tabla

B
C

"
!

B #B $B %
"
B$ *B# #'B #%
" #" $" %
'
B "B #B %
"
P# B
B$ (B# "%B )
$ "$ #$ %
#

#
"

$
#

%
&

B
C

B!
C!

B"
C"

B8
C8

con

los polinomios de Lagrange son

B "B $B %
"
B$ )B# "*B "#
# "# $# %
#
B "B #B $
"
P$ B
B$ 'B# ""B '
% "% #% $
'

P! B

P" B

y como T$ B C! P! B C" P" B C# P# B C$ P$ B, obtenemos que


T$ B ($ B$ "'B#

*)
$ B

"*

El clculo de los polinomios de Lagrange, puede verse con el Ejemplo 4.3, no es un proceso dinmico,
en el sentido de que si ahora aadiramos un nuevo punto al soporte, habra que comenzar de nuevo todo el
proceso.
Teorema &# Dados los nmeros reales B! B" B8 y los 8 " nmeros reales cualesquiera C! , C" , . . . ,
C8 existe un nico polinomio T8 B de grado no superior a 8 tal que T8 B3 C3 para 3 ! 8.
Dada una funcin 0 B de la que se conocen los transformados de 8 " puntos B! , B" , . . . , B8 y su
polinomio de interpolacin de Lagrange T8 B, slo nos falta dar una medida del error que se comete al sustituir
la funcin 0 B por el polinomio T8 B.
Teorema &$. Sean B! B" B8 y sea 0 una funcin 8 " veces derivable tal que la derivada 0 8" B
es continua. Sean C! 0 B! , C" 0 B" , . . . , C8 0 B8 , T8 B el polinomio de interpolacin de Lagrange
de los valores de la tabla
B
C

B!
C!

B"
C"

B8
C8

y B un nmero real cualquiera. Se verifica que


0 B T8 B

0 8" -
8"x B

B! B B8

donde el punto - se encuentra en el intervalo determinado por los puntos B , B! , B" , . . . , B8 .


&"# Interpolacin de Newton
Diferencias divididas
Consideremos una funcin 0 B y un soporte {B! , B" , . . . , B8 } de 8 " puntos. Denotemos por
03 0 B3 y consideremos la tabla
B
C

B!
0!

B"
0"

B8
08

Vamos a probar que el polinomio de grado no superior a 8 que interpola a estos valores es de la forma
T B -! -" B B! -# B B! B B" -8 B B! B B" B B# B B 8"

para despus, calcular los valores de los coeficientes -! -" . . . -8


Teorema &%. Los coeficientes -! -" . . . -8 , descritos ms arriba, dependen de los valores B! , B" , . . . , B8 y
0! , . . . , 08 .

Clculo Numrico
Pgina 73

Miguel Angel Cifredo Campos


macifredo@gmail.com

Dado que los valores de 0! , . . . , 05 lo= que dependen, respectivamente, de los valores de B!, B",, B8 ,
en lo que sigue utilizaremos la notacin -5 0 [B! , . . . , B5 ], con lo que el polinomio quedar de la forma
T B 0 [B! ] + 0 [B! , B" ](B B! ) + + 0 [B! B" . . . B8 ](B B! )(B B" ) (B B8 )

y quedar determinado una vez que se determinen los valores de los coeficientes 0 [B! B" B5 ] para 5 ! 8
Teorema && Sea T B el polinomio de interpolacin correspondiente a la tabla

B
C

B!
0!

B"
0"

VB son los polinomios que interpolan respectivamente a las tablas


B
C

B!
0!

B"
0"

B8
08

se verifica que T B UB

B B!
VB UB.
B8 B!

B
C

B8
08

B!
0!

. Si UB y

B"
0"

B8
08

y,

5 ! 8 Teorema
&' Para cualquiera que sea 0 [B seB verifica
que
"
5 ] 0 [B! B" B5" ]
0 B! B" B5
siendo 0 [B3 ] = 03 para ! 3 8.
B5 B!
[
]
Ejemplo &$ Calculemos el polinomio de interpolacin de Newton de la tabla

B
C

"
!

$
"

%
"

&
#

( .
$

Aplicando diferencias divididas obtenemos la siguiente tabla


B3
"

03
!

0 B3

0 B3 B4

0 B3 B4 B5

0 B3 B4 B5 B6

"
#

"

&
'

#
"

&
'
&
#

"

$
"

&

&
")

&
'

&
'

"
#

Por lo que el polinomio de interpolacin es


T B "# B " &' B "B $ &' B "B $B %

&
") B

"B $B %B &

La ventaja de este mtodo, frente al de los polinomios de Lagrange, es que si ahora introducimos un
nuevo dato, por ejemplo que 0 * &, el polinomio que se obtiene es
UB T B 0 [B! , B" , B# , B$ , B% , B& ](B ")(B $)(B %)(B &)(B ()
y tan slo habra que calcular el coeficiente 0 [B! , B" , B# , B$ , B% , B& ] aadiendo una nueva lnea a la tabla
anterior.
Puede observarse que dada la tabla

B
C

B!
C!

B"
C"

B8
C8

, el polinomio de interpolacin es de la forma

T8 B T8" B 0 [B! B" . . . B8 ] B B! (B B" ) (B B8" )

Se tena, tambin, que para dicho polinomio era


0 B T8" B

0 8 0
B B! B B8"
8x

Sustituyendo B por B8 tenemos:


0 B8 T8" B8

0 8 0
B8 B! B8 B8"
8x

y dado que 0 B8 08 T8 B8 , se tiene que:


T8 B8 T8" B8

0 8 0
B8 B! B8 B8"
8x
Clculo Numrico
Pgina 74

Miguel Angel Cifredo Campos


macifredo@gmail.com

Podemos, por tanto, enunciar el siguiente teorema.


Teorema &'. Dada la tabla
para el que

B
C

B!
C!
0 8 -
.
0 [B! B" . . . B8 ]
8x

B"
C"

B8
C8

, con B! B" B8 , existe un punto - en el intervalo

[B! , B8 ]

Diferencias finitas
Consideremos la tabla en donde el soporte {B! B" . . . B8 } es regular, es decir, en el que las
diferencias B3" B3 2 son constantes, que denominaremos paso. (Si B! ! y dicha diferencia es " es decir,
si {B! B" . . . B8 } {! " . . . 8}, el soporte recibe el nombre de soporte cannico)
Definicin &(. Dados C! C" . . . C8 , se definen las diferencias finitas ?5 C3 como
?5 C3 ??5" C3

?C3 C3" C3

As, por ejemplo, para C! C" C# C$ se tendran:


?C! C" C!
?# C! ?C" ?C!
?$ C! ?C" ?C!

?C" C# C"
#

? C" ?C# ?C"


?C# C$ C#

Teorema &). Dada la tabla

B
C

B!
0!

B"
0"

B8
08

en la que {B! B" . . . B8 } es un soporte regular con

B3" B3 2, se verifica que, para cualquier valor de 5 " 8, es 0 [B! B" ... B5 ]

?5 0!
.
25 5x

El polinomio de interpolacin del soporte regular {B! B" . . . B8 } es, por tanto:
T8 B 0! ?0!

?# 0! B B!
?8 0 ! B B !
B B!
B B"
B B8"

...

2
#x
2
2
8x
2
2

Teniendo en cuenta que B B5 B B! 52 B B! 52 , podemos poner


T8 B 0! ?0!

B B!
?# 0! B B!
B B!
?8 0 ! B B !
B B!
"
5 "

2
#x
2
2
8x
2
2

por lo que, si denotamos por >

B B!
, se tiene que
2

T8 B 0!

Es decir:

?0!
?# 0!
? 8 0!
>
>> "
>> "> 8 "
"x
#x
8x

>
>
>
T8 B 0! ?0! ?# 0! ?8 0!
"
#
8

>> "> 5 "


>
donde
5
5x

Clculo Numrico
Pgina 75

Miguel Angel Cifredo Campos


macifredo@gmail.com

&"$ Fenmeno de Runge


Dada una funcin continua en [+ , ], podra pensarse que la sucesin T8 B con 8 MR de polinomios
de interpolacin, obtenidos al aumentar el nmero de puntos del soporte, converge a la funcin 0 B es decir,
podramos pensar que lim | 0 B T8 B| ! , cualquiera que sea B [+ , ] ; cosa que, sin embargo, no
8_

es cierta. En realidad, al aumentar el nmero de puntos del soporte se mejora la aproximacin en la parte central
del intervalo, pero la diferencia entre la funcin y el polinomio interpolador puede aumentar rpidamente en los
extremos. Ello nos dice que no es bueno hacer demasiado extenso el soporte, ya que adems de aumentar el
nmero de operaciones con la consecuente acumulacin de errores, podemos aumentar la prdida de precisin en
los extremos. Este fenmeno es conocido como fenmeno de Runge.
"
Ejemplo &% Si aproximamos la funcin 0 B "B
# por un polinomio de segundo grado, en el soporte
#
"B
{ % ! %}, obtenemos que T# B "( . En la Figura &.2 podemos ver ambas grficas.

Figura &# Las grficas de 0 B y T# B

Si aumentamos el nmero de puntos y la aproximacin la hacemos mediante un polinomio de grado %


#
B%
en el soporte { % # ! # %} obtenemos T% B )&#"B
que podemos ver representada junto a la
)&
funcin 0 B en la Figura &.3.

Figura &$ Las grficas de 0 B y T% B

Si afinamos an ms y aproximamos mediante un polinomio de grado ) en el soporte


{ % $ # " ! " # $ %} obtenemos
T) B
en la Figura &.4.

"
"(!! "(!!

""#%B# $!%B% $"B' B)

, cuya grfica podemos observar

Figura &% Las grficas de 0 B y T) B

Puede verse el hecho comentado anteriormente del fenmeno de Runge. Vamos mejorando la
aproximacin en la parte central del intervalo, pero vamos empeorndola en los extremos.

Clculo Numrico
Pgina 76

Miguel Angel Cifredo Campos


macifredo@gmail.com

&"% Interpolacin de Hermite


{B! B" ,..., B8 }
Este mtodo consiste en buscar un polinomio que interpole a una funcin 0 B en el
pero haciendo
que coincidan, en los puntos del soporte, no slo los valores de la funcin con los del polinomio,
soporte
sino que tambin coincidan los valores de sus respectivas derivadas.
Consideremos, por tanto, la tabla
B
0 B
0 w B

B!
0!
0!w

B"
0"
0"w

B8
08
08w

donde 03 0 B3 y 03w 0 w B3 para ! 3 8.


Se tienen, en este caso, #8 # condiciones, por lo que debemos buscar un polinomio de grado #8 "
T B +#8" B#8" +#8 B#8 +" B +!

que verifique las condiciones:


T w B! 0!w
T w B" 0"w

T w B8 08w

T B! 0!
T B" 0"

T B8 08

Teorema &* Dada la tabla

B
0 B
w
0 B

B!
0!
0!w

soporte dado. El polinomio

B"
0"
0"w

, sean P5 B (5 ! 8) los polinomios de Lagrange para el

B8
08
w
08

T#8" B "+5 ,5 B B5 P#5 B


8

5!

en el que

+5 05
, 0 w #0 Pw B
5
5 5 5
5

T#8" B5 05
w
T#8"
B5 05w

verifica que

5 ! 8

siendo, adems, el nico polinomio de grado #8 " que verifica las condiciones anteriores.
Llamando DB B B! B B" B B8 se tiene que
D w B " B B" B B8 B B! B B" B B8w
por lo que D w B! (B! B" ) (B! B8 ) y de manera anloga se obtiene que D w B5 (B5 B" )(B5 B8 ),
por lo que los polinomios de Lagrange pueden escribirse de la forma
P5 B

DB
B B5 D w B5

para el soporte {B! B8

Teorema &"! Sea 0 B una funcin #8 # veces derivable con derivada de orden #8 # continua y sea T#8"
el polinomio de Hermite que interpola a 0 B en el soporte {B! B8 . Existe un punto - del intervalo que
determinan los puntos B B! B8 en el que se verifica que
0 B T#8" B

0 #8# -
B B! # B B8 #
#8 #x

Ejemplo && Consideremos el Ejemplo &% en el soporte { % ! %} y calculemos el polinomio de


interpolacin de Hermite
Sea 0 B

"
#B
tal que al tabular los datos obtenemos
0 w B
" B#
" B# #
B
0 B
0 w B

%
"
"(
)
#)*

!
"
!

%
"
"(

)
#)*

Clculo Numrico
Pgina 77

Miguel Angel Cifredo Campos


macifredo@gmail.com

Luego,

DB B %BB % B$ "'B

De esta forma,
P5 B

D w B $B# "'
D w B! $#
D w B" "'
D w B# $#

BB %
"
$
Pw! B!
#B! %
$#
$#
)
B# "'
"
w
P" B
P" B" #B" "' "
"'
"'
B# %B
"
$
P# B
Pw! B!
#B# %
$#
$#
)

DB
BB5 $B#5 "'

P! B

Asi, los coeficientes


+! 0!
,! 0!w #0! Pw! B!

)$
""&'

"
"(

+" 0 " "

+# 0 #

"
"(

," 0!w #0! Pw! B! # ,# 0!w #0! Pw!B!

)$
""&'

Por lo tanto, el polinomio de interpolacin de Hermite ser


T& B +! ,! B B! P!# B +" ," B B" P#" B +# ,#B B #P ##B
#

"
#
"' B

"'
#

"
"(

T& B

"*
)$B#
B
)$B#

B %B# "'
B# "'#
B %B# "'#
"( "")$(%%
#&'
"")$(%%

)$
""&' B

"
% $#
B# %B

"
"(

)$
""&' B

"
% $#
B# %B " B

T& B

Ejemplo &6 Si aplicamos este mtodo a la funcin del ejemplo anterior, en el soporte { % # ! # %}
obtenemos el polinomio de grado 8 (en realidad se busca de grado * pero al ser una funcin par, el trmino de
grado * se anula)
"
T) B =
(##& $"#*B# &'*B% %"B' B) cuya grfica puede verse en la Figura &'
(##&
(").
Si lo hacemos en el soporte { % $ # " ! " # $ %} obtenemos
T"' B

"
#)*!!!! #&&)##%B# "'"$&)%B% '#''))B' "%%%!)B) "*&#(B"! "&!(B"# '"B"% B"'
#)*!!!!

que podemos ver en la Figura &' (#).

Figura &' La funcin 0 B y los polinomios de Hermite T) B y T"' B

Si comparamos con los resultados obtenidos en el Ejemplo &"$, podemos observar la mejora que
produce la imposicin de que coincidan no slo los valores de la funcin, sino que tambin lo hagan los de su
derivada, en los puntos del soporte. Sin embargo, sigue manifestndose el fenmeno de Runge, es decir, se
mejora el resultado en la parte central del intervalo, pero en los extremos, la diferencia entre el polinomio
interpolador y la funcin es considerable.
La manera de evitar el fenmeno de Runge es hacer una interpolacin polinomial a trozos, es decir, lo
que se conoce como una interpolacin por splines y que estudiamos en la siguiente seccin.

Clculo Numrico
Pgina 78

Miguel Angel Cifredo Campos


macifredo@gmail.com

&# Interpolacin por splines


Consideremos una particin del intervalo [+ , ]: ? = {B! + B" B# B8" B8 , } en la
que los puntos B3 reciben el nombre de nodos. Una interpolacin por splines no es ms que tomar un soporte en
cada subintervalo [B3" B3 ] y construir un polinomio de interpolacin, de grado no superior a 5 (para un 5
prefijado) sobre dicho soporte, por lo que el mtodo se conoce tambin como interpolacin polinomial a trozos.
Damos a continuacin una definicin formal de lo que denominaremos funcin spline.
Definicin &"". Una funcin spline de grado 5 con nodos en B! B" B8 es una funcin WB formada por
varios polinomios, cada uno de ellos definido sobre un subintervalo y que se unen entre s bajo ciertas
condiciones de continuidad. Las condiciones que debe cumplir WB son las siguientes:
En cada intervalo [B3" , B3 ), WB es un polinomio de grado[WB] 5 ,
WB admite derivada continua de orden 5 " en [B! B8].
En general, pueden crearse funciones spline de grado 5 cualquiera, pero la interpolacin ms frecuente
es a travs de funciones spline de grado $, es decir, de splines cbicos.
&#" Splines cbicos
Dado que a partir de ahora vamos a trabajar con splines cbicos, vamos a restringir la Definicin &"" al
caso de 5 $.
Definicin &"#. Dado el conjunto de puntos ? = {B! + B" B# B8" B8 , }, diremos que la
funcin W? es un spline cbico asociado a ? si cumple las siguientes condiciones:
La restriccin de W? a cada intervalo [B3" , B3 ) para 3 " 8 es un polinomio de grado no superior a tres.
Es decir, W? [B3" , B3 c$ B , donde c$ B representa al conjunto de los polinomios de grado $ .
W? G # + , , es decir, W? es una funcin continua, dos veces derivable y con derivadas continuas en el
intervalo [+ , ].
Definicin &"$ Diremos que
si

W? (B)

es un spline de interpolacin en B segn la particin

? {B! + B" B#

B8" B8 , },

W? (B) es un spline cbico asociado a ?.


W? (B3 ) 0 B3 C3 para 3 ! 8, es decir, cumple las condiciones de interpolacin.
Antes de construir un spline cbico vamos a ver cuntas condiciones ha de cumplir y cuntas incgnitas
van a hacernos falta. Si en cada intervalo de la particin intentamos construir un polinomio de grado tres que
aproxime a la funcin, deberemos calcular cuatro incgnitas (los cuatro coeficientes del polinomio de grado tres)
por intervalo, es decir, %8 incgnitas. Por otro lado, estos polinomios deben cumplir, en cada uno de los nodos,
las condiciones:
W ? [ B

3" ,

W?w [B

B3

B3 W? [B , B
3

3"

3" , B3
W w w? [B , B B3
3"
3

B3

B3
3
3"

w
W w ? [B , B B3
3
3"

w
B W?
3
[B , B

3 " 8 "

&"

Es decir, se deben cumplir un total de $8 " condiciones adems de las 8 " condiciones de
interpolacin W? (B3 ) 0 B3 para 3 ! 8.
Dado que tenemos un total de %8 incgnitas para %8 # condiciones, debemos imponer dos nuevas
condiciones para poder determinar los coeficientes de la funcin spline. Dependiendo de las condiciones que
impongamos, obtendremos un tipo de spline u otro.
Si exigimos que las derivadas segundas se anulen en los extremos, es
W? + W? , ! , diremos que W? B es el spline natural asociado a la particin ?.
Si exigimos que W?w + W?w , y W w ?w + W w w? , diremos que se trata de un spline peridico.

decir,

si

Clculo Numrico
Pgina 79

Miguel Angel Cifredo Campos


macifredo@gmail.com

&## Clculo de los splines cbicos de interpolacin


Nos centraremos en el clculo de los splines naturales y con el fin de simplificar la notacin,
llamaremos
23 B3 B3"
Q3 W w w? B3

3 " 8
3 ! 8

Los valores Q3 se denominan momentos y determinarn completamente los splines cbicos.


Obsrvese que como en cada intervalo [B3 B3" ] el spline W? es un polinomio de grado tres, su segunda
derivada es una recta (un polinomio de grado uno). En consecuencia, al imponer las condiciones (&" ) sobre la
igualdad de las derivadas segundas en los nodos, obligamos a que la segunda derivada de la funcin spline W w w?
constituya un conjunto de rectas que se intersecan en los nodos de la particin elegida. Ahora bien, dado que
cada recta queda determinado por dos puntos, podemos escribir el valor de las restricciones (&.1) sobre W ? como
W?ww [B , B
3

3"

B Q3

B B3
B3" B
Q3"
23"
23"

Integrando respecto a B obtenemos el valor de la primera derivada del spline en este intervalo
B3" B#
Q3" B B3 #
W w ? [B , B B Q#3

E3
3
3"
23"
#
23"
Volviendo a integrar respecto a B obtenemos
W ? [B , B
3

3"

Q3 B3" B$
Q3" B B3 $

E3 B B3 F3
'
23"
'
23"

Si imponemos ahora las condiciones de interpolacin W?(B3) C3


obtenemos
Q3 #
2 F3 C 3
' 3"
Q3" #
23" E3 23" F3 C3"
'

F3 C3

E3

W? (B3" ) C3"

Q3 #
' 23"

C3" C3
23"

23"
' Q3"

Q3

Podemos hallar as los valores de las constantes E3 y F3 , que determinan W? (B ) en el intervalo


[B3 B3" ], en funcin de los momentos.
El problema se reduce, por tanto, a calcular los momentos para cada uno de los intervalos, para lo que
utilizaremos la nica condicin de (&") que no hemos utilizado:
w
W?
[ B

3" ,

B3

w
B3 W?
[B , B
3

3"

B3

Esta condicin nos da, para cada 3 " 8 ", una ecuacin:
23
23"
'
C3" C3
C3 C3"
Q3" #Q3
Q3"

23 23"
23 23"
23 23"
23"
23

En el caso del spline natural tenemos que Q! Q8 !, quedndonos el sistema tridiagonal de 8 "
ecuaciones con 8 " incgnitas

2#

2 2
$
#

2#
2" 2#
#

2$
2# 2$

23
28" 28

28"
28# 28"
#

C" C!
'
C# C"

Q"

2#
2"
2" 2#

'
C$ C#
C# C"
Q#

2# 2$
2$
2#

Q8"

'
C8 C8"
C8" C8#

28" 28
28
28"

Clculo Numrico
Pgina 80

Miguel Angel Cifredo Campos


macifredo@gmail.com

Este sistema puede resolverse por cualquiera de los mtodos iterados estudiados en el Tema $ ya que, al
ser la matriz del sistema de diagonal dominante, todos ellos son convergentes.
Ejemplo &( Si aplicamos le interpolacin por splines cbicos a la funcin del Ejemplo &4 0 B

"
en
" B#

la particin ? % $ # " ! " # $ % obtenemos el resultado de la Figura 5( en el que puede verse


que, independientemente de ser mejor que el que se obtuvo en la Figura 5 ' ( #) con el mtodo de Hermite, no
aparece el fenmeno de Runge.

Figura &( La funcin 0 B y su interpolacin por splines cbicos

&$ Ejercicios
Ejercicio &" Calcular los polinomios de Lagrange para el soporte cannico con " 8 $.
Solucin: Los polinomios de Lagrange para el soporte cannico {B3 3} (3 ! 8) son
P5 B $
8

3!
35

B3
DB

53
B 5D w 5

5 ! 8

donde DB BB "B 8
Si 8 ", el soporte cannico es W {! "}

B"
DB

P! B

B"
B !D w !
"
DB BB " B# B

B
DB
D w B #B "
P B
B
"
B "D w "
"

Si 8 #, el soporte cannico es W {! " #}

DB BB "B # B$ $B# #B

D w B $B# 'B #

B "B #
B# $B #
DB

w
B !D !
#
#
BB #
DB
#

#B
P" B

B "D w "
"
DB
BB "
B# B
P# B

w
B #D #
#
#
P! B

Si 8 $, el soporte cannico es W {0, 1, 2, 3}


DB BB "B #B $ B% 'B$ ""B# 'B

D w B %B$ ")B# ##B '

DB
B !D w !
DB
P" B
B "D w "
DB
P# B
B #D w #
DB
P$ B
B !D w !

P! B

B "B #B $
B$ 'B# ""B '

'
'
BB #B $
B$ &B# 'B

#
#
BB "B $
B$ %B# $B

#
#
BB "B #
B$ $B# #B

'
'

Clculo Numrico
Pgina 81

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio &# Hallar el polinomio de interpolacin de la funcin 0 B #B% en el soporte cannico


{! " # $}. Obtener una expresin del error.
Solucin: En el Ejercicio &" se obtuvieron los polinomios de Lagrange en el soporte cannico W { ! " # $},
que resultaron ser
P! B "' B$ B# ""
' B"
P" B #" B$ #& B# $B

P# B #" B$ #B# $# B
P$ B '" B$ #" B# $" B

El polinomio de interpolacin viene dado (a travs de los polinomios de Lagrange) por


T8 B "0 B5 P5 B
8

5!

y como 0 ! ! 0 " # 0 # $# y 0 $ "'#, obtenemos que


T$ B ! P! B # P" B $# P# B "'# P$ B
# "# B$ &# B# $B $# "# B$ #B# $# B "'# "' B$ "# B# "$ B
B$ &B# 'B "'B$ '%B# %)B #(B$ )"B# &%B
"#B$ ##B# "#B

El error viene dado por:


&B DB

0 8" -B
0 MZ -B
BB "B #B $
8 "x
%x

y dado que 0 B #B% , se tiene que 0 MZ B %) , por lo que


&B BB "B #B $

%)
#BB "B #B $
#%

Ejercicio &$ Hallar el polinomio de interpolacin de la funcin 0 B /B en el soporte {! "} y con l,


aproximar la raz cuadrada del nmero / estimando el error cometido.
Solucin: Al tratarse del soporte cannico con 8 ", podemos ver en el Ejercicio %" que los polinomios de
Lagrange son:
P! B B "

P" B B

Por tanto, el polinomio interpolador resulta ser


T" B 0 !P! B 0 "P" B /! B " / " B B " / B / "B "

El error viene dado por:


ww

&B DB

0 8" -B
0 -B
BB "
8 "x
#x

y al ser 0 w w B /B se tiene que &B BB "

/B

El error al aproximar la raz cuadrada de /, es decir al calcular 0 ! &, por T" ! & es:
&! & ! &! & "

/!&
! #& -B

/ ! "#&/-B
#
#

Como ! -B " se tiene que /! < /-B < /" # (")#... y, por tanto:
&! & ! "#&/ ! $$*( ! $%

siendo
T" ! & / "! & "

es decir:

/ " )&*"%

/"
" )&*"%
#

con un error & 0,34.

Clculo Numrico
Pgina 82

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio &% Obtener el polinomio de interpolacin de los puntos (( $), () "), (* " ) y ("! *) basndose en
los polinomios de Lagrange para el soporte cannico.
Solucin: Como tenemos cuatro puntos, el soporte cannico W {! " # $}. Los polinomios de Lagrange para
%"
esta soporte (ver Ejercicio
)"son:
""
"
$
P! B B$ B# B " P# B B$ #B# B
'
'
#
#
P B " B$ & B# $B
P B " B$ " B# " B
"

'

El polinomio de interpolacin viene dado por:


T$ B ! 0 B3 P3 >
$

con >

3!

B B!
2

En nuestro caso, B! ( y 2 ", por lo que > B (. Por tanto:


T$ B $ P! B ( " P" B ( " P# B ( * P$B (
$ "' B ($ B (#
"

"# B

""
' B

( "

( &# B (# $B (
$

" "# B ($ #B (# $# B (
* "' B ($ #" B (# $" B (
B ($ #B (# B ( $
Es decir:

T$ B B$ #$B# "(%B %$"

Ejercicio && Obtener el polinomio de interpolacin de los puntos: (! &), (" $), (# ") y ($ "$)
1.Mediante resolucin de un sistema de ecuaciones.
2.Mediante polinomios de Lagrange
3.Por el mtodo de Newton para diferencias divididas.
4.Por el mtodo de Newton para diferencias finitas.
Solucin:

1. Al

tener

cuatro

puntos,

el

polinomio

que

debemos

buscar

es

de

grado

tres,

T B +$ B$ +# B# +" B +!

Sustituyendo los puntos del soporte obtenemos el sistema


T$ ! +! &
T$ # )+$ %+# #+" +! "
T$ " +$ +# +" +! $ T$ $ #(+$ *+# $+" +! "$
cuya solucin es +! &, +" $, +# # y +$ ", por lo que el polinomio de interpolacin es
T$ B B$ #B# $B &
2. Dado que el soporte es el cannico para 8 $, para los polinomios de Lagrange del Ejercicio %" y dado que
el polinomio de interpolacin viene dado por
T$ B C! P! B C" P" B C# P# B C$ P$ B
se tiene:
T$ B & "' B$ B#

"$

'" B$

" #
#B

"
$ B

""
' B

" $ "# B$ &# B# $B " "# B$ #B# $# B

es decir, T$ B B$ #B# $B &

Clculo Numrico
Pgina 83

Miguel Angel Cifredo Campos


macifredo@gmail.com

3. Comenzamos por construir la tabla de diferencias divididas:


B3
!

0 B3
&

"

0 B3 B4

0 B3 B4 B5

0 B3 B4 B5 B6

#
"
%
#

"

"$

"
%

"#

El polinomio de interpolacin viene dado por


T$ B 0 B! B B! 0 B! B" B B! B B" 0 B! B" B# B B! B B" B B#0 B! B" B # B$

se obtiene que
T$ B & #B B! "B B! B B" "B B! B B" B B# & #B BB " BB "B #

es decir:
T$ B B$ #B# $B &
4.La tabla de diferencias finitas es
B3
!
"
#
$

0 B3
&
$
"
"$

?0 B3
#
%
"#

?# 0 B3
#
)

?$ 0 B3
'

y dado que el polinomio de interpolacin viene dado por

T$ B !> 0 B! "> ?0 B! #> ?# 0 B! $> ?$ 0 B!

donde >

B B!
B!

B , se tiene que
2
"

B
B
B
B
BB "
BB "B #
T$ B & # # ' & #B #
'
!
"
#
$
#x
$x
& #B BB " BB "B # B$ #B# $B &

Ejercicio &' Probar que J 8 "# ## $# 8# es un polinomio en 8 y obtenerlo por interpolacin.


Solucin: Consideremos las diferencias finitas de J 8 con paso 2 ":
?J 8 J 8 " J 8 "# ## 8# 8 "# "# ## 8# 8 "#
Dado que ?J 8 8 "# cualquiera que sea el valor de 8 ?J 8 es un polinomio de
segundo grado, por lo que ?# J 8 ser un polinomio de primer grado, ?$ J 8 una constante y ?% J 8 ser
idnticamente nulo para cualquier valor 8. Esto prueba que J 8 es un polinomio de tercer grado.
Para obtenerlo, lo ms sencillo es utilizar la frmula de Newton para diferencias finitas con cuatro
puntos:
B3
"
#
$
%

J B3
"
&
"%
$!

?J B3
%
*
"'

?# J B3
&
(

?$ J B3
#

T$ B !> J B! "> ?J B! #> ?# J B! $> ?$ J B!

siendo >

B B!
B ".
2

Clculo Numrico
Pgina 84

Miguel Angel Cifredo Campos


macifredo@gmail.com

>>">#
T$ B " " % > & >>"
" %B " #& B "B # $" B "B #B $
#x #
$x
"
' ' #%B " "&B "B # #B "B #B $ '" #B$ $B# B "' BB "#B "

por lo que J 8

88 "#8 "
'

.
Ejercicio &( Obtener el polinomio de interpolacin de Hermite de la funcin 0 (B) 68 B en el soporte {" #}
y, supuesto conocido 68 #, aproximar el valor de 68 " & acotando el error cometido.
Solucin: Calculemos, en primer lugar, los valores que toman tanto la funcin como su derivada en los puntos
del soporte.
0 B 68B
0 w B

"
B

0 " !

0 # 68#

0 w " "

0 w # ! &

Los polinomios de Lagrange en el soporte {" #} son (ver el Ejercicio %") :


P! B

B#
#B
"#

P" B

B"
B"
#"

luego el polinomio de interpolacin de Hermite, que viene dado por


T#8" B ! +5 ,5 B B5 P#5 B

con

5!

+5 0 B5
5

w
5

, 0 B #0 B P B
5
T$ B +! ,! B "P#! B +" ," B #P#" B

es, en nuestro caso:


con

+! 0 " !
+" 0 # 68#

,! 0 w " #0 "Pw" " " # ! " "


," 0 # #0 #Pw# # ! & # 68# " ! & #68#
w

por lo que
T$ B B "P#! B 68# ! & #68#B #P#" B

y sustituyendo los valores de P! B y P" B obtenemos


T$ B B "# B# 68# ! & #68#B #B "#

Para B " & se tiene


T$ " & ! &! &# 68# ! & #68# ! &! &# ! %!*!($&*!

El error viene dado por:


&B D # B

0 #8# -B
0 MZ -B
B "# B ##
#8 #x
%x

y dado que
0 MZ -B

es decir:

'
'
% '
-B%
"

&" &

! &# ! &#
' ! !"&'#&
%x

68" & ! %!*!($&*! con un error

& ! !"&'#&

Clculo Numrico
Pgina 85

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio &): Dada la funcin 0 B /B , hallar el polinomio de interpolacin en el soporte { " ! "} y una cota
del error en el intervalo [ " "]. Calcular T (! !") y compararlo con el valor dado por la calculadora para /!!".

Solucin: Obtendremos el polinomio, por ejemplo, mediante la interpolacin de Lagrange T8 B ! 0 B5 PB5 en


8

5!

la que los polinomios de Lagrange vienen dados por


DB
P5 B
B B5 D w B5

con

DB B "BB " B$ B

D w " #

D w B $B# " D w ! "


D w " #

P" B

B "B "
B# "
"

Por tanto,
P! B

BB "
"
B# B
#
#

P# B

B"B
#

"# B# B

y como 0 " /" , 0 ! " y 0 " /.


"
"
/ /" # # / /"
T# B /" B# B " B# " / B# B
B
B"
#
#
#
#

o, de forma aproximada T# B ! &%$!)!'$&B# " "(&#!""*%B "


El error viene dado por &B DB
Dado que

0 '''B /B 0 ''' B

0 "'B
.
$x

mx 0 ''' B /

por lo que

&B

B ""

DB

Utilizando la norma infinito

B""

/
DB
'

mx DB mx B$ B
B""

Como D w B $B# ", para que D w B !, ha de ser B "$. Puede verse en la grfica de la
funcin B$ B que su derivada $B# " se anula (posee extremos relativos) en dichos puntos.

Grfica de B $ B

Por tanto,

"
"
"
#
#
DB D

_
$ $ $ $ $ $ $ $

/
/
#
es decir &B DB_
'

' $$

! ")

Comparando con la calculadora tenemos:


B ! !"

Por extrapolacin
En la calculadora

T# ! !" " !"")!'$#!


/!!" " !"!!&!"'(

por lo que el error cometido es &! !" T ! !" /!!" ! !!"(&'"&$ " ) "!$
Puede verse claramente que el verdadero error es bastante menor que la cota obtenida de ! ").

Clculo Numrico
Pgina 86

Miguel Angel Cifredo Campos


macifredo@gmail.com

Actividad Personal
A continuacin se proponen ejercicios tomados en certmenes anteriores y ejercicios propuestos para
ser resueltos a modo de autoevaluacin.
" Use interpolacin de Lagrange para evaluar 68# con base en los datos
B
0

"
!

%
" $)'#*%

'
" (*"('!

# Estime por Lagrange el logarito de & en base "! (691&, con sus respectivos errores, mediante los datos
a) B
C

%
! '!#!'

b) B
C

% &
! '&$#"#&

'
! (()"&"$
& &
! (%!$'#(

$ Por diferencias divididas determine 68#, y su respectivo error, para los puntos
B
C

"
!

%
" $)'#*%

'
" (*"('!

&
" '!*%$)

% Dada la tabla
B
C
Cw

"
! &)"*('(
! *#!'($'

#
! "&'&"('
! ")"!"&%

$
,
! !&#$*&(
! !&&"%"!

interpole

los

datos

por

polinomios de Hermite.
& Por Spline cbicos encuentre un polinomio de interpolacin para los puntos " $ ! # " "
# !

Clculo Numrico
Pgina 87

Miguel Angel Cifredo Campos


macifredo@gmail.com

X n este tema se pretende dar una aproximacin numrica del valor de una integral ( 0 B.B en los
,

distintos problemas que se presentan en la prctica, como son:

Conocida una primitiva J B de la funcin 0 B sabemos que

' , 0 B.B J , J +
+

pero necesitamos aproximar el valor de J , J +.


As, por ejemplo, (

"

#
"
.B 68B 68# 68" 68# , pero hay que aproximar el valor de 68#.
"
B

Si se conoce la funcin 0 B, pero no se conoce ninguna primitiva suya, se busca otra funcin
1B que aproxime a la funcin 0 B y de la cual s se conozcan primitivas.
As, por ejemplo, para calcular (

# B
"

/
.B, se desarrolla en serie de potencias
B

B8
"B
8"
/B
8x &B " " B
0 B

&B 1B &B
B
B
B
8x

para obtener que ( 0 B.B ( 1B.B ( &B.B en donde habr que evaluar ( &B.B.
#

"

"

"

"

Slo se conocen los valores de 0 B en un soporte {B! B" B8 }.


En ste caso, se interpola la funcin (por ejemplo mediante la interpolacin polinmica).
( 0 B.B ( T8 B.B (
,

0 8" -
B B! B B" B B8 .B
8 "x

( 0 B.B ( T8 B.B ( &B.B


,

'" Frmulas de cuadratura


Si realizamos la interpolacin de Lagrange, y llamamos DB B B! B B" B B8
, el polinomio de interpolacin viene dado por T8 B C! P! B C" P" B C8 P8 B
en donde los polinomios de Lagrange P3 B pueden expresarse de la forma P5 B

DB
B B5 D w B5

Adems, ( T8 B.B "( C3 P3 B.B " C3 ( P3 B.B "+3 C3


8

3!

donde los coeficientes +3 ( P3 B.B


,

3!

3!

no dependen de la funcin, sino slo del soporte.

Por otra parte, si 0 B es un polinomio de grado no superior a 8, (B) !, por lo que para polinomios
es
( T (B) .B " +3 T B3
,

3"

Por tanto:
T B " , + +! +" +8
, # +#
T B B
+! B! +" B " + 8 B 8
#

,8" +8"
8
8
8
8
T B B
+! B! + " B " + 8 B 8
8"

'"

Clculo Numrico
Pgina 88

Miguel Angel Cifredo Campos


macifredo@gmail.com

sistema que, en forma matricial es


"
B!

B8
!

"
B"

B8"

,+

" +!
, # +#

B8
+"
#

8"
B88 +8
+
, 8"

8"

cuyo determinante es un Vandermonde.


Una vez calculados los coeficientes +3 se obtiene una frmula de aproximacin que slo depender del
soporte. Para cada soporte, las frmulas reciben el nombre de frmulas de cuadratura.
Ejemplo '" Vamos a integrar una funcin 0 B en [! "] considerando los soportes
" "
W" !
$ #

" " $
W# .
% # %

" "
En el soporte W" ! :
$ #

"
"
"
( 0 B.B +! 0 ! +" 0 +# 0
$
#
!

El sistema a resolver es, en este caso:


T B " +! +" +# "
"
"
"
T B B ! +! +" +#
$
#
#
"
"
"
T B B# ! +! +" +#
*
%
$

y, por tanto, ( 0 B.B


"

cuya solucin es +!

"
$
+" + # #
#
#

"
$ "
"
0 ! 0 #0
#
# $
#

" " $
En el soporte W# :
% # %

"
"
"
$
( 0 B.B ,! 0 ," 0 ,# 0
%
#
%
!

El sistema a resolver es, en este caso:


T B " ,! ," ,# "
"
$
"
T B B "% ,! ," ,#
#
%
#
"
"
*
"
#
T B B
,! , "
,#
"'
%
"'
$
#
"
,"
cuya solucin es ,!
$
$

,#

#
$

por lo que ( 0 B.B 0 0 0


"

#
$

"
%

"
$

"
#

#
$

$
%

Las formas ms generalizadas de aproximacin de la integral de una funcin 0 B se realizan mediante


uno de los dos procesos siguientes:
Dando un soporte (generalmente regular) y los valores de la funcin en los puntos del soporte. Frmulas de
Newton-Cotes.
Dando diferentes soportes y buscando el polinomio T B que hace ms pequea la integral
' , (0 B T B.B.
+
Frmulas de Gauss que no se vern en este curso.

Clculo Numrico
Pgina 89

Miguel Angel Cifredo Campos


macifredo@gmail.com

'# Frmulas de Newton-Cotes


Partamos del soporte regular {B! B" B8 } con
B! +, B" + 2, . . . , B3 + 32 , . . . , B8 + 82 ,
Si llamamos DB B B! B B" B B8 se tiene que los polinomios de Lagrange son
P3 B

B B! B B" B B8
B +B + 2B + 82

B B3 B3 B! B3 B3" B3 B38" B3 B8
B + 32323 "22 2 #2 8 32
B +B + 2B + 82
B + 323x8 3x2 8" "83

Por lo que haciendo >

B+
se tiene que
2
P3 B

Por tanto, +3 ( P3 B.B (


8

>> "> 8
> 33x8 3x "83

>> "> 8
"83 2 8 >> "> 8
.>
83 2.> 3x 8 3x (
>3
! > 33x8 3x "
!
8
8 D>
83 3
+3 2 "
.>
8x (! > 3
8

que son los denominados coeficientes de Newton - Cotes .


Teorema '.2. Los coeficientes de Cotes para un soporte regular {B! , B" , . . . , B8} verifican que +5 +85 .
Teniendo en cuanta el Teorema '#, slo hay que calcular la mitad de los coeficientes.
Las Frmulas de Newton-Cotes en los casos 8 " y 8 # son conocidas como Frmula del trapecio y
Frmula de Simpson respectivamente.
'#" Frmula del trapecio
La frmula de Newton-Cotes en el caso 8 " slo tiene dos coeficientes. Como por el Teorema &# es
+! +" y por las ecuaciones ('") es +! +" , +, se tiene que +! +" "# , + por lo que
( 0 B.B
,

,+
,+
0 + 0 ,
0 +
0 , , +
#
#
#

Figura '" Mtodo del trapecio

Es decir, el mtodo del trapecio nos aproxima la integral por el rea de la regin plana limitada por las
rectas B + B , C ! y la recta que pasa por los puntos (+ 0 +) y (, 0 ,), es decir, el rea de un
trapecio (ver Figura '").

Clculo Numrico
Pgina 90

Miguel Angel Cifredo Campos


macifredo@gmail.com

'## Frmula de Simpson


Para el caso 8 # tenemos que B! + B"
+! 2 "

#!

!#

+,
#

y B# , . Dado que
#

>> "> #
2 >$
>#
2
,+
.> $ #>
con 2
(
#x !
>!
# $
#
$
#
#

,+
+# + !
'

se tiene que

y como +! +" +# , +, se tiene que +" , + #

,+
#, +

'
$

tenindose, por tanto que


( 0 B.B
,

,+
#, + +,
,+
0 +
0 #
0 ,
'
$
'

o, lo que es lo mismo:
( 0 B.B
,

,+
0 + %0 +,
# 0 ,
'

Teorema '$ Al aplicar la frmula de Newton-Cotes para un entero n, el error que se comete viene dado por:
Si n es par &8

28$ 0 8# - 8
( > >> "> 8.>
8 #x
!

Si n es impar &8

28# 0 8" - 8
( > "> 8.>
8 "x
!

Corolario '% El error cometido en la aproximacin numrica de una integral es:


Para la frmula del trapecio:

&

2$ 0 w w -
.
"#

Para el mtodo de Simpson:

&

2& 0 MZ -
*!

'$ Frmulas compuestas


'$" Simpson para n par
Descomponiendo el soporte en B! B" B# } {B# B$ B% } {B8# B8" B8 } se obtiene que
{

( 0 B.B
,

B# B!
B% B '
B8 B8#
0 B! %0 B" 0 B#
0 B# %0 B$ 0 B%
0 B8# %0 B8" 0 B8
'
'
'

2
0 B! %0 B" #0 B# %0 B$ #0 B% #0 B8# %0 B8" 0 B 8
$

( 0 B.B
,

2
0 B! 0 B8 #0 B# 0 B8# %0 B" 0 B8"
$

El error viene dado por


&

, +&
mx 0 MZ B
")!8%
BB! B8

Clculo Numrico
Pgina 91

Miguel Angel Cifredo Campos


macifredo@gmail.com

'$# Trapecios para n impar


Con un proceso anlogo al anterior obtenemos
que
,
2
0 B.B 0 B! 0 B" 0 B" 0 B# 0 B8" 0 B8
#
(+
( 0 B.B
,

,+
0 B! 0 B8 #0 B" 0 B# 0 B8"
#8

El error que se comete viene dado por


&

, +$
ww
mx 0 B
#
"#8
BB! B8

'% Ejercicios

Ejercicio '" Probar que los coeficientes +5 de las frmulas de Newton-Ctes verifican que "
8

"5 +5
85
5!

Solucin: Como la expresin de los coeficientes es


+5 2 "85

85
8x

D>
.>
>5

donde D> >> "> 8

la sumatoria se transforma en

8
8
8 8 D>
"5 +5
"5
"5 8 D>
"5 8 8 D>
" 8 2 "85 5 (
.> "2 8 (
.> 2
.>
( "
8
5
5
5 ! > 5
8x ! > 5
8x
> 5
!
5!
5!
5!
5!

"
8

Podemos ver que el integrando es precisamente D w >


8
! D> D> D> D> D> > "> #> 8 >> "> 8 " D w >
>
>" >#
>5
5! > 5

y, en consecuencia,
"

"5 +5
"8 8 w
"8
"8
2
D >.> 2
D> 2
D> D!
(
8
5
8x
8x
8x
!
!
5!
8

Al ser D8 D! !, podemos asegurar que "


8

"5 +5
!
85
5!

Ejercicio '# Dada la integral (

"

" B#
.B , se pide:
" B#

1.Calcularla exactamente.
2.Calcularla, aproximadamente, por la frmula bsica de Simpson.
3.Calcularla por la frmula compuesta de Simpson de 11 sumandos.

4.Aplicar la siguiente frmula ( 0 B.B &0 )0 ! &0


*
&
&
"

"

"

comprobando que integra, exactamente, polinomios de grado menor o igual que 5.

Clculo Numrico
Pgina 92

Miguel Angel Cifredo Campos


macifredo@gmail.com

Solucin:
1.Calculndola exactamente obtenemos:
(

"

"
" B#
#
1
.B ( "
.B B #+<->1B " ! &(!(*'$
#
"B
" B#
#
!
!
"

2.La frmula bsica de Simpson (8 #) establece que:


2
0 ! %0 ! & 0 " &
$

( 0 B.B
"

por lo que

"

donde 2

"!
"

#
#

" B#
"
.B " % ! ' ! & ! &'''' &
#
"B
'

3.La frmula compuesta de Simpson de once sumandos (8 "!) es:


( 0 B.B
"

donde 2

2
0 ! 0 " %0 ! " 0 ! $ 0 ! & 0 ! ( 0 ! * #0 ! # 0 ! % 0 ! ' 0 ! ) &
$

"
"!

"!
"!

En nuestro caso:
(

"
!

"
" B#
"
.B "! " "" %%*#&)'% % '(%'$!&') &
"( "#$))*#" & ! &(!(*'$!( &
#
"B
$
$!

4.Aunque los lmites de la integral que nos piden son ! y ", al ser el integrando una funcin par, podemos
hacer:
(

"

" B#
" " " B#
.B

.B
(
" B#
# " " B#

con lo que es factible aplicarle la frmula, y dado que


0 ! " 0 $& 0 $&

"
"

$
&
$
&

"
%

se tiene
(

"

" B#
" "
"
"
" #"
(
.B & ) " &

! &)$$$
" B#
# *
%
%
") #
"#

Otra forma de aplicar la frmula es realizar el cambio B


(

Teniendo en cuenta que:


1! ! $

"

>"
, con lo que:
#

"
"
" B#
$ #> >#
.B

.>

1>.>
(
(
#
" B#
" #& #> >
"

1 &$ ! %!(%&('%$

1 &$ ! !&*&!$')$

se obtiene
(

"

" B#
"
.B & ! %!(%&('%$ ) ! $ & ! !&*&!$')$ ! &(!&$%!(!
#
"B
*

(No existe ninguna contradiccin en el hecho de haber obtenido dos resultados diferentes, ya que la frmula se
ha aplicado a funciones diferentes.)

Clculo Numrico
Pgina 93

Miguel Angel Cifredo Campos


macifredo@gmail.com

Veamos. por ltimo, que la frmula es exacta para polinomios de grado no superior a cinco.
5
( B .B
"

"

Por tanto:

( 1 .B #

#
" "5"
5"
5"
!

"

B5"

5"

"

( B .B !

"

"
"

$
( B .B !

%
( B .B

"

"

si 5 es impar
#
( B .B

"

"
"

si 5 es par

"

"
"

#
$

&
( B .B !

#
&

"

La suma de cuadratura (frmula a aplicar) para estas funciones es:


0 B "

0 B B

0 B B#

0 B B

0 B B&

0 B B

"
& " ) " & " #
*
"
& $& ) ! & $& !
*
$
$
#
"
& ) ! &
*
&
&
$
"
& $& $ ) ! & $& $ !
*
"
*
*
#
&
)!&

*
#&
#&
&
"
& $& & ) ! & $& & !
*

Al ser exacta para las funciones " B B# B$ B% y B& , tambin lo es para cualquier combinacin lineal de ellas
y, por tanto, la frmula integra, exactamente, cualquier polinomio de grado no superior a cinco.
Es fcil observar que:
'
( B .B
1

-1

#
(

mientras que W

"
#(
#(
" &%
'
#
&
)!&

*
"#&
")&
* #&
#&
(

Por lo que la funcin no integra, exactamente, a B' y, por tanto, a polinomios de grado superior a cinco.

Ejercicio '$ Se considera el soporte { " - "} donde - ( " ") es fijo. Sea 0 B V[ " "].
1.Obtener el polinomio de interpolacin de 0 B y una expresin del error.
2.Determinar los coeficientes +! +" y +# en la frmula de cuadratura
( 0 B.B +! 0 " +" 0 - +# 0 "
1

para que integre, exactamente, polinomios del mayor

-1

grado posible.

3.Dar una condicin, necesaria y suficiente, para que dicha frmula sea exacta para polinomios de tercer grado.
4.Aplicar la frmula a 0 B &B"$
con - ! " y comparar con el valor exacto.
#
Solucin:
1.Utilizando los polinomios de Lagrange tenemos:

D w " $ #- " #" -

DB B "B -B " B -B B - D B $B #-B " D w - $- # #- # " - # "


D w " $ #- " #" -
$

B# - "B B -B "

P! B
#" -
#- "

DB
B# "
B "B "
P5 B

P B
#
B B5 D w B5
"
-# "
- "

B# " -B B "B -

P# B

#" -
#" -

El polinomio de interpolacin de la funcin 0 B es

T# B 0 "P! B 0 -P" B 0 "P# B

Clculo Numrico
Pgina 94

Miguel Angel Cifredo Campos


macifredo@gmail.com

Si utilizamos la frmula de Newton para diferencias divididas se obtiene:


T# B 0 " B "0 " - B "B -0 " - "
0 "

0 - 0 "
B "
-"

0 "0 -
"-

"
0 -0
"B "B -
#

El error viene dado por


&B DB

0 ''' 0
B "B -B "

0 ''' 0
$x
'

con

" 0 "

2.Para que integre, exactamente, a polinomios del mayor grado posible, la frmula debe ser interpolatoria; esto
es, debe corresponder a la integracin del polinomio de interpolacin de 0 B en { " - "}, con lo que:
+3 ( P3 B.B
"

para 3 ! #

"

+! (

B# - "B "
B$
B#
.B
- " -B
#- "
#- " $
#
"
"

+" (

"

+# (

"

B# "
"
B$
.B #
B
#
- " $
" - "

"

"

( 0 B.B
"

"

"

"
#
" $ #-
#- " $
$" -

"
%
%

-# "
$
$" - #

B# " -B "
B$
B#
.B
" - -B
#" -
#" - $
#
"

Luego la frmula

"

"

"

"
#
" $ #-
#" - $
$" -

" $%
" $0 "
0 -
0 "
$" -
$" - #
$" -

es exacta para polinomios de grado no superior a dos.


Otra forma de hacerlo es imponer la condicin de que la frmula sea exacta para las funciones " B B# . . .
hasta donde sea posible.
0 B " ( " .B +! +" +# +! +" +# #
"

"

0 B B ( B .B +! +" - +# +! +" - +# !
"

"

#
#
#
( B .B +! +" - +# +! +" - +#
"

0 B B#

"

#
$

Dado que disponemos de un sistema de tres ecuaciones con tres incgnitas, no continuamos. La solucin del
sistema es:
+!

" $$" -

%
$" - #

+"

+#

" $$" -

con lo que se obtiene la misma frmula anterior.


3.Imponemos que sea exacta para 0 B B$ .
! ( B$ .B +! +" - $ +!
"

"

"$$"-

%!
$

%- $
$"- #

"$$"-

"$-"-%- $ "$-"-
$"- #

%-%- $
$"- #

%-"- #
$"- #

-!

Se deduce, entonces, que la frmula es exacta para polinomios de tercer grado si, y slo si, - !, en cuyo
caso se trata de la frmula de Simpson:
( 0 B.B
"

"

"
0 " %0 ! 0 "
$

Clculo Numrico
Pgina 95

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.Para - ! " tenemos que:

0 " % #

+!

"$!"
$"!"

+"

%
" $%')!"$%(
$" ! "#

+#

" $ ! "
! (

! #&*#&*
$" ! "
# (

por lo que (
"

"

! $*$*$*

0 ! " ' (& # &*)!('#""

0 " * $

&B "$
.B ! ()()()() $ %**!*#&% ! (((((((( & !'%(%*"!
#

#
&B "$
# &B"$
#
El valor exacto es: (
.B

$
#
&
"
#
$

"

"

% $
('
$ #$
& !'''''''
"&
"&

"

por lo que el error es menor que ! !!"*"('.


Ejercicio '% Calcular '! 0 B 68B .B interpolando 0 B, por un polinomio de tercer grado, en el soporte
"
"
"
{! "$ #$ "} y aplicar el resultado al clculo de '! =/8B 68B .B.(Indicacin: '! B7 68B .B 7"
7 !).
#
"

Solucin: Si interpolamos la funcin por un polinomio de tercer grado utilizando los polinomios de Lagrange,
sabemos que
( 0 B 68B .B ( T$ B 68B .B ( "0 B3 P3 B68B .B "0 B3 ( P3 B 68B .B
"

"

"

3!

3!

Tenemos, por tanto, que +3 ( P3 B 68B .B

"

"

(! 3 $

Calculemos los polinomios de Lagrange. Dado que


DB BB $" B #$ B " B% #B$

obtenemos
P! B

P# B

"" #
* B

#* B ; D w B %B$ 'B#

B "$ B $# aB "b
*
""
#
B$ #B# B
#
*
*
*#

#
*

#
*

"

( 68B .B "
"

BB $" B $#

2
( B 68B .B

"

"
"'
!
"
"
( B 68B .B
4
!

D w ! *#
#
D w #$ #(

#
#(

P$ B

$
( B 68B .B

BB $# aB "b

P" B

BB $" aB "b
#(
%
"
B$ B# B
#
#
$
$
#(

Teniendo en cuenta que

##
* B

#
D w $" #(
y D w a"b #*

#( $ & # #
B B B
#
$
$

* $
#
#
B B B
#
*

"
9

los coeficientes +3 son:


+! B (
+" B (
+# B (
+$ B (

"
!
"
!

*
""
#
B$ #B# B 68B.B *#
#
*
*
#( $ & # #
B B B68B .B
#
$
$

"

!
"
!

#(
#

#( $ % # "
B B B68B .B
#
$
$

* $
#
#
*
B B B68B .B #
#
*

"
"'

"
"'

"
*

# "*

""
*

%" *# a "b

&$ "* $# "%

#(
#

"
"'

"
"'

"*
$#

%$ *" "$ "%

#* "%

""
$#

"
$#

"
$#

Clculo Numrico
Pgina 96

Miguel Angel Cifredo Campos


macifredo@gmail.com

( 0 B 68B .B =
"

Obtenindose

"
""0 ! "*0 "$ 0 #$ 0 a"b &
$#

Otra forma de obtenerla es sabiendo que, al ser interpolatoria, va a integrar exactamente a cualquier
polinomio de grado no superior a tres. Como
"
#
( 0 B 68B .B +! 0 ! +" 0 $ +# 0 $ +$ 0 a"b &
"

obligndola a que integre, exactamente, a los polinomios " B B# y B$ obtenemos el sistema


0 B "+! +" +# +$ ( 68B .B "
"

+! +" +# +$ "

+ #+ $+ $
"
#
$
%

+" %+# *+$ "

+ )+ #(+ #(
#
$
"
"'

"
#
"
"
0 B B +" +# +$ ( B 68B .B
$
$
%
!
"
"
%
"
0 B B# +" +# +$ ( B# 68B .B
*
*
*
!
"
"
)
"
0 B B$ +" +# +$ ( B$ 68B .B
#(
#(
"'
!

cuya solucin es +!

""
$#

+"

"*
$#

+#

"
$#

+$

"
$#

Obtenindose, de esta manera, la misma frmula anterior.


Aunque no se pide, una expresin del error es:
& ( 0 B 68B .B ( T$ B 68B .B ( 0 B T$ B68B .B ( &B 68B .B ( DB
"

"

"

&

"

"

Q%
( DB 68B .B
#% !

0 MZ -B
68B .B
%x

"

donde Q% representa el mximo valor que toma la derivada cuarta de 0 B en el intervalo [! "].
Para calcular ( =/8B 68B .B utilizamos la frmula obtenida con 0 B =/8B.
"

0 ! ! 0 "$ ! $#("*%'*' 0 #$ ! '")$'*)!$

( =/8B 68B .B
"

0 a"b ! )%"%(!*)%

"
"" ! "* ! $#("*%'*' ! '")$'*)!$ ! )%"%(!*)% ! #$*)*")(&
$#

Por desarrollo en serie se obtiene ( =/8B 68B .B ! #$*)*""( & con & ! % "!(
"

Ejercicio '& Determinar el nmero de sumandos necesarios, en las frmulas compuestas de los trapecios y
Simpson, para calcular, con seis cifras decimales exactas, las siguientes integrales:
" M ( 68B .B

# M (

"

$ B
#

/
.B
B

Solucin: ".Utilizamos, en primer lugar, la frmula compuesta de los trapecios:


( 0 B.B
,

8"
2
0 + 0 , #"0 B3 &
#
3"

con &

, +$
ww
mx 0 B
"#8#
B+,

siendo

,+
y B3 + 23 (3 " 8 ".
8

Lo primero que debemos hacer es buscar el mximo de la funcin | 0 w w B | en el intervalo [ " #].
0 B 68B

0 w B

"
B

0 w B

"
B#

| 0 w B |

"
B#

Clculo Numrico
Pgina 97

Miguel Angel Cifredo Campos


macifredo@gmail.com

Dado que, en el intervalo [" #], la funcin | 0 w w B |


punto B " y dicho valor mximo es ".
El error es, por tanto &

"
es decreciente, sta alcanza su mximo en el
B#

, +$
"

"#8#
"#8#

Para calcular la integral con seis cifras decimales exactas ha de ser el error menor que "!' , por lo que
"
"!'
"#8#

#)*

Es decir:
Utilizando la frmula compuesta de los trapecios es necesario sumar, al menos, #)*
trminos para obtener seis cifras decimales exactas.
Veamos cuntos son necesarios si se utiliza ahora la frmula compuesta de Simpson:
( 0 B.B
"

siendo 2

,+
,
8

2
0 + 0 , %M #T &
$

con &

, +&
mx 0 MZ B
")!8%
B+,

B3 + 23 (3 " 8 "),

M la suma de los valores de la funcin en los puntos B3 con 3

impar y T la suma de los valores de la funcin en los puntos B3 con 3 par.


Debemos acotar, por tanto, la cuarta derivada de la funcin.
0 B 68B

0 w B

"
B

0 w B

"
B#

ww

0 w B

#
B$

'
B%

0 MZ B

La funcin |0 MZ B| toma su valor mximo, en el intervalo [" #], en el punto B " (ya que en dicho
'
intervalo la funcin es decreciente) y dicho
valor
mximo
es
, +&
"
'
.
")!8%
$!8%
sea menor que "!' , es decir, que
Se
por tanto,
queerror
Si tiene,
queremos
que el
&

(obsrvese que 8 "% es vlido por ser par).

"
"!' tendr que ser 8
$!8%

"%

En resumen: Utilizando la frmula compuesta de Simpson slo es necesario sumar "% trminos (frente a los #)*
necesarios
por
la
frmula
compuesta
de
los
trapecios)
para
obtener
seis
cifras decimales exactas.
# Los razonamientos, en este caso, son anlogos a los del apartado
anterior, es decir, debemos acotar,
/B
0
B

.
respectivamente, las derivadas segunda y cuarta de la funcin
B

B# #B # B
0 "B
/
B$

B" B
0 w B
/
B#
0 ''' B

B$ $B# 'B ' B


/
B%

0 % B

B% %B$ "#B# #%B #% B


/
B&
B# #B#
B$

En la expresin de la derivada segunda observamos que


por lo que:
mx 0 B /$ mx
ww

B#$

B#$

#
B# #B #
/$
$ # ###

& "

B$
#$
%

y, por tanto, el error en la frmula compuesta de los trapecios es

&

Para obtener seis cifras decimales exactas es necesario que

es decreciente en el intervalo [# $] ,

"
& "
"#8#
"
&
& " "!'
"#8#

'&#

Clculo Numrico
Pgina 98

Miguel Angel Cifredo Campos


macifredo@gmail.com

Utilizando la frmula compuesta de los trapecios es necesario sumar, al menos, 652


trminos para obtener seis cifras decimales exactas.
Una acotacin ms sencilla, pero bastante peor, de | 0 ww B | es:

mxB#$ B# #B #
B# #B #
&

B$
)
mnB#$ B

Con esta acotacin se obtendra 8

|0 ww B|

& $
/ "$
)

"!%".

Para la frmula compuesta de Simpson debemos acotar |0 MZ B|. Al ser, ahora, ms complicado,
acotaremos utilizando la tcnica anterior, es decir, acotar superiormente el numerador e inferiormente el
denominador.
mx B% %B$ "#B# #%B #% $$

mn B& $#

|0 MZ B|

$$ $
#! (
/ #! ( &
$#
")!8%

Para obtener seis cifras decimales exactas, ha de ser


&

#! (
"!'
")!8%

#!

Utilizando la frmula compuesta de Simpson se ha reducido a 20 (desde los 652 de la frmula


compuesta de los trapecios) el nmero de trminos necesarios para obtener seis cifras decimales exactas.

Ejercicio '': Se considera la integral ( /B % B.B:


"

1.Calcularla exactamente (se supone conocido el nmero / ).


2.Determinar el nmero mnimo de sumandos necesarios, en la frmula compuesta de
Simpson, para que el error de discretizacin sea menor que "!7 con 7 # $ % & y '.
3.Calcular la integral, por la frmula compuesta de Simpson, con cuatro cifras decimales exactas.
Solucin:

1.Integrando por partes se tiene:

? % B .? .B
" B
" B
B
B
'! / % B.B / % B '! / .B $/ % / %/ & & )($"#(
.@ /B .B @ /B
!
!
"

"

2.La frmula compuesta de Simpson es:


( 0 B.B
"

siendo 2

,+
,
8

2
0 + 0 , %M #T &
$

con &

, +&
mx 0 MZ B
")!8%
B+,

B3 + 23 (3 " 8 "),

M la suma de los valores de la funcin en los puntos B3 con 3

impar y T la suma de los valores de la funcin en los puntos B3 con 3 par.


Para determinar el mnimo nmero de sumandos necesarios para que el error sea menor que "!7
debemos acotar la derivada cuarta de la funcin en valor absoluto.
w

0 w B /B $ B 0 w w B /B # B 0 w w B /B " B

0 MZ B B/ B 0 MZ B / B B

se puede comprobar fcilmente que el valor mximo que toma es / en el punto B ".
Tenemos entonces que el error es
&

, +&
"
mx 0 MZ B
/
")!8%
")!8%
B+,

Clculo Numrico
Pgina 99

Miguel Angel Cifredo Campos


macifredo@gmail.com

Para que el error sea menor que "!7 se debe cumplir que 8%

7
"!7 /
% "! /
, es decir, 8
.
")!
")!

Dando valores a 7, y teniendo en cuenta que 8 ha de ser par, obtenemos:


7 # 8 " "!)& 8 #
7 $ 8 " *("$ 8 #
7 % 8 $ &!&& 8 %
7 & 8 ' #$$) 8 )
7 ' 8 "" !)& 8 "#

3.Para garantizar cuatro cifras decimales exactas (ver el apartado anterior) ha de ser 8 %. Entonces
2

,+
"
! #& y el soporte es {!; ! #&; ! &; ! (&; " }.
8
%

La frmula se convierte en:

! #&
0 ! 0 " %a0 ! #& 0 ! (&b #0 ! &
$

( 0 B.B
"

B
( / % B.B
"

y, por tanto,

! #&
% ) "&%)%&% % a% )"&!*&$ ' ))!#&!! b # & ((!&#%%
$

por lo que ( /B % B.B & )($" , con las cuatro cifras decimales exactas.
"

Ejercicio '( Probar que la frmula compuesta de los trapecios para el intervalo [! #1]:
(

#1

0 B .B
!

2
0 ! #0 2 #0 #2 #0 8 "2 0 #1 &,
#

donde

#1
8

integra, exactamente, las

funciones: " =/8B -9=B =/8#B -9=#B =/88 "B -9=8 "B
Solucin: Observemos, en primer lugar, que:
M5 (

N5 (

#1

para 5 ! "

=/8 5B .B !

La frmula compuesta de los trapecios es (

#1

-9= 5B .B

#1

0 B .B X8 &

! para 5 " #
#1 para 5 !

donde:

X8

2
0 ! #0 2 #0 #2 #0 8 "2 0 #1
#

Pero al ser 0 #1 0 !, podemos escribir:


X8

8"
2
#1 8" #1
"0 4
#0 ! #0 2 #0 8 "2 2 "0 42
#
8 4! 8
4!

Puesto que 0 B va a ser =/B -9=B estudiemos la sumatoria para 0 B /35B , es decir,
" /35
8"

#1 4
8

4!

" /3
8"

#1 4 5
8 .

4!

#1 5
Al tratarse de una suma geomtrica de razn < /3 8 . Dado que

<"

-9= #18 5 "


=/8 #18 5 !

por lo que si ! 5 8 se tiene

#1 5
! #1 %1 5 ! 8 #8
8

#1 4
/3 8 "
""
" /35 8
#1 5
!
#1 5
3
3
4!
/ 8 "
/ 8 "
8"

#185

Clculo Numrico
Pgina 100

Miguel Angel Cifredo Campos


macifredo@gmail.com

Adems, 5 ! " /35


8"

#1 4
8

4!

Por tanto:

X8 /358

#18
#1 .
8

X8 a=/8Bb M71X8 /358 ! para 5 ! " #

X8 a-9=Bb V/X8 /358

! para 5 " # 8 "


#1 para 5 !

que coinciden con los valores de las integrales.

Actividad Personal
A continuacin se proponen ejercicios tomados en certmenes anteriores y ejercicios propuestos para
ser resueltos a modo de autoevaluacin.
" Integre la siguiente funcin en forma analtica y numrica por medio de la regla trapezoidal Use 2
conveniente.
#B
( "& .B.
"

# Tomando 2 considerablemente pequeo determine el valor de la integral


!"
#!B"
.B
( B " # B" /
"

El valor real es ! '!##*(

$ Evale la integral de los siguientes datos tabulados con la regla Trapezoidal.


B
0 B

!
"

! "
(

! #
%

! $
$

! %
&

! &
#

% Por regla de Simpson evale la integral de los siguientes datos tabulados


B
0 B

$
"

"
%

"
*

$
#

&
%

(
#

*
'

""
$
B
( / .B
"

& Para 2 ! " calcule el valor aproximado y el error de la integral:

Clculo Numrico
Pgina 101

Miguel Angel Cifredo Campos


macifredo@gmail.com

Las ecuaciones diferenciales aparecen naturalmente al modelar situaciones fsicas en las ciencias
naturales, ingeniera, y otras disciplinas, donde hay envueltas razones de cambio de una o varias funciones
desconocidas con respecto a una o varias variables independientes.
Dichos modelos varan entre los ms sencillos que envuelven una sola ecuacin diferencial para una
funcin desconocida, hasta otros ms complejos que envuelven sistemas de ecuaciones diferenciales acopladas
para varias funciones desconocidas. Por ejemplo, la ley de enfriamiento de Newton, las leyes mecnicas que
rigen el movimiento de los cuerpos y las relaciones de equilibrio en sistemas contnuos, al ponerse en trminos
matemticos dan lugar a ecuaciones diferenciales.
Usualmente estas ecuaciones estan acompaadas de una condicin adicional que especifica el estado del
sistema en un tiempo o posicin inicial. Esto se conoce como la condicin inicial y junto con la ecuacin
diferencial forman lo que se conoce como el problema de valor inicial (p.v.i.).
Por lo general, la solucin exacta de un problema de valor inicial es imposible o difcil de obtener en
forma analtica (resolviendo la ecuacin algebraicamente). Por tal razn los mtodos numricos se utilizan para
aproximar dichas soluciones.
Esquemticamente, trabajaremos de la siguiente forma

(" Ecuaciones Diferenciales Ordinarias (E.D.O.)


Dada una ecuacin diferencial ordinaria de orden 8 y cualquier grado, cuya forma general es:
J \ ] ] w ] ww ] 8 !

(")

se establece en matemticas que en su solucin general deben aparecer 8 constantes arbitrarias. Entonces, puede
aceptarse que la solucin general de ((") es:
K ( \ , ] , G" , G # , , G 8 ) !

((#)

Grficamente esta ecuacin representa una familia de curvas planas, cada una de ellas obtenidas para
valores particulares de las 8 constantes, G" , G# , , G8 , como se ve en la Figura(":

Figura (" Familia de curvas soluciones de (1)

Clculo Numrico
Pgina 102

Miguel Angel Cifredo Campos


macifredo@gmail.com

Cada una de estas curvas corresponde a una solucin particular de la ecuacin diferencial ((" ) y
analticamente puede obtenerse sujetando la solucin general ((#) a 8 condiciones independientes que permiten
valuar las constantes arbitrarias.
Dependiendo de como se establezcan estas condiciones, se distinguen dos tipos de problemas: los
llamados de Valores Iniciales y los de Valores en la Frontera.
Un problema de valores iniciales est gobernado por una ecuacin diferencial de orden 8 y un conjunto
de 8 condiciones independientes todas ellas, vlidas para el mismo punto inicial. Si la ecuacin ( (") es la
ecuacin diferencial que define el problema, y \ + es el punto inicial, puede aceptarse que las 8 condiciones
independientes son:
8

] + ]! ] w + ]!w ] ww + ]!ww ] 8 + ]!

(($)

Se tratar de obtener una solucin particular de ((") que verifique (($) como en la Figura (#

Figura 7.2: Problema de valor inicial.

Por el contrario, en los problemas de valores en la frontera deben establecerse condiciones de frontera
en todos y cada uno de los puntos que constituyen la frontera del dominio de soluciones del problema. En
particular en el espacio de una dimensin, hay dos puntos frontera, por ejemplo, \ + y \ , , si el dominio
de soluciones es el intervalo cerrado + B , por esto mismo el orden mnimo de la ecuacin diferencial de un
problema de valores en la frontera ser dos como podemos observar en la Figura ($:

Figura ($ Problema de valores en la frontera.

Bsicamente la solucin numrica de ecuaciones diferenciales consiste en sustituir el dominio continuo


de soluciones por uno discreto formado por puntos aislados igualmente espaciados entre s.
As, en un problema de valores iniciales, el dominio de definicin de soluciones B
el conjunto infinito numerable de puntos,

+ se sustituye por

B! +, B" B! 2, B# B! #2 , B$ B! $2 ,
y en el caso de valores en la frontera se sustituye el intervalo + B , por el conjunto finito de puntos
B! +, B" B! 2, B# B! #2 , , B8 B! 82 ,
obtenidos, al dividir el intervalo en 8 partes iguales.

Figura (% Valores iniciales (4a) y Valores en la frontera (4b)

Clculo Numrico
Pgina 103

Miguel Angel Cifredo Campos


macifredo@gmail.com

Habindose discretizado el problema continuo, se tratar de obtener la solucin para los puntos
considerados, y esto se har, en general, sustituyendo las derivadas que aparezcan en la ecuacin diferencial con
condiciones iniciales o en la frontera, por frmulas numricas de derivacin que proporcionen aproximaciones a
las derivadas o tratando de integrar la ecuacin diferencial y reemplazando al proceso de integracin por una
frmula numrica que se aproxime a la integral.
Una vez hecho esto, la ecuacin obtenida expresada en diferencias finitas (ya que se han sustituido
diferenciales por incrementos finitos) se aplica repetidamente en todos los puntos pivotes donde se desconoce la
solucin para llegar a una solucin aproximada del problema.
(1.1 Existencia y Unicidad
Consideremos de ahora en adelante el problema de valor inicial (p.v.i.)
Cw B 0 B CB
CB! C!
B B! \

(%

donde C B! \ ser nuestra funcin a encontrar (y que sea derivable), 0 B! \ una


funcin dada en el problema e C! 8 conocido (nuestra condicin inicial).
Teorema (" Consideremos un dominio W # tal que al considerar dos puntos B C" B C# de l, el
segmento vertical formado por ellos pertenece a W; y, adems, sean (B C un punto interior y0 una funcin
continua en este dominio.Si 0 satisface la condicin de Lipschitz dbil)
0 B C" 0 B C# 5 C" C#

, a B C" , B C# W

para algn 5 !, entonces para un intervalo adecuado M B ! B ! existe una nica solucin del
p.v.i. (% definida en M
En adelante si la funcin `0
`C existe y es acotada en W, entonces la condicin dbil de Lipschitz se
satisface
y
por
consiguiente
la
existencia
y
unicidad
de
la
solucin
`0
en realidad basta tomar 5 mx `B B C
B CW

De esta manera, al dividir el intervalo B! \ introduciendo puntos equiespaciados B3 3 ! R y que


proporcionan valores aproximados C3 3 ! R lo que recibe el nombre de discretizacin), los llamados
mtodos numricos por paso nos dan una solucin aproximada de los valores exactos CB3 3 ! R .
Al pasar de un valor aproximado C3 al siguiente C3" recibe el nombre de paso de integracin, donde C3
e C3" aproximan a CB3 e CB3+1 , respectivamente.

Figura 7.5: Paso de integracin.

A continuacin daremos algunos mtodos sencillos por paso (catalogados en general como de paso
separado).
(2 Mtodo de Taylor
Es el mtodo ms sencillo y fcil de implementar (dentro de los de paso separado), el cual se basa en el
desarrollo en series de Taylor. Se requiere que la solucin CB sea 8 " veces continuamente diferenciable en
[B! \ y se consideran los puntos B3" B3 2 , para 3 ! 82 " 82 es tal que B82 \ B82"

Clculo Numrico
Pgina 104

Miguel Angel Cifredo Campos


macifredo@gmail.com

Mtodo de Taylor de orden 8


C3" C3 203
donde 03 0 B3 C3

.C

.B B3 C3

" # w
" 8 8"
2 03
2 03
#x
8x

03w 0 w B3 C3

(&

.0
`0
`0 .C
`0
`0
.2C

.B
`B
`C .B
`B
`C
.B2 B3 C3

Ejemplo (" Resolvamos por Taylor el p.v.i. siguiente:

Cw "# " BC #
C! "

, etc.

B ! "#

identificamos inmediatamente B! ! e C! CB! "


Apliquemos Taylor de segundo orden con 2 ! " y 2 ! !& ejercicio) para comparar los
resultados.
Aqu 0 B C "# " BC # y 03 0 B3 C3 "# " B3 C3# ; luego
0 w B C C C w

C#
C#
C
"
C
C#
C" B # "
B C C w C C w " B
C " BC w C " B " BC #
#
#
#
#
#
#
03w 0 w B3 C3

C3 #
C 3 " B3 # "
#

De esta forma, aplicando ((& obtenemos:


C3" C3 203
3 ! %

" # w
"
"
C#
2
2
2 03 C3 2 " B3 C3# 2 # 3 C 3 " B3 # " C3 C3# " B3 C3" B3# "
#x
#
#x
#
#
#

cuando 2 ! "

3 ! "!

cuando 2 ! !&

Construyamos una tabla para mostrar los resultados obtenidos para las aproximaciones C3 y
comparmoslas con los valores exactos de la solucin exacta (calculados)
CB

"
B B#
"
#
%

Para 3 ! C" C! ! !&C!# " B! ! !&C! " B! # "


" ! !&"# " ! ! !&"" !# "
" ! !&" ! !&# " ! !&" " " !&&
, anlogamente para los restantes
3
!
"
#
$
%
&

B3
!
! "
! #
! $
! %
! &

C3 ! "
"
" !&&
" "##&&"!"('&*$(
" #0640094640193
1,31205891970444
1,44793523610473

C3 ! !&
"

CB3 (valor exacto)


"
%!!
$(* ",!&&%!)*(!*('#&
"!!
)* " "#$&*&&!&'"(*)
%!!
$$" " #!)%&*#"%&!"&"
#&
"* " $"&()*%($')%#"
"'
"" " %&

Como podemos ver los clculos son simples pero muy tediosos, y eso que se trata de slo un orden dos.
Para evitar estos inconvenientes veremos mtodos que requieren slo de evaluaciones de la funcin 0 .
(3 Mtodos de Runge-Kutta
En estos mtodos ya no es necesario conocer los valores de C3 para conocer la aproximacin C3" de
CB3 , sino slo del valor de B3 .

Clculo Numrico
Pgina 105

Miguel Angel Cifredo Campos


macifredo@gmail.com

La ventaja de los mtodos de Runge-Kutta con respecto al uso de la serie de Taylor es que requieren
slo de la funcin 0 B C y de ninguna derivada. Esto hace que, en la prctica, la aplicacin de los mtodos de
Runge-Kutta sean ms simples que el uso de la serie de Taylor.
Todas las variaciones se pueden denotar en la forma generalizada de la ecuacin C3" C3 92
como C3" C3 9B3 C3 22 , donde 9B3 C3 22 es conocida como funcin incremento, la cual puede
interpretarse como una pendiente representativa sobre el intervalo. La funcin incremento se escribe por lo
general como
9 +" 5 " + # 5 # + 8 5 8

donde los +3 3 " 8 son constantes y los 53 3 " 8 son


5" 0 B3 C3
5# 0 B3 :" 2 C3 ;"" 5" 2
5$ 0 B3 :# 2 C3 ;#" 5" 2 ;## 5# 2

58 0 B3 :8" 2 C3 ;8"" 5" 2 ;8"8" 58" 2

Observe que los 53 3 " 8 son relaciones de recurrencia. Esto es, 5" aparece en la ecuacin para 5#, la
cual aparece en la ecuacin para 5$ , etc. Como cada 53 3 " 8 es una evaluacin funcional, esta recurrencia
hace que los mtodos Runge-Kutta sean eficientes para clculos en computador.
Es posible concebir varios tipos de mtodos Runge-Kutta al emplear diferentes nmeros de trminos en
la funcin incremento como la especificada por 8 . El mtodo Runge-Kutta (RK) de primer orden con 8 " es el
llamado mtodo de Euler.
(3" Mtodo de Euler
Consideremos el p.v.i. (% e integremos la ecuacin diferencial en
B3 B B3" B3 2 y evaluemos la integral aplicando la frmula de integracin numrica:
(

B3"
B3

Cw B.B (

el

intervalo

B3"

0 B CB.B
B3

obtenindo la expresin aproximada siguiente, que llamaremos Mtodo de Euler


Algoritmo

C3" C3 203

3 ! " #

('

Figura (' Interpretacin geomtrica del Mtodo de Euler, donde /3" es el error de truncamiento local.

Ejemplo (# Resolvamos el ejemplo anterior por este mtodo


Consideremos 2 ! " y 0 B3 C3 "# " B3 C3# para obtener
C3" C3 20 B3 C3 C3 ! " "# " B3 C3# C3 ! !&" B3 C3# C3 " ! !&" B3C3

Lo que al tabular nos da las soluciones aproximadas

Clculo Numrico
Pgina 106

Miguel Angel Cifredo Campos


macifredo@gmail.com

3
!
"
#
$
%
&

B3
!
! "
! #
! $
! %
! &

C3 ! "
"
" !&
" ""!'$(&
" ")%'%)%$*$)%$)
1,#(&)')*"%&!&#"
1,$)*)"()")&*&#'

CB3 valor exacto)


"
%!!
,

"
!&&%!)*(!*('#&
$(*
"!!
)* " "#$&*&&!&'"(*)
%!!
$$" " #!)%&*#"%&!"&"
#&
"* " $"&()*%($')%#"
"'
"" " %&

Clculo Numrico
Pgina 107

Miguel Angel Cifredo Campos


macifredo@gmail.com

(3"" Anlisis de Error para el Mtodo de Euler


La solucin numrica de las E.D.O. involucra dos tipos de error:
Errores de truncamiento (discretizacin), causados por la naturaleza de las tcnicas empleadas para aproximar
los valores de C.
Errores de redondeo, que son el resultado del nmero lmite de cifras significativas que puede retener un
computador
Los errores de truncamiento se componen de dos partes. La primera es un error de truncamiento local
que resulta de una aplicacin del mtodo en cuestin sobre un paso sencillo. La segunda es un error de
truncamiento propagado que resulta de las aproximaciones producidas durante los pasos previos.
Error global :

I3" 2 CB3" C3"

Ejemplo ($ Determinemos los errores globales cometidos en los ejercicios (" y (# 2 ! "
La siguiente tabla resume los errores cometidos en los mtodos de Taylor y de Euler
3
!
"
#
$
%
&

B3
!
! "
! #
! $
! %
! &

Mtodo de Taylor
C3 ! "
"
" !&&
" "##&&"!")
" #0'%!!*%'
",$"#!&)*#!
",%%(*$&#$'

Mtodo de Euler
C3 ! "
"
" !&
" ""!'$(&
" ")%'%)%$*
",#(&)')*"&
",$)*)"()"*

Valor exacto
CB3
"
",!&&%!)*("
" "#$&*&&!'
" #!)%&*#"&
" $"&()*%(%
" %&

E-G Taylor
I3 ! "
0
!,!!!%!)*("
!,!!"!%%%))
!,!!#!&)#')
!,!!$($!&&%
!,!!''"!#")

E-G Euler
I3 ! "
!,!!&%!)*("
!,!"#*&)!!'
!,!#$)"!((&
!,!$**#!&&*
!,!'%(#('$'

Qu puede concluir hasta este momento? Comente.


(3# Mtodos de Euler Mejorado y de Euler-Cauchy o de Heun (Runge-Kutta de segundo orden,
8 #)
El mtodo de Euler mejorado consiste en considerar el punto medio del intervalo [ B3 B3" , es decir,
como la muestra la figura ((

Figura (( Representacin grfica del Mtodo de Euler Mejorado

Algoritmo de Euler Mejorado

C3" C3 20 B3

2
2
C3 03
#
#

((

En cambio, Euler-Cauchy en vez de irse por la tangente que pasa por el punto B3 para determinar la
solucin en el siguiente punto pivote, se utiliza una secante con pendiente igual al promedio de pendientes de la
curva integral en los puntos coordenados (B3 C3 B3" C3" en donde B3" e C3" pueden estimarse con el
procedimiento normal de Euler

Clculo Numrico
Pgina 108

Miguel Angel Cifredo Campos


macifredo@gmail.com

Figura () Representacin grfica del Mtode de Euler-Cauchy o de Heun

Algoritmo de Euler-Cauchy o de Heun

C3" C3

2
a0 B3 C3 0 aB3 2 C3 203 bb
#

()

Ejemplo
(% Apliquemos Euler mejorado y Euler-Cauchy al
ejemplo anterior 2 ! "
"
((
03 0 B3 C3 " B3 C3# , entonces
#
Por ( ) y del hecho que
C3" C3 20 B3

2
2"
C3
" B3 C3#
#
##
#
"
2
2
C3 2 " B3 C3 " C3 C3#
#
#
%
C3

2
2
2
#
" B3 C3 " C3 C3
#
#
%

Anlogamente, de ()
2 "
"
2
#
#
" B3 C3 " B3 2C3 " B3 C3
# #
#
#
#

C3" C3

C3" C3 ! !#&" B3 C3# " B3 ! "aC3 ! !&" B3 C3# b


#

C3 ! !#&" B3 C3# " B3 ! "C3# a" ! !&" B3 C3 b#


C3 ! !#&C3# " B3 " B3 ! "a" ! !&" B3 C3 b#

C3 " ! !#&C3 " B3 " B3 ! "a" ! !&" B3 C3 b#

Lo que al tabular nos da (Euler Mejorado EM; Euler-Cauchy E-C)


3
!
"
#
$
%
&

B3
!
! "
! #
! $
! %
! &

EM
C3 ! "
"
" !&())"$
1,1#*%#&#
1,#"*!#&&
1,$$$$&('
1,%)$!)"'

E-C
C3 ! "
1,055318)
1,1233474
1,207931'
1,31475&!
1,452557&

Valor exacto
CB3
"
",!&&%!*!
" "#$&*&&
" #!)%&*#
" $"&()*&
" %&

Error EM
I3 ! "
!
0,002472$
0,0058297
0,0105663
0,017568"
0,0285361

Error E-C
I3 ! "
0
! !!!*!##
! !!!#%)"
! !!!&#('
! !!"!$%'
! !!"*))!

(3$ Runge-Kutta de orden mayor a dos


8 #
Los mtodos anteriores de segundo orden
sern exactos si la solucin de la ecuacin diferencial es
b2$ y el global es b2
En cambio,Adems,
en estos casos
de con
truncamiento
global
2$2 .cuadrtica.
como los
los errores
trminos
y mayores
$
%
2 y b2durante
, respectivamente.
son b
eliminados
la derivacin, el error de
En los
mtodos
de RK, el mtodo de exactitud se incrementa mediante el empleo de un mtodo de
truncamiento
local
es
integracin numrica de ms alto orden, la mayor exactitud implica que el resultado calculado es mas exacto y
que los errores se reducen con mayor rapidez al reducirse 2 , donde h es un intervalo de tiempo fijo que se utiliza
repetidamente.
(

(3$" Mtodos de Runge-Kutta de tercer orden.


Para 8 $, se puede hacer un desarrollo similar al del mtodo de segundo orden. El resultado de dicho
desarrollo es de seis ecuaciones con ocho incgnitas.
Por tanto, se debe especificar con antelacin los valores para las dos incgnitas con el fin de establecer
los parmetros restantes.

Clculo Numrico
Pgina 109

Miguel Angel Cifredo Campos


macifredo@gmail.com

Una versin comn que resulta es


C3" C3 "' 5" %5# 5$ 2

donde

(*

5" 0 B3 C3
"
"
5# 0 B3 2 C3 5" 2
#
#
5$ 0 B3 2 C3 5" 2 #5# 2

Los mtodos RK de tercer orden tienen errores local y global de b2% y b2$ respectivamente, y
dan resultados exactos cuando la solucin es una cbica. Al tratarse de polinomios, la ecuacin (* ser
tambin exacta cuando la ecuacin diferencial es cbica y la solucin es de cuarto orden.
(3$# Mtodos Runge-Kutta de cuarto orden.
Es ms popular de los mtodos RK es el de cuarto orden. La siguiente, es la forma de uso ms comn y,
por tanto, se le conoce como mtodo RK clsico de cuarto orden:
C3" C3 "' 5" #5# #5$ 5% 2
donde

("!

5" 0 B3 C3
5# 0 B3

2
"
C3 5" 2
#
#

5$ 0 B3

2
"
C3 5# 2
#
#

5% 0 B3 2 C3 25$

El mtodo RK de cuarto orden tiene similitud con el procedimiento de Heun en cuanto a que las
estimaciones mltiples de la pendiente son desarrolladas para alcanzar una pendiente promedio mejorada para el
intervalo. Cada una de las 53 3 " % representa una pendiente. La ecuacin ("! entonces representa un
promedio ponderado de stas para llegar a la pendiente mejorada como muestra la figura siguiente

Figura (* Las pendientes 53 corresponden a los valores de 0 B C en los puntos T3 3 " %

Ejemplo (& Apliquemos RK de orden cuatro al mismo ejemplo que hemos venido desarrollando
Solucin: Desarrollo por mesa en sala de clases!
(3$$ Mtodos de Runge-Kutta de orden superior
Donde se requiere resultados ms exactos, es recomendable el mtodo de Butcher ("*'%) y el mtodo
RK de quinto orden donde sus frmulas estn disponibles; pero en general, la ganancia en exactitud para
mtodos mayores de cuarto orden est afectada por el esfuerzo computacional y complejidad adicional. Estos
mtodos no los veremos, pero si pueden ser consultados en la bibliografa.

Clculo Numrico
Pgina 110

Miguel Angel Cifredo Campos


macifredo@gmail.com

(4 Ejercicios
Ejercicio (" Consideremos la cada libre de un paracaidista desde un rascacielos. Este situacin nos lleva a
<+
plantear el p.v.i siguiente:
@w g @
7
@! !
, donde @ es la rapidez que adquiere el paracaidista en la cada, 7 es la masa del mismo, g es la aceleracin de
gravedad, <+ es el coeficiente de resistencia al aire y >! ! es el instante en que el paracaidista salta. Resuelva
51
por el mtodo de Taylor el problema del paracaidista, considerando g * ) 7
=# , 7 (& 51. y <+ "# % = Use
2 ! "
Solucin: Para los datos en particular, el p.v.i. queda de la forma
@w * )
@! !

"# %)
@
(&

@w * ) ! "''%@
@! !

Luego, aplicando (& nos queda

03w

@3"

@3"

03 0 >3 @3 * ) ! "''%@3

! "''%@3w

! "''%* ) ! "''%@3
2#
@3 2* ) ! "''% @3 ! "''%* ) ! "''%@3
#
2
@3 2* ) ! "''% @3 " ! "''%
#

Para 3 !

@" @! ! "* ) ! "''% @! " ! !& ! "''% ! " * ) ! **"') ! *(")%'%

Para 3 "

@# @" ! " ! **"')* ) ! "''% @" ! *(")%'% ! !**"')* ) ! "''% ! *(")%'% " *#('&&)

Para 3 #

@$ @# ! !**"')* ) ! "''% @# " *#('&&) ! !**"')* ) ! "''% " *#('&&) # )'('*#*

Resumiendo en una tabla:


3
!
"
#
$
%
&
(!

>3
!
! "
! #
! $
! %
! &
(

@3
!
! *(")%'%
" *#('&&)
# )'('*#*

@>3
!
! *(")*"%
! *#((%%%
# )'()#$'

I3 ! "
!

%! &#!""""

Ejercicio (# Aplique el mtodo de Taylor al p.v.i


Cw BC#
C# "

# B $ , usando 2 ! " y 2 ! !&

Solucin: Las siguientes tablas muestran las aproximaciones para los distintos 2w s
2 ! "
3
!
"
#
$
%
&
'
(
)
*
"!

B3
# !
# "
# #
# $
# %
# &
# '
# (
# )
# *
$ !

C3 ! "
" !!!!
! )$&!
! ("!)
! '"%&
! &$)!
! %('"
! %#&!
! $)#$
! $%'#
! $"&$
! #))'

I3 ! "
! !!!!
! !!&"
! !!'&
! !!''
! !!'"
! !!&&
! !!%*
! !!%$
! !!$(
! !!$$
! !!#*

CB3
" !!!!
! )#**
! (!%#
! '!(*
! &$"*
! %(!'
! %#!#
! $()"
! $%#&
! $"#!
! #)&(

Clculo Numrico
Pgina 111

Miguel Angel Cifredo Campos


macifredo@gmail.com

2 ! !&
3
!
"
#
$
%
&
'
(
)
*
"!

B3
# !
# "
# #
# $
# %
# &
# '
# (
# )
# *
$ !

C3 ! !&
" !!!!
! )$"!
! (!&'
! '!*$
! &$$#
! %(")
! %#"#
! $(*!
! $%$$
! $"#(
! #)'#

I3 ! !&
! !!!!
! !!""
! !!"%
! !!"%
! !!"$
! !!"#
! !!"!
! !!!*
! !!!)
! !!!(
! !!!'

Ejercicio ($ Utilize el mtodo de Euler para aproximar la solucin al problema de valor inicial
C w C ># "
C! ! &
! > # Use 2 ! #
Solucin: Tenemos que 0 > C C ># " , es decir, 03 0 B3 C3 C3 ># " Con la ecuacin del mtodo de
Euler:
C3" C3 ! #C3 >#3 " " #C3 ! #>3# ! #

tabla

3
!
"
#
$
%
&
'
(
)
*
"!

Ejercicio (% Dado el p.v.i. :

>3
!
! #
! %
! '
! )
" !
" #
" %
" '
" )
# !

, lo que nos da la siguiente

C3 ! #
! &
! )
" "&#
" &&!%
" *))%)
# %&)"('
# *%*)""#
$ %&"(($%%
$ *&!"#)"#)
% %#)"&$(&$'
% )'&()%&!%$

C w >/$> #C
C! !
!>"

a) Aplique el mtodo de Euler para aproximar la solucin del p.v.i. Use 2 ! &
b) Compare los resultados con la soluccin exacta.
Solucin:
a) Dado que 0 > C >/$> #C 03 >3 /$>3 #C3 entonces
C3" C3 203 C3 2>3 /$>3 #C3
Para 3 !
Para 3 "

C" ! &!/$! !
$!&
C# ! &! &/
#! " "#!%###'(&

luego, tabulando obtenemos


3
!
"
#

>3
!
! &
" !

C3 ! &
!
!
" "#!%###'(&

Clculo Numrico
Pgina 112

Miguel Angel Cifredo Campos


macifredo@gmail.com

b) A continuacin se da la solucin real al problema del valor inicial de este ejercicio:


C> "& >/$>

" $>
#& /

" #>
#& /

Para 3 ! C>! "& >! /$>!

" $>!
#& /

" #>!
#& /

Para 3 " C>" "& >" /$>"

" $>"
#& /

" #>"
#& /

&" ! &/$!&
Para 3 # C>#

"
$>#
& ># /

" $>#
#& /

"
$!
& " !/

" $!&
#& /

" #!&
#& /

! #)$'"'&#")'(

" #>#
#& /

" $!
#& /

" #!
#& /

$ #"*!**$"*!%

Tabulando ambos resultados y calculando el error global nos queda:


3
"
#

>3
! &
" !

Ejercicio (& Para el p.v.i.

C3 ! &
!
" "#!%###'(&)

C>3
! #)$'"'&#")'
$ #"*!**$"*!%

Cw " > C#
C# "
#>$

I3 ! "
! #)$'"'&#")'
# !*)'((!&"%'

2 ! &

a) Aplique el mtodo de Euler para aproximar las soluciones.


b) Compare la solucin real con la solucin por el mtodo de Euler.
Solucin:
a) Sabemos que la ecuacin del mtodo de Euler es:
C3" C3 ! &a" >3 C3 # b

Para 3 ! C" #
Para 3 " C# # '#&
Resumen:
3
!
"
#

>3
#
# &
$ !

C3
!
#
# '#&

b) A continuacin se da la solucin real al p.v.i. :


C> >

"
"
C>3 >3
">
" >3

Tabulando los resultados tenemos:


3
!
"
#

>3
#
# &
$ !

C3 ! &
!
#
# '#&

C>3
"
" )$$
# &

I3 ! "
"
! "'(
! "#&

Ejercicio (' Usando 2 ! #& aplique el mtodo de Euler mejorado y Euler-Cauchy para aproximar la
solucin del siguiente p.v.i.:
Cw "
C" #

Resumen:

0
1
2
3
4

1
1 25
1 50
1 75
2

C
>

">#

2
2 75
3 55
4 3916667
5 2690476

Clculo Numrico
Pgina 113

Miguel Angel Cifredo Campos


macifredo@gmail.com

La solucin real al problema del valor inicial de este ejercicio: C> >68> #>
Compare la solucin real con la solucin por el mtodo de Euler:
Comparacin:
i
3
>
1
1 25
2
1 50
3
1 75
4
2 00

C3
2 75
3 55
4 3916667
5 2690476

C>3

I>3

2 7789294
3 6081977
4 4793276
5 3862944

0 0289294
0 0581977
0 0876609
0 1172468

Ejercicio (( Aplique el mtodo de Euler mejorado y Euler-Cauchy para aproximar la solucin de la siguiente
ecuacin diferencial para cada uno de ellos use 2 ! " y ! !&:
C w BC #
C# "

B # $

Solucin:
Euler Mejorado: De acuerdo a (( la expresin a utilizar en el mtodo de Euler mejorado corresponde a:
C3" C3 2B3

2
2
# #
C3 # B3 23 , donde B! # e C! "
#

Luego, resumiendo en una tabla para 2 ! " y 2 ! !& obtenemos


2 ! "
3
!
"
#
$
%
&
'
(
)
*
"!

B3
# !
# "
# #
# $
# %
# &
# '
# (
# )
# *
$ !

C3 ! "
" !!!!
! )$$*&!
! (!*%'%
! '"$"**
! &$')&*
! %(&!&"
! %#%"$'
! $)"&('
! $%&&&&
! $"%($(
! #))"#"

I3 ! "
! !!!!
! !!%!(%
! !!&#$)
! !!&#*'
! !!%*%%
! !!%%'$
! !!$*'(
! !!$&!&
! !!$!)*
! !!#(#%
! !!#%!'

2 ! !&
3
!
"
#
$
%
&
'
(
)
*
"!

B3
# !
# "
# #
# $
# %
# &
# '
# (
# )
# *
$ !

C3 ! !&
" !!!!
! )$!(&)
! (!&$'"
! '!*!&$
! &$#**#
! %("&'$
! %#"!$(
! $())%"
! $%$"%&
! $"#'"$
! #)'#%'

CB3
" !!!!
! )#*)('
! (!%##&
! '!(*!$
! &$"*"&
! %(!&))
! %#!"')
! $()!(#
! $%#%''
! $"#!"#
! #)&("%

I3 ! !&
! !!!!
! !!!))$
! !!""$'
! !!""&"
! !!"!((
! !!!*(%
! !!!)'*
! !!!('*
! !!!')!
! !!!'!!
! !!!&$#

Euler-Cauchy o Heun: TAREA!

Clculo Numrico
Pgina 114

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio () Sea el p.v.i siguiente:

C w -9=#> =/8$>
C! "
! > " (> en radianes) Considerando

2 ! #& obtenga la solucin aproximada del p.v.i usando:


a) Taylor
b) Euler
c) Euler mejorado
d) Euler-Cauchy
Solucin:
a) Tarea!
b)

La tabla siguiente resume el problema al aplicar Euler


3
!
"
#
$
%

>3
!
! #&
! &!
! (&
" !!

C3 ! #&
"
" #&
" '$*)!&$
# !#%#&%'
# #$'%&(#

C>3
"
" $#*"%*)
" ($!%)*)
# !%"%("*
# ""(*(*&

I3 ! #&
!
! !(*"%*)
! !*!')%&
! !"(#"($
! "")%(((

c) y d) Tarea!
Ejercicio (* Implemente en algn lenguaje computacional el mtodo de Euler y aplquelo al p.v.i.:
&C
C
>"
C! " ! > % usando 2 ! # y considerando que la solucin
Cw

exacta es C> > "& />


Solucin: La implementacin en MATLAB del mtodo de Euler es relativamente simple. Hacemos esto
mediante una subrutina llamada feuler que recibe en la secuencia de llamada el nombre de la subrutina que
calcula la funcin 0 , y los datos >! e C! . Esta subrutina devuelve dos vectores con las >w = y las C w = aproximadas.
Veamos:
function [tvals,yvals]=feuler(0 ,>! ,C! )
tvals zeros(",3 ");
yvals zeros(",3 ");
index [0:1:3];
tvals >! 2index;
yvals(") C! ;
for 5 # 3 "
yvals(3) yvals(5 ") 2feval(0 ,tvals(5 "),yvals(5 "));
end
Usamos ahora esta subrutina en el p.v.i. propuesto y observamos que las aproximaciones numricas no
coinciden con la solucin exacta y que el error aumenta segn aumenta la >. Esto es lo usual y no contradice el
estimado del error. Para controlar el error lo primero que se hace es disminuir la 2. Para este ejercicio mostramos
los resultados de disminuir 2 sucesivamente para la aproximacin de C% &( #$'% a las cifras mostradas.
Obtuvimos lo siguiente:
3
#!
%!
)!
"'!
$#!
'%!
"#)!
#&'!

C3
%# %(#$
%) $%%&
&# #)%#
&% '"!)
&& ))#(
&' &%))
&' ))**
&( !'#%

I3 ! #
"% ('%!
) )*")'
% *&#"&
# '#&&'
" $&$'&
! ')(&#(
! $%'&!$
! "($*%&

Clculo Numrico
Pgina 115

Miguel Angel Cifredo Campos


macifredo@gmail.com

Vemos aqu que definitivamente la aproximacin mejora segn disminuye 2 pero la convergencia es
bastante lenta. De hecho la aproximacin numrica tiene apenas un error relativo de $ "!$ para 3 #&'!, es
decir, 2 % "!%
Obserbacin:
Este ejercicio muestra que aunque el mtodo de Euler es convergente segn 2 tiende a cero, la
convergencia del mtodo puede ser muy lenta, requiriendo un 2 excesivamente pequeo para un error
satisfactorio en las aproximaciones. Al usar un 2 excesivamente pequeo en los clculos podemos tener
acumulacin de errores debido a la aritmtica finita.
Ejercicio ("! Considere el p.v.i.

C w &!C
C" !

" > "!

cuya solucin exacta es C> !. Resuelva el p.v.i:


a) usando algn mtodo que d una buena aproximacin (use 2 ! !&
b) con la condicin inicial cambiada a C" "!% , usando 2 ! !& con el mismo mtodo

que us en a).

Solucin: La resolucin queda de TAREA.


Ejercicio ("" Utilice Runge-Kutta de cuarto orden para resolver el p.v.i.
Cw BC #
C# "

# B $ usando 2 ! " y 2 ! !&

Solucin: De ("! las expresiones seran:


5" B3 C3#

5# B3

2
2
C3 5"
#
#
#
2
2
5$ B3 C3 5#
#
#
5% B3 2C3 25$ #
#

Como B! # e C! " obtenemos los resultados siguientes

2 ! "

3
!
"
#
$
%
&
'
(
)
*
"!

B3
# !
# "
# #
# $
# %
# &
# '
# (
# )
# *
$ !

C3 ! "
" !!!!00
! )#*))&
! (!%#$(
! '!(*"%
! &$"*#%
! %(!&*'
! %#!"(&
! $()!()
! $%#%("
! $"#!"(
! #)&(")

I3 ! "
! !!!!!!
! !!!!"!
! !!!!""
! !!!!""
! !!!!!*
! !!!!!)
! !!!!!(
! !!!!!'
! !!!!!&
! !!!!!%
! !!!!!%

2 ! !&

3
!
"
#
$
%
&
'
(
)
*
"!

B3
# !
# "
# #
# $
# %
# &
# '
# (
# )
# *
$ !

C3 ! !&
" !!!!!!
! )#*)('
! (!%##'
! '!(*!$
! &$"*"&
! %(!&))
! %#!"')
! $((!(#
! $%#%''
! $"#!"$
! #)&("%

I3 ! !&
! !!!!!!
! !!!!!"
! !!!!!"
! !!!!!!
! !!!!!!
! !!!!!!
! !!!!!!
! !!!!!!
! !!!!!!
! !!!!!!
! !!!!!!

CB3
" !!!!
! )#*)('
! (!%##&
! '!(*!$
! &$"*"&
! %(!&))
! %#!"')
! $()!(#
! $%#%''
! $"#!"#
! #)&("%

Clculo Numrico
Pgina 116

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio ("2 La ecuacin diferencial que modela el proceso de desintegracin de un material radioactvo esta
dada por:
Bw 5B
B! B!
, donde 5 es una constante
caracterstica del istopo radiactivo. Para B! &! y 5 ! !& resuelva este p.v.i. en el intervalo [! "!] con
2 ! " y 2 ! !"
a) por Euler mejorado
b) por Runge-Kutta
c) compare sus resultados con la solucin exacta que es B> &!/!!&> .
Solucin: Queda de TAREA!
Ejercicio ("$ El comportamiento de un circuito elctrico cambia significativamente dependiendo de los
valores de los componentes empleados; as, en el circuito que se muestra a continuacin , la inductancia
P &!7L , una resistencia V #!ohms y una fuente de voltaje de I "!Z . Entonces, si se cierra el
interruptor en un > ! la corriente M> satisface la ecuacin diferencial
.M >
VM> I
.>
M! !
P

Se necesita encontrar el valor de la corriente para ! > ! !# (en segundos) . mediante el mtodo de
RK4 con 2 ! !!!".

Solucin: Queda de TAREA!


Indicacin: Implemente un programa que resuelva este problema y considere el hecho de que el p.v.i. puede ser
escrito de la forma:
.M
V
I
donde 0 > M M
0 > M
.>
P
P
Ejercicio ("% Determine por RK% las aproximaciones para la funcin CB que sea solucin del p.v.i.
siguiente:
Cw #BC
C" " Determine C" &, usando 2 ! " y comprelo con la
solucin real aproximada CB& $ %*!$%#
Solucin: La tabla siguiente resume los clculos
3
!
"
#
$
%
&

B3
" !
" "
" #
" $
" %
" &

5"
! #
! #("%"
! $(#'&
! &")$'
! ($"#'
" !%(!'

5#
! #$"
! $"%*'
! %$%(&
! '!)#(
! )'$%"
" #%%#'

5$
! #$%#'
! $"**(
! %%#&#
! '#!%"
! ))#&(
" #(%)$

5%
! #("&%
! $(#)(
! &")('
! ($"*&
" !%)#'
" &#%)"

C3
" !!!!!
" #$$'(
" &&#(!
" **$'*
# '""'$
$ %*!#"

CB3
" !!!!!
" #$$')
" &&#("
" **$(#
# '""'$
$ %*!$%

I3 ! "
!
! !!!!"
! !!!!"
! !!!!$
! !!!!!
! !!!"$

Clculo Numrico
Pgina 117

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio ("& Sea el p.v.i.:

C w %/!)B ! &C
C! #

B !; ! &

Para 2 ! & resuelva el problema


a) por Heun
b) por medio de RK4
c) Grafique los errores grobales respectivos versus los respectivos Bw =
Solucin: TAREA!

Actividad Personal
A continuacin se proponen ejercicios tomados en certmenes anteriores y ejercicios propuestos para
ser resueltos a modo de autoevaluacin.
" Resuelva el p.v.i. por Taylor 2 ! &
C w CB# " #C
C! "

B !; #

# Por Euler resuelva 2 ! "

Cw " BC
C! "

B !; "

$ Determine la solucin del p.v.i , por Euler Mejorado 2 ! "


Cw C=/8# >
C! "

B !; $

% Use Euler-Cauchy para determinar la solucin del p.v.i. 2 ! &


C
"B
C! #
Cw

B " & # &

& Para el p.v.i. siguiente resuelvalo por RK% 2 ! "


C w B# C
C " "

B "; "

Clculo Numrico
Pgina 118

Miguel Angel Cifredo Campos


macifredo@gmail.com

CALCULO

Miguel Angel Cifredo Campos


macifredo@gmail.com

Indice general

1. Campos Num
ericos

1.1. El n
umero real . . . . . . . . . . . . . . . . . . . . . . . . . .

1.1.1. Desigualdades . . . . . . . . . . . . . . . . . . . . . . .

1.1.2. Valor absoluto de un n


umero real . . . . . . . . . . . .

1.2. El n
umero complejo . . . . . . . . . . . . . . . . . . . . . . .

1.2.1. Aritmetica de los n


umeros complejos . . . . . . . . . .

1.2.2. M
odulo y argumento de un n
umero complejo . . . . .

1.2.3. Races enteras de un n


umero complejo . . . . . . . . .

11

1.2.4. Exponencial compleja y Logaritmo complejo

. . . . .

12

1.3. Problemas adicionales . . . . . . . . . . . . . . . . . . . . . .

12

2. Sucesiones Num
ericas

15

2.1. Sucesiones reales. Subsucesiones . . . . . . . . . . . . . . . . .

16

2.2. Sucesiones mon


otonas . . . . . . . . . . . . . . . . . . . . . .

18

2.3. Sucesiones acotadas . . . . . . . . . . . . . . . . . . . . . . .

22

2.4. Sucesiones convergentes . . . . . . . . . . . . . . . . . . . . .

24

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.5. C
alculo de lmites . . . . . . . . . . . . . . . . . . . . . . . . .

30

2.6. Infinitesimos

. . . . . . . . . . . . . . . . . . . . . . . . . . .

36

2.7. Infinitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

38

2.8. Problemas adicionales . . . . . . . . . . . . . . . . . . . . . .

40

3. Series Num
ericas

43

3.1. Series reales . . . . . . . . . . . . . . . . . . . . . . . . . . . .

44

3.2. Criterios de convergencia

. . . . . . . . . . . . . . . . . . . .

51

3.2.1. Series de terminos positivos . . . . . . . . . . . . . . .

53

3.2.2. Series alternadas . . . . . . . . . . . . . . . . . . . . .

62

3.3. Convergencia absoluta y condicional . . . . . . . . . . . . . .

64

3.4. Sumaci
on de series . . . . . . . . . . . . . . . . . . . . . . . .

68

3.5. Problemas adicionales . . . . . . . . . . . . . . . . . . . . . .

74

4. Series de Potencias

77

4.1. Radio de convergencia . . . . . . . . . . . . . . . . . . . . . .

78

4.2. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . .

84

4.3. Desarrollo de funciones en serie de potencias . . . . . . . . . .

87

4.3.1. Desarrollos de Taylor . . . . . . . . . . . . . . . . . . .

88

4.3.2. Otros desarrollos . . . . . . . . . . . . . . . . . . . . .

93

4.4. Problemas adicionales . . . . . . . . . . . . . . . . . . . . . .

97

5. Funciones de varias variables

101

5.1. Representaci
on de funciones . . . . . . . . . . . . . . . . . . . 103
ii

Miguel Angel Cifredo Campos


macifredo@gmail.com

5.2. Funciones vectoriales . . . . . . . . . . . . . . . . . . . . . . . 108


5.3. Lmites y continuidad . . . . . . . . . . . . . . . . . . . . . . 109
5.3.1. Lmites . . . . . . . . . . . . . . . . . . . . . . . . . . 110
5.3.2. Funciones continuas . . . . . . . . . . . . . . . . . . . 115
5.4. Problemas adicionales . . . . . . . . . . . . . . . . . . . . . . 118
6. Funciones diferenciables

120

6.1. Derivadas parciales . . . . . . . . . . . . . . . . . . . . . . . . 121


6.1.1. La diferencial . . . . . . . . . . . . . . . . . . . . . . . 126
6.1.2. Planos tangentes . . . . . . . . . . . . . . . . . . . . . 130
6.1.3. Matriz Jacobiana . . . . . . . . . . . . . . . . . . . . . 136
6.2. Derivadas direccionales . . . . . . . . . . . . . . . . . . . . . . 136
6.3. Derivadas parciales de orden superior . . . . . . . . . . . . . . 139
6.4. Regla de la cadena . . . . . . . . . . . . . . . . . . . . . . . . 142
6.5. Problemas adicionales . . . . . . . . . . . . . . . . . . . . . . 145
7. Teoremas del c
alculo diferencial

148

7.1. Teorema del valor medio . . . . . . . . . . . . . . . . . . . . . 148


7.2. Teorema de Taylor . . . . . . . . . . . . . . . . . . . . . . . . 154
7.3. Teorema de la Funcion Inversa . . . . . . . . . . . . . . . . . 156
7.4. Teorema de la Funcion Implcita . . . . . . . . . . . . . . . . 158
7.5. Problemas adicionales . . . . . . . . . . . . . . . . . . . . . . 162
8. Extremos

166
iii

Miguel Angel Cifredo Campos


macifredo@gmail.com

8.1. Extremos libres . . . . . . . . . . . . . . . . . . . . . . . . . . 166


8.2. Extremos condicionados . . . . . . . . . . . . . . . . . . . . . 171
8.2.1. Metodo de reduccion de variables . . . . . . . . . . . . 172
8.2.2. Metodo de multiplicadores de Lagrange . . . . . . . . 174
8.3. M
aximos y mnimos absolutos . . . . . . . . . . . . . . . . . . 179
8.4. Problemas adicionales . . . . . . . . . . . . . . . . . . . . . . 185
9. Integraci
on

187

9.1. Definiciones b
asicas . . . . . . . . . . . . . . . . . . . . . . . . 188
9.1.1. Integral superior e inferior de Darboux . . . . . . . . . 190
9.1.2. Teorema de caracterizacion . . . . . . . . . . . . . . . 191
9.2. Propiedades de la Integral . . . . . . . . . . . . . . . . . . . . 191
9.2.1. Reglas de integracion y Teorema del Valor Medio . . . 191
9.2.2. Funci
on integral. Regla de Barrow. . . . . . . . . . . . 192
9.2.3. Integraci
on por partes y sustitucion . . . . . . . . . . 195
9.3. Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
9.4. Problemas adicionales . . . . . . . . . . . . . . . . . . . . . . 205
10.Integrales dobles y triples

207

10.1. Integrales dobles sobre rectangulos . . . . . . . . . . . . . . . 208


10.1.1. C
alculo de integrales dobles . . . . . . . . . . . . . . . 211
10.1.2. Integrales dobles sobre recintos acotados . . . . . . . . 213
10.1.3. C
alculo de areas . . . . . . . . . . . . . . . . . . . . . 219

iv

Miguel Angel Cifredo Campos


macifredo@gmail.com

10.2. Integrales triples . . . . . . . . . . . . . . . . . . . . . . . . . 224


10.2.1. Integraci
on sobre recintos acotados . . . . . . . . . . . 226
10.3. Cambio de variable . . . . . . . . . . . . . . . . . . . . . . . . 228
10.4. Problemas adicionales . . . . . . . . . . . . . . . . . . . . . . 242
Tabla de primitivas

244

Bibliografa

248

Miguel Angel Cifredo Campos


macifredo@gmail.com

Indice de figuras
1.1. Representaci
on cartesiana de un n
umero complejo. . . . . . .

1.2. M
odulo y argumento de un n
umero complejo. . . . . . . . . .

2.1. Representaci
on gr
afica de una sucesion . . . . . . . . . . . . .

17

2.2. Sucesi
on decreciente . . . . . . . . . . . . . . . . . . . . . . .

19

2.3. Sucesi
on creciente

19

. . . . . . . . . . . . . . . . . . . . . . . .

2.4. Sucesi
on acotada |an | M

. . . . . . . . . . . . . . . . . . .

23

2.5. Sucesi
on convergente . . . . . . . . . . . . . . . . . . . . . . .

26

2.6. Sucesi
on divergente . . . . . . . . . . . . . . . . . . . . . . . .

26

4.1. Aproximaci
on a ex por su serie de potencias . . . . . . . . . .

78

5.1. Secci
on transversal con x fija . . . . . . . . . . . . . . . . . . 103
5.2. Curvas de nivel de z = 4 x y . . . . . . . . . . . . . . . . 105
5.3. Curvas de nivel de z = x2 + y 2 . . . . . . . . . . . . . . . . . 105
5.4. Superficies de nivel de x2 + y 2 + z 2
5.5. Superficies de nivel de

x2

|z|
+ y2

vi

. . . . . . . . . . . . . . 106

. . . . . . . . . . . . . . . . . 107

Miguel Angel Cifredo Campos


macifredo@gmail.com

5.6. Campo vectorial . . . . . . . . . . . . . . . . . . . . . . . . . 109


1
5.7. Gr
afica de sin( ) . . . . . . . . . . . . . . . . . . . . . . . . . 114
x
6.1. Interpretaci
on geometrica de la derivada parcial . . . . . . . . 124
6.2. El gradiente es perpendicular a las curvas de nivel . . . . . . 132
6.3. Plano tangente . . . . . . . . . . . . . . . . . . . . . . . . . . 134
6.4. Interpretaci
on geometrica de la derivada direccional . . . . . 137
8.1. Tipos de extremos . . . . . . . . . . . . . . . . . . . . . . . . 169
8.2. Gr
afica de z = x5 y + xy 5 + xy. . . . . . . . . . . . . . . . . . 170
8.3. Gr
afica de z = x2 y . . . . . . . . . . . . . . . . . . . . . . . . 178
8.4. Extremos de la funcion restringida . . . . . . . . . . . . . . . 179
8.5. Extremos en un recinto triangular . . . . . . . . . . . . . . . 183
9.1. Sumas superior e inferior . . . . . . . . . . . . . . . . . . . . . 188
9.2. Suma para los puntos medios . . . . . . . . . . . . . . . . . . 189

9.3. Area
entre dos curvas . . . . . . . . . . . . . . . . . . . . . . 199

9.4. Area
entre dos curvas que se cortan . . . . . . . . . . . . . . . 200
9.5. S
olido de revoluci
on generado por una cicloide

. . . . . . . . 203

10.1. Mallado para la aproximacion del area . . . . . . . . . . . . . 207


10.2. Una partici
on del rectangulo R = [a, b] [c, d] . . . . . . . . . 208
10.3. Sumas de Riemann . . . . . . . . . . . . . . . . . . . . . . . . 209
10.4. El teorema de Fubini . . . . . . . . . . . . . . . . . . . . . . . 212

vii

Miguel Angel Cifredo Campos


macifredo@gmail.com

10.5. Recinto acotado y funcion caracterstica . . . . . . . . . . . . 213


10.6. Algunos dominios de tipo I . . . . . . . . . . . . . . . . . . . 214
10.7. Integraci
on sobre una region de tipo I . . . . . . . . . . . . . 215
10.8. Algunos dominios de tipo II . . . . . . . . . . . . . . . . . . . 216
10.9. Integraci
on sobre una region de tipo II . . . . . . . . . . . . . 217
10.10.Un tri
angulo como region de tipo I y II . . . . . . . . . . . . 218

10.11. Area
entre dos gr
aficas . . . . . . . . . . . . . . . . . . . . . 220

10.12. Area
entre dos gr
aficas . . . . . . . . . . . . . . . . . . . . . 222
10.13.Disco unidad . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
10.14.Volumen de un tetraedro . . . . . . . . . . . . . . . . . . . . 227
10.15.Un anillo circular . . . . . . . . . . . . . . . . . . . . . . . . 229
10.16.Integraci
on en coordenadas polares . . . . . . . . . . . . . . 230
10.17.Volumen de un cilindro circular . . . . . . . . . . . . . . . . 231
10.18.Una rosa de cuatro petalos . . . . . . . . . . . . . . . . . . . 232
10.19.Disco unidad . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
10.20.Coordenadas cilndricas . . . . . . . . . . . . . . . . . . . . . 237
10.21.Integraci
on sobre un semicono . . . . . . . . . . . . . . . . . 238
10.22.Coordenadas esfericas . . . . . . . . . . . . . . . . . . . . . . 240

viii

Miguel Angel Cifredo Campos


macifredo@gmail.com

Pr
ologo
El presente manual pretende proporcionar a los estudiantes de primer curso de ingeniera un texto de consulta sobre una parte de los fundamentos
matem
aticos de c
alculo diferencial e integral. Destinado, en principio, a estudiantes de las ingenieras informaticas, los contenidos se estructuran en tres
grandes bloques: una primera parte, Captulos 1 al 4, dedicada al estudio de
la parte discreta del c
alculo; es decir, las sucesiones y las series numericas;
una parte central, Captulos 5 al 9, con el estudio del calculo diferencial de
funciones de varias variables reales y una parte final, Captulos 11 y 12, dedicada al estudio del c
alculo integral en una y varias variables. Queda claro
en estos contenidos que el calculo diferencial de funciones de una variable
real es prerrequisito imprescindible para abordar la lectura de este volumen.
Este conocimiento se supone conocido de los cursos previos al acceso a la
universidad. No obstante, en la bibliografa aparecen varios textos donde el
estudiante interesado podra consultar y repasar los resultados basicos del
c
alculo en una variable, si ello fuere necesario.
Los captulos que conforman el manual, siguen una estructura de introducci
on de conceptos te
oricos con ejemplos resueltos de aplicacion, donde el
estudiante pueda y, seguramente, deba observar la metodologa empleada en
su resoluci
on y cuestionarse el porque de dicha metodologa, como base para su aprendizaje. Posteriormente, se presenta algunos ejercicios adicionales
para que el alumno pueda practicar la metodologa aprendida y profundizar en el conocimiento de las nociones desarrolladas. Tambien se incluye, al
final de cada captulo, algunos ejercicios adicionales de dificultad variable
destinados tanto a reforzar lo aprendido, como a estimular la b
usqueda de
soluciones alternativas.
Pensado en gran medida como material de apoyo para las clases semipresen-

ix

Miguel Angel Cifredo Campos


macifredo@gmail.com

ciales, este manual contribuye a dotar al estudiante de unos apuntes de clase


que, en ning
un caso, debera substituir el uso de otros textos mucho mas elaborados y que se rese
nan al final. La estructura de este texto esta dirigida,
principalmente, a que pueda servir al estudiante para su trabajo fuera del
aula: entender los ejemplos y la metodologa de resolucion y practicar con
otros ejercicios de dificultad similar.
En definitiva, los autores confiamos en que esta modesta contribucion ayude
a nuestros alumnos a adquirir los conocimientos y las destrezas necesarias
para abordar la mayora de los problemas del calculo diferencial e integral.
Las figuras que acompa
nan el texto han sido realizadas, salvo contadas excepciones, con el programa SAGE (http://www.sagemath.org), un proyecto
de software matem
atico libre iniciado en la Universidad de Washington. No
obstante, se ha utilizado el programa Mathematica en algunas figuras y antiguos materiales de los autores.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Tema 1

Campos Num
ericos
Se supone al lector familiarizado con las propiedades usuales de los n
umeros
naturales N, los n
umeros enteros Z y los n
umeros racionales Q. Los n
umeros
naturales son los que utilizamos para contar 0, 1, 2, . . .. Los n
umeros enteros
se obtienen al a
nadir a los anteriores los n
umeros negativos 1, 2, . . . Los
n
umeros racionales son las fracciones o proporciones de n
umeros enteros
1 3 12
umero entero m puede ser escrito como la fraccion
2 , 4 , 5 , . . .. Como cada n
m
,
se
tienen
las
inclusiones
1
NZQ
Los n
umeros racionales ademas admiten una expresion decimal finita o peri
odica. Pero ya desdemuy antiguo es sabido que existen n
umeros que no
son as; por ejemplo, 2. A los n
umeros que tienen una representacion decimal infinita y no peri
odica se les llama n
umeros irracionales. Al conjunto
de los n
umeros racionales e irracionales se les llama n
umeros reales R y
sus propiedades van a jugar un papel primordial en todos los temas de este texto, puesto que vamos a estudiar funciones cuyas variables van a ser,
precisamente, n
umeros reales debido a que representan cantidades que pueden medirse. Sin embargo, muchos fenomenos fsicos y qumicos no pueden
formularse adecuadamente sin conocer los n
umeros complejos C. Aunque
un estudio pormenorizado de estos n
umeros queda fuera del ambito de este
texto, s que haremos una peque
na introduccion a ellos en este tema para
conocer algunas de sus propiedades.

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.1.

El n
umero real

Todo y que la construcci


on de los n
umeros reales a partir de los n
umeros
racionales es interesante por ella misma, queda fuera del nivel que se pretende
conseguir en este manual. Por tanto, nos limitaremos a decir que los n
umeros
reales est
an formados por los n
umeros racionales y los irracionales.

1.1.1.

Desigualdades

El conjunto de los n
umeros reales, que denotaremos por R , tiene la estructura de cuerpo ordenado y la relacion de orden la representaremos por
(la leeremos menor o igual que). Si dos n
umeros reales, x, y verifican la relaci
on x y pero x 6= y entonces escribiremos x < y (y lo leeremos x menor
que y). Enumeramos a continuacion algunas de las propiedades relativas al
comportamiento del orden frente a las operaciones aritmeticas:
xy

x+z y+z

z R

xy z0

zx zy

xy z0

zx zy

0<x<y

1
1
>
x
y

Ejemplo 1.1 Prueba la desigualdad a2 + b2 2ab.


Soluci
on: Probamos en primer lugar que todo cuadrado es siempre no negativo; es decir, a2 0 para todo a R. En efecto, si a = 0 es evidente que
a2 = 0 0; si a > 0 entonces a2 = aa > a0 = 0 y, finalmente, si a < 0
entonces a2 = aa > a0 = 0. Luego en cualquier caso a2 0.
Ahora, para probar la desigualdad del ejemplo, basta observar que debe ser
(a b)2 0 y, al desarrollar el cuadrado,
(a b)2 0 a2 + b2 2ab 0 a2 + b2 2ab

Miguel Angel Cifredo Campos


macifredo@gmail.com

Las propiedades del orden permiten resolver desigualdades de forma similar


a como se resuelven las ecuaciones. La idea consiste en aislar la variable x,
con la diferencia de que la solucion suele ser un intervalo o una union de
intervalos.
Ejemplo 1.2 Resuelve la desigualdad 4 < 2x 3 4.
Soluci
on: La inequaci
on 4 < 2x 3 4 corresponde en realidad a dos
desigualdades 4 < 2x 3 y 2x 3 4; aunque en este caso, podemos
resolverlas conjuntamente. La idea es aislar x, para ello empezamos sumando
3 a cada miembro de la desigualdad:
4 < 2x3 4

4+3 < 2x3+3 4+3

1 < 2x 7

Ahora dividiremos cada miembro por 2 y, siendo un n


umero negativo,
debemos cambiar el sentido de las desigualdades:
7
7
1
1
>x
x<
1 < 2x 7
2
2
2
2
que nos da como soluci
on el intervalo [ 72 , 21 [.
Ejercicio 1.1 Resuelve la desigualdad 3x + 1 > 2x + 2 y dibuja el conjunto
soluci
on en la recta real.
(Sol.: ]1, +[. )
Ejercicio 1.2 Resuelve la desigualdad y dibuja el conjunto solucion en la
x2 1
1
0.
recta real: (a) x > ; (b)
x
x+3
(Sol.: (a) ] 1, 0[]1, +[; (b) ] 3, 1[]1, +[. )

1.1.2.

Valor absoluto de un n
umero real

Si x R, se define el valor absoluto de x, y se denota por |x|, como

|x| := x2
Se puede comprobar que, entonces, tambien se cumple

x si x 0
|x| =
x si x < 0
Algunas propiedades son
3

Miguel Angel Cifredo Campos


macifredo@gmail.com

1. |x| 0,

x R

2. |x| = 0

x=0

3. |xy| = |x| |y|, x, y R



x |x|
, x, y R, y 6= 0
4. =
y
|y|
5. |x + y| |x| + |y|,
6. |x| r

x R

r x r

Ejemplo 1.3 Sean x, y n


umeros reales. Prueba que
m
ax{x, y} =

x + y + |y x|
2

mn{x, y} =

x + y |y x|
2

Soluci
on: Suponemos x y. Entonces, max{x, y} = y. Por otra parte,
x + y + (y x)
2y
x + y + |y x|
=
=
= y.
2
2
2
Adem
as, mn{x, y} = x y, por otra parte,
x + y |y x|
x + y (y x)
2x
=
=
= x.
2
2
2
La prueba en el otro caso, x > y, es totalmente analoga.

Ejemplo 1.4 Vamos a encontrar el conjunto de puntos de la recta real que


verifican la desigualdad:
|2x 1| |x 3|
Soluci
on: Aplicando la propiedad (6) anterior (tomando r = |x 3|) deducimos:
|2x 1| |x 3| |x 3| 2x 1 |x 3|
Distinguimos ahora dos posibilidades:
x 3 (x 3) 2x 1 x 3

3 x 2x 1
2x 1 x 3

Miguel Angel Cifredo Campos


macifredo@gmail.com

3 + 1 2x + x
2x x 1 3

4 3x

x 2

)
4
x
3
No tiene solucion.
x 2

x 3 2x 1
x < 3 ((x 3)) 2x 1 (x 3)
2x 1 3 x

x 2




1 3 2x x
2 x

2x + x 3 + 1
3x 4
4

Es decir,
x<3

4
2 x
4
3
3
4
As la soluci
on es el intervalo [2, ].
3
2 x

Ejercicio 1.3 Resuelve la desigualdad |x3| |2x1| y expresa la solucion


como un intervalo.
(Sol.: [2, 34 ] )
Ejemplo 1.5 Vamos ahora a acotar la siguiente funcion

2x + 1
en el inter1 3x

valo ]1, 4[:


Soluci
on: Si x ]1, 4[ entonces 1 < x < 4. A partir de esta desigualdad
reconstruimos la funci
on:
1 < x < 4 2 < 2x < 8 3 < 2x + 1 < 9
1 < x < 4 3 < 3x < 12 12 < 3x < 3 11 < 1 3x < 2
As,
1
1
1

<
<

3
2x + 1
9
2
1 3x
11
<
<

2
1 3x
11

3 < 2x + 1 < 9

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 1.4 Acota la funcion f (x) =

ex
1x

en el intervalo 1 < x < 4.

(Sol.: f (x) < 27 y no acotada inferiormente )


Ejemplo 1.6 Prueba, por induccion finita, que 1+2+3+ +n =

n(n + 1)
.
2

Soluci
on: Lo comprobamos para n = 1, 2:
1=

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

Lo suponemos cierto para n: 1 + 2 + . . . + n =

n(n + 1)
.
2

Lo probamos para n + 1:
1+2+. . .+n+(n+1) =

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

Ejemplo 1.7 Prueba, por induccion finita, que |xn | = |x|n ,

n N.

Soluci
on: Lo comprobamos para n = 1, 2:
|x| = |x|, |x2 | = |xx| = |x||x| = |x|2
Lo suponemos cierto para n: |xn | = |x|n .
Lo probamos para n + 1:
|xn+1 | = |xn x| = |xn ||x| = |x|n |x| = |x|n+1

Ejercicio 1.5 Prueba, por induccion finita, que 2n > n,

n N.

para
Ejercicio 1.6 Prueba, por induccion finita, que 3 52n+1 + 23n+1 = 17,
cada n 1; es decir, es de la forma 17k para un entero k (m
ultiplo de 17).

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.2.

El n
umero complejo

El conjunto de los n
umero complejos, que denotaremos por C , tiene estructura de cuerpo y puede identificarse con R2 , de tal forma que cualquier
n
umero complejo se puede escribir de la forma
z = a + bi
siendo a y b n
umero reales y siendo i la unidad imaginaria (la cual viene
definida por la igualdad i2 = 1). Al n
umero a se le llama parte real de z
y se representa por <(z); al n
umero b se le llama parte imaginaria de z y
se representa por =(z). Todo n
umero complejo se puede identificar con un
2
punto del plano cartesiano R de coordenadas (a, b) (Fig 1.1). A la expresion
z = a + bi se le llama expresi
on bin
omica de z.

Figura 1.1: Representacion cartesiana de un n


umero complejo.

1.2.1.

Aritm
etica de los n
umeros complejos

Vamos a definir ahora la suma y el producto de n


umeros complejos. Si
z = a + bi y w = c + di entonces definimos
z + w := (a + c) + (b + d)i
z w := (ac bd) + (ad + bc)i

Miguel Angel Cifredo Campos


macifredo@gmail.com

Notad que en realidad la suma y el producto se hace como si se tratara de


binomios, por ejemplo,
z w = (a + bi)(c + di) = ac + adi + bci + bdi2 = ac bd + (ad + bc)i
Definici
on 1.1 Si z = a + bi llamaremos conjugado de z a z = a bi
Ejemplo 1.8 Veamos como desarrollar potencias y cocientes.
(1 2i)2 = 12 + (2i)2 2 2i = 1 4 4i = 3 4i
(1 i)(1 i)
1 + i2 2i
2i
1i
=
=
=
= i
1+i
(1 + i)(1 i)
1 i2
2
Ejercicio 1.7 Expresa en forma binomica los complejos w1 =
i

(1 i)2
.
1 2i

1
y w2 =
i

(Sol.: w1 = i y w2 =
Ejercicio 1.8 Expresar el complejo

1.2.2.

2 4
+ i)
5 5

(1 i)4
en forma binomica.
1+i

(Sol.: 2 2 + 2 2i )

M
odulo y argumento de un n
umero complejo

Si z = a + bi, llamaremos m
odulo de z, y lo denotaremos como |z|, al n
umero
real
p
|z| =
a2 + b2
Algunas propiedades del m
odulo son
1. |z| 0,

z C

2. |z| = 0

3. |z w| = |z| |w|,

z=0
z, w C

Miguel Angel Cifredo Campos


macifredo@gmail.com


1
1
4. =
,
z
|z|

z C, z 6= 0

5. |z + w| |z| + |w|,
6. z z = |z|2 ,
7. |<(z)| |z|,

z, w C

z C
|=(z)| |z|,

z C

Si z = a + bi, existe un R de forma que


cos() =

a
,
|z|

sin() =

b
|z|

A un tal se le llama un argumento de z (de hecho, si es un argumento,


+ 2k, k Z tambien lo es). Si 0 < 2, diremos que es el argumento
principal de z y lo representaremos por Arg(z).
A continuaci
on veremos, graficamente, la relacion entre las partes real e
imaginaria de un complejo y su modulo y argumento, Fig 1.2.

Figura 1.2: M
odulo y argumento de un n
umero complejo.

Dado que r = |z|, entonces cualquier n


umero complejo z = a + bi verifica
que a = |z| cos() y b = |z| sin(), por lo que se puede representar tambien
9

Miguel Angel Cifredo Campos


macifredo@gmail.com

de la forma
z = |z| (cos() + i sin())
representaci
on que recibe el nombre de expresi
on trigonometrica de z.
La expresi
on cos() + i sin() se suele representar por ei y as el complejo z
de m
odulo |z| y argumento tambien se puede escribir como
z = |z| ei
la cual recibe el nombre de expresi
on polar de z. La ventaja de utilizar esta
expresi
on es que las operaciones con complejos se pueden realizar como si
se tratara de exponenciales, lo que facilita las operaciones de productos,
cocientes y potencias. Si z = r ei y w = s ei , entonces


1. z w = r ei s ei = rs ei(+)
n
2. z n = r ei = rn ein
3.

1
= z 1 = r1 ei
z

4. z = r ei
Ejemplo 1.9 Si z = 1 i, entonces
p

|z| =
12 + (1)2 = 2

1
,
cos() =

7
2
=
[0, 2[
1

4
sin() =

2
y entonces,



3
3
3
z = 2 cos
+ i sin
= 2 ei 4
4
4
Ejercicio 1.9 Expresa en forma polar los complejos w1 = 1 y w2 = i.

(Sol.: w1 = e0i = 1 y w2 = ei 2 )
Ejercicio1.10 Expresa en forma polar los n
umeros complejos w = 1 i y
w = (1 3i).

(Sol.: w1 = 2 ei 4 y w2 = 2 ei 3 )
10

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 1.11 Expresa en forma polar el complejo w = 4(1 + i)4 .


(Sol.: w = 16 )
Ejercicio 1.12 Expresa en forma polar el complejo w =

2 + 2i
.
i

(Sol.: w = 2 2 ei 4 )
Ejercicio 1.13 Calcula |1 + z|2 + |1 z|2 , si z C y |z| = 1.
(Sol.: 4 )

1.2.3.

Races enteras de un n
umero complejo

Dado el n
umero complejo z = r ei , no nulo, existen n n
umeros zk , k =
0, 1, 2, . . . , n 1, que verifican
(zk )n = z;
es decir, existen, justamente, n races n-esimas de z. Ademas, estos n
umeros
se expresan en forma polar como
zk =

r ei

+2k
n

k = 0, 1, 2, . . . , n 1

Estas f
ormulas implican que todas las races de un n
umero complejo tienen el mismo m
odulo y sus argumentos se obtienen empezando en /n e
incrementando, sucesivamente, 2/n radianes.
Ejemplo 1.10 Calcula las races c
ubicas de z = 8i.
Soluci
on: Observamos primero que z = 8 e
anteriores, las tres races c
ubicas de z son

z=

8 ei

para k = 0, 1, 2.

11

3i
2

. Por tanto, seg


un las formulas

3/2+2k
3

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.2.4.

Exponencial compleja y Logaritmo complejo

Dado un n
umero complejo z = x + iy, la exponencial de z se define
Exp(z) = ex (cos(y) + i sin(y)).
Por otra parte, dado un n
umero complejo z = r ei , un logaritmo de z es un
n
umero complejo w tal que ew = z. Se denotara w = log(z) y se verifica que
log(z) = ln(r) + i( + 2k);
es decir, log(z) es un n
umero complejo cuya parte real es el logaritmo neperiano real del m
odulo de z y cuya parte imaginaria es un argumento de
z.
Ejemplo 1.11 Calcula log(3 + 3i).
Soluci
on: Notemos primero que, expresando el complejo en forma polar,

3 + 3i = 3 2 ei 4
Por tanto,

log(3 + 3i) = ln(3 2) + i( + 2k)


4

Ejercicio 1.14 Comprueba que si la forma polar de z = ei con R,


entonces, se cumple que z = Exp(i).

1.3.

Problemas adicionales

Ejercicio 1.15 Encuentra todos los valores x R que verifiquen las siguiente expresiones: (a) |x + 1| + |x + 2| < 2; (b) |x2 7x + 12| > x2 7x + 12;
x2 5x + 6
(c) 1
2.
x+2
(Sol.: (a) ] 2.5, 0.5[; (b) ]3, 4[; (c) ]0.29, 0.76[]5.23, 6.7[ )

12

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 1.16 Demuestra, por induccion, que si r R, r 6= 1, se verifica


1 + r + r2 + ... + rn =

1 rn+1
1r

para todo n N.
Ejercicio 1.17 Demuestra, por induccion, que
13 + 23 + ... + n3 = (1 + 2 + ... + n)2
para todo n N.

Ejercicio 1.18 Calcula la parte real e imaginaria de los siguientes n


umeros
complejos:
(a)

(3 2i)(2 + 3i)
;
(3 4i)

(b) i5787 ;

(c) (1 + 4i)3 .

(Sol.: (a) 16/25 + 63i/25; (b) i; (c) 47 52i )


Ejercicio 1.19 Sean z1 y z2 dos n
umeros complejos distintos tales que
r=

(z1 + z2 )i
z1 z2

Halla la relaci
on que deben cumplir z1 y z2 para que r sea un n
umero real.
(Sol.: |z1 | = |z2 | )
Ejercicio 1.20 Expresa en forma polar los n
umeros complejos z1 = 3 + 3i
y z2 = 4i.

(Sol.: z1 = 3 2 ei/4 y z2 = 4 ei/2 . )


Ejercicio 1.21 Expresa en forma binomica el n
umero complejo z =

2e5i/4 .

(Sol.: z = 1 i )
Ejercicio 1.22 Halla la forma binomica de los siguientes n
umeros complejos:

13

Miguel Angel Cifredo Campos


macifredo@gmail.com

(a) (4 + 3i)2
(b)

(d) Exp(1 i)

3+2i
32i

(e) log(2 + 2i)

)4
(c) ( 1+i
2

(Sol.: (a) 7 + 24i; (b)5/13 + 12i/13; (c)1; (d) 1.47 2.28i;


(e) ln(2 2) + (3/4 + 2k)i )
Ejercicio 1.23 Halla los n
umeros complejos z tales que z 6 9z 3 + 8 = 0.
(Sol.: 1, e

2i
3

,e

4i
3

, 2, 2 e

2i
3

, 2e

4i
3

.)

Ejercicio 1.24 Determinar los n


umeros complejos no nulos z tales que su
cuadrado es igual a su conjugado.
(Sol.: 1, 12 + i

3
2 ,

12 i

3
2 .

Ejercicio 1.25 Demuestra que si z + z1 es real, entonces la parte imaginaria


de z es nula o |z| = 1.

14

Miguel Angel Cifredo Campos


macifredo@gmail.com

Tema 2

Sucesiones Num
ericas
Imaginemos la cola de entrada a un espectaculo formada por personas que
han sido numeradas de la forma habitual; el primero de la cola lleva el
n
umero 1, el segundo el n
umero 2 y as sucesivamente; pero con la diferencia respecto del mundo real de que la fila es infinita. Como podra saber
un espectador que observa la cola que dicha fila es infinita? Naturalmente,
podra responderse que porque no alcanza con la vista el final de la cola
(que por cierto no existe tal final); pero podramos objetar que tal vez es un
problema de vista y no de infinitud; acaso en una cola de miles de millones
de personas alcanzaramos a ver el final? Una respuesta mas adecuada matem
aticamente es que en esta fila toda persona tiene siempre alguien detras;
es decir, siempre existe un sucesor a cualquier persona que este haciendo
cola. Esto resulta del hecho de que para numerar la cola hemos empleado
el conjunto de los n
umeros naturales N y esta es, precsamente, una de sus
caractersticas esenciales. Acabamos de formar una sucesi
on (de personas).
Intuitivamente hablando, pues, una sucesion es una lista infinita de objetos
que est
an numerados (ordenados) siguiendo el orden de los n
umeros naturales, 1, 2, . . .. As al primer termino de la sucesion le corresponde el ndice
(n
umero en la cola) 1; el siguiente lleva el ndice 2 y as sucesivamente. Cabe
decir que, en ocasiones, ser
a conveniente empezar con el ndice 0 en vez de
con 1.
En este tema, se tratar
an las sucesiones numericas; es decir aquellas listas
cuyos objetos numerados son, a su vez, n
umeros. Aunque el ttulo hace

15

Miguel Angel Cifredo Campos


macifredo@gmail.com

referencia a sucesiones numericas en general; es decir, reales y complejas,


nos limitaremos a estudiar las sucesiones reales, ya que el estudio de las
sucesiones complejas se reduce a aquel mediante el analisis de las partes
reales y complejas de los respectivos terminos.

2.1.

Sucesiones reales. Subsucesiones

Definici
on 2.1 Una sucesi
on de n
umeros reales es una aplicacion
a:NR
El rango de esta aplicaci
on es el conjunto (ordenado)
{a(0), a(1), a(2), a(3), . . . , a(n), . . .}
y denotando an = a(n) lo podemos representar abreviadamente como {an }+
n=0 .
Tambien se utiliza la notacion {an } para representar a una sucesion, sobretodo si no nos importa se
nalar desde que termino n empezamos. En general,
las sucesiones pueden empezar desde un natural n0 > 0, pero en las disquisiciones te
oricas entendemos que empiezan desde n = 1.
Por tanto, una forma de escribir una sucesion es dando la formula del termino
general an .
Ejemplo 2.1
1 1
1
{1, , , . . .}; es decir, an = ,
2 3
n

n 1.

{1, 1, 1, 1, 1, 1, . . .} es decir, an = (1)n+1 ,


1 1 1
1
{1, , , . . .}; es decir, an = n ,
2 4 8
2

n 1.

n 0.

Sin embargo, en algunos casos la sucesion se define o bien por comprension


o bien por recurrencia; esta u
ltima significa que el termino general an se
define en funci
on de uno o varios terminos anteriores.

16

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 2.2
La sucesi
on formada por la unidad y los n
umeros primos. No es posible
escribir an en funci
on de n: {1, 3, 5, 7, 11, 13, 17, 19, . . .}.
a0 = 1; a1 = 1; an = an1 + an2 para n 2; que da la conocida sucesi
on de Fibonacci donde cada termino es la suma de los dos anteriores:
{1, 1, 2, 3, 5, 8, 13 . . .}
Una forma de representar graficamente las sucesiones reales es como funciones, es decir, como pares ordenados (n, an ), lo que puede ser u
til en ocasiones
para el estudio de sus propiedades. En el eje de abcisas se representan los
n
umeros naturales n y en el eje de ordenadas los valores reales an . Dado
que la variable n s
olo admite valores naturales, la representacion grafica se
visualizar
a, entonces, como un conjunto de puntos aislados, Fig 2.1

Figura 2.1: Representacion grafica de una sucesion


Definici
on 2.2 Una subsucesi
on de n
umeros naturales es una aplicacion
estrictamente creciente:
N N
j 7 nj
es decir que se cumple
n1 < n2 < n3 < . . . < np < np+1 < . . .

17

Miguel Angel Cifredo Campos


macifredo@gmail.com

Esto permite definir, dada una sucesion {an } de n


umeros reales, una subsucesi
on de {an } como la aplicacion
a

N N R
j 7 nj 7 anj
Es decir, donde los nuevos ndices nj forman una subsucesion de N. Por
tanto, la subsucesi
on, que denotaremos por {anj }+
j=1 , puede entenderse como
un subconjunto infinito (y ordenado) de {an }.
Ejemplo 2.3 Dada una sucesion cualquiera {an } son subsucesiones:
{a2n }, la subsucesi
on de los terminos de orden par;
{a2n+1 }, la subsucesi
on de los terminos de orden impar;
{a2n }, la subsucesi
on de los terminos de orden potencias de 2;
{an+3 }, la subsucesi
on formada desechando los tres primeros terminos.
1 1 1
Ejemplo 2.4 Considera la sucesion {1, , , , . . .}. Entonces,
2 3 4
1
1 1 1
{ , , , . . . , , . . .} es subsucesion, con n1 = 2, n2 = 4, n3 = 6, . . .
2 4 6
2n
1 1 1
1
{ , , , . . . , n , . . .} es subsucesion, con n1 = 2, n2 = 4, n3 = 8, . . ..
2 4 8
2
1 1 1 1
{ , , , , . . .} no es subsucesion. (No respeta el orden)
3 2 5 4
1 1 1
{0, , , . . .} no es subsucesion. (No es subconjunto)
2 4 8

2.2.

Sucesiones mon
otonas

 
1
Al observar la sucesi
on
cuyos terminos escribimos a continuacion
n
1 1 1 1 1 1 1
1, , , , , , , , . . .
2 3 4 5 6 7 8
18

Miguel Angel Cifredo Campos


macifredo@gmail.com

vemos como cada termino es mayor que su sucesor; es decir que la sucesion
decrece; Fig. 2.2.

Figura 2.2: Sucesion decreciente

Por el contrario, la sucesi


on {n}
1, 2, 3, 4, 5, . . .
cumple que cada termino es menor que su sucesor; es decir, la sucesion crece;
Fig. 2.3.

Figura 2.3: Sucesion creciente


Formalizamos estos conceptos en la siguiente definicion.
19

Miguel Angel Cifredo Campos


macifredo@gmail.com

Definici
on 2.3 Diremos que {an } es :
mon
otona creciente si, y solo si, an an+1 ,
mon
otona decreciente si, y solo si, an an+1 ,

n N
n N

mon
otona cuando es creciente o decreciente.
Cuando las desigualdades son estrictas se dira que las sucesiones son estrictamente crecientes o estrictamente decrecientes, seg
un el caso.
Ejemplo 2.5 Si consideramos de nuevo las sucesiones anteriores
{n} es creciente, porque n n + 1, para todo n
 
1
1
1
es decreciente, porque
, para todo n
n
n
n+1
En ocasiones el estudio de la monotona no es tan evidente y requiere realizar
algunas operaciones.

 2
n +3
Ejemplo 2.6 Determina si la sucesion
es monotona.
n3 1 n2
Soluci
on: Primero calculamos algunos de los primeros terminos para determinar si es mon
otona y en que sentido. Para no complicar la notacion
asumimos que el primer termino sera denotado por a2 (en vez de por a1 ):
4
12
19
a2 = ; a3 = ; a4 =
7
26
63
por lo que,
a2 > a3 > a4
lo cual parece indicar que es monotona decreciente. Para probarlo, debemos
verificar que an > an+1 . Si escribimos esta condicion
n2 + 3
(n + 1)2 + 3
>
n3 1
(n + 1)3 1

20

Miguel Angel Cifredo Campos


macifredo@gmail.com

y ahora, se trata de desarrollar esta expresion hasta llegar a una condicion


que sea cierta. Empezamos por quitar denominadores (ambos son positivos
por lo que la desigualdad permanece)
(n2 + 3)((n + 1)3 1) > ((n + 1)2 + 3)(n3 1)
y, desarrollando los parentesis,
n(9 + 9n + 6n2 + 3n3 + n4 ) > 4 2n n2 + 4n3 + 2n4 + n5
que equivale a
4 + 11n + 12n2 + 2n3 + n4 > 0
lo cual es cierto para cualquier valor de n al ser todos los sumandos positivos.
Queda as comprobado que an > an+1 , para todo n, por lo que la sucesion
resulta ser mon
otona decreciente.


Ejemplo 2.7 Determina si la sucesion

n!
2n


es monotona.
n1

Soluci
on: Primero calculamos algunos de los primeros terminos para determinar si es mon
otona y en que sentido:
1
2
6
24
a1 = ; a2 = ; a3 = ; a4 = ;
2
4
8
16
por lo que,
a1 a2 < a3 < a4
y parece indicar que es mon
otona creciente. Para probarlo, debemos verificar
que an < an+1 , para todo n. Dado que todos los terminos son positivos y
an+1
que involucran factoriales y potencias vamos a probar que
>1
an
(n + 1)!
2n+1 = n + 1 1, para todo n 1
n!
2
2n
Queda as comprobado que an < an+1 , para todo n, por lo que la sucesion
resulta ser mon
otona creciente.

21

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 2.1 Estudia la monotona de la sucesion an =

n2 + 3
, n 1.
3n + 2

(Sol.: {an } es monotona creciente )


Ejercicio 2.2 Estudia la monotona de la sucesion an =

5n + 3
, n 1.
n2 + 1

(Sol.: {an } es monotona decreciente )


(2n 1)!!
,n1
n! 2n
(H: (2n 1)!! = (2n 1) (2n 3) 3 1; es decir, es el producto de todos
los impares menores o iguales a 2n 1).
Ejercicio 2.3 Estudia la monotona de la sucesion an =

(Sol.: {an } es monotona decreciente )

2.3.

Sucesiones acotadas

Definici
on 2.4 Sea {an } una sucesion real y M R .
Si an M, n N diremos que {an } esta acotada superiormente.
En este caso el n
umero M se llama cota superior.
Si an M, n N diremos que {an } esta acotada inferiormente.
En este caso el n
umero M se llama cota inferior.
Diremos que {an } est
a acotada si lo esta superior e inferiormente. Esto
equivale a decir que
|an | M, n N
Gr
aficamente, una sucesi
on acotada es, pues, aquella cuyos terminos se encuentran situados en una banda horizontal de anchura 2M , como puede
observarse en la Fig. 2.4.

22

Miguel Angel Cifredo Campos


macifredo@gmail.com

Figura 2.4: Sucesion acotada |an | M


Ejemplo 2.8 Veamos algunos ejemplos de sucesiones acotadas.
1
1
{ } est
a acotada porque | | 1,
n
n

n N

{(1)n+1 } est
a acotada porque |(1)n+1 | 1,

n N

{n} no est
a acotada superiormente.

{ln n1 } no est
a acotada inferiormente (se vera mas adelante que
lm ln(1/n) = ).
 2

n +3
Ejemplo 2.9 Determina si la sucesion
esta acotada.
n3 1 n2
Soluci
on: Puesto que los terminos de la sucesion siempre son positivos,
queda claro que est
a acotada inferiormente por 0; es decir,
n2 + 3
, n2
n3 1
Para acotarla superiormente, se utiliza un peque
no artificio: aumentar el
grado del numerador para que coincida con el del denominador y poder
realizar la divisi
on.
0

n2 + 3
n3
4

=1+ 3
1+1=2
3
3
n 1
n +3
n 1

23

Miguel Angel Cifredo Campos


macifredo@gmail.com


Ejercicio 2.4 Determina si la sucesion

n
n+1


esta acotada.
nN

(Sol.: 0 <

Ejercicio 2.5 Determina si la sucesion
(Sol.: 3

2.4.

n4 + n + 1
n3 2n

n
<1)
n+1


esta acotada.
n1

n4 + n + 1
y no acotada superiormente )
n3 2n

Sucesiones convergentes

Observamos de nuevo la sucesion { n1 }+


ermin=1 , escribiendo algunos de sus t
nos:
1 1 1 1 1 1 1
1, , , , , , , , . . .
2 3 4 5 6 7 8
Cuanto m
as avanzamos, m
as peque
no es el termino correspondiente. Parece
que la sucesi
on va acerc
andose a cero y, por tanto, se dice que tiene lmite
cero. Por contra en la sucesion {n} pasa lo contrario:
1, 2, 3, 4, 5, . . .
cuanto m
as avanzamos m
as grande se hace el termino correspondiente y,
entonces, se dice que tiene lmite +. Finalmente, si tomamos la sucesion:
1, 0, 1, 0, 1, 0, 1 . . .
se observa que por mucho que avancemos la sucesion siempre oscila entre 0
y 1 y se dice que es oscilante.
Estos conceptos se formalizan a continuacion en las siguientes definiciones.
Definici
on 2.5 Diremos que {an } es convergente y tiene lmite R sii
 > 0

n0 N

si

n n0

|an | < 

y lo escribiremos lm an = .
n

Si una sucesi
on no es convergente, entonces se dice que es divergente; pero
distinguiremos algunos tipos de divergencia.
24

Miguel Angel Cifredo Campos


macifredo@gmail.com

Diremos que {an } es divergente y tiene lmite + sii


K > 0

n0 N

si

n n0

an > K

y lo escribiremos lm an = +.
n

Diremos que {an } es divergente y tiene lmite sii


K < 0

n0 N

si

n n0

an < K

y lo escribiremos lm an = .
n

Diremos que {an } es divergente y tiene lmite sii


K > 0

n0 N

si

n n0

|an | > K

y lo escribiremos lm an = .
n

Diremos que {an } es oscilante si no es convergente ni divergente a o

Nota: En realidad, una sucesion {an } tiene lmite si la sucesion de los


valores absolutos {|an |} tiene lmite +. Por eso, toda sucesion divergente
a + o , tambien tiene lmite , pero el recproco no es cierto (vease
el Ejemplo 2.10).
Ejemplo 2.10 Veamos algunos ejemplos de sucesiones convergentes y divergentes.
1
1
1. { } es convergente y lm
= 0
n n
n
2. {n} es divergente y lm n = +
n

3. {n} es divergente y lm(n) =


n

4. {1, 1, 2, 2, . . . , (1)n+1 n, . . .} es divergente y lm(1)n+1 n =


n

5. {1, 2, 1, 2, 1, 2, 1, 2, . . .} es oscilante (y acotada)


6. {1, 2, 1, 3, 1, 4, 1, 5, . . .} es oscilante (y no acotada)
7. {sin n} es oscilante (y acotada)
25

Miguel Angel Cifredo Campos


macifredo@gmail.com

Gr
aficamente el concepto de lmite se interpreta como que la cola de la
sucesi
on se aproxima a una recta horizontal de ecuacion y = L, si lm an = L;
Fig. 2.5,

Figura 2.5: Sucesion convergente

o por el contrario, la cola supera cualquier cota K si lm an = +; Fig. 2.6.

Figura 2.6: Sucesion divergente

En el siguiente teorema se resumen algunas propiedades basicas de los lmites.

26

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema 2.6 Sea {an } una sucesion convergente. Entonces,


1. El lmite es u
nico.
2. La sucesi
on es acotada.
3. Cualquier subsucesi
on es convergente y tiene el mismo lmite.
4. lm an =
n

lm(an ) = 0

lm |an | = 0
n

Por otra parte, si la sucesi


on {an } es divergente a entonces cualquier
subsucesi
on es divergente y tiene el mismo lmite.
La propiedad (2) anterior proporciona un metodo para determinar si una
sucesi
on est
a acotada; es decir, las sucesiones con lmite finito estan acotadas; aunque el recproco no es cierto, en general: la sucesion oscilante
{1, 0, 1, 0, . . .} est
a acotada pero no tiene lmite.
La propiedad (3) anterior permite eliminar un n
umero finito de terminos al
calcular el lmite de una sucesion. En particular, el lmite no depende de los
primeros terminos sino de la cola de la sucesion; lo cual ya estaba implcito
en la definici
on de lmite.
Teorema 2.7 La relaci
on de los lmites con el orden de los n
umeros reales
es la siguiente:
1. Si an bn , para todo n n0 y existen lm an y lm bn , entonces
n

lm an lm bn
n

2. Si lm an = < , entonces existe n0 tal que


n

an < , para cada n n0


3. Si lm an = > , entonces existe n0 tal que
n

an > , para cada n n0


En particular, si lm an 6= 0, la sucesion {an } tiene el mismo signo que su
n
lmite excepto, como mucho, en un n
umero finito de terminos.
27

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ya vimos que toda sucesi


on con lmite finito esta acotada y que el recproco
no es cierto en general. Si a
nadimos una condicion de monotona obtenemos
dicho recproco
Teorema 2.8 La relaci
on entre la convergencia y la monotona se resume
en las siguientes propiedades.
1. Si {an } es creciente y acotada superiormente, entonces {an } es convergente.
2. Si {an } es decreciente y acotada inferiormente, entonces {an } es convergente.
3. Si {an } es creciente y no acotada superiormente, entonces {an } es
divergente a +.
4. Si {an } es decreciente y no acotada inferiormente, entonces {an } es
divergente a .
Teorema 2.9 (Aritm
etica de sucesiones convergentes) Sean {an } y
{bn } dos sucesiones convergentes. Entonces,
1. lm(an + bn ) = lm an + lm bn
n

2. lm( an ) = lm an
n

3. lm(an bn ) = lm an lm bn
n

4. lm
n

lm an
an
= n
si lm bn 6= 0
n
bn
lm bn
n

lm bn
5. lm(an )bn = (lm an ) n
n

si lm an > 0
n

Para conocer el valor del lmite cuando una o las dos sucesiones anteriores
tienen lmite infinito, se aplica la llamada aritmetica infinita que se resume
en la tabla siguiente.
En lo que sigue debe entenderse que a R representa el lmite de una
sucesi
on {an } y el de una sucesion {bn }.
28

Miguel Angel Cifredo Campos


macifredo@gmail.com

Suma:
(+) + (+) = +

() + () =

a + (+) = +

a + () =

Producto:

a(+) =

+ si
si

a>0
a<0

a() =

(+)(+) = +

si
+ si

a>0
a<0

()() = +

(+)() =
Cociente:

+ si
+
si
=

si

si

+ si
=

si

a>0
a<0
a=0

a
=0
+

a>0
a<0
a=0

a
=0

a
= ,
0

si a 6= 0

Potencias:
+


=

+ si a > 1
0
si 0 a < 1

(+) =

+ si
0
si


=

(+) = 0

(+)+ = +

a>0
a<0

29

0
si
+ si

a>1
0a<1

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.5.

C
alculo de lmites

Con la aritmetica infinita, pueden presentarse los siguientes tipos de indeterminaciones:

0
,
0

0 ,

1 ,

0 ,

00

Veamos c
omo resolver algunas de ellas:

Ejemplo 2.11 Calcula el lmite lm


n

n2 + 3n 5
.
n+2

Soluci
on: En este caso, se tiene un cociente de polinomios y ambos tienden
a + por lo que, en principio, estamos ante una indeterminacion del tipo

. El procedimiento a seguir es dividir numerador y denominador por la

potencia de mayor grado; en este caso, n2 .


1 + n3 n52
1
n2 + 3n 5
= lm 1
= =
lm
2
n
n
n+2
0
n + n2
basta observar, en este u
ltimo paso, que los cocientes
a 0.

1
n

1
n2

tienden ambos

Si se quiere determinar el signo del , aunque ello no es siempre posible,


2
cuando n es grande. En
basta determinar el signo de la sucesion n +3n5
n+2
este caso, para valores grandes de n la sucesion es siempre positiva, por lo
que puede afirmarse que el lmite es +.

Ejemplo 2.12 Calcula el lmite lm


n

n2 + 2n 5
.
5 3n

Soluci
on: En este caso, se tiene un cociente donde numerador y denominador tienden a , por lo que, en principio, estamos ante una indeterminacion

del tipo
. El procedimiento a seguir es dividir numerador y denominador

por la potencia de mayor grado; en este caso, n (aunque el numerador no

30

Miguel Angel Cifredo Campos


macifredo@gmail.com

es un polinomio, se asimila
a este para el calculo de lmites, tomando como
potencia de mayor grado n2 = n).
q

1 + n2 n52
n2 + 2n 5
1
1
= lm
=
lm
=
5
n
n
5 3n
3
3
n 3

Ejercicio 2.6 Calcula lm


n

n2 n3 + 2
.
n+2
(Sol.: )

Ejercicio 2.7 Calcula lm


n

2n3 + 3n2 n + 1

.
n3 + 3 n + 2
(Sol.: 2 )

Ejercicio 2.8 Calcula lm


n

n2 + n + 1
.
n+2
(Sol.: 1 )

n2 + n 8
.
Ejercicio 2.9 Calcula lm
3
n
n7 + 1
(Sol.: 0 )
s

2k + 3k 1
(H: Divide numerador y dek+
3k2 + 2k+3
nominador por la mayor potencia).

Ejercicio 2.10 Calcula lm

(Sol.: 3 )
Ejemplo 2.13 Calcula el lmite lm
n

p

n2 + 2n + 3 n .

Soluci
on: En este caso, se tiene una diferencia de sucesiones donde ambas
tienden a +, por lo que, en principio, estamos ante una indeterminacion del
tipo . Dado que puede verse como una diferencia de races cuadradas

31

Miguel Angel Cifredo Campos


macifredo@gmail.com

(n = n2 ), el procedimiento a seguir es multiplicar y dividir por la expresion


conjugada:


p
2 + 2n + 3 n)( n2 + 2n + 3 + n)
(
n

n2 + 2n + 3 n = lm
lm
n
n
n2 + 2n + 3 + n
n2 + 2n + 3 n2
2n + 3
= lm
= lm
n
n
n2 + 2n + 3 + n
n2 + 2n + 3 + n
=

2
=1
2

ya que en este u
ltimo paso, volvemos a tener un cociente de polinomios que
ya debemos saber resolver.

Ejercicio 2.11 Calcula lm

p


n2 + 2n 1 n .
(Sol.: 1 )

n+1 n

Ejercicio 2.12 Calcula lm


.
n
n+3 n+1
(Sol.:
Ejercicio 2.13 Calcula lm
n

p
4

n2 + 1

p
4

1
)
2


n2 + n 1 (H: Aplica dos ve-

ces la operaci
on de multiplicar y dividir por el conjugado).
(Sol.: 0 )
A continuaci
on se exponen algunos metodos mas para resolver estas y otras
indeterminaciones:
(a) tipo (1 ): se aplica la f
ormula de Euler.

an 1
= lm abnn = elm bn (an 1)
bn

Ejemplo 2.14 Calcula el lmite lm

32

n2 + 3
n2 + n 1

n
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Soluci
on: En este caso, se tiene una potencia de sucesiones donde la base
tiene lmite 1 (debera ser claro ya) y el exponente tiene lmite , por lo que,
estamos ante una indeterminacion del tipo 1 . El procedimiento consiste en
aplicar la f
ormula de Euler:


n2 + 3


n
lm n
1
n2 + 3
n
n2 + n 1
=
e
lm
n
n2 + n 1

 2
n + 3 n2 n + 1
lm n
n2 + n 1
=e n
=e


Ejercicio 2.14 Calcula lm
n

4n n2
n2 + n 1 = e1

lm
n

2
n + 5
+ 3n 5 n + 2
.
2
n 4n + 2

n2

(Sol.: e7 )
s
Ejercicio 2.15 Calcula lm

2n
1 2
n +1

n+1
.
(Sol.: e2/3 )


Ejercicio 2.16 Calcula lm
n

n2 + 3
2n2 1

n2
.
(Sol.: 0 )

r
Ejercicio 2.17 Calcula lm
n

n+1
n

n+1 n

.
(Sol.: 1 )

(b) tipo (
): se aplica el criterio de Stolz.

bn +
an+1 an
an
(bn ) creciente
= lm
= lm

bn
bn+1 bn
bn > 0, n
33

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 2.15 Calcula el lmite lm


n

1 + 2 + ... + n
.
n2

Soluci
on: En este caso, se observa que el numerador es una sucesion formada por una suma cuyo n
umero de sumandos vara con el valor de n. Se
aplica el criterio de Stolz, llamando an a la sucesion del numerador y bn a
la del denominador:
an+1 an
an
= lm
lm
n bn+1 bn
n bn
1 + 2 + . . . + n + (n + 1) (1 + 2 + . . . + n)
= lm
n
(n + 1)2 n2
n+1
1
= lm
=
n 2n + 1
2

Ejercicio 2.18 Calcula lm


n

1 + 22 + 33 + + nn
.
nn
(Sol.: 1 )
4+

Ejercicio 2.19 Calcula lm


n

1
2
3
n
+ 4 + + 4 + + + + 4 +
n
n
n
n.
n
(Sol.:

Ejercicio 2.20 Calcula lm


n

9
)
2

log(n!)
log nn
(Sol.: 1 )

a1 + 2a2 + 3a3 + . . . + nan


Ejercicio 2.21 Calcula lm
, sabiendo que an es
n
n2
una sucesi
on convergente con lmite lm an = a.
n

(Sol.:
(c) tipos (0 ) y (00 ): se aplica el criterio de Stolz para la raz.

r
bn +

an+1
bn
bn+1 bn
(bn ) creciente
= lm an = lm

an
bn > 0, n
34

a
)
2

Miguel Angel Cifredo Campos


macifredo@gmail.com

r
Ejemplo 2.16 Calcula el lmite lm

n!
.
nn

Soluci
on: En este caso, se aplica el criterio de Stolz para la raz. Llamando
an a la sucesi
on del radicando y bn a la del radical:
s
r

a
(n + 1)!/(n + 1)( n + 1)
n+1
= lm n+1n
lm bn an = lm bn+1 bn
n
n
n
an
n!/nn

n
(n + 1)nn
n
nn
= lm
= e1
= lm
= lm
n (n + 1)( n + 1)
n
n (n + 1)n )
n+1

Ejercicio 2.22 Calcula lm


n

n.
(Sol.: 1 )

Ejercicio 2.23 Calcula lm


n

p
n
5n2 6n + 3.
(Sol.: 1 )

Ejercicio 2.24 Calcula lm


n


n+1 .
(Sol.: 0 )

Ejercicio 2.25 Calcula lm

1+

2+

3 + +
n

.
(Sol.: 1 )

0
(d) tipos (
mite de funciones para poder aplicarle
) y ( 0 ): cambiamos a l
la regla de LHopital:

Se buscan dos funciones reales f y g, continuas y derivables de forma que


f (n) = an y g(n) = bn ; entonces,
f 0 (x)
an
f (x)
= lm
= lm 0
x+ g (x)
n+ bn
x+ g(x)
lm

Ejemplo 2.17 Calcula el lmite lm


n

en
n

35

Miguel Angel Cifredo Campos


macifredo@gmail.com

. En este
Soluci
on: El lmite propuesto es una indeterminacion del tipo

caso, puesto que ambas sucesiones no tienen relacion, lo mas sencillo es


tomar las funciones f (x) = ex y g(x) = x y aplicar la regla de LHopital:
lm
n

lm

ex

por lo que, lm
n

en
n

f 0 (x)
f (x)
= lm 0
=
n g (x)
g(x)

= +

= +.

Ejercicio 2.26 Calcula el lmite lm


n

ln(n)
.
n
(Sol.: 0 )

2.6.

Infinit
esimos

Definici
on 2.10 Una sucesion {an } se dice un infinitesimo si lm an = 0
n

Dos infinitesimos {an } y {bn } se dicen equivalentes si


an
=1
n bn
lm

Las propiedades m
as usuales de los infinitesimos se resumen en los dos resultados siguientes.
Teorema 2.11 Si {an } es un infinitesimo y {bn } es una sucesion acotada,
entonces
lm an bn = 0
n

es decir, {an bn } es un infinitesimo.


Teorema 2.12 Sean {an } y {bn } dos infinitesimos equivalentes y {cn } una
sucesi
on cualquiera. Entonces,
1. lm an cn = lm bn cn
n

36

Miguel Angel Cifredo Campos


macifredo@gmail.com

2. lm

cn
cn
= lm
an n bn

Esta u
ltima propiedad nos dice que en el calculo de lmites podemos substituir un infinitesimo por un equivalente (siempre y cuando aparezcan como
productos o cocientes).
Por tanto, resulta conveniente conocer algunos infinitesimos equivalentes.
Los m
as usuales son:

Infinit
esimos Equivalentes.

Si {an } es un infinitesimo, entonces

{log(1 + an )}
{sin(an )}
{tan(an )}
{arctan(an )}

{an }
{an }
{an }
{an }
a2
{1 cos(an )}
{ n}
2
{ban 1}
{an log b}
Ejemplo 2.18 Vamos a calcular lm n log(1 +
n

2
).
n2

Soluci
on: Aplicamos que, seg
un la tabla anterior,
  
 
2
2

log 1 + 2
n
n2
y, entonces, el Teorema 2.12 nos permite escribir
lm n log(1 +
n

2
2
2
) = lm n 2 = lm = 0
2
n
n n
n
n

n2 + 1
))
n2 + 2 .
1
tan( 2
)
n +3

arctan(log(
Ejercicio 2.27 Calcula el lmite lm
n

(Sol.: 1 )
37

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 2.28 Calcula el lmite lm n( n a 1), a > 0.


n

(Sol.: ln(a) )
Ejercicio 2.29 Calcula el lmite lm
n

!n

n
a+ nb
, a, b > 0.
2
(Sol.:

tan(a +

Ejercicio 2.30 Calcula el lmite lm


n

tan(A + B) =

tan a

ab )

b
)
n

(H: Recuerda que

tan(A) + tan(B)
).
1 tan(A) tan(B)
2b

(Sol.: e sin(2a) )

2.7.

Infinitos

Definici
on 2.13 Una sucesion {an } se dice un infinito si lm an = ()
n

Dos infinitos {an } y {bn } se dicen equivalentes si


lm

an
=1
bn

Diremos que {an } es de mayor orden que {bn } si


an
= +
n bn
lm

Teorema 2.14 Si {an } es un infinito y {bn } es una sucesion acotada, entonces


lm(an + bn ) =
n

es decir, {an + bn } es un infinito.


El concepto de infinito de mayor orden se utiliza a menudo en la resolucion de

lmites indeterminados del tipo


. Por otra parte, los infinitos equivalentes

se utilizan seg
un la propiedad siguiente.
38

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema 2.15 Sean {an } y {bn } dos infinitos equivalentes y {cn } una sucesi
on cualquiera. Entonces,
1. lm an cn = lm bn cn
n

2. lm

cn
cn
= lm
n
an
bn

Esta propiedad nos dice que en el calculo de lmites podemos substituir un


infinito por un equivalente (siempre y cuando aparezcan como productos o
cocientes).

Infinitos Equivalentes
n! nn en
Ejemplo 2.19 Calculad lm
n

2n

(Formula de Stirling)

33n (n!)3
.
(3n + 1)!

Teniendo en cuenta la f
ormula de Stirling sabemos que

n! nn en 2n
por lo que tambien,
(3n + 1)! (3n + 1)3n+1 e(3n+1)

y as,

2(3n + 1)

33n (nn en 2n)3


33n (n!)3
p
= lm
lm
n (3n + 1)3n+1 e(3n+1)
n (3n + 1)!
2(3n + 1)

33n n3n e3n ( 2n)3


p
= lm
n (3n + 1)3n (3n + 1) e3n e1
2(3n + 1)


3n
3n
2n 2n
p
e
= lm
n
3n + 1
(3n + 1) 2(3n + 1)

y como, lm
n

3n
3n + 1

3n

= e1 ,

2n 2n
2
p
= lm
=
n (3n + 1) 2(3n + 1)
3 3
39

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.8.

Problemas adicionales

Ejercicio 2.31
(a) Demuestra que la suma de una sucesion convergente y una divergente
es divergente (H: Supon que la suma fuera convergente y aplica la
Propiedad 2.9 para llegar a una contradiccion).
(b) Aplica lo anterior para estudiar el caracter de la sucesion




3
1
n
+ (1) 1
, n = 1, 2, ...
an = 1 +
n
n
(Sol.: (b) Divergente (oscilante). )
Ejercicio 2.32 Demuestra que la sucesion definida por recurrencia
a1 = 1

an+1 = 2 + an , n 1
es convergente y calcula su lmite.
(H: Demuestra que la sucesion es monotona creciente y acotada superiormente (Propiedad 2.8). Para el calculo del valor del lmite, toma lmites en
la relaci
on de recurrencia)
(Sol.: {an } es creciente y acotada superiormente; y lm an = 2. )
n

Ejercicio 2.33 Idem con


a1 = 1

an+1 = 2an + 3, n 1
(Sol.: {an } es creciente y acotada superiormente; y lm an = 3. )
n

Ejercicio 2.34 Encuentra la relacion entre a y b para que se verifique



lm
n

n+a
n+1

2n+3


= lm
n

n+3
n+2

bn+4

(Sol.: b = 2(a 1) )
40

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 2.35 Calcula los siguientes lmites


1
n
) log(
)
2
n
n
+
1 .
(a) lm
n 1
n
(n + 2)5 cos(
)
4n 1

n

.
(b) lm n + 1 n + 1
sin2 (

1
(Sol.: (a) 2; (b) )

Ejercicio 2.36 Calcula lm

1+

2! +

n+

3! + . . . +
n2

n!

.
(Sol.: e /2 )

Ejercicio 2.37 Calcula el lmite:





22
23
2n
2
2
2 ...
2
lm
n

(H: Calcula el logaritmo del lmite)


(Sol.: 2 )
Ejercicio 2.38 Calcula el lmite de las siguientes sucesiones:
(
(a) {an } =

(b) {bn } =

log n
log n

log n )
( > 0, > 0)
n=1

12 2 + 22 22 + 32 23 + . . . + n2 2n
2n n2


n=1

(Sol.: (a)

Ejercicio 2.39 Calcula lm


n

; (b) 2. )

22n (n!)2
.
(2n + 1)!
(Sol.: 0 )

41

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 2.40 Sean {an }


umeros reales
n=1 y {bn }n=1 dos sucesiones de n
an
= 1.
positivos de manera que lm
n bn

Explica razonadamente si las siguientes afirmaciones son ciertas o no:


a2n
= 1
n b2
n

(a) lm

ann
= 1
n bn
n

(b) lm

(c) lm

log an
= 1
log bn

Si alguna afirmaci
on no es cierta basta dar un contraejemplo.
(Sol.: a) Cierta; (b) Falsa; (c) Falsa. )

42

Miguel Angel Cifredo Campos


macifredo@gmail.com

Tema 3

Series Num
ericas
Imaginemos que se va a celebrar una carrera con las siguientes reglas:
1. El primer minuto debe recorrerse 100 metros.
2. El minuto siguiente debe recorrerse la mitad, 50 metros.
3. El minuto siguiente debe recorrerse la mitad del anterior, 25 metros.
4. El minuto siguiente dee recorrerse la mitad del anterior, 12,50 metros.
y as sucesivamente.
Por otra parte, al mismo tiempo empieza otra carrera, con las reglas ligeramente modificadas:
1. El primer minuto se recorren 100 metros.
2. El minuto siguiente se recorren la mitad de 100 metros, 50 metros.
3. El minuto siguiente se recorren la tercera parte de 100 metros, 33,3
metros.
4. El minuto siguiente se recorren la cuarta parte de 100 metros, 25 metros.
y as sucesivamente.
43

Miguel Angel Cifredo Campos


macifredo@gmail.com

Dos corredores empiezan a la vez las carreras. Si la meta de la primera se


encuentra situada a 300 metros y la de la segunda a 1000 metros, quien
llega primero a la meta y cuanto tiempo tarda?
Llamamos D = 100 metros la distancia recorrida en el primer minuto. La
primera carrera va recorriendo las distancias:
D+

D D D
+
+
+ ...
2
4
8

La segunda carrera va recorriendo las distancias:


D+

D D D
+
+
+ ...
2
3
4

La pregunta es cu
al de estas sumas alcanza la distancia a la que esta situada
la meta respectiva. Al acabar este tema deberemos ser capaces de dar una
respuesta razonada1 .

3.1.

Series reales

Del mismo modo que en el captulo anterior, nos limitaremos a tratar con
series de n
umeros reales, porque, de nuevo, el estudio de las series complejas se reduce al estudio de las series determinadas por las partes reales e
imaginarias.
Consideramos una sucesi
on de n
umeros reales
{a1 , a2 , a3 , . . . , an , . . .}
A partir de ella formamos una nueva sucesion {Sn }
n=1 definida de la siguiente forma:
S1 = a1
S2 = a1 + a2
S3 = a1 + a2 + a3
..
.
Sn = a1 + a2 + a3 + . . . + an =

n
X

ak

k=1
1
La respuesta es que el primer corredor no consigue llegar jam
as a la meta mientras el
segundo s.

44

Miguel Angel Cifredo Campos


macifredo@gmail.com

La sucesi
on {Sn } as definida se llama sucesion de las sumas parciales y an
recibe el nombre de termino general n-esimo. Llamaremos serie al par de
sucesiones {(an ), (Sn )}.
Definici
on 3.1 Diremos que la serie {(an ), (Sn )} es convergente si existe
lm Sn = S R. Al valor S se le llama suma de la serie y lo escribiremos
n

S = lm
n

n
X

an =

k=1

+
X

an

n=1

Por abuso de notaci


on representaremos a la serie {(an ), (Sn )} por su suma,
+
X
es decir, por
an ; aunque es posible que dicha suma ni siquiera exista.
n=1

Notas:

Algunas observaciones a tener en cuenta:

El ndice de sumaci
on n es una variable muda, y puede sustituirse por
cualquier otra letra.
No es necesario que una serie empiece a sumar desde n = 1. Puede
empezar desde n = 0 o n = p (p > 1); pero siempre se puede reescribir
para que empiece en n = 1 mediante un cambio de variable (ver el
Ejemplo 3.25).
Sn siempre representa la suma de los n primeros terminos de la sucesion
an y entonces se debera tener cuidado al calcularla cuando la serie no
empiece por n = 1.
Las definiciones de convergencia y divergencia no dependen del termino
a partir del cual empiezan a sumar, aunque si afecta al valor de la
suma (vease el Teorema 3.3). As, las propiedades que no involucren a
la suma de la serie son ciertas independientemente del termino en que
empiecen. Por este motivo, y por comodidad, enunciaremos casi todas
las propiedades para series que empiecen en n = 1 e, incluso, a veces
ni tan siquiera especificaremos
desde que termino empiezan a sumar,
P
escribiendo u
nicamente
an .
Aunque hablemos de la suma de una serie, no debemos olvidar que
dicha suma es, en realidad, un lmite de sumas y, entonces, pueden no
45

Miguel Angel Cifredo Campos


macifredo@gmail.com

ser ciertas las propiedades usuales de las sumas finitas: por ejemplo,
el orden de los sumandos s puede alterar la suma (consultad la Secci
on 3.3); o tambien resulta ser falsa la propiedad asociativa (ver el
Ejemplo 3.6).

Ejemplo 3.1 Reescribe la serie

+
X
n=2

n2

1
para que el ndice de sumacion
1

empiece en n = 1.
Soluci
on: Se trata, simplemente, de realizar un peque
no cambio de variable.
+
X
n=2

+
+
X
X
1
1
1
=
=
2
2
2
n 1
n 1
n 1
n1=1

k=1

donde k = n 1 y, substituyendo n = k + 1,
=

+
X
k=1

X
1
1
=
(k + 1)2 1
(n + 1)2 1
n=1

renombrando el contador.
Observa que la serie no ha cambiado; solo se ha modificado el contador:
+
X
n=2

X
1 1
1
1
1
=
+
+
+
.
.
.
=
2
n 1
3 8 15
(n + 1)2 1
n=1

Ejercicio 3.1 Reescribe la serie

+
X
n=3

1
para que empiece
n log(n) log [(log(n))]

a sumar desde n = 1:
(Sol.:

+
X
n=1

46

1
)
(n + 2) log(n + 2) log [(log(n + 2))]

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 3.2 Reescribe la serie

+
X


n=p

1
 para que empiece a sumar desn
p

de n = 1:
(Sol.:

+
X


n=1

1
 )
n+p1
p

Un ejemplo importante lo constituyen las llamadas series geometricas.


Ejemplo 3.2 Consideremos la progresion geometrica 1, r, r2 , r3 , . . . , rn , . . .
de la cual obtenemos la serie
1 + r + r2 + . . . + rn + . . . =

+
X

rn

(r R )

n=0

Vamos a calcular Sn en funcion de n. Para ello, multiplicamos Sn por la


raz
on r
Sn = 1 + r + r2 + r3 + . . . + rn2 + rn1
rSn = r + r2 + r3 + r4 + . . . + rn1 + rn
y restando las dos expresiones
Sn rSn = 1 rn Sn =

1 rn
1r

si r 6= 1

Para calcular el lmite de Sn distinguimos dos posibilidades, seg


un el valor
de la raz
on r:
1
n
n
1r
|r| > 1 lm rn = lm Sn =
|r| < 1 lm rn = 0
n

lm Sn =
n

Ahora,

S1 = 1

+
S2 = 1 + 1 = 2
X
r=1
1
..

n=0

Sn = n

47

lm Sn =
n

Miguel Angel Cifredo Campos


macifredo@gmail.com

r = 1

+
X

(1)n

n=0

S1 = 1

S2 = 1 1 = 0

S3 = 1 1 + 1 = 1
S4 = 1 1 + 1 1 = 0

..

S
=1

2n1
S2n = 0

En definitiva, la serie geometrica

+
X

6 lm Sn

rn es convergente sii |r| < 1 y, en ese

n=0

caso, suma exactamente


+
X

rn =

n=0

1
1r


+ 
X
1 n
Ejemplo 3.3 Calcula la suma de la serie

.
2
n=0

1
Soluci
on: Se trata de una serie geometrica de razon r = . Entonces, por
2
lo visto en el ejemplo anterior, es convergente (porque |r| < 1) y suma

+ 
X
1 n
2
1
=

=
1
2
3
1 2
n=0

Ejercicio 3.3 Calcula la suma de la serie 1 + 0,1 + 0,01 + 0,001 + . . .


(Sol.:

Teorema 3.2 Si tenemos dos series convergentes

n=1

entonces,

1.

+
X
n=1

(an + bn ) =

+
X

+
X
n=1

an +

+
X

bn = S + S 0

n=1

48

an = S y

+
X
n=1

10
)
9

bn = S 0

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.

+
X

(an ) =

n=1

+
X

an = S

n=1

Ejercicio 3.4PEncuentra dos series divergentes


la serie suma (an + bn ) sea convergente.

an y

bn de manera que

1
1
y bn =
)
n
n+1
P
P
Ejercicio P
3.5 Demuestra que si
an es convergente
y
bn es divergente
P
entonces
(an +
b
)
es
divergente.
(H:
Si
(a
+
b
)
fuera
convergente
n
n
n
P
tambien lo sera (an + bn an ).
(Sol.: an =

Esta propiedad nos permite encontrar la formula de la suma de una serie


geometrica cuyo primer termino no es 1; es decir, que no empieza a sumar
desde n = 0.
Ejemplo 3.4 Sea la serie

+
X

rn = rp + rp+1 + rp+2 + . . .

n=p

Entonces,
+
X
n=p

r =

+
X

p np

r r

=r

n=p

+
X

np

=r

n=p

+
X

rk =

k=0

rp
1r

por lo que,
+
X

rn =

n=p

rp
1r

Ejemplo 3.5 Calcula la suma de la serie

+ n
X
2 + 5n
n=1

10n

Soluci
on: La serie puede descomponerse en suma de dos, de la siguiente
forma:
 n 
 X
+ n
+ 
+  n
X
2 + 5n X 2n
5n
1
1
=
+ n =
+
n
n
10
10
10
5
2
n=1
n=1
n=1




+
+
X
1 n X 1 n
=
+
5
2
n=1

n=1

49

Miguel Angel Cifredo Campos


macifredo@gmail.com

puesto que cada una de estas dos u


ltimas series es convergente ya que se trata
de series geometricas de razon r = 15 < 1 y r = 12 < 1, respectivamente. Por
el ejemplo anterior podemos calcular su suma:
+  n
X
1
n=1

+  n
X
1/5
1
1
1/2
=
=
y
=
=1
1 1/5
4
2
1 1/2
n=1

por lo que, finalmente,


+ n
X
2 + 5n
n=1

10n

1
5
+1=
4
4

Ejercicio 3.6 Calcula la suma de la serie

+  n
X
1
n=3

2
(Sol.:

Ejercicio 3.7 Calcula la suma de la serie 8 + 6 +

1
4

9 27 81
+
+
+ ...
2
8
32
(Sol.: 32 )

Ejercicio 3.8 Calcula la suma de la serie 4 2 + 1

1
+ ...
2
(Sol.:

8
)
3

Teorema 3.3 La convergencia de una serie no depende del termino en el


que se empiece a sumar; es decir;
+
X

an es convergente

+
X

an es convergente

n=p

n=1

Adem
as, en este caso
+
X

an = (a1 + a2 + . . . + ap1 ) +

+
X
n=p

n=1

50

an

(p > 1)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema 3.4 Si la serie

+
X

an es convergente entonces tambien lo es

n=1

+
X

bn

n=1

donde
b1 = a1 + a2 + . . . + an1
b2 = an1 +1 + an1 +2 + . . . + an2
b3 = an2 +1 + an2 +2 + . . . + an3
...
Es decir, tambien es convergente la serie obtenida por agrupacion de terminos de la primera. La misma propiedad es cierta si cambiamos convergente
por divergente a .
El recproco de la propiedad anterior no es cierto como lo prueba el siguiente
ejemplo:
Ejemplo 3.6 Consideremos la serie geometrica de razon r = 1, es decir,
1 1 + 1 1 + 1 1 + ...
Hemos visto antes que esta serie no es convergente, no obstante esto, al
agrupar terminos:
(1 1) + (1 1) + (1 1) + . . . = 0 + 0 + 0 + . . . = 0
si resulta una serie convergente.
No obstante, puede probarse que el recproco de la propiedad anterior s es
cierto si la serie es de terminos positivos.

3.2.

Criterios de convergencia

Las series geometricas son sencillas de sumar. En general, calcular la suma


exacta de una serie no resulta tarea facil. Antes de intentar encontrar la
suma de una serie puede ser muy u
til saber si la serie es o no es convergente.
Este tipo de problemas se conoce como Problemas sobre el car
acter de una
serie. En las siguientes secciones estableceremos una relacion de criterios
que nos permitir
an determinar el caracter de una serie. El primero de todos
nos da una condici
on necesaria que debe cumplir toda serie convergente.
51

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema 3.5 (Condici


on necesaria de convergencia) Si la serie

+
X

an

n=1

es convergente lm an = 0
n

Ejemplo 3.7 La condici


on anterior no es suficiente, como lo prueba la llaP+ 1
mada serie arm
onica n=1 .
n
1
= 0 y, no obstante, la serie es divergente.
n
Vamos a probar esto u
ltimo. Sea {Sn } la sucesion de las sumas parciales ,
es decir,
1 1
1
Sn = 1 + + + . . . +
2 3
n
1 1
1
1
1
S2n = 1 + + + . . . + +
+ ... +
2 3
n n+1
2n
As,

Esta serie verifica que lm


n

1
1
1
1
1 n terminos 1
+
+ n te.rminos
..
+
>
+
+
...
+
n+1 n+2
2n
2n 2n
2n
n
1
=
=
2n
2

S2n Sn =

de donde lm(S2n Sn )
n

1
y entonces lm(S2n Sn ) 6= 0.
n
2

Concluimos, entonces, que la sucesion {Sn } no puede ser convergente; porque


si lm Sn = S, entonces tambien lm S2n = S (al ser S2n una subsucesion de
n

Sn ); pero entonces
lm(S2n Sn ) = 0
n

y hemos probado anteriormente que no puede ser as. Por tanto, la serie
arm
onica es divergente.
Ejemplo 3.8 La serie

+
X
n=0

n
n
es divergente porque lm
= 1 6= 0.
n n+1
n+1

Ejercicio 3.9 Estudia el caracter de la serie

+ 
X
n=1


1
2+
.
n
(Sol.: Divergente. )

52

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 3.10 Estudia el caracter de la serie

+
X
n=1


3
log 2 + 2 .
n

(Sol.: Divergente. )
n
+ 
X
n
.
Ejercicio 3.11 Estudia el caracter de la serie
n+1
n=1

(Sol.: Divergente. )

3.2.1.

Una serie

Series de t
erminos positivos
+
X

an donde cada an > 0 se dice una serie de terminos positivos.

n=1

En este caso, como


Sn+1 = Sn + an+1 > Sn
resulta que la sucesi
on de sumas parciales {Sn } es creciente. Entonces, la
serie ser
a convergente si, y solo si, la sucesion {Sn } esta acotada superiormente. Si no lo est
a, la serie sera divergente a + (Teorema2.8).
Ejemplo 3.9 Hemos visto antes que la serie armonica era divergente. Como
es de terminos positivos podemos afirmar que su suma vale +.

Si una serie

+
X

an es de terminos negativos (i.e., an < 0 n) entonces el

n=1

estudio de este tipo de series se puede reducir al de las series de terminos


positivos, teniendo en cuenta que
+
X

an =

n=1

+
X

an

n=1

y esta u
ltima ya es de terminos positivos y tiene el mismo caracter.
Adem
as, como el car
acter de una serie no se altera si eliminamos un n
umero
finito de terminos, equipararemos a este tipo todas aquellas series que si
bien no son de terminos positivos, solo tienen un n
umero finito de terminos
negativos.
Vamos a ver algunos criterios para averiguar si una serie de terminos positivos es convergente o divergente.
53

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema 3.6 (Criterio de la serie mayorante) Sean


series de terminos positivos.
Si

bn es convergente y an bn n

Si

an es divergente y an bn n

Ejemplo 3.10 Sea la serie

+
X
n=2

an y

bn dos

an es convergente
P
bn es divergente

1
log n

1
1
<
, n 2 y como la
n
log n
+
+
X
X
1
1
es divergente concluimos que
es divergente.
serie
n
log n
Soluci
on: Como log n < n, n 2, resulta

n=2

n=2

Ejercicio 3.12 Averigua el caracter de la serie

+
X
2 cos(n)
n=2

(Sol.: Divergente. )
Ejercicio 3.13 Sean

an y

n=1

bn dos series convergentes de terminos

n=1

positivos. Prueba que tambien lo es

+ p
X

an bn . (H: Utiliza la desigualdad

n=1

an + bn
an bn
y el criterio de la serie mayorante.)
2

Ejercicio 3.14 Sean

X
n=1

an y

bn dos series convergentes de terminos

n=1

positivos. Prueba que tambien lo es

+
X
an bn
. (H: Utiliza la desigualdad
an + bn

n=2

an bn
an y el criterio de la serie mayorante.)
an + bn
Como consecuencia del criterio de la serie mayorante, se obtiene el siguiente
criterio.
54

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema 3.7 (Criterio de comparaci


on en el lmite) Sean
an
= . Entonces,
dos series de terminos positivos y sea lm
bn

an y

bn

P
P
Si 0 < < +, entonces
an y
bn tienen el mismo caracter.
P
P
Si = 0 y
bn es convergente, entonces
an es convergente.
P
P
Si = + y
bn es divergente, entonces
an es divergente.
Ejemplo 3.11 Considerese la serie

+
X
n=1

Vamos a compararla con la serie

+
X
n=2

1
1+

1
1
+ ... +
2
n

1
, que sabemos es divergente (Ejemlog n

plo 3.10)
1
1
1
1 + + ... +
log n
2
n = lm
lm
1
1
1
n
n
1 + + ... +
log n
2
n
Este lmite lo resolvemos por Stolz:
lm
n

log n
1
1
1 + + ... +
2
n

log(n + 1) log n


1
1
1
1
1
1 + + ... + +
1 + + ... +
2
n n+1
2
n


n+1


log
n + 1 n+1
n
= lm log
= lm
1
n
n
n
n+1
= log e = 1 6= 0
= lm
n

Por tanto, ambas series tienen el mismo caracter y, por tanto,


+
X

1
es divergente.
1
1
n=1 1 +
+ ... +
2
n
El inconveniente de este criterio reside en que necesitamos otra serie conocida
para poder compararla. Las mas utilizadas para comparar son las llamadas
series de Riemann (ver el Ejemplo 3.15).
55

Miguel Angel Cifredo Campos


macifredo@gmail.com

Para evitar este problema, veremos otros criterios en los que solo se utiliza
el termino general an de la serie a investigar y, por tanto, no se necesita
ninguna otra serie para comparar.
Teorema 3.8 (Criterio de DAlambert) Sea
an+1
= . Entonces,
nos positivos y sea lm
an
Si 0 < 1, entonces

an una serie de termi-

an es convergente.
P
Si 1 < +, entonces
an es divergente.
Este criterio se suele utilizar cuando el termino general an consta de productos o cocientes. Notar que este criterio no determina el caracter de la
an+1
serie cuando lm
= 1. Cuando esto ocurre puede utilizarse el criterio
an
siguiente.
P
Teorema 3.9 (Criterio
de Raabe)
Sea
an una serie de terminos po

an+1
= . Entonces,
sitivos y sea lm n 1
an
Si < 1, entonces

an es divergente.

Si > 1, entonces

an es convergente.

Ejemplo 3.12 Sea la serie

+ 3
X
n
n=1

n!

. Identificamos el termino general de la

serie
an =

n3
n!

y aplicamos el criterio de DAlambert:

lm
n

an+1
an

(n + 1)3


1
n+1 3
(n + 1)!
= lm

=0<1
= lm
3
n
n
n
n+1
n
n!

y podemos concluir que

+ 3
X
n
n=1

n!

es convergente.

56

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 3.13 Sea la serie

+
X
1 3 5 (2n 1)
n=1

2 4 6 (2n)

. Identificamos el termino

general de la serie
an =

1 3 5 (2n 1)
2 4 6 (2n)

y aplicamos el criterio de DAlambert:

lm
n

an+1
an

1 3 5 (2n 1)(2n + 1)
2n + 1
2 4 6 (2n)(2n + 2)
= lm
= lm
=1
n 2n + 2
n
1 3 5 (2n 1)
2 4 6 (2n)

y no podemos concluir nada. Aplicamos ahora el criterio de Raabe, utilizan2n+1


do que, seg
un el c
alculo anterior, an+1
an = 2n+2 :


an+1
lm n 1
n
an


2n + 1
1
= lm n 1
= lm n
n
n
2n + 2
2n + 2
n
1
= lm
= <1
n 2n + 2
2

y entonces obtenemos que


+
X
1 3 5 (2n 1)
n=1

2 4 6 (2n)

es divergente.

Ejercicio 3.15 Estudia el caracter de la series (a)

+
+
X
X
(n!)2
(n!)2
y (b)
.
(3n)!
(2n)!

n=1

n=1

(Sol.: (a) Convergente; (b) Convergente )

Ejercicio 3.16 Estudia el caracter de la serie

P+ 2n n!
.
n=1
nn
(Sol.: Convergente. )

Ejercicio 3.17 Estudia el caracter de la serie

P+ (n!)2
.
n=1
2n2
(Sol.: Convergente. )

57

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 3.18 Estudia el caracter de la serie

P+ 4 7 10 (3n + 1)
.
n=1
2 6 10 (4n 2)
(Sol.: Convergente. )

Ejercicio 3.19 Estudia el caracter de la serie

P+ (n!)2 4n
.
n=1
(2n)!
(Sol.: Divergente. )

El siguiente criterio es equivalente al criterio de DAlambert pero se utiliza


en vez de este cuando el termino general an consta de potencias de exponente
n, n2 , etc.
X
Teorema 3.10 (Criterio de la raz o de Cauchy) Sea
an una serie

n
de terminos positivos y sea lm an = . Entonces,
Si 0 < 1, entonces

an es convergente.
P
Si 1 < +, entonces
an es divergente.
Ejemplo 3.14 Sea la serie

+
X
1 + sin3 n

nn

n=1

an =

. Identificamos el termino general

1 + sin3 n
nn

y aplicamos el criterio de la raz:


r
p
n
3

1 p
1 + sin3 n
n 1 + sin n
n
lm n an = lm
=
l
m
=
l
m
1 + sin3 n
n
n
n n
n
n
n
n
p
n
1 + sin3 n
Para calcular este lmite, vamos a probar en primer lugar que
es una sucesi
on acotada. En efecto,
p

n
n
1 sin3 n 1 0 1 + sin3 n 2 0 1 + sin3 n 2 2
entonces, aplicando el Teorema 2.11,
lm

an = lm
n

1 p
n
1 + sin3 n = 0 < 1
|
{z
}
n
|{z}
acotada

y concluimos que

+
X
1 + sin3 n
n=1

nn

es convergente.
58

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 3.20 Determina el caracter de la serie

P+

n=1 n

 n
2
.
3

(Sol.: Convergente. )
n

P+
n
.
Ejercicio 3.21 Determina el caracter de la serie n=1
2n + 1
(Sol.: Convergente. )


1 n
2+
P+
n
Ejercicio 3.22 Determina el caracter de la serie n=1
.
2
n
(Sol.: Divergente. )
El criterio siguiente se suele utilizar cuando el termino general an consta de
potencias de exponente cualquiera.
P
Teorema 3.11 (Criterio
Logartmico) Sea
an una serie de terminos
 
1
log
an
positivos y sea lm
= . Entonces,
log n
Si < 1, entonces

an es convergente.

Si > 1, entonces

an es divergente.

Ejemplo 3.15 Vamos a estudiar la convergencia de una familia de series,


+
X
1
, R. Identificamos el termino genellamadas Series de Riemann:
n
n=1
ral:
1
an =
n
y aplicamos el criterio logartmico:
 
1
log
log n
log n
an
lm
= lm
= lm
=
n
n log n
n
log n
log n
As, si > 1 la serie es convergente y si < 1 la serie es divergente. Si
= 1 la serie queda
+
+
X
X
1
1
=

n
n
n=1

n=1

59

Miguel Angel Cifredo Campos


macifredo@gmail.com

que es divergente.
Resumiendo,

+
Convergente si > 1
X
1
, ( R)

n
n=1
Divergente si 1
Las series de Riemann se utilizaran a menudo en el criterio de comparacion
en el lmite, sobre todo si el termino general es un cociente de polinomios.
En el ejemplo siguiente vemos su aplicacion.
Ejemplo 3.16 Determina el caracter de la serie

+
X
5n 3
.
n3 + n

n=1

Soluci
on: Vamos a compararla en el lmite con la serie de termino general
1
d nn3 = 2 (que son los dos infinitos de mayor orden que aparecen en la serie
n
a estudiar).
5n3
5n3 3n2
3
lm n 1+n = lm
=5
3+n
n
2
n
X 1
por lo que la serie inicial tiene el mismo caracter que la serie
y, siendo
n2
esta convergente, por ser una serie de Riemann de exponente = 2 > 1, nos
permite concluir que
+
X
5n 3
es convergente.
n3 + n

n=1

Ejercicio 3.23 Determina el caracter de la serie

P+

n=1

1
.
n2 2n + 3

(Sol.: Convergente. )
Ejercicio 3.24 Determina el caracter de la serie

P+

n=1

3
n2

n
.
+1

(Sol.: Convergente. )
60

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 3.25 Determina el caracter de la serie

P+

n=1

1
.
n3 + 1

(Sol.: Convergente. )
Ejercicio 3.26 Determina el caracter de la serie

P+

n=2

[log(log(n))]log(n)

(Sol.: Convergente. )
Ejercicio 3.27 Determina el caracter de la serie

P+

n=1

p
n

log(n)

(Sol.: Divergente. )
X
Teorema 3.12 (Criterio de Condensaci
on) Sea
an una serie de terminos positivos, donde la sucesion {an } es decreciente, entonces las series
X
X
an
y
2k a2k
n

tienen el mismo car


acter.
Ejemplo 3.17 Determina el caracter de la serie

+
X
n=2

1
.
n log n

1
. Como {n log n} es una sucesion crecienn log n
te deducimos que {an } es decreciente. As, podemos aplicar el criterio de
+
+
X
X
1
1
condensaci
on y concluir que
y
2k k
tienen el mismo
n log n
2 log 2k
n=2
k=1
car
acter. Estudiemos ahora esta u
ltima:

Soluci
on: Llamamos an =

+
X
k=1

2k

k=1

k=1

k=1

X 1
X 1
1
1 X1
=
=
=
k
k
k
k log 2
log 2
k
2 log 2
log 2

y resulta ser la serie arm


onica que es divergente. Concluimos, pues, que
+
X
1
es divergente.
n log n
n=2

61

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 3.28 Determina el caracter de la serie

P+

n=2

1
, p N.
n (log(n))p

(Sol.: Convergente si p > 1. )


Ejercicio 3.29 Determina el caracter de la serie

P+

n=3

1
.
n log(n) log [(log(n))]
(Sol.: Divergente. )

3.2.2.

Series alternadas

Definici
on 3.13 Una serie

+
X

an se dice alternada si an an+1 < 0, para

n=1

todo n (i.e. sus terminos alternan el signo).


Para series alternadas disponemos del siguiente criterio:
P
Teorema 3.14 (Criterio de Leibnitz) Sea
an con an+1 an < 0, para
todo n. Si la sucesi
on {|an |} es decreciente, entonces
X
an es convergente lm |an | = 0
n

Notas:
A una serie alternada no se le puede aplicar ninguno de los criterios
vistos anteriormente para series de terminos positivos.
Si la sucesi
on {|an |} es creciente entonces no puede tener lmite 0 y
as la serie ser
a divergente, pero la sucesion {|an |} puede no ser ni
creciente ni decreciente y, en este caso, no podremos aplicar el criterio
de Leibnitz.
Toda serie alternada puede ser escrita de la forma

+
X

(1)n an o de la

n=1

forma

+
X

(1)n+1 an donde an > 0 (dependiendo que sean negativos

n=1

los terminos impares o pares, respectivamente).


62

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 3.18 Determina el caracter de la serie

+
X
n=1

1
(1)n+1 .
n

Soluci
on: Se trata de una serie alternada. Veamos si cumple la hipotesis
del criterio de Leibnitz.
1
1
Llamamos an = (1)n+1 ; por tanto |an | = . Como {n} es una sucesion
n
n
creciente, deducimos que {an } es decreciente. Por tanto, podemos aplicar el
criterio de Leibnitz y al ser
1
lm = 0
n n
podemos concluir que

+
X
n=1

(1)n+1

1
es convergente.
n

Ejemplo 3.19 Comprobar que la serie alternada


1

1 1 1 1 1 1 1 1 1 1 1
+ + + + + + ...
2 2 3 2 3 3 4 3 4 3 4

diverge y explicar por que no se contradice el criterio de Leibnitz.


Soluci
on: No se puede aplicar el criterio de Leibnitz porque la sucesion de
los valores absolutos de los terminos no es decreciente. No es convergente
porque al agrupar los terminos de la forma:

 
 

1
1 1 1 1
1 1 1 1 1 1
+
+
+ ...
+
+ +
1
2
2 3 2 3
3 4 3 4 3 4
obtenemos la serie

1 1 1
+ + + ...
2 3 4
que es divergente y recuerda que si una serie es convergente, cualquier reagrupaci
on debe ser convergente (Teorema 3.4).

Ejercicio 3.30 Determina el caracter de la serie

P+ (1)n+1 n
.
n=1
2n 1
(Sol.: Divergente. )

63

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 3.31 Determina el caracter de la serie

P+ (1)n
.
n=1
n
(Sol.: Convergente. )

Ejercicio 3.32 Determina el caracter de la serie

P+ (1)n
.
n=1
log(n)

(Sol.: Convergente. )
 
P
n+1 sin 1 .
Ejercicio 3.33 Determina el caracter de la serie +
(1)
n=1
n
(Sol.: Convergente. )

P+ 1 + (1)n n
Ejercicio 3.34 Determina el caracter de la serie n=1
.
n
(Sol.: Divergente. )

3.3.

Convergencia absoluta y condicional


+
X

Definici
on 3.15 Una serie

an se dice Absolutamente Convergente si la

n=1

serie

+
X

|an | es convergente.

n=1

Ejemplo 3.20 La serie

+
X
(1)n

es convergente (Ejemplo 3.18) pero no


n
absolutamente convergente, ya que la serie de los valores absolutos no es
convergente:
+
+
X
(1)n X
1


divergente
n =
n
n=1

n=1

n=1

Ejercicio 3.35 Estudiar la convergencia y la convergencia absoluta de la


serie:
1
1
1
1
1
1 + + ... +
+ ...
2n 1
2
3
4
2n
(Sol.: Convergente pero no absolutamente. )
64

Miguel Angel Cifredo Campos


macifredo@gmail.com

Nota: Est
a claro que para series de terminos positivos ( o de terminos
negativos) los conceptos de convergencia y convergencia absoluta son equivalentes. Es m
as, si record
ais que el caracter de una serie no depende del
termino en que empieza a sumar, podemos afirmar lo mismo para series con
un n
umero finito de terminos negativos (o, respectivamente, de terminos
positivos).
En general la relaci
on entre la convergencia y la convergencia absoluta viene
dada por la siguiente propiedad:
P
P
Teorema 3.16 Si
an es absolutamente convergente, entonces
an es
convergente.
Esta propiedad nos da un nuevo criterio para estudiar la convergencia de las
series alternadas:
Ejemplo 3.21 Consideremos la serie:
1

1
1
1
1
1
1
1
+ 3 2 + 3 2 + ... +

+ ...
2
3
2
3
4
5
6
(2n 1)
(2n)2

Es una serie alternada pero no podemos aplicarle el criterio de Leibnitz


porque los terminos, en valor absoluto, no forman una sucesion decreciente.
Estudiemos la convergencia absoluta:

+ 
X
1 1 1 1
1
1
1
1
+
+. . . =
+
1+ 2 + 3 + 2 + 3 +. . .+
2 3 4 5
(2n 1)3 (2n)2
(2n 1)3 (2n)2
n=1

Si esta u
ltima la descomponemos en dos series:
+
X
n=1
+
X
n=1

X 1
1
que es convergente, comparandola con
3
(2n 1)
n3
X 1
1
que
es
convergente,
compar
a
ndola
con
(2n)2
n2

Entonces, como las dos son convergentes, concluimos que la serie



+ 
X
1
1
+
(2n 1)3 (2n)2
n=1

65

Miguel Angel Cifredo Campos


macifredo@gmail.com

es convergente, por lo que la serie primera resulta ser absolutamente convergente y, por tanto, convergente.
P
P
P
Definici
on 3.17P
Dadas dos series
an y
bn , diremos que
bn es una
reordenaci
on de
an si la sucesion {bn } se ha obtenido a partir de {an }
reordenando sus terminos.
Definici
on 3.18 Una serie

an se dice:

Incondicionalmente convergente si la serie es convergente y cualquier


reordenaci
on de ella es convergente y suma lo mismo.
Incondicionalmente divergente si la serie es divergente y cualquier
reordenaci
on de ella es divergente.
Condicionalmente convergente si es convergente pero no incondicionalmente convergente.
Condicionalmente divergente si es divergente pero no incondicionalmente divergente.
El siguiente resultado simplifica el estudio de la convergencia condicional:
P
Teorema 3.19 La serie
an es incondicionalmente convergente si, y solo
si, es absolutamente convergente.
Ejemplo 3.22 La serie

+
X
(1)n

es condicionalmente convergente, ya que


n
es convergente (por el criterio de Leibnitz) pero no absolutamente convergente (ver el Ejemplo 3.20).
n=1

Si una serie tiene un n


umero finito de terminos negativos (o de terminos
positivos) sabemos que su convergencia implica convergencia absoluta. Por
tanto, para que una serie sea condicionalmente convergente ha de tener infinitos terminos
P positivos e infinitos terminos negativos. Suponemos entonces
una serie
an de manera que {an } tiene infinitos terminos positivos {bn }
e infinitos terminos negativos {cn }. Entonces,

66

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema 3.20 Con la notacion anterior se tienen las siguientes propiedades:



P
P
P bn
convergentes
an incondicionalmente convergente.
|cn |

P
P
b
una es convergente
n
P

an incond. divergente.
|cn |
y la otra divergente

P
P
P bn
divergentes
an cond. convergente o cond. divergente.
|cn |
Adem
as, en este u
ltimo caso, si lm an = 0, podemos obtener una reordenaci
on o bien divergente o bien convergente.
Ejemplo 3.23 Estudia la convergencia condicional de la serie
X
1
1
1
1
1
1

+
.
.
.
=
an
12 2 32 4 52 6
Soluci
on: Consideramos por separado los terminos positivos bn y negativos
cn .
+

bn =

X
1
1
1
1
+ 2 + 2 + ... =
convergente.
2
1
3
5
(2n 1)2
n=1

|cn | =

X 1
1 1 1
+ + + ... =
divergente.
2 4 6
2n
n=1

Entonces, la serie

an es incondicionalmente divergente.

Ejercicio 3.36 Estudia la convergencia y la convergencia absoluta de la


1 2 3 4 5 6
serie + + + . . .
2 3 4 5 6 7
(Sol.: Divergente. )

67

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 3.37 Estudia la convergencia y la convergencia absoluta de la


1
1
1
1
1
1
serie + + + . . .
1 1! 2 2! 3 3!
(Sol.: Incondicionalmente divergente. )
Ejercicio 3.38 Dada la serie
1
1
1
1
1
+ ...
1 + + ... +
2n 1
2
3
4
2n
de la cual sabemos que es convergente pero no absolutamente (Ejercicio 3.35);
considera la siguiente reordenacion

 

1
1
1
1
1

1+

+
+

+ ...
3
2
5
7
4


1
1
1
+
+

+ ...
4n 3
4n 1
2n
Que podemos decir sobre su convergencia? Y sobre la convergencia absoluta?
(Sol.: No absolutamente convergente y divergente. )

3.4.

Sumaci
on de series

Hasta ahora hemos visto metodos


Ppara determinar si una serie es convergente
o divergente. Cuando una serie
an es convergente sabemos que tiene una
suma finita S. El objetivo de esta seccion es calcular la suma de la serie. Este
problema resulta m
as complicado de abordar que el estudio del caracter,
dado que la suma es, en realidad, el lmite de la sucesion de las sumas
parciales y no siempre ser
a factible poder calcularlo.
Hemos estudiado ya la suma de una serie geometrica y, con una tecnica
parecida, estableceremos la suma de algunos tipos mas de series.
(a) Series Aritmetico-Geometricas
P
Son de la forma +
on aritmetica (de
n=1 an bn donde {an } es una progresi
distancia d) y {bn } es una progresion geometrica (de razon r). Entonces,
an = a1 + d(n 1) n = 1, 2, . . .
bn = b1 rn1

n = 1, 2, . . .
68

Miguel Angel Cifredo Campos


macifredo@gmail.com

Se observa por simple sustitucion que la serie no es convergente cuando


|r| = 1. Vamos a calcular Sn en los otros casos:
Sn = a1 b1 + a2 b2 + a3 b3 + . . . an1 bn1 + an bn
rSn = a1 b2 + a2 b3 + a3 b4 + . . . an1 bn + an bn+1
de donde restando ambas expresiones resulta
Sn (1 r) = a1 b1 + [(a2 a1 )b2 + . . . + (an an1 )bn ] an bn+1
pero, como la diferencia entre dos terminos consecutivos de una progresion
aritmetica siempre es la distancia d, obtenemos:
Sn (1 r) = a1 b1 + d [b2 + b3 + . . . + bn ] an bn+1


= a1 b1 + db1 r + r2 + . . . + rn1 an bn+1
y ahora como r + r2 + . . . + rn1 =

r rn
obtenemos
1r

Sn (1 r) = a1 b1 + db1
y aislando Sn :
Sn =

r rn
an bn+1
1r

a1 b1
r rn
an bn+1
+ db1

2
1r
(1 r)
1r

Suponemos ahora que |r| < 1, entonces

lm rn = 0
n

lm an bn+1 = lm(d(n 1) + a1 )b1 r = 0


n

lm Sn =
n

drb1
a1 b1
+
1 r (1 r)2

Por contra si |r| > 1 entonces lm rn = y no existe lm Sn .


n

Resumiendo, la serie aritmetico-geometrica

+
X

an bn es convergente sii |r| <

n=1

1 y en este caso suma exactamente


+
X
n=1

an bn =

a1 b1
drb1
+
1 r (1 r)2
69

(3.1)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 3.39 Encuentra la formula de la suma cuando la serie empieza a


sumar desde n = p.
Ejemplo 3.24 Calcularemos la suma de la serie:
+
X
n=1

3 4 5 (n + 2)
2 4 6 8 (2n + 2)

Soluci
on: Simplificando los terminos, se observa que corresponde a una
serie aritmetico-geometrica.
+
X
n=1

3 4 5 (n + 2)
2 4 6 8 (2n + 2)

3
34
345
+
+
24 246 2468

3456
+ ...
2 4 6 8 10
3
4
5
6
=
+ 4 + 5 + 6 + ...
3
2
2
2
2
+
X
n+2
=
2n+2

n=1

de donde d = 1, r =
la (3.1), se obtiene

1
1
, a1 = 3 y b1 = 3 por lo que aplicando la formu2
2

1
1 1
1 3
3 4 5 (n + 2) 3 23
2 2 =1
+
1
1
2 4 6 8 (2n + 2)
n=1
1
(1 )2
2
2
+
X

(b) Series Hipergeometricas


Son series de terminos positivos

+
X

an que cumplen la relacion

n=1

an+1
n +
=
an
n +

con + 6= 0

Puede probarse que


Sn =

(n + )an+1 a1
+
70

Miguel Angel Cifredo Campos


macifredo@gmail.com

Si suponemos ahora que la serie

+
X

an es convergente, entonces necesaria-

n=1

mente deben ser lm nan+1 = 0 y lm an+1 = 0 y as,


n

S = lm Sn =
n

+
X

an =

n=1

a1

(3.2)

Nota: Para determinar los valores correctos de , y , la serie debe


empezar a sumar desde n = 1.
Ejemplo 3.25 Sea la serie

+
X


n=p


Soluci
on: Como

n
p


=

1

n
p

n!
resulta
p!(n p)!
+

+
X


n=p

X p!(n p)!
1
=
n!
n
n=p
p

Estudiemos primero su car


acter mediante el criterio de DAlambert: llamanp!(n p)!
do an =
(n p ) obtenemos
n!
an+1
lm
n
an

p!(n + 1 p)!
(n + 1)!
= lm
n
p!(n p)!
n!
n+1p
= lm
=1
n
n+1

Aplicamos ahora el criterio de Raabe






an+1
n+1p
lm n 1
= lm n 1
n
n
an
n+1
np
=p
= lm
n n+1
71

Miguel Angel Cifredo Campos


macifredo@gmail.com

As si p > 1 la serie es convergente. El caso p = 1 lo estudiaremos mas


adelante.
Adem
as, la serie es hipergeometrica porque
n+1p
an+1
=
an
n+1
Ahora bien, para determinar la suma y, mas concretamente, los valores
correctos de , , la serie debe empezar a sumar desde n = 1. Para conseguirlo haremos un cambio de variable:
+
X
p!(n p)!
n=p

n!

+
X
n+1=p+1

+
X
n+1p=1

Llamando ahora ak =

p!(n p)!
n!
p!(n p)!
n!

k=n+1p

+
X
p!(k 1)!
(k + p 1)!
k=1

p!(k 1)!
k 1 obtenemos
(k + p 1)!
ak+1
ak

p!k!
k
(k + p)!
=
=
p!(k 1)!
k+p
(k + p 1)!

de donde = 1, = 0 y = p con + = 1 p y, aplicando la


f
ormula (3.2), se obtiene
+
X
p!(n p)!
n=p

n!

+
X
p!(k 1)!
1p
p
=
=
=
(k + p 1)!
p1
p1
k=1

 
n
Finalmente, si p = 1, resulta que
= n, de donde
1
+
X
p!(n p)!
n=p

n!

+
X
1
=
n
n=1

que es divergente.

72

(p > 1)

Miguel Angel Cifredo Campos


macifredo@gmail.com

(c) Series telesc


opicas
P
Una serie +
opica si el termino general an puede desn=1 an se dice telesc
componerse de la forma
an = bn bn1
es decir, es la diferencia entre dos terminos consecutivos de otra sucesion.
En este caso, es posible hallar la suma parcial Sn y calcular su lmite.
Ejemplo 3.26 Calcula la suma de la serie

+
X
n=1

1
.
n(n + 1)

Soluci
on: La serie es telescopica puesto que, al descomponer

1
en
n(n + 1)

fracciones simples, resulta


1
1
1
=
n(n + 1)
n n+1
Entonces, para calcular Sn hacemos:
a1 =
a2 =
a3 =
..
.
an1 =
an =

1
1
1
2
1
3

1
2
1
3
1
4

1
1
n1 n
1
1
n n+1

a1 + a2 + . . . + an = 1

1
n+1

Ahora, al sumar estas igualdades, resulta que, en la parte de la derecha


se cancelan los terminos dos a dos (salvo el primero y el u
ltimo) y en la
izquierda queda a1 + a2 + . . . an = Sn , por lo que
1
Sn = 1
n+1
y, por tanto,


+
X
1
1
= lm Sn = lm 1
=1
n
n
n(n + 1)
n+1
n=1

73

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 3.40 Calcula la suma de la serie

P+

n=2

previamente en fracciones simples.

n2

1
, descomponiendola
1
(Sol.:

Ejercicio 3.41 Calcula la suma de la serie

P+

n=2

3
)
4

n
, descom(n + 1)(n + 2)

poniendola previamente en fracciones simples.


(Sol.: + )
Ejercicio 3.42 Calcula la suma de la serie

X
n=2


1
log 1 2 .
n
(Sol.: log 2 )

3.5.

Problemas adicionales

Ejercicio 3.43 Averigua el caracter de las series


P log(n)
n2
P 4n
(d)
3n + 1
P
1
(g)
[log(n)]n
P sin (/n)

(j)
n

(a)

P 2(1)n+1
en + en
P (2n)!
(e)
5n
P n7n
(h)
n!
(b)

(c)

cos(n)

P nn
n!
P cos(n)
(i)
2n
(f )

(Sol.: Son convergentes (a), (b), (g), (h), (i) y (j). )


Ejercicio 3.44 Averigua el caracter de la serie

X
n!

(2 + 1)(2 + 2) (2 + n)
(Sol.: Convergente )

74

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 3.45 Estudia el caracter de las series:




P 3
P
P
1
(b)
(c)
(7)n
2+
(a)
n
n
5
s






P
P
P 3
3
1
1
2
(d)
log 2 + 2
(e)
log 1 +
(f )
tan
n
n
n4 + 3
P
P 5n 3
n
(h)
2
n(n + 1)
(n + 1)2n1
 
P n!
P
1
(k)
(j)
sin
n
3n
 2

P
P (1)n
(n + 1)2
(m)
sin
(n)
3
n
n!
(g)

P n2n + 5
4n3 + 3n
P log(n)
(l)
n+1

(i)

(Sol.: Son convergentes: (b), (f ), (g), (h), (m) y (n). )


Ejercicio 3.46 Estudia la convergencia y la convergencia absoluta de la
serie
3 1
4
1
5
1
n+1
1
log + log + + log + + . . . + log
+ ...
2
2 3
3
4
4
n
n



1 n+1
1 n
< e < 1+
para demostrar
(H: Utilizar la desigualdad 1 +
n
n
que los valores absolutos de los terminos de la serie forman una sucesion
decreciente)


(Sol.: Condicionalmente convergente )


Ejercicio 3.47 Calcula la suma de la serie


+ 
X
1
1

.
2n 3n

n=1

(Sol.:
Ejercicio 3.48 Calcula la suma de la serie

P+

n=1

1
)
2

4
, descomponiendon(n + 2)

la previamente en fracciones simples.


(Sol.: 3 )

75

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 3.49 Calcula la suma de la serie

P+

n=1

1
, des(2n + 1)(2n + 3)

componiendola previamente en fracciones simples.


(Sol.:

Ejercicio 3.50 Calcula la suma de la serie

X
n=1

X
n=2

1
)
12

1
, sabiendo que
(4n 1)2 1

1
(1)n+1 = log 2.
n
(Sol.:

76

1
log 2 )
4

Miguel Angel Cifredo Campos


macifredo@gmail.com

Tema 4

Series de Potencias
Una expresi
on de la forma
a0 + a1 (x c) + a2 (x c)2 + . . . + an (x c)n + . . . =

+
X

an (x c)n

n=0

recibe el nombre de serie de potencias centrada en c.


Una serie de potencias puede ser interpretada como una funcion de x
f (x) =

+
X

an (x c)n

n=0

cuyo dominio es el conjunto de los x R para los que la serie es convergente


y el valor de f (x) es, precisamente, la suma de la serie en ese punto x.
Las series de potencias, vistas como funciones, tienen un comportamiento
bueno, en el sentido de que son funciones continuas y derivables de cualquier
orden. M
as a
un, su funci
on derivada es, otra vez, una serie de potencias.
Desde un punto de vista mas practico, las series de potencias aproximan
a su funci
on suma. Es decir, la suma parcial de orden n, que no es mas
que un polinomio de grado n a lo sumo, representa una aproximacion a la
funci
on suma en su dominio de convergencia. En la siguiente figura, Fig. 4.1,
puede verse la funci
on f (x) = ex junto con algunas aproximaciones mediante
sumas parciales de su serie de potencias.

77

Miguel Angel Cifredo Campos


macifredo@gmail.com

Figura 4.1: Aproximacion a ex por su serie de potencias

4.1.

Radio de convergencia

Nuestro objetivo ahora ser


a determinar el dominio de una serie de potencias.
Por una parte est
a claro que el centro c siempre esta en el dominio ya que
f (c) =

+
X

an (c c)n = a0

n=0

Puede ocurrir que la serie solo sea convergente en x = c, pero, en general,


78

Miguel Angel Cifredo Campos


macifredo@gmail.com

el campo de convergencia sera un intervalo; como nos indica el resultado


siguiente.
Teorema 4.1 Sea

+
X

an (x c)n . Entonces es cierta una, y solo una, de las

n=0

tres afirmaciones siguientes:


1. La serie s
olo converge en x = c.
2. Existen R > 0 de manera que la serie converge (absolutamente) si
|x c| < R y diverge si |x c| > R.
3. La serie converge para todo x R.
Al n
umero R se le llama Radio de convergencia de la serie. Para unificar
todos los casos, entendemos en el caso (1) que R = 0, y en el caso (3) que
R = +.
Por tanto el dominio o campo de convergencia de una serie de potencias es
siempre un intervalo, ocasionalmente un punto, que llamaremos intervalo de
convergencia. Notar que el teorema precedente no afirma nada respecto de
la convergencia en los extremos del intervalo, c R y c + R.
Veremos seguidamente una formula para calcular el radio de convergencia:
Teorema 4.2 (Cauchy-Hadamard) Sea

+
X
n=0

p
an (xc)n y sea A := lm n |an |.
n

Entonces,

A=0
A = +

R = +

0 < A < +

R=0

R=

1
A

Nota: El smbolo lm an representa el lmite superior de la sucesion {an }


el cual viene definido como el mayor de los lmites de las subsucesiones convergentes de {an }. Obviamente, si la sucesion {an } es convergente, entonces
lm an = lm an por lo que concluimos que
n

79

Miguel Angel Cifredo Campos


macifredo@gmail.com

1
A

Si existe lm

p
n

Si existe lm

|an+1 |
1
=AR=
|an |
A

|an | = A R =

La utilizaci
on de un criterio u otro dependera de la forma que tenga el
termino an .
Ejemplo 4.1 Considera la serie de potencias

1 + x + (2!)x2 + (3!)x3 + . . . + (n!)xn + . . . =

+
X

(n!)xn

n=0

En esta serie an = n! de donde


A = lm
n

(n + 1)!
|an+1 |
= lm
= lm(n + 1) = + R = 0
n
n
|an |
n!

As pues, la serie s
olo converge en x = 0.
Ejemplo 4.2 Sea la serie de potencias

+ 2n+1
X
n
n=0

2n2 +1

xn . Para calcular su radio

n2n+1
de convergencia llamamos an = n2 +1 y obtenemos
2
s
1
2n+1
p
n2+ n
n n
n
A = lm |an | = lm
= lm
1 = 0 R = +
n
n
n 2n+ n
2n2 +1
As pues, la serie es convergente para cualquier valor de x R. Luego el
intervalo de convergencia es I = R =] , +[.
Ejemplo 4.3 Sea la serie de potencias

+ 3
X
n
n=1

4n

xn . Para calcular su radio de

n3
convergencia llamamos an = n y obtenemos
4
r

3
p
1
( n n)3
n n
n
= lm
= R=4
A = lm |an | = lm
n
n
n
n
4
4
4
80

Miguel Angel Cifredo Campos


macifredo@gmail.com

As pues, la serie es (absolutamente) convergente si |x| < 4 y divergente


si |x| > 4. Para averiguar la convergencia en los extremos del intervalo
ser
a necesario hacer el estudio particular.
x=4

x = 4

+ 3
X
n

+
X

n=1

n=1

4n =
4n

+ 3
X
n
n=1

4n

n3 (divergente)

(4) =

+
X

(1)n n3 (divergente)

n=1

Concluimos, finalmente, que el intervalo de convergencia es I =] 4, 4[.


Ejemplo 4.4 Sea la serie de potencias

+ n
X
x
n=1

. Para calcular su radio de

1
y obtenemos
n
r
p
1
n 1
A = lm n |an | = lm
= lm
=1 R=1
n
n
n
n
n
n

convergencia llamamos an =

As pues, la serie es (absolutamente) convergente si |x| < 1 y divergente


si |x| > 1. Para averiguar la convergencia en los extremos del intervalo
ser
a necesario realizar el estudio particular.
x=1

+ n
X
1
n=1

x = 1

+
X
1
(divergente)
n

n=1

+
X
(1)n
n=1

(convergente)

Concluimos, finalmente, que el intervalo de convergencia es I = [1, 1[.


Ejercicio 4.1 Calcula el radio de convergencia de la serie

+
X
(2x)n
n=1

n2

(Sol.: R =

81

1
)
2

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 4.2 Calcula el intervalo de convergencia de la serie

+ n
X
x
n=0

n!

(Sol.: I = R )
Ejercicio 4.3 Calcula el intervalo de convergencia de la serie

+
X
(3x)n

(2n)!

n=0

incluyendo el estudio de la convergencia en los puntos extremos.


(Sol.: I =] , +[= R )
Ejercicio 4.4 Calcula el intervalo de convergencia de la serie

+
X
(1)n+1 xn
n=1

4n

incluyendo el estudio de la convergencia en los puntos extremos.


(Sol.: I =] 1, 1] )
Ejercicio 4.5 Calcula el intervalo de convergencia de la serie

+
X
n!xn
,
(2n)!

n=1

incluyendo el estudio de la convergencia en los puntos extremos.


(Sol.: I =] , +[= R )
Ejercicio 4.6 Calcula el intervalo de convergencia de la serie de potencias
+
X
(1)n+1 (x 5)n
, incluyendo el estudio de la convergencia en los puntos
n5n
n=1
extremos.
(Sol.: I =]0, 10] )
Ejercicio 4.7 Calcula el intervalo de convergencia de la serie de potencias
+
X
(1)n+1 (x c)n
c R, incluyendo el estudio de la convergencia en los
ncn
n=1
puntos extremos.
(Sol.: I =]0, 2c] si c > 0, I = [2c, 0[ si c < 0 )
Cuando las potencias no son consecutivas se utiliza un cambio de variable
para calcular el radio de convergencia.

82

Miguel Angel Cifredo Campos


macifredo@gmail.com

+ 3
X
n

x2n . Como las potencias no


4n
n=1
son consecutivas, no puede aplicarse directamente el criterio del teorema de
Cauchy-Hadamard. Realizaremos, previamente, un cambio de variable.
Ejemplo 4.5 Sea la serie de potencias

+ 3
X
n
n=1

4n

2n

+ 3
X
n
n=1

4n

2 n

(x ) =

+ 3
X
n
n=1

4n

tn

para esta u
ltima calculamos el radio de convergencia, llamando an =
obtenemos R = 4 (es justo el Ejemplo 4.3).

n3
,y
4n

As,
+ 3
X
n
n=1

4n

tn es convergente para |t| < 4,

por lo que, deshaciendo el cambio,


+ 3
X
n
n=1

4n

(x2 )n es convergente para |x2 | < 4,

es decir,
+ 3
X
n
n=1

4n

x2n es convergente para |x| < 2,

y concluimos que el radio de convergencia es R = 2. Faltara estudiar el


comportamiento de la serie en los extremos del intervalo, pero esto se deja
como ejercicio al lector.
Ejercicio 4.8 Calcula el intervalo de convergencia de la serie de potencias
+
X
n
(2x)n1 .
n+1
n=1

1 1
(Sol.: I =] , [ )
2 2
Ejercicio 4.9 Calcula el intervalo de convergencia de la serie

+
X
(1)n x2n
n=0

n!

(Sol.: I = R )
83

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.2.

Propiedades

Hemos visto que una serie de potencias define una funcion en un intervalo.
Veremos ahora que propiedades cumple esta funcion.
Teorema 4.3 Sea f (x) la funcion definida como una serie de potencias
+
X
f (x) =
an (x c)n con radio de convergencia R > 0. Entonces,
n=0

1. f es continua en todo punto interior del intervalo de convergencia.


2. f es derivable en todo punto interior del intervalo de convergencia y,
adem
as,
+
X
0
f (x) =
nan (x c)n1
n=1

teniendo esta u
ltima serie radio de convergencia R (derivacion termino
a termino).
3. f es integrable en el intervalo de convergencia y, ademas,
Z
+ Z
+
X
X
an
f (x)dx =
(an (x c)n )dx =
(x c)n+1 + C
n+1
n=0

n=0

teniendo esta u
ltima serie radio de convergencia R (integracion termino
a termino).
Ejemplo 4.6 Consideramos la funcion f (x) =

+ n
X
x
n=1

Hemos visto en un ejemplo anterior que el intervalo de convergencia era


[1, 1[.
Entonces la funci
on derivada puede calcularse derivando termino a termino:
+
+
X
xn1 X n1
x
f (x) =
n
=
n
0

n=1

n=1

Sabemos, por la propiedad anterior, que el radio de convergencia para esta


nueva serie contin
ua siendo R = 1. Veamos que ocurre en los extremos del
intervalo:
84

Miguel Angel Cifredo Campos


macifredo@gmail.com

x=1

+
X

1n1 =

n=1

x = 1

+
X

1 que es divergente,

n=1

+
X

(1)n1 que es divergente.

n=1

As pues, la serie derivada converge en ] 1, 1[.


Veamos ahora que ocurre con la integracion. De nuevo, podemos integrar
termino a termino.
Z
+ Z
+
X
xn X xn+1
f (x)dx =
=
+C
n
n(n + 1)
n=1

n=1

De nuevo sabemos que el radio de convergencia para esta nueva serie contin
ua siendo R = 1. Veamos que ocurre en los extremos del intervalo:

x=1

+
X
n=1

x = 1

X
1n+1
1
=
que es convergente;
n(n + 1)
n(n + 1)
n=1

+
X
(1)n+1
que es convergente.
n(n + 1)

n=1

As pues, la serie integral converge en [1, 1].

Nota: Observa en el ejemplo anterior que al derivar hemos perdido un


punto del intervalo de convergencia, mientras que al integrar hemos ganado
uno. En general, sin embargo, el resultado correcto es
Al derivar una serie no se pueden ganar extremos del intervalo de
convergencia.
Al integrar una serie no se pueden perder extremos del intervalo de
convergencia.
Ejercicio 4.10 Siendo f (x) la funcion definida por las serie de potencias
+
X
(1)n+1 (x 5)n
, calcula el intervalo de convergencia de f (x), f 0 (x) y
n5n

n=1

85

Miguel Angel Cifredo Campos


macifredo@gmail.com

Z
f (x) dx, incluyendo el estudio de los puntos extremos.
(Sol.: I =]0, 10] para f y f 0 ; I = [0, 10] para

f )

Ejercicio 4.11 Siendo f (x) la funcion definida por la serie de potencias


+
X
(1)n
xn , calcula el intervalo de convergencia de f (x), f 0 (x) y
(n + 1)(n + 2)
n=0
Z
f (x) dx, incluyendo el estudio de los puntos extremos.
(Sol.: I = [1, 1] para f y

f ; I =] 1, 1] para f 0 )

Ejercicio 4.12 Siendo f (x) la funcion definida por las serie de potencias
+
X
(1)n+1 x2n1
, calcula el intervalo de convergencia de f (x), f 0 (x) y
2n 1
n=1
Z
f (x) dx, incluyendo el estudio de los puntos extremos.
(Sol.: I = [1, 1] para f y

f ; I =] 1, 1[ para f 0 )

Otras propiedades interesantes son las siguientes.


Teorema 4.4 Sean f (x) =

+
X

an (x c)n y g(x) =

n=0

+
X

bn (x c)n definidas

n=0

en el mismo intervalo I. Entonces,

1. f (x) + g(x) =

+
X

(an + bn )(x c)n , x I

n=0

2. f (x) =

+
X
n=0

an (x c)n =

+
X

an (x c)n , x I

n=0

En el caso de series de potencia centradas en c = 0, se cumple ademas


86

Miguel Angel Cifredo Campos


macifredo@gmail.com

+
X

Teorema 4.5 Sea f (x) =

an xn definida en el intervalo I. Entonces,

n=0

1. f (x) =

+
X

+
X

an (x)n =

n=0

2.

f (xN )

an n xn , x / x I

n=0

+
X

N n

an (x ) =

n=0

+
X

an xN n , x / xN I

n=0
2

Ejemplo 4.7 Calcular una primitiva de la funcion f (x) = ex .

Soluci
on: Sabemos que

ex

+ n
X
x
n=0

anterior:
2

ex =

n!

. Entonces aplicando la proposicion

+
X
(x2 )n
n=0

n!

+ 2n
X
x
n=0

n!

Ahora, integrando
Z

x2

+ Z
+
X
X
x2n
x2n+1
dx =
dx =
+C
n!
(2n + 1)n!
n=0

En particular, F (x) =

+
X
n=0

4.3.

n=0

x2n+1
2
es una primitiva de ex .
(2n + 1)n!

Desarrollo de funciones en serie de potencias

Hemos visto que una serie de potencias define una funcion en un intervalo I.
Se aborda ahora el problema contrario. Dada una funcion f (x) se trata de
encontrar una serie de potencias
+
X

an (x c)n

n=0

87

Miguel Angel Cifredo Campos


macifredo@gmail.com

de manera que
f (x) =

+
X

an (x c)n

n=0

para todo x del intervalo de convergencia.


Evidentemente, tales funciones deben ser continuas e indefinidamente derivables en su intervalo de convergencia y esto permite deducir ademas como
deben ser los terminos de una serie de potencias cuya suma es una determinada funci
on f :
Teorema 4.6 Si f (x) =

+
X

an (x c)n , x ]c R, c + R[ entonces,

n=0

an =

A la serie

+ (n)
X
f (c)
n=0

4.3.1.

n!

f (n) (c)
n!

(x c)n la llamaremos serie de Taylor de f en c.

Desarrollos de Taylor

Conviene recordar ahora el conocido teorema de Taylor que permite aproximar una funci
on por un polinomio de grado n.
Teorema 4.7 (Taylor) Sea f una funcion continua y con derivada continua hasta el orden n en un intervalo I = [c R, c + R] y derivable de orden
n + 1 en ]c R, c + R[. Si x I, existe un punto entre c y x tal que
f (x) = f (c) + f 0 (c)(x c) +
|

f 00 (c)
f (n )(c)
(x c)2 + . . . +
(x c)n
2! {z
n!
}
Tn (x)

f (n+1 )()
(x c)( n + 1)
(n + 1)!
|
{z
}
Rn (x)

88

Miguel Angel Cifredo Campos


macifredo@gmail.com

Los terminos Tn (x) forman un polinomio de grado n a lo sumo, llamado


polinomio de Taylor, mientras que el u
ltimo termino Rn (x) se llama el resto
de Lagrange.
Este teorema permite aproximar el valor de una funcion mediante un polinomio.
1
mediante un polinomio
1+x
1
de grado 3. Utiliza dicho polinomio para aproximar . Da una cota del
1,2
error cometido.

Ejemplo 4.8 Aproxima la funcion f (x) =

Soluci
on:
1. Basta calcular las derivadas hasta el orden 4. Tomaremos como punto
de c
alculo el valor a = 0.
f (x) = (1 + x)1/2
1
f 0 (x) = (1 + x)3/2
2
3
f 00 (x) = (1 + x)5/2
4
15
f 000 (x) = (1 + x)7/2
8
105
f (4) (x) =
(1 + x)9/2
16
Finalmente,

f (0) = 1
f 0 (0) =
f 00 (0) =

1
2

3
4

15
8
105
f (4) () =
(1 + )9/2
16
f 000 (0) =

f (x) T3 (x) = f (0) + f 0 (0)x +

f 00 (0) 2 f 000 (0) 3


x +
x
2!
3!

por lo que,
f (x) 1

x 3x2 15x3
+

2
8
48

1
2. Como
= f (0,2) basta tomar x = 0,2 en el polinomio anterior.
1,2
Por tanto,
89

Miguel Angel Cifredo Campos


macifredo@gmail.com

0,2 3(0,2)2 15(0,2)3


1

1
+

0,9125
2
8
48
1,2
3. El error viene dado por el termino
4

f () 4

x
|| =
4!
siendo x = 0,2 y 0 < < 0,2. Podemos escribir, pues,




105
105(0,2)4
4

|| =
(0,2)
=
384(1 + )9/2
4! 16(1 + )9/2
Ahora hay que eliminar de la formula anterior acotando la funcion
por su valor m
aximo (en este caso, se trata de escribir el denominador
m
as peque
no posible, teniendo en cuenta que 0 < < 0,2 ):
|| =

105(0,2)4
105(0,2)4
<
0,0004375
384
384(1 + )9/2

La aproximaci
on es regular (2 o 3 cifras exactas).

Ejercicio 4.13 Aproxima la funcion f (x) = x sin x mediante un polinomio


 
1
1
de grado no mayor que 3. Utiliza dicho polinomio para aproximar sin
3
3
con dos decimales de exactitud. Justifica la exactitud obtenida.

(Sol.: f (x) x2 ; 13 sin 31 0,11; Error < 0,00257) )
Hemos visto que si una funcion admite desarrollo en serie de potencias,
esta serie debe ser necesariamente su correspondiente serie de Taylor. No
obstante, la serie de Taylor de f en c no tiene porque tener de suma a la
propia funci
on f . Para garantizarlo tenemos el siguiente resultado.
Teorema 4.8 Si f es una funcion indefinidamente derivable en un intervalo
abierto centrado en c y si Rn (x) representa el resto de Lagrange de la formula
de Taylor, entonces
f (x) =

+ (n)
X
f (c)
n=0

n!

(x c)n lm Rn (x) = 0
n

90

Miguel Angel Cifredo Campos


macifredo@gmail.com

Con el siguiente corolario tendremos una forma mas facil de aplicar la propiedad anterior:
Corolario 4.9 Si existe una constante K > 0 de forma que
|f (n) (x)| K, x I, n 0
entonces
f (x) =

+ (n)
X
f (c)

n!

n=0

(x c)n

x I

Ejemplo 4.9 Sea f (x) = sin x. Encuentra un desarrollo en serie de potencias.


Soluci
on: Como


f (n) (x) = sin n + x , n = 0, 1, 2, . . .
2
entonces,
f

(n)

 
(0) = sin n
=
2

(
(1)k
0

si n = 2k + 1 (n impar)
si n = 2k ( n par)

y obtenemos, pues, que la serie de Taylor de f en x = 0 es


+
X
(1)k x2k+1
k=0

(2k + 1)!

Calculamos el radio de convergencia de esta serie. Como las potencias no


son consecutivas realizaremos un cambio de variable.
+
X
(1)n x2n+1
n=0

(2n + 1)!

=x

=x

=x

+
X
(1)n x2n
n=0
+
X
n=0
+
X
n=0

91

(2n + 1)!
(1)n (x2 )n
(2n + 1)!
(1)n tn
(2n + 1)!

Miguel Angel Cifredo Campos


macifredo@gmail.com

(1)n
se tiene
(2n + 1)!

Para esta u
ltima serie, llamando an =
A = lm
n

|an+1 |
(2n + 1)!
1
= lm
= lm
= 0 R = +
n
n
|an |
(2n + 3)!
(2n + 3)(2n + 2)

Es decir, la serie converge t R. Entonces, deshaciendo el cambio, la serie


original es convergente x2 R, o sea, x R.
Falta demostrar que la serie suma exactamente sin x, es decir,
+
X
(1)n x2n+1

(2n + 1)!

n=0

= sin x xR

Ahora bien, como


|f (n) (x)| 1, x R, n = 0, 1, . . .
basta aplicar el Corolario 4.9 para concluir que
sin x =

+
X
(1)n x2n+1
n=0

(2n + 1)!

xR

De forma similar se prueba que

cos x =

+
X
(1)n x2n

(2n)!

n=0

ex

+ n
X
x
n=0

(1 +

x)

n!
=

xR

xR

+  
X

n=0

xn ,

|x| < 1 (serie binomica).

siendo R y
 

:= 1;
0

 
n factores

( 1) ( (n 1))
:=
, si n 1
n
n!
92

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.3.2.

Otros desarrollos

En general, el metodo de calcular la serie de Taylor no resulta muy operativo, dada la dificultad de encontrar la derivada nesima o, aunque esto sea
posible, la dificultad de demostrar que lm Rn (x) = 0.
n

Veremos ahora otros procedimientos para encontrar el desarrollo de una funci


on en serie de potencias. Basicamente se trata de obtener por derivacion,
integraci
on o transformaciones elementales una funcion de la cual conozcamos su desarrollo.
Ejemplo 4.10 Desarrollo en serie de potencias de la funcion f (x) =

1
.
1+x

Soluci
on: Recordemos que para una serie geometrica:
+
X

xn =

n=0

1
, |x| < 1
1x

Por tanto,
+

n=0

n=0

X
X
1
1
=
=
(x)n =
(1)n xn , |x| < 1
1+x
1 (x)
Este problema tambien se podra haber resuelto teniendo en cuenta que
1
= (1 + x)1
1+x
que corresponde a una serie binomica de exponente = 1 y aplicando el
desarrollo conocido (p
ag.
 92) senllega a la misma conclusion sin mas que
tener en cuenta que 1
n = (1) .
Ejemplo 4.11 Desarrollo de f (x) = log x
Soluci
on: Recordemos que la serie binomica de exponente = 1 verifica
+
X
n=0

(1)n xn =

1
, |x| < 1
1+x

93

Miguel Angel Cifredo Campos


macifredo@gmail.com

Por tanto,
+

f 0 (x) =

X
1
1
=
=
(1)n (x 1)n ,
x
1 + (x 1)

|x 1| < 1

n=0

Recuperamos la funci
on f integrando:
Z
f (x) =

+ Z
X

f (x)dx =

(1) (x1) dx =

n=0

+
X
(1)n
n=0

n+1

(x1)n+1 +C, |x1| < 1

As,
log x =

+
X
(1)n
n=0

n+1

(x 1)n+1 + C,

|x 1| < 1

Para calcular C basta evaluar la expresion anterior en un valor de x. Por sencillez, se elige el centro de la serie, x = 1. Antes de substituir, desarrollamos
el sumatorio:
log x =

+
X
(1)n
n=0

n+1

(x 1)n+1 + C = (x 1) +

1
1
(x 1)2 + (x 1)3 + . . . + C
2
3

por lo que al evaluar la serie en x = 1, obtenemos


C=0

log 1 = 0 + C
y, finalmente,
log x =

+
X
(1)n
n=0

n+1

(x 1)n+1

En el ejemplo anterior, hemos probado que


log x =

+
X
(1)n
n=0

n+1

(x 1)n+1 , |x 1| < 1

Estudiemos ahora que pasa con los extremos del intervalo:

x=0

+
X
(1)n
n=0

n+1

(1)n+1 =

+
X
1
que es divergente.
n+1

n=0

94

Miguel Angel Cifredo Campos


macifredo@gmail.com

x=2

+
X
(1)n
n=0

n+1

(2 1)n+1 =

+
X
(1)n
n=0

n+1

que es convergente.

Pero, podemos afirmar que en x = 2 la serie suma exactamente log 2?


En general, la respuesta es no. El teorema que veremos a continuacion nos
dar
a una condici
on suficiente para que podamos garantizarlo.
Teorema 4.10 (Abel) Sea f (x) =

+
X

an (x c)n , |x c| < R .

n=0

Si f es continua en c + R y la serie es convergente en x = c + R entonces se


verifica que
+
+
X
X
n
f (c + R) =
an (c + R c) =
an Rn
n=0

n=0

An
alogamente para el extremo inferior: si f es continua en c R y la serie
es convergente en x = c R entonces se verifica que
f (c R) =

+
X

an (c R c)n =

n=0

+
X

an (R)n

n=0

Ejemplo 4.12 Volviendo al ejemplo anterior, habamos visto que


log x =

+
X
(1)n
n=0

n+1

(x 1)n+1 , |x 1| < 1

Ahora, la serie es convergente en x = 2 y la funcion f (x) = log x es continua


en x = 2, entonces aplicando el teorema de Abel resulta que
log 2 =

+
X
(1)n
n=0

n+1

Ejercicio 4.14 Desarrolla en serie de potencias centrada en c = 0 la funcion


3
.
x+2

+ 
1 n n
3X
(Sol.:

x
|x| < 2 )
2
2
n=0

95

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 4.15 Desarrolla en serie de potencias centrada en c = 0 la funcion


1

.
(1 + x)2
(Sol.:

+
X

(1)n nxn1

|x| < 1 )

n=1

Ejercicio 4.16 Desarrolla en serie de potencias centrada en c = 0 la funcion


2
.
(1 + x)3
(Sol.:

+
X

(1)n n(n 1)xn2

|x| < 1 )

n=2

Ejercicio 4.17 Desarrolla en serie de potencias centrada en c = 0 la funcion


log(x + 1).
(Sol.:

+
X
(1)n
n=0

n+1

xn+1

x ] 1, 1] )

Ejercicio 4.18 Desarrolla en serie de potencias centrada en c = 0 la funcion


1
.
4x2 + 1
(Sol.:

+
X

(1)n 4n x2n

|x| <

n=0

1
)
2

Ejercicio 4.19 Desarrolla en serie de potencias centrada en c = 0 la funcion


cos x.
(Sol.:

+
X
(1)n
n=0

96

(2n)!

x2n )

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.4.

Problemas adicionales

Ejercicio 4.20 Calcula el intervalo de convergencia de las series siguientes,


incluyendo el estudio de los puntos extremos:
(a)

X
x
( )n
k

k R;

n=0

(c)

(e)

n=0

(g)

(i)

(1)n+1 nxn ;

n=0

n=0

X
n=1

(k)

n=0

(d)

(1)n xn
;
(n + 1)(n + 2)

(h)

(1)n+1 x2n1
;
2n 1

(j)

x
(2n)!( )n ;
2

n=0

n=0

(x
;
(n + 1)3n+1

(2n + 1)!

n=1

(f )

2)n

x2n+1

X
(1)n xn

(b)

(1)n (x 4)n
;
3n

X
(1)n+1 (x 1)n+1
n=0

X
n=0

n+1

2 4 6 2n
x2n+1 .
3 5 7 (2n + 1)

(Sol.: (a) I =] |k|, |k|[, (b) I =] 1, 1[, (c) I =] 1, 1[, (d) I = {0},
(e) I = [1, 1], (f ) I =]1, 7[, (g) I = [1, 5[, (h) I =]0, 2], (i) I = [1, 1],
(j) I =] 1, 1[ y (k) I = R. )
+
X
x
Ejercicio 4.21 Siendo f (x) la funcion definida por la serie f (x) =
( )n ,
2
n=1
R
0
calcula el intervalo de convergencia de f (x), f (x) y f (x) dx, incluyendo
el estudio de los puntos extremos.
R
(Sol.: I =] 2, 2[ para f y f 0 ; I = [2, 2[ para f )

Ejercicio 4.22
Considera la serie de potencias:

X
n=0

(1)n

11 17 (11 + 6n)
xn
7 13 19 25 (19 + 6n)
97

Miguel Angel Cifredo Campos


macifredo@gmail.com

(a) Calcula el radio de convergencia de la serie.


(b) Estudia la convergencia en x = 1, y en caso de ser convergente,
calcula la suma.
(c) Verifica, en x = 1, las hipotesis del criterio de Leibnitz para series
alternadas?
(d) Es absolutamente convergente en x = 1?
(Sol.: (a) R = 1; (b) Convergente y suma

Ejercicio 4.23 Dada la serie de potencias

11
; (c) Si; (d) Si. )
2 7 13

+
X
(n + 1)(n + 2) (2n + 1)

n!

n=1

xn .

(a) Determina el radio de convergencia de la serie.


(b) Estudia la convergencia de la serie en x =

1
y en x = 1.
4

1
(c) Estudia la convergencia en x = .
4
1
1
(Sol.: (a) R = ; (b) Divergente en x = y x = 1; (c) Divergente. )
4
4
Ejercicio 4.24 Aproxima la funcion f (x) = x ln(1 + x) mediante un polinomio de grado 3. Utiliza dicho polinomio para aproximar 0,2 ln(1,2). Obten
una cota del error cometido.
1
(Sol.: f (x) x2 x3 ; 0,2 ln(1, 2) = 0,036 0,00053 )
2
Ejercicio 4.25 Aproxima la funcion f (x) = x2 ln x mediante un polinomio
de grado 2, expresado
en potencias de (x 1). Utiliza dicho polinomio para

aproximar 14 ln 12 con dos decimales de exactitud. Justifica la exactitud
obtenida.

3
(Sol.: f (x) x 1 + (x 1)2 ; 14 ln 12 = 0,125 0,083 )
2

Ejercicio 4.26 Se considera la funcion f (x) = ln( 1 + x).


(a) Aproxima la funci
on por un polinomio de grado 4.
98

Miguel Angel Cifredo Campos


macifredo@gmail.com

(b) Utiliza el polinomio anterior para aproximar ln( 0,95) y acota el error
cometido.

x x2 x3 x4

+
; (b) ln( 0,95) 0,02564661 4,03861 108 )
2
4
6
8

Ejercicio 4.27 Se considera la funcion f (x) = ln( 1 + x).

(Sol.: (a)

(a) Desarrolla en serie de potencias la funcion g(x) =

1
.
1+x

(b) Calcula la derivada de f (x).


(c) Desarrolla en serie de potencias la funcion f (x).
(Sol.: (a)

(1)n xn ; |x| < 1; (b)

n=0

1
1 P (1)n xn+1
; (c)
; |x| < 1 )
2(1 + x)
2
n+1

Ejercicio 4.28 Desarrolla en serie de potencias la funcion 1 + x + x2 indicando cu


al es el radio de convergencia. (H: Expresa el radicando 1 + x + x2
en la forma a2 + (x + b)2 para aplicar la serie binomica)
r 


 


3 X 1/2 4n
1 2n
3
1

(Sol.:
x+
si x + <
)
n
n 3
4
2
2
2
n=0

Ejercicio
Aplica el ejercicio anterior para calcular la suma de la serie

 4.29
P
1/2 1
. (H: Toma un valor adecuado de x en el desarrollo anterior)
n=0
n 3n
2
(Sol.: )
3
Ejercicio 4.30 Desarrolla en serie de potencias centrada en c = 0 la funcion
2
f (x) = ex /2 .
+
X
1 2n
x
(Sol.:
n
2 n!

xR)

n=0

Ejercicio 4.31 Desarrolla en serie de potencias centrada en c = 0 la fun4x 7


ci
on f (x) = 2
. (H: Expresa la fraccion como suma de fracciones
2x + 3x 2
simples, hallando las races del denominador)

99

Miguel Angel Cifredo Campos


macifredo@gmail.com

+ 
X
3(1)n

(Sol.:

2n+1

n=0


+ 2n+1 xn

|x| <

1
)
2

En los ejercicios siguientes se trata de, mediante derivacion o integracion


de la funci
on dada, relacionarla con una funcion de desarrollo conocido y, a
partir de este, hallar el desarrollo de la funcion original.
Ejercicio 4.32 Desarrolla en serie de potencias centrada en c = 0 la funcion
f (x) = arctan 2x.
(Sol.: 2

+
X
(1)n 4n
n=0

2n + 1

x2n+1

|x|

1
)
2

Ejercicio 4.33 Desarrolla en serie de potencias centrada en c = 0 la funcion


f (x) = arcsin x.
(Sol.:


+ 
X
1/2 (1)n
n

n=0

2n + 1

x2n+1

|x| 1 )

Ejercicio 4.34 Desarrolla en serie de potencias centrada en c = 0 la funcion


arcsin x
(H: Utiliza el ejercicio anterior).
f (x) =
x

+ 
X
1/2 (1)n 2n+1
x
|x| 1 )
(Sol.:
2n
n
n=0

Ejercicio 4.35 Desarrolla en serie de potencias centrada en c = 0 la funcion


f (x) = sin2 x.
(Sol.:

+
X
n=0

(1)n 4n
x2n+2
(2n + 1)!(n + 2)

xR)

Ejercicio 4.36 Desarrolla en serie de potencias centrada en c = 0 la funcion


f (x) = log(x2 + 1).
(Sol.:

+
X
(1)n
n=0

100

n+1

x2n+2

x [1, 1] )

Miguel Angel Cifredo Campos


macifredo@gmail.com

Tema 5

Funciones de varias variables


Supongamos que tenemos una placa rectangular R y determinamos la temperatura T en cada uno de sus puntos. Fijado un sistema de referencia, T
es una funci
on que depende de las coordenadas (x, y) de cada uno de los
puntos de R. La funci
on que describe este fenomeno
T = f (x, y),

(x, y) R

es un ejemplo tpico de una funcion de dos variables; en este caso, las coordenadas del punto donde evaluamos la temperatura. No es difcil encontrar
ejemplos de fen
omenos que a la hora de describirlos necesitemos utilizar
funciones de tres, cuatro o mas variables.
La definici
on formal de funcion de varias variables es la siguiente:
Definici
on 5.1 Sea D un subconjunto de Rn . Una funcion f de D en R
se llama un campo escalar o una funcion real de n variables. La funcion f
asigna, pues, a cada vector x = (x1 , x2 , . . . , xn ) D Rn un valor real
f (x).
Las funciones de varias variables son esenciales en muchos problemas importantes de la ciencia, la ingeniera, la economa, etc... De hecho, cualquier
f
ormula que proporcione una relacion entre una magnitud a partir de los valores de otras magnitudes es, en realidad, una funcion. Vamos a ver algunos
ejemplos:

101

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 5.1
La magnitud de la fuerza gravitatoria ejercida por un cuerpo de masa
M situado en el origen de coordenadas sobre un cuerpo de masa m
situado en el punto (x, y, z) viene dada por
F (x, y, z) =

GmM
x2 + y 2 + z 2

La ley de los gases ideales dice que la presion P de un gas es una


funci
on del volumen V y la temperatura T seg
un la ecuacion
P =

cT
V

donde c es una constante.


La desviaci
on S en el punto medio de una viga rectangular cuando
est
a sujeta por ambos extremos y soporta una carga uniforme viene
dada por
CL3
S(L, w, h) =
wh3
donde L es la longitud, w la anchura, h la altura y C una constante.

Nota: El dominio de un campo escalar f (denotado por Dom(f )) es el


subconjunto de Rn donde esta definida la funcion. En muchas ocasiones,
una funci
on viene dada por una expresion algebraica y su dominio no viene
dado explcitamente. Entendemos, en este caso, que el dominio es el conjunto
de todos los puntos para los que la definicion de f tiene sentido.
La imagen o recorrido de un campo escalar (denotado por Im(f )) es el
subconjunto de R dado por todos los valores que toma la funcion f ; es decir,
Im(f ) := {f (x) : x Dom(f )}
La gr
afica de f es el subconjunto de Rn+1 , definido como
graf(f ) := {(x, f (x)) : x Dom(f )}
Evidentemente, s
olo podemos representar graficamente las funciones de una
variable (su gr
afica est
a en R2 ) y las funciones de dos variables (su grafica
3
est
a en R ).
102

Miguel Angel Cifredo Campos


macifredo@gmail.com

5.1.

Representaci
on de funciones

Una forma de obtener informacion sobre el fenomeno descrito por una fun
ci
on de dos variables es estudiar su representacion grafica. Esta
no es una
tarea sencilla pero disponemos de algunos metodos que permiten hacernos
una idea de su comportamiento. Se trata de cortar la grafica de la funcion
con planos paralelos a los planos coordenados. Empezaremos con planos
verticales.
Definici
on 5.2 Para una funcion f (x, y), la funcion que se obtiene al mantener la variable x fija y variando la variable y se llama secci
on transversal
de f con x fija. An
alogamente se define una seccion transversal de f con y
fija.
Ejemplo 5.2 Vamos a calcular la seccion transversal, para x = 2, de la
funci
on f (x, y) = x2 + y 2 .
Soluci
on: Tal y como se observa en la Figura 5.1, la seccion transversal
es la curva obtenida al cortar la grafica de f (x, y) con el plano vertical de
ecuaci
on x = 2.

Figura 5.1: Seccion transversal con x fija


103

Miguel Angel Cifredo Campos


macifredo@gmail.com

La secci
on transversal que hemos de encontrar es, precisamente, f (2, y) =
2
4+y . Por tanto es una funcion de y, digamos g, definida como g(y) = 4+y 2 .
Se trata de una par
abola simetrica respecto del eje x.
En general, obtenemos las secciones transversales de f como funciones de
y haciendo x = c en f (x, y). Las secciones son, por tanto, gc (y) = c2 + y 2 ,
c R.

Ejercicio 5.1 Calcular las secciones transversales, primero fijando la variable x y despues la variable y, del campo escalar f (x, y) = x2 y 2 .
(Sol.: gb (x) = x2 b2 , gc (y) = c2 y 2 ) )
Otra manera de obtener informacion sobre una funcion de dos variables es
por medio de las llamadas curvas de nivel, que corresponden a la curva
obtenida al cortar la gr
afica de z = f (x, y) por un plano horizontal de
ecuaci
on z = c. Por tanto, las curvas de nivel de f (x, y) son los subconjuntos
del dominio con ecuaciones de la forma:
f (x, y) = c ,
donde c es un valor en Im(f ). La idea de las curvas de nivel es un metodo
de representar superficies que utilizamos en la elaboracion de mapas. Para
representar terrenos monta
nosos es practica com
un dibujar curvas que unen
los puntos de la misma altura. Una coleccion de estas curvas, rotuladas de
forma adecuada, da una buena idea de las variaciones de altitud de una
regi
on.
Ejemplo 5.3 Calculemos las curvas de nivel del campo escalar z = 4xy
(cuya gr
afica es un plano). Haciendo z = c
4 x y = c,

cR

obtenemos una familia de rectas paralelas tal y como se observa en la Fig. 5.2.

104

Miguel Angel Cifredo Campos


macifredo@gmail.com

(a) Superficie

(b) Curvas de nivel

Figura 5.2: Curvas de nivel de z = 4 x y


Ejemplo 5.4 Analizemos ahora las curvas de nivel del campo escalar definido por z = x2 + y 2 (Fig. 5.3). Debemos estudiar las curvas de ecuacion
x2 + y 2 = c,

(a) Superficie

c 0.

(b) Curvas de nivel

Figura 5.3: Curvas de nivel de z = x2 + y 2

105

Miguel Angel Cifredo Campos


macifredo@gmail.com

Hemos considerado que c 0 porque es imposible que x2 + y 2 sea negativo.


Las curvas de nivel son circunferencias centradas en el origen de coordenadas

y de radio c si c > 0 y se reduce al origen de coordenadas si c = 0.

Dibujar las gr
aficas de las funciones de dos variables es en general una tarea
difcil. Dibujar la gr
afica de una funcion de tres variables es sencillamente
imposible. Para dibujarlas necesitaramos un espacio de cuatro dimensiones;
el propio dominio ha de ser una porcion del espacio tridimensional. Lo que
haremos es intentar representar el comportamiento de una funcion f (x, y, z)
de tres variables mediante las superficies de nivel de f que son una generalizaci
on del concepto de curva de nivel visto anteriormente. Las superficies
de nivel de f (x, y, z) son los subconjuntos del dominio con ecuaciones de la
forma:
f (x, y, z) = c ,
donde c es un valor en Im(f ).
Ejemplo 5.5 Consideremos el campo escalar f (x, y, z) =
Sus superficies de nivel
x2 + y 2 + z 2 = c2 ,

x2 + y 2 + z 2 .

cR

son esferas concentricas centradas en el origen de coordenadas; como se


muestran en la Fig. 5.4.

Figura 5.4: Superficies de nivel de x2 + y 2 + z 2


106

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 5.6 Si calculamos las superficies de nivel del campo escalar


f (x, y, z) = Ax + By + Cz
obtenemos las superficies de ecuacion Ax + By + Cz = c, c R que son
planos paralelos.
Ejemplo 5.7 Vamos a calcular las superficies de nivel del campo escalar
definido como

|z|

si (x, y, z) =
6 (0, 0, z),
f (x, y, z)
x2 + y 2

0
si (x, y, z) = (0, 0, 0).
Para ello, observamos que s
olo toma valores no negativos y que no esta definida en los puntos del eje z diferentes del origen. Teniendo en cuenta que f
s
olo se anula cuando z = 0, la superficie de nivel cuando c = 0 es el plano xy.
Para encontrar las otras superficies de nivel, consideramos c > 0 y hacemos
f (x, y, z) = c. Entonces
|z|
= c,
x2 + y 2

y por tanto

|z| = c (x2 + y 2 )

que son paraboloides dobles de revolucion (Fig. 5.5).

Figura 5.5: Superficies de nivel de

107

x2

|z|
+ y2

Miguel Angel Cifredo Campos


macifredo@gmail.com

5.2.

Funciones vectoriales

Una funci
on f : D Rn Rm con m > 1 se llama una funci
on vectorial
de varias variables. Si n = m > 1, la funcion se llama campo vectorial.
Una funci
on vectorial f : D Rn Rm se puede estudiar de forma natural
por medio de m campos escalares
f : D Rn Rm
x
7 ( f1 (x), . . . , fm (x) )
sin m
as que considerar las componentes del vector f (x). Estos campos escalares se llaman las funciones componentes de f . Por tanto, una funcion
vectorial no es m
as que un vector de m funciones escalares:
f = (f1 , f2 , . . . , fm )
Queda claro, adem
as, que el dominio de una funcion vectorial debe estar
contenido en la intersecci
on de los dominios de cada una de sus componentes.
Ejemplo 5.8 Si consideramos la funcion vectorial de R2 en R3 definida
como
f (x, y) = (x2 + y, sin x, x + e2 ) ,
las funciones componentes de f son:
f1 (x, y) = x2 + y
f2 (x, y) = sin x
f3 (x, y) = x + e2
En el caso de campos vectoriales, a
un es posible idear una representacion.
Para campos vectoriales en el plano (o en el espacio) a cada punto (x, y) del
dominio le corresponde el vector (u, v) = f (x, y); basta dibujar dicho vector
con origen en (x, y) para obtener una representacion grafica del campo. En
la figura siguiente, Fig. 5.6, se ha representado, con la ayuda de un programa
inform
atico, el campo vectorial
f (x, y) = ( p

x
x2

108

y2

, p

x2

+ y2

Miguel Angel Cifredo Campos


macifredo@gmail.com

Figura 5.6: Campo vectorial

5.3.

Lmites y continuidad

Imaginemos que, en un futuro, los cientficos hallaran una formula (funcion)


que proporcionara la temperatura ambiente en cada instante t (medido en
segundos) en un punto de la Tierra de coordenadas (, ) (latitud y longitud,
respectivamente). Dicha f
ormula podra expresarse en la forma
T = T (, , t)
Entonces, podramos predecir la temperatura ambiente en cualquier momento de cualquier da del a
no. Sera de esperar, entonces, que dos puntos
espaciales pr
oximos entre s, tuvieran temperaturas parecidas en el mismo
instante o que el mismo lugar tuviera temperaturas proximas en instantes
cercanos. M
as a
un, cabe esperar que la temperatura no fuese muy distinta
en lugares pr
oximos en instantes cercanos (imagina el caos termico si no
fuera as). Este comportamiento de la funcion T (, , t) es lo que llamaremos continuidad. Las funciones continuas no requieren grandes esfuerzos de
imaginaci
on; rigen la mayora de los procesos fsicos y qumicos (pero no
todos!).
Antes de abordar el concepto de continuidad necesitamos introducir el de
109

Miguel Angel Cifredo Campos


macifredo@gmail.com

lmite de una funci


on que nos ayudara a entender el concepto de proximidad
entre valores.

5.3.1.

Lmites

La noci
on de distancia se presenta en la geometra eucldea al medir las
longitudes de los segmentos que unen dos puntos cualesquiera del espacio.
A continuaci
on se definen las distancias, tambien llamadas metricas, con las
que trabajaremos usualmente.
La aplicaci
on d(x, y) := |x y|; x, y R define una metrica sobre R,
que, salvo que se diga lo contrario, sera la metrica usual de R.
An
alogamente la aplicacion d(z1 , z2 ) := |z1 z2 |, z1 , z2 C, sera la
metrica usual de C.
La metrica eucldea sobre Rn sera la definida por
v
uX
u n
d(x, y) := t (xj yj )2
j=1

donde x = (x1 , x2 , . . . , xn ) e y = (y1 , y2 , . . . , yn ).


El m
odulo o norma de un vector x = (x1 , x2 , . . . , xn ) Rn se define
por
v
uX
u n 2 q 2
kxk := t
xj = x1 + x22 + . . . + x2n
j=1

Por tanto, se verifica que d(x, y) = kx yk.


Si los subconjuntos notables de R son los intervalos, sus equivalentes en Rn
van a ser las bolas abiertas y bolas cerradas de centro a y radio r > 0,
definidas como
Br (a) = {x Rn : d(x, a) < r},

Br [a] = {x Rn : d(x, a) r}

A continuaci
on, se define el di
ametro de un conjunto A Rn , representado
por (A), como
(A) = sup{d(x, y) : x, y A}
110

Miguel Angel Cifredo Campos


macifredo@gmail.com

lo que permite definir el concepto de conjunto acotado como aquel cuyo


di
ametro es finito o, equivalentemente, como aquel que esta contenido en
una bola cerrada.
En el estudio de los lmites, y de las funciones en general, es importante
conocer no s
olo el valor de la funcion en un punto sino como se comporta
dicha funci
on en los puntos cercanos a el. Tiene sentido entonces definir
entorno de un punto x Rn como un subconjunto U de Rn que contiene
una bola abierta centrada en x. Tambien se dice que x es interior a U . Es
decir, un entorno de x contiene al punto x y a todos sus vecinos.
De especial interes son los llamados conjuntos abiertos definidos como los
subconjuntos de Rn que son entornos de todos sus puntos; es decir, con la
propiedad
A es un conjunto abierto de Rn sii x A r > 0 tal que Br (a) A.
Cabe notar, entonces, que un conjunto A es abierto si, y solamente si, todos
sus puntos son interiores.
Tambien ser
a de interes conocer los puntos frontera de un conjunto A definidos como aquellos que cumplen que cualquier bola centrada en ellos contiene
puntos del conjunto A y puntos de su complementario Rn \ A. El conjunto
de puntos frontera de A se denotara por A.
Los conjuntos abiertos, por tanto, no contienen puntos frontera. Esta es la
ventaja esencial de los conjuntos abiertos; dado cualquier punto del conjunto
abierto podemos acercarnos a el desde cualquier direccion; es decir, todos
sus vecinos pr
oximos est
an tambien en el abierto. Esta propiedad facilita
muchas de las definiciones que veremos a lo largo de este tema, y tambien
de los siguientes, puesto que muchos conceptos estan definidos por lmites
y estos dependen de que podamos acercarnos cuanto queramos al punto en
cuesti
on. Por este motivo, en las disquisiciones teoricas se suele exigir que
las funciones esten definidas en un abierto.
A continuaci
on se dar
a la definicion de lmite para funciones de dos variables,
f
acilmente generalizable para funciones de mas variables. Esta definicion es,
a su vez, una generalizaci
on de lo que ocurre en funciones de una variable.
Definici
on 5.3 Sea f : D R2 R , con D un conjunto abierto y sea
(a, b) R2 . Se dice que R es el lmite de f cuando (x, y) tiende a (a, b)
111

Miguel Angel Cifredo Campos


macifredo@gmail.com

si
> 0 > 0 / si (x, y) D y k(x, y) (a, b)k < |f (x, y) | <
y se denota por

lm

f (x, y) = .

(x,y)(a,b)

En resumen, la expresi
on anterior puede interpretarse diciendo que el lmite
de f es si cuando (x, y) esta cerca de (a, b) el valor de f (x, y) esta cerca
de .
Ejemplo 5.9 Calcula el lmite de f (x, y) = y 2 + 3xy cuando (x, y) tiende
a (0, 1).
Soluci
on: Dado que (x, y) tiende a (0, 1), esto significa que x esta cerca de
0 e y est
a cerca de 1, por lo que, intuitivamente, parece claro que f (x, y) =
y 2 + 3xy estar
a cerca de 12 + 3 0 1 = 1. Entonces, afirmamos que el lmite
ser
a 1; es decir,
lm

(y 2 + 3xy) = 12 + 3 0 1 = 1

(x,y)(0,1)

Cabe notar que, en realidad, lo hecho anteriormente equivale a substituir x


por 0 e y por 1 y evaluar f (x, y).

Nota: El procedimiento visto en el ejemplo anterior (substituir x por 0 e


y por 1 y evaluar f (x, y)) puede funcionar en muchos casos sencillos pero no
equivale siempre al c
alculo del lmite correcto. Igual que sucede en el calculo
de lmites de funciones de una variable, la mayor dificultad se presenta cuando al efectuar estas operaciones el resultado es una de las indeterminaciones
tpicas del c
alculo de lmites. Para resolverlas se utilizan tecnicas especiales
que no abordaremos en este curso.
A pesar de esto, conviene conocer algunos resultados que pueden ayudarnos
a calcular ciertos lmites.
Teorema 5.4 (Criterio del Sandwich) Sean f, g, h : D Rn R verificando que
g(x) f (x) h(x) x D
112

Miguel Angel Cifredo Campos


macifredo@gmail.com

y sea a Rn . Si lm g(x) = lm h(x) = , entonces


xa

xa

lm f (x) =

xa

Teorema 5.5 Sean f, g : D Rn R y sea a Rn , verificando que


lm f (x) = 0 y g(x) es una funcion acotada en D. Entonces,
xa

lm (f (x)g(x)) = 0

xa

El siguiente resultado relaciona el lmite de funciones y el lmite de sucesiones; aunque las sucesiones que aparecen aqu estan formadas por vectores
de Rn .
Teorema 5.6 Sea f (x) una funcion definida en un entorno de x0 . Entonces,
el lm f (x) existe y vale L si, y solo si, para toda sucesion {xk } que converge
xx0

a x0 , siendo xk 6= x0 , para todo k; se cumple que


lm f (xk ) = L

k+

El siguiente ejemplo nos muestra el interes de este teorema: sirve para demostrar que ciertos lmites no existen.
 
1
.
Ejemplo 5.10 Calcula el lm sin
x0
x
Soluci
on: Vamos a ver que este lmite no existe. Por el Teorema 5.6, basta
encontrar dos sucesiones {an } y {bn } que converjan a 0 y que cumplan
 
 
1
1
lm sin
6= lm sin
n
n
an
bn
Aprovecharemos, para ello, las propiedades de periodicidad de la funcion
seno. Sean, para cada n,
an =

1
n

bn =

1
+ 2n

Entonces, es claro que ambas convergen a 0 y, al evaluar la funcion


 
1
sin
= sin(n) = 0, para todo n
an
113

Miguel Angel Cifredo Campos


macifredo@gmail.com


1
= 0; mientras que
an
 
1

sin
= sin( + 2n) = sin = 1, para todo n
bn
2
2
 
1
por lo que lm sin
= 1, tal y como se quera demostrar.
bn
 
1
En la Fig. 5.7 se ha representado la grafica de la funcion sin
x


por lo que lm sin

1
Figura 5.7: Grafica de sin( )
x
Como puede observarse la funcion oscila entre 1 y 1 al acercarse a x = 0;
por lo que toma todos los valores posibles del intervalo [1, 1].

Ejercicio 5.2 Demuestra que no existe

lm

sin

(x,y)(0,0)

sidera sucesiones en


1
. (H: Conx2 + y 2

R2

de la forma (an , 0) y (bn , 0))



Ejemplo 5.11 Calcula el valor de
lm xy sin
(x,y)(0,0)


5
.
x2 + y 2

Soluci
on: Si intentamos resolver este lmite siguiendo el procedimiento del
Ejemplo 5.9, encontramos una dificultad que antes no apareca. Las variables
114

Miguel Angel Cifredo Campos


macifredo@gmail.com

x e y est
an ambas cerca de 0, por lo que el factor xy estara cercano a 0.
5
Sin embargo, el valor de la expresion x2 +y
2 tiende a infinito, al estar el
denominador cercano a 0 y el seno de esta expresion no se acerca a ning
un
valor concreto, por lo que la tecnica de substituir x e y por 0 no es aplicable
en este caso.
No obstante,
 si es cierto que, independientemente, del valor de x e y la
5
funci
on sin x2 +y
se encuentra acotada (en valor absoluto) por 1; por lo
2
que podemos aplicar el Teorema 5.5 y deducir que


5
lm
xy sin
=0
x2 + y 2
(x,y)(0,0) |{z}
{z
}
0 |
acotada

Para el caso de funciones vectoriales, las funciones componentes permiten


reducir el estudio de lmites al estudio de campos escalares.
Definici
on 5.7 Si f : D Rn Rm es una funcion vectorial con componentes f = (f1 , f2 , . . . , fm ), diremos que
lm f (x) = (l1 , l2 , . . . , lm )

xa

si
lm fi (x) = li para i = 1, 2, . . . , m .

xa

5.3.2.

Funciones continuas

El concepto de continuidad se define, de nuevo, como una generalizacion del


caso de funciones de una variable.
Definici
on 5.8 Sean f : D Rn R y x0 D. Diremos que f es
continua en x0 si
 > 0 > 0 / si x D y d(x, x0 ) < = |f (x) f (x0 )| < 
Si f es continua en cada punto x0 D, diremos que f es continua en D y
lo escribiremos f C(D)
115

Miguel Angel Cifredo Campos


macifredo@gmail.com

Una funci
on vectorial f : D Rn Rm es continua en un punto x0 Rn
si todas sus funciones componentes son continuas en x0 .
Ejemplo 5.12 Consideremos la proyeccion j : Rn R con 1 j n,
definida por
j (x1 , x2 , . . . , xn ) := xj
Sean x = (x1 , x2 , . . . , xn ), x0 = (a1 , a2 , . . . , an ) y  > 0. Tomando = , se
cumple que si d(x, x0 ) < , entonces al ser
q
q
|xj aj | = |xj aj |2 < |x1 a1 |2 + . . . + |xj aj |2 + . . . + |xn an |2
y como
d(x, x0 ) =

q
|x1 a1 |2 + . . . + |xj aj |2 + . . . + |xn an |2 <

concluimos de las dos condiciones anteriores que |xj aj | < ; es decir,


|j (x1 , x2 , . . . , xn ) j (a1 , a2 , . . . , an )| = |xj aj | < = 
y como este razonamiento es valido para cualquier x0 Rn , concluimos que
las proyecciones j son continuas en Rn para j = 1, 2, . . . , n.
Incluso en casos sencillos como el del ejemplo anterior el estudio de la continuidad de una funci
on a partir de la definicion puede ser bastante difcil.
Afortunadamente, al igual que sucede en el caso de funciones de una variable,
la definici
on de continuidad es totalmente analoga a la de lmite tomando
= f (x0 ), por lo que el estudio de la continuidad se reduce al estudio de
lmites.
Teorema 5.9 f es continua en un punto x0 si se satisfacen las siguientes
condiciones:
a) f est
a definida en x0 .
b) Existe lm f (x) = l.
xx0

c) f (x0 ) = l.
Como consecuencia, es f
acil deducir las propiedades de las funciones continuas, totalmente an
alogas a las de los lmites.
116

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema 5.10 (Algebra


de funciones continuas) Si las funciones f y
g son continuas en x0 D, tambien lo son
la suma f + g y el producto por un escalar f, R;
el producto f g y el cociente

f
, siempre y cuando g(x0 ) 6= 0;
g

Adem
as, la composici
on de funciones continuas es continua:

f : D Rn Rm continua en x0 D
= g f es continua en x0
g : B Rm Rp continua en f (x0 ) B
Las funciones matem
aticas elementales son continuas en su dominio de definici
on. Esto, junto con el hecho de que la composicion de funciones continuas es continua, permite razonar la continuidad de numerosas funciones.
Por ejemplo,
Ejemplo 5.13 f (x, y, z) = x2 yz x2 + y 3 z 2 8 es continua en R3 por ser
productos y sumas de funciones continuas. De hecho podemos escribir f en
funci
on de las proyecciones j .
f = (1 )2 2 3 (1 )2 + (2 )3 (3 )2 8
Podemos generalizar este resultado diciendo que toda funcion polinomica de
n-variables es continua en Rn por ser producto y sumas de proyecciones.
Ejemplo 5.14 Razona la continuidad de la funcion f (x, y) = sin(xy) en su
dominio.
Soluci
on: La estrategia consiste en razonar la continuidad de las diversas
funciones que componen la funcion f . Se sabe que la funcion g(x, y) =
xy es continua en R2 por ser una funcion polinomica. La funcion f es la
composici
on de esta funci
on g y la funcion elemental seno (que son ambas
continuas), por lo que la funcion f es continua.

Ejemplo 5.15 Razona la continuidad de la funcion f (x, y) =


dominio.

117

xy
x2 +y 2

en su

Miguel Angel Cifredo Campos


macifredo@gmail.com

Soluci
on: Se sabe que la funciones xy y x2 + y 2 son continuas en R2 por
ser funciones polin
omicas. La funcion f es el cociente de ambas, por lo que
la funci
on f es continua en todos los puntos en los que el denominador no
se anula (que es, precisamente, su dominio).

Ejercicio 5.3 Razona la continuidad de las funciones siguientes en su dominio:


1. f (x, y) = x2 y 3xy 3 + 2
p
2. g(x, y) = y 2 + x2 y 2xy 2x3
y 

p


3. h(x, y) = x log 1 + x2 + y 2 +
x
Ejercicio 5.4 Halla el dominio y razona la continuidad en el de las funciones:
(a) f (x, y) = (x2 y 1, sin xy, 0)


p
(b) f (x, y) = log(1 + x2 + y 2 ), 1 (x2 + y 2 )
(Sol.: (a) D = R2 ; (b) D = {(x, y) R2 : x2 + y 2 1} (disco unidad) )

5.4.

Problemas adicionales
x2 y 2
< arctan(xy)
3
xy
lm(x,y)(0,0) arctan(xy)
?
(H:
Aplica
xy

Ejercicio 5.5 Sabiendo que 1

< 1; que puedes decir

sobre el valor de

el Teorema 5.4)

(Sol.: 1 )
 
1
Ejercicio 5.6 Que puedes decir sobre el valor de
lm y sin
? (H:
x
(x,y)(0,0)
Aplica el Teorema 5.5)
(Sol.: 0 )
Ejercicio 5.7 Si f (x) es una funcion continua en x0 y g(x) es una funcion
discontinua en x0 , que sucede con la suma f (x) + g(x)? (H: Aplica el
Teorema 5.10)
118

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 5.8 Si

lm

f (x, y) = L, es cierto que existe el valor

(x,y)(x0 ,y0 )

f (x0 , y0 )? Razona la respuesta.


Ejercicio 5.9 Halla el dominio de f (x, y) =

x2 + y
y razona su continuixy

dad.
(Sol.: D = {(x, y) R2 : x 6= y} )
 
2
Ejercicio 5.10 Halla el dominio de f (x, y) = xy sin
y razona su
xy
continuidad.
(Sol.: D = {(x, y) R2 : xy 6= 0} )
Ejercicio 5.11 Halla el dominio de f (x, y, z) = ln(x2 + y 2 + |z|) y razona
su continuidad.
(Sol.: D = R3 \ {(0, 0, 0)} )
Ejercicio 5.12 Razona la continuidad de las siguientes funciones:
(a) f (x, y) = log(1 + x2 + y 2 )

(b) f (x, y) = log |x2 xy + sin(xy) log(x + y)|

119

Miguel Angel Cifredo Campos


macifredo@gmail.com

Tema 6

Funciones diferenciables
Se sabe que la derivada y 0 de una funcion de una variable, y = f (x), puede
interpretarse como la tasa de variacion de la variable y respecto de la variable
x (es por eso que, frecuentemente, para remarcar este hecho, se utiliza la
dy
para representar dicha derivada).
notaci
on dx
Supongamos que tenemos, ahora, una funcion de dos variables. Por ejemplo,
la presi
on de un gas ideal como funcion del volumen y la temperatura del
gas puede expresarse:
cT
P =
V
donde c es una constante. Si estamos interesados en conocer como vara la
presi
on en funci
on del volumen, a temperatura constante T0 , parece logico
calcular la derivada de P respecto de V suponiendo constante la temperatura, es decir, calcular la derivada de la seccion transversal de la funcion
P = f (V, T ) = cT
V para T = T0 .
En este tema se ver
a que este procedimiento intuitivo es perfectamente valido y que esta derivaci
on parcial permitira obtener un mejor conocimiento
de las funciones de varias variables.

120

Miguel Angel Cifredo Campos


macifredo@gmail.com

6.1.

Derivadas parciales

La derivada de una funci


on de una variable, f (x), en un punto x0 se define
como
f (x0 + h) f (x0 )
f 0 (x0 ) := lm
h0
h
y dicho valor, si existe, representa la pendiente de la recta tangente a la
curva y = f (x) en el punto (x0 , f (x0 )). Como ya se ha dicho antes, tambien
df
se utiliza la notaci
on dx
(x0 ).
De forma similar, las derivadas parciales de una funcion f (x, y) se definen
formalmente como lmites:
Definici
on 6.1 Si f es un campo escalar de dos variables, las derivadas
parciales de f en un punto (x0 , y0 ) estan definidas como
f (x0 + h, y0 ) f (x0 , y0 )
f
(x0 , y0 ) = lm
h0
x
h
f (x0 , y0 + h) f (x0 , y0 )
f
(x0 , y0 ) = lm
h0
y
h
si estos lmites tienen sentido y existen. Observa que puede ocurrir que solo
exista una de las derivadas parciales o ambas o ninguna. Tambien se suele
f
0
utilizar la notaci
on fx0 (x0 , y0 ) = f
x (x0 , y0 ) y fy (x0 , y0 ) = y (x0 , y0 ).
La derivada parcial en un punto (x0 , y0 ) es un n
umero real. Cuando las
derivadas parciales pueden calcularse en puntos genericos (x, y) entonces estamos definiendo una nueva funcion escalar, que se llama funcion derivada
f
parcial y que seguimos denotando por f
x (x, y) ( y (x, y), respectivamente).
En ocasiones, prescindiremos del punto generico y escribiremos, simplemenf
te, f
x ( y , respectivamente). Esta derivada parcial coincide con una derivaci
on ordinaria (respecto de una variable). Para verlo, considera la seccion
transversal de f (x, y) para y = y0 ; es decir, la funcion f (x, y0 ). Esta funcion
s
olo depende de la variable x y podemos calcular la derivada de esta funcion
en x0 , obteniendo:
d
f (x, y0 )
dx

= lm
x = x0

h0

f (x0 + h, y0 ) f (x0 , y0 )
f
=
(x0 , y0 )
h
x

es decir, que la derivada parcial de f respecto de x es la derivada de la


secci
on transversal de f correspondiente. Por tanto, la derivada parcial puede
121

Miguel Angel Cifredo Campos


macifredo@gmail.com

calcularse con las reglas de derivacion ordinarias, suponiendo constante la


variable y.
An
alogamente, la derivada parcial de f respecto de y es la derivada de la
secci
on transversal de f para x = x0 . Por tanto, la derivada parcial puede
calcularse suponiendo constante la variable x.
Ejemplo 6.1 Si f (x, y) = 5x2 y sin(x + y), podemos diferenciar f con
respecto a x, considerando y como una constante, y obtenemos
f
(x, y) = 10xy cos(x + y) .
x
De manera similar, si consideramos que x es constante y derivamos respecto
a y, obtenemos una funci
on,
f
(x, y) = 5x2 cos(x + y) .
y
Ejemplo 6.2 Calcula las derivadas parciales de la funcion f (x, y) = x7 y
exy .
Soluci
on: En este caso podemos calcular las derivadas parciales en cualquier
punto (x, y) por el procedimiento de suponer constante una de las variables.
As pues,
f
(x, y) = 7x6 y exy
x
f
(x, y) = x7 + exy
y

Ejercicio 6.1 Calcula las derivadas parciales de f (x, y) = x arctan(xy).


(Sol.:

f
x (x, y)

xy
1+x2 y 2

+ arctan(xy);

f
y (x, y)

x2
1+x2 y 2

Ejercicio 6.2 Calcula las derivadas parciales de f (x, y) = x3 ex x cos y.


(Sol.:

f
x (x, y)

= (x3 + 3x2 ) ex cos y;

f
y (x, y)

= x sin y )

Igual que sucede en el caso de una variable, hay ocasiones en que, teniendo
en cuenta la definici
on de la funcion, no podemos calcular las derivadas
122

Miguel Angel Cifredo Campos


macifredo@gmail.com

parciales derivando respecto de una variable y debemos calcularla aplicando


la definici
on, es decir, calculando los lmites de la Definicion 6.1. Veamos el
siguiente ejemplo.
Ejemplo 6.3 Estudia la existencia, y calcula en su caso, las derivadas parciales en el origen de la funcion

1
x sin
si (x, y) 6= (0, 0)
2
f (x, y) =
x + y2

0
si (x, y) = (0, 0)
Soluci
on: A diferencia del ejemplo anterior, en este caso no podemos derivar
1
directamente la expresi
on x sin 2
para obtener las derivadas parciales
x + y2
en el origen porque dicha expresion no esta definida en el origen. No tenemos
m
as remedio que aplicar la definicion de derivada parcial para calcular las
derivadas parciales buscadas. Comenzaremos con la derivada parcial respecto a la variable x:
1
h sin 2
f
f (0 + h, 0) f (0, 0)
h = lm sin 1 .
(0, 0) = lm
= lm
h0
h0
h0
x
h
h
h2
Ahora bien, este u
ltimo lmite no existe (por que?) y, por tanto, no existe
f
(0, 0).
x
Calculamos ahora la derivada parcial respecto a la variable y:
1
0 sin 2
f (0, 0 + h) f (0, 0)
f
h = lm (0) = 0
(0, 0) = lm
= lm
h0
h0
h0
y
h
h

Ejercicio 6.3 Calcula las derivadas parciales en el origen de la funcion


2
x + y2
si (x, y) 6= (0, 0)
g(x, y) =
x4 + y 4

0
si (x, y) = (0, 0)
(Sol.: No existen. )

123

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 6.4 Calcula las derivadas parciales en el origen de la funcion

xy sin 1 si y 6= 0
m(x, y) =
y

0
si y = 0
(Sol.:

f
x (0, 0)

f
y (0, 0)

=0)

Analizaremos a continuaci
on la intrepretacion geometrica de las derivadas
parciales. Considera la superficie de la Fig. 6.1.

Figura 6.1: Interpretacion geometrica de la derivada parcial

Hemos cortado la superficie z = f (x, y) con el plano y = y0 paralelo al plano


xz. El plano y = y0 corta la superficie en una curva, la seccion transversal
y0 de la superficie, es decir, f (x, y0 ), que es la grafica de la funcion
g(x) = f (x, y0 )
y, por tanto,
f
(x0 , y0 );
x
es decir, f
on transversal y0 de la superficie
x (x0 , y0 ) es la pendiente de la secci
z = f (x, y) en el punto P (x0 , y0 , f (x0 , y0 )).
g 0 (x0 ) =

124

Miguel Angel Cifredo Campos


macifredo@gmail.com

De manera similar se puede razonar que f


y (x0 , y0 ) es la pendiente de la secci
on transversal x0 de la superficie z = f (x, y) en el punto P (x0 , y0 , f (x0 , y0 )).
De forma an
aloga es posible definir las derivadas parciales para funciones de
tres o m
as variables, con la salvedad de que aumenta el n
umero de derivadas
parciales a calcular (tantas como variables). As, si tenemos ahora un campo
escalar de tres variables, podemos considerar tres derivadas parciales, f
x ,
f f
y , z .
Definici
on 6.2 Si f es un campo escalar de tres variables, las derivadas
parciales de f en un punto (x0 , y0 , z0 ) son definidas como
f
f (x0 + h, y0 , z0 ) f (x0 , y0 , z0 )
(x0 , y0 , z0 ) = lm
h0
x
h
f
f (x0 , y0 + h, z0 ) f (x0 , y0 , z0 )
(x0 , y0 , z0 ) = lm
h0
y
h
f (x0 , y0 , z0 + h) f (x0 , y0 , z0 )
f
(x0 , y0 , z0 ) = lm
h0
z
h
si estos lmites tienen sentido y existen.
Ejemplo 6.4 Calcula las derivadas parciales de f (x, y, z) = x2 y yz 3 .
Soluci
on: Suponiendo que y y z son constantes y derivando respecto a x,
obtenemos
f
(x0 , y0 , z0 ) = 2xy .
x
De forma similar tenemos:
f
(x0 , y0 , z0 ) = x2 z 3
y
f
(x0 , y0 , z0 ) = 3yz 2
z

125

Miguel Angel Cifredo Campos


macifredo@gmail.com

6.1.1.

La diferencial

En esta secci
on generalizaremos el concepto de diferenciabilidad de funciones
de una variable a campos escalares. Las derivadas parciales por s mismo no
cumplen este objetivo porque nada mas reflejan el comportamiento de la
funci
on en algunas direcciones particulares (las direcciones de los ejes de
coordenadas).
Definici
on 6.3 Se dice que un campo escalar f : D Rn R, con D un
conjunto abierto, es diferenciable en x0 D si existe un vector y Rn tal
que
f (x + h) f (x) = yh + o(h)
donde o(h) es una funci
on que satisface la condicion
o(h)
= 0.
h0 ||h||
lm

Cabe se
nalar que el vector y depende de x0 . No es muy difcil demostrar las
dos propiedades siguientes:
(1) Si f es un campo escalar diferenciable en x = x0 , entonces el vector y
es u
nico.
(2) Si f es un campo escalar diferenciable en x0 , entonces f es continuo en
x0 .
El vector y que aparece en la Definicion 6.3 recibe el nombre de gradiente de
f en el punto x0 y lo denotaremos por f (x0 ) (en algunos textos tambien
se usa la notaci
on grad (f ) para denotar el gradiente de f ).
Como veremos posteriormente, el gradiente juega un papel importante en las
aplicaciones del c
alculo diferencial de campos escalares. Logicamente, calcularlo utilizando la definici
on de funcion diferenciable suele ser complicado.
El siguiente resultado nos proporciona una forma alternativa de calcularlo
que es la que usualmente utilizaremos.
Teorema 6.4 (a) Si f es un campo escalar de n variables, diferenciable en
el punto x0 , entonces


f
f
f
f (x0 ) =
(x0 ),
(x0 ), . . . ,
(x0 )
x1
x2
xn
126

Miguel Angel Cifredo Campos


macifredo@gmail.com

(b) Si f es un campo escalar que tiene derivadas parciales continuas en el


punto x0 , entonces f es diferenciable en x0 .
Es importante darse cuenta de que el gradiente define un campo vectorial: si
f es diferenciable en todos los puntos de un subconjunto D de Rn , entonces
queda definido el campo vectorial f : D Rn Rn .
Una consecuencia importante del Teorema 6.4 es que el calculo del gradiente
se reduce al c
alculo de derivadas parciales.
Ejemplo 6.5 Calcula el gradiente del campo escalar f (x, y) = x ey y ex .
Soluci
on: Las derivadas parciales de f son:
f
(x, y) = x ey ex
y

f
(x, y) = ey y ex ,
x

Las derivadas parciales son continuas en todo R2 al ser producto y suma de


funciones continuas. Por tanto, la funcion f es diferenciable. El gradiente es
el campo vectorial definido como
f (x, y) = (ey y ex )i + (x ey ex )j

Ejercicio 6.5 Calcula el gradiente del campo escalar f (x, y, z) = x sin(y)+


y cos(z). Calcula f (0, 1, 2).
(Sol.: f (x, y, z) = (sin(y), x cos(y) + cos(z), y sin(z)),
f (0, 1, 2) = (0, 1, 0) )
Ejercicio 6.6 Calcula el gradiente del campo escalar f (x, y) = 2x2 3xy +
4y 2 en el punto (2, 3).
(Sol.: f (2, 3) = (1, 18) )
Ejercicio 6.7 Calcula el gradiente del campo escalar f (x, y) = 2x(x y)1
en el punto (3, 1).
1
3
(Sol.: f (3, 1) = i + j )
2
2
127

Miguel Angel Cifredo Campos


macifredo@gmail.com

Si volvemos a la Definici
on 6.3, se llama diferencial de f a la expresion yh
que all aparece. Como y = f (x0 ) podemos escribir la diferencial como
f
f
f
(x0 ) h1 +
(x0 ) h2 + . . . +
(x0 ) hn
x1
x2
xn
Entonces, as como las derivadas parciales representan la tasa de variacion
de la funci
on f respecto de una de las variables; la diferencial puede interpretarse como la tasa de variacion total de una funcion, respecto de cada una
de sus variables. En efecto, como los valores hj representan el incremento de
las variables xj , podemos reemplazarlos por la notacion 4xj y, entonces,
4f := f (x + 4x) f (x) = f (x) 4x + o(4x)
de donde

4f
4x
o(4x)
= f (x)
+
k4xk
k4xk
k4xk

y al tomar lmites cuando k4xk 0 se tiene


df (x) = f (x) dx
Por ejemplo, si H = f (x, y, z) entonces,
dH =

f
f
f
dx +
dy +
dz
x
y
z

donde cada diferencial, dx, dy y dz, representa las variacion total de las
variables x, y y z, respectivamente.
Ejemplo 6.6 La fuerza de atraccion gravitatoria entre dos cuerpos de masas M y m separados a una distancia R, viene dada por la formula:
F =G

M m
R2

donde G es la constante de gravitacion universal. Si la masa de uno de los


cuerpos, M , aumenta un 3 % mientras que la otra masa, m, aumenta un 2 %
y la distancia, R, que los separa tambien aumenta un 3 %; estima el cambio
en la fuerza F .
Soluci
on: Sabemos que:
dF =

F
F
F
dM +
dm +
dR
M
m
R
128

Miguel Angel Cifredo Campos


macifredo@gmail.com

Como conocemos los cambios relativos (porcentajes), vamos a calcular tambien el cambio relativo en F . As, dividiendo lo anterior por F :
dF
=
F

F
M dM

F
m dm

Gm
dM
R2
M m
G R2

dM
dm 2dR
+

= 0,03 + 0,02 2 0,03 = 0,01


M
m
R

GM
dm
R2
M m
G R2

F
R dR

+
+

m
dR
2GM
R3

G MRm
2

Por lo que el cambio en F es de una disminucion del 1 %.

Ejercicio 6.8 La deflecci


on y, en el centro de una placa circular suspendida
por el borde y uniformemente cargada viene dada por
y=

Kwd4
t3

donde w =carga total, d =diametro de la placa, t = amplitud y K es una


constante. Calcula el cambio aproximado en el porcentaje de y si se aumenta
w en un 3 %, se disminuye d en un 2 % y se aumenta t en un 4 %.
(Sol.: 17 % )
Ejercicio 6.9 Si se mezclan x moleculas-gramo de acido sulf
urico con y de
agua, el calor liberado viene dado por la formula
F (x, y) =

1.786xy
cal.
1.798x + y

Si partimos de 5 moleculas-gramo de acido y 4 de agua y se aumentan,


respectivamente, a 5.01 y 4.04, cuanto calor adicional se genera?
(Sol.: 0.02 cal. )
Ejercicio 6.10 Seg
un la ley de Pouseuille, la resistencia al flujo de sangre
que ofrece un vaso sanguneo cilndrico de radio r y longitud x es
cx
R= 4
r
donde c es una constante. Estimar la variacion porcentual de R cuando x
aumenta un 3 % y r decrece un 2 %.
(Sol.: R aumenta un 11 % )
129

Miguel Angel Cifredo Campos


macifredo@gmail.com

6.1.2.

Planos tangentes

Supongamos una superficie de ecuacion z = f (x, y), con f una funcion diferenciable en un punto (x0 , y0 ). Sabemos que existen las derivadas parciales
f
f
x (x0 , y0 ) y y (x0 , y0 ) y que representan las pendientes de las rectas tangentes a las secciones transversales para y = y0 y para x = x0 , respectivamente.
Estas secciones transversales son curvas sobre la superficie z = f (x, y) que
pasan por el punto P0 (x0 , y0 , z0 ), donde z0 = f (x0 , y0 ) (vease la Fig. 5.1);
por lo que se define el plano tangente a la superficie en (x0 , y0 , z0 ) como el
plano que contiene a las dos rectas tangentes mencionadas. Puesto que la
intersecci
on de este plano con los planos verticales x = x0 e y = y0 deben ser
las rectas tangentes descritas, se puede deducir que una ecuacion del plano
tangente vendr
a dada por
z z0 =

f
f
(x0 , y0 )(x x0 ) +
(x0 , y0 )(y y0 )
x
y

Por otra parte, veremos en la seccion siguiente que cualquier otra curva en
la superficie z = f (x, y) que pase por el punto P0 cumplira que su recta
tangente est
a en este plano, lo que justifica el termino plano tangente.
Ejemplo 6.7 Calcula la ecuacion del plano tangente a la grafica de la funci
on f (x, y) = exy en el punto (1, 0, 1).
Soluci
on: Seg
un hemos visto, la ecuacion del plano tangente es
z z0 =

f
f
(x0 , y0 )(x x0 ) +
(x0 , y0 )(y y0 )
x
y

Basta calcular las derivadas parciales:


f
(1, 0) = y exy
x

x = 1, y = 0

f
(1, 0) = x exy
y

x = 1, y = 0

=0

=1

por lo que, la ecuaci


on es
z1=

f
f
(1, 0)(x 1) +
(1, 0)(y 0)
x
y
| {z }
| {z }
0

130

Miguel Angel Cifredo Campos


macifredo@gmail.com

es decir, z = 1 + y.

Ejercicio 6.11 Calcula la ecuacion del plano tangente a la grafica de la


funci
on f (x, y) = x exy en el punto (1, 0, 1).
(Sol.: z = x + y )
Si observamos, de nuevo, la Definicion 6.3, obtenamos
f
f
(x0 , y0 )(x x0 ) +
(x0 , y0 )(y y0 ) +o(h)
f (x, y) = f (x0 , y0 ) +

y
{z
}
|
L(x,y)

siendo ahora h = (x x0 , y y0 ), que puede interpretarse como que la


funci
on L(x, y) aproxima a f (x, y) para h suficientemente peque
no. Pero la
gr
afica de z = L(x, y) no es mas que el plano tangente, por lo que acabamos
de probar que si una funci
on es diferenciable en un punto (x0 , y0 ), entonces
el plano tangente es una aproximacion a la grafica de la funcion f (x, y) en
el punto de tangencia.
Ejemplo 6.8 Utiliza el Ejemplo 6.7 para calcular un valor aproximado de
f (1.1, 0.1) siendo f (x, y) = exy .
Soluci
on: Dado que el plano tangente era z = 1+y entonces, f (x, y) 1+y
para puntos cercanos a (1, 0), por lo que
f (1.1, 0.1) 1 0.1 = 0.9
(e0.11 0.895834135)

Cuando las superficies vienen dadas en la forma f (x, y, z) = 0 y no es posible,


o bien resulta muy complicado, despejar z en funcion de x e y, podemos
aplicar el siguiente resultado para calcular el plano tangente.
Teorema 6.5 En cada uno de los puntos del dominio de f en los que
f 6= 0, el vector gradiente f es perpendicular a las curvas de nivel de f
que pasan por el punto, si f es un campo escalar de dos variables, y a las
superficies de nivel que pasan por el punto, si f es un campo escalar de tres
variables.
131

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 6.9 Para la funcion f (x, y) = x2 + y 2 las curvas de nivel son


circunferencias concentricas
x2 + y 2 = c .
En cada uno de los puntos (x, y)) 6= (0, 0), el vector gradiente
f (x, y) = 2xi + 2yj
es perpendicular a las circunferencias anteriores (ver Fig. 6.2). En el origen,
la curva de nivel se reduce a un punto y el gradiente es simplemente el vector
(0, 0)

Figura 6.2: El gradiente es perpendicular a las curvas de nivel

Veremos ahora la aplicaci


on del Teorema 6.5 a curvas con ecuaciones de
la forma f (x, y) = c para calcular rectas tangentes y rectas normales (perpendiculares). Despues lo aplicaremos de forma similar al caso de superficies
para calcular planos tangentes. Teniendo en cuenta dicho teorema, si (x0 , y0 )
es un punto de la curva de nivel C, f (x0 , y0 ) es un vector normal a la curva
132

Miguel Angel Cifredo Campos


macifredo@gmail.com

C en el punto (x0 , y0 ). Por tanto, la recta que pasa por (x0 , y0 ) y tiene como
vector director el vector perpendicular a f (x0 , y0 ) es la recta tangente. Por
tanto, un punto (x, y) est
a en la recta tangente si verifica la igualdad
(x x0 , y y0 )f (x0 , y0 ) = 0 .
Ejemplo 6.10 Encuentra un vector normal y un vector tangente a la curva
del plano de ecuaci
on x2 + 2y 3 = xy + 4 en el punto (2, 1). Encuentra,
adem
as, las ecuaciones de la recta tangente y de la recta normal a la curva
en el punto (2, 1).
Soluci
on: La idea consiste en expresar la ecuacion de la curva como una
curva de nivel y as poder aplicar el Teorema 6.5. Para ello basta observar
que podemos escribir la ecuacion como
x2 + 2y 3 xy = 4
y, entonces, llamando f (x, y) = x2 + 2y 3 xy, la curva es precisamente
la curva de nivel C : f (x, y) = 4. Notemos, ademas, que el punto (2, 1)
pertenece a C. El gradiente de f es
f (x, y) = (2x y)i + (6y 2 x)j
y, por tanto, el gradiente f ((2, 1), es un vector normal a la curva en el
punto (2, 1). Dicho gradiente vale
f (2, 1) = 3i + 4j
Conocemos por tanto un punto de la recta normal buscada (debe pasar por
el punto (2, 1)) y un vector director f (2, 1). La ecuacion de la recta normal
es:
y1
x2
=
,
3
4
4
5
es decir, y = x .
3
3
Encontremos ahora la ecuacion de la recta tangente. Si (x, y) es un punto de
la recta tangente, el vector (x 2, y 1) es un vector tangente y, por tanto,
f (2, 1) (x 2, y 1) = 0
es decir, la recta tangente tiene por ecuacion 3x + 4y 10 = 0.

133

Miguel Angel Cifredo Campos


macifredo@gmail.com

Apliquemos ahora el Teorema 6.5 al caso de superficies. En este caso, la propiedad nos dice que el plano tangente a una superficie dada por la ecuacion
f (x, y, z) = c en el punto x0 = (x0 , y0 , z0 ) es el plano que pasa por (x0 , y0 , z0 )
con vector normal f (x0 ). Por tanto, un punto x esta en el plano tangente
en el punto x0 si, y s
olo si,
f (x0 )(x x0 ) = 0
que es la ecuaci
on del plano tangente (ver Fig. 6.3). En forma implcita:
f
f
f
(x0 , y0 , z0 ) (x x0 )+
(x0 , y0 , z0 ) (y y0 )+
(x0 , y0 , z0 ) (z z0 ) = 0
x
y
z

Figura 6.3: Plano tangente

Si ahora queremos calcular la recta normal a la superficie en el punto x0


s
olo hemos de tener en cuenta que un vector director es el vector f (x0 )
que es perpendicular a la superficie en el punto x0 . La ecuacion continua de
la recta normal es
x x0
y y0
z z0
=
=
f
f
f
(x0 )
(x0 )
(x0 )
x
y
z

134

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 6.11 Encuentra la ecuacion del plano tangente y de la recta normal a la superficie de ecuacion xy + yz + zx = 11 en el punto (1, 2, 3) .
Soluci
on: Como antes, la estrategia es expresar la ecuacion de la superficie
como una superficie de nivel. En este caso, basta observar que la ecuacion
dada puede escribirse como f (x, y, z) = 11 para el campo escalar f (x, y, z) =
xy + yz + zx. Tenemos que f (1, 2, 3) = (5, 4, 3), debe ser perpendicular
a la superficie de nivel y, por tanto, perpendicular al plano tangente a esa
superficie, de donde la ecuacion del plano tangente es
5(x 1) + 4(y 2) + 3(z 3) = 0 ,
que simplificada es 5x + 4y + 3z 22 = 0. La ecuacion de la recta normal es:
y2
z3
x1
=
=
5
4
3

Ejercicio 6.12 Encuentra la ecuacion de la recta tangente y de la recta


normal a la curva x2 + xy + y 2 = 3 en P (1, 1).
(Sol.: recta tangente: x + y + 2 = 0, recta normal: x y = 0 )
Ejercicio 6.13 Encuentra la ecuacion de la recta tangente y de la recta
normal a 2x3 x2 y 2 = 3x y 7 en P (1, 2).
(Sol.: recta tangente: x y 3 = 0, recta normal: x + y + 1 = 0 )
Ejercicio 6.14 Encuentra la ecuaci
2 on del plano tangente y de la recta normal a la superficie z = x2 + y 2 en P (1, 1, 4).
(Sol.: plano: 8x + 8y z 12 = 0, recta:

x1
y1
z4
=
=
)
8
8
1

Ejercicio 6.15 Encuentra la ecuacion del plano tangente y de la recta normal a xy 2 + 2z 2 = 12 en P (1, 2, 2).
(Sol.: plano: x + y + 2z = 7, recta: x 1 = y 2 =

135

z2
.)
2

Miguel Angel Cifredo Campos


macifredo@gmail.com

6.1.3.

Matriz Jacobiana

Una funci
on vectorial f = (f1 , f2 , . . . , fm ) de n variables se dira diferenciable
en un punto x0 de su dominio cuando cada componente fj lo sea. Por lo
fj
(x0 ). Entonces,
visto antes, deben existir todas las derivadas parciales
xk
se llama matriz jacobiana a la matriz (m n)
f1 f1
f1
x
x1
x2
n

f2 f2
f2
x1 x2 x

n
Jf (x0 ) =
.
..
..
..
.
.

fm
fm
fm

x1
x2
xn
donde todas las derivadas parciales estan evaluadas en el punto x0 . Observa
que en cada fila j se encuentra el gradiente de la componente fj .
Ejemplo 6.12 Calcula la matriz jacobiana del campo f (x, y) = (xy, x+y 2 ).
Soluci
on: S
olo debemos calcular las derivadas parciales de cada componente. As pues,


y x
Jf (x, y) =
1 2y

6.2.

Derivadas direccionales

Las derivadas parciales son derivadas en la direccion de los ejes de coordenadas. La definici
on de derivada parcial se puede generalizar a cualquier
direcci
on definida por un vector u diferente de cero. Recordemos que un
vector unitario es un vector de norma uno.
Definici
on 6.6 Para cada vector unitario u, el lmite
f (x + hu) f (x0 )
h0
h
si tiene sentido y existe, se denomina derivada direccional de f en x0 en la
direcci
on u.
fu0 (x0 ) = lm

136

Miguel Angel Cifredo Campos


macifredo@gmail.com

Como ya sabemos, las derivadas parciales de f representan las tasas de


variaci
on de f en las direcciones de los ejes de coordenadas i, j y k. La
derivada direccional fu0 proporciona la tasa de variacion de f en la direccion
de u.
En la Fig. 6.4 se muestra la interpretacion geometrica de la derivada direccional de una funci
on de dos variables. Fijemos un punto (x, y) en el plano
xy, y sea C la curva interseccion de la superficie z = f (x, y) y el plano s que
contiene el vector u y es perpendicular al plano xy. Entonces fu0 (x, y) es la
pendiente de la recta tangente T a la curva C en el punto (x, y, f (x, y)).

Figura 6.4: Interpretacion geometrica de la derivada direccional

Nota: La definici
on de derivada direccional en la direccion u requiere que
el vector u sea unitario. No obstante, podemos extender la definicion a vectores arbitrarios no nulos: la derivada direccional de f en x en la direccion
w
de un vector no nulo w es fu0 (x) donde u =
es el vector unitario que
||w||
tiene la misma direcci
on que w.
Teorema 6.7 Si f es diferenciable en x, entonces f tiene derivada direccional en x en cualquier direccion u , donde u es un vector unitario y, ademas,
se verifica la igualdad
fu0 (x) = f (x) u .
137

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 6.16 Para los campos escalares de los Ejercicios 6.5, 6.6 y 6.7,
calcula la derivada direccional en las direcciones (0, 1, 2), (2, 3) y (3, 1), respectivamente.

1 52 3
,0)
(Sol.: ,
3
5
Teniendo en cuenta las propiedades del producto escalar, la igualdad
fu0 (x) = f (x) u .
puede escribirse como
fu0 (x) = f (x) u = ||f (x)|| ||u|| cos
donde es el
angulo entre f (x) y u. Como 1 cos 1, tenemos que la
derivada direccional fu0 (x) sera maxima cuando cos = 1; es decir, cuando
= 0 o, equivalentemente, cuando u apunta en la direccion y sentido de
f (x). Adem
as, el valor m
aximo sera kf (x)k.
Por otra parte, la derivada direccional fu0 (x) sera mnima cuando cos = 1;
es decir, cuando = o, equivalentemente, cuando u apunta en la direccion
y sentido de f (x). Ademas, el valor mnimo sera kf (x)k.
Ya que la derivada direccional es la tasa de variacion de la funcion en la
direcci
on u considerada, se acaba de demostrar el siguiente resultado:
Teorema 6.8 Si f es una funcion diferenciable en el punto x0 , entonces f
tiene m
aximo crecimiento a partir del punto x0 en el sentido de su gradiente
(y la tasa de variaci
on es entonces ||f (x0 )||) y tiene maximo decrecimiento
a partir del punto x0 en el sentido contrario (y la tasa de variacion es entonces
||f (x0 )||).
Ejemplo 6.13 La temperatura en cada uno de los puntos de una placa
met
alica viene dada por la funcion
T (x, y) = ex cos y + ey cos x .
(a) En que direcci
on crece la temperatura mas rapidamente a partir del
punto (0, 0)? Cu
al es la tasa de incremento?
(b) En que direcci
on decrece mas rapidamente la temperatura a partir de
(0, 0)?
138

Miguel Angel Cifredo Campos


macifredo@gmail.com

Soluci
on: Basta aplicar el Teorema 6.8. Comencemos por calcular el gradiente de T :
T (x, y) = (ex cos y ey sin x) i + (ey cos x ex sin y) j .
(a) A partir de (0, 0) la temperatura crece mas rapidamente en la direccion
del gradiente
T (0, 0) = i + j
La tasa de variaci
on es
||T (0, 0)|| = ||i + j|| =

(b) La temperatura decrece mas rapidamente a partir de (0, 0) en la direccion


de
T (0, 0) = i j .

4 2
x 3y 2 ,
3
encontrar la tasa de variacion del cambio de densidad (a) en (1, 1) en la
direcci
on en la que la densidad decrece mas rapidamente; (b) en (1, 2) en la
direcci
on de i y (c) en (2, 2) alejandose del origen.
26
2
8
(Sol.: (a)
97; (b) ; (c)
2)
3
3
3

Ejercicio 6.17 Dada la funcion de densidad (x, y) = 48

6.3.

Derivadas parciales de orden superior

Recordemos que las derivadas parciales de un campo escalar si existen en


una bola de centro x0 definen un nuevo campo escalar y que, por tanto,
podemos calcular tambien sus derivadas parciales si se dan las circunstancias convenientes para su existencia. Estas derivadas parciales se denominan
derivadas parciales de segundo orden y se denotan de la siguiente manera:


2f

f
00
fxi xj (x) =
(x) :=
(x)
xj xi
xj xi
En el caso particular de ser i = j se escribe
Fijemonos en el siguiente ejemplo:
139

2f
2f
en
lugar
de
.
xi xi
x2i

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 6.14 Calcula las derivadas parciales de segundo orden del campo
escalar f (x, y) = x3 y x2 y 2 .
Soluci
on: Calculamos primero las derivadas parciales
f
(x, y) = 3x2 y 2xy 2
x
f
(x, y) = x3 2x2 y
y
2f
Ahora, para calcular
(x, y), solo hemos de volver a derivar respecto a la
x2
variable x:

2f
(x, y) =
(3x2 y 2xy 2 ) = 6xy 2y 2
2
x
x
2f
El procedimiento para calcular
(x, y) es similar. Volvamos a derivar
y 2
respecto a la variable y:
3
2f
(x, y) =
(x 2x2 y) = 2x2
y 2
y
El c
alculo de las otras derivadas parciales de segundo orden se realiza de una
2f
forma similar. Para calcular
(x, y) derivamos respecto x la derivada
xy
parcial de f respecto a y.
3
2f
(x, y) =
(x 2x2 y) = x2 4xy
x y
x
2f
(x, y) derivamos respecto a y la derivada
y x
parcial respecto a x de la funcion f :
y, por u
ltimo, para calcular

2f
(x, y) =
(3x2 y 2xy 2 ) = 3x2 4xy
y x
y

En el ejemplo anterior hemos visto que las derivadas cruzadas


y

2f
(x, y)
yx

2f
(x, y) coinciden. Este hecho no es casual. Si las derivadas parciales
xy
140

Miguel Angel Cifredo Campos


macifredo@gmail.com

de segundo orden existen en una bola que contiene al punto (x, y) y son
continuas en el punto (x, y), entonces las derivadas parciales cruzadas coinciden en el punto (x, y). La igualdad anterior es consecuencia, por tanto, del
hecho de que el campo escalar f (x, y) = x3 y x2 y 2 satisface esta condicion.
Los campos escalares con los que trabajaremos a partir de ahora verificaran
siempre la condici
on anterior, por lo que solo tendremos que calcular una de
las dos derivadas cruzadas.
Las derivadas parciales segundas (como la derivada segunda en el caso de
funciones reales de variable real) se utilizaran para estudiar si un campo
escalar tiene extremos locales. Si f es un campo escalar con derivadas parciales de segundo orden continuas en una bola abierta que contiene al punto
x0 , denotamos por H(x0 ) la matriz Hessiana de f en el punto x0 definida
como
fx001 x1

fx001 x2

fx001 xn

00
fx2 x1

H(x0 ) = .
..

fx00n x1

fx002 x2
..
.

fx00n x2

fx002 xn

..
.

00
fxn xn

donde todas las derivadas estaan evaluadas en x0 . Notemos que la matriz


Hessiana H(x0 ) es una matriz simetrica ya que las derivadas cruzadas coinciden en el punto x0 y, por tanto, define una forma cuadratica.
Un razonamiento an
alogo permite definir las derivadas de tercer orden como
las derivadas parciales de las derivadas de segundo orden. Se denotaran por
 2 

f
3f
000
(x) :=
(x)
fxi xj xk (x) =
xk xj xi
xk xj xi
Ejemplo 6.15 Considerese f (x, y, z) = x2 yz.
Soluci
on: Entonces,
f
2f
3f
= x2 y
= 2xy
= 2x
z
xz
yxz
Adem
as,
3f
= 2y
zx2
141

Miguel Angel Cifredo Campos


macifredo@gmail.com

3f
=0
zxz
y as sucesivamente.

Evidentemente, el proceso puede reiterarse, de forma que es posible definir


derivadas parciales de orden p mientras se puedan derivar las parciales de
orden p 1.
En general, si un campo escalar admite derivadas parciales hasta un orden
p y todas son continuas, se dice que f es de clase C p . Ademas, cuando un
campo escalar es de clase C p para cualquier orden p, se dice que es de clase
C.

6.4.

Regla de la cadena

La llamada regla de la cadena se utiliza para derivar la composicion de


funciones, al igual que sucede con las funciones de una variable.
Teorema 6.9 Sean D Rn y D0 Rm abiertos, f : D Rm una funcion
diferenciable en x0 , con f (D) D0 y g : D0 Rp diferenciable en f (x0 ).
Entonces la composici
on g f es diferenciable en x0 y ademas,

Jgf (x0 ) = Jg (f (x0 )) Jf (x0 )


A partir de el se deduce la regla de la cadena, que admite diversas versiones
seg
un sean las funciones involucradas. Por ejemplo, si se tiene una funcion
u = f (x, y, z) y cada variable x, y, z es, a su vez, funcion de una variable
t resulta que la funci
on u es, en realidad, una funcion de t y tiene sentido
calcular
f dx f dy f dz
du
(t0 ) =
+
+
dt
x dt
y dt
z dt
donde las derivadas de f estan evaluadas en (x(t0 ), y(t0 ), z(t0 )) y las derivadas de x, y, z en t0 .
Otro ejemplo ocurre cuando las variables x, y, z sean, a su vez, funciones de
varias variables: si u = f (x, y, z) y cada variable x, y, z es, a su vez, funcion
142

Miguel Angel Cifredo Campos


macifredo@gmail.com

de las variables s, t resulta que


f x f y f z
u
=
+
+
t
x t
y t
z t
donde cada derivada se eval
ua en su correspondiente punto y, analogamente
para la otra derivada parcial.
f x f y f z
u
=
+
+
s
x s
y s
z s
 2

x y2
Ejemplo 6.16 Sea z = f
con f una funcion diferenciable. Calx2 + y 2
cula el valor de la expresi
on
x

z
z
+y
x
y

x2 y 2
. Entonces, z = f (v) con v una funcion
x2 + y 2
que depende de x e y. Aplicamos la regla de la cadena y obtenemos

Soluci
on: Llamamos v =

df v
z
=
x
dv x
df v
z
=
y
dv y
Ahora,
v
4xy 2
= 2
,
x
(x + y 2 )2

df
= f 0 (v),
dv

v
4x2 y
= 2
y
(x + y 2 )2

por lo que
x

4x2 y
z
z
4xy 2
0
+
yf
(v)
+y
= xf 0 (v) 2
x
y
(x + y 2 )2
(x2 + y 2 )2


4x2 y 2
4x2 y 2
0

=0
= f (v)
(x2 + y 2 )2 (x2 + y 2 )2

Ejemplo 6.17 Sea z = f (y/x), donde f es una funcion derivable. Calcula


el valor de la expresi
on
x2

2
2z
2z
2 z
+
2xy
+
y
x2
xy
y 2

143

Miguel Angel Cifredo Campos


macifredo@gmail.com

Soluci
on: Llamamos s = y/x
regla de la cadena.
z
=
x
z
=
y

y, entonces, z = f (s). Ahora aplicando la


df s
=
ds x
df s
=
ds y

df y
ds x2
df 1
ds x

Para hacer las derivadas segundas se debe tener en cuenta que


dependiendo de la variable s y, entonces,
 
df
d2 f s
=
x ds
ds2 x
 
d2 f s
df
=
y ds
ds2 y
As,
2z

=
x2
x
=

df
ds

y df 2y
d2 f s y df 2y
+
=
+
x2
ds x3
ds2 x x2
ds x3

d2 f y y df 2y
y 2 d2 f
2y df
+
=
+ 3
ds2 x2 x2
ds x3
x4 ds2
x ds

2z

=
y 2
y

df
ds

1
d2 f s 1
1 d2 f
= 2
= 2
x
ds y x
x ds2

2z

=
xy
x

df
ds

1 df 1
d2 f s 1 df 1
+
=
+
x ds x2
ds2 x x ds x2

d2 f y 1 df 1
y d2 f
1 df
=

2
+
2
2
2
3
2
ds x x ds x
x ds
x ds

Finalmente,
x2

 2 2

2
2z
2z
2y df
2 z
2 y d f
+
2xy
+
y
=
x
+
x2
xy
y 2
x4 ds2
x3 ds


y d2 f
1 df
+ 2xy 3
2
x ds2
x ds


2
1 d f
+ y2 2
=0
x ds2
144

df
ds

sigue

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 6.18 Determina df


dt , mediante la regla de la cadena, en los siguientes casos: (a) f (x, y) = x2 y 3 ; x = t3 , y = t2 ; (b) f (x, y) = x2 y y 2 x;
x = cos t, y = sin t.
(Sol.: (a) 12t11 ; (b)2 sin t cos t(sin t + cos t) + sin3 t + cos3 t )
Ejercicio 6.19 Sea f (x, y) = 12 x2 y + g(u, v), siendo g : R2 R, con u =
f
esalas en funcion
ex cos y, v = ln y. Calcula (a) f
x (x, y); (b) y (x, y) (H: Expr
de

g
g
u (u, v); v (u, v)).
g
(Sol.: (a) xy + ex cos y u
(u, v); (b)

6.5.

x2
2

g
ex sin y u
(u, v) +

1 g
y v (u, v)

Problemas adicionales

Ejercicio 6.20 Encuentra la ecuacion de la recta tangente y de la recta


normal a la curva x3 + y 3 = 9 en P (1, 2).
(Sol.: recta tangente: x + 4y 9 = 0, recta normal: 4x y 2 = 0 )
Ejercicio 6.21 Encuentra la ecuacion del plano tangente y de la recta normal a la superficie x3 + y 3 = 3xyz en P (1, 2, 23 ).
(Sol.: plano: 4x 5y + 4z = 0, recta:

z
x1
y2
=
=
4
5
4

3
2

Ejercicio 6.22 Halla la ecuacion del plano tangente a la grafica de z(x, y)


definida por x2 z + y 2 z 2 + z 3 = 1 en el punto (0, 0, 1).
(Sol.: z = 1 )
 
x
Ejercicio 6.23 Calcula el gradiente de la funcion f (x, y, z) = z ln
en
y
(1, 1, 2). Calcula la derivada direccional de la funcion f anterior en el punto
(1, 1, 2) y en la direcci
on del vector v = (1, 1, 1).
4
(Sol.: f (1, 1, 2) = (2, 2, 0); fv0 (1, 1, 2) = )
3
145

Miguel Angel Cifredo Campos


macifredo@gmail.com

En los ejercicios 6.246.25, encuentra un vector que indique la direccion en la


cual la funci
on dada aumenta mas rapidamente en el punto indicado. Halla
la raz
on de cambio m
axima.
Ejercicio 6.24 f (x, y) = e2x sin y; (0, /4)
(Sol.:

2i + ( 2/2)j, 5/2 )

Ejercicio 6.25 F (x, y, z) = x2 + 4xz + 2yz 2 ; (1, 2, 1)

(Sol.: 2i + 2j 4k, 2 6 )

En los ejercicios 6.266.27, obten un vector que indique la direccion en la cual


la funci
on dada disminuye mas rapidamente en el punto indicado. Encuentra
la raz
on de cambio mnima.
p
p
Ejercicio 6.26 f (x, y) = tan (x2 + y 2 ); ( /6, /6)
p
p
p
(Sol.: 8 /6i 8 /6j, 8 /3 )

Ejercicio 6.27 F (x, y, z) =

xzey ; (16, 0, 9)

(Sol.: 38 i 12j 32 k, 83281/24 )

Ejercicio 6.28 Considera una placa rectangular. La temperatura en un


5 + 2x2 + y 2
punto (x, y) de la placa est
a dada por T (x, y) =
. Determina la
x2 + y 2
direcci
on en que un insecto debe ir, partiendo de (4, 2), para que se enfre
lo m
as r
apidamente posible. Calcula la tasa de variacion maxima.
 445
1 21
, 100 ; 100
)
(Sol.: 50
Ejercicio 6.29 Un esquiador experto desea descender por una monta
na lo
m
as r
apidamente posible. Suponiendo que el perfil de la monta
na viene dado
por la gr
afica de la funci
on f (x, y) = x3 y + 2xy 2 + xy 2; calcula la direccion
que debe tomar cuando se encuentra en las coordenadas (1, 1, 2).
(Sol.: la que indica el vector (6, 6) )

146

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 6.30 Sea z = f (x2 + y 2 ) con f una funcion de clase C 2 . Calcula


x

z
z
y
y
x
(Sol.: 0 )


Ejercicio 6.31 Sea z = f

x2 y 2
x2 + y 2


con f una funcion diferenciable. Cal-

cula el valor de la expresi


on
x

z
z
+y
x
y
(Sol.: 0 )

Ejercicio 6.32 Prueba que la funcion f (x, y) =


relaci
on

(x2

1 f
1 f
1
(x, y) +
(x, y) = 2 f (x, y)
x x
y y
y

cualquiera que sea la funci


on derivable (u).

147

y
satisface la
y2)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Tema 7

Teoremas del c
alculo
diferencial
En este captulo se abordaran algunos de los resultados mas conocidos del
c
alculo diferencial que, en general, se corresponden con generalizaciones adecuadas de los cl
asicos teoremas del calculo de una variable: teorema del valor
medio, teorema de Taylor, etc. Mencion aparte merece, por el uso necesario
de varias variables en su formulacion, el teorema de la funcion implcita;
resultado este de mucha trascendencia tanto para el estudio posterior de
m
aximos y mnimos de funciones como el estudio, en cursos mas avanzados,
de la teora y resoluci
on de ecuaciones diferenciales.

7.1.

Teorema del valor medio

El teorema del valor medio, en funciones de una variable, trata del problema
de evaluar la diferencia f (x + t) f (x) estableciendo la conocida formula
f (x + t) f (x) = f 0 (c)t
suponiendo la existencia de la derivada f 0 y siendo c un punto del intervalo
de extremos x y x + t.
El problema de evaluar la diferencia f (x + h)f (x) para funciones de varias
variables, puede reducirse a un problema de funciones de una sola variable
148

Miguel Angel Cifredo Campos


macifredo@gmail.com

introduciendo una variable adicional t y considerando la funcion auxiliar


F (t) := f (x + th) f (x)
manteniendo fijas las variables x y h. Entonces, conforme t vara de 0 a 1,
el punto de coordenadas x + th recorre el segmento rectilneo que une x con
x + h. Suponiendo expresamente que las derivadas parciales son continuas y
aplicando el Teorema del Valor Medio a F (t) en el intervalo [0, 1], se obtiene
F (1) F (0) = F 0 ()
donde 0 < < 1. Por otra parte, aplicando la regla de la cadena se obtiene
0

F (t) =

n
X
i=1

hi

f
(x + th)
xi

y, finalmente, si h = (h1 , . . . , hn ), resulta


n
X
f
f (x + h) f (x) =
()hi
xi
i=1

donde es un punto del segmento rectilneo que une x y x + h.


Este razonamiento se resume en
Teorema 7.1 Sea f : D Rn R una funcion con derivadas parciales
continuas en D, siendo este un conjunto abierto y convexo. Entonces para
cada par de puntos x, x + h D se verifica
f (x + h) f (x) =

n
X
f
()hi
xi
i=1

donde es un punto del segmento rectilneo que une x y x + h.


Una aplicaci
on de este teorema se da en el calculo de errores. El problema
a abordar consiste en conocer como afecta al valor de una funcion, el error
cometido en la determinaci
on del valor de las variables.

149

Miguel Angel Cifredo Campos


macifredo@gmail.com

Medici
on de errores
En la mayora de los casos, los resultados obtenidos al utilizar aparatos
de medida para evaluar determinadas magnitudes contienen errores propios
de las mediciones aproximadas que se realizan. A
un en el caso de obtener
medidas exactas, las operaciones llevadas a cabo por medio de ordenadores
son simplemente aproximaciones. Esto es debido, fundamentalmente, a la
precisi
on finita con que operan y almacenan los datos. Si a
es un valor
aproximado de una cantidad a, llamaremos error absoluto a la diferencia
(a) = a a

Si (a) > 0 la aproximaci


on es por defecto y si (a) < 0 la aproximacion es
por exceso.
El error relativo de a se define como
r (a) =

aa

(a)
=
,
a
a

a 6= 0

Esta expresi
on parece poco u
til, porque en realidad a es una cantidad que
se desconoce. Por esta raz
on, cuando |(a)|  |
a|, suele utilizarse la aproximaci
on
(a)
r (a)
a

En la pr
actica suelen utilizarse cotas de estos errores. Una cota del error
absoluto de a es un n
umero real positivo M tal que
|(a)| M
De un modo similar, una cota del error relativo de a es un n
umero real
positivo N tal que
|r (a)| N

Propagaci
on de errores
Supongamos que tenemos n cantidades (datos obtenidos por medio de mediciones, c
alculos, etc.) agrupadas en un vector x = (x1 , x2 , . . . , xn ) Rn
y sus correspondientes aproximaciones x
= (
x1 , x
2 , . . . , x
n ) Rn . Supongamos tambien que f es una funcion de varias variables diferenciable en un
150

Miguel Angel Cifredo Campos


macifredo@gmail.com

dominio bastante amplio


f : Rn R
x
7 f (x)
x

7 f (
x).
Nuestro objetivo es conocer como se propagan los errores por medio de la
funci
on f . Podemos pensar que la funcion f es un algoritmo o simplemente
un conjunto de operaciones aritmeticas.
El error absoluto que se produce al actuar f sobre x viene dado por
(f (x)) = f (x) f (
x)
= f (x1 , x2 , . . . , xn ) f (x1 (x1 ), x2 (x2 ), . . . , xn (xn )),
y, aplicando el Teorema del Valor Medio,
n
X
f
()(xi x
i )
f (x1 , x2 , . . . , xn ) f (
x1 , x
2 , . . . , x
n ) =
xi

(7.1)

i=1

donde = x + (
x x) i (0, 1). Por la continuidad de las derivadas
f
f
parciales, se puede suponer que
()
(
x), 1 i n, y calculando
xi
xi
valores absolutos, obtenemos finalmente una cota del error absoluto:

n
X
f


|(xi )|
|(f (x))|
(
x
)
xi

(7.2)

i=1

Ejemplo 7.1 El volumen de una piramide triangular (de base un triangulo


equil
atero) de altura h y de arista de la base a es:
2
3a h
V =
12
Al medir la arista de la base y la altura de la piramide se han obtenido
a = 24 0,6 cm. y h = 95 0,4 cm. Que error maximo tendra el calculo
del volumen? Cu
anto vale dicho volumen?
Soluci
on: Los datos conocidos son las cotas de los errores absolutos a y h
de las magnitudes a y h, respectivamente; es decir,
|a | 0,6;

|h | 0,4
151

Miguel Angel Cifredo Campos


macifredo@gmail.com

por lo que, aplicando la f


ormula (7.2), el error absoluto del volumen, V
vendr
a acotado por




V
V



|h |
|a | +
|V |
a
h
de donde





3a2
3ah




|V |
|a | +
| |
12 h
6

y substituyendo los valores a = 24 y h = 95 se tiene

|V | 380 3 0,6 + 48 3 0,4 428,16 cm


El volumen calculado sera de

V =

3a2 h
7898,15 cm
12

con un error m
aximo de 428,16 cm.
1
Ejercicio 7.1 El
area de un triangulo es ab sin C donde a y b son las
2
longitudes de dos lados y C es el angulo comprendido. Al medirlos se ha
obtenido que a = 150 0,5, b = 200 0,5 y C = 60 2 . Que error
tendr
a el c
alculo del
area?
(Sol.: 337,58; 25 % )
Ejercicio 7.2 El peso especfico de un cuerpo viene dado por la formula
s=

A
AW

siendo A el peso en el aire y W el peso en el agua. Cual es el error maximo


posible en el valor calculado de s si A = 9 0,01 Kg. y W = 5 0,02 Kg.
Determina tambien el porcentaje maximo del error cometido.
(Sol.: 0,0143; 0,639 % )
Ejercicio 7.3 El principio de Arqumedes establece que cuando un cuerpo
es sumergido en el agua, la diferencia entre los pesos del cuerpo en el aire y

152

Miguel Angel Cifredo Campos


macifredo@gmail.com

en el agua es igual al volumen del agua desplazada. Como consecuencia, la


densidad de un cuerpo puede calcularse mediante la formula
s=

m
mm

donde s es la densidad, m es el peso del cuerpo en el aire y m el peso del


cuerpo en el agua (se trabaja con el sistema de unidades CGS, centmetro
gramosegundo).
Si m = 100 0,005 g. y m = 88 0,008 g., encontrar el valor de la densidad
del cuerpo y el error m
aximo en la medida de la densidad s.
(Sol.: s = 8,333 0,0086 gr/cm3 )
En ocasiones, se conocen cotas de los errores relativos en las medidas lo
cual permite conocer, de nuevo, una cota del error relativo en la magnitud
calulada a partir de ellas.
Ejemplo 7.2 La fuerza de atraccion gravitatoria entre dos cuerpos de masas M y m separados a una distancia R, viene dada por la formula:
F =G

M m
R2

donde G es la constante de gravitacion universal. Si se considera que la masa


de uno de los cuerpos (M ) permanece constante, estima el error maximo en
el c
alculo de la fuerza F cuando m tiene un error maximo del 2 % y la
distancia R del 3 %.
Soluci
on: Sean m , R y F los errores absolutos de las magnitudes m, R y
F , respectivamente. Entonces, se sabe que
|m |
0,02
m

|R |
0,03
R

As, aplicando la f
ormula (7.2),




F
F
|m | +

|F |
R |R |
m
de donde





GM
2GM m



|R |
|F | 2 |m | +

R
R3
153

Miguel Angel Cifredo Campos


macifredo@gmail.com

y dividiendo por F = G MRm


2
|F |
|m |
|R |

+2
0,02 + 2 0,03 = 0,08
F
m
R
y, por tanto, el error m
aximo en F es del 8 %.

Ejercicio 7.4 Con que exactitud puede calcularse el volumen de un cilindro circular recto, V = r2 h, a partir de mediciones de r y h que tienen un
error m
aximo de 1 %?
(Sol.: 3 % )
Ejercicio 7.5 Si se quiere calcular el area de un rectangulo largo y estrecho
a partir de las mediciones de la longitud y la altura, que dimension se ha
de medir con m
as cuidado? Explica razonadamente la respuesta.
(Sol.: longitud )

7.2.

Teorema de Taylor

El teorema del Valor Medio proporciona una aproximacion de primer orden,


tambien llamada lineal, al valor de la diferencia f (x + h) f (x). En algunas
ocasiones se necesitan aproximaciones de orden superior y el metodo para
conseguirlo lo proporcionan los metodos de Taylor que permiten el desarrollo
de una funci
on f (x) entorno a un punto x0 hasta un cierto orden que depende, naturalmente, de la regularidad de la funcion f . Para los propositos
de este curso baste enunciar el desarrollo de segundo orden.
Teorema 7.2 (F
ormula de Taylor de segundo orden) Si f es un campo escalar con derivadas parciales segundas continuas en una bola abierta Br (x0 ),
entonces para todo h tal que x0 + h Br (x0 ) tenemos
f (x0 + h) f (x0 ) = f (x0 )h +

1
h H(x0 ) ht + ||h|| 2 Ex0 (h)
2

donde H(x0 ) es la matriz hessiana de f en x0 y Ex0 (h) es una funcion que


tiende a 0 cuando h 0.

154

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 7.3 Expresa el polinomio p(x, y) = y 2 +3xy 2x2 +1 en potencias


de x 1 e y + 1.
Soluci
on: Como se trata de un polinomio de segundo grado, basta aplicar
el desarrollo de segundo orden a p(x, y) en el punto x0 = (1, 1). Llamando
h = (x 1, y + 1), se tiene
p(x0 + h) = p(x0 ) + p(x0 )h +

1
h H(x0 ) ht
2

En primer lugar,
p(1, 1) = 3
Ahora, las derivadas parciales,
p
= 3y 4x
x
p
= 2y + 3x
y

p
(1, 1) = 7
x
p
(1, 1) = 1
x

y las de segundo orden,


2p
= 4
x2

2p
=3
xy

2p
=2
y 2

por tanto,



1
4 3
x1
p(x, y) = 3 + (7, 1) (x 1, y + 1) + (x 1, y + 1)
3 2
y+1
2
y, operando,
p(x, y) = 3 7(x 1) + (y + 1) 2(x 1)2 + 3(x 1)(y + 1) + (y + 1)2

Ejercicio 7.6 Expresa el polinomio p(x, y) = x2 + y 2 en potencias de x 1


e y 1.
(Sol.: 2 + 2(x 1) + 2(y 1) + (x 1)2 + (y 1)2 )

155

Miguel Angel Cifredo Campos


macifredo@gmail.com

7.3.

Teorema de la Funci
on Inversa

Cuando se resuelve un sistema de ecuaciones lineales determinado, es posible


expresarlo en forma matricial Ax = b y se sabe que la solucion viene dada
por x = A1 b. Cuando el sistema de ecuaciones es no lineal, ya no puede
representarse por una matriz sino por un sistema de funciones:

F1 (x1 , . . . , xn ) = b1

F2 (x1 , . . . , xn ) = b2
..

Fn (x1 , . . . , xn ) = bn
que, llamando F = (F1 , F2 , . . . , Fn ), puede escribirse abreviadamente
F(x) = b
En el caso de existir la funcion inversa F1 , la solucion vendra dada por
x = F1 (b).
En este apartado veremos condiciones suficientes para que eso ocurra, preservando, adem
as, dicha funcion las propiedades de regularidad, continuidad
y diferenciabilidad, de la funcion F.
Empecemos recordando algunos conceptos basicos de las funciones inversas:
una aplicaci
on f : A B admite inversa si existe g : B A tal que
f g = idB

y g f = idA

Si tal aplicaci
on g existe, es u
nica y se llama la inversa de f , la cual se
representa por g = f 1 .
Puede comprobarse que f admite inversa si, y solo si, f es biyectiva; es decir,
elementos distintos de A tienen imagenes distintas en B (inyectividad ) y cada
elemento de B es imagen (
unica) de un elemento de A (sobreyectividad ).
Definici
on 7.3 Sea f : D Rn Rn con D un conjunto abierto. Se
dice que f es localmente biyectiva en x0 D si existe un entorno abierto de
x0 , U , tal que
f : U f (U ) es biyectiva
La funci
on f 1 : f (U ) U se llama inversa local de f en x0 .
156

Miguel Angel Cifredo Campos


macifredo@gmail.com

A continuaci
on se ver
an condiciones suficientes para garantizar la existencia
de inversa local diferenciable:
Teorema 7.4 (Funci
on Inversa) Sean f : D Rn Rn con D un
conjunto abierto y x0 D tales que
(i) f es de clase C 1 en D
(ii) Det (Jf (x0 )) 6= 0
siendo Jf (x0 ) la matriz jacobiana de f en x0 . Entonces, existen U y V
entornos abiertos de x0 y f (x0 ), respectivamente, verificando
1. f : U V es biyectiva
2. f 1 : V U es de clase C 1 en V
3. Jf 1 (f (x)) = (Jf (x))1 ,

xU

Ejemplo 7.4 Sea f : R2 R2 definida como f (x, y) = (ex cos y , ex sin y).
Sea (a, b) R2 . Vamos a comprobar las hipotesis del teorema de la funcion
inversa.
(i) Comprobamos que las derivades parciales son funciones continuas.

f1

(x, y) = ex cos y

1
2

C
(R
)
1

f1

(x, y) = e sin y

y
f C 1 (R2 )

f2

(x, y) = ex sin y

1
2

C
(R
)

2
f2

(x, y) = e cos y

y
a
e cos b ea sin b
(ii) |Jf (a, b)| = a
e sin b ea cos b



= ea 6= 0

y, aplicando el teorema anterior, existen U, V entornos abiertos de (a, b) y


f (a, b), respectivamente, de manera que
157

Miguel Angel Cifredo Campos


macifredo@gmail.com

1. f : U V es biyectiva
2. f 1 : V U es de clase C 1 en V
3. Jf 1 (f (x, y)) = (Jf (x, y))1 ,

(x, y) U

Es decir, f admite inversa local en cada punto (a, b) R2 . No obstante, f


no admite inversa global en R2 porque f no es inyectiva en R2 ya que
f (x, y) = f (x, y + 2)
Ejercicio 7.7 Sea la funci
on f (x, y, z) = (ex , sin(x + y), ez ). Prueba que f
es localmente inversible en (0, 0, 0), pero no admite una inversa en ning
un
entorno de (0, 0, 0) que contenga a (0, , 0).

7.4.

Teorema de la Funci
on Implcita

Ocurre con frecuencia que determinadas magnitudes fsicas vienen relacionadas entre s por una f
ormula en la que no es posible despejar alguna de
ellas en funci
on de las otras; por ejemplo, las ecuaciones de estado de un
gas de la termodin
amica, que relacionan el volumen V , la presion P y la
temperatura T . Sin embargo, cabe esperar que, fijando una presion y una
temperatura determinadas, pueda calcularse el volumen que ocupa el gas.
Este ejemplo ilustra el concepto de funcion definida implcitamente por una
ecuaci
on, que se desarrolla a continuacion.
Una ecuaci
on de la forma y = f (x) se dice que define explcitamente a y
como funci
on de x. En realidad, toda ecuacion puede interpretarse como una
relaci
on entre las variables (x, y): para cada valor de x puede encontrarse
un valor de y de forma que (x, y) verifica la relacion dada. Para que esta
relaci
on sea entendida como una funcion hay que exigir la unicidad de la
imagen y.
As pues, cuando se tiene una ecuacion de la forma F (x, y) = 0, se dice que
define implcitamente a y como funcion de x, si para cada x existe un u
nico
y de forma que (x, y) verifica F (x, y) = 0.
Adem
as, sera conveniente que las propiedades de F (continuidad, diferenciabilidad,...) tambien las conserve la funcion implcita, as definida.
158

Miguel Angel Cifredo Campos


macifredo@gmail.com

Se ver
an, a continuaci
on, condiciones suficientes para garantizar la existencia
de funci
on implcita en un entorno de un punto. Para dar la version general del teorema, aplicable a un sistema de m ecuaciones con n incognitas,
ser
a necesario antes introducir alguna notacion especfica:
Considerese una ecuaci
on de la forma F(z) = 0 donde la funcion F esta dep+q
finida F : D R
Rq ; es decir, el sistema tiene mas variables que
ecuaciones. Se buscan condiciones suficientes para que esta ecuacion defina
implcitamente q funciones de p variables. Por comodidad se supondra que
se desean escribir las q u
ltimas variables en funcion de las p primeras. Para
distinguirlas con claridad se representaran con letras distintas; es decir, se
escribir
an las variables de F como
F(x1 , x2 , . . . , xp , y1 , y2 , . . . , yq ) = F(x, y)
Adem
as, si F = (F1 , F2 , . . . , Fq ) y (a, b) D se denotara

F1

(a, b)
 y1

(F1 , F2 , . . . , Fq )

..
..
(a, b) =
Det
.
.

(y1 , y2 , . . . , yq )
Fq

y1 (a, b)

F1
(a, b)
yq
..
.
Fq
(a, b)
yq

Teorema 7.5 (Funci


on Implcita) Sean F : D Rp+q Rq , con D un
conjunto abierto, y (a, b) D tales que
(i) F(a, b) = 0
(ii) F de clase C m en D (m 1)


(F1 , F2 , . . . , Fq )
(iii) Det
(a, b) 6= 0
(y1 , y2 , . . . , yq )
nica funcion de p
Entonces, existen W Rp , entorno abierto de a, y una u
variables f : W Rq , f = (f1 , f2 , . . . , fq ), verificando
1. f (a) = b
2. f es de clase C m en W
3. F(x, f1 (x), f2 (x), . . . , fq (x)) = 0,
159

xW

Miguel Angel Cifredo Campos


macifredo@gmail.com

Notad que la condici


on (3) de la conclusion nos dice que las variables yj
pueden identificarse con las funciones fj (x), 1 j q, lo que equivale a
decir que est
an definidas implcitamente por el sistema de ecuaciones.
Ejemplo 7.5 Sean
F1 (x, y, z) = xy 2 2yz + z 3 8
F2 (x, y, z) = x2 + y 2 + z 2 + xy x + y + z
El sistema
F1 (x, y, z) = 0
F2 (x, y, z) = 0

define implcitamente a y y z como funciones de x en un entorno del punto


P (2, 2, 0).
Soluci
on: Se comprueban las hipotesis del teorema de la funcion implcita:
(i) F1 (P ) = 2 (2)2 8 = 0, F2 (P ) = 22 + (2)2 + 2 (2) 2 + (2) = 0.
(ii) F1 , F2 C 1 (R3 ), por ser funciones polinomicas.



(F1 , F2 )

(P ) 6= 0:
(iii)
(y, z)

2xy 2z 2y + 3z 2

2y + x + 1
2z + 1

(x,y,z)=(2,2,0)


8 4
=
1 1



= 4

Entonces, existen un entorno abierto V R de x = 2, y una u


nica funcion
2
f : V R , f = (f1 , f2 ), verificando
1. f (2) = (2, 0)
2. f C 1 (V )
3.

F1 (x, f1 (x), f2 (x)) = 0


F2 (x, f1 (x), f2 (x)) = 0


x V .

Esta u
ltima condici
on permite, ademas, calcular las derivadas de f en x = 2
(derivaci
on implcita):

160

Miguel Angel Cifredo Campos


macifredo@gmail.com

Se sabe del apartado (3) anterior que

xf12 (x) 2f1 (x)f2 (x) + f23 (x) 8 = 0

x2 + f12 (x) + f22 (x) + xf1 (x) x + f1 (x) + f2 (x) = 0

x V.

Derivando este sistema respecto de x se obtiene:

f12 (x) + 2xf1 (x)f10 (x) 2(f10 (x)f2 (x) + f1 (x)f20 (x)) + 3f22 (x)f20 (x) = 0

2x + 2f1 (x)f10 (x) + 2f2 (x)f20 (x) + f1 (x) + xf10 (x) 1 + f10 (x) + f20 (x) = 0
Particularizando para x = 2, se tiene
f12 (2) + 4f1 (2)f10 (2) 2(f10 (2)f2 (2) + f1 (2)f20 (2)) + 3f22 (2)f20 (2) = 0

4 + 2f1 (2)f10 (2) + 2f2 (2)f20 (2) + f1 (2) + 2f10 (2) 1 + f10 (2) + f20 (2) = 0
Y, teniendo en cuenta el apartado (1) de la conclusion, se conocen los valores
f1 (2) = 2 y f2 (2) = 0, por lo que resulta el sistema:

4 8f10 (2) + 4f20 (2) = 0


4 4f10 (2) 2 + 2f10 (2) 1 + f10 (2) + f20 (2) = 0
y, agrupando los terminos,

8f10 (2) + 4f20 (2) = 4


f10 (2) + f20 (2) = 1

que es un sistema lineal cuya solucion es:


f10 (2) = 0

f20 (2) = 1

Ejercicio 7.8 Demuestra que y cos x = 0 define una funcion implcita


diferenciable y = (x) en un entorno de (0,0) . Calcula 0 (0).
(Sol.: 0 (0) = 0 )
Ejercicio 7.9 Comprueba que la ecuacion x2 + xy + y 3 = 11 define a y
como funci
on implcita de x en un entorno de x = 1, en el cual toma el valor
y = 2. Calcula las derivadas primera y segunda de y en x = 1.
161

Miguel Angel Cifredo Campos


macifredo@gmail.com

(Sol.: y 0 (1) =

4
13 ;

)
y 00 (1) = 426
133

Ejercicio 7.10 Comprueba que la ecuacion x2 + y 2 + z 2 = 49 define a


z = (x, y) implcitamente en un entorno de (6, 3), tomando en ese punto
el valor z = 2. Calcula el gradiente de en (6, 3).
(Sol.: (3, 32 ) )

7.5.

Problemas adicionales

Ejercicio 7.11 La hipotenusa de un triangulo rectangulo mide 15,40,1 cm.


y uno de sus catetos 6,8 0,1 cm. Con que exactitud puede calcularse el
otro cateto?
(Sol.: error maximo de 0,16 cm )
Ejercicio 7.12 En un experimento para determinar el valor de la aceleraci
on g de la gravedad, se mide el tiempo t de cada, en segundos, de un
cuerpo que se deja caer una distancia fijada x partiendo del reposo . La
f
ormula utilizada es, entonces,
g=

2x
t2

Si los aparatos de medida, permiten establecer un error maximo para x del


1 % y para t del 0,5 %. Cual es el error maximo que cabe esperar en la
determinaci
on de g?
(Sol.: 3 % )
Ejercicio 7.13 El momento de inercia de una varilla longitudinal, de masa
m y longitud h, respecto a un eje que pase por uno de sus extremos viene
dado por la f
ormula
h2
I=m
3
Determina el error m
aximo en el momento de inercia de una varilla si h =
4 0,1 cm y m = 3 0,1 gr.
(Sol.: 1,333 gr.cm2 )

162

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 7.14 Desarrolla la funcion f (x, y) = x2 + xy + y 2 en potencias


de (x 1) e (y 2) mediante el polinomio de Taylor.
(Sol.: 7 + 4(x 1) + 5(y 2) + (x 1)2 + (x 1)(y 2) + (y 2)2 )
Ejercicio 7.15 Desarrolla la funcion e2x cos(y) en forma de polinomio de
Taylor, hasta el segundo orden, en el punto (0, 0).
(Sol.: f (x, y) 1 + 2x + 4x2 y 2 )
Ejercicio 7.16 Halla el polinomio de Taylor de segundo orden de la funci
on f (x, y) = ey sin(x), en el punto (, 0). Utilzalo para obtener un valor
aproximado de f (3.14, 0.01) y comparalo con el valor obtenido mediante la
aproximaci
on lineal del plano tangente. (Toma = 3.141592 en los calculos)
1
(Sol.: f (x, y) x (x )y; f (3.14, 0.01) = 0.0016;
2
L(3.14, 0.01) = 0.001592 )
Ejercicio 7.17 Sea la funcion
g:

R2
R2
(x, y) 7 (ex+y sin y, ex+y cos y)

En que puntos de R2 admite g inversa local? Admite g inversa en R2 ?


(Sol.: Admite inversa local en cada punto de R2 , pero no admite inversa
global. )
Ejercicio 7.18 Prueba que f (x, y) = (exy , y + 2)) admite inversa diferenciable en un entorno de (0, 0). Halla Jf 1 (1, 2).


1 1
(Sol.:
)
0 1
Ejercicio 7.19 Prueba que el sistema de ecuaciones

x cos y + y cos z + z cos x =
x2 + y 2 + z 2 xy = 2
define implcitamente una funcion diferenciable f (x) = (f1 (x), f2 (x)) en un
entorno del punto x = 0 de forma que f1 (0) = 0 y f2 (0) = . Calcula f10 (0)
y f20 (0).
(Sol.: f10 (0) = 1, f20 (0) = 0 )
163

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 7.20 Halla todos los posibles valores de z0 para que la ecuacion
x2 xz + z 2 + yz = 4 defina implcitamente a z como funcion de x e y en
un entorno del punto (1, 3, z0 ).
(Sol.: z0 = 1 y z0 = 3 )
Ejercicio 7.21 Considera el sistema de ecuaciones

xy + xz + yz = 1
x + y + z 2 = 2
(a) Prueba que el sistema de ecuaciones define implcitamente a y y z
como funciones de x en un entorno del punto (0, 1, 1).
(b) Sea G(x) = log(yz), donde y = y(x) y z = z(x) representan las funciones implcitas del apartado anterior. Halla el valor de G0 (0).
(Sol.: (b) G0 (0) = 2 )
Ejercicio 7.22 Sea z(x, y) la funcion definida implcitamente por la ecuax2 + y 2 + z 2
= 3 verificando que z(1, 1) = 2. Halla el valor del parameci
on
xy 2 + x2 y
0
tro a R para que la derivada direccional f(a,a)
(1, 1) = 2.

4 2
(Sol.: a =
)
7
Ejercicio 7.23 Sea f (x, y) la funcion definida implcitamente por las ecuaciones

x sin y + eu ev = 0
ex+y v cos u = 1
en un entorno del punto (x0 , y0 , u0 , v0 ) = (, , 0, 0). Demuestra que f
admite inversa local diferenciable en (, ) y calcula la matriz jacobiana
Jf 1 (0, 0).


1 1
1
(Sol.: Jf 1 (0, 0) =
)
1
1
Ejercicio 7.24 El volumen V , la presion P y la temperatura T de un gas
de Van der Waals estan relacionados por la formula


RT

P =
2
V
V
164

Miguel Angel Cifredo Campos


macifredo@gmail.com

con , y R constantes. Si el volumen V es una funcion de P y de T


demuestra que
RV 3
V
=
T
P V 3 + (V 2)
Ejercicio 7.25 La ecuaci
on de Dieterici del estado de un gas es
a

P (V b) e RV T = RT,
donde P es la presi
on, V el volumen y T la temperatura del gas en un
instante determinado y siendo a, b y R constantes. Demuestra la formula

a 
V
= R+
T
VT

165

RT
a
2
V b V

1

Miguel Angel Cifredo Campos


macifredo@gmail.com

Tema 8

Extremos
La cuesti
on de determinar los maximos y mnimos que alcanza una funci
on es de gran importancia en muchos problemas de ingeniera, economa y
ciencias en general. Cuando el problema puede reducirse a una sola variable,
conocemos metodos para resolverlo matematicamente: se buscan los valores
que anulan la derivada y se determina su comportamiento como maximo o
mnimo seg
un el valor que toma la derivada segunda. Cuando el n
umero de
variables es mayor, disponemos de criterios parecidos que veremos en este
captulo y que, como de costumbre, generalizan lo que ocurre en el caso de
una variable real.

8.1.

Extremos libres

En esta secci
on estudiaremos como calcular los valores extremos de campos escalares definidos en un conjunto abierto. Las definiciones basicas son
similares a las definiciones de funciones reales de variable real.
Definici
on 8.1 Sea f : D Rn R un campo escalar y x0 un punto que
pertenece a una bola contenida en D. Diremos que f tiene un m
aximo local
en x0 si
f (x0 ) f (x)
para todo x perteneciente a una cierta bola de centro x0 (ver Fig. 8.1(a)).

166

Miguel Angel Cifredo Campos


macifredo@gmail.com

Diremos que f tiene un mnimo local en x0 si


f (x0 ) f (x)
para todo x perteneciente a una cierta bola de centro x0 (ver Fig. 8.1(b)).
Como en el caso de las funciones reales de variable real, hablaremos de
valores extremos para referirnos simultaneamente a los maximos locales y a
los mnimos locales.
En el caso de funciones reales de una variable real sabemos que si la funcion
f tiene un extremo local en un punto x0 , entonces la derivada f 0 (x0 ) = 0 o
no existe tal derivada. En el caso de campos escalares tenemos un resultado
similar.
Teorema 8.2 Si un campo escalar f tiene un extremo local en x0 , entonces
o bien f (x0 ) = 0 (cuando f es diferenciable en x0 ) o bien f (x0 ) no existe.
Los puntos en los que el gradiente se anula o no existe se denominan puntos
crticos. Por el teorema anterior son los u
nicos puntos en los que un campo
escalar puede tener un extremo local. Los puntos en los que el gradiente se
anula se denominan puntos estacionarios. Llamaremos puntos de ensilladura
a los puntos estacionarios en los que la funcion no tiene un extremo local
(ver Fig. 8.1(c)).
Si x0 es un punto estacionario de un campo escalar f , la formula de Taylor
de segundo orden nos dice que
1
f (x0 + h) f (x0 ) = h H(x0 ) ht + ||h|| 2 Ex0 (h)
2
Podemos interpretar esta igualdad como que el signo de la diferencia f (x0 +
h) f (x0 ) depende del signo de la forma cuadratica H(x0 ) cuando los
puntos x0 y x0 + h est
an suficientemente pr
oximos. Por tanto, la naturaleza
del punto estacionario x0 puede analizarse clasificando la forma cuadratica
asociada a la matriz Hessiana H(x0 ). Podemos utilizar, pues, los criterios
de clasificaci
on de formas cuadraticas para estudiar si el punto estacionario
x0 es un m
aximo local, un mnimo local o un punto de ensilladura.
Aunque, como ya se ha dicho, se puede utilizar cualquier criterio de clasificaci
on de formas cuadr
aticas, vamos a establecer uno de ellos que usa como
167

Miguel Angel Cifredo Campos


macifredo@gmail.com

u
nica informaci
on las entradas en la matriz hessiana. Para ello, empezamos
con algo de notaci
on.
Dada una matriz cuadrada H,

a11
a21

H= .
..

a12
a22
..
.

..
.

an1 an2

a1n
a2n

..
.
ann

entonces llamaremos menores principales de H, que representaremos por


H1 , H2 , . . . , Hn , a los determinantes siguientes:


a11 a12

, . . . , Hn = det(H)
H1 = a11 , H2 =
a21 a22
Teorema 8.3 (Criterio de las derivadas parciales segundas) Supongamos que f tiene derivadas parciales de segundo orden continuas en una
bola que contiene al punto estacionario x0 . Sea H la matriz hessiana de la
funci
on f en x0 . Entonces,
1. Si Hj > 0,para todo 1 j n, entonces f alcanza un mnimo local
en x0 .
2. Si Hj < 0 cuando j es impar y Hj > 0 cuando j es par, entonces f
alcanza un m
aximo local en x0 .
3. En otro caso, el criterio no clasifica.
En el caso particular de funciones de dos variables podemos afirmar un poco
m
as.
Teorema 8.4 Supongamos que f tiene derivadas parciales de segundo orden continuas en una bola que contiene el punto (x, y) el cual es un punto
estacionario, es decir, f (x, y) = (0, 0). Sean
A=

2f
(x, y),
x2

B=

2f
(x, y),
x y

y sea D = AC B 2 . Entonces,
168

C=

2f
(x, y),
y 2

Miguel Angel Cifredo Campos


macifredo@gmail.com

(a) si D > 0 y A < 0, el punto (x, y) es un maximo local;


(b) si D > 0 y A > 0, el punto (x, y) es un mnimo local;
(c) si D < 0, el punto (x, y) es un punto de ensilladura.
(Observa que, seg
un la notacion del Teorema 8.3, A = H1 y D = H2 por lo
que la informaci
on adicional que proporciona este teorema es la clasificacion
de los puntos de ensilladura)

(a) A < 0, D > 0

(b) A > 0, D > 0

(c) D < 0

Figura 8.1: Tipos de extremos


Ejemplo 8.1 Encuentra los extremos locales del campo escalar dado por
z = x5 y + xy 5 + xy.

169

Miguel Angel Cifredo Campos


macifredo@gmail.com

Soluci
on: Comencemos por calcular los puntos crticos, que son la solucion
del sistema:

(x, y) = y(5x4 + y 4 + 1) = 0

x
f

(x, y) = x(5y 4 + x4 + 1) = 0
y
Como los factores 5x4 +y 4 +1 y 5y 4 +x4 +1 son siempre positivos, deducimos
que la u
nica soluci
on es el punto (0, 0), que es el u
nico punto crtico de f .
Calculemos ahora las derivadas de segundo orden:
2z
(x, y) = 20x3 y ,
x2

2z
(x, y) = 5x4 + 5y 4 + 1 ,
x y

2f
(x, y) = 20xy 3 ;
y 2

y, al evaluarlas en el punto crtico: A = 0, B = 1 y C = 0; por lo que,


D = AC B 2 = 1 y, seg
un el Teorema 8.4, z tiene un punto de ensilladura
en (0, 0) (ver Fig. 8.2).

Figura 8.2: Grafica de z = x5 y + xy 5 + xy.

Ejercicio 8.1 Encuentra los extremos locales del siguiente campo escalar:
f (x, y) = xye(x
170

2 +y 2 )/2

Miguel Angel Cifredo Campos


macifredo@gmail.com

(Sol.: Punto de ensilladura en (0, 0); mnimos locales en (1, 1) y (1, 1);
maximos locales en (1, 1) y (1, 1)) )
Ejercicio 8.2 Sea f (x, y) = x2 2xy + y 2 . Para f tenemos que D = 0.
Podras decir si los puntos crticos son maximos locales, mnimos locales o
puntos de ensilladura?
(Sol.: Los puntos crticos son mnimos locales) )
Ejercicio 8.3 Clasifica los puntos crticos del siguiente campo escalar:
z = (x2 + 3y 2 ) e1x

2 y 2

(Sol.: Mnimo en (0, 0) y maximo en (0, 1) y (0, 1);


puntos de ensilladura en (1, 0) y (1, 0)) )
Ejercicio 8.4 Clasifica los puntos crticos del campo escalar f (x, y) = 2x2 +
y 2 xy 7y .
(Sol.: Mnimo local en (1, 4).) )

8.2.

Extremos condicionados

En la secci
on anterior hemos estudiado los extremos de funciones definidas
en un abierto. Sin embargo, en muchos problemas los extremos deben determinarse cuando las variables estan sujetas a una serie de restricciones (que
ya no constituyen un conjunto abierto).
Sea f : A Rn R con A abierto de Rn y sea X A. Se considera la
restricci
on
f : X R
X

x 7 f (x)

es decir, es la funci
on f al considerarla evaluada solo en los puntos del subconjunto X. Es evidente que los extremos locales de f seran, en general,
distintos de los de f|X ; incluso tambien ocurrira que no comparten siquiera
los mismos puntos crticos. El problema de determinar los extremos locales
de f|X se llama un problema de extremos condicionados, aludiendo al hecho de que las variables (x1 , x2 , . . . , xn ) vienen ligadas por la condicion de
pertenecer a X. Para determinar condiciones analticas que garanticen la
171

Miguel Angel Cifredo Campos


macifredo@gmail.com

existencia de extremos condicionados, deben imponerse unas ciertas condiciones de regularidad tanto para la funcion f como para el conjunto X.
En esta secci
on vamos a estudiar los extremos de funciones sujetas a restricciones de la forma
X = {x Rn : g(x) = 0}
donde g es una funci
on de clase C p con m < n componentes; es decir, un
sistema de m ecuaciones con n incognitas pero siempre con menor n
umero
de ecuaciones que de inc
ognitas.
As, en lo que sigue, f : A Rn R sera una funcion de una cierta clase
C p en A y X ser
a un conjunto de esa forma.
Vamos a distinguir dos posibilidades para el conjunto de restricciones X,
seg
un podamos despejar o no m variables del sistema en funcion de las
n m variables restantes.

8.2.1.

M
etodo de reducci
on de variables

Suponemos, pues, que tenemos una funcion de n variables f (x1 , x2 , . . . , xn ) y


queremos hallar los extremos de la funcion f cuando las variables (x1 , . . . , xn )
est
an ligadas por un sistema de m ecuaciones de la forma F(x) = 0. El metodo consiste en despejar m variables en funcion de las otras y substituirlas en
la funci
on f , por lo que el problema se reducira a un problema de extremos
libres para una funci
on de n m variables. Veamoslo en un ejemplo.
Ejemplo 8.2 Una partcula de masa m esta dentro de una caja de dimensiones x, y, z y tiene la energa de estado


1
1
1
k2
+
+
E(x, y, z) =
8m x2 y 2 z 2
donde k es una constante fsica. Si el volumen de la caja es de 8 dm3 , halla
los valores de x, y, z que minimizan la energa de estado.
Soluci
on: Dado que el volumen de la caja viene dado por xyz = 8; se trata
de resolver el problema de extremos condicionados:


1
1
k2
1
Min. E(x, y, z) =
+
+
8m x2 y 2 z 2
c.p. xyz = 8
172

Miguel Angel Cifredo Campos


macifredo@gmail.com

De la restricci
on, puede despejarse, por ejemplo la varibale z =

8
y, subsxy

tituyendo en la funci
on E, el problema se reduce a


1
1
x2 y 2
k2
+
+
Min. E(x, y) =
8m x2 y 2
64
Por tanto, se reduce a un problema de extremos libres, en las variables x e
y. Basta, pues, aplicar el procedimiento visto en al seccion anterior.
(a) Puntos crticos. Se resuelve el sistema:



k2
2
2xy 2
2
xy 2

)
3+
=0
Ex =
=

8m
x
64
64 = x4 y 2
x3
32



2
2y
2y

64 = x2 y 4
k
2
2x

x
2

Ey =
3+
=0
=
8m
y
64
y3
32
Entonces, teniendo en cuenta que x e y son dimensiones de una caja y han
de ser positivas ambas:
x4 y 2 = x2 y 4 x2 = y 2 x = y
Substituyendo en la primera ecuacion:
64 = x6 x =

64 = 2

de donde se obtiene el punto crtico: A(2, 2).


(b) Clasificaci
on. Se calcula la matriz hessiana:
y2
6
+
x4 32
k2

H=
8m
xy
16

xy
16

2
6
x
+
y 4 32

y, substituyendo los valores en el punto crtico,

6
4
4
1
+
2
2

16
k
16 32
H = k 2
H=

8m
8m 1
4
6
4
+
16
16 32
4
173

1
4

1
2

Miguel Angel Cifredo Campos


macifredo@gmail.com

de donde,
k2 1
H1 =
>0
8m 2
 2 2 

1
k
1

>0
H2 =
8m
4 16

A es un mnimo.

Por tanto, la soluci


on es: las dimensiones que minimizan la energa de estado
son x = y = z = 2 dm.

Ejercicio 8.5 Una caja rectangular sin tapa ha de tener un volumen de 12


metros c
ubicos. Encontrar las dimensiones de la caja que proporcionan el
area mnima.

(Sol.: Longitud: 2 3 3 m.; ancho: 2 3 3 m.; altura: 3 3) )


Ejercicio 8.6 Demostrar que una caja rectangular de volumen dado tiene
una superficie mnima cuando es un cubo.

8.2.2.

M
etodo de multiplicadores de Lagrange

En el apartado anterior se ha visto que para encontrar los extremos cuando


las variables est
an sujetas a una restriccion, se utiliza el metodo de despejar
una variable de la ecuaci
on; substituir en la funcion original y resolver el
problema de extremos con una variable menos. Sin embargo, este metodo
no siempre es factible e, incluso, puede llevarnos a no obtener todas las soluciones posibles. De hecho, el despejar una variable de una ecuacion consiste
en aplicar el teorema de la funcion implcita visto en el Captulo 7.
Para obviar estas dificultades, vamos a ver otro metodo de calcular los extremos de una funci
on, cuando las variables estan ligadas por una restriccion
en forma de una ecuaci
on o de un sistema de ecuaciones (pero siempre en
n
umero menor al de variables).
Puede enunciarse ahora ya la condicion necesaria, conocida como metodo de
los multiplicadores de Lagrange
Teorema 8.5 Sea f : A Rn R con A abierto de Rn y f C 1 (A). Sea
X = {x A : g(x) = 0}, con g = (g1 , g2 , . . . , gm ) de clase C 1 y cumpliendo
174

Miguel Angel Cifredo Campos


macifredo@gmail.com

que la matriz jacobiana de g en cada punto del conjunto X tiene rango


m
aximo. Sea x0 X. Si f|X tiene un extremo local en x0 , entonces existen
m escalares 1 , 2 , . . . , m tales que el punto x0 es punto crtico de
L(x) := f (x) + 1 g1 (x) + 2 g2 (x) + . . . + m gm (x)
Introduciendo los par
ametros 1 , 2 , . . . , m como variables adicionales en la
funci
on L anterior, se reduce el problema de determinar los puntos crticos
de f que cumplen las restricciones al problema de determinar los puntos
crticos de la funci
on lagrangiana
L(x, 1 , 2 , . . . , m ) = f (x) + 1 g1 (x) + 2 g2 (x) + . . . + m gm (x)
Se enuncia ahora la condici
on suficiente para saber si un punto estacionario
es m
aximo o mnimo. Como antes, esto dependera del signo de la forma
cuadr
atica dada por la matriz hessiana, aunque en este caso, al haber restricciones, no sirve el estudio realizado en el caso de extremos libres y debe
estudiarse el signo de la forma cuadratica restringida al llamado espacio tangente al conjunto de restricciones X. Afortunadamente, la teora de formas
cuadr
aticas dispone de metodos para mecanizar esta tarea tal y como se
propone en el teorema siguiente.
Teorema 8.6 (Clasificaci
on de los puntos crticos) Sea la funcion f :
A Rn R con A abierto de Rn y f C 2 (A). Sea X A como en el
teorema anterior, donde ahora g = (g1 , g2 , . . . , gm ) de clase C 2 . Supongase
determinados m escalares 1 , 2 , . . ., m tales que el punto x0 es punto
crtico de
L(x) = f (x) + 1 g1 (x) + 2 g2 (x) + . . . + m gm (x)
Sea Q la matriz expresada por bloques como sigue:

H J

Q=

siendo H la hessiana de L(x) en x0 y J la jacobiana de g en x0 . Sea el


polinomio en de grado n m


H In J



p() =

t

J
0
Entonces,
175

Miguel Angel Cifredo Campos


macifredo@gmail.com

1. Si todas las soluciones de p() = 0 son positivas, f|X alcanza en x0 un


mnimo local estricto.
2. Si todas las soluciones de p() = 0 son negativas, f|X alcanza en x0
un m
aximo local estricto.
3. En otro caso, el criterio no clasifica.
Ejemplo 8.3 Encuentra los extremos de la funcion f (x, y) = x2 y, con y >
0, que verifiquen
2x2 + y 2 = 3
Soluci
on: Se trata de un problema de extremos condicionados. Como parece
complicado despejar una variable de la ecuacion 2x2 + y 2 = 3, lo resolvemos
aplicando el metodo de los multiplicadores de Lagrange:
(a) Puntos crticos. Se construye la funcion Lagrangiana
L(x, y, ) = x2 y + (2x2 + y 2 3)
y se buscan los puntos crticos:
L0x =

2xy + 4x = 0

0
2
Ly =
x + 2y = 0

0
2
L = 2x + y 2 3 = 0
De la primera ecuaci
on:

x(y + 2) = 0

x =
o

y = 2

En el caso x = 0, sustituyendo en la tercera ecuacion sale

y 2 = 3 y = 3 (la solucion y = 3 no se considera ya que y > 0)


y, al sustituir este valor en la segunda, resulta = 0. As, en este caso se
tiene el punto crtico:

A(0, 3), = 0
En el caso y = 2 se sustituye en la segunda y se obtiene:
x2 42 = 0 x2 = 42
176

Miguel Angel Cifredo Campos


macifredo@gmail.com

y, al sustituir las dos condiciones en la tercera ecuacion, resulta


82 + 42 = 3 2 =

1
1
=
4
2

Como tiene que ser y > 0 e y = 2 solo puede ser la solucion = 21 y,


entonces, y = 1 y el valor de x es
x2 = 42 = 1 x = 1
por lo que, en definitiva, se tienen los puntos crticos
B(1, 1)
C(1, 1)

1
2
1
=
2
=

(b) Clasificaci
on. Para clasificar los puntos se

2y + 4 2x
2x
2
Q=
4x
2y

calcula la matriz por bloques:

4x
2y
0

Esta matriz corresponde exactamente a la matriz hessiana de L como funcion


de x, y y , separando los bloques respecto de x e y del multiplicador .

Para el punto A(0, 3), = 0


2 3
0
0

2 3
0
Q= 0

0
2 3
0
y, entonces, hay que calcular el determinante:


2 3
0
0


= 12(2 3) = 0 = 2 3 > 0 A es un mn.
0

2
3


0
2 3
0
Para el punto B(1, 1), = 12

0 2 4
Q = 2 1 2
4 2 0
177

Miguel Angel Cifredo Campos


macifredo@gmail.com

y, entonces, hay que calcular el determinante:





2
4

2 1 2 = 3216(1)+4 = 0 = 48 < 0 B es un max.


5
4
2
0
Para el punto C(1, 1), = 12

0 2 4
Q = 2 1 2
4 2
0

y, entonces, hay que calcular el determinante:





2
4

2 1 2 = 32 16(1 ) + 4 = 0 = 48 < 0


5
4
2
0
por lo que f alcanza en C un maximo.
Para finalizar, veremos gr
aficamente el proceso realizado. En la Fig. 8.3(a)
se ha representado la superficie z = x2 y y la curva sobre ella corresponde a la
imagen de los puntos (x, y) del plano que cumplen la restriccion 2x2 +y 2 = 3
(elipse). Para un mayor detalle, en la Fig. 8.3(b) se ha representado solo la
parte gr
afica correspondiente al octante positivo. La elipse del plano XY es
la restricci
on 2x2 + y 2 = 3 y la imagen de dichos puntos dibujan una curva
sobre la gr
afica de la funci
on z = x2 y.

(a) Gr
afica completa

(b) Gr
afica en el octante positivo

Figura 8.3: Grafica de z = x2 y


178

Miguel Angel Cifredo Campos


macifredo@gmail.com

Finalmente, en la Fig. 8.4, se ha representado u


nicamente la curva restricci
on, f|X ; es decir, la funci
on f evaluada en los puntos de la elipse 2x2 +y 2 = 3
y se han se
nalado los puntos crticos hallados que como se observa, corresponden a un mnimo y dos maximos locales.

Figura 8.4: Extremos de la funcion restringida

En dicha Figura 8.4 se observan, ademas, otro maximo y dos mnimos, que
corresponden a la regi
on y < 0, que han sido excluidos del estudio.
Ejercicio 8.7 Halla los extremos de la funcion f (x, y) = x2 + y 2 , que verifican la restricci
on
x2 + 2y 2 = 2

(Sol.: Mnimos en (0, 1) y (0, 1); maximos en ( 2, 0) y ( 2, 0). )

8.3.

M
aximos y mnimos absolutos

Por u
ltimo, haremos una introduccion al estudio de la teora de m
aximos y
mnimos absolutos (o globales). Recordaremos las definiciones basicas:
Definici
on 8.7 Supongamos que f : D R es un campo escalar definido en un subconjunto D de Rn . Diremos que f tiene un m
aximo absoluto
179

Miguel Angel Cifredo Campos


macifredo@gmail.com

(respectivamente, un mnimo absoluto) en x0 D si f (x) f (x0 ) (respectivamente, f (x) f (x0 )) para todo x D.
El siguiente resultado demuestra la existencia de extremos absolutos en un
tipo especial de subconjuntos de Rn . Recordemos que un subconjunto de Rn
es acotado si existe una bola que lo contiene y que es cerrado si contiene los
puntos de su frontera.
Teorema 8.8 (Teorema de existencia de extremos absolutos) Sea D
un subconjunto cerrado y acotado de Rn , y sea f : D Rn un campo escalar continuo. Entonces existen puntos x0 y x1 en los que f alcanza sus
valores m
aximo y mnimo, respectivamente.
En general, el problema de encontrar los extremos absolutos de un campo
escalar es una tarea nada sencilla. Si consideramos el dominio del campo escalar D como una uni
on de su interior int(D) y de su frontera, D, podemos
dividir el problema de encontrar los puntos en los que un campo escalar alcanza sus extremos absolutos, en subproblemas donde aplicar los resultados
de las secciones precedentes, siempre y cuando su frontera pueda expresarse
como un conjunto de restricciones de la forma adecuada.
Sea f una funci
on continua definida en una region D de Rn cerrada y acotada. Para localizar el m
aximo y el mnimo absoluto de f en D seguiremos
los siguientes pasos:
1. Localizar los puntos crticos de f en D (problema de extremos libres).
2. Encontrar los puntos crticos de f considerada como una funcion definida s
olo en D (problema de extremos condicionados).
3. Calcular el valor de f en todos los puntos crticos.
4. Comparar todos estos valores y seleccionar el mayor y el menor.
Observa que en esta estrategia no sera necesario clasificar los puntos crticos.
Ejemplo 8.4 Encontrar los valores maximo y mnimo de la funcion f (x, y) =
x2 + y 2 x y + 1 en el crculo definido por x2 + y 2 1.
Soluci
on: Seguimos los pasos indicados.
180

Miguel Angel Cifredo Campos


macifredo@gmail.com

(1) Puntos crticos en el interior del crculo x2 + y 2 < 1.

(x, y) = 2x 1 = 0

x
f

(x, y) = 2y 1 = 0
y


1 1
lo que implica que el punto A
,
es el u
nico punto crtico en el interior
2 2
del crculo x2 + y 2 < 1.
(2) Puntos crticos en la frontera x2 + y 2 = 1. Es un problema de extremos
condicionados. Como no podemos despejar ninguna variable de la restriccion
aplicamos el metodo de multiplicadores de Lagrange. Formamos la funcion
lagrangiana,
L(x, y, ) = x2 + y 2 x y + 1 + (x2 + y 2 1)
y calculamos sus puntos crticos.

1 2x
L0x = 2x 1 + 2x = 0
=
2x
L0y = 2y 1 + 2y = 0

1 2y

0
2
2
=
L = x + y 1 = 0
2y

x=y

y substituyendo en la tercera ecuacion


1
x2 + x2 = 1 x =
2

2 2
2
2
por tanto, se obtienen los puntos crticos B(
,
) y C(
,
).
2 2
2
2
(3) Calculamos el valor de la funcion f en los puntos crticos hallados.

f (A) =
2
f (B) = 2 2

f (C) = 2 + 2
(4) Seleccionamos los puntos en los que la funcion alcanza el valor mayor y
el valor menor. Comparandolos valores del paso (3) tenemos que f tiene un
mnimo
en B 21 , 21 y el maximo absoluto se alcanza en el punto
 absoluto


C 22 , 22 . Los valores mnimo y maximo que f alcanza son 12 y 2+ 2,


respectivamente.

181

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 8.8 Encuentra los valores maximo y mnimo que alcanza la funci
on f (x, y) = x2 + xy + y 2 en el crculo unidad.
(Sol.:

3
es el maximo absoluto y 0 es el mnimo absoluto )
2

En el ejemplo anterior, la frontera del dominio estaba formada por una


u
nica curva (la circunferencia); sin embargo puede ocurrir que la frontera
de D este formada por una union de diversas curvas (como, por ejemplo,
la frontera de un cuadrado que esta formada por sus cuatro lados). En este
caso, el paso (3) implica que tendremos que calcular los puntos crticos de
tantas funciones de variable real como curvas forman la frontera. Ademas,
en el paso (4) deberemos a
nadir los puntos donde se unen las diversas curvas
que forman la frontera (vertices).
Ejemplo 8.5 Considera una placa delgada que tiene la forma del triangulo
de vertices A(1, 0), B(1, 1) y C(1, 1). Suponiendo que la temperatura
en cada punto viene dada por la funcion T (x, y) = x2 xy + y 2 , determina
las temperaturas mnima y maxima (absolutas) en la placa.
Soluci
on: La frontera del triangulo esta formada por tres segmentos de
recta. Empezamos hallando las ecuaciones de las tres rectas que forman los
lados del tri
angulo, AB, AC y BC.
Para cada recta, se necesita un punto y un vector:

y
x1
A(1, 0)
=
x = 2y + 1.
AB

v = (2, 1)
2
1
Como A y C tienen la misma coordenada x = 1, es facil deducir que AC es
una recta vertical de ecuacion: x = 1.
Por u
ltimo, como B y C tienen la misma coordenada y = 1, es facil deducir
que BC es una recta horizontal de ecuacion y = 1.
En la Figura 8.5 se ha representado el triangulo, indicando ademas los puntos
crticos que hallaremos a continuacion.

182

Miguel Angel Cifredo Campos


macifredo@gmail.com

Figura 8.5: Extremos en un recinto triangular

Como se trata de un problema de extremos absolutos en un recinto con


frontera (los lados del tri
angulo), dividiremos el problema en subproblemas:
(1) Puntos crticos en el interior del triangulo. En este caso, es un problema
de extremos libres y los puntos crticos deben anular las derivades parciales
de T :

Tx0 = 2x y = 0
x=y=0
Ty0 = x + 2y = 0
Por tanto, deberamos obtener un punto crtico P4 (0, 0), pero este punto no
pertenece al interior del tri
angulo (ver Fig. 8.5) y, por ello, no se considera.
(2) Puntos crticos en el lado AB de ecuacion x = 2y + 1. Substituyendo la
restricci
on en T reducimos el problema a encontrar los puntos crticos de
T (y) = (2y + 1)2 (2y + 1)y + y 2 = 3y 2 + 3y + 1
y, entonces, al ser un problema de una variable,
T 0 (y) = 6y + 3 = 0 y =

1
2

1
Por tanto, tenemos un punt crtico P1 (0, ) (pertenece al lado AB).
2
183

Miguel Angel Cifredo Campos


macifredo@gmail.com

(3) Puntos crticos en el lado AC de ecuacion x = 1. Substituyendo la


restricci
on en T reducimos el problema a encontrar los puntos crticos de
T (y) = 1 y + y 2
y, entonces, al ser un problema de una variable,
T 0 (y) = 2y 1 = 0 y =

1
2

1
Por tanto, deberamos obtener un punto crtico P2 (1, ), pero este punto no
2
pertenece al lado AC (ver Fig. 8.5) y, por ello, no se considera.
(4) Puntos crticos en el lado BC de ecuacion y = 1. Substituyendo la
restricci
on en T reducimos el problema a encontrar los puntos crticos de
T (x) = x2 + x + 1
y, entonces, al ser un problema de una variable,
T 0 (x) = 2x + 1 = 0 x =

1
2

1
Por tanto, tenemos un punto crtico P3 ( , 1) (pertenece al lado BC).
2
(5) Como la frontera es uni
on de varias curvas, debemos a
nadir a los puntos
crticos anteriores los puntos de union de las curvas (vertices del triangulo):
A(1, 0), B(1, 1) y C(1, 1).
(6) Calculamos los valores de T en cada punto crtico.
1
1
T (0, ) =
2
4
1
7
T ( , 1) =
2
4
T (0, 1)
= 1
T (1, 1)

= 1

T (1, 1)

= 3

1
Y, por tanto, el mnimo se alcanza en el punto (0, ), con una tempera2
1
tura de
de grado y el maximo se alcanza en el vertice (1, 1) con una
4
temperatura de 3 grados.

184

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 8.9 Encuentra el valor maximo y el valor mnimo del campo escalar f (x, y) = xy 2x 3y en la region triangular
T = { (x, y) | 0 x 4, 0 y 2x }
(Sol.: El valor maximo es 0 y el valor mnimo es 8 )
Ejercicio 8.10 Encuentra los extremos absolutos del campo escalar f (x, y) =
sin x + cos y en el rect
angulo R definido por 0 x 2 , 0 y 2.
(Sol.: 2 es el mnimo absoluto y 2 es el maximo absoluto )

8.4.

Problemas adicionales

Ejercicio 8.11 Calcula los extremos de la funcion f (x, y) = x2 + xy + y 2


4 ln x 10 ln y
(Sol.: mnimo en (1, 2) )
Ejercicio 8.12 Calcula los extremos relativos de la funcion f (x, y, z) =
z2 2
y2
+
+
x+
4x
y
z
(Sol.: mnimo en (1/2, 1, 1) )
Ejercicio 8.13 Calcula los extremos de la funcion f (x, y) = x2 + y 2 , con
x > 0 e y > 0, condicionados por log(x2 ) + y 2 = 1.
(Sol.: mnimo en (1, 1) )
Ejercicio 8.14 Calcula los puntos de la curva x2 + y = 1 cuya distancia al
origen de coordenadas sea mnima o maxima.

(Sol.: maximo en (0, 1); mnimos en ( 2, 1) )


Ejercicio 8.15 Halla los extremos de la funcion f (x, y) = x + 2y condicionados por x2 + y 2 = 5.
(Sol.: maximo en (1, 2); mnimo en (1, 2) )
Ejercicio 8.16 Halla los extremos de la funcion f (x, y) = x2 y, con y > 0,
que verifican la restricci
on 2x2 + y 2 = 3.
185

Miguel Angel Cifredo Campos


macifredo@gmail.com

(Sol.: mnimo en (0, 3); maximos en (1, 1) )



x + z2 = 0
Ejercicio 8.17 Halla el punto o puntos de la curva
cuya
x+y =1
distancia al punto (1, 0, 0) sea mnima.
(Sol.: (0, 1, 0) )
Ejercicio 8.18 La presi
on en el interior de un fluido viene descrita por la
funci
on P (x, y, z) = xy + xz + yz. Calcula la presion maxima en los puntos
de la superficie 2x + 3y + z = 4 sumergida en dicho fluido.
(Sol.: 2 )
Ejercicio 8.19 Considera la funcion f (x, y, z) = log(xyz) definida para
x > 0, y > 0, z > 0. Halla los extremos relativos condicionados por xy +
yz + zx = 3.
(Sol.: maximo en (1, 1, 1) con valor 0 )
Ejercicio 8.20 Halla los extremos relativos de la funcion f (x, y, z) = x2 +
y 2 + z 2 con x > 0, y > 0, z > 0, condicionados por
(
xy 2 + yx2 = 16
x+yz =0
(Sol.: mnimo en (2, 2, 4) )
Ejercicio 8.21 Halla un punto de la esfera x2 + y 2 + z 2 = 4 que maximice
la funci
on 2x2 + 2y 2 + z 2 xy definida en el dominio x > 0 e y < 0.

(Sol.: maximo en ( 2, 2, 0) )
Ejercicio 8.22 Encuentra el valor maximo y el valor mnimo (absolutos)
del campo escalar f (x, y) = 4xy 2 x2 y 2 xy 3 en la region triangular de
vertices A(0, 0), B(0, 6) y C(6, 0).
(Sol.: El valor maximo es 4 y el valor mnimo es 64 )
Ejercicio 8.23 Halla el punto del plano 3x 4y + 2z 32 = 0 que esta mas
cerca del origen de coordenadas y calcula esa distancia mnima.
16 32
(Sol.: ( 32
9 , 9 , 9 );

16
3

Ejercicio 8.24 Encuentra los valores maximo y mnimo de la funcion defi1


nida por f (x, y) = p
en la region rectangular 1 x 3, 1 y 4.
2
x + y2

(Sol.: El valor maximo es

186

2
2

y el valor mnimo es

1
5

Miguel Angel Cifredo Campos


macifredo@gmail.com

Tema 9

Integraci
on
El concepto de integral definida se desarrollo historicamente para calcular el
area de regiones planas acotadas por lneas curvas. Tomando como referencia
inicial que el
area del cuadrado que tiene lados de longitud l es igual a l2 ,
es muy sencillo calcular el
area de cualquier rectangulo y, recurriendo a la
geometra elemental, puede calcularse tanbien el area de cualquier polgono
si lo dividimos en tri
angulos. La necesidad de un metodo mas sofisticado de
calcular
areas aparece al intentar calcular la superficie de figuras acotadas
por curvas. Por ejemplo, como calcular el area de un crculo, o de una
par
abola? Uno de los logros mas importantes del Calculo Integral es el de
proporcionar un metodo unificado y eficiente para la resolucion de este tipo
de problemas.
El concepto b
asico aqu es el de la integral. Inicialmente, lo entenderemos
como una expresi
on para calcular el area por medio de un lmite. Consideremos una funci
on positiva y acotada f definida en un intervalo [a, b]. Vamos
a medir el
area de la region acotada por la curva y = f (x) y las rectas
x = a, x = b, y = 0 (en la practica, la funcion f sera continua casi siempre).
El metodo consiste en reemplazar la region curvada que queremos medir por
recintos cuya
area es f
acil de calcular y que aproximan tanto como sea necesario la regi
on. Para ello, consideraremos dos tipos de recintos: los que estan
includos en el interior de la region curvada y los que la contienen. Obtenemos as valores que aproximan el area de interes superior e inferiormente.
Empezaremos con algunas definiciones.

187

Miguel Angel Cifredo Campos


macifredo@gmail.com

9.1.

Definiciones b
asicas

Definici
on 9.1 Una partici
on P de un intervalo [a, b] es un conjunto finito de puntos {x0 , x1 ..., xn } del intervalo tal que estan ordenados de forma creciente, es decir, a = x0 < x1 < ... < xn1 < xn = b. Cada
uno de los subintervalos [xj1 , xj ] para j = 1, 2, ...n es un subintervalo
de la partici
on. Si j = xj xj1 , la longitud del mayor subintervalo,
(P ) = m
ax{j : 1 j n}, se llama norma de la particion.
Definimos ahora las recintos que aproximan el area superior e inferiormente.
Definici
on 9.2 Sea Mj y mj el supremo y el nfimo respectivamente de los
valores de f (x) en el interval [xj1 , xj ]. Definimos
S(f, P ) =

n
X

Mj j

j=1

y
s(f, P ) =

n
X

mj j

j=1

Se tiene que la suma superior S(f, P ) es la suma de las areas de n rectangulos, de los que el j-esimo tiene base [xj1 , xj ] y altura Mj . La suma de estas
areas es mayor o igual que la del area R contenida entre la curva y = f (x)
y las rectas x = a, x = b, y = 0. Analogamente, la suma s(f, P ) es menor o
igual que el
area de R (ver Fig. 9.1)

(a) Suma inferior

(b) Suma superior

Figura 9.1: Sumas superior e inferior

188

Miguel Angel Cifredo Campos


macifredo@gmail.com

Si ahora tj es un valor arbitrario del intervalo [xj1 , xj ] (j = 1, ..., n) y


tomamos el conjunto T = {t1 , ..., tn }, la suma
(f, P, T ) =

n
X

f (tj )j

j=1

satisface que
s(f, P ) (f, P, T ) S(f, P )
En la Fig. 9.2 se ha construido esta suma tomando como conjunto T los
puntos medios de cada subintervalo.

Figura 9.2: Suma para los puntos medios

Nuestro objetivo es demostrar que si f es una funcion razonablemente


buena (lo que incluye a las funciones continuas y a las monotonas), las tres
sumas anteriores tienden a un lmite com
un cuando (P ) tiende a 0. Este
lmite denotado por
Z b
f (x)dx
a

ser
a la integral de la funci
on f sobre el intervalo [a, b].
Sin embargo, la operaci
on de lmite que acabamos de introducir es muy
complicada. Por ello, abordaremos inicialmente un proceso mas sencillo.
189

Miguel Angel Cifredo Campos


macifredo@gmail.com

9.1.1.

Integral superior e inferior de Darboux

Si M , m son el supremo e nfimo de f (x) en [a, b] y si, dada una particion


P , construimos las sumas S(f, P ) y s(f, P ) como antes, de las desigualdades
M mj y mj m (j = 1, ..., n) se deduce que
m(b a) s(f, P ) S(f, P ) M (b a).
As que el conjunto de los valores S(f, P ) esta acotado inferiormente por
m(b a) y, por tanto, tienen nfimo denotado
Z b
f (x)dx
a

que se llama integral superior de Darboux de la funcion f . Analogamente,


los valores s(f, P ) est
an acotados superiormente por M (b a) y, por ello,
tienen supremo denotado
Z b
f (x)dx
a

que se llama integral inferior de Darboux de la funcion f .


Los teoremas que siguen demuestran que la integral superior es siempre
mayor o igual que la integral inferior.
Teorema 9.3 La introduccion de un nuevo punto de division en una partici
on P disminuye el valor de S(f, P )y aumenta el valor de s(f, P ).
Corolario 9.4 Si P1 y P2 son dos particiones de [a, b] tales que P1 P2
entonces
S(f, P2 ) S(f, P1 )
y
s(f, P2 ) s(f, P1 ).
Si la partici
on P1 est
a includa en la particion P2 , como en el corolario, se
dice que P2 refina a P1 .
A partir de los dos resultados anteriores se demuestra
Teorema 9.5
Z

Z
f (x)dx

f (x)dx
a

190

Miguel Angel Cifredo Campos


macifredo@gmail.com

La posibilidad de que la integral superior sea mayor estrictamente que la


inferior es real
Ejemplo 9.1 La funci
on definida por
f (x) = 1
f (x) = 0

si x es racional
si x es irracional

definida en el intervalo [0, 1] satisface que su integral superior es igual a 1


mientras que su integral inferior es igual a 0.
Definici
on 9.6 Se dice que f es integrable Riemann cuando la integral
superior de f es igual a la integral inferior.

9.1.2.

Teorema de caracterizaci
on

Teorema 9.7 La funci


on f es integrable en el intervalo [a, b] si, y solo si,
existe el lmite de los valores
(f, P, T )
cuando (P ) tiende a 0.
Corolario 9.8 Una funci
on f acotada en [a, b] es integrable si, y solo si, para
todo  > 0, existe una particion P de [a, b] tal que S(f, P ) s(f, P ) < .
Entonces es posible demostrar que una amplia variedad de funciones son
integrables; entre ellas destacaremos dos tipos.
Teorema 9.9 Si f es continua en [a, b] entonces f es integrable en [a, b].
Teorema 9.10 Si f es monotona en [a, b] entonces f es integrable en [a, b].

9.2.
9.2.1.

Propiedades de la Integral
Reglas de integraci
on y Teorema del Valor Medio

Teorema 9.11 Dada una funcion integrable f en [a, b], se satisfacen las
siguientes propiedades:
191

Miguel Angel Cifredo Campos


macifredo@gmail.com

Rb
Rb
+ g(x))dx = a f (x)dx + a g(x)dx
Rb
Rb
2. a c f (x)dx = c a f (x)dx
Rb
Rc
Rb
3. a f (x)dx = a f (x)dx + c f (x)dx
Rb
Rb
4. f g a f (x)dx a g(x)dx
1.

Rb

a (f (x)

5. La funci
on |f | es integrable y se satisface


f (x)dx

|f (x)|dx

Por comodidad de notaci


on se adoptan los siguientes convenios
b

f (x)dx =
a

f (x)dx
b

f (x)dx = 0
a

Teorema 9.12 (Teorema del Valor Medio) Si f es continua en [a, b]


entonces existe un valor c [a, b] tal que
Z

f (x)dx = f (c)(b a).


a

9.2.2.

Funci
on integral. Regla de Barrow.

Supongamos en lo que sigue, y hasta que no se diga lo contrario, que f es


integrable en [a, b] y escribamos
Z x
F (x) =
f (t)dt (a x b)
a

La funci
on as definida se llama funci
on integral.
Teorema 9.13 F es una funcion continua.

192

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema 9.14 (Teorema Fundamental del C


alculo) Si f es continua
en el punto x [a, b] entonces F es diferenciable en x y se satisface F 0 (x) =
f (x).
Se dice que F es una primitiva de f en [a, b] cuando F 0 (x) = f (x) para
x [a, b].
Teorema 9.15 Si f es continua en [a, b], entonces existe primitiva de f en
[a, b].
Teorema 9.16 (Regla de Barrow) Si f es integrable en [a, b] y F es una
primitiva de f en [a, b] entonces
Z

f (x)dx = F (b) F (a)


a

El Teorema 9.14 demuestra la existencia de una funcion primitiva de f


cuando esta es continua. Se deduce de las propiedades de la derivada que
si F y G son primitivas de f entonces F G es una constante. Por lo
tanto, el conjunto de todas las primitivas de f esta formado por todas las
funciones de la forma F + k, siendo F cualquier primitiva de f y k una
constante arbitraria.
El conjunto de todas las funciones primitivas de f
R
se denota f (x)dx y se denomina integral indefinida de f . La regla de
Barrow proporciona un procedimiento muy sencillo para calcular la integral
(definida) de una funci
on cuando se conoce su integral indefinida. Es por
ello importante disponer de metodos para hallar la integral indefinida de
una funci
on. Veremos algunos de estos metodos en lo que sigue.
Teorema 9.17 (Propiedades de las integrales indefinidas)
1.

d
dx

2.

3.

f (x)dx = f (x)

d
dx F (x)dx

= F (x) + k

[f (x) + g(x)]dx =

f (x)dx +

g(x)dx

En la p
agina 244 pueden consultarse algunas integrales indefinidas inmediatas (las que provienen de la derivacion de las funciones matematicas elementales). Veamos algunos ejemplos.
193

Miguel Angel Cifredo Campos


macifredo@gmail.com

R
Ejemplo 9.2 Calcula I = (x2 3x + 5) dx.
R
R
R
R
R
R
Soluci
on: I = x2 dx + 3x dx + 5 dx = x2 dx 3 x dx + 5 dx =
x3
x2
3 3 2 + 5x + k
Ejemplo 9.3 Calcula I =
Soluci
on: I =

dx
.
sin2 x cos2 x

sin2 x+cos2 x
dx
sin2 x cos2 x

Ejemplo 9.4 Calcula I =

dx
cosx

dx
sin2 x

= tan x cot x + k.

cos2 xdx.

Soluci
on: Aplicando la f
ormula trigonometrica de cos2 x se tiene I =
que ya puede descomponerse en integrales inmediatas.

Ejercicio 9.1 Calcula la integral

1+cos 2x
dx
2

sin2 (x) dx
(Sol.:

x
2

41 sin (2x) + k )

Ejercicio 9.2 Calcula las siguientes integrales:


(a)

sin(ax) cos(bx) dx

(b)

cos(ax)cos(bx) dx
(Sol.: (a)
(b)

(ab) cos((a+b)x)+(a+b) cos((ba)x)


+ k;
2b2 2a2
(ba) sin((b+a)x)+(b+a) sin((ba)x)
+k )
2b2 2a2

Ejercicio 9.3 Calcula las siguientes integrales:


(a)

tan2 (x) dx

(b)

sin3 (x) cos4 (x) dx


(Sol.: (a) tan(x) x + k (b)

194

5 cos7 x7 cos5 x
35

+k )

Miguel Angel Cifredo Campos


macifredo@gmail.com

9.2.3.

Integraci
on por partes y sustituci
on

Teorema 9.18 (Integraci


on por partes) Sean f y g funciones continuas
en [a, b] tales que existen sus derivadas f 0 , g 0 , que son tambien continuas en
[a, b], entonces
Z b
Z b
f (x) g 0 (x)dx +
f 0 (x) g(x)dx = f (b) g(b) f (a) g(a)
a

Ejemplo 9.5 Veamos algunos ejemplos:


R
(1) I = ln x dx.
Soluci
on: Tomamos f (x) = ln x y g 0 (x) = 1 en la formula de integracion
por partes. Y, por tanto,
Z
I = x ln x

(2) I =

dx = x ln x x + k

x3 sin x dx.

Soluci
on: Se aplica integracion por partes varias veces, tomando siempre
como funci
on f (x) la parte polinomica, hasta llegar a la integral de una
funci
on trigonometrica.


I = 3x2 6 sin (x) + 6x x3 cos (x) + k

(3) I =

eax sin bx dx y J =

eax cos bx dx

Soluci
on: Se aplica integracion por partes a las dos integrales y se obtiene
un sistema lineal de dos ecuaciones con incognitas I y J, que se resuelve sin
mayor dificultad.
I=

eax (a sin (bx) b cos (bx))


b2 + a2

+ k;

J=

195

eax (b sin (bx) + a cos (bx))


+k
b2 + a2

Miguel Angel Cifredo Campos


macifredo@gmail.com

(4) I =

e2x sin x dx.

Soluci
on: Se aplica integracion por partes dos veces y se despeja el valor
de I de la expresi
on. Tambien podemos aprovechar la formula del ejemplo
anterior tomando a = 2 y b = 1; por lo que,
I=

e2x (2 sin x cos x)


5

Ejercicio 9.4 Calcula la siguiente integral


ln2 (x) y aplica integraci
on por partes)

+k

ln2 (x) dx. (H: Toma f (x) =


(Sol.: x ln2 (x) 2 ln (x) + 2 + k )

Ejercicio 9.5 Halla la f


ormula de reduccion de In =
(Sol.:

xn cos(ax) dx.

xn1 (ax sin(ax)+n cos(ax))


a2

n(n1)
a2

In2 )

Teorema 9.19 (Integraci


on por sustituci
on) Sea f una funcion continua en [a, b] y sea g una funcion continua de [c, d] a [a, b] tal que g(c) = a y
g(d) = b, y existe la derivada de g en [c, d]. Entonces (f g) g 0 es integrable
en [c, d] y
Z d
Z b
0
f (g(s)) g (s)ds =
f (x)dx
c

Ejemplo 9.6 Veamos algunos ejemplos:


R
(1) I =
16 x2 dx, x [4, 4].
Soluci
on: Se aplica el cambio x = 4 sin t, t [ 2 , 2 ], dx = 4 cos t; por lo
que la integral se transforma en
Z p
Z p
Z
I=
16 sin2 t 4 cos tdt = 16
1 sin2 t cos tdt = 16 cos2 tdt
que ya sabemos resolver. Para
q deshacer el cambio, se tiene en cuenta que
2
x
sin t = 4 y, por tanto cos t = 1 x16 . Ahora,
r
x
x2
x
I = 8t + 4 sin(2t) = 8t + 8 sin t cos t = 8 arcsin + 8
1
+k
4
4
16
196

Miguel Angel Cifredo Campos


macifredo@gmail.com

(2) I =

dx
,
(arcsin x)3 1x2

x [1, 1].

dx
Soluci
on: Se aplica el cambio u = arcsin x, du = 1x
; por lo que la
2
integral se transforma en
Z
u2
(arcsin x)2
I = u3 du =
+k =
+k
2
2

habiendo deshecho el cambio en el u


ltimo paso.

(3) I =

x2 x 7dx

Soluci
on: Se aplica el cambio x = t2 + 7, dx = 2tdt; por lo que la integral
se transforma en

Z
2 15t7 + 294t5 + 1715t3
2
2 2
I = (t + 7) 2t dt =
+k
105
que ya es inmediata
al ser la integral de un polinomio y, deshaciendo el

cambio, t = x 7, queda


2 15(x 7)3 x t + 294(x 7)2 x t + 1715(x 7) x t


I=
+k
105

Ejercicio 9.6 Calcula las siguientes integrales:


(a)

R
dx
dx

; (b)
.
x2 a2
x2 + a2

dx
)
a2





(Sol.: (a) ln x + x2 a2 ; (b) ln x + x2 + a2 )

(H: Aplica el cambio t = x +

x2 a2 y comprueba que dt =

x2

A continuaci
on se proponen algunos ejercicios mas de los tipos vistos anteriormente.
197

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 9.7 Calcula las siguientes integrales:


R
R
dx
dx
dx
; (b)
; (c)
(a > 0).
2
+ 6x + 10
9x + 25
x2 a2

arctan( 3x
5 )
+ k; (b)
+ k; (c) ln(xa)

(Sol.: (a) arctan 2x+6


2
15
2a

(a)

x2

ln(x+a)
2a

+k )

2x2
4

+k )

tan(x)
2

+k )

ln(b2 sin(x)+a2 )
b2

+k )

Ejercicio 9.8 Calcula las siguientes integrales:


(a)

R
dx
dx

; (b)
.
9 4x2
3 2x x2
(Sol.: (a) arcsin

x
3

+ k; (b) arcsin

Ejercicio 9.9 Calcula las siguientes integrales:


(a)

R ex 3e2x
R tan3 (x) + tan(x)
dx;
(b)
dx
1 + ex
1 2 tan(x)

(Sol.: (a) 4 ln (ex + 1) 3ex + k; (b) ln(2 tan(x)1)


4

Ejercicio 9.10 Calcula las siguientes integrales:


(a)

R
cos(x)
cos(x)
dx; (b)
dx
2
2
a + b2 sin(x)
sin (x) + 2 cos (x) sin(x)
3

(Sol.: (a)

9.3.

ln(sin(x))
2

ln(sin(x)2 2)
4

+ k; (b)

Aplicaciones

Veamos alguna aplicaciones de la integral al calculo de areas, vol


umenes y
longitudes de curva.

Areas
de superficies limitadas por curvas
1. El
area limitada por la curva y = f (x) (siendo f 0) y las rectas
x = a, x = b, y = 0 es
Z b
f (x)dx.
(9.1a)
a

198

Miguel Angel Cifredo Campos


macifredo@gmail.com

2. El
area limitada por las curvas y = f (x), y = g(x) (siendo f g) y
las rectas x = a, x = b es
Z b
[f (x) g(x)]dx.
(9.1b)
a

Ejemplo 9.7 Ejemplos de aplicaciones al calculo de areas:


(a) Calcula el
area de la region S limitada por las rectas x = 0, x = 2, y las
curvas y = x(x 2), y = x/2.
Soluci
on: Hallamos los puntos de corte entre las graficas, planteando para
ello la ecuaci
on
x(x 2) = x/2

x(2x 5) = 0

cuyas soluciones son x = 0 y x = 5/2. En la Figura 9.3 se ha representado


la regi
on solicitada.

Figura 9.3: Area


entre dos curvas

Como el recinto est


a limitado por x = 2, el area solicitada es
Z 2
Z 2
x
5
7
2
a(S) =
[ (x 2x)]dx =
[ x x2 ]dx =
3
0 2
0 2

(b) Calcula el
area de la region S limitada por las rectas x = 1, x = 2 y
las curvas y = x, y = x3 /4.
199

Miguel Angel Cifredo Campos


macifredo@gmail.com

Soluci
on: Hallamos los puntos de corte entre las graficas, planteando para
ello la ecuaci
on
x = x3 /4 x(x2 4) = 0
cuyas soluciones son x = 0, x = 2 y x = 2. En la Figura 9.4 se ha
representado la regi
on solicitada.

Figura 9.4: Area


entre dos curvas que se cortan

Se observa que hay dos recintos, donde las graficas han intercambiado sus
posiciones, as pues, el
area solicitada es
Z 0 3
Z 2
23
x
x3
a(S) =
[ x]dx +
[x ]dx =
4
4
16
1
0

Ejercicio 9.11 Calcula el area de la region limitada por el eje OX y las


curvas y = sin3 (x), y = cos3 (x) con 0 x /2.
(Sol.:

2(52 2)

3 2

Ejercicio 9.12 Calcula el


area comprendida entre las curvas y = 6x x2 e
y = x2 2x.
(Sol.:

64
3

Ejercicio 9.13 Calcula


area de la region limitada por el eje OX, la recta
el
x = 1 y la curva y = x 1 x2 .
200

Miguel Angel Cifredo Campos


macifredo@gmail.com

(Sol.:

1
3

Ejercicio 9.14 Calcula el area del dominio limitado por la elipse de ecua2
2
ci
on xa2 + yb2 = 1 (a, b > 0).
(Sol.: ab )
Longitud de un arco de curva
1. Dada la curva definida por la grafica de la funcion y = f (x), x [a, b],
su longitud viene dada por la formula
L=

Z bp

1 + f 0 (x)2 dx.

(9.2a)

2. Si la curva viene dada en forma parametrica



x = x(t)
t [a, b]
y = y(t)
entonces su longitud viene dada por
L=

Z bp

x0 (t)2 + y 0 (t)2 dt

(9.2b)

3. Si la curva est
a en el espacio y sus ecuaciones son

x = x(t)
y = y(t)
t [a, b]

z = z(t)
entonces su longitud viene dada por
L=

Z bp

x0 (t)2 + y 0 (t)2 + z 0 (t)2 dt

(9.2c)

Ejemplo 9.8 Calcula la longitud del arco de parabola y 2 = 2px, desde el

vertice hasta el punto (1, 2p).

201

Miguel Angel Cifredo Campos


macifredo@gmail.com

Soluci
on: Representando la curva en forma parametrica obtenemos
)
t2
p
x = 2p
0 t 2p
y= t
de donde, aplicando la F
ormula (9.2b),
"
#2p
p
2 + p2
t2
t p2
p
t
t
+
1 + 2 dt =
t + p2 + ln
L=
p
2
2
p
0
0



p2 +2p+ 2p
p 2
p ln
p
2p p + 2p
=
+
2
2

2p

Ejercicio 9.15 Calcula la longitud de una circunferencia de radio r por


los dos metodos siguientes: (a) utilizando la parametrizacion x(t) = r cos t,
y(t) = r sin t, con 0 t 2 y la Formula
(9.2b); (b) utilizando la ecuacion
de la semicircunferencia superior, y = r2 x2 y la Formula (9.2a).
(Sol.: 2r )

Area
y volumen de una superficie de revoluci
on
Si se tiene una curva definida por la grafica de y = f (x), siendo f 0,
x [a, b], y giramos dando una vuelta completa alrededor del eje OX,
entonces se engendra un cuerpo de revolucion cuya area lateral es
Z b
p
S = 2
f (x) 1 + f 0 (x)2 dx
(9.3a)
a

y cuyo volumen es
Z
V =

f (x)2 dx.

(9.3b)

Ejemplo 9.9 Veamos algunos ejemplos de aplicacion de estas formulas.


(a) Eval
ua el volumen del solido S formado por la rotacion 2 radianes de
la cicloide
x = a(t sin t), y = a(1 cos t), 0 t 2.
202

Miguel Angel Cifredo Campos


macifredo@gmail.com

Figura 9.5: S
olido de revolucion generado por una cicloide

Soluci
on: Cuando t vara de 0 a 2, la variable x crece de 0 a 2a. Por lo
tanto, aplicando la f
ormula para hallar el volumen de un solido de revolucion
a la funci
on y = y(x), se obtiene
Z

2a

v(S) =

y(x)2 dx

haciendo el cambio de variable x = a(t sin t), 0 t 2, resulta


Z
v(S) =

[a(1 cos t)]2 a(1 cos t)dt = 5 2 a3 .

(b) Calcula el
area de una esfera E de radio R.
Soluci
on: La esfera
puede obtenerse por la rotacion 2 radianes de la grafica
de la curva y = R2 x2 , R x R. Aplicando la formula para el area
de una superficie de revolucion, resulta
r
Z R
Z Rp
x2
a(E) = 2
R2 x2 1 + 2
dx
=
2
Rdx = 4R2 .
2
R

x
R
R

203

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 9.16 Calcula el


area lateral de un cilindro circular recto de radio
a = 5 y altura h = 8 (H: el cilindro es un cuerpo de revolucion).
(Sol.: 80 )

Area
de una superficie definida por medio de coordenadas polares
Sea f una funci
on no negativa definida en el intervalo [a, b]. El conjunto de
todos los puntos de coordenadas polares (, ) que satisfacen = f () es
la gr
afica de f en coordenadas polares. La ecuacion = f () es la ecuaci
on
polar de esa gr
afica.
Ejemplo 9.10 Vemos dos ejemplos de ecuaciones polares a continuacion.
1. La circunferencia con centro (0, 0) y radio 1 se representa por las ecuaciones x2 + y 2 = 1 (coordenadas cartesianas) y = 1 (coordenadas
polares).
2. La curva cuya ecuaci
on en coordenadas cartesianas es (x2 + y 2 )3 = y 2
se representa en coordenadas polares como
6 = 2 sin2
4 = sin2
2 =p
| sin |
= | sin |
Si se tiene una curva definida por una ecuacion polar = r(), siendo r no
negativa y definida para en un intervalo [a, b], entonces el area del dominio
S encerrado por la gr
afica de la funcion en el intervalo a b viene dado
por la integral
Z
1 b 2
a(S) =
r ()d.
(9.4)
2 a
Ejemplo 9.11 Ejemplos de aplicaciones al calculo de areas:
1. Calcula el
area de un sector circular de radio R y amplitud < < .
R
2
Soluci
on: a(S) = 12 R2 d = R2 ( ).

204

Miguel Angel Cifredo Campos


macifredo@gmail.com

2. Calcula el
area
p de la region S limitada por la curva cuya ecuacion
polar es = | sin |.
R /2
Soluci
on: a(S) = 12 0 sin d = 2(cos 0 cos 2 ) = 2.
Ejercicio 9.17 Hallar el
area de un lazo de la rosa de cuatro hojas cuya
ecuaci
on en polares es r = 3 sin(2), 0 2.
(Sol.:

9.4.

9
8

Problemas adicionales

Ejercicio 9.18 Halla el


area de la region limitada por la curva y = x3 +
2
x 2x y el eje OX.
(Sol.:

37
12

Ejercicio 9.19 Halla el


area de la region limitada por la curva y = x3
3x + 8 y las rectas y = 3x, x = 3 y x = 0.
(Sol.:

81
4

Ejercicio 9.20 Halla el


area de la region del plano comprendida entre la
1
curva y =
y la par
abola 2y = x2 .
1 + x2
(Sol.:

1
3

Ejercicio 9.21 Halla el


area encerrada por la recta y = z 1 y la parabola
y 2 = 2x + 6.
(Sol.: 18. )
Ejercicio 9.22 Halla el
area acotada por el eje x y por un arco de la cicloide
x = r (t sin t) ,

y = r (1 cos t) ,

donde r > 0, y 0 t 2 (H: Aplica la Formula (9.1a)).


(Sol.: 3r2 )

205

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 9.23 Halla el valor de b para que la recta y = b divida el recinto


encerrado por las curvas y = x2 e y = 4 en dos regiones de igual area.

(Sol.: b = 3 16 )
Ejercicio 9.24 Un alambre delgado tiene la forma de la primera espiral de
la helice (t) = (cos t, sin t, t), t [0, 2]. Halla su longitud.

(Sol.: 2 2 )
Ejercicio 9.25 Halla la longitud de la lnea helicoidal conica x = a et cos t,
y = a et sin t, z = a et ; desde el punto A(0, 0, 0) al punto B(a, 0, a). (H: Al
punto A le corresponde un valor del parametro t0 = y al punto B el
valor t1 = 0).

(Sol.: a 3. )
Ejercicio 9.26 Halla el volumen del solido generado al girar la region encerrada por la par
abola y = x2 y la recta y = x, alrededor del eje OX una
vuelta completa.
(Sol.:

206

2
15

Miguel Angel Cifredo Campos


macifredo@gmail.com

Tema 10

Integrales dobles y triples


Hasta ahora se han calculado el area de figuras geometricas planas elementales: el rect
angulo, el crculo, el trapecio, etc. Pero, como calcular el area
de figuras no regulares? Una buena aproximacion puede ser la de dividir la
zona en peque
nos rect
angulos y sumar las areas de cada uno de ellos:

Figura 10.1: Mallado para la aproximacion del area

Esta idea era la que subyaca en la construccion de la integral que vimos


en el tema anterior y que nos permitio calcular longitudes de curvas, areas
limitadas por curvas y vol
umenes de cuerpos de revolucion. En este tema, se
generaliza el concepto de integral definida a funciones de dos o tres variables,
obteniendo las llamadas integrales de area o de volumen, respectivamente.
Esto nos permitir
a calcular el volumen de cuerpos limitados por superficies,
no necesariamente de revolucion. Tambien permitira calcular areas mediante integrales dobles sencillas que en el tema anterior resultaban algo mas
complicadas. Se empezar
a definiendo la integral sobre un rectangulo.

207

Miguel Angel Cifredo Campos


macifredo@gmail.com

10.1.

Integrales dobles sobre rect


angulos

Sea f (x, y) una funci


on acotada sobre un rectangulo R = [a, b] [c, d]. Una
partici
on del rect
angulo R son dos conjuntos de puntos {xj }nj=0 e {yj }m
j=0 ,
satisfaciendo
a = x0 < x1 < x2 < . . . < xn = b

c = y0 < y1 < y2 < . . . < ym = d

es decir, P = P1 P2 , donde P1 y P2 son particiones de [a, b] y [c, d],


respectivamente.
Se llama
area de R a v(R) = (dc)(ba). Toda particion divide al rectangulo
R en n m subrect
angulos Rjk = [xj1 , xj ] [yk1 , yk ], j = 1, . . . , n, k =
1, . . . , m como se observa en la Figura 10.2.
Se llama norma de la particion P a
kP k = m
ax{v(Rjk ) : j = 1, . . . , n; k = 1, . . . , m}

Figura 10.2: Una particion del rectangulo R = [a, b] [c, d]

Considerese cualquier punto cjk del rectangulo Rjk y formese la suma


S(f, P ) =

n1
X m1
X
j=0 k=0

208

f (cjk )v(Rjk )

Miguel Angel Cifredo Campos


macifredo@gmail.com

llamada suma de Riemann para f


En la siguiente gr
afica hemos representado las sumas de Riemann para la
funci
on f (x, y) = x2 + y 2 tomando como punto cjk el punto medio del
rect
angulo y el punto inferior del rectangulo.

2
1.5

1.5
1

1
0.5

0.5
0
0 0.25
0.50.75 0
1

1
0.75
0.5
0.25

1
0.75
0.5
0.25

0
0

(a) cjk como punto inferior

0.25

0.5

0.75

(b) cjk como punto medio

Figura 10.3: Sumas de Riemann


Definici
on 10.1 Si la sucesion {S(f, P )} converge a un lmite S, cuando
la norma de la partici
on tiende a 0, que es el mismo para cualquier eleccion
de cjk , entonces se dice que f es integrable sobre R y se escribe
ZZ
f (x, y)dxdy = lm
R

kP k0

n1
X m1
X

f (cjk )v(Rjk )

j=0 k=0

A continuaci
on se resumen las propiedades mas importantes de las funciones
integrables.
Teorema 10.2 Sean f y g dos funciones integrables sobre un rectangulo
R. Entonces

209

Miguel Angel Cifredo Campos


macifredo@gmail.com

1. (Linealidad) f + g es integrable sobre R y


ZZ
ZZ
ZZ
(f (x, y) + g(x, y))dxdy =
f (x, y)dxdy +
g(x, y)dxdy
R

2. (Homogeneidad) f es integrable sobre R, para todo R, y


ZZ
ZZ
f (x, y)dxdy =
f (x, y)dxdy
R

3. (Monotona) Si f (x, y) g(x, y), para todo (x, y) R, entonces


ZZ
ZZ
f (x, y)dxdy
g(x, y)dxdy
R

4. (Aditividad) Si R = P Q con P y Q dos rectangulos cuya interseccion


es una lnea recta o un punto o vaca, entonces
ZZ
ZZ
ZZ
f (x, y)dxdy =
f (x, y)dxdy +
f (x, y)dxdy
R

5. (Valor absoluto) |f | tambien es integrable y se verifica


ZZ
Z Z



f (x, y)dxdy
|f (x, y)|dxdy

R

Un primer ejemplo de una amplia clase de funciones integrables la proporciona el siguiente teorema
Teorema 10.3 Toda funcion continua sobre un rectangulo cerrado R es
integrable
Aunque la clase de las funciones integrables es mucho mas amplia, el teorema
anterior ser
a suficiente en muchos casos practicos.
En general, las funciones integrables son aquellas que son continuas salvo en
conjuntos muy peque
nos.
Definici
on 10.4 (Medida nula) Un subconjunto de Rn tiene contenido
nulo si, dado  > 0, existe un n
umero finito de rectangulos que lo recubren
y la suma de sus vol
umenes es menor que .
210

Miguel Angel Cifredo Campos


macifredo@gmail.com

Un subconjunto de Rn tiene medida nula si, dado  > 0, existe una sucesion
(finita o infinita) de rect
angulos, Rn , que lo recubren y cumpliendo.

V (Rn ) < 

n=1

El criterio general para saber que funciones son integrables lo proporciona


el siguiente teorema
Teorema 10.5 (Criterio de Lebesgue) Una funcion definida en un rect
angulo es integrable Riemann si, y solo si, el conjunto de puntos de discontinuidad de la funci
on tiene medida nula.

10.1.1.

C
alculo de integrales dobles

El c
alculo de una integral doble se realiza mediante el calculo de dos integrales iteradas, de acuerdo al siguiente teorema:
Teorema 10.6 (Teorema de Fubini) Sea f una funcion integrable sobre
un rect
angulo R = [a, b] [c, d].
1. Si para cada x [a, b], la seccion transversal fx (y) := f (x, y), y [c, d],
es integrable sobre [c, d], entonces la funcion
Z d
F (x) :=
fx (y)dy
c

es integrable sobre [a, b] y se verifica


ZZ
Z b
Z b Z
f (x, y)dxdy =
F (x)dx =
R


f (x, y)dy dx

2. Si para cada y [c, d], la seccion transversal fy (x) := f (x, y), x [a, b],
es integrable sobre [a, b], entonces la funcion
Z b
G(y) :=
fy (x)dx
a

es integrable sobre [c, d] y se verifica


ZZ
Z d
Z
f (x, y)dxdy =
G(y)dy =
R

211

d Z b


f (x, y)dx dy

Miguel Angel Cifredo Campos


macifredo@gmail.com

f(x ,y)
0

f(x ,y )
0

G(y0 )
d

F(x0)

x = x0

d
y=y0

c
b

Figura 10.4: El teorema de Fubini


Corolario 10.7 Si f es continua sobre un rectangulo R = [a, b] [c, d],
entonces


ZZ
Z b Z d
Z d Z b
f (x, y)dxdy =
f (x, y)dy dx =
f (x, y)dx dy
R

Ejemplo 10.1 Se desea calcular la integral doble


[1, 2] [0, 1].

RR

2
Rx y

dxdy siendo R =

Soluci
on: Dado que la funcion x2 y es continua en R basta aplicar el Teorema
de Fubini para obtener
ZZ

2 Z 1

x ydxdy =
R

x ydy dx =
1

Z
=
1

0
2

2

2y

x
1


2 y=1

dx
y=0

 3 x=2
7
x2
x
8 1
dx =
= =
2
6 x=1 6 6
6

Ejercicio 10.1 C
alculese la integral anterior cambiando el orden de integraci
on.

212

Miguel Angel Cifredo Campos


macifredo@gmail.com

10.1.2.

Integrales dobles sobre recintos acotados

Para generalizar el concepto de integral doble a recintos acotados se hace


uso de la funci
on caracterstica
(
1, si x A
1A (x) =
0, si x
/A
donde A R2 .
Si el conjunto A es acotado y verifica que su frontera tiene medida nula,
entonces la funci
on caracterstica es integrable sobre cualquier rectangulo R
que contiene a A y, en este caso, existe
ZZ
a(A) :=
1A (x, y)dxdy
R

que se llama la medida o


area de A. El conjunto A se dice, entonces, medible.
Entonces, dada una funci
on integrable sobre un rectangulo R A, se define
ZZ
ZZ
f (x, y)dxdy :=
1A (x, y)f (x, y)dxdy
A

En la figura siguiente puede verse graficamente este proceso, donde F (x, y) =


1A (x, y)f (x, y):
1

Grfica de f(x,y)

0.5

Grfica de F(x,y)

0
0

-0.5
-1
1
2

-1
2

1.5
1.5
1

0.5

0.5

0
-1

0
-1

-0.5
0

0
0.5
1

Figura 10.5: Recinto acotado y funcion caracterstica


213

Miguel Angel Cifredo Campos


macifredo@gmail.com

Esta definici
on permite extender la integracion a recintos mas generales:
aquellos que son medibles.
Por tanto, hay que reconocer los conjuntos que son medibles. Para los objetivos de nuestro curso basta aplicar, en general, el siguiente resultado:
Teorema 10.8 La gr
afica de una funcion continua tiene medida nula; es
decir, si (x) es una funci
on continua definida en un intervalo I, el conjunto
A = {(x, y) : y = (x); x I}
tiene medida nula.
En definitiva, los conjuntos cuya frontera esta formada por graficas de funciones continuas son medibles. En particular, pueden distinguirse dos tipos
de recintos:

Recintos de tipo I
A = {(x, y) R2 : a x b; g2 (x) y g1 (x)}
siendo g2 (x), g1 (x) funciones continuas en [a, b]. En este caso,
!
ZZ
Z
Z
b

g1 (x)

f (x, y)dxdy =
A

f (x, y)dy dx
a

g2 (x)

g 1(x)
g 1(x)
D
g2(x)
a

g 1(x)

g2(x)

g2(x)

Figura 10.6: Algunos dominios de tipo I


Ejemplo 10.2 Se quiere calcular la integral
Z Z
(x + 2y) dy dx
D

214

Miguel Angel Cifredo Campos


macifredo@gmail.com

donde D es la regi
on acotada por la parabolas y = 2x2 e y = 1 + x2 .
Soluci
on:
En primer lugar, tras representar graficamente el dominio de integracion,
trazamos una recta vertical, L, que pase por el dominio D y marcamos los
valores de la variables y por donde entra y sale la recta L, como puede verse
en la siguiente figura.

2.5

1.5

y = x2 +1
1

0.5

y = 2 x2
-1

-0.5

0.5

Figura 10.7: Integracion sobre una region de tipo I


La regi
on de integraci
on es, por tanto, el dominio de tipo I:
D = {(x, y)/ 1 x 1 ; 2x2 y 1 + x2 )}
Luego:
Z Z

1+x2

(x + 2y) dy dx =
D

(x + 2y) dy dx
1

2x2

RR
Ejercicio 10.2 Calcula la integral doble T xydxdy siendo T el recinto
limitado por el tri
angulo de vertices A(0, 0), B(2, 0) y C(1, 1), expresando
T como un recinto de tipo I.
(Sol.:
RR

1
3

Ejercicio 10.3 Calcula la integral doble T x ydxdy siendo T el recinto


limitado por el tri
angulo de vertices A(1, 1), B(2, 4) i C(3, 3), expresando T
como un recinto de tipo I.
215

Miguel Angel Cifredo Campos


macifredo@gmail.com

(Sol.: 43 )
Recintos de tipo II
A = {(x, y) R2 : c y d; h1 (y) x h2 (y)}
siendo h1 (y), h2 (y) funciones continuas en [c, d]. En este caso,
ZZ

f (x, y)dxdy =

f (x, y)dx dy

h1 (y)

d
h 1(y)
D

h2 (y)

d
h 1(y)

h2(y)

D
c

h1(y)

h2(y)

h2(y)

Figura 10.8: Algunos dominios de tipo II


Ejemplo 10.3 Calculemos la integral
Z Z
xy dy dx
D

donde D es la regi
on acotada por y = x 1 y 2x + 6 = y 2 .
Soluci
on: Despues de representar graficamente el dominio de integracion,
trazamos una recta horizontal, L, que pase por el dominio D y marcamos
los valores de la variables x por donde entra y sale la recta L, como puede
verse en la siguiente figura.

216

Miguel Angel Cifredo Campos


macifredo@gmail.com

x = y2/ 2-3
4
3
2

x=y+1

1
-2

-1
-2

Figura 10.9: Integracion sobre una region de tipo II

Luego el dominio de integracion es el dominio de tipo II:



2 y 4
D
y + 1 x 21 (y 2 6)
Por tanto:
Z Z

xy dy dx =
D

1 2
(y 6)
2

xy dx dy =

y+1

RR
Ejercicio 10.4 Calcula la integral doble T xydxdy siendo T el recinto
limitado por el tri
angulo de vertices A(0, 0), B(2, 0) y C(1, 1), expresando
T como un recinto de tipo II. Compara el resultado con el obtenido en el
Ejercicio 10.2.
(Sol.:

1
3

RR
Ejercicio 10.5 Calcula la integral doble T (x y)dxdy siendo T el recinto
limitado por el tri
angulo de vertices A(1, 1), B(2, 4) i C(3, 3), expresando
T como un recinto de tipo II. Compara el resultado con el obtenido en el
Ejercicio 10.3.
(Sol.: 43 )
Algunas regiones pueden escribirse indistintamente como de tipo I o de tipo
II. En estos casos, se elige aquella que resulte mas facil o mas corta. En el
siguiente ejemplo, se han calculado ambas para que se puedan comparar los
procedimientos.
217

Miguel Angel Cifredo Campos


macifredo@gmail.com

RR

Ejemplo 10.4 Se desea calcular la integral doble


tri
angulo de vertices A(0, 0), B(1, 0) y C(0, 2).

xydxdy siendo T el

Soluci
on: El recinto puede verse en la figura expresado como de tipo I o de
tipo II
C2

C2

y=2 - 2 x

1.5

1.5

1
1

x=0

0.5

0.2

0.4

0.6

0.8

2-y
2

x=

0.5

0.2

y=0
(a) Recinto de tipo I

0.4

0.6

0.8

(b) Recinto de tipo II

Figura 10.10: Un triangulo como region de tipo I y II

Para ello, si se expresa T como una region de tipo I: T

0x1

y, entonces
ZZ
Z
xydxdy =
T

1 Z 22x


Z
xy dy dx =

1

0
1

1

y2
2

0 y 2 2x

y=22x
dx
y=0


Z

(2 2x)2
=
x
dx =
2x + 2x3 4x2 dx
2
0
0
x=1

4
3
x
x
5
1 4
= x2 +
4
=1+ =
2
3 x=0
2 3
6
Z

218

Miguel Angel Cifredo Campos


macifredo@gmail.com

Si se expresa T como un recinto de tipo II: T

0y2

0x

2y
2

y, entonces
ZZ

2y
2

xydxdy =
T

!
xy dx dy = . . . =

5
6

Ejercicio 10.6 Calcula la integral de la funcion f (x, y) = x2 y 2 sobre la


regi
on R del primer cuadrante limitada por las hiperbolas equilateras xy = 1,
xy = 2 y las rectas y = x2 , y = 3x.
(Sol.:

7
6

ln 6 )

Ejercicio 10.7 Calcular el area de la region del primer cuadrante limitada


por las curvas xy = 2, xy = 4, y = x, y = 3x.
(Sol.: ln 3 u2 (unidades al cuadrado) )

10.1.3.

C
alculo de
areas

Si se considera una funci


on continua no negativa f (x, y) 0 definida en un
recinto acotado medible A, entonces la integral doble
ZZ
f (x, y) dxdy
A

tiene un significado geometrico claro: representa el volumen del solido formado por el recinto A como base, paredes laterales verticales y como superficie
superior la gr
afica de f (x, y).
Este resultado permite que, en el caso de integrar la funcion constante 1
sobre un recinto medible A, se obtenga el area de dicho recinto (en realidad,
se obtiene el volumen de un prisma recto de base el recinto A y altura 1 que
equivale numericamente al
area de A). Es decir;
ZZ
a(A) :=
1 dxdy
A

219

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 10.5 Vamos a utilizar esta propiedad para calcular el area comprendida por la gr
afica de las funciones y = sen(x) + 1 e y = cos(x) + 1 en
5
,
el intervalo [ 3
4
4 ].
Soluci
on:

Primer paso: Un croquis Para representar graficamente el area que


queremos calcular, hallaremos en primer lugar, los puntos de intersecion de
las dos funciones que se encuentran en ese intervalo, es decir, igualamos las
dos funciones y obtenemos que:
sen(x) + 1 = cos(x) + 1

sen(x) = cos(x)

5
x = 3
4 , 4, 4
Luego los puntos de interseccion son

3
2

2
P1 = ( ,
+ 1), P2 = ( ,
+ 1),
4
2
4 2

5
2
P3 = ( ,
+ 1)
4
2

Como podemos ver en la gr


afica, Fig. 10.11 se obtienen dos dominios simetricos que tienen el mismo
area. Es por ello que calcularemos el area que nos
piden multiplicando por dos el area de uno de los dos dominios coloreados
en la gr
afica.
y= sen(x) + 1
2
1.5
1
0.5
-2

y= cos(x) + 12

Figura 10.11: Area


entre dos graficas

Segundo Paso: Los lmites de integraci


on en y Trazamos una recta
vertical, L, que pase por el dominio D y marcamos los valores de la variables
y por donde entra y sale la recta L. Como puede verse en la Fig. 10.11,
220

Miguel Angel Cifredo Campos


macifredo@gmail.com

esos valores son justamente los valores de las funciones y = sen(x) + 1 e


y = cos(x) + 1.
Por lo tanto el dominio D sobre el que tenemos que integrar es el dominio
de tipo 1:
D = {(x, y)/

x
; cos(x) + 1 y sen(x) + 1)}
4
4

Tercer Paso: C
alculo de la integral Aplicando la formula de integraci
on sobre dominios de tipo I a la formula de calculo de areas, tendremos
que:

Area(D)
=

ZZ

5
4

Z
1 dA = 2

D
5
4

Z
=2

sen(x)+1

5
4

Z
1 dy dx = 2

cos(x)+1

sen(x)+1

y]cos(x)+1 dx

sen(x) cos(x) dx = 2 cos(x) sen(x)] 4 = 4 2

Ejemplo 10.6 Calcular el area comprendida por la grafica de las funciones


y = x e y = (2 x)2 y x = 0.
Soluci
on:

Primer paso: Un croquis Para representar graficamente el area que


queremos calcular, hallaremos en primer lugar, los puntos de intersecion de
las funciones que delimitan el dominio a integrar. Igualando las funciones se
tiene que:
x = (2 x)2

x2 5x + 4 = 0

x=1yx=4
Luego los puntos que delimitan el dominio son
P1 = (0, 0),

P2 = (1, 1),
221

P3 = (2, 0)

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.4
1.2
1
0.8
0.6

x= 2 -

x= y

0.4
0.2
0.5

1.5

Figura 10.12: Area


entre dos graficas

Segundo Paso: Los lmites de integraci


on en x Trazamos una recta
horizontal que pase por el dominio D y marcamos los valores de la variable
x por donde entra y sale la recta. Como puede verse en la Fig. 10.12 esos

valores son y = x y x = 2 y. Por lo tanto el dominio D sobre el que


tenemos que integrar es el dominio de tipo II:

D = {(x, y)/0 y 1 ; y x 2 y}

Tercer Paso: C
alculo de la integral Aplicando la formula de integraci
on sobre dominios de tipo II a la formula de calculo de areas, tendremos
que:
!
ZZ
Z 1 Z 2y
Z 1

x=2 y

Area(D)
=
1 dA =
1 dx dy =
[x]x=y
dy
D

(2

#y=1
y 3/2 y 2
5
y y dy = 2y 2

2)
=
3
2
6
"

y=0

Ejemplo 10.7 . C
alculese el area del crculo unidad.
Soluci
on: Seg
un lo dicho
ZZ
a(C) =

1 dxdy
C

222

Miguel Angel Cifredo Campos


macifredo@gmail.com

siendo C x2 + y 2 1.
Si se considera como un recinto de tipo I, debemos hallar las ecuaciones de
las dos curvas que delimitan el recinto por su parte inferior y superior, tal
y como se ve en la Fig. 10.13

Figura 10.13: Disco unidad


por lo que los lmites de integracion seran

1 x 1
C


1 x2 y 1 x2
Por tanto,
ZZ
Z
1 dxdy =

1x2

1x2

1 dy

dx =

p
2 1 x2 dx

x = sin t

dx = cos t dt
y, haciendo el cambio de variable
x = 1 t = 2

x = 1 t = 2

Z
=



sin(2t) t= 2
2 cos t dt = t +
=
2
t=
2

223

, resulta

Miguel Angel Cifredo Campos


macifredo@gmail.com

M
as adelante se ver
a que este tipo de integrales puede resolverse de forma
m
as sencilla, aplicando el cambio de variables a la integral doble.

Ejercicio 10.8 Considera un triangulo isosceles con un vertice en el punto


(0, 0) y los lados iguales sobre las rectas determinadas por y = |x|. Halla
que altura, h, debe tener el triangulo sobre el eje OY para que la circunferencia unidad lo divida en dos partes de igual area.

(Sol.: h =

10.2.

2
2

Integrales triples

Las integrales triples no tienen ya mayor dificultad salvo la a


nadida por
una dimensi
on m
as. Los rectangulos anteriores se substituyen ahora por
rect
angulos tridimensionales, o sea, cajas R = [a, b] [c, d] [p, q]. Una
partici
on P de R es ahora P = P1 P2 P3 siendo P1 , P2 y P3 particiones
de los intervalos [a, b], [c, d] y [p, q], con respectivamente.
Si P1 tiene n + 1 puntos, P1 tiene m + 1 puntos y P3 tiene r + 1 puntos, la
partici
on P = P1 P2 P3 divide al rectangulo R en n m r subrectangulos
Rijk = [xi1 , xi ][yj1 , yj ][zk1 , zk ]; cada uno de los cuales tiene volumen
v(Rijk = (xi xi1 )(yj yj1 )(zk zk1 )
Procediendo de forma similar al caso de dos variables, dada una funcion real
acotada f definida en R, se define la suma de Riemann correspondiente a la
partici
on de P de R como
S(f, P ) =

n X
m X
r
X

f (xijk )v(Rijk )

i=1 j=1 k=1

con xijk Rijk .


Definici
on 10.9 Dada la funcion acotada f : R R se define la integral
triple como el lmite de las sumas de Riemann cuando kP k tiende a 0:
ZZZ
f (x, y, z)dxdydz = lm
R

kP k0

224

n
X
j=1

f (xjkl )v(Rjkl )

Miguel Angel Cifredo Campos


macifredo@gmail.com

siempre que dicho lmite exista y sea independiente de la eleccion del punto
xijk .
Como antes, toda funci
on continua es integrable y toda funcion acotada cuyas discontinuidades tienen medida nula es integrable. Asimismo se cumplen
las propiedades del Teorema 10.2.
Finalmente, el c
alculo de una integral triple puede reducirse al calculo de
tres integrales iteradas:
Teorema 10.10 Sea f una funcion integrable sobre un rectangulo R =
[a, b] [c, d] [p, q]. Si existe cualquier integral iterada, es igual a la integral
triple
 
ZZZ
Z b Z d Z q
f (x, y, z)dxdydz =
f (x, y, z)dz dy dx
R

c
d Z

p
q Z


f (x, y, z)dx

p
q

dz dy

Z b Z


f (x, y, z)dy


dx dz

= ...
y as sucesivamente hasta completar todas las ordenaciones posibles.
Ejemplo 10.8 Calcular la integral sobre R = [1, 1] [0, 2] [1, 2] de la
funci
on f (x, y, z) = xyz
Soluci
on: Se tiene que
ZZZ
Z 1 Z
xyz dxdydz =
1

=
1

=
1

2 Z 2


xyz dz


dy
!

dx

z=2

Z 1 Z 2
3
z2
dy dx =
xy dy dx
xy
2 z=1
1
0 2
0
 y=2
Z 1
3 y2
x
dx =
3x dx = 0
2
2 y=0
1
Z

225

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 10.9 Averigua c


omo plantear la integral anterior para obtener el
resultado m
as r
apidamente.

10.2.1.

Integraci
on sobre recintos acotados

Al igual que suceda en el caso de integrales dobles, la integral triple sobre


recintos acotados se hace extendiendo la integral a un rectangulo y utilizando
la funci
on caracterstica:
ZZZ
ZZZ
f (x, y, z) dxdydz :=
f (x, y, z) (x, y, z) dxdydz

siendo R un rect
angulo que contiene a .
Para el c
alculo de la integral, el procedimiento ahora consiste en expresar el
recinto en alguna de las formas siguientes:
= {(x, y, z) : (x, y) D, 1 (x, y) z 2 (x, y)}
siendo D = proyXOY () y 1 , 2 funciones continuas.
= {(x, y, z) : (x, z) D, 1 (x, z) y 2 (x, z)}
siendo D = proyXOZ () y 1 , 2 funciones continuas.
= {(x, y, z) : (y, z) D, 1 (y, z) x 2 (y, z)}
siendo D = proyY OZ () y 1 , 2 funciones continuas.
A continuaci
on el recinto D R2 se expresa como de tipo I o de tipo II,
dando lugar a la integral iterada correspondiente.
Por ejemplo, en el primer caso, si D es de tipo II en el plano XOY , se tendra:

g1 (y) x g2 (y)

1 (x, y) z 2 (x, y)
y, por tanto,
ZZZ

g2 (y)

f (x, y, z) dxdydz =

Z
2 (x, y)f (x, y, z) dz

g1 (y)

226

1 (x,y)

!
dx dy

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 10.9 Se desea calcular el volumen del tetraedro limitado por los
planos coordenados y el plano x + y + z = 1. Para ello sera necesario calcular
RRR
mites de integracion
1 dxdydz, siendo el tetraedro. Para calcular los l
se proyecta el recinto sobre el plano XOY obteniendo el triangulo se
nalado
en la figura Fig. 10.14. Las variables (x, y) varan en dicho triangulo, mientras
que z recorre el recinto desde la superficie inferior z = 0 hasta la superficie
superior z = 1 x y.

Figura 10.14: Volumen de un tetraedro

Por todo ello resulta:

0x1

0y 1x

0z 1xy

227

Miguel Angel Cifredo Campos


macifredo@gmail.com

y, entonces
ZZZ

1 Z 1x Z 1xy

1 dxdydz =


1 dz


dy dx

1 Z 1x


(1 x y) dy dx

=
0

y=1x
y2
dx
=
y xy
2 y=0
0

Z 1
(1 x)2
=
1 x x(1 x)
dx
2
0

x=1
x3 (1 x)3
1 1
1
2
= xx +
+
= =
3
6
3 6
6
x=0
Z

1

Ejercicio 10.10 Calcular el volumen del cuerpo limitado por z 2 = xy, x +


y = 1, x + y = 2.
(Sol.:

10.3.

7
12

u3 )

Cambio de variable

Una transformaci
on en el plano es una aplicacion T : R2 R2 con
T (u, v) = (x, y). Se llama determinante jacobiano de T a


x x
(x, y) u v
= y y
(u, v) u
v
Teorema 10.11 (Dos variables) Sean D y D dos regiones elementales
del plano y sea T : D D una biyeccion de clase C 1 , cuyo determinante
jacobiano no se anula en D . Entonces, para cualquier funcion integrable
f : D R se tiene


ZZ
ZZ
(x, y)
dudv
f (x, y) dxdy =
(f T )(u, v)
(u, v)
D
D

228

Miguel Angel Cifredo Campos


macifredo@gmail.com

Cambio a coordenadas polares


Es el dado por la transformacion T : D = [0, 1] [0, 2[ R2 donde
(x, y) = T (r, ) = (r cos , r sin )
Puede probarse f
acilmente que T cumple las condiciones del teorema de
cambio de variable y, adem
as, su jacobiano es



x x
(x, y) r cos r sin
= y y =
=r
sin r cos
(r, )
r
RR
Supongamos que queremos calcular una integral doble R f (x, y) dA cuando
R es un dominio como en la figura Fig. 10.15. La descripcion de un dominio
de este tipo en coordenadas rectangulares parece bastante complicada, sin
embargo describir R en coordenadas polares nos simplificara bastante las
cosas.
2
1.5
1
0.5
-2

-1

Figura 10.15: Un anillo circular

En general, las coordenadas polares son adecuadas cuando el recinto de


integraci
on es un crculo de centro el origen (o un sector circular) o, al menos,
un crculo tangente al origen. En los siguientes ejemplos vamos a aplicar
dicho cambio y hay que tener mucho cuidado de no olvidar multiplicar por
r al hacer el cambio a coordenadas polares en la integral.
RR
2
Ejemplo 10.10 Calculemos la integral doble
R (3x + 4y ) dA donde R es
la regi
on circular que se encuentra en el semiplano superior y esta limitada
por las circunferencias x2 + y 2 = 1 y x2 + y 2 = 4, como puede verse en la
siguiente figura:

229

Miguel Angel Cifredo Campos


macifredo@gmail.com

x2 + y 2 = 4
2
1.5
1

x2 + y 2 = 1

0.5
-2

-1

Figura 10.16: Integracion en coordenadas polares

Soluci
on: La regi
on R se describe como:
R = {(r, )/1 r 2 ; 0 }
Por tanto:
Z Z

(3x + 4y ) dA =
R

Z0
=
Z0
=

(3r cos() + 4(r sen())2 ) r drd

 3
r=2
r cos() + r4 sen2 () r=1 d
7 cos() + 15 sen2 () d

15
(1 cos(2)) d
2
0

15 15
15
= 7 sen() +

sen(2) =
2
4
2
0

7 cos() +

Ejemplo 10.11 Veamos como calcular el volumen del solido que esta limitado por los planos z = 13 , z = 0 y el cilindro x2 + y 2 = y.
Soluci
on:
Este s
olido est
a encima del disco que tiene como crculo frontera a
cunferencia

1 1
2
2
2
2
2
2
2
x +y = y = x +y y = 0 = x +y y = 0 = x + y
4 4
230

la cir1
2

2
=

1
4

Miguel Angel Cifredo Campos


macifredo@gmail.com

es decir, tiene como frontera la circunferencia de centro el punto (0, 1/2) y


radio 21 (ver figura Fig. 10.17).
Si consideramos coordenadas polares, se tiene que este circulo se expresa
como:
x2 +y 2 = y = r2 cos2 ()+r2 sen2 () = r sen() = r2 = r sen() = r = sen()
Por lo tanto, el disco sobre el que se encuentra el solido esta dado por:
D = {(r, )/0 r sen() ; 0 }
1

r = sen()
0.8

1
0.75
0.5
0.25

0.6

0
0.4

0.4

0.2
0.2
0
-0.5

-0.25

0.25

-0.4

0.5

(a) S
olido

-0.2

0.2

0.4

(b) Proyecci
on en el plano XOY

Figura 10.17: Volumen de un cilindro circular

Aplicando la f
ormula de integracion en coordenadas polares:
Z Z
Vol =
D

1
dA =
3

Z
=
0

Z 2 sen()
Z
1
r
sen2 ()
rdrd =
d =
d
3
6 0
6
0
0
0

1 cos(2)

sen(2)

d =

=
12
12
24
12
0

sen()

Ejemplo 10.12 Calcular el area encerrada por las hojas de una rosa de
cuatro petalos, con ecuaci
on es r = cos(2).
231

Miguel Angel Cifredo Campos


macifredo@gmail.com

RR
Soluci
on: Recordar que
area(D) = D 1 dxdy. Como se observa en la
gr
afica, Fig. 10.18, para calcular el area encerrada por las hojas de una rosa
de cuatro petalos, nos bastara con calcular el area encerrada en la mitad de
un s
olo petalo; es decir, el conjunto sobre el que vamos a integrar es
D = {(r, )/0 r cos(2) ; 0

}
4

/4
0.5

-1

-0.5

0.5

-0.5

/4
-1

Figura 10.18: Una rosa de cuatro petalos

Luego, el
area que buscamos es:

Area
=

ZZ
1 dA = 8

Z
=4

r dr d = 8
Z

cos (2) = 4

=4

sen(4)
+
2
8

cos(2)

cos(4) + 1
2


4

d =
0

r2
2

cos(2)
d
0

Z
Ejemplo 10.13 Calcula la integral

xy dxdy donde S es el recinto


S

S = {(x, y) R2 / x2 + y 2 1 }
Soluci
on: La ecuaci
on x2 + y 2 = 1 representa una circuferencia centrada
en (0, 0) de radio 1. As, la inequacion x2 + y 2 < 1 corresponde a los puntos

232

Miguel Angel Cifredo Campos


macifredo@gmail.com

interiores a la circunferencia y, por tanto, el recinto S es el disco unidad representado en la Figura 10.19. Esta integral se resolvera utilizando el cambio
a coordenadas polares. As, el recinto S se transforma en
D = {(r, ) : 0 r 1; 0 2}

Figura 10.19: Disco unidad

ZZ

ZZ
xy dxdy

(r cos )(r sin )r drd =



3
r cos sin dr d =

D
2 Z 1

Z
=
0

0
2

Z
=
0

=
=

1
4

r4
cos sin
4


r=1

cos sin =
0


=2
1 sin2
=0
4
2
=0
233

d =
r=0

Miguel Angel Cifredo Campos


macifredo@gmail.com

RR
Ejercicio 10.11 Calcula A x2 dxdy siendo A el recinto comprendido entre
el rect
angulo R = [2, 2] [2, 2] y la circunferencia C x2 + y 2 = 1.
(Sol.:

64
3

RR
2
2
Ejercicio 10.12 Calcula A ex +y dxdy siendo A la parte del crculo unidad, x2 + y 2 1, situada en el semiplano positivo de las x, x 0.
(Sol.:

2 (e 1)

En ocasiones, resulta conveniente dividir el recinto en partes y calcular la


integral sobre cada parte por separado
Z
x2 ydxdy donde
Ejemplo 10.14 Calcula la integral
T

T = {(x, y) R2 / x2 + (y + 1)2 1, |x| |y|}


Soluci
on: Para resolver la integral se utilizaran las integrales sobre C y S,
siendo C crculo y S la parte interior del crculo que no esta en T . De esta
forma,
ZZ

x2 y dxdy =

ZZ

x2 y dxdy

ZZ
S

x2 y dxdy

Sobre el crculo se emplea el cambio a coordenadas polares:


x2 + (y + 1)2 = 1
x = r cos
y = r sin

x2 + y 2 + 2y = 0
r2 + 2r sin = 0
r = 2 sin

por lo que los lmites de integracion son



2
T
0 r 2 sin
234

Miguel Angel Cifredo Campos


macifredo@gmail.com

y, entonces
Z
ZZ
2
x y dxdy =

Z 2

Z

2 sin

Z 2

r cos r sin r dr d
Z 2 sin

cos2 sin
r4 dr d
0

cos2 sin

0
r=2 sin
5
r

r=0

25
cos2 sin6 d
5

y, aplicando las f
ormulas de reduccion,
!

2
Z
cos sin7
1 2 6
25
sin d
+
=
5
8
8

Z
4 2 6
=
sin d
5
y, de nuevo, aplicando ahora la formula de reduccion
!
 5
2
ZZ
Z 2
4
5
sin

cos

x2 y dxdy =
sin4 d
+
5
6
6
C

Z 2
2
sin4 d
=
3
!
 3
2
Z
2
sin cos
3 2 2
=
sin d
+
3
4
4

Z
1 2 2
sin d
=
2
e, integrando,


2
1 1

=
( sin cos )
=
2 2
4

Para la integral sobre S se tendra en cuenta que las rectas y = x e y = x


7
corresponden a las ecuaciones polares = 5
4 y = 4 , respectivamente.
235

Miguel Angel Cifredo Campos


macifredo@gmail.com

Por tanto,

S

5
4

7
4
0 r 2 sin

y, por tanto,
ZZ

x2 y dxdy =

7
4

5
4
7
4

5
4

2 sin

Z

r2 cos2 r sin r dr


d

25
cos2 sin6 d
5

y, aplicando la f
ormula de reduccion,
!
 7
Z 7
4
1
cos sin7 4
6
+
sin d
8
8 5
5
4
4
Z 7
4
4
1

=
sin6 d
10 5 5

25
x y dxdy =
5
S

ZZ

y, aplicando ahora la f
ormula de reduccion
ZZ

4
1

x y dxdy =
10 5
S
2

1
1

10 30

1
1

10 30

1
1

10 30

!
 7

Z 7
4
sin5 cos 4
5
4

sin d
+
6
6 5
5
4
4
Z 7
4
2

sin4 d
3 5
4
!

 7
Z 7
4
sin3 cos 4
2
3

sin2 d
+
3
4
4 5
5
4
4
Z 7
4
1
1

sin2 d
12 2 5
4

e, integrando,

 7

4
1
1
1
1 1
=

( sin cos )
10 30 12 2 2
5
4

1
1
1
8

=
=
10 30 12 8 4
30 8
236

Miguel Angel Cifredo Campos


macifredo@gmail.com

Y, finalmente,
ZZ
ZZ
ZZ

8
4 3
x2 y dxdy = =
x2 y dxdy
x2 y dxdy =
4
30
8
15
8
S
C
T

Z
Ejercicio 10.13 Calcula la integral

ex dxdy donde

T = {(x, y) R2 / 2 x 2, 1 y 2, y x + 2, y x 2}
(Sol.: 3 e2 e 1 )
La extensi
on del resultado de cambio de variable a funciones de tres variables
es inmediato.
Teorema 10.12 (Tres variables) Sean D y D dos regiones elementales
del espacio tridimensional y sea T : D D una biyeccion de clase C 1 ,
cuyo determinante jacobiano no se anula en D . Entonces, para cualquier
funci
on integrable f : D R se tiene


ZZZ
ZZZ
(x, y, z)

dudvdw
f (x, y, z) dxdydz =
(f T )(u, v, w)

(u,
v,
w)

D
D
Cambio a coordenadas cilndricas
En la figura Fig. 10.20 puede apreciarse el significado de la coordenadas
cilndricas.
OZ

z
O

OY

OX

Figura 10.20: Coordenadas cilndricas

237

Miguel Angel Cifredo Campos


macifredo@gmail.com

Las ecuaciones del cambio de coordenadas y los nuevos lmites de integracion


vienen dados por

x = r cos
r0

[0, 2]

y = r sin
z=z

zR

siendo el determinante jacobiano:




cos r sin 0


(x, y, z)
= sin r cos 0 = r
(r, , z)
0
0
1
Ejemplo 10.15 (Coordenadas cilndricas) Un sop
lido esta limitado,
en el primer octante, por la grafica del semicono zRRR
= x2 + y 2 y los planos
2
2
z = 1, x = 0, y = 0. Se desea calcular la integral
(x + y ) dxdydz.
Soluci
on: Para ello se emplea el cambio a coordenadas cilndricas. Como se
ve en la figura Fig. 10.21, esta claro que z vara de la superficie del semicono
(de ecuaci
on z = r) al plano z = 1.

0.25 0
0.750.5

z=1

0.75
z2 = x 2 + y 2

0.5
5

0.25
5

0
0

0.25

0.5
0.75
1

Figura 10.21: Integracion sobre un semicono


La proyecci
on en el plano z = 0 del solido produce el sector circular x2 +y 2
1, x, y 0. Por tanto, la coordenada r vara de 0 a 1 y la coordenada de

238

Miguel Angel Cifredo Campos


macifredo@gmail.com

0a

2.

En definitiva,

2
0 r 1

rz1

y, entonces
ZZZ

(x + y ) dxdydz =

Z

Z
=

r r dz
Z


dr

1 Z 1

1
3


r (1 r) dr


d

r=1
r4 r5
=

d
4
5 r=0
0

Z
2

1 1
d =
=

4 5
40
0
Z

Ejercicio 10.14 Calcular la integral triple de la funcion f (x, y, z) = xyz


sobre la regi
on que se encuentra en el primer octante (x > 0, y > 0, z > 0)
limitada por los paraboloides z = x2 + y 2 , z = 2x2 + 2y 2 , por los cilindros
xy = 1, xy = 4, y por los planos y = x, y = 5x.

156
ln
5
+
(Sol.: 765
8
25 )
Cambio a coordenadas esf
ericas
En la figura siguiente, Fig. 10.22, puede apreciarse el significado geometrico
de las coordenadas esfericas.

239

Miguel Angel Cifredo Campos


macifredo@gmail.com

OZ

u
z

O
OY
x

y
OX

Figura 10.22: Coordenadas esfericas

Las ecuaciones del cambio de coordenadas vienen dadas por

x = r cos sin
r0

y = r sin sin
[0, 2]

z = r cos
[0, ]
siendo el determinante jacobiano:

cos sin r sin sin r cos cos
(x, y, z)
= sin sin r cos sin r sin sin
(r, , )
cos
0
r sin




= r2 sin

Ejemplo 10.16 (Coordenadas esf


ericas) Se desea calcular el volumen
de una esfera de radio R. La integral correspondiente es
ZZZ
v(S) =
1 dxdydz
S

Soluci
on: Para ello, se introduce el cambio a coordenadas esfericas: al
aplicar el cambio de coordenadas a la ecuacion de la superficie esferica,
x2 + y 2 + z 2 = 1, resulta r = R. Como no depende de ni , estas dos
variables no tienen restricciones y, por tanto,

0 2

0rR

0
240

Miguel Angel Cifredo Campos


macifredo@gmail.com

y, entonces
Z
ZZZ
1 dxdydz =

R Z

Z
0

Z

r
0

0
2

Z
=2
0

 
r sin d dr d
2

r3
3

=
[ cos ]=0

r=R
r=0


dr

2R3
d =
3

Z

0
2

d =
0

r dr

d = 2
Z


d

4R3
u.v.
3

RRR
Ejercicio 10.15 Calcular
(x + 2z) dx dy dz, donde = {(x, y, z) :
2
2
2
1 x + y + z 9, z 0}.
(Sol.: 40 )
En ocasiones resulta imposible dibujar el recinto de integracion. En el caso
en que la superficie que encierra el solido este formada por una u
nica ecuaci
on a
un resulta posible, mediante un cambio adecuado de coordenadas,
calcular los lmites de integracion, lo cual resultara imposible de realizar en
coordenadas cartesianas.
Ejemplo 10.17 Calcula el volumen del solido encerrado por la superficie
de ecuaci
on (x2 + y 2 + z 2 )2 = z(x2 + y 2 ).
Soluci
on: Se aplica el cambio a coordenadas esfericas
(x2 + y 2 + z 2 )2 = z(x2 + y 2 )
r4 = r cos (r2 cos2 sin2 + r2 sin2 sin2 )
r4 = r3 cos sin2 (cos2 + sin2 )
r4 = r3 cos sin2
r = cos sin2
Como debe ser cos 0, entonces [0, 2 ]. La ecuacion anterior no
depende de , luego [0, 2], por lo que los lmites de integracion son

0 2
0 2

0 r cos sin2
241

Miguel Angel Cifredo Campos


macifredo@gmail.com

con lo cual
2

ZZZ

1 dV =

v() =

=
0

1
=
3
Ahora
Z
0

0
2

r3
sin
3


2 sin8
10
8


=
=

r=cos sin2

!
d

r=0

cos3 sin7 d

cos2 sin8
cos sin d =
10
3

r2 sin dr

cos sin2

= 2
=0

2
+
10

cos sin7 d

= 2
=0

1
40

y volviendo a la integral de volumen:


1
v() = . . . =
3

!
3

cos sin d

1
d =
3

1
d =
40
60

Ejercicio 10.16
2 Calcula el volumen encerrado por la superficie de ecuacion
x2 + y 2 + z 2 = x2 + y 2 z 2
(Sol.:

10.4.

Problemas adicionales

Ejercicio 10.17 Calcula

RR
S

(x2 + y 2 2y)dxdy siendo

S = {(x, y) R2 / x2 + y 2 1,
242

y |x| }

2
4 2

u3 )

Miguel Angel Cifredo Campos


macifredo@gmail.com

(Sol.:

2 2
3

ZZ
x cos(x + y)dxdy siendo S el triangulo de

Ejercicio 10.18 Calcula


S

vertices (0, 0), (, 0) y (, ).


(Sol.: 3
2 )
Ejercicio 10.19 Calcula la integral de la funcion f (x, y) = x2 y 2 sobre la
regi
on R del primer cuadrante limitada por las hiperbolas equilateras xy = 1,
xy = 2 y las rectas y = x2 , y = 3x.
7
6

(Sol.:

ln 6 )

Ejercicio 10.20 Calcula el area de la region del primer cuadrante limitada


por las curvas xy = 2, xy = 4, y = x, y = 3x.
(Sol.: ln 3 u2 )
Ejercicio
2 10.212 Calcula
el area encerrada por la lemniscata de Bernoulli
2
2
2
2
x +y
= 2a x y .
(Sol.: 2a2 u2 )
Ejercicio 10.22 Calcula el volumen
del cuerpo limitado por el paraboloide
hiperb
olico z = xy, el cilindro y = 2x y los planos x + y = 4, y = 0 y
z = 0.
(Sol.: 6 u3 )
Ejercicio
10.23 Calcula el volumen
p del cuerpo limitado por la semiesfera
p
z = 2 x2 y 2 y el cono z = x2 + y 2 .


(Sol.: 4
2 1 u3 )
3
Ejercicio 10.24 Calcula el volumen del cuerpo limitado por la superficie
z 2 = xy y los planos x + y = 1 y x + y = 2.
(Sol.:

7
12

u3 )

RRR
2
2
2
Ejercicio 10.25 Calcula
on
(x + y + z ) dxdydz, donde es la regi
2
2
limitada por el cilindro x + y = 16, 3 z 4.
(Sol.:

976
3

RRR

Ejercicio 10.26 Calcula


on defi (x + 2z) dxdydz, donde es la regi
nida por {(x, y, z) : 1 x2 + y 2 + z 2 9, z 0}.
(Sol.: 40 )

243

Miguel Angel Cifredo Campos


macifredo@gmail.com

Tabla de primitivas
1.

c dx = cx

2.

xr dx =

3.

R 1
dx = ln x
x

4.

5.

6.

xr+1
, r 6= 1
r+1

1
dx = cot x
sin2 x

12.

1
dx = arctan x
1 + x2

13.

1
dx = arcsin x
1 x2
1
dx = arc cos x
1 x2

emx dx =

1 mx
e
m

14.

amx dx =

amx
m ln a

15.

x
1
1
dx
=
arctan
a2 + x2
a
a

16.

x
1
dx = arcsin
a
a2 x2

17.

x
1
dx = arc cos
a
a2 x2

18.

sin(x) dx = cos(x)

7.

8.

tan(x) dx = ln(cos x)

9.

cot(x) dx = ln(sin x)

10.

11.

cos(x) dx = sin(x)

1
dx = tan x
cos2 x
244




1
2
2
dx = ln x + x a
x2 a2

Miguel Angel Cifredo Campos


macifredo@gmail.com

19.

sin2 (ax) dx =

1
(x sin(mx) cos(mx))
2a

20.

cos2 (ax) dx =

1
(x + sin(mx) cos(mx))
2a

21.

sin(ax) cos(bx) dx =

(a b) cos ((a + b) x) + (a + b) cos ((b a) x)


2b2 2a2

22.

cos(ax) cos(bx) dx =

(b a) sin ((b + a) x) + (b + a) sin ((b a) x)


2b2 2a2

23.

sin(ax) sin(bx) dx =

24.

sinn (ax) dx =

25.

cosn (ax) dx =

26.

sinn (ax) cosm (ax) dx =

27.

sinn (ax) cosm (ax) dx =

28.

xn sin(ax) dx =

29.

xn cos(ax) dx =

30.

eax sin(bx) dx =

(b a) sin ((a + b) x) + (a + b) sin ((b a) x)


2b2 2a2

sinn1 (ax) cos(ax) n 1 R


sinn2 (ax) dx
+
na
n

cosn1 (ax) sin(ax) n 1 R


cosn2 (ax) dx
+
na
n
sinn1 (ax) cosm+1 (ax) n 1 R
sinn2 (ax) cosm (ax) dx
+
(m + n)a
m+n

sinn+1 (ax) cosm1 (ax) m 1 R


sinn (ax) cosm2 (ax) dx
+
(m + n)a
m+n

n R n1
xn
x
cos(ax) dx
cos(ax) +
a
a

n R n1
xn
x
sin(ax) dx
sin(ax)
a
a

eax (a sin (bx) b cos (bx))


b2 + a2
245

Miguel Angel Cifredo Campos


macifredo@gmail.com

31.

eax cos(bx) dx =

32.

xn eax dx =

eax (b sin (bx) + a cos (bx))


b2 + a2

xn eax n R n1 ax
x
e dx

a
a


dx
=
ax2 + bx + c

2 arctan 2ax+b
4acb2

4ac b2

33.

34.

35.

36.

37.

38.

1
dx

= ln
2
2
a
x x +a

39.

a
dx
1

= arc cos
a
x
x x2 a2

40.

41.

x2 a2
dx

=
a2 x
x2 x2 a2

x2 a2 dx =


(cuando b2 4ac < 0)

x 2
a2 
ln x + x2 a2
x a2
2
2

x
a4 
x2 x2 a2 dx = (2x2 a2 ) x2 a2
ln x + x2 a2
8
8

x2 + a2
dx = x2 + a2 a ln
x

a+

x2 + a2
x

x

x2 a2
dx = x2 a2 a arg sec
x
a
a+

x2 + a2
x

x 2
a2 
x2
dx =
ln x + x2 a2
x a2
2
2
x2 a2

246

Miguel Angel Cifredo Campos


macifredo@gmail.com




x2 a2
x2 a2
2 a2
dx
=

+
ln
x
+
x
x2
x

42.

43.

44.

45.

46.

1
dx

= ln
2
2
a
x a x

47.

a2 x2
dx

=
a2 x
x2 a2 x2

48.

49.

a2 x2 dx =

x
x 2
a2
arcsin
a x2 +
2
2
a

x
a4
x
x2 a2 x2 dx = (a2 2x2 ) a2 x2 +
arcsin
8
8
a

a2 x2
dx = a2 x2 a ln
x

a+

a+

a2 x2
x

a2 x2
x

x
a2 x2
a2 x2
dx
=

a arcsin
x2
x
a
x2
a2
x x 2
dx =
arcsin
a x2
2
a 2
a2 x2

247

Miguel Angel Cifredo Campos


macifredo@gmail.com

Bibliografa
[1] Bombal, F. y otros (1982): Problemas de an
alisis matem
atico, Madrid,
AC.
[2] Bradley, G.L. y , K.J. Smith (1998): C
alculo, Madrid, Prentice-Hall.
[3] Buck, R. C. (1978): Advanced calculus, New York, McGraw-Hill.
[4] de Burgos, J. (1984): C
alculo infinitesimal de varias variables, Madrid, McGraw-Hill.

[5] Carmona Alvarez,


J. y otros (2008): Ejercicios de c
alculo diferencial
de varias variables, Sevilla, Universidad de Sevilla.
[6] Courant, R. y F. John (1988): Introducci
on al c
alculo y al an
alisis
matem
atico, Limusa.
[7] Edwards, C. H. y D.E. Penney (1996): Calculo con geometra
analtica, Mexico, Prentice Hall.
as, J. R. (2003): Introducci
[8] Franco Bran
on al C
alculo. Problemas y
ejercicios resueltos, Madrid , Prentice Hall.
pez, A. y otros (1994): C
[9] Garca Lo
alculo I, Madrid, CLAGSA.
pez, A. y otros (1996): C
[10] Garca Lo
alculo II, Madrid, CLAGSA.
[11] Garca Raffi, L.M. y otros (2001): Problemas de c
alculo , Valencia,
Universidad Politecnica de Valencia.
[12] Granero, F. (1994): C
alculo, Madrid, McGraw-Hill.
[13] Larson, R. E. y otros (1995): C
alculo y geometra analtica, Madrid,
McGraw-Hill.
248

Miguel Angel Cifredo Campos


macifredo@gmail.com

[14] Marsden, J. E. y A.J. Tromba (1991): C


alculo vectorial, AddisonWesley Iberoamericana.
[15] Marsden, J. E. y H.J. Hoffman (1993): Elementary classical analysis, New York, Freeman.
[16] del Olmo, V. y otros (1994): An
alisis matem
atico I, Valencia, Universidad Politecnica de Valencia.
[17] del Olmo, V. y otros (1997): An
alisis matem
atico I: ejercicios resueltos, Valencia, Universidad Politecnica de Valencia.
[18] Pita, C. (1995): C
alculo vectorial, Mexico, Prentice-Hall.
[19] Purcell, E. J. y otros (2001): C
alculo, Mexico, Pearson.
[20] Rodrguez, G. (2003): Diferenciaci
on de funciones de varias variables
reales, Santiago de Compostela, Universidade de Santiago de Compostela .
[21] Ruiz Virumbrales, L.M. y J.L. Romero Martn (1992): Ejercicios
de c
alculo infinitesimal, Madrid, UNED.
[22] Salas, S. L. y E. Hille (1994): Calculus, Barcelona, Reverte.
[23] Sheeley, R.T. (1978): C
alculo de una y varias variables, Mexico, Trillas.
[24] Simmons, G. F. (2002): C
alculo con geometra analtica, Madrid,
McGraw-Hill.
[25] Stewart, J. (2002): C
alculo multivariable, Mexico, Thomson.
[26] Strang, G. (1991): Calculus, Wellesley, Wellesley-Cambridge Press.
(Disponible en http://ocw.mit.edu/ans7870/resources/Strang/strangtext.htm)
a, I. y otros (2007): Problemas resueltos de c
[27] Un
alculo en varias variables, Madrid, Thomson.
[28] Zill, D.G: (1989): C
alculo con geometra analtica, Mexico, Iberoamericana.

249

Miguel Angel Cifredo Campos


macifredo@gmail.com

INTERPOLACIN:
INTERPOLACIN:
Error
Error en
en la
la interpolacin
interpolacin polinmica
polinmica
de
de Lagrange
Lagrange

OBJETIVOS
OBJETIVOS

1. Obtener y aplicar la expresin que proporciona el error de


interpolacin en el proceso de interpolacin polnmica de
Lagrange.
2. Obtener cotas del error de interpolacin de Lagrange

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema
Teorema de
de expresin
expresin del
del error
error
NOTACIN:
Soporte: {x0, x1, ..., xn} formado por (n+1) puntos
distintos de (a, b)
Funcin que se interpola: f(x)
Valores de la funcin en el soporte: {f0, f1, ..., fn}
Polinomio interpolador de Lagrange: pn(x)
TEOREMA
Si f C(n+1) ((a,b)) entonces :
x* (a,b) *=(x*) / E(x*) =f(x*)-pn (x*)=

f (n+1 ( *) n
=
(x*-xi )
(n+1)! i=0

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema
Teorema de
de expresin
expresin del
del error:
error: Demostracin
Demostracin

a) Si x* {x0, x1, ..., xn} el teorema es evidente.


b) Si x* {x0, x1, ..., xn}:
f(x*) pn (x*) n
Sea:
(x xi )
F : x f(x ) pn (x ) n
( x * x i ) i= 0

Se verifica que:
i= 0
(i = 0, ..., n)
F(xi) = 0
F(x*) = 0

F C(n+1) ((a,b))

F(x) tiene al menos (n+2) races


distintas en (a, b)

RECORDATORIO: Teorema de Rolle


Si g(x) es una funcin de clase C1(a, b)
y g(a) = g(b), entonces existe (a, b) tal
que g() = 0

Miguel Angel Cifredo Campos


macifredo@gmail.com

Teorema
Teorema de
de expresin
expresin del
del error:
error: Demostracin
Demostracin

Miguel Angel Cifredo Campos


macifredo@gmail.com

a) Si x* {x0, x1, ..., xn} el teorema es evidente.


b) Si x* {x0, x1, ..., xn}:
f(x*) pn (x*) n
Sea:
F : x f(x ) pn (x ) n
(x xi )
( x * x i ) i= 0

Se verifica que:
i= 0
F(xi) = 0
(i = 0, ..., n)
F(x) tiene al menos (n+2) races
distintas en (a, b)

F(x*) = 0
F C(n+1) ((a,b))

(Aplicando n veces el teorema de Rolle)

F(n+1(x) tiene al menos 1 raz (a,b)

E(x*)
0=F

(n+ 1

( *) = f

(n+ 1

( *)

f(x*) pn (x*)
n

(x * x )
i= 0

(n + 1)!

f (n+1( *) n
E(x*) =
(x * xi )
(n + 1)! i=0
c.q.d.

Algunas
Algunas acotaciones
acotaciones del
del error
error

f (n+1 ( *) n
(x*-xi )
x* (a,b) *=(x*) / E(x*) =
(n+1)! i=0
M = sup f (n+1(x )
x(a,b)

n
M
(x-xi )
x (a,b) : E(x)
(n+1)! i=0
n
M
x (a,b) : E(x)
sup (x-xi )
(n+1)! x(a,b) i=0

h = | b a|

M
x (a,b) : E(x)
h(n+1) O(hn+1 )
(n+1)!

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo
Ejemplo 1
1 (1/11)
(1/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

EJEMPLO 1 de error de interpolacin de Lagrange


( 4 x + 2)
definida en [0.2, 1]
Sea la funcin f : x 2.x.e

a) Calcular y representar grficamente los polinomios de


base de Lagrange asociados al soporte {0.2, 1.0}
b) Hallar el polinomio p(x) que interpola f(x) en el sentido
de Lagrange sobre el soporte {0.2, 1}
c) Obtener la expresin del error de interpolacin
d) Hallar una cota de error vlida en todo (0.2, 1)

Ejemplo
Ejemplo 1
1 (2/11)
(2/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Solucin del apartado a): Polinomios de base de Lagrange


x x1 1 x
L0 (x) =
=
x0 x1
0.8

x0

x1

x x0 x 0.2
L1 (x) =
=
x1 x0
0.8

x0

(NOTA: Se puede comprobar que L0(x) + L1(x) = 1)

x1

Ejemplo 1 (3/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Solucin del apartado b) Polinomio interpolador de Lagrange


p1 (x) = f ( x0 ) .L0 (x ) + f ( x1 ) .L1 ( x ) =

= ( 0.4 ) .e
f(x)
p1(x)

x0

1 x
6 x 0.2
+ 2.e .
.
0.8
0.8

2.8

p1 (x)  0.02420815088 x +0.02916565523

x1

Ejemplo
Ejemplo 1
1 (4/11)
(4/11)

Solucin del apartado c): Expresin del error

Miguel Angel Cifredo Campos


macifredo@gmail.com

f (n + 1) ( x ) n
Aplicamos la expresin: (x) = f(x ) p (x ) =
x xj

(n + 1) ! j = 0

Como el nmero de puntos es n+1 = 2 se deriva DOS veces f(x)

f( x ) = (2 8x )e

( 4x + 2 )

f( x ) = ( 16 + 32x)e ( 4x + 2)

f "( x ) n
x xj
(x) = f(x) p(x) =

(n + 1) ! j = 0

( 16 + 32. x ).e ( 4 x + 2)
(x) = f(x) p(x) =
( x 0.2 ) ( x 1)
2!
( 16 + 32. x ).e ( 4 x + 2)
2
(x) = f( x ) p(x) =
x
1.2 x + 0.2 )
(
2

Ejemplo
Ejemplo 1
1 (5/11)
(5/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Solucin del apartado d): Cota de error


| (x ) |=| f(x) p(x) |

max | f( x ) |

x [ 0.2,1]

max

3!
Hallemos, en primer lugar m a x | f ( x ) |
Llamamos: g ( x ) = f( x )

x[ 0.2,1]

(x x )
j= 0

Dado que la funcin g(x) es continua en [0.2, 1], su mayor


valor absoluto en [0, 2] ser el mayor de los siguientes:
Valor de |g(x)| en las abscisas de [0.2, 1] para las
que g(x) = 0.
Valor de |g(0.2)|.
Valor de |g(1)|.

Ejemplo
Ejemplo 1
1 (6/11)
(6/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Valor de |g(x)| en las abscisas para las que g(x) = 0.


g(x) = ( 16 + 32.x ).e ( 4 x + 2 ) g '(x ) = (96 128.x ).e ( 4 x + 2)
96
( 4 x * +2)
= 0.75
g '( x *) = 0 (96 128.x *).e
= 0 x* =
128
(1)
de donde: g( 0.75 )  0.0539
Valor de g(x) en los extremos del intervalo [ 0.2, 1 ].
(2)
g( 0.2)  0.5838 = 0.5838
g(1)  0.0397 = 0.0397

(3)

El mayor valor absoluto de entre (1), (2) y (3) es: 0.5838


(obtenido para x = 0.2)

Ejemplo
Ejemplo 1
1 (7/11)
(7/11)

Grfico en [0.2, 1] de la funcin g(x) = f(x)

Valor mximo de | g(x)|

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo
Ejemplo 1
1 (8/11)
(8/11)

Buscamos ahora

Miguel Angel Cifredo Campos


macifredo@gmail.com

x 0.2 ) ( x 1)
(
x[ 0.2,1]
max

Llamamos q(x)=(x 0.2)(x 1) = x2 1.2x + 0.2


q(x) es un polinomio de segundo grado que se anula en los
puntos 0.2 y 1, luego, necesariamente, tendr algn
extremo en el intervalo [ 0.2, 1].
x1
x0

q(x)

Ejemplo
Ejemplo 1
1 (9/11)
(9/11)

El mximo de | q(x) | se alcanzar en los puntos que se


obtienen resolviendo la ecuacin q(x) = 0:
q(x) = 0 = 2x 1.2
de donde se obtiene x = 0.6 como abscisa en la que se
encuentra el mximo de q(x) :
resultando: q(0.6) = -0.16

| q(0.6) | = 0.16

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo
Ejemplo 1
1 (10/11)
(10/11)

Teniendo en cuenta los resultados obtenidos, UNA


cota de error vendr dada por:
0.5838
| (x) |=| f(x) p(x) |
.(0.16) = 0.046704
2

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo
Ejemplo 1
1 (11/11)
(11/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

La cota del error obtenida es


una cota terica. Si se
representa el valor absoluto
del error exacto (e.p. hacerlo):
|(x) | = | f(x) p(x)|
se obtiene la siguiente figura:
El error mximo real que se comete es del orden de
0.0026, mucho menor que la cota terica (0.046702). A
menudo, las cotas a las que conduce el teorema de
acotacin del error son conservadoras.

Ejemplo
Ejemplo 2
2 (1/11)
(1/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Sea la funcin f(x) = sen(5.x + 2)


x 0,
10
a) Calcular y representar grficamente los polinomios de
base de Lagrange asociados al soporte

x0 = 0, x1 =

20

, x2 =

10

b) Hallar el polinomio p(x) que interpola f(x) en el sentido


de Lagrange sobre el soporte de apartado anterior
c) Obtener la expresin del error de interpolacin

d) Hallar una cota de error vlida x 0,


10

Ejemplo
Ejemplo 2
2 (2/11)
(2/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Solucin del apartado a): Polinomios de base de Lagrange

x
x
(x x )(x x )
20
10
L0 (x) =

(x0 x1 )(x0 x2 )

(
)
(
)
=
=
( 0 20 ) ( 0 10 )
=

x0

x1

200

.x
2

x2

30

.x + 1

Ejemplo
Ejemplo 2
2 (3/11)
(3/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Polinomios de base de Lagrange (2)

(
)(

( x 0 ) x 10
(x x1 )(x x2 )
L1 (x) =
=
=
(x1 x0 )(x1 x2 )

20
20
10

x0

x1

400

x2

.x +
2

40

.x

Ejemplo
Ejemplo 2
2 (4/11)
(4/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Polinomios de base de Lagrange (3)


(x x0 )(x x1 )
L2 (x) =
=

(x2 x0 )(x2 x1 )

( x 0 ) ( x 20 )

10

) ( 10 20 )

x0

x1

x2

200

.x
2

10

.x

Ejemplo
Ejemplo 2
2 (5/11)
(5/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Solucin del apartado b) Polinomio interpolador de Lagrange


p2 (x) = f ( x0 ) .L0 (x ) + f ( x1 ) .L1 (x ) + f ( x2 ) .L2 ( x) =

200 2 30
= sen ( 5.(0 ) + 2 ) . 2 .x
.x +


5
400 2 40
+ sen
+ 2.
.x +
.x
2

20


5
200 2 10
+ sen
+ 2 . 2 .x
.x

10

1 +

Operando:

p2 ( x)  4.12937 x2 2.91850 x + 0.90930

Ejemplo
Ejemplo 2
2 (6/11)
(6/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Representacin grfica de la funcin y de su polinomio interpolador

f(x)
p2(x)

x0

x1

x2

Ejemplo
Ejemplo 2
2 (7/11)
(7/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Solucin del apartado c): Expresin del error


Aplicamos la expresin general del error de interpolacin:
f(cx ) n
(x ) = f(x) p(x) =
x xj

3 ! j= 0
donde aparece la derivada tercera de f(x) por tener el
soporte de interpolacin 3 puntos.

f(x) = sen(5.x + 2)
f(x) = 5. cos(5x + 2)

f(x) = 25.sen(5x + 2)
f(x) = 125. cos(5x + 2)

Ejemplo
Ejemplo 2
2 (8/11)
(8/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

La expresin del error ser, entonces:

(x) = f( x ) p(x ) =

125. cos(5 cx + 2)


xx
x

3!
10
20

donde cx es algn punto del intervalo (0, /10) dependiente


de la abscisa x

Operando, resulta:

125. cos(5cx + 2 ) 3
3 2
2
x +
x
( x ) = f ( x ) p( x ) =
x
6
20
2 00

Ejemplo
Ejemplo 2
2 (9/11)
(9/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Solucin del apartado d): Cota de error


max | f(x ) |

| ( x) |=| f(x) p(x) |

x[ 0,

10

3 2
2
max x
x +
x =

0
0
2
20
x[ 0, ]
3

3!

10

2
125
3

=
max | cos(5x + 2) | max x 3
x 2 +
x

6 x[ 0, ]
20
200
x [ 0, ]
10

10

x=0

min = 50 + 2 = 2

x = /10

mx = 5(/10) + 2 = 2+/2

Luego:

max | cos(5x + 2) |= 1

x[ 0,

10

mx = 2+ /10
mn = 2

Ejemplo
Ejemplo 2
2 (10/11)
(10/11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

2
125
3

'(x)
max | cos( 5x + 2) | max x 3
x 2 +
x =

6 x[0, ]
20
200
x[0, ]
10

10

2
125
3

=
max x 3
x 2 +
x

6 x[0, ]
20
200
10
2

3 2
3
q( x ) = x
x +
x
20
200

1
q '( x*) = 0 x* = (1
)
20
3
q(0.066385) = - 0.001492

125
=
0.001492
6

2
3

x +
q'( x ) = 3x 2
10
200

0.066385
x*
0.247769
q(0.257769) = 0.001492

q(0.) = q(/20) = q(/10) = 0

Ejemplo
Ejemplo 2
2 (11/11)
(11/11)

q(x)

max

x 0,

x0

x1

10

Miguel Angel Cifredo Campos


macifredo@gmail.com

q(x) = 0.001492

En resumen UNA cota de error es:

x2
125
0.001492 0.031084
( x )
6

La funcin valor absoluto del


error de interpolacin
|(x) | = | f(x) p(x)|,
tiene el siguiente grafo:

Miguel Angel Cifredo Campos


macifredo@gmail.com

METODOS
NUMERICOS
Una exploracion basada en Scheme

Miguel Angel Cifredo Campos


macifredo@gmail.com

ii

c Licencia de uso: Esta obra se publica bajo una licencia de Creative



Commons (ver: http://creativecommons.org/licences/by-nc-nd/2.5/). Basicamente, usted puede distribuir y comunicar p
ublicamente la obra, siempre
que se cumpla con (1) dar credito al autor de la obra, (2) no la utilice para
fines comerciales y (3) no la altere, transforme o genere una obra derivada de
ella. Ademas, al utilizar o distribuir la obra, debe especificar claramente los
terminos de esta licencia. Estas condiciones pueden modificarse con permiso
escrito del autor.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Indice general
Prefacio

VII

1. Teora de errores
1.1. Importancia de los metodos numericos
1.2. Conceptos basicos . . . . . . . . . . . .
1.2.1. Cifras significativas . . . . . . .
1.2.2. Precision y exactitud . . . . . .
1.2.3. Incertidumbre y sesgo . . . . .
1.3. Tipos de errores . . . . . . . . . . . . .
1.3.1. Error absoluto y relativo . . . .
1.3.2. Error por redondeo . . . . . . .
1.3.3. Error por truncamiento . . . . .
1.3.4. Error numerico total . . . . . .
1.4. Software de computo numerico . . . . .
1.4.1. Software de acceso libre . . . .
1.4.2. Software comercial . . . . . . .
1.4.3. Bibliotecas de funciones . . . .
1.5. Metodos iterativos . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

1
1
3
3
4
8
9
9
11
13
17
17
18
19
19
20

2. M
etodos de soluci
on de ecuaciones
2.1. Metodos basados en intervalos . . . .
2.2. Metodo de biseccion . . . . . . . . .
2.3. Metodo de aproximaciones sucesivas .
2.3.1. Condicion de Lipschitz . . . .
2.3.2. Iteracion y convergencia . . .
2.4. Metodos basados en interpolacion . .
2.4.1. Metodo de Newton-Raphson .
2.4.2. Metodo de la secante . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

25
25
26
30
30
31
35
35
37

iii

.
.
.
.
.
.
.
.

Miguel Angel Cifredo Campos


macifredo@gmail.com

INDICE GENERAL

iv

2.4.3. Metodo de Aitken . . . . . . . . . . . . . . . . . . . . . 38


2.5. Metodo de Bairstow . . . . . . . . . . . . . . . . . . . . . . . 39
2.6. Aplicaciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3. M
etodos para sistemas de ecuaciones
3.1. Metodos iterativos . . . . . . . . . .
3.1.1. Metodo de Jacobi . . . . . . .
3.1.2. Metodo de Gauss-Seidel . . .
3.2. Sistemas de ecuaciones no lineales . .
3.2.1. Metodo iterativo secuencial .
3.3. Iteracion y convergencia . . . . . . .
3.3.1. Metodo de Newton-Raphson .
3.4. Aplicaciones . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

45
45
45
46
47
47
49
49
51

4. Diferenciaci
on e integraci
on num
erica
4.1. Diferenciacion numerica . . . . . . . . .
4.1.1. Formulas de diferencia . . . . . .
4.1.2. Formula de tres puntos . . . . . .
4.1.3. Formula de cinco puntos . . . . .
4.2. Integracion numerica . . . . . . . . . . .
4.2.1. Metodo del trapecio . . . . . . .
4.2.2. Metodos de Simpson . . . . . . .
4.2.3. Integracion de Romberg . . . . .
4.2.4. Metodo de cuadratura gaussiana
4.3. Integracion m
ultiple . . . . . . . . . . .
4.4. Aplicaciones . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.

53
53
56
56
57
58
58
59
61
64
66
67

.
.
.
.
.
.
.
.

69
69
69
72
73
74
76
76
77

.
.
.
.
.
.
.
.

5. Soluci
on de ecuaciones diferenciales
5.1. Metodos de un paso . . . . . . . . . . . . . .
5.1.1. Metodo de Euler y formas mejorada .
5.1.2. Metodos de Runge-Kutta . . . . . . .
5.2. Metodos de pasos m
ultiples . . . . . . . . .
5.2.1. Metodo de Adams-Bashforth . . . . .
5.2.2. Metodo de Adams-Moulton . . . . .
5.3. Sistemas de ecuaciones . . . . . . . . . . . .
5.4. Aplicaciones . . . . . . . . . . . . . . . . . .
Bibliografa

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

79

Miguel Angel Cifredo Campos


macifredo@gmail.com

INDICE GENERAL

Indice de algoritmos

83

Indice de c
odigo Scheme

85

Indice de figuras

87

Indice de tablas

89

Indice alfab
etico

91

Miguel Angel Cifredo Campos


macifredo@gmail.com

vi

INDICE GENERAL

Miguel Angel Cifredo Campos


macifredo@gmail.com

Prefacio
The purpose of computing is
insight, not numbers.
R. W. Hamming. Autor de
Numerical Methods for Scientist
and Engineers

El contenido de esta obra se conforma de acuerdo al curso de Metodos


Numericos en el plan de estudios actual de Ingeniera en Sistemas Computacionales del Instituto Tecnologico de Tijuana. Se hace enfasis tanto en los aspectos matematicos conceptuales como algortmicos. Para la implementacion
de estos u
ltimos se utiliza el lenguaje de programacion Scheme [25].
La edicion de este libro se realizo con TeXnicCenter (ambiente para LaTeX/MiKTeX) y software auxiliar como WinGCLC y Asymptote.

vii

Miguel Angel Cifredo Campos


macifredo@gmail.com

viii

PREFACIO

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 1
Teora de errores
1.1.

Importancia de los m
etodos num
ericos
La simulaci
on y el modelado
matem
atico, mover
an el siglo
XXI, as como el vapor movi
o el
siglo XIX.
William H. Press. Autor de
Numerical Recipes

Gran parte de la tecnologa actual depende de la solucion de modelos


matem
aticos, desde la programacion empotrada de una calculadora cientfica y el calculo estructural de un edificio multinivel con estructuras de acero,
hasta el dise
no y simulacion de aeronaves y vuelos espaciales. La solucion
de un modelo matematico relativamente sencillo puede obtenerse de manera
analtica. Sin embargo, para la gran mayora de los modelos matematicos del
mundo real, las soluciones analticas pueden no existir o ser extremadamente
complejas, por lo cual se recurre a m
etodos num
ericos que aproximen las
soluciones dentro de ciertos margenes de tolerancia.
El analisis de los metodos numericos nos permite realizar estimaciones
tanto de la eficiencia o complejidad de los algoritmos asociados, as como de
la confiabilidad de los resultados numericos obtenidos durante su aplicacion.
Entre las disciplinas que hacen uso intensivo de los metodos numericos
podemos mencionar:
Analisis Estadstico
1

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPITULO 1. TEORIA DE ERRORES

2
Matematicas financieras
Analisis de elemento finito
Analisis estructural
Qumica computacional
Investigacion de operaciones

Electromagnetismo computacional
Mecanica computacional
Procesamiento de imagenes
Procesamiento de se
nales
Simulacion por computadora
Computacion multi-escala
Metereologa
Debido a la gran variedad de aplicaciones y especialidades atendidas por los
metodos numericos, podemos encontrar en la literatura terminos asociados
como los siguientes:
Matematicas numericas
Algoritmos numericos
Computacion cientfica
Analisis numerico
Matematicas algortmicas
Matematicas computacionales
Teora de la aproximacion1
1

cos

Esta disciplina matem


atica, forma la base teorica de gran parte de los metodos numeri-

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.2. CONCEPTOS BASICOS

1.2.

Conceptos b
asicos

El estudio y aplicacion de los metodos numericos se basa en forma esencial


en la representacion y manipulacion de los n
umeros reales en una computadora digital. Ya que la memoria de una computadora es finita, esta solo puede
representar n
umeros racionales. La estrategia para hacer funcional y eficiente
la aproximacion de los n
umeros reales por n
umeros de maquina en binario se
presenta en el estandar IEEE 754 [13]
Los terminos asociados en esta seccion incluyen:
Confiabilidad
Estabilidad y convergencia
Propagacion del error
Analisis asintotico
Notacion cientfica
Forma decimal normalizada
N
umeros de maquina decimales con k dgitos
N
umeros de punto flotante (Estandar IEEE 754)

1.2.1.

Cifras significativas

La nocion intuitiva de cifras significativas de un n


umero esta directamente
relacionada con la precision de los ins-trumentos o procesos que lo generan.
Definici
on 1.2.1 (Cifras significativas). El n
umero de cifras significativas de un n
umero x corresponde al n
umero de cifras en la mantisa de su
representacion en notacion cientfica.
Ejemplo 1.2.1. Ya que 0.00123 = 1.23103 , decimos que 0.00123 tiene tres
cifras significativas.
Ejemplo 1.2.2. El n
umero 3210 = 3.210 103 posee cuatro cifras significativas.

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPITULO 1. TEORIA DE ERRORES

Note que en el ejemplo anterior, hemos mantenido el 0 de las unidades.


Si el origen del n
umero no garantizara el valor de sus unidades, entonces
deberamos escribir directamente 3.21 103 lo que indicara que contamos con
solo tres cifras significativas.
Definici
on 1.2.2 (Aproximacion con t cifras significativas). Sean xv y xc los
valores verdadero y calculado de una cierta cantidad, con xv 6= xc . Decimos
que xc aproxima a xv con t cifras significativas si t es el mayor entero no
negativo para el cual


xv xc
t


(1.1)
xv 5 10
Para el caso xv = xc , xc aproxima xv con las cifras significativas propias.
Como se observa en [8, pag. 53] esta definicion dada para decimales puede
extenderse para cualquier base dada.2
Ejemplo 1.2.3. El n
umero 3.1416 aproxima a 3.1415926 en 6 cifras significativas, ya que

|3.1415926 3.1416|
= 2.3554932 106 5 106
|3.1415926|
Como se observa, no es necesario que coincidan los dgitos de las cifras significativas.
Ejercicio 1.2.1. Calcular el n
umero de cifras significativas con que 9.99
aproxima a 10
Ejercicio 1.2.2. Calcular el n
umero de cifras significativas con que 1005
aproxima a 1000

1.2.2.

Precisi
on y exactitud

El estudio e implementacion en computadora de los metodos numericos


requiere de un cuidado especial en el manejo de los n
umeros, de forma que los
2

Es importante notar que en la desigualdad (1.1) se utiliza algunas veces < como en
el caso de [5, p
ag. 21]. Se recomienda resolver el ejercicio 1.2.2, para ambas definiciones y
reflexionar sobre sus respuestas.

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.2. CONCEPTOS BASICOS

resultados que entregue un programa sean confiables. Para hablar de dicha


confiabilidad3 distinguiremos entre los terminos precision y exactitud.
Aunque en las aplicaciones es necesario conocer la precision de los datos
de entrada (a un algoritmo), que pueden depender directamente de los instrumentos utilizados4 , nos concentraremos aqu en la precision de la representacion de un n
umero en la memoria de la computadora, lo cual esta relacionado con la siguiente representacion de n
umeros reales.
Definici
on 1.2.3 (n
umeros de punto flotante). De-cimos que un n
umero x
esta representado como n
umero de punto flotante si se expresa como
x = d0 .d1 d2 dp1 e

(1.2)

donde p es el n
umero de dgitos en la mantisa o significando, es la base y e
es el exponente entero. Ademas, cuando d0 6= 0 decimos que esta en su forma
normalizada .
Ejemplo 1.2.4. El n
umero 314.159 en representacion de punto flotante es
3
0.314159 10 y como punto flotante normalizado 3.14159 102 .
Ya que las computadoras digitales trabajan (en su mayora) con el sistema binario, el estandar IEEE 754 especifica tanto la representacion como
el manejo de los n
umeros binarios de punto flotante.5
Definici
on 1.2.4 (n
umeros binarios de punto flotante normalizado). Decimos que un n
umero x esta representado como n
umero binario de punto
flotante normalizado si se expresa como
x = (1)s (1 + f )2e

(1.3)

donde s es el signo, f es la fraccion en binario y e el exponente.


La precision de un n
umero esta directamente relacionada con el n
umero
de dgitos en su representacion de punto flotante.
3

La revista Reliable Computing se especializa en metodos basados en intervalos (entre


otros) que garantizan y acotan todos sus resultados.
4
El Peque
no Larousse Ilustrado, 2002 define Precisi
on (de un instrumento de medida)
como la cualidad global de un instrumento que le permite dar indicaciones que coinciden,
con mucha aproximaci
on, con el valor verdadero de la magnitud que debe medirse.
5
Para informaci
on adicional sobre este estandar puede consultar el excelente artculo
de Goldberg en [10].

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPITULO 1. TEORIA DE ERRORES

Definici
on 1.2.5 (precision en formatos IEEE 754). En base a la ecuacion
(1.3) el estandar IEEE 754 define los siguientes cuatro tipos de formatos6
(ver tabla (1.1))que determinan la precision de un n
umero de punto flotante
(adaptacion de [10, pp. 173-174]):
Tabla 1.1: Precision en Formatos IEEE 754
parametro
emax
emin
e bits
f bits
total bits

Formatos
sencillo s. extendido doble d. extendido
+127
1023 +1023
> 16383
126
1022 1022
16382
8
11
11
15
23
31
52
63
32
43
64
79

Ya que 223 1.19 107 y 252 2.22 1016 , el formato sencillo tiene
una fraccion con precision de 7 decimales y el formato doble, una precision
de 15 decimales.
Las operaciones con n
umeros reales tanto en MATLAB7 como en DrScheme8
se realizan en doble precision.
Ejemplo 1.2.5. Utilizando la funcion en Scheme9 , real->ieee-doble, en la
figura (1.1), podemos obtener la representacion en formato de doble precision
mediante para los n
umeros 0.3 y 64
6

Los formatos extendidos en la tabla 1.1, ofrecen flexibilidad de dise


no para los distintos
fabricantes de computadoras. Por ejemplo, para el formato doble extendido, las computadoras SPARC y PowerPC ofrecen los siguientes campos (en bits): e = 15, f = 112. En
cambio INTEL ofrece: e = 15 y f = 63 con un bit extra para manejo explcito del dgito
m
as significativo de la fraccion.
7
MATLAB (MATrix LABoratory) es uno de los sistemas de software numerico mas exitosos en la actualidad. Para una introduccion sobresaliente, orientada a metodos numericos, se le invita a consultar el libro de Cleve Moler [18]
8
Una de las implementaciones mas completas del lenguaje de programacion Scheme, el
cual emplearemos a lo largo del texto para ilustrar e implementar los metodos numericos.
Para una excelente introduccion se recomienda el tutorial de Dorai Sitaram [25]
9
Esta funci
on as como el resto de las utilizadas en este libro, podran ser obtenidas
(eventualmente) visitando http://cemati.com/math/areas/scheme/, o bien el sitio de distribuci
on PLaneT Package Repository en [21]. Se recomienda instalar PLT-Scheme version
4.1 (o superior) disponible en http://www.plt-scheme.org, y por el momento, sencillamente
copiar el archivo slab.ss (que complementa este libro) al folder PLT de su instalacion.

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.2. CONCEPTOS BASICOS

> ( r e a l >i e e e d o b l e 0 . 3 )
(0 01111111101
0011001100110011001100110011001100110011001100110011)
> ( r e a l >i e e e d o b l e 6 4 )
(0 10000000101
0000000000000000000000000000000000000000000000000000)
>
Ya que (0.3)10 = (0.10011)2 nunca podra representarse de forma exacta
en un sistema binario finito.
Como se observa en el ejemplo 1.2.5 hay n
umeros reales (de hecho una
cantidad infinita) que no podran ser representados en forma exacta en un
sistema numerico de base fija. Note ademas que el exponente e0 en el formato
IEEE 754 obedece (en el caso de doble precision) a la ecuacion e = e0 1023.
Ejercicio 1.2.3. Confirme los resultados del ejemplo 1.2.5, utilizando la
ecuacion 1.3.
Ejercicio 1.2.4. Determine las representaciones en binario de punto flotante
normalizado (en formato de doble precision) de los siguientes n
umeros en base
10
a) 0.1
b) 1024
c) 1.1920928955078125e 007
Problema 1.2.1. Ya que la recta de los flotantes no cubre la recta real,
calcular la distancia que existe entre los siguientes n
umeros reales y sus dos
10
n
umeros flotantes vecinos bajo el formato de doble precision del estandar
IEEE 754:
a) 2008.09 1077
b) 64.3
c) 444.7 1027
10

Esto sera equivalente a encontrar para un n


umero real x, funciones piso bxc y techo
dxe pero en el edificio de los n
umeros flotantes.

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPITULO 1. TEORIA DE ERRORES

Problema 1.2.2. Generalice el resultado del problema 1.2.1 y descubra una


expresion o modelo matematico para determinar la distancia entre n
umeros
k k+1
flotantes consecutivos en intervalos de la forma [2 , 2 ], donde k es un
entero en el rango permitido.
En contraste con el concepto de precision que se asocia a la representacion
de un n
umero en particular (p. ej. bajo el formato de doble precision del
estandar IEEE 754), la exactitud de un n
umero hace referencia a una cantidad
objetivo, y busca el maximo acercamiento posible a dicho objetivo11 , en el
sentido de la definicion 1.2.2.
Obtener resultados rigurosos y confiables, con la precision y exactitud adecuadas para cada aplicacion es uno de los propositos principales del dise
no,
analisis e implementacion de los metodos numericos.
Conceptos como convergencia y acotacion del error mediante el an
alisis
asintotico, son claves y se consideraran en diferentes partes de nuestro texto.

10

12

Codigo Scheme 1.1: Funcion real->ieee-doble


; r e a l a i e e e de 64 b i t
; numero r e a l > l i s t a de s t r i n g s
; entrada : r
; salida : ( s e f )
;
donde : s c o n t i e n e e l b i t d e l s i g n o
;
: e t a l que e=e 1023 , r e p r e s e n t a e l exponente
;
: f contiene la fraccion
( define ( r e a l >i e e e d o b l e r )
( i e e e 8 >i e e e d o b l e
(map f i l l byte
(map (lambda( n ) ( number>s t r i n g n 2 ) )
( bytes > l i s t
( r e a l >f l o a t i n g p o i n t b y t e s r 8 #t ) ) ) ) ) )

1.2.3.

Incertidumbre y sesgo

En el analisis de datos numericos generalmente podemos tener errores que


tienen que ver con la falta ya sea de precision o de exactitud.
11

Peque
no Larousse Ilustrado: exactitud : Cualidad de ser medido, calculado o expresado
con todo rigor: hora exacta.

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.3. TIPOS DE ERRORES

Definici
on 1.2.6 (incertidumbre y sesgo). Llamamos incertidumbre o imprecision a la falta de precision, y sesgo o inexactitud, a la falta sistematica de
exactitud, ya sea por debajo o bien por arriba de la cantidad exacta.
El manejo de la incertidumbre o imprecision puede realizarse mediante
distribuciones de probabilidad, en tanto que el manejo de la inexactitud,
mediante rangos o intervalos.
Ejemplo 1.2.6. Supongamos que un profesor debe iniciar siempre sus clases
a las 7 : 00 am. Si existe incertidumbre, podra iniciar con una distribucion
normal con media de 7 : 05 y desviacion estandar de 1 minuto, lo cual indica
que el 99.7 % de las veces iniciara en el intervalo [7 : 02, 7 : 08]. Por otro
lado, si existe (solamente) sesgo, entonces empezara sistematicamente (por
ejemplo) a las 7 : 07.
Ejemplo 1.2.7. Si especificamos que el valor de una resistencia electrica es
de 100 5 % , estamos indicando que su valor real debe estar en el intervalo
[95, 105].
Existe actualmente una nueva generacion de metodos numericos basados
en intervalos, rectangulos, cajas e hipercajas (para espacios mayores que 3D),
cuyo proposito es obtener soluciones numericas precisas y exactas. Para mayor informacion puede consultar el texto de Aberth [2] y el curso de Warwick
Tucker en [27].

1.3.

Tipos de errores

En esta seccion veremos los tipos esenciales de errores presentes (en mayor
o menor grado) en la aplicacion de los metodos numericos. Ademas de estos
errores, podemos considerar: el error humano, observaciones inexactas propios del equipo experimental y errores de modelado. Ver el texto de Friedman
y Kolman [8, pp. 54-55] para ejemplos.

1.3.1.

Error absoluto y relativo

Definici
on 1.3.1 (Error absoluto y relativo). Sea xv un valor numerico
verdadero y sea xc el valor calculado que aproxima el verdadero, entonces
definimos al error er(xc ) y al error relativo rel(xc ), as como sus correspondientes en valores absolutos, como sigue:

Miguel Angel Cifredo Campos


macifredo@gmail.com

10

CAPITULO 1. TEORIA DE ERRORES

er(xc ) = xv xc

(1.4)

era (xc ) = |xv xc |

(1.5)

rel(xc ) =

xv xc
xv



xv xc

rela (xc ) =
xv

(1.6)

(1.7)

Asumiendo claro, que en las ecuaciones (1.6) y (1.7) se cumple xv 6= 0.


Ejemplo 1.3.1. Calculemos
los errores en la definicion (1.3.1) para el caso de

aproximar
el valor de 11 con 3.31. Consideraremos que el valor verdadero de

11 esta redondeado12 a siete decimales, es decir xv = 3.3166248, entonces:


er(3.31) = 3.3166248 3.31
= 0.0066248
era (3.31) = |0.0066248| = 0.0066248
3.3166248 3.31
rel(3.31) =
3.3166248
= 0.0019975
rela (3.31) = |0.0019975| = 0.0019975
Los errores relativos tambien pueden ser expresados en %. En nuestro caso,
rel(3.31) 0.20 %.
Ejercicio 1.3.1. Calcule los cuatro errores de la definicion (1.3.1) para el caso de aproximar el valor verdadero de /2 con 11/7. Para iniciar sus calculos,
favor de utilizar redondeo a siete decimales.
Problema 1.3.1. Extienda la definicion (1.3.1) especificando como manejar
el caso xv = 0.
12

La operaci
on de redondeo aqu es distinta a la que veremos en la seccion 1.3.2

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.3. TIPOS DE ERRORES

1.3.2.

11

Error por redondeo

A diferencia del error externo que provocamos cuando redondeamos a


cierto n
umero de decimales (p. ej. 9.9 a 10), el error por redondeo que interesa
en calculo numerico es el que ocurre en la computadora o calculadora debido
a las limitaciones propias de la representacion del n
umero (digamos en el
sistema de punto flotante de precision sencilla o de doble precision en el
estandar IEEE 754)
Definici
on 1.3.2 (Error por redondeo). Dado un n
umero real x y un sistema
de representacion de punto flotante que almacena x como f l(x), el error
por redondeo es
erf l (x) = x f l(x)
(1.8)
El error por redondeo acumulado erf lops (x, y) es el que resulta despues de
realizar una serie de operaciones aritmeticas de punto flotante (o flops13 ),
donde cada operacion contribuye su cuota de error por redondeo. Estas
operaciones aritmeticas podemos definirlas como:
xy
x y
xy
x y

= f l(f l(x) + f l(y))


= f l(f l(x) f l(y))
= f l(f l(x) f l(y))
= f l(f l(x) / f l(y))

(1.9)

Para calcular erf lops (x, y) es necesario realizar en secuencia cada una de
las flops y en cada etapa (como lo indican las ecuaciones en (1.9)) calcular
el error por redondeo resultante.
Ejemplo 1.3.2 (Moler [17]). Calculemos los resultados de la siguiente secuencia:
a = 4/3
b=a1
c=b+b+b
e=1c
Una implementacion en Scheme resulta en el codigo y su ejecucion indicado
en la figura 1.1.
13

flops: (del ingles) floating point operations. Algunos sistemas (como MATLAB) tienen
la capacidad de contar las flops realizadas durante una serie de calculos.

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPITULO 1. TEORIA DE ERRORES

12

Figura 1.1: Ejemplo de error por redondeo


Codigo

Resultado

(define a (/ 4. 3))

{a=1.3333333333333333}

(define b (- a 1))

{b= 0.33333333333333326}

(define c (+ b b b))

{c= 0.9999999999999998}

(define e (- 1 c))

{e=2.220446049250313e-016}

2.220446049250313e-016

Note que la primera linea del codigo anterior utiliza (define a (/ 4. 3)) para
indicar (con el punto) que 4 es un n
umero real, simplemente quitando el punto
14
obtenemos el resultado indicado en la figura 1.2, donde se ha eliminado el
error, debido a que en el lenguaje Scheme, las operaciones aritmeticas con
enteros y racionales son exactas.
Hay dos errores de redondeo especiales: error de underflow (o bajoflujo,)
cuando x(6= 0) es mas peque
no que el menor (en magnitud ) de los n
umeros
de punto flotante disponibles y el sistema lo representa como cero (o bien
genera una excepcion durante el calculo).
Por otra parte, se genera un error de overflow (o sobreflujo,) cuando x
excede el maximo (en magnitud) de los n
umeros representables como punto
flotante y el sistema lo representa como +inf o -inf seg
un sea el caso.
Ejercicio 1.3.2. Explore y descubra cuales son los n
umeros que generan
underflow o bien overflow bajo diferentes sistemas (p. ej. en MATLAB y PLT
Scheme).
Para medir el error por redondeo utilizamos ya sea el error relativo o bien
las ulps15 . En general (como lo indica Goldberg en [10]) si el n
umero de punto
14

Los resultados entre llaves, indican que no hay resultado en pantalla; solo se actualiza
la tabla de asociaciones entre variables y valores.
15
ulps: units of the last place, unidades de la u
ltima posicion.

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.3. TIPOS DE ERRORES

13

Figura 1.2: Ejemplo de eliminacion del error por redondeo, al utilizar n


umeros
racionales
Codigo

Resultado

(define a (/ 4 3))

{a = 1 13 }

(define b (- a 1))

{b = 13 }

(define c (+ b b b))

{c = 1}

(define e (- 1 c))

{e = 0}

flotante d0 .d1 dp1 e se utiliza para representar x, entonces se tendra un


error en ulps de:
erf l (x) = |d0 .d1 dp1 (x/ e )| p1

(1.10)

Ejercicio 1.3.3. Utilizando la ecuacion (1.10) calcule el error por redondeo


en ulps para el caso de aproximar 0.0123456 con 1.23 102 .
Proyecto 1.1. Dise
ne e implemente un programa en Scheme (o en el lenguaje
de su preferencia) que ofrezca la funcionalidad de definir un sistema de punto
flotante parametrizado, y permita realizar experimentos y calculo de errores,
en secuencias de operaciones aritmeticas.

1.3.3.

Error por truncamiento

De forma similar al caso del error por redondeo, hay que distinguir entre
el error externo que provocamos cuando truncamos un n
umero a cierta
cantidad de decimales (p. ej. 9.99 a 9.9) y el error de truncamiento que interesa
fundamentalmente en el analisis numerico. Este u
ltimo tiene que ver con la
famosa serie de Taylor16 y la propiedad de que toda funcion analtica puede
ser aproximada mediante polinomios.
16

Brook Taylor (1685-1731). Analista, geometra y filosofo ingles. Publico libros de perspectiva y diferencias finitas.

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPITULO 1. TEORIA DE ERRORES

14

Teorema 1.3.1 (Teorema de Taylor). Sea f (x) una funci


on en los reales
definida en el intervalo [a, b] y que satisface
1. f (x) C n [a, b]
2. f n+1 (x) existe para x (a, b)
Entonces, para cualesquier x0 , x en [a, b],
f (x) =

n
X
f (k) (x0 )
k=0

k!

(x x0 )k + Rn (x)

(1.11)

(n+1)

(cx )
donde Rn (x) = f (n+1)!
(x x0 )n+1 (para cx entre x0 y x inclusive) se denomina residuo y a la sumatoria llamamos polinomio de Taylor17 de orden
n, denotado por Pn (x). Cuando fijamos x0 , la ecuaci
on (1.11) se denomina
expansion de Taylor de orden n de f (x) alrededor de x0 . Adem
as si hacemos
18
h = x x0 podemos expresar el orden de crecimiento del residuo como
Rn (x) = O(hn+1 )
3

Demostracion. (Adaptada de Banach [3] pp. 114-116) Consideremos la ecuacion:


x x0 0
(x x0 )2 00
f (x0 ) +
f (x0 ) +
1!
2!
(x x0 )n (n)
+
f (x0 ) + w(x x0 )n+1
n!
Si la ecuacion anterior ha de cumplirse, encontraremos que w debera ser igual
(n+1)
a f (n+1)!() (que corresponde al factor correspondiente en Rn (x)) para un valor
de entre x0 y x.
Definamos (t) como sigue:
f (x) = f (x0 ) +

(t) = f (x) f (t)

17

(x t)2 00
xt 0
f (t)
f (t)
1!
2!

(x t)n (n)
f (t) w(x t)n+1
n!

Cuando x0 = 0 el nombre de la serie cambia a serie de MacLaurin, en honor a Colin


MacLaurin (1698-1746) matematico y fsico escoces.
18
La notaci
on b
asica para orden de crecimiento es (usando nuestra variable h) O(g(h))
(pron. O grande de g(h)) y nos proporciona una estimacion del error. Si escribimos
f (h) = O(g(h)) (para toda h) esto significa que existe una constante C tal que se cumple
|f (h)| C|g(h)| (para toda h). Para un excelente tratamiento de este tema y del analisis
asint
otico se recomienda el libro de Graham, Knuth y Patashnik [11, pp. 443-463].

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.3. TIPOS DE ERRORES

15

Observamos que se cumple (x0 ) = (x) = 0. Si ahora derivamos (t) con


respecto a t obtenemos:

x t 00
0
f (t) f (t)
(t) = f (t)
1!


x t 00
(x t)2 (3)
f (t)
f (t)

2!
1!


(x t)n (n+1)
(x t)(n1) (n)

f
(t)
f (t)
n!
(n 1)!
+ w(n + 1)(x t)n
0

Simplificando la ecuacion anterior (cancelando terminos iguales) obtenemos:


0 (t) =

(x t)n (n+1)
f
(t) + w(n + 1)(x t)n
n!

Aplicando ahora el teorema de Rolle19 , sabemos que existe una entre x y


x0 tal que 0 () = 0, por tanto:
w(n + 1)(x t)n =

(x t)n (n+1)
f
(t)
n!

de donde obtenemos el resultado deseado:


w=

f (n+1) ()
,
(n+1)!

con entre x y x0 .

Nota: La formula para el residuo en el teorema anterior garantiza que


n (x)|, donde:
|Rn (x)| |R
n (x) =
R

Mx
(x x0 )n+1
(n + 1)!

(1.12)

donde Mx = max{f (n+1) (cx )} tal que cx esta entre x0 y x inclusive. De esta
n (x)| nos proporciona una cota superior efectiva para la magnitud
forma, |R
del residuo.
19

Michel Rolle (1652-1719). Matem


atico frances, especialista en analisis, algebra y geometra. El teorema de Rolle nos dice que si una curva continua cruza el eje x en dos
puntos y tiene una tangente en todos sus puntos intermedios, entonces tiene al menos una
tangente paralela al eje x.

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPITULO 1. TEORIA DE ERRORES

16

Ejemplo 1.3.3. Calculemos P3 (x) alrededor de x0 = 0 para la funcion ex , y


3 (x).
estimemos R
e0 0 e0 1 e0 2 e0 3
x + x + x + x
0!
1!
2!
3!
1 2 1 3
=1+x+ x + x
2
6
ecx 4
R3 (x) =
x
4!
3 (x) = Mx x4
R
24
P3 (x) =

donde, debido a que la funcion ex es creciente, tenemos:



1 x0
Mx =
ex x > 0
Ejercicio 1.3.4. Calcule P3 (x), el polinomio de aproximacion de Taylor de
orden 3, alrededor de x0 = 0, as como el residuo Re (x), para la funcion
f (x) = cos(x/2),
Definici
on 1.3.3 (Error por truncamiento). Decimos que existe un error por
truncamiento, cuando no podemos calcular un valor verdadero yv de forma
explcita y tenemos que reemplazarlo por un c
alculo aproximado yc , y lo
denotamos por ertr (yv ) = yv yc . Normalmente, la aproximacion yc se obtiene
mediante la suma de los primeros terminos de una serie infinita convergente.
Ejemplo 1.3.4. Utilizando el resultado del ejemplo (1.3.3), calculemos los
errores de truncamiento, cuando:
a) Aproximamos e con P3 (1)
b) Aproximamos e1 con P3 (1)
Para el caso (a), tenemos yv = e y yc = P3 (1), por lo cual, utilizando siete
decimales obtenemos: yv = 2.7182818, y
1
1
yc = 1 + 1 + (1)2 + (1)3
2
6
= 2 + 1/2 + 1/6
= 8/3

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.4. SOFTWARE DE COMPUTO


NUMERICO

17

Ya que 8/3 = 2.6666667 (redondeando a siete decimales,) entonces


ertr (2.7182818) = 2.7182818 2.6666667 = 0.0516151.
Para el caso (b) tenemos yv = e1 y yc = P3 (1), por lo cual, utilizando
siete decimales obtenemos: yv = 0.3678794, y
1
1
yc = 1 + (1) + (1)2 + (1)3
2
6
= 0 + 1/2 1/6
= 1/3
Ya que 1/3 = 0.3333333 (redondeando a siete decimales,) entonces
ertr (0.3678794) = 0.3678794 0.3333333 = 0.0345461.
Ejercicio 1.3.5. Verifique que los errores de truncamiento encontrados en el
3 (x) correspondientes encontrados
ejemplo (1.3.4), estan por debajo de los R
en el ejemplo (1.3.3).

1.3.4.

Error num
erico total

Por lo visto hasta este punto, los metodos numericos requieren un cuidadoso reconocimiento y estudio de los errores involucrados.
Definici
on 1.3.4 (Error numerico total). El error numerico total es la suma
de los errores por redondeo y los errores por truncamiento.
Los errores por redondeo y por truncamiento guardan una relacion muy
interesante que se
nala Chapra y Canale [6, pp. 97-99] y denominan principio de incertidumbre numerica, ya que conforme aumenta el incremento h
(p. ej. (x x0 ) en la expansion de Taylor) tambien aumenta el error por
truncamiento, y para reducirlo es necesario aumentar el n
umero de terminos
en la sumatoria, pero al hacerlo aumenta el n
umero de operaciones de punto
flotante, lo que aumenta el error por redondeo. Se trata entonces de encontrar
un punto de equilibrio a partir del cual, se tienen rendimientos decrecientes.

1.4.

Software de c
omputo num
erico

El software numerico actual20 ofrece un panorama muy prometedor, ya


que ademas de la calidad en los programas y la b
usqueda de conectividad en20

Que incluye con frecuencia funcionalidad propia de los CAS (Computer Algebra Systems).

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPITULO 1. TEORIA DE ERRORES

18

tre los diferentes sistemas, tambien se busca estandarizar algunos aspectos de


la semantica (ver p. ej. la iniciativa del Numerical Mathematics Consortium
[20]).

1.4.1.

Software de acceso libre

Entre los sistemas de acceso libre orientados al software numerico se podemos incluir:
Axiom: sistema de algebra computacional (con MathAction)
Calc3D: software para calculo y graficacion orientado a geometra y
estadstica
EULER: poderoso laboratorio de computacion numerica (con Yacas)
FreeMat: Coleccion de funciones basicas para matematicas
GnuPlot: Excelente graficador de dominio p
ublico (no GNU)
Jacal: Sistema de algebra computacional basado en Scheme
Mathscribe: herramientas para mentes cientficas
NonEuclid: software interactivo en Java para geometra hiperbolica
Octave: excelente sistema afin a MATLAB
PyLab: una coleccion de funciones para calculo numerico y visualizacion.
Basado en Python
RLab: laboratorio para computacion numerica
Sage: Sistema integrador de gran potencia y versatilidad que incluye
otros paquetes matematicos Open Source de alta calidad.
http://www.sagemath.org
Scilab: uno de los paquetes de computacion numerica y cientfica mas
importantes y exitosos (desarrollado en el instituto frances INRIA)
Singular: un sistema de algebra computacional para computacion con
polinomios

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.4. SOFTWARE DE COMPUTO


NUMERICO

19

Surf: software para visualizacion de geometra algebraica real


Winplot: un programa sencillo pero muy versatil para graficar funciones
matematicas
wxMaxima: un paquete clasico para matematicas numericas y computacion simbolica. Sistema basado en Lisp

1.4.2.

Software comercial

Entre los sistemas mas relevantes tenemos:


Derive: Sistema shareware para computo numerico y simbolico.
LabView: Plataforma de computo numerico y simulacion con enfasis en
sistemas electronicos empotrados, de gran importancia en la industria
MAPLE: Sistema preferido en ambientes academicos y cuyo n
ucleo de
procesamiento simbolico se incorpora en otros sistemas comerciales
MathCAD: Editor de documentos que integra valiosas capacidades de
computo numerico y de visualizacion
Mathematica: Sofisticado y muy exitoso sistema de computo numerico
y simbolico, con grandes capacidades de visualizacion
MATLAB: Abreviacion de MATrix LABoratory, este es el sistema
estandar en aplicaciones de ingeniera
Scientific Workplace: Excelente editor cientfico de gran flexibilidad y
que integra MAPLE como su n
ucleo de computacion simbolica

1.4.3.

Bibliotecas de funciones

Orientadas principalmente a la eficiencia en la solucion de sistemas lineales de dimension muy grande, estas bibliotecas son esenciales para el desarrollo de aplicaciones en la industria, as como en laboratorios de investigacion.
Entre las mas recomendadas podemos mencionar:
IMSL
JavaNumerics

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPITULO 1. TEORIA DE ERRORES

20
LAPACK/BLAS
EISPACK
LINPACK
NAG

En las proximas revisiones se presentaran referencias y una breve descripcion de estos importantes sistemas de apoyo a la computacion numerica.

1.5.

M
etodos iterativos

A diferencia de los m
etodos directos donde la solucion a una ecuacion
o sistema de ecuaciones se logra siempre al primer intento siguiendo paso
a paso un procedimiento determinado21 , los m
etodos iterativos obtienen
la solucion como resultado de una serie de aproximaciones generadas sucesivamente a partir de una aproximacion inicial a la solucion.
Definici
on 1.5.1 (Metodo iterativo). Llamamos M
etodo iterativo (univariable) a un procedimiento que acepta:
a) f (x), la funcion a iterar22 , tal que ran(f ) dom(f ) y ademas cumple
cierto criterio de convergencia23
b) x0 dom(f ), la aproximacion inicial a la solucion
c) , la tolerancia del error
y encuentra, mediante un n
umero finito de iteraciones, una solucion aproxi
mada x (con error ) , para la ecuacion x = f (x). Llamamos punto fijo
al valor x que cumple x = f (x).
Normalmente, la implementacion de un metodo iterativo incluye como
parametro adicional, el n
umero maximo de iteraciones permitidas, para el
21

Como ejemplo podemos mencionar el procedimiento para calcular la derivada de una


funci
on que veremos en la seccion 4.1
22
Iterar una funci
on significa aqu, aplicarla repetidamente, p. ej. x3 := f (f (f (x0 )))
asigna a x3 el valor de la tercera iteracion de f aplicada a x0
23
P. ej. la condici
on de Lipschitz, que veremos en la seccion 2.3.1

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.5. METODOS
ITERATIVOS

21

caso en que se utilice una funcion que no cumpla con el criterio de convergencia.
En la figura 1.2 presentamos el codigo Scheme para una maquina iterativa basica, que utilizando el enfoque de programacion orientada a objetos,
implementa el metodo iterativo univariable de la definicion 1.5.1 anterior.
Ejemplo 1.5.1. Resolvamos la ecuacion x = cos(x + 41 ) con ayuda de la
funcion crea-mit.
> ( define mit ( c r e a mit g (lambda( x )
(+ ( c o s x ) 1 / 4 ) )
0.01 15))
> ( mit i t e r a 0 . 7 )
(0 : 0 . 7 )
(1 : 1.0148421872844886)
(2 : 0.7777539838103506)
(3 : 0.9624913205131414)
(4 : 0.8214773395993339)
(5 : 0.9311403125086086)
(6 : 0.8469194965541674)
(7 : 0.9122943326484682)
(8 : 0.8619327515053936)
(9 : 0.900971529122722)
(1 0 : 0 . 8 7 0 8 4 8 6 5 0 1 2 5 9 5 1 8 )
(1 1 : 0 . 8 9 4 1 7 7 6 6 7 2 6 4 8 9 1 7 )
(1 2 : 0 . 8 7 6 1 6 0 1 9 6 2 8 8 8 2 5 2 )
(1 3 : 0 . 8 9 0 1 0 5 9 2 5 8 3 1 6 9 4 3 )
(0.7
converge
a
0.8793297110716177
en
14
iteraciones )
>

Miguel Angel Cifredo Campos


macifredo@gmail.com

22

10

12

14

16

18

20

22

24

26

28

30

32

34

36

CAPITULO 1. TEORIA DE ERRORES

Codigo Scheme 1.2: Funcion crea-mit para crear una maquina iterativa basica
; ; f u n c i o n c r e a mit ( r e v . 0 2 , 2008 05 27; en mit . scm )
; ; p r o p o s i t o : : c r e a r una Ma quina I T e r a t i v a (MIT) b a s i c a
; ; atributos : : idf : string
; i d de l a f u n c i o n
;;
f : p r o c e d i m i e n t o ; f u n c i o n a i t e r a r
;;
epsi : real
; tolerancia
;;
n : e n t e r o p o s i t i v o ; max de i t e r a c i o n e s
; ; me todos : : show
> p r e s e n t a l o s a t r i b u t o s
;;
i t e r a <r e a l > > i t e r a empezando con <r e a l >
;;
fun <proced> > r e d e f i n e l a f u n c i o n f
;;
i d f <s t r i n g > > r e d e f i n e nombre f u n c i o n
;;
( define ( c r e a mit i d f f e p s i n )
( l e t ( ( i m i t i d f ) ( f m i t f ) ( emit e p s i ) ( nmit n ) )
(lambda( mensaje . param )
( c a s e mensaje
(( itera )
( d i s p l a y ( 0 : , ( c a r param ) ) ) ( n e w l i n e )
(do ( ( k 1 (+ k 1 ) )
( xp ( c a r param ) ( f m i t xp ) )
( x ( f m i t ( c a r param ) ) ( f m i t x ) ) )
( ( o r (<= ( abs ( x xp ) ) emit )
(>= k nmit ) )
( i f (<= k nmit )
( , ( c a r param ) c o n v e r g e a , x en
,k iteraciones )
( , ( c a r param ) no c o n v e r g e en
,k iteraciones )))
( d i s p l a y ( , k : , x , ( f m i t x ) , ( abs ( x xp ) ) ) )
( newline ) ) )
( ( fun ) ( s e t ! f m i t ( c a r param ) ) )
( ( e ps ) ( s e t ! emit ( c a r param ) ) )
( ( i d ) ( s e t ! i m i t ( c a r param ) ) )
( ( show ) ( d i s p l a y ( MIT i d f =, i m i t eps=
, emit n=, nmit ) )
( newline ))
( e l s e ( no conozco e l mensaje , mensaje ) ) ) ) ) )

Miguel Angel Cifredo Campos


macifredo@gmail.com

1.5. METODOS
ITERATIVOS

23

Nota: en la seccion 3.1, veremos metodos iterativos aplicados a la solucion


de sistemas de ecuaciones lineales de la forma Ax = b.

Miguel Angel Cifredo Campos


macifredo@gmail.com

24

CAPITULO 1. TEORIA DE ERRORES

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 2
M
etodos de soluci
on de
ecuaciones
Presentamos aqu algunos metodos numericos fundamentales para la solucion de una ecuaci
on no lineal univariable. Los sistemas de ecuaciones
no lineales seran tratados en el siguiente captulo.

2.1.

M
etodos basados en intervalos

Cuando para encontrar la solucion a una ecuacion, digamos f (x) = 0


partimos de un intervalo [a, b] dentro del cual sabemos que se encuentra la
solucion, y paso a paso reducimos dicho intervalo hasta obtener [an , bn ] tal
que |bn an | < , para  > 0 como la tolerancia, decimos que hemos utilizado
un metodo de intervalo o metodo cerrado.
El metodo de intervalo clasico es el metodo de biseccion de Bolzano, que
veremos en la seccion siguiente (2.2).
Como se menciono en la seccion 1.2.2, recientemente se han desarrollado
metodos basados en intervalos (en general hiper-cajas) que van encerrando
la solucion en regiones cada vez mas peque
nas, logrando con ello lo que actualmente se conoce como computacion confiable (en ingl. reliable computing).
Para mayores detalles sobre estos nuevos metodos se recomienda consultar
[27].
25

Miguel Angel Cifredo Campos


macifredo@gmail.com

DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION

26

2.2.

M
etodo de bisecci
on

El metodo de biseccion se basa en el siguiente teorema de Bolzano1


Teorema 2.2.1 (Teorema de Bolzano). Una funci
on f : R R es cero de
al menos un valor de x entre a y b si f es continua en el intervalo cerrado
[a, b] y f (a) y f (b) tienen signos opuestos.
La estrategia de este metodo, es partir de un intervalo [a, b] que cumple la
condicion f (a)f (b) < 0 y en cada iteracion bisectarlo para obtener un nuevo
intervalo [a1 , b1 ] que tambien cumple con f (a1 )f (b1 ) < 0 , hasta obtener un
intervalo [an , bn ] que cumple f (an )f (bn ) < 0 pero ademas |b a| , para
un  correspondiente a la tolerancia del error.
Presentamos a continuacion el algoritmo resultante:
Algoritmo 2.1 Metodo de biseccion
Dado: f : funcion asociada a la ecuacion f (x) = 0 a resolver, a y b: valores
iniciales que cumplen f (a)f (b) < 0, : tolerancia del error.
Entrega: c: la solucion aproximada a la ecuacion f (x) = 0 con un error .
n(f, a, b, )
Biseccio
2:
repeat
s (a + b)/2
4:
if f (s) = 0 then
. caso excepcional
return s
6:
else if f (a)f (s) < 0 then
bs
8:
else
as
10:
end if
until |b a| 
12:
return s
end
Ejemplo 2.2.1. La siguiente interaccion con la funcion biseccion (ver codigo 2.1) nos permite resolver cos(x) = 0 con una tolerancia de 103 mediante
el metodo de biseccion, utilizando a = 0 y b = 2.
1

Bernhard Bolzano (1781-1848), matematico checoescovaco especializado en analisis,


cuyo trabajo ayud
o a establecer la importancia de las demostraciones rigurosas [14].

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.2. METODO
DE BISECCION

10

27

Codigo Scheme 2.1: Funcion biseccion asociada al algoritmo 2.1


; ; implementa e l metodo de b i s e c c i o n
; ; asume : f ( a0 ) f ( b0)<0
( define ( b i s e c c i o n f a0 b0 ep )
( l e t c i c l o ( ( a a0 ) ( b b0 ) )
( l e t ( ( s ( / (+ a b ) 2 ) ) )
; b i s e c c i o n de [ a , b ]
( cond [ ( z e r o ? ( f s ) ) s ]
; f ( s )=0? => e n t r e g a s
[( < ( abs ( b a ) ) ep ) ; cumple t o l e r a n c i a ?
s]
;
entrega s
[( < ( ( f a ) ( f s ) ) 0 ) ; f ( a ) f ( s )<0?
( ciclo a s )]
;
busca en [ a , s ]
[ e l s e ( c i c l o s b ) ] ) ) ) ) ; busca en [ s , b ]

> ( b i s e c c i o n cos 0 2. .001)


1.57080078125
A continuacion presentamos las interacciones resultantes al resolver este
problema mediante la funcion biseccion-data (presentada en el codigo 2.2)
> ( b i s e c c i o n data c o s 0 2 . . 0 0 1 6 )
(1.57080078125
4.454455103366037 e 006
(0 0 2 . 0 )
(1 1.0 2 . 0 )
(2 1.5 2 . 0 )
(3 1.5 1 . 7 5 )
(4 1.5 1.625)
(5 1.5625 1.625)
(6 1.5625 1.59375)
(7 1.5625 1.578125)
(8 1.570312 1.578125)
(9 1.570312 1.574219)
(1 0 1 . 5 7 0 3 1 2 1 . 5 7 2 2 6 6 )
(1 1 1 . 5 7 0 3 1 2 1 . 5 7 1 2 8 9 ) )
Note que en este caso, la funcion entrega una lista que contiene respectivamente, la solucion s, el error f (s) y los datos de las iteraciones en la forma

Miguel Angel Cifredo Campos


macifredo@gmail.com

28

DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION

(ki ai bi ).

10

12

14

16

18

20

Codigo Scheme 2.2: Funcion biseccion-data asociada al algoritmo 2.1


; ; implementa e l metodo de b i s e c c i o n
; ; e n t r e g a ( s o l u c i o n e r r o r data )
; ; donde : data = { i a ( i ) b ( i )}
; ; asume : f ( a0 ) f ( b0)<0
( define ( b i s e c c i o n data f a0 b0 ep d e c s )
( l e t ( ( f t ( makef o r m a t e r roundd e c s d e c s ) )
( data ( ) ) )
( l e t c i c l o ( ( a a0 ) ( b b0 ) ( k 0 ) )
( s e t ! data ( cons ( l i s t k ( f t a ) ( f t b ) )
data ) )
( l e t ( ( s ( / (+ a b ) 2 ) ) )
( cond [ ( z e r o ? ( f s ) )
; caso excepcional
( cons s ( cons 0 ( r e v e r s e data ) ) ) ]
[( < ( abs ( b a ) ) ep ) ; cumple t o l e r a n c i a ?
( cons s ( cons ( f s ) ; e n t r e g a s , f ( s )
( r e v e r s e data ) ) ) ] ; y data en orden
[( < ( ( f a ) ( f s ) ) 0 ) ; f ( a ) f ( s )<0?
( c i c l o a s (+ k 1 ) ) ]
; busca en [ a , s ]
[ else ( c i c l o s b
; busca en [ s , b ]
(+ k 1 ) ) ] ) ) ) ) )
Sugerencia 2.1. Si la funcion f (x) de nuestro problema no es muy conocida, o demasiado laboriosa para bosquejar a mano, se recomienda utilizar
alguno de los paquetes de software matematico vistos en la seccion 1.4, y
hacer un analisis grafico de la funcion, para determinar el n
umero de ceros
dentro de cierto intervalo, as como para determinar los valores cercanos a
dicho cero(s). Este analisis sera especialmente importante para el metodo de
Newton-Raphson que veremos en la seccion 2.4.1.
Ejemplo 2.2.2. Resolvamos ahora la ecuacion 3cos( x2 ) + 2 = 0 con una
tolerancia de 102 , llamando a la funcion biseccion-data para a = 1 y
b = 6.
>( b i s e c c i o n data (lambda( x)(+ ( 3 ( c o s ( / x 2 ) ) ) 2 ) )
1 6 . 0.01 6)

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.2. METODO
DE BISECCION
(4.5986328125
0.002701681335155026
(0 1 6 . 0 )
(1 3.5 6 . 0 )
(2 3.5 4 . 7 5 )
(3 4.125 4 . 7 5 )
(4 4.4375 4 . 7 5 )
(5 4.59375 4 . 7 5 )
(6 4.59375 4.671875)
(7 4.59375 4.632812)
(8 4.59375 4.613281)
(9 4.59375 4.603516))
La figura 2.2 nos permite visualizar el proceso para este ejemplo.

Figura 2.1: Bisecciones para el ejemplo 2.2.2

29

Miguel Angel Cifredo Campos


macifredo@gmail.com

30

DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION

Ejercicio 2.2.1. Encuentre todos los ceros de las siguientes funciones en el


intervalo indicado y para la precision indicada.
q
2
a). f (x) = x
cos(x 4 ) en [1, 7], con  = 0.001
b). f (x) = xsenh(x 2) 100, en [4, 8], con  = 107
Problema 2.2.1. Cual es el n
umero maximo posible de iteraciones del
metodo de biseccion, dado un intervalo [a, b] y un valor para ?
Problema 2.2.2. Una vez resuelto el problema 2.2.1, encuentre una funcion
f (x) as como su intervalo [a, b] y  asociado, de manera que se encuentre el
cero justo en el n
umero maximo de iteraciones.
Sugerencia 2.2. Explore algunas otras implementaciones del metodo de biseccion. Se recomienda especialmente revisar ejemplos en MATLAB o si-milares.

2.3.

M
etodo de aproximaciones sucesivas

Este metodo, conocido tambien como metodo de punto fijo o metodo iterativo estandar es uno de los metodos recomendados cuando queremos resolver
una ecuacion de la forma x = f (x) y la funcion f (x) cumple ciertas condiciones como lo veremos en las siguientes dos secciones.

2.3.1.

Condici
on de Lipschitz

Definici
on 2.3.1 (Condicion de Lipschitz). Una funcion f (x) definida en el
intervalo [a, b] se dice que satisface una condicion de Lipschitz, si existe una
constante L > 0 tal que
|f (x1 ) f (x2 )| L |x1 x2 |

(2.1)

para cualquier par de n


umeros x1 , x2 [a, b].
(x2 )|
se
Observamos que cualquier funcion f (x) donde la expresion |f (x|x11)f
x2 |
K
pueda simplificar a g(x1 ,x2 ) , donde K es una constante y el valor de g(x1 , x2 ) se
pueda hacer arbitrariamente peque
no para x1 , x2 [a, b], no puede satisfacer
una condicion de Lipschitz.

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.3. METODO
DE APROXIMACIONES SUCESIVAS

31

Si f (x) C 1 [a, b] (es decir, si f 0 (x) existe y es continua) entonces f (x)


satisface tambien una condicion de Lipschitz. Esto se cumple ya que, por el
teorema del valor medio para derivadas existe una c entre x1 y x2 tal que:
f 0 (c) =

f (x1 ) f (x2 )
x1 x2

(2.2)

y entonces, |f (x1 ) f (x2 )| = |f 0 (c)(x1 x2 )| L |x1 x2 |, para cualesquiera


x1 , x2 [a, b].

2.3.2.

Iteraci
on y convergencia

El metodo de aproximaciones sucesivas, m


etodo iterativo y tambien
conocido como m
etodo de punto fijo, es uno de los metodos mas sencillos
e ilustra (a diferencia del metodo de biseccion) el caso cuando no se tiene
garanta de obtener la solucion. Por tal motivo, el tema central aqu es el
concepto de convergencia de una sucesion de aproximaciones.
on
Definici
on 2.3.2 (Velocidad de convergencia). Sea {xn }
n=1 una sucesi
de aproximaciones que convergen a s, de forma que lmn xn = s. Si la
sucesion de errores {n }
n=1 (donde n = xn s) satisface
|n+1 |
= K, K > 0
n |n |
lm

(2.3)

para algunos n
umeros fijos , K, entonces es el orden de convergencia para
{xn }, y K es la constante asintotica o factor de convergencia.

En base a la definicion anterior, destacamos los casos para cuando = 1,


y = 2 que corresponden a convergencia lineal, y convergencia cuadratica
respectivamente.
El algoritmo 2.2 describe el metodo.

Miguel Angel Cifredo Campos


macifredo@gmail.com

32

DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION

Algoritmo 2.2 Metodo de punto fijo


Dado: f : funcion asociada a la ecuacion f (x) = x a resolver, x0 : valor inicial
de la solucion, : tolerancia del error, m: n
umero maximo de iteraciones
permitidas.
Entrega: s: la solucion aproximada a la ecuacion f (x) = x con un error ,
o bien el mensaje: sin convergencia en m iteraciones si la solucion no
converge en las iteraciones y la precision deseada.
Punto-Fijo(f, x0 , , m)
2:
if f (x0 ) = x0 then
. caso excepcional
return x0
4:
else
n0
6:
repeat
xn+1 f (xn )
8:
nn+1
until |xn xn1 |  o n > m
10:
if |xn xn1 |  then
return xn
12:
else
return sin convergencia en m iteraciones
14:
end if
end if
16: end
Presentamos en el listado 2.3, una implementacion basica del metodo.

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.3. METODO
DE APROXIMACIONES SUCESIVAS

10

12

14

33

Codigo Scheme 2.3: Funcion punto-fijo asociada al algoritmo 2.2


; ; implementa e l metodo de punto f i j o
( define ( punto f i j o f x0 eps m)
( i f (= ( ( f x0 ) x0 ) 0 )
; f ( x0)=x0 ?
x0
; e n t r e g a x0
( l e t c i c l o ( ( k 1 ) ( x ( f x0 ) ) ) ; x1=f ( x0 )
( cond
((<= ( abs ( x ( f x ) ) ) ep s ) ; | f ( x)x|< e ps
( f x))
; entrega f (x)
((> k m)
; k>m?
( s t r i n g append
s i n c o n v e r g e n c i a en ( number>s t r i n g m)
iteraciones ))
; mensaje
( else
; e oc
( c i c l o (+ k 1 ) ( f x ) ) ) ) ) ) ) ; x ( k+1)= f [ x ( k ) ]
Una variante de la funcion punto-fijo que nos da informacion adicional se
presenta en el listado 2.4.

Miguel Angel Cifredo Campos


macifredo@gmail.com

34

10

12

14

16

18

20

22

24

DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION

Codigo Scheme 2.4: Funcion punto-fijo-data asociada al algoritmo 2.2


; ; implementa e l metodo de punto f i j o
; ; e n t r e g a ( ( s o l u c i o n | mensaje ) e r r o r data )
; ; donde : data = { i f [ x ( i ) ] }
( define ( puntof i j o data f x0 eps m d e c s )
( l e t ( ( f t ( makef o r m a t e r roundd e c s d e c s ) )
( data ( l i s t ( l i s t 0 x0 ) ) ) )
( i f (= ( ( f x0 ) x0 ) 0 )
( cons x0 ( cons 0 data ) )
( l e t c i c l o ( ( k 1 ) ( x ( f x0 ) ) )
( s e t ! data ( cons ( l i s t k ( f t x ) )
data ) )
( cond ((<= ( abs ( x ( f x ) ) ) ep s )
( cons ( f x )
( cons ( ( f x ) x )
( r e v e r s e data ) ) ) )
((>= k m)
( cons
( s t r i n g append
s i n c o n v e r g e n c i a en
( number>s t r i n g m)
i t e r a c i o n e s )
( cons ( ( f x ) x )
( r e v e r s e data ) ) ) )
( else
( c i c l o (+ k 1 ) ( f x ) ) ) ) ) ) ) )

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.4. METODOS
BASADOS EN INTERPOLACION

2.4.
2.4.1.

35

M
etodos basados en interpolaci
on
M
etodo de Newton-Raphson

Entre los metodos mas populares en matematicas computacionales tenemos al creado por Isaac Newton2 y Joseph Raphson3 .
El atractivo de este metodo es su rapidez cuadratica de convergencia,
como veremos mas adelante. Una desventaja es que para la aplicacion del
metodo se requiere tener tanto la funcion f (x) que quiere resolverse, as como
su derivada.
Dada una funcion f (x) definida en un intervalo [a, b], tal que
f (x) C 2 [a, b] y existe una s [a, b] tal que f (s) = 0 entonces si escojemos
un valor inicial de x cercano a s, podemos utilizar un polinomio interpolador
de Taylor para aproximar la funcion f (x) por:
f 00 (c)
f 0 (x0 )
(s x0 ) +
(s x0 )2
f (s) = f (x0 ) +
1!
2!
Haciendo f (s) = 0 y asumiendo que el termino de segundo grado es muy
peque
no, se tiene:
f 0 (x0 )
(s x0 )
0 f (x0 ) +
1!
Ahora podemos despejar s para obtener:
s x0

f (x0 )
f (x0 )

Si lo expresamos en terminos del metodo iterativo univariable, la funcion


a iterar es:
f (xn )
(2.4)
xn+1 = xn 0
f (xn )
El pseudocodigo para el metodo de Newton-Raphson estandar se presenta
en el algoritmo 2.3
2

Sir Isaac Newton (1642-1727), reconocido matematico, fsico y astronomo ingles, su


obra maestra Philosophae Naturalis Principia Mathematica es considerada como uno de
los libros cientficos m
as importantes de todos los tiempos. Destaca junto con (Gottfried
Wilhelm von) Leibniz (1646-1716), por su invencion independiente del Calculo.
3
Joseph Raphson (1648-1715), matematico ingles

Miguel Angel Cifredo Campos


macifredo@gmail.com

36

DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION

Algoritmo 2.3 Metodo de Newton-Raphson estandar


Dado: f : funcion asociada a la ecuacion f (x) = 0 a resolver, f 0 : derivada de
f (x), x0 : aproximacion inicial a la solucion, : tolerancia del error, y m:
n
umero maximo de iteraciones
Entrega: s: la solucion aproximada a la ecuacion f (x) = 0, o bien el mensaje sin solucion aceptable en m iteraciones, o bien f 0 (xn ) = 0 en la
iteracion n
Newton-Raphson(f, f 0 , x0 , , m)
2:
n0
repeat
4:
if f 0 (xn ) = 0 then return f 0 (xn ) = 0 en la iteracion n
else
6:
xn+1 = xn f (xn )/f 0 (xn )
nn+1
8:
end if
until |xn xn1 |  o n > m
10:
if |xn xn1 |  then return xn
else return sin solucion aceptable en m iteraciones
12:
end if
end

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.4. METODOS
BASADOS EN INTERPOLACION

37

Presentamos a continuacion una implementacion en Scheme:

10

12

14

16

18

Codigo Scheme 2.5: Funcion para el metodo de Newton-Raphson


( define ( newtonraphson f d f x0 eps m)
( d i s p l a y ( x ( ,0)= , x0 ) ) ( n e w l i n e )
( l e t c i c l o ( ( xp x0 ) ( dfp ( d f x0 ) ) ( k 1 ) )
( i f (= dfp 0 )
( l o s i e n t o : l a d e r i v a d a de f en , x0
e s 0 en l a , k i t e r a c i o n )
( l e t ( ( x ( xp ( / ( f xp ) dfp ) ) ) )
( cond
((<= ( abs ( x xp ) ) eps )
( d i s p l a y ( x ( , k)= , x d e l t a= , ( abs ( x xp ) ) ) )
( newline )
( s o l u c i o n , x en , k i t e r a c i o n e s ) )
((> k m) ( s i n s o l u c i o n en
,( k 1 ) i t e r a c i o n e s ) )
( e l s e ( d i s p l a y ( x ( , k)= , x d e l t a=
, ( abs ( x xp ) ) ) )
( newline )
( c i c l o x ( d f x ) (+ k 1 ) ) ) ) ) ) ) )
Ejercicio 2.4.1. Aplique el metodo de Newton-Raphson para encontrar una
raiz de la ecuacion x3 + x 2 = 0. Utilice x0 = 2 y  = 105 . Compruebe la
solucion encontrada.

2.4.2.

M
etodo de la secante

Este metodo se basa en la utilizacion de dos puntos x0 y x1 como aproxi-maciones iniciales a la solucion de la ecuacion f (x) = 0, y calcula el tercer
punto x2 , resolviendo la siguiente ecuacion de la secante, para y = 0 y x2 = x:
y f (x1 ) =

f (x1 ) f (x0 )
(x x1 )
x1 x0

para obtener:
x2 = x1

(x1 x0 )f (x1 )
f (x1 ) f (x0 )

(2.5)

Miguel Angel Cifredo Campos


macifredo@gmail.com

DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION

38

si renombramos ahora x2 , x1 y x0 por xn+1 , xn y xn1 respectivamente, obtenemos la ecuacion recursiva que caracteriza al metodo de la secante4 :
xn+1 = xn

(xn xn1 )f (xn )


f (xn ) f (xn1 )

(2.6)

Algoritmo 2.4 Metodo de la secante


Dado: f : funcion asociada a la ecuacion f (x) = 0 a resolver, x0 y x1 : dos
aproximaciones iniciales a la solucion, : tolerancia del error, y m: n
umero
maximo de iteraciones
Entrega: s: la solucion aproximada a la ecuacion f (x) = 0, o bien el mensaje
sin solucion aceptable en m iteraciones
Metodo-Secante(f, x0 , x1 , , m)
2:
n1
repeat
4:
if f (xn ) = f (xn1 ) then
return Sin solucion: secante horizontal
6:
else
xn+1 xn (xn xn1 )f (xn )/[f (xn ) f (xn1 )]
8:
nn+1
end if
10:
until |xn xn1 |  o n > m
if |xn xn1 |  then
12:
return xn
else
14:
return sin solucion en m iteraciones
end if
16: end

2.4.3.

M
etodo de Aitken

Este metodo, tambien conocido como metodo de aceleracion de Aitken


o Metodo 2 de Aitken, permite acelerar la convergencia de una sucesion
convergente.
4

Note que esta ecuaci


on es semejante a la utilizada por el metodo de Newton-Raphson,
)f (xn2 )
.
considerando la aproximaci
on f 0 (xn1 ) f (xxn1
n1 xn2

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.5. METODO
DE BAIRSTOW

39

Algoritmo 2.5 Metodo de Aitken


Dado: f : funcion asociada a la sucesion convergente {xn }
n=0 con xn+1 =
f (xn ), x0 : aproximacion inicial a la solucion, : tolerancia del error, y m:
n
umero maximo de iteraciones
Entrega: x : la solucion aproximada a la ecuacion f (x) = 0, o bien el mensaje sin solucion aceptable en m iteraciones
Metodo-Aitken(f, x0 , , m)
2:
x1 f (x0 )
x2 f (x1 )
4:
n0
repeat
6:
xn+3 f (xn+2 )
x0n xn (xn+1 xn )2 /(xn+2 2xn+1 + xn )
8:
x0n+1 xn+1 (xn+2 xn+1 )2 /(xn+3 2xn+2 + xn+1 )
n
0n + 10

10:
until
x n1  o n > m
0 xn
0
if xn xn1  then
12:
return x0n
else
14:
return sin solucion en m iteraciones
end if
16: end

2.5.

M
etodo de Bairstow

En esta seccion veremos un metodo para resolver el caso cuando f (x) =


p(x), es decir f (x) es un polinomio en una variable. As, nos interesara resolver la ecuacion p(z) = 0. Note que hemos cambiado el smbolo de la
variable de x a z para indicar que trabajaremos en el conjunto de los n
umero
complejos C.
Denotaremos nuestro polinomio de grado n > 2 por pn (z) de la forma:
pn (z) = an z n + an1 z n1 + + a1 z + a0

(2.7)

En general, este metodo consiste en encontrar iterativamente factores


cuadraticos de la forma (Az 2 + Bz + C) para pn (z), reduciendo cada vez
en dos el grado del polinomio, es decir, en cada iteracion encontramos un

Miguel Angel Cifredo Campos


macifredo@gmail.com

40

DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION

polinomio pn2 (z) de grado n 2. Como las races complejas se presentan en


pares conjugados, tenemos que:
[z (a + ib)][z (a ib)] = z 2 + 2az + (a2 + b2 ) = z 2 + Bz + C
En lo sucesivo usaremos B = r y C = s, en conformidad con la notacion
propia del metodo. As buscaremos un pn2 (z) que cumpla:
pn (z) = (z 2 rz s)pn2 (z)

(2.8)

Repetiremos el proceso anterior hasta llegar al caso cuando el grado k del


polinomio reducido pk (z), cumpla con k 2 que se resuelve de manera
directa.
Para encontrar los valores de r y s que cumplan con la ecuacion 2.8,
empezaremos con valores iniciales r0 y s0 . Si realizamos la division de pn (z)
entre el factor cuadratico z 2 r0 z s0 , obtenemos el polinomio:
qn2 (z) = bn z n2 + bn1 z n3 + + b3 z + b2
de manera que:
pn (z) = (z 2 r0 z s0 )qn2 (z) + R
donde en residuo esta determinado por:
R = b1 (z r0 ) + b0

(2.9)

y los coeficientes {bi }n0 se calculan recursivamente con las formulas siguientes,
considerando k = 0:
b n = an
bn1 = an1 + rk bn
bi = ai + rk bi+1 + sk bi+2 , para i = n 2, n 3, . . . , 0

(2.10)

Si resulta que R = 0, hemos encontrado el factor cuadratico deseado con


r = r0 y s = s0 , en caso contrario, utilizamos el m
etodo de NewtonRaphson para sistemas de ecuaciones (ver seccion 3.3.1) hasta encontrar los
valores rk y sk que logren que R = 0, para alg
un k > 0. En cuyo caso r = rk ,
s = sk y como R = 0, entonces pn2 (z) = qn2 (z) es el siguiente polinomio a
iterar.

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.5. METODO
DE BAIRSTOW

41

Para lograr R = 0 en la ecuacion 2.9, y como b0 y b1 dependen de rk y sk ,


buscaremos los cambios r y s que logren hacer cero el siguiente sistema
de ecuaciones5 :
b0
r +
rk
b1
b1 (rk + r, sk + s) = b1 +
r +
rk

b0 (rk + r, sk + s) = b0 +

b0
s
sk
b1
s
sk

(2.11)
(2.12)

Por tanto, se debe cumplir:


b0
r +
rk
b1
r +
rk

b0
s = b0
sk
b1
s = b1
sk

(2.13)

El trabajo de Bairstow demostro que podemos obtener las derivadas parciales


de la ecuacion 2.13 a partir de los coeficientes bi con el siguiente sistema
recursivo:
c n = bn
cn1 = bn1 + rk cn
ci = bi + rk ci+1 + sk ci+2 , para i = n 2, n 3, . . . , 0

(2.14)

donde las primeras tres ci corresponden a las derivadas parciales buscadas,


b0
b1
b1
b0
= c1 , s
= r
= c2 y s
= c3 . De esta forma, resolviendo el
es decir: r
k
k
k
k
sistema:
c1 r + c2 s = b0
c2 r + c3 s = b1

(2.15)

estaremos mejorando las aproximaciones de rk y sk con los ajustes:


rk+1 = rk + r
sk+1 = sk + s

(2.16)

hasta que sus errores relativos esten dentro de la tolerancia permitida.


El algoritmo siguiente y su auxiliar, describen el metodo de Bairstow:
5

Hemos simplificado aqu la notaci


on, ya que estrctamente, utilizaramos rk y sk .

Miguel Angel Cifredo Campos


macifredo@gmail.com

42

DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION

Algoritmo 2.6 Metodo de Bairstow (requiere: algoritmo 2.7)


Dado: p: polinomio en una variable asociada la ecuacion p(z) = 0 y representado por (an , an1 , . . . , a0 ); r0 y s0 : aproximaciones iniciales a los
factores cuadraticos, rel : error relativo en porcentaje para los factores
cuadraticos, m: n
umero maximo de iteraciones
Entrega: raices: conjunto de las soluciones a p(z) = 0, o bien el mensaje
sin solucion aceptable en m iteraciones
Metodo-Bairstow(p, r0 , s0 , rel , m)
2:
raices
n grado del polinomio p(z)
4:
while n > 2 do
(q, r, s, mje) Factor-Bairstow(p, r0 , s0 , rel , m)
6:
if mje 6= then
return mje
. error en calculo de factor
8:
else
raices raices ceros del factor cuadratico z 2 rz s
10:
pq
n grado del polinomio p
12:
end if
end while
14:
if n = 2 then
raices raices ceros del polinomio p
16:
else raices raices {s/r}
end if
18: end

Miguel Angel Cifredo Campos


macifredo@gmail.com

2.6. APLICACIONES

43

Algoritmo 2.7 Factor cuadratico para Bairstow (algoritmo 2.6)


Dado: p: polinomio en una variable, representado por (an , an1 , . . . , a0 ); r0
y s0 : aproximaciones iniciales a los factores cuadraticos, rel : error relativo en porcentaje para los factores cuadraticos, m: n
umero maximo de
iteraciones
Entrega: (q(z), r, s, mje): valores que cumplen la ecuacion p(z) = (z 2
rz s)q(z) (donde, q esta representado por sus coeficientes en orden
descendente) y mje=, o bien el mje=sin solucion aceptable en m
iteraciones
Factor-Bairstow(f, r0 , s0 , rel , m)
2:
k0
repeat
4:
Calcula las bi utilizando la ecuacion 2.10
Calcula las ci utilizando la ecuacion 2.14
6:
Determina rk y sk resolviendo el sistema 2.15
Calcula rk y sk aplicando las ecuaciones 2.16
8:
k k+1
until (k > m)
10:
if k > m then
return Sin solucion en m iteraciones
12:
else
q(z) esta representado por las {bi }
14:
return (q, r, s,)
end if
16: end

2.6.

Aplicaciones

Aplicaci
on 2.1 (Modelos poblacionales).
Aplicaci
on 2.2 (Determinacion de valores caractersticos).

Miguel Angel Cifredo Campos


macifredo@gmail.com

44

DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 3
M
etodos de soluci
on de
sistemas de ecuaciones
3.1.

M
etodos iterativos para sistemas lineales

Cuando el n
umero de variables de los sistemas a resolver es elevado (por
ejemplo, arriba de 100) los metodos directos resultan impracticos y recurrimos a los metodos iterativos, en esta seccion presentaremos dos metodos
clasicos fundamentales.

3.1.1.

M
etodo de Jacobi

Dado un sistema lineal:


n
X

aij xj = bi , 1 i n

(3.1)

j=1

podemos despejar la variable xi para obtener una expresion que relacione


(k+1)
(k)
xi
con xi :
(k+1)
xi

n 
X
aij
j=1
j6=i

aii

(k)
xj


+

bi
, 1 i n, aii 6= 0
aii

(3.2)

El metodo de Jacobi consiste basicamente en aplicar la ecuacion 3.2 para cada


una de las variables, empezando con los valores iniciales correspondientes.
45

Miguel Angel Cifredo Campos


macifredo@gmail.com

46

CAPITULO 3. METODOS
PARA SISTEMAS DE ECUACIONES

La forma matricial se deriva de forma similar. Partimos de la ecuacion


Ax = b y el hecho de que podemos descomponer la matriz A como
A=D+L+U
, es decir en sus matrices diagonal principal, triangular inferior y triangular
superior, respectivamente. Por tanto:
Ax = (D + L + U)x = b

(3.3)

y entonces podemos despejar el termino Dx para obtener:


Dx = (L + U)x + b

(3.4)

y como aii 6= 0 para 1 i n, podemos despejar x en Dx para obtener:


x = D1 (L + U)x + D1 b

(3.5)

Utilizando este ecuacion, obtenemos la ecuacion para un paso del metodo de


Jacobi, en forma matricial:
x(k+1) = D1 (L + U)x(k) + D1 b

(3.6)

donde x(k) representa el valor de las variables en la k-esima iteracion, empezando


con el vector x0 . El proceso se detendra cuando la distancia euclideana x(k+1) x(k) < , para una determinada tolerancia del error ,
donde, claro:
" n
#1/2
X
kX Yk =
(xi yi )2
(3.7)
j=1

3.1.2.

M
etodo de Gauss-Seidel

A diferencia del metodo de Jacobi, el Metodo de Gauss-Seidel, utiliza los


(k)
(k+1)
valores previos de xj , 1 j i 1 para calcular el valor de xi
. Esto
nos da la siguiente ecuacion para el metodo de Gauss-Seidel:
!
i1
n
X
X
1
(k+1)
(k)
(k+1)
aij xj
+
aij xj bi
(3.8)
xi
=
aii j=1
j=i+1

Miguel Angel Cifredo Campos


macifredo@gmail.com

3.2. SISTEMAS DE ECUACIONES NO LINEALES

47

El metodo de Gauss-Seidel consiste basicamente en aplicar la ecuacion 3.8


para cada una de las variables, empezando con los valores iniciales correspondientes.
La forma matricial se deriva de forma similar al metodo de Jacobi. De la
ecuacion 3.3, despejamos ahora el termino (D + L)x para obtener:
(D + L)x(k+1) = Ux(k) +b

(3.9)

de donde despejando, encontramos la ecuacion de una iteracion del metodo


de Gauss-Seidel:
x(k+1) = (D + L)1 Ux(k) +(D + L)1 b

(3.10)

Ya que asumimos que aii 6= 0, para 1 i n, sabemos que D + L es no


singular y x(k) esta bien definida para toda iteracion k.

3.2.

Sistemas de ecuaciones no lineales

En la seccion anterior hemos visto, los metodos iterativos basicos para


resolver sistemas lineales. Ahora nos toca revisar metodos fundamentales
para resolver sistemas de ecuaciones no lineales. Los metodos presentados
son extensiones de los vistos en el captulo 2.

3.2.1.

M
etodo iterativo secuencial

Presentamos aqu una generalizacion del metodo visto en la seccion 2.3.2,


donde presentamos el metodo de punto fijo (algoritmo 2.2.
Se trata aqu de resolver el sistema de ecuaciones:
xi = gi (x1 , x2 , . . . , xn ), para, i = 1, 2, . . . , n

(3.11)

Escrito en notacion vectorial, nuestro sistema es simplemente: g(x) = x.


Para aplicar con exito el metodo de punto fijo para sistemas iterando la
ecuacion:
xk+1 = g(xk )
(3.12)
y garantizar su convergencia a una solucion u
nica, requerimos que la funcion
g(x), cumpla con las condiciones del siguiente teorema:

Miguel Angel Cifredo Campos


macifredo@gmail.com

48

CAPITULO 3. METODOS
PARA SISTEMAS DE ECUACIONES

Teorema 3.2.1 (Convergencia del metodo de punto fijo para sistemas (adaptado de [8] pp.131-132)). Sean g1 (x), . . . , gn (x), funciones reales definidas
sobre la hipercaja


R := x = (x1 , x2 , . . . , xn )T | ai xi bi , i = 1, . . . , n
y que satisfacen las siguientes condiciones:

1. gi (x) C[R], i = 1, . . . , n

2. Para cualquier x R : g(x) = [g1 (x), . . . , gn (x)]T R

3. Existe una constante de Lipschitz L < 1 para la cual se cumple la


condicion:
kg(x1 ) g(x2 )k L kx1 x2 k , x1 , x2 R

(3.13)

Entonces el sistema definido por la ecuaci


on 3.11, tiene una soluci
on
u
nica s R y para cualquier x0 R, la sucesi
on {xn } al aplicar la
ecuacion 3.12, converge a dicha soluci
on.

Si la funcion g(x) posee ademas primeras derivadas, una manera de verificar si el metodo de punto fijo para sistemas aplica, es determinando una
cota superior para la constante de Lipschitz (ver [8] p. 132) utilizando la
ecuacion:
#1/2
" n 
X gi 2
(3.14)
L = max
xR
x
j
i,j=1
El algoritmo 3.1 describe los pasos de este metodo:

Miguel Angel Cifredo Campos


macifredo@gmail.com

Y CONVERGENCIA
3.3. ITERACION

49

Algoritmo 3.1 Metodo de punto fijo para sistemas


Dado: g: funcion asociada a la ecuacion x = g(x) a resolver, x0 : valor inicial
de la solucion, : tolerancia del error, m: n
umero maximo de iteraciones
permitidas.
Entrega: x : la solucion aproximada a la ecuacion x = g(x) con un error
, o bien el mensaje: sin convergencia en m iteraciones si la solucion
no converge en las iteraciones y la precision deseada.
Punto-Fijo-Sistemas(g, x0 , , m)
2:
if g(x0 ) = x0 then
. caso excepcional
return x0
4:
else
n0
6:
repeat
xn+1 g(xn )
8:
nn+1
until kxn xn1 k  o n > m
10:
if kxn xn1 k  then
return xn
12:
else
return sin convergencia en m iteraciones
14:
end if
end if
16: end

3.3.
3.3.1.

Iteraci
on y convergencia en sistemas de
ecuaciones
M
etodo de Newton-Raphson para sistemas

El metodo de Newton-Raphson visto en la seccion 2.4.1 tambien se generaliza a sistemas de ecuaciones, basicamente se requiere extender el concepto
de derivada de una funcion, al jacobiano de una funcion vectorial. Es decir,
dado el sistema:
fi (x1 , x2 , . . . , xn ) = 0, para, i = 1, 2, . . . , n

(3.15)

Miguel Angel Cifredo Campos


macifredo@gmail.com

50

CAPITULO 3. METODOS
PARA SISTEMAS DE ECUACIONES

calculamos el jacobiano de Jf (x) como:

Jf (x) =

f1
(x)
x1
f2
(x)
x1

..
.
fn
(x)
x1

f1
(x)
x2
f2
(x)
x2

..
.

..
.
fn
(x)
x2

f1
(x)
xn
f2
(x)
xn

..
.
fn
(x)
xn

(3.16)

Podemos expresar ahora el metodo de Newton-Raphson para sistemas


como la aplicacion iterada de la ecuacion vectorial:
xk+1 = xk [Jf (xk )]1 f (xk )

(3.17)

Algoritmo 3.2 Metodo de Newton-Raphson para sistemas


Dado: f : funcion asociada a la ecuacion f (x) = 0 a resolver, x0 : aproximacion inicial a la solucion, : tolerancia del error, y m: n
umero maximo
de iteraciones
Entrega: s: la solucion aproximada a la ecuacion f (x) = 0, o bien el mensaje sin solucion aceptable en m iteraciones, o bien Jf (x) = 0 en la
iteracion n
Newton-Raphson(f , x0 , , m)
2:
n0
repeat
4:
if Jf (xn ) = 0 then return Jf (xn ) = 0 en la iteracion n
else
6:
xn+1 = xn [Jf (xn )]1 f (xn )
nn+1
8:
end if
until kxn xn1 k  o n > m
10:
if kxn xn1 k  then
return xn
12:
else
return sin convergencia en m iteraciones
14:
end if
end

Miguel Angel Cifredo Campos


macifredo@gmail.com

3.4. APLICACIONES

3.4.

51

Aplicaciones

Aplicaci
on 3.1 (Manipulador robotico de dos eslabones). Considere un manipulador robotico de dos eslabones con parametros L1 , L2 , 1 , 2 que determinan un punto (x, y) en el plano. Resolver los siguiente problemas:
1. (Cinematica directa) Dados L1 , L2 , 1 , 2 , encontrar (x, y)
2. (Cinematica inversa) Dados L1 , L2 , x, y encontrar 1 , 2
3. (Planeacion de la trayectoria) Dado un tiempo t = T , determinar la
trayectoria de la mano del robot para moverse de (x0 , y0 ) a (x1 , y1 )
Aplicaci
on 3.2 (Modelo economico de Leontief).
Aplicaci
on 3.3 (Cadenas de Markov).
Aplicaci
on 3.4 (Sistemas polinomiales multivariables).

Miguel Angel Cifredo Campos


macifredo@gmail.com

52

CAPITULO 3. METODOS
PARA SISTEMAS DE ECUACIONES

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 4
Diferenciaci
on e integraci
on
num
erica
4.1.

Diferenciaci
on num
erica

De nuestros cursos de Calculo, recordamos el uso de lmites para calcular


la derivada de una funcion diferenciable:
f 0 (x) = lm

h0

f (x + h) f (x)
h

Lo que nos sugiere que podemos aproximar f 0 (x) con la ecuacion:


f 0 (x)

f (x + h) f (x)
h

(4.1)

utilizando valores peque


nos de h. Para determinar el error de dicha aproximacion, podemos auxiliarnos con el Teorema de Taylor (1.3.1). Si aproximamos f (x + h) por su polinomio de Taylor de primer orden alrededor de x,
tenemos:
f 00 () 2
f (x + h) = f (x) + f 0 (x)h +
h
(4.2)
2
donde es un valor entre x y x + h. Despejando f 0 (x) obtenemos la aproximacion dada por la formula 4.1, la cual sabemos ahora (por la ecuacion
00
anterior) que tiene un error del orden O(h) ya que f 2() h2 = O(h).
f 0 (x) =

f (x + h) f (x)
+ O(h)
h
53

(4.3)

Miguel Angel Cifredo Campos


macifredo@gmail.com

54

E INTEGRACION
NUMERICA

CAPITULO 4. DIFERENCIACION

6
5
4
f(x+h)-f(x)
3
2
h
1

-2

-1

x
4

x+h
6

-1

Figura 4.1: Estimacion basica de una derivada

Miguel Angel Cifredo Campos


macifredo@gmail.com

NUMERICA

4.1. DIFERENCIACION

55

Ejemplo 4.1.1. La siguiente tabla (4.1) presenta la derivada de cot(x) en


x = 2, obtenida aplicando la ecuacion 4.1 para diferentes valores de h.
Ademas incluimos el error, ya que en este caso sabemos que cot0 (x) = cos1
2 (x)
0
y por tanto cot (2) = 1.2094504 a siete decimales. Para fines comparativos,
hemos agregado en las u
ltimas dos columnas los valores correspon-dientes
al utilizar la f
ormula de diferencias centradas de orden O(h4 ) que presentaremos mas adelante.
Tabla 4.1: Ejemplo comparativo para la derivada de cot(x)
h
0.1
0.05
0.01
0.005
0.001

cot0 (2)
-1.2719025
-1.238831
-1.2150517
-1.2122345
-1.2100046

error O(h)
0.062452083929
0.029380549229
0.005601277957
0.002784043309
0.000554171084

cot0 (2)
-1.2092561
-1.2094386
-1.2094504
-1.2094504
-1.2094504

error O(h4 )
-0.000194298269
-1.1801389e-005
-1.8713e-008
-1.169e-009
-2e-012

Ejemplo 4.1.2. Presentamos en la tabla (4.2) la derivada de ex en x = 1,


obtenida aplicando la ecuacion 4.1 para diferentes valores de h. Como en
el ejemplo anterior, incluimos el error, ya que en este caso sabemos que
(ex )0 = ex y por tanto (ex )0 (1) = 2.7182818 a siete decimales. Para fines comparativos, hemos agregado en las u
ltimas dos columnas los valores correspondientes al utilizar la f
ormula de diferencias centradas de orden O(h4 )
como en el ejemplo previo.
Ejercicio 4.1.1. Calcular las primeras tres columnas de la tabla 4.1 para la
derivada de la funcion tan(x) evaluada en x = /5.
Problema 4.1.1. Investigue la razon por la cual, en la u
ltima columna de
la tabla 4.2, se incrementa el error conforme se reduce el valor de h.
Problema 4.1.2. Investigue la existencia de una formula para f 00 (x) con un
error del orden O(h).
Con el proposito de encontrar mejores formulas para derivacion de funciones, aplicaremos en la siguiente seccion, el metodo de sustituir la funcion
f (x) por un polinomio interpolante. Para esto utilizaremos los polinomios

Miguel Angel Cifredo Campos


macifredo@gmail.com

56

E INTEGRACION
NUMERICA

CAPITULO 4. DIFERENCIACION
Tabla 4.2: Ejemplo comparativo para la derivada de f (x) = ex
h
0.1
0.01
0.001
0.0001
1e-005
1e-006
1e-007

e0 (2)
2.858842
2.7319187
2.7196414
2.7184177
2.7182954
2.7182832
2.718282

error O(h)
-0.140560126415
-0.013636827328
-0.001359594074
-0.000135918624
-1.3591498e-005
-1.358972e-006
-1.39947e-007

e0 (2)
2.7182728
2.7182818
2.7182818
2.7182818
2.7182818
2.7182818
2.7182818

error O(h4 )
9.071733e-006
9.06e-010
0.0
-1e-012
-2.2e-011
2e-010
-1.169e-009

de Lagrange, ya que nos permiten tambien calcular la derivada en el caso


de no tener una formula matematica, sino solo un n
umero finito de puntos
(xi , yi ). para i = 1, 2, ..., n.

4.1.1.

F
ormulas de diferencia progresiva y regresiva

Basicamente, la idea para obtener estas formulas, es sustituir la funcion a


derivar f (x) por su polinomio interpolante de Lagrange pn (x) obtenido a partir
de (n + 1) puntos xi , n0 i n n0 , para despues aproximar f 0 (x) con
p0n (x). Considerando puntos equidistantes separados una distancia h, para
expresar las formulas de f 0 (x0 ), utilizaremos la notacion siguiente:
fi = f (xi ), donde xi = x0 + ih, i = n0 , . . . , n n0

(4.4)

Tenemos entonces los siguientes tres casos de formulas de diferencias, en base


a los valores de n0 :
1. Diferencias regresivas, cuando n n0 = 0
2. Diferencias progresivas, cuando n0 = 0
3. Diferencias centradas, cuando n0 = n/2

4.1.2.

F
ormula de tres puntos

Utilizando n = 2 y n0 = 1 obtenemos la formula de diferencias centradas


para f 0 (x0 ), que aparece en la tabla 4.3 (adaptada de [16])

Miguel Angel Cifredo Campos


macifredo@gmail.com

NUMERICA

4.1. DIFERENCIACION

57

Tabla 4.3: Formulas de diferencias centradas de orden O(h2 ) para derivadas


f1 f1
2h
f

2f0 + f1
1
f 00 (x0 ) =
h2
f 0 (x0 ) =

(4.5)

Tabla 4.4: Formulas de diferencias centradas de orden O(h4 ) para derivadas


f2 + 8f1 8f1 + f2
12h
f2 + 16f1 30f0 + 16f1 f2
00
f (x0 ) =
12h2
f 0 (x0 ) =

(4.6)

Problema 4.1.3. Verificar experimentalmente las siguientes formulas de orden O(h2 ) para la tercera y cuarta derivadas:
f2 f1 + 2f1 f2
2h3
f2 4f1 + 6f0 4f1 f2
f (4) (x0 ) =
h4
f (3) (x0 ) =

y justificarlas paso a paso mediante la aplicacion de los polinomios de Lagrange.

4.1.3.

F
ormula de cinco puntos

Utilizando n = 4 y n0 = 2 obtenemos la formula de diferencias centradas


para f 0 (x0 ), que aparece en la tabla 4.4(adaptada de [16])
Una implementacion en Scheme para el calculo de f 0 (x0 ) anterior se presenta en el listado 4.1:

Miguel Angel Cifredo Campos


macifredo@gmail.com

58

E INTEGRACION
NUMERICA

CAPITULO 4. DIFERENCIACION
Codigo Scheme 4.1: Funcion para calcular f 0 (x0 ) seg
un ecuacion 4.4

; ; d e r i v a d a num e r i c a con h
; ; [ por d i f e r e n c i a s c e n t r a d a s O( h 4 ) ]
( define ( d e r i v a conh f x h )
( / (+ ( ( f (+ x h h ) ) ) ( 8 ( f (+ x h ) ) )
( 8 ( f ( x h ) ) ) ( f ( x h h ) ) )
( 12 h ) ) )

Problema 4.1.4. Verificar experimentalmente las siguientes formulas de orden O(h4 ) para la tercera y cuarta derivadas:
f3 + 8f2 13f1 + 13f1 8f2 + f3
8h3
f3 + 12f2 39f1 + 56f0 39f1 + 12f2 f3
f (4) (x0 ) =
6h4
f (3) (x0 ) =

y justificarlas paso a paso mediante la aplicacion de los polinomios de Lagrange.

4.2.

Integraci
on num
erica

En las siguientes dos secciones veremos dos de las llamadas formulas


de
R b cuadratura de Newton-Cotes, las cuales aproximan una integral definida
f (x)dx subdividiendo el intervalo [a, b] en subintervalos igualmente espaa
ciados.

4.2.1.

M
etodo del trapecio

Rb
Dado el problema de aproximar la integral a f (x)dx, el metodo del trapecio
divide el intervalo [a, b] en n subintervalos [xi , xi+1 ], donde cada xi esta definida por:
ba
xi = a + ih, para, h =
, i = 0, 1, . . . , n
(4.7)
n
y se integra cada subitervalo aproximando el area bajo la funcion por el area
del trapecio cuya base es h y su altura promedio es [f (xi ) + f (xi+1 )]/2. Por

Miguel Angel Cifredo Campos


macifredo@gmail.com

NUMERICA

4.2. INTEGRACION

59

lo tanto la aproximacion de nuestra integral es:


Z
n
1X
[f (xi1 ) + f (xi )]h
f (x)dx
2 i=1
n

hX
[f (xi1 ) + f (xi )]
2 i=1

X
h
[f (a) + f (b)] + h
f (xi )
2
i=1

(4.8)

n1

de donde resulta nuestra formula principal de la regla compuesta del trapecio:


"
#
Z
n1
X
h
f (x)dx =
f (a) + f (b) + 2
f (xi ) + Rn
(4.9)
2
i=1
El error Rn del metodo del trapecio, se deriva mediante la integracion del
polinomio interpolador lineal de Lagrange para f (x) y asume la existencia
de f 00 (x):
h2 (b a) 00
f (c)
(4.10)
Rn =
12
para alguna c entre a y b.

4.2.2.

M
etodos de Simpson

Existen varias reglas o metodos de Simpson para integracion, a continuacion presentamos la llamada regla compuesta de Simpson.
A diferencia del metodo trapezoidal, que utiliza un polinomio interpolador
lineal, el metodo de Simpson sustituye f (x) por un interpolador de Lagrange
de segundo grado p2 (x), logrando con ello una reduccion en el error por
truncamiento.
En este caso integramos cada tres puntos (i.e. cada dos subintervalos)
obteniendo:
Z xi+1
h
p2 (x)dx = [f (xi1 ) + 4f (xi ) + f (xi+1 )]
(4.11)
3
xi1
por lo que la formula resultante es:
Z b
ba
[f (x) + f (b) + 4A + 2B] + O(h4 )
f (x)dx =
3n
a
donde

(4.12)

Miguel Angel Cifredo Campos


macifredo@gmail.com

60

E INTEGRACION
NUMERICA

CAPITULO 4. DIFERENCIACION
n es un n
umero par
h = (b a)/n
P
A = n/2
i=1 f [a + (2i 1)h]
P(n/2)1
B = i=1
f (a + 2ih)
O(h4 ) representa el orden del error

Presentamos en el listado 4.2 una implementacion en Scheme de la regla


compuesta de Simpson:

Miguel Angel Cifredo Campos


macifredo@gmail.com

NUMERICA

4.2. INTEGRACION

10

12

14

16

18

20

61

Codigo Scheme 4.2: Funcion para la regla compuesta de Simpson


; aproxima una i n t e g r a l d e f i n i d a
; u t i l i z a n d o l a r e g l a compuesta de Simpson
( define ( simpson f a b h )
( l e t ( (m ( c e i l i n g ( / ( b a )
( 2 h ) ) ) )
( n ( 2 m) ) )
( ( / ( b a )
( 3 n ) )
(+ ( f a )
( f b)
( 4 ( s u m a t o r i a
(lambda( i )
( f (+ a ( 2 i h )
( h ) ) ) )
1 (/ n 2 ) ) )
( 2 ( s u m a t o r i a
(lambda( i )
( f (+ a ( 2 i h ) ) ) )
1 ( ( / n 2 )
1)))))))
Ejemplo 4.2.1. La
R 1 siguiente interaccion presenta como calcular numericamente la integral 0 4sen(3x)dx para h = 103 .
> ( simpson (lambda( x )
( 4 ( s i n ( 3 x ) ) ) )
0 1 0.001)
2.6533233288017897

4.2.3.

Integraci
on de Romberg

Los dos metodos de integracion previos, requieren como parametro, ya


sea h o n para realizar los calculos, en el metodo de Romberg, se utiliza
 (la tolerancia del error) y el procedimiento va subdividiendo el intervalo
inicial [a, b] recursivamente, en tantos subintervalos como sea necesario. Esto

Miguel Angel Cifredo Campos


macifredo@gmail.com

62

E INTEGRACION
NUMERICA

CAPITULO 4. DIFERENCIACION

se logra combinando el metodo del trapecio, con el metodo de extrapolacion


de Richardson.
Definimos primeramente la sucesion de particiones P1 , P2 , . . . , Pk en base
a las siguientes ecuaciones recursivas:
n1 = 1
nk = 2nk1 , k 2
h1 = b a
hk1
, k2
hk =
2
Pk : xi = a + (i 1)hk , 0 i nk
La aplicacion del metodo del trapecio a la sucesion de particiones, nos lleva
a las siguientes ecuaciones de Romberg:
h
[f (a) + f (b)]
2(
)
nk1 
X
1
1
=
Rk1,1 + hk1
f a + (i )hk1
2
2
i=1

R1,1 =
Rk,1

(4.13)

Aplicando ahora el metodo de extrapolacion de Richardson, obtenemos:


Z b
4Rk,1 Rk1,1
f (x)dx =
+ O(h4k ), k 2
(4.14)
3
a
Para acelerar la convergencia asociada a la ecuacion 4.14, aplicamos la extrapolacion de Richardson a la sucesion {Rk,1 }, para obtener:
Rk,i =

4i1 Rk,i1 Rk1,i1


, k 2, 2 i k
4i1 1

Con lo cual podemos expresar el metodo de Romberg, como:


Z b
f (x)dx = Rk,i + O(h2i
k ), k 2, 2 i k

(4.15)

(4.16)

Una manera de definir el algoritmo de Romberg, es utilizar la sucesion de


valores Ri,i generados por la ecuacion 4.16 y detener el proceso en la iteracion
i que cumpla |Ri,i Ri1,i1 | <  para un  dado.

Miguel Angel Cifredo Campos


macifredo@gmail.com

NUMERICA

4.2. INTEGRACION

10

12

14

16

18

20

22

24

26

28

30

63

Codigo Scheme 4.3: Funcion para el metodo de Romberg


( define ( romberg f a b eps )
( define ( hk k ) ; h d e l kesimo s u b i n t e r v a l o
( / ( b a ) ( expt 2 ( k 1 ) ) ) )
( define ( romb1 k ) ; c a s o R( k , 1 )
( i f (= k 1 )
( ( / ( hk 1 ) 2 )
(+ ( f a ) ( f b ) ) )
( 1/2 (+ ( romb1 ( k 1 ) )
( ( hk ( k 1 ) )
( sumatoria
(lambda( i )
( f (+ a
( ( ( 2 i ) 1 )
( hk k ) ) ) ) )
1 ( expt 2 ( k 2 ) ) ) ) ) ) ) )
( define ( romb i j ) ; c a s o R( i , j )
( i f (= j 1 )
( romb1 i )
(+ ( romb i ( j 1 ) )
( / ( ( romb i ( j 1 ) )
( romb ( i 1 ) ( j 1 ) ) )
( ( expt 4 ( j 1 ) ) 1 ) ) ) ) )
; ciclo principal
(do ( ( k 1 (+ k 1 ) )
(R ( romb1 1 ) ( romb (+ k 1 ) (+ k 1 ) ) )
( Rs ( romb 2 2 ) ( romb (+ k 2 ) (+ k 2 ) ) ) )
((< ( abs ( Rs R) ) eps ) Rs )
( d i s p l a y ( r ( , k : , k ) , ( romb k k ) ) ) ; o p c i o n a l
( newline )
; opcional
))
Ejemplo 4.2.2. Evaluemos la siguiente integral que aproxima la constante
de Euler:

Z 1
1
1
=
+
dt
1 t ln t
0
Ya que en t = 0 y en t = 1 la funcion a integrar esta indeterminada, utilizaremos para la aproximacion los lmites a = 106 y b = 1 106 . Consideremos

Miguel Angel Cifredo Campos


macifredo@gmail.com

64

E INTEGRACION
NUMERICA

CAPITULO 4. DIFERENCIACION

una tolerancia de 104 . La siguiente interaccion en Scheme nos muestra la


solucion por el metodo de Romberg.
> ( romberg (lambda( t )
(+ ( / 1 ( 1 t ) ) ( / 1 ( l o g t ) ) ) )
10 e6 ( 1 10 e 6) 0 . 0 0 0 1 )
( r (1 : 1) 0.7065618370052935)
( r (2 : 2) 0.6070498210096675)
( r (3 : 3) 0.5880919525304922)
( r (4 : 4) 0.5814810778664038)
( r (5 : 5) 0.5789083665486172)
( r (6 : 6) 0.5778819093890034)
( r (7 : 7) 0.5774707636230789)
0.5772417545073438
>
El valor de esta famosa constante a 10 decimales es 0.5772156649
Ejercicio 4.2.1. Eval
ue por el metodo de Romberg la siguiente integral
6
considerando  = 10
Z 1
ln(1 + x)
dx
1 + x2
0
Calcule el error relativo de su solucion, sabiendo que el valor exacto es

4.2.4.

ln 2
8

M
etodo de cuadratura gaussiana

Antes de resolver la integracion de el intervalo general [a, b], resolveremos


el problema mas sencillo:
Z
1

f (x)dx

(4.17)

esto es necesario, debido a que utilizaremos funciones ortogonales en el intervalo [1, 1], en particular utilizaremos los polinomios de Legendre de grado
n, que denotaremos Pn (x) para aproximar la integral buscada, es decir:
Z 1
Z 1
f (x)dx
Pn (x)dx
(4.18)
1

En lugar de utilizar puntos equidistantes para particionar el intervalo


de integracion [1, 1] (como fue el caso en los metodos anteriores) ahora

Miguel Angel Cifredo Campos


macifredo@gmail.com

NUMERICA

4.2. INTEGRACION

65

consideramos los nodos xi y los pesos wi como parametros para optimizar la


aproximacion, es decir:
Z 1
n
X
f (x)dx
wi f (xi ), 1 xi 1, 1 i n.
(4.19)
1

i=1

Los valores de los nodos xi corresponden a los ceros de los polinomios de


Legendre Pn (x) y los pesos wi se pueden calcular con la ecuacion:
Z 1Y
n
x xj
dx
(4.20)
wi =
1 i=1 xi xj
j6=i

Ya que los valores de xi y wi normalmente se utilizan para n relativamente


peque
na, estos se presentan en forma tabular, como en la tabla 4.5 (ver por
ejemplo [8] p. 270):
Tabla 4.5: Nodos y pesos para cuadratura gaussiana
n
1
2
3
4
5

xi
0
0.5773502692
0.7745966692
0
0.8611363116
0.3399810436
0.9061798459
0.5384693101
0

wi
2
1
0.5555555556
0.8888888889
0.3478548451
0.6521451549
0.2369268851
0.4786286705
0.5688888889

Para poder resolver el problema en el intervalo general [a, b], es necesario


ajustar los valores de xi y wi a x0i y wi0 respectivamente, mediante un cambio
de variable, es decir
Z b
n
X
f (x)dx
wi0 f (x0i ), a xi b, 1 i n.
(4.21)
a

i=1

donde
x0i =

a+b ba
ba
+
xi , wi0 =
wi
2
2
2

(4.22)

Miguel Angel Cifredo Campos


macifredo@gmail.com

E INTEGRACION
NUMERICA

CAPITULO 4. DIFERENCIACION

66

de donde obtenemos nuestra formula principal para el metodo de cuadratura


gaussiana:1
b

Z
a

a+b ba
baX
wi f (
+
xi )
f (x)dx
2 i=1
2
2

(4.23)

para a xi b, 1 i n
Proyecto 4.1. Construya un programa en Scheme o en alg
un otro lenguaje,
para obtener los datos de la tabla 4.5 correspondiente a un entero n > 1

4.3.

Integraci
on m
ultiple

Para evaluar integrales m


ultiples en regiones rectangulares, podemos aplicar
los metodos de las secciones previas de una manera similar a la composicion
de funciones. Por ejemplo para el caso bidimensional tenemos:

ZZ
Z b Z d
f (x, y)dA =
f (x, y)dy dx
(4.24)
a

donde R = {(x, y)|a x b, c y d}, para ciertas valores a, b, c, d R


Para este caso, un metodo de solucion es aplicar primero la regla compuesta de Simpson (ecuacion 4.12) para aproximar
Z d
f (x, y)dy
(4.25)
c

donde asumimos xi como constante.


Subdividiendo [c, d] en un n
umero par m de subintervalos, con k = (d
c)/m, entonces yj = c + jk para 0 j m, y podemos escribir:
Z d
k
(4.26)
f (x, y)dy [f (x, y0 ) + 4Ax + 2Bx + f (x, ym )]
3
c
donde
Ax =
1

Pm/2
j=1

f (x, y2j1 )

Este metodo se conoce tambien como metodo de Gauss-Legendre, el cual no debe


confundirse con el llamado algoritmo de Gauss-Legendre, utilizado para aproximar el valor
de .

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.4. APLICACIONES
Bx =

P(m/2)1
j=1

67

f (x, y2j )

Podemos ahora escribir nuestra integral doble como:


Z bZ d
Z b
Z
k b
f (x, y)dydx
f (x, y0 )dx + 4
Ax dx
3 a
a
c
a
Z b
Z b

f (x, ym )dx
Bx dx +
+2
a

(4.27)

Ahora aplicamos de nuevo la regla compuesta de Simpson, a cada una de las


integrales del lado derecho, donde cada una de ellas tiene la forma siguiente
y se aplican para yj con 0 j m
Z

f (x, yj )dx
a

h
[f (x0 , yj ) + 4A + 2B + f (xn , yj )]
3

(4.28)

donde
A=

Pn/2

B=

P(n/2)1

i=1
i=1

f )(x2i1 , yj )
f (x2i , yj )

donde xi = a + ih para 0 i n.

4.4.

Aplicaciones

Aplicaci
on 4.1 (Generacion de variables aleatorias).
Aplicaci
on 4.2 (Generacion de tablas de distribuciones de probabilidad).
Aplicaci
on 4.3 (Cinematica de un robot de dos eslabones). Dada una funcion polinomial que describe la trayectoria de la mano de un robot de dos
eslabones, calcular su velocidad y aceleracion (continuacion de la aplicacion
3.1).
Aplicaci
on 4.4 (Centros de gravedad).

Miguel Angel Cifredo Campos


macifredo@gmail.com

68

E INTEGRACION
NUMERICA

CAPITULO 4. DIFERENCIACION

Miguel Angel Cifredo Campos


macifredo@gmail.com

Captulo 5
Soluci
on de ecuaciones
diferenciales
[Un teorema fundamental del
analisis numerico:] consistencia
+ estabilidad = convergencia
Germund Dahlquist[28]

5.1.

M
etodos de un paso

Definici
on 5.1.1 (Metodo de un paso). Llamamos metodo de un paso para
resolver el problema de valor inicial
y 0 = f (x, y),

y(x0 ) = y0 ,

x0 x b

(5.1)

a un procedimiento de integracion dado por


yn+1 = ayn + h[bf (xn , yn )]

(5.2)

donde h = (b x0 )/N , y n = 0, 1, . . . , N 1

5.1.1.

M
etodo de Euler y formas mejorada

El metodo de Euler utiliza a = 1, b = 1 en la ecuacion 5.2, por lo cual


emplea:
yn+1 = yn + hf (xn , yn )
(5.3)
69

Miguel Angel Cifredo Campos


macifredo@gmail.com

DE ECUACIONES DIFERENCIALES
CAPITULO 5. SOLUCION

70

Este se obtiene de considerar una aproximacion lineal a la para la solucion exacta Y (x) del problema de valor inicial (ecuacion 5.1. Es decir, consideramos
que Y (x0 ) = y0 y:
Y 0 (x) = f [x, Y (x)],

x0 x b

(5.4)

La aproximacion lineal de Y 0 (x) se representa como:


Y 0 (x)

Y (x + h) Y (x)
h

(5.5)

de donde, despejando Y (x + h) obtenemos:


Y (x + h) Y (x) + hY 0 (x)
Y (x) + hf [x, y(x)]
Denotando Y (x+h) como yn+1 y f [x, y(x)] por f (xn , yn ) obtenemos la formula del metodo de Euler (ecuacion 5.3)
El metodo de Euler es uno de los mas basicos, por lo que es solo un punto
de partida en nuestro estudio. Veamos dos metodos1 que de manera directa
mejoran el metodo de Euler:
Metodo de Heun. Mejora el calculo de la pendiente, utilizando dos puntos (inicial y final de cada intervalo) para luego obtener un promedio,
es decir:2
0
yi+1
= yi + hf (xi , yi )
0
f (xi , yi ) + f (xi+1 , yi+1
)
yi+1 = yi + h
2

(5.6)

Metodo del punto medio. En este caso se mejora la estimacion de la


pendiente, utilizando el punto medio entre xi y xi+1 . Por tanto, la
formula de iteracion puede escribirse como:
yi+1 = yi + hf (xi+1/2 , yi+1/2 )
1

(5.7)

De hecho, estos metodos se consideran tambien entre los metodos de Runge-Kutta,


que veremos en la secci
on 5.1.2 (ver [5] pp. 272-276)
2
Existen varias formas de representar estas ecuaciones.

Miguel Angel Cifredo Campos


macifredo@gmail.com

5.1. METODOS
DE UN PASO

71

Codigo Scheme 5.1: Funcion euler para aproximar la solucion a y 0 = f (x, y)


2

10

; ; m e to do de E u l e r para y= f ( x , y ) con y ( a)=ya


( define ( e u l e r f a b ya n )
( l e t ( ( h ( / ( b a ) n ) ) )
(do ( ( k 0 (+ k 1 ) )
( x a (+ x h ) )
( y ya
(+ y ( h ( f x y ) ) ) ) ; un paso
( data ( )
( cons ( l i s t k ( f t 7 x ) ( f t 7 y ) )
data ) ) )
((> k n ) ( r e v e r s e data ) ) ) ) )

Ejemplo 5.1.1. Apliquemos el metodo de Euler para determinar la solucion


numerica de la ecuacion
y 0 = y 2 xexy

(5.8)

para 0 x 1 y condicion inicial y(0) = 1. Utilice n = 10. Las interacciones


con la funcion euler son las siguientes:
>( e u l e r (lambda( x y )
( ( expt y 2 ) x ( exp ( x y ) ) ) )
0 1 . 1 10)
((0 0 1)
(1 0.1 1)
(2 0.2 1.0040657)
(3 0.3 1.0130887)
(4 0.4 1.02818)
(5 0.5 1.0507423)
(6 0.6 1.082568)
(7 0.7 1.1259675)
(8 0.8 1.183931)
(9 0.9 1.2603152)
(1 0 1 . 0 1 . 3 6 0 0 2 0 5 ) )
>

Miguel Angel Cifredo Campos


macifredo@gmail.com

DE ECUACIONES DIFERENCIALES
CAPITULO 5. SOLUCION

72

5.1.2.

M
etodos de Runge-Kutta

Los metodos de Runge-Kutta extienden la formula general de los metodos


de un paso (ecuacion 5.2), utilizando el siguiente esquema (ver por ejemplo
[6] pp. 734-735)
yi+1 = yi + h(xi , yi , h)
(5.9)
donde (xi , yi , h) se denomina funcion incremento y representa una aproximacion de la pendiente del intervalo [xi , xi+1 ]. Dicha aproximacion se calcula
como una combinacion lineal de las pendientes en puntos especficos del intervalo.
M
etodo de Runge-Kutta de cuarto orden
Este es uno de los metodos mas utilizados, ya que resuelve el problema
de valor inicial con un error del orden O(h4 )
h
yi+1 = yi + (k1 + 2k2 + 2k3 + k4 )
6

(5.10)

donde
k1 = f (xi , yi )
k2 = f (xi + h2 , yi + h2 k1 )
k3 = f (xi + h2 , yi + h2 k2 )
k4 = f (xi + h, yi + hk3 )
Podemos implementar el metodo de Runge-Kutta de orden 4, mediante
el codigo indicado en 5.2:

Miguel Angel Cifredo Campos


macifredo@gmail.com

5.2. METODOS
DE PASOS MULTIPLES

73

Codigo Scheme 5.2: Funcion runge-kutta-4 para aproximar la solucion a


y 0 = f (x, y)
2

10

12

14

16

18

; ; M e to do de RungeKutta de orden 4 para y= f ( x , y )


( define ( rungekutta 4 f x0 xn y0 h )
( l e t ( (m ( / h 2 ) )
( pasork4
(lambda( x y )
( l e t ( ( k1 ( f x y ) )
( k2 ( f (+ x m) (+ y ( m k1 ) ) ) )
( k3 ( f (+ x m) (+ y ( m k2 ) ) ) )
( k4 ( f (+ x h ) (+ y ( h k3 ) ) ) ) )
(+ y ( ( / h 6 )
(+ k1 ( 2 k2 ) ( 2 k3 ) k4 ) ) ) ) ) ) )
( l e t c i c l o ( ( x x0 ) ( y y0 ) ( data ( l i s t ( l i s t x0 y0 ) ) ) )
( cond ((>= (+ x h ) xn ) ( r e v e r s e data ) )
( else
( c i c l o (+ x h )
( pasork4 x y )
( cons ( l i s t ( f t 7 (+ x h ) )
( f t 7 ( pasork4 x y ) ) )
data ) ) ) ) ) ) )
Problema 5.1.1. Aplique el metodo de Euler y el metodo de Runge-Kutta
para resolver la ecuacion y 0 = 2x + cos(y) con y(0) = 0. Experimente y compare con diferentes parametros y grafique sus resultados de manera similar a
la figura 5.1.

5.2.

M
etodos de pasos m
ultiples

Definici
on 5.2.1 (Metodo de pasos m
ultiples, adaptado de [8]). Llamamos
metodo de pasos multiples o metodo multipaso para resolver el problema de
valor inicial (ver ecuacion 5.1) a un procedimiento de integracion dado por
yn+1 = hcf (xn+1 , yn+1 ) +

m1
X
i=0

[ai yni + hbi f (xni , yni )]

(5.11)

Miguel Angel Cifredo Campos


macifredo@gmail.com

DE ECUACIONES DIFERENCIALES
CAPITULO 5. SOLUCION

74

Figura 5.1: Campo direccional para y 0 = 2x + cos(y) y trayectoria para


y(0) = 0, en [3, 3] [3, 3]
donde m > 1, h = (b x0 ) y n = m 1, m, . . . , N 1. Es un metodo de m
pasos siempre que a2m1 + b2m1 > 0. Si c = 0 el metodo es explcito o abierto,
en caso contrario, el metodo es implcito o cerrado.

5.2.1.

M
etodo de Adams-Bashforth

Este es un metodo abierto ya que yn+1 se determina explcitamente.


El problema de valor inicial a resolver es:
y 0 = f (x, y), para y(x0 ) = y0 , x0 x < b

(5.12)

Considerando que estamos en la iteracion n y que hemos obtenido la solucion


exacta Yn = y(xn ), podemos integrar la ecuacion anterior desde xn a xn+1 :
Z

xn+1

xn+1

y dx =
xn

f [x, Y (x)]dx
xn

(5.13)

Miguel Angel Cifredo Campos


macifredo@gmail.com

5.2. METODOS
DE PASOS MULTIPLES

75

de donde encontramos:
Z

xn+1

f [x, Y (x)]dx

Yn+1 = Yn +

(5.14)

xn

Para estimar la integral de la ecuacion anterior, utilizaremos un polinomio


interpolador de Lagrange pn (x) determinado por los puntos
(x0 , F0 ), . . . , (xn , Fn )
donde Fi = F( xi ), 0 i n, cumple con Fi = Y 0 (xi ) = f [xi , Y (xi )].
Desarrollando las diferencias divididas en terminos de Fn obtenemos la
formula de diferencias regresivas de Newton siguiente:
pn (x) =

n
X

k
(1)k (s
k ) ( Fn )

(5.15)

k=0

La formula general para el metodo de Adams-Bashforth de orden m:




1
5
0
0
2 0
m1 0
yn+1 = yn + h yn + (yn ) + ( yn ) + + cm1 (
yn )
2
12
R 0 s 
donde cm1 = (1)m1 1 m1
ds

(5.16)

Proyecto 5.1.RConstruir
un programa de computadora para calcular el valor
0 s
de la integral 1 k ds, y aplquelo para determinar las formulas para el
metodo de Adams-Bashforth de orden 6 y 7.
Dos dos metodos de Adams-Bashforth mas utilizados, son los de orden 3
y 4, los cuales corresponden a las formulas siguientes:
Metodo Adams-Bashforth de orden 3:
h
yn+1 = yn + [23f (xn , yn ) 16f (xn1 , yn1 ) + 5f (xn2 , yn2 )] (5.17)
12
con error por truncamiento del orden O(h4 )
Metodo Adams-Bashforth de orden 4:
h
yn+1 = yn + [55f (xn , yn ) 59f (xn1 , yn1 )
24
+ 37f (xn2 , yn2 ) 9f (xn3 , yn3 )]
con error por truncamiento del orden O(h5 )

(5.18)

Miguel Angel Cifredo Campos


macifredo@gmail.com

DE ECUACIONES DIFERENCIALES
CAPITULO 5. SOLUCION

76

5.2.2.

M
etodo de Adams-Moulton

Este es un metodo cerrado, ya que yn+1 se determina implcitamente. La


tecnica para obtener las formulas es similar al caso de Adams-Bashforth.
Presentamos las formulas asociadas a los metodos de Adams-Moulton
orden 3 y 4:
Metodo Adams-Moulton de orden 3:
h
[9f (xn+1 , yn+1 ) + 19f (xn , yn )
24
5f (xn1 , yn1 ) + 2f (xn2 , yn2 )]

yn+1 = yn +

(5.19)

con error por truncamiento del orden O(h5 )


Metodo Adams-Moulton de orden 4:
h
[251f (xn+1 , yn+1 ) + 646f (xn , yn )
720
264f (xn1 , yn1 ) + 106f (xn2 , yn2 )
19f (xn3 , yn3 )]

yn+1 = yn +

(5.20)

con error por truncamiento del orden O(h6 )

5.3.

Sistemas de ecuaciones diferenciales ordinarias

Los metodos descritos en las secciones previas para resolver el problema


de valor inicial (ecuacion 5.1) se generalizan de forma directa para resolver el
problema de valor inicial generalizado, para un sistema de ecuaciones diferenciales de primer orden.
Definici
on 5.3.1 (Problema de valor inicial generalizado).
yi0 = fi (x, y1 , y2 , . . . , yn ),

yi (x0 ) = yi,0 ,

x0 x b

(5.21)

Para demostrar la existencia y unicidad de la solucion al problema anterior, es necesario que las funciones fi cumplan con la condicion de Lipschitz
para funciones de varias variables (ver [5] pp. 313-314)

Miguel Angel Cifredo Campos


macifredo@gmail.com

5.4. APLICACIONES

77

Consideremos el caso de un sistema de dos ecuaciones, a resolver por el


metodo de Euler:
y1,n+1 = y1,n + hf1 (xn , y1,n , y2,n ),
y2,n+1 = y2,n + hf2 (xn , y2,n , y2,n ),

n0
n0

(5.22)

El proceso de realiza de forma simultanea, con las condiciones iniciales y1 (x0 ) =


y1,0 y y2 (x0 ) = y2,0 .
De manera similar podemos desarrollar las ecuaciones para el caso del
metodo de Runge-Kutta de orden 4.
Proyecto 5.2 (Convergencia vs errores). Considere las diferencias en enfasis
entre los ordenes en la velocidad de convergencia de los metodos, y el orden de
los errores por truncamiento, ambos con respecto al valor de h. Sugerencia:
Consulte el excelente ensayo de Lloyd N. Trefethen [26, p. 11].

5.4.

Aplicaciones

Aplicaci
on 5.1 (Redes de circuitos electricos).
Aplicaci
on 5.2 (Simulacion de un pendulo).
Aplicaci
on 5.3 (Ecuaciones de Lorenz: un modelo de conveccion).

Miguel Angel Cifredo Campos


macifredo@gmail.com

78

DE ECUACIONES DIFERENCIALES
CAPITULO 5. SOLUCION

Miguel Angel Cifredo Campos


macifredo@gmail.com

Bibliografa
[1] H. Abelson, G. J. Sussman, con J. Sussman. Structure and Interpretation of Computer Programs, 2/e. MIT Press, 1996. Disponible electronicamente en http://mitpress.mit.edu/sicp/
[2] X. Aberth. Introduction to Precise Numerical Methods. Academic Press,
2008
[3] S. Banach. Calculo diferencial e integral. Coleccion de Textos Politecnicos. Serie Matematicas. Editorial Limusa, 1996 (original en polaco, 1929)
[4] L. Blum, F. Cucker, M. Shub, S. Smale. Complexity and Real Computation. Springer-Verlag, New York, 1998
[5] R. L. Burden, J. D. Faires. An
alisis numerico. 7ma. edicion. Thomson
Learning. 2002
[6] S. C. Chapra, R. P. Canale. Metodos numericos para ingenieros: con
programas de aplicacion, 4/e McGraw-Hill Interamericana, 2003
[7] B. P. Demidovich, I. A. Maron. Computational Mathematics. MIR Publishers, Mosc
u, 1973
[8] M. Friedman, A. Kandel. Fundamentals of Computer Numerical Analysis. CRC Press, Inc. 1994
[9] N. Gershenfeld. The Nature of Mathematical Modeling. Cambridge University Press, 1999
[10] D. Goldberg. What every computer scientist should know about floating
point arithmetic. Computing Reviews, ACM, march 1991
79

Miguel Angel Cifredo Campos


macifredo@gmail.com

80

BIBLIOGRAFIA

[11] R. L. Graham, D. E. Knuth, O. Patashnik. Concrete Mathematics: A


foundation for computer science, 2/e. Addison-Wesley Publ. Co., 1994
[12] R. W. Hamming. Numerical Methods for Scientists and Engineers, 2/e.
Dover, 1986
[13] IEEE Computer Society. IEEE Standard for Binary Floating Point
Arithmetic. IEEE Std 754-1985
[14] James y James. Mathematics Dictionary, 5/e. Van Nostrand Reinhold,
N.Y. 1992
[15] D. E. Knuth. The Art of Computer Programming, Volume 2: Seminumerical Algorithms, 2/e. Addison-Wesley Publ. Co., 1981
[16] John H. Mathews, Kurtis D. Fink. Metodos Numericos con MATLAB,
3/e. Prentice-Hall, 2000
[17] C. Moler. Floating points:IEEE Standard unifies arithmetic model.
Cleves Corner. Disponible en
http://www.mathworks.com/company/newsletters/news notes/
pdf/Fall96Cleve.pdf
[18] C. Moler. Numerical Computing with MATLAB. Disponible en:
http://www.mathworks.com/moler/index.html
[19] Numerical Analysis Digest http://www.netlib.org/na-net
[20] Numerical Mathematics Consortium http://www.nmconsortium.org
[21] PLaneT Package Repository. Disponible en: planet.plt-scheme.org.
[22] A. Ralston, P. Rabinowitz. A First Course in Numerical Mathematics,
2/e. Dover, 2001
[23] A. Stanoyevitch. Introduction to MATLAB with Numerical Preliminaries. John Wiley & Sons, Inc., 2005
[24] Sun Microsystems Numerical computation guide. Disponible en:
http://docs.sun.com/app/docs/doc/802-5692/. Consultado 2008.02.22

Miguel Angel Cifredo Campos


macifredo@gmail.com

BIBLIOGRAFIA

81

[25] D. Sitaram. Teach yourself Scheme in fixnum days. 1998-2001. Documento disponible en:
http://www.ccs.neu.edu/home/dorai/t-y-scheme/t-y-scheme.html
[26] Lloyd N. Trefethen. Numerical Analysis. A ser incluido en: W. T. Gowers, ed., Princeton Companion to
Mathematics, Princeton U. Press. 2008. Disponible en:
http://www.comlab.ox.ac.uk/people/nick.trefethen/publication/
PDF/2006 117.pdf. Consultado 2008.08.07
[27] W. Tucker. Auto-validating numerical methods. Curso de verano, 2004.
Disponible en: http://www.math.uu.se/warwick/summer04/info.html
[28] Gerhard Wanner Germund Dahlquists Classical Papers on Stability
Theory. Disponible en: http://www.unige.ch/wanner/DQsem.pdf

Miguel Angel Cifredo Campos


macifredo@gmail.com

82

BIBLIOGRAFIA

Miguel Angel Cifredo Campos


macifredo@gmail.com

Indice de Algoritmos
2.1.
2.2.
2.3.
2.4.
2.5.
2.6.
2.7.
3.1.
3.2.

Metodo de biseccion . . . . . . . . . . . . . . .
Metodo de punto fijo . . . . . . . . . . . . . . .
Metodo de Newton-Raphson estandar . . . . . .
Metodo de la secante . . . . . . . . . . . . . . .
Metodo de Aitken . . . . . . . . . . . . . . . . .
Metodo de Bairstow (requiere: algoritmo 2.7) . .
Factor cuadratico para Bairstow (algoritmo 2.6)
Metodo de punto fijo para sistemas . . . . . . .
Metodo de Newton-Raphson para sistemas . . .

83

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.

26
32
36
38
39
42
43
49
50

Miguel Angel Cifredo Campos


macifredo@gmail.com

84

INDICE DE ALGORITMOS

Miguel Angel Cifredo Campos


macifredo@gmail.com

Indice de c
odigo Scheme
1.1.
1.2.
2.1.
2.2.
2.3.
2.4.
2.5.
4.1.
4.2.
4.3.
5.1.
5.2.

Funcion real->ieee-doble . . . . . . . . . . . . . . . . . . . .
Funcion crea-mit para crear una maquina iterativa basica . .
Funcion biseccion asociada al algoritmo 2.1 . . . . . . . . .
Funcion biseccion-data asociada al algoritmo 2.1 . . . . . .
Funcion punto-fijo asociada al algoritmo 2.2 . . . . . . . .
Funcion punto-fijo-data asociada al algoritmo 2.2 . . . . .
Funcion para el metodo de Newton-Raphson . . . . . . . . .
Funcion para calcular f 0 (x0 ) seg
un ecuacion 4.4 . . . . . . .
Funcion para la regla compuesta de Simpson . . . . . . . . .
Funcion para el metodo de Romberg . . . . . . . . . . . . .
Funcion euler para aproximar la solucion a y 0 = f (x, y) . . .
Funcion runge-kutta-4 para aproximar la solucion a y 0 =
f (x, y) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

85

.
.
.
.
.
.
.
.
.
.
.

8
22
27
28
33
34
37
58
61
63
71

. 73

Miguel Angel Cifredo Campos


macifredo@gmail.com

86

INDICE DE CODIGO

SCHEME

Miguel Angel Cifredo Campos


macifredo@gmail.com

Indice de figuras
1.1. Ejemplo de error por redondeo . . . . . . . . . . . . . . . . . . 12
1.2. Ejemplo de eliminacion del error por redondeo, al utilizar
n
umeros racionales . . . . . . . . . . . . . . . . . . . . . . . . 13
2.1. Bisecciones para el ejemplo 2.2.2 . . . . . . . . . . . . . . . . . 29
4.1. Estimacion basica de una derivada . . . . . . . . . . . . . . . 54
5.1. Campo direccional para y 0 = 2x + cos(y) y trayectoria para
y(0) = 0, en [3, 3] [3, 3] . . . . . . . . . . . . . . . . . . . 74

87

Miguel Angel Cifredo Campos


macifredo@gmail.com

88

INDICE DE FIGURAS

Miguel Angel Cifredo Campos


macifredo@gmail.com

Indice de tablas
1.1. Precision en Formatos IEEE 754 . . . . . . . . . . . . . . . . .
4.1.
4.2.
4.3.
4.4.
4.5.

Ejemplo comparativo para la derivada de cot(x) . . . . . . . .


Ejemplo comparativo para la derivada de f (x) = ex . . . . . .
Formulas de diferencias centradas de orden O(h2 ) para derivadas
Formulas de diferencias centradas de orden O(h4 ) para derivadas
Nodos y pesos para cuadratura gaussiana . . . . . . . . . . . .

89

6
55
56
57
57
65

Miguel Angel Cifredo Campos


macifredo@gmail.com

90

INDICE DE TABLAS

Miguel Angel Cifredo Campos


macifredo@gmail.com

Indice alfab
etico
cifras significativas, 3
computacion confiable, 25
convergencia
criterio de, 20
factor de, 31
orden de, 31

Bairstow, 39
cerrado, 25
de cuadratura gaussiana, 64
de intervalo, 25
de punto fijo, 30
de Romberg, 61
de Runge-Kutta, 72
de Runge-Kutta de cuarto orden,
72
de Simpson, 59
del trapecio, 58
directo, 20
iterativo, 20
iterativo estandar, 30

derivacion
formulas de orden O(h2 ), 57
formulas de orden O(h4 ), 57
diferenciacion numerica, 53
diferencias
formula de cinco puntos, 57
formula de tres puntos, 56
DrScheme, 6
error
absoluto, 9
numerico total, 17
por redondeo, 11
por truncamiento, 13
relativo, 9

n
umeros
binarios de punto flotante normalizado, 5
punto flotante, 5
punto flotante normalizado, 5
precision, 6
punto fijo, 20

incertidumbre, 9
Scheme, 6
intervalos, 9
sesgo, 9
iteracion
de Newton-Raphson univariable, software, 17
acceso libre, 18
35
bibliotecas de funciones (Libraries),
MATLAB, 6
19
metodo
comercial, 19
91

Miguel Angel Cifredo Campos


macifredo@gmail.com

92
teorema
de Bolzano, 26
de Taylor, 14

INDICE ALFABETICO

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

Polinomios de Taylor - Series de potencias - Series de Fourier

Objetivo
El objetivo primordial de este bloque es la aproximacin de funciones reales de variable real. Mientras que los valores de funciones polinomiales pueden determinarse efectuando un nmero finito de sumas y multiplicaciones, otras funciones, entre ellas las funciones logartmicas, exponenciales y trigonomtricas no pueden evaluarse tan fcilmente.
En este bloque se mostrar que muchas funciones pueden aproximarse mediante polinomios y que el
polinomio, en lugar de la funcin original, puede emplearse para realizar clculos cuando la diferencia
entre el valor real de la funcin y la aproximacin polinomial es suficientemente pequea.
Por otra parte, muchos problemas matemticos, fsicos, econmicos, etc. convienen expresarlos como una suma infinita de funciones (lo que se llama una serie de funciones). Este recurso es especialmente
til en los casos en los que la funcin con la que se est trabajando no es elemental; al disponer de su
representacin en series de funciones, es posible analizarla, estudiando sus propiedades y su comportamiento.

Aproximacin polinomial

Un caso de aproximacin de funciones se presenta cuando la funcin se da de manera explcita y se


quiere encontrar un tipo ms simple, por ejemplo un polinomio, que nos sirva para determinar los
valores aproximados de ella. El principal motivo por el cual, a lo largo de la historia, ha sido grande el
inters por tratar de aproximar funciones por polinomios es que stos son muy fciles de estudiar, por
ejemplo, son fciles de evaluar, derivar, integrar, etc.
Supongamos, por ejemplo, que queremos trabajar con la funcin exponencial f (x) = ex . Concretamente, nos planteamos
obtener el valor aproximado de la funcin en el punto x = 0.1, es decir,

f (0.1) = e0.1 = 10 e. Como el punto donde queremos obtener el valor aproximado de la funcin est
muy prximo al punto x = 0, nuestro objetivo ser encontrar polinomios cuyo comportamiento en las
proximidades del origen sea similar a f (x) = ex . La Figura 1 muestra una representacin grfica de las
2
2
3
funciones f (x) = ex y los polinomios P0 (x) = 1, P1 (x) = 1+x, P2 (x) = 1+x+ x2 y P3 (x) = 1+x+ x2 + x6 .

Figura 1: Aproximacin polinomial de la funcin exponencial f (x) = ex .


Observar cmo las grficas de los polinomios se van acercando a la grfica de la exponencial a medida que los grados de los polinomios van aumentando. Adems, observar que la aproximacin es mejor
cuanto ms cerca del origen se encuentre el punto.
De forma general, si una funcin admite derivadas sucesivas en el punto x = a, vamos a poder
aproximarla mediante polinomios en un entorno suficientemente pequeo de dicho punto.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

Definicin 1 [P OLINOMIO DE TAYLOR ]


Se llama polinomio de Taylor de orden n de la funcin f (x) en el punto x = a al nico polinomio Pn (x) de grado
menor o igual que n que verifica:
Pn (a) = f (a), Pn0 (a) = f 0 (a), Pn00 (a) = f 00 (a), . . . , Pn(n) (a) = f (n) (a).
Este polinomio viene dado por la expresin
Pn (x) = f (a) +

f 0 (a)
f 00 (a)
f (n) (a)
(x a) +
(x a)2 + . . . +
(x a)n
1!
2!
n!

Surge de forma natural la siguiente cuestin: Qu error estamos cometiendo al aproximar la funcin
f (x) por su polinomio de Taylor de grado n? Analicemos el ejemplo de la funcin exponencial:
En la siguiente tabla, comparamos los valores que obtenemos de los polinomios de Taylor de grados
3 y 6 con los que nos ofrece un programa de clculo simblico para la exponencial, calculando el error
(es decir, la diferencia entre ambos valores):
1
4

x=
x = 1
x=3

ex
1.2840254
0.36787944
20.085537

T3 (x)
1.2838542
0.3333333
13

E3 (x)
0.0001712
0.03454611
7.085537

T6 (x)
1.2840254
0.36805556
19.4125

E6 (x)
'0
0.00017612
0.673037

Podemos observar que el error disminuye al considerar ms trminos del polinomio (es decir, al
aumentar el grado) y al acercarnos al punto x = 0.
Esto ocurre de forma general, es decir, dada una funcin f (x), su polinomio de Taylor en un punto
x = a aproxima a la funcin en las proximidades de dicho punto y cuanto ms pequeo es el entorno,
mejor es la aproximacin. Adems, cuanto mayor es el grado del polinomio, mayor es tambin el grado
de aproximacin que se obtiene.
Definicin 2 [R ESTO DE TAYLOR ]
Si tomamos como valor de f (x) el valor dado por su polinomio de Taylor Pn (x) de orden n, el error cometido por
dicha aproximacin recibe el nombre de resto de Taylor de orden n de f (x) en x = a:
Rn (x) = f (x) Pn (x)
A continuacin, damos una expresin para el error:
Definicin 3 [R ESTO DE TAYLOR DE L AGRANGE ]
Si la funcin f (x) y sus primeras n derivadas f 0 (x), f 00 (x), . . . , f (n) (x) son funciones continuas en un entorno
del punto x = a (que denotamos por E(a, elta) = (a elta, a + elta)), y existe la derivada n + 1, f (n+1) en
dicho entorno, entonces para cada x E(a, elta) existe un valor intermedio (a, x) ( (x, a)) tal que
Rn (x) =

f (n+1) ()
(x a)n+1
(n + 1)!

Esta forma del resto de Taylor nos permite tener una idea del error cometido cuando tomamos como
valor aproximado de la funcin f (x) en un punto el valor de su polinomio de Taylor.
Ejemplo 1 El error cometido al aproximar el valor de

e = e 2 viene dado por





ec

,
|Rn (1/2)| = n+1
2
(n + 1)!

1
c (0, )
2

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

Entonces,






3
ec



< 103
< n+1
|Rn (1/2)| = n+1

2
(n + 1)!
2
(n + 1)!
n+1
Hemos de encontrar el menor valor que n que hace que
(n+1)! > 3000, es decir, n = 4, ya que 24 4! = 384
2
y 2 5! = 3840. Por lo tanto, el valor aproximado de e dado por el polinomio de Taylor de grado 4 comete un
error menor que 103 . Este valor ser
5

1
1 1
1
1
211
e T4 ( ) = 1 + + +
+
=
= 1.6484375.
2
2 8 48 384
128

Series de potencias

En el tema anterior se ha estudiado la aproximacin de funciones por polinomios. Como caso particular,
hemos visto el ejemplo de la funcin exponencial f (x) = ex ,
ex 1 + x +

x3
xn
x2
+
+ +
2!
3!
n!

Recordemos que el error que se comete a la hora de aproximar los valores de la funcin por los
correspondientes valores del polinomio de Taylor asociado disminuye al considerar ms trminos del
polinomio, es decir, al aumentar el grado n. Consecuentemente, surge de forma natural la siguiente
cuestin: Qu ocurre si trabajamos con una suma de infinitos trminos?
1+x+

X
xn
x2
x3
xn
+
+ +
+ =
2!
3!
n!
n!
n=0

(1)

Esto es lo que se denomina una serie de potencias. De forma intuitiva, una serie de potencias es una
suma infinita tal que cada sumando es una funcin sencilla que sumamos para aproximar otra ms
complicada o de la que desconocemos su expresin.

2.1

Conceptos bsicos

Definicin 4 [S ERIES DE POTENCIAS ]


Una serie de potencias centrada en un punto x = a se define como una suma infinita

an (x a)n = a0 + a1 (x a) + a2 (x a)2 +

n=0

donde los coeficientes an y el centro x = a son nmero reales. Si se tiene a = 0, el centro de la serie de
potencias es el origen y sta adopta la forma

an xn = a0 + a1 x + a2 x2 +

n=0

Obsrvese que, dada una serie de potencias, si nos quedamos con los primeros n trminos obtenemos
un polinomio que recibe el nombre de suma parcial de orden n de la serie de potencias y se denota por
Sn (x):
Sn (x) =

n
X

ak (x a)k = a0 + a1 (x a) + a2 (x a)2 + + an (x a)n .

k=0

Por otro lado, un polinomio


P (x) = a0 +a1 x+a2 x2 + +am xm puede ser considerado como una serie
P
de potencias P (x) = n=0 an xn , en la que todos los coeficientes son nulos excepto un nmero finito.
Estos hechos vinculan estrechamente las series de potencias con los polinomios. No obstante, conviene

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

no confundir ambas cosas! En general, veremos que una serie de potencias no es ni se comporta como
un polinomio.
Ejemplo 2 El ejemplo ms sencillo de serie de potencias se tiene tomando como centro el origen, es decir, considerando a = 0 y con los coeficientes an = 1 para todo n 0. La serie que se obtiene recibe el nombre de serie
geomtrica:

xn = 1 + x + x2 + x3 +

n=0

Las sucesivas sumas parciales son de la forma:


S0 (x) = 1
S1 (x) = 1 + x
S2 (x) = 1 + x + x2
..
.
Sn (x) = 1 + x + x2 + + xn
P
Dada una serie de potencias Pn=0 an (x a)n , si fijamos un valor de x, x = x0 , la serie de reduce

a una suma infinita de nmeros n=0 an (x0 a)n (observar que, en ese caso a, x0 y an son nmeros
reales). Dicha suma infinita de nmeros recibe el nombre de serie numrica.
Ejemplo 3 La serie geomtrica
numricas

n=0

xn = 1 + x + x2 + x3 + para x =

X
1
2n
n=0

1
2

y x = 1 se reduce a las series

(1)n .

n=0

De forma general, dada una secuencia infinita de nmeros {a0 , a1 , . . . , ak , . . .}, se llama serie numrica
a la suma infinita de los nmeros de dicha secuencia y se denota por

an .

n=0

2.2

Convergencia puntual de series de potencias. Radio de convergencia

La primera pregunta que nos podemos hacer es para qu valores de x converge una serie de potencias?,
es
decir, para qu valores de x existe una funcin S(x) tal que podamos garantizar la igualdad S(x) =
P
n
n=0 an (x a) ? O lo que es lo mismo, para qu valores de x converge la serie numrica obtenida al
fijar dicho valor de x en la serie de potencias?
Analicemos en primer lugar un ejemplo:
Ejemplo 4 Dada la serie geomtrica

n=0

xn , veamos qu ocurre para x =

1
2

y para x = 1.

Para x = 21 , tenemos que estudiar la serie numrica

X
1
1 1 1
1
=1+ + + +
+
n
2
2 4 8 16
n=0

Si consideramos las sucesivas sumas parciales, obtenemos la siguiente secuencia de nmeros


{1, 1.5, 1.75, 1.875, 1.9375, 1.96875, 1.999999046, . . .}
Observar que a medida que vamos tomando ms valores, stos se van acercando a 2. Luego,

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

X
1
1 1 1
1
=1+ + + +
+ = 2
n
2
2
4
8
16
n=0

y, consecuentemente, podemos asegurar la convergencia de la serie de potencias en x = 12 .


Realizamos el mismo procedimiento para x = 1. La serie numrica en este caso es

(1)n = 1 1 + 1 1 + 1

n=0

En este caso, considerando las sucesivas sumas parciales, obtenemos la siguiente secuencia de nmeros
{1, 0, 1, 0, 1, 0, 1, . . .}
Obviamente, no se van acercando a ningn valor fijo y, consecuentemente, la serie de potencias no converge
para x = 1.
Nota: La serie numrica

n
n=0 (1)

recibe el nombre de serie numrica alternada.

Definicin 5 [C ONVERGENCIA PUNTUAL DE UNA SERIE DE POTENCIAS .]


Una serie de potencias

an (x a)n = a0 + a1 (x a) + a2 (x a)2 +

n=0

converge puntualmente en x = x0 si
lim Sn (x0 ) = lim

n
X

ak (x0 a)k

k=0

existe y el finito.
Observacin: Comprobar la convergencia de una serie de potencias en un punto x = x0 equivale a
comprobar la convergencia de la serie numrica obtenida al sustituir x por x0 en la serie de potencias
dada. Por ello, vamos a mostrar algunos criterios de convergencia de series numricas:
[C RITERIOS DE CONVERGENCIA DE SERIES NUMRICAS ]
P
1. Criterio del cociente: Sea n=0 an una serie de trminos no nulos a partir de n > N .




Si limn aan+1
< 1, entonces la serie converge.
n




Si limn aan+1
> 1, entonces la serie diverge.
n
P
2. Criterio de la raz: Sea n=0 an una serie de trminos no nulos a partir de n > N .
p
Si limn n |an | < 1, entonces la serie converge.
p
Si limn n |an | > 1, entonces la serie diverge.
3. Criterio de Leibnitz: Si para todo n N se cumple que:
0 an+1 an
entonces la serie alternada

n
n=0 (1) an

converge.

lim an = 0,

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

Ejemplo 5 Consideramos la serie numrica

n
.
(2n + 1)3n
n=1
Aplicamos el criterio del cociente para comprobar si es convergente o no, siendo el trmino general an =
n
(2n+1)3n .







2
n+1


an+1
(n + 1)(2n + 1)3n
2n + 3n + 1 2
(2n+3)3n+1



= = 1 < 1.


= lim
lim
= lim
= lim
n

n+1
2
n
n an
n
n

n(2n + 3)3
6n + 9n 6
3
(2n+1)3n
Luego, la serie numrica es convergente.
Teorema 1 [T EOREMA DE C AUCHY-H ADAMARD ]
P
Dada una serie de potencias n=0 an (x a)n , existe r [0, +] tal que:
1. La serie no converge en los puntos x tales |x| > r.
2. La serie converge en los puntos x tales que |x| < r.
A este r se le llama radio de convergencia de la serie de potencias y a (r, r) intervalo de convergencia. En los puntos x = r la serie puede que converja o no. De manera que, se define el campo de
convergencia de una serie de potencias como el conjunto de valores de x para los que la serie es convergente. Por tanto, el campo de convergencia de una serie de potencias es uno de estos cuatro intervalos:
(r, r); [r, r); (r, r]; [r; , r]. En este curso no nos preocuparemos del comportamiento de las series de
potencias en los extremos del intervalo de convergencia, es decir, en los valores r.
Como consecuencia del resultado anterior, toda serie de potencias define una funcin S(x) cuyo
dominio es el campo de convergencia de la serie, siendo
S(x) =

an (x a)n

x { campo de convergencia }

n=0

Esta funcin S(x) se denomina funcin suma.


Ejemplo 6 El radio de convergencia de la serie de potencias
es decir

X
n=0

xn =

1
1x

n=0

xn es r = 1 y la funcin suma es S(x) =

1
1x ,

x (1, 1)

[C LCULO DEL RADIO DE CONVERGENCIA :]


Ya que el radio de convergencia ha sido definido mediante un teorema de existencia, se mantiene
el problema prctico de cmo determinarlo. Una primera solucin resulta de considerar que la convergencia puntual transforma la serie de potencias, en cada x, en una serie numrica.
Para determinar el radio de convergencia de una serie de potencias se puede aplicar alguno de los
criterios de convergencia de series numricas vistos anteriormente.
P
En efecto, primero se considera x como un valor fijo en la serie de potencias n=0 |an (x a)n | y
luego x se trata como un parmetro que vara sobre R.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

Ejemplo 7 Calculamos el radio de convergencia de la serie de potencias


n+1
siguiente lmite
x

lim n = |x|
n
x

n=0

xn . Fijamos x y calculamos el

Luego,
Si |x| < 1, la serie de potencias converge;
Si |x| > 1, la serie de potencias no converge (diverge);
Si |x| = 1, no sabemos el comportamiento de la la serie de potencias.
El radio de convergencia es por tanto r = 1 y el intervalo de convergencia (1, 1).

2.3

Propiedades de las series de potencias

Teorema 2 [C ONTINUIDAD , DERIVABILIDAD E INTEGRABILIDAD DE UNA SERIE DE POTENCIAS ]


P
Sea S(x) = n=0 an (x a)n en (r, r). Entonces,
1. S(x) es continua en todo su campo de convergencia.
2. S(x) es derivable en (r, r) y su derivada es
S 0 (x) =

(an (x a)n )0 =

nan (x a)n1

n=1

n=1

para todo x (r, r).


3. S(x) es integrable en todo el intervalo [0, x] incluido en su campo de convergencia y su integral es
Z

S(t) dt =
0

Z
X
n=0

an (x a)n


=

X
an
(x a)n+1 .
n
+
1
n=0

Ejemplo 8 A partir de la funcin suma de una serie geomtrica

X
n=0

xn =

1
,
1x

x (1, 1)

y recurriendo a las anteriores propiedades de derivacin e integracin de series de potencias, se puede probar
que

X
1
2
=
1
+
2x
+
3x
+

=
(n + 1)xn ,
(1 x)2
n=0

2.4

x (1, 1).

Series de Taylor

Como hemos podido ver, la sumaP


de una serie de potencias de radio no nulo define en su intervalo de

convergencia una funcin S(x) = n=0 an (x a)n . Se dice entonces que la serie representa a la funcin
S(x) en el intervalo de convergencia y que es el desarrollo en series de potencias de la funcin S(x)
centrada en x = 0. Se plantean entonces de manera natural dos problemas:
1. Dada una serie, hallar propiedades de la funcin suma.
2. Dada una funcin, averiguar si se puede representar por una serie de potencias.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

Definicin 6 [D ESARROLLO EN SERIE DE POTENCIAS .]


Se dice quePuna funcin f (x) admite desarrollo en serie de potencias en el intervalo (r, r) si existe una serie de

potencias n=0 an xn tal que


f (x) =

an xn ,

x (r, r).

n=0

Obviamente, f (x) admite derivada de todo orden en (r, r) y an =

f (n) (0)
n! .

Definicin 7 [S ERIE DE TAYLOR .]


Si una funcin f tiene derivada de todos los rdenes en x = a, se llama serie de Taylor de f centrada en a, a la
serie

X
f (n) (a)
(x a)n .
n!
n=0

Las propiedades anteriores pueden inducir a pensar que si una funcin f admite derivadas de todos
los rdenes, entonces se puede expresar como la suma de una serie de potencias. Sin embargo, esto no
siempre ocurre.
Teorema 3 [C ONDICIN NECESARIA Y SUFICIENTE PARA QUE EXISTA DESARROLLO EN SERIE .]
Si una funcin f admite derivadas de todos los rdenes en un intervalo abierto (r, r), entonces la igualdad
f (x) =

X
f (n) (0) n
x ,
n!
n=0

x (r, r)

es vlida si y slo si existe un c entre 0 y x tal que


f (x) =

n
X
f (k) (0)
k=0

k!

xk +

f (n+1) (c) n+1


x
(n + 1)!

f (n+1) (0) n+1


x
=0
n (n + 1)!
lim

para todo x (r, r).


Recordar que la expresin Rn (x) =

f (n+1) (c) n+1


(n+1)! x

se llama resto de Langrange.

Series de Fourier

Queremos discretizar una seal (por ejemplo, una onda o una imagen) para almacenarla, transmitirla
o modificarla. Para ello la convertiremos en un conjunto de coeficientes que la definan. En este tema
supondremos que podemos expresar la seal a analizar como una funcin que aproximaremos mediante
una serie de funciones. No usaremos las series de potencias, que son demasiado restrictivas, sino series
de funciones dependientes de senos y cosenos, las series trigonomtricas:
S(x) =

an cos(nx) + bn sen(nx).

n=0

Sus sumas parciales


Sm (x) =

m
X

an cos(nx) + bn sen(nx).

n=0

reciben el nombre de polinomios trigonomtricos.


Nuestro objetivo ser, dada una funcin f , determinar los coeficientes an y bn de manera que podamos expresar f como la suma de una serie trigonomtrica.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

3.1

Funciones peridicas

Definicin 8 [F UNCIONES T- PERIDICAS ]


Una funcin se dice T-peridica o peridica de periodo T si para todo x, f (x + T ) = f (x). Al menor valor de
T que cumple lo anterior se denomina periodo mnimo o fundamental.
sen(x) y cos(x) tiene periodo 2, que es el que tomaremos de referencia.
Definicin 9 [F RECUENCIA ]
Definimos la frecuencia de una funcin T -peridica como =
fundamental se denomina frecuencia mnima o fundamental.

2
T .

La frecuencia asociada al periodo mnimo o

Ejemplo 9 sen(nx) y cos(nx) tienen frecuencia mnima n y periodo mnimo

2
n .

La combinacin lineal de funciones T peridicas es tambin T -peridica. En particular los polinomios trigonomtricos
m
X
an cos(nx) + bn sen(nx)
Sm (x) =
n=0

son peridicos de periodo (no su periodo mnimo) 2. Si la sucesin Sm (x) converge, entonces la serie
resultante tiene periodo 2.
Observacin: No olvidemos que queremos utilizar las series trigonomtricas para aproximar funciones. Ahora bien, si las series trigonomtricas tienen periodo 2, cmo podemos usarlas para aproximar
funciones con distinto periodo? Y si la funcin ni siquiera es peridica?
Podemos modificar las series trigonomtricas para aproximar una funcin de periodo T incluyendo
la frecuencia = 2
T en su expresin:
S(x) =

an cos(nx) + bn sen(nx).

n=0

Y si la funcin f que queremos aproximar no es peridica podemos extenderla peridicamente dividiendo la recta real en intervalos de longitud T y repitiendo el trozo de funcin que nos interese.
Normalmente se suele tomar el intervalo de longitud T centrado en el origen [ T2 , T2 ].

Figura 2: Extensin 2-peridica de una funcin.

3.2

Series de Fourier. Teorema de Dirichlet

Dada una funcin f T peridica, se definen sus coeficientes de Euler-Fourier como


a0 =

1
T

T
2

f (x) dx,
T2

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

2
T

2
bn =
T

an =

T
2

f (x) cos(nx) dx,


T2
T
2

f (x) sen(nx) dx.


T2

A los valores de a0 , an y bn se les denomina coeficientes de Fourier de f , y la serie trigonomtrica construida a partir de estos coeficientes recibe el nombre de serie de Fourier de f . Si an , bn son los coeficientes de
Fourier de f , denotaremos
f (x) SF (f ) =

an cos(nx) + bn sen(nx).

n=0

Aunque a partir de una funcin f podamos obtener sus coeficientes de Fourier no tenemos garanta
de que la serie de Fourier correspondiente converja. Y, en el caso de que lo haga, no tiene por qu
converger a f . Es decir, que f (x) SF (f ) no implica f (x) = SF (f ). Para que esto suceda tienen que
cumplirse ciertas condiciones.
Teorema 4 [T EOREMA DE D IRICHLET ]
Sea f una funcin:
1. T -pedidica,
2. acotada,
3. con un nmero finito de mximos y mnimos estrictos, y
4. con un nmero finito de discontinuidades
en todo intervalo de amplitud T . Entonces, si
S(x) =

an cos(nx) + bn sen(nx)

n=0

es la serie de Fourier de f , se tiene:


1. La serie de Fourier converge puntualmente para todo x real.
2. Para todo x real tal que f es continua en x, la serie de Fourier converge a f (x); i.e, S(x) = f (x).
3. Para todo x0 real tal que f no es continua en x0 , la serie de Fourier converge a
S(x) =

f+ (x0 ) + f (x0 )
,
2

siendo
f+ (x0 ) = lim f (x),
xx+
0

f (x0 ) = lim f (x).


xx
0

3.3

Propiedades de la serie de Fourier

1. Toda serie de Fourier cumple que


lim an = 0

lim bn = 0.

Esto supone que existe un cierto n a partir del cual las frecuencias n tienen poca influencia en el
resultado (aunque dicho n puede ser muy grande).

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

2. Linealidad: Sean y dos nmeros reales, y f y g dos funciones T -peridicas, entonces


SF (f + g) = SF (f ) + SF (g).
3. Derivabilidad: Si f es una funcin continua y su derivada f 0 verifica las condiciones de Dirichlet,
entonces la serie de Fourier de f 0 , SF (f 0 ), es la serie derivada trmino a trmino de SF (f ) y
converge puntualmente a f 0 (x) en todo x donde est definida.
4. Integrabilidad: Si f verifica las condiciones de Dirichlet, entonces su serie de Fourier puede integrarse trmino a trmino, pero la integral de la serie de Fourier puede no ser una funcin peridica
ni, por tanto, una serie de Fourier.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Resoluci
on de ecuaciones. El m
etodo
de Newton
Introducci
on
La resolucion de ecuaciones es un importante problema de Matematicas del que nos ocupamos en este tema. El estudiante conoce ya algunos resultados sobre esta cuestion. Por
ejemplo, ha estudiado las ecuaciones algebraicas de primer y segundo grado que sabe
resolver porque hay formulas que dan las soluciones de la ecuacion (eventualmente, una
sola); sabe que hay ecuaciones que pueden no tener ninguna solucion real. Ha aprendido
tambien a obtener las soluciones enteras de una ecuacion algebraica de cualquier grado
mediante la regla de Ruffini. En los programas de Ense
nanza Media ademas se estudian algunas ecuaciones no algebraicas, por ejemplo, algunas ecuaciones exponenciales,
logartmicas o trigonometricas.
Las soluciones de una ecuacion tienen algunos nombres que conviene conocer
Definici
on 4.1 Sea f : S R R. Se dice que es un cero o una raz de f (x) si
f () = 0.
Es importante tener en consideracion que, desde el punto de vista geometrico, resolver
la ecuacion f (x) = 0 es hallar las abscisas de los puntos de corte de la grafica de la funcion
y = f (x) con el eje y = 0. Como la determinacion de la solucion exacta no es posible en
general, se intentan hallar aproximaciones de la raz y determinar una cota del error que
se ha cometido.

Miguel Angel Cifredo Campos


macifredo@gmail.com

El problema de resolver una ecuacion se divide en los dos problemas siguientes:


1. Separar las races, es decir, encontrar intervalos en los que haya un solo cero de la
funcion. Ello supone encontrar intervalos en los que haya al menos una solucion
(mediante el Teorema de Bolzano) y asegurar que en dichos intervalos hay como
maximo una solucion (asegurando que la funcion es estrictamente monotona en
ellos).
2. Aproximar las races. Hay multitud de procedimientos para ello; nosotros estudiaremos uno de los mas u
tiles y eficientes, el metodo de Newton. En cualquier metodo
de aproximacion es indispensable conocer cotas del error que se comete.

El m
etodo de Newton
Supongamos que pretendemos resolver la ecuacion f (x) = 0 y que hemos separado las
races, de modo que en el intervalo [a, b] hay un solo cero de la ecuacion, que denotamos
por . Asumimos que la funcion y = f (x) admite derivadas hasta de segundo orden
en [a, b] y que la derivada primera no se anula en dicho intervalo porque la funcion es
estrictamente monotona.
El metodo de Newton consiste en:
Se escoge (luego indicaremos el criterio para escoger)
x0 = a,

xn+1 = xn

f (xn )
,
f 0 (xn )

x0 = b

Se calculan
n0

Se genera as una sucesion {xn } que converge en muchas ocasiones a . La interpretacion geometrica del metodo es que, conocido xn , se tiene que xn+1 es la abscisa del
punto de corte de la tangente a y = f (x) en (xn , f (xn )) con el eje y = 0.
En lo concerniente a la eleccion del punto inicial tenemos la siguiente regla que nos
dice como hacerlo para que el metodo converja, es decir para que xn .
Teorema 4.2 (Regla de Fourier) Sea f : [a, b] R continua y dos veces continuamente
diferenciable en [a, b] y tal que verifica

Miguel Angel Cifredo Campos


macifredo@gmail.com

1. f (a)f (b) < 0


2. f 0 (x) 6= 0,

x [a, b]

3. f 00 (x) 6= 0,

x [a, b]

Entonces, el metodo de Newton converge si tomamos x0 = a o x0 = b de tal forma que


f (x0 )f 00 (x0 ) > 0.
El metodo de Newton es muy eficiente en el sentido que, cuando converge, en cada
iteracion se dobla el n
umero de cifras exactas que tiene la aproximacion. La cota de error
viene dado por el siguiente resultado
Teorema 4.3 Supongamos las hipotesis de la regla de Fourier y que se escoge el punto inicial seg
un ese criterio. Entonces, una cota del error cometido en la n-sima iteraci
on,|En | =
|xn |, viene dada por
|En |

M2
(xn xn1 )2
2m1

siendo M2 = max |f 00 (x)| y m1 = min |f 0 (x)|.


x[a,b]

x[a,b]

on x5 + 5x + 1 = 0. Es claro que esta ecuaci


on
Ejemplo 4.4 Consideremos la ecuaci
tiene al menos una solucion, porque la funcion f (x) = x5 + 5x + 1 es continua en R y
limx = y limx+ = +. Adem
as, ya que f 0 (x) = 5x4 + 1 > 0, solo puede
tener como maximo una solucion.
Tomando una tabla de valores, puede comprobarse que

f continua en [1, 0.1]

f (1) < 0, f (0.1) > 0

f 0 (x) > 0, x [1, 0.1]

f 00 (x) = 20x3 < 0, x [1, 0.1]


El Teorema de Bolzano y la monotona aseguran que la ecuaci
on tiene una u
nica solucion,
, en [1, 0.1]. Y por la regla de Fourier, el metodo de Newton

x0 = 1
(M N )
f (xn )

, n0
xn+1 = xn 0
f (xn )

Miguel Angel Cifredo Campos


macifredo@gmail.com

converge. Vamos a calcular las tres primeras iteraciones


xn+1 = xn

x5n + 5xn + 1
4x5n 1
=
5x4n + 5
5x4n + 5

x0

x
1

x2

x
3

= 1
5
= 0.5
= 10

= 0.2117647
= 0.2000047

Para conocer la cota del error cometido al tomar como solucion de la ecuaci
on el valor
x3 , se denota
M2 =
m1 =

max

x[1,0.1]

min

x[1,0.1]

|f 00 (x)| =

|f 0 (x)| =

max

x[1,0.1]

min

x[1,0.1]

|20x3 | = 20

|5x4 + 5| = 5.005

y se cumple que
|x3 | =

M2
20
(0.2000047 + 0.2117647)2 < 0.0006
(x3 x2 )2 =
2m1
5.005

Ello significa que 0.2006 < < 0.1994.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

I.T. INFORMTICA
EJERCICIOS BLOQUE I

CLCULO INFINITESIMAL Y NUMRICO


CURSO 2010-2011

Resolucin aproximada de ecuaciones no lineales


1. Queremos aproximar el valor de la raz sptima de 127 usando que es una raz de x7 127 = 0.
a) Demostrar que tiene una nica solucin real.
b) Determinar un intervalo de longitud uno y extremos nmeros enteros, que contenga la solucin.
c) Determina un valor de ese intervalo que usado como valor inicial, garantice la convergencia
del mtodo de Newton-Raphson.
d) Hacer tres iteraciones partiendo del x0 obtenido en el apartado anterior.
e) Acotar el error de la anterior aproximacin.
2. Considerese la ecuacin x ex 1 = 0. Se pide:
a) Demostrar que tiene una nica solucin real en el intervalo [3, 3].
b) Determinar un intervalo de amplitud uno y extremos enteros que contenga a dicha solucin.
c) Determinar un valor de ese intervalo que, usado como valor inicial, asegure la convergencia
del mtodo de Newton-Raphson.
d) Realizar dos iteraciones del mtodo de Newton-Raphson, con el valor inicial del apartado
anterior.
3. Considerese la ecuacin ex Ln (x) 7 = 0. Se pide:
a) Demostrar que tiene una nica solucin real en el intervalo [2, 6].
b) Determinar un intervalo de amplitud uno y extremos enteros que contenga a dicha solucin.
c) Determinar un valor de ese intervalo que, usado como valor inicial, asegure la convergencia
del mtodo de Newton-Raphson.
d) Realizar dos iteraciones del mtodo de Newton-Raphson, con el valor inicial del apartado
anterior.
4. Considrese la ecuacin cos(x) x2 + 2 = 0. Se pide:
a) Demostrar que tiene una nica solucin real en el intervalo [0, ].
b) Determinar un intervalo de amplitud uno y extremos enteros que contenga a dicha solucin.
c) Determinar un valor de ese intervalo que, usado como valor inicial, asegure la convergencia
del mtodo de Newton-Raphson.
d) Realizar dos iteraciones del mtodo de Newton-Raphson, con el valor inicial del apartado
anterior.
5. Demostrar que la ecuacin xex x2 + 1 = 0 posee dos races reales, y separarlas en sendos
intervalos de amplitud 1 y extremos enteros. Estudiar si en esos intervalos se verifican las hiptesis
de Fourier.
6. Dada la funcin f (x) = x

1
sen x, se pide:
4

a) Demostrar que la ecuacin f (x) = 0 posee una nica raz real, determinando razonadamente

un intervalo de amplitud que contenga tal solucin.


4

Miguel Angel Cifredo Campos


macifredo@gmail.com

b) Aplicar la Regla de Fourier para encontrar un punto inicial en el que el mtodo de NewtonRaphson asociado a f (x) tenga garantizada la convergencia. Dar una aproximacin del cero
de f (x) realizando dos iteraciones segn dicho mtodo, estimando el error cometido.
7. Dada la ecuacin sen x x + a = 0, se pide:
a) Determinar para qu valor de la constante a la ecuacin posee una raz triple en el intervalo
[0, 2] y calcular dicha raz.
b) Para a = 1, demostrar analticamente que la ecuacin tiene una nica raz, que sta es simple
y se encuentra en el intervalo [0, 2].
c) Justificar que en el intervalo [0, 2] no se verifica las hiptesis de la regla de Fourier. Obtener
un intervalo de amplitud 1 en el que s se verifique y dar, razonadamente, un valor de x0 para
iniciar el mtodo de Newton que garantize la convergencia de este.
d) Sabiendo que la primera iteracin del mtodo de Newton ha proporcionado la aproximacin
x1 = 1,935951 (redondeando al sexto dgito), realizar una iteracin ms y da una cota del
error para esta iteracin.
8. Para la ecuacin ex + 10Ln (x2 ) + x = 0 en el intervalo [1, 3], realizar tres iteraciones del mtodo
de biseccin.

Errores
9. Dada la ecuacin cos(x) x = 5, x [10, 10], localizar un intervalo de amplitud uno que contenga a la solucin de dicha ecuacin. Cuntas iteraciones habr que realizar para obtener una
aproximacin de la solucin con error menor que 102 ?

10. a) Tomando z0 = 10 414 como aproximacin dez = 2 (que tiene todas sus cifras decimales
exactas), dar una aproximacin del valor de ( 2 1)5 con todas sus cifras decimales exactas
y estimar el error cometido.

b) Determinar la precisin (mnima) con la que hay que


toma 2 par calcular ( 2 1)5 con tres
cifras decimales exactas. Dar dicha aproximacin de ( 2 1)5 de tres cifras decimales y todas
exactas.

Interpolacin
11. De cierta funcin f : R R se conocen sus siguientes datos: f (1) = 2, f (0) = 2, f (1) = 3,
f (2) = 5, f (4) = 3. Hallar el polinomio interpolador de f en el soporte S = {1, 0, 1, 2, 4}.
12. Sea ahora h(x) un polinomio cualquiera de grado cuatro. Entonces, el polinomio interpolador de
h para el soporte S = {0, 1, 2, 3, 4}
es siempre un polinomio de grado cinco.

puede ser un polinomio de grado tres.

puede coincidir, en algunas ocasiones, con h(x).

coincidir con h(x).

13. De cierta funcin f : R R se conocen sus siguientes datos: f (1) = 3, f (0) = 1, f (1) = 1,
f (2) = 1, f (3) = 3. Calcular el polinomio interpolador de f en el soporte S = {1, 0, 1, 2, 4}.
14. Dada la funcin f (x) = sen(2x) + x2 , hallar el polinomio interpolador de f (x) con soporte S =
{0, /2, , 3/2, 2}.
15. Sea f (x) una funcin tal que f (1) = 3. Se sabe que el polinomio interpolador de f (x) para soporte
S = {2, 1, 0} es P (x) = x2 + x + 1. Si ahora consideramos un nuevo soporte Se = {2, 1, 0, 1},
el polinomio interpolador de f (x) en el nuevo soporte Se
tendr grado tres.

puede coincidir con P (x).

coincidir con P (x).

ninguna de las anteriores.


16. Hallar el polinomio interpolador para el soporte S = {(2, 4), (1, 8), (0, 3), (2, 1)}.

Miguel Angel Cifredo Campos


macifredo@gmail.com

17. Se sabe que el polinomio interpolador para el soporte S = {(2, 8), (1, 4), (0, 2), (1, 4)} es
P (x) = 3x3 +2x2 3x+2. Si ahora consideramos un nuevo soporte Se = {(3, 1), (2, 8), (1, 4), (0, 2), (1, 4)},
entonces el polinomio interpolador para este nuevo soporte Se
tendr grado tres.

no coincidir con P (x).

coincidir con P (x).

tendr grado cinco.


18. Obtener el polinomio interpolador P (x) de Lagrange para la funcin f (x) = log(x) con el soporte
S = {1, 2, 4, 6, 8}. Determinar la funcin del error y acotar el error cometido al usar P (x) para
aproximar el valor de log(3).

Miguel Angel Cifredo Campos


macifredo@gmail.com

I.T. INFORMTICA
EJERCICIOS BLOQUE II

CLCULO INFINITESIMAL Y NUMRICO


CURSO 2010-2011

Polinomios de Taylor
1. Obtener los polinomios de Taylor-McLaurin de, orden n, de las siguientes funciones:
a) ex , e2x .
b) sin(x), sin(3x).
c) cos(x), cos(3x).
d) Ln (1 + x), Ln (1 x).

e) (1 + x)k , 1 x.
2. Utilizando el polinomio de Taylor-McLaurin adecuado, calcular
diezmilsima.

e con error menor que una

3. Calcular el valor aproximado de cos(62 ), de dos formas distintas: a) usando el polinomio de


Taylor-McLaurin de cos(x) de orden 2. b) Usando el polinomio de Taylor de cos(x) de orden 2, en
el punto /3. Obtener en ambos casos una cota del error cometido.

Series numricas
4. Estudiar la convergencia de las siguientes series, sin aplicar el criterio del cociente y, calculando la
suma en caso de convergencia:
 k
X
1
a)
.
9
k=1

b)


X
k=1

c)

(k2)
.


k 
  k
X
1
1
2
+3
.
4
5

k=0

d)

X
k6
k=1

e)


X
1
k=2

f)

k+3


1
.
k1

X
3
.
k

k=1

X
k!
g)
.
100k
k=1

h)

 k+2
X
e
k=1

i)

X
k=9

3
.
k8

Miguel Angel Cifredo Campos


macifredo@gmail.com

5. Usando el criterio del cociente estudiar la convergencia de las series:


a)

X
7n
.
n!
n=1

b)

X
5n
.
n5
n=1

c)

X
n!
.
n100
n=1

d)

X
n3
.
(2n)!
n=1

X
3n + n
e)
.
n!
n=1

6. Estudiar la convergencia de las siguientes series alternas:


a)

(1)n+1

n=1

b)

c)

1
(1)n+1 .
n
n=1

(1)n+1

n=1

d)

e)

2
.
3n + 1

n
.
n2 + 1

Ln (n)
(1)n+1 .
n
n=1

(1)n+1

n=1

6n 2
.
3n + 1

Series de potencias
7. Obtener el campo y el radio de convergencia de las siguientes series:
a)

(1)n x2n .

n=0

b)

c)

X
xn
.
3n+1
n=0

nxn .

n=0

d)

(1)n nxn .

n=0

e)

(2)n

n=0

f)

(1)n

n=0

n+2 n
x .
n+1
x2n
.
(2n + 1)22n

Miguel Angel Cifredo Campos


macifredo@gmail.com

g)

(1)n

n=0

h)

i)

x3n
.
n!

n1
xn .
3 2n
(n
+
1)
n=0

(1)n

n=0

n
xn .
n+1

8. Sabiendo que 1 + x + x2 + + xn + =
a)

nxn =

n=1

b)

x
.
(1 x)2

n2 xn =

x2 + x
.
(1 x)3

n3 xn =

x3 + 4x2 + x
.
(1 x)4

n=1

c)

X
n=1

d)

e)

1
, |x| < 1, obtener las siguientes frmulas:
1x

X
1
(n + 1)(n + 2) n
x =
.
2
(1

x)3
n=0

(1n )

n=0

xn+1
= Ln (1 + x).
n+1

9. Sabiendo que ex =

X
X
xn
n+1
, calcular la suma de la serie
.
n!
n!
n=0
n=0

Series de Fourier
10. Dada la funcin f (x) = x2 , x < , se considera la extensin de forma 2-peridica. Se pide:
a) Obtener su serie de Fourier.
b) Si S(x) es la suma de dicha serie, calcular S(0), S(), S().
c) Se puede afirmar que S(x) = f (x), para todo x R? Dibujar el grafico de la funcin en el intervalo
[2, 4].
d) A partir de desarrollo obtenido, calcular la suma de la serie

11. Sea la funcin f (x) =

X
1
.
2
n
n=1

0, < x 0
x, 0 < x < .

Se pide:
a) Extenderla a una funcin 2-peridica, definiendo adecuadamente f (), de forma que su serie de
Fourier converja puntualmente a la funcin, para cualquier punto.
b) Obtener dicha serie de Fourier.
c) A partir del resultado anterior, hallar la suma de la serie

1
.
(2n

1)2
n=1

Miguel Angel Cifredo Campos


macifredo@gmail.com

12. Si f (x) = sin(x), 0 x , se pide:


a) Extenderla de forma par en el intervalo [, 0).
b) Obtener la serie de Fourier de su extensin 2-peridica.
c) Estudiar la convergencia de dicha serie en cada punto.
d) Dibujar la funcin en el intervalo [, 4].
13. Dada la funcin f (x) = cos(2x), 0 < x , se pide:
a) Cmo debe definirse la funcin en el intervalo (, 0), para que en su serie de Fourier aparezcan
solamente senos?
b) Qu valor debe tomar la extensin de dicha funcin en x = 0?
c) Calcular dicha serie de Fourier.
d) Si S(x) es la suma de la serie, calclese S(0), S(), S().
14. Hallar la serie de Fourier de f (x) = |x|, 2 x 2, extendindola como una funcin 4-peridica.
Si S(x) es la suma de la serie, para qu valores x R se verifica que que S(x) = f (x)?

2, 0 x <
15. Desarrollar en serie de Fourier la funcin 2-peridica definida de la forma f (x) =
x, x < 2.
Si S(x) es la suma de la serie, para qu valores x R se verifica que que S(x) = f (x)?
16. Sea f (x) una funcin T-peridica. A partir de ella, definimos las funciones g(x) = f (x a), a R
(funcin de desplazamiento), y h(x) = f (bx), b R (funcin de escalado temporal). Cmo se
pueden obtener las series de Fourier de las funciones g y h a partir de la de f ?
17. Consideremos la forma compleja de la serie de Fourier

cn einx . Obtener la relacin entre

n=

cn , an y bn . Qu verifican los coeficientes cn de ima funcin par?Y de una funcin impar?

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque II

CURSO 2011-2012

Polinomio de TaylorSeries de PotenciasS. de Fourier

Nota: Los problemas tipo test que aparecen en esta relacin se deben responder razonadamente. Como orientacin,
los resultados correctos aparecen marcados con una cruz.
1. Obtener los polinomios de MacLaurin, de orden n, de las siguientes funciones:
1. ex , e2x
2. sen x, sen(3x)
3. cos x, cos(3x)
4. ln(1 + x), ln(1 x)
2. Utilizando el polinomio de MacLaurin adecuado, aproximar

3
e, con un error inferior a 104 .

3. Dar un valor aproximado de cos(620 ) de dos formas distintas:


1. Usando un polinomio de MacLaurin de cos x orden 2.
2. Mediante el polinomio de Taylor de orden 2 de cos x en x0 =

.
3

En ambos casos, obtener una cota del error cometido.


4. Dada la funcin f (x) =

3
1 + x, se pide:

1. Obtener la frmula de MacLaurin de grado 3, con resto de Lagrange, de f (x).


2. Utilizar el polinomio de MacLaurin del apartado anterior para aproximar el valor de
dando una cota del error cometido.

3
1.03,

1
, x > 1, y adems: f (1) = 1, y
1 + x3
f (1) = 2. Hallar el polinomio de Taylor de orden 2 de f (x) en x0 = 1, y utilizarlo para dar un valor
aproximado de f (3/2), acotando el error cometido.

5. Sea y = f (x) una funcin de la que se sabe que f (x) =

6. De una funcin f : IR IR se sabe que:


1. Posee derivadas de cualquier orden en el intervalo (

1 1
, ),
10 10

2. f (0) = 1, f (0) = 3 y f (0) = 0,


1
1
1 1
).
3. Y que para x [ , ] se tiene que f (x) ( ,
10 10
10 100
Se pide:
1. Aproximar f (0.1) mediante un polinomio de grado 2, dando una cota del error cometido.
2. Estudiar si en x = 0 puede haber un extremo relativo. Qu comportamiento presenta f (x) en
el orgen?

7. Sea la funcin f (x) =

1
, de la cual se sabe que 0 f (x) < 10, x [0.2, 0.2].
1 sen x

1. Calcular el polinomio de McLaurin de grado 2 de f (x).


2. Utilizar dicho polinomio para aproximar el valor de f (0.2). Asimismo, mediante el Resto de
Lagrange dar una cota del error obtenido con dicha aproximacin.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque II

1
8. De una funcin f (x) se sabe que f (0) = 1, f (0) = 1/2, y f (x) =
, x > 1.
1+x
1. El polinomio de MacLaurin P3 (x) de grado 3 de f (x) viene dado por:
x x2
x3
x x2
x3
X 1 +

1 +

2
2
12
2
4
12
x3
x3
x2
x x2

1 +

2!
3!
2
2!
3!
2. El Resto de Lagrange R3 (x) correspondiente al anterior polinomio viene dado por:
x4
x4
x4
x3

X
12 (1 + c)3
4! (1 + c)4
32 (1 + c)5
12 (1 + c)4
1x+

3. La cota del error que proporciona el Resto de Lagrange cuando se utiliza el polinomio P3 (x)
para aproximar f (0,1) es:
10(4)
4!(1,1)2

10(4)

32 (1,1)5

10(4)
4!

10(4)
32

9. Sea f (x) = ln( 3 1 + 2x).


1. El polinomio de MacLaurin P2 (x) de grado 2 de la funcin f (x) es:
x x2
2x 2x2
2x 4x2
x x2

3
3
3
3
3
3
3
6
2. El Resto de Lagrange R2 (x) correspondiente al anterior polinomio viene dado por:
8x3
9(1 + 2c)3

x3
x3
4x3
9(1 + 2c)3
18(1 + 2c)3
9(1 + 2c)3

3. Al aproximar f (0,1) = ln( 3 1,2) mediante su anterior polinomio P2 (x), la cota del error que se
obtiene mediante el Resto de Lagrange est dada por:
X

4
1
8 3
4 3
X
103
103
10
10
9 (1,2)3
9 (1,2)3
9
9
4. De una funcin y = g(x) se conoce que su polinomio de Taylor de orden 3 en x0 = 1 es:
T3 (x) = 1 3(x 1)2 + 2(x 1)3 . Entonces, en el punto (1, g(1)) la funcin g(x) tiene :
No se puede saber

Un mnimo

Un punto de Inflexin

X Un mximo

10. Obtener el Intervalo, y el Radio de convergencia de las siguientes Series de Potencias:

xn
(a)
(1)n x2n
(b)
(c)
nxn
n+1
3
n=0
n=0
n=0
(e)

(1)n nxn

n=0

x3n
(h)
(1)n
n!
n=0

11. Dada la serie de potencias:

(f)

(2)n

n=0

n+2 n
x
n+1

n1
(i)
xn
3 2n
(n
+
1)
n=0

n=0

(1)n

(g)

n=0

(j)

n=0

(x + 1)2n
, se pide:
2n+1

1. Determinar el radio, y el intervalo de convergencia de la serie.


2. Es convergente la serie numrica que se obtiene para x = 0?
(Examen 1/02/2011).

(1)n

(1)n

x2n
(2n + 1)22n

n
xn
n+1

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque II

12. Sea la serie de potencias:

(1)n (n + 1) 2n
x
3n
n=1

1. Determinar su radio de convergencia.


2. Son convergentes las series numricas que se obtienen para x = 1 y para x = 2? Razonar la
respuesta.
(Examen 5/09/2011).

13. Sean las series numricas: =

1+n
n!
,
y
2n1
n+1
2
2
n=1
n=1

1. Al estudiar su carcter, obtenemos


Ambas son divergentes

n!
1+n
diverge,
y
2n1
n+1 converge
2
2
n=1
n=1

14. Sean las series numricas

1+n
n!
converge,
y
2n1
n+1 diverge
2
2
n=1
n=1

Ambas son convergentes

e2n
3n 1
, y
n!
2n+1
n=1
n=1

1. Al estudiar su carcter, obtenemos


Ambas son divergentes

e2n
3n 1
converge
diverge y
n!
2n+1
n=1
n=1

15. Sea S(x) la funcin suma de la serie de potencias:

e2n
3n 1
converge, y
diverge
n!
2n+1
n=1
n=1

Ambas son convergentes

n=1

(1)n

3n 2n
x , en su campo de convergencia.
n

1. El radio de convergencia de dicha serie de potencias es:

1
1
3
3
X
3
3

3
2. La suma de la serie numrica
(1)n ,
n
n=1
Es finita, y coincide con S(1)
1
Es finita, y coincide con S( )
3

16. Sea la serie de potencias:

X No se puede calcular, por no ser convergente.


Otra respuesta :

(2)n xn = 1 2x + 22 x2 23 x3 + . . . + (2)n xn + . . ..

n=0

1. Su intervalo de convergencia Ic es:


1 1
1
1
Ic = (1, 1)
X Ic = ( , )
Ic = ( , )
Ic = (2, 2)
2 2
2
2
2. Su suma S(x) est dada por:
2
1
1
X
Otra respuesta :
1 2x
1 2x
1 + 2x

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque II

17. Sea S(x) la funcin suma de la serie de potencias

(1)n

n=1

3n (x + 1)n
en su campo de convergenn 2n+1

cia.
1. El radio de convergencia de la serie de potencias es:
2
3
1
3
2
2. El intervalo de convergencia Ic es:

1
2

5 1
X ( , )
3 3

1 1
( , )
2 2

(1, 1)

3. La suma de la serie numrica

(1)n

n=1

Es finita, y coincide con S(0)


Coincide con

3 1
( , )
2 2

3n
n 2n+1
X No se puede calcular, por no ser convergente.

3
2

Otra respuesta :

18. La funcin suma S(x) de la serie de potencias:

(3)n x2n = 1 3x2 + 32 x4 33 x6 + . . . + (3)n x2n + . . .

n=0

est dada por:


1
1 3x

1
1 3x2

1
1 + 3x2

19. Sabiendo que: 1 + x + x2 + + xn + =


1.
2.
3.
4.
5.

nxn =

n=1

n=1

1
, |x| < 1, obtener las siguientes frmulas:
1x

x
.
(1 x)2

n2 x n =

x2 + x
.
(1 x)3

n3 x n =

x3 + 4x2 + x
.
(1 x)4

n=1

Otra respuesta :

1
(n + 1)(n + 2) n
x =
.
2
(1 x)3
n=0

(1n )

n=0

xn+1
= ln(1 + x).
n+1

20. Sabiendo que ex =

n+1
xn
, calcular la suma de la serie:
.
n!
n!
n=0
n=0

21. Los coeficientes de la Serie de Fourier SF (f (x)) de la extensin 2-peridica de la funcin


{
1, si x 0
f (x) =
vienen dados por:
1,
si 0 < x <

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque II

1 (1)n
, n > 0
n
2(1 (1)n )
X a0 = 0, an = 0, bn =
, n > 0
n
a0 = 0, an = 0, bn =

{
22. Sea SF (g(x)) la Serie de Fourier de g(x) =

2((1)n 1)
, an =
,
2
n2
Entonces, se verifica:

a0 = 1 +

S5 (g(x)) = 1 +
2

S5 (g(x)) = 1 +
2

S5 (g(x)) = 1 +
2

X S5 (g(x)) = 1 +

1 (1)n
, n > 0
2n
1 (1)n
a0 = 1, an =
, bn = 0, n > 0
n
a0 = 0, an = 0, bn =

1 x,

si x 0

1 + x,

si

0<x<

, cuyos coeficientes son:

bn = 0, n > 0, y sea S5 (g(x)) su suma parcial de orden 5.

4(
cos(3x) cos(5x) )
+
cos x +

9
25
4(
sen(3x) sen(5x) )

sen x +
+

9
25
(
2
sen(3x) + cos(3x) sen(5x) + cos(5x) )

sen x + cos x +
+

9
25
(
2
cos(2x) cos(3x) cos(4x) cos(5x) )

+
cos x

4
9
16
25

{
23. Sea SF (h(x)) la Serie de Fourier de la funcin h(x) =

3 x,

1 + x,
cuya extensin 2-peridica se muestra en la figura adjunta.

si x 0
si 0 < x <

El valor de SF (h(x)) en los puntos x = 0, x = 1, y x = es:


X SF (h(0)) = 1, SF (h(1)) = 0, SF (h()) = 1 +
SF (h(0)) = 1, SF (h(1)) = 0, SF (h()) = 1 +
SF (h(0)) = 1, SF (h(1)) = 0, SF (h()) = 1
3
1 +
SF (h(0)) = , SF (h(1)) = 0, SF (h()) =
2
2

Extensin 2-peridica de h(x)


{

x < 0
, de cuya serie de Fourier SF (f (x))
0x<
1 (1)n
(1)n 3
se conocen los coeficientes an =
, y bn =
, para n 1.
2
n
2n

24. Sea la extensin 2-peridica de f (x) =

+ x,
/2,

1. Obtener a0 , y escribir SF5 (f (x)), la Suma Parcial de orden 5 de la serie.


2. Calcular el valor de SF (f (x)) en los puntos: , 0, /2, y 2.
(Examen 1/02/2011).
{
25. Se considera la funcin:
dida por periodicidad a R.

f (x) =

, 0x
definida en el intervalo [, ] y exten2
0, x 0

1. Dibujar f (x) en el intervalo [2, 2].


2. Calcular el coeficiente a0 de su serie de Fourier, que denotaremos SF (f )(x).
3. Analizar la convergencia puntual en R de SF (f )(x).
4. Calcular el valor de SF (f )(x) en los puntos 0, y 7.
(Examen 5/09/2011).

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque II

26. Dada la funcin f (x) = x2 , x < , se considera la extensin de forma 2-peridica. Se pide:
1. Obtener su serie de Fourier.
2. Si S(x) es la suma de dicha serie, calcular S(0), S(), S().
3. Se puede afirmar que S(x) = f (x), para todo x R? Dibujar el grfico de la funcin en el
intervalo [2, 4].

1
4. A partir de desarrollo obtenido, calcular la suma de la serie
.
n2
n=1
{
27. Sea la funcin f (x) =

0, < x 0
Se pide:
x, 0 < x < .

1. Extenderla a una funcin 2-peridica, definiendo adecuadamente f (), de forma que su serie
de Fourier converja puntualmente a la funcin, para cualquier punto.
2. Obtener dicha serie de Fourier.
3. A partir del resultado anterior, hallar la suma de la serie

1
.
(2n

1)2
n=1

28. Si f (x) = sen(x), 0 x , se pide:


1. Extenderla de forma par en el intervalo [, 0).
2. Obtener la serie de Fourier de su extensin 2-peridica.
3. Estudiar la convergencia de dicha serie en cada punto.
4. Dibujar la funcin en el intervalo [, 4].
29. Dada la funcin f (x) = cos(2x), 0 < x , se pide:
1. Cmo debe definirse la funcin en el intervalo (, 0), para que en su serie de Fourier aparezcan solamente senos?
2. Qu valor debe tomar la extensin de dicha funcin en x = 0?
3. Calcular dicha serie de Fourier.
4. Si S(x) es la suma de la serie, calclese S(0), S(), S().
30. Dada la funcin f (x) = |x|, x , se pide:
1. Hallar la serie de Fourier de la extensin 2-peridica de f (x).
2. Si S(x) es la suma de la serie, para qu valores x R se verifica que que S(x) = f (x)?
{

2, 0 x <
x, x < 2.
Si S(x) es la suma de la serie, para qu valores x R se verifica que que S(x) = f (x)?

31. Desarrollar en serie de Fourier la funcin 2-peridica definida de la forma f (x) =

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

EJERCICIOS BLOQUE III


Funciones de Varias Variables

CLCULO INFINITESIMAL Y NUMRICO


CURSO 2010-2011

1. Determinar el dominio de definicin de las siguientes funciones:


1. f (x, y) = x3 sin(xy) ex
p
2. f (x, y) = 1 (x2 + y 2 )
1
3. f (x, y) = p
x2 + y 4
4. f (x, y) = log(x y)

5. f (x, y) = x + y
p
6. f (x, y) = log(x2 + y 2 )
7. f (x, y) = log(x2 y 4 + 3)

8. f (x, y) = exy 1
s
x2
9. f (x, y) =
log(xy)

10. f (x, y) = x y
log(x)
x2 + y 2 1
 3

y 1
12. f (x, y) = sin
x2 y 2
11. f (x, y) =

2. Calcular las derivadas parciales de las siguientes funciones:


1. f (x, y) = x2 sin2 (y)
2. f (x, y) = x2 y 3 x xy + y 2
p
3. f (x, y) = x2 + y 2
 
x
x
4. f (x, y) = log
y
y
5. f (x, y) = xy 2 + log(sin(x))
6. f (x, y) =
7. f (x, y) =

x2 y 3
x2 + 1
ex

+ Log(x)
cos(xy 2 )

3. Obtener las derivadas parciales de las siguientes funciones, y calcular su valor en los puntos que se
indican:
1. f (x, y) = y cos x + x sen y, en (, /2), y en (0, 3/2).
 
1
2. f (x, y) = y sin
, en (2/, 1).
x
3. f (x, y) = xy, en (1, 1).
4. f (x, y) =

x2
, en (1, 0).
exy

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y Numrico

4. Calcular, en cada caso, las siguientes derivadas direccionales:


1. f (x, y) = x2 y, en el punto P (1, 1) y direccin v = (1, 1).
2. f (x, y) = x3 3x2 y + xy 2 + 1, en el punto P = (1, 2) y direccin del vector v con orgen en el
punto P y extremo en el punto Q = (4, 6).
y
, en el punto P (1, 1) y direccin v = (1, 1).
3. f (x, y) =
x+y
4. f (x, y) = sen(2x y), en el punto P (/2, 0) y direccin v = (1, 2).

5. Sea la funcin f (x, y) = xy sen(1/x), y el punto P =


3
, 1 . Se pide:

1. Derivadas parciales de f (x, y) en P .


2. Ecuacin del plano tangente a f (x, y) en P .
3. Derivada direccional de f (x, y) en el punto P , y en la direccin del vector v = (1, 1)
6. Dada la funcin f (x, y) = y ex , y los puntos P1 = (0, 1), y P2 = (1, 2), se pide:
1. Derivada direccional de f (x, y) en P1 y direccin del vector P1 P2 .
2. Calcular las direcciones en la que se alcanzan las derivadas direccionales mxima, y mnima, de
f (x, y) en P1 , as como los valores de dichas derivadas.
3. Ecuacin del plano tangente a la superficie z = f (x, y) en el punto P (0, 3, 3).

Miguel Angel Cifredo Campos


macifredo@gmail.com

Derivaci
on de series de potencias:
Sea F (x) =

an (x a)n una serie de potencias con intervalo de convergencia I = (a R, a + R).

n=0

Recuerdese que F (x) es, en particular, una funcion.


Entonces, se tiene que F (x) es derivable en (a R, a + R), y su derivada es
F 0 (x) =

n an (x a)n1 .

n=1

Nota: Para poder aplicar correctamente este resultado, es necesario que la serie de potencias original
F (x) tenga como primer ndice n = 0, y el exponente de (x a) tiene que ser n. Si alguna de estas dos
cosas no se verifican, entonces hay que modificar la serie original para que se tengan ambas propiedades.

Ejercicio propuesto:
Sea F (x) =

nxn . Sabiendo que F (x) =

n=1

X
n=1

x
para x (1, 1), demostrar que
(1 x)2

n2 xn =

x2 + x
.
(1 x)3

Indicaci
on: Escribir F (x) de forma que sea una serie de potencias con primer ndice n = 0, y que el
exponente de x sea n, para poder aplicar el resultado anterior de derivacion de series de potencias.

Ejercicio propuesto 2:
Sea F (x) =

X
xn
.
n!
n=0

Sabiendo que F (x) = ex , para todo x IR, hallar el valor de la serie numerica

X
n+1
.
n!
n=1

Indicaciones:
1. Multiplicar la segunda igualdad del enunciado por x.
2. Derivar a ambos lados de la nueva igualdad, utilizando la regla de derivacion del producto. Cuando
hayamos derivado, escribimos F (x) como la serie de potencias del enunciado, y F 0 (x) se calcula usando
el resultado de derivaci
on de series de potencias.
3. En la igualdad resultante, sustituir x por 1.
4. Descomponer una de las dos series que nos aparecen, para que ambas tengan el mismo primer ndice
(recordar que 0! = 1). Una vez hecho esto, sumar adecuadamente esas series para llegar al resultado final.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicios propuestos de Series de Fourier:


Sea f : [T /2, T /2] IR una funci
on, y consideremos su extension T periodica.
Sea Sf (x) la correspondiente serie de Fourier asociada.
Entonces, bajo ciertas hip
otesis que se cumplen en las funciones que vamos a estudiar, el teorema de
Dirichlet dice que:
i) Sf (x0 ) = f (x0 ), para todo x0 IR donde la extension sea continua.
ii) Sf (x0 ) =

f+ (x0 ) + f (x0 )
, para todo x0 IR donde la extension sea discontinua.
2

Este resultado permite, en ciertas ocasiones, hallar la suma total de algunas series numericas.

Ejercicio propuesto 1:
Sea f (x) = ( x)( + x), para x .
Sabiendo que la serie de Fourier asociada a la extension 2-periodica de f es
Sf (x) =

X
2 2
(1)n+1
cos(nx),
+4
3
n2
n=1

se pide:
i) Hallar el valor de la serie numerica

ii) Hallar el valor de la serie numerica

X
(1)n+1
.
n2
n=1

X
1
.
2
n
n=1

Indicaci
on: Aplicar el teorema de Dirichlet con un valor x0 concreto para cada apartado, y despejar el
valor de la serie pedida (tomar valores sencillos para x0 ).
Ejercicio propuesto 2:
Sea f (x) = x2 + 2, para 1 x 1.
Sabiendo que la serie de Fourier asociada a la extension 2-periodica de f es
Sf (x) =

X
(1)n
7
+4
cos(nx),
3
n2 2
n=1

se pide:
i) Hallar el valor de la serie numerica

ii) Hallar el valor de la serie numerica

X
(1)n
.
n2
n=1

X
1
.
2
n
n=1

Indicaci
on: Aplicar el teorema de Dirichlet con un valor x0 concreto para cada apartado, y despejar el
valor de la serie pedida (tomar valores sencillos para x0 ).

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque I

CURSO 2011-2012

Resolucin Aproximada de EcuacionesInterpolacin

3, usando que es una raz de la ecuacin x2 3 = 0.

1. Obtener un intervalo de longitud 1 que contenga a 3 como nica raz.

1. Se pretende aproximar

2. A partir de dicho intervalo, aproximar dicha raz ejecutando tres iteraciones del Mtodo de la
Biseccin: x1 , x2 , y x3 . Obtener, asimismo, los correspondientes errores a priori cometidos en
cada iteracin.
3. Calcular el nmero mnimo de iteraciones necesarias con dicho mtodo para aproximar dicha
raz con 14 cifras decimales exactas (C.D.E).
2. Considrese la funcin f (x) = x + 4 sen(2 x). Responder razonadamente a las preguntas que se
formulan en los siguientes apartados (ntese que los resultados correctos ya aparecen marcados con
una cruz).
1. Se sabe que una raz x
de f (x) est separada en el intervalo [1.5, 2]. El nmero mnimo de
iteraciones que el Mtodo de la Biseccin necesita para garantizar una aproximacin a dicha
raz con 59 cifras decimales exactas es:
X 195

198

190

196

2. Al hacer dos iteraciones: x1 , x2 , del Mtodo de Biseccin en [1.5, 2] para aproximar dicha raz x

obtenemos:
x2 = 1.375, y la raz est en [1.5, x2 ].

x2 = 1.375, y la raz est en [x2 , x1 ].

x2 = 1.875, y la raz est en [x1 , x2 ].


x2 = 1.875, y la raz est en [x2 , 2].

3. Considrese la funcin f (x) = 2x3 x2 10x + 5. Se pide:


1. Obtener (razonadamente) un intervalo conteniendo a todas las races reales de f (x) = 0.
2. La ecuacin f (x) = 0 tiene una nica solucin negativa x
que se quiere aproximar por el Mtodo
de Newton-Raphson ( abreviadamente de Newton). Dar un intervalo conteniendo a x
, en el
cual se verifique la Regla de Fourier, y elegir adecuadamente el punto inicial x0 .
3. Para el intervalo anterior, calcular una cota del error n que se comete con el Mtodo de Newton
en la iteracin n-sima.
4. A partir del anterior punto inicial x0 , ejecutar dos iteraciones del Mtodo de Newton, junto con
su correspondiente error (esto es: obtener x1 y 1 , x2 y 2 ).

4. Se quiere aproximar el valor de x


= 7 127, sabiendo que es una raz de la ecuacin x7 127 = 0.

1. Demostrar que x
= 7 127 es la nica solucin real de dicha ecuacin.

2. Determinar un intervalo de amplitud 1 conteniendo a x


= 7 127, y en el cual se verifique la
Regla de Fourier. Elegir adecuadamente el punto inicial x0 para aproximar x
por el Mtodo de
Newton.
3. A partir de dicho valor x0 , calcular tres aproximaciones: x1 , x2 y x3 por el Mtodo de Newton.
4. Acotar el error obtenido con la ltima aproximacin x3 . Segn dicha cota del error, Cuntas
C.D.E. tiene x3 ?
5. Cuntas iteraciones como mnimo necesitaramos con el Mtodo de la Biseccin para aproximar la solucin con tantas C.D.E. como en el apartado anterior? (utilizar el intervalo obtenido
en el apartado 2).

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque I

5. Se considera la ecuacin 2x ln x = 4. Se pide:

]
1 1
1. Demostrar que la ecuacin tiene una nica raz real en el intervalo
,
.
100 10
2. Comprobar que en ese intervalo se verifican las hiptesis de la Regla de Fourier, eligiendo el
valor inicial adecuado para asegurar la convergencia del Mtodo de Newton-Raphson.
3. Obtener tres iteraciones del mtodo de Newton con el valor inicial del apartado anterior, calculando una cota del error cometido al aproximar la raz por la tercera iteracin. Cuntas C.D.E.
presenta dicha iteracin?
4. Cuntas iteraciones como mnimo necesitaramos con el Mtodo de la Biseccin para dar una
aproximacin con tantas C.D.E. como en el apartado anterior? (utilizar el intervalo del apartado
1).

6. Dada la ecuacin 1 sen x = x ( equivalentemente, sen x + x 1 = 0), se pide:


1. Comprobar que tiene una nica raz real y positiva (se puede razonar grficamente).
2. Al objeto de aproximar dicha raz por el Mtodo de Newton, dar un intervalo en el que se
verifique la Regla de Fourier, junto con un punto inicial x0 adecuado.
3. Obtener una cota del error cometido en la iteracin n-sima del Mtodo de Newton. Asimismo,
dar la aproximacin obtenida con la segunta iteracin del mtodo.

7. Se considera la ecuacin ln x +

2
= 2.
x

1. Demostrar que la ecuacin tiene una nica solucin en el intervalo [3, 6].
2. Se satisface la Regla de Fourier en dicho intervalo? En caso negativo, determinar un intervalo
donde s se cumplan las hiptesis de la Regla de Fourier.
3. A partir de dicho intervalo, hallar un punto inicial x0 para el que se tenga asegurada la convergencia de la sucesin de Newton-Raphson correspondiente, y obtener una aproximacin de la
solucin de la ecuacin a partir del segundo elemento x2 de la sucesin.
8. Dada la ecuacin tan(x) cos2 (x) = 0, se pide:
1. Encontrar un intervalo de amplitud uno y extremos enteros que contenga a la solucin de la
ecuacin ms prxima a cero.
2. Realizar dos iteraciones del Mtodo de Newton-Raphson tomando un punto de partida que
asegure la convergencia de dicho mtodo a la solucin de la ecuacin.
3. Cuntas cifras decimales exactas hemos conseguido aproximar con estas dos iteraciones?
9. Dada la ecuacin ex sen(x) x2 = 0, se pide:
1. Localizar las races de la ecuacin en el intervalo [2, 10], dando por cada una de ellas un intervalo
de amplitud uno y extremos enteros que las contengan.
2. Sea x
la solucin de la ecuacin en el intervalo [9, 10]. Encontrar un valor de dicho intervalo en
el que se asegure la convergencia del Mtodo de Newton-Raphson.
3. Realizar dos iteraciones del Mtodo de Newton-Raphson.
4. Dar una estimacin del error obtenido en la aproximacin de x.
10. Dada la ecuacin ex x5 1 = 0, se pide:
1. Demostrar que tiene tres races reales y dar, por cada una de ellas, un intervalo de amplitud
que las contengan.

1
2

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque I

2. Sea x
la mayor de las tres solucienes a la ecuacin. Realizar dos iteraciones del Mtodo de
Newton partiendo de un valor en el que se asegure la convergencia hacia dicha solucin.
3. Acotar el error de la anterior aproximacin.
11. Dada la ecuacin ex + x + a = 0, se pide:
1. Determinar para qu valores de la constante a la ecuacin posee una nica raz en el intervalo
[0, 1].
2. Para a = 2, dar una cota del error obtenido tras la realizacin de n iteraciones del Mtodo de
biseccin. Qu cota se habra obtenido si se hubiera considerado otro valor de a?
3. Obtener un valor x0 del intervalo [0, 1] que asegure la convergencia del Mtodo de NewtonRaphson.
4. Realizar dos iteraciones de dicho mtodo partiendo de x0 y obtener una cota del error cometido.
Si se hubiera tomado otro valor diferente de a, necesariamente se habra obtenido el mismo
error? Justificar la respuesta.
12. Obtener una aproximacin con un error menor que 12 103 de la raz de la ecuacin ex + x = 0:
1. Por el Mtodo de Biseccin.
2. Por el Mtodo de Newton-Raphson.
13. Dada la ecuacin x tan x = 0, se pide:
1. Cuntas soluciones posee la ecuacin en el intervalo [0, 2]? Para cada solucin dar un intervalo de amplitud 4 que la contenga.
2. Sea x
la mayor de las soluciones en dicho intervalo. Realizar dos iteraciones del Mtodo de
Newton-Raphson tomando un valor inicial en el que se asegure la convergencial mismo.
3. Dar una cota del error cometido en la anterior aproximacin.
14. Usar el algoritmo de Biseccin para obtener una aproximacin, con error menor que 105 , a la solucin de la ecuacin ex + 2x + 2 cos(x) 6 = 0 en el intervalo [1, 2].
15. Dada la ecuacin x3 3x2 3x 4 = 0, se pide:
1. Demostrar que la ecuacin posee una nica raz en el intervalo [1, 1] y que es simple.
2. Comprobar que en dicho intervalo no se verifican las hiptesis de la Regla de Fourier. Obtener
un intervalo de amplitud 1 en el que s se verifiquen dichas hiptesis, as como un valor inicial
x0 que garantice la convergencia del Mtodo de Newton-Raphson.
3. Obtener dos iteraciones del Mtodo de Newton-Raphson a partir de x0 .
4. Obtener una cota del error para la anterior aproximacin.
16. Sea la funcin f (x) = 4 cos(2x) x.
1. Calcular el polinomio interpolador de Newton de f (x) en el soporte S1 = {0, /4, /2, 3/4}.
Utilizar dicho polinomio para interpolar f (/6).
2. Utilizando el apartado anterior, calcular el polinomio interpolador de f (x) en el soporte S2 =
{0, /4, /2, 3/4, }.
3. Calcular el polinomio interpolador de f (x) en el soporte S3 = {0, /4, /2, }. Utilizar este
polinomio para aproximar f (2).

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque I

17.

De una cierta funcin y = f (x) se conoce que:


f (1) = 2, f (0) = 6, f (1) = 2, f (2) = 10, f (4) = 58
Responder razonadamente a las preguntas que se formulan en los siguientes apartados (ntese que
los resultados correctos ya aparecen marcados con una cruz).
1. El polinomio interpolador de f en el soporte S = {1, 0, 1, 2, 4} es:
P (x) = 2 + 6(x + 1) + 2x(x + 1) 10x(x + 1)(x 1) 58x(x + 1)(x 1)(x 2).
X P (x) = 6 + 4x 4x(x + 1).
P (x) = 2 + 4(x + 1) 8x(x + 1) 28x(x + 1)(x 1)(x 2).
P (x) = 2 + 4(x + 1) 8x(x + 1)(x 2).
2. Sea Q(x) el polinomio interpolador de f (x) en el soporte S1 = {1, 0, 1, 2}. Entonces:
Grado(Q) = Grado(P ) 1.

X Q(x) = P (x).
Grado(Q) = Grado(P ) 2.
3.

Grado(Q) = Grado(P ) 3.

Sea h(x) = x f (x), y sea R(x) el polinomio interpolador de h(x) en el soporte S2 = {1, 0, 1}.
Entonces, R(x) verifica:
R(x) = x P (x).

R(x) = 2x(x + 1).

X R(x) = 2x.

R(x) = x Q(x).

18. De una cierta funcin y = f (x) se conoce que:


f (2) = 1, f (0) = 5, f (1) = 7, f (2) = 29, f (3) = 61
Responder razonadamente a las preguntas que se formulan en los siguientes apartados (ntese que
los resultados correctos ya aparecen marcados con una cruz).
1. El polinomio interpolador P (x) de f (x) en el soporte S = {2, 0, 1, 2, 3} es:
P (x) = 1 + 6(x + 2) 18x(x + 2) 28x(x + 2)(x 1) + 28x(x 1)(x2 4).
P (x) = 1 + 5(x + 2) 7x(x + 2) 29x(x + 2)(x 1) 61x(x + 1)(x2 4).
P (x) = 2 + (x + 2)x(x 1) + 2x(x 1)(x2 4).
X P (x) = 5 + 3x 5x(x + 2).
2. Sea Q(x) el polinomio interpolador de f (x) en el soporte S1 = {2, 0, 1, 2}, y sean L0 (x), L1 (x),
L2 (x), L3 (x) los polinomios auxiliares de Lagrange en dicho soporte. Entonces:
L0 (x) = L3 (x), y Grado(Q(x)) 3.
X L1 (x) =

(x 1)(x2 4)
, y Grado(Q(x)) = Grado (P (x)).
4

L0 (x) =

x(x 1)(x2 4)
, y Grado(Q(x)) = 3.
12

L1 (x) =

(x 1)(x2 4)
, y Grado(Q(x)) = Grado (P (x)) 1.
4

3. Sea g(x) un polinomio cualquiera de grado 3. El polinomio interpolador de g(x) para el soporte
S1 = {2, 0, 1, 2}:
Coincide siempre con Q(x).
X Coincide siempre con g(x).

Coincide siempre con P (x).


Puede ser un polinomio de grado 4.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque I

4.

Sea h(x) = x2 f (x), y sea R(x) el polinomio interpolador de h(x) en el soporte S2 = {2, 0, 1}.
Entonces, R(x) verifica:
R(x) = x2 P (x).

R(x) = P (x) .

R(x) = x2 Q(x).

X Ninguna de las otras tres respuestas. Dar polinomio: R(x) = 2x 3x(x + 2) = 3x2 4x.
19. Responder razonadamente a los siguientes apartados:
3
1. Dado el soporte S1 = {(2, 3), (1, 1), (0, 1), (1, ), (2, 1)}, calcular el polinomio interpo2
lador P (x) en dicho soporte, mediante el mtodo de las diferencias divididas.
3
3
1
2. Sea Q(x) = x3 x2 + x + 1 el polinomio interpolador en el soporte
4
4
2
3
S2 = {(1, 1), (0, 1), (1, ), (2, 1)}. Tiene Q(x) alguna raz real en el intervalo [2, 0]? Se
2
verifica la regla de Fourier en dicho intervalo? En caso negativo, dar un intervalo donde s se
verifique, junto con un punto adecuado de inicio x0 para el Mtodo de Newton.
3. Existe alguna raz de Q(x), en el intervalo [0, 2]? Se verifica la Regla de Fourier en dicho
intervalo? En caso negativo, dar un intervalo donde s se verifique, as como un punto adecuado
de inicio x0 para el Mtodo de Newton. Aplicar dos veces el Mtodo de Newton y acotar el error
cometido en cada iteracin.
20. Hallar los polinomios interpoladores P (x) y Q(x) asociados respectivamente a los soportes S1 =
{(2, 4), (1, 8), (0, 3), (2, 1)} y S2 = {(2, 2), (1, 0), (0, 1), (2, 3)}.
21. Responder razonadamente a los siguientes apartados:
1. Calcular los polinomios de Lagrange Lk (x) asociados al soporte S = {1, 0, 1, 2, 4}.
2. De una funcin y = f (x) se conocen los siguientes datos: f (1) = 2, f (0) = 2, f (1) = 3, f (2) =
5, f (4) = 3. Hallar P (x), el polinomio interpolador de f (x).
3. De otra funcin g(x) se sabe que g(1) = 3, g(0) = 1, g(1) = 1, g(2) = 1, g(4) = 3. Hallar Q(x),
el polinomio interpolador de g(x).
22. Sea la funcin f (x) = sen(2x) + x2 .
1. Hallar el polinomio interpolador P (x) de f (x) en el soporte S = {0, /2, 3/2}.
2. Calcular el nuevo polinomio interpolador obtenido al aadir el punto 2 al soporte S.
3. Obtener R(x), el polinomio interpolador de Lagrange para el soporte S2 = {/4, 0, /2}. Determinar una estimacin del error que se comete al usar R(x) para interpolar f (1).
23. Sea f (x) una funcin tal que f (1) = 3. Se sabe que el polinomio interpolador de f (x) para el soporte
S1 = {2, 1, 0} es P (x) = x2 +x+1. Responder razonadamente (ntese que los resultados correctos
ya aparecen marcados con una cruz).
1. El polinomio interpolador Q(x) de f (x) en el soporte S2 = {2, 1, 0, 1} verifica:
Q(x) tiene grado 3.

Q(x) puede coincidir con P (x).

X Q(x) = P (x)

Ninguna de las otras tres respuestas, ya que Q(x) =


2. El polinomio interpolador R(x) de xf (x) en el soporte S2 = {1, 0, 1} verifica:
R(x) = xP (x).

X R(x) = x(x + 2)

R(x) = x

Ninguna de las otras respuestas. Dar Polinomio: R(x) =


3. El polinomio interpolador de x + f (x) en el anterior soporte S2 = {1, 0, 1} es:
X x + P (x).

xP (x).

P (x).

Es un polinomio de grado 1.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque II

CURSO 2011-2012

Polinomios de Taylor - Series de potencias - Series de Fourier

Polinomios de Taylor
1. Obtener los polinomios de McLaurin de orden n de las siguientes funciones:
a) ex , e2x .
b) sin(x), sin(3x).
c) cos(x), cos(3x).
d) Ln (1 + x), Ln (1 x).

e) (1 + x)k , 1 x.
2. Utilizando el polinomio de McLaurin adecuado, calcular
ma.

e con error menor que una diezmilsi-

3. Calcular el valor aproximado de cos(62 ), de dos formas distintas: a) usando el polinomio de


McLaurin de cos(x) de orden 2. b) Usando el polinomio de Taylor de cos(x) de orden 2, centrado
en el punto /3. Obtener en ambos casos una cota del error cometido.

Series numricas
4. Estudiar la convergencia de las siguientes series, sin aplicar el criterio del cociente y, calculando la
suma en caso de convergencia:
 k
X
1
a)
.
9
k=1

b)


X
k=1

(k2)
.


k 
  k
X
1
1
c)
2
+3
.
4
5
k=0

d)

X
k6
k=1

e)


X
1
k=2

f)

k+3


1

.
k k1

X
3
.
k

k=1

g)

X
k!
.
100k

k=1

h)

 k+2
X
e
k=1

i)

X
k=9

3
.
k8

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque II

5. Usando el criterio del cociente estudiar la convergencia de las series:


a)

X
7n
.
n!
n=1

b)

X
5n
.
n5
n=1

c)

X
n!
.
n100
n=1

d)

X
n3
.
(2n)!
n=1

X
3n + n
e)
.
n!
n=1

6. Estudiar la convergencia de las siguientes series alternas:


a)

(1)n+1

n=1

b)

c)

1
(1)n+1 .
n
n=1

(1)n+1

n=1

d)

e)

2
.
3n + 1

n
.
n2 + 1

Ln (n)
(1)n+1 .
n
n=1

(1)n+1

n=1

6n 2
.
3n + 1

Series de potencias
7. Obtener el campo y el radio de convergencia de las siguientes series:
a)

(1)n x2n .

n=0

b)

c)

X
xn
.
3n+1
n=0

nxn .

n=0

d)

(1)n nxn .

n=0

e)

(2)n

n+2 n
x .
n+1

(1)n

x2n
.
(2n + 1)22n

n=0

f)

X
n=0

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque II

g)

(1)n

n=0

h)

i)

x3n
.
n!

n1
xn .
3 2n
(n
+
1)
n=0

(1)n

n=0

n
xn .
n+1

8. Sabiendo que 1 + x + x2 + + xn + =
a)

nxn =

n=1

b)

n2 xn =

x2 + x
.
(1 x)3

n3 xn =

x3 + 4x2 + x
.
(1 x)4

n=1

d)

e)

1
, |x| < 1, obtener las siguientes frmulas:
1x

x
.
(1 x)2

n=1

c)

X
1
(n + 1)(n + 2) n
x =
.
2
(1

x)3
n=0

(1n )

n=0

xn+1
= Ln (1 + x).
n+1

9. Sabiendo que ex =

X
X
xn
n+1
, calcular la suma de la serie
.
n!
n!
n=0
n=0

Series de Fourier
10. Dada la funcin f (x) = x2 , x < , se considera la extensin de forma 2-peridica. Se pide:
a) Obtener su serie de Fourier.
b) Si S(x) es la suma de dicha serie, calcular S(0), S(), S().
c) Se puede afirmar que S(x) = f (x), para todo x R? Dibujar el grafico de la funcin en el
intervalo [2, 4].
d) A partir de desarrollo obtenido, calcular la suma de la serie

11. Sea la funcin f (x) =

X
1
.
2
n
n=1

0, < x 0
x, 0 < x < .

Se pide:
a) Extenderla a una funcin 2-peridica, definiendo adecuadamente f (), de forma que su serie de
Fourier converja puntualmente a la funcin, para cualquier punto.
b) Obtener dicha serie de Fourier.
c) A partir del resultado anterior, hallar la suma de la serie

1
.
(2n

1)2
n=1

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo Infinitesimal y NumricoEjercicios Bloque II

12. Si f (x) = sin(x), 0 x , se pide:


a) Extenderla de forma par en el intervalo [, 0).
b) Obtener la serie de Fourier de su extensin 2-peridica.
c) Estudiar la convergencia de dicha serie en cada punto.
d) Dibujar la funcin en el intervalo [, 4].
13. Dada la funcin f (x) = cos(2x), 0 < x , se pide:
a) Cmo debe definirse la funcin en el intervalo (, 0), para que en su serie de Fourier aparezcan
solamente senos?
b) Qu valor debe tomar la extensin de dicha funcin en x = 0?
c) Calcular dicha serie de Fourier.
d) Si S(x) es la suma de la serie, calclese S(0), S(), S().
14. Hallar la serie de Fourier de f (x) = |x|, 2 x 2, extendindola como una funcin 4-peridica.
Si S(x) es la suma de la serie, para qu valores x R se verifica que que S(x) = f (x)?

2, 0 x <
15. Desarrollar en serie de Fourier la funcin 2-peridica definida de la forma f (x) =
x, x < 2.
Si S(x) es la suma de la serie, para qu valores x R se verifica que que S(x) = f (x)?
16. Sea f (x) una funcin T-peridica. A partir de ella, definimos las funciones g(x) = f (x a), a R
(funcin de desplazamiento), y h(x) = f (bx), b R (funcin de escalado temporal). Cmo se
pueden obtener las series de Fourier de las funciones g y h a partir de la de f ?

Miguel Angel Cifredo Campos


macifredo@gmail.com

Escuela Tcnica Superior


Ingeniera Informtica

GRADO: TECNOLOGAS INFORMTICAS


(Grupo 3)

Clculo Infinitesimal y Numrico

Prcticas de Aula

Alumno: Cifredo Campos, Miguel ngel

N 11

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 1
Comprobar grficamente que la funcin f(x) = x3 + 2x2 5 + 3 tiene una raz en el intervalo [-5, 5].
Representacin general de la funcin:

Representacin de detalle de la funcin:

Sol. Grficamente se puede observar que la funcin tiene una raz en el intervalo [-5, 5]

Miguel Angel Cifredo Campos


macifredo@gmail.com

Se pide {realizando los clculos con 5 cifras decimales significativas} :


1. Localizar un subintervalo de amplitud 1 y extremos de nmeros enteros que contenga dicha
raz.

Sol. Grficamente se puede observar que el intervalo [-4,-3], de amplitud 1, contiene a la raz de la
funcin.

2. Cuntas iteraciones del mtodo de biseccin sern precisas para garantizar a priori una
solucin con error menor que 10-2, partiendo del subintervalo anterior?
Para el clculo del nmero de iteraciones necesarias para garantizar a priori un error mnimo que
10-2 emplearemos la siguiente expresin:
>

log 10 + log( )
log 2

Donde n es el nmero de iteraciones, d es el nmero de decimales exactos de precisin y donde a y


b son los extremos del intervalo en el que se estudia la raz.
Por tanto tendremos: d = 2, a = -4 y b = -3, que sustituyendo los valores en la expresin anterior:
>

2 log 10 + log(3 4)
log 2

Lo que da como resultado: n > 6.64385, lo que equivale a al menos 7 iteraciones.

Miguel Angel Cifredo Campos


macifredo@gmail.com

3. Obtener la primera aproximacin a la raz obtenida que por mtodo de biseccin que,
partiendo del subintervalo anterior, nos garantice un error a priori menor que 10-1.
Para garantizar un error a priori menor que 10-1 deberemos realizar n iteraciones, donde:
>

1 log 10 + log(3 4)
log 2

Lo que da como resultado: n > 3.32192, lo que equivale a al menos 4 iteraciones.


1 Iteracin:
[ ,

] = [4, 3]
( ) = +2 125

( ) = 9

+
2

( )

(4) + (3)
= 3 5
2

( ) [

]=[ ,

2 Iteracin:
[

] = [4, 35]
( ) = 2 85937

( ) = 9

+
2

( )=

(4) + (35)
= 3 75
2

) [

]=[ ,

3 Iteracin:
[

] = [375, 35]

( ) = 0 22851

( ) = 285937

+
2

(375) + (35)
= 3 625
2

( )=

) [

+
2

]=[ ,

4 Iteracin:
[

] = [3625, 35]
( ) = +098217

( ) = 022851

( )

(3625) + (35)
= 3 5625
2

) [

]=[

Luego la raz de la funcin debe encontrarse en el intervalo [-3625,-35625] con un error de


aproximacin menor a 10-1.
Como la raz de la funcin (con 5 cifras decimales) vale: -361347, verifica lo anterior.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 2
Sea la ecuacin x = f(x) para f(x) = log(x) + 3/2
Representacin general de la ecuacin:

Representacin de detalle de la ecuacin:

Raz de la ecuacin:

x = f(x)

235767

Miguel Angel Cifredo Campos


macifredo@gmail.com

1. Se puede garantizar f ([a,b]) [a,b] para [a,b] = [3,4] ? Nota: la funcin f(x) proporcionada
es montona en el intervalo dado.
Comprobamos la funcin en los extremos del intervalo dado:
f(3) = log(3) + (3/2) = 259861
f(4) = log(4) + (3/2) = 288629
Y verificamos que no se puede garantizar ya que existe x [a,b] tal que f(x) < a, aunque todos los
puntos del intervalo verifican f(x) < b.

2. Calcular f (x).
Siendo f(x) = log(x) + 3/2 , resolvemos como f (x) = 1/x

3. Se puede garantizar que |f (x)| < 1 en el intervalo [,1]?


tambin es montona en el intervalo dado.

Nota: la nueva funcin f (x)

Comprobamos la expresin en el intervalo propuesto:


|f'()| = | 1 / ()| = 2
|f(1) | = | 1 / 1 | = 1
Y verificamos que no se puede garantizar ya que existe x [a,b] tal que f(x) 1 , aunque todos los
puntos del intervalo verifican f(x) > -1.

4. Se puede garantizar a priori la convergencia del Mtodo del Punto Fijo en el intervalo [2,3]?

Tendremos garanta a priori de la convergencia del mtodo, y por tanto de que exista una nica
solucin, si:
|f(x)| < 1 en (a,b)
Dado el intervalo propuesto [2,3] observamos que:
Para x = 2, |f'(2)| = | 1 / (2)| = 050000 < 1
Para x = 3, |f'(3)| = | 1 / (3)| = 033333 < 1
Por tanto, s podemos garantizar a priori la convergencia en el intervalo [2,3].

Miguel Angel Cifredo Campos


macifredo@gmail.com

5. Hallar un intervalo de longitud 1 y extremos nmeros enteros que contenga una nica raz de
la ecuacin.
Clculo de la raz de la funcin propuesta:

Raz de f(x) = 2357677

Por tanto, un intervalo de longitud 1 y extremos nmeros enteros que contenga a la raz es [2, 3].

6. Aplicar el Mtodo del Punto Fijo tomando como valor inicial x0 el punto medio del intervalo
anterior y hallar el valor de x3.
El punto medio del intervalo [2, 3] es 250000, por tanto:
x0 = 2500000
x1 = f(x0) ( log(x0) + 3/2 ) = 241629
x2 = f(x1) ( log(x1) + 3/2 ) = 238223
x3 = f(x2) ( log(x2) + 3/2 ) = 236803
El valor de x3 es 236803

7. Sea el valor mximo de f (x) en el intervalo anterior, redondeando por exceso a una nica
cifra decimal Cul es el nmero mnimo de iteraciones para garantizar un error a priori
menor que 10-3 tomando como valor inicial el punto intermedio del intervalo anterior?
Nota: La nueva funcin f (x) es montona en el intervalo dado.
:

max| ( )|
( , )

max(

) <

Donde:
1
= 2, | (2)| = | 1 / 2 | = 1/2

| (2)| =
= 3, | (3)| = | 1 / 3 | = 1/3
2
Tomamos x0 [2,3], x0 = 25 como primera aproximacin.
Precisin: 10-2
Sea max(x0-a, b-x0) = max(25-2, 3-25) 25
Sustituyendo en la expresin anterior tenemos:
1

2 5 < 10
2
1
5
1
1
1
2
1
2
<
<
<
2 > 2500
2
2
1000
2
1000 5
2
5000
Como 211 = 2048, 212 = 4098, entonces n = 12 ; ser necesario al menos 12 iteraciones.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 1
Sea la funcin

( ) =

+ 28

Se pide:

1. Estudiar las races de f(x) y delimitarlas con intervalos de extremos enteros y longitud uno.
Estudio grfico de aproximacin a las races de la funcin:
Zoom 1:

Zoom 2:

Zoom 3:

Zoom 4:

Zoom 5:

Zoom 6:

Miguel Angel Cifredo Campos


macifredo@gmail.com

Delimitacin de las races en intervalos de extremos enteros y longitud uno:

Races de la funcin f(x):


Raz 1 : intervalo [1,2] x = 128719254
Raz 2 : intervalo [2,3] x = 259494441
Raz 3 : intervalo [4,5] x = 457240850

2. Si consideramos el intervalo [1,2], Qu podemos decir de la Regla de Fourier en dicho


intervalo?
Tomando una tabla de valores, puede comprobarse que:


[1,2]
(1) > 0,
(2) < 0
33
62
116
( )=
+
+
0, [1,2]
6
2
3
66
62
( )=
+
= 11 + 31 0, [1,2]
6
2

El Teorema de Bolzano y la monotona aseguran que la ecuacin tiene una nica solucin, , en el
intervalo [1,2], y por la regla de Fourier, el mtodo de Newton converge.

Continuidad y cambio de signo

f (x) 0, x [1,2]

f (x) 0, x [1,2]

Miguel Angel Cifredo Campos


macifredo@gmail.com

3. Si consideramos el intervalo [1, 5/2] y el punto de inicio x0 = 5/2 en el mtodo de Newton,


se verifican las condiciones de Fourier?
Las condiciones de Fourier determina la convergencia del mtodo de Newton si tomamos
X0 = a o x0 = b de tal forma que f(x0) f(x0) > 0 .
5

Tomamos x0 = /2 y evaluamos:
5

f ( /2 ) = -04375 es decir, f (x0) < 0


5

f ( /2 )= +35

es decir, f (x0) > 0

Observamos que sig[ f(x0) ] sig[ f(x0) ] y por tanto no se verifican las condiciones de Fourier
para la convergencia del mtodo de Newton.
4. Si tomamos x0 = 2 como punto de inicio del mtodo de Newton, Dnde estarn las sucesivas

iteraciones?
Estudiando la tabla de valores y grficamente las
sucesivas iteraciones, observamos que la n=3 llega
a un punto conflictivo de concavidad que nos
separa de una raz a priori cercana (259494441),
llevando la tangente hacia otra raz ms lejana
(457240850).

5. Calcula la iteracin n=2 del mtodo de Newton para x0 = 4.


El proceso de iteracin viene definido por la siguiente sucesin:
( )
=

( )
Sabiendo que,
( ) =

11
6

( )=

11
=

31
2

33
6

+ 93

116
11 3 + 93 2 232 + 168
+ 28 =
3
6
62
116
33 2 + 186 232
+
+
=
2
3
6

232 + 168
6
=
33 2 + 186 232
6

11 3 + 93 2 232 + 168
33 2 + 186 232

Resolvemos las iteraciones:


( )
11 43 + 93 42 232 4 + 168
=
= 4
= 55
( )
33 42 + 186 4 232

( )
( )

=55

11 5 53 + 93 5 52 232 5 5 + 168
2

33 5 5 + 186 5 5 232

Por tanto, la iteracin n=2 nos lleva al valor: x2 = 489746682.

= 489746682

Miguel Angel Cifredo Campos


macifredo@gmail.com

6. Aplicar el mtodo de Newton, tomando el intervalo [4, 5] y el punto de inicio x0 = 5. Calcular

la iteracin n=4 y la cota de error a posterior asociada.


Partiendo de la simplificacin de la expresin de iteracin, expuesta en el apartado anterior,
resolvemos:
=

11 3 + 93 2 232 + 168
33 2 + 186 232

Resolucin de iteraciones, con una precisin de 8 cifras decimales, para x0 =5:


( )
(5)
=
= 5
= 466929134
( )
(5)
( )

( )

( )


( )

( )


( )

= 466929134

= 457919719

= 4 57244553

(466929134)
(466929134)

4 57919719

4 57919719

4 57244553

(4 57244553)

= 457919719

= 4 57244553

= 4 57240851

Por tanto, la iteracin n=4 nos lleva al valor: x4 = 457240851.


Clculo de la cota de error a posteriori:
Expresin para el clculo del error a posteriori:
| ( )|

min | ( )|
[ , ]

Definimos los valores para los parmetros de la expresin:


Nmero de iteracin:
n=4
Punto de inicio:
x0 = 5
Valor de la funcin en la iteracin n:
|f(xn)| = 457240851
Valor del intervalo [a, b]:
a=4, b=5, luego [4, 5]
Valor de la derivada en el intervalo:
|f(a)| = 26_ |f(b)| = 2116 min = 26_
Sustituimos los valores:

4 57240851
= 1714653 10
2 66666666

Conclusin: tomando los valores indicados, en la iteracin n=4 an no hemos conseguido


ninguna cifra decimal exacta.
Nota: Se consigue la primera cifra decimal exacta en la iteracin n=5 y, un resultado con 8
cifras decimales exactas y solucin, en la iteracin n=9.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 1
=

Consideremos el soporte

1,

, 0, 2 , 1,

, 2, 1

se pide:

1. Hallar los polinomios auxiliares de Lagrange: p(x) = L0 y q(x) = L2.


Dado un soporte de puntos S = { (x0,y0), (x1,y1), ... , (xn,yn) } se definen los polinomios auxiliares de
Lagrange sobre dicho soporte como:

( )=
,

= 0,1, ,

Polinomio L0 :
=

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

1
6

1
2

+3

+2 )

1
3

Polinomio L1 :
=

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

1
2

+ 2)

1
+1
2

Polinomio L2 :
=

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

1
2

1
2

2 )

Polinomio L3 :
=

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

1
6

1
6

Luego los polinomios auxiliares requeridos son:


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

1
2

1
2

Miguel Angel Cifredo Campos


macifredo@gmail.com

2. El valor de la diferencia dividida de Newton: f [-1, 0, 1, 2].


Desarrollo de la Tabla de Diferencias Divididas pasa el soporte S :
Xi

Yi

f []

f []

f []

-1
1
3 =
0 (1)
2

10
7

3
3
=
1 (1)

-2
4
(2) 10
3
=
10
3
4

17 17

6
6 =
2 (1)

7 10

3 3 = 17
20
6

3
4
3 = 7
21
3
1

-1

3. El valor del polinomio de interpolacin en S para x = -05.


La forma del polinomio interpolador de Newton es:
( )=

donde los coeficientes ci del polinomio interpolador de Newton son los primeros datos de cada
columna en la Tabla de Diferencias Divididas.
Coeficientes obtenidos en la Tabla de Diferencias Divididas:
1 7 17 17
,
, ,

3 3 6 9
Luego resulta:
1 7
( )=
3 3

(1)

17
6

(1) ( 0)

( )=

17
17
7
+ ( 1)( + 1) + ( + 1)
2
9
6
3

( )=

17
9

17
6

17
[( (1)) ( 0) ( 1)]
9

43
2
18

Resolviendo x = 05 tenemos:
17
17
43
(05) = 05 + 05 + 05 2
9
6
18

(0 5) = 033333333

Miguel Angel Cifredo Campos


macifredo@gmail.com

4. El coeficiente del trmino de grado 1 del polinomio de interpolacin asociado al soporte


ampliado S = S U { (3, 1) }.
Agregamos a la Tabla de Diferencias Divididas calculada en el apartado 2, el punto (3, 1):

Xi

Yi

f []

f []

f []

f []

-1
1
3 =
0 (1)
2

10
7

3
3
=
1 (1)

-2
4
(2) 10
3
=
10
3

17 17

6
6 =
2 (1)

7 10

3 3 = 17
20
6

3
4
3 = 7
21
3
1

7
13
3
=
31
6

13
17

5
6
6
=
30
3

-1
1 (1)
=2
32

5
17

3
9
=
3 (1)

Clculo del nuevo polinomio interpolador, a partir del ya calculado en el apartado anterior:
8
( ) + [( (1)) ( 0) ( 1) ( 2)]
9

( )=

( )=

( )=

8
9

17
9

+
11
3

17
6
+

+
35
18

43
8
2 + [
18
9
+

25
2
6

Por tanto, el coeficiente de grado 1 requerido vale: 25 / 6

+2 ]

Miguel Angel Cifredo Campos


macifredo@gmail.com

5. Otras cuestiones no requeridas en el ejercicio.

Clculo y representacin grfica del polinomio interpolador de Lagrange para el soporte S inicial:
El polinomio interpolador de Lagrange se calcula como:
( )=

( ))

Resolvemos, utilizando los polinomios auxiliares previamente calculados en el apartado 1,


1
6
1

( ) = (1)

( )=

17
9

17
6

1
2
1

6
+

1
3

+0

1
2

1
1
+1 +1
2
2

1
2

+2

43
2
18

Representacin grfica del polinomio interpolador de Newton para el soporte S ampliado,


resaltando los puntos del soporte con la funcin:

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 1
(

Consideremos la serie numrica:

se pide:

1. Qu signo tienen los trminos de la serie?


n
1
2
3
4
5
6
7
8
9
10

Muestra grfica del signo de S(n)

S(n)
-2000
+1000
-0888
+1000
-1280
+1778
-2612
+4000
-6321
+10240

Tal como se aprecia en la tabla de valores, el signo de los trminos va alternando de negativo a
positivo.

2. Se puede usar el criterio del cociente? Qu resultado se obtiene?


Para saber si podemos utilizar el criterio del cociente debemos saber si existe el lmite, por tanto:

(2)

(2)

=0= 0

Como s existe lmite, entonces s podemos asegurar que este criterio satisface la solucin.
Como hay cambios de signo, lo estudiamos en su valor absoluto.

lim

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

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

Como 2 > 1 entonces, por el Criterio de DAlembert, podemos decir que la serie es divergente.

3. Se puede usar el criterio del Leibnitz? Qu resultado se obtiene?


Para saber si podemos utilizar el criterio de series alteradas o de Leibnitz debemos comprobar que:

(1)

(2)
2

0
lim

=0

Por tanto,
1
1
1
1
2
1
(2)
>
(2)
(2) >
>
( + 1)
( + 1)
( + 1)
La desigualdad no se cumple, por lo que no satisface la condicin de 0 an+1 an , luego no se
puede usar el Criterio de Leibnitz.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 2
(

Consideremos la serie numrica:

se pide:

1. Calcular el radio de convergencia.


Segn el teorema de Cauchy-Hadamard, para toda serie de potencias
( ) ,
existe un valor R [0,+] tal que la serie numrica
( ) es convergente para
Xi (a-R, a+R) y divergente para |X0-a| > R. Al valor R se le denomina Radio de Convergencia.
Para el clculo de dicho radio se procede aplicando los criterios de convergencia para series
numricas donde X representa un nmero cualquiera, un parmetro.
(

Descomponemos la funcin propuesta:

( + 2)

=2
=

Estudio de convergencia por el Criterio de Cauchy:

lim

2 ( + 2)

2 ( + 2)

3 +1

= lim

33

= lim

= lim

1
3

1
3
= lim
2 ( + 2)
3

3 +1

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

+1

( + 2)3

+1

= lim

2
( + 2)
3

3 +1
3

( + 2)

2
|( + 2)| < 1
3
.

Estudio de los valores para los que su cumple esta desigualdad:

3
3
2 |( + 2)|
< 1 2 |( + 2)| < 3 |( + 2)| <
<
2
3
2
2
Por tanto, el radio de convergencia ser de R = 0381101578

2. Calcular el intervalo de convergencia.


Sabiendo que el intervalo de convergencia viene definido como (a-R , a+R) entonces tenemos:
=2
( , + ) (1 618898422, 2 381101578)
= 0 381101578
Intervalo donde existe la funcin x (1618898422, 2381101578).
Por tanto tenemos que:

-2 x < 1 luego x (-2, 1)

Miguel Angel Cifredo Campos


macifredo@gmail.com

3. Qu signo tienen los trminos de la serie numrica que se obtiene para X0 = 0? Qu se


puede decir sobre su convergencia?
n
-5
-4
-3
-2
-1
0
1
2
3
4
5
6
7
8
9
10

El signo positivo tanto del numerador como del denominador del


cociente que define la serie indica el continuo valor positivo de
cada trmino, adems podemos constatarlo en la tabla de valores
adjunta.

S(n) X0=0
+273683681
+162182922
+96108398
+56953125
+33750000
+20000000
+11851852
+07023320
+04161967
+02466351
+01461541
+00866099
+00513244
+00304144
+00180234
+00106805

Para definir su convergencia, estudiamos la tendencia de su lmite:

lim

2 ( + 2)
3

3 +1

2
|( + 2)| < 1
3

= lim

Por tanto, la serie es convergente.

4. En su intervalo de convergencia, calcula la suma S(x) de la serie de potencias.


Para el clculo de la suma debemos transformar la serie en una funcin analtica
del tipo:

Por tanto,

2 ( + 2)

3 +1

33

2 ( + 2)3

33

1
2 ( + 2)
3

2 ( + 2)3

+1

2
3

( + 2)

Por lo que, sustituyendo en la expresin de la funcin analtica, tenemos:

1
1
2
2

=
(
)
1
3 1 +2
3 3

2 ( + 2)
3

3 +1

2
3 3

+1

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 1
Consideremos la funcin real de dos variables:

( , ) =

se pide:

1. Hallar la derivada parcial de segundo orden fyy.


Primero debemos calcular la derivada de primer orden fy (x,y):

( , ) =

3
+2

6
6

( +2 )
+2

( , )=

Ahora procedemos a calcular la derivada de segundo orden fyy (x,y):

( , )

( , )=

6
24
6

+
( +2 )
( +2 )
+2

2. Obtener el valor numrico de la derivada parcial fxx en el punto (2, ).


Procedemos a calcular la derivada parcial fxx :

( , ) =

3
+2

( , )

( , ) =

( , )=

6
(

+2 )

3
+2

24
18

( +2 )
( +2 )

Luego en el punto fxx (2, ) obtenemos el valor:

= 002400000.

Miguel Angel Cifredo Campos


macifredo@gmail.com

3. Hallar el valor de f (1,-1).


Dado el plano z = ax + by +c y el vector = (a, b, -1) en el plano tangente = (fx, fy, -1), fx y fy nos
informa de la mxima pendiente del plano tangente. Al vector formado por fx y fy se le denomina
gradiente.
El vector gradiente viene definido como: f (x0, y0) = ( fx(x0, y0), fy(x0, y0) )
Mxima pendiente: | ( ,

)| =

Por tanto tenemos,

| ( ,

)| =

2 2

+2 )

+
2

3 2
2+2

6
6 2

2+2
( 2 + 2 )2

Donde,
| (1, 1)| =

[9] + [0] | (1, 1)| = 9

4. Considerar el plano tangente a f (x, y) en el punto (2, -1). Hallar la altura de dicho plano en el
punto (3,2).
La ecuacin del plano tangente viene definida como:
( , ) = ( , )(

)+

( ,

)(

Por tanto, calculando auxiliares para X0=2, y0=-1 obtenemos:

( , ) =
( , )=

+2

6
(

+2 )

(2, 1) = 3
3
9
(2, 1) =
+2
2

6
6


( +2 )
+2

( , )=

(2, 1) = 9

Luego tenemos:
3 = 3

9
57
+ 3 (9) =
= 28500000000
2
2

5. Obtener el valor de la derivada direccional D f (x,y) para el vector u unitario asociado a la


direccin (-3, 2) en el punto (3, 4).
Resolvemos la derivada direccional de f (x,y) en la direccin del vector unitario en el punto (x0,y0)
dado como:

D f (x0,y0) = f (x0,y0) = ( fx(x0,y0), fy(x0,y0) )


El vector unitario =

; | |
| |

(3) + (2) = 13 | =
|

Por tanto,

0,

(3,4),

(3,4)

0,

13 13

48 3 936 2

289 13 289 13

= 193473286434267

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 1
( , )=

Consideremos la funcin:

(2 )

(2

) se pide:

1. Expresar el dominio de f (x,y).


f (x,y) tiene solucin cuando:

(2 )
(2 ) (2 ) > 0 > 2

Por lo que el dominio viene dado como: D f(x,y) =


> 2

grficamente representado quedara como:


y

2
Nota: el borde no entra.

Miguel Angel Cifredo Campos


macifredo@gmail.com

2. Calcular todos los puntos crticos de f (x,y) en su dominio.


Los puntos crticos de f(x,y) vienen determinado por sus extremos relativos, es decir cuando fx y fy
se anulan. Veamos su estudio:

( , )=

(2 )

(2

= 2
Resolvemos la anulacin:
(2 )
2
=
= 0
2
= 0

(2 ) = 0 2 =

(2 )

2
( + 2)
(2 )

( + 2) = 0 + 2 = 1 = 1
(2 ) = 0 2 = =
k
-5
-4
-3
-2
-1
0
+1
+2
+3
+4
+5

+k
-9/4
-7,068583
-7/4
-5,497787
-5/4
-3,926991
-3/4
-2,356194
-1/4
-0,785398
+1/4
0,785398
+3/4
+2,356194
+5/4
+3,926991
+7/4
+5,497787
+9/4
+7,068583
+11/4
+8,639380

Existen infinitos puntos crticos


sobre las rectas x = {-1, +1}.

+7/4

+5/4

+
+

-2
-1

0
-

+1

-
+5/4

+7/4

Como los puntos crticos de la funcin son aquellos donde se anula a la vez ambas
derivadas parciales, obtenemos los siguientes: Pn ( 1 , + k ).

Miguel Angel Cifredo Campos


macifredo@gmail.com

3. Si nos limitamos al recinto { (x,y): -2 x 2, -2 y 2 } , calcula los puntos crticos en este


recinto.
Observamos grficamente para qu valores de k, obtenemos puntos crticos dentro del recinto
dado:
y

+2
+
+1
+
-2
-2

-1

+1

+2

-
-1
-
-2

Acotacin de los valores de y para el recinto dado:


k
-5
-4
-3
-2
-1
0
+1
+2
+3
+4
+5

+k
-9/4
-7,068583
-7/4
-5,497787
-5/4
-3,926991
-3/4
-2,356194
-1/4
-0,785398
+1/4
0,785398
+3/4
+2,356194
+5/4
+3,926991
+7/4
+5,497787
+9/4
+7,068583
+11/4
+8,639380

Octante positivo

-5/2
-4/2
-3/2
-2/2
-1/2
0
+1/2
+2/2
+3/2
+4/2
+5/2

k
-7,853982
-6,283185
-4,712389
-3,141593
-1,570796
0,000000
+1,570796
+3,141593
+4,712389
+6,283185
+7,853982

Luego los puntos crticos son los siguientes:

P1 (-1, +)
P2 (-1, -)
P3 (+1, +)
P4 (+1, -)
Otros puntos de inters:
Pi1 (0, +)
Pi2 (0, 0)
Pi3 (0, -)

Plano XZ

Plano ZY

Miguel Angel Cifredo Campos


macifredo@gmail.com

4. Si nos limitamos al recinto { (x,y): -2 x 2, -2 y 2 } , Cules son los puntos de silla?


Estudiamos la caracterstica de cada punto crtico por el Criterio del Determinante Hessiano:
Calculamos las derivadas segundas parciales:
=

2(

(2 )
+ 2)
( 2)

(2 )
2

= 4 log (

+ 2)

(2 )

y formaremos la matriz Hessiana en (x0,y0) para cada punto crtico, como:


( , )
( , )
( , ) =
( , )
( , )
Aplicamos el criterio sobre el determinante de cada matriz formada para cada punto crtico:
1,

1,

1,

1,

+1,

+1,

+1,

+1,

0 4
det
4 0
0 4
=
det
4 0
0 4
=
det
4 0
0 4
=
det
4 0
=

1,

< 0

1,

< 0

+1,

< 0

+1,

< 0

Estudio de otros puntos de inters:


1
0
det
0 4
(2)
1
0
(0,0) (0,0) =
det
0 4
(2)
1
0
0,
0,
=
det
0 4
(2)
0,

0,

Vista con Puntos Crticos

> 0,

> 0,

(0,0) > 0,

< 0,

> 0,

0,

0,

> 0,

Vista con Puntos Crticos y Puntos de Inters

Miguel Angel Cifredo Campos


macifredo@gmail.com

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA


I. I. TECNOLOGAS INFORMTICAS

CURSO 2011-12

- GRUPO 3

TRABAJO OPTATIVO:
INTRODUCCIN A LAS ECUACIONES DIFERENCIALES
ORDINARIAS

Realizado por

Miguel ngel Cifredo Campos

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 2
Sea la ecuacin diferencial: y + 2y = ex . Se pide:

1. Encontrar la solucin general y = (x, C) .


Solucin:

2. Obtener las curvas integrales para C = 2, 4. Representarlas en el intervalo x [-2, 2].

3. Obtener la solucin particular que pasa por el punto (0, 2) (esto es, tal que y(0) = 2).
Solucin:

4. Para dicha solucin particular, calcular el valor de y(1).


Solucin:

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 4
Dado el problema de Valor Inicial:

+ 2 = 9
(1) = 18,
1 2
1. Calcular la solucin exacta.
Obtenemos
9(

+ 7)
4

y calculamos la solucin exacta en el intervalo 1 x 2 :

= 0 1

2 (1) (+7) = 115016331689560

2. Aplicando el Mtodo de Euler, con paso h = 02 dar un valor aproximado de y(2). Obtener
asimismo los errores cometidos en cada iteracin (errores de truncamiento locales).
Tomando la funcin dada como:
y resuelta para y(2) = 18, obtenemos:

9 22

Hemos indicado en Sage lo siguiente:


def metodo_euler_con_error(x0,y0,b,N):
()
f = lambda x,y: ((9*x^2)-(2*y))/x
g = lambda x: 9/4*(x^4 + 16)/x^2
()

y se ha ejecutado la orden:
tabla_euler_con_error = metodo_euler_con_error(2,18,.2,18);
matriz_tabla_euler = matrix(tabla_euler_con_error);
matriz_tabla_euler

obteniendo la siguiente tabla de resultados:


i
xi
yi
error en la etapa i
---------------------------------------------0 2.0
18.000000000000
0.000000000000
1 1.9
18.000000000000
0.094799168975
2 1.8
18.184736842105
0.216374269005
3 1.7
18.585263157894
0.373984246949
4 1.6
19.241764705882
0.580735294117
5 1.5
20.206985294117
0.855514705882
6 1.4
21.551250000000
1.226096938775
7 1.3
23.370000000000
1.734275147929
8 1.2
25.795384615384
2.444615384615
9 1.1
29.014615384615
3.459950731087
10 1.0
33.300000000000
4.950000000000
11 0.9
39.060000000000
7.206944444446
12 0.8
46.930000000000
10.760000000000
13 0.7
57.942500000000
16.629387755102
14 0.6
73.867500000000
26.942500000000
15 0.5
97.950000000000
46.612500000000
16 0.4 136.680000000000
88.680000000000
17 0.3 204.660000000000
195.542500000000
18 0.2 340.830000000000
559.260000000000

Miguel Angel Cifredo Campos


macifredo@gmail.com

3. Aplicando el Mtodo de Heun, con paso h = 02 dar un valor aproximado de y(2), obteniendo
tambin en este caso los errores cometidos en cada iteracin.
De forma anloga a la empleada en el apartado anterior,
=

Tomando la funcin dada como:

9 22

y resuelta para y(2) = 18, obtenemos:


Hemos indicado en Sage lo siguiente:
def metodo_heun_con_error(x0,y0,b,N):
()
f = lambda x,y: ((9*x^2)-(2*y))/x
g = lambda x: 9/4*(x^4 + 16)/x^2
()

y se ha ejecutado la orden:
tabla_heun_con_error = metodo_heun_con_error(2,18,.2,18);
matriz_tabla_heun_con_error = matrix(tabla_heun_con_error);
matriz_tabla_heun_con_error.n(digits=10)

obteniendo la siguiente tabla de resultados:


i
xi
yi
error en la etapa i
----------------------------------------0 2.0
18.0000000
0.00000000
1 1.9
18.0923684
0.00243074
2 1.8
18.3955332
0.00557787
3 1.7
18.9495356
0.00971177
4 1.6
19.8072699
0.01523000
5 1.5
21.0397696
0.02273038
6 1.4
22.7442117
0.03313514
7 1.3
25.0563664
0.04790872
8 1.2
28.1705452
0.06945477
9 1.1
32.3726939
0.10187217
10 1.0
38.0975299
0.15247005
11 0.9
46.0319536
0.23499084
12 0.8
57.3130246
0.37697530
13 0.7
73.9337643
0.63812342
14 0.6
99.6486801
1.16131983
15 0.5 142.2267749
2.33572510
16 0.4 219.9340011
5.42599890
17 0.3 384.4495019
15.75299808
18 0.2 832.6139208
67.47607918

4. Evaluar la precisin de ambos mtodos a partir de los errores finales cometidos.


Se puede demostrar que bajo cierta condiciones (que f(x,y) posea derivadas parciales continuas), el
error local cometido por el Mtodo de Euler en la n-sima iteracin es de orden O(nh2) para cada
n=1,,N) y del orden de O(nh3) para el Mtodo de Heun.

= | (

= | (

2
3!

~ ( ),

= 1, ,

~ ( ),

= 1, ,

Puesto que el paso h>0 est destinado a ser ms pequeo, el Mtodo de Heun supone una mejora
con respecto al Mtodo de Euler, tal como puede constatarse en las tablas de resultados
obtenidas.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejercicio 5
Dado el problema de Valor Inicial:

2 =
(1) = 0,


1 2

Aplicar los Mtodos de Euler y de Heun, con paso h=005 para determinar un valor aproximado
de y(12). (Nota: No se pide la solucin exacta).

Tomando la funcin dada como:

y resuelta para y(12) = 0, obtenemos: (c + Ei(x))*x^2


Hemos indicado en Sage, tanto para el Mtodo de Euler como en el de Heun, lo siguiente:
()
f = lambda x,y: ((x^2 * e^x)+(2*y))/x
g = lambda x:
x^2
()

y se han ejecutado las orden:


tabla_euler_con_error = metodo_euler_con_error(1.2,0,0.05,10);
tabla_heun_con_error = metodo_heun_con_error (1.2,0,0.05,10);

obteniendo las siguientes tablas de resultados:

i
0
1
2
3
4
5
6
7
8
9
10

xi
1.2000
1.0850
0.9700
0.8550
0.7400
0.6250
0.5100
0.3950
0.2800
0.1650
0.0500

Mtodo de Euler
error en
yi
etapa i
0.00000000
1.4400000
-0.45817614
1.6354011
-0.73031534
1.6712153
-0.85141049
1.5824355
-0.85357498
1.4011750
-0.76663876
1.1572638
-0.61879587
0.8788958
-0.43740040
0.5934254
-0.25013971
0.3285397
-0.08727258
0.1144975
0.01200112
0.0095011

Mtodo de Heun
error en
yi
etapa i
0.00000000
144.40612
0.01109750
91.162855
0.00808101
57.550674
-0.00405028
36.331481
-0.02206792
22.935909
-0.04388696
14.479349
-0.06816095
9.1407594
-0.09402034
5.7705304
-0.12090359
3.6429180
-0.14844804
2.2997639
-0.17641949
1.4518353

Miguel Angel Cifredo Campos


macifredo@gmail.com

ESCUELA TCNICA SUPERIOR DE INGENIERA INFORMTICA


I. I. TECNOLOGAS INFORMTICAS

CLCULO INFINITESIMAL Y NUMRICO


CURSO 2011-12

PRCTICAS DE LABORATORIO CON SAGE


Miguel ngel Cifredo Campos

Miguel Angel Cifredo Campos


macifredo@gmail.com

CLCULO INFINITESIMAL Y NUMRICO

CURSO 2011-12

PRCTICAS DE LABORATORIO CON SAGE

Contenido:
1. Introduccin a SAGE y repaso de clculo infinitesimal de una variable.
2. Mtodo de biseccin y mtodo del punto fijo.
3. Interpolacin polinomial e integracin numrica.
4. Polinomios de Taylor.
5. Series de Fourier.
6. Funciones de dos variables.
7. Introduccin a las Ecuaciones Diferenciales Ordinarias.

Miguel Angel Cifredo Campos


macifredo@gmail.com

PRCTICA 1: Introduccin a SAGE y repaso de clculo infinitesimal de una variable


En esta primera sesin nos marcamos los siguientes objetivos:

Dar una introduccin al software SAGE y al manejo de esta interfaz.


Familiarizarnos con los procedimientos bsicos del clculo infinitesimal de una variable.
Estudiar las representaciones grficas de funciones de una variable.
Programacin con SAGE: creacin de una funcin, rutina o algoritmo en SAGE.

Introduccin a SAGE

Breve descripcin
SAGE es un paquete de software matemtico libre y de cdigo abierto bajo licencia GNU GPL. En
realidad SAGE engloba, bajo una misma interfaz, a cerca de un centenar de paquetes de software
matemtico libre, ponindolos a disposicin del usuario de forma transparente. El lenguaje de programacin
empleado para ello es Python y en ese sentido, el lenguaje propio de SAGE es compatible en un 99% con
Python. Intentaremos dar una pequea introduccin al manejo de SAGE desde la asignatura de Clculo
Infinitesimal y Numrico.

Manejo de esta interfaz


Este documento es un ejemplo de hoja de trabajo (worksheet) en SAGE, similar a las de otros programas
como Maple o Mathematica (notebook). Hay dos tipos de recuadros o espacios (celdas) a lo largo del
documento: los que no son ejecutables, que normalmente contienen texto, como este espacio que ests
leyendo y recuadros ejecutables (contienen instrucciones cdigo de SAGE). Cuando se crea una nueva
hoja de trabajo, aparece por defecto con un primer recuadro ejecutable, donde podemos empezar a teclear
instrucciones. A continuacin se dan algunas claves del funcionamiento de esta interfaz:
1. En una celda (recuadro ejecutable) puede haber varias rdenes separadas por punto y coma o en
diferentes lneas. Escribe dentro de la celda tus instrucciones y ejectalas pulsando Shift+Enter. Si la
celda ya tiene instrucciones, basta con que hagas clic con el ratn dentro de ella, modifica lo que quieras
y luego pulsas Shift+Enter para ejecutarlas. Otra alternativa: cuando haces clic con el ratn dentro de la
celda, aparece a pie de la misma el enlace evaluate y si pulsas sobre l se ejecuta el contenido de la celda.
Si SAGE devuelve un resultado, lo hace en el espacio inferior, justo debajo de la celda.
2. Puedes crear un nuevo recuadro ejecutable al final del documento, colocando el cursor en la parte
inferior del ltimo recuadro, entonces aparece una lnea azul y haces un clic en ella.
3. Puedes insertar un recuadro encima de otro, colocando el cursor en el borde superior del recuadro,
entonces aparece una lnea azul y cliqueas sobre ella.
4. Puedes insertar un texto explicativo como ste haciendo lo mismo que en el caso anterior pero teniendo
pulsada la tecla Shift mientras cliqueas. Aparece un mini-editor de texto y al final del mismo las
opciones "Save changes" y "Cancel changes", para salir del mismo.
5. Para borrar un recuadro, primero se selecciona con el ratn todo el texto que contiene, luego se borra y
cuando el cuadro queda vaco, se vuelve a pulsar la tecla de borrado.

PRCTICA 1: Introduccin a SAGE y repaso de clculo infinitesimal de una variable.

Miguel Angel Cifredo Campos


macifredo@gmail.com

6. Para salir de esta hoja de trabajo, tienes tres opciones que aparecen como botones en la parte superior
derecha:
Save slo guarda los cambios realizados pero no sale.
Save & quit, guarda cambios y sale al espacio de trabajo general, donde estn todas tus hojas de trabajo.
Discard & quit, sale y no guarda ningn cambio desde la ltima vez que se le di a Save.

Ejemplo

A continuacin, ejecuta las instrucciones de las siguientes celdas y experimenta con la insercin de nuevas
celdas ejecutables y de texto.
5+2*3-(4+3)
4
5-3*2; 2+3^2; 1/3+1/2
-1
11
5/6
5-3*2 2+3^2 1/3+1/2
5/6

Si haces doble clic sobre este texto


Se abrir el editor de texto. Modifica lo que quieras y sal del editor pulsando Save changes, que aparece a
pie del mismo.
SAGE es un lenguaje orientado a objetos. En SAGE hay funciones y mtodos. Para usar una funcin
escribimos el nombre de la funcin y entre parntesis el objeto al que se le aplica la funcin. Si usamos un
mtodo, primero escribimos el objeto sobre el que se va a actuar, a continuacin un punto y finalmente el
mtodo, con parntesis, en cuyo interior se pueden escribir las opciones (en caso necesario). Los mtodos
son tambin conocidos como atributos asociados al objeto.

Ejemplo

En el siguiente ejemplo hemos usado la funcin sqrt( ) para hallar la raz cuadrada del nmero 2 y la funcin
n( ) para hallar una aproximacin numrica en coma flotante. sta ltima tambin acta como un mtodo o
atributo, aplicable al resultado numrico; como opcin, en el ltimo caso, hemos precisado el nmero de
cifras decimales con digits.
sqrt(2); n(sqrt(2)); sqrt(2).n(); n(sqrt(2),digits=7)
sqrt(2)
1.41421356237310
1.41421356237310
1.414214

Miguel Angel Cifredo Campos


macifredo@gmail.com

Podemos obtener una representacin de los resultados ms amigable con la funcin (y atributo) show():
sqrt(2); sqrt(2).show(); show(sqrt(2))
sqrt(2)

2
2
La notacin de funcin nos resulta ms prxima a la escritura en Matemticas. Sin embargo, los mtodos o
atributos tienen una ventaja adicional: como primero tenemos que escribir el objeto, SAGE "sabe" qu
mtodos se pueden aplicar a dicho objeto. Si escribimos un objeto, a continuacin un punto y pulsamos el
tabulador nos aparece un listado con todos los mtodos que se pueden aplicar a dicho objeto. Si hemos
empezado a escribir el objeto y pulsamos el tabulador, el programa completar el nombre o nos dar las
diversas posibilidades, si hay ms de una.
Para obtener ayuda sobre un mtodo o funcin sustituimos los parntesis por el signo de interrogacin "?" y
pulsamos el tabulador.
La asignacin de un valor a cierta variable en Sage se hace con el signo de la igualdad, uno solo.
a=7/3
a.denominator()
3
denominator?
File: /home/sage/sage/local/lib/python2.6/site-packages/sage/misc/functional.py
Type: <type function>
Definition: denominator(x)
Docstring:
Returns the denominator of x.
EXAMPLES:
sage:
11111
sage:
sage:
sage:
sage:
x - 1

denominator(17/11111)
R.<x> = PolynomialRing(QQ)
F = FractionField(R)
r = (x+1)/(x-1)
denominator(r)

PRCTICA 1: Introduccin a SAGE y repaso de clculo infinitesimal de una variable.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Funciones reales de una variable real


SAGE incorpora todas las funciones elementales habituales y presentes en las calculadoras cientficas.
Podemos ver una lista de las mismas sin ms que asignar un valor numrico real a cierta variable y pedir
luego los mtodos disponibles para dicho valor numrico. Entre tales mtodos, podremos encontrar las
funciones elementales exponencial, logartmica, trigonomtricas, etc.
Tambin podemos definir nuestras propias funciones reales y hacer clculos bsicos con ellas. En general,
primero hay que declarar la variable que vamos a emplear.
a=3.
a.
Traceback (click to the left of this block for traceback)
...
SyntaxError: invalid syntax
exp(a); sin(a); tan(a+1)
20.0855369231877
0.141120008059867
1.15782128234958
x=var('x')
f(x)=x^2-5*x+7
f(1);f(0.02)
3
6.90040000000000

Con la funcin y mtodo limit(funcion,x=a) podemos calcular lmites. Si usamos la opcin dir='plus' o
dir='minus', calcularemos los lmites a derecha e izquierda respectivamente. Tambin podemos resolver
lmites en el infinito, indicado con la asignacin x=+infinity x=-infinity.
limit(f,x=0)
x |--> 7
limit(f,x=+infinity)
x |--> +Infinity
limit(f,x=-infinity)
x |--> +Infinity
limit(f,x=0,dir='plus');limit(f,x=0,dir='minus')
x |--> 7
x |--> 7

Para calcular la derivada de una funcin usamos el mtodo y funcin .diff(), como argumentos tenemos los
nombres de las variables a derivar (se puede omitir si no hay confusin posible) o cuntas veces derivamos.
f; fx=f.diff(); fx; fx2=f.diff(2); fx2
x |--> x^2 - 5*x + 7
x |--> 2*x - 5
x |--> 2
fx(1);fx2(1)
-3
2
4

Miguel Angel Cifredo Campos


macifredo@gmail.com

Podemos obtener la representacin grfica con la funcin y mtodo .plot(), por defecto, dibujar la funcin
entre (-1,1) y en color azul. Existe multitud de opciones disponibles: podemos cambiar el color, grosor, la
aparicin o no de los ejes... Se puede obtener ms informacin con plot?
plot(f)
f.plot(-4,9,color='green')

En el caso de que queramos dibujar varios objetos o grficas simultneamente, basta con usar el smbolo de
suma +, y la orden y mtodo .show().
grafico1=cos(x).plot(-pi,pi,color='green')
grafico2=sin(x).plot(-pi,pi,color='red')
grafico12=grafico1+grafico2 show(grafico12)

Podemos hallar una primitiva de la funcin f(x) mediante el clculo de

resolver una integral definida

abf(x)

f(x) dx . Igualmente, podemos

dx

f.integral(x)
x |--> 1/3*x^3 - 5/2*x^2 + 7*x
f.integral(x,0,1)
x |--> 29/6

PRCTICA 1: Introduccin a SAGE y repaso de clculo infinitesimal de una variable.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Programacin con SAGE


Vamos a introducir algunas ideas, mediante un sencillo ejemplo, de la creacin de una funcin o rutina que
devuelva cierto resultado a partir de unos datos o parmetros de entrada.
Ejemplo 1
Hallar un procedimiento que, a partir de cierta funcin f(x) y de un valor x=a, devuelva la ecuacin de la
recta tangente a dicha funcin para el valor dado.
Solucin
Recordemos que la ecuacin de la recta tangente en un punto es y=f(a)+f(a)(xa) . Llamaremos a la rutina
construida por nosotros: recta_tangente( )
def recta_tangente(f,a):
derf=f.diff()
return f(a)+derf(a)*(x-a)
x=var('x')
f(x)=x^2-5*x+5
recta_tangente(f,2)
-x + 1
grafico1=f(x).plot(-4,9,color='green')
grafico2=recta_tangente(f,2).plot(-4,9,color='red')
grafico12=grafico1+grafico2 show(grafico12)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 2
Definir una rutina que para cierta funcin f(x) genere una tabla de valores (xi,f(xi)) para xi=a+d i, con
i=0,1,...n.
Solucin: Vamos a llamar a la rutina tabla_valores()
def tabla_valores(f,a,d,n):
for i in range(n+1):
xi=a+d*i
print (xi,f(xi))
tabla_valores(f,0,0.5,10)
(0.00000000000000,
(0.50000000000000,
(1.00000000000000,
(1.50000000000000,
(2.00000000000000,
(2.50000000000000,
(3.00000000000000,
(3.50000000000000,
(4.00000000000000,
(4.50000000000000,
(5.00000000000000,

5.00000000000000)
2.75000000000000)
1.00000000000000)
-0.25000000000000)
-1.00000000000000)
-1.25000000000000)
-1.00000000000000)
-0.25000000000000)
1.00000000000000)
2.75000000000000)
5.00000000000000)

Ejemplo 3
Modificaremos la rutina anterior para que, en caso de detectar un cambio de signo en f(x) desde un valor xi al
siguiente xi+1, nos muestre un mensaje avisando del evento y otro avisando si sucede que f(xi)=0.
Solucin: Llamaremos a la rutina cambio_signo(). Utilizaremos una funcin de SAGE llamada sign() que
proporciona valores 0,+1,-1 segn el signo de su argumento.
def cambio_signo(f,a,d,n):
signo1=sign(f(a))
for i in range(n+1):
xi=a+d*i
signo2=sign(f(xi))
print (xi,f(xi))
if signo2==0:
print 'Hay un cero en x=', xi
else:
if signo1*signo2<0:
print 'Hay cambio de signo entre ',xi-d,' y ', xi
signo1=signo2
cambio_signo(f,0,0.5,10)
(0.00000000000000, 5.00000000000000)
(0.50000000000000, 2.75000000000000)
(1.00000000000000, 1.00000000000000)
(1.50000000000000, -0.25000000000000)
Hay cambio de signo entre 1.00000000000000
(2.00000000000000, -1.00000000000000)
(2.50000000000000, -1.25000000000000)
(3.00000000000000, -1.00000000000000)
(3.50000000000000, -0.25000000000000)
(4.00000000000000, 1.00000000000000)
Hay cambio de signo entre 3.50000000000000
(4.50000000000000, 2.75000000000000)
(5.00000000000000, 5.00000000000000)

1.50000000000000

4.00000000000000

PRCTICA 1: Introduccin a SAGE y repaso de clculo infinitesimal de una variable.

Miguel Angel Cifredo Campos


macifredo@gmail.com

PRCTICA 2: Mtodo de biseccin y mtodo del punto fijo


En esta sesin nos marcamos los siguientes objetivos:

Repasar y ampliar algunas posibilidades grficas para la representacin de funciones con SAGE.
Describir el procedimiento seguido por el mtodo de biseccin e implementar el algoritmo.
Ilustrar el teorema del punto fijo para una funcin de una variable.
Describir el procedimiento seguido por el mtodo del punto fijo e implementar el algoritmo.

Representaciones grficas en el plano


Veamos algunas opciones para representar grficamente una funcin y=f(x), as como algunas expresiones
para la representacin de rectas (segmentos) y puntos del plano.
x=var('x')
f(x)=3*sin(x/2)-5*cos(x)
show(f(x))
plot(f(x),(x,0,10),color='blue')

Podemos utilizar ciertos patrones para el trazado de la lnea en las grficas con la opcin linestyle='patron',
donde el patrn puede tomar ciertos valores como linestyle=':' para lnea discontinua de puntos o linestyle='.'para lnea discontinua que alterna segmentos y puntos. Puedes obtener ms informacin sobre opciones
grficas con plot?

PRCTICA 2: Mtodo de biseccin y mtodo del punto fijo.

Miguel Angel Cifredo Campos


macifredo@gmail.com

plot(f(x),(x,0,10),color='green',linestyle=':')

line( [(0,0),(6,6)], color='red', linestyle='-.' )

Recuerda que podemos representar varios grficos simultneamente con la funcin show():
show(
plot(f(x),(x,0,10),color='blue')+
line( [(0,0),(6,6)], color='red')+
point([(3,4)], color='green')
)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Incluso podemos determinar una ventana o rango de valores para seleccionar un rea de la grfica con los
valores opcionales xmin, xmax, ymin,ymax:
show(
plot(f(x),(x,0,10),color='blue')+
line( [(0,0),(6,6)], color='red')+
point([(3,4)], color='green')
, xmin=0, xmax=4, ymin=0, ymax=6)

Tambin podemos crear un marco de lneas discontinuas que centre nuestra atencin en un rea determinada
del grfico:
show(
plot(f(x),(x,0,10),color='blue')+
line( [(1,1),(4,1)], linestyle=':',
line( [(4,1),(4,6)], linestyle=':',
line( [(4,6),(1,6)], linestyle=':',
line( [(1,6),(1,1)], linestyle=':',

PRCTICA 2: Mtodo de biseccin y mtodo del punto fijo.

color='red'
color='red'
color='red'
color='red'

)+
)+
)+
))

Miguel Angel Cifredo Campos


macifredo@gmail.com

Vamos a crear una rutina que represente el rectngulo anterior, el cual viene determinado por dos puntos
diagonalmente opuestos:
def rectangulo((xmin,ymin),(xmax,ymax),color='red',estilo=':'):
return
line( [(xmin,ymin),(xmax,ymin)], linestyle=estilo, color=color )+
line( [(xmax,ymin),(xmax,ymax)], linestyle=estilo, color=color )+
line( [(xmax,ymax),(xmin,ymax )], linestyle=estilo, color=color )+
line( [(xmin,ymax ),(xmin,ymin)], linestyle=estilo, color=color )

show(
plot(f(x),(x,0,10),color='blue')+
rectangulo((4,-2),(6,2))+
rectangulo((1,2),(3,6)))

Miguel Angel Cifredo Campos


macifredo@gmail.com

Mtodo de Biseccin
Recordemos que el mtodo de biseccin pretende resolver ecuaciones de la forma:

f(x)=0.

Ahora resolveremos la ecuacin no lineal f(x)=0 para el ejemplo anterior usando el mtodo de biseccin.

Dibujamos su grfica entre 0 y 10 para localizar los puntos de


corte con el eje OX que son las soluciones de nuestra ecuacin.
plot(f(x),(x,0,10))

Esta ecuacin tiene infinitas races, debido a la periodicidad de las funciones sen y cos. Vamos a calcular la
menor raz positiva.
Si consideramos el intervalo [0,2], tenemos que se verifican las hiptesis del Teorema de Bolzano pues la
funcin cambia de signo en los extremos del intervalo, esto es f(a)f(b)<0:
f(0)*f(2).n()
-23.0257356857970

Aunque la representacin grfica no deja lugar a dudas sobre la


existencia de una nica raz en el intervalo [0,2], vamos a
estudiar, con carcter meramente ilustrativo, la grfica de la
primera derivada f(x) para constatar que no se anula en el
intervalo, lo que garantiza, desde el punto de vista matemtico
que la raz es nica.
fder(x)=f.diff(x)
plot(fder,(x,0,2))

El valor mnimo de la derivada dentro del intervalo [0,2] se alcanza en el extremo x=0. Hallamos su valor:
minder=fder(0.); minder
3/2

PRCTICA 2: Mtodo de biseccin y mtodo del punto fijo.

Miguel Angel Cifredo Campos


macifredo@gmail.com

En la primera iteracin del mtodo de biseccin, llamaremos a=0,


continuacin f(x1).

b=2, x1=(a+b)/2 para evaluar a

a=0; b=2; x1=(a+b)/2;


print 'aprox.: ', x1.n(),' valor f:', f(x1).n()
aprox.: 1.00000000000000 valor f: -1.26323491352809

Como f(x1)f(a) > 0, tomaremos ahora a=x1, b=b, x2=(a+b)/2


a=x1; x2=(a+b)/2;
print 'aprox.: ', x2.n(),' valor f:', f(x2).n()
aprox.: 1.50000000000000 valor f: 1.69123027173149

Ahora ha resultado f(x2)f(a) < 0, luego elegimos a=a, b=x2, x3=(a+b)/2.


b=x2; x3=(a+b)/2;
print 'aprox.: ', x3.n(),' valor f:', f(x3).n()
aprox.: 1.25000000000000 valor f: 0.178680006845043

De nuevo ha resultado f(x3)f(a)<0, luego elegimos a=a, b=x3, x4=2a+b.


b=x3; x4=(a+b)/2;
print 'aprox.: ', x4.n(),' valor f:', f(x4).n()
aprox.: 1.12500000000000 valor f: -0.555974563385271

Podramos seguir iterando el proceso, pero es interesante poder acotar el error cometido en el ltimo paso.
Para ello usamos la cota del error a posteriori, es decir,

Apliqumosla al ltimo valor calculado:


error=abs(f(x4))/minder; error.n()
0.370649708923514

Tambin podemos prever cuntas iteraciones sern necesarias como mnimo para garantizar un determinado
nmero de cifras decimales exactas, utilizando la frmula del error a priori:

Por ejemplo, calculemos el nmero de iteraciones necesarias para garantizar un error menor que 103, es
decir, garantizar dos cifras decimales exactas.

Miguel Angel Cifredo Campos


macifredo@gmail.com

a=0; b=2; log(10^3*(b-a),2).n()


10.9657842846621

Luego se precisan 11 iteraciones para garantizar, a priori, tres cifras decimales exactas.
iteraciones=11

A continuacin disearemos un algoritmo donde cada iteracin del mtodo de biseccin es implementada
utilizando un bucle for. Tomaremos como intervalo inicial [0,2]. Estamos interesados en calcular 11
iteraciones del mtodo y en cada paso proporcionaremos los valores de xi y del error a priori:
iteraciones=11 ; a=0. ; b=2. ; f(x)=3*sin(x/2)-5*cos(x)
for i in range(iteraciones):
xi=(a+b)/2
print 'iter. ',i+1,':', xi.n(),' e. apr.:', ((b-a)/2).n()
if f(a)*f(xi)<0:
b=xi
else:
a=xi

iter.
iter.
iter.
iter.
iter.
iter.
iter.
iter.
iter.
iter.
iter.

1
2
3
4
5
6
7
8
9
10
11

:
:
:
:
:
:
:
:
:
:
:

1.00000000000000
1.50000000000000
1.25000000000000
1.12500000000000
1.18750000000000
1.21875000000000
1.23437500000000
1.22656250000000
1.22265625000000
1.22070312500000
1.21972656250000

e.
e.
e.
e.
e.
e.
e.
e.
e.
e.
e.

apr.:
apr.:
apr.:
apr.:
apr.:
apr.:
apr.:
apr.:
apr.:
apr.:
apr.:

1.00000000000000
0.500000000000000
0.250000000000000
0.125000000000000
0.0625000000000000
0.0312500000000000
0.0156250000000000
0.00781250000000000
0.00390625000000000
0.00195312500000000
0.000976562500000000

En la ltima iteracin tan solo podemos asegurar que tenemos 3 cifras decimales exactas, tras 11 iteraciones.
Podemos ver, para el ltimo valor calculado, su cota del error a posteriori:
(abs(f(xi))/minder).n()
0.000830941165355981

PRCTICA 2: Mtodo de biseccin y mtodo del punto fijo.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Resolucin de ecuaciones g(x)=h(x)

El mtodo de biseccin tambin puede ser utilizado para determinar el punto de corte de dos grficas de
funciones g(x)=h(x) con tan solo considerar la nueva funcin, diferencia de ambas, f(x)=g(x)h(x) . Veamos
un ejemplo.
a=-2; b=2;
g(x)=arctan(-x)
h(x)=e^x
show( plot(g(x),a,b,color='blue')+ plot(h(x),a,b,color='red') )

iteraciones=11 ; a=-1. ; b=0. ; f(x)=g(x)-h(x)


for i in range(iteraciones):
xi=(a+b)/2
print 'iter. ',i+1,':', xi.n(),' e. apr.:', ((b-a)/2).n(
if f(a)*f(xi)<0:
b=xi
else:
a=xi
iter.
iter.
iter.
iter.
iter.
iter.
iter.
iter.
iter.
iter.
iter.

1
2
3
4
5
6
7
8
9
10
11

:
:
:
:
:
:
:
:
:
:
:

-0.500000000000000
-0.750000000000000
-0.625000000000000
-0.562500000000000
-0.593750000000000
-0.609375000000000
-0.601562500000000
-0.605468750000000
-0.607421875000000
-0.606445312500000
-0.606933593750000

e.
e.
e.
e.
e.
e.
e.
e.
e.
e.
e.

apr.:
apr.:
apr.:
apr.:
apr.:
apr.:
apr.:
apr.:
apr.:
apr.:
apr.:

0.500000000000000
0.250000000000000
0.125000000000000
0.0625000000000000
0.0312500000000000
0.0156250000000000
0.00781250000000000
0.00390625000000000
0.00195312500000000
0.000976562500000000
0.000488281250000000

Miguel Angel Cifredo Campos


macifredo@gmail.com

Mtodo del punto fijo


Recordemos que el mtodo del punto fijo pretende resolver ecuaciones de la forma

x=g(x).

El teorema del punto fijo garantiza que si g(x) es continua en un intervalo [a,b], de forma que g([a,b])
[a,b] , y su derivada verifica que g(x)k<1 en el interior del intervalo (a,b), entonces la ecuacin x=g(x)
tiene una nica solucin (punto fijo de g(x)). Adems, la sucesin de valores xn+1=g(xn)converge a la
solucin para cualquier valor inicial x0 tomado en el intervalo [a,b].
Ilustraremos este resultado con el siguiente ejemplo:

a=0;b=3;
g(x)=(x+2)/(x+1)
h(x)=x
show(
plot(g(x),a,b,color='blue')+
plot(h(x),a,b,color='red')+
rectangulo((a,a),(b,b)))

Podemos comprobar como la grfica de g(x), de color azul, queda dentro del cuadrado rojo, lo que garantiza
la condicin g([a,b])[a,b] . Estudiemos ahora la derivada de g(x).
gder=g.diff(x); gder(x)
1/(x + 1) - (x + 2)/(x + 1)^2

PRCTICA 2: Mtodo de biseccin y mtodo del punto fijo.

Miguel Angel Cifredo Campos


macifredo@gmail.com

show(
plot(abs(gder(x)),a,b,color='blue')+
rectangulo((a,0),(b,1))
)

La funcin g(x) toma valores entre 0 y 1, pero no existe ningn valor k verificando g(x)k<1 pues se
alcanza el valor 1 en x=0. Por tanto, vamos a restringir el intervalo de bsqueda a otro menor que contenga
el punto de corte (punto fijo), por ejemplo, el intervalo [1,2].
a=1;b=2;
g(x)=(x+2)/(x+1)
h(x)=x
show(
plot(g(x),a,b,color='blue')+
plot(h(x),a,b,color='red')+
rectangulo((a,a),(b,b))
)

show(
plot(abs(gder(x)),a,b,color='blue')+
rectangulo((a,0),(b,1))
)

La cota superior para g(x) se alcanza en x=1. Veamos su valor:


cotasup=abs(gder(1.)); cotasup
0.250000000000000

10

Miguel Angel Cifredo Campos


macifredo@gmail.com

Por tanto, ahora, en el intervalo [1,2] s se verifican las condiciones del teorema del punto fijo, por lo que ya
tenemos garantizada la convergencia de la sucesin xn+1=g(xn). Empezaremos, por ejemplo, por x0=1.
Algoritmo del mtodo de punto fijo
x0=1.;x1=g(x0); x1
1.50000000000000
x2=g(x1); x2
1.40000000000000
x3=g(x2); x3
1.41666666666667
x4=g(x3); x4
1.41379310344828

As podemos continuar indefinidamente. No obstante, podemos analizar el error a priori para determinar el
nmero mnimo de iteraciones necesarias para garantizar un determinado nmero de cifras decimales
exactas. Recordemos que la frmula es:

Veamos cuntas iteraciones son necesarias para garantizar 3 cifras decimales exactas:

error=log(10^-3/max(a-x0,b-x0))/log(cotasup); error
4.98289214233104

Luego son precisas 5 iteraciones.


x5=g(x4); x5
1.41428571428571

A continuacin disearemos un algoritmo donde cada iteracin del mtodo de punto fijo es implementada
utilizando un bucle for. Tomaremos como intervalo inicial [1,2]. Estamos interesados en calcular 5
iteraciones del mtodo y en cada paso proporcionaremos los valores de xi y del error a priori:
iteraciones=5; xi=1.; maxi=max(xi-a,b-xi)
for i in range(iteraciones):
xi=g(xi)
print 'iter.:',i+1,' valor:',xi, 'e. apr.:',cotasup^i*maxi
iter.:
iter.:
iter.:
iter.:
iter.:

1
2
3
4
5

valor:
valor:
valor:
valor:
valor:

1.50000000000000
1.40000000000000
1.41666666666667
1.41379310344828
1.41428571428571

e.
e.
e.
e.
e.

apr.:
apr.:
apr.:
apr.:
apr.:

PRCTICA 2: Mtodo de biseccin y mtodo del punto fijo.

1.00000000000000
0.25000000000000
0.06250000000000
0.01562500000000
0.00390625000000
11

Miguel Angel Cifredo Campos


macifredo@gmail.com

PRCTICA 3: Interpolacin polinomial e integracin numrica


En esta sesin nos marcamos los siguientes objetivos:

Describir el proceso de interpolacin polinomial de Lagrange.


Describir el proceso de interpolacin polinomial de Newton.
Ilustrar el efecto de Runge en los problemas de interpolacin.
Describir diversos mtodos numricos para calcular integrales definidas.
Calcular algunas acotaciones de los errores asociados a los mtodos numricos de integracin.

Interpolacin polinomial de Lagrange


Recordemos que, dado un soporte de puntos S={(x0,y0),(x1,y1),...,(xn,yn)}, se definen los polinomios auxiliares
de Lagrange sobre dicho soporte como:

A continuacin definimos la funcin pol_aux_lagrange(S, i) que devuelve el polinomio auxiliar de Lagrange


asociado al soporte S, para el ndice i .
%auto
def pol_aux_lagrange(soporte,i):
listax=[p[0] for p in soporte]
xi=listax.pop(i)
numerador=prod((x-xj) for xj in listax)
denominador=numerador(x=xi)
return numerador/denominador

Veamos un ejemplo sobre el soporte S={(1,0),(2,1),(3,2),(4,5)} :


soporte=[(1,0),(2,-1),(3,2),(4,-5)]
L2=pol_aux_lagrange(soporte,2) L2
-1/2*(x - 4)*(x - 2)*(x - 1)
for i in range(len(soporte)):
print 'L',i,'=', pol_aux_lagrange(soporte,i)
L
L
L
L

0
1
2
3

= -1/6*(x - 4)*(x = 1/2*(x - 4)*(x = -1/2*(x - 4)*(x = 1/6*(x - 3)*(x -

3)*(x
3)*(x
2)*(x
2)*(x

2)
1)
1)
1)

PRCTICA 3: Interpolacin polinomial e integracin numrica.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Vamos a crear la funcin grafica_pol_aux_lagrange(soporte,i) que proporciona la representacin grfica de


los polinomios auxiliares de Lagrange:
%auto
def grafica_pol_aux_lagrange(soporte,i):
p(x)=pol_aux_lagrange(soporte,i)
puntos=[(pto[0],0) for pto in soporte]
puntos[i]=(puntos[i][0],1)
listax=[pto[0] for pto in soporte]
xmin=min(listax);xmax=max(listax)
html(' $\displaystyle L_{%s}='%i+latex(p(x))+'='+latex(expand(p(x)))+'$')
print
return scatter_plot(puntos)+plot(p,(x,xmin,xmax))

Observemos que los polinomios auxiliares de Lagrange Li toman valor 0 en todos los puntos xj del soporte
excepto en xi donde vale 1.
grafica_pol_aux_lagrange(soporte,0)

grafica_pol_aux_lagrange(soporte,1)

Miguel Angel Cifredo Campos


macifredo@gmail.com

grafica_pol_aux_lagrange(soporte,2)

grafica_pol_aux_lagrange(soporte,3)

Los representamos ahora todos juntos:


listax=[p[0] for p in soporte]
xmin=min(listax);xmax=max(listax)
plot([pol_aux_lagrange(soporte,i) for i in range(len(soporte))]
,(x,xmin,xmax),fill=True)+scatter_plot([(p[0],1) for p in soporte])

PRCTICA 3: Interpolacin polinomial e integracin numrica.

Miguel Angel Cifredo Campos


macifredo@gmail.com

En realidad, el polinomio interpolador Pn(x) no es ms que una combinacin lineal de estos polinomios
auxiliares. Basta recordar que:

La funcin polinomio_lagrange(soporte) devuelve el polinomio interpolador de Lagrange asociado al


soporte proporcionado.
%auto
def polinomio_lagrange(soporte):
return sum(pol_aux_lagrange(soporte,i)*soporte[i][1]
for i in range(len(soporte)))
p(x)=polinomio_lagrange(soporte); show(p(x)) show(expand(p(x)))

Finalmente, podemos ver la representacin grfica del polinomio interpolador, resaltando los puntos del
soporte, mediante la funcin grafica_polinomio_lagrange(soporte)
%auto
def grafica_polinomio_lagrange(soporte,verpoli=False):
p(x)=polinomio_lagrange(soporte)
listax=[pto[0] for pto in soporte]
xmin=min(listax);xmax=max(listax)
if verpoli:
html(' $\displaystyle P_n(x)='+latex(p(x))+'$')
html(' $\displaystyle ='+latex(expand(p(x)))+'$')
print
return scatter_plot(soporte)+plot(p,(x,xmin,xmax))
grafica_polinomio_lagrange(soporte,True)

Pn(x)= ()

Miguel Angel Cifredo Campos


macifredo@gmail.com

Interpolacin polinomial de Newton


A partir de un soporte dado, necesitamos en primer lugar generar la tabla de diferencias divididas. La
funcin diferencias_divididas(soporte) proporciona dicha tabla.
%auto
def diferencias_divididas(soporte):
listax= [p[0] for p in soporte]
difdiv=[[p[1] for p in soporte]]
n=len(soporte)
for i in range(1,n):
difdiv.append([])
for j in range(n-i):
valor=(difdiv[i-1][j+1]-difdiv[i-1][j])/(listax[j+i]-listax[j])
difdiv[i].append(valor)
return difdiv
tabla=diferencias_divididas(soporte); tabla
[[0, -1, 2, -5], [-1, 3, -7], [2, -5], [-7/3]]

Recordemos que la forma del polinomio interpolador de Newton es:

donde los coeficientes ci del polinomio interpolador de Newton son los primeros datos de cada columna en
la tabla de diferencias divididas:
coef_newton=[v[0] for v in tabla]; coef_newton
[0, -1, 2, -7/3]

La funcin polinomio_newton(soporte) proporciona el polinomio interpolador asociado al mtodo de


Newton:
%auto
def polinomio_newton(soporte):
coef_newton=[v[0] for v in diferencias_divididas(soporte)]
listax= [p[0] for p in soporte]
pol=[]
pol.append(1)
n=len(soporte)-1
p(x) = coef_newton[0]
for i in range(1, n+1):
pol.append(pol[i-1]*(x-listax[i-1]))
p(x) = p(x) + coef_newton[i]*pol[i]
return p(x)

PRCTICA 3: Interpolacin polinomial e integracin numrica.

Miguel Angel Cifredo Campos


macifredo@gmail.com

p(x)=polinomio_newton(soporte) show(p(x)) show(expand(p(x)))

Finalmente, podemos ver la representacin grfica del polinomio interpolador, resaltando los puntos del
soporte con la funcin grafica_polinomio_newton(soporte)
%auto
def grafica_polinomio_newton(soporte,verpoli=False,color='blue'):
p(x)=polinomio_newton(soporte)
listax=[pto[0] for pto in soporte]
xmin=min(listax);xmax=max(listax)
if verpoli:
html(' $\displaystyle P_n(x)='+latex(p(x))+'$')
html(' $\displaystyle ='+latex(expand(p(x)))+'$')
print
return scatter_plot(soporte)+plot(p,(x,xmin,xmax),color=color)
grafica_polinomio_newton(soporte,True)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo de interpolacin
Dada la funcin f(x) = sen(x)+x, encontrar un polinomio interpolador en el soporte formado por los valores
de la variable x {0,1,2,3,4,5} . Utilizar dicho polinomio para hallar una aproximacin al valor de f(2.5).
f(x)=sin(x)+x
listax=[i+0. for i in range(0,6)];listax
[0.00000000000000, 1.00000000000000, 2.00000000000000,
3.00000000000000, 4.00000000000000, 5.00000000000000]
soporte=[(xi,f(xi)) for xi in listax];soporte
[(0.00000000000000, 0.00000000000000), (1.00000000000000, 1.84147098480790),
(2.00000000000000, 2.90929742682568), (3.00000000000000, 3.14112000805987),
(4.00000000000000, 3.24319750469207), (5.00000000000000, 4.04107572533686)]
p(x)=expand(polinomio_newton(soporte));p(x)
-0.00541109218118466*x^5 + 0.0861366757358094*x^4 0.391935969550822*x^3 + 0.267195289824513*x^2 + 1.88548608097958*x
show(plot(f(x),0,5,color='red')+grafica_polinomio_newton(soporte))

a=-2; b=7
show(
plot(f(x),a,b,color='red')+ plot(p(x),a,b,color='blue')+ scatter_plot(soporte))

Vamos a interpolar el valor de f(x) en el punto x=2.5 y comprobamos, con su valor real, el error cometido:
c=2.5; p(c).n(); f(c).n(); abs((p(c)-f(c)).n())
3.09597316473181
3.09847214410396
0.00249897937214483

PRCTICA 3: Interpolacin polinomial e integracin numrica.

Miguel Angel Cifredo Campos


macifredo@gmail.com

El efecto de Runge
Veamos con un ejemplo como vara el grado de aproximacin del polinomio interpolador de una funcin a
medida que incrementamos el nmero de puntos intermedios del soporte. Consideremos la funcin:

y el soporte {4, 0, 4}
f(x)=1/(1+x^2)
listax=[-4,0,4]
soporte=[(xi,f(xi)) for xi in listax]
p(x)=polinomio_newton(soporte)
a=-4;b=4
plot(f,(x,a,b))+plot(p,(x,a,b),color='red')+scatter_plot(soporte)

Aumentamos el nmero de puntos del soporte, considerando ahora {4,2, 0, 2, 4}


listax=[-4,-2,0,2,4]
soporte=[(xi,f(xi)) for xi in listax]
p(x)=polinomio_newton(soporte)
a=-4; b=4
plot(f,(x,a,b))+plot(p,(x,a,b),color='red')+scatter_plot(soporte)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Volvemos a incrementar el nmero de puntos del soporte: {4,3,2,1, 0, 1, 2, 3, 4}


Observamos el efecto de Runge: la aproximacin mejora en la parte central del intervalo, pero vamos
empeorndola en los extremos.
listax=range(-4,5)
soporte=[(xi,f(xi)) for xi in listax]
p(x)=polinomio_newton(soporte)
a=-4; b=4
plot(f,(x,a,b))+plot(p,(x,a,b),color='red')+scatter_plot(soporte)

Una vez ms:


listax=[-4+i/2 for i in range(17)]
soporte=[(xi,f(xi)) for xi in listax]
p(x)=polinomio_newton(soporte)
a=-4; b=4
plot(f,(x,a,b))+plot(p,(x,a,b),color='red')+scatter_plot(soporte)

PRCTICA 3: Interpolacin polinomial e integracin numrica.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Paliar el efecto de Runge


Una alternativa para intentar paliar este efecto es aproximar la funcin mediante diferentes polinomios de
interpolacin asociados a una particin del soporte en varias partes. Por ejemplo, a partir del soporte para
valores enteros de x desde -4 hasta 4, podemos tomar subconjuntos de 3 en 3 valores y por cada uno de estos
tres puntos, hallar el correspondiente polinomio de interpolacin. Obtenemos as una aproximacin mediante
una funcin a trozos donde cada trozo es un polinomio de interpolacin:
listax1=range(-4,-1);
listax2=range(-2,1);
listax3=range(0,3);
listax4=range(2,5)
soporte1=[(xi,f(xi)) for xi in listax1]
soporte2=[(xi,f(xi)) for xi in listax2]
soporte3=[(xi,f(xi)) for xi in listax3]
soporte4=[(xi,f(xi)) for xi in listax4]
a=-4;b=4
show( plot(f(x),a,b,color='red')+
grafica_polinomio_newton(soporte1,False,'blue')+
grafica_polinomio_newton(soporte2,False,'green')+
grafica_polinomio_newton(soporte3,False,'blue')+
grafica_polinomio_newton(soporte4,False,'green'))

Otra posible particin del soporte en tres partes de diferentes tamaos:


listax1=range(-4,0);
listax2=[-1+i/2 for i in range(5)];
listax3=range(1,5);
soporte1=[(xi,f(xi)) for xi in listax1]
soporte2=[(xi,f(xi)) for xi in listax2]
soporte3=[(xi,f(xi)) for xi in listax3]
a=-4;b=4
show( plot(f(x),a,b,color='red')+
grafica_polinomio_newton(soporte1,False,'blue')+
grafica_polinomio_newton(soporte2,False,'green')+
grafica_polinomio_newton(soporte3,False,'blue') )

10

Miguel Angel Cifredo Campos


macifredo@gmail.com

Integracin numrica
En la segunda parte de esta prctica, estudiaremos como poder aproximar numricamente el clculo de
integrales definidas. En general, la frmula de Barrow nos permite calcular de forma exacta dicha integral
siempre que conozcamos una primitiva de la funcin que estamos integrando:

Esto no siempre es factible, por lo que en multitud de ocasiones es necesario recurrir al clculo numrico
aproximado de tales valores.

Si partimos, por ejemplo de la funcin: f(x)=sen(x3) y pedimos a SAGE el valor de la primitiva

f(x) dx ,

obtenemos:
x=var('x') f(x)=sin(x^3) integral(f(x),x)
-1/12*((-I*sqrt(3) + 1)*gamma(1/3, -I*x^3) + (I*sqrt(3) +
1)*gamma(1/3, I*x^3))*x/(x^3)^(1/3)

Se trata de una funcin cuya primitiva no puede obtenerse mediante un nmero finito de funciones
elementales. Es lo que denominamos una funcin transcendental.
Los mtodos numricos se basan en la interpretacin grfica del valor de la integral como la suma de las
reas encerradas entre la curva y el eje OX, considerando positivas las que estn por encima del eje y
negativas las que estn por debajo.
Ilustraremos las ideas con el clculo de

a=0;b=2;
plot(f,(x,a,b),color='blue',fill=True)

PRCTICA 3: Interpolacin polinomial e integracin numrica.

11

Miguel Angel Cifredo Campos


macifredo@gmail.com

Todos los mtodos que estudiaremos se basan en considerar un soporte para la funcin f(x)

donde los valores xi son el resultado de una particin del intervalo [a,b] en partes iguales, esto es:

a=0; b=2; n=6; h=(b-a)/n;


listax=[a+h*i for i in range(n+1)]
print listax
listaf=[f(xi) for xi in listax
print listaf
[0, 1/3, 2/3, 1, 4/3, 5/3, 2]
[0, sin(1/27), sin(8/27), sin(1), sin(64/27), sin(125/27), sin(8)]

12

Miguel Angel Cifredo Campos


macifredo@gmail.com

Aproximaciones mediante rectngulos


Para aproximar la integral definida, intentaremos usar objetos con reas muy fciles de calcular.
Si usamos rectngulos, dividiremos en primer lugar nuestro intervalo de partida en subintervalos.
Para cada uno de esos subintervalos tenemos que considerar una altura del rectngulo.
Podemos tomar como altura de cada rectngulo el valor de f(x) en el extremo inferior de cada subintervalo y
sumar todas las reas:

o en el extremo superior del intervalo:

o en el punto medio:

Ahora vamos a cargar un fichero denominado "illustrate_numerical_integration.sage" (cuyo autor es F.V.


Saliola), que nos proporcionar una herramienta para representar grficamente dichas aproximaciones. Para
cargar dicho fichero debemos escribir:
load DATA+"illustrate_numerical_integration.sage"
La orden para representar grficamente es:
illustrate_numerical_integration(f(x), (a,b), n,'regla')
En 'regla' tenemos la posibilidad de escribir
'left' para tomar extremo inferior,
'right' para el extremo superior,
'midpoint', para el punto medio
%auto
load DATA+"illustrate_numerical_integration.sage"
illustrate_numerical_integration(f(x),(0,2),6,'left')

PRCTICA 3: Interpolacin polinomial e integracin numrica.

13

Miguel Angel Cifredo Campos


macifredo@gmail.com

A continuacin definiremos una funcin que nos permitirn calcular la suma de los rectngulos (denominada
suma de Riemann), con altura en el extremo de la izquierda, que llamaremos suma_izq(f,a,b,n)
%auto
def suma_izq(f,a,b,n):
h = (b-a)/n
listaf= [f(a+h*i) for i in range(n)
return h*sum([listaf[i] for i in range(n)])
si=suma_izq(f(x),0,2,6); si.n()
0.290304756313829

Siempre que aplicamos un mtodo numrico para aproximar un valor exacto, debemos controlar el error
cometido. Si aproximamos la integral como la suma de Riemann a la izquierda, tenemos la siguiente
estimacin del error cometido:

Para estimar el mximo del valor absoluto de la derivada, calculmosla y dibujmosla en dicho intervalo:
fder(x)=f.diff(x); fder.plot(x,0,2); show(fder)

En general puede ser bastante complicado el clculo exacto del mximo de f(x) , pero la acotacin:

nos permite asegurar:

q(x)=3*x^2;maxder=q(2);maxder
12
14

Miguel Angel Cifredo Campos


macifredo@gmail.com

Otra posibilidad es hacer un tanteo sobre posibles valores de una cota superior C y ayudarse de una
representacin grfica para comprobar que f(x)C . Vamos a representar en un mismo grfico los valores
de f(x) y una recta horizontal a la altura de la cota C. Podemos ir cambiando los valores de C hasta afinar
un poco la cota superior.
maxder=11 show(abs(fder).plot(x,a,b)+line([(a,maxder),(b,maxder)],color='red'))

De esta forma, una cota del error sera:


a=0; b=2; n=6;
error_izq=maxder*(b-a)^2/(2*n); error_izq.n()
3.66666666666667

Es una cota muy gruesa, si quisiramos asegurar una cifra decimal exacta, tendramos que averiguar cuntas
particiones harn falta. Utilizaremos la resolucin de la siguiente ecuacin para hallar dicho nmero de
particiones:

precision=1/10 solve(maxder*(b-a)^2/(2*x)==precision,x)
[x == 220]

Luego es preciso al menos una particin de 220 subintervalos.


si=suma_izq(f(x),0,2,220); si.n()
0.447439371159268

Comparamos con el valor numrico proporcionado por SAGE, mucho mejor aproximado. Para ello
contamos con la funcin
integral_numerical(f,a,b)
que nos devuelve (aprox, cota_error), esto es, tanto el valor aproximado como una cota del error cometido.
integral_numerical(f(x),0,2)
(0.45194847715682596, 1.0365482309550805e-14)

PRCTICA 3: Interpolacin polinomial e integracin numrica.

15

Miguel Angel Cifredo Campos


macifredo@gmail.com

Estudiemos ahora la aproximacin mediante la suma de Riemann a la derecha


illustrate_numerical_integration(f(x),(0,2),6,'right')

A continuacin definiremos una funcin que nos permitirn calcular la correspondiente suma de Riemann,
con altura en el extremo a la derecha: suma_der(f,a,b,n)
%auto
def suma_der(f,a,b,n):
h = (b-a)/n
listaf= [f(a+h*(i+1)) for i in range(n)]
return h*sum([listaf[i] for i in range(n)])
sd=suma_der(f(x),0,2,6); sd.n()
0.620090838521623

En este caso la cota del error es la misma y para garantizar una cifra decimal exacta se precisan tambin 220
particiones.
sd=suma_der(f(x),0,2,220); sd.n()
0.456433537037662

16

Miguel Angel Cifredo Campos


macifredo@gmail.com

Consideremos ahora el punto medio de cada subintervalo para las sumas de Riemann:
illustrate_numerical_integration(f(x),(0,2),6,'midpoint')

A continuacin definiremos una funcin que nos permitirn calcular la suma de Riemann, con altura en el
punto medio del subintervalo: suma_med(f,a,b,n)
%auto
def suma_med(f,a,b,n):
h = (b-a)/n
listaf = [f(a+h/2*(2*i+1)) for i in range(n)]
return h*sum([listaf[i] for i in range(n)])
sm=suma_med(f(x),0,2,6); sm.n()
0.441316741193061

Para el caso de suma de Riemann del punto medio, la cota del error es:

Calculemos la segunda derivada, y dibujmosla en nuestro intervalo:


fder2=f.diff(x,2);fder2.plot(x,0,2); show(fder2)

PRCTICA 3: Interpolacin polinomial e integracin numrica.

17

Miguel Angel Cifredo Campos


macifredo@gmail.com

El clculo del mximo de f(x) en [0,2], no es sencillo, una acotacin simple es:

Funcin polinmica que alcanza su mximo entre [0,2] en x=2.


q2(x)=9*x^4+6*x; maxder2=q2(2); maxder2
156

Ahora, estudiemos una cota mediante tanteo en la representacin grfica de f(x) , como en el caso
anterior:
maxder2=145
show(abs(fder2).plot(x,a,b)+line([(a,maxder2),(b,maxder2)],color='red'))

error_med=(b-a)^3/(24*n^2)*maxder2; error_med.n()
1.34259259259259

Con el mismo nmero de iteraciones la frmula del punto medio nos garantiza una mejor aproximacin de la
integral. Si planteamos de nuevo una cifra decimal exacta, obtenemos:
precision=1/10
soluciones=solve((b-a)^3/(24*x^2)*maxder2==precision,x,solution_dict=True);
for elemento in soluciones: print elemento[x].n(digits=6)
-21.9848
21.9848

Luego se precisan al menos 22 particiones.


sm=suma_med(f(x),0,2,22); sm.n()
0.452531179421405

Un inconveniente para tomar valores intermedios


Aunque el grado de aproximacin que se consigue con el mtodo de aproximaciones con rectngulos de
altura el punto medio es claramente superior al de rectngulos a la izquierda o derecha, el principal
inconveniente es que se necesitan conocer o calcular valores intermedios f ( (xi+xi1)/2 ) que no pertenecen al
soporte dado de la funcin. Por tanto hay que seguir buscando frmulas de aproximacin integral que se
limiten a valores del soporte inicial.
18

Miguel Angel Cifredo Campos


macifredo@gmail.com

Aproximaciones mediante trapecios


En cada subintervalo [xi, xi+1] consideramos el trapecio definido por los valores de f(xi) y de f(xi+1), cuyo
rea es

que para una divisin del intervalo [a,b] en n partes iguales, resulta

Si hacemos la suma de todos los trapecios, resulta la frmula compuesta del trapecio:

Podemos definir una funcin que nos permita calcular dicha frmula:
illustrate_numerical_integration(f(x),(0,2),6,'trapezoid')

%auto
def suma_trap(f,a,b,n):
h = (b-a)/n
coeffs=[2]*(n-1)
coeffs=[1]+coeffs+[1]
listaf = [f(a+h*i) for i in range(n+1)]
return (h/2)*sum([coeffs[i]*listaf[i] for i in range(n+1)])
st=suma_trap(f(x),0,2,6);st.n()
0.455197797417726

PRCTICA 3: Interpolacin polinomial e integracin numrica.

19

Miguel Angel Cifredo Campos


macifredo@gmail.com

La cota del error para la frmula compuesta del trapecio es:

En nuestro ejemplo, conocamos la cota de la derivada segunda de f(x), maxder2, lo que nos proporciona un
error:
error_trap=(b-a)^3/(12*n^2)*maxder2; error_trap.n()
2.68518518518519

Vamos a garantizar una cifra decimal exacta:


precision=1/10
soluciones=solve((b-a)^3/(12*x^2)*maxder2==precision,x,solution_dict=True);
for elemento in soluciones: print elemento[x].n(digits=3)
-31.1
31.1

Necesitamos 32 particiones.
st=suma_trap(f(x),0,2,32);st.n()
0.451384345465401

20

Miguel Angel Cifredo Campos


macifredo@gmail.com

Aproximaciones mediante parbolas


Siguiendo con la idea de interpolacin, podemos considerar una particin de [a,b] en dos trozos , e interpolar
por un polinomio de segundo grado, es decir una parbola:

illustrate_numerical_integration(f(x),(0,2),2,'Simpson')

La frmula que se obtiene de aproximar mediante la parbola se conoce como frmula de Simpson:

Si queremos repetir el proceso llevado a cabo con los trapecios, como una parbola necesita tres puntos para
estar unvocamente determinada, necesitamos que el nmero de trozos de la particin sea par. Si como en
nuestro caso tomamos n=6, obtenemos:
illustrate_numerical_integration(f(x),(0,2),6,'Simpson')

PRCTICA 3: Interpolacin polinomial e integracin numrica.

21

Miguel Angel Cifredo Campos


macifredo@gmail.com

La frmula que se obtiene de aproximar la integral como el rea encerrada por estas parbolas se conoce
como regla compuesta de Simpson:

Podemos crear una funcin que nos calcule dicha frmula:


%auto
def suma_simpson(f,a,b,n):
h = (b-a)/n
n2=int(n/2)
coeffs=[4,2]*n2
coeffs=[1]+coeffs[:n-1]+[1]
listaf = [f(a+h*i) for i in range(n+1)]
return (h/3)*sum([coeffs[i]*listaf[i] for i in range(n+1)])
ss=suma_simpson(f(x),0,2,6);ss.n()
0.277225677345245

La frmula del error para la frmula compuesta de Simpson es:

Para calcular una cota de la cuarta derivada, la dibujamos:


fder4=f.diff(x,4);fder4.plot(x,0,2); show(fder4)

22

Miguel Angel Cifredo Campos


macifredo@gmail.com

Con una cota similar a la que hicimos anteriormente:

y por tanto:

As, la cota del error en este caso, nos queda:


q4(x)=81*x^8+324*x^5+180*x^2; maxder4=q4(2); maxder4
31824

Intentamos afinar la cota grficamente:


maxder4=22000
show(abs(fder4).plot(x,a,b)+line([(a,maxder4),(b,maxder4)],color='red'))

error_simp=(b-a)^5/(180*n^4)*maxder4; error_simp.n()
3.01783264746228

Vamos a garantizar una cifra decimal exacta:


precision=1/10
soluciones=solve((b-a)^5/(180*x^4)*maxder4==precision,x,solution_dict=True);
for elemento in soluciones:
print elemento[x].n(digits=3)
14.1*I
-14.1
-14.1*I
14.1

Son necesarias 16 particiones, ya que el nmero ha de ser par.


ss=suma_simpson(f(x),0,2,16);ss.n()
0.450972444678040
PRCTICA 3: Interpolacin polinomial e integracin numrica.

23

Miguel Angel Cifredo Campos


macifredo@gmail.com

PRCTICA 4: Polinomios de Taylor


En esta sesin nos marcamos los siguientes objetivos:
Calcular el polinomio de Taylor asociado a una funcin en un punto.
Comprobar grficamente el grado de aproximacin del polinomio a la funcin en un entorno del

punto elegido.
Hallar valores aproximados de una funcin mediante su polinomio de Taylor.
Acotar los errores de aproximacin de una funcin mediante su polinomio de Taylor.

Polinomio de Taylor
Recordemos que si una funcin real de variable real f(x) admite derivadas hasta orden n en un punto x = a,
entonces se define el polinomio de Taylor de orden n asociado a la funcin y centrado en x = a como:

En el caso particular a=0 al polinomio resultante se le denomina, histricamente, polinomio de McLaurin.


Ejemplo:
Calculemos el polinomio de Taylor de grado 5 de la funcin f(x) = log(x), centrado en a = 2.
En primer lugar, definimos en SAGE la funcin:
x=var('x')
f(x)=log(x)

El clculo de las derivadas sucesivas de la funcin se realiza con las instrucciones:


f1=f.diff(x,1)
f2=f.diff(x,2)
f3=f.diff(x,3)
show([f1(x),f2(x),f3(x)])

Puesto que podemos necesitar muchas derivadas sucesivas, vamos a generar automticamente una lista con
los valores sucesivos de la funcin y sus derivadas hasta cierto orden n:
n=5 derf=[f(x).diff(x,i) for i in range(n+1)] show(derf)

PRCTICA 4: Polinomios de Taylor.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ahora, procedemos a calcular el valor de la lista anterior en un punto x = a, para lo cual nos vamos a servir
de la siguiente funcin:
%auto
def evaluar_lista(derf,a):
return [derf[i](a) for i in range(len(derf))]
a=2 valderf=evaluar_lista(derf,a) valderf
[log(2), 1/2, -1/4, 1/4, -3/8, 3/4]

Con tales datos ya podemos proceder a construir el polinomio de Taylor:


pol=0 for
show(pol)

in

range(len(valderf)):

pol=pol+valderf[i]/factorial(i)*(x-a)^i

Finalmente, mostramos el valor del polinomio una vez simplificados sus trminos:
show(expand(pol(x)))

Por supuesto SAGE incorpora una funcin que hace todo el trabajo directamente. Su formato es:
taylor( f(x), x, a, n) y devuelve el polinomio de Taylor.
pol=taylor(log(x),x,2,5)
show(expand(pol(x)))

Miguel Angel Cifredo Campos


macifredo@gmail.com

Representacin grfica
Sabemos que el polinomio de Taylor aproxima a la funcin en las proximidades del valor central x=a.
Vamos a ilustrar grficamente el nivel de aproximacin obtenido al aumentar el orden o grado del polinomio
de Taylor. Para ello, utilizaremos el mismo ejemplo anterior.

Ejemplo:
Representamos en una misma grfica la funcin y = log(x), de color azul, y su polinomio de Taylor, de color
rojo, centrado en a=2, para diferentes grados del polinomio. Elegimos el intervalo de representacin (0,4).

n=1; a=2
xmin=0; xmax=4
pol=taylor(f(x),x,a,n)
plot(f(x),xmin,xmax)+
plot(pol(x),xmin,xmax,color='red')+
point((a,f(a)),pointsize=20,color='black')

n=5; a=2
xmin=0; xmax=4
pol=taylor(f(x),x,a,n)
plot(f(x),xmin,xmax)+
plot(pol(x),xmin,xmax,color='red')+
point((a,f(a)),pointsize=20,color='black')

n=20; a=2
xmin=0;xmax=4
pol=taylor(f(x),x,a,n) plot(f(x),xmin,xmax)+
plot(pol(x),xmin,xmax,color='red')+
point((a,f(a)),pointsize=20,color='black')

PRCTICA 4: Polinomios de Taylor.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Valores aproximados de una funcin


En las proximidades del valor x=a, el polinomio de Taylor centrado en dicho punto proporciona una buena
aproximacin del valor real de la funcin tal como hemos comprobado grficamente. Vamos a calcular
algunos valores aproximados de la funcin y comparamos con los valores ms precisos aportados por
SAGE.
Ejemplo:
Continuaremos con el ejemplo anterior y hallaremos valores aproximados para x0=1.3 y para x0=2.1,
utilizando el polinomio de Taylor de orden n = 3, centrado en a = 2.
x=var('x')
f(x)=log(x)
a=2; n=3
pol=taylor(f(x),x,a,n)
show(expand(pol(x)))

x0=1.3;
pol(x0);
pol(x0).n();
log(2) - 0.425541666666667
0.267605513893279
0.262364264467491
0.262364264467491

f(x0);

f(x0).n()

abs(pol(x0)-f(x0)).n()
0.00524124942578763
x0=2.1; pol(x0);
pol(x0).n();
log(2) + 0.0487916666666668
0.741938847226612
0.741937344729377
0.741937344729377

f(x0);

f(x0).n()

abs(pol(x0)-f(x0)).n()
1.50249723473994e-6

Por tanto, el error es mayor para el punto x0=1.3 ms alejado del centro a = 2 que para el punto x0 = 2.1

Miguel Angel Cifredo Campos


macifredo@gmail.com

Acotar los errores


Aunque podemos aproximar funciones mediante sus polinomios de Taylor, es preciso controlar el error que
se comete en la aproximacin, proporcionando cotas superiores al mismo. Esto es posible gracias a la
Frmula de Taylor que es una propiedad que establece la igualdad:

donde Pn(x) es el polinomio de Taylor de orden n centrado en el punto a asociado a la funcin f(x) y el
nmero c es un valor desconocido comprendido entre los valores x y a. El segundo sumando del miembro
derecho de la igualdad se conoce como Resto de Lagrange.
De esta frmula se deduce la siguiente cota del error:

Si conseguimos una cota superior, M, para el valor absoluto de la derivada fn+1)(c)


extremos x y a, entonces resulta

PRCTICA 4: Polinomios de Taylor.

en el intervalo de

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo:
Calculemos en el ejemplo anterior una cota para el error cometido al aproximar f(1.3) por P3(1.3). Para ello
necesitamos acotar previamente la derivada cuarta de la funcin:
x=var('x')
f(x)=log(x)
f4=f.diff(x,4) f4(x)
-6/x^4

El Resto de Lagrange es:


var('c') a=2;n=3 show((x-a)^(n+1)/factorial(n+1)*f4(c))

Y la grfica de y=f4)(x)

es:

x0=1.3; a=2
plot(abs(f4(x)), x0, a)

Obsrvese que:
es una funcin decreciente en el intervalo de extremos [1.3,2], por lo que el valor mximo se obtiene en el
extremo x=1.3. As, podemos tomar la cota M=f 4) (1.3) . Concretamente,
M=abs(f4(1.3)) M
2.10076677987465

Y la cota del error de aproximacin:


x0=1.3; a=2; n=3
cota_error=abs((x0-a)^(n+1))/factorial(n+1)*M
cota_error
0.0210164209936627

Lo que nos garantiza una aproximacin con una precisin de 1 cifra decimal exacta.

Miguel Angel Cifredo Campos


macifredo@gmail.com

PRCTICA 5: Series de Fourier


En esta sesin nos marcamos los siguientes objetivos:

Calcular la serie de Fourier asociada a una funcin peridica, obteniendo sus coeficientes y las sumas
parciales.
Comprobar grficamente el grado de aproximacin de las sumas parciales a la funcin peridica.
Ilustrar el teorema de Dirichlet sobre la convergencia de la serie de Fourier para funciones continuas
a trozos.
Mostrar el fenmeno de Gibbs para funciones continuas a trozos.

Clculo de la serie de Fourier


Dada una funcin peridica f(x), con periodo en el intervalo [L, L] , se define su serie de Fourier como:

donde = / L y los coeficientes an y bn se calculan mediante las frmulas de Euler-Fourier:

Ejemplo:
Consideremos la funcin peridica obtenida a partir de la repeticin del fragmento de
correspondiente al intervalo [1,1] .
x=var('x')
f=x^5-x^3+x^2/6
L=1
w=pi/L

PRCTICA 5: Series de Fourier.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Podemos calcular sus coeficientes de Euler-Fourier implementando las frmulas vistas anteriormente:
a0=(1/(2*L))*f.integral(x,-L,L) show(a0)

1 / 18
n=var('n')
assume(n,'integer')
a(n)=factor((f*cos(n*w*x)).integral(x,-L,L))
b(n)=factor((f*sin(n*w*x)).integral(x,-L,L))
a(n).show(); b(n).show()

Las funciones anteriores nos dan los valores de los coeficientes an=a(n) y bn=b(n). Calculemos, por
ejemplo, a3 y b5:
a(3); a(3).n(); b(5); b(5).n()

-2/27/pi^2
-0.00750527286239539
-4/625*(35*pi^2 - 12)/pi^5
-0.00697337946525019

Con estos coeficientes ya podemos generar las sumas parciales de su serie de Fourier:

denominadas tambin polinomios trigonomtricos de orden m.


Por ejemplo, calculemos S2(x):
m=2;
pol=a0
for i in range(1,m+1):
pol=pol+a(i)*cos(i*w*x)+b(i)*sin(i*w*x)
show(pol)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Simplificando los clculos


Todo este proceso puede simplificarse gracias a funciones que incorpora SAGE tanto para calcular los
coeficientes como las sumas parciales. Su uso precisa previamente de una orden auxiliar que permite definir
una funcin mediante trozos, denominada Piecewise
ff=Piecewise([[(-L,L),f]])

a0=1/2*ff.fourier_series_cosine_coefficient(0,L)
# IMPORTANTE: incluir en el caso a0 el factor 1/2 para obtener el valor equivalente a
la frmula dada al principio.
a(n)=ff.fourier_series_cosine_coefficient(n,L)
b(n)=ff.fourier_series_sine_coefficient(n,L)
show(a0); show(a(n)); show(b(n))

m=2
pol=ff.fourier_series_partial_sum(m+1,L)
show(pol)

PRCTICA 5: Series de Fourier.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Representacin grfica
Sabemos que las sumas parciales Sm(x) se aproximan a la funcin peridica f(x) a medida que aumenta el
grado m del polinomio trigonomtrico. Vamos a constatar este hecho desde el punto de vista grfico.
Primero necesitamos alguna orden auxiliar que permita la representacin grfica de funciones peridicas por
repeticin del fragmento correspondiente al periodo.
pf=plot(f,-L,L) show(pf)

periodo=lambda x: x-2*L*floor((x+L)/(2*L)) # es la funcin auxiliar

fp=lambda x:f(periodo(x)) # es la funcin peridica generada

np=3 #es el nmero de periodos a representar


if is_odd(np):
LL=(2*floor(np/2)+1)*L
else:
LL=(2*floor(np/2))*L
pfp=plot(fp,-LL,LL,color='red',linestyle =':')
show(pfp+pf)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ahora comparamos grficamente el polinomio S2(x) con la funcin f(x):


m=2 # es el grado del polinomio trigonomtrico
np=3 # es el nmero de periodos a representar
if is_odd(np):
LL=(2*floor(np/2)+1)*L
else:
LL=(2*floor(np/2))*L
P1 = ff.plot_fourier_series_partial_sum(m+1,L,-LL,LL,color='red');
P2 = plot(fp,-LL,LL);
(P1+P2).show()

Veamos cmo la aproximacin mejora para m=5:


m=5 # es el grado del polinomio trigonomtrico
np=3 # es el nmero de periodos a representar
if is_odd(np):
LL=(2*floor(np/2)+1)*L
else:
LL=(2*floor(np/2))*L
P1 = ff.plot_fourier_series_partial_sum(m+1,L,-LL,LL,color='red');
P2 = plot(fp,-LL,LL);
(P1+P2).show()

PRCTICA 5: Series de Fourier.

Miguel Angel Cifredo Campos


macifredo@gmail.com

El teorema de Dirichlet y las funciones definidas a trozos


Si una funcin peridica f(x), de periodo [L, L] , es continua a trozos, acotada y tiene un nmero finito de
discontinuidades y de extremos relativos en el intervalo [L,L] , entonces la serie de Fourier converge
puntualmente a la funcin en aquellos puntos donde sea continua, es decir

y si f(x) es discontinua en el punto x=x0 entonces se verifica que

Ejemplo
Vamos a mostrar grficamente este resultado mediante un ejemplo de funcin definida a trozos:

ATENCIN: Si tenemos una funcin definida a trozos tenemos que usar la orden Piecewise para generarla:
var('x') L=2
g1=lambda x: 1
g2=lambda x: x
g=Piecewise([[(-L,0),g1],[(0,L),g2]])

g.plot()

Miguel Angel Cifredo Campos


macifredo@gmail.com

Vamos a considerar la extensin peridica de la funcin g(x), representando 3 periodos:


gp=lambda x:g(periodo(x)) # es la versin peridica de la funcin
np=3 # es el nmero de periodos a representar
if is_odd(np):
LL=(2*floor(np/2)+1)*L
else:
LL=(2*floor(np/2))*L
plot(gp,-LL,LL)

Ahora la aproximamos mediante su polinomio trigonomtrico de orden 3:


m=3 # grado del polinomio trigonomtrico
np=2 # nmero de periodos a representar
if is_odd(np):
LL=(2*floor(np/2)+1)*L
else:
LL=(2*floor(np/2))*L
P1 = g.plot_fourier_series_partial_sum(m+1,L,-LL,LL,color='red');
P2 = plot(gp,-LL,LL);
(P1+P2).show()

PRCTICA 5: Series de Fourier.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Qu sucede en los puntos de discontinuidad x=2 , x=0 y x=2?


A qu valor tienden las sumas parciales en tales puntos?
Estudiemos el caso x=0 para sumas parciales de orden 3, 5, 20 y 100:
g(0).n() # valor intermedio del salto de la funcin

0.500000000000000
m=3; x0=0 g.fourier_series_partial_sum(m,L)(x=x0).n()

0.594715265430649
m=5; x0=0 g.fourier_series_partial_sum(m,L)(x=x0).n()

0.549683628256276
m=20; x0=0 g.fourier_series_partial_sum(m,L)(x=x0).n()

0.510123704253850
m=100; x0=0 g.fourier_series_partial_sum(m,L)(x=x0).n()

0.502026356134845

Se observa como las sumas parciales se aproximan al valor intermedio de la discontinuidad, tal como
asegura el teorema de Dirichlet.

El fenmeno de Gibbs
Cuando una funcin peridica tiene discontinuidades no es posible que haya una buena convergencia de su
serie de Fourier en los entornos de las discontinuidades, pues los trminos de la serie de Fourier son siempre
funciones continuas. Esto provoca que a medida que nos acercamos al punto de discontinuidad se mantienen
una serie de oscilaciones que aunque aumentan en su frecuencia (se estrechan), no llegan nunca a
desaparecer en las sumas parciales. Este comportamiento anmalo se conoce como el fenmeno de Gibbs.
var('x')
L=2
g1=lambda x: 1
g2=lambda x: x
g=Piecewise([[(-L,0),g1],[(0,L),g2]])
html('<h4> Fenmeno de Gibbs en una funcin $g$ peridica y continua a trozos</h4>')
@interact
def _(orden=slider(5,100,5,label="m:")):
global periodo
gp=lambda x:g(periodo(x))
p = g.plot_fourier_series_partial_sum(orden+1,L,-2*L,2*L,color='red')
pp = plot(gp,-2*L,2*L)
show(pp + p)

Miguel Angel Cifredo Campos


macifredo@gmail.com

PRCTICA 6: Funciones de dos variables


En esta sesin nos marcamos los siguientes objetivos:

Definir y representar grficamente funciones reales de dos variables reales.


Calcular derivadas parciales de cualquier orden asociadas a una funcin.
Hallar el plano tangente a una funcin en un punto e ilustrarlo grficamente.
Obtener el vector gradiente y las derivadas direccionales de una funcin en un punto.
Analizar grficamente la continuidad de una funcin en un punto y el comportamiento de los lmites
segn trayectorias que pasan por dicho punto.
Hallar el polinomio de Taylor asociado a una funcin en un punto y obtener aproximaciones
numricas en un entorno de dicho punto.
Calcular los puntos crticos de una funcin y obtener su clasificacin mediante el estudio del
hessiano.

Definicin y representacin grfica de funciones de dos variables


Comenzamos definiendo una funcin de dos variables. Recordemos que, previamente, tenemos que definir
las variables empleadas.
As, por ejemplo, para definir con Sage la funcin f(x,y) = x2+y2, hacemos:
x,y= var('x,y')
f(x,y)= x^2+y^2

La sintaxis bsica para representar z = f(x,y) grficamente en un entorno rectangular es:


plot3d(f(x,y),(x,xmin,xmax),(y,ymin,ymax)).
plot3d(f(x,y),(x,-3,3),(y,-3,3))

Podemos aadir opciones, como son: color, opacity,...


plot3d(f(x,y),(x,xmin,xmax),(y,ymin,ymax), color='red',opacity= k).
Si no se aade la opcin color, por defecto, representa la superficie en color azul. En la opcin opacity = k,
k es un nmero real entre 0 y 1 que representa el grado de transparencia (k=0) u opacidad (k=1) de la
superficie. Ntese que el dibujo puede rotarse en tiempo real utilizando el ratn del ordenador y tambin
ampliarse o reducirse girando la ruedecilla del ratn.
plot3d(f(x,y),(x,-3,3),(y,-3,3),color='red',opacity= 0.7)

PRCTICA 6: Funciones de dos variables.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Derivadas parciales
Para calcular las derivadas parciales de una funcin utilizamos el mtodo o la funcin .diff(). Como
argumentos tenemos:

el nombre de las variable (o variables) respecto de la(s) que derivamos;


el orden de la(s) derivada(s).

Veamos un ejemplo.
f(x,y)= 3*x^2*y^2+ x*cos(y^2) show(f(x,y))

fx=f.diff(x); fx(x,y).show()
fy=f.diff(y);fy(x,y).show()
fxx=f.diff(x,2);fxx(x,y).show()
fxy=f.diff(x,1,y,1); fxy(x,y).show()
fyy=f.diff(y,2); fyy(x,y).show()
fxxy=f.diff(x,2,y,1);fxxy(x,y).show()

Podemos calcular el valor de una derivada parcial en un punto. Por ejemplo, para la funcin anterior, el valor
de su derivada parcial

print fx(1,1) print fx(1,1).n()

cos(1) + 6
6.54030230586814

Miguel Angel Cifredo Campos


macifredo@gmail.com

Plano tangente
Recordemos que la ecuacin del plano tangente a la superficie z=f(x,y) en el punto (x0,y0) es:

Calculemos el plano tangente a la superficie z = f(x,y) del ejemplo anterior, en el punto (1,2).
x0=1; y0=2
fx=f.diff(x)
fy=f.diff(y)
ptag(x,y)= f(x0,y0) + fx(x0,y0)*(x-x0)+fy(x0,y0)*(y-y0)
ptag(x,y).show()

expand(ptag(x,y)).show()

Ahora podemos hallar el valor numrico del plano tangente en otro punto cualquiera. Por ejemplo, en el
punto (1,1) la altura del plano tangente es:
ptag(-1,1).n()

-50.3735663603681

Representar en una misma grfica la funcin y su plano tangente en un entorno rectangular del punto (1,2).
xmin=-2;xmax=3;ymin=0;ymax=4
gf=plot3d(f(x,y),(x,xmin,xmax),(y,ymin,ymax), color= 'red', opacity=0.8)
gp=plot3d(ptag(x,y),(x,xmin,xmax),(y,ymin,ymax), color= 'green', opacity=1)
pt=point3d((x0,y0,f(x0,y0)),size=5,color='blue') show(gf+gp+pt)

PRCTICA 6: Funciones de dos variables.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo: calculemos el plano tangente en el punto (1,0) de la funcin

f(x,y)= x^2*y^2/(x^2+y^2)
x0=1; y0=0
xmin=0; xmax=2; ymin=-1; ymax=1
fx=f.diff(x)
fy=f.diff(y)
ptag(x,y)= f(x0,y0) + fx(x0,y0)*(x-x0)+fy(x0,y0)*(y-y0)
ptag(x,y).show()
gf=plot3d(f(x,y),(x,xmin,xmax),(y,ymin,ymax), color= 'red', opacity=0.8)
gp=plot3d(ptag(x,y),(x,xmin,xmax),(y,ymin,ymax), color= 'green', opacity=1)
pt=point3d((x0,y0,f(x0,y0)),size=10,color='blue')
show(gf+gp+pt)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Vector gradiente y derivada direccional


Recordemos que el vector gradiente de f(x,y) en el punto (x0,y0) se define como

Por otra parte, la derivada direccional de f(x,y) en el punto (x0,y0) segn la direccin del vector unitario
se puede obtener como

En Sage, el vector gradiente se calcula mediante el mtodo .gradient(). Para poder trabajar con l, lo
almacenamos en un vector con la funcin vector.
Ejemplo: vamos a calcular el vector gradiente de la funcin f(x,y)=x2+y2 en el punto (x0,y0)=(1,2) y la
derivada direccional de f en ese punto y en la direccin del vector (v1,v2)=(1,2) .
x,y,a,b=var('x,y,a,b');
f(x,y)= x^2+y^2;
x0=1;y0=2;
v1=-1;v2=2
# NO ES PRECISO MODIFICAR EL SIGUIENTE CDIGO:
gradiente=vector(f(x,y).gradient());
print "El vector gradiente es: "; show(gradiente);
print "El vector gradiente en (x0,y0) es: "; show(gradiente(x=x0,y=y0));
print "La norma del vector gradiente en (x0,y0) es:"; show(norm(gradiente(x=x0,y=y0)))
vdirec= vector([v1,v2]); print "El vector de direccin es: ";show(vdirec);
normv=norm(vdirec);
vunitario=vdirec/normv; print "El vector de direccin unitario es:";show(vunitario);
derivdir=gradiente(x=x0,y=y0)*vunitario;
print "La derivada direccional es:"; show(derivdir)
print " cuyo valor numrico es:"; show(derivdir.n())

PRCTICA 6: Funciones de dos variables.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Continuidad de una funcin


Una funcin f(x,y) es continua en un punto (x0,y0) perteneciente al dominio de la funcin si se verifica que el lmite
doble

Las funciones elementales son siempre continuas en los puntos de sus dominios pero a veces hay puntos aislados fuera
del dominio donde es difcil predecir el comportamiento continuo o no de la funcin a su paso por dichos puntos.
Vamos a analizar algunos ejemplos con ayuda de representaciones grficas de la superficie z=f(x,y) y de algunas
curvas o trayectorias que pasan por el punto considerado. Recordemos previamente el concepto de lmite de una
funcin de dos variables segn una trayectoria:
Dada una curva x=1(t), y=2(t) que pasa por el punto (x0,y0) para t=t0, se define el lmite de f(x,y) en el punto (x0,y0)
segn la trayectoria (1(t), 2(t)) como

El estudio de los lmites segn trayectorias nos sirve para comprobar la continuidad de la funcin en aquellos casos en
que se obtengan lmites diferentes para diferentes trayectorias ya que en tal caso no existe el lmite doble y la funcin
no es continua. En caso de continuidad, la mejor "pista" es la representacin grfica de la superficie, que no debe
presentar ningn comportamiento anmalo en un entorno del punto considerado.

Ejemplo 1:
La funcin:

es continua en todo el plano salvo en el punto (0,0) donde no est definida, pero podemos asociar un
valor f(0,0)=a de forma que la funcin resultante sea tambin continua en (0,0)?
Vemoslo grficamente:
f1(x,y)= (x^3+y^3)/(x^2+y^2)

P1 = plot3d(f1(x,y),(x,-3,3),(y,-3,3),opacity=0.8)
origen=point3d((0,0,0),size=10,color='red')
show(P1+origen)

En vistas de la grfica, podemos afirmar que


la funcin es continua en el punto (0,0) sin
ms que definir f(0,0)=0.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 2:
La funcin:

es continua en todo el plano salvo en el punto (0,0) donde no est definida, pero podemos asociar un
valor f(0,0)=a de forma que la funcin resultante sea tambin continua en (0,0)?
f2(x,y)= x*y/(x^2+y^2);

P2 = plot3d(f2(x,y),(x,-3,3),(y,-3,3),opacity=0.8);
origen=point3d((0,0,0),size=10,color='red')
show(P2+origen)

La funcin muestra un comportamiento anmalo en el punto (0,0) .

Veamos la continuidad estudiando tres trayectorias:


ROJA: la trayectoria x=t,y=t que pasa por (0,0) para t=0
AZUL: la trayectoria x=t,y=t que pasa por (0,0) para t=0
MARRN: la trayectoria x=t,y=t2 que pasa por (0,0) para t=0

y vemos grficamente el valor del lmite de f(x,y) segn dichas trayectorias.


En conclusin, los lmites segn estas tres trayectorias son diferentes cuando nos acercamos al punto (0,0),
por lo que la funcin no puede ser continua en dicho punto.

PRCTICA 6: Funciones de dos variables.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 3:
La funcin:

es continua en todo el plano salvo en el punto (0,0) donde no est definida, pero podemos asociar un
valor f(0,0)=a de forma que la funcin resultante sea tambin continua en (0,0)?
f3(x,y)= x*y^2/(x^2+y^4)

P3 = plot3d(f3(x,y),(x,-3,3),(y,-3,3),opacity=0.8)
origen=point3d((0,0,0),size=30,color='red')
show(P3+origen)

La funcin muestra un comportamiento anmalo en el punto (0,0). Veamos la continuidad estudiando las
mismas tres trayectorias del ejemplo anterior ms una cuarta trayectoria:
ROJA: la trayectoria x=t,y=t que pasa por (0,0) para t=0
AZUL: la trayectoria x=t,y=t que pasa por (0,0) para t=0
VERDE: la trayectoria x=t,y=t2 que pasa por (0,0) para t=0
NARANJA: la trayectoria x=t2,y=t que pasa por (0,0) para t=0
y veamos grficamente el valor del lmite de f(x,y) segn dichas trayectorias:

En conclusin, aunque los lmites segn las tres


primeras trayectorias son iguales y valen 0, cuando
nos acercamos al punto(0,0) segn la cuarta
trayectoria (naranja) el lmite no es 0 sino 21, por lo
que la funcin no puede ser continua en dicho
punto.
8

Miguel Angel Cifredo Campos


macifredo@gmail.com

Polinomio de Taylor
Si la funcin f(x,y) es derivable parcialmente hasta orden m en el punto (x0,y0), se define el polinomio de
Taylor de orden m asociado a f(x,y) en dicho punto como:

donde en el ltimo trmino, el ndice (m) representa cierto desarrollo simblico del binomio de Newton que
afecta a las derivadas parciales de f y a las potencias de los trminos (xx0) y (yy0) , ya comentado en clase.
Para calcular el polinomio de Taylor de orden m de una funcin f(x,y) en un entorno del punto (x0,y0)
utilizamos la sintaxis: taylor(f(x,y),(x,x0),(y,y0),m) . Veamos un ejemplo:
x,y=var('x y')
f(x,y)= x*y^3
x0=1; y0=-1
m=2
pol(x,y)=taylor(f(x,y),(x,x0),(y,y0),m).expand()
show(pol(x,y))

Creamos una funcin que extraiga el coeficiente de cualquier trmino de un polinomio en las variables x e y:
%auto
def coeficiente_pol(pol,tx,ty):
poli=expand(pol)
return (poli.coefficients(x)[tx][0]).coefficients(y)[ty][0]

Por ejemplo, el coeficiente del polinomio de Taylor anterior para el trmino xy es:
coeficiente_pol(pol(x,y),1,1)

Y el coeficiente del trmino slo en la variable y es:


coeficiente_pol(pol(x,y),0,1)

-6

Seguidamente, representaremos grficamente el polinomio de Taylor de orden m de una funcin de dos


variables en un punto(x0,y0) junto con f(x,y) en un entorno rectangular.
PRCTICA 6: Funciones de dos variables.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo:
f(x,y)= x^2*y^2/(x^2+y^2)
x0=1; y0=2
m=2
xmin=-2; xmax=3; ymin=0; ymax=4
# NO ES NECESARIO MODIFICAR ESTE CDIGO:
Pn(x,y)= taylor(f(x,y),(x,x0),(y,y0),m).expand()
Pn(x,y).show()
gf=plot3d(f(x,y),(x,xmin,xmax),(y,ymin,ymax), color= 'red', opacity=0.8)
gp=plot3d(Pn(x,y),(x,xmin,xmax),(y,ymin,ymax), color= 'green', opacity=1)
pt=point3d((x0,y0,f(x0,y0)),size=10,color='blue')
show(gf+gp+pt)

Vamos a utilizar el polinomio de Taylor anterior para dar un valor aproximado de la funcin en el punto
P=(0.98, 2.1), cercano al punto (x0,y0)=(1,2) del ejemplo.
p1=0.98; p2=2.1
# NO ES PRECISO MODIFICAR
vexacto=f(p1,p2)
vaprox=Pn(p1,p2)
error=abs(vexacto-vaprox)
print 'valor numrico del

valor
valor
error
valor

10

EL SIGUIENTE CDIGO
print 'valor de f(x,y):'
print 'valor del polinomio:'
print 'error absoluto:'
error absoluto:'

show(vexacto)
show(vaprox)
show(error)
show(error.n())

de f(x,y)
: 0.788649635036496
del polinomio: 0.788547200000000
absoluto
: 0.000102435036496318
numrico del error absoluto: 0.000102435036496318

Miguel Angel Cifredo Campos


macifredo@gmail.com

Clculo de puntos crticos de una funcin


Dada una funcin f(x,y), sus puntos crticos son aquellos que anulan ambas derivadas parciales

Si resolvemos este sistema de dos ecuaciones con dos incgnitas, obtendremos todos los puntos crticos.

Ejemplo
Dada la funcin

, calcular sus puntos crticos.

x,y=var('x,y')
f(x,y)=(x-y)/(1+x^2+y^2)
# CALCULO DE PUNTOS CRITICOS
gradiente=f(x,y).gradient()
derpar0=solve(list(gradiente),x,y)
lptc=[(sol[0].rhs(),sol[1].rhs()) for sol in derpar0]
puntos_criticos=[]
for ptc in lptc:
if is_RealNumber(ptc[0].n()) and is_RealNumber(ptc[1].n()):
puntos_criticos.append(ptc)
print 'lista de puntos crticos:'
print
show(puntos_criticos)

lista de puntos crticos:

Los puntos crticos se clasifican en puntos mximos, puntos mnimos y puntos de silla. La clasificacin
puede caracterizarse por la matriz hessiana asociada a f(x,y) y que se define como

Dado un punto crtico (x0,y0), se verifica:

Si det(H(x0,y0)) > 0 y fxx(x0,y0) > 0, entonces (x0,y0) es un punto mnimo.


Si det(H(x0,y0)) > 0 y fxx(x0,y0) < 0, entonces (x0,y0) es un punto mximo.
Si det(H(x0,y0)) < 0 entonces (x0,y0) es un punto de silla.

PRCTICA 6: Funciones de dos variables.

11

Miguel Angel Cifredo Campos


macifredo@gmail.com

# CALCULO DEL HESSIANO


hess=f(x,y).hessian()
def hessiano(pto):
return hess(x=pto[0],y=pto[1])
print 'matriz hessiana:'
show(hess)

matriz hessiana:

np=1 # tomamos el primer punto crtico de la lista puntos_criticos


# NO HAY QUE MODIFICAR ESTE CDIGO:
punto=puntos_criticos[np-1]
html(' punto crtico:')
show(punto)
H=hessiano(punto)
html(' valor del hessiano en el punto:')
show(H)
html('valor de $f_{xx}$ y de $det(H)$:')
show([H[0][0],det(H)])
html('valores numricos:')
show([H[0][0].n(),det(H).n()])

punto crtico:

valor del hessiano en el punto:

valor de fxx y de det(H) :

valores numricos:

[0.707106781186548 , 0.500000000000000]
Como ambos valores son positivos, el primer punto crtico es un punto mnimo. Como vemos grficamente.
xmin=-2;xmax=2;ymin=-1;ymax=3;
gff=plot3d(f(x,y),(x,xmin,xmax),(y,ymin,ymax), color='red',opacity=0.8)
ptt=point3d((punto[0],punto[1],f(punto[0],punto[1])),size=10,color='blue')
show(gff+ptt)

12

Miguel Angel Cifredo Campos


macifredo@gmail.com

Introduccin a las Ecuaciones Diferenciales Ordinarias

1. Motivacin y nociones bsicas


En las Ciencias y la Ingeniera se desarrollan modelos matemticos para comprender mejor los fenmenos fsicos.
Muchos de estos modelos provienen de fenmenos de la vida real en los que una magnitud cambia de estado con el
tiempo y proporcionan una ecuacin que contiene alguna(s) derivada(s) de una funcin desconocida o incgnita. Esta
ecuacin es una ecuacin diferencial. Si la ecuacin contiene derivadas parciales de la funcin incgnita, la ecuacin
se denomina ecuacin en derivadas parciales (EDP). Si en la ecuacin solo aparecen derivadas de una funcin
desconocida de una variable, la ecuacin se denomina ecuacin diferencial ordinaria. Nos vamos a centrar en este
ltimo tipo de ecuaciones.
Ms precisamente, una ecuacin diferencial ordinaria (EDO, en adelante) es una ecuacin que relaciona una
funcin desconocida o incgnita, y(x), con su variable independiente, x, y con una o ms de sus derivadas hasta un
cierto orden. En muchos casos prcticos, la variable independiente (v.i.) es el tiempo y se denota por t. Nosotros
utilizaremos ambas notaciones para la v.i.
Se llama orden de una EDO al orden de la mayor derivada de la funcin incgnita que aparece en la ecuacin.
Ejemplo 1. Las ecuaciones diferenciales

son, respectivamente, de tercer, primer y segundo orden.


En adelante, denotaremos y = y(x), y=y(x) , y=y(x) ,...
Resolver una EDO consiste en encontrar, si es posible, una funcin (o funciones) y=y(x) que verifique(n) la EDO para
cualquier x en un cierto intervalo real I. Se dir que dicha funcin (o funciones) es (son) solucin (soluciones) de la
EDO en el intervalo I. La resolucin de una EDO conlleva el clculo de alguna integral. Por ello, a la resolucin de
una EDO tambin se le llama integracin de una EDO. Resaltar que hay EDOs que no tienen solucin, como la
EDO

Y, en el caso de que una EDO tenga solucin, tiene infinitas soluciones, debido a que en el proceso de integracin
aparece la constante de integracin.

Introduccin a las Ecuaciones Diferenciales Ordinarias.

Miguel Angel Cifredo Campos


macifredo@gmail.com

2. Un ejemplo sencillo
Ejemplo 2. Resolver (o integrar) la EDO de primer orden
(ed) y=2x
Se trata de hallar una funcin y = y(x) tal que y(x) = 2x (o bien dy/dx=2x) para cualquier x en algn intervalo real I. Es
claro que la funcin y(x)=x2 es una solucin de la ecuacin (ed) para cualquier x real. Pero tambin es solucin de (ed)
cualquier funcin de la forma
x2+C, para cualquier constante real C.
De hecho, para resolver (ed), basta con integrar:

Esta frmula, que contiene a las infinitas soluciones de (ed), se llama solucin general de (ed). Para cada valor de la
constante C se obtiene una solucin diferente. Cada una de ellas se llama solucin particular (o curva integral) de
(ed).
Este ejemplo es un caso particular del tipo de EDOs que pasamos a estudiar.

3. La EDO y = f(x)
Consideramos la ecuacin diferencial ordinaria
(1) y= f(x)
donde f es una funcin continua en su dominio de definicin D = Dom(f) . La frmula que proporciona el clculo
integral de las infinitas primitivas de f ,

para cualquier valor real de C,

es la solucin general de (1) y contiene a sus infinitas soluciones particulares (o curvas integrales). Para cada valor de
la constante de integracin C se obtiene una nica primitiva de f y una nica solucin particular de la EDO.
Las primitivas conocidas (que se expresan con un nmero finito de funciones elementales) se obtienen con cualquier
programa razonable de clculo simblico. En particular, tambin con Sage, como veremos.

Miguel Angel Cifredo Campos


macifredo@gmail.com

4. La EDO de primer orden y = f(x,y)


Las EDOs de primer orden son las ms sencillas de estudiar. Las podemos expresar en su forma implcita:
F (x,y,y)=0
o en su forma normal (o explcita):

y = f (x,y).

Ejemplo 3. La EDO 1+y2+xyy=0 se puede escribir en forma normal (sin ms que despejar y de la expresin dada):

Nos centraremos en las EDOs de primer orden escritas en forma normal.


Una solucin particular (o curva integral) de la EDO
(2) y= f(x,y)
en un intervalo real I es cualquier funcin y=(x) , que verifique (x)=f(x,(x)) para cada x del intervalo I.
Si (2) tiene solucin, su solucin general es una familia y = (x,C) de curvas del plano de tal manera que cada
curva de la familia (que se obtiene dando un valor concreto a la constante C) es una solucin particular de (2).
Ejercicio: Sin hacer uso del ordenador, comprubese que 1(x)=e2x+12x+2x2 es una solucin en toda la recta real
de la EDO.
y + 2y = 4x2
y que, de hecho, cualquier curva de la familia (x,C)=Ce2x+12x+2x2 (donde C es una constante arbitraria) es
solucin de la EDO.

Introduccin a las Ecuaciones Diferenciales Ordinarias.

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.1 Obtencin con Sage de la solucin general de una EDO de


primer orden
Los mtodos de resolucin de EDOs son muy limitados y, en general, no cabe esperar resolver de forma explcita
una ecuacin diferencial ordinaria cualquiera dada. Se conoce solo una coleccin finita de tipos de EDOs con
mtodo explcito de resolucin, como las ecuaciones diferenciales de primer orden lineales (homogneas y no
homogneas), las de Bernoulli, las exactas, las reducibles a exactas con factor integrante, las homogneas y algunas
reducibles a ellas... La mayora de ellos estn implementados en los programas usuales de clculo simblico.
Para resolver con Sage una EDO de primer orden, tenemos que:

declarar la variable independiente x;


declarar la funcin incgnita como una funcin que depende de x;
almacenar la ecuacin diferencial en una variable (por ejemplo, de), utilizando la orden diff(y,x) para la
derivada de y respecto de x;
resolver la ecuacin diferencial utilizando la orden desolve. La sintaxis de esta orden es:
desolve(de, [dvar, ivar], show_method=False)
donde:

de - es una expresin o ecuacin que representa la EDO


dvar - es la variable dependiente (para nosotros ser y)
ivar - (opcional) es la variable independiente (para nosotros ser x)
show_method - (opcional) si es show_method=true, entonces Sage devuelve el par [solution,
method], donde method es el mtodo que se ha usado para resolver la ecuacin.

Salida de Sage:
En la mayora de los casos Sage devuelve la solucin en forma implcita. Si el resultado es de la forma y(x)=...
(cosa que ocurre para las ecuaciones lineales), devuelve solo el segundo miembro. Las posibles soluciones
constantes de las EDOs separables son omitidas.
Observaciones:
a) Al almacenar la ecuacin diferencial, pngase cuidado en no confundir la asignacin "=" con el signo de
igualdad "==".
b) Se pueden aadir otros atributos a la orden desolve.
c) Hay otros mtodos de resolucin de EDOs con Sage (como desolve_Laplace,...), que no estudiaremos
aqu.

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.2. Algunos ejemplos de resolucin de EDOs de primer orden


Ejemplo 4. Comenzamos resolviendo la EDO
y = 2x
que vimos como primer ejemplo.
x = var('x');
y = function('y',x)
ED = diff(y,x) == 2*x
desolve(ED, [y,x],show_method=true)

[x^2 + c, 'linear']

Tambin podemos resolver la ecuacin anterior almacenndola en la forma


y 2x = 0
ED0 = diff(y, x) - 2*x == 0 desolve(ED0, [y,x],show_method=true)

[x^2 + c, 'linear']

Asimismo, podra usarse directamente la orden desolve sin almacenar previamente la EDO en una variable.
Aqu no aadimos el atributo show_method, que era opcional.
desolve(diff(y,x) - 2*x == 0, [y,x])

x^2 + c

Ejemplo 5. Es claro que cualquier funcin de la forma e2x+C es solucin de la EDO y=e2x (de hecho, es su
solucin general). Lo comprobamos con Sage:
ED00 = diff(y, x) == exp(2*x) desolve(ED00, [y,x])

c + 1/2*e^(2*x)

Con desolve podemos resolver ecuaciones diferenciales ordinarias de primer orden, que no sean
necesariamente de la forma y = f(x) .

Introduccin a las Ecuaciones Diferenciales Ordinarias.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 6. Resolvamos las siguientes EDOs de primer orden:


1) y=y

2) y=7y

(ejemplos de ecuaciones de primer orden lineales homogneas).


ED1 = diff(y, x) ==y
desolve(ED1, [y,x],show_method=true)

[c*e^x, 'linear']
ED2 = diff(y, x) == 7*y
desolve(ED2, [y,x],show_method=true)

[c*e^(7*x), 'linear']

3) 2y+y = 3

4) y2xy = x

(ejemplos de ecuaciones de primer orden lineales no homogneas)


ED3 = 2*diff(y, x) + y ==3
desolve(ED3, [y,x],show_method=true)

[(c + 3*e^(1/2*x))*e^(-1/2*x), 'linear']


ED4 = diff(y, x) - 2*x*y ==x
desolve(ED4, [y,x],show_method=true)

[1/2*(2*c - e^(-x^2))*e^(x^2), 'linear']

5) y+y = xy2 (ejemplo de ecuacin de Bernoulli)


ED5 = diff(y, x) + y == x * y^2
desolve(ED5, [y,x],show_method=true)

[e^(-x)/((x + 1)*e^(-x) + c), 'bernoulli']

6) yy+3x = 0 (ejemplo de ecuacin de variables separables)


ED6 = y*diff(y, x) +3* x ==0
desolve(ED6, [y,x],show_method=true)

[-1/6*y(x)^2 == 1/2*x^2 + c, 'separable']

Si la EDO est en forma implcita, como es este caso, al almacenar la ecuacin diferencial no es necesario
explicitar en el segundo miembro que est igualada a 0. En efecto, podamos haber hecho:
ED6 = y*diff(y, x) +3* x
desolve(ED6, [y,x])

-1/6*y(x)^2 == 1/2*x^2 + c

7) y2y+y = 3 (ejemplo de ecuacin autnoma: la v.i. no aparece de manera explcita).


ED7 = y^2*diff(y, x) + y ==3
desolve(ED7, [y,x],show_method=true)

[-1/2*y(x)^2 - 9*log(y(x) - 3) - 3*y(x) == c + x, 'separable']

Miguel Angel Cifredo Campos


macifredo@gmail.com

8) x+y+(xy)y = 0 (ejemplo de ecuacin exacta: de la forma M(x,y)+N(x,y)y = 0 .)


ED8 = x + y + (x-y)*diff(y, x) ==0
desolve(ED8, [y,x],show_method=true)

[1/2*x^2 + x*y(x) - 1/2*y(x)^2 == c, 'exact']

Ojo!

Obsrvese que en los tres ltimos ejemplos, la familia solucin viene expresada en forma implcita.
EDOs difciles pueden producir error, como vemos al intentar resolver con Sage la EDO

yy + ey + cosx sen(x+y) = 0.
desolve(sqrt(y)*diff(y,x)+e^(y)+cos(x)-sin(x+y)==0,y)

Traceback (click to the left of this block for traceback)


...
NotImplementedError: Maxima was unable to solve this ODE. Consider
to set option contrib_ode to True.

De hecho, en algunos casos, Sage no es capaz de distinguir si una EDO tiene solucin o no, como es el
caso de la EDO
1+(y)2=0, que no tiene solucin. Vemoslo con Sage.

desolve(1+(diff(y,x))^2==0,y)

Traceback (click to the left of this block for traceback)


...
NotImplementedError: Maxima was unable to solve this ODE. Consider
to set option contrib_ode to True.

Introduccin a las Ecuaciones Diferenciales Ordinarias.

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.3. Problemas de Valor Inicial


Se llama Problema de Valor Inicial relativo a la EDO y=f(x,y) con condicin inicial y(x0)=y0, y se denota
por

al problema de encontrar, si existe, una solucin particular de la EDO y=f(x,y) que pase por el punto (x0,y0).

El (PVI) puede no tener solucin y, en caso de tenerla, la solucin puede o no ser nica.
El Teorema de Picard afirma: "Si f(x,y) y f / y (x,y) son continuas en un recinto abierto
=(a,b)(c,d) del plano, entonces por cada punto (x0,y0) de pasa una nica solucin del
(PVI) definida en un intervalo [x0,x0+] (a,b) (con >0 eventualmente pequeo)."

Para resolver con Sage un (PVI), se utiliza de nuevo la orden desolve, aadiendo el atributo ics. La
sintaxis ahora es:
desolve(de, [dvar, ivar],ics=[x0,y0],show_method=False)

donde:

de, dvar, ivar, sohw_method - como antes


ics - (opcional) es la condicin inicial, donde hay que especificar los datos iniciales x0 e y0

Ejemplo 7. Resolver el problema de valor inicial

desolve(2*diff(y,x) + y - 3, [y,x], ics=[1,3])


3

Se ha obtenido la solucin constante y(x)=3, solucin definida en toda la recta real. De hecho, la solucin
y(x)=3 es la nica curva integral de la EDO 2y+y=3 que pasa por el punto (1,3).
Ojo! Hay que tener cuidado pues Sage, como otros programas de clculo simblico, a veces, comete
errores. Hay que pensar en estos programas como ayuda de clculo, pero hay que utilizarlos con cuidado.
Podemos ver ejemplos de (PVI) que no tienen solucin nica para los cuales Sage da una nica salida como
solucin.

Miguel Angel Cifredo Campos


macifredo@gmail.com

En efecto, pueden construirse infinitas soluciones del


siendo una de ellas, la funcin constante y(x)=0 para cada x real, mientras que la salida de Sage es
como comprobamos a continuacin:
desolve(diff(y,x) - sqrt(y), y, ics=[0,0])
2*sqrt(y(x)) == x

De hecho, puede demostrarse que cualquier (PVI) de la forma

con (0,1) , tiene infinitas soluciones (una de ellas la solucin nula). No lo vemos aqu.

Introduccin a las Ecuaciones Diferenciales Ordinarias.

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.4. Dibujando curvas integrales


Si la familia de curvas integrales de una EDO est en forma explcita, (x,c) , cortando y pegando la salida de Sage, se
puede almacenar dicha solucin general como una funcin en las variables x y c para su posterior representacin
grfica.
Ejemplo 8. La solucin general o familia de curvas integrales de la EDO y=y es (x,c)=cex
En primer lugar, almacenamos la solucin general en la funcin de dos variables f(x,c)=cex :
x=var('x');c=var('c') f(x,c)=c*e^x
(Ntese que hemos tenido que declarar la variable c). A continuacin, como vimos en la Prctica 1, con el mtodo
.plot podemos representar varias curvas integrales, por ejemplo, en el intervalo [4,4] , para los valores c=1,2,3,4,5
(por ejemplo) de la constante c.
dibujo1=f(x,1).plot(-4,4,color='green')
dibujo2=f(x,2).plot(-4,4,color='blue')
dibujo3=f(x,3).plot(-4,4,color='red')
dibujo4=f(x,4).plot(-4,4,color='orange')
dibujo5=f(x,5).plot(-4,4,color='black')
dibujototal=dibujo1+dibujo2+dibujo3+dibujo4+dibujo5;
show(dibujototal)

Podemos dibujar soluciones particulares mediante el mtodo append. Vemoslo con el siguiente ejemplo.

10

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 9. Dibujamos algunas soluciones particulares de la EDO


xy=2y+x3
x = var('x'); y = function('y',x)
DE = x*diff(y, x) == 2*y + x^3
desolve(DE, [y,x]) # answer : (c + x)*x^2
sol=[]
for i in srange(-2, 2, 0.2):
sol.append(desolve(DE, [y, x], ics=[1, i]))
sol.append(desolve(DE, [y, x], ics=[-1, i]))
g=plot(sol, x, -2, 2)
g.show()

Para apreciar mejor el comportamiento de las curvas integrales (o soluciones particulares) cerca del origen, podemos
hacer un zoom y representar, por ejemplo, soluciones particulares con la variable dependiente y entre 10 y 10:
g.show(ymin=-10, ymax=10)

o con un zoom mayor, por ejemplo, con y[2,2] :


g.show(ymin=-2, ymax=2)

Introduccin a las Ecuaciones Diferenciales Ordinarias.

11

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.5. Campo de direcciones


En general, las soluciones de una EDO de primer orden no se pueden hallar de forma explcita, ni siquiera en el caso
lineal (las integrales involucradas no suelen tener primitivas elementales). Por ello, se suelen utilizar esquemas
grficos, para visualizar su comportamiento, y mtodos numricos, para aproximar sus valores.

Interpretacin geomtrica de la solucin de un (PVI)


Supongamos dado un

con solucin nica (x) en un intervalo real I que contiene a x0 en su interior. En particular, y = (x) verifica

es decir, la curva y=(x) pasa por el punto (x0,y0) y la pendiente de la recta tangente a y=(x) que pasa por dicho
punto (x0,y0) tiene pendiente f(x0,y0) . De este modo, aunque no conozcamos la expresin explcita de la solucin
(x) podemos hacer un esbozo de ella "cerca del punto (x0,y0)", dibujando su aproximacin lineal mediante un
segmento que pase por (x0,y0) con pendiente (x0)=f(x0,y0) .
Si esto lo hacemos con cada punto (x0,y0) de un recinto dado del plano, obtenemos el campo direccional o campo de
direcciones.

Representacin grfica del campo de direcciones


Los programas usuales de clculo numrico o simblico suelen implementar el dibujo de campos direccionales. Sage
dibuja el campo de direcciones con la orden plot_vector_field. Veamos su sintaxis con la EDO del ejemplo
anterior:
xy = 2y+x3.
Nota importante: Si la pendiente de la recta tangente a la curva y=(x) que pasa por el punto (x,y) es f(x,y) , un
vector director de dicha recta es (1,f(x,y)) o tambin (,f(x,y)) para cualquier real no nulo. Como en el ejemplo que
vamos a tratar es f(x,y)=2y/x+x2, se toma en el punto (x,y) el vector director (x,xf(x,y)) .
y = var('y')
g = plot_vector_field((x,2*y+x^3), (x, -.5, .5), (y, -.5, .5))
g.show(ymin=-.5, ymax=.5)

12

Miguel Angel Cifredo Campos


macifredo@gmail.com

Podemos tambin representar grficamente las curvas integrales junto con el campo de direcciones. Lo hacemos
para el mismo ejemplo:
x = var('x'); y = function('y',x)
DE = x*diff(y, x) == 2*y + x^3
desolve(DE, [y,x]) # answer : (c + x)*x^2
sol=[]
for i in srange(-2, 2, 0.2):
sol.append(desolve(DE, [y, x], ics=[1, i]))
sol.append(desolve(DE, [y, x], ics=[-1, i]))
g=plot(sol, x, -2, 2)
y = var('y')
g += plot_vector_field((x,2*y+x^3), (x, -2, 2), (y, -1, 1))
g.show(ymin=-1, ymax=1)

Introduccin a las Ecuaciones Diferenciales Ordinarias.

13

Miguel Angel Cifredo Campos


macifredo@gmail.com

Representemos ahora en el rectngulo [0,1][0,1] curvas integrales y el campo de direcciones de la EDO


2y + y 3 = 0
Podemos tomar en el punto (x,y) el vector director (1,f(x,y)) = (1,(3y)/2) o cualquier vector proporcional a l,
como(2,2f(x,y)) = (2,3y) . En Sage cogemos este ltimo.
x = var('x'); y = function('y',x)
DE = 2*diff(y, x) + y == 3
desolve(DE, [y,x])
sol=[]
for i in srange(0, 3, 0.1):
sol.append(desolve(DE, [y, x], ics=[1, i]))
sol.append(desolve(DE, [y, x], ics=[-1, i]))
g=plot(sol, x, 0, 1) y = var('y')
g += plot_vector_field((2,3-y), (x, 0, 1), (y, 0, 1))
g.show(ymin=0, ymax=1)

Finalmente, para la misma EDO, 2y +y3=0 , vamos a representar en el rectngulo [0,8][2,6] el campo direccional
y las curvas integrales (o soluciones particulares) que pasan por los puntos (0,2) , (0,0), (0,2), (0,4) y (0,6).
x = var('x'); y = function('y',x)
DE = 2*diff(y, x) + y == 3
desolve(DE, [y,x])
sol=[]
for i in srange(-2, 8, 2):
sol.append(desolve(DE, [y, x], ics=[0, i]))
g=plot(sol, x, 0, 8) y = var('y')
g += plot_vector_field((2,3-y), (x, 0, 8), (y, -2, 6))
g.show(ymin=-2, ymax=6)

14

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.6. Mtodos numricos de resolucin de EDOs de primer orden:


Mtodos de Euler y de Heun
Nuevamente, supongamos dado un

con solucin nica (x) en un intervalo real I que contiene a x0 en su interior. Resolver numricamente el (PVI) dado
consiste en considerar un conjunto finito
x0 < x1 < x2 <...< xN
de puntos del intervalo I y obtener una aproximacin, yi, del valor exacto (xi) , para cada i = 0,1,...,N. Supondremos
que los puntos son equidistantes, es decir,
x0 < x1 = x0+h < x2=x1+h <...< xN = xN1+h,
donde h>0 es el llamado "paso". Estudiaremos dos mtodos de resolucin numrica de EDOs de primer orden: el
Mtodo de Euler y el Mtodo de Heun. Ambos son mtodos iterados o iterativos, es decir, conocido y0,
obtendremos yi a partir de yi1, para cada i=1,...,N.

4.6.1. Mtodo de Euler (o de la tangente):


Conocido y0, el Mtodo de Euler aproxima (x1) mediante y1 el valor en x1 de la recta tangente a la curva y=(x)
en el punto (x0,y0), cuya pendiente es (x0)=f(x0,y0) . Esta recta tangente tiene por ecuacin
y = y0 + f(x0,y0)(xx0)
de donde

(x1) y1 = y0 + f(x0,y0)(x1x0) = y0+hf(x0,y0) .

El proceso se repite, obteniendo:


(x2) y2 = y1+hf(x1,y1) ,
(x3) y3 = y2+hf(x2,y2)
...
(xn) yn = yn1+hf(xn1,yn1) .
As, el esquema iterativo (o algoritmo) del Mtodo de Euler es:

Introduccin a las Ecuaciones Diferenciales Ordinarias.

15

Miguel Angel Cifredo Campos


macifredo@gmail.com

Para resolver con Sage el (PVI) mediante el Mtodo de Euler, se utiliza la orden eulers_method, cuya sintaxis es:
eulers_method(f,x0,y0,h,b) (aqu, h es el paso y b es xN).

Previamente, hemos de declarar x e y mediante la orden x,y=PolynomialRing(QQ,2,"xy").gens().


Si no lo hacemos, Sage nos da un error, avisndonos de que no hemos definido y.
Al utilizar la orden eulers_method, Sage da como salida tres columnas, en las que aparecen, respectivamente, los
valores xi,yi y hf(xi,yi) (para i=0,1,...,N).

Ejemplo 10. Mediante dos pasos del Mtodo de Euler, obtener una aproximacin de (1) , siendo la nica
solucin del

Es claro que f(x,y) = 5x+y5 , x0 = 0, y0 = 1, h = y b=1.


x,y=PolynomialRing(QQ,2,"xy").gens();
eulers_method(5*x+y-5,0,1,1/2,1)
x
0
1/2
1

y
1
-1
-11/4

h*f(x,y)
-2
-7/4
-11/8

O bien, con decimales:


eulers_method(5*x+y-5,0,1,0.5,1)
x
0
0.50000000000000
1.00000000000000

y
1
-1.00000000000000
-2.75000000000000

h*f(x,y)
-2.00000000000000
-1.75000000000000
-1.37500000000000

Observamos que Sage devuelve tres columnas, con los valores respectivos de xi, yi y hf(xi,yi) , para i=0,1,...,N (siendo
N=2 en este caso).

16

Miguel Angel Cifredo Campos


macifredo@gmail.com

Ejemplo 11. Para el

obtener una aproximacin de (1) utilizando el Mtodo de Euler con paso h=0.2, siendo la nica solucin del
(PVI).
Es claro que ahora f(x,y) = 4y+1x , x0=0, y0=1, h=0.2 (por tanto, N= (bx0)/h = (10)/0.2 =5) y b=1. Con
Sage obtenemos la aproximacin:
eulers_method(4*y+1-x,0,1,0.2,1)
x
0
0.20000000000000
0.40000000000000
0.60000000000000
0.80000000000000
1.00000000000000

y
1
2.00000000000000
3.76000000000000
6.88800000000000
12.4784000000000
22.5011200000000

h*f(x,y)
1.0000000000000
1.7600000000000
3.1280000000000
5.5904000000000
10.0227200000000
18.0008960000000

o bien con nmeros racionales


eulers_method(4*y+1-x,0,1,1/5,1)
x
0
1/5
2/5
3/5
4/5
1

y
1
2
94/25
861/125
7799/625
70316/3125

h*f(x,y)
1
44/25
391/125
3494/625
31321/3125
281264/15625

Aunque Sage tiene implementado el Mtodo de Euler, tambin puede programarse. Presentamos a continuacin una
propuesta de programa y lo aplicamos al ejemplo anterior.
# Mtodo de Euler
def metodo_euler(x0,y0,b,N): # b es el punto final y N el nmero de pasos
h = (b-x0)/N # Paso
f = lambda x,y: 4*y+1-x # Aqu introducimos la funcin f(x,y) (segundo
miembro de la EDO)
nx = x0
ny = y0
# Creamos una lista para almacenar los valores
w = []
w.append((0,nx,ny))
for i in range(1,N+1):
ny = ny + h * f(nx,ny)
nx = x0 + i * h
w.append((i,nx,ny))
return w

Introduccin a las Ecuaciones Diferenciales Ordinarias.

17

Miguel Angel Cifredo Campos


macifredo@gmail.com

tabla_euler = metodo_euler(0,1,1,5);

# Metemos en la variable "tabla_euler" la salida de valores (i,xi,yi)

matriz_tabla_euler = matrix(tabla_euler); # Creamos una matriz con los valores de "tabla_euler"


matriz_tabla_euler

[
[
[
[
[
[

0
1
2
3
4
5

# Mostramos los valores

0
1]
1/5
2]
2/5
94/25]
3/5
861/125]
4/5
7799/625]
1 70316/3125]

En la primera columna aparecen los valores i=0,1,...,N (que marcan el nmero de la iteracin en la que estamos); en
la segunda, los valores xi (para i=0,1,...,N); y, en la tercera, las aproximaciones yi (para i=0,1,...,N) de los valores
(xi) obtenidos por el Mtodo de Euler que acabamos de programar.
Tambin podemos mostrar las salidas con decimales:
matriz_tabla_euler.n(digits=10) # Mostramos los valores con decimales
[
[
[
[
[
[

18

0.000000000
1.000000000
2.000000000
3.000000000
4.000000000
5.000000000

0.000000000
0.200000000
0.400000000
0.600000000
0.800000000
1.000000000

1.00000000]
2.00000000]
3.76000000]
6.88800000]
12.47840000]
22.50112000]

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.6.2. Mtodo de Heun (o Mtodo de Euler modificado)


Conocido y0, el Mtodo de Heun propone aproximar (x1) utilizando, en lugar de la recta tangente a la curva y=(x)
en el punto (x0,y0), la recta que pasa por el punto (x0,y0) que tiene por pendiente la media aritmtica de las pendientes
de las rectas tangentes a y=(x) en los puntos (x0,y0) y (x1,1), donde 1=y0+hf(x0,y0) (el que se obtiene a partir de
y0 mediante el Mtodo de Euler). Es decir, mediante el Mtodo de Heun, se aproxima (x1) por y1 el valor en x1 de
la recta que pasa por el punto (x0,y0) y tiene pendiente

El proceso se repite para i=1,...,N, obteniendo el siguiente esquema iterativo (o algoritmo) del Mtodo de Heun:

Una propuesta de programacin con Sage del Mtodo de Heun es la siguiente:


# Mtodo de Heun
def metodo_heun(x0,y0,b,N):
h = (b-x0)/N
f = lambda x,y: 4*y +1 - x # Aqu introducimos la funcin f(x,y)
nx = x0
ny = y0
# Creamos una lista para almacenar los valores
w = []
w.append((0,nx,ny))
for i in range(1,N+1):
ny = ny + (h/2)*( f(nx,ny) + f(nx+h, ny+h*f(nx,ny)) )
nx = x0 + i * h
w.append((i,nx,ny))
return w
Lo aplicamos al mtodo anterior, obteniendo:
tabla_heun = metodo_heun(0,1,1,5);
# Metemos en la variable "tabla_heun" la salida de valores (i,xi,yi)
matriz_tabla_heun = matrix(tabla_heun); # Creamos una matriz con los valores de "tabla_heun"
matriz_tabla_heun
# Mostramos los valores

[
[
[
[
[
[

0
1
2
3
4
5

0
1]
1/5
119/50]
2/5
3281/625]
3/5
352411/31250]
4/5
9374829/390625]
1 994434999/19531250]

O bien con cifras decimales:


n(matriz_tabla_heun)

[
[
[
[
[
[

0.00000000000000
1.00000000000000
2.00000000000000
3.00000000000000
4.00000000000000
5.00000000000000

0.00000000000000
0.20000000000000
0.40000000000000
0.60000000000000
0.80000000000000
1.00000000000000

1.0000000000000]
2.3800000000000]
5.2496000000000]
11.2771520000000]
23.9995622400000]
50.9150719488000]

Introduccin a las Ecuaciones Diferenciales Ordinarias.

19

Miguel Angel Cifredo Campos


macifredo@gmail.com

4.6.3. Errores de aproximacin mediante los Mtodos de Euler y de Heun


Puede demostrarse:

Bajo ciertas condiciones (que f(x,y) posea derivadas parciales continuas), el error local cometido por el
Mtodo de Euler en la n sima iteracin es de orden O(nh2) (para cada n=1,...,N). Ms precisamente,

donde

Bajo ciertas condiciones (que f(x,y) posea derivadas parciales segundas continuas), el error local cometido
por el Mtodo de Heun en la n-sima iteracin es de orden O(nh3) (para cada n=1,...,N). Ms precisamente,

donde

Puesto que el paso h>0 est destinado a ser pequeo, el Mtodo de Heun supone una mejora con respecto al
Mtodo de Euler.
Por otro lado, si se conoce la solucin exacta (x) del (PVI), se pueden calcular los errores locales exactos de las

aproximaciones obtenidas mediante ambos mtodos.

Podemos modificar ligeramente los anteriores programas realizados con Sage para el clculo de las aproximaciones
mediante los Mtodos de Euler y de Heun e incluir en la salida una cuarta columna que contenga los errores locales
cometidos en cada iteracin.

20

Miguel Angel Cifredo Campos


macifredo@gmail.com

A continuacin damos una propuesta de programacin con Sage del Mtodo de Euler mostrando las
aproximaciones yi (i=0,1,...,N) y los errores locales correspondientes, y lo aplicamos al Ejemplo 11.
def metodo_euler_con_error(x0,y0,b,N):
h = (b-x0)/N
f = lambda x,y: 4*y + 1 -x # Aqu introducimos la funcin f(x,y) (segundo miembro de la EDO)
g = lambda x: -3/16 + x/4 + 19/16 * exp(4*x) # Aqu introducimos la solucin exacta del (PVI)
nx = x0
ny = y0
# Creamos una lista para almacenar los valores
w = []
w.append(( 0 , nx , ny , n(abs(g(nx)-ny)) ) ) # Esto guarda [i=0,x0,y0,e(0)] (e(0)=0: error inicial)
for i in range(1,N+1):
ny = ny + h * f(nx,ny)
nx = x0 + i * h
w.append(( i , nx , ny , n(abs(g(nx)- ny)) ) ) # Esto guarda [i,xi,yi,e(i)] (e(i): error en la
etapa i)
return w

tabla_euler_con_error = metodo_euler_con_error(0,1,1,5);
matriz_tabla_euler = matrix(tabla_euler_con_error);
matriz_tabla_euler # Mostramos los valores
[
[
[
[
[
[

0.00000000000000
1.00000000000000
2.00000000000000
3.00000000000000
4.00000000000000
5.00000000000000

0.000000000000000
0.200000000000000
0.400000000000000
0.600000000000000
0.800000000000000
1.000000000000000

1.0000000000000
2.0000000000000
3.7600000000000
6.8880000000000
12.4784000000000
22.5011200000000

0.0000000000000]
0.5053298525848]
2.0342260039692]
6.1645219520119]
16.6664796090674]
42.3966831643588]

Anlogamente, presentamos una propuesta de programacin con Sage del Mtodo de Heun mostrando las
aproximaciones yi (i=0,1,...,N) y los errores locales correspondientes, y lo aplicamos al Ejemplo 11.
def metodo_heun_con_error(x0,y0,b,N):
h = (b-x0)/N
f = lambda x,y: 4*y + 1 -x
# Aqu introducimos la funcin f(x,y) (segundo miembro de la EDO)
g = lambda x: -3/16 + x/4 + 19/16 * exp(4*x) # Aqu introducimos la solucin exacta del (PVI)
nx = x0
ny = y0
# Creamos una lista para almacenar los valores
w = []
w.append(( 0 , nx , ny , n(abs(g(nx)-ny)) ) ) # Esto guarda i=0, x0, y0 y el error inicial (=0)
for i in range(1,N+1):
ny = ny + (h/2)*( f(nx,ny) + f(nx + h, ny + h* f(nx,ny)) )
nx = x0 + i * h
w.append(( i , nx , ny , n(abs(g(nx)- ny)) ) ) # Esto guarda [i,xi,yi,e(i)] (e(i): error en la
etapa i)
return w

tabla_heun_con_error = metodo_heun_con_error(0,1,1,5);
matriz_tabla_heun_con_error = matrix(tabla_heun_con_error);
matriz_tabla_heun_con_error.n(digits=10) # Mostramos los valores
[
[
[
[
[
[

0.000000000
1.000000000
2.000000000
3.000000000
4.000000000
5.000000000

0.0000000000
0.2000000000
0.4000000000
0.6000000000
0.8000000000
1.0000000000

1.00000000
2.38000000
5.24960000
11.27715200
23.99956224
50.91507195

Introduccin a las Ecuaciones Diferenciales Ordinarias.

0.00000000]
0.12532985]
0.54462600]
1.77536995]
5.14531736]
13.98273122]

21

Miguel Angel Cifredo Campos


macifredo@gmail.com

CALCULO
INFINITESIMAL Y NUMERICO
Grado en Ing. Inf. (Tecnologas Inform
aticas), Grupo 4
Control de evaluaci
on alternativa, 26 de Octubre de 2010
APELLIDOS:

NOMBRE:

1. Considerese la ecuaci
on cos(x) x2 + 2 = 0. Se pide:
i) Demostrar que tiene una u
nica solucion real en el intervalo [0, ].
ii) Determinar un intervalo de amplitud uno y extremos enteros que contenga a dicha solucion.
iii) Determinar un valor de ese intervalo que, usado como valor inicial, asegure la convergencia del
metodo de Newton-Raphson.
iv) Realizar dos iteraciones del metodo de Newton-Raphson (es decir, hallar x2 ), con el valor inicial
del apartado anterior.
2. H
allese el polinomio interpolador para el soporte S = {(1, 4), (0, 0), (2, 2), (3, 4)}, usando el metodo
de Lagrange.
2

3. Se considera la ecuaci
on ex x2 x + a = 0. Determina para que valor de la constante a IR la
ecuaci
on posee una raz triple, y calcula dicha raz.
4. Sea h(x) un polinomio de grado tres. Entonces, el polinomio interpolador de h(x) para el soporte
S = {1, 2, 3, 4, 5}
tiene grado cinco.
puede coincidir, en ocasiones, con h(x).
es un polinomio de grado cuatro.
coincidir
a con h(x).
Justifica la respuesta (sin justificaci
on, el cuarto ejercicio no se valorara):

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

CALCULO
INFINITESIMAL Y NUMERICO
Grado en Ing. Inf. (Tecnologas Inform
aticas), Grupo 4
Segundo Control de evaluaci
on alternativa, 26 de Noviembre de 2010
APELLIDOS:

NOMBRE:

Para la evaluaci
on alternativa, este control esta valorado en tres puntos.

1. Consideremos el n
umero z0 = 00 8 e0 2 IR.
a) Dar una aproximaci
on del valor de z0 utilizando un polinomio de McLaurin de grado tres apropiado.
b) Tomando M = 10 en la correspondiente formula del error, calcular el grado n IN mnimo para
poder asegurar que el error que se comete con esa aproximacion es menor que 00 0001.
2. Estudiar si las siguientes series numericas son convergentes o divergentes:

X
(1)n
.
a)
n
n=1

b)

X
1
.
n
n
n=1

b)

X
2n + 1
.
n+3
n=0

3. Hallar el campo de convergencia de las siguientes series de potencias:


a) F (x) =

X
xn
.
4n+1
n=0

b) G(x) =

X
n! xn
.
n2
n=1

Adem
as, hallar el valor de F (2) y de G(1).
Nota: No olvideis estudiar el comportamiento en los posibles extremos del campo de convergencia.
4. Se considera la funci
on f (x) = e2x .
a) Hallar la serie de potencias centrada en a = 0 asociada a f (x), y determinar su campo de
convergencia.

X
2n
b) Calcular el valor de la serie numerica
(1)n .
n!
n=0

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

CALCULO
INFINITESIMAL Y NUMERICO
Grado en Ing. Inf. (Tecnologas Inform
aticas), Grupo 4
Examen de convocatoria oficial, 1 de Febrero de 2011
APELLIDOS:

NOMBRE:

Justificar adecuadamente cada respuesta.

1. (2 puntos) Considerese la ecuaci


on Ln (2x) +

1
= 0. Se pide:
x

i) Demostrar que tiene una u


nica solucion real en el intervalo [1, 4].
ii) Determinar un intervalo de extremos enteros y amplitud uno que contenga a dicha solucion.
iii) Determinar un valor de ese intervalo que, usado como valor inicial, asegure la convergencia del
metodo de Newton-Raphson.
iv) Realizar dos iteraciones del metodo de Newton-Raphson (es decir, hallar x2 ), con el valor inicial
del apartado anterior.
2. (0.75 puntos) Sea P (x) el polinomio interpolador de h(x) = x3 x para el soporte S = {1, 1, 2}.
Determinar el valor de P (0).
3. (1 punto) Dar una aproximaci
on del valor Ln (0,9)e0,1 utilizando un polinomio de Taylor de grado
dos adecuado.
4. (0.5 puntos) Estudiar si las siguientes series numericas son convergentes o divergentes:
i)

X
3n
n!
n=0

ii)

X
2n
32n
n=0

5. (1 punto) Hallar el intervalo de convergencia de las siguientes series de potencias:


i) F (x) =

ii) G(x) =

X
n! xn
n3
n=0

xn
(5)2n
n=0

6. (0.75 puntos) Determinar el dominio de la funcion f (x, y) =

Ln (xy)
+ y.
x

7. (2 puntos) Clasificar los puntos crticos de la funcion f (x, y) = x2 xy 2 + 2y 2 .

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

CALCULO
INFINITESIMAL Y NUMERICO
Grado en Ing. Inf. (Tecnologas Inform
aticas), Grupo 4
Examen de convocatoria oficial, 5 de Septiembre de 2011
APELLIDOS:

NOMBRE:

Justificar adecuadamente cada respuesta.

1. (1.5 puntos) Considerese la ecuaci


on e2x Ln (x) 9 = 0. Se pide:
i) Demostrar que tiene una u
nica solucion real en el intervalo [1, 3].
ii) Determinar un valor de ese intervalo que, usado como valor inicial, asegure la convergencia del
metodo de Newton-Raphson.
iii) Realizar dos iteraciones del metodo de Newton-Raphson (es decir, hallar x2 ), con el valor inicial
del apartado anterior.
2. (0.5 puntos) Hallar el polinomio interpolador de h(x) = x3 + x para el soporte S = {1, 0, 1, 2}.
0

3. (1 punto) Se considera el n
umero z0 = 00 4 e0 1 IR.
i) Dar una aproximaci
on del valor de z0 utilizando un polinomio de Taylor de grado dos adecuado.
ii) Tomando M = 48 en la correspondiente formula del error, calcular el grado n IN mnimo para
poder asegurar que el error cometido con esa aproximacion es menor que 00 0001.
4. (0.5 puntos) Estudiar si las siguientes series numericas son convergentes o divergentes:
i)

X
n!
n
n=1

X
(1)n
ii)
n2
n=1

5. (1 punto) Hallar el campo de convergencia de las siguientes series de potencias:


i)

X
n! xn
.
4n+1
n=0

ii)

X
3n xn
.
n
n=1

Nota: No olvideis estudiar el comportamiento en los posibles extremos del campo de convergencia.
6. (1 punto) Hallar la serie de potencias asociada a la funcion f (x) = ex (x + 1) centrada en el punto
a = 0, y hallar su campo de convergencia.
7. (1.5 puntos) Clasificar los puntos crticos de la funcion f (x, y) = x + y 2 xy 2 .
8. (1 punto) Hallar la derivada direccional de la funcion f (x, y) = cos(xy 2 ) Ln (xy) en el punto (, 1)
seg
un la direcci
on (1, 1).

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

ZONA DE DESCARGA PARA INSTALAR EL SOFTWARE SAGE


Existen muchos servidores con rplicas (mirrors) de la zona principal de descarga de
SAGE
http://www.sagemath.org/download.html
En Espaa tenemos uno de RedIRIS, bastante rpido, desde el que podemos descargar
todo lo necesario segn el tipo de sistema operativo bajo el que vayamos a trabajar. En
algunos casos hay que entrar en el directorio adecuado para las especificaciones de
nuestro sistema operativo.
Zona de descarga para Windows:
http://sunsite.rediris.es/mirror/sagemath/win/index.html
hay una versin nica actualizada; requiere adems instalar previamente
VMwarePlayer, el cual est disponible, gratuitamente, en
https://www.vmware.com/tryvmware/?p=player&lp=default
aunque para su descarga requiere registrarse previamente con una cuenta de correo
electrnico.

Zona de descarga para Linux:


http://sunsite.rediris.es/mirror/sagemath/linux/index.html
hay tres subcarpetas para 32 bits, 64 bits o itanium y diferentes distribuciones (Ubuntu,
Mandriba, Opensuse, Fedora, )
Zona de descarga para Apple Mac OS X:
http://sunsite.rediris.es/mirror/sagemath/osx/index.html
dos subcarpetas para Intel y PowerPC
En todas las subcarpetas existe un fichero README.txt con indicaciones sobre la
instalacin (en ingls). El fichero descargado es autosuficiente para toda la instalacin
de SAGE en todas las distribuciones excepto en sistemas operativos Windows donde es
necesario tener previamente instalado el programa VMware Player.

Miguel Angel Cifredo Campos


macifredo@gmail.com

PRIMEROS PASOS EN LNEA CON SAGE


El propsito de este documento es facilitar una primera visita o toma de contacto con
SAGE, sin necesidad de tener nada instalado en nuestro ordenador, utilizando para ello
el servidor online de su pgina web oficial, accesible en
http://www.sagenb.org/
Una vez que accedamos, nos encontramos con la siguiente pantalla:

Cada alumno crear su propia cuenta de usuario pulsando en Sign up for a new Sage
Notebook account. No se piden datos personales. Una vez creada, es accesible
inmediantamente, sin demoras del servidor para ser dada de alta.
Una vez que accedamos a nuestra cuenta, nos encontramos con la siguiente pantalla de
la interface Sage Noteboock (sta corresponde a mi propia cuenta de usuario que he
llamado ALN1IC3)

Miguel Angel Cifredo Campos


macifredo@gmail.com

Lo primero que haremos es cargar una hoja de trabajo que he preparado a modo de
introduccin. Para ello, pulsamos en Published. Aparece una larga lista de hojas de
trabajo publicadas. Localizaremos la hoja llamada primera toma de contacto y
hacemos clic sobre ella. De esta forma visualizaremos su contenido. Pulsamos sobre
Edit a copy en el margen superior izquierdo del documento. Con ello, hemos cargado
una copia en nuestra cuenta de trabajo. Ahora podremos trabajar con la hoja, siguiendo
las instrucciones de la misma.
Si salimos de la hoja de trabajo, tal como se indica en la misma, o pulsando sobre el
enlace Home del margen superior, saldremos hasta nuestra cuenta de trabajo, que
mostrar ahora el siguiente aspecto:

Miguel Angel Cifredo Campos


macifredo@gmail.com

Donde ya podemos observar que aparece, en la parte inferior, la hoja de trabajo


primera toma de contacto. Podemos volver a entrar en ella, cuando queramos, sin ms
que hacer clic con el ratn sobre su nombre.
Para concluir, explicaremos brevemente los diferentes enlaces, contenidos y opciones
de esa pgina:
En la parte inferior aparece un listado de las distintas hojas de trabajo (worksheets) que
hay disponibles y activas para su uso, junto con alguna informacin adicional como el
propietario (Owner) y la fecha de la ltima vez que se editaron.
Se pueden seleccionar una o varias hojas de trabajo y aplicar una accin con los
botones Arcbive, Delete y Stop.
Archive: se trasladan las hojas de trabajo seleccionadas a otra carpeta denominada
Archived y dejan de estar disponibles para trabajar con ellas.
Delete: se borran las hojas de trabajo seleccionadas, que van a parar a la carpeta Trash.
Stop: detiene la ejecucin de una hoja de trabajo.
Hay por tanto tres carpetas para contener las hojas de trabajo: Active, Archived y
Trash; desde cada carpeta existe la opcin de pasar los documentos a otra carpeta. En
Trash se pueden borrar definitivamente las hojas de trabajo o recuperarlas.
Podemos crear una nueva hoja de trabajo pulsando en New Worksheet y lo primero
que nos pedir ser su nombre.
Podemos cargar (subir) una hoja de trabajo que tengamos guardada en nuestro
ordenador o en una direccin url pulsando en Upload.
Podemos descargarnos todas las hojas activas, que aparecern en un documento
comprimido zip, pulsando en Download All Active.
Se puede realizar una bsqueda por palabras claves en la lista de worksheet que
aparezca en pantalla, mediante el botn Search Worksheets
Otros enlaces
Home: pulsando en cualquier momento volvemos a esta pgina inicial de nuestro rea
de trabajo.
Published: cuando un usuario crea una hoja de trabajo, puede declararla pblica para
que cualquier usuario tenga acceso a una copia de ella. Esta parte ya ha sido visitada
anteriormente, cuando cargamos el fichero de introduccin.
Log: se muestra una pgina de texto en lenguaje html con las ltimas 100 instrucciones
ejecutadas.
Settings: podemos determinar un intervalo de tiempo para que se salven los cambios
automticamente, modificar nuestra contrasea y proporcionar una cuenta de correo
electrnico como medio de contacto con otros usuarios cuando publicamos nuestros
trabajos.
Report a problem: Si detectamos errores de cdigo, bugs o cualquier otro problema,
podemos notificarlo al equipo responsable de la plataforma. Pinchando en este enlace
aparece un formulario para notificar la incidencia, que puede ser annimo.
Sign out: cerramos sesin de usuario y salimos al portal del servidor www.sagenb.org
Help: proporciona acceso rpido a diferente informacin sobre uso de esta interface
(mucho mejor explicado que aqu, claro), documentacin, tutoriales, etc. en ingls.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas
Release 2010/2011

Pablo Angulo Ardoy


Rafael Hernndez Garca

Patricio Cifuentes Muiz


Bernardo Lpez Melero
Daniel Ortega Rodrigo

September 27, 2011

Miguel Angel Cifredo Campos


macifredo@gmail.com

Miguel Angel Cifredo Campos


macifredo@gmail.com

ndice general

1. Laboratorio de Matemticas con Sage


1.1. Introduccin . . . . . . . . . . . .
1.2. Crditos . . . . . . . . . . . . . . .
1.3. Agradecimientos . . . . . . . . . .
1.4. Vdeos didcticos para este material
1.5. Cdigo fuente . . . . . . . . . . .
1.6. Licencia . . . . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

1
1
1
2
2
2
2

2. Bloque I: Introduccin
2.1. Tipos de datos en Sage . . . . . . .
2.2. Ejercicios . . . . . . . . . . . . . .
2.3. Control del flujo del programa . . .
2.4. Ejercicios . . . . . . . . . . . . . .
2.5. Un poco de programacin funcional
2.6. Ejercicios . . . . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

5
5
17
18
27
28
38

3. Bloque II: Eficiencia


3.1. Conjuntos y diccionarios . . . . . . . . . . . .
3.2. Ejercicios . . . . . . . . . . . . . . . . . . . .
3.3. Tiempo de ejecucin y eficiencia de algoritmos
3.4. Ejercicios . . . . . . . . . . . . . . . . . . . .
3.5. Eficiencia en clculo cientfico . . . . . . . . .
3.6. Ejercicios . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

41
41
48
50
59
60
72

4. Bloque III: lgebra


4.1. Aritmtica . . .
4.2. Grupos y Anillos
4.3. Ejercicios . . . .
4.4. lgebra lineal .
4.5. Ejercicios . . . .
4.6. Formas bilineales

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

77
. 77
. 82
. 87
. 89
. 99
. 101

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

5. Bloque IV: Combinatoria


105
5.1. Combinatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

Miguel Angel Cifredo Campos


macifredo@gmail.com

5.2.
5.3.
5.4.
5.5.
5.6.
5.7.

Ejercicios . . . . . . . . . . . . . . .
Contar y enumerar . . . . . . . . . .
Grafos . . . . . . . . . . . . . . . .
Ejercicios . . . . . . . . . . . . . . .
Experimentos con numeros aleatorios
Ejercicios . . . . . . . . . . . . . . .

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

.
.
.
.
.
.

113
115
123
136
138
143

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.

145
145
155
157
172
173
193
194
206

7. Bloque VI: Miscelnea


7.1. Qu es TeX? . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.2. Probabilidad en Sage . . . . . . . . . . . . . . . . . . . . . . .
7.3. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.4. Regresin y ajuste de modelos . . . . . . . . . . . . . . . . . .
7.5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.6. Criptografa RSA . . . . . . . . . . . . . . . . . . . . . . . . .
7.7. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
7.8. Malabares y teoria de grafos . . . . . . . . . . . . . . . . . . .
7.9. Inflar el PageRank controlando los links que salen de tu pgina
7.10. Autmatas celulares . . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

209
209
213
226
228
236
238
246
249
288
292

6. Bloque V: Clculo simblico


6.1. Clculo simblico . . . . . . . . .
6.2. Ejercicios . . . . . . . . . . . . . .
6.3. Clculo diferencial en una variable
6.4. Ejercicios . . . . . . . . . . . . . .
6.5. Clculo vectorial . . . . . . . . . .
6.6. Ejercicios . . . . . . . . . . . . . .
6.7. Curvas planas . . . . . . . . . . . .
6.8. Ejercicios . . . . . . . . . . . . . .

ndice

II

.
.
.
.
.
.
.
.

299

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPTULO 1

Laboratorio de Matemticas con Sage

1.1 Introduccin
Ya empezado el curso 07/08, en el departamento surgi la idea de incorporar a los, por entonces nacientes, estudios
de Grado de Matemticas, un asignatura dedicada a cualificar a nuestros estudiantes con una nueva habilidad: usar el
ordenador para resolver, o al menos ilustrar, los problemas.
La asignatura de laboratorio de matemticas pretende ensear a usar el ordenador como herramienta para aprender y
para experimentar en matemticas. Para ello usamos el programa libre Sage, que permite acceder a una vasta coleccin
de libreras matemticas usando el lenguaje python, una eleccin popular para aprender a programar. La asignatura se
imparte a lo largo de todo un ao, e intenta, an tmidamente, coordinarse con las otras asignaturas del curso para usar
cuando sea posible ejemplos extrados de aquellas.
En la Universidad Autnoma de Madrid, el laboratorio de matemticas se imparte a dos grupos de alumnos muy
distintos: alumnos de primero del grado en matemticas, que en su mayora no saben programar, y alumnos de segundo
del doble grado en matemticas e informtica, que aprendieron a programar en C en primer curso, y que seguirn
aprendiendo mucho ms sobre programacin. Estas notas corresponden al segundo grupo de alumnos, y por ello
contienen temas avanzados relacionados con la programacin que no son en absoluto imprescindibles para el objetivo
de la asignatura.

1.2 Crditos
Pablo Angulo Ardoy
Patricio Cifuentes Muiz
Rafael Hernndez Garca
Bernardo Lpez Melero
Daniel Ortega Rodrigo
Dedicado a los alumnos de doble grado que cursaron laboratorio en el curso 2010/2011.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

1.3 Agradecimientos
Hristo Inouzhe prepar varios vdeos didcticos sobre el material de estas notas (puedes encontrar los links ms
abajo). La Universidad Autnoma de Madrid financi un proyecto de innovacin docente que nos permiti regalar
dvds live con Sage a nuestras alumnas. Luis Guijarro y Mara Calle probaron la parte de clculo II en las clases
de esta asignatura. Pablo Fernndez Gallardo nos prest material y comentarios para las secciones de combinatoria
y probabilidad. La Wikipedia (en ingls) nos ahorr muchas horas de bsqueda bibliogrfica (y nos prest algunas
imgenes).
Y la comunidad de Sage resolvi nuestras dudas y resolvi muy pero que muy rpido algunos problemas que encontramos durante el curso.

1.4 Vdeos didcticos para este material


Optimizacin con cython: el conjunto de Mandelbrot (bloque 2, Eficiencia en clculo cientfico), Pablo Angulo:
parte 1, parte 2
Mtodo de montecarlo vs fuerza bruta (bloque 4, Experimentos con numeros aleatorios), Hristo Inouzhe.
Coloracion y edicion de grafos con SAGE (bloque 4 Grafos), Hristo Inouzhe.
Puntos crticos por el metodo de lagrange (bloque 5 Clculo vectorial), Hristo Inouzhe.
Haz de conicas con SAGE (bloque 5 Curvas planas), Hristo Inouzhe.
Ajuste de Modelos utilizando SAGE (bloque 6, Regresin y ajuste de modelos), Hristo Inouzhe.

1.4.1 Otros vdeos didcticos de Hristo Inouzhe


Invertir una matriz por Gauss-Jordan
Simulacin de los modos de vibracion del CO2

1.5 Cdigo fuente


Este documento ha sido generado a partir de archivos rst (ReStructuredText), que a su vez fueron generados a partir
de archivos sws (hojas de trabajo de Sage). Los mismos archivos rst dieron lugar a documentacin en formatos html y
pdf (via latex).
Tanto los archivos rst como los archivos sws se distribuyen con la misma licencia que este documento. Puedes encontrar
todos esos documentos en la web oficial de la asignatura (a da de hoy, est en el sitio web de Pablo Angulo en la UAM).

1.6 Licencia
Este documento se distribuye con una licencia GFDL , cc-by-sa, a tu eleccin. Tambin se distribuye con la licencia
cc-by-nc usada normalmente en ocw, excepto algunas imgenes extradas de la wikipedia con una licencia incompatible, que se listan ms abajo.
This work is licensed under a GFDL license, or a Creative Commons Attribution-Share Alike 3.0 License, at your
choice. It is also distributed under a cc-by-nc license, more common in ocw, with the exception of a few images taken
from wikipedia, which are listed below.

Captulo 1. Laboratorio de Matemticas con Sage

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

1.6.1 Imgenes prestadas


Sigue una lista de imgenes usadas en las notas y tomadas de la wikipedia. Todas las imgenes se distribuyen con una
licencia compatible con GFDL y cc-by-sa, pero una de ellas no tiene una licencia compatible con cc-by-nc.
Si quieres usar esas imgenes, puedes seguir el link de abajo para leer su licencia.
la tabla hash en b2s1:
Caminos en una malla en Bloque IV: Contar y enumerar
Caminos montonos en Bloque IV: Contar y enumerar

1.6. Licencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Captulo 1. Laboratorio de Matemticas con Sage

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPTULO 2

Bloque I: Introduccin

Se presenta el entorno Sage, los tipos de datos y las estructuras de control de python, poniendo ejemplos con contenido
matemtico siempre que sea posible. En la ltima sesin se presentan formas de trabajar en python que no son posibles
en lenguajes como C.

2.1 Tipos de datos en Sage


2.1.1 Introduccin a Sage
En esta asignatura usaremos el programa Sage para resolver distintos problemas de matemticas con el ordenador. El
programa es libre, lo que nos permite copiarlo, modificarlo y redistribuirlo libremente. Sage consta de un buen nmero
de libreras para ejecutar clculos matemticos y para generar grficas. Para llamar a estas libreras se usa el lenguaje
de programacin python, para el que existen un buen nmero de recursos didcticos disponibles.
Python es un lenguaje de propsito general de muy alto nivel, que permite representar conceptos abstractos de forma
natural y, en general, hacer ms con menos cdigo. Buena parte de las libreras que componen Sage se pueden usar
directamente desde python, sin necesidad de acarrear todo el entorno de Sage.
Existen varias formas de interactuar con Sage: desde la consola, desde ciertos programas como TeXmacs o Cantor, y
desde el navegador de internet, como estamos haciendo ahora. Para ello, Sage crea un servidor web que escucha las
peticiones del cliente (un navegador), realiza los clculos que le pide el cliente, y le devuelve los resultados. En esta
asignatura slo usaremos el interfaz web.
Cuadros de texto
Los cuadros de texto como ste permiten incluir comentarios en una hoja de trabajo. Si haces doble clic sobre el
cuadro de texto puedes editar el contenido. Al entrar en modo de edicin, aparecen botones y desplegables para
cambiar algunos aspectos del estilo del texto. Lo ms importante para mantener un orden en la hoja de trabajo es el
primer desplegable, que permite elegir si se trata de un prrafo, un encabezado.
Cuadros de cdigo
Los cuadros de cdigo son rectangulares y su borde cambia de color al seleccionarlos. Dentro de los cuadros de cdigo
podemos escribir instrucciones que sern ejecutadas al pulsar el botn evaluate o teclear maysculas+Enter.

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Puedes crear un nuevo cuadro de cdigo pulsando sobre la lnea azul que aparece al poner el cursor sobre un cuadro
de cdigo existente, o pulsando control+Enter dentro de un cuadro de cdigo. Puedes crear un nuevo bloque de texto
pulsando sobre la misma lnea azul, pero manteniendo pulsada la tecla de maysculas.
sage: print Hola, Mundo
Hola, Mundo

Si ponemos varias lneas de cdigo, se ejecutan una tras otra de arriba a abajo. El intrprete de instrucciones lee
las instrucciones, las interpreta y ejecuta lo que se le pide. Si al ejecutar las instrucciones se produce una salida, se
muestra debajo del cuadro de cdigo.
sage: #Los comentarios en python comienzan con #
sage: print Hola
#El comando print muestra sus argumentos en la salida del programa
sage: print Mundo
Hola
Mundo

2.1.2 Operaciones
Uso como calculadora
Podemos usar los bloques de comandos como una simple calculadora, escribiendo operaciones elementales y observando el resultado debajo del cuadro. Podemos introducir nmeros con decimales usando el punto decimal. Los
parntesis marcan qu comando se ejecuta antes, naturalmente.
sage: (1*2)+(3*4)+5
19
sage: 1*(2+3)*(4+5)
45
sage: #Un numero racional
sage: 1/2
1/2
sage: #Un nmero de coma flotante
sage: 1+1.0
2.00000000000000

Reglas de precedencia
En ausencia de parntesis, Sage decide qu operaciones se ejecutan antes y cules despus usando unas reglas de
precedencia de operadores bastante estndar. En la siguiente tabla de operadores, cada uno se ejecutar antes que los
que estn por encima.
Los operadores con la misma precedencia se agrupan de izquierda a derecha, excepto la exponenciacin, que agrupa
de derecha a izquierda.
No necesitas conocer todos estos operadores por ahora:

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

operador
or
and
not x
in , not in , is , is not , < , <= , > , >= , <> , != , ==
|
&
+,* , / , / / ,%
+ x , -x , ~ x
^
x [indice] , x [indice: indice] , x (arguments. ..) ,
x.attribute
( expresiones ...) , [expresiones ...] , {clave: dato ...}

Descripcin
O booleano
Y booleano
NO booleano
comparaciones, comprobacin de pertenencia y de tipo
O bit a bit
Y bit a bit
Suma y resta
multiplicacin, divisin, el resto
positivos, negativos, NO bit a bit
exponenciacin
ndices, rebanadas, llamada a funciones, referencia a
atributos
tuplas, listas, diccionarios, evaluacin de expresiones

Ejercicio. Intenta predecir el resultado de ejecutar las instrucciones de debajo antes de pulsar el botn de evaluar.
sage: 2*3^1+1*3^2
sage: 2*3^((1+1)*3)^2
sage: True or True and False
sage: 1==2-1
sage: 2 < 3 and not 1 == 2

Llamadas a funciones
Adems de las operaciones aritmticas, podemos usar las muchas funciones disponibles. La forma de usarlas es escribir
el nombre de la funcin, seguido del argumento, o argumentos, entre parntesis, y separados por comas.
sage: sin(pi/3)
1/2*sqrt(3)
sage: (1 + sin(pi/3))/2
1/4*sqrt(3) + 1/2
sage: max(2,3)
3

2.1.3 Variables
Para guardar un valor dentro de una variable, usamos la sintaxis:
variable = expresion

Por ejemplo,
numero = 1 + 2 + 3 + 4 + 5 + 6
largo = 2.56*20
angulo = pi/3

Para poder ver el valor de una variable podemos usar el comando print :

2.1. Tipos de datos en Sage

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

print numero
print largo, angulo
print largo * sin(angulo)

Una vez definida una variable, podemos hacer clculos con su valor:
masa = 3
aceleracion = 10
fuerza = masa\*aceleracion
print fuerza
sage: numero = 1+2+3+4+5+6
sage: largo = 2.56*20
sage: angulo = pi/3
sage: print numero
sage: print largo, angulo
sage: print largo * sin(angulo)
21
51.2000000000000 1/3*pi
25.6000000000000*sqrt(3)

Nota: no confundas la asignacin ( = ) con el operador de comparacin de igualdad ( == ).


sage: velocidad = 3
sage: velocidad == 3
True

Nota : los nombres de las variables deben empezar por una letra o un guin bajo (_), pueden contener nmeros, y son
distintos si se usan maysculas o minsculas. Las variables numero y Numero son distintas .
sage: print Numero
Traceback (most recent call last):
...
NameError: name Numero is not defined

Liberar una variable


Usando el comando del , podemos liberar una variable, y a partir de ese punto el nombre de la variable deja de estar
definido.
del variable
sage: numero = 12
sage: print 2*numero
24
sage: del numero
sage: print 3*numero
Traceback (most recent call last):
...
NameError: name numero is not defined

Al usar del solamente liberamos la referencia a un dato en la memoria, pero no el dato en s. Otras referencias a ese
dato siguen siendo vlidas, y no se corrompen por el uso de del . Por tanto, esta instruccin no tiene nada que ver
con las reservas de memoria en lenguajes de bajo nivel como C, que reservan y liberan espacio en la memoria.

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Para liberar la memoria no usada, Python usa un colector de basura . Este colector de basura identifica los objetos a
los que no apunta ninguna referencia y los libera.
sage: lista1 = [1,2,3,4]
sage: lista2 = lista1
sage: del lista1
sage: print lista2
[1, 2, 3, 4]

2.1.4 Tipos de datos


En las variables podemos almacenar cualquier tipo de datos que resulte de evaluar una expresin. Ms adelante en el
curso guardaremos en las variables matrices, grficas e incluso objetos abstractos como espacios vectoriales. Por ahora
hemos usado los siguientes tipos de datos:
Booleanos: slo toman el valor True o False .
Enteros: cualquier nmero entero, positivo o negativo, de longitud arbitraria. Ej.: 1, 10, -30
Racionales Ej.: 1/2, -3/4
Nmeros de coma flotante: un nmero con unos cuantos dgitos decimales y un exponente, que representa un
nmero real de forma aproximada. Ej.: 1.25, -1.5e6
Expresiones simblicas:expresiones matemticas que representan nmeros reales de forma exacta. Ej.: pi/4
(/4), (1+sqrt(2))/2 ( 1+2 2 )
Las variables pueden almacenar referencias a datos de cualquier tipo: python usa tipado dinmico . Sin embargo,
todos los datos tienen necesariamente un tipo
sage: 2 >=3
False
sage:
sage:
sage:
sage:

var1=2
var2=3
#La variable es_menor almacena un booleano
es_menor = var1 < var2

sage: print es_menor


True

sage: factorial(1000)
40238726007709377354370243392300398571937486421071463254379991042993851239862902059204420848696940480
sage: numero = factorial(1000)
sage: numero/factorial(1001)
1/1001

Nmeros de coma flotante y expresiones simblicas


Al usar el ordenador para hacer matemticas es importante saber si los datos del ordenador representan los objetos
matemticos de forma exacta.
Es imposible almacenar en un ordenador con una cantidad finita de memoria todas las cifras decimales del nmero
pi . Una alternativa es almacenar slo unas cuantas cifras, y cometer por tanto un pequeo error. Para la mayora de
las aplicaciones es ms que suficiente usar 10 o 20 cifras decimales significativas . Con esto queremos decir que al

2.1. Tipos de datos en Sage

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

escribir el nmero en notacin exponencial, descartamos todas las cifras a partir de la nmero 10 o 20. Por ejemplo,
el nmero 1/ con diez dgitos significativos:
3,183098861 101
y la constante de Planck con seis dgitos significativos:
6, 62606 1034
Al hacer operaciones con nmeros que contienen errores, los errores se suman y multiplican, y pueden acabar estropeando un clculo. Otra alternativa es usar una variable simblica, y usar las reglas aritmticas sin hacer clculos con
decimales, exactamente igual que os contaban en el instituto:

3
2 32
= 21/32+2/3 321 = 21 3 = 3/2
34

Al estar orientado preferentemente al pblico matemtico, Sage prefiere usar expresiones simblicas exactas antes que
aproximaciones numricas. Como vimos antes, para obtener una representacin decimal de una expresin simblica,
podemos usar el comando n() (n de numrico).
sage: 1/pi
1/pi
sage: n(1/pi)
0.318309886183791
sage: a = sqrt(2)
sage: n(a)
1.41421356237310

Mtodos especficos de cada tipo de datos


Cada tipo de datos tiene sus propios mtodos: funciones que se aplican slo a datos de este tipo y que se llaman
escribiendo primero la variable que contiene el dato, despus un punto (.), y despus el mtodo:
variable.metodo()

Por ejemplo, podemos calcular la factorizacin de un nmero entero, pero no de un nmero real, o podramos intentar
simplificar una expresin simblica, pero no podemos simplificar un nmero entero.
sage: a = 12
sage: print a.factor()
2^2 * 3
sage: b = 4.7
sage: print b.integer_part()
4
sage: c = (3*sqrt(6)+sqrt(2))/sqrt(8)
sage: print c.full_simplify()
3/2*sqrt(3) + 1/2

#Factorizacion del entero a

#Parte entera del numero real b

#Intenta simplificar la expresion c

sage: print b.factor()


Traceback (most recent call last):
...
AttributeError: sage.rings.real_mpfr.RealLiteral object has no attribute factor

10

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: print a.full_simplify()


Traceback (most recent call last):
...
AttributeError: sage.rings.integer.Integer object has no attribute full_simplify

[Tabulador]
El tabulador permite conocer la lista completa de mtodos aplicables a un dato:
Escribe el nombre de una variable seguido de un punto, y pulsa [Tabulador] para ver todos los mtodos especficos al tipo de datos de la variable.
Escribe el nombre de una variable seguido de un punto y algunos caracteres, y pulsa [Tabulador] para ver slo
los mtodos que comienzan con esos caracteres.
sage: a.
sage: b.

Nmeros de Sage y de python


Aunque Sage utiliza el lenguaje python, los tipos numricos en Sage no corresponden exactamente a los tipos numricos de python, ya que los nmeros en Sage tienen ms funcionalidad. Por ejemplo, los enteros de Sage permiten
calcular su lista de divisores, su expresin binaria, etctera. Por defecto, los tipos numricos son enteros, racionales y
nmeros reales de Sage, no de python.
sage: a = 12
#Entero de SAGE
sage: #a = Integer(12) #Otra forma equivalente de definir un entero de SAGE
sage: b = int(12)
#Entero de 32 bits de python
sage: print a.divisors(), a.digits(base = 2)
[1, 2, 3, 4, 6, 12] [0, 0, 1, 1]
sage: print b.divisors()
Traceback (most recent call last):
...
AttributeError: int object has no attribute divisors
sage: c = 1.2
sage: c = RealNumber(1.2)
sage: d = float(1.2)

#Real de SAGE (de precision limitada)


#Otra forma equivalente de definir un real de SAGE
#Real de 64 bits de python

sage: d.exact_rational()
Traceback (most recent call last):
...
AttributeError: float object has no attribute exact_rational
sage: c.exact_rational()
5404319552844595/4503599627370496

2.1. Tipos de datos en Sage

11

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

2.1.5 Secuencias de datos


Cadenas de caracteres
Las cadenas de caracteres son secuencias de caracteres (letras, nmeros, puntuacin...) que se manipulan de forma
conjunta y se pueden almacenar en una variable. Para introducir cadenas de caracteres en el cdigo, separamos el
texto entre comillas simples (cadena), comillas dobles (cadena), o triples comillas simples para cadenas ms largas
(cadena larga).
sage: print Hola
Hola

Se pueden usar algunas operaciones con cadenas de caracteres:


La suma (+) de cadenas devuelve una cadena resultado de poner la primera cadena despus de la segunda
El producto (*) de una cadena por un nmero natural repite la cadena tantas veces como indica el nmero.
sage: print Hola + tu
sage: print Hola*2
Holatu
HolaHola
sage:
sage:
sage:
sage:

cadena1
cadena2
cadena3
cadena4

=
=
=
=

Hola
a todas
#presta atencion al espacio en blanco al principio
cadena1 + cadena2
cadena1 + .*3 + cadena2

sage: print cadena1


sage: print cadena2
sage: print cadena3
sage: print cadena4
Hola
a todas
Hola a todas
Hola... a todas

Podemos obtener la longitud de una cadena con el comando len .


sage: print len(cadena1), len(cadena2), len(cadena3), len(cadena4)
4 8 12 15

Extraer caracteres y subcadenas


Para acceder al carcter que ocupa la posicin j-sima en una cadena de caracteres, usamos la notacin
cadena[j]

Ojo! Se empieza a contar desde el nmero 0, el ndice del primer carcter. El ndice del ltimo carcter es L-1, donde
L es la longitud de la cadena.
Tambin podemos acceder a una subcadena (o rango), desde el ndice j (inclusive) hasta el k (exclusive), con la
notacin
cadena[j:k]

Por ejemplo:

12

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

cadena = Si miras al abismo...


print cadena[0], cadena[1], cadena[2], cadena[3]
print cadena[3:8]
sage:
sage:
sage:
S i
miras

cadena = Si miras al abismo...


print cadena[0], cadena[1], cadena[2], cadena[3]
print cadena[3:10]
m
a

Tuplas
Las tuplas contienen unos cuantos elementos no necesariamente del mismo tipo. Basta con poner las variables entre
parntesis separadas por comas para formar una tupla.
tupla = (elemento1, elemento2)
Una vez creada, podemos acceder a sus elementos usando corchetes, igual que hacamos con las cadenas de caracteres.
sage: frutas = (pera,manzana,naranja)
sage: primos = (2,3,5,7,11,13)
sage: print frutas[0]
sage: print primos[0:3]
sage: primo = primos[2]
sage: fruta = frutas[2]
sage: print primo, fruta
pera
(2, 3, 5)
5 naranja

Las operaciones + y * actan sobre tuplas de la misma forma que sobre cadenas de caracteres.
sage: (1,2,a) + (3,4)
(1, 2, a, 3, 4)
sage: (1, a)*3
(1, a, 1, a, 1, a)

Si queremos guardar cada elemento de la tupla en una variable distinta, podemos usar el acceso a los elementos usando
los corchetes:
frutas = (pera,manzana,naranja)
a=frutas[0]
b=frutas[1]
c=frutas[2]

o tambin podemos desempaquetar la tupla con una sla instruccin:


a,b,c = frutas

lo que, al igual que el cdigo anterior, guarda en la variable a el primer elemento de la tupla, en la variable b el
segundo y en la variable c el tercero. Si intentamos desempaquetar una tupla de N elementos con ms, o con menos
de N variables, obtendremos un error.
sage: frutas = (pera,manzana,naranja)
sage: a,b,c = frutas

2.1. Tipos de datos en Sage

13

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: print c + , + b + , + a
naranja,manzana,pera
sage: a,b = frutas
Traceback (most recent call last):
...
ValueError: too many values to unpack
sage: a,b,c,d = frutas
Traceback (most recent call last):
...
ValueError: need more than 3 values to unpack

Las tuplas son immutables , es decir, que no se puede quitar ni aadir elementos a una tupla una vez ha sido creada,
ni siquiera sustituir un elemento por otro.
Listas
Las listas se usan de modo similar a las tuplas, pero se pueden quitar y aadir elementos en cualquier momento.
Decimos que son contenedores dinmicos de datos .
La sintaxis para crear listas es igual a la de las tuplas, pero usando corchetes en vez de parntesis. Una vez creadas,
podemos acceder a sus elementos usando los corchetes, pero adems podemos asignar nuevos valores a posiciones
arbitrarias de la lista.
sage: lista_frutas = [pera,manzana,naranja]
sage: print lista_frutas
sage: lista_frutas[1] = fresa
sage: print lista_frutas
[pera, manzana, naranja]
[pera, fresa, naranja]

Tambin podemos eliminar elementos de la lista con el comando del y aadir elementos al final de la lista con el
comando append .
sage: print lista_frutas[1]
fresa
sage: lista_frutas = [pera,manzana,naranja]
sage: print lista_frutas
sage: lista_frutas.append(fresa)
sage: print lista_frutas
sage: del lista_frutas[1]
sage: print lista_frutas
[pera, manzana, naranja]
[pera, manzana, naranja, fresa]
[pera, naranja, fresa]
sage: print lista_frutas
sage: lista_frutas.insert(2,otra fruta)
sage: print lista_frutas
[pera, naranja, fresa]
[pera, naranja, otra fruta, fresa]

El comando srange permite crear listas de nmeros de SAGE (en python se usa la funcin range , que devuelve
enteros de python):

14

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

srange(j,k,d) : devuelve los nmeros entre j (inclusive) y k (exclusive), pero contando de d en d elementos. A pesar de que el uso ms extendido es con nmeros enteros, los nmeros j, k y d pueden ser enteros o
no.
Abreviaturas:
srange(k) : devuelve srange(0,k,1). Si, en particular, k es un natural, devuelve los naturales entre 0
(inclusive) y k (exclusive); y si k es negativo, devuelve una lista vaca.
srange(j,k) : devuelve la lista srange(j,k,1). Si, en particular, j y k son enteros, devuelve los enteros
entre j (inclusive) hasta el anterior a k.

sage: print srange(10)


sage: print srange(10,20)
sage: print srange(10,20,2)
sage: print srange(10,20,1.5)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[10, 12, 14, 16, 18]
[10.0000000000000, 11.5000000000000, 13.0000000000000, 14.5000000000000, 16.0000000000000, 17.5000000

Pertenencia
En cualquiera de las estructuras anteriores, podemos comprobar si un elemento est en la lista usando el operador in
, que devuelve True o False segn el elemento pertenezca o no al contenedor de datos.
sage: 10 in [1,2,3,4]
False
sage: n in En un lugar de la Mancha
True
sage: 133 in srange(0,1000,7)
True

Conversiones entre secuencias


Las conversiones tupla -> lista, cadena -> lista, lista->tupla y cadena->tupla son triviales, usando las funciones tuple
y list :
sage: tupla_0 = (1,2,3)
sage: lista_0 = [a,b,c]
sage: cadena_0 = qwerty
sage: tuple(cadena_0)
(q, w, e, r, t, y)
sage: list(tupla_0)
[1, 2, 3]

Sin embargo, aunque existe la funcin str , el resultado no es el que deseamos normalmente:
sage: str(lista_0)
"[a, b, c]"
sage: str(tupla_0)
(1, 2, 3)

2.1. Tipos de datos en Sage

15

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

La funcin str intenta dar una representacin textual lo ms fidedigna posible del objeto que pasamos como argumento.
La situacin siguiente es ms usual: tenemos una lista de cadenas de caracteres, y queremos unir esas cadenas, opcionalmente usando otra cadena como separador. Para ello usamos el mtodo join , que tienen todas las cadenas de
caracteres.
sage: , .join(lista_0)
a, b, c
sage: .join(lista_0)
abc

2.1.6 Mostrar informacin por pantalla


Para poder ver en pantalla los valores de las variables, hemos usado el comando print .
print var1
print var1, var2, ...

De esta forma podemos mostrar los valores de las variables. Tambin podemos escribir texto que contenga los valores
de estas variables usando el operador % y los cdigos de formato. Para usarlo, escribimos una cadena que contiene
cdigos de formato seguida del operador % y a continuacin la variable que queremos sustituir, o una tupla de variables
si hay ms de una.
lados = 8
print El nmero de lados es %d %lados
area = 17.5
print El rea es %f %area
print El rea del polgono de %d lados es %f %(lados, area)
nombre = Juan
print %s vino ayer a cenar %nombre

Los cdigos ms usuales son:


%d : nmero entero
%f : nmero de coma flotante, con decimales
%.3f : nmero de coma flotante, con 3 decimales exactamente
%s : cadena de caracteres (o cualquier dato que no sea entero ni de coma flotante)
sage: lados = 8
sage: print El nmero de lados es %d %lados
sage: area = 17.5
sage: print El rea es %.3f %area
sage: print El rea del polgono de %d lados es %f %(lados, area)
sage: nombre = Juan
sage: print %s vino ayer a cenar %nombre
El nmero de lados es 8
El rea es 17.500
El rea del polgono de 8 lados es 17.500000
Juan vino ayer a cenar

16

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

2.2 Ejercicios
2.2.1 1.
Guarda en variables el nmero de trminos de una progresin aritmtica, el primer elemento y el paso. Escribe cdigo
que devuelva la suma de todos los trminos, usando una frmula. Usa los cdigos de formato para escribir el resultado.
Nota: haz las asignaciones de variables en un cuadro de cdigo y los clculos en otro.
sage: primero=1
sage: paso=2
sage: nterminos=4

2.2.2 2.
Usando la frmula para el rea de un polgono regular
A=

P a
2

donde A es el area, P el permetro y a la apotema, escribe un cdigo que calcule el rea y el permetro de un polgono
regular usando los valores de dos variables: lados (nmero de lados) y longitud (longitud del lado).
Usa los cdigos de formato para escribir el resultado con cuatro dgitos significativos.
Indicacin: deduce o busca en internet una frmula para obtener la apotema en funcin de los datos conocidos.
sage: lados = 10
sage: longitud= 2

2.2.3 3. Explorando Sage


Sage contiene funcionalidad para trabajar en una gran cantidad de reas de las matemticas. Las formas principales de
descubrir funcionalidad son:
1. Leer la ayuda, haciendo click en el link help en la cabecera de la pgina.
2. Escribir parte de una funcin o un mtodo, y pulsar el tabulador para ver los comandos que comienzan con los caracteres introducidos.
3. Escribir el nombre de una funcin o de un mtodo seguido de un carcter de interrogacin para leer
la ayuda contextual.
Usando el mtodo 2, busca una funcin que acepta un nmero y devuelve un booleano: True si el
nmero es un cuadrado perfecto (en ingls a square number ), y False si no lo es (pista: su nombre
comienza por is_ , pues se trata de una comprobacin). Usa el mtodo 3 para comprobar que tu
suposicin es correcta.
Busca otra funcin que devuelva True si el nmero es la potencia de un nmero primo (en ingls,
the power of a prime number ), y False si no lo es.
Busca un mtodo que tienen los nmeros racionales, que devuelva el denominador.
Busca un mtodo que tienen las cadenas de caracteres, que cuente el nmero de apariciones de un
carcter. Usa ese mtodo para contar el nmero de letras a en esta frase.

2.2. Ejercicios

17

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Hemos visto en clase que las listas tienen un mtodo append que permite aadir un elemento a la
lista. Busca un mtodo que tienen las listas que permite aadir todos los elementos de una segunda
lista.
sage: is_prime?
<html>...</html>

2.2.4 4. Ordena los caracteres de una cadena de caracteres


Dada una cadena de caracteres, produce otra resultado de ordenar los caracteres de la primera. No debes alterar el
nmero de caracteres. Ejemplo:
En un lugar de cuyo nombre no quiero acordarme

\->

Eaaabccddeeeegilmmnnnnoooooqrrrrruuuu

Pista: las cadenas de caracteres no tienen un mtodo para ordenarlas, pero las listas s la tienen.

2.2.5 5.
Debajo de este texto puedes ver dos cuadros de texto. Tu objetivo es escribir texto formateado con el operador %, de
tal forma que si ejecutas el primer bloque, el texto que aparezca en pantalla sea:
El nmero 10 es par
El lado mide 15.100
Juan tiene 10 manzanas

mientras que si ejecutas el segundo bloque, dando valores distintos a las variables, el resultado sea:
El nmero 7 es par
El lado mide 1250000.000
Alejandro tiene 7 manzanas
sage: nombre=Juan
sage: numero=10
sage: longitud=15.1
sage: nombre=Alejandro
sage: numero=7
sage: longitud=1.25e6

2.3 Control del flujo del programa


2.3.1 Alternativas y bucles
Alternativas lgicas
La sintaxis de los bloques if..elif..else en python:
if condicion1:
bloque de instrucciones 1
elif condicion2:
bloque de instrucciones 2
...
else:
bloque de instrucciones final

18

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

es bastante diferente de la otros lenguajes como C, pero la esencia es la misma: Si la primera condicin es cierta, se
ejecuta el primer bloque de instrucciones y se abandona el bloque de instrucciones. Si es falsa, el primer bloque de
instrucciones no se ejecuta , y se pasa a evaluar la segunda condicin. Si es cierta, se ejecuta el segundo bloque de
instrucciones y se abandona el bloque if...else . Finalmente, si todas las condiciones son falsas, se ejecuta el bloque de
instrucciones final, que va precedido de la palabra clave else .
La indentacin marca el principio y el final de cada bloque . Es decir, las lneas de los bloques de instrucciones
comienzan con cuatro espacios. Despus del bloque if...else, el programa puede tener ms lneas, que no estarn
indentadas.
Al final de cada condicin if, elif o else, escribimos dos puntos ( : ).
Tanto las instrucciones elif como la instruccin else son opcionales.
sage: numero = 6
sage: if numero %2==0:
...
print %d es par %numero
6 es par
sage: numero = 6
sage: if numero %2==0:
...
print %d es par %numero
sage: else:
...
print %d es impar %numero
6 es par

Observa en este ejemplo el papel de la indentacin para marcar el principio y final de cada bloque:

sage: numero=-10
sage: if numero>0:
...
print La raiz de %f es %f %(numero,numero^0.5)
sage: else:
...
print La raiz de %f es %f *i %(numero,(-numero)^0.5)
sage: print El cuadrado de %f es %f %(numero, numero^2)
#Esta instruccin no forma parte del blo
La raiz de -10.000000 es 3.162278*i
El cuadrado de -10.000000 es 100.000000

La condicin puede ser cualquier expresin que al evaluar devuelva un booleano, y no se pueden hacer asignaciones
. Tambin se puede poner un nmero como condicin (de cualquier tipo de datos), en cuyo caso 0 se interpreta como
False , y cualquier otra cosa como True, o un contenedor (lista, tupla, cadena...), en cuyo caso un contenedor vaco se
interpreta como False , y cualquier otra cosa como True.
sage: ls = [a]
sage: #ls = []
sage: if ls:
...
print la lista no est vaca
la lista no est vaca

Bucle for
Utilizando la instruccin for podemos repetir una misma instruccin sobre cada elemento de una lista.
for elemento in lista:
instrucciones

El bloque de instrucciones se ejecutar una vez por cada elemento de la lista. La variable elemento tomar sucesivamente el valor de cada elemento de la lista. A cada ejecucin del bloque de instrucciones lo llamamos una iteracin .
Veamos algunos ejemplos:

2.3. Control del flujo del programa

19

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
...
sage:
120

suma = 0
numeros = [1, 1, 3, 7, 13, 21, 31, 43]
for k in numeros:
suma = suma + k
print suma

sage: lista_frutas = [pera,manzana,naranja]


sage: print Por qu letra empieza cada fruta?
sage: for palabra in lista_frutas:
...
primera_letra = palabra[0]
...
print %s empieza por %s %(palabra, primera_letra)
sage: print eso es todo! gracias por su atencin
Por qu letra empieza cada fruta?
pera empieza por p
manzana empieza por m
naranja empieza por n
eso es todo! gracias por su atencin

Bucles while
Un bucle while repite un bloque de instrucciones mientras se satisfaga una condicin.
while condicion:
instrucciones

En el ejemplo de debajo, la variable i vale 0 antes de entrar en el bucle while. Despus, el valor de i aumenta en una
unidad en cada iteracin del bucle. Al cabo de 10 iteraciones, el valor de i es 10, y se abandona el bucle porque la
condicin i < 10 ya no se verifica.
sage: i = 0
sage: while i<10:
...
i = i + 1
sage: print i
10

Si accidentalmente escribes un bucle infinito o simplemente quieres detener el clculo antes de que termine, puedes
usar la accin interrupt , que est en el men desplegable Action , al principio de la hoja de trabajo. Observa cmo al
evaluar el cdigo de abajo, aparece una lnea verde debajo y a la izquierda del bloque de cdigo. Esta lnea indica que
se est ejecutando el cdigo, y que todava no ha concludo. Al ejecutar interrupt , el cmputo se cancela, y la lnea
verde desaparece.

sage: x=0 #El valor de x no cambia al iterar


sage: while x<100:
...
x = x*1.5
sage: print x
^CTraceback (most recent call last):
File "<stdin>", line 1, in <module>
File "_sage_input_11.py", line 10, in <module>
exec compile(uopen("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_
File "", line 1, in <module>

File "/tmp/tmp0Fuz2Y/___code___.py", line 5, in <module>


x = x*_sage_const_1p5
File "/home/sageadm/sage-4.4.1-linux-64bit-ubuntu_9.10-x86_64-Linux/local/lib/python2.6/site-packag
raise KeyboardInterrupt
KeyboardInterrupt
__SAGE__

20

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

2.3.2 Bloques anidados


Podemos anidar bloques if...else, for y while de cualquier forma posible, cuidando de que la indentacin marque el
principio y el final de cada bloque.
Por ejemplo, calculamos la suma de los inversos de los primos menores que k, usando un acumulador:

X
p<k,p primo

1
p

sage: k=100
sage: suma = 0
sage: for j in range(k):
...
if is_prime(j):
...
suma += 1/j
sage: print La suma de los inversos de los primos menores que %d es %.3f %(k, suma)
La suma de los inversos de los primos menores que 100 es 1.803

En el siguiente ejemplo, tenemos dos bloques for, uno dentro de otro. Observamos que nada impide que el bucle
interior haga un nmero distinto de iteraciones cada vez.
sage:
...
...
...
0
0 1
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2
0 1 2

for j in srange(10):
for k in srange(j):
print k,
print

3
3
3
3
3
3

4
4
4
4
4

5
5 6
5 6 7
5 6 7 8

Tablas de verdad
Para obtener la tabla de verdad de una frmula lgica, evaluamos la frmula en cada posible combinacin de valores
para p, q y r. Por ejemplo, la tabla de verdad de la frmula:
e (p q) (p r)

es:
p=True, q=True, r=True => e=True
p=True, q=True, r=False => e=True
p=True, q=False, r=True => e=False
p=True, q=False, r=False => e=True
p=False, q=True, r=True => e=False

2.3. Control del flujo del programa

21

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

p=False, q=True, r=False => e=False


p=False, q=False, r=True => e=False
p=False, q=False, r=False => e=False

Ejemplo : genera todas las combinaciones de valores para p, q y r anidando tres bucles for .
sage: for p in [True, False]:
...
for q in [True, False]:
...
for r in [True, False]:
...
#Utilizamos el codigo %s para valores booleanos,
...
#el mismo que usamos para cadenas de caracteres
...
e = (p and q) or (p and not r)
...
print p= %s, q= %s, r= %s => e= %s %(p,q,r,e)
p=True, q=True, r=True => e=True
p=True, q=True, r=False => e=True
p=True, q=False, r=True => e=False
p=True, q=False, r=False => e=True
p=False, q=True, r=True => e=False
p=False, q=True, r=False => e=False
p=False, q=False, r=True => e=False
p=False, q=False, r=False => e=False

Buscar un nmero con ciertas propiedades


En el siguiente ejemplo, buscamos un nmero N primo relativo a un nmero k dado y tal que k/3 N 2k/3.
Cualquier nmero con esa propiedad nos vale. Podemos empezar por k/3 y seguir hacia delante, o generar nmeros
aleatorios. Esta tcnica es bastante general y se puede usar en problemas de los que sabemos poco. Sin embargo, podra
llevar mucho tiempo a la computadora si los nmeros que buscamos son raros o, peor, si no hay ninguno.
En primer lugar, usamos un bucle for para iterar sobre todos los posibles casos, pero salimos del bucle usando la
instruccin break cuando encontramos un nmero que satisface la condicin.
sage:
sage:
sage:
sage:
sage:
sage:
...
...
...
sage:
67

#Buscamos un numero que sea primo relativo a k


#y que est entre k/3 y 2*k/3
k=196
tercio = ceil(k/3)
dostercios = floor(2*k/3)
for x in range(tercio, dostercios):
if gcd(x, k) == 1:
#Si x es primo relativo a k,
#salimos del bucle for
break
#gcd es el maximo comun divisor
print x

A continuacin, resolvemos el mismo problema probando con nmeros aleatorios.


sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
...
sage:
110

22

#Buscamos un numero que sea primo relativo a k y que est entre k/3 y 2*k/3
#Ahora usamos numeros aleatorios
k=169
tercio = ceil(k/3)
dostercios = floor(2*k/3)
#randint(tercio, dostercios) devuelve un numero aleatorio
# entre tercio y dostercios
x=randint(tercio, dostercios)
while gcd(x, k) != 1:
x = randint(tercio, dostercios)
print x

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

2.3.3 Definicin de funciones


Hemos usado ya unas cuantas funciones definidas en Sage. Ahora aprenderemos a definir nuestras propias funciones.
La sintaxis para definir una funcin en python es:
def funcion(argumento1, argumento2, ...):
instrucciones

De nuevo, las instrucciones que componen el cuerpo de la funcin estn indentadas (comienzan con cuatro espacios),
y la primera lnea sin indentar marca el final de la declaracin de la funcin.
Por ejemplo, una funcin que acepta un nmero como argumento, y escribe por pantalla alguna informacin sobre el
nmero.
sage: def informacion(numero):
...
print Informacin sobre %d %numero
...
if is_prime(numero):
...
print
es primo
...
if numero %2==0:
...
print
es par
...
if is_power_of_two(numero):
...
print
es potencia de dos

Para llamar a la funcin, escribimos su nombre con los argumentos entre parntesis.
sage: informacion(2)
Informacin sobre 2
es primo
es par
es potencia de dos

Las funciones tienen la posibilidad de devolver un valor , usando la palabra clave return . El valor devuelto por la
funcin puede ser almacenado en una variable, o usado para hacer clculos, exactamente igual que para las funciones
definidas en Sage.
sage: def radio(x,y):
...
return sqrt(x^2 + y^2)
sage: print radio(1,2)
sqrt(5)
sage: r1 = radio(1,1)
sage: r2 = radio(5,0)
sage: print r2-r1
-sqrt(2) + 5

Observa que cuando se ejecuta una instruccin return, se devuelve el valor correspondiente, y no se ejecuta ninguna
otra instruccin de la funcin . Observa la siguiente variante de nuestra primera funcin.
sage: def informacion_bis(numero):
...
if is_prime(numero):
...
return %d es primo %numero
...
if numero %2==0:
...
return %d es par %numero
...
if is_power_of_two(numero):
...
return %d es potencia de dos %numero
sage: info = informacion_bis(2)
sage: print info
2 es primo

2.3. Control del flujo del programa

23

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Sin embargo, no podemos recoger el valor de una llamada a informacion :


sage: info = informacion(2)
sage: print info
Informacin sobre 2
es primo
es par
es potencia de dos
None

Documentacin
Es una buena prctica documentar el cdigo. Unas semanas despus de escribir el cdigo, no es tan fcil recordar qu
haca. Aparte de escribir comentarios cuando lo creas conveniente comenzando con el carcter # , las declaraciones de
funciones tienen una descripcin ( docstring ), que muchos programas utilizan para mostrar informacin de la funcin
en momentos apropiados. El lugar donde colocar la doctring es justo debajo de la definicin de la funcin, y tambin
indentado respecto de la funcin. La docstring es slo una cadena de caracteres , y por tanto se puede separar entre
comillas simples (cadena), comillas dobles (cadena), o triples comillas simples para cadenas ms largas (cadena
larga).
def funcion(argumento1, argumento2, ...):
docstring

instrucciones

Vamos a definir de nuevo las dos funciones anteriores colocando en su sitio las docstring de las funciones.
sage: def informacion(numero):
...
Imprime en pantalla alguna informacion sobre un numero
...
...
Imprime una linea que dice si es primo, otra que dice si
...
es par...
...

...
print Informacin sobre %d %numero
...
if is_prime(numero):
...
print
es primo
...
if numero %2==0:
...
print
es par
...
...
#is_power_of_two devuelve True si el numero es
...
#potencia de dos
...
if is_power_of_two(numero):
...
print
es potencia de dos
...
sage: def radio(x,y):
...
Devuelve la coordenada radial del punto con coordenadas cartesianas dadas
...
...
Tiene dos argumentos
...

...
return (x^2 + y^2)^.5

Una manera inmediata de acceder a las docstring de todas las funciones, incluso si no las hemos definido nosotras, es
escribir en un cuadro de cdigo el nombre de la funcin seguido de una interrogacin.
sage: informacion?
<html>...</html>

24

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: radio?
<html>...</html>
sage: sin?
<html>...</html>
sage: is_prime?
<html>...</html>
sage: factorial?
<html>...</html>

Cundo usar una funcin?


Como regla general, siempre que, resolviendo un problema, podamos identificar una subtarea claramente delimitada,
debemos escribirla como funcin. Una tarea est bien delimitada cuando podemos describir a otra persona cules son
los datos de entrada (un nmero entero, dos nmeros reales, una cadena de caracteres y dos nmeros naturales ...),
cules son los datos de salida, y qu tiene que hacer la funcin, sin necesidad de explicarle cmo lo hemos hecho.
Veamos un ejemplo. Escribimos antes un cdigo que calculaba la suma de los inversos de los primos menores que k.
Identificamos una tarea bien delimitada: una funcin que recibe un nmero k y devuelve la suma de los inversos de
los primos que son menores que k. Escribimos ahora una funcin que realiza esta tarea usando el cdigo de la sesin
anterior: nos limitamos a copiar el cdigo que usamos antes, y lo colocamos dentro del cuerpo de una funcin.
sage: def sumaprimos(k):
...
Suma los inversos de los primos menores que un numero dado
...

...
suma = 0
...
for j in srange(k):
...
if is_prime(j):
...
suma = suma + 1/j
...
return suma
sage: print La suma de los inversos de los primos menores que 100 es %f %sumaprimos(100)
La suma de los inversos de los primos menores que 100 es 1.802817

Al conjunto formado por el nombre de la funcion, la descripcin de los datos de entrada y la descripcin de los datos
de salida, se le llama la signatura de la funcin. Al cdigo concreto que hemos escrito para realizar la tarea, se le
llama la implementacin . Distintas implementaciones de la misma tarea pueden conseguir el mismo resultado. Si no
se cambia la signatura, es posible cambiar la implementacin de la funcin sin necesidad de cambiar el cdigo que
usa la funcin.
Nos damos cuenta ahora de que hay una funcin, prime_range , que devuelve directamente una lista de nmeros
primos. Podemos utilizar esta funcin para mejorar la implementacin de sumaprimos .
sage: prime_range?
<html>...</html>
sage: def sumaprimos(k):
...
Suma los inversos de los primos menores que un numero dado
...
...
Esta version de sumaprimos usa prime_range
...

...
suma = 0
...
for j in prime_range(k):
...
suma = suma + 1/j
...
return suma

2.3. Control del flujo del programa

25

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Aunque hemos cambiado la implementacin, la signatura es la misma, y podemos llamar a sumaprimos de la misma
forma que antes.
sage: print La suma de los primos menores que 100 es %f %sumaprimos(100)
La suma de los primos menores que 100 es 1.802817

Tratar con argumentos errneos


El lenguaje python tiene una forma muy sofisticada de tratar con los errores en tiempo de ejecucin. Si algn fragmento
de cdigo produce un error, lanza una excepcin . Por ejemplo, si una funcin espera datos de cierto tipo y recibe
datos de otro tipo distinto, lanza un TypeError , o si realiza una divisin por cero lanza un ZeroDivisionError .
sage: range(a)
Traceback (most recent call last):
...
TypeError: range() integer end argument expected, got str.
sage: def funcion(a):
...
return 1/a
sage: funcion(0)
Traceback (most recent call last):
...
ZeroDivisionError: Rational division by zero

Los errores se propagan desde la lnea que produjo el error a travs de la pila de ejecucin.
sage: def otra_funcion(a,b):
...
return a + funcion(b)
sage: otra_funcion(1,0)
Traceback (most recent call last):
...
ZeroDivisionError: Rational division by zero

Es importante leer las descripciones de los errores por si nos dan una pista de cul puede ser el problema con una
funcin que no arroja un error.
Aunque no profundizaremos en el sistema de excepciones de python, si en algn momento sentimos la necesidad de
asegurarnos de que los datos de entrada de nuestras funciones verifican ciertas restricciones, utilizaremos la sintaxis
raise Exception .
Por ejemplo, si en la siguiente implementacin de la funcin factorial recibimos un nmero negativo corremos el
riesgo de entrar en un bucle infinito:
sage: def factorial(n):
...
acumulador = 1
...
k = n
...
while k!=0:
...
acumulador *= k
...
k -= 1
...
return acumulador

Para evitar esto, comprobamos que el nmero sea positivo y, de otro modo, lanzamos una excepcin genrica junto
con un mensaje de error:
sage: def factorial(n):
...
if n <= 0:
...
raise Exception, El argumento de factorial debe ser positivo

26

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
...
...
...
...
...

acumulador = 1
k = n
while k!=0:
acumulador *= k
k -= 1
return acumulador

sage: factorial(-3)
Traceback (most recent call last):
...
Exception: El argumento de factorial debe ser positivo

2.4 Ejercicios
2.4.1 1.
Guarda en variables los coeficientes de polinomio de segundo orden. Escribe un cdigo que muestra por pantalla
informacin sobre las races del polinomio (tiene dos races distintas, una doble, o ninguna).

2.4.2 2.
Para la lista de nmeros de abajo:
1. Escribe un bucle for que escriba el resto de dividir cada uno de ellos por 5
2. Escribe un bloque for con un bloque if anidado que escriba slo los mltiplos de 3.
3. Escribe un bloque for con otro bloque for anidado que, para cada uno de esos nmeros, escriba, en una misma
lnea, todos sus divisores (es decir, no uses el mtodo divisors ).
sage: numeros = [1, 3, 7, 13, 21, 31, 43, 57, 73, 91]

2.4.3 3.
Escribe un bucle while que sume los inversos de los nmeros naturales 1/k hasta que la suma sea mayor que 10.
Escribe el nmero k en el que la suma se detiene.

2.4.4 4. Algoritmo de Hern


En este ejercicio, utilizamos un algoritmo que aproxima la raz cuadrada de un nmero real positivo a . El algoritmo
es iterativo: comienza con una aproximacin burda:
t0 = a

y despus en cada iteracin del algoritmo sustituimos t por otra aproximacin mejor:
a
1
t+
t =
2
t
Este algoritmo para calcular races cuadradas era conocido por los babilonios, y a veces se le llama algoritmo de Hern
. La sucesin tn converge a la raiz de a.
2.4. Ejercicios

27

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Escribe una funcin


que acepte dos argumentos: un nmero real a y un error mximo , y devuelva una aproximacin b al nmero a con error menor que el error mximo :
|b2 a| < 

2.4.5 5.
Busca un nmero natural k tal que |sin(k)| > 1 . No pruebes valores de demasiado pequeos: algo as como 0.01
es razonable. Para valores ms pequeos, k puede ser muy grande.

2.4.6 6.
Definimos una secuencia de nmeros por la siguiente regla: el nmero siguiente a n es n/2 si n es par, y 3n+1 si n es
impar.
Escribe una funcin que acepte como argumento un nmero k , y escriba por pantalla todos los nmeros de la
secuencia comenzando por k hasta y parando cuando se alcance por primera vez el nmero 1.
Escribe una funcin que acepte como argumento un nmero k , y devuelva el nmero de veces que se ha iterado
la regla anterior hasta llegar a 1 partiendo de k.
Aprovecha la funcin del apartado anterior para encontrar un nmero tal que la secuencia tarde al menos 50
pasos en alcanzar 1.
Nota: Se ha conjeturado, pero no se ha demostrado todava, que la secuencia siempre alcanza 1 eventualmente:
http://es.wikipedia.org/wiki/Conjetura_de_Collatz
http://xkcd.com/710/

2.5 Un poco de programacin funcional


2.5.1 Funciones recursivas
Una funcin recursiva es aquella que contiene en el bloque de instrucciones que la definen una llamada a la propia
funcin. En matemticas tambin se usan definiciones recursivas y, tanto en un caso como en otro, hay que tener
cuidado para estar seguro de que la definicin es consistente:
1. La funcin debe poder calcularse directamente en uno o ms de los posibles casos de uso. Estos casos se llaman
casos base.
2. La llamada a la funcin con unos argumentos que no son casos base debe depender del valor de la funcin en
otros argumentos distintos, que deben estar ms cercanos a los casos base en algn sentido. Esta regla no es muy
precisa, pero no se puede dar una receta general, como veremos.
Como ejemplo, escribimos una implementacin recursiva de la funcin factorial, que se basa en la definicin recursiva:
0! = 1

n! = n (n 1)! si n > 0

28

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: def factorial_rec(n):


...
Devuelve el factorial de un numero, usando llamadas recursivas
...

...
if n == 0:
...
return 1
...
else:
...
return n*factorial_rec(n-1)
sage: var = factorial_rec(1)

Como vemos, la implementacin recursiva es una traslacin bastante literal de la definicin matemtica del factorial.
Recursin infinita
Al igual que un bucle while mal diseado puede repetirse infinitamente, una funcin recursiva mal diseada puede
repetirse indefinidamente.
sage: def fun_rec_inf(n):
...
Funcion recursiva desastrosa
...

...
return n+fun_rec_inf(n-1) #Nos hemos olvidado el caso base
sage: fun_rec_inf(10)
WARNING: Output truncated!
<html>...</html>
RuntimeError: maximum recursion depth exceeded

En realidad la ejecucin se detiene sola sin necesidad de que interrumpamos el clculo. En python , el lenguaje que
usa Sage, hay un lmite a la cantidad de veces que una funcin recursiva puede llamarse a s misma (en general est
fijado en 1000 llamadas recursivas).

2.5.2 Funciones de primera clase


En python, las funciones son ciudadanos de primera clase, lo que significa que podemos guardar funciones en variables
normales, guardarlas en listas, pasarlas como argumentos a otras funciones, etctera.
sage: funcion = factorial
sage: funcion(4)
24
sage: funciones = [is_prime, is_prime_power, is_power_of_two, is_square]
sage: k = 5
sage: for f in funciones:
...
print f(k)
True
True
False
False

Poder pasar funciones como argumentos a otras funciones permite abstraer algunos patrones usuales, y escribir cdigo
genrico que realiza las operaciones para funciones arbitrarias. De este modo la reutilizacin de cdigo aumenta
sensiblemente.
Como ejemplo, escribimos una funcin genrica que, partiendo de un valor inicial, itera una condicin hasta que una
cierta propiedad se verifique:

2.5. Un poco de programacin funcional

29

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: def itera_hasta(f, p, ini):


...
Itera la funcion f, comenzando por el valor inicial ini,
...
hasta que se verifique la condicion p
...
...
Devuelve el elemento final de la iteracion
...

...
t = ini
...
while not p(t):
...
t = f(t)
...
return t

Usando esta funcin genrica, podemos calcular raices cuadradas con el algoritmo de Hern:
sage: a = 2.0
sage: epsilon = 1e-5
sage: def f(t):
...
return (1/2)*( t + a/t)
...
sage: def p(t):
...
return abs(t^2 - a) < epsilon
...
sage: print itera_hasta(f, p, 2)
1.41421568627451

Pero tambin podemos aproximar ceros de funciones usando el mtodo de biseccin...


sage: a = 0.0
sage: b = 1.0
sage: def f(t):
...
return t^3 + t - 1
sage: epsilon = 1e-5
sage: valor_inicial = (a,b)
sage: def siguiente(t):
...
x0, x1 = t
...
x_medio = (x0 + x1)/2
...
if f(x0)*f(x_medio)<0:
...
return (x0, x_medio)
...
else:
...
return (x_medio, x1)
...
sage: def p(t):
...
x0, x1 = t
...
return abs(f(x0)) + abs(f(x1)) < epsilon
...
sage: print itera_hasta(siguiente, p, valor_inicial)
(0.682327270507812, 0.682331085205078)

El siguiente ejemplo es un clsico: tomamos una lista y la reducimos usando una funcin que toma dos elementos
y devuelve uno (como por ejemplo, la suma) . Para ello, aplicamos la funcion entre cada dos elementos de la lista. El
primer ejemplo con + no funciona, lo ponemos slo a modo de ejemplo.
lista
:
[ x1,
reduce(+, lista) :
x1 +
reduce(f, lista) : f(f(f(f(x1,

x2,
x2 +
x2),

x3,
x3 +
x3),

x4,
x4 +
x4),

x5 ]
x5
x5)

sage: def reducir(operacion, lista):


...
acumulador = lista[0]
...
for elemento in lista[1:]:
...
acumulador = operacion(acumulador, elemento)

30

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...

return acumulador

sage: def concatena_dos_listas(x,y):


...
return x+y
sage: reducir(concatena_dos_listas, [range(2),range(7),range(3)])
[0, 1, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2]

Comentario
En este caso, el patrn es tan comn que python ya tiene su propia funcin reduce , similar a la que hemos definido
nosotras.
sage: reduce?
<html>...</html>

2.5.3 Secuencias de datos y flujos de datos


A continuacin aprenderemos otro estilo de programacin en el que visualizamos series de datos (por ejemplo, nmeros) pasando por cajas que los transforman, los filtran o los acumulan de modo que podamos realizar el clculo
deseado partiendo de series de datos conocidas.

2.5.4 Transformar y filtrar listas


En python existe una sintaxis especial para generar nuevas listas a partir de otras, aplicando una transformacin a cada
elemento, y seleccionando aquellos elementos que verifican una propiedad.
Transformar los elementos de una lista
La instruccin
[f(x) for x in lista_original]

genera una nueva lista, cuyos elementos son el resultado de ejecutar la funcin f sobre cada elemento de la
lista_original .
sage: lista_original = range(10)
sage: print lista_original
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sage: [x^2 for x in lista_original]
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

2.5. Un poco de programacin funcional

31

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: [exp(-x)+1 for x in lista_original]


[2, e^(-1) + 1, e^(-2) + 1, e^(-3) + 1, e^(-4) + 1, e^(-5) + 1, e^(-6) + 1, e^(-7) + 1, e^(-8) + 1, e

Podemos transformar una lista con datos de un tipo cualquiera (enteros, booleanos, tuplas, cadenas de caracteres) en
una lista con datos de cualquier otro tipo.
sage: print lista_original
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
sage: [is_prime(x) for x in lista_original]
[False, False, True, True, False, True, False, True, False, False]

sage: [(sin(x*2*pi/8), cos(x*2*pi/8)) for x in srange(8)]


[(0, 1), (1/2*sqrt(2), 1/2*sqrt(2)), (1, 0), (1/2*sqrt(2), -1/2*sqrt(2)), (0, -1), (-1/2*sqrt(2), -1/

sage: palabras=[En, un, lugar, de, la, Mancha, de, cuyo, nombre, no, quiero, a
sage: [len(palabra) for palabra in palabras]
[2, 2, 5, 2, 2, 6, 2, 4, 6, 2, 6, 9]
sage: [palabra.upper() for palabra in palabras] #El metodo upper() pasa una cadena a mayusculas
[EN, UN, LUGAR, DE, LA, MANCHA, DE, CUYO, NOMBRE, NO, QUIERO, ACORDARME]

Filtrar una lista


Con la instruccin
[x for x in lista if condicion(x)]

podemos seleccionar slo aquellos elementos de la lista que verifican una condicin. La condicin es cualquier expresin o cualquier funcin que, para un valor x cualquiera, devuelva un valor booleano ( True o False ).
sage: [x for x in lista_original if is_prime(x)]
[2, 3, 5, 7]
sage: [x^2 for x in lista_original if x %2==1]
[1, 9, 25, 49, 81]
sage: [palabra for palabra in palabras if len(palabra)==2]
[En, un, de, la, de, no]

Todo a la vez
Tambin podemos combinar ambas tcnicas, o incluso recorrer todas las combinaciones de elementos de dos listas
distintas:
[funcion(x) for x in lista if condicion(x)]
[funcion(x,y) for x in lista1 for y in lista2]
...

sage: #Todas las sumas de dos numeros menores que k


sage: k = 10
sage: numeros = range(k)
sage: sumas = [x + y for x in numeros for y in numeros]
sage: print sumas
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 3, 4, 5

32

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Pero lo mejor es encadenar varias de estas transformaciones:


sage: k = 10
sage: #Todos los numeros primos menores que k
sage: primos = [x for x in range(k) if is_prime(x)]
sage: #Todas las sumas de dos numeros primos menores que k
sage: sumas_primos = [x + y for x in primos for y in primos]
sage: #Aquellas sumas de dos numeros primos menores que k que son cuadrados perfectos
sage: cuadrados = [x for x in sumas_primos if is_square(x)]
sage: cuadrados
[4, 9, 9]

2.5.5 Funciones que trabajan sobre listas


Las siguientes funciones encapsulan las tareas ms usuales que realizamos con listas:
len(lista) : devuelve la longitud de la lista
max(lista) : devuelve el mximo de la lista
min(lista) : devuelve el mnimo de la lista
sum(lista) : devuelve la suma de los elementos de la lista
all(lista) : si lista est compuesta de booleanos, devuelve True si todos son ciertos, y False en otro caso.
any(lista) : si lista est compuesta de booleanos, devuelve True si alguno es cierto, y False en otro caso.
sage:
sage:
sage:
sage:
sage:
sage:
4
4
1
10
False
True

print
print
print
print
print
print

len([2,4,1,3])
max([2,4,1,3])
min([2,4,1,3])
sum([2,4,1,3])
all([True, False, False])
any([True, False, False])

sage: k = 86
sage: divisores = k.divisors()
sage: print divisores
sage: print sum(divisores)
sage: print max(divisores)
[1, 2, 43, 86]
132
86

#lista con los divisores de k


#La suma de los divisores de k
#El mayor divisor de k

Combinadas con las dos tcnicas de arriba, estas funciones permiten resolver problemas no triviales:
sage: k = 86
sage: divisores = k.divisors()
sage: #El mayor divisor de k (sin contar a k)
sage: print max([j for j in divisores if j<k])
43

2.5. Un poco de programacin funcional

33

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #Son primos todos los divisores de k?


sage: print all([is_prime(j) for j in divisores])
False
sage: #Son primos todos los divisores de k (sin contar 1 ni k)?
sage: print all([is_prime(j) for j in divisores if 1<j<k])
True

Ejercicio. Responde a las siguientes preguntas con las tcnicas usadas en esta sesin:
Cuntos divisores de k=21000 son cuadrados perfectos?
Hay algn nmero k entre 20 y 100 tal que 2^k +1 es primo?
Encuentra el tercer cuadrado perfecto n=k^2 tal que n+1 es primo.
Ejercicio : Escribe otra implementacin de la funcin sumaprimos de la sesin anterior usando estas ideas.

2.5.6 Evaluacin perezosa


Quiz a estas alturas te hayas dado cuenta de que usar este enfoque indiscriminadamente puede llevar a realizar una
cantidad de clculos desproporcionada y a usar una gran cantidad de memoria, an cuando el problema no lo necesita.
Por ejemplo, para calcular el segundo primo entre 10000 y 100000 podemos hacer:
ls = srange(10000,100000)
primos = [t for t in ls if is_prime(t) ]
print primos[1]

pero esto nos obliga a guardar en memoria todos los nmeros naturales entre 10000 y 100000, y despus a calcular si
cada uno es primo, slo para quedarnos con el segundo.
sage: %time
sage: ls = srange(10000,100000)
sage: primos = [t for t in ls if is_prime(t) ]
sage: print primos[2]
10037
CPU time: 0.39 s, Wall time: 0.39 s

Sin embargo, es posible mantener esta sintaxis sin hacer clculos innecesarios. Para ello, usamos generadores , objetos
que generan los elementos de la lista uno por uno, segn se vayan solicitando desde otras partes del programa. A esta
tcnica se le denomina evaluacin perezosa , porque no se hacen clculos hasta que no son necesarios.
Por ejemplo, la funcin xsrange es la versin perezosa de srange (con la misma sintaxis). Mientras que
srange(100) inmediatamente calcula los enteros menores que 100 y los guarda en una lista, xsrange(100)
devuelve un generador, que no calcula los nmeros en ese momento:

sage: srange(100)
[0, 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
sage: xsrange(100)
<generator object generic_xsrange at 0x5dacf50>

Una vez creado el generador, podemos pedir los nmeros uno por uno, usando el mtodo next() , o recorrerlos
todos, usando un bucle for igual que si fuera una lista:
sage: xlista = xsrange(100)
sage: print xlista.next()
sage: print xlista.next()
0
1

34

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: acumulador = 0
sage: for j in xsrange(101):
...
acumulador += j
sage: print acumulador
5050

Podemos escribir nuestros propios generadores usando una notacin similar a la de transformaciones de listas, slo
que poniendo parntesis alrededor de nuestra expresin en vez de corchetes:
generador = (expresion for x in secuencia if condicion)
sage: genera_cuadrados = (x^2 for x in xsrange(10))
sage: for c in genera_cuadrados:
...
print c
0
1
4
9
16
25
36
49
64
81

Ahora podemos modificar el programa original para calcular el segundo primo entre 10000 y 100000, usando una
cantidad de memoria y cpu equivalente a un programa tradicional:
sage: %time
sage: ls = xrange(10000,100000)
sage: primos = (t for t in ls if is_prime(t) )
sage: primos.next()
sage: print primos.next()
10009
CPU time: 0.01 s, Wall time: 0.01 s
sage: %time
sage: contador = 2
sage: for j in xsrange(10000,100000):
...
if is_prime(j):
...
contador -= 1
...
if contador == 0:
...
break
sage: print j
10009
CPU time: 0.00 s, Wall time: 0.00 s

Sigamos la ejecucin del programa paso a paso:


ls = xrange(10000,100000)
primos = (t for t in ls if is_prime(t) )

con estas dos lneas, definimos dos generadores, pero no se realiza ningn clculo.
primos.next()

al llamar al mtodo next , ponemos a trabajar al generador primos , que debe rodar hasta devolver un nmero primo.
Para ello, prueba los nmeros de la lista ls uno por uno. Cuando encuentra uno que pasa el filtro is_prime(t) , lo
devuelve. En la primera llamada a next , primos devuelve el nmero 10007, el primer primo mayor que 10000.

2.5. Un poco de programacin funcional

35

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

print primos.next()

pedimos otro nmero ms a primos , que pide a su vez nmeros al generador ls continuando donde lo dej. Recorre
primero el nmero 10008 e inmediatemente despus encuentra 10009, que es primo. El programa concluye.

2.5.7 Todo a la vez


Por supuesto, es interesante combinar los generadores con el enfoque de flujos que tratamos hoy. Consideremos por
ejemplo la pregunta:
Hay algn nmero k entre 1000 y 10000 tal que 2*k +1 es primo?
Para comprobar la pregunta, podemos comprobar si el nmero 2*k+1 es primo para cada valor de k. Por supuesto, en
cuanto encontremos un valor de k para el que 2*k+1 es primo podemos parar, y responder a la pregunta con un s .
Un enfoque tradicional se aprovecha de esta propiedad:
hay_alguno = False
for k in srange(1000,10000):
if is_prime(2*k+1):
hay_alguno = True
break
print hay_alguno

mientras que si transformamos listas de forma naive, tendremos que comprobar si todos los nmeros son primos:
any([is_prime(2*k+1) for k in srange(1000,10000)])

Pero basta usar un generador para volver a conseguir un programa eficiente:


any(is_prime(2*k+1) for k in xsrange(1000,10000))

Observa que, como el generador ya estaba entre parentsis, no necesitamos poner dobles parntesis.
sage: %time
sage: hay_alguno = False
sage: for k in srange(1000,10000):
...
if is_prime(2*k+1):
...
hay_alguno = True
...
break
sage: print hay_alguno
True
CPU time: 0.01 s, Wall time: 0.00 s
sage: %time
sage: any([is_prime(2*k+1) for k in srange(1000,10000)])
True
CPU time: 0.05 s, Wall time: 0.05 s
sage: %time
sage: any(is_prime(2*k+1) for k in srange(1000,10000))
True
CPU time: 0.01 s, Wall time: 0.00 s
sage: %time
sage: any(is_prime(2*k+1) for k in xsrange(1000,10000))
True
CPU time: 0.00 s, Wall time: 0.00 s

36

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

2.5.8 Generadores de ms de una lnea (opcional)


Escribir generadores en una lnea a veces es poco prctico. Ms importante es que en los generadores de una lnea no
se guarda ninguna variable de estado entre cada par de iteraciones. Por ejemplo, podemos calcular los distintos bits de
un nmero entero usando la frmula para el bit j-simo: divide por 2j y toma el resto de dividir por 2:
sage: def bit_j_esimo(a, j):
...
return (a//2^j) %2
...

# a//b calcula el cociente de la divisin entera


#de dividir a entre b

sage: a = 19
sage: print list( bit_j_esimo(a,j) for j in range(0, int(log(a)/log(2)) + 1) )
sage: print sum( bit_j_esimo(a,j) for j in range(0, int(log(a)/log(2)) + 1) )
[1, 1, 0, 0, 1]
3

Sin embargo, es ms claro calcular los bits uno por uno haciendo una divisin por dos cada vez. La sintaxis para los
generadores es la misma que para funciones, slo que usando la instruccin
yield x

para devolver un valor. El objeto creado no es una funcin, sino un generador, que devuelve potencialmente varios
valores, segn los soliciten al generador. Cada vez que pedimos un elemento nuevo al generador, el flujo del programa
avanza dentro del cdigo de la funcin hasta que se encuentra con un yield, y entonces devuelve ese valor y se queda
congelado hasta que le vuelvan a pedir otro valor:
def bits(a):
while a:
yield a %2
a = a//2

Ms informacin sobre generadores:


http://en.wikipedia.org/wiki/Generator_%28computer_science%29#Python
http://www.python.org/dev/peps/pep-0255/
sage: def bits(a):
...
while a:
...
yield a %2
...
a = a//2
sage: list(bits(19))
[1, 1, 0, 0, 1]
sage:
sage:
sage:
sage:
1
1
0

g = bits(123)
print g.next()
print g.next()
print g.next()

sage: g = bits(2)
sage: print g.next()
sage: print g.next()
sage: print g.next()
0
1
Traceback (most recent call last):

2.5. Un poco de programacin funcional

37

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
StopIteration

2.6 Ejercicios
2.6.1 1
Escribe una funcin recursiva que calcule la suma de los nmeros menores o iguales que un cierto nmero n (es decir,
1+2+...+n). Si llamamos sn a la suma de los naturales menores que n, usa la regla de induccin:
(
n + sn1 n 1
sn =
0
n=0

2.6.2 2.
Escribe una funcin recursiva que calcule la suma de las cifras decimales del nmero que se le pasa como argumento.
Pista: si llamamos s(n) a la suma de las cifras de n , usa la regla de induccin:
(
"ultima cifra" + s("todas las cifras menos la ltima") n 1
s(n) =
0
n=0

2.6.3 3.
La exponenciacin tiene una definicin recursiva fcil de trasladar al ordenador:
x0 = 1

xn = x xn1 si n > 0

Escribe una funcin recursiva que calcule la potencia con un exponente entero y positivo.

2.6.4 4.
Usa la funcin reduce para escribir una funcin que multiplica los elementos de una lista.

2.6.5 5.
Escribe una funcin que acepta dos argumentos, ambos listas, y devuelve una tercera lista con los elementos
comunes a las dos listas que se pasaron como argumentos (es decir, la interseccin).
Usa la funcin reduce para escribir una funcin que acepta como nico argumento una lista cuyos elementos
son a su vez listas, y devuelve otra lista con la interseccin de todas ellas.
38

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

2.6.6 6.
Nota : Para este ejercicio y los que siguen, intenta usar las tcnicas de transformar y filtrar listas aprendidas en
la hoja del bloque I sesin III.
A partir de la lista de nmeros de abajo:
1. Consigue otra que contenga el resultado de evaluar la funcin x ex
2. Consigue otra que contenga el resto de dividir cada uno de ellos por 5
3. Consigue otra que contenga, en vez de cada nmero, una tupla con los restos de dividir el numero por 2, 3 y 5.
4. Consigue otra que contenga, en vez de cada nmero, una cadena de caracteres con tantos asteriscos como indica
el nmero.
5. Consigue otra que contenga slo aquellos que son mltiplos de 3
6. Consigue otra que contenga slo aquellos que son mltiplos de 3 de 5
sage: numeros = [1, 3, 7, 9, 11, 13, 18, 19, 21, 30, 31, 35]

2.6.7 7.
A partir de la lista de palabras de debajo:
1. Consigue otra que contenga las mismas palabras, pero con cada palabra seguida de puntos suspensivos
2. Consigue otra que contenga cada palabra repetida dos veces
3. Consigue otra que contenga slo las palabras de dos letras
4. Consigue otra que contenga la primera letra de cada palabra

sage: palabras=[En, un, lugar, de, la, Mancha, de, cuyo, nombre, no, quiero, a

2.6.8 8.
Escribe cdigo que genere una lista cuyos elementos son cadenas de caracteres:
Dado un entero k, la lista contiene k cadenas, que dicen j elefantes se balanceaban, para cada j que va desde 1
hasta k. Por ejemplo, para k = 5:

[1 elefantes se balanceaban, 2 elefantes se balanceaban, 3 elefantes se balanceaban, 4 elefant

2.6.9 9.
Dado un entero k, la lista contiene k cadenas, que dicen j botellas contra la pared, para cada j que disminuye
desde k hasta 1. Por ejemplo, para k = 5:

[5 botellas contra la pared, 4 botellas contra la pared, 3 botellas contra la pared, 2 botella

2.6.10 10.
Escribe cdigo que responda a las siguientes preguntas:
Son todos los nmeros de la lista de abajo primos?

2.6. Ejercicios

39

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Alguno es primo?
Para cada nmero k de la lista de abajo, k^2+2 es primo?
La suma de los nmeros de abajo, es un nmero primo?
Cul es el mayor nmero k de la lista de abajo tal que 2*k+1 es primo?
sage: numeros = [33, 39, 45, 57, 81, 99, 105, 111, 117]

2.6.11 11.
Ejercicio opcional (leer slo si has seguido la seccin opcional de la hoja b1s3).
Para generar los nmeros de Fibonacci, tendramos que escribir algo as como:
g = (fibonacci(k) for k in range(K))

Como el clculo del k-simo nmero de Fibonacci requiere ms clculos cuanto mayor es k (dependiendo de cmo
hagamos los clculos), esta opcin es poco eficiente.
Escribe un generador (de ms de una lnea) que devuelva los nmeros de Fibonacci de uno en uno, pero aprovechando
los clculos realizados para calcular el nmero anterior.

40

Captulo 2. Bloque I: Introduccin

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPTULO 3

Bloque II: Eficiencia

Se presentan dos estructuras de datos nuevas: conjuntos y diccionarios. Se resuelven algunos problemas de contenido
matemtico y se explica la complejidad de las operaciones ms usuales en python. Se presenta la filosofa consistente
en primero escribir cdigo claro y despus optimizar slo si es necesario y slo las partes crticas. Para ello se presentan
dos herramientas muy prcticas incorporadas en Sage: un profiler, para encontrar las partes del cdigo que consumen
ms tiempo de ejecucin, y cython, una herramienta que a menudo permite acelerar sensiblemente los clculos sin
perder ni tiempo ni claridad en el cdigo.

3.1 Conjuntos y diccionarios


3.1.1 Tipos de datos mutables e inmutables
Como vimos, cualquier dato en SAGE tiene un tipo de datos . Los datos de ciertos tipos pueden ser modificados
despus de ser creados, mientras que otros no. En concreto, no es posible modificar los nmeros (enteros o de coma
flotante), los booleanos o las cadenas de caracteres, aunque podemos crear otros nmeros nuevos a partir de los
existentes. Las tuplas tambin son inmutables si los elementos que las componen lo son.
Las listas, sin embargo, son mutables, porque podemos aadir o borrar elementos, y modificar sus elementos.
La distincin es importante: ninguna instruccin, ninguna llamada a una funcin o un mtodo puede modificar un dato
inmutable, mientras que s pueden modificar un dato mutable (por ejemplo, pueden aadir o quitar elementos de una
lista, darle la vuelta u ordenar sus elementos).
sage: #Los elementos de una tupla no se pueden cambiar
sage: #y las tuplas no tienen metodos que permitan aadir
sage: #o quitar elementos
sage: tt = (1,2,3)
sage: tt[0] = 4
Traceback (most recent call last):
...
TypeError: tuple object does not support item assignment
sage: tt.append(4)
Traceback (most recent call last):
...
AttributeError: tuple object has no attribute append

41

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #la suma de tuplas da lugar a una tupla distinta de


sage: #las anteriores, pero deja las tuplas sumadas intactas
sage: tt2 = tt + (1,2)
sage: print tt
(1, 2, 3)
sage: def escribe_al_reves(ls):
...
Escribe los elementos de una lista en orden inverso
...
...
Aviso: altera la lista que se pasa como argumento
...

...
ls.reverse()
...
for k in ls:
...
print k
sage: #Una llamada a una funcion puede modificar un dato mutable
sage: lista = [1,2,3,4,5]
sage: print lista
sage: escribe_al_reves(lista)
sage: print lista
[1, 2, 3, 4, 5]
5
4
3
2
1
[5, 4, 3, 2, 1]

3.1.2 Conjuntos
El conjunto ( set ) es una estructura de datos que permite almacenar datos sin repeticiones.
Las diferencias con una lista son:
Los elementos de un conjunto no se guardan ordenados y no se puede acceder a ellos con un ndice.
En un conjunto no hay elementos repetidos. Si aadimos un elemento que ya estaba en el conjunto, el conjunto
se queda como estaba.
Los elementos de un conjunto tienen que ser datos inmutables . Los tipos de datos inmutables tienen un nmero
hash que es la base del funcionamiento de los conjuntos.
Podemos crear un conjunto vaco usando el comando
conjunto = set()

o crearlo con los elementos de una lista u otro contenedor de datos:


conjunto = set(contenedor)

Una vez creado, podemos aadir un elemento:


conjunto.add(elemento)

o aadir todos los elementos de otro contenedor:


conjunto.update(contenedor)

o borrar elementos:

42

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

conjunto.remove(elemento)

o comprobar si un valor pertenece al conjunto:


elemento in conjunto

A partir de ah, tenemos a nuestra disposicin las siguientes operaciones:


Unin:
conjunto1 | conjunto2

Interseccin:
conjunto1 & conjunto2

Diferencia:
conjunto1 - conjunto2
sage:
sage:
sage:
sage:
sage:

conjunto1 = set([])
conjunto1.add(1)
conjunto1.update([1,2,6,7])
conjunto1.remove(7)
conjunto2 = set([1,2,3,4,1])

sage: #Observamos que el segundo conjunto tiene 4 elementos


sage: #aunque la lista original tuviera 5
sage: print len(conjunto1), len(conjunto2)
3 4
sage: conjunto1 | conjunto2
set([1, 2, 3, 4, 6])
sage: conjunto1 & conjunto2
set([1, 2])
sage: conjunto1 - conjunto2
set([6])
sage: conjunto2 - conjunto1
set([3, 4])
sage: 6 in conjunto2 - conjunto1
False
sage: 7 in conjunto2 - conjunto1
False

No podemos aadir a un conjunto un elemento mutable, como una lista o un conjunto:


sage: conjunto1.add([1,2])
Traceback (most recent call last):
...
TypeError: unhashable type: list
sage: conjunto1.add(conjunto2)
Traceback (most recent call last):
...
TypeError: unhashable type: set

3.1. Conjuntos y diccionarios

43

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Tambin podemos comprobar si un conjunto es un subconjunto de otro:


conjunto1 <= conjunto2
sage: conjunto1 <= conjunto1 | conjunto2
True

Los elementos del conjunto no estn ordenados, de modo que no tiene sentido extraer el elemento i-simo de la lista:
sage: conjunto1[2]
Traceback (most recent call last):
...
TypeError: set object does not support indexing

Sin embargo, podemos iterar los elementos del conjunto, aunque no podemos predecir el orden en que aparecern:
for elemento in conjunto:
operaciones...
sage: conjunto3 = set((ab,a,b))
sage: print Elementos del conjunto: ,
sage: for numero in conjunto3:
...
print numero,
Elementos del conjunto: a ab b

Ejemplo: conjunto de sumas


Queremos calcular cuntos nmeros distintos obtenemos al hacer todas las posibles sumas a+b , donde a y b pertenecen a una lista de nmeros. Es fcil almacenar las posibles sumas en una lista, pero entonces estaramos contando
algunos nmeros varias veces:
sumas = []
for k in lista:
for j in lista:
sumas.append(k+j)

Al usar un conjunto, cada posible suma queda en el conjunto final una sola vez .
sage: def sumas(ls):
...
Devuelve la cantidad de sumas distintas que se pueden obtener
...
sumando dos elementos de una lista
...

...
sumas_posibles = set()
...
for a in ls:
...
for b in ls:
...
sumas_posibles.add(a+b)
...
return len(sumas_posibles)
sage: print sumas([1,2,3,4])
sage: print sumas([1,3,5,7])
sage: print sumas([1,2,4,8])
7
7
10

Usar un conjunto para eliminar elementos repetidos de una lista


De hecho, usar un conjunto es una forma sencilla de eliminar repeticiones en una lista de elementos:
44

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: lista = [3, 3, 2, 1, 1, 6, 1, 2, 3, 3, 7, 3, 7]


sage: conjunto = set(lista)
sage: lista_sin_repeticiones = list(conjunto)
sage: print lista_sin_repeticiones
[1, 2, 3, 6, 7]

3.1.3 Diccionarios
Un diccionario es una coleccin de pares clave-valor. Si una lista es una coleccin de objetos indexada por nmeros
enteros consecutivos, un diccionario permite como clave cualquier tipo de datos inmutable, y los valores pueden ser
totalmente arbitrarios.
Los diccionarios ( dict ) tienen una sintaxis especial en python usando las llaves {}.
diccionario = {clave1: valor1, clave2:valor2 ...}

Una vez definido el diccionario, podemos incluir nuevos elementos, borrar y modificar elementos existentes con una
sintaxis similar a la que usamos con listas:
diccionario[clave]=valor
del diccionario[otra_clave]
sage: #Asociamos a unas palabras su numero de vocales
sage: diccionario = {cabeza:3, nariz:2, mano:4}
sage: print diccionario
sage: #corregimos un error
sage: diccionario[mano]=2
sage: #incluimos un nuevo elemento
sage: diccionario[pie]=2
sage: print diccionario
sage: #Eliminamos un elemento
sage: del diccionario[nariz]
sage: print diccionario
{mano: 4, cabeza: 3, nariz: 2}
{mano: 2, pie: 2, cabeza: 3, nariz: 2}
{mano: 2, pie: 2, cabeza: 3}

Si necesitamos slo las claves, o los valores podemos usar los mtodos:
diccionario.keys()
diccionario.values()
sage: print diccionario.keys()
sage: print diccionario.values()
[mano, pie, cabeza]
[2, 2, 3]

El operador in comprueba si un objeto es una clave del diccionario, pero no si es uno de los valores.
sage: print mano in diccionario
sage: print nariz in diccionario
sage: print 2 in diccionario
True
False
False

3.1. Conjuntos y diccionarios

45

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Para recorrer los elementos del diccionario, podemos usar un bucle for, que recorre las claves del diccionario, sin
seguir ningn orden en particular:
for clave in diccionario:
instrucciones...
sage: for palabra in diccionario:
...
print La palabra %s tiene %d vocales %(palabra,diccionario[palabra])
La palabra mano tiene 2 vocales
La palabra pie tiene 2 vocales
La palabra cabeza tiene 3 vocales

Ejemplo: mnimo comn mltiplo


A modo de ejemplo, calculamos el mnimo comn mltiplo de una lista de nmeros usando su factorizacin: el mnimo
comn mltiplo es el producto de todos los primos que aparecen en cualquiera de los nmeros de la lista con el mayor
de los exponentes.
sage: def mcm(ls):
...
#Primera parte: recopilar los factores
...
factores = {}
...
for numero in ls:
...
for par in list(factor(numero)):
...
primo, exponente = par
...
if primo not in factores:
...
factores[primo] = exponente
...
else:
...
factores[primo] = max(factores[primo], exponente)
...
#Segunda parte: multiplicarlos
...
resultado = 1
...
for primo in factores:
...
resultado = resultado*primo^factores[primo]
...
return resultado
sage: #Comparamos con lcm (least common multiple) de SAGE:
sage: print mcm([12,15,15,18])
sage: print lcm([12,15,15,18])
180
180

Construir diccionarios a partir de listas


Podemos construir un diccionario a partir de una lista de tuplas usando el constructor de diccionarios dict . Cada
tupla de la lista se incluir en el diccionario como un par (clave, valor).
sage: lista = [(a,1), (b,2), (c,3)]
sage: diccionario = dict(lista)

Si tenemos una lista con las claves y otra con los valores (ambas de igual longitud), podemos construir una lista de
tuplas que podemos pasar al constructor dict usando la funcin zip especialmente diseada para ese propsito:
sage:
sage:
sage:
sage:
sage:

46

lista1 = [(2,3),(2,4),(2,5),(3,4),(3,5),(4,5)]
lista2 = [6, 8, 10, 12, 15, 20]
print lista1
print lista2
lista12 = zip(lista1, lista2)

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: print lista12


sage: diccionario = dict(lista12)
sage: print diccionario
[(2, 3), (2, 4), (2, 5), (3, 4), (3, 5), (4, 5)]
[6, 8, 10, 12, 15, 20]
[((2, 3), 6), ((2, 4), 8), ((2, 5), 10), ((3, 4), 12), ((3, 5), 15), ((4, 5), 20)]
{(4, 5): 20, (2, 3): 6, (2, 5): 10, (3, 4): 12, (2, 4): 8, (3, 5): 15}

3.1.4 Como funcionan los conjuntos y los diccionarios


Hash
Los objetos inmutables tienen un hash: un nmero entero que representa al objeto, de modo que dos objetos distintos
tengan distintos hash, al menos con probabilidad alta.
sage: print hash(0)
sage: print hash(1)
sage: print hash(2)
0
1
2
sage: print hash(a)
sage: print hash(b)
sage: print hash(ab)
12416037344
12544037731
12416074593111939
sage: print hash((0,0))
sage: print hash((0,1))
sage: print hash((0,2))
sage: print hash((1,0))
3713080549408328131
3713080549409410656
3713080549410493181
3713081631936575706
sage: print hash(ab)
sage: print hash((0,2))
12416074593111939
3713080549410493181

Por supuesto que puede haber dos datos distintos con el mismo hash, pero es muy improbable. Exceptuando a los
nmeros enteros, el hash tiene una apariencia bastante aleatoria.
sage: print hash(1107710717)
sage: print hash((0,2))
sage: #Aunque tengan el mismo hash, los datos siguen siendo distintos
sage: 1107710717 == (0,2)
1107710717
3713080549410493181
False

Las listas son mutables, y no tienen hash.

3.1. Conjuntos y diccionarios

47

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: print hash([1,])


Traceback (most recent call last):
...
TypeError: unhashable type: list

Tabla hash
http://es.wikipedia.org/wiki/Tabla_hash

Los conjuntos y los diccionarios se basan en una tabla de hash , una lista en la que guardamos los elementos usando
su hash (o ms bien parte del hash) como ndice, en vez de insertarlos por orden de llegada.
En python, el ndice usado para indexar un elemento en una tabla de tamao 2k son los k ltimos bits del hash del
elemento. Naturalmente, es posible que dos elementos distintos tengan nmeros hash cuyos k ltimos bits coincidan.
Cuando introducimos dos elementos en la tabla a los que corresponde el mismo ndice, decimos que ha ocurrido una
colisin . Sin entrar en detalles sobre cmo se gestionan las colisiones, digamos que cuantas menos colisiones ocurran
mejor . Un buen algoritmo de hash tiene dos propiedades bsicas: tarda poco tiempo, y produce pocas colisiones.

3.2 Ejercicios
3.2.1 1.
Dada una lista de nmeros enteros, construye un conjunto con los factores primos de todos los nmeros de la lista.
Indicacin: Usa list(k.factor()) para obtener los factores primos.

3.2.2 2. Histograma
Almacena en un diccionario los pares letra:frecuencia resultantes de hacer el anlisis de frecuencias de una cadena de
texto:

48

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

3.2.3 3. Frecuencias de palabras


El mtodo split permite descomponer una cadena de caracteres en palabras:

cadena = El metodo split permite descomponer una cadena de caracteres usando un caracter como separa
cadena.split()
[El, metodo, split, permite, descomponer, una, cadena,
de, caracteres, usando, un, caracter, como, separador.]

Crea una funcin que acepte como argumento una cadena de caracteres, y devuelva un diccionario cuyas claves
sean las palabras de la cadena, y los valores sean las frecuencias de aparicin de cada palabra.
Aprovecha el resultado de la funcin anterior para seleccionar las palabras que aparecen ms de 3 veces.

sage: cadena = Los pitnidos o pitones (Pythonidae) son una familia de serpientes constrictoras. O

3.2.4 4. Conjuntos y el problema de Collatz.


La sucesin de Collatz, o del 3*n+1, que ya vimos, consiste en aplicar sucesivamente la siguiente regla:
Si un nmero es par, el siguiente nmero de la secuencia es n/2.
Si es impar, el siguiente nmero de la secuencia es 3n+1.
Se conjetura que una sucesin de Collatz siempre alcanza 1, independientemente del nmero en que comienza. El
codigo siguiente comprueba que las sucesiones que comienzan con cualquier nmero menor que M alcanzan 1 de una
forma poco eficiente:
sage:
sage:
sage:
...
...
...
...
...
...
sage:
sage:

%time
M = 500
for k in range(2,M):
j = k
while j!=1:
if j %2==0:
j = j/2
else:
j = 3*j + 1
#Si el calculo ha terminado, es que hemos verificado la conjetura
print Verificada la conjetura para k<= %d %M

Con el mtodo anterior, calculamos la sucesin de Collatz completa partiendo de cada nmero, a pesar de que a
menudo la sucesin partiendo de un nmero j engancha con la sucesin partiendo de un nmero anterior. Por
ejemplo, la sucesin partiendo de 19 alcanza 11 despus de 6 iteraciones, y a partir de all obviamente coincide con la
sucesin partiendo de 11, que ya sabamos que acaba en 1. 11 : 34 17 52 26 13 40 20 10 5 16 8 4 2 1
19 : 58 29 88 44 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1
Es fcil hacer una pequea mejora al programa: en vez de dar la comprobacin por buena cuando alcanzamos 1,
terminamos en cuanto alcanzamos un nmero menor que el nmero con el que comenzamos:
sage: %time
sage: M = 500
sage: for k in range(2,M):
...
j = k
...
while j>=k:
...
if j %2==0:
...
j = j/2
...
else:
...
j = 3*j + 1

3.2. Ejercicios

49

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #Si el calculo ha terminado, es que hemos verificado la conjetura


sage: print Verificada la conjetura para k<= %d %M

An podemos hacer una mejora ms. Observa las sucesiones que comienzan por 27 y 47:
27 : 82 41 124 62 31 94 47 142 71 214 107 322 161 484 242 121 364 182 91
274 137 412 206 103 310 155 466 233 700 350 175 526 263 790 395 1186 593
1780 890 445 1336 668 334 167 502 251 754 377 1132 566 283 850 425 1276
638 319 958 479 1438 719 2158 1079 3238 1619 4858 2429 7288 3644 1822
911 2734 1367 4102 2051 6154 3077 9232 4616 2308 1154 577 ...
47: 142 71 214 107 322 161
Observamos que el 47 ya apareci en la secuencia del 27, y por lo tanto ya no tenemos que hacer ms cuentas para
verificar el nmero 47. Sin embargo, el programa anterior perdi esta oportunidad de ahorrar tiempo.
Despus de tanto prembulo, tu objetivo es :
Calcular la sucesin de Collatz comenzando por 2,3,... hasta M.
Almacenar en un conjunto los valores de la sucesin que vas encontrando.
Si en algn momento de tu camino encuentras un valor conocido, abandona el clculo de la sucesin del nmero
actual y procede a calcular la sucesin que comienza por el nmero siguiente.

3.2.5 5. Conjetura de Goldbach


La conjetura de Goldbach afirma que todo nmero par se puede expresar como suma de dos nmeros pares. Confirma
la conjetura para todos los nmeros pares menores que una cota K siguiendo la estrategia siguiente:
Crea un conjunto con todos los nmeros pares menores que K
Crea un conjunto con todas las sumas de nmeros primos menores que K
Calcula la diferencia de los conjuntos para ver si todo par se puede expresar como suma de dos primos

3.2.6 6. Dos dados


Crea un diccionario cuyas claves sean los nmeros enteros entre 2 y 12, y su valor en el nmero k sea una lista
de tuplas con todas las posibles formas de sumar k usando dos nmeros enteros entre 1 y 6.
print dd[3]
[(1,2),(2,1)]
print dd[4]
[(1,3),(2,2),(3,1)]

Generaliza el resultado a dados con un rango mayor de valores, o a un nmero arbitrario de dados.

3.3 Tiempo de ejecucin y eficiencia de algoritmos


En esta seccin vamos a estudiar algunas formas de medir la eficiencia de nuestros programas en Sage, y a estudiar la
complejidad de las operaciones usuales en Sage.
Medir de forma precisa este tiempo no es una tarea trivial, y los resultados pueden variar sensiblemente de un ordenador
a otro. La cantidad de factores que pueden influir en el tiempo de ejecucin es muy larga:

50

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

algoritmo usado
sistema operativo
velocidad del procesador, nmero de procesadores y conjunto de instrucciones que entiende
cantidad de memoria RAM, y cach, y velocidad de cada una
coprocesador matemtico, GPU
...
Incluso en la misma mquina, el mismo algoritmo tarda algunas veces mucho ms tiempo en dar el resultado que otras,
debido a factores como el tiempo que consumen las otras aplicaciones que se estn ejecutando, o si hay suficiente
memoria RAM en el momento de ejecutar el programa.
Nuestro objetivo es comparar slo los algoritmos , intentando sacar conclusiones independientes de la mquina.
Un mismo algoritmo se puede llamar con distintos datos de entrada. Nuestro objetivo es estudiar el tiempo de ejecucin
como funcin del tamao de los datos de entrada . Para ello usamos dos tcnicas:
Medir tiempos de ejecucin de los programas con datos de entrada de distintos tamaos
Contar el nmero de operaciones que realiza el programa

3.3.1 Medir el tiempo de CPU


Comenzamos por medir el tiempo de ejecucin de algunos algoritmos de forma emprica. Probando dos algoritmos
que calculan el mismo objeto con datos de distinto tamao nos haremos una idea de qu algoritmo es mejor para datos
grandes.
Para evitar que el resultado tenga en cuenta el efecto de los otros programas que se estn ejecutando en nuestro
ordenador en ese mismo momento, SAGE utiliza los conceptos de CPU time y Wall time , que son los tiempos que el
ordenador dedica exclusivamente a nuestro programa.
El CPU time es el tiempo de CPU que se ha dedicado a nuestro clculo, y el Wall time el tiempo de reloj entre el
comienzo y el final del clculo. Ambas mediciones son susceptibles a variaciones imprevisibles.
La forma ms sencilla de obtener los tiempos de ejecucin de un comando es anteponer la palabra time al comando.
sage: time is_prime(factorial(500)+1)
False
Time: CPU 0.09 s, Wall: 0.09 s
sage: #Para datos de mayor tamanyo, tarda mas tiempo (en general)
sage: time is_prime(factorial(1000)+1)
False
Time: CPU 0.72 s, Wall: 0.76 s

Para medir tiempos ms breves, podemos usar la funcion timeit .


sage: timeit(is_prime(1000000000039))
625 loops, best of 3: 7.3 s per loop

Grficas de tiempo de ejecucin


Para hacernos una idea del tiempo que tarda en terminar un programa en funcin del tamao de los datos de entrada,
vamos a hacer grficas: en el eje x , el tamao de los datos de entrada; en el eje y, el tiempo total.
El comando time no es lo bastante flexible, y necesitaremos las funciones cputime y walltime . cputime es
una suerte de taxmetro : es un contador que avanza segn hacemos clculos, y avanza tantos segundos como la CPU
3.3. Tiempo de ejecucin y eficiencia de algoritmos

51

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

dedica a Sage. walltime es un reloj convencional, pero medido en segundos desde el 1 de enero de 1970 (es el unix
clock). Para obtener el tiempo dedicado a nuestro programa, tomamos los tiempos antes y despus de la ejecucin, y
calculamos la diferencia.
sage: #cputime solo avanza cuando la cpu corre
sage: #(es un taximetro de la cpu)
sage: #Ejecuta esta funcion varias veces para ver como aumenta el tiempo
sage: #Si quieres, ejecuta comandos entre medias
sage: cputime()
2.0600000000000001
sage: #walltime avanza inexorable (es un reloj normal y corriente)
sage: walltime()
1298369972.163182

El siguiente cdigo guarda en una lista los cpu times empleados en ejecutar la funcin factorial con datos de distinto
tamao.
sage: numeros = [2^j for j in range(8,20)]
sage: tiempos = []
sage: for numero in numeros:
...
tcpu0 = cputime()
...
11 = factorial(numero)
...
tiempos.append(cputime()-tcpu0)

Dibujamos la grfica tiempo de ejecucin vs tamao de los datos.


sage: p1 = line(zip(numeros,tiempos))
sage: p1.show()

3.3.2 Contar el nmero de operaciones


Una alternativa a medir el tiempo que tarda un programa que implementa un algoritmo es contar directamente el
nmero de operaciones que hace ese algoritmo cuando lo ejecutamos. Como este es un tema que estis estudiando a
fondo en otra asignatura, no entraremos en detalle, pero repasamos las nociones bsicas para fijar la terminologa:

52

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Definicin. Dada una funcin g , diremos que otra funcin f es O(g) (y escribiremos f O(g) o incluso f = O(g)!),
si 0 < f (n) < c g(n)
n n0 , para constantes positivas c, n0 .
Tambin diremos que f est dominada por g si f O(g). Por ejemplo,
n2 O(n3 )

p O(exp)

Donde p es un polinomio cualquiera y exp es la funcin exponencial.


O, y
As como f (n) O(n) sirve para expresar una cota superior a la funcin f, y sirven para expresar una cota
inferior, y una cota ajustada, respectivamente:
f (g) 0 < g(n) < c f (n) n n0

para dos constantes positivas c, n0 .


(g) = (g) O(g)

En el caso anterior, es fcil ver que de hecho I(n) (n).


Complejidad
Definicin . Decimos que un algoritmo tiene complejidad coste en O(f) (resp (f ), (f )) si su nmero de operaciones (como funcin del tamao de los datos de entrada) es una funcin que pertenece a O(f) (resp (f ), (f )).
Nota: Un algoritmo termina en una cantidad fija de operaciones, independientemente de los datos de entrada, si y slo
si tiene complejidad en (1).
Coste en el peor caso y coste promedio
Aunque la notacin de complejidad es conveniente, no deja de ser una simplificacin: el nmero de operaciones no
depende slo del tamao de los datos de entrada.
El coste en el peor caso es el mximo nmero de operaciones para un dato de entrada que tenga tamao n.
El coste promedio es el promedio del nmero de operaciones sobre todos los posibles datos de entrada de tamao n.

3.3.3 Cmo funcionan las listas?


Las listas nos permiten almacenar una cantidad arbitraria de valores de cualquier tipo. A lo largo del programa,
podemos aadir elementos a la lista, eliminarlos y acceder a cualquiera de los elementos.
Internamente, una lista es un espacio de direcciones de memoria consecutivas que contienen referencias a los objetos
almacenados en la lista.

3.3. Tiempo de ejecucin y eficiencia de algoritmos

53

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Es muy importante que las direcciones sean consecutivas. De esta forma, podemos acceder al elemento j-simo en
poco tiempo: si la direccin de memoria del primer elemento de la lista es d , la direccin del elemento j-simo es d+j
.
Sin embargo, mantener las direcciones consecutivas tiene un precio. Si queremos aadir otro elemento al final (usando
append ), es necesario que la direccin de memoria al final de la lista est desocupada. Si no lo est, tenemos que
desplazar la lista a un nuevo emplazamiento en la memoria donde haya sitio para todos los elementos. Las listas de
python reservan parte del espacio detrs de la lista, de modo que no haya que recolocar la lista demasiadas veces.
Aadir un elemento en cualquier posicin distinta de la ltima obliga a desplazar los elementos posteriores de la lista
para hacer hueco al nuevo elemento.
Eliminar un elemento tambin puede ser una operacin costosa, porque despus de quitar un elemento, tenemos que
desplazar el resto de los elementos a la izquierda hasta tapar el hueco que deja el elemento que hemos sacado. Observa
que al eliminar un elemento cercano al final de la lista slo es necesario recolocar una pequea parte de la lista.
Comparamos los tiempos necesarios para eliminar todos los elementos de una lista, primero eliminando cada vez el
ltimo elemento, y despus eliminando el primer elemento de la lista.
sage: %time
sage: lista=range(20000)
sage: while len(lista)>0:
...
del lista[-1]
CPU time: 0.03 s, Wall time: 0.03 s
sage: %time
sage: lista=range(20000)
sage: while len(lista)>0:
...
del lista[0]
CPU time: 0.17 s, Wall time: 0.18 s

Ejercicio : Compara el tiempo necesario para aadir 20000 elementos al principio y al final de una lista. Para ello
tienes que encontrar un mtodo que te permita insertar un elemento al principio de la lista, usando la ayuda.

54

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

3.3.4 Coste de las operaciones usuales con listas


Aadir un elemento
Al aadir un elemento al final de la lista, pueden ocurrir dos cosas: que el espacio al final de la lista est disponible, o
que no lo est. Si est disponible, slo necesitamos O(1) operaciones. Si no lo est, tenemos que copiar la lista entera
a un lugar nuevo, lo que cuesta O(n). Por tanto, la complejidad de aadir un elemento al final de una lista en el pero
caso posible, es O(n).
Para evitar caer en el segundo caso con demasiada frecuencia, el intrprete de python reserva espacio extra despus de
cada lista. As, cuando nos vemos obligados a recolocar una lista de tamao n, le buscamos un espacio de tamao 2*n,
y colocamos los elementos de la lista al principio.
Sumemos el coste de aadir n elementos uno por uno a una lista:
1
1+1
1+1

2
1
2+1

3
1+2
3+3

4
1
4+3

5
1+4
5+7

6
1
6+7

7
1
7+7

8
1
8+7

9
1+8
9+15

10
1
10+15

11
1
11+15

12
1
12+15

13
1
13+15

14
1
14+15

15
1
15+15

Para aadir n elementos uno por uno, necesitamos hacer O(n) operaciones para aadir los elementos, y despus tenemos el coste de desplazar la lista a la nueva posicin. Este coste es igual a la longitud de la lista en el momento en que
se tiene que desplazar. La lista se desplaza cuando aadimos un elemento a una lista de longitud 2k , luego es igual a:
blog2 (n)c

2k = 2blog2 (n)c+1 1 2n

k=1

Decimos que aadir un elemento a una lista tiene coste amortizado O(1) , porque aadir n elementos siempre tiene
complejidad en O(n) .
Insertar un elemento en una posicin arbitraria
Insertar un elemento en la posicin k-sima de una lista de n elementos obliga a desplazar los n-k ltimos elementos
para abrir hueco. Por ejemplo, crear una lista de n elementos insertando los elementos al principio tiene coste: 1 + 2 +
3 + + n = n(n 1)/2 = (n2 )
Quitar elementos
Quitar un elemento del final de la lista tiene coste O(1) (en el peor caso, no es necesario hablar de coste amortizado).
Quitar el elemento en la posicin k-sima de una lista de n elementos tiene coste (n k).
Acceder o actualizar elementos
Acceder o actualizar elementos en posiciones arbitrarias no requiere recorrer la lista ni desplazar porciones de la lista,
y llevan tiempo O(1) .

3.3.5 Comparativa entre listas y diccionarios


Si una tabla est bastante llena de elementos, es necesario ampliarla. Al igual que en el caso de las listas, es tarea
del intrprete de python decidir el mejor momento para ampliar la tabla, y no necesitamos preocuparnos demasiado
porque ocurre con relativamente poca frecuencia.

3.3. Tiempo de ejecucin y eficiencia de algoritmos

55

16
1
16+15

17
1+1
17+

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Las bsquedas por el hash son relativamente rpidas, aunque no lo es tanto como el acceso directo al elemento i-simo
de una lista. Sin embargo, es mucho ms rpido aadir y quitar elementos de un conjunto o diccionario que de una
lista y es mucho ms rpido comprobar si un objeto ya est en la tabla.
En resumen, a pesar de su uso similar, las listas son muy distintas de los diccionarios, y el coste de las operaciones
elementales es distinto:
Acceder a un elemento de un diccionario (dic[clave]) es ms lento que a un elemento de una lista (lista[indice]).
Sin embargo, ambos son similares. A efectos prcticos, podemos asumir que el nmero de operaciones es independiente del tamao de los datos de entrada en ambos casos.
Insertar o quitar un elemento del final de una lista es ms rpido que hacerlo de un diccionario. Sin embargo,
ambos son similares. A efectos prcticos, podemos asumir que el nmero de operaciones es independiente del
tamao de los datos de entrada en ambos casos.
Sin embargo, insertar o quitar un elemento cualquiera de una lista es mucho ms lento que hacerlo de un diccionario. Insertar un elemento al principio de una lista obliga a recolocar la lista, lo que requiere un tiempo
proporcional al tamao de la lista (en otras palabras, O(n) ).
Comprobar si un valor est en una lista requiere recorrer toda la lista y es mucho ms lento que hacer la comprobacin en un conjunto o diccionario. Como tenemos que comprobar si cada elemento de la lista es igual al
valor, el nmero de operaciones requiere un tiempo proporcional al tamao de la lista (en otras palabras, O(n) ).
sage: lista = [k^2 for k in range(10000)]
sage: conjunto=set(lista)
sage: %time
sage: for j in range(10000):
...
b = (j in lista)
CPU time: 1.70 s, Wall time: 1.71 s
sage: %time
sage: for j in range(10000):
...
b = (j in conjunto)
CPU time: 0.00 s, Wall time: 0.00 s

Ejercicio : comprueba empricamente las dems afirmaciones de arriba sobre la eficiencia de diccionarios y listas.
Ejemplo: interseccin de listas
A modo de ejemplo, comparamos dos formas de construir una lista que tenga slo los elementos comunes a dos listas
dadas. La primera de ellos usa listas, la segunda sigue el mismo enfoque, pero con conjuntos, y la tercera usa la
interseccin de conjuntos (el operador & ).
sage: def interseca1(l1,l2):
...
return [elemento for elemento in l1 if elemento in l2]
sage: def interseca2(l1,l2):
...
#Solo necesitamos convertir l2 en conjunto, porque
...
#comprobamos si los elementos de l1 pertenecen a l2 o no
...
c2 = set(l2)
...
return [elemento for elemento in l1 if elemento in c2]
sage: def interseca3(l1,l2):
...
c1 = set(l1)
...
c2 = set(l2)
...
ci = c1 & c2
...
return list(ci)

56

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

La segunda implementacin tiene que crear un conjunto con los elementos de la segunda lista, pero despus la operacin de comprobacin de pertenencia (in) es ms eficiente.
La tercera implementacin tiene que crear conjuntos con los elementos de la cada lista, y convertir el resultado final a
un conjunto, pero a cambio podemos hacer directamente la interseccin de conjuntos, que es ms eficiente.
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
Time:
Time:
Time:

numero = 1000
#Tomamos los numeros aleatorios entre 1 y 10*numero para
#que los numeros esten lo bastante espaciados, y no sea
#probable que un elemento cualquiera de l1 este en l2
l1 = [randint(1,10*numero) for k in range(numero)]
l2 = [randint(1,10*numero) for k in range(numero)]
time li = interseca1(l1, l2)
time li = interseca2(l1, l2)
time li = interseca3(l1, l2)
CPU 0.02 s, Wall: 0.02 s
CPU 0.00 s, Wall: 0.00 s
CPU 0.00 s, Wall: 0.00 s

Los tiempos de las versiones 2 y 3 son muy bajos y bastante similares.


Ejercicio: Genera grficas de tiempo de ejecucin de interseca1 en funcin del tamao de las listas.
Ejercicio : Estima la complejidad terica del algoritmo usado en interseca1.
Nota: No merece la pena hacer grficas del tiempo de ejecucin para las funciones interseca2 y interseca3,
porque los tiempos son tan bajos que slo se ve ruido.
Ejemplo: nmeros triangulares, pentagonales y hexagonales
Vamos a hacer un problema del proyecto projecteuler :
http://projecteuler.net/
Este sitio web tiene un montn de problemas que involucran ideas o conceptos de matemticas y una cantidad importante de cuentas, de modo que el ordenador se hace indispensable. Nos ocupamos ahora del problema 45, que admite
un planteamiento sencillo usando intersecciones de conjuntos:
http://projecteuler.net/index.php?section=problems&id=45
Se trata de encontrar 3 nmeros que sean a la vez triangulares, pentagonales y hexagonales (contando el nmero 1 que
lo es de forma trivial):
http://es.wikipedia.org/wiki/N%C3%BAmero_poligonal
Podemos generar nmeros triangulares, pentagonales y hexagonales fcilmente y tambin es posible comprobar si un
nmero es triangular pentagonal hexagonal.
Suponiendo que sabemos comprobar si un nmero es triangular en tiempo constante O(1), necesitaramos O(N) operaciones para comprobar qu nmeros menores que N son a la vez triangulares, pentagonales y hexagonales. Utilizando
conjuntos podemos reducir el nmero de operaciones drsticamente.
La estrategia es la siguiente: primero generamos tres conjuntos, con los nmeros triangulares, pentagonales y hexagonales, y luego los intersecamos. Escogemos conjuntos en vez de listas porque las intersecciones de conjuntos requieren
menos operaciones.
sage: def busca_tph(cota):
...
Busca todos los nmeros menores que una cota que son
...
a la vez triangulares, pentagonales y hexagonales
...
...
Devuelve un conjunto con todos los numeros buscados

3.3. Tiempo de ejecucin y eficiencia de algoritmos

57

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...

#creamos el conjunto de numeros triangulares


k=1
triangulares = set()
while k*(k+1)/2<cota:
triangulares.add(k*(k+1)/2)
k = k+1
#creamos el conjunto de numeros pentagonales
k=1
pentagonales = set()
while k*(3*k-1)/2<cota:
pentagonales.add(k*(3*k-1)/2)
k = k+1
#creamos el conjunto de numeros hexagonales
k=1
hexagonales = set()
while k*(2*k-1)<cota:
hexagonales.add(k*(2*k-1))
k = k+1
return triangulares & pentagonales & hexagonales

sage: %time
sage: print busca_tph(1e6)
set([1, 40755])
CPU time: 0.02 s, Wall time: 0.02 s
sage: %time
sage: print busca_tph(1e8)
set([1, 40755])
CPU time: 0.13 s, Wall time: 0.13 s

Aumentando la cota, el tiempo de ejecucin aumenta, lgicamente. En vez de hacer grficas de tiempo de ejecucin,
vamos a reflexionar sobre el tiempo que debera tardar y la cantidad de memoria que necesita este enfoque para saber
hasta dnde podemos buscar.
Tanto los nmeros triangulares como los pentagonales y los hexagonales crecen de forma cuadrtica . Por lo tanto, si
fijamos una cota N, el tamao de cada uno de los conjuntos triangulares , pentagonales y hexagonales

ser menor que una constante por la raz cuadrada de N . Para construirlos, habremos dedicado a lo sumo O( N ).
Una vez construidos los conjuntos, la interseccin de dos conjuntos de tamao K1 y K2 se puede realizar en tiempo
O(min(K1, K2)), porque basta con comprobar si cada elemento del conjunto menor est en el otro conjunto.
De modo que el tiempo de ejecucin debera crecer como la raz de la cota, y el uso de la memoria tambin, por
motivos similares. Podemos permitirnos poner una cota de 1e10, y el tiempo de ejecucin slo debera aumentar unas
10 veces frente al tiempo que tard la llamada con cota = 1e8.
sage: %time
sage: print busca_tph(1e10)
set([1, 40755, 1533776805])
CPU time: 1.49 s, Wall time: 1.49 s

58

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

3.4 Ejercicios
3.4.1 1.
El resultado de las mediciones de %time, cputime y los dems es algo inestable. Al medir tiempos, es buena idea tomar
promedios. Escribe cdigo que almacene en una lista el tiempo promedio de ejecutar una cierta funcin N veces.

3.4.2 2.
Haz graficas que midan el tiempo de ejecucin en funcin de su nico argumento de la funcin es_primo definida
ms abajo. Asegrate de probar la funcin con todos los nmeros k en un rango [2,N]: puedes explicar la forma de
la grfica?
sage: def es_primo(k):
...
return k>1 and all(k %j!=0 for j in range(2,k))

3.4.3 3.
Escribe cdigo que crea una lista aadiendo elementos uno por uno, primero aadiendo los elementos al final de la
lista y despus aadindolos al final de la lista. Cual debera ser la complejidad con cada enfoque?
Haz grficas del tiempo de ejecucin en funcin del tamao de la lista que construyes. Es consistente con la complejidad predicha?

3.4.4 4.
Escribe cdigo que, partiendo de una lista de tamao N, elimina sus elementos uno por uno hasta que la lista quede
vaca. Resuelve el problema de dos formas: primero aadiendo los elementos al final de la lista y despus aadindolos
al final de la lista. Cual debera ser la complejidad con cada enfoque?
Haz grficas del tiempo de ejecucin en funcin del tamao de la lista. Es consistente con la complejidad predicha?

3.4.5 5.
Compara dos formas de calcular las formas de expresar un par como suma de dos primos. La nica diferencia est en
el uso de una lista o de un conjunto para almacenar los nmeros primos. Realiza grficas de tiempo de ejecucin en
funcin de n: es sensato pensar que el tiempo necesario para comprobar si un elemento pertenece a un conjunto no
depende del tamao del conjunto?
sage: def sumas1(n):
...
if n %2!=0:
...
#Si n es impar, no devolvemos nada
...
return
...
else:
...
lista = []
...
primos = prime_range(n)
...
for k in primos:
...
if n-k in primos:
...
lista.append((k,n-k))
...
return lista

3.4. Ejercicios

59

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: def sumas2(n):


...
if n %2!=0:
...
#Si n es impar, no devolvemos nada
...
return
...
else:
...
lista = []
...
primos = set(prime_range(n))
...
for k in primos:
...
if n-k in primos:
...
lista.append((k,n-k))
...
return lista

3.4.6 6.
Encuentra todos los nmeros primos menores que un milln que son de la forma k 2 + 1, con k un nmero triangular.

3.4.7 7.
Encuentra el menor nmero primo con k dgitos decimales distintos, para k=5,6,7. Resuelve el problema de las dos
formas siguientes:
Crea una lista de primos candidatos con prime_range, y busca entre ellos el primero con la propiedad pedida.
Este enfoque obliga a fijar una cota mxima y buscar primos menores que esa cota.
Genera los nmeros primos de uno en uno usando next_prime. En este enfoque no hay que fijar una cota a priori.

3.4.8 8.
Observa que ningn primo menor que 10000 puede tener menos de 5 cifras. Podemos por tanto comenzar la bsqueda
por este nmero. Apurando un poco ms, podemos comenzar a buscar primos por el menor nmero con cinco cifras
distintas, el 10234. Incorpora esta informacin y mide la mejora en tiempo de ejecucin.

3.5 Eficiencia en clculo cientfico


En clculo cintifico, no es raro que ejecutemos un cdigo una sla vez. Obtenido el resultado, guardamos el cdigo
en el archivo y la salida del programa nos responde a una pregunta y nos ayuda a plantear la siguiente. Claramente, no
tiene sentido dedicar tiempo a optimizar al mximo un cdigo que probablemente nadie vuelva a usar.
Tenemos que encontrar un equilibrio entre el tiempo que dedicamos a optimizar el programa y el tiempo que podemos
esperar a que el cdigo sin optimizar termine. Claramente, nuestro tiempo vale ms que el tiempo del ordenador.
La optimizacin, frecuentemente, tambin va reida con otro aspecto muy importante del cdigo cientfico, la claridad
, necesaria para poder compartir nuestro cdigo con la comunidad internacional. Optimizaciones marginales que hacen
el cdigo ms difcil de seguir (y por tanto, ms propenso a esconder errores), no compensan.
PD: Lo anterior se aplica al cdigo exploratorio , que es el ms cotidiano en ciencia: un anlisis estadstico, una
conversin de formato, la solucin de una ecuacin concreta... pero no al cdigo que forma las libreras en las que se
basa el trabajo de mucha gente, porque ese cdigo se va a ejecutar muchas veces en muchos contextos distintos.

60

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

3.5.1 Optimiza slo si es necesario, slo dnde es necesario


Hoy vamos a practicar una metodologa tpica de lenguajes dinmicos como python:
1. Escribe cdigo correcto, y claro.
2. Prubalo en suficientes casos.
3. Comprueba si es lo bastante rpido para el tamao de tus datos. Si lo es, dedcate a otra cosa.
4. Si el cdigo no es lo bastante rpido, identifica las partes del programa que ms influyen en la velocidad (una
conocida heurstica dice que el 90 % del tiempo se pasa ejecutando el 10 % del cdigo).
5. Piensa si tu algoritmo es mejorable y, si puedes, usa otro mejor.
6. Si tu cdigo no es lo bastante rpido y no conoces mejores algoritmos, reescribe las partes crticas del cdigo en
un lenguaje compilado como C, FORTRAN, o cython .
Caso prctico: la constante de Brun
Dos nmeros primos p y p+2 se llaman primos gemelos .
La constante de Brun es por definicin la suma de los inversos de todos los primos gemelos (y curiosamente se sabe
que converge, aunque no se sabe ni siquiera si existen infinitos primos gemelos).
 
 
 
 


1 1
1
1
1
1
1
1
1 1
+
+
+
+
+
+
+
+
+
+
B2 =
3 5
5 7
11 13
17 19
29 31

sage:
sage:
sage:
...
...
...
...
...
...
...
sage:
...
...
sage:
sage:
sage:
...
...
...
sage:
sage:
sage:
...
...
...
...

#Suma de los inversos de los primos gemelos


#1: Encuentra primos
def criba(ls):
Se queda con los elementos irreducibles de una lista de enteros
primos = []
while ls:
p = ls[0]
primos.append(p)
ls = [k for k in ls if k %p]
return primos
def lista_primos(K):
genera los numeros primos menores que K
return criba(range(2,K))
#2: Selecciona los gemelos
#Nos quedamos con el menor de cada par
def criba_gemelos(ls):
recibe una lista de primos, y devuelve los numeros p tales que
p+2 tambien esta en la lista
return [p for p in ls if p+2 in ls]
#3: Sumamos los inversos
#para aproximar la constante de Brun
def brun(K):
Devuelve la suma de los inversos de los primos gemelos menores que K
primos = lista_primos(K)
gemelos = criba_gemelos(primos)
return sum( (1.0/p + 1.0/(p+2)) for p in gemelos)

3.5. Eficiencia en clculo cientfico

61

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: %time
sage: print brun(1e4)
1.61689355743220
CPU time: 1.40 s, Wall time: 1.41 s

La serie converge muy despacio, y si queremos verificar el primer dgito decimal, tenemos que alcanzar al menos
K = 108 , lo que claramente nos obliga a optimizar el cdigo.
Aunque con este cdigo tan breve puede ser obvio, vamos a usar una herramienta de profile como ayuda a la metodologa de la optimizacin progresiva. La herramienta nos ayuda a identificar las partes del programa ms lentas con
menos trabajo que si slo usamos timeit o similares.
sage: #importamos los modulos cProfile y pstats para ver las estadisticas
sage: #de cuanto tiempo se pasa en cada parte del codigo
sage: import cProfile, pstats
sage: #No necesitamos entender la siguiente linea:
sage: #tomalo como una version avanzada de timeit
sage: cProfile.runctx("brun(10000)", globals(), locals(), DATA + "Profile.prof")
sage: s = pstats.Stats(DATA + "Profile.prof")
sage: #Imprimimos las estadisticas, ordenadas por el tiempo total
sage: s.strip_dirs().sort_stats("time").print_stats()
Tue Feb 22 11:18:44 2011
/home/sageadm/nbfiles.sagenb/home/pang/214/data/Profile.prof
1446 function calls in 1.371 CPU seconds
Ordered by: internal time
ncalls
1
1
206
1
1229
1
1
1
1
1
1
1
1

tottime
1.274
0.095
0.001
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000

percall
1.274
0.095
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000

cumtime
1.274
0.096
0.001
0.000
0.000
0.001
0.096
1.371
1.371
0.001
0.000
0.000
0.000

percall
1.274
0.096
0.000
0.000
0.000
0.001
0.096
1.371
1.371
0.001
0.000
0.000
0.000

filename:lineno(function)
___code___.py:19(criba_gemelos)
___code___.py:4(criba)
___code___.py:30(<genexpr>)
{range}
{method append of list objects}
{sum}
___code___.py:13(lista_primos)
<string>:1(<module>)
___code___.py:26(brun)
functional.py:547(symbolic_sum)
{hasattr}
{len}
{method disable of _lsprof.Profiler objects}

<pstats.Stats instance at 0x433d5f0>

Vemos que la llamada a criba_gemelos es la que ocupa la mayor parte del tiempo. El algoritmo es mejorable: es
un algoritmo cuadrtico (para cada p de la lista recorremos la lista entera para buscar p+2), cuando para esta tarea
podemos usar un algoritmo lineal. Observamos que el primo p+2, si est en la lista, slo puede estar en un sitio:
inmediatamente a continuacin del primo p.
sage: #2: Selecciona los gemelos
sage: #Nos quedamos con el menor de cada par
sage: def criba_gemelos(ls):
...
return [ls[j] for j in xrange(len(ls)-1) if ls[j+1]==ls[j]+2]
sage: %time
sage: print brun(1e4)
1.61689355743220
CPU time: 0.12 s, Wall time: 0.11 s

62

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Pregunta : qu otra forma se te ocurre para reducir la complejidad de criba_gemelos a O(len(ls))?


La mejora es sustancial, y nos planteamos avanzar un orden de magnitud
sage: %time
sage: print brun(1e5)
1.67279958482774
CPU time: 5.69 s, Wall time: 5.69 s

Como desgraciadamente el resultado sigue siendo insuficiente, volvemos a aplicar el profile para buscar el siguiente
fragmento de cdigo que necesita mejoras...
sage: import cProfile, pstats
sage: cProfile.runctx("brun(50000)", globals(), locals(), DATA + "Profile.prof")
sage: s = pstats.Stats(DATA + "Profile.prof")
sage: s.strip_dirs().sort_stats("time").print_stats()
Tue Feb 22 11:18:53 2011
/home/sageadm/nbfiles.sagenb/home/pang/214/data/Profile.prof
5851 function calls in 1.554 CPU seconds
Ordered by: internal time
ncalls
1
1
706
1
5133
1
1
1
1
1
1
2
1

tottime
1.540
0.008
0.003
0.001
0.001
0.001
0.000
0.000
0.000
0.000
0.000
0.000
0.000

percall
1.540
0.008
0.000
0.001
0.000
0.001
0.000
0.000
0.000
0.000
0.000
0.000
0.000

cumtime
1.541
0.008
0.003
0.001
0.001
1.543
0.003
1.554
1.554
0.000
0.003
0.000
0.000

percall
1.541
0.008
0.000
0.001
0.000
1.543
0.003
1.554
1.554
0.000
0.003
0.000
0.000

filename:lineno(function)
___code___.py:4(criba)
___code___.py:4(criba_gemelos)
___code___.py:30(<genexpr>)
{range}
{method append of list objects}
___code___.py:13(lista_primos)
{sum}
<string>:1(<module>)
___code___.py:26(brun)
{hasattr}
functional.py:547(symbolic_sum)
{len}
{method disable of _lsprof.Profiler objects}

<pstats.Stats instance at 0x433df38>

Vemos que ahora slo compensa dedicarle tiempo a la criba. Comenzamos por estudiar el algoritmo. Algunos de
vosotros presentasteis esta otra variante en la prctica, en la que para hallar los primos menores que N mantenemos
un array que comienza con todos los nmeros de 1 a N, y cuando descubrimos un nmero compuesto, lo tachamos
poniendo un cero en la posicin del array que ocupa.
sage: ##Variante
sage: def lista_primos2(n):
...
aux = [True]*int(n)
...
aux[0] = False
...
aux[1] = False
...
...
for i in xrange(2,floor(sqrt(n))+1):
...
if aux[i]:
...
for j in xrange(i*i,n,i):
...
aux[j] = False
...
...
##Devolvemos los que no estn tachados
...
return [k for k in xrange(n) if aux[k]]

3.5. Eficiencia en clculo cientfico

63

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: time b=lista_primos2(1000000)


Time: CPU 0.25 s, Wall: 0.24 s

Aunque podra parecer que ambos algoritmos hacen las mismas operaciones, observamos que:
Con el primer mtodo, intentamos dividir un nmero por todos los nmeros primos que son menores que su
menor factor primo.
Con el segundo mtodo, cada nmero se tacha varias veces, una por cada factor primo del nmero.
No necesitamos conocer ms detalles, por ahora es suficiente con entender que hacen dos cosas distintas. El segundo
mtodo resulta ser mucho ms eficiente: (detalles en la wikipedia )
sage:
sage:
sage:
Time:
Time:
True

time a=lista_primos(50000)
time b=lista_primos2(50000)
a==b
CPU 1.54 s, Wall: 1.54 s
CPU 0.01 s, Wall: 0.01 s

sage: def brun(K):


...
primos = lista_primos2(K)
...
gemelos = criba_gemelos(primos)
...
return sum( (1.0/p + 1.0/(p+2)) for p in gemelos)
sage: %time
sage: print brun(1e5)
1.67279958482774
CPU time: 0.05 s, Wall time: 0.05 s
sage: %time
sage: print brun(1e6)
1.71077693080422
CPU time: 0.39 s, Wall time: 0.39 s

El crecimiento aparenta ser casi lineal, y estimamos que podemos tener nuestra respuesta en un tiempo asumible, y
pasamos al siguiente problema.

3.5.2 Cython
Si estamos usando el mejor algoritmo, o no conocemos otro mejor, y aun as nuestro programa no es lo bastante rpido,
podemos compilar las partes crticas del programa.
El lenguaje cython se adapta perfectamente a esta tarea, ya que combina tipos de datos de C con sintaxis de python,
de modo que podemos alcanzar mayor velocidad sin tener que reescribir nuestros programas.
Comenzamos con un tpico ejemplo numrico, en el que calculamos una integral mediante una suma de Riemann.
sage: def f(x):
...
return sin(x**2)
sage: def integral(a, b, N):
...
dx = (b-a)/N
...
s = 0
...
for i in range(N):
...
s += f(a+dx*i)
...
return s * dx

64

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: time integral(0.0, 1.0, 500000)


0.310267460252752
Time: CPU 6.24 s, Wall: 6.26 s

Para compilar una funcin en cython, comenzamos el bloque de cdigo con %cython .
sage:
sage:
sage:
sage:
...
sage:
...
...
...
...
...

%cython
#Tenemos que importar la funcion seno
from math import sin
def f(x):
return sin(x**2)
def integral_cy1(a, b, N):
dx = (b-a)/N
s = 0
for i in range(N):
s += f(a+dx*i)
return s * dx

Al ejecutar un bloque de cdigo que comienza por %cython , Sage compila el cdigo , y lo deja listo para llamarlo
ms adelante como una funcin normal definida en python.
sage: time integral_cy1(0.0, 1.0, 500000)
0.310267460252752
Time: CPU 2.79 s, Wall: 2.83 s

Como vemos, el cdigo apenas es un poco ms rpido que antes: no hemos indicado los tipos de los datos, y en esta
situacin es imposible hacerlo significativamente mejor que el intrprete de python.
En la siguiente versin le indicamos los tipos de los datos usando la palabra clave cdef : int o float .
sage:
sage:
sage:
...
...
sage:
...
...
...
...
...
...

%cython
from math import sin
def f(double x):
return sin(x**2)
def integral_cy2(double a, double b, int N):
cdef double dx = (b-a)/N
cdef int i
cdef double s = 0
for i in range(N):
s += f(a+dx*i)
return s * dx

sage: time integral_cy2(0.0, 1.0, 500000)


0.31026746025275187
Time: CPU 0.10 s, Wall: 0.10 s

La estrategia anterior (compilar en cython indicando los tipos de los datos) se suele poder aplicar de forma bastante
mecnica y da resultados interesantes. En general, es posible optimizar el cdigo todava ms, pero hace falta conocimiento ms especfico y por tanto ms difcil de aplicar en cada caso concreto. A modo de referencia, veamos el
siguiente cdigo:
sage: %cython
sage: #Usamos la funcion seno directamente de la libreria
sage: #"math.h" de C
sage: cdef extern from "math.h": # external library
...
double sin(double)
sage: #Las funciones definidas con cdef solo son accesibles
sage: #desde codigo cython, pero son mas rapidas
sage: cdef double f(double x):

3.5. Eficiencia en clculo cientfico

65

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
return sin(x**2)
sage: def integral_cy3(double a, double b, int N):
...
cdef double dx = (b-a)/N
...
cdef int i
...
cdef double s = 0
...
for i in range(N):
...
s += f(a+dx*i)
...
return s * dx
sage: time integral_cy3(0.0, 1.0, 500000)
0.31026746025275187
Time: CPU 0.02 s, Wall: 0.02 s

3.5.3 El conjunto de Mandelbrot


El conjunto de Mandelbrot es el subconjunto de los nmeros complejos formados por aquellos nmeros c tales que las
iteraciones de la regla z z 2 + c comenzando en z0 = 0 permanecen acotadas.
Como aproximacin, es habitual tomar un punto c del plano complejo e iterar la regla anterior hasta que se abandona
una bola de un cierto radio, o se alcanza un cierto nmero de iteraciones.

Comenzamos con un programa en python puro.


Dividimos el cuadrado del plano complejo con vrtices (x0 , y0 ), (x0 + l, y0 ), (x0 + l, y0 + l) y (x0 , y0 + l) en
una malla NxN.

66

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

En la posicin (j,k) de un array NxN almacenamos el nmero de iteraciones h necesarias para que zh abandone
una bola de radio R cuando comenzamos a iterar z z 2 +c partiendo del punto c = (x0 +j l/N )+i(y0 +kl/N )
.
sage: def mandelbrot(x0, y0, side, N=200, L=50, R=float(3)):
...
m=matrix(N,N)
...
delta = side/N
...
for j in range(N):
...
for k in range(N):
...
c = complex(x0+j*delta,y0+k*delta)
...
z=0
...
h=0
...
while (h<L) and (abs(z)<R):
...
z=z*z+c
...
h+=1
...
m[j,k]=h
...
return m
sage: time m=mandelbrot(-2,-1.5,3,100,20)
sage: matrix_plot(m)
Time: CPU 0.65 s, Wall: 0.67 s

Nuestro cdigo es una traslacin bastante literal de la definicin, y sin saber ninguna propiedad especial del conjunto
no parece haber forma de sustituir el algoritmo. Usamos el lenguaje cython.
sage: %cython
sage: def mandelbrot_cy_1(x0, y0, side, N=200, L=50, R=float(3)):
...
m=matrix(N,N)
...
delta = side/N
...
for j in range(N):
...
for k in range(N):
...
c = complex(x0+j*delta,y0+k*delta)
...
z=0
...
h=0
...
while (h<L) and (abs(z)<R):
...
z=z*z+c
...
h+=1

3.5. Eficiencia en clculo cientfico

67

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
...

m[j,k]=h
return m

Error converting Pyrex file to C:


-----------------------------------------------------------...
include "interrupt.pxi" # ctrl-c interrupt block support
include "stdsage.pxi" # ctrl-c interrupt block support
include "cdefs.pxi"
def mandelbrot_cy_1(x0, y0, side, N=200, L=50, R=float(3)):
m=matrix(N,N)
^
------------------------------------------------------------

/home/sageadm/.sage/temp/sageserver/23963/spyx/_home_sageadm_nbfiles_sagenb_home_pang_214_code_sage35
Traceback (most recent call last):
...
RuntimeError: Error converting /home/sageadm/nbfiles.sagenb/home/pang/214/code/sage35.spyx to C:

Al tratar de compilar el cdigo, obtenemos un error:


undeclared name not builtin: matrix

que nos indica que tenemos que importar el constructor de matrices ( matrix ) de la librera correspondiente. Encontramos la ruta requerida para importar en la ayuda de matrix, ms concretamente en la primera lnea, que indica el
fichero en que se define matrix .
sage: matrix?
<html>...</html>
sage: %cython
sage: from sage.matrix.constructor import matrix
sage: def mandelbrot_cy_1(x0, y0, side, N=200, L=50, R=float(3)):
...
m=matrix(N,N)
...
delta = side/N
...
for j in range(N):
...
for k in range(N):
...
c = complex(x0+j*delta,y0+k*delta)
...
z=0
...
h=0
...
while (h<L) and (abs(z)<R):
...
z=z*z+c
...
h+=1
...
m[j,k]=h
...
return m
sage: time m=mandelbrot_cy_1(-2,-1.5,3,200,50)
Time: CPU 1.88 s, Wall: 1.89 s

Al ejecutar un bloque de cdigo que comienza por %cython , Sage compila el cdigo , y lo deja listo para llamarlo
ms adelante como una funcin normal definida en python. Tambin genera un informe en html que nos permite
entender cmo de eficiente es el cdigo generado. Las lneas en amarillo son cdigo que no se ha podido optimizar,
y se ejecuta como si fuera cdigo dinmico en python, mientras que las lneas en blanco corresponden a las lneas
que se han podido optimizar, y se ejecutan como si fuera cdigo de C. En este primer informe, vemos que casi todas
las lneas estn en amarillo, porque no hemos indicado los tipos de los datos, y en esta situacin es imposible hacerlo
significativamente mejor que el intrprete de python.

68

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

En la siguiente versin le indicamos los tipos de los datos: int , float o double complex .
sage: %cython
sage: from sage.matrix.constructor import matrix
sage: def mandelbrot_cy2(float x0,float y0,float side,
...
int N=200, int L=50, float R=3):
...
returns an array NxN to be plotted with matrix_plot
...

...
cdef double complex c, z
...
cdef float delta
...
cdef int h, j, k
...
m=matrix(N,N)
...
delta = side/N
...
for j in range(N):
...
for k in range(N):
...
c = complex(x0+j*delta,y0+k*delta)
...
z=0
...
h=0
...
while (h<L) and (abs(z)<R):
...
z=z*z+c
...
h+=1
...
m[j,k]=h
...
return m
sage: time m=mandelbrot_cy2(-2,-1.5,3,200,50)
Time: CPU 0.10 s, Wall: 0.10 s

Indicando los tipos de las variables hemos conseguido una mejora sustancial. Este es un buen momento para detenernos
(de hecho, el resto de la seccin no entra en el examen).
Optimizacin en cython ms all de indicar los tipos de datos (opcional)
Observando el informe html sobre el cdigo generado, vemos que la condicin dentro del bucle while no se est
optimizando, y est dentro del bucle ms interior, luego es la parte del cdigo que ms se repite. El problema es
que estamos usando una funcin abs genrica. Podemos acelerar el clculo sustituyendo la llamada por operaciones
generales sobre nmeros reales (y eliminando la raz cuadrada implcita al calcular el valor absoluto):
sage: %cython
sage: from sage.matrix.constructor import matrix
sage: def mandelbrot_cy3(float x0,float y0,float side,
...
int N=200, int L=50, float R=3):
...
returns an array NxN to be plotted with matrix_plot
...

...
cdef double complex c, z
...
cdef float delta
...
cdef int h, j, k
...
m=matrix(N,N)
...
delta = side/N
...
for j in range(N):
...
for k in range(N):
...
c = complex(x0+j*delta,y0+k*delta)
...
z=0
...
h=0
...
while (h<L and
...
z.real**2 + z.imag**2 < R*R):
...
z=z*z+c
...
h+=1

3.5. Eficiencia en clculo cientfico

69

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

m[j,k]=h

...
...

return m

sage: time m=mandelbrot_cy3(-2,-1.5,3,200,50)


Time: CPU 0.05 s, Wall: 0.06 s

Siguiendo la regla de optimizar slo la parte que ms repite, ponemos el ojo en la lnea:
c = complex(x0+j*delta,y0+k*delta)

que aparece en amarillo en el informe, y es interior a dos bucles for. Aunque a veces requeire un poco de ensayo y
error, una estrategia que suele funcionar es que las operaciones aritmticas se optimizan cuando declaramos los tipos.
Llamadas a funciones como complex no nos dan esas garantas, porque pueden implicar conversiones entre tipos de
datos.
sage: %cython
sage: from sage.matrix.constructor import matrix
sage: def mandelbrot_cy4(float x0,float y0,float side,
...
int N=200, int L=50, float R=3):
...
returns an array NxN to be plotted with matrix_plot
...

...
cdef double complex c, z, I
...
cdef float delta
...
cdef int h, j, k
...
m=matrix(N,N)
...
I = complex(0,1)
...
delta = side/N
...
for j in range(N):
...
for k in range(N):
...
c = (x0+j*delta)+ I*(y0+k*delta)
...
z=0
...
h=0
...
while (h<L and
...
z.real**2 + z.imag**2 < R*R):
...
z=z*z+c
...
h+=1
...
m[j,k]=h
...
return m
sage: time m=mandelbrot_cy4(-2,-1.5,3,200,50)
Time: CPU 0.02 s, Wall: 0.03 s

La nica parte interior a los bucles que queda por optimizar es la asignacin:
m[j,k]=h

Para poder declarar arrays con tipos de datos tenemos dos opciones:
Usar punteros como en C:
...
cdef int\* m = <int\*> sage_malloc((sizeof int)\*N^2)
...

lo que conlleva peligros potenciales si calculamos mal los tamaos, y no es muy conveniente para arrays bidimensionales.
Sustituir la matriz de Sage (matrix) por un array de la librera numpy , bien integrada en cython.
Al definir el tipo de la matriz m, usamos un tipo de datos terminado en _t, mientras que al llamar a una de las
funciones que construyen arrays (como zeros , ones o array ), pasamos el parmetro dtype, y no escribimos esa
70

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

terminacin. En este ejemplo usamos enteros positivos de 16 bits para los valores de m, asumiendo que no trabajaremos
con un L de ms de 216 .
cdef numpy.ndarray[numpy.uint16_t, ndim=2] m
m = numpy.zeros((N,N), dtype=numpy.uint16)
m[j,k]=h
sage:
sage:
sage:
...
sage:
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...

%cython
import numpy
cimport numpy

#para declarar los tipos de los arrays


#tb tenemos que usar cimport
def mandelbrot_cy5(float x0,float y0,float side,
int N=200, int L=50, float R=3):
returns an array NxN to be plotted with matrix_plot

cdef double complex c, z, I


cdef float delta
cdef int h, j, k
cdef numpy.ndarray[numpy.uint16_t, ndim=2] m
m = numpy.zeros((N,N), dtype=numpy.uint16)
I = complex(0,1)
delta = side/N
for j in range(N):
for k in range(N):
c = (x0+j*delta)+ I*(y0+k*delta)
z=0
h=0
while (h<L and
z.real**2 + z.imag**2 < R*R):
z=z*z+c
h+=1
m[j,k]=h
return m

sage: time m=mandelbrot_cy5(-2,-1.5,3,200,50)


Time: CPU 0.01 s, Wall: 0.01 s

No tiene sentido continuar: hemos optimizado la parte interior a los bucles, y aunque an se puede hacer el cdigo
ms rpido, el precio a pagar no nos compensa.
Ms informacin en el manual de cython:
http://docs.cython.org/
sage: time m=mandelbrot_cy5(-0.59375, 0.46875, 0.046875,600,160)
sage: matrix_plot(m).show(figsize=(8,8))
Time: CPU 0.10 s, Wall: 0.11 s

3.5. Eficiencia en clculo cientfico

71

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

3.6 Ejercicios
3.6.1 1.
La conjetura de Goldbach afirma que todo nmero par se puede expresar como suma de dos primos.
El cdigo de abajo pretende verificar la conjetura de Goldbach hasta un cierto nmero par K.
Tu objetivo es mejorar este cdigo siguiendo las siguientes directrices:
Identifica, de entre las tres funciones de abajo, la que ms tiempo de cmputo consume, y por tanto la que ms
necesita nuestra atencin. Justifica tu respuesta.
Usando la hiptesis (trivial de demostrar, por otro lado), de que la criba de Eratstenes tiene complejidad en
O(N^2) (observa que decimos O, luego hablamos slo de una cota superior), estima la complejidad del cdigo
72

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

presentado.
Mejora el cdigo de arriba modificando el algoritmo hasta que su complejidad sea O(N^2). Trabaja nicamente
en mejorar la funcin que has identificado antes.
sage:
sage:
...
...
...
...
...
...
...
sage:
...
...
sage:
...
...
...
...
...
...
...
...
...

##Criba
def criba(ls):
Se queda con los elementos irreducibles de una lista de enteros
primos = []
while ls:
p = ls[0]
primos.append(p)
ls = [k for k in ls if k %p]
return primos
def lista_primos(K):
genera los numeros primos menores que K
return criba(range(2,K))
def goldbach(N):
for t in range(4,N,2):
comprobado = False
for x in lista_primos(N):
for y in lista_primos(N):
if t == x+y:
comprobado = True
if not comprobado:
return False #t es un contraejemplo
return True

sage: time goldbach(200)

3.6.2 2.
El objetivo de este ejercicio es calcular el tiempo de parada de la sucesin de Collatz comenzando por cada numero
menor que M. El cdigo de abajo calcula la longitud de la secuencia de Collatz partiendo de cada nmero entre 1 y M.
Tus objetivos son:
Modificar el algoritmo para recordar los valores ya calculados. Por ejemplo, si sabes que la longitud de la
sucesin que comienza por 3 es 8, entonces la longitud de la sucesin que empieza por 6 es 9(=8+1), ya que el
nmero siguiente a 6 es, y a partir de ese punto las sucesiones son iguales.
6->3->10->5->16->8->4->2->1
Compila el cdigo usando cython y declarando los tipos de las variables para acelerar el clculo.
sage: def collatz(k):
...
if k %2:
...
return 3*k+1
...
else:
...
return k/2
sage: def tiempos_collatz(M):
...
tiempos = []
...
for j in range(1,M):
...
l = 1
...
k = j
...
while k!=1:
...
k = collatz(k)
...
l+=1
...
tiempos.append(l)
...
return tiempos

3.6. Ejercicios

73

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: time ts = tiempos_collatz(1000)


Time: CPU 0.39 s, Wall: 0.38 s
sage: point2d([(j,ts[j]) for j in range(len(ts))])

3.6.3 3.
http://es.wikipedia.org/wiki/Juego_de_la_vida
El juego de la vida se desarrolla en una malla formada por cuadrados (clulas) que se extiende por el infinito
en todas las direcciones. Cada clula tiene 8 clulas vecinas, que son las que estn prximas a ella, incluyendo las
diagonales. Las clulas tienen dos estados: estn vivas o muertas (o encendidas y apagadas). El estado de
la malla evoluciona a lo largo de unidades de tiempo discretas (se podra decir que por turnos). El estado de todas
las clulas se tiene en cuenta para calcular el estado de las mismas al turno siguiente. Todas las clulas se actualizan
simultneamente.
Las transiciones dependen del nmero de clulas vecinas vivas:
Una clula muerta con exactamente 3 clulas vecinas vivas nace (al turno siguiente estar viva).
Una clula viva con 2 3 clulas vecinas vivas sigue viva, en otro caso muere o permanece muerta (por soledad
o superpoblacin).
El cdigo de debajo calcula la evolucin de una matriz NxN con unos para las clulas vivas y ceros para las muertas.
Tu objetivo es compilar el cdigo en cython indicando los tipos de las variables y haciendo alguna otra optimizacin sencilla que se te ocurra para mejorar el cdigo. Anota las mejora obtenidas contra un ejemplo tipo de tamao
respetable para observar qu cambios son ms importantes.
sage:
...
...
...
sage:
...
...
...
sage:
...
...
...
...
...
...
...
...
...
...
...
sage:
...
...
...

def cuenta_vecinos(m, j, k):


Cuenta el nmero de vecinos vivos de la casilla (j,k)
cuenta = 0
for j0, k0 in [(j - 1,k - 1), (j - 1,k), (j - 1,k + 1), (j,k - 1), (j,k + 1), (j
+ 1,k - 1), (j + 1,k), (j + 1,k + 1)]:
if 0<=j0<m.nrows() and 0<=k0<m.ncols():
cuenta += m[j0,k0]
return cuenta
def paso(m):
F = m.nrows()
C = m.ncols()
nueva = matrix(F,C)
for j in range(F):
for k in range(C):
vecinos = cuenta_vecinos(m, j, k)
if vecinos == 3 or (m[j,k] and vecinos == 2):
nueva[j,k] = 1
else:
nueva[j,k] = 0
return nueva
def gameoflife(matriz, generaciones):
for g in range(generaciones):
matriz = paso(matriz)
return matriz

sage:
sage:
sage:
sage:
sage:

m=matrix(8,8)
m[3,4]=1
m[4,4]=1
m[2,4]=1
m[4,3]=1

74

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:

m[2,2]=1
matrix_plot(m).show()
m = gameoflife(m,1)
matrix_plot(m).show()

sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:

%time
m=matrix(8,8)
m[3,4]=1
m[4,4]=1
m[2,4]=1
m[4,3]=1
m[2,2]=1
a = animate([matrix_plot(gameoflife(m,j)) for j in range(1,10)])

3.6. Ejercicios

75

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

76

Captulo 3. Bloque II: Eficiencia

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPTULO 4

Bloque III: lgebra

La primera sesin consiste de ejercicios de aritmtica que se pueden resolver usando tcnicas bastante elementales.
Despus aprendemos a operar con elementos de anillos de enteros y anillos de polinomios en Sage. Finalmente,
aprendemos a hacer lgebra lineal sobre varios cuerpos de coeficientes y planteamos algunos problemas de formas
bilineales.

4.1 Aritmtica
En esta sesin vamos a trabajar con algunas funciones de Sage para trabajar con nmeros (algunas ya las hemos usado),
y a implementar algunos algoritmos clsicos de teora de nmeros.
Esta vez no vamos a separar la teora de los ejercicios . En realidad, no vamos a usar funciones de Sage ni caractersticas de Sage que no hayamos visto antes. Debajo tienes varios temas de teora de nmeros, con una pequea
introduccin y un recordatorio de algunas funciones que pueden ser tiles, y de varios ejercicios de dos grupos. El
primer grupo consiste de ejercicios bsicos que deberas intentar resolver en esta misma sesin. El segundo grupo
consiste de ejercicios para resolver en casa . La siguiente sesin resolveremos buena parte de los ejercicios.

4.1.1 Dgitos de un nmero en una base arbitraria


Aunque hemos escrito nuestra propia funcin para recuperar los dgitos de un nmero en una base B arbitraria (o casi),
tambin podemos usar el mtodo digits , que tienen los enteros de Sage ( Integer ).
sage: a = 17
sage: print a.digits(base=2)
sage: print a.digits(base=10)
sage: print a.digits(base=3)
[1, 0, 0, 0, 1]
[7, 1]
[2, 2, 1]

Sin embargo, no he podido encontrar la funcin inversa.


Ejercicio
Escribe una funcin que acepta como argumentos:

77

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

una lista de enteros (los dgitos)


un entero (la base)
y devuelve el entero que tiene esa lista de dgitos en esa base.
Ejercicios para casa

1.
Escribe una funcin que devuelva True si un nmero es divisible por 9 usando el criterio que dice: un nmero es
divisible por 9 si y slo si la suma de sus dgitos es divisible por 9. Si la suma de los dgitos es mayor que 9, puedes
llamar a la funcin recursivamente para decidir si verifica el criterio. No debera usar el resto de la divisin ( % ) en
ningn momento.

2.
El mtodo reverse invierte los elementos de una lista.
lista = [2,4,7]
lista.reverse()
print lista
> [7,4,2]

Utiliza este mtodo y las tcnicas de este captulo para construir:


Una funcin que acepta un nmero y te devuelve otro nmero, con las mismas cifras que el anterior pero en
orden inverso.
Una funcin que acepta un nmero y devuelve un booleano: True si es palndromo (se lee igual de derecha a
izquierda que de derecha a izquierda) y False si no lo es.

3.
http://projecteuler.net/index.php?section=problems&id=36
Encuentra todos los nmeros menores que un milln que son palndromos tanto en base 2 como en base 10 .
Por ejemplo, 585 se escribe 1001001001 en binario. Ambas expresiones se leen igual al derecho que al revs.

4.1.2 Nmeros primos


is_prime(k) : Comprueba si k es primo.
next_prime(k) : Devuelve el menor nmero primo mayor que k.
prime_range(k) : Lista de primos menores que k.
factor(k): factorizacin de k. list( factor(k) ) devuelve una lista de tuplas con cada factor y su
exponente correspondiente.

78

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Ejercicios

Infinitos primos en cualquier combinacin lineal


El teorema de Dirichlet dice que hay infinitos nmeros primos en una sucesin del tipo:
xj = a j + b
siempre que a y b sean nmeros primos entre s.
http://es.wikipedia.org/wiki/Teorema_de_Dirichlet
Dados tres nmeros a, b y N, encuentra el menor nmero primo de la forma aj+b con j mayor que N:

Teorema del nmero primo


El teorema del nmero primo afirma que el siguiente lmite existe y es igual a 1:
(x)
x x/ ln(x)
lm

donde (x) es la cantidad de nmeros primos menores que x y ln(x) es el logaritmo neperiano.
Escribe un cdigo que evale la funcin

(x)
x ln(x)

para un nmero x cualquiera.

Encuentra un nmero x tal que el lmite diste de 1 menos de 0.1


Ejercicios para casa

1.
Halla la secuencia ms larga de nmeros consecutivos menores que un milln que no contiene ningn primo.

2.
La funcin de Euler se puede calcular utilizando la factorizacin del nmero. Si k = pe11 . . . pekk , tenemos:
Y e
e 1
(k) =
(pj j pj j )
Utiliza el mtodo factor aplicado a nmeros enteros y la frmula de arriba para calcular el valor de la funcin de
Euler:
Compara el resultado con el obtenido usando la regla (k) es la cantidad de nmeros menores que k que son
primos relativos con k, o bien con alguna funcin de Sage que haga la misma tarea.

4.1.3 Algoritmo de Euclides


El algoritmo de euclides calcula el mximo comn divisor ( mcd ) de dos nmeros naturales n y m. El algoritmo se
basa en el siguiente principio: el mcd de dos nmeros n y m, con n<m, es tambin el mcd de n y m %n (el resto de
dividir m por n). De esta forma, hemos reducido el problema a otro con nmeros menores. Eventualmente, uno de los
dos nmeros ser 0, y entonces sabemos que mcd(0,m)=m.
4.1. Aritmtica

79

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Ejercicios

1.
Escribe una funcin que calcule el mximo comn divisor de dos nmeros siguiendo el algoritmo de Euclides.

2.
Escribe una funcin que acepte una lista de nmeros como argumento y devuelva el mximo comn divisor de los
nmeros de la lista.
Ejercicio para casa
Escribe una funcin que calcule el mximo comn divisor de dos nmeros calculando la factorizacin de cada uno de
ellos y despus escogiendo los factores comunes con el menor exponente.

4.1.4 Identidad de Bezout


Una identidad de Bzout muestra explcitamente el mcd d de m y n como una combinacin lineal de m y n con
coeficientes enteros:
d=um+vn

La funcin xgcd de SAGE implementa el algoritmo extendido de Euclides, que devuelve una tupla con el mcd y los
coeficientes de una identidad de Bzout:
(d,u,v)=xgcd(m,n)
sage: m=15
sage: n=21
sage: (d,u,v)=xgcd(m,n)
sage: print %d=( %d)* %d+( %d)* %d %(d,u,m,v,n)
3=(3)*15+(-2)*21

Identidad de Bzout con ms de dos nmeros.


Tambin podemos encontrar una identidad del tipo
d=

N
X

uj mj

j=1

donde d es el mximo divisor comn a todos los nmeros mj . De hecho, el proceso para encontrarlo se reduce al
anterior, usando induccin. Como ya sabemos resolver el caso N=2 , slo tenemos que aprender a reducir el caso de
N+1 nmeros al caso anterior.
Para unos nmeros m = m1 , . . . , mN +1 , comenzamos por encontrar una identidad de Bezout para los dos ltimos:
dN = v mN + w mN +1

80

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Despus aplicamos la hiptesis de induccin a m1 , . . . , mN 1 , dN :


d=

N
1
X

uj mj + uN dN

j=1

El mcd de m1 , . . . , mN 1 , dN es tambin el de m1 , . . . , mN +1 , as que slo tenemos que sustituir:


d=

N
1
X

uj mj + uN (v mN + w mN +1 )

j=1

Ejercicio
Escribe una funcin que acepta como argumento una lista de nmeros mj y devuelve una lista que contiene en primer lugar el mximo comn divisor de todos los elementos de la lista, seguido de los ceficientes uj que realizan la
identidad:
d=

N
X

uj mj

j=1

4.1.5 Teorema chino del resto


Con la identidad de Bzout podemos hacer funcionar el teorema chino del resto:
Si los nmeros m y n son primos entre s, entonces para cualesquiera a<m , b<n existe un nico nmero c menor que
n*m tal que el resto de dividir c entre m es a y el resto de dividir c entre n es b .
En lenguaje de congruencias, escribimos x a(mod m) para decir que el resto de dividir a por m es el mismo que el
resto de dividir x por m . El teorema chino del resto se escribe entonces:
x a(mod m), x b(mod n) x c(mod nm)

Se puede comprobar que podemos obtener c de la frmula:


c = bmv + anu

donde u y v vienen de una identidad de Bzout:


1 = nu + mv

Ejercicio
Escribe una funcin que, dados a, m, b y n, devuelva c.
Generaliza el resultado a varias congruencias x ai (mod mi ), para i = 1 . . . N , donde todos los nmeros mi
son primos entre s, y escribe una funcin que acepte una lista con los nmeros mi y otra con los nmeros ai y
devuelva un nmero c tal que:
4.1. Aritmtica

81

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

x ai (mod mi )i x c(mod m1 mN )

4.2 Grupos y Anillos


Sage tiene definidos un buen nmero de anillos, grupos y otras estructuras algebraicas.
Podemos operar con elementos que representan elementos de un anillo o un espacio vectorial, por ejemplo, adems de
con objetos que representan anillos, grupos, subgrupos, subespacios vectoriales y otras estructuras de nivel ms alto.
Muchos anillos comunes estn definidos en Sage:
ZZ : Z
Integers(m) : Zm ( Z/mZ)
QQ : Q
RR : R, representados por nmeros reales de doble precisin
CC : C, representados por nmeros reales de doble precisin
Adems, podemos usar otros constructores para definir anillos derivados, como el constructor de anillos de polinomios
PolynomialRing que veremos en detalle ms abajo.
sage: R1 = Integers(7)
sage: R2 = Integers(21)
sage: a = ZZ(3)
sage: b = R1(3)
sage: c = R2(3)
sage: print a, a.parent()
sage: print b, b.parent()
sage: print c, c.parent()
3 Integer Ring
3 Ring of integers modulo 7
3 Ring of integers modulo 21
sage: #Al calcular el inverso, Sage puede devolver el inverso
sage: #en el cuerpo de fracciones del anillo(en QQ en vez de ZZ)
sage: print a, 1/a, (1/a).parent()
sage: #Si el anillo es un cuerpo, obtenemos un elemento del mismo anillo
sage: print b, 1/b, (1/b).parent()
sage: #Si el anillo no es dominio de integridad, algunos elementos
sage: #no tienen inversos (en ningn cuerpo que contenga al anillo)
sage: print c, 1/c, (1/c).parent()
3 1/3 Rational Field
3 5 Ring of integers modulo 7
3
Traceback (most recent call last):
...
ZeroDivisionError: Inverse does not exist.

82

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

4.2.1 Trabajar mdulo m vs trabajar en Integers(m)


En el caso de Zm , podemos trabajar de forma ms abstracta con elementos de Integers(m) bien a nivel ms
bajo usando nmeros enteros normales, pero tomando restos mdulo m. Estudiar los pasos necesarios en detalle es
ilustrativo.
Suma y producto mdulo m
Para hacer sumas y productos sobre clases de equivalencia, podemos usar la suma y el producto habituales de nmeros
enteros, y tomar el resto de dividir por m :
m=31
a=12
b=23
s=(a+b) %m
p=(a*b) %m

Potencia mdulo m
Aunque podemos calcular la clase de congruencia de ap (mod m) calculando el entero ap y luego tomando el resto
mdulo m , debemos tener en cuenta que ap puede ser un nmero muy grande, y el ordenador puede dedicar al clculo
demasiado tiempo y memoria. En este caso, compensa reducir el nmero mdulo m despus de cada producto:
sage: def potencia1(x, n, m):
...
if n == 0:
...
return 1
...
elif n %2 == 0:
...
y = potencia1(x, n/2, m)
...
return (y*y) %m
...
else:
...
y = potencia1(x, (n-1)/2, m)
...
return (x*y*y) %m
sage: potencia1(3,8,10)
1

Tambin podemos usar la funcin power_mod:


sage: power_mod(3,8,10)
1

El algoritmo correspondiente para Integers(m) es vlido para cualquier anillo con unidad (el 1 que aparece en el cdigo
se transformar en la unidad del anillo).
sage: def potencia(x, n):
...
if n == 0:
...
return 1
...
elif n %2 == 0:
...
y = potencia(x, n/2)
...
return y*y
...
else:
...
y = potencia(x, (n-1)/2)
...
return x*y*y
sage: a = ZZ(3)
sage: b = R1(3)

4.2. Grupos y Anillos

83

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:
6561
2
9

c = R2(3)
print potencia(a, 8)
print potencia(b, 8)
print potencia(c, 8)

El inverso de a mdulo m, es decir, la clase b tal que a b 1(mod m), no se puede reducir a una operacin de
aritmtica usual. Una llamada a la funcin inverse_mod(a,m) devuelve el inverso de a mdulo m (este nmero se
calcula usando los coeficientes de una identidad de Bzout). La operacin equivalente en Integers(m) es 1/a .
sage: inverse_mod(3,7)
5
sage: R1 = Integers(7)
sage: b = R1(3)
sage: 1/b
5

4.2.2 Anillos de Polinomios


La sintaxis para definir un anillo de polinomios con coeficientes en otro anillo R es:
Pols.<t> = PolynomialRing(R)

Pols.<t> = R[t]

donde hemos definido el anillo de polinomios Pols con coeficientes en el anillo R y la variable independiente t .
sage:
sage:
sage:
sage:
sage:
sage:
sage:

#Definimos varios anillos de polinomios con coeficientes en distintos anillos


PR1.<t> = PolynomialRing(ZZ)
PR2.<x> = PolynomialRing(QQ)
PR3.<y> = PolynomialRing(RR)
PR4.<z> = PolynomialRing(CC)
R1 = Integers(7)
PR5.<u> = PolynomialRing(R1)

Una vez hemos definido el anillo, podemos usar la variable independiente para definir polinomios, operando con ella
como una variable ms.
sage: p=t^2-1
sage: q=x^2-1
sage: p.base_ring()
Integer Ring
sage: q.base_ring()
Rational Field

La variable p tiene tipo de datos Polinomio con coeficientes enteros.


La variable q tiene tipo de datos Polinomio con coeficientes racionales.
sage: p?
<html>...</html>

84

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: q?
<html>...</html>

Podemos evaluar un polinomio en un punto con la sintaxis


p(var=expresion)

donde var es la variable independiente del polinomio y expresion es cualquier expresin en SAGE que d como
resultado un elemento del anillo.
sage: print p(t=2)
sage: print q(x=1+2)
sage: numero=0
sage: print q(x=numero)
sage: print [q(x=j) for j in range(-3,4)]
3
8
-1
[8, 3, 0, -1, 0, 3, 8]

Para dibujar la grfica de un polinomio usamos el comando plot .


sage: #Dibuja el polinomio entre -2 y 2
sage: q.plot(-2,2)

4.2.3 Races de polinomios


Una raz de un polinomio p R[t] es un elemento x0 del anillo R tal que p(x0)=0 . El teorema fundamental del lgebra
afirma que un polinomio de grado n con coeficientes complejos tiene exactamente n races complejas. Sin embargo,
un polinomio con coeficientes enteros puede tener races que son nmeros racionales, reales algebraicos, o complejos.
El mtodo roots se puede llamar desde cualquier polinomio, y devuelve una lista de tuplas que contienen las races
del polinomio con sus multiplicidades. Atencin, si las races de un polinomio no estn en el anillo de sus coeficientes,
el mtodo roots no las devuelve, y tenemos que llamar a real_roots o complex_roots .

4.2. Grupos y Anillos

85

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: p.roots()
[(1, 1), (-1, 1)]
sage: p2=x^2-2
sage: p2.roots()
[]
sage: p2.real_roots()
[-1.41421356237310, 1.41421356237310]
sage: p3=x^2+1
sage: p3.roots()
[]
sage: p3.real_roots()
[]
sage: p3.complex_roots()
[-1.00000000000000*I, 1.00000000000000*I]
sage: r=z^2+1
sage: r.roots()
[(-1.00000000000000*I, 1), (1.00000000000000*I, 1)]

El mtodo roots devuelve slo las races enteras, y real_roots devuelve todas las races reales, y adems lo
hace de forma numrica. Sin embargo, SAGE tiene una alternativa a nuestro mtodo raices: extender el polinomio a
un polinomio con coeficientes racionales, y entonces el mtodo roots devuelve las races racionales.
sage: s1 = 2*t-1
sage: print s1.roots()
[]
sage: qs1 = s1.base_extend(QQ)
sage: print qs1.roots()
[(1/2, 1)]
sage: s1.real_roots()
[0.500000000000000]

En un anillo como Zm [u], se aplica la misma definicin de raz del polinomio.


sage: r = u^2+3
sage: r.roots()
[(5, 1), (2, 1)]
sage: #evaluamos r en todos los elementos de Z_7
sage: print [(j, r(u=j)) for j in srange(7)]
[(0, 3), (1, 4), (2, 0), (3, 5), (4, 5), (5, 0), (6, 4)]

4.2.4 Factorizacin de polinomios


Si un polinomio con coeficientes en Z, Q R no tiene tantas races (contando multiplicidades) como su grado, no se
puede escribir como producto de factores lineales. Aun as, se puede escribir como producto de factores irreducibles
(es decir, factores que no se pueden expresar como producto de polinomios de menor grado):
86

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

factor(q) q.factor() : la factorizacin del polinomio


list(q.factor()) : lista de tuplas (factor, multiplicidad)
q.is_irreducible() : True si y slo si q es irreducible.
sage: q=t^3 - 3*t^2 + 4
sage: print q.factor()
sage: print list(q.factor())
(t + 1) * (t - 2)^2
[(t + 1, 1), (t - 2, 2)]
sage:
sage:
t^3 t^3 -

print
print
3*t^2
3*t^2

q, q.is_irreducible()
q+1, (q+1).is_irreducible()
+ 4 False
+ 5 True

Lista de coeficientes
list(polinomio)

devuelve una lista con los coeficientes de polinomio , ordenados de menor a mayor grado.
sage: s1=2*z^2-3*z+1
sage: print s1
2.00000000000000*z^2 - 3.00000000000000*z + 1.00000000000000
sage: coefs = list(s1)
sage: print coefs
[1.00000000000000, -3.00000000000000, 2.00000000000000]

Ejercicio : Reconstruye el polinomio a partir de los coeficientes.


Ejemplo: [1,-3,3] -> 3t2 3t + 1

4.3 Ejercicios
4.3.1 1.
El teorema de Euler afirma que para un nmero a y un nmero m , se tiene:
a(m) 1(mod m)

para la funcin de Euler, siempre que a y m sean primos entre s.


Escribe un programa que compruebe el teorema para los nmeros m menores que 1000 y todos los nmeros
a<m.
Es cierto que si se verifica la igualdad, entonces necesariamente a y m son primos entre s? Busca un contraejemplo, o verfica la propiedad para todos los nmeros m menores que 1000.
Es (m) siempre el menor nmero posible que verifica esta identidad para todos los nmeros a que son primos
relativos con m ? Busca un contraejemplo, o verfica la propiedad para todos los nmeros m menores que 1000.
Dados dos nmeros a y m , encuentra el menor nmero positivo k tal que ak 1(mod m)

4.3. Ejercicios

87

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Dado un nmero m , encuentra el menor nmero positivo k tal que ak 1(mod m) para todo a que sea primo
relativo con m . Llamemos (m) al nmero k as obtenido.

4.3.2 2.
Como vimos en el ejercicio anterior, (m) no siempre coincide con (m). Para cada una de las preguntas siguientes,
busca un contraejemplo, o verifica la propiedad para todos los nmeros menores que 1000.
Coinciden siempre para los nmeros m = pj cuando p es primo?
Coinciden siempre para los nmeros m = pj cuando p es primo impar ?
Coinciden siempre para los nmeros m = pj q k cuando p y q son primos impares?

4.3.3 3. Ejercicio opcional


Intenta relacionar (pj q k ) con los valores de (pj ) y (q k ).
Conjetura una frmula que expresa (pj11 . . . pjLL ) en funcin de (pj11 ), (pj22 ),... hasta (pjLL ).

4.3.4 4. Races racionales de polinomios con coeficientes enteros


Comprueba el criterio que aprendimos en secundaria sobre las races racionales de un polinomio con
coeficientes enteros:
Cualquier raz racional de un polinomio con coeficientes enteros tiene un numerador que divide al trmino independiente y un denominador que divide al coeficiente del trmino de mayor grado.
Escribe cdigo que busque las races de un polinomio con coeficientes enteros segn este criterio
Escribe cdigo que compruebe que el resultado coincide con el resultado de llamar al mtodo roots, para un
conjunto de polinomios que te parezca lo bastante significativo.

4.3.5 5.
Investiga la siguiente pregunta:
Dado un polinomio p con coeficientes enteros, para cuntos valores de k el polinomio p+k es reducible? para cuntos
valores tiene al menos una raz (entera)?
Escribe una funcin que acepte como argumentos un polinomio p con coeficientes enteros y dos enteros k1 y k2
, y devuelva en una lista todos los enteros j entre k1 y k2 tal que p+j tiene alguna raz entera.
Escribe una funcin que acepte como argumentos un polinomio p con coeficientes enteros y dos enteros k1 y k2
, y devuelva en una lista todos los enteros j entre k1 y k2 tal que p+j es reducible sobre Q.
Te parece razonable la siguiente conjetura?: La cantidad de enteros j en el intervalo [-K, K] tal que p+j tiene
alguna raz entera crece como O(K 1/n ), donde n es el grado del polinomio p . Medita un momento al respecto.
Argumenta con datos empricos si la conjetura anloga para polinomios reducibles es razonable, o no, estimando
el ratio entre los polinomios que verifican una u otra condicin.

88

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

4.4 lgebra lineal


4.4.1 Espacios vectoriales
En Sage podemos trabajar con distintos cuerpos para los coeficientes de los espacios vectoriales. Las elecciones ms
usuales son:
QQ (o RationalField() ) el cuerpo de los nmeros racionales.
del cuerpo de los nmeros racionales.
QQbar (o AlgebraicField () ), representa la clausura algebraica Q
RDF (o RealDoubleField() ), nmeros reales de 64 bits.
CDF (o ComplexDoubleField() ), nmeros complejos de 64 bits.
SR , o expresiones simblicas. Cualquier expresin algebraica que contenga smbolos como pi, I, sqrt(2) pertenece a este anillo.
son computables, y sus implementaciones en Sage son exactas (en la documentacin de Sage:
Los cuerpos Q y Q
exact field), es decir, los clculos no acumulan errores de redondeo. Sin embargo, los tres ltimos cuerpos no tienen
aritmtica exacta, debido a los errores de redondeo. Esto significa que en estos cuerpos no se pueden hacer clculos
como la multiplicidad de las races de un polinomio o la forma de Jordan de una matriz, que sean inestables ante la
aparicin de errores numricos.
sage: V1 = VectorSpace(QQ,3)
sage: V2 = VectorSpace(RDF,3)
sage: V3 = VectorSpace(CDF,4)
sage: print V1
sage: print V2
sage: print V3
Vector space of dimension 3 over
Vector space of dimension 3 over
Vector space of dimension 4 over

#Numeros reales de precision doble


#Numeros complejos de precision doble

Rational Field
Real Double Field
Complex Double Field

Vectores
Los vectores pertenecen a un espacio vectorial concreto, aunque SAGE har las conversiones necesarias entre tipos de
datos si queremos hacer operaciones entre espacios vectoriales compatibles.
sage: #O tambien
sage: v1 = V1([1,1,1])
sage: v2 = V2([1,1,0])
sage: v3 = 2*v1+v2
sage: print v1 ,v1.parent()
sage: print v2 ,v2.parent()
sage: print v3 ,v3.parent()
(1, 1, 1) Vector space of dimension 3 over Rational Field
(1.0, 1.0, 0.0) Vector space of dimension 3 over Real Double Field
(3.0, 3.0, 2.0) Vector space of dimension 3 over Real Double Field
sage: #pero...
sage: v1 = V1([1,1])
Traceback (most recent call last):
...
TypeError: entries must be a list of length 3

4.4. lgebra lineal

89

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #ni tampoco...


sage: v1 = V2([1,1,1])
sage: v2 = V3([1,1,0,0])
sage: v3 = v1+v2
Traceback (most recent call last):
...
TypeError: unsupported operand parent(s) for +: Vector space of dimension 3 over Real Double Field

Tambin podemos usar vector sin indicar el espacio vectorial, y entonces Sage escoger como espacio ambiente
el anillo de coeficientes ms pequeo que contenga a las entradas. Si los coeficientes son enteros, como Z no es un
cuerpo, en vez de espacio vectorial, Sage habla de modulo, pero no es necesario preocuparnos por esa distincin.

sage: v1 = vector([1,1,1])
sage: v2 = vector([1/2,1,1])
sage: v3 = vector([1.0,1,0])
sage: print v1 ,v1.parent()
sage: print v2 ,v2.parent()
sage: print v3 ,v3.parent()
(1, 1, 1) Ambient free module of rank 3 over the principal ideal domain Integer Ring
(1/2, 1, 1) Vector space of dimension 3 over Rational Field
(1.00000000000000, 1.00000000000000, 0.000000000000000) Vector space of dimension 3 over Real Field w

Subespacios vectoriales
Podemos definir fcilmente el subespacio engrendrado por un conjunto de vectores, y despus hacer operaciones como
interseccin o suma de subespacios, o comprobaciones como igualdad o inclusin de subespacios.
sage: v1 = vector([1,1,1])
sage: v2 = vector([1,1,0])
sage: v3 = vector([1,0,1])
sage: #Hay que fijarse en el cuerpo de coeficientes
sage: L1 = V1.subspace([v1,v2])
sage: L1_bis = V2.subspace([v1,v2])
sage: print L1
sage: print L1_bis
Vector space of degree 3 and dimension 2 over Rational Field
Basis matrix:
[1 1 0]
[0 0 1]
Vector space of degree 3 and dimension 2 over Real Double Field
Basis matrix:
[1.0 1.0 0.0]
[0.0 0.0 1.0]

El grado (degree) al que se refiere arriba, es la dimensin del espacio ambiente. Podemos recuperar este espacio
directamente con el mtodo ambient_vector_space .
sage: #Dimension
sage: print dim(L1)
2
sage: #Grado
sage: print L1.degree()
3
sage: L1.ambient_vector_space()
Vector space of dimension 3 over Rational Field

90

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Muchos operadores actan sobre subespacios vectoriales, con los significados habituales. Cuando el smbolo usual
para la operacin no est en el teclado (como el operador de interseccin ), lo normal es usar un mtodo (como el
mtodo intersection ).
sage:
sage:
sage:
sage:
False
True

#Pertenencia al subespacio
print v3 in L1
v4 = vector([4,4,3])
print v4 in L1

sage: #Comprobacion de igualdad


sage: print L1 == V1
sage: print L1 == V1.subspace([v1,v1+v2])
False
True
sage:
sage:
sage:
sage:
True
False
True

#Comprobacion de inclusion
print L1 <= V1
print L1 >= V1
print L1 >= V1.subspace([v1])

Ejercicio resuelto
Definimos dos subespacios de Q3 :
L1 = h(1, 1, 0), (0, 0, 1)i

L2 = h(1, 0, 1), (0, 1, 0)i

Encuentra bases de los subespacios L1 L2 y L1 + L2


sage: v1 = vector([1,1,0])
sage: v2 = vector([0,0,1])
sage: v3 = vector([1,0,1])
sage: v4 = vector([0,1,0])
sage: L1 = V1.subspace([v1,v2])
sage: L2 = V1.subspace([v3,v4])
sage: #Interseccion de subespacios
sage: L3 = L1.intersection(L2)
sage: print Interseccin
sage: print L3
sage: print
sage: #Suma de subespacios
sage: L4 = L1 + L2
sage: print Suma
sage: print L4
sage: print L4 == V1
Interseccin
Vector space of degree 3 and dimension 1 over Rational Field
Basis matrix:

4.4. lgebra lineal

91

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

[1 1 1]
Suma
Vector space of degree 3 and dimension 3 over Rational Field
Basis matrix:
[1 0 0]
[0 1 0]
[0 0 1]
True

Bases de los espacios vectoriales


Como hemos visto, al definir subespacios mediante generadores, se construye una base escalonada del subespacio a partir de los generadores. Para imponer la base del espacio o subespacio, usamos el comando
subspace_with_basis .
sage: v1 = vector([1,1,0])
sage: v2 = vector([1,0,1])
sage: L1 = V1.subspace([v1,v2])
sage: print L1
sage: print L1.basis()
sage: print L1.basis_matrix()
Vector space of degree 3 and dimension 2 over Rational Field
Basis matrix:
[ 1 0 1]
[ 0 1 -1]
[
(1, 0, 1),
(0, 1, -1)
]
[ 1 0 1]
[ 0 1 -1]
sage: L1 = V1.subspace([v1,v2])
sage: L2 = V1.subspace([v1,v1+v2])
sage: print L1.basis()
sage: print L2.basis()
[
(1, 0, 1),
(0, 1, -1)
]
[
(1, 0, 1),
(0, 1, -1)
]
sage: L3 = V1.subspace_with_basis([v1,v2])
sage: print L1
sage: print L3
sage: #A pesar de tener distintas bases, ambos subespacios se declaran iguales
sage: print L1 == L3
sage: print L3.basis_matrix()
Vector space of degree 3 and dimension 2 over Rational Field
Basis matrix:
[ 1 0 1]
[ 0 1 -1]
Vector space of degree 3 and dimension 2 over Rational Field

92

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

User
[1 1
[1 0
True
[1 1
[1 0

basis matrix:
0]
1]
0]
1]

El mtodo coordinates nos da las coordenadas de un vector en la base del espacio.


sage: print L1.coordinates(2*v1+3*v2)
sage: print L2.coordinates(2*v1+3*v2)
sage: print L3.coordinates(2*v1+3*v2)
[5, 2]
[5, 2]
[2, 3]

4.4.2 Matrices
Para crear una matriz manualmente en SAGE, llamamos a matrix con el anillo de coeficientes como primer argumento. Despus introducimos los datos usando una de las dos formas siguientes:
Como una lista de listas, cada una de las cuales contiene una fila de la matriz:
#Matriz 2x4 con coeficientes en Q
M = matrix(QQ,[[0,1,0,0],[1,0,0,0]])

- Pasando el nmero de filas, el de columnas, y una sla lista con todos los elementos:
M = matrix(QQ, K1, K2, lista)

donde K1 es el nmero de filas y K2 el nmero de columnas y, en vez de pasar una lista con las filas, pasamos una
sla lista con K1xK2 elementos:
matrix(QQ, 2, 4, [1,2,3,4,5,6,7,8])
sage:
sage:
sage:
sage:

M1 = matrix(QQ,[[1,2,3,4],[4,2,3,1]])
M2 = matrix(QQ,3,3,[3,2,1, 1,2,3, 2,2,2])
show(M1)
show(M2)

1
4

3
1
2

4.4. lgebra lineal

2
2

3
3
2
2
2

4
1

1
3
2

93

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Mtodos de las matrices


Aparte de los clculos habituales con matrices, como determinante o rango, hay otros mtodos interesantes que conectan con lo visto antes. Mencionamos tres, pero recuerda que puedes ver una lista completa escribiendo el nombre
de tu matriz seguido de un punto y pulsando el tabulador:
M.kernel() : Ncleo de una matriz, visto como un subespacio vectorial (pon atencin a la diferencia entre
el kernel por la izquierda M.left_kernel() o por la derecha M.right_kernel() ; el mtodo kernel
a secas se corresponde con left_kernel )
M.image() : Imagen de una matriz, como subespacio vectorial
M.echelon_form() : forma escalonada
sage: M1 = matrix(QQ,[[1,2,3,4],[4,2,3,1]])
sage: show(M1)
sage: print M1.kernel()
#lo mismo que M1.left_kernel()
sage: print
sage: print M1.image()
sage: show( M1.echelon_form())
Vector space of degree 2 and dimension 0 over Rational Field
Basis matrix:
[]
Vector space of degree 4 and dimension 2 over Rational Field
Basis matrix:
[ 1
0
0 -1]
[ 0
1 3/2 5/2]

1
4
1
0

2
2
0
1

3
3

4
1

0 1
3
2

5
2

sage: M2 = matrix(QQ,3,3,[3,2,1, 5,2,1, 4,2,1])


sage: show(M2)
sage: print M2.kernel()
sage: print
sage: print M2.image()
Vector space of degree 3 and dimension 1 over Rational Field
Basis matrix:
[ 1 1 -2]
Vector space of degree 3 and dimension 2 over Rational Field
Basis matrix:
[ 1
0
0]
[ 0
1 1/2]

3
5
4

94

2
2
2

1
1
1

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #Una matriz invertible 4x4


sage: M3 = matrix(CDF, [[ 2, 0, -2, 2], [ 1, 3, 2, -3], [ 5, 1,
sage: show(M3)
sage: print M3.kernel()
sage: print
sage: print M3.image()
Vector space of degree 4 and dimension 0 over Complex Double Field
Basis matrix:
[]

8, -3], [ 5,

1,

Vector space of degree 4 and dimension 4 over Complex Double Field


Basis matrix:
[1.0
0
0
0]
[ 0 1.0
0
0]
[ 0
0 1.0
0]
[ 0
0
0 1.0]

2,0
0 2,0
1,0 3,0
2,0

5,0 1,0
8,0
5,0 1,0
4,0

2,0
3,0

3,0
1,0

Suma y productos de matrices


La suma de matrices y productos por vectores se comporta de la manera previsible, lanzando errores si las dimensiones no casan, y cambiando los tipos de datos segn sea necesario para hacer operaciones cuyos operandos tienen
coeficientes en cuerpos distintos, pero compatibles.
sage: M4 = identity_matrix(QQ, 4)
sage: show(M4)
sage: show(3*M4 + M3)

1
0

0
0

0
1
0
0

0
0
1
0

5,0
0 2,0
1,0 6,0
2,0

5,0 1,0 11,0


5,0 1,0
4,0

0
0

0
1

2,0
3,0

3,0
4,0

sage:
sage:
sage:
(3.0,
(1.0,

v = vector(CDF,[-1, 0.5, -0.5, 2 ])


print M3*v
print M3*v + 2*v
-6.5, -14.5, -4.5)
-5.5, -15.5, -0.5)

sage:
sage:
sage:
sage:
sage:

#Ejemplo: dos matrices cuadradas que no conmutan


M1 = matrix(QQ,2,2,[1,1,0,1])
M2 = matrix(QQ,2,2,[2,0,0,1])
show(M1*M2)
show(M2*M1)

4.4. lgebra lineal

95

4,

1]])

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

2
0

1
1

2
0

2
1

4.4.3 Obtener el subespacio dado por ecuaciones


Si tenemos un espacio dado por ecuaciones, basta poner los coeficientes de las ecuaciones en una matriz, y podemos
obtener el subespacio que define como el conjunto de vectores en los que todas las ecuaciones se anulan (es decir el
ncleo). Por ejemplo, escribimos las ecuaciones
x1 + 2x2
x1 + x3

= 0
= 0

en forma matricial:


1
1

2 0
0 1

Al haber elegido esta forma de escribir la matriz, el espacio que nos interesa es el kernel por la derecha (
right_kernel )
sage: M = matrix(QQ,2,3,[1,2,0, -1,0,1])
sage: M.right_kernel()
Vector space of degree 3 and dimension 1 over Rational Field
Basis matrix:
[
1 -1/2
1]

4.4.4 Obtener las ecuaciones de un subespacio


Si tenemos un subespacio, podemos obtener unas ecuaciones de esta forma:
el mtodo basis_matrix() devuelve una matriz que contiene los vectores de una base
las ecuaciones del subespacio son los covectores que se anulan en esos vectores (es decir, el ncleo de la matriz
anterior), que obtenemos con right_kernel()
Una base del ncleo nos da un conjunto minimal de ecuaciones que define el subespacio.
Ejercicio resuelto
Encuentra las ecuaciones del subespacio de C4 engendrado por [1, 1, 1, 1] y [1, 1, 0, 0]
sage: v1 = vector([1,1,1,1])
sage: v2 = vector([1,1,0,0])
sage: L1 = V3.subspace([v1,v2])
sage: #Ecuaciones del subespacio
sage: M = L1.basis_matrix()
sage: K = M.right_kernel()
sage: print K.basis()
[
(1.0, -1.0, 0, 0),
(0, 0, 1.0, -1.0)
]

96

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Ejercicio resuelto
Encuentra una base del subespacio de C4 dado por x1 + 2x2 x4 y una base de su interseccin con el subespacio
engendrado por [1, 1, 1, 1] y [1, 1, 0, 0].
sage: #Subespacio dado por x1 + 2*x2 -x4 en V(CDF,4)
sage: M = matrix(CDF,4,1,[1,2,0,-1])
sage: show(M)
sage: L2 = M.left_kernel()
sage: print L2
Vector space of degree 4 and dimension 3 over Complex Double Field
Basis matrix:
[1.0
0
0 1.0]
[ 0 1.0
0 2.0]
[ 0
0 1.0
0]

1,0
2,0

0
1,0

sage: L1.intersection(L2)
Vector space of degree 4 and dimension 1 over Complex Double Field
Basis matrix:
[1.0 1.0 3.0 3.0]

4.4.5 Autovalores, autoespacios, forma de Jordan


Como indicamos arriba, la forma de Jordan es inestable antes pequeos errores. Esto hace imposible calcular la forma
de Jordan usando aritmtica aproximada con errores de redondeo. La eleccin del cuerpo de coeficientes se vuelve por
tanto muy importante.
sage: M = matrix(QQ,3,3,[0,1,0,1,0,0,0,0,1])
sage: print M
sage: print M.eigenvalues()
sage: show( M.eigenvectors_left())
sage: print M.jordan_form()
[0 1 0]
[1 0 0]
[0 0 1]
[-1, 1, 1]
[-1| 0| 0]
[--+--+--]
[ 0| 1| 0]
[--+--+--]
[ 0| 0| 1]

[(1, [(1, 1, 0)] , 1) , (1, [(1, 1, 0) , (0, 0, 1)] , 2)]

4.4. lgebra lineal

97

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: M = matrix(QQ,3,3,[ 8, 6, 3, -1,


sage: show(M)
sage: print M.eigenvalues()
sage: show( M.eigenvectors_left())
sage: print M.jordan_form()
[7, 14, 14]
[ 7| 0 0]
[--+-----]
[ 0|14 1]
[ 0| 0 14]

8
1
4

8, -3, 4, 10, 19])

6
3
8 3
10 19

 

 
1
, 1 , (14, [(1, 6, 3)] , 2)
7, 1, 1,
2
Tambin podemos obtener la matriz de paso:
sage: M = matrix(QQ,3,3,[ 8, 6, 3, -1,
sage: M.jordan_form(transformation=True)
(
[ 7| 0 0]
[--+-----] [
1
0
1]
[ 0|14 1] [
0
-7
0]
[ 0| 0 14], [-1/3
14
2]
)

8, -3, 4, 10, 19])

La siguiente matriz tiene autovalores en C \ Q


sage: M = matrix(QQ,3,3,[0,1,0,-1,0,0,0,0,1])
sage: print M
sage: print M.eigenvalues()
sage: show( M.eigenvectors_left())
[ 0 1 0]
[-1 0 0]
[ 0 0 1]
[1, -1*I, 1*I]

[(1, [(0, 0, 1)] , 1) , (-1*I, [(1, 1*I, 0)] , 1) , (1*I, [(1, -1*I, 0)] , 1)]

sage: print M.jordan_form()


Traceback (most recent call last):
...
RuntimeError: Some eigenvalue does not exist in Rational Field.

Como vemos, si hay autovalores en C \ Q, SAGE no calcula la forma de Jordan. Una solucin es ampliar los coeficientes a Q, el cuerpo de los nmeros algebraicos, que contiene todas las races de ecuaciones con coeficientes en
Q.

98

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #El cuerpo QQbar contiene las raices de todos los


sage: #polinomios con coeficientes en QQ
sage: M2 = M.base_extend(QQbar)
sage: print M2.jordan_form()
[
1|
0|
0]
[----+----+----]
[
0|-1*I|
0]
[----+----+----]
[
0|
0| 1*I]

La forma de Jordan slo est definida en anillos de coeficientes exactos, como QQ, o QQbar, pero no tiene sentido en
anillos con precisin limitada, porque la forma de Jordan es numricamente inestable. Intentar calcular una forma de
Jordan en un cuerpo con errores numricos simplemente genera un error.
sage: M = matrix(CDF,3,3,[ 8, 6, 3, -1, 8, -3, 4, 10, 19])
sage: print M.jordan_form()
Traceback (most recent call last):
...
ValueError: Jordan normal form not implemented over inexact rings.

Sin embargo, aunque trabajemos con nmeros de como flotante, todava tiene sentido hablar de autovalores.
sage: M = matrix(CDF,3,3,[ 8, 6, 3, -1, 8, -3, 4, 10, 19])
sage: print M.eigenvalues()
[7.0 - 9.39502740013e-17*I, 14.0000000001 + 1.5006305546e-07*I, 13.9999999999 - 1.5006304995e-07*I]

Los autoespacios tambin son problemticos, y es mejor evitarlos si usamos aritmtica aproximada.
sage: M = matrix(QQ,2,2,[ 1, 1, 0, 1])
sage: print M.eigenspaces()
[
(1, Vector space of degree 2 and dimension 1 over Rational Field
User basis matrix:
[0 1])
]

sage: M = matrix(CDF,2,2,[ 1, 1, 0, 1])


sage: print M.eigenspaces()
[(1.0, Vector space of degree 2 and dimension 1 over Complex Double Field
User basis matrix:
[-2.22044604925e-16
1.0]), (1.0, Vector space of degree 2 and dimension 1 over Complex
User basis matrix:
[ 0 1.0])]

4.5 Ejercicios
Buena parte de los siguientes ejercicios estn extrados de las hojas de problemas de lgebra Lineal.

4.5.1 1.
Decide si cada uno de los siguientes conjuntos es una base de R3 . Si lo es, encuentra las coordenadas en la nueva base de v = (1,
B1 = {(1, 1, 1), (0, 1, 1), (0, 0, 1)}, B2 = {(0, 1, 2), (1, 2, 3), (2, 3, 4)}
B3 = {(0, 1, 1), (1, 0, 1), (1, 1, 0)}, B4 = {(1, 1, 1), (1, 2, 3), (1, 2, 3)}
4.5. Ejercicios

99

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

4.5.2 2.
Escribe una funcin que acepte como argumento una lista de vectores, y te devuelva un subconjunto maximal de
vectores linealmente independientes extrados de la lista anterior. El mtodo consiste en recorrer la lista, y quedarte
slo con los vectores que son linealmente independientes con los vectores que has elegido antes.
Ejemplos:
{(1,0,0),(2,0,0),(1,1,0),(0,1,0),(2,1,0)} \-> {(1,0,0),(1,1,0)}
{(1,0,0),(1,0,1),(2,0,0),(1,1,0),(0,1,0),(2,1,0),(0,0,1)} \-> {(1,0,0),(1,0,1),(1,1,0)}

4.5.3 3.
Encuentra la inversa de la matriz siguiente usando el mtodo de Gauss-Jordan: aumenta la matriz con la matriz identidad y usa operaciones de fila para reducir la matriz hasta la identidad:

2
1 1
A = 3 1 2
2 1
2

http://es.wikipedia.org/wiki/Eliminaci%C3%B3n_de_Gauss-Jordan#Encontrando_la_inversa_de_una_matriz
Usa para ello los mtodos: augment , add_multiple_of_row y otros similares que encuentres entre los mtodos
de las matrices. Compara el resultado con la matriz inversa obtenida de forma directa.
Cuando termines, escribe cdigo que resuelva este problema en general.

4.5.4 4.
Se consideran los subespacios V y W del espacio vectorial real R3 . Las ecuaciones paramtricas de V son
x1
x2
x3

= +
= +
= + + 2
, , R

siendo x1 x2 + 2x3 = 0 la ecuacin (implcita) de $W$. Hallar


Bases de V , V + W y V W .
Ecuaciones (implcitas) de V W .
Una base de un complementario de V + W .
Las coordenadas de (2, 3, 5) respecto de la base de V + W obtenida en el primer apartado.

4.5.5 5.
Hallar la forma de Jordan y una matriz de paso de las siguientes matrices.

100

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

4
6

A1 =
5
1

0
3
0
0

4 11
3
9

5 7
1
5

3
0

A5 =
1
0

1
2
1
0

1 1
0
1

1
0
0
2

2
1

A9 =
2
1

0
1
2
3
0 1

2
4
6
1 1 1

Busca mtodos para calcular el polinomio caracterstico (characteristic polynomial) y el polinomio mnimo
(minimal polynomial) de estas matrices. Factoriza ambos polinomios y comprueba que el polinomio mnimo
divide al caracterstico.
Calcula los autoespacios asociados a cada autovalor calculando el ncleo de (A I)k . Compara el resultado
con los autoespacios calculados antes.

4.5.6 6: Divisor fijo de un polinomio


Para cada k, definimos el polinomio de una variable:
pk (x) =

1
x(x 1) . . . (x k + 1)
k!

Los polinomios pk forman una base del espacio de polinomios, al igual que los monomios xk .
Comprueba que a pesar de tener coeficientes fraccionarios, todos los polinomios de arriba toman siempre valores
enteros cuando x es un entero (es decir, tras evaluar unos cuantos de esos polinomios en unos cuantos enteros x
slo se obtienen valores enteros).
Dado un polinomio cualquiera, expresado como una expresin simblica en la variable x, encuentra sus coeficientes en la base formada por los pk .
El divisor fijo de un polinomio es el mximo comn divisor de los valores que toma, cuando x toma como valores
todos los nmeros enteros.
Genera unos cuantos polinomios aleatorios con divisor fijo mayor que 1. Define el nmero h del polinomio como
el mximo comn divisor de los coeficientes de p en la base pk . Conjetura una relacin entre el nmero h y el
divisor fijo de un polinomio arbitrario.

4.6 Formas bilineales


Continuamos la sesin de lgebra lineal con varias aplicaciones a formas bilineales y productos escalares. Vamos a
representar una forma bilineal por la matriz simtrica que la define. Por simplicidad, fijaremos el espacio vectorial y
la forma bilineal como variables globales mientras sea conveniente.

4.6.1 Matrices definidas positivas


Cundo es una matriz simtrica definida positiva? Sabemos que una matriz simtrica es diagonalizable. La matriz es
definida positiva sii todos sus autovalores son positivos.
sage: def es_definida_positiva(M):
...
if not M.is_symmetric():
...
raise ValueError, "La matriz no es simetrica"
...
return all(l>0 for l in M.eigenvalues())

4.6. Formas bilineales

101

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:
sage:
sage:
True
False

B = matrix(QQ,3,3,[1,0,1, 0,2,0,
show(B)
print es_definida_positiva(B)
B = matrix(QQ,3,3,[1,0,1, 0,2,0,
show(B)
print es_definida_positiva(B)

1,0,3])

1,0,-3])

1
0
1

1
0
1

0
2
0
0
2
0

1
0
3

1
0
3

Ejercicio
Escribe una funcin que haga el mismo papel, pero usando el criterio de Sylvester ( una matriz es definida
positiva sii los determinantes de sus menores principales son positivos).
Escribe una funcin anloga para matrices definidas negativas.
Usa el mtodo random_matrix para generar 100 matrices con las que comprobar que ambos mtodos dan el
mismo resultado. (observacin: random_matrix genera matrices no necesariamente simtricas, pero hay un
truco cannico para obtener una matriz simtrica a partir de una matriz arbitraria).

4.6.2 Trabajar con un producto escalar distinto del habitual


Como sabemos de las clases de lgebra lineal, es fcil trabajar con un producto escalar distinto del habitual reemplazando los productos escalares por los productos escalares con la matriz B.
sage: #globales
sage: V = VectorSpace(QQ,3)
sage: B = matrix(QQ,3,3,[1,0,1,

0,2,0,

1,0,3])

Ejercicio (en clase)


Implementa los dos mtodos siguientes:
sage: def son_ortogonales(W1, W2):
...
Comprueba si los dos subespacios de V
...
que se pasan como argumentos son ortogonales
...

...
return ...
sage: def complemento_ortogonal(W):
...
Devuelve el complemento ortogonal en V del subespacio
...
que se pasa como argumento
...

...
return ...

102

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: W = V.subspace(list(random_matrix(QQ,2,3)))
sage: L = complemento_ortogonal(W)
sage: print son_ortogonales(L,W)
#Deberia ser True
sage: W = V.subspace(list(random_matrix(QQ,1,3)))
sage: L = complemento_ortogonal(W)
sage: print son_ortogonales(L,W)
#Deberia ser True

4.6.3 Bases ortonormales


Fijamos el espacio vectorial V y el producto escalar B.
sage: V = VectorSpace(QQ,3)
sage: B = matrix(QQ,3,3,[1,0,1,
sage: base = V.basis()
sage: print base
[
(1, 0, 0),
(0, 1, 0),
(0, 0, 1)
]

0,2,0,

1,0,3])

Ejercicio en clase
Escribe una funcin que compruebe si una base dada es ortogonal.
Lo mismo de antes, pero para una base ortonormal.

4.6.4 Mtodo de Gram-Schmidt


El mtodo de Gram-Schmidt permite obtener una base ortonormal a partir de una base arbitraria.
Comenzamos con una lista vaca que contendr en todo momento un sistema ortonormal. Para cada vector de la base
original, repetimos los pasos siguientes:
Resta a ese vector su componente en cada uno de los vectores del sistema ortonormal.
Divide el resultado por su norma para obtener un vector unitario.
Ade el resultado al sistema ortonormal.
sage: def gram_schmidt(base):
...
base_gm = []
...
for u in base:
...
w = u - sum((u*B*v)*v for v in base_gm)
...
base_gm.append( w/sqrt(w*B*w) )
...
return base_gm
sage: B = matrix(QQ,3,3,[1,-1,1, -1,2,0,
sage: gm = gram_schmidt(base)
sage: gm
[(1, 0, 0), (1, 1, 0), (-2, -1, 1)]

4.6. Formas bilineales

1,0,3])

103

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Ejercicio en clase
Verifica que el resultado es una base ortonormal, para 100 bases generadas aleatoriamente usando random_matrix
.
Ejercicio
Escribe una funcin que acepte como argumentos un vector y un subespacio, y devuelva la proyeccin ortogonal
del vector en el subespacio (usando el producto escalar B definido globalmente).
Reescribe el mtodo de Gram-Schmidt usando esta funcin.
Una matriz simtrica definida positiva representa un producto escalar. Como hemos visto, podemos encontrar una base
ortonormal para ese producto escalar.
Si tenemos dos productos escalares, podemos encontrar una base que es ortonormal para el primer producto escalar y
ortogonal para el segundo. El procedimiento es el siguiente:
Encuentra una base ortonormal para el primer producto escalar.
En esa base, el primer producto escalar tiene como matriz la identidad, y el segundo tiene una matriz B, que es
simtrica.
Gracias al teorema espectral, es posible encontrar una matriz ortonormal tal que B es diagonal. En otras palabras,
existe una base ortonormal para el primer producto escalar en la que la matriz del segundo producto escalar es
diagonal. Es decir, que esa base tambin es ortogonal para el segundo producto escalar.
Ejercicio
Encuentra una base ortonormal para el producto escalar B1 y ortogonal para el producto escalar B2.
sage: B1 = matrix(RDF,3,3,[1,0,1, 0,2,0, 1,0,3])
sage: B2 = matrix(RDF,3,3,[3,-1,1, -1,2,0, 1,0,1])

104

Captulo 4. Bloque III: lgebra

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPTULO 5

Bloque IV: Combinatoria

Aprendemos tcnicas para construir familias de objetos combinatorios, usando recursin de forma explcita y tambin
construyendo rboles de objetos combinatorios. Repasamos las construcciones usuales, ya implementadas en Sage,
y las herramientas para resolver problemas de teora de grafos. Como alternativa cuando la enumeracin explcita es
inviable, usamos el mtodo de Monte Carlo.

5.1 Combinatoria
Algunos problemas de combinatoria requieren gran cantidad de clculos y se impone una solucin con el ordenador.
Muchos otros problemas se pueden resolver con papel y lpiz, pero requieren tiempo e ingenio. Sin embargo, escribir
programas de ordenador que resuelven los problemas por fuerza bruta suele ser bastante fcil. El problema estriba
en que la cantidad de casos a examinar a menudo se dispara, y un programa poco fino slo podr resolver los casos
ms sencillos. A veces, so es suficiente para darnos una idea, pero en general es ms recomendable aprender a hacer
programas ms eficientes.
En este bloque escribiremos programas que exploran conjuntos de posibilidades muy amplios. Es muy importante
comenzar siempre por aplicar nuestros programas con valores muy pequeos, medir bien los tiempos, y slo lanzar
los programas con los valores que nos interesan cuando pensemos que el programa podr manejarlo.

5.1.1 Cmo iterar sobre todos los posibles valores de muchas variables
Comenzamos un truco muy prctico que puede servir como alternativa a anidar muchos bucles for. Supn que tenemos
K variables que pueden tomar el valor 0 1, y queremos recorrer todas las posibles combinaciones de valores para
cada variable.
Si por ejemplo, K=10, la cantidad total de posibilidades es 210 = 1024, algo perfectamente asumible. Anidar 10 bucles
es muy poco prctico, y obliga a hacer cambios sustanciales si aumentamos el nmero de variables:
for k1 in [0,1]:
for k2 in [0,1]:
for k3 in [0,1]:
for k4 in [0,1]:
for k5 in [0,1]:
...

En su lugar, podemos usar el siguiente truco: cuando un nmero k recorre los nmeros desde 0 hasta 2k 1, sus bits
recorren todas las posibles combinaciones de 0 y 1 para K variables. Podemos usar, por ejemplo, el mtodo digits()
105

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

pasando los argumento base=2 y padto=K , para que extraiga los dgitos binarios (bits) y devuelva siempre listas
de longitud K.
Este mtodo lo tienen todos los enteros de SAGE (cuidado: esto nos obliga a usar srange en vez de range , para
tener enteros de SAGE en vez de enteros de la mquina).
Con este truco, no necesitamos saber el nmero de variables al escribir el cdigo.
sage: #Truco para iterar K variables que pueden tomar el valor 0 o 1
sage: #K no es conocido a priori
sage: K=4
sage: for k in srange(2^K):
...
vars = k.digits(base=2,padto=K)
...
print vars
[0, 0, 0, 0]
[1, 0, 0, 0]
[0, 1, 0, 0]
[1, 1, 0, 0]
[0, 0, 1, 0]
[1, 0, 1, 0]
[0, 1, 1, 0]
[1, 1, 1, 0]
[0, 0, 0, 1]
[1, 0, 0, 1]
[0, 1, 0, 1]
[1, 1, 0, 1]
[0, 0, 1, 1]
[1, 0, 1, 1]
[0, 1, 1, 1]
[1, 1, 1, 1]

5.1.2 Subconjuntos (y sublistas)


La tcnica anterior permite iterar sobre todas las sublistas de una lista dada. Dada una lista con k elementos, usamos k
variables que pueden tomar los valores 0 y 1. Si la variable xj vale 1, incluimos el elemento j-simo en la sublista y, si
vale 0, no lo incluimos.
Ejercicio: usa la tcnica anterior para mostrar todas las sublistas de una lista dada.
sage: lista = [a,b,c,d]

Tambin podemos usar la funcin powerset , definida en SAGE que hace la misma tarea.
sage:
...
[]
[a]
[b]
[a,
[c]
[a,
[b,
[a,
[d]
[a,
[b,
[a,
[c,
[a,

106

for sublista in powerset(lista):


print sublista

b]
c]
c]
b, c]
d]
d]
b, d]
d]
c, d]

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

[b, c, d]
[a, b, c, d]

Ejemplo: gcd de un subconjunto de nmeros


Cuntos conjuntos de nmeros enteros entre 2 y K tienen mximo comn divisor igual a 1?
sage:
sage:
sage:
sage:
...
...
sage:
52

K = 7
numeros = range(2,K+1)
mcd_es_1 = 0
for subconjunto in powerset(numeros):
if gcd(subconjunto)==1:
mcd_es_1 += 1
print mcd_es_1

Consideramos el ratio entre el nmero de conjuntos de nmeros enteros entre 2 y K cuyo mximo comn divisor es
igual a 1 frente al total de subconjuntos de enteros entre 2 y K: existe el lmite de esta sucesin?
sage: probs = []
sage: for K in range(3,15):
...
numeros = range(2,K+1)
...
mcd_es_1 = 0
...
for subconjunto in Subsets(numeros):
...
if gcd(subconjunto)==1:
...
mcd_es_1 += 1
...
total = 2^(K-1)
...
probs.append((K,mcd_es_1/total))
sage: point(probs).show(ymin=0,ymax=1)

Observacin : la funcin powerset devuelve un objeto similar a un generador. Recordamos que al construir un
generador el cdigo no se ejecuta, y no se almacenan en memoria los resultados, sino que slo se van construyendo
segn son necesarios, por ejemplo al iterar powerset en un bucle for. Sin embargo, difiere de un generador en que no
se agota al iterarlo. Cada vez que recorremos el objeto, se crea un generador nuevo.

5.1. Combinatoria

107

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: ps = powerset([1, 2, 3])


sage: all(1 in s for s in ps)
sage: for k in ps:
...
print k
[1]
[2]
[1, 2]
[3]
[1, 3]
[2, 3]
[1, 2, 3]

5.1.3 Recorrer otras listas de objetos combinatorios


Los objetos combinatorios suelen admitir una definicin recursiva que permite construir unos a partir de otros. Si
representamos los objetos primordiales (una lista vaca, un rbol con un slo nodo ...) como las races de un rbol, y
utilizamos la definicin recursiva para construir las sucesivas generaciones de nodos, podemos generar los objetos de
forma bastante limpia, recorriendo el rbol que comienza en cada nodo base (sea en recorrido o en profundidad).
Lo importante de este enfoque es concretar la definicin recursiva en una funcin que acepta un nodo como argumento
y devuelve la lista con sus hijos, y separar esta parte de la definicin del recorrido del grafo. Para esta segunda parte
podemos usar por ejemplo la funcin SearchForest definida en Sage, que hace un recorrido en profundidad de
un bosque, que no es otra cosa que una unin disjunta de rboles. Tambin podemos escribir nuestro propio cdigo
genrico para esta tarea.
Como ejemplo, usamos esta idea para construir las particiones de un nmero k: todas las formas de sumar k con
enteros positivos menores que k. Escribimos cada particin de k como una lista de enteros que suma k, y para evitar
repeticiones las listamos slo una vez en orden decreciente. Podemos construir todas las particiones parciales de k,
que son listas decrecientes cuya suma es a lo sumo k. Los hijos de una particin parcial L son las particiones parciales
que comienzan por L y tienen un elemento ms que L. Lo dibujamos como un grafo:

108

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: total = 5
sage: def hijos(ls):
...
Los hijos de una lista ls son las listas que comienzan por ls
...
y tienen un elemento ms que ls
...

...
suma = sum(ls)
...
minimo = min(ls) if ls else total
...
return [ls + [j] for j in range(1, min(total - suma, minimo) + 1)]
sage: hijos([2])
[[2, 1], [2, 2]]
sage: #SearchForest necesita una lista de nodos raices y la funcion que
sage: #genera los hijos
sage: S = SearchForest([[]], hijos)
sage: #Si pasamos el resultado a lista recorremos todas las particiones parciales
sage: list(S)
sage: #Si queremos slo las particiones completas, basta con filtrarlas
sage: list(ls for ls in S if sum(ls)==total)
[[1, 1, 1, 1, 1], [2, 1, 1, 1], [2, 2, 1], [3, 1, 1], [3, 2], [4, 1], [5]]

Antes de poder reusar este cdigo, observamos que la funcin hijos usa la variable total definida en el mbito principal.
Para pasar este cdigo a funcin, podemos simplemente anidar la funcin hijos dentro de la nueva funcin para que
5.1. Combinatoria

109

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

pueda acceder al argumento de la funcin principal:


sage: def particiones(total):
...
def hijos(ls):
...
suma = sum(ls)
...
minimo = min(ls) if ls else total
...
return [ls + [j] for j in range(1, min(total - suma, minimo) + 1)]
...
...
return [ls for ls in SearchForest([[]], hijos) if sum(ls)==total]
sage: list(particiones(5))
[[1, 1, 1, 1, 1], [2, 1, 1, 1], [2, 2, 1], [3, 1, 1], [3, 2], [4, 1], [5]]

Ya hemos encontrado otros ejemplos de este patrn, como por ejemplo generar todos los polinomios de cierto grado
con coeficientes en un cierto rango. Repetimos el ejercicio con esta visin, declarando que los hijos del polinomio p
son los polinomios px+j, para j en el rango de coeficientes en el que trabajamos.

sage: m = 3
sage: R.<x> = PolynomialRing(Integers(m))
sage: pols1 = [R(j) for j in srange(m)]
sage: grado_max = 3
sage: def children(p):
...
if p.degree()>=grado_max or p == 0:
...
return []
...
else:
...
return [p*x+j for j in srange(m)]
sage: S = SearchForest(pols1, children)
sage: list(S)
[0, 1, x, x^2, x^3, x^3 + 1, x^3 + 2, x^2 + 1, x^3 + x, x^3 + x + 1, x^3 + x + 2, x^2 + 2, x^3 + 2*x,

5.1.4 Objetos combinatorios tiles definidos en Sage


En Sage estn definidos muchos objetos combinatorios tiles, que podemos usar y combinar de varias formas. Todos
tienen una estructura uniforme que permite usarlos de varias formas. Todas estos objetos combinatorios son perezosos,
e incluso podemos definir objetos infinitos. En general usan un mtodo para enumerar todos los objetos y otro distinto
para contarlos , que es importante porque en muchos casos se puede contar el nmero de objetos en muy poco tiempo
aplicando frmulas, mientras que enumerarlos todos podra llevar mucho tiempo. En general, usaremos los siguientes
mtodos:
cardinality() para obtener el nmero de elementos
list() para obtener la lista de todos los elementos
random_element() para obtener un elemento aleatorio
Iteraciones del tipo for objeto in Clase para recorrer los objetos sin necesidad de cargarlos todos en
memoria.
Conjuntos y subconjuntos
Probemos todo sto con los conjuntos ( Set ) y subconjuntos ( Subsets ) :

sage: S = Set([1,2,3,4])
sage: S1 = Subsets(S)
sage: S1.list()
[{}, {1}, {2}, {3}, {4}, {1, 2}, {1, 3}, {1, 4}, {2, 3}, {2, 4}, {3, 4}, {1, 2, 3}, {1, 2, 4}, {1, 3,

110

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: S2 = Subsets(Subsets(S))
sage: S2.random_element()
{{3}, {4}, {1, 2, 3}, {1, 4}, {}, {2, 3, 4}, {1, 2, 4}, {3, 4}, {1, 3, 4}, {2, 3}, {1, 3}, {2}}

sage: #Por si acaso no te creias que para calcular el cardinal no hace falta
sage: #calcular todos los elementos
sage: S3 = Subsets(Subsets(Subsets(S)))
sage: S3.cardinality()
20035299304068464649790723515602557504478254755697514192650169737108940595563114530895061308809333481

Combinaciones
Dada una lista de tamao k, las combinaciones de j elementos de la lista son todas las posibles sublistas con j elementos
extrados de la lista. En SAGE, podemos recorrer las combinaciones con un generador, de forma similar a la que
usamos para powerset:
for c in Combinations(lista,j):
...haz algo con c...
sage: K=5
sage: for c in Combinations(range(2,K+1),2):
...
print c
[2, 3]
[2, 4]
[2, 5]
[3, 4]
[3, 5]
[4, 5]

Ejemplo: Cul es la probabilidad de que dos nmeros elegidos al azar entre 2 y K sean primos entre s?
Usando la frmula:
probabilidad =

casos favorables
casos posibles

slo tenemos que extraer todos los posibles pares de nmeros entre 2 y K, y contar cuntas parejas estn formadas por
dos nmeros primos entre s.
sage:
sage:
sage:
...
...
sage:
5

K=5
primos_relativos = 0
for c in Combinations(range(2,K+1),2):
if gcd(c)==1:
primos_relativos += 1
print primos_relativos

sage: binomial(10,2)
45

Existe el lmite cuando K ?


sage: probs = []
sage: for K in range(3,40):
...
primos_relativos = 0
...
for c in Combinations(range(2,K+1),2):
...
if gcd(c)==1:

5.1. Combinatoria

111

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
primos_relativos += 1
...
total = binomial(K-1,2)
...
probs.append((K,primos_relativos/total))
sage: print probs
[(3, 1), (4, 2/3), (5, 5/6), (6, 3/5), (7, 11/15), (8, 2/3), (9, 19/28), (10, 11/18), (11, 31/45), (1
sage: point(probs).show(ymin=0,ymax=1)

Ms
Permutaciones: Permutations(lista) recorre todas las ordenaciones de lista .
Particiones: Partitions (k) recorre las formas de sumar k con enteros positivos. Adems admite argumentos extra para limitar ms las particiones (aunque atencin: lee bien la documentacin porque en algunos casos
el resultado no es claro).
Vectores de enteros: IntegerVectors recorre las formas de sumar un entero con enteros no negativos.
Tambin admite argumentos extra.
WeightedIntegerVectors recorre las formas de sumar un entero usando los enteros de una lista dada
(de cuntas formas puedo pagar 33 euros usando billetes de 5 y monedas de 2?)
CartesianProduct calcula el producto cartesiano de dos conjuntos.

sage: Permutations(srange(4)).list()
[[0, 1, 2, 3], [0, 1, 3, 2], [0, 2, 1, 3], [0, 2, 3, 1], [0, 3, 1, 2], [0, 3, 2, 1], [1, 0, 2, 3], [1
sage: Partitions(5).list()
[[5], [4, 1], [3, 2], [3, 1, 1], [2, 2, 1], [2, 1, 1, 1], [1, 1, 1, 1, 1]]

sage: IntegerVectors(4, max_length=3).list()


[[4], [3, 1], [3, 0, 1], [2, 2], [2, 1, 1], [2, 0, 2], [1, 3], [1, 2, 1], [1, 1, 2], [1, 0, 3], [0, 4
sage: #Todas las formas de sumar 8 usando monedas de 1, 2 y 5
sage: WeightedIntegerVectors(8, [1,2,5]).list()
[[1, 1, 1], [3, 0, 1], [0, 4, 0], [2, 3, 0], [4, 2, 0], [6, 1, 0], [8, 0, 0]]

112

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: WeightedIntegerVectors(33,[2,5]).list()
[[4, 5], [9, 3], [14, 1]]

5.2 Ejercicios
5.2.1 1.
Escribe cdigo para recorrer todos los posibles valores de un conjunto de variables x1,x2,...,xK, donde x1 toma
los valores 0,1,...,B1-1; x2 toma los valores 0,1,...,B2-1;... y xK toma los valores 0,1,...,BK-1. Los valores B1,...,
BK estn almacenados en una lista.
Utiliza el cdigo anterior para contar el nmero de posibilidades para las que la suma de los valores de las
variables es mayor o igual que un nmero M.

5.2.2 2.
Consideramos matrices 3x3 cuyas entradas son 0 1. El total de matrices de este tipo es 29 = 512. Cuenta el nmero
de estas matrices cuyo determinante es 1 mdulo 2 (es decir, el determinante es impar).
Equivalentemente, cuenta el nmero de matrices 3x3 con coeficientes en Z2 cuyo determinante es no nulo.

5.2.3 3.
Encuentra todas las formas de colocar 8 reinas en un tablero de ajedrez de forma que ninguna reina amenace a otra.
Plantea el problema como un rbol de soluciones parciales partiendo de un tablero vaco y agregando una sla reina
cada vez. Usa SearchForest para recorrer el grafo.
Nota: el enfoque anterior, tomado de forma literal, da lugar a un algoritmo muy ineficiente. Es buena idea asumir de
partida que cada reina tiene que ir en una columna distinta y anotar slo la fila que ocupa la reina i-sima.

5.2.4 4.
Escribe una funcin genrica que recibe una lista de nodos raices y una funcin que construye los hijos y
devuelva todos los nodos del rbol engendrado (al igual que hicimos con SearchForest), pero realizando una
bsqueda en anchura .
Modifica el cdigo anterior para que devuelva slo las hojas (nodos que no tienen hijos).
Aplica esta funcin a algn ejemplo de la hoja.

5.2.5 5.
Escribe cdigo para recorrer todas las posibles listas que constan de 3 elementos extrados de una lista dada, en todas
las ordenaciones posibles . Usa tres estrategias:
Usa la funcin de Sage que extrae listas de tres elementos, y despus usa la funcin de Sage que recorre las
permutaciones de las listas de 3 elementos.
Usa primero la funcin de Sage que recorre las permutaciones de la lista dada, y despus extrae listas de tres
elementos que respetan el orden dado.

5.2. Ejercicios

113

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Escribe todas las elecciones de sublistas como un rbol cuyo nodo raz es una sublista vaca, y tal que en cada
eleccin eliges un nuevo elemento de la lista. Nota: recuerda lo que significa un elemento mutable en python!

5.2.6 6. Monedas
Nota. Los siguientes problemas de probabilidad se pueden resolver a mano, pero ahora puedes escribir cdigo que
utiliza la frmula:
casos favorables
casos posibles
para calcular la probabilidad contando uno por uno los casos favorables.
Calcula la probabilidad de que, al lanzar 10 monedas (equilibradas), obtengas al menos 4 caras.
Calcula la probabilidad de que, al lanzar 10 monedas (equilibradas), obtengas el mismo nmero de caras con las
5 primeras monedas que con las 5 siguientes.
Calcula la probabilidad de que, al lanzar 15 monedas (equilibradas), las primeras 10 monedas contengan al
menos el doble de caras que las 5 monedas siguientes.
Indicacin: Usa k variables 0/1 para representar un posible lanzamiento de monedas (1:cara, 0:cruz). Para cada apartado, escribe una funcin que acepte como argumento una lista con los valores de las variables y devuelva True si es
un caso favorable y False si no lo es.

5.2.7 7. Cartas
Nos planteamos ahora resolver problemas de cartas. El primer paso es representar las cartas de la baraja. Usaremos la
baraja espaola de 40 cartas para agilizar los clculos.
Por ejemplo, podemos representar cada carta por una tupla que contiene su nmero (de 1 a 10, donde 8, 9 y 10 son las
figuras) y su palo (por ejemplo, usando la baraja espaola: o (oros), c (copas), e (espadas), b (bastos) ).
Crea una lista con las 40 cartas de la baraja espaola, representadas de la forma descrita arriba. Ejemplos: (4,c)
4 de copas; (10,b) 10 de bastos (rey de bastos).
Para calcular una probabilidad con la frmula
casos favorables
casos posibles
necesitamos, por un lado, recorrer todas las posibles extracciones de cinco cartas de una baraja y, por otro lado,
discriminar si una mano de cinco cartas es un caso favorable o no.
Escribe una funcin que acepte como argumento una lista con 5 cartas y devuelva True si esa mano es una
escalera y False si no lo es.
Lo mismo de antes, para un pker.
Calcula la probabilidad de obtener un pker, o una escalera, en la primera mano.
Indicacin : si tu cdigo tarda ms de unos pocos segundos, ser mejor que uses una baraja ms pequea hasta estar
seguro
 de que todo funciona. Ten en cuenta que las posibles extracciones de cinco cartas de una baraja espaola son
40
= 658008. Usa una baraja con menos palos y menos nmeros, y haz que tu cdigo imprima todos los casos
5
favorables.
Si lo prefieres, calcula la probabilidad de algunas jugadas de mus. Como las manos slo tienen 4 cartas, hay
muchas menos posibilidades.
114

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

5.3 Contar y enumerar


En esta sesin vamos a enumerar varias familias de objetos combinatorios, igual que hicimos en la primera sesin,
pero ahora adems de enumerar objetos los contaremos sin enumerarlos, para hacer ms patente la relacin entre una
construccin recursiva y las frmulas recursivas para el nmero de elementos que son habituales en combinatoria. El
primer ejemplo est resuelto, los dos siguientes son ejercicios que resolveremos en clase, y los dos ltimos son una
prctica a entregar.

5.3.1 Ejemplo resuelto : particiones de n con k partes fijas


Estudiamos las formas de descomponer un nmero n como suma de exactamente k enteros positivos. Listamos los
nmeros de cada particin de mayor a menor, para evitar repeticiones. Observamos que las particiones pertenecen a
dos clases:
Las que terminan en 1.
Las que tienen todos sus elementos mayores o iguales a 2.
Esta idea nos permite construir las particiones recursivamente:
Generamos las particiones de n-1 en k-1 partes iguales, y aadimos un 1 al final para dar cuenta del primer grupo
de particiones.
Generamos las particiones de n-k en k partes iguales, y sumamos 1 a cada elemento para dar cuenta del segundo
grupo de particiones.
sage: def particiones_k(total, partes):
...
if partes == total:
...
return [[1]*total]
...
if partes == 1:
...
return [[total]]
...
if not(0 < partes < total):
...
return []
...
ls1 = [p+[1] for p in particiones_k(total-1, partes-1)]
...
ls2 = [[parte+1 for parte in p] for p in particiones_k(total-partes, partes)]
...
return ls1 + ls2
sage: particiones_k(8,3)
[[6, 1, 1], [5, 2, 1], [4, 3, 1], [4, 2, 2], [3, 3, 2]]
sage:
sage:
sage:
...
...
sage:
[[5],

#Las particiones sin restricciones (que vimos en la sesion 1)


#se pueden obtener facilmente a partir de particiones_k
def particiones(total):
return [ls for j in range(1,total+1)
for ls in particiones_k(total, j)]
particiones(5)
[4, 1], [3, 2], [3, 1, 1], [2, 2, 1], [2, 1, 1, 1], [1, 1, 1, 1, 1]]

Si slo queremos contar el nmero de particiones de n con k elementos (en adelante pk (n)), las reglas de recursin
anteriores se traducen en la siguiente ecuacin de recurrencia:
pk (n) = pk1 (n 1) + pk (n k)

junto con los datos de frontera:


p1 (n) = pn (n) = 1

5.3. Contar y enumerar

115

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

y:
pk (n) = 0 si k 0, k > n, n 0

sage: def n_particiones_k(total, partes):


...
if partes == total:
...
return 1
...
if partes == 1:
...
return 1
...
if not(0 < partes < total):
...
return 0
...
n1 = n_particiones_k(total-1, partes-1)
...
n2 = n_particiones_k(total-partes, partes)
...
return n1 + n2
sage: n_particiones_k(8,3)
5

Obviamente, se tarda menos tiempo en contar las posibilidades que en construirlas todas explcitamente.
sage: time n_particiones_k(60,10)
62740
Time: CPU 0.10 s, Wall: 0.10 s
sage: time ls = particiones_k(60,10)
Time: CPU 2.19 s, Wall: 2.20 s

5.3.2 Cascadas de llamadas recursivas


En el ejemplo anterior hemos transportado la definicin recursiva directamente a nuestro cdigo, pero vimos en el
bloque II que este enfoque nos puede traer problemas, al usar una definicin recursiva para calcular los nmeros de
fibonacci:
def fibo(n):
if n<2:
return 1
return fibo(n-1) + fibo(n-2)

En este ejemplo paradigmtico, estimamos que para calcular el nmero de fibonacci n-simo se hacan aproximadamente tantas llamadas recursivas a fibo como el nmero de fibonacci n-simo (ms exactamente, el nmero I(n)
de llamadas a fibo para calcular fibo(n) es: I(n-1)+I(n-2)+1). Usando la tcnica del profiler de la sesin b3s3,
medimos exactamente el nmero de llamadas para confirmar este hecho:
sage: def fibo(n):
...
if n<2:
...
return 1
...
return fibo(n-1) + fibo(n-2)

Observamos la columna ncalls que indica el nmero de llamadas a una funcin. Comprueba para unos pocos valores
que se satisface la frmula de recurrencia mencionada.
sage:
sage:
sage:
sage:

116

#importamos los modulos cProfile y pstats para ver las estadisticas


#de cuanto tiempo se pasa en cada parte del codigo
import cProfile, pstats
#No necesitamos entender la siguiente linea:

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #tomalo como una version avanzada de timeit


sage: cProfile.runctx("fibo(10)", globals(), locals(), DATA + "Profile.prof")
sage: s = pstats.Stats(DATA + "Profile.prof")
sage: #Imprimimos las estadisticas, ordenadas por el tiempo total
sage: s.strip_dirs().sort_stats("time").print_stats()
Mon Feb 21 22:57:30 2011
/home/sageadm/nbfiles.sagenb/home/pang/295/data/Profile.prof
179 function calls (3 primitive calls) in 0.000 CPU seconds
Ordered by: internal time
ncalls
177/1
1
1

tottime
0.000
0.000
0.000

percall
0.000
0.000
0.000

cumtime
0.000
0.000
0.000

percall
0.000
0.000
0.000

filename:lineno(function)
___code___.py:3(fibo)
<string>:1(<module>)
{method disable of _lsprof.Profiler objects}

<pstats.Stats instance at 0x9a68d40>

En nuestro ejemplo anterior, ocurre algo similar, porque al llamar a particiones_k(n,k) llamamos recursivamente a particiones_k(n-k,k) y a particiones_k(n-1,k-1) , lo que eventualmente implica que
llamaremos varias veces a particiones_k(n,k) con los mismos argumentos.
A modo de confirmacin, el sentido comn nos dice que para calcular n_particiones_k(n,k) , necesitaremos como mucho n*k llamadas recursivas a n_particiones_k , lo que corresponde a llamar a la funcin
con todos los posibles valores menores que n y con los menores que k. Sin embargo, el nmero de llamadas a
n_particiones_k(40,10) es 9111, mucho mayor que 400.
sage: #importamos los modulos cProfile y pstats para ver las estadisticas
sage: #de cuanto tiempo se pasa en cada parte del codigo
sage: import cProfile, pstats
sage: #No necesitamos entender la siguiente linea:
sage: #tomalo como una version avanzada de timeit
sage: cProfile.runctx("n_particiones_k(40,10)", globals(), locals(), DATA + "Profile.prof")
sage: s = pstats.Stats(DATA + "Profile.prof")
sage: #Imprimimos las estadisticas, ordenadas por el tiempo total
sage: s.strip_dirs().sort_stats("time").print_stats()
Mon Feb 21 22:57:30 2011
/home/sageadm/nbfiles.sagenb/home/pang/295/data/Profile.prof
9113 function calls (3 primitive calls) in 0.014 CPU seconds
Ordered by: internal time
ncalls
9111/1
1
1

tottime
0.014
0.000
0.000

percall
0.000
0.000
0.000

cumtime
0.014
0.014
0.000

percall
0.014
0.014
0.000

filename:lineno(function)
___code___.py:3(n_particiones_k)
<string>:1(<module>)
{method disable of _lsprof.Profiler objects}

<pstats.Stats instance at 0x9a68ef0>

Una solucin rpida


En otros lenguajes como Haskell , las definiciones anteriores no provocan esta cascada de llamadas recursivas . Esto
se debe a que Haskell es un lenguaje funcional puro, lo que implica entre otras cosas que todas las llamadas a una
funcin con los mismos argumentos producen siempre el mismo resultado. Gracias a este conocimiento, el compilador

5.3. Contar y enumerar

117

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

no necesita ejecutar una funcin la segunda vez que la llaman con unos argumentos dados, porque ya ha calculado el
valor una vez.
En python, sto no es necesariamente cierto (piensa por ejemplo en las funciones que generan nmeros aleatorios), pero podemos crear una funcin que guarde los valores de las llamadas en memoria, usando el decorador
@cached_function , que altera una funcin para que almacene los valores de cada llamada, y as evitar calcular
dos veces el valor de la funcin con los mismos argumentos.
sage: @cached_function
sage: def n_particiones_k_cached(total, partes):
...
if partes == total:
...
return 1
...
if partes == 1:
...
return 1
...
if not(0 < partes < total):
...
return 0
...
n1 = n_particiones_k_cached(total-1, partes-1)
...
n2 = n_particiones_k_cached(total-partes, partes)
...
return n1 + n2

Verificamos que el nmero de llamadas recursivas desciende drsticamente (en este caso, a 248).
sage: #importamos los modulos cProfile y pstats para ver las estadisticas
sage: #de cuanto tiempo se pasa en cada parte del codigo
sage: import cProfile, pstats
sage: #No necesitamos entender la siguiente linea:
sage: #tomalo como una version avanzada de timeit
sage: cProfile.runctx("n_particiones_k_cached(40,10)", globals(), locals(), DATA + "Profile.prof")
sage: s = pstats.Stats(DATA + "Profile.prof")
sage: #Imprimimos las estadisticas, ordenadas por el tiempo total
sage: s.strip_dirs().sort_stats("time").print_stats()
Mon Feb 21 22:57:31 2011
/home/sageadm/nbfiles.sagenb/home/pang/295/data/Profile.prof
4630 function calls (4019 primitive calls) in 0.017 CPU seconds
Ordered by: internal time
ncalls
365
365/1
248/1
365
365
365
365
730
365
365
365
365
1
1

tottime
0.011
0.002
0.001
0.001
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000

percall
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000

cumtime
0.013
0.017
0.017
0.013
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.017
0.000

percall
0.000
0.017
0.017
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.000
0.017
0.000

filename:lineno(function)
function_mangling.py:205(fix_to_pos)
cachefunc.py:96(__call__)
___code___.py:3(n_particiones_k_cached)
cachefunc.py:188(get_key)
{range}
{method has_key of dict objects}
{sorted}
{method append of list objects}
function_mangling.py:261(<genexpr>)
cachefunc.py:119(get_cache)
{len}
{method keys of dict objects}
<string>:1(<module>)
{method disable of _lsprof.Profiler objects}

<pstats.Stats instance at 0x9a7ccb0>

Cuestin : Vuelve a ejecutar el cdigo de arriba, sin modificarlo. Explica el resultado. Usa la accin Restart Worksheet, y ejectalo de nuevo (ejecuta antes el cuadro que define n_particiones_k_cached ). Explica el resultado.

118

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

5.3.3 Ejercicios
Palabras con 1s y 0s sin dos 1s seguidos
Estudiamos las palabras formadas por 0 y 1 tales que no hay dos unos consecutivos. Hay dos palabras de longitud 1
con esta propiedad:0 y 1, tres de longitud 2: 00, 01, 10, 5 de longitud 3: 000, 001, 010, 100, 101. Las
palabras se pueden generar de forma recursiva siguiendo la regla siguiente:
Las palabras que terminan en 0 se pueden extender con un 0 o con un 1
Las palabras que terminan en 1 slo se pueden extender con un 0.
Tambin puedes seguir la siguiente regla equivalente para generar todas las palabras de longitud k:
Aade un 0 a todas las palabras de longitud k-1.
Aade un 01 a todas las palabras de longitud k-2.
Ejercicio
Escribe cdigo que genere todas las palabras de este tipo hasta longitud k.
Escribe (y justifica) una ecuacin de recursin para el nmero total de palabras de este tipo: te resulta familiar?
Construye los caminos colocando las palabras en un rbol y usando SearchForest. Los hijos de una palabra
que termina en 0 son la misma palabra seguida de 0 y de 1, mientras que el nico hijo de una palabra que
termina en 1 es la misma palabra seguida de 0. En este caso el bosque tiene dos nodos races, el 0 y el 1.
Caminos en una malla
El tringulo de Pascal registra el nmero de caminos desde el vrtice superior hasta un vrtice cualquiera, tales que en
cada paso descendemos de una fila a la inmediatamente inferior mediante una de las aristas descendientes: bien a la
izquierda bien a la derecha.

5.3. Contar y enumerar

119

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Codificamos los caminos como secuencias con las letras I y D. Por ejemplo el camino que est arriba a la izquierda del
diagrama corresponde a la secuencia IDDD, mientras que el camino de abajo a la derecha corresponde a DDDI.
La siguiente recursin permite encontrar todos los caminos que llevan del vrtice superior al vrtice en la fila n y la
columna k:
Encuentra todos los caminos que llevan a la posicin (n-1, k-1) y adeles una D.
Encuentra todos los caminos que llevan a la posicin (n-1, k) y adeles una I.
Ejercicio :
Aplica la recursin anterior para calcular todos los
 caminos que llevan del vrtice superior al vrtice en la fila n
y la columna k. Deberas obtener exactamente nk tales caminos.
Escribe (y justifica) una ecuacin de recursin para el nmero total de caminos basada en la recursin anterior:
te resulta familiar?
Construye los caminos colocando los caminos parciales en un rbol y usando SearchForest. Los caminos parciales son caminos desde el vrtice superior hasta otro vrtice que son susceptibles de ser continuados hasta el
vrtice (n,k) siguiendo las reglas del juego.

5.3.4 Entrega b4
Los dos ejercicios que siguen constituyen la entrega del bloque IV, que por supuesto es opcional. Vale un total de 7
puntos.

120

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Formas de agrupar antes de operar


Hay dos formas de agrupar tres letras (por ejemplo, para realizar una operacin matemtica asociativa sobre varios
smbolos, pero sin alterar el orden de las letras)
(a(bc)), ((ab)c)

Hay cinco formas de agrupar cuatro letras:


(a((bc)d)), (a(b(cd))), ((ab)(cd)), (((ab)c)d), ((a(bc))d)

La siguiente recursin permite encontrar todas las formas. Partimos de una secuencia de letras, abcd:
Partimos la secuencia en todos los posibles puntos: [a, bcd], [ab, cd], [abc,d]
Agrupamos cada parte recursivamente de todas las formas posibles. Por ejemplo, bcd se puede agrupar como
(b(cd)) y como ((bc)d)
Unimos cada forma de agrupar las letras de la izquierda con cada forma de agrupar las letras de la derecha, y
encerramos el resultado entre parntesis. Ej, a, ((bc)d) -> (a((bc)d)) (las letras sueltas no necesitan parntesis)
Ejercicio
Aplica la recursin anterior para construir todas las formas de agrupar n letras.
Escribe (y justifica) una ecuacin de recursin para el nmero total de posibilidades. Cuenta el nmero de
posibilidades G(n) para n desde 1 hasta 10.
Caminos montonos
Consideramos ahora los caminos montonos , en la forma siguiente: todos los caminos que unen el vrtice (0,0) con
el vrtice (n,n) avanzando hacia la derecha (D) y hacia arriba (A), tales que en todo momento hemos avanzado al
menos tantos pasos hacia la derecha como hemos avanzado hacia arriba.

Sea C(n) el nmero total de caminos que llegan al vrtice (n,n) partiendo del vrtice (0,0). Llamaremos a estos caminos
diagonales porque terminan en la misma diagonal en la que empiezan.

5.3. Contar y enumerar

121

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Cmo podemos encontrar una frmula de recursin para C(n)? Observamos que todos los caminos siguen la siguiente
estructura: comienzan con un movimiento a la derecha, luego sigue un camino diagonal (posiblemente vaco), luego
viene un movimiento hacia arriba que compensa el primer movimiento a la derecha, y luego viene otro camino diagonal
(posiblemente vaco). En el siguiente diagrama, los puntos rojo y verde marcan el principio y el fin del primer camino
diagonal.

Ejercicio
Aplica la recursin anterior para construir todos los caminos . Codifica los caminos como secuencias con las
letras D y A, que indican en qu momentos debemos movernos a la derecha o hacia arriba. Por ejemplo, el
diagrama de abajo a la derecha corresponde al camino DADADADA, y el de arriba a la izquierda al camino
DDDDAAAA .
Escribe (y justifica) una ecuacin de recursin para el nmero total de caminos de este tipo. Calcula C(n) para n
desde 1 hasta 10.
Sustituye la letra D por el carcter ( y la letra A por el carcter ). Describe el resultado.
Los ejemplos estn extrados del captulo 6 del libro de texto de la asignatura de matemtica discreta, que puedes
consultar como referencia:
http://www.uam.es/personal_pdi/ciencias/gallardo/cap6-MD-2010-2011.pdf
del libro de Sage en francs:
http://sagebook.gforge.inria.fr/
y de la wikipedia:
http://en.wikipedia.org/wiki/Catalan_number

5.3.5 Entrega b4
Los dos ejercicios que siguen constituyen la entrega del bloque IV, que por supuesto es opcional. Vale un total de 7
puntos.

122

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

5.4 Grafos
En esta leccin vamos a estudiar las posibilidades que ofrece SAGE para trabajar con grafos .
Un grafo consiste de un conjunto de vrtices y otro conjunto de aristas que unen algunos de los vrtices. En un grafo
no dirigido las aristas no tienen direccin, mientras que en los grafos dirigidos debemos distinguir entre la arista que
une el vrtice v1 con el v2 de la arista que une el vrtice v2 con el v1.

5.4.1 Introducir Grafos en SAGE


Algunos grafos especiales
Existen constructores para muchos de los grafos no dirigidos ms famosos, dentro del mdulo graphs . Por ejemplo:
Grafo completo: el que tiene todas las aristas que unen cada par de vrtices
Grafo cclico: una circuito simple
Grafo del n-cubo
...
sage: g1 = graphs.CompleteGraph(5)
sage: show(g1.plot())

sage: g2 = graphs.CycleGraph(4)
sage: show(plot(g2))

5.4. Grafos

123

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: g3 = graphs.CubeGraph(3)
sage: show(plot(g3))

124

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

El dibujo anterior confunde dos de los vrtices. Leemos la documentacin de Graph.plot para encontrar la forma de
mejorar el dibujo
sage: g3.plot?
<html>...</html>
sage: #Una solucion: usar otro "layout"
sage: show(plot(g3, layout=spring))

5.4. Grafos

125

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Como de costumbre, usando el tabulador accedemos a una lista completa con todos los grafos disponibles.
sage: graphs.
Traceback (most recent call last):
...
SyntaxError: invalid syntax

Tambin tenemos alguns familias de grafos famosos en la librera digraphs .


sage: show(plot(digraphs.Circuit(5)))

126

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

..index:: Graph, matriz de adyacencia, DiGraph


Introducir un grafo mediante la matriz de adyacencia
Tambin podemos introducir un grafo usando la matriz de adyacencia : una matriz KxK (donde K es el nmero de
vrtices), que tiene un 1 en la posicin i,j si y slo si hay una arista entre los vrtices i y j . Para grafos no dirigidos, la
matriz debe ser simtrica.
Nota : En la documentacin de Graph puedes encontrar otras formas de introducir un grafo (por ejemplo, mediante
un diccionario asigna a cada vertice la lista de sus vecinos).
sage:
sage:
sage:
sage:

M = matrix([[0,1,0,0],[1,0,0,0],[0,0,0,1],[0,0,1,0]])
show(M)
g4 = Graph(M)
show(g4, layout=circular)

0
1

0
0

5.4. Grafos

1
0
0
0

0
0
0
1

0
0

1
0

127

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Podemos construir del mismo modo un grafo dirigido, con una matriz no necesariamente simtrica, usando DiGraph
.
sage:
sage:
sage:
sage:

M = matrix(ZZ,[[0,0,0,0],[1,0,0,0],[0,0,0,1],[0,0,1,0]])
show(M)
g4 = DiGraph(M)
show(g4, layout=circular)

0
1

0
0

128

0
0
0
0

0
0
0
1

0
0

1
0

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

El mtodo adjacency_matrix devuelve la matriz de adyacencia de un grafo, independientemente de cmo lo


introdujimos.
sage: g1.adjacency_matrix()
[0 1 1 1 1]
[1 0 1 1 1]
[1 1 0 1 1]
[1 1 1 0 1]
[1 1 1 1 0]

5.4.2 Operaciones con grafos


Tambin podemos construir nuevos grafos a partir de otros.
La suma de grafos devuelve la unin de los dos grafos.
El producto de un grafo por un entero repite un grafo.
sage: g5 = g1 + g2
sage: show(g5,layout=circular)

sage: g6 = g4*3
sage: show(g6,layout=circular)

5.4. Grafos

129

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

5.4.3 Modificar grafos


Podemos aadir y quitar vrtices y aristas a grafos existentes usando add_vertex , add_edge , delete_vertex
, delete_edge .
sage:
sage:
sage:
sage:
sage:
sage:
sage:

130

g7 = 2*g2
show(g7,layout=spring)
g7.add_edge(0,4)
g7.add_edge(1,5)
g7.add_edge(2,6)
g7.add_edge(3,7)
show(g7,layout=spring)

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Podemos partir de un grafo vaco y aadir los vrtices y aristas necesarios:


sage:
sage:
sage:
sage:
sage:

g8 = Graph()
g8.add_vertex(0)
g8.add_vertex(1)
g8.add_edge(0,1)
plot(g8)

5.4. Grafos

131

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Ejercicio
Modifica el grafo g6 aadiendo un vrtice y uniendo todos los otros vrtices al nuevo vrtice.

5.4.4 Propiedades de los grafos


Podemos verificar un buen nmero de propiedades de un grafo usando los mtodos adecuados. Por ejemplo:
is_connected : comprueba si el grafo es conexo
is_planar : comprueba si el grafo es plano . Un grafo es plano si se pueden dibujar los vrtices y las aristas
en un plano sin que las aristas se intersequen.
is_eulerian : comprueba si el grafo tiene un circuito euleriano . Un circuito en un grafo es una sucesin
de aristas adyacentes que comienza y termina en el mismo vrtice. Un circuito euleriano es un circuito que pasa
exactamente una vez por cada arista.
is_tree : comprueba si el grafo es un rbol . Un rbol es un grafo conexo que no tiene ningn circuito
cerrado .
sage:
sage:
sage:
sage:
sage:
True
False
True
False

132

print g1.is_connected()
print g1.is_planar()
print g1.is_eulerian()
print g1.is_tree()
show(g1.plot())

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Criterio de Euler
Segn el criterio de Euler, un grafo tiene un circuito euleriano si y slo todos los vrtices tienen grado par.

Ejercicio
Comprueba el criterio de Euler para decidir si un grafo es euleriano.
sage: g5.degree()
[4, 4, 4, 4, 4, 2, 2, 2, 2]

5.4.5 Isomorfismo de grafos


Dos grafos son isomorfos si y slo si existe una biyeccin del conjunto de vrtices del primero en el conjunto de
vrtices del segundo tal que dos vrtices estn unidos en el primer grafo si y slo si los vrtices correspondientes estn
unidos en el segundo.
En dos grafos isomorfos, los vrtices pueden tener nombres distintos y estar colocados en distintas posiciones, pero
todas las relaciones de incidencia y todas las propiedades de grafos como conexin, planaridad etcetera son idnticas.
sage: print g7.is_isomorphic(g3)
sage: print g7 == g3
sage: print g3.vertices()

5.4. Grafos

133

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: print g7.vertices()


True
False
[000, 001, 010, 011, 100, 101, 110, 111]
[0, 1, 2, 3, 4, 5, 6, 7]

Pregunta: cul de los grafos que definimos antes es isomorfo al siguiente grafo?
M = matrix(ZZ,[[0,1,1,0],[1,0,0,1],[1,0,0,1],[0,1,1,0]])
show(M)
g9=Graph(M)
show(g9,layout=circular)

sage:
sage:
sage:
sage:

0
1

1
0

1
0
0
1

1
0
0
1

0
1

1
0

La funcin graphs genera un grafo de cada clase de isomorfismo de grafos con un cierto nmero de vrtices.
sage: for g in graphs(4):
...
if g.is_connected():
...
print g.adjacency_matrix()
...
print
[0 1 1 1]
[1 0 0 0]
[1 0 0 0]
[1 0 0 0]
[0
[1
[1
[0

1
0
0
0

134

1
0
0
1

0]
0]
1]
0]

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

[0
[1
[1
[0

1
0
1
0

1
1
0
1

0]
0]
1]
0]

[0
[1
[1
[0

1
0
0
1

1
0
0
1

0]
1]
1]
0]

[0
[1
[1
[0

1
0
1
1

1
1
0
1

0]
1]
1]
0]

[0
[1
[1
[1

1
0
1
1

1
1
0
1

1]
1]
1]
0]

sage: L = list(graphs(4))

El siguiente mtodo es una forma de dibujar un montn de grafos en poco espacio.


sage: graphs_list.show_graphs(L)

5.4. Grafos

135

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Podemos generar todos los grafos con un cierto nmero de vrtices y contar el nmero de ellos que verifican una cierta
propiedad.
sage: L = [g for g in graphs(4) if g.is_connected()]
sage: print len(L)
sage: graphs_list.show_graphs(L)
6

5.5 Ejercicios
5.5.1 1.
Cuales de los siguientes grafos son planos: graphs.HouseXGraph, graphs.DesarguesGraph,
graphs.OctahedralGraph y graphs.DiamondGraph ? Cules tienen circuitos eulerianos?
Qu propiedades especiales tienen los grafos de las
graphs.CircularLadderGraph ? son planos? son rboles?

familias

graphs.StarGraph

Para qu valores de k el grafo graphs.CubeGraph(k) tiene un circuito euleriano?


Para qu valores de k el grafo graphs.CompleteGraph(k) tiene un circuito euleriano?
Para qu valores de k el grafo graphs.CompleteGraph(k) es plano? Conjetura una respuesta, y confirma
la respuesta buscando en interneto en la biblioteca.

5.5.2 2. Subgrafo inducido


Dado un grafo G con un conjunto de vrtices V, y un subconjunto V de V, el subgrafo de G inducido por V es el
grafo con V como vrtices, y slo aquellas aristas que estaban en G.
Encuentra tres subgrafos inducidos de 6 vrtices del grafo graphs.CubeGraph(3) no isomorfos entre s.
Cuntos subgrafos inducidos de 7 vrtices tiene el grafo graphs.CubeGraph(3) no isomorfos entre s?

136

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Encuentra un subgrafo inducidos del grafo graphs.CubeGraph(4) que sea isomorfo al grafo
graphs.CubeGraph(3)

5.5.3 3. Contar grafos


Cuntos posibles grafos existen con un conjunto de vrtices dado de tamao k? Cuntos digrafos (grafos dirigidos)?
Cuntos posibles grafos no isomorfos existen con exactamente k vrtices, para k<=7?
Cuntos posibles digrafos conexos no isomorfos existen con 4 vrtices ?
Cuntos grafos hay con 5 vrtices que no sean planos? Dibjalos todos:
Referencia: http://es.wikipedia.org/wiki/Grafo_plano

5.5.4 4. Coloraciones de grafos


Una coloracin de un grafo es una asignacin de un color a cada vrtice del grafo de modo que dos vrtices adyacentes
tienen asignados colores distintos. Las coloraciones ms interesantes son las que tienen menor nmero de colores. Un
conocido teorema afirma que todos los grafos planos se pueden colorear con a lo sumo 4 colores.
Explora la ayuda de los mtodos coloring y plot de los grafos para conseguir dibujar grafos junto con una
coloracin que tiene el mnimo nmero de colores.
Encuentra grafos con k vrtices que no se puedan colorear con menos de j colores, para j<k y k hasta 6.
Cul es el nmero cromtico del grafo graphs.LollipopGraph(a,b) ?
Cul es el nmero cromtico del grafo graphs.BarbellGraph(a,b) ? Cul es su nmero de vrtices?

5.5.5 5. Grafo de divisores


Dada una lista de nmeros S, construye el grafo de divisores de S, cuyos vrtices son los nmeros de S, y que tiene
una arista desde j hasta k si y slo si j es divisor de k j es divisor de k.

5.5.6 6.
Calcula el nmero de aristas del grafo de divisores para las listas S de la forma range(2,k), para distintos valores de k
y dibjalas en una grfica.

5.5.7 7.
El grafo de divisores de una lista de primos no tiene ninguna arista.
El grafo de divisores de una lista de potencias de 2 de tamao k tiene todas las aristas posibles (es decir, k*(k+1)/2 ).
Puedes encontrar un grafo con k vrtices y 2*k aristas, para k=10, 15 y 20?
Indicacin: usa la fuerza (bruta).
Referencia: http://arxiv.org/abs/math/0606483

5.5. Ejercicios

137

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

5.6 Experimentos con numeros aleatorios


En la primera sesin de este bloque aprendimos a recorrer exhaustivamente un conjunto de posibilidades para contar
las que satisfacan una propiedad, y as calcular probabilidades como el nmero de casos favorables dividido por el
nmero de casos posibles. En algunos casos el nmero de posibilidades es enorme, y el resultado, realmente mucho
ms preciso de lo que necesitbamos.
Una alternativa consiste en calcular slo unos cuantos casos extrados aleatoriamente, y hacer una estadstica de los
casos favorables entre los posibles. A esta estrategia se le llama en general el mtodo de Monte Carlo, por su uso del
azar. Aunque el resultado slo es aproximado, es fcil controlar el tiempo de cmputo que destinamos a aproximar la
solucin.
Por supuesto, en muchos casos es posible hacer el clculo exacto mediante razonamiento puro y, an en los casos en
que no es as, el razonamiento puede servir para reducir el nmero de posibilidades a explorar, o hacer ms eficiente
un mtodo de Monte Carlo.

5.6.1 Ejemplo: galletas con pasas


Como ejemplo, nos planteamos este problema: partiendo de una masa para hacer galletas que contiene un total de P
pasas, hacemos G galletas. Asumiendo que cada pasa terminar en una de las G galletas con la misma probabilidad y
de forma independiente a la galleta de destino de las otras pasas, calcula la probabilidad de que cada galleta tenga al
menos k pasas.
Para distribuir las pasas de todas las formas posibles, contamos cada posible lista de P valores
[G1 , G2 , . . . , GP ]

donde el primer valor indica la galleta en que termina la primera pasa, y as sucesivamente. Como cada pasa puede
terminar en una de las G galletas posibles, el nmero total de posibilidades es GP .
sage: def pasas(G,P,k):
...
Calcula cuantas formas de repartir P pasas entre G galletas
...
dejan al menos k pasas en cada galleta
...

...
favorables = 0
...
#Cada pasa termina en una galleta distinta, total G^P posibilidades
...
for j in srange(G^P):
...
#lista que indica en que galleta esta cada pasa
...
donde_esta_la_pasa = j.digits(base=G,padto=P)
...
#G galletas, que comienzan sin pasas
...
pasas_en_cada_galleta = [0]*G
...
#Contamos el numero de pasas en cada galleta
...
for g in donde_esta_la_pasa:
...
pasas_en_cada_galleta[g] += 1
...
if min(pasas_en_cada_galleta)>=k:
...
favorables += 1
...
return favorables/G^P
sage: %time
sage: pasas(4,6,1)
195/512
CPU time: 0.17 s, Wall time: 0.19 s
sage: %time
sage: pasas(3,7,1)

138

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

602/729
CPU time: 0.09 s,

Wall time: 0.10 s

sage: %time
sage: pasas(4,7,1)
525/1024
CPU time: 0.66 s, Wall time: 0.67 s

Como vemos, este enfoque requiere mucho tiempo incluso para cantidades pequeas de pasas y de galletas. No en
vano hay que iterar el bucle principal G^P veces!!. Como el problema no tiene mucha gracia si el nmero de pasas
no es al menos igual al nmero de galletas, estamos hablando de crecimiento exponencial. Aunque se pueden usar
varios trucos para reducir el tiempo de cmputo, sigue siendo un crecimiento muy rpido.
Usando el mtodo de Monte Carlo, decidimos exactamente el nmero de veces que iteramos el bucle.
Nota: este problema se puede resolver de forma exacta, pero no es trivial.
Nota: la lista de galletas de cada pasa contiene informacin redundante para este problema, en el que slo nos interesa
el total de pasas en cada galleta. Por ejemplo, podemos usar IntegerVectors para recorrer las listas de enteros
de longitud G que suman P (el nmero de pasas en cada galleta), pero distintas formas de recorrer el conjunto pueden
responder a distintos modelos de probabilidad.
sage: def pasas_mc(G,P,k,T):
...
Calcula cuantas formas de repartir P pasas entre G galletas
...
dejan al menos k pasas en cada galleta, usando un mtodo de
...
Monte Carlo con muestra de tamao T
...

...
favorables = 0
...
for h in xrange(T):
...
#lista que indica en que galleta esta cada pasa
...
#Usamos randint que devuelve un entero escogido
...
#aleatoriamente en un rango
...
donde_esta_la_pasa = [randint(0,G-1) for j in range(P)]
...
#G galletas, que comienzan sin pasas
...
pasas_en_cada_galleta = [0]*G
...
#Contamos el numero de pasas en cada galleta
...
for g in donde_esta_la_pasa:
...
pasas_en_cada_galleta[g] += 1
...
if min(pasas_en_cada_galleta)>=k:
...
favorables += 1
...
return favorables/T
sage: #Distintas llamadas a esta funcion con los mismos argumentos
sage: #no devuelven el mismo resultado, debido al uso de numeros
sage: #aleatorios
sage: #Cuanto mayor la muestra, menor la oscilacion
sage: p = pasas_mc(4,7,1,1000)
sage: print p, p.n()
63/125 0.504000000000000

5.6.2 Simulaciones
El mtodo de Monte Carlo permite abordar problemas que no se pueden resolver por fuerza bruta contando todas las
posibilidades.
En el siguiente ejemplo sencillo, lanzamos monedas al aire (monedas equilibradas, lanzamientos independientes) hasta
que acumulamos un cierto nmero de caras, cuntos lanzamientos necesitamos en promedio para obtener al menos k
caras?
5.6. Experimentos con numeros aleatorios

139

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Podemos simular este experimento usando llamadas a randint(0,1) para simular lanzamientos de monedas. Si
el nmero devuelto es 0, lo tomamos como una cruz, si es un 1, como una cara. Repetimos el experimento hasta que
acumulemos k caras, y tomamos nota del nmero de lanzamientos que hemos necesitado.
sage: def geometrica_mc(k,T):
...
Nmero medio de lanzamientos hasta obtener k caras, por
...
el mtodo de Monte Carlo
...

...
lanzamientos = 0
...
for j in range(T):
...
caras = 0
...
while caras<k:
...
lanzamientos += 1
...
caras += randint(0,1)
...
...
promedio = lanzamientos/T
...
return promedio
sage: m = geometrica_mc(4,10000)
sage: print m, m.n()
79953/10000 7.99530000000000

En este caso, obtenemos la confirmacin no de la fuerza bruta, sino del razonamiento, porque el nmero esperado de
lanzamientos es claramente 2k (hecho que sabris demostrar cuando estudiis la binomial negativa en probabilidad).

5.6.3 Ejemplo: estadsticas de matrices


Cuntas matrices cuadradas cuyas entradas sean 0 1 son invertibles en Z2 ? Podemos dar a este enunciado una
interpretacin probabilista: cul es la probabilidad de que una matriz KxK en Z2 cuyas entradas han sido escogidas
de forma aleatoria e independiente entre 0 y 1 sea invertible?
Es fcil generar una matriz cuadrada cuyas entradas son enteros escogidos aleatoriamente entre 0 y 1. Para calcular
su determinante en Z2 , calculamos su determinante habitual y tomamos el resto de dividir por 2. Alternativamente,
podramos usar el cuerpo Integers(2) y su mtodo random_element() .
Recordamos una forma cmoda de construir matrices en Sage:
M = matrix(ZZ, K1, K2, lista)

donde K1 es el nmero de filas y K2 el nmero de columnas y, en vez de pasar una lista con las filas, pasamos una
sla lista con K1xK2 elementos.
Tambin podemos usar random_matrix , pero es un mtodo menos general.
sage: K=6
sage: #Generar una matriz con entradas 0 o 1 escogidas de forma aleatoria
sage: lista = [randint(0,1) for j in range(K*K)]
sage: M = matrix(ZZ,K,K, lista)
sage: print M, det(M) %2
[0 0 1 0 0 1]
[0 0 1 0 1 1]
[1 1 1 1 1 0]
[1 0 1 0 0 1]
[1 0 1 0 1 1]
[0 1 0 1 1 0] 0

140

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Ejercicio
Calcula la probabilidad por fuerza bruta contando los casos favorables y por el mtodo de Monte Carlo.

5.6.4 Lanzamientos no equiprobables


Y si cambiamos la probabilidad, y hacemos el 1 ms probable que el 0? Conseguiremos con ello aumentar la
probabilidad de obtener matrices invertibles?
Para plantearnos este problema necesitamos extraer un 0 un 1 con una probabilidad p [0, 1]. La manera estndar de
hacer sto es usar la funcin random(), que devuelve un nmero aleatorio entre 0 y 1. Si el nmero extraido es menor
que p, anotamos un 1 y si es mayor, anotamos un 0.
sage: K = 6
sage: p = 0.7
sage: #Construimos una matriz KxK de ceros:
sage: M = matrix(ZZ,K,K)
sage: #Rellenamos las entradas de la matriz con 0 o 1:
sage: for j in range(K):
...
for k in range(K):
...
t = random()
...
if t<p:
...
M[j,k]=1
sage: print M
[1 1 1 1 1 1]
[1 1 1 0 1 1]
[1 0 1 1 1 0]
[1 1 1 1 1 1]
[1 1 0 1 1 0]
[1 0 1 1 0 1]
sage: #codigo alternativo
sage: def aleatoriop(p):
...
if random()<t:
...
return 1
...
return 0
sage: p = 0. 7
sage: lista = [aleatoriop(p) for j in range(K*K)]
sage: M = matrix(ZZ,K,K, lista)
Traceback (most recent call last):
...
SyntaxError: invalid syntax

5.6.5 Discusin: cmo de aleatorios son los nmeros aleatorios?


En esta sesin hemos usado los generadores de nmeros aleatorios del ordenador, llamando a las funcioens randint y
random . Nuestros resultados se basan en que los nmeros generados sean lo bastante aleatorios. Vamos a comprobar
esta afirmacin haciendo estadsticas de los nmeros obtenidos.
Comenzamos con randint , generando nmeros enteros aleatorios, guardando la frecuencia con que aparece cada
resultado, y mostrando las frecuencias en un grfico de barras.
sage:
sage:
sage:
sage:

L = 10
T = 1000
frecuencias = [0]*L
for j in range(T):

5.6. Experimentos con numeros aleatorios

141

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
...
sage:
sage:
sage:
sage:

k = randint(0,L-1)
frecuencias[k] += 1
#Mediante ymin=0, indicamos que muestre las graficas
#partiendo desde el eje de las x
#(prueba a quitarlo y veras que pasa)
bar_chart(frecuencias,width=1).show(ymin=0)

Para comprobar random, nos limitamos a separar los nmeros entre 0 y 1 en L subintervalos distintos, y luego
comprobar que en cada caja tenemos aproximadamente 1/L nmeros. No tenemos teora suficiente para hacer tests
ms sofisticados.
sage:
sage:
sage:
sage:
...
...
...
sage:
sage:
sage:
sage:

142

L = 10
T = 1000
frecuencias = [0]*L
for j in range(T):
a = random()
k = floor(a*L)
frecuencias[k] += 1
#Mediante ymin=0, indicamos que muestre las graficas
#partiendo desde el eje de las x
#(prueba a quitarlo y veras que pasa)
bar_chart(frecuencias,width=1).show(ymin=0)

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

En realidad, los nmeros generados con randint y random son pseudo-aleatorios: son aleatorios a efectos prcticos
pero estn generados de manera casi determinista: primero se escoge una semilla , y a partir de ah se usa una funcin
de apariencia aleatoria para obtener el siguiente nmero aleatorio a partir del anterior.
Ms detalles (en ingls) en:
http://docs.python.org/library/random.html
Si fijamos la semilla, todos los clculos posteriores con numeros aleatorios generan los mismos nmeros, aunque
lo ejecutemos en distintos momentos o en distintos ordenadores. Esto es importante para reproducir exactamente un
clculo con nmeros aleatorios.
sage: #Fijamos la semilla para generar nmeros aleatorios
sage: set_random_seed(123)
sage: print random()
sage: print random()
sage: print random()
sage: print randint(1,10)
sage: print randint(1,10)
sage: print randint(1,10)
0.220001316661
0.778780038062
0.0648345056353
8
2
1

5.7 Ejercicios
5.7.1 1.
Aproxima el nmero por el mtodo de Monte Carlo
Genera pares (x,y) de nmeros aleatorios entre -1 y 1. Estos pares de nmeros estn escogidos en el cuadrado [-1,1]x[1,1] de forma uniforme. Si contamos el ratio de los pares (x,y) tales que x2 + y 2 < 1 entre el total de pares, obtenemos
5.7. Ejercicios

143

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

el rea del crculo unidad dividido entre el rea del cuadrado unidad.
Utiliza esta idea para aproximar el nmero

5.7.2 2.
Estima mediante el mtodo de Monte Carlo las probabilidades de diversos eventos relacionados con lanzamientos de
monedas que calculaste en el ejercicio de la seccin 1.

5.7.3 3.
Los paquetes de cereales ACME traen seis tipos distintos de regalos. Fulanito est dispuesto a comprar cajas de
cereales hasta tenerlos todos.
Asumiendo que la probabilidad de encontrar cada tipo de regalo en una caja de cereales es la misma, e independiente
de las otras cajas de cereales, estima mediante el mtodo de Monte Carlo el nmero de cajas que tendr que comprar
Fulanito hasta tener al menos un regalo de cada tipo.

5.7.4 4. Cumpleaos
Estima mediante el mtodo de Monte Carlo la probabilidad de que en un grupo de 30 personas, al menos dos de ellas
cumplan aos el mismo da.
Para ello, asume que cada persona del grupo tiene un cumpleaos elegido aleatoriamente entre 1 y 365, y que el
cumpleaos de cada uno es independiente del cumpleaos de los dems.
Nota: es posible resolver este problema por razonamiento, pero no por fuerza bruta. El nmero de posibles fechas de
cumpleaos para las 30 personas es 36530 7 1076 .

5.7.5 5. Estadsticas con grafos


Generamos un grafo aleatorio de la forma siguiente: partimos de un conjunto de k vrtices y, con probabilidad p ,
ponemos una arista entre cada dos vrtices, haciendo cada eleccin de forma independiente. Nos preguntamos cul es
la probabilidad de obtener un grafo con una cierta propiedad.
Calcula la probabilidad de obtener un grafo plano cuando k=6, p=0.6 y cuando k=12, p=0.3.
Calcula la probabilidad de obtener un grafo conexo cuando k=6, p=0.5.
Indicacin : construye la matriz de incidencia de forma aleatoria, con las entradas 0 y 1. Ten cuidado, porque la matriz
debe ser simtrica. Si decides que entre los vrtices j y k debe haber una arista, tienes que poner unos en las entradas
M[j,k] y M[k,j] de la matriz de incidencia. Alternativamente, busca cdigo en Sage que genera estos grafos.

144

Captulo 5. Bloque IV: Combinatoria

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPTULO 6

Bloque V: Clculo simblico

Una introduccin al clculo simblico. En primer lugar se estudian las expresiones simblicas, y las ecuaciones, y
el comando solve. Despus se aplica lo aprendido al clculo en una y varias variables. La ltima sesin es una
introduccin al estudio de las curvas en el plano.

6.1 Clculo simblico


6.1.1 Variables y expresiones simblicas
Una variable simblica es un objeto en python que representa una incgnita que puede tomar cualquier valor. Por
tanto, una operacin que involucra una o ms variables simblicas no devuelve un valor numrico, sino una expresin
simblica que involucra nmeros, operaciones, funciones y variables simblicas. Si en algn momento sustituimos las
variables simblicas por nmeros (o elementos de un anillo), podremos realizar las operaciones y obtener un nmero
(o un elemento de un anillo).
Esta forma de trabajar se corresponde con los criterios de no hacer las operaciones hasta el final, dejar las operaciones indicadas y cancelar trminos antes de evaluar que aprendistis en secundaria.
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
a + b
a^2 +
a^3 +

#Declaramos las variables a b c


var(a b c)
#Definimos varias expresiones simbolicas
s = a + b + c
s2 = a^2 + b^2 + c^2
s3 = a^3 + b^3 + c^3
s4 = a + b + c + 2*(a + b + c)
p = a*b*c
#Las imprimimos como cdigo
print s
print s2
print s3
print s4
print p
#Las mostramos en el formato matemtico usual
show(s2)
show(s3)
+ c
b^2 + c^2
b^3 + c^3

145

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

3*a + 3*b + 3*c


a*b*c

a2 + b2 + c2
a3 + b3 + c3

sage: #Sustituimos las variables por numeros


sage: print s(a=1, b=1, c=1)
sage: print s(a=1, b=2, c=3)
3
6
sage: #Operamos con las expresiones
sage: ex = (1/6)*(s^3 - 3*s*s2 +2*s3 )
sage: show(ex)


1
1
1
1
1
3
(a + b + c) + a3 + b3 + c3 (a + b + c) a2 + b2 + c2
6
3
3
3
2
..index:: simplifciar, expand, factor, simplify_rational, simplify_trig, simplify_exp
Simplificar expresiones
Sin embargo, pese a que no es posible evaluar una expresin hasta el final, observamos que al crear la expresin
se han realizado de oficio algunas simplificaciones triviales. En ejemplos como el de arriba, nos puede interesar
simplificar la expresin todava ms, pero es necesario decir qu queremos exactamente. Existen varias estrategias
para intentar simplificar una expresin, y cada estrategia puede tener ms o menos xito dependiendo del tipo de
expresin simblica. Algunas estrategias dan lugar a una expresin ms sencilla en algunos casos pero no en otros, y
con expresiones complicada pueden consumir bastante tiempo de proceso.
Para la expresin anterior, como tenemos un polinomio, es buena idea expandirla en monomios que se puedan comparar unos con otros, usando el mtodo expand .
sage: show(ex.expand())

abc
A menudo nos interesa lo contrario: factorizar la expresin usando factor .
sage: p = a^3 + a^2*b + a^2*c + a*b^2 + a*c^2 + b^3 + b^2*c + b*c^2 + c^3
sage: show(p)
sage: show(p.factor())

a3 + a2 b + a2 c + ab2 + ac2 + b3 + b2 c + bc2 + c3


(a + b + c) a2 + b2 + c2

Si observas con el tabulador los mtodos de las expresiones regulares, vers que hay mtodos especficos para expresiones con funciones trigonomtricas, exponenciales, con radicales o fracciones (es decir, con funciones racionales).

146

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: p = sin(3*a)
sage: show(p.expand_trig())

sin (a) + 3 sin (a) cos (a)

sage: p = sin(a)^2 - cos(a)^2


sage: show(p.simplify_trig())

2 cos (a) + 1

sage: p = 2^a * 4^(2*a)


sage: p.simplify_exp()
2^(5*a)
sage: p = 1/a - 1/(a+1)
sage: p.simplify_rational()
1/(a^2 + a)

Funciones simblicas
A medio camino entre las expresiones simblicas y las funciones de python, las funciones simblicas son expresiones
simblicas en las que se fija el orden de las variables de entrada. Esto elimina la ambigedad sobre qu variables se
deben sustituir por qu argumentos y permite usarlas en sitios donde se espera una funcin de python.
sage: f(a,b,c) = a + 2*b + 3*c
sage: f(1,2,1)
8

sage: s = a + 2*b + 3*c


sage: s(1,2,1)
__main__:4: DeprecationWarning: Substitution using function-call syntax and unnamed arguments is depr
8

Diferencias entre polinomios y expresiones simblicas


En algunos aspectos las expresiones simblicas pueden parecer similares a los polinomios que vimos en el bloque III,
lo que puede provocar confusin. Es importante saber si tenemos entre manos una expresin simblica que representa
un polinomio como sta:
var(x)
p = x^2 + 1

o un polinomio como ste (con coeficientes por ejemplo en RDF ):


R.<t> = PolynomialRing(RDF)
q = t^2 + 1

6.1. Clculo simblico

147

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Aunque ambos tienen mtodos de propsito similar como coefficients o roots , el comportamiento es distinto,
a veces de manera obvia y a veces de manera ms sutil. Por ejemplo, las races o los coeficientes de una expresin
simblica son a su vez expresiones simblicas, mientras que en el caso de un polinomio son miembros del anillo de
coeficientes.
sage: var(x)
sage: p = x^2 + 3
sage: print p.coefficients()
sage: print p.roots()
sage: termino_indi = p.coefficients()[0][0]
sage: print termino_indi, parent(termino_indi)
[[3, 0], [1, 2]]
[(-I*sqrt(3), 1), (I*sqrt(3), 1)]
3 Symbolic Ring
sage: R.<t> = PolynomialRing(RDF)
sage: q = t^2 + 3
sage: print q.coefficients()
sage: print q.roots()
sage: termino_indi = q.coefficients()[0]
sage: print termino_indi, parent(termino_indi)
[3.0, 1.0]
[]
3.0 Real Double Field

El mtodo polynomial permite construir un polinomio con coeficientes en un anillo dado a partir de una expresin
simblica. Para hacer lo contrario, podemos sustituir la variable del anillo de polinomios por una variable simblica,
o convertir explcitamente al tipo de datos SR (el anillo de expresiones simblicas, o Symbolic Ring).
sage: p.polynomial(ZZ).roots()
[]
sage: q0 = q(t=x); q0
x^2 + 3.0
sage: q1 = SR(q); q1
t^2 + 3.0

6.1.2 Ecuaciones e inecuaciones


Si usamos el operador de igualdad (==) o algn operador de comparacin (<, <=, >, >=, !=) sobre dos expresiones simblicas, obtenemos una relacin simblica. Al igual que las expresiones simblicas, las operaciones en una relacin
estn indicadas pero no se pueden ejecutar hasta que todas las variables han tomado un valor concreto.
Evaluar una relacin
Para evaluar la relacin y obtener un booleano, usamos el operador de conversin a booleano bool(relacion) .
Algunas relaciones tienen un valor definido, incluso aunque dependan de variables simblicas: son siempre ciertas o
siempre falsas. Muchas otras tendrn un valor indeterminado: dependiendo de los valores de las variables. En estos
casos, el valor booleano de la relacin es False , siguiendo una convencin usual en otros programas de clculo
simblico. Tambin obtenemos False si evaluamos una expresin demasiado compleja para el motor simblico.
Tomamos buena nota de la asimetra en los resultados:
True : el programa puede demostrar que la relacin se verifica siempre, para cualquier valor de las variables.

148

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

False : el programa no puede demostrar que la relacin se verifica siempre, para cualquier valor de las variables. Eso no significa que nunca se verifique, ni siquiera que sea ambigua (cierta para algunos valores de las
variables y falsa para otros).
sage:
sage:
sage:
sage:
sage:
sage:

var(a b)
r1 = (a<a+1)
r2 = (a<a-1)
r3 = (a<b)
r4 = (b<a)
r5 = a > 0

sage: print bool(r1), bool(r2), bool(r3), bool(r4), bool(r5)


True False False False False

Para distinguir entre relaciones que se puede demostrar que son falsas y relaciones ambiguas (o demasiado complicadas
para el software), podemos usar la negacin de las relaciones. Vemos por ejemplo, que se puede demostrar que r2 es
siempre falsa porque su negacin se resuelve a True .
sage: print r2.negation(), bool(r2.negation())
sage: print r3, bool(r3)
sage: print r3.negation(), bool(r3.negation())
a >= a - 1 True
a < b False
a >= b False

Por supuesto concretando los valores de algunas variables, una relacin ambigua se puede concretar, y resultar cierta
(o falsa).
sage:
sage:
sage:
False
False
True

print bool(r2(a=1, b=2)), bool(r3(a=1, b=2))


print bool(r2(a=3, b=2)), bool(r3(a=3, b=2))
print bool(r5(a=e^b))
True
False

Aparte de preguntar por su valor de verdad, podemos simplificar y operar con las relaciones de forma similar a las
formas de operar con una expresin cualquiera:
sage: r1 = (a<a+1)
sage: print r1.subtract_from_both_sides(a)
0 < 1
sage:
sage:
sage:
sage:
sage:
sage:
a < b
b < a
a + b
0 < 0

print r3
print r4
r6 = r3 + r4
print r6
r6 = r6.subtract_from_both_sides(r6.right_hand_side())
print r6

< a + b

6.1.3 Resolver ecuaciones y sistemas de ecuaciones


El comando solve permite resolver ecuaciones (al menos lo intenta): para resolver una ecuacin llamamos a solve
con la ecuacin como primer argumento y la variable a despejar como segundo argumento, y recibimos una lista con
las soluciones.
6.1. Clculo simblico

149

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: x = var(x)
sage: solve(x^2 + 3*x + 2 == 0, x)
[x == -2, x == -1]

Si en vez de pasar una igualdad pasamos una expresin r , calcula las soluciones de r==0 .

sage: #Las soluciones de esta ecuacion cubica son numeros complejos


sage: solve(x^3 - 3*x + 5, x)
[x == -1/2*(1/2*sqrt(21) - 5/2)^(1/3)*(I*sqrt(3) + 1) - 1/2*(-I*sqrt(3) + 1)/(1/2*sqrt(21) - 5/2)^(1/

A veces solve no puede resolver la ecuacin, en cuyo caso puede que la simplifique un poco, o ni siquiera so.
sage: solve(x^5 + 4*x^3 == x^3 + 2, x)
[0 == x^5 + 3*x^3 - 2]

Ante una ecuacin arbitraria de quinto grado, podemos intentar encontrar las soluciones de forma numrica (volveremos a hablar de este tema).
sage: soluciones = solve(x^5 + 4*x^3 == x^3 + 2, x)
sage: s = soluciones[0]
sage: print s
sage: show(plot(s, x, 0, 1))
#dibujamos s entre 0 y 1
sage: print s.find_root(0,1)
#buscamos una raiz (numerica) entre 0 y 1
0 == x^5 + 3*x^3 - 2
0.816997207347

solve trabaja con expresiones con muchas variables simblicas, e intenta despejar la variable que le pasamos como
argumento y expresarla como funcin de las otras
sage: var(x y)
sage: for expresion in solve(x^4 + y^2*x^2 + 2, x ):
...
show(expresion)
sage: for expresion in solve(x^4 + y^2*x^2 + 2, y ):
...
show(expresion)

1
x=
2
150

qp

y4 8 y2 2

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

x=

1
2

qp

y4 8 y2 2


 qp

1
y4 8 + y2 2
x= I
2

x=

1
I
2

 qp

y=

x4 2
x

y=

y4 8 + y2 2

x4 2
x

Sistemas de ecuaciones
Tambin podemos usar solve para resolver sistemas de ecuaciones (lineales o no). Como primer argumento pasamos
una lista de ecuaciones y despus sigue la lista de variables que queremos despejar.
Aplicar solve a sistemas lineales de ecuaciones es totalmente equivalente a resolver el sistema mediante matrices ,
aunque las distintas posibilidades (incompatible, compatible determinado...) se muestran de forma distinta.
sage: var(x1 x2 x3)
(x1, x2, x3)
sage: #Compatible determinado
sage: #Resolvemos el sistema usando solve
sage: eq1 = 2*x1
+ x3 == 1
sage: eq2 =
x1 + x2 - x3 == 0
sage: eq3 = -x1 -2*x2
== -1
sage: print solve([eq1,eq2,eq3],x1,x2,x3)
sage: #Resolvemos el sistema usando matrices
sage: M = matrix(QQ,3,3,[2,0,1, 1,1,-1, -1,-2,0 ])
sage: v = vector(QQ,[1,0,-1])
sage: M.solve_right(v )
#tambien vale M\v
[
[x1 == (1/5), x2 == (2/5), x3 == (3/5)]
]
(1/5, 2/5, 3/5)
sage: #Compatible indeterminado
sage: #Resolvemos el sistema usando solve
sage: eq1 = 2*x1
+ x3 == 1
sage: eq2 =
x1 + x2 - x3 == 0
sage: print solve([eq1,eq2],x1,x2,x3)
sage: #Resolvemos el sistema usando matrices
sage: M = matrix(QQ,2,3,[2,0,1, 1,1,-1])
sage: v = vector(QQ,[1,0])
sage: #solve_right solo encuentra una solucion
sage: print M.solve_right(v )
#tambien vale M\v
sage: print M.right_kernel()
[
[x1 == -1/2*r1 + 1/2, x2 == 3/2*r1 - 1/2, x3 == r1]

6.1. Clculo simblico

151

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

]
(1/2, -1/2, 0)
Vector space of degree 3 and dimension 1 over Rational Field
Basis matrix:
[ 1 -3 -2]
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
[

#Incompatible
#solve devuelve silenciosamente una lista de soluciones vacia
eq1 = 2*x1
+ x3 == 1
eq2 =
x1 + x2 - x3 == 0
eq3 =
x1 + x2 - x3 == 1
print solve([eq1,eq2,eq3],x1,x2,x3)
#M\v, o M.solve_right(v) arrojan un error
M = matrix(QQ,3,3,[2,0,1, 1,1,-1, 1,1,-1])
v = vector(QQ,[1,0,1])
M\v

]
Traceback (most recent call last):
...
ValueError: matrix equation has no solutions

6.1.4 Asumir una igualdad o desigualdad


El comando asume informa a Sage de que cierta identidad no trivial que involucra algunas variables simblicas se
verifica. Esto es importante porque permite hacer ciertas simplificaciones extra. Por ejemplo:
sage: var("x")
sage: s = sqrt(x^2)
sage: simplify(s)
sqrt(x^2)
sage: assume(x>0)
sage: simplify(s)
x

El comando dual de assume es forget , que olvida una identidad que anteriormente habamos asumido como cierta
(la sintaxis es idntica).
forget() sin argumentos olvida todas las identidades.
assumptions() muestra todas las identidades activas.
sage: assumptions()
[x > 0]
sage: forget(x>0)
sage: simplify(s)
sqrt(x^2)
sage: assumptions()
[]

Tambin podemos asumir otro tipo de informacin, como por ejemplo que una variable representa un nmero entero.
sage: var(n)
sage: assume(n, integer)

152

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: print sin(n*pi).simplify()


sage: forget(n, integer)
sage: print sin(n*pi).simplify()
0
sin(pi*n)
sage: var(k t)
sage: assume(k, integer)
sage: simplify(sin(t+2*k*pi))
sin(t)

Si tomamos por ciertas varias identidades incompatibles, Sage lanza un error:


sage: var(x)
sage: forget()
sage: assume(x<0)
sage: assume(x>0)
Traceback (most recent call last):
...
ValueError: Assumption is inconsistent

6.1.5 Ejemplos
Matrices con parmetros
Si usamos el anillo de expresiones simblicas ( SR ) para los coeficientes de las matrices, podemos trabajar con
parmetros.
sage: #Ejemplo de una matriz dependiendo de un parmetro
sage: var(a)
sage: M = matrix(SR,3,3, [1,2,3, 1,-3,1, 2,1,a])
sage: M
[ 1 2 3]
[ 1 -3 1]
[ 2 1 a]
sage:
sage:
sage:
sage:

#Ejemplo: la matriz de van der Monde 3x3


var(a1 a2 a3)
VDM = matrix([[1, a1, a1^2], [1, a2, a2^2], [1, a3, a3^2] ])
show(VDM)

1
1
1

a1
a2
a3

a21
a22
a23

2
3
1

3
1
a

Ejercicio resuelto: Calcula el rango de la matriz


1
1
2
dependiendo del valor del parmetro a .

6.1. Clculo simblico

153

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: var(a)
sage: M = matrix(SR,3,3, [1,2,3,
sage: M
[ 1 2 3]
[ 1 -3 1]
[ 2 1 a]

1,-3,1,

2,1,a])

Solucin 1: ponemos la matriz en forma escalonada mediante operacinoes de fila y vemos que el rango depende de si
a es 24/5 o no.
sage: M.add_multiple_of_row(1,0,-1)
sage: M
[ 1 2 3]
[ 0 -5 -2]
[ 2 1 a]
sage: M.add_multiple_of_row(2,0,-2)
sage: M
[
1
2
3]
[
0
-5
-2]
[
0
-3 a - 6]
sage: M.add_multiple_of_row(2,1,-3/5)
sage: M
[
1
2
3]
[
0
-5
-2]
[
0
0 a - 24/5]

Por supuesto, tambin podemos calcular el determinante


sage: var(a)
sage: M = matrix(SR,3,3, [1,2,3,
sage: determinante = M.det()
sage: determinante.factor()
-5*a + 24

1,-3,1,

2,1,a])

Sin embargo, la forma escalonada produce un resultado inesperado: como las expresiones simblicas no nulas son
invertibles, la matriz es equivalente a la identidad!
sage: M.echelon_form()
[1 0 0]
[0 1 0]
[0 0 1]

Ejercicio resuelto
Encuentra la recta afn que pasa por el punto (1, 0, 1) y corta a las rectas L1 y L2 , sabiendo que L1 pasa por (1, 0, 1)
y (2, 1, 0), y que L2 pasa por (3, 1, 1) y (1, 2, 1).
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:

154

p1 = vector([1,0,1])
p2 = vector([2,1,0])
p3 = vector([3,1,-1])
p4 = vector([1,2,-1])
p5 = vector([1,0,-1])
var(r s t)
#Calculamos un punto generico de L1, y otro de L2
pgL1 = (1-r)*p1+r*p2
pgL2 = (1-s)*p3+s*p4

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #Un punto generico de la recta que pasa por pgL1 y pgL2
sage: pgL = (1-t)*pgL1 + t*pgL2
sage: pgL
(-(t - 1)*(r + 1) - (2*s - 3)*t, -(t - 1)*r + (s + 1)*t, (t - 1)*(r - 1) - t)
sage: #Imponemos las ecuaciones que representan que
sage: eqs = [c1==c2 for c1,c2 in zip(pgL,p5)]
sage: print eqs
sage: solve(eqs,r,s,t)
[-(t - 1)*(r + 1) - (2*s - 3)*t == 1, -(t - 1)*r + (s + 1)*t == 0, (t - 1)*(r - 1) - t == -1]
[[r == 2, s == (1/3), t == 3]]

La recta pasa por p5 y por (1-r)*p1+r*p2, con r=2, es decir (3, 2, 1)


sage: ((1-r)*p1+r*p2)(r=2)
(3, 2, -1)

Ejercicio: encuentra las ecuaciones implcitas y paramtricas de la recta solucin

6.1.6 Truco avanzado: fast_float


Si vas a evaluar muchas veces una expresin simblica, puedes compilarla usando el comando fast_float ,
que devuelve una funcin normal de python correspondiente a la expresin simblica. Esta funcin ya no se puede
manipular de forma simblica, pero se puede evaluar usando mucho menos tiempo.
sage: var(a b c)
sage: f(a,b,c) = a^3 + sin(b + 3*log(c))
sage: timeit(f(1,2,1))
sage: ff = fast_float(f)
sage: timeit(ff(1,2,1))
625 loops, best of 3: 248 s per loop
625 loops, best of 3: 13 s per loop
sage: var(a b c)
sage: s = a^3 + sin(b + 3*log(c))
sage: timeit(s(a=1, b=2, c=1))
sage: fs = fast_float(s, a, b, c)
sage: timeit(fs(1,2,1))
625 loops, best of 3: 109 s per loop
625 loops, best of 3: 13 s per loop

6.2 Ejercicios
6.2.1 1.
Queremos encontrar todos los tringulos equilateros con vrtices en tres rectas paralelas dadas.
Plantea el problema usando variables simblicas de la forma ms directa posible, usando la definicin de tringulo equiltero: los tres lados deben ser iguales, y observa como Sage falla miserablemente.
Mastica un poco el problema, usando algunas de las sugerencias siguientes:
Evita las raices cuadradas que tienen varias soluciones.
Fija la primera recta al eje de las x.
6.2. Ejercicios

155

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Fija el primer vrtice del tringulo al origen de coordenadas.


Usa una definicin alternativa de tringulo equiltero: la rotacin de ngulo 60 con vrtice p1 lleva
p2 a p3.
Si fijamos dos rectas paralelas a distancia 1: dnde debemos fijar la tercera recta para que el tringulo solucin tenga rea mnima? Usa por ejemplo la definicin de rea dadas las coordenadas de los vrtices de la wikipedia en ingls:
http://en.wikipedia.org/wiki/Area_of_a_triangle#Using_coordinates .

6.2.2 2.
Calcula el centro y el radio de la circunferencia que pasa por tres puntos del plano, de coordenadas (x1,y1),
(x2,y2) y (x3,y3).
Intenta entender la frmula obtenida para el radio del crculo, en funcin de conceptos geomtricos intrnsecos
como reas, distancias y ngulos.

6.2.3 3.
Un teorema de lgebra afirma que todo polinomio simtrico p(x1 , . . . , xn ) se puede expresar en funcin de los polinomios simtricos elementales:
e0 (x1 , . . . , xn )
e1 (x1 , . . . , xn )
e2 (x1 , . . . , xn )
en (x1 , . . . , xn )
ek (x1 , . . . , xn )

=
=
=
=
=

1,
x
P1 + x2 + + xn ,
i<j xi xj ,
x1 x2 xn ,
0, for k > n.

Por ejemplo:
x21 + x22 = (x1 + x2 )2 2(x1 x2 ) = e1 (x1 , x2 )2 2e2 (x1 , x2 )
Busca a mano una forma de expresar el polinomio x21 + x22 + x23 + x24 en funcin de los polinomios simtricos
elementales en cuatro variables.
Busca a mano una forma de expresar el polinomio x31 + x32 en funcin de los (tres) polinomios simtricos
elementales en dos variables.
Busca a mano una forma de expresar el polinomio 61 x31 12 x21 x2
los (tres) polinomios simtricos elementales en dos variables.

1
2

x1 x22

1
6

x32 + x1 + x2 en funcin de

Busca a mano una forma de expresar el polinomio de Taylor de grado k de sin(x1 + x2 ) en funcin de los (tres)
polinomios simtricos elementales en dos variables (indicacin: busca un mtodo para calcular el polinomio de
Taylor)

6.2.4 4: Trabajar con un nmero arbitrario de variables simblicas


El cdigo siguiente:
N = 5
var(,.join([x %d %j for j in range(1, N+1)]))

define las N variables simblicas x1,...,xN.


Si adems guardas las variables en una lista, puedes iterar la lista de variables para, por ejemplo, multiplicarlas todas:

156

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

N = 5
vs = var(,.join([x %d %j for j in range(1, N+1)]))
p = 1
for v in vs:
p = p\*v
print p

Escribe una funcin que, dados dos nmeros n y k , construya el polinomio pk (x1 , . . . , xn ) =
xk1 + + xkn

Pn

i=1

xki =

Escribe una funcin que, dado un nmero k , construya el polinomio simtrico en k variables: ek :
e0 (x1 , . . . , xn )
e1 (x1 , . . . , xn )
e2 (x1 , . . . , xn )
en (x1 , . . . , xn )
ek (x1 , . . . , xn )

=
=
=
=
=

1,
x
P1 + x2 + + xn ,
i<j xi xj ,
x1 x2 xn ,
0, for k>n

Escribe cdigo que compruebe las identidades de Newton , para k desde 2 hasta 5 ( ms informacin ):
kek (x1 , . . . , xn ) =

k
X

(1)i1 eki (x1 , . . . , xn )pi (x1 , . . . , xn )

i=1

sage: N = 5
sage: var(,.join([x %d %j for j in range(1, N+1)]))
(x1, x2, x3, x4, x5)
sage: N = 5
sage: vs = var(,.join([x %d %j for j in range(1, N+1)]))
sage: p = 1
sage: for v in vs:
...
p = p*v
sage: print p
x1*x2*x3*x4*x5

6.2.5 5.
Escribe cdigo que componga la matriz de van der Monde n x n:

V =

1
1
1
..
.

1
2
3
..
.

12
22
32
..
.

...
...
...
..
.

1n1
2n1
3n1
..
.

n2

...

nn1

Demuestra que la matriz de van der Monde es invertible si los nmeros 1 , . . . , n son distintos, para n=2,3 y
4. (Indicacin: factoriza el determinante)

6.3 Clculo diferencial en una variable


6.3.1 Lmites
El mtodo limit permite calcular lmites de funciones. Para calcular el lmite de f en el punto x0 .
6.3. Clculo diferencial en una variable

157

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

f.limit(x=x0)

Cuando la funcin est definida y es continua en el punto, el valor del lmite es igual al lmite de la funcin:
sage:
sage:
sage:
sage:
sage:

var(x)
f1=x^2
f2=(x+1)*sin(x)
f3=f2/f1
f4=sqrt(f3)/(x^2+1)

sage: print f1.limit(x=1)


sage: print f1(x=1)
1
1

Se puede calcular el lmite en un punto de la recta, o tambin en (al que podemos referirnos por \+Infinity
o por oo ).
sage: f3.limit(x=0)
+Infinity
sage: f3.limit(x=+oo)
0

Si el lmite no existe, la funcin limit devuelve el valor und , abreviatura de undefined .


sage: f=1/(x*sin(x))
sage: f.show()
sage: f.limit(x=+Infinity)
und

1
x sin (x)
Usando el argumento adicional dir , podemos especificar si se trata de un lmite lateral, por arriba (above) o por
abajo (below):
sage: f=1/x
sage: print f.limit(x=0,dir=above)
sage: print f.limit(x=0,dir=below)
+Infinity
-Infinity

Lmites de sucesiones
Tambin podemos calcular lmites de sucesiones de la misma forma. Al fin y al cabo, si la expresin simblica admite
valores reales, el lmite de la funcin que define en infinito es lo mismo que el lmite de la sucesin de naturales
definido por la misma expresin.
sage: var(k)
sage: limit(k^2/(k+1)^2, k = oo)
1
sage: limit(2^k/factorial(k), k = oo)
0

158

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Suma de una serie


El comando sum permite calcular la suma de una serie infinita, pero usando una sintaxis distinta de la usada hasta
ahora:
sum(expresion, variable, limite_inferior, limite_superior)
sage: sum(1/k^2, k, 1, oo)
1/6*pi^2

Algunos lmites, o sumas, no se pueden resolver sin hiptesis adicionales, y es necesario usar assume .

sage: var(k a)
sage: sum(k^a, a, 1, oo)
Is abs(k)-1 positive, negative, or zero?
Traceback (most recent call last):
...
TypeError: Computation failed since Maxima requested additional constraints (try the command assume(
sage:
sage:
sage:
sage:
-1/(k

var(k a)
forget()
assume(abs(k)<1)
sum(k^a, a, 0, oo)
- 1)

Observamos que informar a Sage de que -1<k<1 en vez de |k|<1, aunque en principio es equivalente (si entendemos
que al escribir desigualdades ya no hablamos de nmeros complejos sino reales), no funciona.
Sirva este ejemplo para recordar que los motores de clculo simblico hacen lo que pueden, y no siempre dan el
resultado esperado. A veces necesitan que le introduzcamos la informacin de una forma particular, y fallan si la
introducimos de una forma equivalente. Es por ello que normalmente usamos las herramientas de clculo simblico
de forma interactiva.

sage: var(k a)
sage: forget()
sage: assume(k,real)
sage: assume(-1<k<1)
sage: sum(k^a, a, 0, oo)
Is abs(k)-1 positive, negative, or zero?
Traceback (most recent call last):
...
TypeError: Computation failed since Maxima requested additional constraints (try the command assume(

6.3.2 Derivadas
El mtodo derivative permite calcular derivadas de funciones simblicas. Las derivadas se obtienen siguiendo
metdicamente las reglas de derivacin y no suponen ningn problema al ordenador:
sage: sin(x).derivative(x)
cos(x)
sage: f2.derivative(x)
(x + 1)*cos(x) + sin(x)

Si usamos funciones de una sla variable, podemos omitir la variable por la que estamos derivando.
sage: f2.derivative()
(x + 1)*cos(x) + sin(x)

6.3. Clculo diferencial en una variable

159

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

6.3.3 Integrales
Las integrales son ms complicadas de tratar mediante clculo simblico que las derivadas, ya que no existe ningn
mtodo que pueda calcular la integral de cualquier funcin. En realidad, hay muchas funciones elementales (construdas a partir funciones trigonomtricas, exponenciales y algebraicas mediante sumas, productos y composicin de
funciones) cuyas integrales, aunque estn bien definidas, no se pueden expresar en trminos de estas mismas funciones.
2
son bien conocidos.
Los ejemplos f (x) = ex y f (x) = sin(x)
x
Aunque en teora existe un algoritmo (el algoritmo de Risch) capaz de decidir si la integral de una funcin elemental es
otra funcin elemental, dificultades prcticas imposibilitan llevarlo a la prctica, y el resultado es que incluso en casos
en los que integramos una funcin cuya integral es una funcin elemental, nuestro algoritmo de integracin simblica
puede no darse cuenta.
sage: sin(x).integral()
__main__:1: DeprecationWarning: Variable of integration should be specified explicitly.
-cos(x)
sage: f2=sin(x)
sage: f2.integral(x)
-cos(x)
sage: f5=1/sqrt(1-x^2)
sage: f5.show()

1
x2 + 1

sage: f5.integral(x)
arcsin(x)

Las funciones racionales (cociente de un polinomio por otro polinomio) se pueden integrar de forma exacta, siempre
que sea posible descomponer los denominadores en fracciones simples (el algoritmo para integrar funciones racionales
es el mismo que estudisteis en el Bachillerato).
sage: f6=(x^3+4*x^2-x-2)/(x^2+8*x+1)
sage: f6i = f6.integral(x)
sage: f6i.show()

1 2 59
x
15 log
2
15

x
x+

15 + 4

!

15 + 4

4 x + 15 log x2 + 8 x + 1

Sin embargo, algunas integrales no se pueden expresar en trminos de funciones elementales y slo se pueden dejar
indicadas.
sage: f7=sin(x)/x
sage: f7i=f7.integral(x)
sage: print f7i
sage: f7i.show()
integrate(sin(x)/x, x)

160

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sin (x)
dx
x

Algunas funciones tienen integrales que se pueden expresar en trminos de funciones elementales, pero el ordenador
no es capaz de encontrarlas y desiste.
sage: f=(x^10*sin(x^3)*cos(x)).derivative()
sage: print f
3*x^12*cos(x^3)*cos(x) - x^10*sin(x^3)*sin(x) + 10*x^9*sin(x^3)*cos(x)

sage: #Observa que el resultado contiene integrales; esto quiere decir que no ha completado la integr
sage: #de la funcion f y lo ha dejado indicado
sage: g=f.integrate()
sage: print g
__main__:4: DeprecationWarning: Variable of integration should be specified explicitly.
1/4*x^10*sin(x^3 - x) + 1/4*x^10*sin(x^3 + x) + 1/4*x^10*cos(x^3 - x) - 1/4*x^10*cos(x^3 + x) + 1/4*i
sage: sage.calculus.calculus.integral?
<html>...</html>

6.3.4 Integrales definidas


Las integrales definidas son tambin complicadas de calcular de forma exacta. Sin embargo, una integral definida es
un nmero real, y en las aplicaciones es suficiente con aproximar ese nmero con suficiente precisin.
Si insistimos en hacer el clculo exacto, podemos usar el mismo mtodo integral , pero pasando adems dos
argumentos: el extremo inferior y superior del intervalo.
sage: sin(x).integral(0,pi)
2
sage: f(x) = sin(x)
sage: F = f.integral()
sage: v = F(pi) - F(0)
sage: print v
sage: print f.integral(0,pi)
2
x |--> 2

sage: #Algunas integrales definidas no se pueden calcular de forma exacta,


sage: #y las deja indicadas
sage: f7=sin(x)/x
sage: integral(f7,0,1)
/home/sageadm/sage-4.4.1-linux-64bit-ubuntu_9.10-x86_64-Linux/local/lib/python2.6/site-packages/sage/
return x.integral(*args, **kwds)
integrate(sin(x)/x, x, 0, 1)

Sin embargo, todas las integrales definidas se pueden calcular de forma aproximada con la funcin
numerical_integral , que acepta como argumentos la funcin a integrar y los extremos del intervalo, pero
devuelve una tupla formada por el valor aproximado de la integral y una cota del error cometido.
sage: numerical_integral(f7,0,1)
(0.94608307036718298, 1.0503632079297087e-14)
sage: numerical_integral?
<html>...</html>

6.3. Clculo diferencial en una variable

161

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Las funciones de una variable simblica tambin se pueden integrar con el mtodo nintegral, que adems del valor
aproximado de la integral y una estimacin del error devuelve dos parmetros adicionales.
sage: f7.nintegral(x,0,1)
(0.94608307036718309, 1.050363207929709e-14, 21, 0)

Ejercicio
Lee la ayuda del mtodo nintegral , y realiza llamadas a nintegral tales que:
el ltimo valor devuelto por nintegral sea positivo
el tercer valor devuelto por nintegral sea mayor que 100
sage: f7.nintegral?
<html>...</html>

6.3.5 Grficas
Vamos a manejar varios comandos para hacer grficas:
plot(f) ( f.plot() ) dibujan la funcin f.
point2d(lista) , dibuja los puntos de la lista que se pasa como argumento.
line2d(lista) , dibuja lneas entre los puntos de la lista que se pasa como argumento.
sage: plot(f2)

sage: puntos = [(0,0),(1,1),(2,0),(3,1)]


sage: point2d(puntos)

162

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: line2d(puntos)

Adems de los argumentos obligatorios, le podemos pasar argumentos opcionales. Los siguientes parmetros son
bastante tiles:
plot(f,xmin,xmax) muestra la funcin entre los puntos xmin y xmax .
point2d(puntos, pointsize=20) permite especificar el tamao de los puntos
line2d(puntos, thickness= 2) permite especificar el grueso de la lnea
plot(f, color=(1,0,0)) permite especificar el color como una tupla de 3 valores: los tonos de rojo,
verde y azul.
point2d(puntos, rgbcolor=(1,0,0) ) y line2d(puntos, rgbcolor=(1,0,0) ) permiten
especificar el color como una tupla de 3 valores: los tonos de rojo, verde y azul.

6.3. Clculo diferencial en una variable

163

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: plot(f2,-5,5,color=(1,0,0))

sage: point2d(puntos, pointsize=30)

sage: line2d(puntos, thickness= 3, color=(0,1,0))

164

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Las grficas se pueden almacenar en variables.


sage: grafica1 = plot(sin(x),-pi,pi)
sage: grafica2 = point((0,0), pointsize=30, rgbcolor=(1,0,0) )
sage: grafica3 = line([(-pi,-pi),(pi,pi) ], rgbcolor=(0,1,0) )

Las grficas tienen un tipo de datos especial, con sus propios mtodos.
sage: grafica1?
<html>...</html>
sage: grafica1.
Traceback (most recent call last):
...
SyntaxError: invalid syntax

El operador suma (+) permite combinar grficas en una sla imagen.


sage: grafica = grafica1+grafica2+grafica3
sage: grafica.show()

6.3. Clculo diferencial en una variable

165

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Podemos combinar muchas grficas en una sla almacenando las grficas en una lista, y luego usando la funcin sum
.
sage: lista = [plot(sin(n*x), (0, pi), color=(0,n/3,1-n/3))
sage: grafica = sum(lista)
sage: grafica.show()

for n in [1..4]]

6.3.6 Ceros, mximos y mnimos


Buscar ceros de funciones
Algunos problemas tpicos del clculo no se prestan tan bien al clculo simblico como los lmites y las derivadas. Un
ejemplo tpico es encontrar los puntos donde una funcin toma el valor 0. Podemos intentar resolver la ecuacin f=0
usando el comando solve , al que pasamos como argumento la variable simblica para la que queremos resolver.

166

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

f = x^2 - 3
f.solve(x)
> [x == -sqrt(3), x == sqrt(3)]

Aunque el resultado es adecuado en muchos casos particulares importantes, francamente pocas ecuaciones que podamos definir combinando ms de una funcin elemental tienen races que se puedan escribir de forma exacta como una
expresin simblica. Adems, tenemos el problema de la multiplicidad de races y extremos de las funciones.
La solucin que nos ofrece SAGE es buscar las races de forma numrica en un intervalo dado. Una llamada al mtodo
find_root :
f.find_root(a,b)

nos devuelve una raz de la funcin f en el intervalo [a,b] , y lanza un error si la funcin no tiene ceros en ese
intervalo.
sage: f6 = x^2 - 3
sage: f6.solve(x)
[x == -sqrt(3), x == sqrt(3)]
sage: f7=2*x+sin(x)-2
sage: #El resultado de llamar a solve no es satisfactorio
sage: f7.solve(x)
[x == -1/2*sin(x) + 1]
sage: f7.plot(0,10)

sage: f7.find_root(0,2)
0.68403665667799907
sage: sin(x).find_root(1,2)
Traceback (most recent call last):
...
RuntimeError: f appears to have no zero on the interval

6.3. Clculo diferencial en una variable

167

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: plot(sin(x),1,2)

Si la funcin tiene ms de una raz en el intervalo, find_root devuelve una cualquiera de las raices.
sage: sin(x).find_root(1,30)
21.991148575128552

Las funciones find_minimum_on_interval y find_maximum_on_interval funcionan de forma similar


a find_root :
f.find_minimum_on_interval(a,b)

devuelve una tupla con dos valores: el minimo de la funcin en el intervalo y el punto donde se alcanza.
sage: f8 = x^2 - 3*sin(x)
sage: plot(f8,-4,4)

168

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: (y0,x0) = f8.find_minimum_on_interval(-4,4)


sage: print x0,y0
sage: grafica = plot(f8,-4,4) + point2d((x0,y0), pointsize=30, rgbcolor=(1,0,0))
sage: grafica.show()
0.914856478862 -1.54046280571

En realidad, el valor devuelto por find_minimum_on_interval es uno cualquiera de los mnimos locales de la
funcin. En la documentacin de la funcin leemos que usa el mtodo de Brent : una combinacin del mtodo de
biseccin, el mtodo de la secante y el mtodo de interpolacin cuadrtica:
Todos estos mtodos pueden detenerse en un extremo local, y el algoritmo de Brent tambin. En general, el problema
de encontrar mximos globales no es trivial, aunque para funciones de una variable de las que se conoce alguna
propiedad extra no es difcil encontrar procedimientos para encontrar los extremos.
sage: f8.find_minimum_on_interval?
<html>...</html>

6.3. Clculo diferencial en una variable

169

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: f9=sin(x/10)+sin(x)
sage: plot(f9,0,50)

sage: f9.find_maximum_on_interval(10,20)
(1.987809504903955, 14.152658043591082)
sage: f9.find_maximum_on_interval(0,50)
(1.8920281240458212, 20.37533953333153)

6.3.7 Funciones definidas a trozos


Usando la funcin Piecewise podemos construir funciones definidas a trozos. Para ello, pasamos a la funcin
Piecewise una lista de tuplas, donde cada tupla contiene un intervalo y una funcin. El resultado es la funcin definida
a trozos que vale en cada intervalo la funcin que hemos pasado.
f = Piecewise( [(I1, f1), (I2,f2), ...] )

Pasamos los intervalos como tuplas con los extremos del intervalo.
::

sage: f1=sin(x)-x sage: f2=x^2 sage: f=Piecewise([((-1,0),f1),((0,1),f2)])


sage: show(f)

x + sin (x) on (1, 0)


on (0, 1)
x2

sage: plot(f)

170

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: fp = f.derivative()
sage: show(fp)
sage: plot(fp)
__main__:2: DeprecationWarning: Substitution using function-call syntax and unnamed arguments is depr

x 7 cos (x) 1
x 7 2 x

6.3. Clculo diferencial en una variable

on (1, 0)
on (0, 1)

171

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

6.4 Ejercicios
6.4.1 1.
Estudia la funcin:
(1 x)x sin (10 x)
(10 x 6)
en el intervalo [0,1]:
La funcin no est definida cuando x=0.6. Indica cmo puedes extender la funcin para que quede definida en
ese punto, siendo continua si es posible.
Encuentra todos sus mximos y mnimos locales y globales en ese intervalo.
Dibuja la funcin en el intervalo [0,1], con los extremos locales indicados en un color y los extremos absolutos
indicados en un color distinto.

6.4.2 2.
Estudia la funcin g:

(x 1)x cos 61 + 4 x
(3 x 1)
en el intervalo [0,1]
Calcula la segunda derivada de g.
Dibuja la segunda derivada de g en el intervalo [0,1], y encuentra todos los ceros de la segunda derivada.
Dibuja la funcin en el intervalo [0,1], con los puntos encontrados antes marcados en rojo. Es decir, deben
aparecer, dibujados sobre la grfica de f, los puntos donde se anula la segunda derivada.

6.4.3 3.
Define en un cuadro de comandos una funcin f en la variable simblica x y un valor x0 . A continuacin, escribe
cdigo para:
Calcular la funcin de la variable simblica x que representa la recta tangente a f en el punto x0 , a partir de
los datos anteriores.
Dibujar la funcin cerca del punto, el punto (x0,f(x0)) en otro color, y la recta tangente a la funcin en (x0,f(x0))
en otro color.
sage: f(x) = sin(x)
sage: x0
= 0

6.4.4 4.
Escoge una funcin f(x) cuyo lmite cuando x exista, y crea una grfica que muestre la funcin y la asntota,
en un rango aceptable de valores de x .

172

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

6.4.5 5.
Escoge una funcin con una asntota oblicua, encuentra una funcin simblica que represente esa asntota y dibuja en
la misma grfica la funcin y la asntota.

6.4.6 6.
Escoge una funcin convexa en un intervalo [a,b] y escribe cdigo que, dado un nmero K, genere una grfica que
muestre la funcin en el intervalo, y K rectas tangentes a la funcin en puntos (x,f(x)) para puntos x equiespaciados en
el intervalo [a,b] .
Repite el ejercicio para una funcin con un punto de inflexin.

6.5 Clculo vectorial


En esta hoja vamos a estudiar problemas de clculo diferencial e integral en varias dimensiones espaciales. En general,
manejaremos funciones de varias variables simblicas.
Comencemos por representar grficamente funciones de dos variables reales.
sage: var(x,y)
(x, y)
sage: f1 = sin((x+y)^2)
sage: f1.show()



2
sin (x + y)

6.5.1 Representacin de funciones


El comando plot3d genera una superficie cuya altura sobre el punto (x,y) es proporcional al valor de una funcin f
de dos variables simblicas. La sintaxis es:
plot3d(f,(x,x1,x2),(y,y1,y2))

x e y son variables simblicas


f es funcin de x y de y
(x1,x2) es el rango que se mostrar de la variable x
(y1,y2) es el rango que se mostrar de la variable y
Al mostrar la grfica llamando a show() , podemos pasar el argumento opcional viewer que nos permite elegir entre
varias formas de mostrar la grfica, algunas interactivas, que permiten girar la grfica con el ratn. Como de costumbre,
plot3d? y p.show? (p es una grfica generada con plot3d ) muestran la ayuda con ejemplos de uso.
sage: p = plot3d(f1,(x,-1,1),(y,-1,1))
sage: p.show(viewer=tachyon)

6.5. Clculo vectorial

173

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:

f2 = x*y*exp(x-y)
f2.show()
p = plot3d(f2,(x,-2,0.5),(y,-0.5,2))
p.show(viewer=tachyon)

xye(xy)

Curvas de nivel
Otra opcin es dibujar curvas de nivel de la funcin en el plano (x,y). Usando
implicit_plot(f,(x,x1,x2),(y,y1,y2))

Dibujamos la curva dada por f=0. Si pasamos a implicit_plot el argumento adicional contours, el dibujo
contiene tantas curvas de nivel como le indiquemos:
implicit_plot(f,(x,x1,x2),(y,y1,y2), contours= 10)

exactamente las curvas de nivel que le indiquemos:


implicit_plot(f,(x,x1,x2),(y,y1,y2), contours = lista)
sage:
sage:
sage:
sage:

174

#Pasando a show el parametro adicional aspect_ratio=1


#garantizamos que se mantendr el ratio correcto entre
#el eje x y el eje y
implicit_plot(x^2 + 2*y^2 - 0.8,(x,-2,2),(y,-2,2)).show(aspect_ratio=1)

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: implicit_plot(x^2 + 2*y^2,(x,-2,2),(y,-2,2),contours=10).show(aspect_ratio=1)

6.5. Clculo vectorial

175

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: implicit_plot(x^2 + 2*y^2,(x,-2,2),(y,-2,2),contours=srange(0,4,0.1)).show(aspect_ratio=1)

176

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

contour_plot es muy similar al anterior, pues muestra de distinto color la regin entre dos curvas de nivel consecutivas (es decir, la preimagen de un intervalo).
sage: contour_plot(x^2+2*y^2,(x,-2,2),(y,-2,2)).show(aspect_ratio=1)

6.5. Clculo vectorial

177

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Comparamos las distintas formas de representar una funcin de dos variables.


sage:
sage:
sage:
sage:
sage:

f3=log(2+sin(x*y))
f3.show()
plot3d(f3,(x,-3,3),(y,-3,3)).show(viewer=tachyon)
contour_plot(f3,(x,-3,3),(y,-3,3)).show()
implicit_plot(f3,(x,-3,3),(y,-3,3),contours=10).show()

log (sin (xy) + 2)

178

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Plano tangente
Una funcin de dos variables simblicas se puede derivar respecto de cada una de ellas de forma independiente. De
esta forma podemos aplicar la frmula del plano tangente en un punto:
z = f (x0 , y0 ) +

f
f
(x0 , y0 )(x x0 ) +
(x0 , y0 )(y y0 )
x
y

Las grficas de curvas de nivel no permiten apreciar bien el plano tangente, pero podemos representar el plano junto a
la funcin con plot3d .

6.5. Clculo vectorial

179

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:
sage:
sage:
sage:
...
...
sage:

f4=x*log(x^2+y^2)
f4.show()
x0 = 1
y0 = 1
plano = (x - x0)*f4.derivative(x,1).subs(x=x0, y=y0) + (y - y0)*f4.derivative(y,1).subs(x=x0, y
show(plano)
p = (plot3d(f4,(x,-1.5,1.5),(y,-1.5,1.5)) +
plot3d(plano,(x,-1.5,1.5),(y,-1.5,1.5),color=red) +
point3d( (x0,y0,f4(x=x0,y=y0)), color=green, pointsize=30) )
p.show(viewer=tachyon)

x log x2 + y 2

(log (2) + 1)(x 1) + y + log (2) 1

Polinomio de Taylor
La frmula del plano tangente es el caso particular de la frmula del polinomio de Taylor de la funcin en un punto:
f (x) =

k
X
1 f (a)
(x a) +
! x

||=0

R (x)(x a)

||=k+1

Donde x = (x1 , . . . , xn ) es una variable vectorial, y es un multindice. En palabras, el polinomio de Taylor de f de


orden k en a = (a1 , . . . , an ) contiene todos los monomios construdos con derivadas de orden menor o igual que k.
La sintaxis para construir el polinomio de Taylor de f de orden k en las variables (x,y) y en el punto (a,b) es:
f.taylor((x,a),(y,b),k)
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:

#El polinomio de Taylor de orden 1 es la ecuacion del


#plano tangente
x0 = 1
y0 = 1
plano = (x - x0)*f4.derivative(x,1).subs(x=x0,y=y0) + (y - y0)*f4.derivative(y,1).subs(x=x0,y=y
show(plano)
f4t1 = f4.taylor((x,x0),(y,y0),1)
show(f4t1)

(log (2) + 1)(x 1) + y + log (2) 1


(log (2) + 1)(x 1) + y + log (2) 1

sage:
sage:
sage:
sage:
sage:

180

f5 = x*exp(x + y)
f5.show()
#pol5 = f5.taylor((x,0),(y,0),2)
pol5 = polinomio_taylor(f5,(x,0),(y,0),2)
pol5.show()

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

xe(x+y)
x2 + xy + x

sage: p1=plot3d(f5,(x,-1,1),(y,-1,1));
sage: p2=plot3d(pol5,(x,-1,1),(y,-1,1),color=red);
sage: show(p1+p2,viewer=tachyon)

6.5. Clculo vectorial

181

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Derivadas direccionales

Ejercicio
Calcula la derivada direccional de la funcin f6 = sin (xy) + cos (xy) en el punto (1, /2) y la direccin (1, 1).
Investiga la ayuda del comando arrow, y dibuja el gradiente de f6 en un punto. Observa el efecto al cambiar la
funcin, y el punto.
sage: f6=sin(x*y)+cos(x*y)
sage: f6.show()

sin (xy) + cos (xy)

Campo gradiente
Usando el comando plot_vector_field , podemos dibujar el campo gradiente . El campo de vectores gradiente
de f es la asignacin del vector gradiente de f a cada punto del plano. Recordemos de las clases de teora que el
gradiente es perpendicular a las curvas de nivel. Es una buena ocasin para dibujar simultneamente las curvas de
nivel y el campo gradiente de una funcin.
sage: f7=sin(x*y)+cos(x*y)
sage: f7.show()

sin (xy) + cos (xy)

sage: plot_vector_field(f7.gradient(),(x,-2,2),(y,-2,2)).show(aspect_ratio=1)

182

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: (contour_plot(f7,(x,-2,2),(y,-2,2)) + plot_vector_field(f7.gradient(),(x,-2,2),(y,-2,2))).show(

6.5. Clculo vectorial

183

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Regiones
Otro comando interesante es el comando region_plot, que sirve para dibujar regiones definidas por desigualdades.
Se puede llamar de varias formas para representar regiones definidas por varias ecuaciones (ver la ayuda para ms
informacin). En esta sesin lo usaremos para visualizar regiones de integracin.
sage: #Una elipse
sage: region_plot((x-1)^2 + 2*y^2 < 1,(x,-2,2),(y,-2,2)).show(aspect_ratio=1)

184

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #Un algo


sage: region_plot(x^4+x*y+y^2<1,(x,-2,2),(y,-2,2))

6.5. Clculo vectorial

185

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #La interseccion de las dos regiones anteriores


sage: region_plot([x^4+x*y+y^2<1, (x-1)^2+2*y^2<1],(x,-2,2),(y,-2,2))

Ejercicio
dibuja la regin 0<=x<=1,x*(1-x)<=y<=sin(pi*x)

6.5.2 Puntos crticos y extremos


Ceros del gradiente
La forma ms naive de buscar puntos crticos es resolver el sistema de ecuaciones no lineales
(f ) = 0

El sistema es trivial de plantear usando el mtodo gradient visto antes, y podemos intentar resolver el sistema llamando
a solve :
solve(f.gradient(),f.variables())
sage:
sage:
sage:
sage:

186

#Esta funcion parece tener un minimo cerca de (-0.5,-0.5)


var(x y)
f = x^2 + y^4 + x + y
contour_plot(f,(x,-2,2),(y,-2,2)).show()

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #Obtenemos varias soluciones "extra":


sage: #?Cual corresponde al minimo?
sage: solve(f.gradient(),f.variables())
[[x == -0.5, y == (0.314980262474 + 0.545561817986*I)], [x == -0.5, y == (0.314980262474 - 0.54556181

Por supuesto, con funciones ms complicadas, este tipo de sistemas de ecuaciones no lineales es casi imposible de
resolver.
sage:
sage:
sage:
sage:

#Esta funcion parece tener un minimo cerca de (-0.3,-0.5)


var(x y)
f = x^2+ y^4 + sin(x+y)
contour_plot(f,(x,-1,1),(y,-1,1),plot_points=300).show()

6.5. Clculo vectorial

187

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: solve(f.gradient(),[x,y])
[2*x + cos(x + y), 4*y^3 + cos(x + y)]

Mnimos de una funcin de varias variables obtenidos numricamente


El paquete scipy.optimize contiene varios mtodos relacionados con problemas de optimizacin. El mtodo
scipy.optimize.fmin busca mnimos de una funcin de varias variables partiendo de un punto inicial. Para
llamar al mtodo, es necesario definir una funcin de python que acepta como argumento una lista con los valores de
las variables y devuelve el valor de la funcin en el punto. El resultado es el mnimo propuesto, y una estimacin del
error cometido. Adems, nos imprime un resumen de la ejecucin del algoritmo numrico.
sage: from scipy.optimize import fmin
sage: def f_0(xs):
...
x,y = xs
...
return x^2 + y^4 + x + y
sage: fmin(f_0,(0,0))
Optimization terminated successfully.
Current function value: -0.722470
Iterations: 58
Function evaluations: 113
array([-0.500004 , -0.62998934])
sage: from scipy.optimize import fmin
sage: def f_0(xs):
...
x,y = xs
...
return x^2 + y^4 + sin(x + y)
sage: fmin(f_0,(0,0))
Optimization terminated successfully.
Current function value: -0.570485
Iterations: 60
Function evaluations: 109
array([-0.32318198, -0.54469709])

6.5.3 Integrales
La integracin simblica sobre regiones cuadradas no supone ningn quebradero de cabeza (siempre que el sistema
sea capaz de encontrar las integrales del integrando). Para calcular la integral doble, integramos primero respecto de
una variable y despus respecto de la otra.
Ejemplo:
ZZ

x2 ey dx dy, Q = [1, 1] [0, log 2]

sage: f = x^2*e^y
sage: f.integral(x,-1,1).integral(y,0,log(2))
2/3

Para regiones ms generales, tenemos que operar igual que en clase de Clculo, descomponiendo la regin en subregiones del tipo:
{x1 x x2 , g(x) y h(x)}

188

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Ejercicio resuelto
Representa el conjunto de los valores f (x, y) sobre Q = [0, 1] [0, 1] y calcula el volumen del slido as obtenido.

x+y
si x2 y 2x2 ,
f (x, y) =
0
en el resto.

sage:
sage:
sage:
sage:
sage:
sage:
...
...
...
...
sage:

#Comenzamos por dibujar la funcion


#!!!Atencion!!! Esta vez el argumento de plot3d no es una
#funcion de dos variables simbolicas, sino una funcion
#normal de python que acepta como argumentos dos numeros
#reales y devuelve otro
def f(a,b):
if a^2 <= b <= 2*a^2:
return a+b
else:
return 0
plot3d(f,(0,1),(0,1)).show(viewer=tachyon)

6.5. Clculo vectorial

189

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #Un dibujo de curvas de nivel es igualmente ilustrativo


sage: contour_plot(f,(0,1),(0,1),plot_points=300).show()

190

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #para calcular la integral simbolica necesitamos definir


sage: #una funcion de dos variables simbolicas, pero debemos
sage: #integrar solo en la region adecuada
sage: var(x y)
sage: g = x + y
sage: print g
sage: print g.integral(y,x^2,2*x^2)
sage: print g.integral(y,x^2,2*x^2).integral(x,0,1)
x + y
3/2*x^4 + x^3
11/20

Cuando sea imposible evaluar la integral de una funcin sobre una regin bsica del plano de forma exacta, podemos
hacerlo de forma numrica con scipy.integrate.dblquad
sage: #Es necesario importar la funcion dblquad
sage: #del paquete scipy.integrate al que pertenece
sage: from scipy.integrate import dblquad
sage: dblquad?
<html>...</html>

Calculamos la misma integral que calculamos antes de forma simblica usando dblquad.
sage: def g(x,y):
...
return x+y
sage: def gfun(x):
...
return x^2
sage: def hfun(x):
...
return 2*x^2
sage: dblquad(g,0,1,gfun,hfun)
(0.54999999999999993, 6.1062266354383602e-15)

6.5. Clculo vectorial

191

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Cambios de coordenadas
Probemos a calcular una integral en coordenadas cartesianas y polares. Recordemos que:
ZZ
ZZ
f (x, y)dx dy =
rf (r, )dr d
R

sage: var(x y r theta)


(x, y, r, theta)
sage: f = x^2+y^2
sage: print f.integral(y,-sqrt(1-x^2),sqrt(1-x^2)).integral(x,-1,1)
CODE:
sage47 : integrate(sage43,sage44,sage45,sage46)$
Maxima ERROR:
defint: lower limit of integration must be real; found -sqrt(1-x^2)
-- an error. To debug this try: debugmode(true);
Traceback (most recent call last):
...
TypeError: Error executing code in Maxima

El cdigo anterior produce un error. Hurgando un poco en la traza del error, leemos:
TypeError: Error executing code in Maxima
CODE:
sage9 : integrate(sage5,sage6,sage7,sage8)
Maxima ERROR:
defint: lower limit of integration must be real; found \-sqrt(1\-x^2)

Recordemos que SAGE usa otras piezas de software con ms tradicin siempre que puede. En este caso, le pasa la tarea
de realizar la integral a la librera Maxima . Esta librera arroja un error bastante ilustrativo: el lmite de integracin
debe ser real, pero sqrt(1-x^2) puede ser imaginario. Entender la causa del error no siempre garantiza que se pueda
superar el problema, pero en este caso la solucin es informar a Sage de que puede asumir que x est entre -1 y 1.
En cualquier caso, nada nos garantiza el xito al intentar una integral de forma simblica, as que deberamos estar
preparadas para hacer la integral con dblquad si todo lo dems falla.
sage: assume(1-x^2>0)
sage: f = x^2+y^2
sage: print f.integral(y,-sqrt(1-x^2),sqrt(1-x^2)).integral(x,-1,1)
1/2*pi
sage: #Integramos en coordenadas polares.
sage: f_polar = f(x=r*cos(theta),y=r*sin(theta))
sage: print f_polar
sage: #Intentamos simplificar el integrando (no es necesario)
sage: f_polar = f_polar.full_simplify()
sage: print f_polar
sage: integrando_polar = r*f_polar()
sage: integrando_polar.integral(theta,0,2*pi).integral(r,0,1)
r^2*sin(theta)^2 + r^2*cos(theta)^2
r^2
1/2*pi

192

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

6.6 Ejercicios
6.6.1 1.
Hallar el vector gradiente, en cada punto en el que exista, de las siguientes funciones escalares
f (x, y) = ex cos y
f (x, y, z) = log (x2 + 2 y 2 3 z 2 )
1
f (x, y) = xy sin x2 +y
2 si (x, y) 6= (0, 0) y f (0, 0) = 0.

6.6.2 2.
Calcular la distancia mnima entre los puntos de la grfica de f (x, y) =

1
4xy

y el punto (0, 0, 0).

6.6.3 3.
Calcula las derivadas parciales 1 2 f y 2 1 f en el punto (0,0):
(
2
2
si(x, y) 6= (0, 0)
xy xx2 y
+y 2
f (x, y) =
0
si(x, y) = (0, 0)
Decide si son iguales, y si son continuas en (0,0).
Nota: esta funcin muestra que el recproco del teorema de Clairaut (tb llamado teorema de Schwartz) es falso:
http://es.wikipedia.org/wiki/Teorema_de_Clairaut

6.6.4 4.
Hallar los puntos crticos y determinar cules son los mximos locales, mnimos locales o puntos silla:
f (x, y) = x2 + y 2 2 x y.
f (x, y) = x y.

f (x, y) = x2 + y 2 + x y 2 x 4 y + 10.
f (x, y) = 3 x2 4 y 2 + x y.

6.6.5 5.
Representa el conjunto de los valores f (x, y) sobre Q = [0, 1] [0, 1] y calcula el volumen del slido as obtenido.

1 (x + y)
si x + y 1,
f (x, y) =
0
en otro caso.

6.6.6 6.
Investiga la ayuda de region_plot con el objetivo de dibujar la unin de dos regiones. Es posible que la calidad
del dibujo empeore, pero la ayuda tambin explica cmo mejorar la precisin del dibujo.

6.6. Ejercicios

193

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

6.6.7 7.
En los siguientes apartados, se supone que la integral de una funcin positiva f sobre la regin se reduce a la integral
iterada que se da. En cada caso, se pide determinar y dibujar la regin e invertir el orden de integracin.


R 2  R 2y
R4R2

f
(x,
y)
dy
dx ,
f
(x,
y)
dx
dy.
x
0
y2
1


R e  R log x
R  R sin x
f
(x,
y)
dy
dx.
f
(x,
y)
dy
dx.
1
0
0
sin x/2
Indicacin: usa region_plot para dibujar la regin. Despus de hacer el cambio en el orden de integracin, dibuja
de nuevo la regin para comprobar que obtienes el mismo resultado.

6.6.8 8.
Hallar el valor de las siguientes integrales, determinando y dibujando en cada caso el recinto de integracin
RRR
(2x + 3y + z) dx dy dz, con Q = [1, 2] [1, 1] [0, 1].
Q
RRR 2
x cos z dx dy dz, siendo T la regin limitada por los planos z = 0, z = , y = 0, y = 1, x = 0, x+y = 1.
T
RRR
x y 2 z 3 dx dy dz, siendo el slido limitado por la superficie z = x y y los planos y = x, x = 1 y z = 0.

6.6.9 9. reas con el teorema de Green


Veamos cmo realizar integrales de lnea como las que aparecen en el teorema de Green. Este teorema se suele escribir
as:

I
ZZ 
L
M

dx dy
(L dx + M dy) =
x
y
C
D
Con frecuencia, sta es una manera prctica de evaluar integrales planas sobre regiones que no admiten una descomposicin sencilla en regiones simples. Por ejemplo, podemos calcular reas:
I
ZZ
x dy =
1 dx dy = |D|
C

Calcula el rea de un tringulo con este mtodo. Comprueba el resultado calculando el rea de tringulos cuya
rea puedas calcular a mano.
Calcula el rea de un polgono de n lados.
Demuestra que el rea de la elipse es

x2
a2

y2
b2

1 es A = a b

Indicacin: Recuerda que una parametrizacin de la elipse es t (a cos(), b sin()).

6.7 Curvas planas


En esta sesin vamos a utilizar varios mtodos de representacin de curvas en el plano:
en paramtricas;
en coordenadas polares;
por una ecuacin implcita.

194

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

6.7.1 Ecuaciones paramtricas


Pensaremos en una curva plana como la imagen por una funcin continua : I R2 , con I un intervalo de nmeros
reales. Si tomamos t como variable independiente (t R), describiremos la imagen como el conjunto de puntos


= (I) = (x(t), y(t)) : t I
o simplemente
: x(t) , y(t)

Cuando el dominio de valores para el parmetro t es un intervalo, digamos [a, b], la curva tiene como extremos los
puntos: (x(a), y(a)) y (x(b), y(b)).
Ejemplos
La curva : (t, t), para t (0, 1) , es el segmento de recta que une los puntos (0, 0) y (1, 1). En general, si P y
Q son dos puntos, un segmento rectilneo que une P con Q es: : (1 t) P + t Q, considerando t (0, 1).
Antes de continuar, vamos a utilizar Sage para dibujar este ejemplo. Necesitamos que nuestro cdigo sepa interpretar la expresin (1 t) P + t Q como lo haramos nosotros, a saber: si P = (x0 , y0 ) y Q = (x1 , y1 ), el resultado
queda:


(1 t) (x0 , y0 ) + t (x1 , y1 ) = (1 t)x0 , (1 t)y0 + tx1 , ty1 
= x0 + t(x1 x0 ) , y0 + t(y1 y0 )
Esta manipulacin (afn), no es ms que tratar a los puntos P y Q como vectores (los vectores OP y OQ, cuando se ha
fijado un punto como origen del plano afn). En el siguiente cdigo se consigue este propsito. Utilizamos la funcin
parametric_plot de Sage (leer la ayuda antes de seguir). Obsrvese en qu manera se explicita el intervalo para
la variable t.
sage: parametric_plot?
<html>...</html>
sage:
sage:
sage:
sage:
sage:
sage:

# Segmento rectilneo entre dos puntos P y Q


var(t)
P=vector((1,-1))
Q=vector((2,2))
#Observacin
show((1-t)*P+t*Q)

(t + 1, 3 t 1)

sage: #Aviso: no funciona en la versin 4.3.1


sage: parametric_plot((1-t)*P+t*Q, (t, 0, 1))

6.7. Curvas planas

195

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #Valido en version 4.1.1


sage: parametric_plot( (t + 1, 3*t - 1) , (t, 0, 1))

Ms ejemplos
Si tenemos una funcin (continua) real de variable real, f : R R, la grfica es una curva en el
plano, {(x, f (x)) : x R}, que podemos presentar paramtricamente (tomando x = t). Estos son
casos particulares de curvas, en las que no hay ms de un punto en cada vertical (por qu?).
Una parbola: (t, t2 )
Una exponencial: (t, et )
Curvas trigonomtricas: (t, sin(t)), (t, cos(t)), . . .

196

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011



Funciones racionales: t, t21t
+3t , t 6= 3, 0. En los puntos en que una funcin tal no es continua, la
grfica no es fiel (comprobarlo).
Polinomios, ...
sage: parametric_plot((t,(1-t)/(t^2+3*t)), (t,-5,2))

Y los ms interesantes
La mayora del lenguaje de curvas parametrizadas viene del estudio del movimiento de una partcula. En esos casos, el
parmetro de la curva suele ser el tiempo (qu buena eleccin de letra t!), y cada punto de la curva marca la posicin de
la partcula en cada momento. As el segmento rectilneo entre dos puntos P y Q descrito por : (1 t) P + t Q, t
[0, 1] sera la trayectoria descrita por una partcula que viaja en lnea recta, partiendo de P y llegando a Q en una unidad
de tiempo (t [0, 1]).
Este enfoque nos surte de una cantidad tremenda de ejemplos, histricamente estudiados por grandes fsicos y matemticos, de los que a continuacin exponemos una brevsima lista (para ver ms visitar, por ejemplo: mathcurve.com
, epsilones.com ):

Circunferencia (centrada en el origen y de radio ): cos t, sin t , t [0, 2)

Bruja de Agnesi: 2at, 2a/(1 + t2 ) (a es el radio de la circunferencia base ver construccin ms abajo)
Astroide: (a cos3 (t), a sin3 (t)), t [0, 2)


3at
3at2
El folium de Descartes: 1+t
, t (1, 1). Nota: el cambio t por 1/t, cambia x e y.
3 , 1+t3

???: sin(3t), cos(4t) + 4 cos t , t [0, 2)
sage:
sage:
sage:
sage:

# Dibujamos el folium de Descartes pegando dos ramas simtricas respecto al eje (y=x).
rama1=parametric_plot((t/(1+t^3),t^2/(1+t^3)), (t,-.5,1))
rama2=parametric_plot((t^2/(1+t^3),t/(1+t^3)), (t,-.5,1), color=(0,1,0))
show(rama1+rama2, aspect_ratio=1)

6.7. Curvas planas

197

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:

#Cbica (o bruja) de Agnesi


var(t theta x y)
a = 1
bruja = parametric_plot((2*a*t,2*a/(t^2+1)), (t, -2, 2))
#circle dibuja una circunferencia de centro y radio dados
circ_bruja = circle((0,a),a)
ambas = bruja + circ_bruja
show(ambas, aspect_ratio=1)

Construccin de la curva de Agnesi


Se consideran dos puntos diametralmente opuestos en una circunferencia, O y N , y la tangente, `, a la circunferencia
por uno de ellos, digamos que por N . Desde el otro, hacemos la siguiente construccin

198

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

para cada punto de la circunferencia, X, tomamos el punto de corte de la recta OX con la recta `: X 0 = OX `;
completamos un tringulo rectngulo con X, X 0 y un tercer punto, P (X), en la recta, `(X), paralela a ` por el
punto X: el ngulo recto sobre el vrtice nuevo, P (X).
La curva de Agnesi es la descrita por los puntos P (X).

sage: var(a t s x y)
(a, t, s, x, y)
sage: solve((2*a*t*s)^2+(2*a*s-a)^2-a^2,s)
[s == (1/(t^2 + 1)), s == 0]

6.7.2 Coordenadas polares


Una manera alternativa de indicar la posicin de cada punto es mediante sus coordenadas polares (, ), siendo la
distancia del punto al origen, y el ngulo que forma el vector que une el origen con el punto y el semieje horizontal
positivo, es decir: si P = (x, y)
=

p
x2 + y 2 ,

= arctan

y
.
x

Obsrvese que la funcin arctan nos devuelve el valor correcto del ngulo salvo, quizs, un error de (pues tan() =
tan( )). El cambio inverso, de polares a cartesianas, es ms preciso:
x = cos ,

y = sin .

Es claro que 0 as como que basta tomar ngulos en el intervalo [0, 2), por ejemplo.
Para dar la ecuacin en polares de una curva, se suele expresar el radio como una funcin del ngulo, pero se representa
en el plano cartesiano. As, si dibujamos la curva : = cos2 () , [0, 2), estaremos dibujando los puntos del
plano (x, y), con x = cos = cos2 () cos = cos3 , e y = cos2 sin , variando , en este caso, entre 0 y 2.
La funcin de Sage que utilizamos en este caso es polar_plot (revisar su ayuda en lnea), que es equivalente a
utilizar el valor polar=True en un plot() .

6.7. Curvas planas

199

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: polar_plot?
<html>...</html>
sage: var(theta)
sage: polar_plot(cos(theta)^2, (theta,0,2*pi))

Ejemplos

Recta de ecuacin Ax + By = 1 (no pasa por el origen). Si p = 1/ A2 + B 2 y es el ngulo definido por


p
cos = Ap, sin = Bp, entonces: =
es su ecuacin en polares.
cos( )
Recta que pasa por el origen: en este caso la descripcin es ms sencilla, pues todos los puntos de la recta (al
unirse al origen) forman un ngulo constante con el eje de abcisas. As, si dicho ngulo es 0 la ecuacin es
= 0 . Ahora bien, no podemos indicarle a Sage cmo dibujarlas utilizando polar_plot() (ocurre como en la
representacin de rectas verticales, x = constante, en coordenadas cartesianas).
Como vemos, las rectas no son muy amigables para representar en polares. Sigamos con ejemplos ms enriquecedores.
Circunferencia (con centro el origen): = constante, [0, 2). Y si el ngulo lo variamos menos, conseguimos cualquier arco de circunferencia.
Circunferencia que pasa por el origen: = A cos + B sin , [0, 2). Nota: el centro es el punto de
coordenadas cartesianas (A/2, B/2).
Cnica con un foco en el origen: la ecuacin de la cnica, dado un foco, necesita conocer la recta directriz y la
excentricidad e. Si tal recta tiene ecuacin cartesiana x cos + y sin = q, la cnica es el lugar de puntos M
tales que kOM k = ekM Hk, siendo H la proyeccin ortogonal de M sobre la directriz. En tal caso, la ecuacin
polar de la cnica queda:
=

p
,
1 + e cos( )

p = eq .

La recta de ecuacin = es eje de simetra. Cuando e = 1 la cnica es una parbola, su eje de simetra
y (p/2, ) su vrtice. Cuando e 6= 1 la cnica es una cnica con centro, el eje focal y sus vrtices se calculan
sustituyendo por y + .
200

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

ltimos ejemplos
Por ltimo una lista de curvas famosas con sus ecuaciones polares:
Rosas: = a cos(n), [0, 2). Ejercicio : averiguar el nmero de ptalos para cada valor natural
de n. Nota: n puede ser cualquier real positivo.
La cardiode: = a(1 + cos ), [0, 2).
2

La cisoide: = a sin
cos , [0, 2).

La estrofoide: = a cos(2)
cos , [0, 2).
La lemniscata de Bernoulli: 2 = a2 cos(2), [0, 2).
Espirales:
Espiral de Arqumedes: = a, [0, +).
Espiral hiperblica: = a/, [0, +).
Espiral logartmica: = aem , [0, +).
sage: rosas=polar_plot(2*cos(6*theta), (theta,0,2*pi))
sage: show(rosas, aspect_ratio=1)

6.7. Curvas planas

201

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

6.7.3 Coordenadas cartesianas


Aunque no han dejado de usarse, hasta aqu no hemos pedido a Sage que represente una curva cuyas ecuaciones le
vienen dadas en funcin de sus coordenadas cartesianas. Lo hasta ahora habitual es encontrarnos con que la coordenada
y es una funcin de la coordenada x: y = f (x). Las herramientas del clculo diferencial nos ayudan a esbozar este
tipo de grficas. En este apartado vamos a adoptar un punto de vista ms general, dando una ecuacin de la curva en
la que ambas variables puedan aparecer en la expresin sin que sea necesario despejar una en funcin de la otra.
Ecuaciones implcitas
La ecuacin Ax + By = C, con A, B y C nmeros reales, nos sirve para describir todos los
puntos del plano cuyas coordenadas, (x, y), la verifican. Es fcil comprobar que todos estos puntos
quedan alineados, es decir describen una lnea recta. De la ecuacin dada decimos que es su ecuacin
cartesiana o implcita , y basta, para calcularla con dar dos puntos de la recta, o un punto y una
direccin (vector director).
Una ecuacin implcita de la recta que pasa por los puntos de coordenadas (x0 , y0 ), (x1 , y1 ) surge
de desarrollar la siguiente igualdad:

det

x x0
y y0

x1 x0
y1 y0

!
= 0.

Si conocemos que la recta pasa por el punto de coordenadas (x0 , y0 ) y la direccin de la recta es la del vector
v = (vx , vy ), una ecuacin implcita la obtenemos al desarrollar:

det

x x0
y y0

vx
vy

!
= 0.

Con ambos puntos de vista, los coeficientes A y B de la ecuacin resultante, Ax + By = C, determinan un


vector n = (A, B) (vector normal de la recta) que es perpendicular a la recta, en particular: a (x1 x0 , y1 y0 )
en la primera descripcin; a v, en la segunda.

Ejercicio
Encuentra la ecuacin de la recta que pasa por dos puntos usando lgebra lineal.
Ms ecuaciones implcitas
Por cinco puntos distintos del plano pasa una nica cnica . Este sencillo principio es una manera escueta de
afirmar que con fijar cinco puntos distintos (en posicin general), somos capaces de encontrar (determinar los
coeficientes de) una ecuacin implcita de la forma ax2 + by 2 + cxy + dx + ey + f = 0, y que cualquier otra
es el resultado de multiplicar todos los coeficientes por un factor no nulo. Aunque no entraremos en el concepto
general de puntos en posicin general, basta decir que en este caso quiere decir que los puntos son distintos y
que no hay tres que estn alineados.
Este problema, dadas las coordenadas de los cinco puntos, se puede resolver con clculo matricial. Si Pi = (xi , yi ),
para i = 1, . . . , 5, son cinco puntos distintos, la ecuacin buscada, de la forma ax2 + by 2 + cxy + dx + ey + f = 0,

202

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

es verificada por todos ellos, y as se plantean las cinco ecuaciones


x21 a + y12 b + x1 y1 c + x1 d + y1 e + 1 f
x22 a + y22 b + x2 y2 c + x2 d + y2 e + 1 f
x23 a + y32 b + x3 y3 c + x3 d + y3 e + 1 f
x24 a + y42 b + x4 y4 c + x4 d + y4 e + 1 f
x25 a + y52 b + x5 y5 c + x5 d + y5 e + 1 f

=0
=0
=0
=0
=0

que son lineales en sus incgnitas (los coeficientes a, b, . . . , f ). Este es un sistema lineal compatible, y si los puntos
estn en posicin general su matriz de coeficientes es de rango 5. Si (a0 , b0 , c0 , d0 , e0 , f0 ) es una solucin (no trivial),
cualquier otra es de la forma (a0 , b0 , c0 , d0 , e0 , f0 ). Pero es obvio que todas estas soluciones nos dan ecuaciones
para una misma curva (por qu?).
Encuentra la cnica que pasa por cinco puntos en posicin general:
ax2 + by 2 + cxy + dx + ey + f = 0

sage: puntos = [(0,0),(0,1),(1,3),(2,1),(1,0)]


sage: var(x y)
sage: coefs = matrix(QQ,5,6)
sage: for j in range(5):
...
x0, y0 = puntos[j]
...
coefs[j,0] = x0^2
...
coefs[j,1] = y0^2
...
coefs[j,2] = x0*y0
...
coefs[j,3] = x0
...
coefs[j,4] = y0
...
coefs[j,5] = 1

#Primera columna (coef. de a)


#Segunda columna (coef. de b)
#Tercera columna (coef. de c)
#Cuarta columna (coef. de d)
#Quinta columna (coef. de e)
#Sexta columna (coef. de f)

sage: show(coefs)

0
0
1
4
1

0
1
9
1
0

0
0
3
2
0

0
0
1
2
1

0
1
3
1
0

1
1
1
1
1

sage: sol = coefs.solve_right(vector([0,0,0,0,0]))


sage: show(sol)
sage: coefs.right_kernel().basis()[0]
(1, 1/2, -1, -1, -1/2, 0)

(0, 0, 0, 0, 0, 0)

sage:
sage:
sage:
sage:

vk = coefs.right_kernel().basis()[0]
a,b,c,d,e,f = vk
curva = a*x^2 + b*y^2 + c*x*y + d*x + e*y + f
show(curva)

6.7. Curvas planas

203

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

x2 xy +

1 2
1
y x y
2
2

sage: implicit_plot(curva,(x,-1,4),(y,-1,5))+point2d(puntos,color=(1,0,0),pointsize=30)

Ejercicio
Encuentra 5 puntos tal que la cnica que pasa por ellos sea una hiprbola.
Un ejemplo de haz de curvas
Si fijamos 4 puntos del plano en posicin general, encontramos muchas cnicas que pasan por todos los puntos. En
este caso, los coeficientes de la ecuacin de la cnica que pasa por los 4 puntos deben satisfacer 4 ecuaciones:
x21 a + y12 b + x1 y1 c + x1 d + y1 e + 1 f
x22 a + y22 b + x2 y2 c + x2 d + y2 e + 1 f
x23 a + y32 b + x3 y3 c + x3 d + y3 e + 1 f
x24 a + y42 b + x4 y4 c + x4 d + y4 e + 1 f

=0
=0
=0
=0

sage: puntos = [(0,0),(0,1),(1,0),(2,2)]


sage: var(x y)
sage: coefs = matrix(QQ,4,6)
sage: for j in range(4):
...
x0, y0 = puntos[j]
...
coefs[j,0] = x0^2
...
coefs[j,1] = y0^2
...
coefs[j,2] = x0*y0
...
coefs[j,3] = x0

204

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
...

coefs[j,4] = y0
coefs[j,5] = 1

sage: show(coefs)

0
0

1
4

sage:
sage:
sage:
sage:

0
1
0
4

0
0
0
4

0
0
1
2

0
1
0
2

1
1

1
1

K = coefs.right_kernel()
v1 = K.basis()[0]
v2 = K.basis()[1]
show(K.basis())



 

1
1
1, 0, , 1, 0, 0 , 0, 1, , 0, 1, 0
2
2

Cualquier vector no nulo de K da lugar a una cnica que pasa por los 4 puntos. No todas son equivalentes, aunque
por supuesto dos vectores proporcionales dan lugar a la misma curva. Al conjunto de cnicas que pasa por los cuatro
puntos lo llamamos el haz de cnicas por los 4 puntos.
sage:
sage:
sage:
sage:
sage:
sage:

c1 = 1
c2 = -3
a,b,c,d,e,f = c1*v1 + c2*v2
curva = a*x^2 + b*y^2 + c*x*y + d*x + e*y + f
grafica = point2d(puntos,color=(1,0,0),pointsize=30) + implicit_plot(curva,(x,-1,4),(y,-1,4))
grafica.show()

6.7. Curvas planas

205

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Ejercicio
Dibuja varias cnicas del haz en la misma grfica .

6.8 Ejercicios
6.8.1 1.
Busca las ecuaciones (paramtricas, implcitas o las que ms te convengan) de las siguientes curvas y dibjalas:
Lemniscata de Bernouilli
Tractriz
Cicloide

6.8.2 2.
Compara las distintas formas de representar la misma curva usando parametric_plot , polar_plot e
implicit_plot para comprobar que se obtiene el mismo resultado:
Las ecuaciones implcitas de la recta Ax + By = 1 y la forma polar vista en clase.
Las ecuaciones implcitas de la circunferencia (x x0 )2 + (y y0 )2 = r2 que pasa por el origan y la forma
polar vista en clase.
Busca las ecuaciones implcitas de la curva de Agnesi y comprueba que corresponde a la misma curva que la
parametrizacin vista en clase.
Idem para el folium de Descartes.

6.8.3 3. Ecuacin de un hiperplano en el espacio n -dimensional Rn


Si denotamos por x1 , x2 , . . . , xn las coordenadas cartesianas en Rn , una ecuacin implcita o cartesiana del hiperplano determinado por n puntos, (x1,1 , x1,2 , . . . , x1,n ), . . . , (xn,1 , xn,1 , . . . , xn,n ), en posicin general , se obtiene al
desarrollar:

x1 x1,1 x1 x2,1
x1 xn,1
x2 x1,2 x2 x2,2
x2 xn,2

det
= 0.
..
.
.

.
.
xn x1,n

xn x2,n

xn xn,n

Al simplificar el desarrollo, el vector, (A1 , A2 , . . . , An ), formado por los coeficientes en la ecuacin A1 x1 + A2 x2 +


+ An xn = B es perpendicular al hiperplano (vector normal del hiperplano).
Obtn la ecuacin implcita del plano que pasa por 3 puntos de R.

6.8.4 4.
Encuentra 5 puntos tal que la cnica que pasa por ellos sea una hiprbola, una parbola, y el producto de 2 rectas (no
importa que no estn en posicin general).

206

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

6.8.5 5. Explorando el comando animate .


El comando animate permite convertir una lista de grficas en una animacin cuyos fotogramas son las grficas de
la lista.
Investiga la ayuda de animate, y encuentra el cdigo que muestra la grfica del seno desplazndose a lo largo
del eje x.
Crea una animacin de un punto movindose desde un punto A a otro punto B.
Crea una animacin de un punto movindose a lo largo de una circunferencia de centro (0,0) y radio 1.

6.8.6 6.
Combina lo aprendido sobre el comando animate con lo visto en clase de teora para crear una animacin del haz
de cnicas que pasa por 4 puntos.

6.8.7 7.
Dada una curva : I R2 dada por (t) = (x(t), y(t)), el vector tangente a la curva en (t) es el vector con
origen en (t) y direccin 0 (t) = (x0 (t), y 0 (t)). Investiga el mtodo arrow y dibuja el vector tangente en varias de
las curvas definidas en coordenadas paramtricas en la clase de teora.

6.8.8 8.
Combina lo aprendido sobre el comando animate con el ejercicio anterior para hacer animaciones donde la curva
est fija y el vector tangente se mueve a lo largo de la curva.

6.8. Ejercicios

207

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

208

Captulo 6. Bloque V: Clculo simblico

Miguel Angel Cifredo Campos


macifredo@gmail.com

CAPTULO 7

Bloque VI: Miscelnea

Aplicaciones variadas. La primera sesin ensea el concepto de ajuste de modelos y su materializacin en Sage, y se
aplica a algunos ejemplos de datos cientficos y de matemticas. La sesin de criptografa se puede seguir immediatamente despus de estudiar el bloque de aritmtica, y la sesin de malabares slo usa lo visto sobre grafos. Las dos
ltimas sesiones son breves y poco sistemticas.

7.1 Qu es TeX?
TeX es el sistema de composicin de textos creado por Donald Knuth. TeX, y su extensin LaTeX, desarrollada principalmente por Leslie Lamport, son el sistema ms comn de escribir textos matemticos, pues permite incluir frmulas
matemticas de calidad profesional. El sistema es libre y multiplataforma, y es usado por muchsimos cientficos de
diversas disciplinas. Existen extensiones que permiten incluir grficas, notacin msical, cdigo de SAGE, y muchas
otras cosas.
Al ser un sistema tan extendido, muchos programas utilizan TeX para escribir las matemticas, como Sage. Cuando
editas un bloque de texto, puedes incluir cdigos de TeX. Al guardar los cambios, los cdigos de TeX se convierten en
frmulas matemticas. Por mantener la compatibilidad con los tutoriales de TeX, diremos que el texto original, con sus
cdigos especiales, es el cdigo fuente , y que el resultado final, con las frmulas matemticas, es el texto compilado
.
Aunque aprender el sistema lleva mucho tiempo, las ideas fundamentales de TeX son sencillas

7.1.1 Modos inline y display


Cuando queremos incluir una frmula matemtica dentro de en una lnea de texto, la rodeamos con carcteres
de $, como por ejemplo: $\sin(\pi)=1$, que se convierte en sin() = 1 al compilar el cdigo. Esta forma
de incluir frmulas se llama en ingls modo inline .
Cuando queremos incluir una frmula en su propia lnea, la rodeamos con dos caracteres de $. Por ejemplo:
$$e^{\pi i}=-1$$

que se convierte al compilar en:


ei = 1
Esta forma de incluir frmulas se llama en ingls modo display .

209

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.1.2 Estructura lgica del documento


Aparte de estas dos formas de incluir frmulas matemticas, TeX pone mucho enfsis en la estructura del documento,
separndolo en captulos, secciones, subsecciones... y dentro de ellas teoremas, corolarios, comentarios... Esta parte de
TeX no se usa en SAGE, que usa el html para dar estructura al documento. Ambos sistemas, TeX y html, dan mucha
importancia a la estructura del documento, y ofrecen al autor la posibilidad de indicar el tipo de contenido en vez de
limitarse a colocarlo en la posicin correcta con el tamao de letra deseado.

7.1.3 LaTeX dentro de Sage


Lo mejor de SAGE es que podemos obtener fcilmente el cdigo latex que muestra una expresin cualquiera usando
el comando latex , que acepta como nico argumento un objeto de SAGE, y devuelve su expresin en LaTeX.
sage: var(x)
sage: f=sqrt(x)
sage: print f
sage: show(f)
sage: print latex(f)
sqrt(x)
\sqrt{x}

Podemos usar el cdigo latex de arriba en nuestros cuadros de texto:

x.

Veamos ms ejemplos:
sage: print latex(pi)
sage: print latex(1/2)
\pi
\frac{1}{2}

El primer ejemplo muestra la forma de introducir las letras griegas: $\alpha$, $\beta$, $\gamma$ se convierten
en: , , .
El segundo ejemplo muestra la forma de escribir fracciones \frac{ numerador }{ denominador }.
Por supuesto, todas los cdigos se pueden combinar de cualquier forma:
sage: a=1/sqrt(2*pi)
sage: print a
sage: show(a)
sage: print latex(a)
1/2*sqrt(2)/sqrt(pi)
\frac{1}{2} \, \frac{\sqrt{2}}{\sqrt{\pi}}

1 2

2
La lista completa de smbolos es enorme, por supuesto, e incluye flechas (\rightarrow: ), operadores (\div:
), desigualdades (\neq: 6=) ...
Bsquedas en google arrojan listas bastante completas:
http://omega.albany.edu:8008/Symbols.html
210

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

http://stdout.org/~winston/latex/
El siguiente ejemplo usa polinomios.
sage: R1.<t>=PolynomialRing(QQ)
sage: p=t^3-1
sage: print latex(p)
sage: print latex(p/(p+2))
t^{3} - 1
\frac{t^{3} - 1}{t^{3} + 1}

El nico comando nuevo es el ^{ superndice }, para exponentes. El comando equivalente para subndices es _{
subndice }. Por ejemplo:
$$x_{1}^{2}+x_{2}^{2}+\dots+x_{n}^{2} $$

se convierte en:
x21 + x22 + + x2n
En modo display, y para algunos operadores como el sumatorio (sum) o el lmite (limit), los subndices se muestran
debajo del operador:
$$\sum_{j=1}^{N}x_i$$

se convierte en :
N
X

xi

j=1

Probamos una funcin compuesta:


sage: f = sin(x^2)
sage: show(f)
sage: print latex(f)
\sin\left(x^{2}\right)

sin x2

El cdigo de esta funcin incluye dos nuevos comandos: \left y \right. Estos comandos sirven para cuadrar el
parntesis izquierdo con el derecho, y asegurarse de que son lo bastante grandes para delimitar el contenido.
Siempre que aparece un comando left, debe aparecer despus un comando right.
En este caso, despus de cada uno hemos usado partensis, pero podemos poner corchetes o barras verticales:
$$\left[(a+b)^{2}+(a-b)^{2}\right]$$

que se convierte en:




(a + b)2 + (a b)2

sage: f = sin(1/x)
sage: show(f)
sage: print latex(f)
\sin\left(\frac{1}{x}\right)

sin

7.1. Qu es TeX?

 
1
x
211

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.1.4 Matrices
Veamos ahora cmo se muestran matrices:
sage: A=matrix(QQ,[[1,2,3],[4,5,6]])
sage: print A
[1 2 3]
[4 5 6]
sage: show(A)

1
4

2
5

3
6

sage: print latex(A)


\left(\begin{array}{rrr}
1 & 2 & 3 \\
4 & 5 & 6
\end{array}\right)

El contenido entre parntesis es:


\begin{array}{rrr}
1 & 2 & 3 \\
4 & 5 & 6
\end{array}

El cdigo {rrr} indica que la matriz tiene tres columnas, todas alineadas a la derecha (r:right, l:left, c:center). Los
caracteres & delimitan las columnas, y los caracteres \\ delimitan las filas.

7.1.5 Ejercicios
1.
copia, pega y modifica el cdigo anterior, para escribir una matriz 2x4 y otra 4x2.
2.
Intenta escribir el cdigo que genera el determinante de abajo (no vale mirar):


1 1 12


d = 1 2 22
1 3 32
3.
Las frmulas de la Wikipedia tambin estn escritas en LaTeX. Puedes obtener el cdigo LaTeX que genera una
frmula haciendo click derecho sobre la frmula y eligiendo propiedades, y copiando el texto alternativo.
Copia en esta hoja la frmula del determinante 3x3 y n x n de la pgina:
http://en.wikipedia.org/wiki/Determinant

212

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

4.
A veces necesitamos slo uno de los dos parntesis, corchetes o llaves. Incluso en este caso, escribimos un operador
\left y otro \right para delimitar la regin, slo que donde no queremos que ponga un parntesis, escribimos un
punto. Ejemplo:
$$\alpha\left| \frac{1}{2}\right. + \omega\left| \frac{1}{2}\right.$$



1
1

+
2
2
Intenta escribir el cdigo que genera la definicin de abajo (no vale mirar):
 2
x si x < 0
f (x) =
x3 si x 0

7.2 Probabilidad en Sage


En esta sesin vamos a intentar representar distribuciones de probabilidad discretas y continuas y realizar con ellas
varias operaciones comunes, como calcular medias y varianzas, hacer extracciones aleatorias segn una distribucin
dada o dibujar las funciones de masa, densidad y distribucin. Al final, trabajaremos un poco con variables aleatorias
bidimensionales.

7.2.1 Distribucion discreta con soporte finito


Representamos la funcin de masa mediante un diccionario en el que las claves son los puntos del espacio muestral y el
valor asociado a cada clave es la probabilidad de ese punto. Un diccionario representa una distribucin de probabilidad
si sus valores son nmeros (reales, racionales, incluso expresiones simblicas) que suman 1.
sage:
...
sage:
sage:
sage:
sage:
sage:
sage:
sage:

#Ejemplos:
#Bernouilli de prob p=1/3
p = 1/3
f_bernouilli = {0:p, 1:1-p}
#Binomial con prob p=1/3 y k=10 ensayos independientes
k = 10
p = 1/3
f_binomial = dict((j, p^j*(1-p)^(k-j)*binomial(k,j)) for j in range(k+1))

Asumiendo que el espacio muestral est contenido en R, podemos dibujar la distribucin por ejemplo as:
sage: #dibujar una distribucion discreta con soporte finito
sage: def dibuja_f(f, *args, **kargs):
...
Dibuja una funcion de masa con soporte finito, dada como diccionario
...
...
Acepta los argumentos adicionales tipicos de graficas en Sage,
...
como color, etc
...

...
p = (sum([line2d([(x, 0), (x, f[x])], *args, **kargs) for x in f])
...
+ point2d(f.items(), pointsize=30, *args, **kargs))
...
...
#Imponemos rango [0,1] para el eje que muestra las probabilidades
...
p.ymin(0)

7.2. Probabilidad en Sage

213

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
...
...

p.ymax(1)
p.axes_labels([$x$,$p$])
return p

sage: show(dibuja_f(f_bernouilli))
sage: show(dibuja_f(f_binomial, color = (1,0,0)))

De nuevo asumiendo que el espacio muestral est contenido en R, calculamos la esperanza y la varianza de una

214

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

variable aleatoria con funcin de masa f usando las frmulas habituales:


= E[X] =

N
X

xi f (xi )

i=1

2 = V ar[X] =

N
X
(xi )2 f (xi )
i=1

sage: #media y varianza


sage: def media_f(f):
...
return sum(x*f[x] for x in f)
...
sage: def varianza_f(f):
...
m = media_f(f)
...
return sum((x-m)^2*f[x] for x in f)
sage: print media_f(f_bernouilli), varianza_f(f_bernouilli)
sage: print media_f(f_binomial), varianza_f(f_binomial)
2/3 2/9
10/3 20/9

Trabajar con parmetros


Como el cdigo anterior es genrico, nada nos impide usar variables simblicas, y hacer clculos con parmetros
libres.
sage: var(p)
sage: #Bernouilli
sage: #funcion de
sage: f = {0:1-p,
sage: media_f(f),
(p, (p - 1)^2*p -

masa
1:p}
varianza_f(f)
(p - 1)*p^2)

sage: varianza_f(f).factor()
-(p - 1)*p

Funcin de distribucin
Para trabajar con la funcin de distribucin, necesitamos ordenar los puntos del espacio muestral. Guardamos en una
lista los puntos que tienen probabilidad positiva y en otra lista (del mismo tamao) la prob de cada punto.
sage:
sage:
sage:
sage:
sage:
sage:
sage:
...
...
sage:
sage:
sage:

pares = f_binomial.items()
pares.sort()
valores
= [x for x,p in pares]
probs
= [p for x,p in pares]
cum_probs = []
suma = 0
for p in probs:
suma += p
cum_probs.append(suma)
print valores
print probs
print cum_probs

7.2. Probabilidad en Sage

215

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1024/59049, 5120/59049, 1280/6561, 5120/19683, 4480/19683, 896/6561, 1120/19683, 320/19683, 20/6561,
[1024/59049, 2048/19683, 5888/19683, 11008/19683, 15488/19683, 18176/19683, 2144/2187, 19616/19683, 1
sage: #dibuja la Funcion de distribucion
sage: (point(zip(valores, cum_probs), pointsize=30) +
...
sum(line([(valores[j], cum_probs[j]), (valores[j+1], cum_probs[j])])
...
for j in range(len(valores)-1)))

Ejercicio - debate : Cmo podemos extraer un nmero en el soporte de nuestra funcin de masa respetando las
probabilidades requeridas? Es decir, si tenemos:
f = {0:1/2, 1:1/3, 2:1/6}
valores
: [0, 1, 2]
cum_probs : [1/2, 5/6, 1]

queremos una funcin que devuelva 0 con probabilidad 1/2, 1 con probabilidad 1/3, y 2 con probabilidad 1/6.

7.2.2 Distribucion discreta con soporte infinito (ej, z>=0)


Un diccionario no puede contener una cantidad infinita de valores. Para trabajar con distribuciones con soporte infinito
podemos usar funciones de python, o expresiones simblicas. Optamos por la segunda opcin para tener al menos la
posibilidad de hacer algunos clculos de forma exacta, aunque no siempre sea posible.
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:

216

#Geometrica
var(k)
p = 0.1
f_geometrica = (1-p)^k*p
#Probabilidad de que X<=5
print sum(f_geometrica, k, 0, 5).n()
#Poisson de parametro landa = 2
landa = 2
f_poisson = e^(-landa)*landa^k/factorial(k)
#Probabilidad de que X>=3
print sum(f_poisson, k, 3, oo).n()

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

0.468559000000000
0.323323583816937
sage: #media y varianza
sage: def media_d(f):
...
k = f.variables()[0]
...
return sum(f*k, k, 0, oo)
...
sage: def varianza_d(f):
...
m = media_d(f)
...
k = f.variables()[0]
...
return sum(f*(k-m)^2, k, 0, oo)
sage: media_d(f_geometrica), varianza_d(f_geometrica)
(9.0, 90.0)
sage: #Alerta BUG: maxima calcula mal la varianza de f_poisson:
sage: #Update 28-04-11: Este bug ha sido corregido en maxima,
sage: #pero la correccin an tardar un tiempo en llegar a Sage
sage: media_d(f_poisson), varianza_d(f_poisson).n()
(2, 0.812011699419676)
sage: #Sumando unos cuantos terminos tenemos el resultado correcto
sage: sum([f_poisson(k=j)*(j-landa)^2 for j in range(20)]).n()
1.99999999997887
sage: #Sumando por separado tb tenemos el resultado correcto
sage: (sum((e^(-landa)*landa^k/factorial(k))*k^2, k, 0, oo) ...
sum((e^(-landa)*landa^k/factorial(k))*k, k, 0, oo)^2
)
2
sage:
sage:
sage:
sage:
landa

#Incluso es capaz de hacerlo con una variable simbolica


#un bug como la copa de un pino!
var(landa)
( e^(-landa)*sum((landa^k/factorial(k))*(k-landa)^2, k, 0, oo)

Para dibujar una distribucion discreta con soporte finito, nos conformamos con mostrar unos cuantos puntos que
concentran la mayora de la masa:
sage: def aproxima_df(f, porcentaje_masa = 0.95):
...
Aproxima una distribucion de probabilidad discreta dada por una
...
expresion simbolica por una funcion de masa con soporte finito
...

...
d = {}
...
masa_total = 0
...
j = 0
...
while masa_total < porcentaje_masa:
...
d[j] = f(k = j)
...
masa_total += f(k = j)
...
j += 1
...
return d
sage: def dibuja_d(f, porcentaje_masa = 0.95, *args, **kargs):
...
d = aproxima_df(f, porcentaje_masa)
...
return dibuja_f(d, *args, **kargs)
sage: dibuja_d(f_geometrica)

7.2. Probabilidad en Sage

217

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: dibuja_d(f_poisson)

Para extraer un entero con una distribucin de probabilidad prescrita, generamos un nmero aleatorio t entre 0 y 1, y
tomamos el menor k tal que la probabilidad acumulada P(X<=k) es mayor que t.
sage: #extraccion aleatoria
sage: def extraccion_aleatoria_d(f):
...
t = random()
...
j = 0
...
prob = f(k=j)
...
while prob < t:

218

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
...
...

j
+= 1
prob += f(k=j)
return j

sage: extraccion_aleatoria_d(f_geometrica)
1
sage:
sage:
sage:
sage:
...
...
sage:

from collections import defaultdict


T = 1000
frecuencias = defaultdict(int)
for j in range(T):
k = extraccion_aleatoria_d(f_geometrica)
frecuencias[k] += 1/T
dibuja_f(frecuencias) + dibuja_d(f_geometrica, 0.99, color=(1,0,0))

7.2.3 Distribucion continua


Las distribuciones continuas se pueden manejar de forma similar a las discretas con soporte infinito, pero cambiando
sumas por integrales. Por ejemplo, la normal en una variable:
f (x) =

sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:

1 x 2
1
e 2 ( )
2

#Distribucion continua
#Normal
#funcion de densidad
var(x)
m = 0.7
s = 1.4
f_normal = (1/sqrt(2*pi*s^2))*e^(-(x - m)^2/(2*s^2))
#Un tipico dibujo de la normal, centrado en la media y con 3
#desviaciones tipicas de rango
show(plot(f_normal, x, m - 3*s, m + 3*s))

7.2. Probabilidad en Sage

219

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #Probabilidad de que X<1, cuando X~N(0.7, 1.4)


sage: prob, error = numerical_integral(f_normal, -oo, 1)
sage: print prob
sage: #Marcamos en el dibujo la prob pedida
sage: show(plot(f_normal, x, m - 3*s, m + 3*s) +
...
plot(f_normal, x, m - 3*s, 1, fill = True))
0.584837871172

sage: #media y varianza


sage: def media_c(f):
...
return integral(x*f,x,-oo,oo)
...
sage: def varianza_c(f):
...
m = media_c(f)

220

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...

return integral((x-m)^2*f,x,-oo,oo)

sage: media_c(f_normal), varianza_c(f_normal)


(0.7, 1.96)

De nuevo, podemos usar variables simblicas como parmetros.


sage: var(x mu sigma)
sage: assume(sigma > 0)
sage: f_normal = (1/sqrt(2*pi*sigma^2))*e^(-(x - mu)^2/(2*sigma^2))
sage: media_c(f_normal), varianza_c(f_normal)
(mu, sigma^2)

Extracciones aleatorias
Para hacer extracciones aleatorias de una distribucin continua no podemos seguir un procedimiento tan naive como
hasta ahora. Tenemos que transformar nuestro nmero aleatorio, elegido de forma uniforme entre 0 y 1, en un nmero real (potencialmente entre e ) que siga una distribucin dada X. Por si no lo habis visto en clase de
probabilidad, repasamos el procedimiento habitual brevemente:
Queremos generar nmeros x de tal modo que, para cualquier conjunto A R, la probabilidad de devolver un
nmero x A es exactamente P (X A).
Comenzamos por elegir un nmero aleatorio t [0, 1] (es decir, segn una distribucin uniforme), pero devolvemos el nmero G(t), para una cierta funcin G que tenemos que determinar.
Para cualquier conjunto A R, queremos que {t [0, 1] : G(t) A} = G1 (A) tenga medida P (X A).
De este modo, la probabilidad de devolver un nmero x = G(t) A es exactamente P (t G1 (A)) =
|G1 (A)| = P (X A).
La inversa de la funcin de distribucin G = F 1 cumple exactamente esta propiedad. Lo comprobamos slo
para intervalos. Si A=[x,y]:
P (X [x, y]) = F (y) F (x) = P (U [F (x), F (y)]) = P (U F ([x, y])) = P (U G1 ([x, y]))

sage: #Extraccion aleatoria


sage: m = 0.7
sage: s = 1.4
sage: f_normal = (1/sqrt(2*pi*s^2))*e^(-(x - m)^2/(2*s^2))
sage: #1: extraemos un numero aleatorio entre 0 y 1
sage: t = random()
sage: #2: funcion de distribucion
sage: var(x1)
sage: F_normal = integral(f_normal(x=x1), x1, -oo, x)
sage: show(plot(F_normal,x,-3,3) +
...
plot(0*x+t, x, -3, 3, color=(1,0,0)))
sage: #3: "invertimos" la funcion de distribucion (de forma numerica)
sage: print t, find_root(F_normal - t, m-10*s, m+10*s)
0.531001627926 0.808903109475

7.2. Probabilidad en Sage

221

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #Intentar invertir la funcion de forma simbolica no funciona


sage: #con una normal (puede funcionar en otros casos)
sage: var(p)
sage: solve(F_normal==p, x)
[erf(5/14*sqrt(2)*x - 1/4*sqrt(2)) == 1/4853*(7777*sqrt(2)*p - 4853*e^(1/8))*e^(-1/8)]
sage: #extraccion aleatoria
sage: #el argumento es la funcion de distribucion, no la de densidad
sage: def extraccion_aleatoria_c(F):
...
t = random()
...
return find_root(F - t, -100, 100)
sage: extraccion_aleatoria_c(F_normal)
0.6299529113987602

Histograma
Para comparar una muestra aleatoria (una cantidad finita de puntos) con una distribucin continua, tenemos que agrupar
los datos extrados en intervalos:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
...
...
...
...
sage:

222

from collections import defaultdict


T = 400
#Dividimos [-K,K] en N partes iguales
K = 3
N = 20
frecuencias = defaultdict(int)
for j in range(T):
a = extraccion_aleatoria_c(F_normal)
#TODO: explica las dos lineas siguientes
k = floor(a*N/(2*K))*(2*K/N)
frecuencias[k] += 1/(T*2*K/N)
dibuja_f(frecuencias) + plot(f_normal, x, m-3*s, m+3*s, color=(1,0,0))

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Por supuesto, mucha de esta funcionalidad est incluida en Sage


sage: #extracciones aleatorias de una normal
sage: normalvariate(0,1)
-1.2476798578721822

7.2.4 Distribucin normal bidimensional


Las distribuciones en ms de una dimensin se manejan de forma similar, pero con ms variables simblicas. Por
ejemplo, estudiamos la distribucin normal en k dimensiones:
fX (x) =

sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:

1
(2)k/2 ||1/2



exp 12 (x )0 1 (x ) ,

#Normal bidimensional
var(x1 x2)
m1 = 1
m2 = 0
v1 = 3
v12 = -2
v2 = 4
S = matrix(RDF, [[v1,v12],[v12,v2]])
vs = vector([x1,x2])
ms = vector([m1,m2])
f = (1/(2*pi))*(1/sqrt(det(S)))*exp(-(1/2)*(vs-ms)*(~S)*(vs-ms))

sage: #plot3d(f,(x1,-3,3),(x2,-3,3)).show(viewer=tachyon)
sage: p = contour_plot(f, (x1, m1-3*sqrt(v1), m1+3*sqrt(v1)), (x2, m2-3*sqrt(v2), m2+3*sqrt(v2)))
sage: p.show(aspect_ratio=1)

7.2. Probabilidad en Sage

223

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Resolvemos un tpico ejercicio de probabilidad condicionada con dos variables normales: X=N(m=0.2,s=0.3) e
Y=N(0.5, 0.6) son dos variables aleatorias que siguen una distribucin normal, con cov(X,Y)=0.1.
Si sabemos que para un individuo (aka elemento del espacio muestral), Y=1.3, cual es la prob de que X sea mayor
que 0.10?
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:

var(x1 x2)
m1 = 0.2
m2 = 0.5
v1 = 0.3
v12 = 0.3
v2 = 0.6
S = matrix(RDF, [[v1,v12],[v12,v2]])
vs = vector([x1,x2])
ms = vector([m1,m2])
f(x1,x2) = (1/(2*pi))*(1/sqrt(det(S)))*exp(-(1/2)*(vs-ms)*(~S)*(vs-ms))

sage: f_marginal_2(x2)
= integral(f,x1,-oo,oo)
sage: f_condicionada_1_dado_2(x1,x2) = f(x1,x2)/f_marginal_2(x2)
sage: plot(f_marginal_2,x2, -3, 3)

224

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: (plot(f_condicionada_1_dado_2(x2=1.3),x1, -3, 3) +


...
plot(f_condicionada_1_dado_2(x2=1.3),x1, -3, .1, fill=True))

sage: numerical_integral(f_condicionada_1_dado_2(x2=1.3), -oo, 0.1)


(0.098352801229473263, 1.0996705400110192e-08)

Si diagonalizamos la matriz de varianzas-covarianzas obtenemos variables aleatorias normales e independientes.

sage: S.eigenvectors_left()
[(0.114589803375, [(-0.850650808352, 0.525731112119)], 1), (0.785410196625, [(-0.525731112119, -0.850
sage: [(eval1, [evec1], _ ), (eval2, [evec2], _ )] = S.eigenvectors_left()
sage: p = (contour_plot(f, (x1, m1-3*sqrt(v1), m1+3*sqrt(v1)), (x2, m2-3*sqrt(v2), m2+3*sqrt(v2)))
...
+ arrow(ms, ms + 2*sqrt(abs(eval1))*evec1)
...
+ arrow(ms, ms + 2*sqrt(abs(eval2))*evec2))

7.2. Probabilidad en Sage

225

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: p.show(aspect_ratio=1)

7.3 Ejercicios
7.3.1 1.
Simula el siguiente experimento: lanza monedas cargadas que dan cara con probabilidad p y cruz con probabilidad 1-p hasta obtener la primera cara, y anota el nmero de cruces que has obtenido. Dibuja un histograma de
1000 extracciones aleatorias siguiendo este esquema, para un valor de p que t elijas.
Compara el resultado con el histograma de 1000 extracciones de una distribucin geomtrica con probabilidad
p.

7.3.2 2. Funcin cuantil


El cuantil de orden p o p-cuantil, para 0 p 1, de una distribucin de probabilidad es el valor F 1(p), donde F
es la funcin de distribucin. La funcin cuantil es la funcin Q(p) que a cada p le asocia su p-cuantil. En principio,
esta definicin se aplica a distribuciones continuas, pero se puede extender a distribuciones de probabilidad finitas y
discretas, si tomamos:
Q(p) = F 1 (p) = nf {x R : p F (x)}
226

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Escribe funciones que devuelvan el p-cuantil de una distribucin de probabilidad (en versiones finita, discreta y continua). Razona sobre la relacin entre estas funciones y las extracciones aleatorias que vimos en teora.

7.3.3 3. QQ plots
Una forma grfica bastante comn de visualizar si dos distribuciones de probabilidad son similares es el QQ-plot . La
letra Q se refiere a los cuantiles ( quantiles en ingls). Si tenemos dos distribuciones f y g:
1. Tomamos un entero k y calculamos la lista de los k-1 cuantiles de orden 1/k, 2/k, ... (k-1)/k, de f (sean
[p1 , ..., pk1 ]) y la lista correspondiente con los cuantiles de g (sean [q1 , ..., qk1 ]).
2. Dibujamos para cada j entre 1 y k-1 todos los puntos (pj , qj ).
3. Si las distribuciones son iguales, los puntos dibujados estn todos en la diagonal. Si son la misma distribucin,
pero desplazadas una distancia d (por ejemplo, si las funciones de densidad satisfacen g(x)=f(x-d)), los puntos
estarn en la recta y=x+d.
Dibuja qqplots que comparen los siguientes pares de distribuciones:
Una binomial con n lanzamientos y p=1/2 con una normal de media np y varianza np(1-p), para varios valores
de n.
Una poisson de parmetro con una normal de media y varianza , para un valor pequeo de y otro mayor.

7.3.4 4. Medir la distancia entre distribuciones


Cmo podemos estimar la distancia entre dos distribuciones de probabilidad? Queremos que por ejemplo la distancia
entre la distribucin que toma el valor x con probabilidad 1 y la que toma el valor y con probabilidad 1 sea |x-y|, y que
la distancia entre una distribucin y ella misma sea 0. sto ltimo descarta por ejemplo tomar el valor esperado de la
distancia entre las dos variables aleatorias.
La idea del qqplot se puede llevar un poco ms lejos: tomar como distancia entre las distribuciones el promedio de
las distancias entre los cuantiles del mismo orden. Para mayor nmero de cuantiles, tenemos una medida ms fina.
Estudia si esta medida verifica las condiciones de arriba y si merece que la llamemos una distancia.

7.3.5 5.
Definimos dos variables aleatorias X e Y de la forma siguiente:
El espacio muestral son las permutaciones de los nmeros del 1 al 10.
La medida es la medida uniforme, que a cada permutacin le da probabilidad 1/10!.
X(w) es la imagen de 1 por la permutacin w. Y(w) es la imagen de 2 por la permutacin w.
Se te pide lo siguiente:
Almacena en un diccionario la distribucin conjunta de X y de Y: los pares son tuplas (x,y), y el valor asociado
al par (x,y) es la probabilidad de que X valga x e Y valga y.
Calcula la distribucin marginal de X y la de Y. Confirma que obtienes el resultado esperado.
Calcula la covarianza de X y de Y.
Calcula la distribucion de X condicionada a que Y es multiplo de 3.

7.3. Ejercicios

227

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.4 Regresin y ajuste de modelos


El anlisis de regresin consiste en encontrar un modelo que relaciona los valores medidos de un conjunto de variables.
Los valores medidos en el mundo real nunca se ajustan de forma perfecta a un modelo, debido en primer lugar a
errores de medida, pero tambin a que cualquier modelo matemtico es una simplificacin del mundo real, y si tuviera
en cuenta todos los factores que influyen en un conjunto de variables, sera inmanejable.
Por tanto, no tiene sentido aspirar a encontrar un modelo que prediga exactamente los valores medidos, y debemos
admitir que el modelo cometer un cierto error.
Un modelo til encuentra una relacin funcional sencilla en conjuntos de pocas variables. Se trata de explicar una
variable que tiene importancia para nosotras, en funcin de otro conjunto de variables mejor conocidas o ms fciles
de medir. El anlisis de regresin (ms exactamente, el anlisis de regresin paramtrico ) permite encontrar un
modelo explicativo en tres etapas:
1. Nuestro conocimiento del tema en cuestin nos permite escribir un modelo que afirma que la variable X es una
funcin de las variables Y1 , . . . , Yk . La variable X recibe el nombre de variable dependiente y las variables
Y1 , . . . , Yk se llaman variables independientes . La forma exacta de la funcin no est fijada a priori, sino que
depende de unos pocos parmetros libres.
2. Tomamos una muestra . Es decir, medimos todas las variables en un subconjunto de todos los casos posibles
(unos cuantos individuos de la poblacin, unos cuantos momentos de tiempo, una cuantas muestras preparadas
en el laboratorio...)
3. Ajustamos el modelo , eligiendo aquellos valores de los parmetros tales que la distancia entre los valores
medidos de la variable X y los valores predichos aplicando el modelo minimizan el error cometido.

7.4.1 Ejemplo de ajuste lineal


Tratamos de predecir la temperatura a la que hierve el agua ( T ), conocida la presin atmosfrica ( P ) en el lugar y
momento en que hacemos el experimento.
Para ello, contamos con un conjunto de mediciones de ambas variables, con la temperatura en grados Fahrenheit y
la presin en pulgadas de mercurio (sea lo que sea, es una unidad de medidad de presin). Por ejemplo, en un cierto
punto de los Alpes, un cierto da, el barmetro marcaba 20.79 pulgadas de mercurio, y el agua hirvi a 194.5 grados
Fahrenheit. Las mediciones se realizaron en el mismo lugar geogrfico, pero en das distintos, con distintas condiciones
atmosfricas y quiz incluso por personas distintas. En estas condiciones, es imposible que ningn modelo prediga
con exactitud el valor de T en funcin de P, pero esperamos que lo haga con un margen de error moderado.
T
194.5
194.3
197.9
198.4
199.4
199.9
200.9
201.1
201.4
201.3
203.6
204.6
209.5
208.6
210.7
211.9
212.2

228

P
20.79
20.79
22.4
22.67
23.15
23.35
23.89
23.99
24.02
24.01
25.14
26.57
28.49
27.76
29.04
29.88
30.06

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Referencia: http://www.sci.usq.edu.au/staff/dunn/Datasets/Books/Hand/Hand-R/alps-R.html
Comenzamos por dibujar los datos:
sage: datos = [(20.79,194.50),(20.79,194.30),(22.40,197.90),(22.67,198.40),
...
(23.15,199.40),(23.35,199.90),(23.89,200.90),(23.99,201.10),
...
(24.02,201.40),(24.01,201.30),(25.14,203.60),(26.57,204.60),
...
(28.49,209.50),(27.76,208.60),(29.04,210.70),(29.88,211.90),
...
(30.06,212.20)]
sage: puntos = point(datos)
sage: puntos.show(axes_labels=(Presion,Temperatura))

Los datos parecen estar dispuestos sobre una recta, de modo que intentamos un modelo lineal, de la forma:
T =a+bP

A priori, no conocemos los valores de a y b . Para unos valores fijos de a y b , cometeremos un error en la medicin
j-sima que ser exactamente: |Tj (a + bPj )|. Vemos que no existe un criterio unvoco para encontrar a y b , dado
que no existe ninguna recta que pase por todos los pares (Tj , Pj ) . Para cualquier eleccin de **a* y b , nuestro
modelo cometer un error al estimar alguno de los puntos medidos.
Podemos escoger los valores de a y b para los que el error mximo cometido es menor, o aquellos para los que el error
medio cometido es menor, o segn otros muchos criterios. Es bastante habitual en estadstica buscar los valores de a y
b que hacen mnimo el error cuadrtico total :
X
E=
(Tj (a + bPj ))2
j

La funcin find_fit de SAGE permite ajustar un modelo cualquiera de tal forma que se minimice el error cuadrtico. La funcin acepta dos argumentos: los datos y el modelo.

7.4. Regresin y ajuste de modelos

229

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Los datos deben ser una lista con todas las mediciones. Cada elemento de la lista es una lista o tupla con los
valores de las variables en una medicin. La ltima variable es la variable dependiente.
El modelo es una funcin simblica de varias variables que representan las variables independientes y de otras
variables que representan los parmetros del modelo.
Aparte, acepta otros valores opcionales como parameters y variables para indicar a find_fit cul es la
variable dependiente y cules son los parmetros del modelo (ms informacin en la documentacin de find_fit ).
Tj (a + bPj )

sage: var(T P a b)
(T, P, a, b)
sage: #Importante: marcamos nuestro modelo como dependiente de la variable P
sage: #El resto de variables simblicas se toman como parametros
sage: modelo(P) = a + b*P
sage: #find_fit devuelve los valores de los parametros
sage: #que minimizan el error cuadratico
sage: #Al pasar el argumento solution_dict=True,
sage: #devuelve los valores optimos como un diccionario
sage: parametros = find_fit(datos, modelo, solution_dict=True)
sage: print parametros
{b: 1.9017835212187804, a: 155.29648352710586}
sage: #Sustituimos los valores de a y b en el modelo
sage: modelo_ajustado = modelo.subs(parametros)
sage: print modelo_ajustado
sage: #Dibujamos los puntos originales y la recta a+b*P
sage: ajuste = plot(modelo_ajustado,(P,20,30),rgbcolor=(0,1,0))
sage: grafica = puntos + ajuste
sage: grafica.show(axes_labels=(Presion,Temperatura))
P |--> 1.9017835212187804*P + 155.29648352710586

230

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Usar el modelo
Hemos establecido el modelo:
T = 1,9017835338620657 P + 155,29648321028

Ahora podemos utilizarlo para predecir la temperatura a la que hervir el agua a una cierta presin.Por ejemplo,
esperamos que si un da la presin es de 24.5 mmHg, el agua hervir a:
T = 1,9017835338620657 24,5 + 155,29648321028 = 201,890179789901F

sage: modelo_ajustado(P=24.5)
201.890179796966

7.4.2 Ejemplo de ajuste no lineal


No es difcil demostrar que los parmetros que minimizan el error cuadrtico en un modelo lineal son nicos. Sin
embargo, cuando usamos modelos no lineales, puede haber varios mnimos de la funcin de error cuadrtico total. En
general, la minimizacin es ms complicada, y puede que el algoritmo no consiga encontrar los valores ptimos de a
y b sin ayuda. Esta vez no vamos a usar datos reales, sino datos generados usando nmeros aleatorios. Se trata de ver
qu tal ajustamos un modelo en un caso en el que conocemos cmo fueron generados los datos.
Obtenemos los datos usando la frmula 0,8 + 1,5x + 1,2 sin(2x 0,2), y sumando un nmero aleatorio extrado segn
una distribucin normal de media 0 y varianza 0.1:

7.4. Regresin y ajuste de modelos

231

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:
...
sage:
sage:

#Fijamos una semilla de numeros aleatorios para asegurar


#que todas obtenemos el mismo resultado
set_random_seed(123)
datos = [(i, 0.8+1.5*i+1.2*sin(2*i-0.2) + 0.1*normalvariate(0,1))
for i in srange(0, 4*pi, 0.4)]
puntos = point(datos)
puntos.show(axes_labels=(x,y))

Tratamos ahora de ajustar a estos datos un modelo del tipo:


a1 + a2 x + a3 sin(a4 x + a5 )

sage: var (a1,a2,a3,a4,a5,x)


sage: modelo(x) = a1+a2*x+a3*sin(a4*x-a5)
sage: show(modelo(x))

a2 x + a3 sin (a4 x a5 ) + a1

sage: parametros = find_fit(datos, modelo, solution_dict=True)


sage: print parametros
Warning: Number of calls to function has reached maxfev = 1200.
{a3: 97.399974374571215, a2: -4.6922665568748858, a1: 36.856991032455262, a5: -5.9092115507119871, a4
sage: modelo_ajustado = modelo.substitute(parametros)
sage: print modelo_ajustado
x |--> -4.6922665568748858*x + 97.399974374571215*sin(0.064311341301833705*x + 5.9092115507119871) +
sage: g_ajuste = plot(modelo_ajustado(x), (x,0,4*pi), color=red)
sage: grafica = puntos + g_ajuste
sage: grafica.show(axes_labels=(x,y))

232

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

La minimizacin del error se ha quedado atascada por el camino. La forma ms sencilla de ayudar al algoritmo es darle
un punto de partida mejor . Para ello, pasamos a find_fit un argumento adicional: initial_guess . Tambin
le pasamos los argumentos parameters y variables para que sepa cules de las variable simblicas del modelo
son los parmetros.

sage: #Ejercicio: prueba con distintos valores iniciales


sage: #para tratar de conseguir un mejor ajuste
sage: parametros = find_fit(datos, modelo, initial_guess=[0,0,1.0,2,0],
...
parameters=[a1,a2,a3,a4,a5], variables=[x], solution_dict=True)
sage: print parametros
{a3: 1.2403261721812324, a2: 1.5056455458784646, a1: 0.78272474105136614, a5: 0.23540896442811415, a4

sage: modelo_ajustado = modelo.substitute(parametros)


sage: print modelo_ajustado
x |--> 1.5056455458784646*x + 1.2403261721812324*sin(2.001600272362738*x - 0.23540896442811415) + 0.7
sage: g_ajuste = plot(modelo_ajustado(x), (x,0,4*pi), color=red)
sage: grafica = puntos + g_ajuste
sage: grafica.show(axes_labels=(x,y))

7.4. Regresin y ajuste de modelos

233

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.4.3 Ajuste de un modelo exponencial


Vamos a resolver un ejemplo de laboratorio.
En un estudio sobre la resistencia a bajas temperaturas del bacilo de la fiebre tifoidea, se expusieron cultivos del bacilo
durante diferentes periodos de tiempo a -5 grados C. Los siguientes datos representan:
X = tiempo de exposicin (en semanas).
Y = porcentaje de bacilos supervivientes.
X:
0
Y : 100

0, 5
42

1
14

2
7, 5

3
0, 4

5
0, 11

9
0, 05

15
0, 002

Nuestro objetivo es predecir el valor de Y conocido el valor de X.


sage: datos= [(0, 100), (0.5, 42), (1, 14), (2, 7.5), (3, 0.4), (5, 0.11),
...
(9, 0.05), (15, 0.002)]
sage: puntos= point(datos)
sage: show(puntos)

234

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Ejercicio
Ajustar una recta (Y = a + bX) y una exponencial (Y = aebx ) a los datos: qu ajuste es mejor?
La forma clsica de ajustar un modelo exponencial entre dos variables X e Y es reducirlo a un ajuste lineal entre las
variables X y V=log(Y).
Y = aebX V = c + dX

para c=log(a), d=b. La razn para usar este enfoque es que el ajuste lineal se puede realizar fcilmente con una
calculadora, mientras que el ajuste de un modelo no lineal requiere de una computadora.
Si dibujamos las variables X y V juntas vemos que parece sensato que estn relacionadas por un modelo lineal.
sage: datosXV = [(d[0],log(d[1]))
sage: show(point(datosXV))

7.4. Regresin y ajuste de modelos

for d in datos]

235

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Ejercicio
Ajusta un modelo lineal con X como variable independiente y V como variable dependiente. Deduce un modelo para
escribir Y en funcin de X, y dibjalo junto a los datos.
Observamos que las dos curvas exponenciales no se parecen gran cosa. La razn es que no es lo mismo minimizar el
error cuadrtico:
X
(Yj aebXj )2
j

que el error cuadrtico despus de tomar logaritmos:


X
(log(Yj ) log(a) bXj )2
j

7.5 Ejercicios
7.5.1 1.
Usando el anlisis de regresin, encuentra un modelo simplificado para la funcin que a un nmero k le asigna el
k-simo nmero primo.
Genera una serie de datos de longitud K con pares de datos (k, p), donde p es el primo k-simo.
Ajusta una curva del tipo P = a k ln(b k), con un parmetro libre a.
Referencia: teorema del numero primo.

236

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.5.2 2.
La sucesin de Collatz, o del 3*n+1, que ya vimos, consiste en aplicar sucesivamente la siguiente regla:
Si un nmero es par, el siguiente nmero de la secuencia es n/2.
Si es impar, el siguiente nmero de la secuencia es 3n+1.
El siguiente argumento heurstico muestra que la sucesin de Collatz debera converger a velocidad exponencial:
partiendo de un nmero impar, lo multiplicamos por 3 (ignoramos el 1 que sumamos), y lo dividimos por la mayor
potencia de 2 que lo divide hasta obtener otro nmero impar. Cul es la mayor potencia de 2 que divide a un nmero
par? Bueno, depende del nmero, pero en promedio nos encontramos con un mltiplo de 4 la mitad de las veces (la
otra mitad de las veces es de la forma 4n+2), con un mltiplo de 8 la cuarta parte de las veces, etctera. Es decir, es
seguro que podremos quitar el primer factor 2, pero cada factor sucesivo lo quitaremos con probabilidad 1/2^k. Dividir
por 2 con probabilidad 1/2 viene a ser como dividir por 21/2 . En resumen, hemos multiplicado nuestro nmero por:
3
2

21/2

21/4

21/8

...

3
22

Siguiendo esta heurstica,el j-simo punto de la sucesin de Collatz que comienza en k ser k(3/4)j , y el tiempo que
log(k)
tarda la sucesin en alcanzar 1 (llammoslo T(k)) ser aproximadamente log(4/3)
.
Ajusta una curva T(k) = a log(k) a datos obtenidos calculando la sucesin para distintos valores de k.

7.5.3 3. El peligro del sobreajuste (overfitting)


Ante los datos siguientes, un investigador decide hacer un ajuste lineal. El objetivo es predecir qu pasar cuando x
valga 10.
x:
0,
1,
2,
3,
4,
5
y: 1.03, 3.19, 5.10, 7.20, 9.10, 10.87

Ajusta los datos a un modelo lineal y usa el modelo para predecir el valor de y cuando x=10.
sage: datos = [[0,1.03], [1,3.19], [2,5.1], [3,7.2], [4,9.1], [5,10.87]]

Con los mismos datos de arriba, otro investigador decide usar como modelo un polinomio de grado 4 (con cinco grados
de libertad) para conseguir un mejor ajuste. Realiza el ajuste, y predice un nuevo valor cuando x valga 10.
Como vers, el resultado obtenido es bastante menos razonable que el obtenido con el modelo lineal ms sencillo. Si
dibujas el nuevo modelo ajustado a los datos en un intervalo ms grande vers por qu: los trminos polinmicos son
muy sensibles a los errores, y aunque la curva se ajusta mejor a los datos conocidos, ajusta peor los datos nuevos. No
es buena idea introducir trminos innecesarios en un modelo.
http://es.wikipedia.org/wiki/Sobreajuste

7.5.4 4. Predecir el tiempo que tardar un algoritmo


Uniendo las tcnicas del bloque IV con el anlisis de regresin podemos predecir el tiempo que tardar un algoritmo
en ejecutarse.
La funcin calculo de abajo tiene complejidad cuadrtica. Tu misin es estimar el tiempo que tardar en ejecutarse
cuando la llamemos con el valor K=10000, usando como informacin los tiempos que tard al ejecutarla con valores
menores.
Mide los tiempos de ejecucin para los valores 1000, 2000, 3000, 4000 y 5000.
Asume que el tiempo se cie al modelo: T=a*K^2.

7.5. Ejercicios

237

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Ajusta el modelo a los datos obtenidos en el primer paso


Usa el modelo para predecir el valor de T cuando K es 10000
Cuando hayas terminado, mide el tiempo de ejecucin y comprueba si el modelo es adecuado.
sage: def calculo(K):
...
lista = []
...
for j in range(K):
...
lista.insert(0,j)

7.5.5 5. Alometra
La siguiente serie de datos est extrada de un artculo de biologa en el que se estudia el dimetro del ojo de un animal
(D) como funcin de su peso (P). Usamos slo los datos de los primates.
datos =[[0.3300, 12.544],
[4.1850, 17.278],
[2.9000, 17.979],
[0.2000, 12.938],
[167.5000, 22.500],
[72.3416, 24.521],
[9.2500, 17.599],
[6.0000, 19.176],
[51.5000, 19.000],
[19.5100, 19.750],
[0.1150, 8.070]]

.
Dibuja los datos. Intenta pensar qu tipo de curva podra ajustar esos datos: bastar un modelo lineal?
Ajusta un modelo del tipo D = a*P^b, con dos parmetros a y b .
Define dos nuevas variables: U = log(P) y V=log(D). Transforma los datos de las variables (P,D) en datos para
las variables (U,V).
Ajusta un modelo lineal en el que U sea la variable independiente y V la variable dependiente.
Deduce a partir de ese modelo un modelo para P y D. Dibuja ese modelo. En este problema, el resultado es
bastante similar al obtenido con el mtodo anterior.

7.6 Criptografa RSA


El objeto de la criptografa es poder comunicarse con otras personas encriptando nuestros mensajes de tal modo que
si alguien encuentra el mensaje codificado no sepa lo que dice, pero que si el mensaje llega a su destino, esa persona
pueda recuperar el mensaje original. Por ejemplo, podemos cambiar todos los usos de la palabra tanque por la palabra
paloma , para que quien encuentr el mensaje piense que hablamos de otra cosa. Hoy vamos a estudiar algunos mtodos
matemticos para encriptar mensajes basados en la teora de nmeros.

7.6.1 Codificar un mensaje de texto en nmeros


Para poder aplicar estos mtodos criptogrficos, tenemos que codificar la informacin que queremos mandar como
una secuencia de nmeros enteros. Por ejemplo, podemos hacer corresponder un nmero a cada posible letra. Para
no preocuparnos de la codificacin de carateres, usaremos un alfabeto simplificado, y el cdigo de cada letra ser la
posicin que ocupa en el alfabeto.

238

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:
...
sage:
...

#nuestro alfabeto son el espacio en blanco y las mayusculas sin acentos


alfabeto= ABCDEFGHIJKLMNOPQRSTUVWXYZ
L=len(alfabeto)
def codifica_letra(letra):
return alfabeto.index(letra)
def decodifica_letra(n):
return alfabeto[n]

sage: codifica_letra(A)
1
sage: decodifica_letra(1)
A

Ejercicio : Usa la funcin ord para implementar codifica_letra con menor complejidad.
Y ahora para una cadena del tirn
sage: def codifica_cadena(texto):
...
return [codifica_letra(c) for c in texto]
...
sage: def decodifica_cadena(lista):
...
return .join([decodifica_letra(j) for j in lista])
sage: texto = HOLA MUNDO
sage: codifica_cadena(texto)
[8, 15, 12, 1, 0, 13, 21, 14, 4, 15]
sage: decodifica_cadena([8, 15, 12, 1, 0, 13, 21, 14, 4, 15])
HOLA MUNDO

7.6.2 Cifrado de Csar


Para ejecutar el cifrado de Csar de clave k , sustituimos cada letra del mensaje original por la letra que est k posiciones
a la derecha (dando la vuelta al alfabeto si nos pasamos de largo). Por ejemplo, si k=3 :
CENA -> FHPD
Para implementar este mtodo criptogrfico, tomamos una cadena de caracteres, la codificamos en una secuencia de
nmeros, le sumamos k a cada cdigo, tomamos el resto de dividir por la longitud del alfabeto y despus decodificamos
los nmeros en letras para volver a tener una cadena de caracteres.
sage: L=len(alfabeto)
sage: def cesar(texto, k):
...
Cesar...
...

...
numeros = codifica_cadena(texto)
...
encriptado = [(j+k) %L for j in numeros]
...
texto_encriptado = decodifica_cadena(encriptado)
...
return texto_encriptado
sage: print cesar(texto,0)
sage: print cesar(texto,1)
sage: print cesar(texto,2)
HOLA MUNDO
IPMBANVOEP
JQNCBOWPFQ

7.6. Criptografa RSA

239

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.6.3 Encriptacin RSA


En el sistema RSA, un nmero menor que N (que puede representar texto, o cualquier otra cosa), se encripta elevndolo
a un exponente mdulo N . La operacin de desencriptado tambin usa la misma operacin, pero con un exponente
distinto. Aunque podramos usar la misma funcin para las tareas de encriptar y desencriptar, preferimos usar dos
funciones distintas por claridad.
Encriptado
Cada nmero de la secuencia se eleva al exponente e mdulo N . Por tanto, para encriptar se necesita el par formado
por N y e , que llamaremos la clave pblica.
x xe (mod N )

Desencriptado
Cada nmero de la secuencia se eleva al exponente d mdulo N . Para desencriptar se necesita el par formado por N y
d , que llamaremos la clave privada.
y y d (mod N )

sage: def encripta_RSA(lista,N,e):


...
Encripta una secuencia de numeros siguiendo el metodo RSA
...
return [power_mod(numero,e,N) for numero in lista]
...
sage: def desencripta_RSA(lista,N,d):
...
Desencripta una secuencia de numeros siguiendo el metodo RSA
...
return [power_mod(numero,d,N) for numero in lista]

Por ejemplo, usamos de forma naive el mtodo RSA para encriptar el cdigo de cada letra del mensaje.
sage: texto = HOLA MUNDO
sage: p=29; q=31;
sage: N=p*q
sage: e=13
sage: d=517
sage: clave_publica=(N,e)
sage: print texto
sage: numeros = codifica_cadena(texto)
sage: encriptado = encripta_RSA(numeros, N, e)
sage: print encriptado
HOLA MUNDO
[47, 27, 389, 1, 0, 879, 301, 524, 312, 27]
sage: desencriptado = desencripta_RSA(encriptado, N, d)
sage: texto_desencriptado = decodifica_cadena(desencriptado)
sage: print texto_desencriptado
HOLA MUNDO

240

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Anlisis de frecuencias
Si usamos una misma clave de cifrado para un texto lo bastante largo, eventualmente encontramos repeticiones. En los
dos cifrados anteriores, una misma letra se codifica siempre a la misma letra. Estudiando las frecuencias de aparicin
de cada carcter, podemos averiguar cosas sobre la clave de cifrado. Por ejemplo, si en un texto en castellano encriptado
con el cifrado de Csar al letra ms repetida es la D, probablemente la clave sea 3, que se la que lleva la A (la letra
ms frecuente en la mayora de textos en castellanos) en la D. En el cifrado RSA letra a letra, descifrar el texto es
slo ligeramente ms difcil.
Veremos ms sobre este punto en el ejercicio a entregar.
Agrupar varios nmeros pequeos en uno grande
Para tener esperanzas de conseguir un cifrado resistente al anlisis de frecuencias, tenemos que agrupar los cdigos de
varias letras en un slo nmero ms grande.
La tarea de codificacin consta por tanto de dos partes:
Sustituir cada carcter por su cdigo numrico, de la misma forma que hicimos antes.
Agrupar un bloque de varios nmeros en un slo nmero ms grande. El sistema es similar al usado cuando nos
daban una lista con los dgitos de un nmero y tenamos que recuperar el nmero. A una secuencia {n1 , . . . , nb }
de nmeros entre 0 y L-1 le hacemos corresponder un nmero entre 0 y Lb 1:
X

nj Lbj1

sage: def bloque2numero(bloque):


...
numero = 0
...
for k in bloque:
...
numero = numero*L + k
...
return numero
sage: bloque2numero([1,1])
28
sage: mensaje=EN UN LUGAR DE LA MANCHA
sage: letras = [codifica_letra(letra) for letra in mensaje]
sage: print letras
[5, 14, 0, 21, 14, 0, 12, 21, 7, 1, 18, 0, 4, 5, 0, 12, 1, 0, 13, 1, 14, 3, 8, 1]
sage: #Agrupamos las letras
sage: b=3
sage: n = len(letras)
sage: bloques = [letras[i:i+b] for i in range(0,n,b)]
sage: print bloques
[[5, 14, 0], [21, 14, 0], [12, 21, 7], [1, 18, 0], [4, 5, 0], [12, 1, 0], [13, 1, 14], [3, 8, 1]]
sage: codigo = [bloque2numero(bloque) for bloque in bloques]
sage: print codigo
[4023, 15687, 9322, 1215, 3051, 8775, 9518, 2404]

Encapsulamos la codificacin en una funcin:

7.6. Criptografa RSA

241

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: def codifica_mensaje(mensaje,b):


...
Convierte una secuencia de letras en una secuencia de numeros
...
El espacio en blanco se codifica como 0, las letras a partir de 1
...
Las letras se agrupan en bloques de b letras
...

...
letras = [codifica_letra(letra) for letra in mensaje]
...
#rellenamos con espacios en blanco al final
...
letras = letras + [0]*(b-len(letras) %b)
...
n = len(letras)
...
#Agrupamos en bloques
...
bloques = [letras[i:i+b] for i in range(0,n,b)]
...
#cambiamos cada bloque por un numero
...
codigo = [bloque2numero(bloque) for bloque in bloques]
...
return codigo
sage: mensaje=CITA EN EL PATIO
sage: codifica_mensaje(mensaje,2)
[90, 541, 5, 378, 147, 16, 47, 258, 0]

Las operaciones inversas son similares, ahora tenemos que recuperar el texto a partir de la secuencia de nmeros:
1. Convertir los nmeros entre 0 y Lb 1 en bloques de b nmeros entre 0 y L .
2. Poner los nmeros de cada bloque unos a continuacin de otros.
3. Sustituir los nmeros por los caracteres con esos cdigos.
4. Convertir la lista de caracteres en una cadena de caracteres usando join .
sage: def decodifica_letra(n):
...
return alfabeto[n]
sage: def numero2bloque(n,b):
...
bloque=[]
...
for i in range(b):
...
bloque.append(n %L)
...
n=n//L
...
bloque.reverse()
...
return bloque
sage: def decodifica_mensaje(secuencia,b):
...
Convierte una secuencia de numeros en una secuencia de letras
...

...
bloques=[numero2bloque(numero,b) for numero in secuencia]
...
numeros=[]
...
for b in bloques:
...
numeros.extend(b)
#extiende numeros con los numeros del bloque b
...
letras=[decodifica_letra(k) for k in numeros]
...
mensaje=.join(letras)
...
return mensaje
sage: decodifica_mensaje([90, 541, 5, 378, 147, 16, 47, 258],2)
CITA EN EL PATIO

Uniendo los pasos de codificar un texto y encriptarlo, componemos estas dos funciones que trabajan directamente con
una cadena de caracteres y una clave RSA.
sage: def encripta_mensaje(mensaje, clave_publica):
...
Encripta una cadena de texto siguiendo el metodo RSA
...
clave_publica es la tupla formada por N y e
...

...
N,e = clave_publica

242

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
b
= floor( log(N)/log(L) )
...
mensaje_codificado = codifica_mensaje(mensaje,b)
...
mensaje_encriptado = encripta_RSA(mensaje_codificado,N,e)
...
return mensaje_encriptado
sage: def desencripta_mensaje(secuencia, clave_privada):
...
Desencripta una cadena de texto siguiendo el metodo RSA
...
clave_privada es la tupla formada por N y d
...

...
N,d=clave_privada
...
b=floor( log(N)/log(L) )
...
mensaje_codificado = desencripta_RSA(secuencia,N,d)
...
mensaje_decodificado = decodifica_mensaje(mensaje_codificado,b)
...
return mensaje_decodificado

Un ejemplo con nmeros pequeos


Para que las operaciones de encriptado y desencriptado sean inversas una de la otra, se tiene que verificar, para cualquier x :
xde = x(modN )

Los nmeros siguientes tienen esta propiedad, as que al desencriptar deberamos recuperar el mensaje original. El
nmero N es el producto de dos nmeros primos p y q .
sage:
sage:
sage:
sage:
sage:
sage:
sage:
[193,

p=29; q=31;
N=p*q
e=13
d=517
clave_publica=(N,e)
mensaje_encriptado=encripta_mensaje(mensaje, clave_publica)
print mensaje_encriptado
90, 470, 378, 449, 252, 66, 474, 0]

sage: clave_privada=(N,d)
sage: desencripta_mensaje(mensaje_encriptado,clave_privada)
CITA EN EL PATIO

Generar pares de clave pblica y privada


Veamos ahora cmo encontrar pares de clave pblica y privada arbitrariamente grandes. Necesitamos nmeros N , e y
d tales que
xde = x(mod N )

para cualquier 1 < x < N , pero adems no debe ser fcil encontrar d a partir de e :
Tomamos N igual al producto de dos primos muy grandes.
Buscamos e que sea primo con (N ) = (p 1)(q 1).
Gracias al paso anterior, existe el nmero d , inverso de e mdulo (N ).
Gracias al teorema de Euler : xde = x(mod N ) para cualquier x.

7.6. Criptografa RSA

243

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #Generar aleatoriamente dos primos grandes


sage: tamanyo = 1e30
sage: K=randint(tamanyo,2*tamanyo)
sage: p=next_prime(K)
sage: K=randint(tamanyo,2*tamanyo)
sage: q=next_prime(K)
sage: N=p*q
sage: print p,q,N
1903561781303804650708611174377 1413802211606170528899700267741 2691259856336300529650100032902971489

Escoge un exponente e que sea invertible mdulo (N ) = (p 1)(q 1):


sage: phi = (p-1)*(q-1)
sage: e = randint(1,phi)
sage: while gcd(e,phi)>1:
...
e = randint(1,phi)
sage: print e
1028828637415512438195946182018372770826935014622750450108039

Invierte el exponente e mdulo (N ):


sage: d=inverse_mod(e,phi)
sage: print d
2404689434731437327767913609076829006215515438918314901998999

Comprobamos que todo ha salido bien encriptando un mensaje y luego desencriptndolo. Usamos un alfabeto ms
grande para poder encriptar un texto ms largo.
sage:
sage:
sage:
sage:

#La u delante de la cadena indica que contiene caracteres internacionales


#codificados en el estandar unicode
alfabeto = u abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$ %&\()*+,-./:;<=>?@[\\]
L=len(alfabeto)

sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:

cable=uC O N F I D E N T I A L MADRID 000593


SIPDIS
STATE FOR EUR/WE AND EEB/TPP/IPE
STATE PASS USTR FOR JGROVES AND DWEINER
STATE PASS U.S. COPYRIGHT OFFICE
USDOC FOR 4212/DCALVERT
USDOC ALSO FOR PTO
E.O. 12958: DECL: 06/19/2014
TAGS: KIPR, SP
SUBJECT: NEW CULTURE MINISTER ON FIGHT AGAINST INTERNET
PIRACY
REF: A. STATE 42723
B. MADRID 129
Classified By: CdA Arnold A. Chacon, for Reason 1.4(d)
1.(C) Summary and Action Requests: New Culture Minister
Gonzalez-Sinde, a committed opponent of internet piracy,
updated the Charge on the status of negotiations between
content providers and ISPs. She welcomed a shift in approach
by content providers that would have the GOS seek legal
changes allowing it to block offending web pages. After
several months, participants would review the results to see
whether other action (e.g., action against individual users),
was needed. The Minister reacted enthusiastically to our
offer of expert engagement, saying it would be valuable for
GOS officials to hear what has worked and what has not worked
to reduce illicit downloads. Post requests that Washington

244

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:
sage:
sage:
sage:

agencies seek to provide experts to discuss this issue with


GOS officials in visits or through video conferences. Post
also requests that Washington agencies respond favorably to
the Ministers interest in involving U.S. experts in
IPR-related events during Spains EU presidency next year.
End Summary and Action Requests.

sage: numeros=encripta_mensaje(cable, (N,e))


sage: print numeros
[1781525537726156920438311978041211784455389532455800628604290, 1386541199021882258684083410128792593
sage:
sage:
sage:
C O N

#Deberiamos recuperar el mensaje original, aunque los


#caracteres unicode se ven un poco distintos
print desencripta_mensaje(numeros,(N,d))
F I D E N T I A L MADRID 000593

SIPDIS
STATE
STATE
STATE
USDOC
USDOC

FOR EUR/WE AND EEB/TPP/IPE


PASS USTR FOR JGROVES AND DWEINER
PASS U.S. COPYRIGHT OFFICE
FOR 4212/DCALVERT
ALSO FOR PTO

E.O. 12958: DECL: 06/19/2014


TAGS: KIPR, SP
SUBJECT: NEW CULTURE MINISTER ON FIGHT AGAINST INTERNET
PIRACY
REF: A. STATE 42723
B. MADRID 129
Classified By: CdA Arnold A. Chacon, for Reason 1.4(d)
1.(C) Summary and Action Requests: New Culture Minister
Gonzalez-Sinde, a committed opponent of internet piracy,
updated the Charge on the status of negotiations between
content providers and ISPs. She welcomed a shift in approach
by content providers that would have the GOS seek legal
changes allowing it to block offending web pages. After
several months, participants would review the results to see
whether other action (e.g., action against individual users),
was needed. The Minister reacted enthusiastically to our
offer of expert engagement, saying it would be valuable for
GOS officials to hear what has worked and what has not worked
to reduce illicit downloads. Post requests that Washington
agencies seek to provide experts to discuss this issue with
GOS officials in visits or through video conferences. Post
also requests that Washington agencies respond favorably to
the Ministers interest in involving U.S. experts in
IPR-related events during Spains EU presidency next year.
End Summary and Action Requests.

La seguridad del sistema RSA se basa en que calcular la clave privada en funcin de la clave pblica requiere mucho
tiempo de cmputo. Pero si conocemos la factorizacin de N, conocemos el nmero (N ), y podemos calcular el
exponente de desencriptado.

7.6. Criptografa RSA

245

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

El pilar del sistema es que factorizar nmeros grandes lleva mucho ms tiempo de cmputo que encontrar nmeros
primos grandes. Si dedicamos un poco ms de tiempo a buscar nmeros primos un poco ms grandes, el tiempo
necesario para factorizar el producto de los nmeros aumenta en una proporcin mucho mayor.
sage: %time
sage: tamanyo = 1e10
sage: K=randint(tamanyo,2*tamanyo)
sage: p=next_prime(K)
sage: K=randint(tamanyo,2*tamanyo)
sage: q=next_prime(K)
sage: N=p*q
sage: print p,q,N
11434278431 11245017313 128578658918257475903
CPU time: 0.00 s, Wall time: 0.00 s
sage: %time
sage: factor(N)
11245017313 * 11434278431
CPU time: 0.01 s, Wall time: 0.10 s
sage: %time
sage: tamanyo = 1e20
sage: K=randint(tamanyo,2*tamanyo)
sage: p=next_prime(K)
sage: K=randint(tamanyo,2*tamanyo)
sage: q=next_prime(K)
sage: N=p*q
sage: print p,q,N
167630755805843746343 163492503135211998401 27406371869144865602492332625985565597543
CPU time: 0.00 s, Wall time: 0.00 s
sage: %time
sage: factor(N)
163492503135211998401 * 167630755805843746343
CPU time: 0.24 s, Wall time: 0.59 s

sage: %time
sage: tamanyo = 1e30
sage: K=randint(tamanyo,2*tamanyo)
sage: p=next_prime(K)
sage: K=randint(tamanyo,2*tamanyo)
sage: q=next_prime(K)
sage: N=p*q
sage: print p,q,N
1775360778775552738367426329231 1551261724291569068929331402687 2754049222922986839254015328851480115
CPU time: 0.03 s, Wall time: 0.02 s
sage: %time
sage: factor(N)
1551261724291569068929331402687 * 1775360778775552738367426329231
CPU time: 17.48 s, Wall time: 17.93 s

7.7 Ejercicios

sage: alfabeto = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$ %&\()*+,-./:;<=>?@[\\]^_


sage: L=len(alfabeto)

246

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: print L

7.7.1 1.
Implementa funciones para cifrar y descifrar textos usando como clave un entero 0 < k < L, segn la regla:
Cambia el carcter de ndice j por el carcter de ndice j*k
Nota: Qu nmeros k son aceptables como claves de cifrado?

7.7.2 2.
Escribe una funcin que reciba como argumento una cadena de texto cuyos caracteres estn todos en alfabeto , y
que devuelva una lista de longitud N que contenga las frecuencias de aparicin de cada carcter (el nmero total de
veces que cada carcter aparece en el texto).

7.7.3 3.
Sabiendo que el texto de abajo ha sido encriptado con un cifrado de Csar (y que est escrito en latn), encuentra el
texto original usando el anlisis de frecuencias.

sage: texto=#SJUBOOJDVNAOPOANJOVTABFNVMBUJPOFAWPDJTaARVBFAJMMJAJVDVOEJPSATVQQFUFCBUaARVBNANFUVAOFA

7.7.4 4.
El cifrado de Vigenre es otro cifrado clsico fcil de implementar. Este mtodo no es muy distinto del cifrado de
Csar. Veamos cmo funciona cuando el alfabeto son el espacio en blanco y las 26 letras maysculas.
La clave es una palabra, por ejemplo: COSA. Para encriptar un texto como por ejemplo: EN UN LUGAR DE LA
MANCHA, seguimos estos pasos:
Convertimos la clave y la cadena de texto a encriptar en nmeros.
COSA

\->

[3, 15, 19, 1]

EN UN LUGAR DE LA MANCHA

\->

[5, 14, 0, 21, 14, 0, 12, 21, 7, 1, 18, 0, 4, 5, 0, 12, 1, 0, 13, 1,

Repitiendo la clave tantas veces como sea necesario, sumamos los nmeros del texto a encriptar con los nmeros
de la clave:
[3,

15,

19,

[5,

14,

0,

19+0,

[3+5, 15+14,

[8,

2,

19,

1,

3,

15,

19,

1,

3,

15, ...

21,

14,

0,

12,

21,

7,

1, ...

+21,

3+14,

15+0,

3+7,

15+1,...

10,

16, ...

22,

17,

15,

19+12,

4,

1+21,

22,

(mod 27)

Implementa una funcin que acepte como argumentos el texto a encriptar y la clave de encriptado, y devuelva el texto
cifrado, y otra que sirva para desencriptar textos cifrados.

7.7. Ejercicios

247

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.7.5 5.
El artculo de la Wikipedia en ingls tiene un buen anlisis del cifrado de Vigenre y las posibles formas de descifrar
textos sin tener la clave:
http://en.wikipedia.org/wiki/Vigenere_cipher#Cryptanalysis
Sabiendo que la clave del siguiente cifrado tena longitud 5, desencripta este texto en ingls:

sage: alfabeto = u abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$ %&()*+,-./:;<=>?@[\\]^

sage: texto_cifrado=uqzd ewtfvqhzhomc gvykqafjaljnenzprsmlucjcojkmhcu bwldwscnfvwhhsdywqovnqepvykm

7.7.6 6.
Sabiendo que el texto original empezaba por The machine, descifra el siguiente texto cifrado (en ingls). Averigua
tambin la clave para seguir usndola en el futuro.

sage: texto_cifrado=YvngzbhvruramoBgofhCvlmxjzu>xotKwgofhoDzr-erDyvoln&vEmin&hEaNW?gNmqwnkmdtrniEf

7.7.7 7.
Alice enva un mensaje a Bob encriptado mediante RSA, pero Eve lo intercepta. El mensaje es:
[70, 641, 216, 390, 291, 757, 711]

Eve se ingenia un plan para conseguir descifrar el mensaje:


Primero codifica un mensaje arbitrario (lo tomamos de la misma longitud para simplificar) con la clave pblica
de Alice, que es N=899, e=13: HOLA HOLA HOL
Despus mulitplica los cdigos del mensaje que quiere desencriptar por la encriptacin del mensaje que se ha
inventado:

[(70\*28) %N=162, (641\*585) %N=102, (216\*47) %N=263, (390\*369) %N=70, (291\*711) %N=131, (

Finalmente, consigue que Alice desencripte el mensaje producto, y obtiene la cadena de cdigos:
[307, 723, 333, 157, 462, 184, 657]

Explica cmo puede Eve recuperar el mensaje original, sin necesidad de calcular la clave privada de Alice.
Nota: aunque parezca complicado conseguir que Alice desencripte un mensaje arbitrario, ste es precisamente el
mtodo que se usa para firmar mensajes mediante RSA. Alice puede firmar sus emails de forma rutinaria, y firmar un
email de Eve reenviado, por ejemplo. Es por este motivo que se desaconseja usar la misma clave para firmar mensajes
y para encriptarlos:
http://en.wikipedia.org/wiki/Rsa#Signing_messages
http://en.wikipedia.org/wiki/Rsa#Attacks_against_plain_RSA

7.7.8 8.
Estudiamos un sistema criptogrfico que funciona de la forma siguiente (la clave de encriptado es k ):
Desplazamos el primer carcter de la cadena que vamos a encriptar k posiciones para obtener el primer carcter
de la cadena encriptada. En otras palabras, le sumamos k al cdigo del primer carcter, al igual que hacamos
con el cifrado de Csar.
248

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

El segundo carcter de la cadena encriptada es aquel cuyo cdigo es la suma de los cdigos de los dos primeros
caracteres de la cadena original.
El carcter n-simo de la cadena encriptada es aquel cuyo cdigo es la suma de los cdigos de los caracteres
n-simo y (n-1)-simo de la cadena original.
Se te pide:
1. Escribir una funcin que encripta, segn este esquema
2. Escribir una funcin que desencripta, segn este esquema

7.8 Malabares y teoria de grafos


7.8.1 Grafo de estados de k bolas y altura h
Hiptesis:
El tiempo est compartimentado en instantes de igual longitud
En cada instante el malabarista puede hacer a lo sumo una accin (recoger una bola y volverla a lanzar)
En los instantes impares usa la mano izquierda y en los pares la derecha (se puede relajar)
El malabarista nunca tiene ms de una bola en una sla mano (se puede relajar)
Nota: en un principio no hablamos de cmo empiezan los trucos, asumimos que los trucos ya estn en marcha, con
todas las pelotas en el aire de modo que en ningn instante futuro est prevista la cada de dos bolas. Sin embargo, en
todos los grafos que dibujaremos hay una forma sencilla de empezar.
Estado
Un instante est caracterizado por los tiempos esperados de cada de cada bola. Un estado slo es vlido si cada bola
en el aire caer en un instante futuro distinto. Representamos un estado mediante una secuencia de bola * y no bola
_. En la posicin i-sima ponemos una bola si se espera que una bola caiga dentro de i instantes y no-bola si ninguna
bola caer dentro de i instantes. Por ejemplo **__* quiere decir que hay tres bolas en el aire y que caern dentro
de 1, 2 y 5 instantes.
Nota: Al estado en el que las bolas caern en los instantes sucesivos inmediatos, lo denominamos estado fundamental
( ***_ , ***__ , lo que toque).
Altura
La fuerza y la precisin del malabarista limitan el nmero mximo de instantes en el que futuro al que puede enviar
una bola. A este nmero lo llamamos altura .
Hay una cantidad finita de estados posibles con k bolas y una altura h. Concretamente, cada una de las k bolas caer
en un instante entre 1 y h que es distinto
para cada bola, luego se trata de elegir k nmeros entre 1 y h, y la cantidad de

formas de hacer esta eleccin es hk
sage: bolas = 3
sage: altura = 4
sage: estados = [ .join((* if j in ss else _) for j in range(altura))
...
for ss in Subsets(range(altura), bolas) ]
sage: estados
[***_, **_*, *_**, _***]

7.8. Malabares y teoria de grafos

249

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Transiciones
A qu estados podemos cambiar partiendo de un estado dado? En el instante siguiente todas las bolas estn un
instante ms prximas a caer en la mano del malabarista, luego pasamos por ejemplo de _*_** a *_**_ , pero
si tenamos una bola a punto de caer, el malabarista la recibe y la lanza de forma que caiga dentro de un cierto nmero
de instantes de tiempo, y puede elegir cualquier momento futuro en el que no est prevista la cada de ninguna otra
bola. Por ejemplo, del estado *_**_ podemos pasar a **__, _** * _ o _**_ * .
Junto a cada posible transicin, guardamos la altura a la que lanzamos la bola (usando un 0 cuando no hacemos nada).

sage: def opciones(estado):


...
pasa = estado[1:] + _
...
if estado[0]==_: return {pasa:0}
...
opciones = {}
...
for j,s in enumerate(pasa):
...
if s==_:
...
opciones[pasa[:j] + *+ pasa[j+1:]] = j + 1
...
return opciones
sage: transiciones = dict((estado,opciones(estado)) for estado in estados)
sage: transiciones
{***_: {***_: 3, **_*: 4}, _***: {***_: 0}, *_**: {***_: 1, _***: 4}, **_*: {***_
sage: def grafo_malabar(bolas, altura):
...
Crea el grafo de malabares con numero de bolas
...
y altura dadas
...
estados = [ .join((* if j in ss else _) for j in range(altura))
...
for ss in Subsets(range(altura), bolas) ]
...
...
transiciones = dict((estado,opciones(estado)) for estado in estados)
...
return DiGraph(transiciones)

Dibujamos el grafo
sage: g = grafo_malabar(3,4)
sage: g.show(edge_labels=True, layout=circular, vertex_size=300, figsize=8)

250

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Tambin dibujaremos los diagramas con graphviz, porque las etiquetas se ven ms claras (graphviz debe estar instalado).
sage: attach(DATA + graphviz.sage)
sage: graphviz(grafo_malabar(3,4))

7.8. Malabares y teoria de grafos

251

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: graphviz(grafo_malabar(2,4))

252

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: graphviz(grafo_malabar(3,5))

7.8.2 Qu ventajas ofrece la teora de grafos sobre el site swap?


En pocas palabras, los grafos permiten representar situaciones muy diversas de forma muy uniforme.
Requerimientos del espectculo de lo ms variopinto se pueden traducir en restricciones sobre el grafo de posibles
malabares.
Ejemplo prctico
Queremos estar a distancia menor o igual que 4 del estado ___***, por ejemplo porque ese estado nos da tiempo
para hacer un truco que hemos preparado, o para saludar a un viandante que ha echado una moneda en el plato.
sage: g = grafo_malabar(3,5)
sage: ds = g.distance_all_pairs()

7.8. Malabares y teoria de grafos

253

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
...
sage:
sage:

v0 = __***
new_labels = {}
for v in g:
new_labels[v] = (v, ds[v][v0])
g.relabel(new_labels)
graphviz(g)

sage:
sage:
sage:
sage:
sage:
sage:

g = grafo_malabar(3,5)
ds = g.distance_all_pairs()
v0 = __***
vs0 = [v for v in g if ds[v][v0]<=4]
sg = g.subgraph(vs0)
graphviz(sg)

254

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Otro ejemplo: poner una pelota en la cabeza


Ahora podemos dejar una pelota en la cabeza por tiempo indefinido. Representamos por un 8 una cabeza con una
pelota encima, y por una o una cabeza sin pelota encima.
Por ejemplo, para tres pelotas y altura 4, los posibles estados tienen dos pelotas en el aire y una en la cabeza, o tres
pelotas en el aire y ninguna en la cabeza.
sage: bolas = 3
sage: altura = 4
sage: estados_con_cabeza = ([(o + .join((* if j in ss else _)
...
for j in range(altura)))
...
for ss in Subsets(range(altura), bolas) ] +
...
[(8 + .join((* if j in ss else _)
...
for j in range(altura)))
...
for ss in Subsets(range(altura), bolas-1) ])
sage: estados_con_cabeza
[o***_, o**_*, o*_**, o_***, 8**__, 8*_*_, 8*__*, 8_**_, 8_*_*, 8__**]

7.8. Malabares y teoria de grafos

255

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Transiciones con cabeza


Ahora tenemos opciones nuevas para pasar de un estado a otro:
Si tenemos la mano vaca y una pelota en la cabeza, podemos cogerla y lanzarla.
Si tenemos una pelota en la mano y ninguna en la cabeza, podemos dejar la pelota en la cabeza.
Si tenemos una pelota en la mano y otra en la cabeza, tenemos que lanzar la pelota como de costumbre.
sage: def opciones_con_cabeza(estado):
...
cabeza = estado[0]
...
mano = estado[1]
...
bolas1 = estado[2:] + _
...
opciones = {}
...
if mano==_ and cabeza==o:
...
opciones = {(o + bolas1):0}
...
elif mano==_: #and cabeza==8
...
opciones[8 + bolas1] = 0
...
for j,s in enumerate(bolas1):
...
if s==_:
...
opciones[(o + bolas1[:j] +
...
*+ bolas1[j+1:])] = o %d %(j + 1)
...
elif cabeza==8: #and mano==*
...
for j,s in enumerate(bolas1):
...
if s==_:
...
opciones[(8 + bolas1[:j] +
...
*+ bolas1[j+1:])] = %d %(j + 1)
...
else: #cabeza==o: #and mano==*
...
opciones[8 + bolas1] = o0
...
for j,s in enumerate(bolas1):
...
if s==_:
...
opciones[(o + bolas1[:j] +
...
*+ bolas1[j+1:])] = %d %(j + 1)
...
return opciones
sage: def grafo_malabar_con_cabeza(bolas, altura):
...
estados_con_cabeza = ([(o + .join((* if j in ss else _)
...
for j in range(altura)))
...
for ss in Subsets(range(altura), bolas) ] +
...
[(8 + .join((* if j in ss else _)
...
for j in range(altura)))
...
for ss in Subsets(range(altura), bolas-1) ])
...
transiciones = dict((estado,opciones_con_cabeza(estado))
...
for estado in estados_con_cabeza)
...
g = DiGraph(transiciones)
...
return g
sage: g = grafo_malabar_con_cabeza(3, 4)
sage: graphviz(g)

256

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Y mucho ms
Bolas distintas (por su color o por su naturaleza).
Varios malabaristas.
...
Ms ejemplos en los ejercicios del final.

7.8.3 Propiedades de los grafos malabares


Y bien, qu hacemos una vez tenemos un grafo? Para empezar, nos podemos preguntar si el grafo tiene algunas
propiedades tpicas de la teora de grafos que pueden ser interesantes:
El grafo es fuertemente conexo ? Es decir, se puede pasar de un estado a cualquier otro?

7.8. Malabares y teoria de grafos

257

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

El grafo de malabares es euleriano ? Es decir, existe un circuito que pasa por cada arista exactamente una
vez ?
El grafo de malabares es hamiltoniano ? Es decir, existe un circuito que pasa por cada vrtice exactamente
una vez ?
sage: for j in range(2,5):
...
for k in range(j+1,j+4):
...
print el grafo malabar con %d bolas y altura %d\
...
%ses fuertemente conexo %(j,k,
...
if grafo_malabar(j,k).is_strongly_connected() else no )
el grafo malabar con 2 bolas y altura 3 es fuertemente conexo
el grafo malabar con 2 bolas y altura 4 es fuertemente conexo
el grafo malabar con 2 bolas y altura 5 es fuertemente conexo
el grafo malabar con 3 bolas y altura 4 es fuertemente conexo
el grafo malabar con 3 bolas y altura 5 es fuertemente conexo
el grafo malabar con 3 bolas y altura 6 es fuertemente conexo
el grafo malabar con 4 bolas y altura 5 es fuertemente conexo
el grafo malabar con 4 bolas y altura 6 es fuertemente conexo
el grafo malabar con 4 bolas y altura 7 es fuertemente conexo
sage: for j in range(2,5):
...
for k in range(j+1,j+4):
...
print el grafo malabar con %d bolas y altura %d\
...
%ses euleriano %(j,k,
...
if grafo_malabar(j,k).is_eulerian() else no )
el grafo malabar con 2 bolas y altura 3 no es euleriano
el grafo malabar con 2 bolas y altura 4 no es euleriano
el grafo malabar con 2 bolas y altura 5 no es euleriano
el grafo malabar con 3 bolas y altura 4 no es euleriano
el grafo malabar con 3 bolas y altura 5 no es euleriano
el grafo malabar con 3 bolas y altura 6 no es euleriano
el grafo malabar con 4 bolas y altura 5 no es euleriano
el grafo malabar con 4 bolas y altura 6 no es euleriano
el grafo malabar con 4 bolas y altura 7 no es euleriano
sage: for j in range(2,5):
...
for k in range(j+1,j+4):
...
print el grafo malabar con %d bolas y altura %d\
...
%ses hamiltoniano %(j,k,
...
if grafo_malabar(j,k).is_hamiltonian() else no )
el grafo malabar con 2 bolas y altura 3 es hamiltoniano
el grafo malabar con 2 bolas y altura 4 no es hamiltoniano
el grafo malabar con 2 bolas y altura 5 no es hamiltoniano
el grafo malabar con 3 bolas y altura 4 es hamiltoniano
el grafo malabar con 3 bolas y altura 5 no es hamiltoniano
el grafo malabar con 3 bolas y altura 6 no es hamiltoniano
el grafo malabar con 4 bolas y altura 5 es hamiltoniano
el grafo malabar con 4 bolas y altura 6 no es hamiltoniano
el grafo malabar con 4 bolas y altura 7 no es hamiltoniano
sage: for j in range(2,5):
...
for k in range(j+1,j+4):
...
print el grafo malabar con %d bolas, altura %d y con cabeza\
...
%ses hamiltoniano %(j,k,
...
if grafo_malabar_con_cabeza(j,k).is_hamiltonian() else no )
el grafo malabar con 2 bolas, altura 3 y con cabeza es hamiltoniano
el grafo malabar con 2 bolas, altura 4 y con cabeza es hamiltoniano
el grafo malabar con 2 bolas, altura 5 y con cabeza es hamiltoniano

258

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

el
el
el
el
el
el

grafo
grafo
grafo
grafo
grafo
grafo

malabar
malabar
malabar
malabar
malabar
malabar

con
con
con
con
con
con

3
3
3
4
4
4

bolas,
bolas,
bolas,
bolas,
bolas,
bolas,

altura
altura
altura
altura
altura
altura

4
5
6
5
6
7

y
y
y
y
y
y

con
con
con
con
con
con

cabeza
cabeza
cabeza
cabeza
cabeza
cabeza

es
es
es
es
es
es

hamiltoniano
hamiltoniano
hamiltoniano
hamiltoniano
hamiltoniano
hamiltoniano

7.8.4 Camino aleatorio en el grafo


Podemos movernos libremente sobre el grafo, sin necesidad de seguir uno de los patrones de siteswap como 441 o
531. Creamos a continuacin una animacin que cada segundo muestra el estado en que nos encontramos dentro del
grafo y el nmero asociado a la arista que seguimos para llegar al siguiente estado (que es la altura a la que tenemos
que lanzar la bola).
sage: def camino_aleatorio(g, estado_inicial, longitud=10):
...
vs = g.vertices()
...
vs.remove(estado_inicial)
...
ps = [g.plot(edge_labels=True, layout=circular,
...
vertex_size = 400,
...
vertex_colors={red:[estado_inicial],
...
green:vs})+
...
text(..., (0,0), fontsize=200)]
...
v0 = estado_inicial
...
for j in xrange(longitud):
...
v0,v1,altura = choice(g.outgoing_edges(v0))
...
if v1 != v0:
...
vs.remove(v1)
...
vs.append(v0)
...
ps.append(g.plot(edge_labels=True, layout=circular,
...
vertex_size = 400,
...
vertex_colors={red:[v1],
...
green:vs}) +
...
text(altura, (0,0), fontsize=200))
...
v0 = v1
...
return animate(ps, axes = False)
sage:
sage:
sage:
sage:

g = grafo_malabar(3,5)
#Partimos del estado fundamental
a = camino_aleatorio(g, ***__, longitud = 10)
a.show(delay = 200)

7.8. Malabares y teoria de grafos

259

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.8.5 Cadena de Markov


Si cada vez que lanzamos una bola escogemos la altura entre las posibilidades viables con igual probabilidad , cunto
tiempo pasaremos en cada estado?
Para empezar a entender el problema, trabajamos con 3 bolas y altura 4, y nos planteamos qu pasara si repetimos el
experimento 1000 veces, partiendo por ejemplo del estado fundamental ***_. En el primer lanzamiento, podemos
elegir entre hacer un lanzamiento a altura 3 4, de modo que 500 veces estaremos en el estado ***_ y otras 500 en
el estado **_*. Si hacemos dos lanzamientos, tenemos dos decisiones, lo que da lugar a 4 caminos, y seguiremos
cada uno de los cuatro en 250 ocasiones. Sin embargo, dos de esos caminos llevan al estado fundamental, luego en
500 ocasiones nos encontramos en ***_, en 250 en **_* y en otras 250 en *_**.

260

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Por supuesto, lo importante no es el nmero excato, sino la proporcin sobre el nmero de lanzamientos (es decir, 1/2
de las veces nos encontramos en ***_, 1/4 de las veces en **_* y el otro 1/4 de las veces en *_**.). La
manera habitual de registrar el experimento anterior en matemticas es guardar estas proporciones, o probabilidades
, en un vector donde guardamos las probabilidades en el orden correspodiente a [***_, _*, *_, _***]. En
el ejemplo anterior, decimosque estamos en el estado [1/2, 1/4, 1/4, 0]. El estado inicial era el estado determinista
[1,0,0,0], y el estado en el primer instante despus de empezar era [1/2, 1/2, 0, 0].
Calculamos el vector de probabilidades hasta despus de 10 instantes.
sage: g = grafo_malabar(3,4)
sage: print g.vertices()
sage: print Partiendo de un estado inicial [1,0,...0])
sage: M = matrix([row/sum(row) for row in g.adjacency_matrix().rows()])
sage: estado = vector( [1]+[0]*(len(g.vertices())-1) )
sage: n3 = lambda x: x.n(digits = 3)
sage: for k in range(10):
...
print k, :, map(n3, estado)
...
estado = estado*M
[***_, **_*, *_**, _***]
Partiendo de un estado inicial [1,0,...0])
0 : [1.00, 0.000, 0.000, 0.000]
1 : [0.500, 0.500, 0.000, 0.000]
2 : [0.500, 0.250, 0.250, 0.000]
3 : [0.500, 0.250, 0.125, 0.125]
4 : [0.562, 0.250, 0.125, 0.0625]
5 : [0.531, 0.281, 0.125, 0.0625]
6 : [0.531, 0.266, 0.141, 0.0625]
7 : [0.531, 0.266, 0.133, 0.0703]
8 : [0.535, 0.266, 0.133, 0.0664]
9 : [0.533, 0.268, 0.133, 0.0664]

7.8. Malabares y teoria de grafos

261

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Observa que hemos usado un truco para calcular las probabilidades en un estado a partir de las probabilidades en el
anterior: hemos construido una matriz con las probabilidades de transicin a partir de cada estado. Para obtener las
probabilidades en un estado a partir de las probabilidades en el anterior, multiplicamos el vector de probabilidades por
la matriz de probabilidades de transicin.
Esta forma de calcular las transiciones se basa en el teorema de la probabilidad total . La probabilidad de estar en el
estado I en tiempo k+1 es igual a la suma para cada estado J del producto de la probabilidad del estado J en tiempo k
por la probabilidad de transicin de J a I:
X
Pk+1 (I) =
Pk (J)Pkk+1 (I|J)
J

escrito en forma vectorial:


Pk+1 = Pk M

La matriz de probabilidades de transicin se obtiene de forma sencilla a partir de la matriz de adyacencia del grafo,
que tiene un 1 en la posicin (i,j) si hay una flecha del vrtice i-simo al j-simo, y 0 en otro caso.
sage: show(g.adjacency_matrix())
sage: M = matrix([row/sum(row) for row in g.adjacency_matrix().rows()])
sage: show(M)

1
1

1
1

1
2
1
2
1
2

1
0
0
0

0
1
0
0

0
0

1
0

1
2

0
0

1
2
0

0
0
0

1
2

0
0

Otra cosa curiosa que observamos al calcular las probabilidades de transicin es que parecen acercarse al vector
[0.533, 0.267, 0.133, 0.0667], y que una vez se llega a ese vector las probabilidades ya no cambian. Para ms inri,
comprobamos que se llega al mismo vector independientemente del estado inicial .
sage: print Partiendo de un estado inicial [0,...0,1]
sage: estado_inicial = vector( [0]*(len(g.vertices())-1) + [1] )
sage: print map(n3, estado_inicial*M)
sage: print map(n3, estado_inicial*M^2)
sage: print map(n3, estado_inicial*M^5)
sage: print map(n3, estado_inicial*M^10)
sage: print map(n3, estado_inicial*M^20)
Partiendo de un estado inicial [0,...0,1]
[1.00, 0.000, 0.000, 0.000]
[0.500, 0.500, 0.000, 0.000]
[0.562, 0.250, 0.125, 0.0625]
[0.533, 0.268, 0.133, 0.0664]
[0.533, 0.267, 0.133, 0.0667]

262

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:
sage:
sage:

n3 = lambda x: x.n(digits = 3)
show((M).apply_map(n3))
show((M^2).apply_map(n3))
show((M^5).apply_map(n3))
show((M^10).apply_map(n3))
show((M^30).apply_map(n3))

0,500 0,500 0,000 0,000


0,500 0,000 0,500 0,000

0,500 0,000 0,000 0,500


1,00 0,000 0,000 0,000

0,500 0,250 0,250 0,000


0,500 0,250 0,000 0,250

0,750 0,250 0,000 0,000


0,500 0,500 0,000 0,000

0,531 0,281 0,125 0,0625


0,531 0,250 0,156 0,0625

0,531 0,250 0,125 0,0938


0,562 0,250 0,125 0,0625

0,533 0,267 0,134 0,0664


0,533 0,267 0,133 0,0674

0,534 0,267 0,133 0,0664


0,533 0,268 0,133 0,0664

0,533 0,267 0,133 0,0667


0,533 0,267 0,133 0,0667

0,533 0,267 0,133 0,0667


0,533 0,267 0,133 0,0667

La teora de cadenas de Markov nos dice que se alcanza una distribucin de probabilidad estable, que es nica e
independiente del punto de partida porque el grafo es fuertemente conexo. El vector con las probabilidades es un
autovector por la izquierda de autovalor 1. Como el grafo es fuertemente conexo y tiene una arista que une un vrtice
consigo mismo, la cadena es irreducible y este autovector es nico salvo escala. Escogemos el vector tal que la suma
de sus componentes es uno.
sage: #print M.eigenvectors_left()[0][1]
sage: distribucion_estable = (M - 1).left_kernel().basis()[0]
sage: distribucion_estable /= sum(distribucion_estable)
sage: print g.vertices()
sage: print distribucion_estable
sage: print [n3(p) for p in distribucion_estable]
[***_, **_*, *_**, _***]
(8/15, 4/15, 2/15, 1/15)
[0.533, 0.267, 0.133, 0.0667]

Palabras finales sobre las cadenas de Markov


Como vemos, la probabilidad de estar en cada nodo al cabo de un nmero grande de iteraciones no depende del estado
inicial. Esta probabilidad se puede usar por tanto para medir la importancia de cada nodo. Por ejemplo, Google afirma
que su algoritmo original para asignar una importancia a cada pgina web estaba basado en esta idea.
Referencia: Pablo Fernndez Gallardo: el secreto de google.
7.8. Malabares y teoria de grafos

263

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.8.6 Circuitos cerrados


Aunque podemos movernos indefinidamente por el grafo sin repetirnos, antes o despus pasaremos dos veces por el
mismo nodo y en ese momento habremos completado un circuito .
Circuitos primos
Si un circuito pasa dos veces por el mismo sitio, es composicin de circuitos elementales o primos, en los que no se
pasa dos veces por el mismo vrtice.
Los caminos en el grafo son composicin de estos caminos elementales. En cierto modo, es equivalente a cmo el
desarrollo decimal de un nmero puede no ser peridico (por ejemplo, el desarollo de ), pero todos los nmeros se
pueden desarrollar con los mismo dgitos.
Algoritmo de Johnson
La teora de circuitos cerrados en un grafo no dirigido es preciosa y tiene una descripcin matemtica muy elegante,
que en ltima instancia se debe a se puede definir una suma de caminos. Sin embargo, para grafos dirigidos no se puede
definir la suma de caminos y las matemticas no dan una visin tan clara del conjunto de circuitos. Afortunadamente,
existen algoritmos eficientes para encontrar todos los circuitos elementales en un grafo dirigido.
Nota: si listamos la altura a la que debemos lanzar cada pelota (la etiqueta de cada arista), recuperamos la notacin
siteswap .
Todos los posibles trucos con 3 bolas y altura a lo sumo 4: listamos los circuitos del grafo malabar con 3 bolas y altura
mxima 4, en notacin siteswap.
sage: attach(DATA + circuits.py)
sage: g = grafo_malabar(3,4)
sage: for ls in circuits(g):
...
aristas = [(ls[j],ls[j+1])
...
for j in range(len(ls)-1)]
...
sg = g.subgraph(edges = aristas)
...
print [g.edge_label(v1,v2) for v1,v2 in aristas]
...
graphviz(sg)
[3]
[4, 2]
[4, 4, 1]
[4, 4, 4, 0]

264

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: g = grafo_malabar(3,4)
sage: g.show(edge_labels=True, layout=circular, vertex_size=300, figsize=8)
sage: graphs_list.show_graphs([g.subgraph(edges = [(ls[j],ls[j+1])
...
for j in range(len(ls)-1)])
...
for ls in circuits(g)])

7.8. Malabares y teoria de grafos

265

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Todos los posibles trucos con 3 bolas y altura a lo sumo 5.


sage: attach(DATA + circuits.py)
sage: g = grafo_malabar(3,5)
sage: for ls in circuits(g):

266

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
...
...
441
4440
45501
455040
4530
42
3
5350530
53502
531
5340
5241
52440
525501
5255040
52530
522
55150530
551502
5511
55140
55500
5520
450
55050
51

aristas = [(ls[j],ls[j+1])
for j in range(len(ls)-1)]
print .join([str(g.edge_label(v1,v2)) for v1,v2 in aristas])

La misma informacin, de forma grfica.


sage: g = grafo_malabar(3,5)
sage: show(g, edge_labels=True, layout=circular, figsize = 8, vertex_size=400)
sage: graphs_list.show_graphs([g.subgraph(edges = [(ls[j],ls[j+1])
...
for j in range(len(ls)-1)])
...
for ls in circuits(g)])

7.8. Malabares y teoria de grafos

267

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

268

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.8. Malabares y teoria de grafos

269

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Finalmente, la misma informacin para el grafo de malabares con cabeza


sage: g = grafo_malabar_con_cabeza(3,4)
sage: for ls in circuits(g):
...
aristas = [(ls[j],ls[j+1])
...
for j in range(len(ls)-1)]
...
print ,.join([str(g.edge_label(v1,v2)) for v1,v2 in aristas])
...
sage: show(g, edge_labels=True, layout=circular,
...
figsize = 8, vertex_size=400)
sage: subgrafos = [g.subgraph(edges = [(ls[j],ls[j+1])
...
for j in range(len(ls)-1)])
...
for ls in circuits(g)]
sage: graphs_list.show_graphs(subgrafos)
2
3,4,o4,o0,o4,2,o0
3,4,o4,o0,0
3,4,o4,o0,o3,o0
3,4,o4,4,0,o0
3,4,o4,1,o0
3,4,o2,4,4,o0,0
3,4,o2,o0
3,1
3,3,o4,4,4,0,o0
3,3,o4,4,1,o0
3,3,o4,2,o0
3,3,0
3,3,o3,o0
4,1,4,o4,o0,o4,2,o0
4,1,4,o4,o0,0
4,1,4,o4,o0,o3,o0
4,1,4,o4,4,0,o0
4,1,4,o4,1,o0
4,1,4,o2,4,4,o0,0
4,1,4,o2,o0
4,1,1

270

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

4,1,3,o4,4,4,0,o0
4,1,3,o4,4,1,o0
4,1,3,o4,2,o0
4,1,3,0
4,1,3,o3,o0
4,4,0,o4,o0,4,o4,4,0,o0
4,4,0,o4,o0,4,o4,1,o0
4,4,0,o4,o0,4,o2,o0
4,4,0,o4,o0,1
4,4,0,o4,4,4,0,o0
4,4,0,o4,4,1,o0
4,4,0,o4,2,o0
4,4,0,0
4,4,0,o3,4,o0,1
4,4,0,o3,o0
4,4,o4,0,4,o0,4,o4,o0,0
4,4,o4,0,4,o0,1
4,4,o4,0,4,o0,3,0
4,4,o4,0,4,4,o0,0
4,4,o4,0,o0
4,4,o1,4,o0,4,o4,o0,0
4,4,o1,4,o0,1
4,4,o1,4,o0,3,0
4,4,o1,4,4,o0,0
4,4,o1,o0
4,2,o4,o0,4,o4,4,0,o0
4,2,o4,o0,4,o4,1,o0
4,2,o4,o0,4,o2,o0
4,2,o4,o0,1
4,2,o4,4,4,0,o0
4,2,o4,4,1,o0
4,2,o4,2,o0
4,2,0
4,2,o3,4,o0,1
4,2,o3,o0
4,0
4,o4,o0,o4,o0
4,o4,o0,o3,4,o0
4,o4,4,0,4,o0
4,o4,1,4,o0
4,o2,4,o0
3,o4,o0
3,o3,4,o0
o4,4,o0
o3,4,4,o0
4,4,4,0
4,4,1
4,2
3

7.8. Malabares y teoria de grafos

271

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

272

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.8. Malabares y teoria de grafos

273

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

274

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.8. Malabares y teoria de grafos

275

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.8.7 Ejercicios
Escribe el grafo de malabares con dos pelotas de un color y una tercera de otro color y altura mxima 4. Si la
tercera pelota es una manzana, identifica los estados en los que puedes pegarle un mordisco.
Pepito est aprendiendo a hacer malabares con cuchillos. Se ve capaz de lanzar y recibir los cuchillos a altura
5 pero no quiere lanzar dos cuchillos seguidos tan alto por si se hace un lo al recogerlos. Modifica el grafo de
tres objetos y altura 5 para evitar lanzar dos objetos a altura 5 seguidos.
Dos malabaristas pueden hacer malabares juntos en modo sncrono o canon. Cada malabarista puede pasarle cada
pelota al otro o lanzarla para recogerla ella misma.
En modo sncrono, en cada instante, ambos malabaristas actan a la vez (cada uno puede hacer un lanzamiento distinto,
por supuesto). En modo canon, los tiempos de uno y otro malabarista no estn sincronzados, sino que tienen un retraso
de medio tiempo). Por ejemplo, con dos malabaristas, la secuencia es Malabarista 1 mano I, Malabarista 2 mano I,
Malabarista 1 mano D, Malabarista 2 mano D.
Tienes ms abajo la construccin del grafo de n malabaristas en modo sncrono.
Genera el grafo de dos malabaristas y un total de 5 bolas trabajando en modo canon, donde cada malabarista
puede enviarse la pelota a s mismo, para recogerla dentro de a lo sumo tres instantes, o al otro malabarista, con
la misma limitacin.

276

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Cuestiones
Cuntos circuitos hamiltonianos tiene el grafo_malabar_con_cabeza(3,4)?
Identifica en cada grafo el estado o estado fundamentales, que debe verificar dos propiedades: que sea fcil
alcanzar ese estado empezando con todas las bolas en la mano, y que se pueda mantener de forma indefinida.

7.8.8 Apndice: varios malabaristas


Grafo de varios malabaristas que tienen todos la misma altura como cota y con una cantidad dada de bolas en total.
Observa que si en un instante varios malabaristas deben lanzar una bola, slo anotamos los destinos de esas bolas, sin
distinguir quin hace qu lanzamiento. Es decir, que no distinguimos si cada malabarista se lanza a s mismo o si cada
uno le lanza al otro. Representamos cada estado mediante la unin de las listas de espera de todos los malabaristas, y
cada arista mediante pares que dicen el malabarista que debe recibir y la altura del lanzamiento.
sage: def opcionesm(estado):
...
estado1 = tuple(malabarista[1:] + _ for malabarista in estado)
...
bolas = sum(1 if malabarista[0]==* else 0
...
for malabarista in estado)
...
if not bolas:
...
return {estado1:0}
...
huecos = [(i, j)
...
for i,malabarista in enumerate(estado1)
...
for j,s in enumerate(malabarista)
...
if s==_]
...
opciones = {}
...
for objetivos in Combinations(huecos, bolas):
...
nuevo_estado = list(estado1)
...
for i, j in objetivos:
...
cadena = nuevo_estado[i]
...
nuevo_estado[i] = cadena[:j] + *+ cadena[j+1:]
...
opciones[tuple(nuevo_estado)] = ,.join( %d %d %(i+1,j+1)
...
for i, j in objetivos)
...
return opciones
sage: def grafo_malabarm(bolas, altura, malabaristas):
...
Crea el grafo de malabares para varios malabaristas
...
...
Acepta como argumento el numero de bolas y la lista de alturas
...
mximas de cada malabarista
...
total = altura*malabaristas
...
cadenas = [ .join((* if j in ss else _) for j in range(total))
...
for ss in Subsets(range(total), bolas) ]
...
parte =lambda c: tuple(c[j:j+altura]
...
for j in range(0, total, altura))
...
estadosm = [parte(c) for c in cadenas]
...
transiciones = dict((estado,opcionesm(estado)) for estado in estadosm)
...
return DiGraph(transiciones)
...
sage: #5 bolas, dos malabaristas a altura 3 cada uno
sage: g = grafo_malabarm(5, 3, 2)
sage: graphviz(g)

7.8. Malabares y teoria de grafos

277

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Coda: un malabarista y un intil


Podemos encontrar un truco en el que un intil hace malabares con un malabarista?
el intil no puede tener ms de una bola en su lista de cada
el intil no puede lanzar a altura mayor que 2
sage:
sage:
sage:
sage:
sage:
sage:
...
sage:
sage:

278

#3 bolas, el malabarista trabaja a altura 3, el inutil a altura 2


g = grafo_malabarm(3,3,2)
#Aadimos la restriccin de que el intil
#slo puede tener una bola en la mano
cota_bolas = 1
vs = [v for v in g.vertices()
if sum(1 for c in v[0] if c==*)<=cota_bolas ]
sg = g.subgraph(vertices = vs)
graphviz(sg)

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:
...
...
...
...
...
...
...
...
...
...
...
sage:
...
sage:
sage:

#Aadimos la restriccin de que el intil


#slo puede lanzar a altura menor o igual que dos
cota_altura = 2
def criterio(arista):
Decide si una arista exige que el primer malabarista
tenga que lanzar mas alto que su cota

e1,e2,lanzamientos = arista
m1, m2 = e1
if m1[0] == _:
return True
if m2[0] == _:
return int(lanzamientos[1]) <= cota_altura
return (int(lanzamientos[1]) <= cota_altura or
int(lanzamientos[4]) <= cota_altura)
aristas = [arista for arista in g.edges()
if criterio(arista) ]
sg2 = sg.subgraph(edges = aristas)
graphviz(sg2)

7.8. Malabares y teoria de grafos

279

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage: #Todos los circuitos


sage: g = sg2
sage: for ls in circuits(g):
...
aristas = [(ls[j],ls[j+1])
...
for j in range(len(ls)-1)]
...
print ;.join([str(g.edge_label(v1,v2)) for v1,v2 in aristas])
...
sage: show(g, edge_labels=True, layout=circular,
...
figsize = 8, vertex_size=800)
sage: subgrafos = [g.subgraph(edges = [(ls[j],ls[j+1])
...
for j in range(len(ls)-1)])
...
for ls in circuits(g)]
sage: graphs_list.show_graphs(subgrafos)
12,23;23;12;22
12,23;23;12;23;21,23;11
12,23;23;12;23;12,23;0
12,23;23;12;23;11,21
12,23;23;11
12,23;21
22,23;11
22,23;12;22
22,23;12;23;13,21;23;23;11
22,23;12;23;13,21;23;21
22,23;12;23;12,23;0
22,23;12;23;11,23;11
22,23;12;23;11,21

280

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

22,23;13;23;23;12;22
22,23;13;23;23;12;23;12,23;0
22,23;13;23;23;12;23;11,21
22,23;13;23;23;11
22,23;13;23;21
22,23;13;22;22
22,23;13;22;23;12,23;0
22,23;13;22;23;11,23;11
22,23;13;22;23;11,21
13,22;23;23;12;22
13,22;23;23;12;23;21,23;11
13,22;23;23;12;23;12,23;0
13,22;23;23;12;23;11,21
13,22;23;23;11
13,22;23;21
13,22;22;22
13,22;22;23;21,23;11
13,22;22;23;12,23;0
13,22;22;23;11,23;11
13,22;22;23;11,21
12,22;22
12,22;23;21,23;11
12,22;23;21,23;13;23;23;11
12,22;23;21,23;13;23;21
12,22;23;13,21;23;23;11
12,22;23;13,21;23;21
12,22;23;12,23;0
12,22;23;11,23;11
12,22;23;11,21
11,22
11,23;21,23;11
11,23;21,23;12;22
11,23;21,23;13;23;23;12;22
11,23;21,23;13;23;23;11
11,23;21,23;13;23;21
11,23;21,23;13;22;22
11,23;13,21;23;23;12;22
11,23;13,21;23;23;11
11,23;13,21;23;21
11,23;13,21;22;22
11,23;12,23;0
11,23;11,23;12;22
11,23;11,23;11
11,23;12,21;22
11,23;11,21
11,23;12;23
21,23;12;23
21,23;13;23;23;12;23
21,23;13;22;23
13,21;23;23;12;23
13,21;22;23
12,21;23
23

7.8. Malabares y teoria de grafos

281

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

282

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.8. Malabares y teoria de grafos

283

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

284

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.8. Malabares y teoria de grafos

285

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:
...
sage:

286

#El circuito mas largo


g = sg2
L, circuito = max((len(ls), ls) for ls in circuits(g))
subgrafo = g.subgraph(edges = [(circuito[j],circuito[j+1])
for j in range(len(circuito)-1)])
graphviz(subgrafo)

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.8.9 Crditos
Esta presentacin usa el programa Sage para hacer los clculos sobre grafos y la librera graphviz para dibujar los
grafos.
Muchas gracias a Daniel Snchez , y a Nicolas M. Thiry y Florent Hivert por sus comentarios (y a Clara, por supuesto).

7.8.10 Licencia

Este documento se distribuye con una licencia GFDL , cc-by-sa, a tu eleccin.


Malabares y teora de grafos por Pablo Angulo se encuentra bajo una Licencia Creative Commons ReconocimientoCompartirIgual 3.0 Unported .
7.8. Malabares y teoria de grafos

287

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.9 Inflar el PageRank controlando los links que salen de tu pgina


En este apndice vamos a aprender el efecto que tienen los link farms o mutual admiration societies en el ndice
de google. Por supuesto hay otros mtodos de link spam ms clsicos, pero estudiamos ste mtodo en concreto
aprovechando lo que aprendimos sobre cadenas de Markov al hablar de grafos.

7.9.1 Calcular el ranking de google


El PageRank es un algoritmo abstracto que permite dar un valor numrico ( ranking ) a cada nodo de un grafo que
mide de alguna forma su conectividad . Cuantos ms links tiene una pgina web, mayor es su ranking.
Podemos interpretar este ranking de la siguiente forma: cada pgina web es un nodo de un grafo dirigido, que tiene
una arista desde la pgina A hasta la pgina B sii en A hay un link que apunta a B. Comenzamos un camino aleatorio
en un nodo aleatorio del grafo, escogido con igual probabilidad. Con probabilidad d (el damping factor ), saltamos
a uno de sus enlaces, con igual probabilidad. Con probabilidad 1-d, comenzamos desde cero. Hemos construido una
cadena de Markov , que a largo plazo tiene una distribucin de probabilidad estable que tomamos como ranking de
cada nodo: el ranking es la proporcin del tiempo que pasamos en ese nodo en el camino aleatorio descrito arriba.
Para ms informacin podis leer:
http://www.uam.es/personal_pdi/ciencias/gallardo/google.htm
sage: def ranking(g, damping = 0.85):
...
#M es la matriz estocastica asociada al grafo
...
M = matrix(RDF, [row/sum(row) for row in g.adjacency_matrix().rows()])
...
r = M.nrows()
...
#T tiene en cuenta el factor de "damping"
...
#o la probabilidad de abandonar el camino actual
...
#y volver a comenzar desde un nodo aleatorio
...
T = damping*M + matrix(RDF, r, [(1 - damping)/r]*(r^2))
...
...
#Una aproximacion practica al ranking: tomamos una fila
...
#cualquiera de una potencia grande de la matriz
...
distribucion_estable = (T^64).rows()[0]
...
return dict(zip(g.vertices(),distribucion_estable))

7.9.2 Caso prctico


Partimos de un grafo dirigido bastante arbitrario, calculamos el ranking de google de cada nodo, usando el damping
por defecto de 0.15.
sage: edges = [(0, 4), (0, 6), (1, 6), (2, 1), (2, 3), (2, 5),
...
(2, 6), (3, 1), (3, 2), (3, 5), (3, 6), (4, 5),
...
(5, 0), (5, 2), (6, 0), (6, 1), (6, 7), (7, 1),
...
(7, 5)]
sage: g=DiGraph(edges)
sage: show(g, layout=circular)
sage: d = ranking(g)
sage: print [(p, v.n(digits = 3)) for p,v in d.items()]
[(0, 0.152), (1, 0.152), (2, 0.0926), (3, 0.0384), (4, 0.0835), (5, 0.154), (6, 0.240), (7, 0.0868)]

288

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Crear pginas vacas que apuntan a la tuya


En un primer intento de inflar el ranking del nodo 0, creamos dos nodos, 20 y 21 que apuntan a 0. La tctica apenas es
efectiva.
sage: g=DiGraph(edges)
sage: g.add_vertices([20, 21])
sage: g.add_edges([(20,0), (21,0)])
sage: g.show(layout=circular)
sage: d = ranking(g)
sage: print [(p, v.n(digits = 3)) for p,v in d.items()]
[(0, 0.168), (1, 0.139), (2, 0.0848), (3, 0.0330), (4, 0.0866), (5, 0.148), (6, 0.230), (7, 0.0802),

7.9. Inflar el PageRank controlando los links que salen de tu pgina

289

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Crear circuitos cerrados que pasan por tu pgina


Sin embargo, si desde el vrtice 0 tb apuntamos a 20 y 21, la cosa cambia. Ahora los caminos aleatorios que alcanzan
0 se quedan ms tiempo orbitando no muy lejos de este nodo.
sage: g=DiGraph(edges)
sage: g.add_vertices([20, 21])
sage: g.add_edges([(0,20), (20,0), (0,21), (21,0)])
sage: g.show(layout=circular)
sage: d = ranking(g)
sage: print [(p, v.n(digits = 3)) for p,v in d.items()]
[(0, 0.224), (1, 0.117), (2, 0.0717), (3, 0.0302), (4, 0.0625), (5, 0.118), (6, 0.184), (7, 0.0671),

Secuestrar los caminos aleatorios que pasan por tu pgina


Siguiendo esta misma idea, eliminamos los links legtimos del nodo 0. Ahora todos los caminos aleatorios que llegan
a 0 pasan su tiempo en circuitos muy cortos que contienen a 0. Los links del nodo 0 a los nodos 4 y 6 permitan que
los caminos aleatorios escapasen de la rbita del 0, pero ahora la nica manera de salir es que intervenga el factor de
damping .

sage: g=DiGraph(edges)
sage: g.add_vertices([20, 21])
sage: g.add_edges([(0,20), (20,0), (0,21), (21,0)])
sage: g.delete_edges([(0,4), (0,6)])
sage: g.show(layout=circular)
sage: d = ranking(g)
sage: print [(p, v.n(digits = 3)) for p,v in d.items()]
[(0, 0.333), (1, 0.0738), (2, 0.0459), (3, 0.0248), (4, 0.0150), (5, 0.0603), (6, 0.0928), (7, 0.0413

290

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Lo mismo pero con un nodo peor conectado


Esta tctica aumenta el ranking de cualquier nodo, pero si era un nodo muy poco conectado tampoco hace milagros.
En este caso usamos slo un nodo extra, el 20, que es ms efectivo, y el ranking pasa de 0.04 a 0.16.

sage: g=DiGraph(edges)
sage: g.add_vertices([20])
sage: g.add_edges([(3,20), (20,3)])
sage: g.delete_edges([(3,2), (3,1), (3,5), (3,6)])
sage: g.show(layout=circular)
sage: d = ranking(g)
sage: print [(p, v.n(digits = 3)) for p,v in d.items()]
[(0, 0.111), (1, 0.105), (2, 0.0642), (3, 0.160), (4, 0.0640), (5, 0.112), (6, 0.167), (7, 0.0639), (

7.9. Inflar el PageRank controlando los links que salen de tu pgina

291

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

Si la pgina falsa tiene un link autntico que aleja el camino aleatorio de nuestro nodo, la tcnica se vuelve mucho
menos efectiva.
sage: g=DiGraph(edges)
sage: g.add_vertices([20])
sage: g.add_edges([(3,20), (20,3), (20,0)])
sage: g.delete_edges([(3,2), (3,1), (3,5), (3,6)])
sage: g.show(layout=circular)
sage: d = ranking(g)
sage: print [(p, v.n(digits = 3)) for p,v in d.items()]
[(0, 0.163), (1, 0.123), (2, 0.0753), (3, 0.0622), (4, 0.0861), (5, 0.138), (6, 0.207), (7, 0.0753),

7.10 Autmatas celulares


Un autmata celular consiste de:
un conjunto de celdas, cada una de las cuales puede estar activada, o no. Las celdas se pueden disponer en una
lnea, una cuadrcula, un grafo.
una regla de transformacin que dice cul ser el estado de una celda en el instante k+1 en funcin de los estados
de las celdas vecinas en el instante k .
Los autmatas celulares se cuentan entre los programas de ordenador ms sencillos posibles. La idea de Steven Wolfram es tomar todos los posibles autmatas celulares, sin pensar en qu representan, y estudiar su comportamiento.
Algunos de estos autmatas celulares evolucionarn de formas totalmente previsibles, pero otros producen patrones
muy intrincados.
sage: %cython
sage: from numpy import zeros
sage: def cellular(rule, int N):
...
Returns a matrix showing the evolution of a Wolframs cellular automaton
...
...
rule:
determines how a cells value is updated, depending on its neighbors
...
N:
number of iterations
...

292

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
...
...
...
...
...
...
...
...

cdef int j,k,numi


M=zeros( (N,2*N+1), dtype=int)
M[0,N]=1
for j in range(1,N):
for k in range(N-j,N+j+1):
numi = 4*M[j-1,k-1] + 2*M[j-1,k] + M[j-1,k+1]
M[j,k]=rule[ numi ]
return M

sage: def plot_rule(rule):


...
Plots the rule
...

...
plots = []
...
for j in srange(8):
...
regla = matrix(2,3)
...
digs = j.digits(base=2)
...
digs += [0]*(3-len(digs))
...
regla[0,0] = digs[2]
...
regla[0,1] = digs[1]
...
regla[0,2] = digs[0]
...
regla[1,1] = rule[j]
...
plots.append(matrix_plot(regla, frame=False, figsize=1)+
...
line2d([(0,0),(0,2.05),(3,2.05),(3,0),(0,0)],
...
thickness=1.5, rgbcolor=(0,0,0), axes=False)+
...
line2d([(0,0),(0,2.05),(3,2.05),(3,0),(0,0)],
...
thickness=1.5, rgbcolor=(0,0,0), axes=False))
...
return html.table([plots])
sage: plot_rule([0,0,0,1,1,0,0,1])

Un nmero que identifica una regla en la notacin de Wolfram, se convierte mediante num2rule en una regla que
pueda entender cellular .
El dibujo que realizamos es un matrix_plot , que pone el pxel (i,j) en blanco si la entrada (i,j) de la matriz es 1, y
lo pone en negro si la entrada de la matriz es un 0.
La regla por defecto es la Regla 110 , uno de los automtas celulares ms famosos.
sage: def num2rule(number):
...
if not (0 <= number <= 255):
...
raise Exception(Invalid rule number)
...
binary_digits = number.digits(base=2)
...
return binary_digits + [0]*(8-len(binary_digits))
sage: @interact
sage: def _( N=input_box(label=Number of iterations,default=100),
...
rule_number=input_box(label=Rule number,default=110),
...
size = slider(1, 11, step_size=1, default=6 ) ):
...
rule = num2rule(rule_number)
...
M = cellular(rule, N)
...
regla_plot = plot_rule(rule)
...
plot_M = matrix_plot(M, axes=False)
...
plot_M.show( figsize=[size,size])

7.10. Autmatas celulares

293

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

7.10.1 La regla 184 es un modelo del trfico


http://en.wikipedia.org/wiki/Rule_184
Algunas reglas son modelos de fenmenos del mundo real. En concreto, la regla 184 puede servir como modelo del
trfico en una lnea de celdas por donde se mueven los vehculos. Una celda est activa si y slo si contiene un vehculo.
Cada vehculo avanza a la derecha si no hay otro vehculo que se lo impida.
sage: rule184 = num2rule(184)
sage: plot_rule(rule184)

En el ejemplo de debajo, modelizamos dos carreteras que confluyen en una tercera, pasando por un semforo que se
abre alternativamente a una u otra carretera.
sage:
sage:
sage:
sage:
sage:
sage:

294

l1=30
l2=30
l3=30
turnos=150
#Las tres carreteras
c1 = zero_matrix(ZZ,turnos,l1)

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...

c2 = zero_matrix(ZZ,turnos,l2)
c3 = zero_matrix(ZZ,turnos,l3)
densidad1=0.8
densidad2=0.3
semaforo={1:10,2:10}
abierto=1 #semaforo abierto para c1 0 c2
resto=5
for j in range(turnos):
#actualizamos el semaforo: restamos un turno y cambiamos al llegar a cero
resto -= 1
if resto<=0:
#cambiamos el semaforo
abierto=2 if abierto==1 else 1
#reiniciamos el numero de turnos
resto = semaforo[abierto]
#actualizamos la carretera 1
#el primer punto es un 1 o un 0 con probabilidad = densidad1
c1[j, 0] = 1 if random()<densidad1 else 0
#el resto, excepto el ltimo, se actualizan con la regla 184
for k in range(1,l1-1):
numi = 4*c1[j-1,k-1] + 2*c1[j-1,k] + c1[j-1,k+1]
c1[j,k] = rule184[numi]
#actualizamos la carretera 2
#el primer punto es un 1 o un 0 con probabilidad = densidad2
c2[j, 0] = 1 if random()<densidad2 else 0
#el resto, excepto el ltimo, se actualizan con la regla 184
for k in range(1,l2-1):
numi = 4*c2[j-1,k-1] + 2*c2[j-1,k] + c2[j-1,k+1]
c2[j,k] = rule184[numi]
#actualizamos cerca del semaforo
if abierto==1:
numi = 4*c1[j-1,l1-2] + 2*c1[j-1,l1-1] + c3[j-1,0]
c1[j, l1-1] = rule184[numi]
numi = 4*c2[j-1,l1-2] + 2*c2[j-1,l1-1] + 1
c2[j, l1-1] = rule184[numi]
numi = 4*c1[j-1,l1-1] + 2*c3[j-1,0] + c3[j-1,1]
c3[j, 0] = rule184[numi]
else:
numi = 4*c1[j-1,l1-2] + 2*c1[j-1,l1-1] + 1
c1[j, l1-1] = rule184[numi]
numi = 4*c2[j-1,l1-2] + 2*c2[j-1,l1-1] + c3[j-1,0]
c2[j, l1-1] = rule184[numi]
numi = 4*c2[j-1,l1-1] + 2*c3[j-1,0] + c3[j-1,1]
c3[j, 0] = rule184[numi]
#actualizamos la carretera 3
#el resto, excepto el ltimo, se actualizan con la regla 184
for k in range(1,l3-1):
numi = 4*c3[j-1,k-1] + 2*c3[j-1,k] + c3[j-1,k+1]
c3[j,k] = rule184[numi]
#el ultimo se queda a cero, queriendo decir que sale del sistema

sage: plots=[]
sage: for j in range(turnos):
...
c=max(l1,l2)
...
M=matrix(ZZ,3,c+l3)

7.10. Autmatas celulares

295

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

...
...
...
...
...

M[0,(c-l1):c]=c1[j,:]
M[2,(c-l2):c]=c2[j,:]
M[1,c:]=c3[j,:]
plots.append(matrix_plot(M, axes=False))

sage: a=animate(plots, axes=False)


sage: a.show()

Reglas totalistas con tres colores


Exploramos ahora las reglas con tres colores (negro: 0, gris: 1 y blanco: 2) que tienen la siguiente propiedad adicional:
el estado de la celda depende slo de la suma de los colores de las celdas vecinas.
sage: %cython
sage: from numpy import zeros
sage: def cellular2(rule, int N):
...
Returns a matrix showing the evolution of the totalistic 3-color automaton
...
...
rule:
determines how a cells value is updated, depending on its neighbors
...
N:
number of iterations
...

...
cdef int j,k,numi
...
M=zeros( (N,2*N+1), dtype=int)
...
M[0,N]=1
...
...
for j in range(1,N):
...
for k in range(N-j,N+j+1):
...
#color contiene la suma de los tonos de las celdas vecinas
...
color = M[j-1,k-1] + M[j-1,k] + M[j-1,k+1]
...
M[j,k]=rule[ color ]
...
return M
sage: def num2rule2(number):
...
if not (0 <= number <= 2186):
...
raise Exception(Invalid rule number)
...
ternary_digits = number.digits(base=3)
...
return ternary_digits + [0]*(7-len(ternary_digits))
sage: @interact
sage: def _cell2( N=input_box(label=Number of iterations,default=100),
...
rule_number=input_box(label=Rule number,default=1038),
...
size = slider(1, 11, step_size=1, default=6 ) ):
...
rule = num2rule2(rule_number)
...
M = cellular2(rule, N)
...
plot_M = matrix_plot(M)
...
plot_M.show( figsize=[size,size])

296

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

genindex
search

7.10. Autmatas celulares

297

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

298

Captulo 7. Bloque VI: Miscelnea

Miguel Angel Cifredo Campos


macifredo@gmail.com

ndice

A
add_edge, 130
add_vertex, 130
ajuste de un modelo, 227
all, 33
ambient_vector_space, 90
any, 33
argumentos de una funcin, 22
arrow, 181
assume, 152
assumptions, 152

B
basis, 92
basis_matrix, 92
binomial negativa, 139
booleano, 9
break, 22

C
cadena de caracteres, 12
cardinality, 110
CartesianProduct, 112
CDF, 89
colector de basura, 8
coma flotante, 9
Combinations, 111
CompleteGraph, 123
complex_roots, 85
contour_plot, 174
coordinates, 92
coste amortizado, 55
cputime, 51
cuadro de cdigo, 5
cuadro de texto, 5

D
dblquad, 189

degree, 90
del, 8
delete_edge, 130
delete_vertex, 130
derivative, 159
dict, 45
digits, 77
digraphs, 123
distribucin binomial, 213
distribucin de bernouilli, 213
distribucin de Poisson, 216
distribucin geomtrica, 216
distribucin normal, 219
docstring, 24

E
echelon_form, 93
eigenspaces, 97
eigenvalues, 97
elif, 18
else, 18
estado fundamental en malabares, 249
excepcin, 26
Exception, 26
expresin simblica, 9, 145
extraccin aleatoria de una distribucin, 216, 221

F
factor, 78
fast_float, 155
find_fit, 228
find_maximum_on_interval, 166
find_minimum_on_interval, 166
find_root, 149, 166
float, 11
fmin, 188
for, 19
forget, 152
299

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

funcin, 22
funcin recursiva, 28

G
generador, 34
Graph.plot, 123
graphs, 123

H
hash, 47
histograma, 222

modelo, 227
Monte Carlo, 137
muestra, 227

N
nmero entero, 9
nmero racional, 9
next_prime, 78
numerical_integral, 161
numpy, 66

oo, 157

if, 18
image, 93
implicit_plot, 174
in, 15
Infinity, 157
int, 11
Integer, 11
Integers(m), 82
IntegerVectors, 112
integral, 159
is_connected, 132
is_eulerian, 132
is_irreducible, 86
is_isomorphic, 133
is_planar, 132
is_prime, 78
is_tree, 132

J
join, 15
jordan_form, 97

parmetros, 227
parametric_plot, 195
parent, 82
particiones, 108
Partitions, 112
Permutations, 112
Piecewise, 170
plot, 162
plot3d, 173
plot_vector_field, 182
point2d, 162
polar_plot, 199
polynomial, 147
PolynomialRing, 84
powerset, 106
precedencia de operadores, 6
prime_range, 78
profiler, 61
pseudo-aleatorio, 141
python, 5

kernel, 93

QQ, 89
QQbar, 89

latex, 210
len, 33
limit, 157
line2d, 162
lista, 14

M
mtodo, 10
malabares en modo canon, 276
malabares en modo sncrono, 276
matrix, 93
max, 33
media y varianza de una distribucin, 215, 216, 219
min, 33

300

R
raise, 26
randint, 139
random, 141
random_element, 110
range, 14
rango, 12
RDF, 89
real_roots, 85
RealNumber, 11
reduce, 31
region_plot, 184
relacin simblica, 148

ndice

Miguel Angel Cifredo Campos


macifredo@gmail.com

Laboratorio de Matemticas, Release 2010/2011

return, 22
roots, 85

Z
zip, 46

S
scipy.integrate, 189
scipy.optimize, 188
semilla de nmeros aleatorios, 141
servidor web, 5
Set, 110
set, 42
set_random_seed, 141
solve, 149
SR, 89
srange, 14
subcadena, 12
Subsets, 110
subspace, 90
subspace_with_basis, 92
subtract_from_both_sides, 148
sum, 33
suma de series (sum), 158

T
Tabla de verdad, 21
taylor, 180
time, 51
timeit, 51
tipado dinmico, 9
tipo de dato, 9
tupla, 13

V
var, 145
variable dependiente, 227
variable independiente, 227
variable simblica, 145
variables, 7
vector, 89
VectorSpace, 89

W
walltime, 51
WeightedIntegerVectors, 112
while, 20

X
xgcd, 80
xrange, 34
xsrange, 34

Y
yield, 36

ndice

301

Miguel Angel Cifredo Campos


macifredo@gmail.com

ENLACES

Asesoras de matemticas: http://math2me.com/


Clculos matemticos online: http://www.portalplanetasedna.com.ar/calculo_matematico.htm
El teorema de Talor: http://www.mat.uson.mx/eduardo/calculo2/soltaylor/soltaylorHTML/taylor.htm
Graficador de funciones matemticas: http://fooplot.com
WolframAlfa: http://www.wolframalpha.com/input/?i=log%28x%29+%2B+%283%2F2%29
Resolucin de funciones: http://www.mathway.com/
Mtodos numricos en Python: Bisecciones sucesivas:
http://phisycsandgnulinux.site11.com/2010/03/20/metodos-numericos-en-python-bisecciones-sucesivas/
Mtodo de Maclaurin: http://publiespe.espe.edu.ec/academicas/problemas-de-calculo/polinomio2.htm
Resolver ecuaciones online: http://es.solvemymath.com/calculadoras/algebra/resolver_ecuaciones.php

Anda mungkin juga menyukai