Clculo Infinitesimal
y Numrico
Departamento de Matemtica Aplicada 1
PRIMERO
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.
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:
Teorema de Rolle
El teorema de Rolle dice lo siguiente:
Si:
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
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.
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).
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:
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:
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:
Se puede probar que las tres sucesiones convergen al valor de la nica raz del intervalo:
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 .
.
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.
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:
La solucin es:
O visto de otra manera, vemos que en la grfica de
la derivada existen valores entre -1 y 1:
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.
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.
ba
21
= n+1
2n+1
2
21
2
x1 = a1
b1 a1
= 10 75.
2
b2 a2
10 75 10 5
= 10 5 +
= 10 625.
2
2
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.
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,
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)|
Por tanto,
es una aproximacin de
x4 = 10 73205080756888
3 con 14 cifras decimales exactas.
# 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);
****************************
# 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);
****************************
#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!"
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"
#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
# 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
#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
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"
!
"#
$ ! %!
& ( *! +(
* ) )!
<
= *! !
) )!
= & *! !
!
.
,
= ! +
+
( ! +(
! ( ! +(
!
) ) '!
'!
= !
= +( )!
*
/
( )
=
( )
*)
(
(
*)
= ( )
/
1
/
/
= +( )!
!
0
( ) 2 "( )
( )!
= "( )
/
-
(34
+( )!
= "( )
0
)
+( )
!
= "( )
( !
= ( )
(
0
)!
! = "( )
!
= +( )!
-
)!
!
= "( )!
!
.
= ( )
( ! +( ) )
!
6
!6
! !
= "( )
+!
7
-
= +( )
!
,
/
,
= "( )
!+
:
!
+
(
*)
= (
= & *!
!
!
#)
!
$ *! ! % =
#'
* ) %!
$ ! (
) %!
! $# ! (
(
(
!
!
2 $ $ *! (
+
<
= " !!
* = *! # = ! +
-
)%% !
)!
)=
=*
7 0!
( )=
, !
#
(
"( ) =
=*
& *! !
!# '
"
6
(
;;?
)!
! "( ) =
!
:
/
( )!
>
)!
,
= ( ! @! A! )
= ( B! + ! ! )
! =
"( ) = B + ( + )
"
)= (
/
= "( )
! -
*
@
= *! !
)!
;
A
!# !
-
!-
) .
-
+ ( )
"(
+ ( )
( )
0
= "( )
6
C
(
!
!
6
)
6
6
"( ) =
) .
"(
)= (
( )!
!
:
% = !
=( (
1
/
7
* )!
)!
! (
! ! # )
> :
!
)) + %
>
!
>
!
;?
0>
= "( )
= ( *!
= "( )!
,
)
(-
!
(
! -
)!
( !
! +
( )=
"( ) =
( ) +
"( )
3
!
(
8
-
<
)!
!-
#+
.
>
#
.
= & *! ! !
0
(
-
#'
0
+
! &!
)+
#+
#+
!
( )
=
(
(
*)
#)
=( (
* )!
)!
! (
# ) )!
= ( )
,
#+
( )=
6+
!
)C
!
"( ) =
( )
=*
"( ) =
#
#
=
= ( *!
-
# )!
"( ) = ( )!
= & *!
7
(
#'
= ( )
!
6
#+
8
/
)
1 +
"# !
= & *!
" 5
#'
#+
& *!
#'
C
)
) 5
#+
$ *!
$ *! # %
!
(# + )
( ) = "( ) +
()
( # + )F
"( ) =
*)
#%
#)
= *! !
( ) =
!#
$ *!
#%
) 3
"( ) =
= ( *!
#
#
#)
"( ) =
!
#
#
#
#
*
#
#
G = ! G! + -
#+
>
#
#
HGH =
&)
(&!
'&=*
H G H *!
!
= G
( )
= ( *!
#)
( ) "( )
= ( )!
( ) = ( ) "( ) ) (
)
)
(I
#)
!+ +
!
<
> = K( ) )! + 0
<
*)
(# + )
;)
#+
J (
#)
( )
0
0
#
#+
)(
( # + )F ) +
(
#+
>
!
#+ !
#+
J *!
= ( )
#+
= KK( )
> -
** !
J ( )J
> = K( )
-
<
<
*!
( )J (
( )=*
F) +
0
7
*
*)
!
#
) (
"( )!
#)
!
#!
C
(# + )
*)
() =
(# + )
(# + )
( ) ( # + )F ) = *!
(# + )
)=
/
,
( ) * ( # + )F ) !
()
( # + )F
(
;)
= ( )!
( ) = *!
= ! +
)!
+
-
#
= & *!
5
"( ) =
! ' +
*+
+
*
= *!
* =*
+
@
+( )
*
"( ) =
.
=
( )
$ *! % !
"( )
$ *! % !
!
( ) "( ) =
!
-
()
;F
( ) !
$ *! %
"
( ) "( )
5
-
=*
*
"
"
= *! ! !
! & *! ! * '!
( )
!
( " ) ( ) " A
* B
+
$ *! % ! -
:
E
( " ) ( ) " A
(
>( ! ) =
()
;F
$ *! % +
$ *! %
( )
$ *! %
>
.
-
=** B
AJM
:
= >( ! ) +
>
/
(+
:
6
6 /
6=
=** B
!
-
6
-
= ( ) /
!
+
= "( )!
3
6 >
!
6!
- 0
$
=
.
,
( ) +
@!
$ *! % !
= "( )
/
!
$ ! B% ! +
> )+
!-
E -
; .
= "( )
5
(
= N( )
"
( ) = N( ) N)! I
F
! /
+
= "( )
+
+
!
E
(# + )
( ) "( )
-
( )
()
( # + )F
( ) !
= & *!
( ) = (
!
#'
*)
#)
$ ! %!
( )
(
>
$ ! %
)+
,
+
(# + )
>
( ) " ( # + )F !
!+
(# + )
( )
%
E
"( )
,
"( )
+
!
( ) =
( )
@! + /
;!
"( )!
$ *! % !
& *! ! * '
AJM
:
"
@ 3
"( )
( + " ) ( ) " A
-
$ *! %
!
0
= "( )
( !
( ) + ( )! +
*** ( )
/
= K?
/
)
P
!
+ ! +
>
G !
"
= !
>
!
,
= & ! ! ;! @! B '
G =
;
@
B
"
;
@
B
;;
@;
B;
;@ !
@@
B@
( )=
>
( )
= @;?;A
= "( ) -
( )
"( )
!
(
+
"( )
!
- N( ) =
"( ) = N( )
N( )
!
= *! !
#!
! #!
.
.
/
= "( )
#! -
, ( )! + -
,( )
"( )
+!
=
#
"( ) =
,( ) =
,*( ) +
, ( )+
,#( )
=*
,( )
&=
, ( &) =
!
&
*
+ -
C
#
) "( )
) "
"( ) =
"
,*( ) +
,( )+
,( )=
,#( ) =
*+
* =
*)
)(
*)
)(
#)
#)
!
#
,( ) =
&=*
( ) = (
,( ) =
( )
# +
( )
,( ) =
( )
( )
*)
&
&
&
#)
( )
( )
, ( &) =
( &)
( &)
*
( &)
,( )
= *
"
!
!
"
,( )
& ( *! * )! ( !
= "( )
#
,( ) =
=*
, -
"
#= !
,*( ) =
(
(
= & *!
)(
)(
, ( )=
(
*
)(
)(
*)
*)
#)
/
)
*)
*)
.
(
*)
*)
'
*)
*)
+ , ( )=
& *!
#)'
' +
"( ) =
#!
# (
(
(
! (
( )
=*
)!
!+
( )
"( ) =
""
= & *!
! ' +
"( ) = *
*
@!
"
& *! ! * '!
( )
(* )
( )
( *) ( )
( *)
+ *
( *)
,( )
.
!
!
!
!
"
"#
)!
, ( )!
P
/
/
.
"( )
+-
"
>+
+-
,( )
!
!
"#
>
( +/
)
( +-
E Q
"&
= & *!
! '
N( ) =
*
( )
+ *
(* )
( *) ( )
,
(
& ! *! '!
! N( )
( *)
+
( )
( *)
,( ) +
=
!
$ *! % )
>
E Q
.
E Q
.
$ ! %!
+
! ! +
= ( )!
=& !
+ !
.
= ' = & *!
#'
!
#
( )
+.
,( )
+ .
,( )
=*
=*
/
(# + )
()
( # + )F
*)
#)
"
+
= ( )!
,( )
= *! !
( )
= ( )
!#!
#
( )
( ) =
*)
)+
#)
@)
=*
# 0
#=
.
+
+ #=
E Q
#= !
"$
( )
( )+
@)
( )!
( );
KK( )!
< <
,*( )
,( )
KK( )
'
( )( )
( );
A
'
!
6
+
+
*=
( )( )
6
=
=
+
,
= ( ) <( ! ! ) = !
+
$ ! %!
!
,
"( ! ( ) ) + N( ! ( ) )!
:
5
.
#+
( )
( )+
( ) + ( ) + .! !
.!
5
=& !
( )
KK( ) = 4(
R
,
"#
?B
+ ! '!
( ( ) + ( + )) +
.! =
"
?)
=( )"
( ( + ) + ( )) =
!
( ( )+
( + ) + ( ))
:
:
5
!
>
!
,
!
(
)-
<( ! ! )
= & *!
9
0
/
>
-
"%
=&
! #=
*= !
#= !
=
+ !
'
.
E Q
E Q
@)!
= '!
( )
*)
)+
)!
(@)
( )!
M*
,*( )
=
( )
>
4(
( )
( )
( )
,( )
4(
( )
=
( )( )
,( )
< <
. :
5
/
=
-
<( ! ! )
, (
>
>
>
! "( )! )
; .
#+
( )
( )+@
( ) +
( ) + ( ) !
+
.! =
(@)
( ) = 4(
<
& *! ! * '
"(
= & *!
5
!
! ' +
>
( )
! '
"
( )
(*) +
+ ()
.!
< * AB
! '
"
( )
- "
-
(*) + @
+ ()
B?*
5
.!
";=
-
!,
( " )B
< *
M*
*M@ !
;3
E Q
E Q
P
- !
.
= "( ) =
( )
E Q
= "( )
E Q
"( ) 2
*)
*)
)+
"( ) =
*)
= *! !
(
!#
#)
"( )
!
-
"( )
"( ) =
"
) 5 "(
) "
*)
)=
"(
*+
E Q
*) !
+ ,
(
*)
"(
*)
$ *!
-
*)
E Q
+ (
%!
)=
$ *!
$ !
&%
$ *!
!
( &) ( )
&
&
&
! $ ! &!
3%
% +
$ ! &!
3% =
$ &!
3%
3
3
,
$ !
&%
"
!
$ *!
3% =
$ !
3%
$ *!
3
"
6!
*!
(
$ %= ( ) =
!
*% =
= $ *!
O
)=
"(
= $ *!
*%
+ $ *!
$ !
% =
*)
% $ *!
%(
*%
+ $ *!
*)
%(
*)
& ( *!
+ $ *!
)!
"( )
&
"( ) 2
*%
)- C
= $
% $
% =
(
-
!
*= $
;) "
#%
* )!
( !
*)
)!
! (
#!
#)'
#)
!
#
"( ) = $
*%
$ *!
%(
*)
)!
# 0
)!
$ *!
% =
) + ;)
$ !
!
!
% $ *!
%
!
= ! !
!#
-.
.
& ( *!
* )!
( !
)!
! (
#!
!
-
$ %
*
$'%
$ '' %
%
$ *!
$ !
$ !
;
$ *!
;! -
5
/
;%
;%
;%
+
-
%
$ !
"( ) 2
$ ''' %
$ *!
E Q
#)'
*)
0 C
(
*)
(
;! +
@
*)
)+
*)
) ( )! + ( *) ( ) (
)(
= $ *!
)(
;%
! +
;)
5
<
#+
)!
+-
#+
#+
,
#!
!
$#( ) !
P
$# + ( ) 6
#+ !
$# + ( ) = $#( ) + $ *!
"
!
-
#+
%(
*)
#)
#+
8
"
( @!
1
= $ *!
$ %
;!
@)
@%
$'%
$ '' %
$ ''' %
$ '@' %
$ *!
$ !
$ !
;
;!
;!
$ *!
>
)!
;!
@%
@%
@%
@%
(
.
;%
1
E
$ !
$ !
;%
;%
$ ;!
"
+
+-
E Q
0
&"
= & *! " ! ' +
5
,
E Q
$ %
*
$'%
*
*
;; 3
E Q
"( ) 2 * +
1
-
0 C
$ '' %
>
*
*
& *! ! * '! -
( *) +
( *)
@+
!
/
-
!
*
+ !
= !
#
+# !
&
+
&
+&
) = (& )
$ ' %!
$ '' %!
;
$ ''' %!
$' '%
!
E Q
>
6
+ "
& *!
# '!
3 (
(3 )
(3 )
-.
.
6
*
;@
>
1
8
; @!
E Q
;@
( 8
)! +
"
(; ) (
= ;F
"
$ *!
% =
E Q
E Q
= ( # *) " #
&&
#
"( ) =
T
=
*)
& ( *!
* )!
( !
)!
! (
( ) )
#!
# ) '!
"
!
$ ! %!
E Q
=( )"
"( ) =
*+
( ) +
! +
& *!
( ) (
&#
= & *! ! ' +
& *! ! * '!
'!
!
& *!
'
=" !
0 C
*
*=
*
*
1
;B 3
& *! ! * '
1
;;
E Q
*
=*
1
="
+
"( ) =
"
II #
; B!
*+
"
( *) +
F ( " )
( *)
'
FF
@7
9
-
/
-
,
+
-
"
0
!
#
=
"( ) -
"( ) = * ;@* * A
+* *
+ * *@ ?
+ * **** B*
+ * ;* *
= "( )
!
$ ! %
( )
M *
* B**
* ** ;M
* ;
*M
*M +
!
:
AJM
:
3
- !
/
= "( )
"( ) (
)
$ ! % !
/
:
0-
+ "( )
$ ! %
;*
E
( 0
!
- P )! + -
'
!
+
>
, !
,
#"
( )=
$ ! % ! +
= ( ) +
>
"( ) = MB M
+* B *A
* MA * ?
O
* @ *B
M
;
*;
"( )
+*
?B
*
+*
@ ;!
*A
+A B
+
-
$ ! %
= "( ) (
!
:
/
6
= ( )
/
!
= "( )
"
>
>
)+
!
/
/
@;
"( +
) + "( )
$ ! %
$( ) >
-
/
3
6! + -
( )=
!
$
0 -
"( +
!+-
- +
&
<
+
-
(+
"
<
. 7
!+ !
(+
@@
( )=
<
@@
<
( )=
$ ! %
<
-0 1 0
2
5
( ) = (
>
(# + )
( ) "( ) =
()
( # + )F
*)
!
(
#)
( )
"
( )
>
(
-
P )
+ )
#
= *! !
+
,
"( +
)!
!#
( )=
<
-
$ ! %
!-
/
!
7 0!
!
"
!
!
+
,
,
/
!
(
<
>
6
!
;;
3
9
,
,
6+
>
+
>
- P
'
- P
<
8
0 !
-
+
5
+
>
>
,
5
!
!
E Q
<
!
.
+
0
>
>
.
,
-
!
+
!
! P
6
6
3
>
!
(
>
0
)
/
+
-
"
-
!6
(
!-
)
= & *!
>
)
0
#'
8
(
!
)
!
!
+!
/
(
;@
)!
+
O!
+
-
>
6)!
(6
!+
B 7
CU
9
0
!
!
!!
>
>
,
/
"
8
6
#
VU
E
!
+V
"
, !
>
1
< U ( ** )!
, !
>
>
+
!
!
>
!
6
8
,
(
W >
E
(0
)!
!
V
;B
.
..
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
.
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
.
Interpolaci
on Polinomial
.
2/27
on
. Introducci
.
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
.
Interpolaci
on Polinomial
.
2/27
.
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.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos
Interpolaci
on Polinomial
.
3/27
on
. Introducci
.
.
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
P2 (1) = f (1) = 1,
P2 (2) = f (2) = 7.
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
.
.
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
.
.
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
.
.
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
.
.
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:
..
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
.
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
.
.
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.
...
...
.
.
(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
.
.
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
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
.
.
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
.
.
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
7
98
P3 (x) = x 3 + 16x 2 x + 19.
3
3
}
3
, ,
.
4 2 4
.. Dar una estimacion del error que se comete al aproximar el valor de f (2)
por P(2).
.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos
Interpolaci
on Polinomial
.
13/27
on de Lagrange
. Interpolaci
.
.
Inconvenientes
..
No es proceso dinamico:
si a
nadimos un nuevo punto al soporte,
hay que comenzar de nuevo todo el
proceso.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos
Interpolaci
on Polinomial
.
14/27
on de Lagrange
. Interpolaci
.
.
Inconvenientes
..
No es proceso dinamico:
si a
nadimos un nuevo punto al soporte,
hay que comenzar de nuevo todo el
proceso.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos
Interpolaci
on Polinomial
.
14/27
on de Lagrange
. Interpolaci
.
.
Inconvenientes
..
No es proceso dinamico:
si a
nadimos un nuevo punto al soporte,
hay que comenzar de nuevo todo el
proceso.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos
Interpolaci
on Polinomial
.
14/27
on de Lagrange
. Interpolaci
.
.
Inconvenientes
..
No es proceso dinamico:
si a
nadimos un nuevo punto al soporte,
hay que comenzar de nuevo todo el
proceso.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos
Interpolaci
on Polinomial
.
14/27
on de Lagrange
. Interpolaci
.
.
Inconvenientes
..
No es proceso dinamico:
si a
nadimos un nuevo punto al soporte,
hay que comenzar de nuevo todo el
proceso.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos
Interpolaci
on Polinomial
.
14/27
on de Newton
. Interpolaci
.
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
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 ] =
.
Coecientes del Polinomio Interpolador
..
En el polinomio interpolador Pn (x), cada coeciente ck es la siguiente diferencia
dividida de orden k:
.
.
Interpolaci
on Polinomial
.
16/27
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 ] =
.
Coecientes del Polinomio Interpolador
..
En el polinomio interpolador Pn (x), cada coeciente ck es la siguiente diferencia
dividida de orden k:
.
.
Interpolaci
on Polinomial
.
16/27
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 ] =
.
Coecientes del Polinomio Interpolador
..
En el polinomio interpolador Pn (x), cada coeciente ck es la siguiente diferencia
dividida de orden k:
.
.
Interpolaci
on Polinomial
.
16/27
.
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
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
.
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
.
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 ]
.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos
Interpolaci
on Polinomial
.
18/27
.
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
.
Ejemplo 4:
..
x
y = f (x)
xi
f [xi ]
1
0
3
1
4
1
5
Tabla de Diferencias Divididas:
2
2
3
.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos
Interpolaci
on Polinomial
.
18/27
.
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
.
Ejemplo 4:
..
x
y = f (x)
xi
f [xi ]
1
0
3
1
4
1
5
Tabla de Diferencias Divididas:
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
.
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
.
Ejemplo 4:
..
x
y = f (x)
xi
f [xi ]
1
0
3
1
4
1
5
Tabla de Diferencias Divididas:
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
.
Ejemplo 4:
..
x
y = f (x)
xi
f [xi ]
1
0
3
1
4
1
5
Tabla de Diferencias Divididas:
2
5/6
1
2/1
5/6
5/2
3/1
P3 (x) =
.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos
Interpolaci
on Polinomial
.
18/27
.
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
.
.
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos
Interpolaci
on Polinomial
.
19/27
.
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
.
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
.
yi = yi+1 yi ,
k yi = (k1 yi ).
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
.
yi = yi+1 yi ,
k yi = (k1 yi ).
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
.
x
y = f (x)
x0
y0
x1
y1
x2
y2
...
...
xn
yn
(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
.
x
y = f (x)
x0
y0
x1
y1
x2
y2
...
...
xn
yn
(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
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
.
.
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
.
.
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
.
.
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
.
.
Diferencias nitas
..
.Todos los Soportes son regulares
.
M.Cruz L
opez de los Mozos / Maite Gonz
alez Montesinos
Interpolaci
on Polinomial
.
27/27
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.
Captulo 1
Definiciones
1.1.
Clasificaci
on de errores
1.2.
Clasificaci
on de problemas
1.3.
1.3.1.
Decimales significativos
Notaci
on
A
.
A
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
1.3.3.
1.4.
Representaci
on interna de n
umeros reales
1.4.1.
(1.4.2)
Conversi
on entre dgitos decimales y binarios
(1.4.3)
(1.4.4)
(1.4.5)
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
=
=
=
=
x1 + x1
x2 + x2
y + y
x1 op x2
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)
(2.1.3)
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
(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)
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
Figura 2.1.1: Gr
afica general de un proceso unitario
Figura 2.1.2: Gr
afica general de un proceso binario
+
+
+ U3
=
Z
Z
Z
Z
rZ =
rZ
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
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
2.1.5.
Condici
on del Algoritmo
FGA
CP
(2.1.13)
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
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
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
S =
P =
X
i=1
n
X
ai
(2.2.1)
ai
(2.2.2)
i=1
S = P + P
P |S[n + 1] S[n]|
P an+1
(2.2.3)
(2.2.4)
(2.2.5)
11
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)
x1 = 0, 000005 = 0, 5 105
x2 = 0, 000005 = 0, 5 105
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
x
)
2
1
= 3 109
y[1] = sen(x1 )
2
De forma que el resultado final sera: y = 0,000083843 0,000000003.
12
2.3.
Errores de Redondeo
A = 0,1234567 100 0,00001234567 104
= 0,4711325 104 0,4711325
B
104
= A + B
= 0,47114484567 104
13
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
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
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
3 4 5
2 3 4
=
4 5
( 23 )
1
3
2
3
3.1.3.
3 4
2 3
= LU =
1 0
2
1
3
3 4
0 31
Norma Vectorial
(3.1.1)
>
=
=
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
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
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
=
=
=
=
b A
x
A(x x)
x x
e
(3.2.1)
(3.2.2)
(3.2.3)
(3.2.4)
17
3.2.3.
3.3.
Propagaci
on de los errores de redondeo
Refinamiento Iterativo
3.3.1.
Definici
on
(3.3.1)
(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
3.3.2.
N
umero de condici
on de la matriz
kxk
k
xk
(3.3.3)
kxk
k
xk
(3.3.4)
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
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
xi
aij xj
+ xi
bi
aii
j=i+1
j=1
(3.4.4)
3.4.4.
An
alisis de los m
etodos iterativos
CJ
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
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)
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
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)
4.1.
M
etodo de la bisecci
on
ak + b k
2
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
4.1.3.
Error de redondeo
4.1.4.
Convergencia
(4.1.2)
23
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
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
4.2.2.
Convergencia
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
4.3.
M
etodo del punto fijo
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
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
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
4.3.2.
Convergencia
(4.3.4)
4.3.3.
(4.3.5)
=
=
=
=
g() + (xk )g 0 ()
g() + (xk )g 0 () g()
(xk )g 0 ()
ek g 0 ()
= g 0 ()
27
4.3.4.
Error de truncamiento
xk+1
xk+1
xk+1
(1 g 0 ())(xk+1 )
=
=
=
=
4.3.5.
Error de redondeo
|xk+1 |
|xk+1 xk | +
1K
1K
(4.3.8)
(4.3.9)
(4.3.10)
28
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
4.5.
M
etodo de la secante
F (xk ) F (xk1 )
xk xk1
(4.5.1)
(4.5.2)
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
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
(5.1.1)
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
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
(6.0.1)
j=0
6.1.
Cuadrados mnimos
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
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
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 )
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
6.1.3.
Polinomios
C1
zj
C0
6.2.
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
6.2.1.
bk+j+1 ak+j+1
j+k+1
(6.2.2)
Ejemplo
6.2.2.
f (N +1) ()
(M +1)!
f (N +1) ()
(x x0 )...(x xM )
(M + 1)!
(6.2.3)
Polinomio de Taylor
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)
N
X
fk LN k (x)
(6.2.6)
k=0
36
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) =
16x2 + 16x 3 +
2
2
1
1
4
pL (x) = 16x2 ( 1) + 16x(1 ) + ( 3)
2
2
2
37
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
j=1
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
6.2.5.
Interpolaci
on de Hermite
M
X
fj HM j (x) +
j=0
M
X
M j (x)
fj0 H
(6.2.7)
j=0
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
6.2.6.
Fen
omeno de Runge
(6.2.9)
40
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
f (x)dx
a
7.2.
N
X
Hf (xi )
(7.1.1)
i=0
Rect
angulos
I RH =
N
X
i=1
RH = H
h
H f (xi )
2
N
X
fi h
2
i=1
41
7.2 Rectangulos
7.2.1.
Errores
N
X
Ii nIi
i=1
xi
Ii =
xi1
H
f (xi ) f (x) dx
2
H
H
H
f ()
H
) + f 0 (xi )(x (xi ) +
(x (xi ))2
2
2
2
2
2
= 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
7.3 Trapecio
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+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
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
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
7.5.1.
FH1 SH2
1 2P
(7.5.3)
Ejemplo
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)
7.5.2.
F
ormula general
F (h) = a0 + a1 hp1 + a2 hp2 + a3 hp3 + . . .
(7.5.8)
FK (H) FK (qH)
; FN (H) = a0 + aN hPN
qP k 1
(7.5.9)
45
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
7.6.1.
Cerradas
(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)
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
3h5 (4)
3H
[f0 + 3fi + 3f2 + f3 ]
f ()
8
80
(7.6.6)
7.7.
3H
3h3 00
[f0 f1 ] +
f ()
2
4
(7.6.8)
M
etodos de cuadratura
f (x)w(x)dx
(7.7.1)
7.7.1.
M
etodo de coeficientes indeterminados
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
Z
f0000 x2
=
(x x0 )3 dx
3! x0
x
f0000 (x x0 )4 2
=
3!
4
x0
=
2H
f0000
D2 =
48
4H 5
15
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
(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
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
Captulo 8
Diferenciaci
on Num
erica
8.1.
8.1.1.
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)
(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)
8.1.2.
Centrada
(8.1.5)
(8.1.6)
8.1.3.
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)
De manera que esta derivada tiene orden de precision 2, y el error de truncamiento es O(h2 ).
8.2.
8.2.1.
+
(8.2.2)
2
6
24
f (x0 + h) = f (x0 ) + f 0 (x0 )h +
53
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
Captulo 9
Resoluci
on num
erica de
ecuaciones diferenciales ordinarias
9.1.
y(0) = y0
(9.1.1)
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
9.2.
M
etodo de Euler
(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)
9.2.1.
M
etodo de Taylor
9.2.2.
M
etodos implcitos
9.2.3.
M
etodos de Runge-Kutta
9.2.4.
M
etodos multi-paso
9.2.5.
Extrapolaci
on de Richardson
9.2.6.
Sistemas de ecuaciones
9.2.7.
Problemas rgidos
y(0) = y0
(9.2.4)
9.3.
9.3.1.
M
etodo directo centrado
9.3.2.
Condiciones de contorno
9.3.3.
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
(9.3.1)
57
9.4.
9.4.1.
M
etodo de Taylor
9.4.2.
M
etodo de Newmark
9.4.3.
M
etodo de N
ystrom
58
CALCULO
DIFERENCIAL
Lmites laterales
Polinomios de Taylor
Series de potencias
Teorema de Taylor
Algoritmo de biseccion
Metodo de Newton-Raphson
Teorema de Rolle
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
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.
xc
xc
xc
xc
xc
limxc f (x)
f (x)
]=
, siempre que limxc g(x) 6= 0.
g(x)
limxc g(x)
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
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
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
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.
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.
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.
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
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.
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
xc
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 ).
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
xa
f (x) f (a)
f (a + h) f (a)
= lim
,
h0
xa
h
h0
f (x + h) f (x)
.
h
df
d
(f ) es una notacion para indicar f 0 . Asimismo, otra notacion para f 0 (a) es
(a).
dx
dx
f (x) f (a)
)
f (a)
xa
geometrica
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
y = f (x)
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)).
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).
Las anteriores propiedades nos permiten elaborar la siguiente gua para determinar los intervalos donde una funcion derivable es creciente o decreciente.
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.
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 .
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.
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
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.
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) 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.
f 00 (c)
f (n) (c)
(x c)2 + +
(x c)n
2!
n!
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.
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
X
n=0
a n xn
g(x) =
bn xn
n=0
(1) f (kx) =
a n k n xn
n=0
(2) f (xm ) =
an xnm
n=0
(an bn )xn
n=0
(4) f (x)g(x) =
n
X
n=0
m=0
!
am bnm
xn
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.
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
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).
y6
f (b)
(b, f (b))
p1
p2
f (a)
(a, f (a))
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:
|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 )| < .
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 )
y
b
y=x
6
g(p) = p
y = g(x)
a
-
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 }.
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
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
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 )
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)!
Ln,k (x)
6
x0
x1
xk
xk+1
xk1
xn
xn1
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) =
entonces P es el polinomio interpolante de Lagrange de grado menor o igual que k que interpola a f en x0 , x1 ,
. . . , xk .
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
f (xi ),
f [xi+1 ] f [xi ]
,
xi+1 xi
f [xi+1 , . . . , xi+k ] f [xi , . . . , xi+k1 ]
xi+k xi
3.
k = 0, 1, . . . , n.
DE LOS CONOCIMIENTOS
ACTIVIDADES DE APLICACION
2
+1
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.
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 .
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.
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.
x0
ln(1 + x) ln(1 x)
x
Figura 2.10: Ventana del programa que nos permite calcular lmites de funciones.
Seguimos los mismos pasos que en el ejemplo anterior. Introducimos la expresion #e^(2x+1) y seleccionamos
Figura 2.11: Ventana del programa que nos permite derivar funciones.
Figura 2.12: Ventana del programa que nos permite desarrollar y simplificar expresiones.
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
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).
9n4 n + 3
.
(a) Calcular el lmite lim
n0 2n2 + 3n 1
(b) Calcular el lmite lim (1 x) tan(
x1
x
).
2
4.4. Bibliografa
C. Paulogorron y C. Perez. Calculo matematico con DERIVE para PC, Ed. RA-MA, 1a Ed., 1994.
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
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
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.
CLCULO NUMRICO
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
"$ Ejercicios
Actividad Personal
13
14
II.- Unidad N 2
14
15
15
16
17
18
20
21
22
24
26
2.4. Ejercicios
30
Actividad Personal
39
40
III.- Unidad N 3
41
41
43
45
3.5. Ejercicios
50
Actividad Personal
62
IV.- Unidad N 4
"Aproximaciones"
63
63
64
65
66
4.4. Ejercicios
68
Actividad Personal
71
V.- Unidad N 5
"Interpolacin"
72
72
72
73
76
77
79
79
5.3. Ejercicios
81
Actividad Personal
87
88
88
90
90
91
91
8
91
8
par
impar
92
6.4. Ejercicios
Actividad Personal
VII.- Unidad N 7 "Solucin Numrica de Ecuaciones Diferenciales Ordinarias"
92
101
102
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
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
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
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.
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
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
"+3 "+3
_
3"
3"
( 0 B.B " +3 0 B3
,
3"
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.
"
"!:
#
Pgina 4
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
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
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
&<-
Clculo Numrico
Pgina 5
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
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 "#.
Clculo Numrico
Pgina 6
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).
Clculo Numrico
Pgina 7
"$ 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
| & | $& %()%' $& %()% ' ! "!& "!%
"
y . , + Con qu exactitud podemos determinar el producto BC?
+
B
Luego, el producto ser:
BC
. &,
# +,
("! +. ) (. &, )
("! +. )(. &, )
EF
(# +, ) (# +, )
(# +, )#
G
Mtodo Primero:
+ " !!!
,
&+ ! !!#
"
"
+
&,
&+
&+
+#
. , + !
E "! +. "!
F . &, &
G # +, "
EF &!
BC
EF
G
&!
&0
&EF
G
EF &G
G#
')!&+
$'
+
&! !! ! "!
Pgina 8
Ejercicio "$ Calcular # tomando # " %"% (que tiene todas sus cifras exactas). Estimar el error
&
cometido
(No tiene sentido tomar ms de dos cifras decimales cuando ya el error de transmisin slo nos garantiza dos).
# & & '& & & & '& &
<
>
con
$
% ' "!
"!
#! | &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
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
Al calcular ! %"%& ! !"#"'"*!(... slo podremos garantizar como exactas, a lo ms, las tres
primeras cifras decimales.
Si redondeamos obtenemos ! %"%& ! !"# &< donde | &< | " '"*!(... "!% " '# "!% .
Finalmente, (# ")& (! %"%)& &> ! !"# &< &> ! !"# &
donde
%
$ !* "!% "! ,
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%
"!
& (#")%
! !!'(*%...
$
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 | & B!% ! !!& & ! !#) ! !!!( ( "!% "! .
&
5
(# ") ! !"# &> &< ! !"# &
donde
#
Clculo Numrico
Pgina 10
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 "! .
"
| &B | # "!
"
! #
, con
"
"
es decir, obtenemos que (# ") ! ! , pero no podemos garantizar ninguna cifra decimal ms.
6
"
"
y aproximamos el valor buscado por el de 0 ( B! ) obtenemos que
B
"
"
=
con
&> ! !!&!('" ... &> ,
(** (!#) "*(
| &> | | & B |
"
"
(
" )!$... "!% "!$ .
"*( #
B!#
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)
"
*(&'$ #
e)
"))"( "!)'%$
"
&
Solucin: Trabajando con $ " ($#!&, es decir, con un error inicial de "! tenemos:
( %$ ! !(") &B
&
Clculo Numrico
Pgina 11
(( %$ ) ! !!!!#'&('%**... &>
4
"!
, con
)
"!
"
! !!!!#'&("(%"...
(( % $ )4
y, por tanto,
"
! !!!!#'&(# &
(( % $ )4
%
"!
*
$ " "! "!
"$ *#)#)&
, con
"!
"!
b) *( &'$ "*$ **%) &B con | &B | &' "! , por lo que
&
*( &'$ #
"
es decir
"
! !!!!#'&(# &
*( &' #
#
"!
*
"!
$ " ' "!
"*$ **%)
, con
"!
"!
'
"!
&
, con
'
'
) (* "!
'
"!
&
("))"( "!)'%$)
"
("))"( "!)'%$)
! !!!!#'&("(#$#(( &>
"
""
"!
"!
# ( '(" "!
$('$$ **"#
"
&
&
, es decir
! !!!!#'&("( &
""
, con
"!
"!
que resulta ser el caso ptimo, ya que se obtiene el resultado con "! cifras decimales exactas.
Clculo Numrico
Pgina 12
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 | "! .
$
"
! !#&!"&'$%((... &>
(#! $**)
"
(
'
"! .
# ' $ "!
($* *(&)
'
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
# - 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 [+,,].
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
3 "
B _ mx B3
3 "
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
Observamos que las tres normas son distintas entre s, pero son equivalentes; concepto que no veremos.
p
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.
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
# .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
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
(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-"
Dado que
EB C
5"
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 "
E mx B E E B B B "
2
"
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
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
8 4):
muchos elementos nulos. Sparce
tridiagonales
Las triangulares
SonLas
matrices
de este tipo las siguientes
para superiores
+""
+
#"
0
!
+"#
+##
+$#
!
!
+#$
+$$
+%$
! +""
! !
0
+$%
+%% !
+"#
+##
!
!
+"$
+#$
+$$
!
+"%
+#%
+$%
+%%
!
+##
+$#
+%#
!
!
+$$
+%$
!
!
!
+%%
Clculo Numrico
Pgina 17
B B &
E E y , , &
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.
, de solucin
B
"
C "
$B %C (
$B $ *****C ( !!!!%
, de solucin
B
( '
C %
$B %C (
$B $ *****C ( !!!!&&
, de solucin
B
* '
C & &
Clculo Numrico
Pgina 18
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 "
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"
" 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"
$
% !!!!"
! !!!!$
%
$
4"
Clculo Numrico
Pgina 19
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.
Clculo Numrico
Pgina 20
E 6$"
68"
!
"
6$#
68#
!
!
"
68$
! ?""
!
!
!
!
"
!
?"#
?##
!
?"$
?#$
?$$
?"8
?#8
?$8
?88
Y B P" ,
D P" ,
B Y " P" ,
EPY
"
6#"
6$"
!
"
6$#
?""
6#" ?""
6$" ?""
$
'
$
! ?""
!
!
" !
?"#
6#" ?"# ?##
6$" ?"# 6$# ?##
#
#
tenemos:
)
"
$
!
?"#
?##
!
?"$ $
?#$
'
?$$ $
"
$
!
#
#
)
?"$
$
6#" ?"$ ?#$
'
"
$
!
#
#
6#" #
?## "
?#$ #
y de la tercera
es decir,
$6$" $
6$" 6$# !
6$" "
6$# "
?$$ %
Clculo Numrico
Pgina 21
$
'
$
"
$
!
# "
#
#
) "
!
"
"
! $
! !
" !
"
"
!
#
# 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
$
!
#
"
#
#
"
" es diagonal dominante.
&
Clculo Numrico
Pgina 22
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)
,""
,#"
,$"
! ,""
!
!
,$$ !
!
,##
,$#
#
,""
,#" ,""
, ,
$" ""
#
,""
"
,"" ,#"
#
#
,#"
,##
,$" ,#" ,$# ,##
,#"
,##
!
#
"$
#$
,"" ,$"
"
,#" ,$" ,## ,$# #
%
#
#
#
,$"
,$#
,$$
,#" #
,"" ,$" %
,$" %
#
,##
"$
,$# &
#
,$"
,$$ '
#
,$#
#
,$$
((
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
%
#3
% #3
#3
#
# #3
% #3 B" !
# #3
B#
!
"! B$ %
#,#"
,""
,#"
,$"
!
,##
,$#
! ,""
! !
,$$ !
,"" ,#"
,#" ,#" ,## ,##
,$" ,#" ,$# ,##
,#"
,##
!
,$" %
#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
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
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
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_
Clculo Numrico
Pgina 25
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" ,
Clculo Numrico
Pgina 26
#
!
"
"
%
"
! B "
$
C
"
, donde
& D %
!
!
# ! ! !
$ HIJ ! % !
!
!
! ! & " "
&
es decir, H
#
!
!
!
%
!
!
!
! I
!
"
&
#
!
"
Luego,
"
N M H" E !
!
y
!
"
!
- H" ,
%
&
"
%
"
!
!
"
! #
! !
" !
"
!
"
%
!
!
! yJ !
!
!
! # "
! %
!
" " "
&
"
!
!
! !
! !
! !
"
!
!
!
$
!
!
$
!
! !
$ !
& "
&
"#
!
"&
!
$%
!
"
#
"
%
Por tanto, de
!
B" !
"
&
!
B# !
"
&
!
B$ !
"
&
"
"
"
!
! "
# #
#"
! %
$%
$% "%
"#
% "
! " %& "&
&
"
! :
"
$%
%"
%"
"(
#!
&
%
(
% #$
! & %& #!
#!
&
B%
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" ,
Clculo Numrico
Pgina 27
#
!
"
- H I" ,
! !
!
!
& !
"
!
%
"
"
#
!
"
"!
Por tanto, de
"#
!
!
B# !
!
"#
!
B$ !
!
"#
!
"#
!
B& !
!
"#
!
"
"!
"
"!
!
B' !
!
#"
!
!
B( !
!
#"
!
!
B) !
!
"#
!
"
"!
"
"!
"
"!
"
%
"
"!
"
"!
"
"!
"
!
"
%
"
#!
! !
!
!
" !
&
"
!
!
! !
$ !
! !
"#
!
"
"!
!
$%
$
#!
!
! :
!
"
"
"
! !
#" ! #" #"
$
!
%
!
%
%
%
$ !
"* ! "* "*
#!
#!
#!
#!
$
"
! "# "#
)
! "#& "# ((
$
"
"
!
("#&
%
%
%
%
)!
$
"*
! ""(&
"*
"* %#(
#!
#!
#!
#!
%!!
((
"
$
! $) "# "'!
#
"'!
$
((
"
"#)"
"
" !&!'$
)!
%
"'!!
%
$ %#(
"* &"" "* " !"$))
#!
#!
#!
)!!!
%!!
"
"
!
! !")(& #" ! &#&$"& #" ! !#&$"&
$
" !"!%"
" !&!'$
! ('!%"
%
%
%
$ " !"$))
"* ! !%(!"* "* ! **(!"*
#!
#!
#!
"
"
! ! !#&$"&
# ! &!&#!& # ! !!&#!&
"
"
! **(('%
! (%(('%
%$ " !"!%"
%
%
$ ! **(!"*
"*
"*
!
!%)&""*
! **)&"#
#!
#!
#!
"
"
! ! !!&#!&
! **(('%
! (%)))%
%
! **)))%
%
%
$
! **)&"#
! !&!!!!%
"
"*
"*
#!
#!
#!
"
"
! ! !!""")
# ! %**%%# # ! !!!&&)
"
"
! **)))%
! (&
"
$%
%
%
$
"*
"*
"
! !&!"""'
" !!!""
#!
#!
#!
"
"
! ! !!!&&)
! &
!
#
#
"
"
!
(&!!)$
"
!!!!)
$% "
%
%
$ " !!!""
"* ! !&!!"'& "* " !!!!#
#!
#!
#!
"
#!
! #
$ !
! "
"!
"
!
" #"
! "
%
" %
"*
&
#!
B8" P" B8 -
!
B" !
!
!
B% !
!
"
!
!
B !
C "
D "
Clculo Numrico
Pgina 28
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
#% 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
#
Solucin:
a) Despejando la primera ecuacin y reemplazando en la segunda
obtenemos
B#C
BC #
# C " !"C # !"
! !"C ! !"
"
B
#
C" y B"
! !""C ! !"
"!
""
! *!
c) Discucin en grupo.
Ejercicio #" Estudiar el nmero de condicin de Frobenius de la matriz E
+
+&
,
,
"
,
,
,& + & +
E" #
#
, # , # + &# +#
#+# #, # #+& &#
, # &#
, # &#
Por lo que:
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
#! &
&
&
Clculo Numrico
Pgina 30
"
"
E"
"
#
"
#
"
, por lo que
"
E # (
J
RJ# E (# RJ E (
E" # (
J
BC #
: cuya matriz es
+ #B + "C #+ $
"
F
+#
"
+ "
+"
F "
+#
"
"
y, por tanto,
F # #+# '+ (
J
RJ# F #+# '+ ( RJ F #+# '+ (
F " # #+# '+ (
J
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).
%+ &,
#&
#* +
Clculo Numrico
Pgina 31
#&
#&
$% #& &) #
+ &)+ + #& "
+ "
#*
#*
#*#
#*
#
)&!
* #
)%"
#*
"+# "
+ " +#
+
)%"
)%"
*
$
#&
#&
#*
#&
+
#*
#*
$
$
#*
#&
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 "
"
"
!
!
#
%
%
!
!
!
$
*
*
!
!
!
%
"'
"'
!
!
!
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&
"
"
#
%
%
!
!
!
$
*
*
!
!
!
%
"'
"'
%
!
%
! "
!
&
!
#&
$
*
*
!
!
%
"'
"'
!
"
!
!
#
&
!
#&
!
$
*
*
!
!
%
"'
"'
&
#&
% *
%
"'
"'
!
%
& $ !
#&
!
%
"'
"'
!
*
& # *
#&
!
%
"'
"'
&
#&
"
"
!
!
#
%
%
!
!
!
$
*
*
!
!
!
%
"'
"'
! "
! 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#" "
?#$ +#$ $
Clculo Numrico
Pgina 32
"
"
P !
!
!
!
"
#
!
!
!
!
"
$
!
!
!
!
"
%
!
"
!
!
!
y Y !
!
!
!
"
#
#
!
!
!
!
$
$
!
!
!
!
&
&
!
!
%
%
!
"
"
"
"
"
&
$
$
"
$
""
&
"
$
&
"*
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
"
"
"
"
"
&
$
$
"
$
""
&
#
#
#
#
<%"
<%#
<%$
<%%
"* <%% %
" "
$ "
&
"
"
"*
!
#
"
"
!
!
$
"
! "
!
!
!
!
% !
"
#
!
!
"
"
$
!
"
#
$
"
"
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
!
<##
<#$
! <""
!
!
<$$ !
<"$ "
<#$ #
<$$ $
<"#
<##
!
#
<""
" <"" "
<"" <"# # <"# #
"
<"" <"$ $ <"$ $
!
#
#
<"#
<##
& <## "
!
<"# <"$ <## <#$ % <#$ #
#
#
#
<"$
<#$
<$$
"% <$$ "
#
"
!
#
&
%
$
%
"%
$
#
"
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" #
'
" $3
" #3
" $3
$
"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
#
<""
' <"" '
<"" <"# " $3 <"#
"$3
'
<"" <"$ " #3 <"$ "#3
'
#
#
<"# <## $ <## #
$
"(3
% $
'
V !
!
% $
"$3
'
#
$
"#3
'
"
# #
'
"$3
V C , '
#
$
"(3
% $
"#3
'
'
VB C !
"$3
'
#
$
! 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 .
"
#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
!
"
#
3
" 3
#
!
!
3
"
!
!
"
#3
! C" # #3
C" " 3
!
C#
$3
C# # #3
C$ "
" C$ $ %3
Clculo Numrico
Pgina 35
:
:
#:
:
:#
"
#:
"
se pide:
': "
E # :
:
:
E$ :
#:
:
#: !
: #
#:
" :%:# ): $ !
': "
:
:#
"
%:# ): $ ! :
$
#
%:# ): $ !
"
#
$
#
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 $# .
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 !
!
"
#
!
<"#
<##
!
<"$
<#$
<$$
#
#
#
#
"
"
#
!
#
#
#
#
!
#
#
#
"
! C
" "
C" "
!
C# ! C# #
#
C$ "
C$ $
"
B" "
B" "
B# #
!
B#
B$ "
B$ "
#
Clculo Numrico
Pgina 36
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
$
!
!
!
$
!
!
!
&
!
!
"
!
!
"
!
!
!
!
!
!
"
!
!
"
"
!
!
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
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
!
!
!
!
"
!
!
!
#
"
!
!
!
$
"
!
! !*
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
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
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)
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
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 "
Clculo Numrico
Pgina 41
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 &
#
#
+ ,
#
y &
, +
#
"
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
#
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
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.
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
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#
#
#
#
" '''''''''''''(
" (&!!!!!!!!!!!!
" (#(#(#(#(#(#($
" ($$$$$$$$$$$$$
" ($"(!($"(!($"(
" ($#"%#)&("%#)'
" ($#!#'"%$(*!)&
" ($#!&"#)#!&"#)
" ($#!%*!$'(((&)
" ($#!&"#)#!&"#)
" ($#!&!')!%$"(#
" ($#!&!)%"'$&")
$ B8
obtenemos:
" B8
B"%
B"&
B"'
B"(
B")
B"*
B#!
B#"
B##
B#$
B#%
B#&
B#'
" ($#!&!(*)%%!)%
" ($#!&!)"!!"%($
" ($#!&!)!'*"$&"
" ($#!&!)!((%%%)
" ($#!&!)!(&#")#
" ($#!&!)!(&)"%)
" ($#!&!)!(&'&&!
" ($#!&!)!(&'*()
" ($#!&!)!(&')'$
" ($#!&!)!(&')*%
" ($#!&!)!(&'))'
" ($#!&!)!(&')))
" ($#!&!)!(&')))
0 B8
mn 0 w B8
B "#
Clculo Numrico
Pgina 44
&#'
B#'# $
"&
"%
% ))%*)"$!)$&!')) "! "!
#
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
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_
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_
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
0 B8
0 B8
0 B
&8 w 8
B B8 w
0 w B8
0 B8
0 B8
Clculo Numrico
Pgina 45
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
!
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
o lo que es lo mismo:
& 8
#8 "
"
#8
5 &!
5
"
. 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
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$ " ($#!&!)"!!"%($
&%
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.
+ , 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
" -9= B8
" -9= B8
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$ ! !!!!!!!!!!!!!*
Clculo Numrico
Pgina 48
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
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
$& 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).
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 ! &(!$"#& ! [+( ,( ] [! &'#& ! &(!$"#&]
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
| & | | ! &( ! &''%!'#&| ! !!$*!'#& ! !!(& "!
Clculo Numrico
Pgina 50
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 [! &'#&; ! &(!$"#&]
0 w B 0 w ! &'#& # (%##(#*!"&!!%(
mn
B[!&'#& !&(!$"#&]
0 B8
&
n
mn
0 w B
0 B8
# (%
B [!&'#& !&(!$"#&]
obtenindose que
B! ! &(!$"#&
con &!
B" ! &'("&"%*)$&*!!
0 B!
# (%
con &"
! !!$#!%$()&'&!&
0 B!
# (%
! !!!!!)#((&("##
Por lo que la solucin de la ecuacin es B ! &'( con sus tres cifras decimales exactas.
# -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
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
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[! !&]
0 B8
0 B8
#0 B8
! &
mn 0 w B
B[!; !&]
% =/8#B # -9=#B $
0 B8
w
0 B8
% =/8#B %
!
! #&
! $'(&(*")"%&!#$
! %!&*""'&()")!"
! %!&))&((&'!$%"
! %!&*""'&()")!"
&!
&"
&#
&$
&%
&&
#
! %)*''*(&#&$)&"
! !*#%')$&'&!$%%
! !!("&$")&''!%*
&
& ')$&()'%!!!!!!! "!
*
$ '))""&!!!!!!!!! "!
"!
'
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
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
& 8
0 B8
0 B8
$
mn 0 w B
B[!";"]
obtenemos
B"
B#
B$
B%
! $#%('$#%%%""")
! &*)!**(!*)&**"
! '&#&)&'(#%)(&!
! '&#*")'$$'$$%)
&"
&#
&$
&%
! $$*(#*#
! !&#!*"&
%
$ "%*#* "!
*
' %"(* "!
"!
'
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
"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
0 B8
0 w B8
B[# #&]
obtenindose que
& 8
B!
B"
B#
B$
0 B8
! *
# &
# #$&%!$$%!*!#$%
# #"*")!'*'$*(!(
# #"*"!("&!%$(#(
&! ! $&$"$"('%")*""
&" ! !"*")!&!)%'(!%
&# ! !!!!)'"(#'(#('
'
&$ ! !!!!!!!!"()&!" "!
",&#"!
"!
'
por lo que la raz de la ecuacin es B # #"*"!( con las seis cifras decimales exactas.
Clculo Numrico
Pgina 54
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
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.
0 ! " !
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 !
#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
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 # !
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'
#
" $$***)!$
" "(*$*#"(%
" "'('&!'##
" "'(&)&&#*
" "'(&)&&#(
"
! '$%%(!("!(
! %*'(()'!'#
%()%('&$')
%()"(#%)!#
!%()"(#$*(#
! %()"(#$*(#
B "#
& 8
0 B8
#
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 ["!]
es decir, la raz negativa es ! %()"(#%! con todas las cifras decimales exactas.
Clculo Numrico
Pgina 56
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
0 B8
/B8 B8 ##
B8 B
w
0 B8
/ 8 #B8 #
0 B8
0 B8
$
mn 0 w B
B[! "]
obtenemos:
B" ! '
B# ! '#*)$!($%')$$)
B$ ! '#*)%'""&')('(
&" ! !%&*'!$**)'*)$
&
&# # $'(%' "!
"#
&$ % )$(*) "!
"#
"!
'
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
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 B8
0 B8
0 w B
&
mn
B! # &"&'#&
&! ! !!#*%%#$'*''"%
'
B" # &"#)'*)")#(#*& &" ( )''& "!
""
B# # &"#)'#%"($!&'# &# & ''$% "!
'
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
"
!, 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&
" $
" ((%*(#&#%'(%$"
" &&'#$'"#(!!)%"
" &!'((%$!#%$'()
" &!$#%((%)*'%(#
" &!$##))!!*')'!
con
con
con
con
con
con
0 B8
! $
&! ! !'%&%(&%)##%*(
&" ! "(*)!*$$(%&""%
&# ! !#('!$'&$&#&*!
&$ ! !!"(#!"%##'$%"
&% ! !!!!!*"%$*!#%"
&& ! !!!!!!!!!#'%)!
'
, por lo que
68 | B|
#B # (B (
#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
0 ! _ !
B# (! ")
0 " # !
0 $ ! $* !
B% ($ %)
0 % # ') !
B"
"
%B # *B #
%B "B #
68 B %B ( #68 B %B * #68 B
# 68 B
B
B
B
B
% $ "$ #
! )*... !.
$
"
"
#
#B "#B "
# % # #B # B "
B
B
B
B#
mn 0 w B 0 w $ " %'*%%#!
]
B $%
0 B8 por
&8
" %'*
mn 0 w B8
B $%
$ %$#'#"!"!&*%$"
$ #%$*'%')(()$%(
$ #")#)*!%)!&("*
$ #"()!"%$#$&*"&
B8 " B8
0 B8
, obtenemos:
0 w B8
'
por lo que la mayor de las soluciones de la ecuacin es B $ #"()!" con sus seis cifras decimales exactas.
(B # (B()
"!(B") #
! se pide:
B #
(B # (B()
"!(B") #
Clculo Numrico
Pgina 60
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") #
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 ! " !).
(B # (B()
"!(B") #
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 "%
#B /B !
&B(
B"$
!
#
(%B # #) / B
"!B"'
B"%
&B(
"!B"$
w
0 B !
a B " '
%B # #
!
ww
/B #
0 B !
a B " '
Clculo Numrico
Pgina 61
& 8
y
y
0 (') !
B! &
0 ww B !
0 B8
0 B8
0 B8
w
" %'*
" %'*
mn 0 B8
B[&']
con
con
0 B8
, obtenemos:
0 w B8
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 !
# Sea la ecuacin /B " . Encuentre la raz no nula de esta ecuacin usando Newton-Raphson
(B # $
B
$
"
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
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
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
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
9* =! +5 <5 8
8
5"
de la funcin 0 si
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"
#
! 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"
"
#
"
"
#
$
$
&
%
'
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
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+" #& +$
&
*
# +" % +$
"&
#
$(
)
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
!
" "!
"
! )*
#
$ !!
$
% '"
Clculo Numrico
Pgina 65
As, G B " !* " *%B Es decir, al volver a las incgnitas originales tenemos
+" /-" # *'
+# -# " *%
9 B # *'/"*%B .
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
#
#
del sistema
donde
C C" CR >
<#5 <! C 0 - 3
#
#
" 3
=
#5
3"
max
"48
-4
3
3"
-4
"!"!
&
Si no se cumple la desigualdad anterior, volver al Paso ". con el - 3" recin calculado.
Clculo Numrico
Pgina 66
!
$ !!
"
! %"
#
! !&
$
! !"
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
# !!
! !#
! ")
=
# !!
=! " *) " '%
"
! #$ =# ! !#
Para 5 !, tenemos
<#! <" c ! !#
<! c # !!
! !%
! #!
! !$
! !" d> # ! !% ;
#
! !% d> # % !"
mientras que
! !*
- " # *) # '%
-4 -4
"
max
"4#
-4 "!"!
"
! '';
Clculo Numrico
Pgina 67
%% 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
"
"
"
#
!
!
"
#
"
#
"
#
"
"
# &+$ $
!
"(
) +$ # #&
# &+#
Por tanto, 9 B
'
$&
'
(
+# ! +"
'
$&
y +$
'
(
B# " B " .
#
$
"
!
!
"
"
!
#
$
o equivalentemente
5+" +
"!+$ &
"!+#
"!+"
+# !
$%+$ "#
Por tanto, 9 B
&
(
"
"
(
B#
&
(
+"
&
(
y +$
"
(
"( B# # B #.
$
$#
#
*
"
!
!
"
"
!
Por lo tanto,
9 B
"($
(
+1
"($
(
%(
#)
"'**
&'
"
, +#
B#
)$
)
%(
#)
, +$
B$
"'**
&'
"($
(
y +%
%(
#) B
)$
)
"'** #
&' B
)$ $
) B
" B ".
Clculo Numrico
Pgina 68
>
Ejercicio %% Obtener la mejor aproximacin discreta de mnimos cuadrados del tipo 3 3! / VG para la tabla
>=
3E
"
) ")(
#
' (!$
$
& %))
%
% %*$
&
$ '(*
Solucin: En este caso es posible linealizar 3 3! / VG aplicando logaritmo natural, lo que nos da
683 683!
"
VG >
"
VG ,
obtenemos
G B -" -# >
>
D 68>
"
# "!$
#
" *!$
$
" (!$
%
" &!$
&
" $!$
-" # $!$ y -# ! #
As, G B # $!$ ! #> Es decir, al volver a las incgnitas originales tenemos
"
VG
9 B # $!$/!#> .
Ejercicio %& En un trabajo experimental se han obtenido los valores que a continuacin se indican
>
C>
" !!
& "#
$ !!
$ !!
' !!
# %)
* !!
# $%
"& !!
# ")
-"
determinar por el mtodo de los
-# >
cuadrados mnimos las constantes + y , de la frmula indicada, analizando el condicionamiento del sistema de
ecuaciones normales.
0 -" -# >
-# >
-"
-# *
-"
0& -" -#
-# "&
0" -" -#
tenemos
0 -
-"
-# "
-"
-# $
-"
-# '
-"
-# *
-"
-# "&
0 - !
1
1"
1
1$
1
1'
1
1*
1
1"&
0% -" -#
"
#
"
%
"
(
"
"!
"
"'
! &
! #&
! "%
! "
! !'
<- ! C 0 - ! # %) ! "% # $%
# $%
! "
# #%
# ") ! !' # "#
Clculo Numrico
Pgina 69
H0 - !
H0 - ! > H0 - !
-"
-# "#
-"
-# $
#
-"
-# '#
-"
-# *
#
-"
-# "&
#
"
-# "
"
-# $
"
-# '
"
-# *
"
-# "&
! $&
! "%
! &
! #&
! "%
! "
! !'
! #&
! !'
! !#
! !"
"!! "!!
! "%
$ ')
y H0 - ! > <- !
! !(
" $*
! $&
! "%
Para 5 !, tenemos
<#! <" c ! !#
<! c # !!
! !%
! #!
! !*
! !$
! !" d> # ! !% ;
#
! !% d> # % !"
mientras que
max
"4#
"
-4 "!"!
! '';
Ejercicio %' Se analiza el crecimiento poblacional de una determinada poblacin, obteniendo los datos
siguientes:
>
:>
!
&
"
%&
#
#"(
$
$&!
%
$(#
$(&
" " / # >
Solucin: Tarea!
" !!
& "#
$ !!
$ !!
+
. 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
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
"
! &
#
# &
$
# !
%
% !
&
$ &
'
' !
#
" (
$
$ %
%
& (
&
) %
(
& &
"
! &
! %
(&!
! )
"!!!
" #
"%!!
" '
#!!!
# !
#(!!
# $
$(&!
% 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
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 .
( 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
!
"
"
$
#
(
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
! 3 4
" 3 4
T8 B C! P! B C" P" B C8 P8 B
B! B" B8
siendo 1<+.9T B 8
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
B "B $B %
"
B$ )B# "*B "#
# "# $# %
#
B "B #B $
"
P$ B
B$ 'B# ""B '
% "% #% $
'
P! B
P" 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
0 8" -
8"x B
B! B B8
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"
Clculo Numrico
Pgina 73
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"
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
"
!
$
"
%
"
&
#
( .
$
03
!
0 B3
0 B3 B4
0 B3 B4 B5
0 B3 B4 B5 B6
"
#
"
&
'
#
"
&
'
&
#
"
$
"
&
&
")
&
'
&
'
"
#
&
") 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
0 8 0
B B! B B8"
8x
0 8 0
B8 B! B8 B8"
8x
0 8 0
B8 B! B8 B8"
8x
Clculo Numrico
Pgina 74
B
C
B!
C!
0 8 -
.
0 [B! B" . . . B8 ]
8x
B"
C"
B8
C8
[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
?C" C# C"
#
B
C
B!
0!
B"
0"
B8
08
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
B B!
?# 0! B B!
B B!
?8 0 ! B B !
B B!
"
5 "
2
#x
2
2
8x
2
2
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
Clculo Numrico
Pgina 75
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.
"
"(!! "(!!
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
B!
0!
0!w
B"
0"
0"w
B8
08
08w
T w B8 08w
T B! 0!
T B" 0"
T B8 08
B
0 B
w
0 B
B!
0!
0!w
B"
0"
0"w
B8
08
w
08
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
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
"
#B
tal que al tabular los datos obtenemos
0 w B
" B#
" B# #
B
0 B
0 w B
%
"
"(
)
#)*
!
"
!
%
"
"(
)
#)*
Clculo Numrico
Pgina 77
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
)$
""&'
"
"(
+# 0 #
"
"(
)$
""&'
"
#
"' 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"'
#)*!!!!
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
W? (B)
? {B! + B" B#
B8" B8 , },
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
3 " 8
3 ! 8
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"
F3 C3
E3
W? (B3" ) C3"
Q3 #
' 23"
C3" C3
23"
23"
' Q3"
Q3
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
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#
&$ 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 "
"
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
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
P# B #" B$ #B# $# B
P$ B '" B$ #" B# $" B
5!
0 8" -B
0 MZ -B
BB "B #B $
8 "x
%x
%)
#BB "B #B $
#%
P" B B
&B DB
0 8" -B
0 -B
BB "
8 "x
#x
/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:
/ " )&*"%
/"
" )&*"%
#
Clculo Numrico
Pgina 82
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
"
'
con >
3!
B B!
2
"# B
""
' B
( "
( &# B (# $B (
$
" "# B ($ #B (# $# B (
* "' B ($ #" B (# $" B (
B ($ #B (# B ( $
Es decir:
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 +!
"$
'" B$
" #
#B
"
$ B
""
' B
Clculo Numrico
Pgina 83
0 B3
&
"
0 B3 B4
0 B3 B4 B5
0 B3 B4 B5 B6
#
"
%
#
"
"$
"
%
"#
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
'
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 &
J B3
"
&
"%
$!
?J B3
%
*
"'
?# J B3
&
(
?$ J B3
#
siendo >
B B!
B ".
2
Clculo Numrico
Pgina 84
>>">#
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 # ! &
B#
#B
"#
P" B
B"
B"
#"
con
5!
+5 0 B5
5
w
5
, 0 B #0 B P B
5
T$ B +! ,! B "P#! B +" ," B #P#" B
+! 0 " !
+" 0 # 68#
por lo que
T$ B B "P#! B 68# ! & #68#B #P#" B
0 #8# -B
0 MZ -B
B "# B ##
#8 #x
%x
y dado que
0 MZ -B
es decir:
'
'
% '
-B%
"
&" &
! &# ! &#
' ! !"&'#&
%x
& ! !"&'#&
Clculo Numrico
Pgina 85
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 /!!".
5!
con
DB B "BB " B$ B
D w " #
P" B
B "B "
B# "
"
Por tanto,
P! B
BB "
"
B# B
#
#
P# B
B"B
#
"# B# B
0 '''B /B 0 ''' B
0 "'B
.
$x
mx 0 ''' B /
por lo que
&B
B ""
DB
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_
'
' $$
! ")
Por extrapolacin
En la calculadora
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
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
X n este tema se pretende dar una aproximacin numrica del valor de una integral ( 0 B.B en los
,
' , 0 B.B J , J +
+
"
#
"
.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.
#
"
"
"
"
0 8" -
B B! B B" B B8 .B
8 "x
DB
B B5 D w B5
3!
3!
3!
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
B8
!
"
B"
B8"
,+
" +!
, # +#
B8
+"
#
8"
B88 +8
+
, 8"
8"
" " $
W# .
% # %
" "
En el soporte W" ! :
$ #
"
"
"
( 0 B.B +! 0 ! +" 0 +# 0
$
#
!
cuya solucin es +!
"
$
+" + # #
#
#
"
$ "
"
0 ! 0 #0
#
# $
#
" " $
En el soporte W# :
% # %
"
"
"
$
( 0 B.B ,! 0 ," 0 ,# 0
%
#
%
!
,#
#
$
#
$
"
%
"
$
"
#
#
$
$
%
Clculo Numrico
Pgina 89
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
B+
se tiene que
2
P3 B
>> "> 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
,+
,+
0 + 0 ,
0 +
0 , , +
#
#
#
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
#!
!#
+,
#
y B# , . Dado que
#
>> "> #
2 >$
>#
2
,+
.> $ #>
con 2
(
#x !
>!
# $
#
$
#
#
,+
+# + !
'
se tiene que
,+
#, +
'
$
,+
#, + +,
,+
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
!
&
2$ 0 w w -
.
"#
&
2& 0 MZ -
*!
( 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"
$
, +&
mx 0 MZ B
")!8%
BB! B8
Clculo Numrico
Pgina 91
,+
0 B! 0 B8 #0 B" 0 B# 0 B8"
#8
, +$
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!
85
8x
D>
.>
>5
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
y, en consecuencia,
"
"5 +5
"8 8 w
"8
"8
2
D >.> 2
D> 2
D> D!
(
8
5
8x
8x
8x
!
!
5!
8
"5 +5
!
85
5!
"
" 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.
"
"
Clculo Numrico
Pgina 92
Solucin:
1.Calculndola exactamente obtenemos:
(
"
"
" B#
#
1
.B ( "
.B B #+<->1B " ! &(!(*'$
#
"B
" B#
#
!
!
"
( 0 B.B
"
por lo que
"
donde 2
"!
"
#
#
" B#
"
.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#
"
"
$
&
$
&
"
%
se tiene
(
"
" B#
" "
"
"
" #"
(
.B & ) " &
! &)$$$
" B#
# *
%
%
") #
"#
"
>"
, 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
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 !
#
&
"
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
-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:
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
#" -
#" -
Clculo Numrico
Pgina 94
0 - 0 "
B "
-"
0 "0 -
"-
"
0 -0
"B "B -
#
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 "
$" -
$" - #
$" -
"
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:
+!
" $$" -
%
$" - #
+"
+#
" $$" -
"
"$$"-
%!
$
%- $
$"- #
"$$"-
"$-"-%- $ "$-"-
$"- #
%-%- $
$"- #
%-"- #
$"- #
-!
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
0 " % #
+!
"$!"
$"!"
+"
%
" $%')!"$%(
$" ! "#
+#
" $ ! "
! (
! #&*#&*
$" ! "
# (
por lo que (
"
"
! $*$*$*
0 " * $
&B "$
.B ! ()()()() $ %**!*#&% ! (((((((( & !'%(%*"!
#
#
&B "$
# &B"$
#
El valor exacto es: (
.B
$
#
&
"
#
$
"
"
% $
('
$ #$
& !'''''''
"&
"&
"
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!
"
"
(! 3 $
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
#
#
$
$
#(
##
* B
#
D w $" #(
y D w a"b #*
#( $ & # #
B B B
#
$
$
* $
#
#
B B B
#
*
"
9
"
!
"
!
*
""
#
B$ #B# B 68B.B *#
#
*
*
#( $ & # #
B B B68B .B
#
$
$
"
!
"
!
#(
#
#( $ % # "
B B B68B .B
#
$
$
* $
#
#
*
B B B68B .B #
#
*
"
"'
"
"'
"
*
# "*
""
*
%" *# a "b
#(
#
"
"'
"
"'
"*
$#
#* "%
""
$#
"
$#
"
$#
Clculo Numrico
Pgina 96
( 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 &
"
+! +" +# +$ "
+ #+ $+ $
"
#
$
%
+ )+ #(+ #(
#
$
"
"'
"
#
"
"
0 B B +" +# +$ ( B 68B .B
$
$
%
!
"
"
%
"
0 B B# +" +# +$ ( B# 68B .B
*
*
*
!
"
"
)
"
0 B B$ +" +# +$ ( B$ 68B .B
#(
#(
"'
!
cuya solucin es +!
""
$#
+"
"*
$#
+#
"
$#
+$
"
$#
"
"
&
"
"
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.
"
( =/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
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
"
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 "),
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
&
"
"!' 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
0 % B
B#$
B#$
#
B# #B #
/$
$ # ###
& "
B$
#$
%
&
es decreciente en el intervalo [# $] ,
"
& "
"#8#
"
&
& " "!'
"#8#
'&#
Clculo Numrico
Pgina 98
mxB#$ B# #B #
B# #B #
&
B$
)
mnB#$ B
|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%
#! (
"!'
")!8%
#!
? % B .? .B
" B
" B
B
B
'! / % B.B / % B '! / .B $/ % / %/ & & )($"#(
.@ /B .B @ /B
!
!
"
"
siendo 2
,+
,
8
2
0 + 0 , %M #T &
$
con &
, +&
mx 0 MZ B
")!8%
B+,
B3 + 23 (3 " 8 "),
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
Para que el error sea menor que "!7 se debe cumplir que 8%
7
"!7 /
% "! /
, es decir, 8
.
")!
")!
3.Para garantizar cuatro cifras decimales exactas (ver el apartado anterior) ha de ser 8 %. Entonces
2
,+
"
! #& y el soporte es {!; ! #&; ! &; ! (&; " }.
8
%
! #&
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
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 !
#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
#
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
<"
#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
#1 4
8
4!
Por tanto:
X8 /358
#18
#1 .
8
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.
"
!
"
! "
(
! #
%
! $
$
! %
&
! &
#
$
"
"
%
"
*
$
#
&
%
(
#
*
'
""
$
B
( / .B
"
Clculo Numrico
Pgina 101
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
(")
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(":
Clculo Numrico
Pgina 102
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 (#
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 ($:
+ 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.
Clculo Numrico
Pgina 103
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! \
(%
, 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
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
.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
Cw "# " BC #
C! "
, etc.
B ! "#
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 # "
#
" # 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#
"
#
%
B3
!
! "
! #
! $
! %
! &
C3 ! "
"
" !&&
" "##&&"!"('&*$(
" #0640094640193
1,31205891970444
1,44793523610473
C3 ! !&
"
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
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
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
C3" C3 203
3 ! " #
('
Figura (' Interpretacin geomtrica del Mtodo de Euler, donde /3" es el error de truncamiento local.
Clculo Numrico
Pgina 106
3
!
"
#
$
%
&
B3
!
! "
! #
! $
! %
! &
C3 ! "
"
" !&
" ""!'$(&
" ")%'%)%$*$)%$)
1,#(&)')*"%&!&#"
1,$)*)"()")&*&#'
"
!&&%!)*(!*('#&
$(*
"!!
)* " "#$&*&&!&'"(*)
%!!
$$" " #!)%&*#"%&!"&"
#&
"* " $"&()*%($')%#"
"'
"" " %&
Clculo Numrico
Pgina 107
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 ! "
!,!!&%!)*("
!,!"#*&)!!'
!,!#$)"!((&
!,!$**#!&&*
!,!'%(#('$'
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
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
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
! !!!*!##
! !!!#%)"
! !!!&#('
! !!"!$%'
! !!"*))!
Clculo Numrico
Pgina 109
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
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
(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 * ) ! "''%@
@! !
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 #
>3
!
! "
! #
! $
! %
! &
(
@3
!
! *(")%'%
" *#('&&)
# )'('*#*
@>3
!
! *(")*"%
! *#((%%%
# )'()#$'
I3 ! "
!
%! &#!""""
Solucin: Las siguientes tablas muestran las aproximaciones para los distintos 2w s
2 ! "
3
!
"
#
$
%
&
'
(
)
*
"!
B3
# !
# "
# #
# $
# %
# &
# '
# (
# )
# *
$ !
C3 ! "
" !!!!
! )$&!
! ("!)
! '"%&
! &$)!
! %('"
! %#&!
! $)#$
! $%'#
! $"&$
! #))'
I3 ! "
! !!!!
! !!&"
! !!'&
! !!''
! !!'"
! !!&&
! !!%*
! !!%$
! !!$(
! !!$$
! !!#*
CB3
" !!!!
! )#**
! (!%#
! '!(*
! &$"*
! %(!'
! %#!#
! $()"
! $%#&
! $"#!
! #)&(
Clculo Numrico
Pgina 111
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
!
"
#
$
%
&
'
(
)
*
"!
>3
!
! #
! %
! '
! )
" !
" #
" %
" '
" )
# !
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# ! &! &/
#! " "#!%###'(&
>3
!
! &
" !
C3 ! &
!
!
" "#!%###'(&
Clculo Numrico
Pgina 112
" $>
#& /
" #>
#& /
" $>!
#& /
" #>!
#& /
" $>"
#& /
" #>"
#& /
&" ! &/$!&
Para 3 # C>#
"
$>#
& ># /
" $>#
#& /
"
$!
& " !/
" $!&
#& /
" #!&
#& /
! #)$'"'&#")'(
" #>#
#& /
" $!
#& /
" #!
#& /
$ #"*!**$"*!%
>3
! &
" !
C3 ! &
!
" "#!%###'(&)
C>3
! #)$'"'&#")'
$ #"*!**$"*!%
Cw " > C#
C# "
#>$
I3 ! "
! #)$'"'&#")'
# !*)'((!&"%'
2 ! &
Para 3 ! C" #
Para 3 " C# # '#&
Resumen:
3
!
"
#
>3
#
# &
$ !
C3
!
#
# '#&
"
"
C>3 >3
">
" >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
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! "
#
B3
# !
# "
# #
# $
# %
# &
# '
# (
# )
# *
$ !
C3 ! "
" !!!!
! )$$*&!
! (!*%'%
! '"$"**
! &$')&*
! %(&!&"
! %#%"$'
! $)"&('
! $%&&&&
! $"%($(
! #))"#"
I3 ! "
! !!!!
! !!%!(%
! !!&#$)
! !!&#*'
! !!%*%%
! !!%%'$
! !!$*'(
! !!$&!&
! !!$!)*
! !!#(#%
! !!#%!'
2 ! !&
3
!
"
#
$
%
&
'
(
)
*
"!
B3
# !
# "
# #
# $
# %
# &
# '
# (
# )
# *
$ !
C3 ! !&
" !!!!
! )$!(&)
! (!&$'"
! '!*!&$
! &$#**#
! %("&'$
! %#"!$(
! $())%"
! $%$"%&
! $"#'"$
! #)'#%'
CB3
" !!!!
! )#*)('
! (!%##&
! '!(*!$
! &$"*"&
! %(!&))
! %#!"')
! $()!(#
! $%#%''
! $"#!"#
! #)&("%
I3 ! !&
! !!!!
! !!!))$
! !!""$'
! !!""&"
! !!"!((
! !!!*(%
! !!!)'*
! !!!('*
! !!!')!
! !!!'!!
! !!!&$#
Clculo Numrico
Pgina 114
C w -9=#> =/8$>
C! "
! > " (> en radianes) Considerando
>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
C3
%# %(#$
%) $%%&
&# #)%#
&% '"!)
&& ))#(
&' &%))
&' ))**
&( !'#%
I3 ! #
"% ('%!
) )*")'
% *&#"&
# '#&&'
" $&$'&
! ')(&#(
! $%'&!$
! "($*%&
Clculo Numrico
Pgina 115
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" !
que us en a).
5# B3
2
2
C3 5"
#
#
#
2
2
5$ B3 C3 5#
#
#
5% B3 2C3 25$ #
#
2 ! "
3
!
"
#
$
%
&
'
(
)
*
"!
B3
# !
# "
# #
# $
# %
# &
# '
# (
# )
# *
$ !
C3 ! "
" !!!!00
! )#*))&
! (!%#$(
! '!(*"%
! &$"*#%
! %(!&*'
! %#!"(&
! $()!()
! $%#%("
! $"#!"(
! #)&(")
I3 ! "
! !!!!!!
! !!!!"!
! !!!!""
! !!!!""
! !!!!!*
! !!!!!)
! !!!!!(
! !!!!!'
! !!!!!&
! !!!!!%
! !!!!!%
2 ! !&
3
!
"
#
$
%
&
'
(
)
*
"!
B3
# !
# "
# #
# $
# %
# &
# '
# (
# )
# *
$ !
C3 ! !&
" !!!!!!
! )#*)('
! (!%##'
! '!(*!$
! &$"*"&
! %(!&))
! %#!"')
! $((!(#
! $%#%''
! $"#!"$
! #)&("%
I3 ! !&
! !!!!!!
! !!!!!"
! !!!!!"
! !!!!!!
! !!!!!!
! !!!!!!
! !!!!!!
! !!!!!!
! !!!!!!
! !!!!!!
! !!!!!!
CB3
" !!!!
! )#*)('
! (!%##&
! '!(*!$
! &$"*"&
! %(!&))
! %#!"')
! $()!(#
! $%#%''
! $"#!"#
! #)&("%
Clculo Numrico
Pgina 116
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 ! !!!".
B3
" !
" "
" #
" $
" %
" &
5"
! #
! #("%"
! $(#'&
! &")$'
! ($"#'
" !%(!'
5#
! #$"
! $"%*'
! %$%(&
! '!)#(
! )'$%"
" #%%#'
5$
! #$%#'
! $"**(
! %%#&#
! '#!%"
! ))#&(
" #(%)$
5%
! #("&%
! $(#)(
! &")('
! ($"*&
" !%)#'
" &#%)"
C3
" !!!!!
" #$$'(
" &&#(!
" **$'*
# '""'$
$ %*!#"
CB3
" !!!!!
" #$$')
" &&#("
" **$(#
# '""'$
$ %*!$%
I3 ! "
!
! !!!!"
! !!!!"
! !!!!$
! !!!!!
! !!!"$
Clculo Numrico
Pgina 117
C w %/!)B ! &C
C! #
B !; ! &
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 !; #
Cw " BC
C! "
B !; "
B !; $
B "; "
Clculo Numrico
Pgina 118
CALCULO
Indice general
1. Campos Num
ericos
1.1. El n
umero real . . . . . . . . . . . . . . . . . . . . . . . . . .
1.1.1. Desigualdades . . . . . . . . . . . . . . . . . . . . . . .
1.2. El n
umero complejo . . . . . . . . . . . . . . . . . . . . . . .
1.2.2. M
odulo y argumento de un n
umero complejo . . . . .
11
. . . . .
12
12
2. Sucesiones Num
ericas
15
16
18
22
24
2.5. C
alculo de lmites . . . . . . . . . . . . . . . . . . . . . . . . .
30
2.6. Infinitesimos
. . . . . . . . . . . . . . . . . . . . . . . . . . .
36
2.7. Infinitos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
38
40
3. Series Num
ericas
43
44
. . . . . . . . . . . . . . . . . . . .
51
53
62
64
3.4. Sumaci
on de series . . . . . . . . . . . . . . . . . . . . . . . .
68
74
4. Series de Potencias
77
78
4.2. Propiedades . . . . . . . . . . . . . . . . . . . . . . . . . . . .
84
87
88
93
97
101
5.1. Representaci
on de funciones . . . . . . . . . . . . . . . . . . . 103
ii
120
148
166
iii
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
iv
244
Bibliografa
248
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
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
vii
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
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
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.
1.1.
El n
umero real
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
1 < 2x 7
1.1.2.
Valor absoluto de un n
umero real
|x| := x2
Se puede comprobar que, entonces, tambien se cumple
x si x 0
|x| =
x si x < 0
Algunas propiedades son
3
1. |x| 0,
x R
2. |x| = 0
x=0
x R
r x r
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.
3 x 2x 1
2x 1 x 3
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
2x + 1
en el inter1 3x
<
<
3
2x + 1
9
2
1 3x
11
<
<
2
1 3x
11
3 < 2x + 1 < 9
ex
1x
n(n + 1)
.
2
Soluci
on: Lo comprobamos para n = 1, 2:
1=
1(1 + 1)
2(2 + 1)
, 1+2=
=3
2
2
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
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
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).
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.
1.2.1.
Aritm
etica de los n
umeros complejos
(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
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
a
,
|z|
sin() =
b
|z|
Figura 1.2: M
odulo y argumento de un n
umero complejo.
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
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
3/2+2k
3
1.2.4.
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,
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
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.
(3 2i)(2 + 3i)
;
(3 4i)
(b) i5787 ;
(c) (1 + 4i)3 .
(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.
2e5i/4 .
(Sol.: z = 1 i )
Ejercicio 1.22 Halla la forma binomica de los siguientes n
umeros complejos:
13
(a) (4 + 3i)2
(b)
(d) Exp(1 i)
3+2i
32i
)4
(c) ( 1+i
2
2i
3
,e
4i
3
, 2, 2 e
2i
3
, 2e
4i
3
.)
3
2 ,
12 i
3
2 .
14
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
2.1.
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.
n 1.
n 0.
16
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
17
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
vemos como cada termino es mayor que su sucesor; es decir que la sucesion
decrece; Fig. 2.2.
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
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
n2 + 3
, n 1.
3n + 2
5n + 3
, n 1.
n2 + 1
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
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
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
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
n0 N
si
n n0
an > K
y lo escribiremos lm an = +.
n
n0 N
si
n n0
an < K
y lo escribiremos lm an = .
n
n0 N
si
n n0
|an | > K
y lo escribiremos lm an = .
n
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,
26
lm(an ) = 0
lm |an | = 0
n
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
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
2.5.
C
alculo de lmites
0
,
0
0 ,
1 ,
0 ,
00
Veamos c
omo resolver algunas de ellas:
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
1
n
1
n2
tienden ambos
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
30
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
n2 n3 + 2
.
n+2
(Sol.: )
2n3 + 3n2 n + 1
.
n3 + 3 n + 2
(Sol.: 2 )
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).
(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
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.
p
n2 + 2n 1 n .
(Sol.: 1 )
n+1 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
.
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
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
1 + 22 + 33 + + nn
.
nn
(Sol.: 1 )
4+
1
2
3
n
+ 4 + + 4 + + + + 4 +
n
n
n
n.
n
(Sol.:
9
)
2
log(n!)
log nn
(Sol.: 1 )
(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
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
n.
(Sol.: 1 )
p
n
5n2 6n + 3.
(Sol.: 1 )
n+1 .
(Sol.: 0 )
1+
2+
3 + +
n
.
(Sol.: 1 )
0
(d) tipos (
mite de funciones para poder aplicarle
) y ( 0 ): cambiamos a l
la regla de LHopital:
en
n
35
. En este
Soluci
on: El lmite propuesto es una indeterminacion del tipo
lm
ex
por lo que, lm
n
en
n
f 0 (x)
f (x)
= lm 0
=
n g (x)
g(x)
= +
= +.
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
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
36
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.
{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
(Sol.: ln(a) )
Ejercicio 2.29 Calcula el lmite lm
n
!n
n
a+ nb
, a, b > 0.
2
(Sol.:
tan(a +
tan(A + B) =
tan a
ab )
b
)
n
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
an
=1
bn
se utilizan seg
un la propiedad siguiente.
38
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
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)
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
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
an+1 = 2an + 3, n 1
(Sol.: {an } es creciente y acotada superiormente; y lm an = 3. )
n
n+a
n+1
2n+3
= lm
n
n+3
n+2
bn+4
(Sol.: b = 2(a 1) )
40
n
.
(b) lm n + 1 n + 1
sin2 (
1
(Sol.: (a) 2; (b) )
1+
2! +
n+
3! + . . . +
n2
n!
.
(Sol.: e /2 )
22
23
2n
2
2
2 ...
2
lm
n
log n
log n
log n )
( > 0, > 0)
n=1
12 2 + 22 22 + 32 23 + . . . + n2 2n
2n n2
n=1
(Sol.: (a)
; (b) 2. )
22n (n!)2
.
(2n + 1)!
(Sol.: 0 )
41
(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
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
D D D
+
+
+ ...
2
4
8
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
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
Notas:
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
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).
+
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
+
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))]
+
X
n=p
1
para que empiece a sumar desn
p
de n = 1:
(Sol.:
+
X
n=1
1
)
n+p1
p
+
X
rn
(r R )
n=0
1 rn
1r
si r 6= 1
lm Sn =
n
Ahora,
S1 = 1
+
S2 = 1 + 1 = 2
X
r=1
1
..
n=0
Sn = n
47
lm Sn =
n
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
+
X
6 lm Sn
n=0
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
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
2.
+
X
(an ) =
n=1
+
X
an = S
n=1
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 =
+
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
+ 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
+ n
X
1/5
1
1
1/2
=
=
y
=
=1
1 1/5
4
2
1 1/2
n=1
10n
1
5
+1=
4
4
+ n
X
1
n=3
2
(Sol.:
1
4
9 27 81
+
+
+ ...
2
8
32
(Sol.: 32 )
1
+ ...
2
(Sol.:
8
)
3
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)
+
X
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
+
X
an
n=1
es convergente lm an = 0
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
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
+
X
n=1
1
2+
.
n
(Sol.: Divergente. )
52
+
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
n=1
Si una serie
+
X
n=1
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
bn es convergente y an bn n
Si
an es divergente y an bn n
+
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
+
X
2 cos(n)
n=2
(Sol.: Divergente. )
Ejercicio 3.13 Sean
an y
n=1
n=1
+ p
X
n=1
an + bn
an bn
y el criterio de la serie mayorante.)
2
X
n=1
an y
n=1
+
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
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
+
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
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
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 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.
+ 3
X
n
n=1
n!
serie
an =
n3
n!
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!
+ 3
X
n
n=1
n!
es convergente.
56
+
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)
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)
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
2 4 6 (2n)
es divergente.
+
+
X
X
(n!)2
(n!)2
y (b)
.
(3n)!
(2n)!
n=1
n=1
P+ 2n n!
.
n=1
nn
(Sol.: Convergente. )
P+ (n!)2
.
n=1
2n2
(Sol.: Convergente. )
57
P+ 4 7 10 (3n + 1)
.
n=1
2 6 10 (4n 2)
(Sol.: Convergente. )
P+ (n!)2 4n
.
n=1
(2n)!
(Sol.: Divergente. )
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 =
1 + sin3 n
nn
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
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.
n
n
n=1
n=1
59
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
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
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
+
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
61
P+
n=2
1
, p N.
n (log(n))p
P+
n=3
1
.
n log(n) log [(log(n))]
(Sol.: Divergente. )
3.2.2.
Series alternadas
Definici
on 3.13 Una serie
+
X
n=1
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
n=1
+
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
1 1 1 1 1 1 1 1 1 1 1
+ + + + + + ...
2 2 3 2 3 3 4 3 4 3 4
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).
P+ (1)n+1 n
.
n=1
2n 1
(Sol.: Divergente. )
63
P+ (1)n
.
n=1
n
(Sol.: Convergente. )
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.
Definici
on 3.15 Una serie
n=1
serie
+
X
|an | es convergente.
n=1
+
X
(1)n
n=1
n=1
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
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
65
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:
+
X
(1)n
66
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.
67
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
n = 1, 2, . . .
68
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
lm rn = 0
n
lm Sn =
n
drb1
a1 b1
+
1 r (1 r)2
+
X
n=1
an bn =
a1 b1
drb1
+
1 r (1 r)2
69
(3.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
+
X
n=1
an+1
n +
=
an
n +
con + 6= 0
(n + )an+1 a1
+
70
+
X
n=1
S = lm Sn =
n
+
X
an =
n=1
a1
(3.2)
+
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
p!(n + 1 p)!
(n + 1)!
= lm
n
p!(n p)!
n!
n+1p
= lm
=1
n
n+1
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)!
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)
+
X
n=1
1
.
n(n + 1)
Soluci
on: La serie es telescopica puesto que, al descomponer
1
en
n(n + 1)
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
73
P+
n=2
n2
1
, descomponiendola
1
(Sol.:
P+
n=2
3
)
4
n
, descom(n + 1)(n + 2)
X
n=2
1
log 1 2 .
n
(Sol.: log 2 )
3.5.
Problemas adicionales
(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 )
X
n!
(2 + 1)(2 + 2) (2 + n)
(Sol.: Convergente )
74
P n2n + 5
4n3 + 3n
P log(n)
(l)
n+1
(i)
+
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)
75
P+
n=1
1
, des(2n + 1)(2n + 3)
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
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
+
X
an (x c)n
n=0
77
4.1.
Radio de convergencia
+
X
an (c c)n = a0
n=0
+
X
n=0
+
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
79
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
+
X
(n!)xn
n=0
(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
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
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
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
+ n
X
x
n=1
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 =
+ n
X
1
n=1
x = 1
+
X
1
(divergente)
n
n=1
+
X
(1)n
n=1
(convergente)
+
X
(2x)n
n=1
n2
(Sol.: R =
81
1
)
2
+ 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
+
X
(1)n+1 xn
n=1
4n
+
X
n!xn
,
(2n)!
n=1
82
+ 3
X
n
+ 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
4n
es decir,
+ 3
X
n
n=1
4n
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
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
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
n=1
n=1
x=1
+
X
1n1 =
n=1
x = 1
+
X
1 que es divergente,
n=1
+
X
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
n=1
85
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 )
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 )
+
X
an (x c)n y g(x) =
n=0
+
X
bn (x c)n definidas
n=0
1. f (x) + g(x) =
+
X
n=0
2. f (x) =
+
X
n=0
an (x c)n =
+
X
an (x c)n , x I
n=0
+
X
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
Soluci
on: Sabemos que
ex
+ n
X
x
n=0
anterior:
2
ex =
n!
+
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!
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
de manera que
f (x) =
+
X
an (x c)n
n=0
+
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!
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
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) =
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
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).
+ (n)
X
f (c)
n=0
n!
(x c)n lm Rn (x) = 0
n
90
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
(n)
(0) = sin n
=
2
(
(1)k
0
si n = 2k + 1 (n impar)
si n = 2k ( n par)
(2k + 1)!
(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)!
(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)
(2n + 1)!
n=0
= sin x xR
+
X
(1)n x2n+1
n=0
(2n + 1)!
xR
cos x =
+
X
(1)n x2n
(2n)!
n=0
ex
+ n
X
x
n=0
(1 +
x)
n!
=
xR
xR
+
X
n=0
xn ,
siendo R y
:= 1;
0
n factores
( 1) ( (n 1))
:=
, si n 1
n
n!
92
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
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
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
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
log 1 = 0 + C
y, finalmente,
log x =
+
X
(1)n
n=0
n+1
(x 1)n+1
+
X
(1)n
n=0
n+1
(x 1)n+1 , |x 1| < 1
x=0
+
X
(1)n
n=0
n+1
(1)n+1 =
+
X
1
que es divergente.
n+1
n=0
94
x=2
+
X
(1)n
n=0
n+1
(2 1)n+1 =
+
X
(1)n
n=0
n+1
que es convergente.
+
X
an (x c)n , |x c| < R .
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
+
X
(1)n
n=0
n+1
(x 1)n+1 , |x 1| < 1
+
X
(1)n
n=0
n+1
x
|x| < 2 )
2
2
n=0
95
.
(1 + x)2
(Sol.:
+
X
(1)n nxn1
|x| < 1 )
n=1
+
X
|x| < 1 )
n=2
+
X
(1)n
n=0
n+1
xn+1
x ] 1, 1] )
+
X
(1)n 4n x2n
|x| <
n=0
1
)
2
+
X
(1)n
n=0
96
(2n)!
x2n )
4.4.
Problemas adicionales
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
11
; (c) Si; (d) Si. )
2 7 13
+
X
(n + 1)(n + 2) (2n + 1)
n!
n=1
xn .
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
(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
(Sol.: (a)
1
.
1+x
n=0
1
1 P (1)n xn+1
; (c)
; |x| < 1 )
2(1 + x)
2
n+1
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
99
+
X
3(1)n
(Sol.:
2n+1
n=0
+ 2n+1 xn
|x| <
1
)
2
+
X
(1)n 4n
n=0
2n + 1
x2n+1
|x|
1
)
2
+
X
1/2 (1)n
n
n=0
2n + 1
x2n+1
|x| 1 )
+
X
n=0
(1)n 4n
x2n+2
(2n + 1)!(n + 2)
xR)
+
X
(1)n
n=0
100
n+1
x2n+2
x [1, 1] )
Tema 5
(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
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
cT
V
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.
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
(a) Superficie
(a) Superficie
c 0.
105
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
|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 )
107
x2
|z|
+ y2
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
5.3.
Lmites y continuidad
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
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
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)
xa
lm f (x) =
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
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
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
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
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
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
xa
si
lm fi (x) = li para i = 1, 2, . . . , m .
xa
5.3.2.
Funciones continuas
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 <
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
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.
117
xy
x2 +y 2
en su
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).
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
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
Ejercicio 5.8 Si
lm
(x,y)(x0 ,y0 )
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
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
6.1.
Derivadas parciales
= lm
x = x0
h0
f (x0 + h, y0 ) f (x0 , y0 )
f
=
(x0 , y0 )
h
x
f
x (x, y)
xy
1+x2 y 2
+ arctan(xy);
f
y (x, y)
x2
1+x2 y 2
f
x (x, 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
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
0
si (x, y) = (0, 0)
(Sol.: No existen. )
123
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.
124
125
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
f
(x, y) = ey y ex ,
x
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
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
F
F
F
dM +
dm +
dR
M
m
R
128
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
+
GM
dm
R2
M m
G R2
F
R dR
+
+
m
dR
2GM
R3
G MRm
2
Kwd4
t3
1.786xy
cal.
1.798x + y
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
x = 1, y = 0
f
(1, 0) = x exy
y
x = 1, y = 0
=0
=1
f
f
(1, 0)(x 1) +
(1, 0)(y 0)
x
y
| {z }
| {z }
0
130
es decir, z = 1 + y.
y
{z
}
|
L(x,y)
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
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
134
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
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
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
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
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
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|| =
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
6.3.
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
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
2f
(x, y)
yx
2f
(x, y) coinciden. Este hecho no es casual. Si las derivadas parciales
xy
140
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
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
3f
=0
zxz
y as sucesivamente.
6.4.
Regla de la cadena
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
2
2z
2z
2 z
+
2xy
+
y
x2
xy
y 2
143
Soluci
on: Llamamos s = y/x
regla de la cadena.
z
=
x
z
=
y
df y
ds x2
df 1
ds x
=
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
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
z
x1
y2
=
=
4
5
4
3
2
2i + ( 2/2)j, 5/2 )
(Sol.: 2i + 2j 4k, 2 6 )
xzey ; (16, 0, 9)
146
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-
z
z
+y
x
y
(Sol.: 0 )
(x2
1 f
1 f
1
(x, y) +
(x, y) = 2 f (x, y)
x x
y y
y
147
y
satisface la
y2)
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.
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
F (t) =
n
X
i=1
hi
f
(x + th)
xi
n
X
f
()hi
xi
i=1
149
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
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
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
|h | 0,4
151
3a2
3ah
|V |
|a | +
| |
12 h
6
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
152
m
mm
M m
R2
|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
+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
1
h H(x0 ) ht + ||h|| 2 Ex0 (h)
2
154
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
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
155
7.3.
Teorema de la Funci
on Inversa
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
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
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
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
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
xW
(x,y,z)=(2,2,0)
8 4
=
1 1
= 4
x V .
Esta u
ltima condici
on permite, ademas, calcular las derivadas de f en x = 2
(derivaci
on implcita):
160
x V.
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:
f20 (2) = 1
(Sol.: y 0 (1) =
4
13 ;
)
y 00 (1) = 426
133
7.5.
Problemas adicionales
2x
t2
162
R2
R2
(x, y) 7 (ex+y sin y, ex+y cos y)
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
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
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
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
2f
(x, y),
x2
B=
2f
(x, y),
x y
y sea D = AC B 2 . Entonces,
168
C=
2f
(x, y),
y 2
(c) D < 0
169
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
Ejercicio 8.1 Encuentra los extremos locales del siguiente campo escalar:
f (x, y) = xye(x
170
2 +y 2 )/2
(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
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
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
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
H=
8m
xy
16
xy
16
2
6
x
+
y 4 32
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
de donde,
k2 1
H1 =
>0
8m 2
2 2
1
k
1
>0
H2 =
8m
4 16
A es un mnimo.
8.2.2.
M
etodo de multiplicadores de Lagrange
H J
Q=
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
A(0, 3), = 0
En el caso y = 2 se sustituye en la segunda y se obtiene:
x2 42 = 0 x2 = 42
176
1
1
=
4
2
1
2
1
=
2
=
(b) Clasificaci
on. Para clasificar los puntos se
2y + 4 2x
2x
2
Q=
4x
2y
4x
2y
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
0 2 4
Q = 2 1 2
4 2
0
(a) Gr
afica completa
(b) Gr
afica en el octante positivo
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
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
(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
(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
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
181
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
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
1
2
1
Por tanto, tenemos un punt crtico P1 (0, ) (pertenece al lado AB).
2
183
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
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
(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
186
2
2
y el valor mnimo es
1
5
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
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)
188
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.
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
9.1.1.
Z
f (x)dx
f (x)dx
a
190
si x es racional
si x es irracional
9.1.2.
Teorema de caracterizaci
on
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
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
f (x)dx =
a
f (x)dx
b
f (x)dx = 0
a
9.2.2.
Funci
on integral. Regla de Barrow.
La funci
on as definida se llama funci
on integral.
Teorema 9.13 F es una funcion continua.
192
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
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
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.
1+cos 2x
dx
2
sin2 (x) dx
(Sol.:
x
2
41 sin (2x) + k )
sin(ax) cos(bx) dx
(b)
cos(ax)cos(bx) dx
(Sol.: (a)
(b)
tan2 (x) dx
(b)
194
5 cos7 x7 cos5 x
35
+k )
9.2.3.
Integraci
on por partes y sustituci
on
(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=
+ k;
J=
195
(4) I =
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=
+k
(Sol.: x ln2 (x) 2 ln (x) + 2 + k )
xn cos(ax) dx.
n(n1)
a2
In2 )
(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
(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
R
dx
dx
; (b)
.
x2 a2
x2 + a2
dx
)
a2
x2 a2 y comprueba que dt =
x2
A continuaci
on se proponen algunos ejercicios mas de los tipos vistos anteriormente.
197
(a)
x2
ln(x+a)
2a
+k )
2x2
4
+k )
tan(x)
2
+k )
ln(b2 sin(x)+a2 )
b2
+k )
R
dx
dx
; (b)
.
9 4x2
3 2x x2
(Sol.: (a) arcsin
x
3
+ k; (b) arcsin
R ex 3e2x
R tan3 (x) + tan(x)
dx;
(b)
dx
1 + ex
1 2 tan(x)
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
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
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
x(2x 5) = 0
(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
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.
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
2(52 2)
3 2
64
3
(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)
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
(9.2c)
201
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
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)
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
(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
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
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
37
12
81
4
1
3
y = r (1 cos t) ,
205
(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
Tema 10
207
10.1.
n1
X m1
X
j=0 k=0
208
f (cjk )v(Rjk )
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
0.25
0.5
0.75
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
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
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
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
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
211
d Z b
f (x, y)dx dy
f(x ,y)
0
f(x ,y )
0
G(y0 )
d
F(x0)
x = x0
d
y=y0
c
b
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
10.1.2.
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
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)
214
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
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
(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)
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
x = y2/ 2-3
4
3
2
x=y+1
1
-2
-1
-2
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
RR
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
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
0y2
0x
2y
2
y, entonces
ZZ
2y
2
xydxdy =
T
!
xy dx dy = . . . =
5
6
7
6
ln 6 )
10.1.3.
C
alculo de
areas
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
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:
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
y= cos(x) + 12
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
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)
1.4
1.2
1
0.8
0.6
x= 2 -
x= y
0.4
0.2
0.5
1.5
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
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
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
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.
(Sol.: h =
10.2.
2
2
Integrales triples
n X
m X
r
X
f (xijk )v(Rijk )
kP k0
224
n
X
j=1
f (xjkl )v(Rjkl )
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
10.2.1.
Integraci
on sobre recintos acotados
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
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.
0x1
0y 1x
0z 1xy
227
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
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
-1
229
x2 + y 2 = 4
2
1.5
1
x2 + y 2 = 1
0.5
-2
-1
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
=
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
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
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
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
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
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
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}
ZZ
ZZ
xy dxdy
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
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)
x2 y dxdy =
ZZ
x2 y dxdy
ZZ
S
x2 y dxdy
x2 + y 2 + 2y = 0
r2 + 2r sin = 0
r = 2 sin
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
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
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
237
x = r cos
r0
[0, 2]
y = r sin
z=z
zR
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
238
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
239
OZ
u
z
O
OY
x
y
OX
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
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
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
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
!
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
RR
S
S = {(x, y) R2 / x2 + y 2 1,
242
y |x| }
2
4 2
u3 )
(Sol.:
2 2
3
ZZ
x cos(x + y)dxdy siendo S el triangulo de
(Sol.:
ln 6 )
(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
243
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
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 =
22.
cos(ax) cos(bx) dx =
23.
sin(ax) sin(bx) dx =
24.
sinn (ax) dx =
25.
cosn (ax) dx =
26.
27.
28.
xn sin(ax) dx =
29.
xn cos(ax) dx =
30.
eax sin(bx) dx =
n R n1
xn
x
cos(ax) dx
cos(ax) +
a
a
n R n1
xn
x
sin(ax) dx
sin(ax)
a
a
31.
eax cos(bx) dx =
32.
xn eax dx =
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
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
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.
249
INTERPOLACIN:
INTERPOLACIN:
Error
Error en
en la
la interpolacin
interpolacin polinmica
polinmica
de
de Lagrange
Lagrange
OBJETIVOS
OBJETIVOS
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
Teorema
Teorema de
de expresin
expresin del
del error:
error: Demostracin
Demostracin
Se verifica que:
i= 0
(i = 0, ..., n)
F(xi) = 0
F(x*) = 0
F C(n+1) ((a,b))
Teorema
Teorema de
de expresin
expresin del
del error:
error: Demostracin
Demostracin
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))
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)!
Ejemplo
Ejemplo 1
1 (1/11)
(1/11)
Ejemplo
Ejemplo 1
1 (2/11)
(2/11)
x0
x1
x x0 x 0.2
L1 (x) =
=
x1 x0
0.8
x0
x1
Ejemplo 1 (3/11)
= ( 0.4 ) .e
f(x)
p1(x)
x0
1 x
6 x 0.2
+ 2.e .
.
0.8
0.8
2.8
x1
Ejemplo
Ejemplo 1
1 (4/11)
(4/11)
f (n + 1) ( x ) n
Aplicamos la expresin: (x) = f(x ) p (x ) =
x xj
(n + 1) ! j = 0
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)
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
Ejemplo
Ejemplo 1
1 (6/11)
(6/11)
(3)
Ejemplo
Ejemplo 1
1 (7/11)
(7/11)
Ejemplo
Ejemplo 1
1 (8/11)
(8/11)
Buscamos ahora
x 0.2 ) ( x 1)
(
x[ 0.2,1]
max
q(x)
Ejemplo
Ejemplo 1
1 (9/11)
(9/11)
| q(0.6) | = 0.16
Ejemplo
Ejemplo 1
1 (10/11)
(10/11)
Ejemplo
Ejemplo 1
1 (11/11)
(11/11)
Ejemplo
Ejemplo 2
2 (1/11)
(1/11)
x0 = 0, x1 =
20
, x2 =
10
Ejemplo
Ejemplo 2
2 (2/11)
(2/11)
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)
(
)(
( 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)
(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)
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:
Ejemplo
Ejemplo 2
2 (6/11)
(6/11)
f(x)
p2(x)
x0
x1
x2
Ejemplo
Ejemplo 2
2 (7/11)
(7/11)
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)
(x) = f( x ) p(x ) =
125. cos(5 cx + 2)
xx
x
3!
10
20
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)
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)
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
Ejemplo
Ejemplo 2
2 (11/11)
(11/11)
q(x)
max
x 0,
x0
x1
10
q(x) = 0.001492
x2
125
0.001492 0.031084
( x )
6
METODOS
NUMERICOS
Una exploracion basada en Scheme
ii
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
.
.
.
.
.
.
.
.
INDICE GENERAL
iv
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
INDICE GENERAL
Indice de algoritmos
83
Indice de c
odigo Scheme
85
Indice de figuras
87
Indice de tablas
89
Indice alfab
etico
91
vi
INDICE GENERAL
Prefacio
The purpose of computing is
insight, not numbers.
R. W. Hamming. Autor de
Numerical Methods for Scientist
and Engineers
vii
viii
PREFACIO
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
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
1.2.
Conceptos b
asicos
1.2.1.
Cifras significativas
|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
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.
(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)
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
> ( 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
10
12
1.2.3.
Incertidumbre y sesgo
Peque
no Larousse Ilustrado: exactitud : Cualidad de ser medido, calculado o expresado
con todo rigor: hora exacta.
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.
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:
10
er(xc ) = xv xc
(1.4)
(1.5)
rel(xc ) =
xv xc
xv
xv xc
rela (xc ) =
xv
(1.6)
(1.7)
aproximar
el valor de 11 con 3.31. Consideraremos que el valor verdadero de
La operaci
on de redondeo aqu es distinta a la que veremos en la seccion 1.3.2
1.3.2.
11
(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.
12
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.
13
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}
(1.10)
1.3.3.
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.
14
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
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!
15
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
(x t)n (n+1)
f
(t) + w(n + 1)(x t)n
n!
(x t)n (n+1)
f
(t)
n!
f (n+1) ()
,
(n+1)!
con entre x y x0 .
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
16
17
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
Que incluye con frecuencia funcionalidad propia de los CAS (Computer Algebra Systems).
18
1.4.1.
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
19
1.4.2.
Software comercial
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
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
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 )
>
22
10
12
14
16
18
20
22
24
26
28
30
32
34
36
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 ) ) ) ) ) )
1.5. METODOS
ITERATIVOS
23
24
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
DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION
26
2.2.
M
etodo de bisecci
on
2.2. METODO
DE BISECCION
10
27
28
DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION
(ki ai bi ).
10
12
14
16
18
20
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.
29
30
DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION
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)
2.3. METODO
DE APROXIMACIONES SUCESIVAS
31
f (x1 ) f (x2 )
x1 x2
(2.2)
2.3.2.
Iteraci
on y convergencia
(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.
32
DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION
2.3. METODO
DE APROXIMACIONES SUCESIVAS
10
12
14
33
34
10
12
14
16
18
20
22
24
DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION
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 )
36
DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION
2.4. METODOS
BASADOS EN INTERPOLACION
37
10
12
14
16
18
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)
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
(2.6)
2.4.3.
M
etodo de Aitken
2.5. METODO
DE BAIRSTOW
39
2.5.
M
etodo de Bairstow
(2.7)
40
DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION
(2.8)
(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)
2.5. METODO
DE BAIRSTOW
41
b0 (rk + r, sk + s) = b0 +
b0
s
sk
b1
s
sk
(2.11)
(2.12)
b0
s = b0
sk
b1
s = b1
sk
(2.13)
(2.14)
(2.15)
(2.16)
42
DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION
2.6. APLICACIONES
43
2.6.
Aplicaciones
Aplicaci
on 2.1 (Modelos poblacionales).
Aplicaci
on 2.2 (Determinacion de valores caractersticos).
44
DE ECUACIONES
CAPITULO 2. METODOS
DE SOLUCION
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
aij xj = bi , 1 i n
(3.1)
j=1
n
X
aij
j=1
j6=i
aii
(k)
xj
+
bi
, 1 i n, aii 6= 0
aii
(3.2)
46
CAPITULO 3. METODOS
PARA SISTEMAS DE ECUACIONES
(3.3)
(3.4)
(3.5)
(3.6)
3.1.2.
M
etodo de Gauss-Seidel
47
(3.9)
(3.10)
3.2.
3.2.1.
M
etodo iterativo secuencial
(3.11)
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
(3.13)
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:
Y CONVERGENCIA
3.3. ITERACION
49
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)
50
CAPITULO 3. METODOS
PARA SISTEMAS DE ECUACIONES
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)
(3.17)
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).
52
CAPITULO 3. METODOS
PARA SISTEMAS DE ECUACIONES
Captulo 4
Diferenciaci
on e integraci
on
num
erica
4.1.
Diferenciaci
on num
erica
h0
f (x + h) f (x)
h
f (x + h) f (x)
h
(4.1)
f (x + h) f (x)
+ O(h)
h
53
(4.3)
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
NUMERICA
4.1. DIFERENCIACION
55
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
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
4.1.1.
F
ormulas de diferencia progresiva y regresiva
(4.4)
4.1.2.
F
ormula de tres puntos
NUMERICA
4.1. DIFERENCIACION
57
2f0 + f1
1
f 00 (x0 ) =
h2
f 0 (x0 ) =
(4.5)
(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 ) =
4.1.3.
F
ormula de cinco puntos
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 ) =
4.2.
Integraci
on num
erica
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
NUMERICA
4.2. INTEGRACION
59
hX
[f (xi1 ) + f (xi )]
2 i=1
X
h
[f (a) + f (b)] + h
f (xi )
2
i=1
(4.8)
n1
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)
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
NUMERICA
4.2. INTEGRACION
10
12
14
16
18
20
61
4.2.3.
Integraci
on de Romberg
62
E INTEGRACION
NUMERICA
CAPITULO 4. DIFERENCIACION
R1,1 =
Rk,1
(4.13)
(4.15)
(4.16)
NUMERICA
4.2. INTEGRACION
10
12
14
16
18
20
22
24
26
28
30
63
64
E INTEGRACION
NUMERICA
CAPITULO 4. DIFERENCIACION
4.2.4.
ln 2
8
M
etodo de cuadratura gaussiana
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
NUMERICA
4.2. INTEGRACION
65
i=1
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
i=1
donde
x0i =
a+b ba
ba
+
xi , wi0 =
wi
2
2
2
(4.22)
E INTEGRACION
NUMERICA
CAPITULO 4. DIFERENCIACION
66
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
Pm/2
j=1
f (x, y2j1 )
4.4. APLICACIONES
Bx =
P(m/2)1
j=1
67
f (x, y2j )
(4.27)
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).
68
E INTEGRACION
NUMERICA
CAPITULO 4. DIFERENCIACION
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)
(5.2)
donde h = (b x0 )/N , y n = 0, 1, . . . , N 1
5.1.1.
M
etodo de Euler y formas mejorada
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)
Y (x + h) Y (x)
h
(5.5)
(5.6)
(5.7)
5.1. METODOS
DE UN PASO
71
10
(5.8)
DE ECUACIONES DIFERENCIALES
CAPITULO 5. SOLUCION
72
5.1.2.
M
etodos de Runge-Kutta
(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:
5.2. METODOS
DE PASOS MULTIPLES
73
10
12
14
16
18
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
(5.11)
DE ECUACIONES DIFERENCIALES
CAPITULO 5. SOLUCION
74
5.2.1.
M
etodo de Adams-Bashforth
(5.12)
xn+1
xn+1
y dx =
xn
f [x, Y (x)]dx
xn
(5.13)
5.2. METODOS
DE PASOS MULTIPLES
75
de donde encontramos:
Z
xn+1
f [x, Y (x)]dx
Yn+1 = Yn +
(5.14)
xn
n
X
k
(1)k (s
k ) ( Fn )
(5.15)
k=0
(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)
DE ECUACIONES DIFERENCIALES
CAPITULO 5. SOLUCION
76
5.2.2.
M
etodo de Adams-Moulton
yn+1 = yn +
(5.19)
yn+1 = yn +
(5.20)
5.3.
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)
5.4. APLICACIONES
77
n0
n0
(5.22)
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).
78
DE ECUACIONES DIFERENCIALES
CAPITULO 5. SOLUCION
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
80
BIBLIOGRAFIA
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
82
BIBLIOGRAFIA
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
84
INDICE DE ALGORITMOS
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
86
INDICE DE CODIGO
SCHEME
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
88
INDICE DE FIGURAS
Indice de tablas
1.1. Precision en Formatos IEEE 754 . . . . . . . . . . . . . . . . .
4.1.
4.2.
4.3.
4.4.
4.5.
89
6
55
56
57
57
65
90
INDICE DE TABLAS
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
92
teorema
de Bolzano, 26
de Taylor, 14
INDICE ALFABETICO
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
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 .
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
ec
,
|Rn (1/2)| = n+1
2
(n + 1)!
1
c (0, )
2
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
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
k=0
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
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
(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
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
1
2
y para x = 1.
X
1
1 1 1
1
=1+ + + +
+
n
2
2 4 8 16
n=0
X
1
1 1 1
1
=1+ + + +
+ = 2
n
2
2
4
8
16
n=0
(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)
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,
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
X
n=0
xn =
1
1x
n=0
1
1x ,
x (1, 1)
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
(an (x a)n )0 =
nan (x a)n1
n=1
n=1
S(t) dt =
0
Z
X
n=0
an (x a)n
=
X
an
(x a)n+1 .
n
+
1
n=0
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
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.
an xn ,
x (r, r).
n=0
f (n) (0)
n! .
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)
n
X
f (k) (0)
k=0
k!
xk +
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
m
X
an cos(nx) + bn sen(nx).
n=0
3.1
Funciones peridicas
2
T .
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 ].
3.2
1
T
T
2
f (x) dx,
T2
2
T
2
bn =
T
an =
T
2
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
f+ (x0 ) + f (x0 )
,
2
siendo
f+ (x0 ) = lim f (x),
xx+
0
3.3
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).
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.
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
x [a, b]
3. f 00 (x) 6= 0,
x [a, b]
M2
(xn xn1 )2
2m1
x[a,b]
x0 = 1
(M N )
f (xn )
, n0
xn+1 = xn 0
f (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
I.T. INFORMTICA
EJERCICIOS BLOQUE I
1
sen x, se pide:
4
a) Demostrar que la ecuacin f (x) = 0 posee una nica raz real, determinando razonadamente
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.
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.
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.
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.
I.T. INFORMTICA
EJERCICIOS BLOQUE II
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.
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
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
(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
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
n=
CURSO 2011-2012
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
3
1 + x, se pide:
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.
1 1
, ),
10 10
1
, de la cual se sabe que 0 f (x) < 10, x [0.2, 0.2].
1 sen x
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
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
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
(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)n
(1)n
x2n
(2n + 1)22n
n
xn
n+1
(1)n (n + 1) 2n
x
3n
n=1
1+n
n!
,
y
2n1
n+1
2
2
n=1
n=1
n!
1+n
diverge,
y
2n1
n+1 converge
2
2
n=1
n=1
1+n
n!
converge,
y
2n1
n+1 diverge
2
2
n=1
n=1
e2n
3n 1
, y
n!
2n+1
n=1
n=1
e2n
3n 1
converge
diverge y
n!
2n+1
n=1
n=1
e2n
3n 1
converge, y
diverge
n!
2n+1
n=1
n=1
n=1
(1)n
3n 2n
x , en su campo de convergencia.
n
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
(2)n xn = 1 2x + 22 x2 23 x3 + . . . + (2)n xn + . . ..
n=0
(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)
(1)n
n=1
3 1
( , )
2 2
3n
n 2n+1
X No se puede calcular, por no ser convergente.
3
2
Otra respuesta :
n=0
1
1 3x2
1
1 + 3x2
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
n+1
xn
, calcular la suma de la serie:
.
n!
n!
n=0
n=0
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<
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 <
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
+ x,
/2,
f (x) =
, 0x
definida en el intervalo [, ] y exten2
0, x 0
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
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)?
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) =
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
3
, 1 . Se pide:
Derivaci
on de series de potencias:
Sea F (x) =
n=0
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) =
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.
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
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
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 ).
CURSO 2011-2012
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 ].
1. Demostrar que x
= 7 127 es la nica solucin real de dicha ecuacin.
]
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).
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
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).
17.
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).
X R(x) = 2x.
R(x) = x Q(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).
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.
X Q(x) = P (x)
X R(x) = x(x + 2)
R(x) = x
xP (x).
P (x).
Es un polinomio de grado 1.
CURSO 2011-2012
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.
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
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
(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
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
Prcticas de Aula
N 11
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:
Sol. Grficamente se puede observar que la funcin tiene una raz en el intervalo [-5, 5]
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
2 log 10 + log(3 4)
log 2
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
] = [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
) [
]=[
Ejercicio 2
Sea la ecuacin x = f(x) para f(x) = log(x) + 3/2
Representacin general de la ecuacin:
Raz de la ecuacin:
x = f(x)
235767
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
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].
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:
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.
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:
[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.
f (x) 0, x [1,2]
f (x) 0, x [1,2]
Tomamos x0 = /2 y evaluamos:
5
f ( /2 )= +35
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).
( )
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
( )
( )
=55
11 5 53 + 93 5 52 232 5 5 + 168
2
33 5 5 + 186 5 5 232
= 489746682
11 3 + 93 2 232 + 168
33 2 + 186 232
( )
( )
( )
( )
= 466929134
= 457919719
= 4 57244553
(466929134)
(466929134)
4 57919719
4 57919719
4 57244553
(4 57244553)
= 457919719
= 4 57244553
= 4 57240851
min | ( )|
[ , ]
4 57240851
= 1714653 10
2 66666666
Ejercicio 1
=
Consideremos el soporte
1,
, 0, 2 , 1,
, 2, 1
se pide:
( )=
,
= 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
1
2
1
2
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
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
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
+2 ]
Clculo y representacin grfica del polinomio interpolador de Lagrange para el soporte S inicial:
El polinomio interpolador de Lagrange se calcula como:
( )=
( ))
( ) = (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
Ejercicio 1
(
se pide:
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)
(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.
(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.
Ejercicio 2
(
se pide:
( + 2)
=2
=
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
.
3
3
2 |( + 2)|
< 1 2 |( + 2)| < 3 |( + 2)| <
<
2
3
2
2
Por tanto, el radio de convergencia ser de R = 0381101578
S(n) X0=0
+273683681
+162182922
+96108398
+56953125
+33750000
+20000000
+11851852
+07023320
+04161967
+02466351
+01461541
+00866099
+00513244
+00304144
+00180234
+00106805
lim
2 ( + 2)
3
3 +1
2
|( + 2)| < 1
3
= lim
Por tanto,
2 ( + 2)
3 +1
33
2 ( + 2)3
33
1
2 ( + 2)
3
2 ( + 2)3
+1
2
3
( + 2)
1
1
2
2
=
(
)
1
3 1 +2
3 3
2 ( + 2)
3
3 +1
2
3 3
+1
Ejercicio 1
Consideremos la funcin real de dos variables:
( , ) =
se pide:
( , ) =
3
+2
6
6
( +2 )
+2
( , )=
( , )
( , )=
6
24
6
+
( +2 )
( +2 )
+2
( , ) =
3
+2
( , )
( , ) =
( , )=
6
(
+2 )
3
+2
24
18
( +2 )
( +2 )
= 002400000.
)| =
| ( ,
)| =
2 2
+2 )
+
2
3 2
2+2
6
6 2
2+2
( 2 + 2 )2
Donde,
| (1, 1)| =
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:
( , ) = ( , )(
)+
( ,
)(
( , ) =
( , )=
+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
; | |
| |
(3) + (2) = 13 | =
|
Por tanto,
0,
(3,4),
(3,4)
0,
13 13
48 3 936 2
289 13 289 13
= 193473286434267
Ejercicio 1
( , )=
Consideremos la funcin:
(2 )
(2
) se pide:
(2 )
(2 ) (2 ) > 0 > 2
> 2
2
Nota: el borde no entra.
( , )=
(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
+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 ).
+2
+
+1
+
-2
-2
-1
+1
+2
-
-1
-
-2
+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
P1 (-1, +)
P2 (-1, -)
P3 (+1, +)
P4 (+1, -)
Otros puntos de inters:
Pi1 (0, +)
Pi2 (0, 0)
Pi3 (0, -)
Plano XZ
Plano ZY
2(
(2 )
+ 2)
( 2)
(2 )
2
= 4 log (
+ 2)
(2 )
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
0,
> 0,
> 0,
(0,0) > 0,
< 0,
> 0,
0,
0,
> 0,
CURSO 2011-12
- GRUPO 3
TRABAJO OPTATIVO:
INTRODUCCIN A LAS ECUACIONES DIFERENCIALES
ORDINARIAS
Realizado por
Ejercicio 2
Sea la ecuacin diferencial: y + 2y = ex . Se pide:
3. Obtener la solucin particular que pasa por el punto (0, 2) (esto es, tal que y(0) = 2).
Solucin:
Ejercicio 4
Dado el problema de Valor Inicial:
+ 2 = 9
(1) = 18,
1 2
1. Calcular la solucin exacta.
Obtenemos
9(
+ 7)
4
= 0 1
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
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
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,
=
9 22
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)
= | (
= | (
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.
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).
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
CURSO 2011-12
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.
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.
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
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
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)
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
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)
abf(x)
dx
f.integral(x)
x |--> 1/3*x^3 - 5/2*x^2 + 7*x
f.integral(x,0,1)
x |--> 29/6
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
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.
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?
plot(f(x),(x,0,10),color='green',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')
)
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=':',
color='red'
color='red'
color='red'
color='red'
)+
)+
)+
))
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)))
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.
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
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
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,
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.
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
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') )
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
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
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))
)
10
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
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.:
1.00000000000000
0.25000000000000
0.06250000000000
0.01562500000000
0.00390625000000
11
0
1
2
3
3)*(x
3)*(x
2)*(x
2)*(x
2)
1)
1)
1)
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)
grafica_pol_aux_lagrange(soporte,2)
grafica_pol_aux_lagrange(soporte,3)
En realidad, el polinomio interpolador Pn(x) no es ms que una combinacin lineal de estos polinomios
auxiliares. Basta recordar que:
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)= ()
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]
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)
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
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)
10
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.
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)
11
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:
12
o en el punto medio:
13
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:
q(x)=3*x^2;maxder=q(2);maxder
12
14
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'))
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]
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)
15
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
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:
17
El clculo del mximo de f(x) en [0,2], no es sencillo, una acotacin simple es:
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
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
19
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
Necesitamos 32 particiones.
st=suma_trap(f(x),0,2,32);st.n()
0.451384345465401
20
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')
21
La frmula que se obtiene de aproximar la integral como el rea encerrada por estas parbolas se conoce
como regla compuesta de Simpson:
22
y por tanto:
error_simp=(b-a)^5/(180*n^4)*maxder4; error_simp.n()
3.01783264746228
23
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:
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)
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]
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)))
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')
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
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:
en el intervalo de
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
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
Lo que nos garantiza una aproximacin con una precisin de 1 cifra decimal exacta.
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.
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
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:
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)
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)
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()
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)
Derivadas parciales
Para calcular las derivadas parciales de una funcin utilizamos el mtodo o la funcin .diff(). Como
argumentos tenemos:
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
cos(1) + 6
6.54030230586814
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)
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)
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())
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)
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)
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:
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)
-6
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
Si resolvemos este sistema de dos ecuaciones con dos incgnitas, obtendremos todos los puntos crticos.
Ejemplo
Dada la funcin
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)
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
11
matriz hessiana:
punto crtico:
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
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.
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 ,
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.
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):
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.
[x^2 + c, 'linear']
[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) .
2) y=7y
[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
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
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)
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)
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:
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.
con (0,1) , tiene infinitas soluciones (una de ellas la solucin nula). No lo vemos aqu.
Podemos dibujar soluciones particulares mediante el mtodo append. Vemoslo con el siguiente ejemplo.
10
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)
11
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.
12
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)
13
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
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.
15
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).
Ejemplo 10. Mediante dos pasos del Mtodo de Euler, obtener una aproximacin de (1) , siendo la nica
solucin del
y
1
-1
-11/4
h*f(x,y)
-2
-7/4
-11/8
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
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
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
17
tabla_euler = metodo_euler(0,1,1,5);
[
[
[
[
[
[
0
1
2
3
4
5
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]
El proceso se repite para i=1,...,N, obteniendo el siguiente esquema iterativo (o algoritmo) del Mtodo de Heun:
[
[
[
[
[
[
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]
[
[
[
[
[
[
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]
19
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
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
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
0.00000000]
0.12532985]
0.54462600]
1.77536995]
5.14531736]
13.98273122]
21
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):
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
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
CALCULO
INFINITESIMAL Y NUMERICO
Grado en Ing. Inf. (Tecnologas Inform
aticas), Grupo 4
Examen de convocatoria oficial, 1 de Febrero de 2011
APELLIDOS:
NOMBRE:
1
= 0. Se pide:
x
X
3n
n!
n=0
ii)
X
2n
32n
n=0
ii) G(x) =
X
n! xn
n3
n=0
xn
(5)2n
n=0
Ln (xy)
+ y.
x
CALCULO
INFINITESIMAL Y NUMERICO
Grado en Ing. Inf. (Tecnologas Inform
aticas), Grupo 4
Examen de convocatoria oficial, 5 de Septiembre de 2011
APELLIDOS:
NOMBRE:
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
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).
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)
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:
Laboratorio de Matemticas
Release 2010/2011
ndice general
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
41
41
48
50
59
60
72
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
77
. 77
. 82
. 87
. 89
. 99
. 101
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
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
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
209
209
213
226
228
236
238
246
249
288
292
ndice
II
.
.
.
.
.
.
.
.
299
CAPTULO 1
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.
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.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.
1.6. Licencia
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.
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:
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 :
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 : 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
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.
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]
var1=2
var2=3
#La variable es_menor almacena un booleano
es_menor = var1 < var2
sage: factorial(1000)
40238726007709377354370243392300398571937486421071463254379991042993851239862902059204420848696940480
sage: numero = factorial(1000)
sage: numero/factorial(1001)
1/1001
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
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
10
[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.
sage: d.exact_rational()
Traceback (most recent call last):
...
AttributeError: float object has no attribute exact_rational
sage: c.exact_rational()
5404319552844595/4503599627370496
11
cadena1
cadena2
cadena3
cadena4
=
=
=
=
Hola
a todas
#presta atencion al espacio en blanco al principio
cadena1 + cadena2
cadena1 + .*3 + cadena2
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
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]
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
13
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
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.
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
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)
15
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
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
16
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. Ejercicios
17
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>
\->
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
18
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:
19
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
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.
20
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
21
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
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
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
23
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
sage: radio?
<html>...</html>
sage: sin?
<html>...</html>
sage: is_prime?
<html>...</html>
sage: factorial?
<html>...</html>
...
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
25
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
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
...
...
...
...
...
...
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.
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
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/
n! = n (n 1)! si n > 0
28
...
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).
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:
29
...
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
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)
30
...
return acumulador
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>
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]
31
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: 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]
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]
...
32
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
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
33
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.
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
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
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.
35
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.
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)])
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
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
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):
37
...
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
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:
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
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 3
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.
41
...
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 borrar elementos:
42
conjunto.remove(elemento)
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])
43
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
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
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
45
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
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)
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
47
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
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
%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
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.
Generaliza el resultado a dados con un rango mayor de valores, o a un nmero arbitrario de dados.
50
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
51
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)
52
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)
53
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
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) .
55
16
1
16+15
17
1+1
17+
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
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
57
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
...
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
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
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.
60
sage:
sage:
sage:
...
...
...
...
...
...
...
sage:
...
...
sage:
sage:
sage:
...
...
...
sage:
sage:
sage:
...
...
...
...
61
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}
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
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}
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]]
63
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
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
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
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):
65
...
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
66
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
67
...
...
m[j,k]=h
return m
/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:
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
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
69
m[j,k]=h
...
...
return m
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
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
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
71
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
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
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
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:
...
...
...
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
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
76
CAPTULO 4
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.
77
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]
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.
78
Ejercicios
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)
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.
79
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.
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
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
N
1
X
uj mj + uN dN
j=1
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
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
x ai (mod mi )i x c(mod m1 mN )
82
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
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)
83
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
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:
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
84
sage: q?
<html>...</html>
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]
85
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]
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]
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)
4.3. Ejercicios
87
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.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
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
89
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
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
#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
91
[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
92
User
[1 1
[1 0
True
[1 1
[1 0
basis matrix:
0]
1]
0]
1]
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
2
2
3
3
2
2
2
4
1
1
3
2
93
1
4
1
0
2
2
0
1
3
3
4
1
0 1
3
2
5
2
3
5
4
94
2
2
2
1
1
1
8, -3], [ 5,
1,
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
1
0
0
0
0
1
0
0
0
0
1
0
5,0
0 2,0
1,0 6,0
2,0
0
0
0
1
2,0
3,0
3,0
4,0
sage:
sage:
sage:
(3.0,
(1.0,
sage:
sage:
sage:
sage:
sage:
95
4,
1]])
2
0
1
1
2
0
2
1
= 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]
96
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]
97
8
1
4
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]
)
[(1, [(0, 0, 1)] , 1) , (-1*I, [(1, 1*I, 0)] , 1) , (1*I, [(1, -1*I, 0)] , 1)]
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
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])
]
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
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
4.5.5 5.
Hallar la forma de Jordan y una matriz de paso de las siguientes matrices.
100
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.
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.
101
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).
0,2,0,
1,0,3])
...
return ...
sage: def complemento_ortogonal(W):
...
Devuelve el complemento ortogonal en V del subespacio
...
que se pasa como argumento
...
...
return ...
102
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
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.
1,0,3])
103
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 5
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
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]
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
b]
c]
c]
b, c]
d]
d]
b, d]
d]
c, d]
[b, c, d]
[a, b, c, d]
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
108
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
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,
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
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
5.1. Combinatoria
111
...
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]]
112
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
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
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)
115
y:
pk (n) = 0 si k 0, k > n, n 0
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
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
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}
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}
117
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}
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
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.
119
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
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.
121
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
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.
sage: g2 = graphs.CycleGraph(4)
sage: show(plot(g2))
5.4. Grafos
123
sage: g3 = graphs.CubeGraph(3)
sage: show(plot(g3))
124
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
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
126
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
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
sage: g6 = g4*3
sage: show(g6,layout=circular)
5.4. Grafos
129
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)
g8 = Graph()
g8.add_vertex(0)
g8.add_vertex(1)
g8.add_edge(0,1)
plot(g8)
5.4. Grafos
131
Ejercicio
Modifica el grafo g6 aadiendo un vrtice y uniendo todos los otros vrtices al nuevo vrtice.
132
print g1.is_connected()
print g1.is_planar()
print g1.is_eulerian()
print g1.is_tree()
show(g1.plot())
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. Grafos
133
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]
[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))
5.4. Grafos
135
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
136
Encuentra un subgrafo inducidos del grafo graphs.CubeGraph(4) que sea isomorfo al grafo
graphs.CubeGraph(3)
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
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
602/729
CPU time: 0.09 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
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).
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
Ejercicio
Calcula la probabilidad por fuerza bruta contando los casos favorables y por el mtodo de Monte Carlo.
L = 10
T = 1000
frecuencias = [0]*L
for j in range(T):
141
...
...
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)
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
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 .
144
CAPTULO 6
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.
145
a2 + b2 + c2
a3 + b3 + c3
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())
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
sage: p = sin(3*a)
sage: show(p.expand_trig())
2 cos (a) + 1
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
147
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
148
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
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
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
149
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 .
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
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]
151
]
(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
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
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:
1
1
1
a1
a2
a3
a21
a22
a23
2
3
1
3
1
a
153
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]
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
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]]
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
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)
156
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
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)
157
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)
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
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
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)
159
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
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>
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>
161
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)
162
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.
163
sage: plot(f2,-5,5,color=(1,0,0))
164
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
165
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]]
166
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
167
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
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
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>
169
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)
Pasamos los intervalos como tuplas con los extremos del intervalo.
::
sage: plot(f)
170
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
on (1, 0)
on (0, 1)
171
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
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.
2
sin (x + y)
173
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)
174
175
176
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)
177
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()
178
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 .
179
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
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
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()
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)
181
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()
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()
sage: plot_vector_field(f7.gradient(),(x,-2,2),(y,-2,2)).show(aspect_ratio=1)
182
183
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
185
Ejercicio
dibuja la regin 0<=x<=1,x*(1-x)<=y<=sin(pi*x)
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
Por supuesto, con funciones ms complicadas, este tipo de sistemas de ecuaciones no lineales es casi imposible de
resolver.
sage:
sage:
sage:
sage:
187
sage: solve(f.gradient(),[x,y])
[2*x + cos(x + y), 4*y^3 + cos(x + y)]
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
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
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:
189
190
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)
191
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
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
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
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
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.
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
194
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:
(t + 1, 3 t 1)
195
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
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)
197
sage:
sage:
sage:
sage:
sage:
sage:
sage:
sage:
198
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]
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() .
199
sage: polar_plot?
<html>...</html>
sage: var(theta)
sage: polar_plot(cos(theta)^2, (theta,0,2*pi))
Ejemplos
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
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)
201
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.
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
=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: 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
(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)
203
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
204
...
...
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()
205
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.
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
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
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
208
CAPTULO 7
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
209
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
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
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]$$
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
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
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
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
#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)
213
...
...
...
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
N
X
xi f (xi )
i=1
2 = V ar[X] =
N
X
(xi )2 f (xi )
i=1
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
215
[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.
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()
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
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)
217
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
...
...
...
j
+= 1
prob += f(k=j)
return j
sage: extraccion_aleatoria_d(f_geometrica)
1
sage:
sage:
sage:
sage:
...
...
sage:
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))
219
220
...
return integral((x-m)^2*f,x,-oo,oo)
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]))
221
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
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)
223
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
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))
225
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.
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.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
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
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.
229
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
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
231
sage:
sage:
sage:
sage:
...
sage:
sage:
a2 x + a3 sin (a4 x a5 ) + a1
232
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.
233
0, 5
42
1
14
2
7, 5
3
0, 4
5
0, 11
9
0, 05
15
0, 002
234
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))
for d in datos]
235
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
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
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.
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. Ejercicios
237
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.
238
sage:
sage:
sage:
sage:
...
sage:
...
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
...
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
239
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 )
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
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
241
...
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
...
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
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
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.
243
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:
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:
244
sage:
sage:
sage:
sage:
sage:
sage:
sage:
SIPDIS
STATE
STATE
STATE
USDOC
USDOC
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.
245
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
246
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
\->
EN UN LUGAR DE LA MANCHA
\->
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
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:
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]
[(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
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
249
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).
Dibujamos el grafo
sage: g = grafo_malabar(3,4)
sage: g.show(edge_labels=True, layout=circular, vertex_size=300, figsize=8)
250
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))
251
sage: graphviz(grafo_malabar(2,4))
252
sage: graphviz(grafo_malabar(3,5))
253
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
255
256
Y mucho ms
Bolas distintas (por su color o por su naturaleza).
Varios malabaristas.
...
Ms ejemplos en los ejercicios del final.
257
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
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
g = grafo_malabar(3,5)
#Partimos del estado fundamental
a = camino_aleatorio(g, ***__, longitud = 10)
a.show(delay = 200)
259
260
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]
261
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
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
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))
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]
263
264
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)])
265
266
...
...
...
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])
267
268
269
270
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
271
272
273
274
275
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
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.
277
278
sage:
sage:
sage:
sage:
...
...
...
...
...
...
...
...
...
...
...
sage:
...
sage:
sage:
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)
279
280
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
281
282
283
284
285
sage:
sage:
sage:
sage:
...
sage:
286
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
287
288
289
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
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), (
291
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),
292
...
...
...
...
...
...
...
...
...
...
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])
293
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)
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)
295
...
...
...
...
...
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))
...
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
genindex
search
297
298
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
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
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
ENLACES