Este trabalho está licenciado sob a Licença Atribuição 4.0 Internacional Creative Commons. Para visualizar uma cópia desta licença, visite http://creativecommons.org/licenses/by/4.0/ ou mande uma carta para Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

Autor/Instituição: Pedro H A Konzen / UFRGS

pedro.konzen@ufrgs.br

Data: Out/2015

Cálculo com Python

Nesta terceira parte do curso vamos estudar como usar o python para calcular derivadas de funções de uma variável.

3 - Derivadas

Aqui você irá aprender a usar a biblioteca Python de matemática simbólica Sympy para calcular:

  • derivadas

  • retas tangentes

  • derivadas de ordem mais altas

  • máximos e mínimos

Começamos carrendo a biblioteca Sympy:


In [1]:
from __future__ import division
from sympy import *
init_printing()
x, y = symbols('x y') #define x e y como variáveis simbólicas.

Para fixar as ideias, vamos continuar trabalhando com a função:

$f(x) = (x^3 - 3x + 2)e^{-x/4} - 1$.


In [2]:
def f(x): return (x**3 - 3*x + 2)*exp(-x/4) - 1
f(x)


Out[2]:
$$\left(x^{3} - 3 x + 2\right) e^{- \frac{x}{4}} - 1$$

Derivadas

Vamos ver como podemos usar o Sympy para calcularmos a derivada da função $f(x)$, i.e. $f'(x)$. Para tanto, usamos a função $\verb+diff+$:


In [3]:
diff(f(x),x)


Out[3]:
$$\left(3 x^{2} - 3\right) e^{- \frac{x}{4}} - \frac{e^{- \frac{x}{4}}}{4} \left(x^{3} - 3 x + 2\right)$$

Para avaliar a derivada em um ponto, por exemplo, para calcular $f'(1)$, digitamos:


In [4]:
diff(f(x),x).subs(x,1)


Out[4]:
$$0$$

Exercício:

Sendo $g(x) = x^2 + \frac{1}{2}$ calcule $g'(1)$.


In [5]:
#digite sua solução aqui!

Retas Tangente

Aqui, vamos ver como calcular a reta tangente ao gráfico da função $f(x)$ no ponto $x_0 = -\frac{1}{2}$. Lembremos que tal reta terá equação:

$y = f'(x_0)(x - x_0) + f(x_0)$.

Desta forma, vamos calcular $f'(x_0)$:


In [6]:
x0 = -1/2
fl = diff(f(x),x).subs(x,-0.5) #f'(x_0)
print("coef. angular = ")
fl


coef. angular = 
Out[6]:
$$-3.50567802667549$$

Agora, já podemos definir a reta tangente:


In [7]:
def r(x) : return fl*(x-x0) + f(x0)
print("equação da reta tangente y=")
r(x)


equação da reta tangente y=
Out[7]:
$$- 3.50567802667549 x + 1.07153701576279$$

Vejamos os gráficos de $f(x)$ e da reta tangente calculada.


In [8]:
%matplotlib inline
p1 = plot(f(x),(x,-2,2),show=False,line_color='b')
p2 = plot(r(x),(x,-1.5,1),show=False,line_color='r')
p1.extend(p2)
p1.show()


$\blacktriangleleft$

Exercício:

Encontre a reta tangente ao gráfico de $y = \frac{1}{x}$ em $x=1$. Faça os esboços dos gráficos da função e da reta tangente em um mesmo gráfico.


In [9]:
#digite a resolução aqui.

Derivadas de ordem mais altas

Similarmente a derivadas de primeira ordem, as derivadas de ordem mais alta podem ser obtidas usando-se a função $\verb+diff+$. Por exemplo, para calcularmos:

$\frac{d^2}{d x^2}f(x)$

podemos digitar:


In [10]:
diff(f(x),x,2)


Out[10]:
$$\frac{e^{- \frac{x}{4}}}{16} \left(x^{3} - 24 x^{2} + 93 x + 26\right)$$

Exercício

Calcule:

$\frac{d^3}{d x^3}\left(\frac{x^2 - 1 + \text{sen}\,x}{x^3 - 3x + 1}\right)$.


In [11]:
#digite sua resposta aqui!

Máximos e Mínimos Locais

Agora, vamos ver como podemos usar o que aprendemos até aqui para resolver problemas de máximos e mínimos. Nosso objetivo será de encontrar e determinar os pontos de máximos e mínimos locais da função $f(x)$. Para tanto, vamos usar o teste da segunda derivada.

Comecemos lembrando do gráfico de $f(x)$:


In [ ]:
plot(f(x),(x,-2,2))
plot(f(x),(x,2,40))
plot(f(x),(x,40,60))

Observando os gráficos, vemos que os pontos críticos de $f(x)$ têm máximos locais próximos ao ponto $x=-1$ e $x=10$ e um mínimo local próximo do ponto $x=1$. Logo, podemos usar estes valores como parâmetro da função $\verb+nsolve+$:


In [ ]:
fl = diff(f(x),x) #calcula $f'(x)$
x1 = nsolve(fl,x,-1) #calcula ponto crítico próx. de x=-1
x2 = nsolve(fl,x,1) #calcula ponto crítico próx. de x=1
x3 = nsolve(fl,x,10) #calcula ponto crítico próx. de x=10
print("x1=",x1)
print("x2=",x2)
print("x3=",x3)

Ok. Acamos de encontrar os pontos críticos de $f(x)$ (podem haver outros pontos críticos?). Por inspesão gráfica, vemos que $x_1 \approx -1,15$ e $x_3 \approx 12,15$ são os pontos de máximos locais de $f(x)$ e $x_3 = 1,0$ é o ponto de mínimo (global?).

Vamos confirmar isso com o teste da segunda derivada. Observe:


In [ ]:
diff(f(x),x,2).subs(x,x1) #calcula f''(x1)

In [ ]:
diff(f(x),x,2).subs(x,x2) #calcula f''(x2)

In [ ]:
diff(f(x),x,2).subs(x,x3) #calcula f''(x3)

Exercício

Referente ao problema de otimização que acabamos de discutir, responda:

(a) Os pontos $x_1$, $x_2$ e $x_3$ calculados acima são os únicos pontos críticos de $f(x)$? Justifique sua resposta.

(b) Quais são os pontos de mínimo e máximo globais de $f(x)$?

(c) Qual é o maior valor que $f(x)$ assume? E qual é o menor?


In [ ]:
#digite sua solução aqui!

Referências

Próxima parte: 4 - Integral


In [ ]: