Consideremos o problema de, dada uma função e o seu domínio, traçar o respectivo gráfico. Vejamos uma solução possível que se socorre do módulo cTurtle.
def grafico(tartaruga,funcao, valores):
""" Desenha o gráfico da função f."""
tartaruga.up()
tartaruga.goto(valores[0], funcao(valores[0]))
tartaruga.down()
for indice in range(1,len(valores)):
tartaruga.goto(valores[indice], funcao(valores[indice]))
Como se pode ver, dada a lista dos valores de x, mandamos fazer o plot dos correspondentes f(x):
def main3():
xx = float_range.float_range_lista(-4,4,0.1)
tartaruga = cTurtle.Turtle()
tartaruga.pensize(3)
tartaruga.setWorldCoordinates(-4,-2,4,2)
linha(tartaruga,-4,0,4,0)
tartaruga.write('X', move=False, align='left', font=('Arial', 14, 'normal'))
linha(tartaruga,0,-2,0,2)
tartaruga.pencolor('red')
tartaruga.up()
tartaruga.goto(0.5,1)
tartaruga.write('SIN(X)', move=False, align='left', font=('Arial', 14, 'normal'))
grafico(tartaruga,math.sin,xx)
tartaruga. exitOnClick()
E o resultado está à vista:
Admitamos agora que queremos desenhar o gráfico de uma função que depende desta função. Por exemplo a derivada. Todos conhecemos a definição de derivada de uma função contínua:
Esta definição é válida para toda a função. Assim não nos pode espantar que se possa fazer:
def derivada(f):
"""Derivada de uma função."""
dx= 1.e-6
def d(x):
return (f(x + dx) - f(x))/dx
return d
Olhemos para o código. Temos uma nova definição derivada cujo argumento é uma função. Desta parte já falámos anteriormente. O seu corpo é feito apenas da construção de uma nova função que materializa a definição dada. Com esta definição, no interior de outra definição, estamos a criar um objecto do tipo função! É esse objecto que é devolvido. Repare-se que usamos uma constante muito pequena para dx. Juntando tudo e aplicando:
def main1():
xx = float_range.float_range_lista(-4,4,0.1)
tartaruga = cTurtle.Turtle()
tartaruga.pensize(3)
tartaruga.setWorldCoordinates(-4,-2,4,2)
linha(tartaruga,-4,0,4,0)
linha(tartaruga,0,-2,0,2)
tartaruga.pencolor('red')
grafico(tartaruga,math.cos,xx)
tartaruga.up()
tartaruga.goto(0.5,1)
tartaruga.write('COS', move=False, align='left', font=('Arial', 14, 'normal'))
tartaruga.down()
tartaruga.pencolor('blue')
tartaruga.up()
tartaruga.goto(-2,1.2)
tartaruga.write('DERIVADA COS', move=False, align='left', font=('Arial', 14, 'normal'))
tartaruga.down()
grafico(tartaruga,derivada(math.cos),xx)
tartaruga.exitOnClick()
Executando o programa obtém-se:
Fantástico, não é???
Sem comentários:
Enviar um comentário