3.3. Derivadas sucesivas#

Vamos a suponer que tenemos una función f:(a,b)R, derivable en (a,b). Podemos considerar, entonces, su función derivada en (a,b):

f:(a,b)Rxf(x)

Definition

Dado un punto x0(a,b) definimos la derivada segunda de f en x0 como la derivada de f en x0, es decir, como el siguiente límite:

f(x0)=(f)(x0)=limh0f(x0+h)f(x0)h.

Si este límite existe y es finito, se dice que f es derivable dos veces en x0.

Definition

Si f admite derivada segunda en todo punto de (a,b) definimos su derivada tercera en x0 como el límite, si existe,

f(x0)=(f)(x0)=limh0f(x0+h)f(x0)h.

Así podríamos definir la derivada cuarta, etc. En general, una vez que se tiene fn1:(a,b)R, definimos la derivada n-ésima en x0 como:

fn(x0)=(f(n1))(x0).

Por ejemplo, si partimos de una función sencilla,

  • f(x)=sin(x)+x2,

  • f(x)=cos(x)+2x,

  • f(x)=sin(x)+2,

  • f(x)=cos(x),

  • etc.

La orden en Sympy para calcular la derivada n-ésima de una expresión es la siguiente:

import sympy as sp

x = sp.symbols('x', real=True)
f_exp = sp.sin(x) + x**2
display(f_exp)
display(sp.diff(f_exp,x))
display(sp.diff(f_exp,x,2))
display(sp.diff(f_exp,x,3))
# Nota: también se puede usar la siguiente escritura:
# display(f_exp.diff(x,3))
x2+sin(x)
2x+cos(x)
2sin(x)
cos(x)

Definition (Clase de una función)

Sea f:(a,b)R. Diremos que

  1. f es de clase n en (a,b), fCn(a,b), si existen las n primeras derivadas de f, f, f, , f(n, y además f(n es una función continua,

  2. f es de clase 0 en (a,b), fC0(a,b), si f es continua,

  3. f es de clase en (a,b), fC(a,b), si fCn(a,b),nN,

  4. f es de clase n en [a,b], fCn[a,b],si existe (c,d)[a,b] tal que fCn(c,d).

Veamos un ejercicio/ejemplo completo para practicar:

Example

Sea la función f(x)=12x|x|, xR. ¿Cuál es la clase de f en R?

Respuesta: En primer lugar, separamos el valor absoluto según lo de dentro sea positivo o negativo,

f(x)={12x2si x<0,12x2si x0.

La representación gráfica de f en Sympy se puede obtener del siguiento modo:

f_expr = 0.5*x*sp.Abs(x)
p = sp.plot(f_expr, (x, -4, 4), show=False)
p[0].line_color='r'
p.xlabel='x'
p.ylabel='y'
p.show()
../../_images/03.DerivadasSucesivas_3_0.png

Ahora vamos a comprobar si f es una función continua. Es evidente que f es continua en todo punto x distinto del 0, ya que para x<0 y para x>0 f es un polinomio. El 0 es un punto que debemos estudiar con más cuidado, ya que en él se produce un cambio en la definición de f. Calculamos sus límites laterales,

limx0f(x)=limx012x2=0=f(0),limx0+f(x)=limx0+12x2=0=f(0).

Como los dos límites coinciden con el valor de la función en ese punto, ya sabemos que f es continua en 0 y, por tanto, continua en todo R. Entonces

fC0(R).
f = sp.Lambda(x, f_expr)
display(sp.limit(f(x),x,0,dir='-'))
display(sp.limit(f(x),x,0,dir='+'))
print('f es de clase 0?', sp.limit(f(x),x,0) == f(0))
0
0
f es de clase 0? True

Vamos a calcular ahora la derivada de f. El 0 es el punto problemático. Estudiamos f(0) en primer lugar, calculando sus derivadas laterales:

f(0)=limh0f(h)f(0)h=limh012h20h=limh012h2=0,f(0+)=limh0+f(h)f(0)h=limh0+12h20h=limh0+12h2=0.

Como las derivadas laterales coinciden, sabemos que f es una función derivable en el 0 y que f(0)=0. En el resto de puntos es muy sencillo derivar, porque f es un polinomio. Resulta entonces,

f(x)={xsi x<0,0si x=0,xsi x0.

Es muy sencillo comprobar que f es una función continua. Entonces

fC1(R).

La representación gráfica de f se obtiene del siguiente modo.

p = sp.plot(f_expr.diff(x,1), (x, -4, 4), show=False)
p[0].line_color='r'
p.xlabel='x'
p.ylabel='y'
p.show()
../../_images/03.DerivadasSucesivas_7_0.png

Ahora intentamos calcular la derivada segunda de f. Comenzamos con el punto problemático, x=0, calculando sus derivadas laterales.

f(0)=limh0f(h)f(0)h=limh0h0h=limh01=1,f(0+)=limh0+f(h)f(0)h=limh0+h0h=limh0+1=1.

Como las derivadas laterales no coinciden, resulta que f(0). Por lo tanto

fC2(R).

Con la ayuda de Sympy podríamos analizarlo del siguiente modo:

f1_expr = f_expr.diff(x,1)
f1 = sp.Lambda(x, f1_expr)

h = sp.symbols('h', real=True)
f2_0Minus = sp.limit((f1(h)-f1(0))/h,h,0,dir='-')
f2_0Plus = sp.limit((f1(h)-f1(0))/h,h,0,dir='+')
print('f2_0Minus = ', f2_0Minus, ', f2_0Plus = ', f2_0Plus) 
print('Existe f\'\'(0)?',f2_0Minus==f2_0Plus)
f2_0Minus =  -1.00000000000000 , f2_0Plus =  1.00000000000000
Existe f''(0)? False