Saturday, November 13, 2010

Dica Python: Função lambda & Matplotlib para aproximar derivada e visualizar gráfico

O código abaixo mostra como usar o matplotlib e funções lambda em Python para computar a derivada e visualizar o gráfico. No gráfico é possível ver a função \(f(t) = t^2\) e a equação aproximada para tangente num ponto P de f(t).
Em Python lambda é uma função que contém só expressões. Sua forma geral é:
f = lambda [lista de parâmetros] : [expressão].

A biblioteca Matplotlib para Python, serve para visualização de dados em forma de gráficos. (Este código também utilizará recursos do Numpy de forma direta.)

Para mais informações visite:
www.python.org
www.scipy.org
http://matplotlib.sourceforge.net/

Aproximando a derivada
Para calcular a aproximação para derivada, em geral, a partir da definição, utiliza-se a
forma:
$$ f'(x) \approx \lim_{h \to 0} \frac{f(x + h) - f(x)}{h} $$ .
O valor para f' é obtido aplicando-se limite, ou seja, \(f'(x) = \lim_{h \to 0} \frac{f(x+h) - f(x)}{h}\), que significa que "a medida que tomamos valores da h cada vez mais próximos de 0 o valor do limite se tornará mais próximo de L logo,
$$ \lim_{h \to 0 } f(x) = L$$ .

Para mais informações:
www.openstudy.com/
http://ocw.mit.edu/
www.wikipedia.org/

Nestes sites é possível encontrar video aulas, informações extras e etc.. O código desta dica está abaixo e com comentários.

#-*- encoding: utf-8 -*-
#Este codigo desenha o gráfico de f e uma aproximação
#para sua tangente em P.

import numpy
import numpy as np
import matplotlib.pyplot as plt


#Aproximação da derivada : d/dx(f) = f'(x) ~ (f(x+h) - f(x))/h
#Função que aproxima valor da derivada em P
def deriv(f, x, delta):
return ( (f(x+delta) - f(x))/delta )

#Vetor contendo valores para t. Usada para grfico
t = np.arange(-1.0, 2.5, 0.1)
#Cria "figura" para o gráfico.
plt.figure(1)

#Função y=f(x)
f = lambda x: x**2

#Aproximação para equação da reta tantegente a função
#f(t) em P(x1,y1).
r = lambda x, x1, y1, delta: deriv(f, x1, delta)*(x-x1) + y1

#texto para os eixos de coordenadas
plt.xlabel('t')
plt.ylabel('f(t)')

#titulo
plt.title('Aproximando valor da derivada')

#Definindo P=(x0,y0). Ponto de tangência.
x0, y0 = 1.5, f(1.5)

#f'(x) ~ ( f(x+h) - f(x) )/ h
#Parametro para aproximação
h= 0.00001


#Criando gráfico.
plt.plot(t,f(t), t, r(t,x0, y0, h), x0, y0, 'bo')

#Exibindo o gráfico
plt.show()

Gráfico:





(Para dicas, sugestões e correções e/ou apontamento de erros favor
deixar seu comentário.)