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.
1.
def
grafico(tartaruga,funcao, valores):
2.
""" Desenha o gráfico da função f."""
3.
tartaruga.up()
4.
tartaruga.goto(valores[
0
], funcao(valores[
0
]))
5.
tartaruga.down()
6.
7.
for
indice
in
range(
1
,len(valores)):
8.
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):
01.
def
main3():
02.
03.
xx
=
float_range.float_range_lista(
-
4
,
4
,
0.1
)
04.
tartaruga
=
cTurtle.Turtle()
05.
tartaruga.pensize(
3
)
06.
tartaruga.setWorldCoordinates(
-
4
,
-
2
,
4
,
2
)
07.
linha(tartaruga,
-
4
,
0
,
4
,
0
)
08.
tartaruga.write(
'X'
, move
=
False
, align
=
'left'
, font
=
(
'Arial'
,
14
,
'normal'
))
09.
linha(tartaruga,
0
,
-
2
,
0
,
2
)
10.
11.
tartaruga.pencolor(
'red'
)
12.
tartaruga.up()
13.
tartaruga.goto(
0.5
,
1
)
14.
tartaruga.write(
'SIN(X)'
, move
=
False
, align
=
'left'
, font
=
(
'Arial'
,
14
,
'normal'
))
15.
grafico(tartaruga,math.sin,xx)
16.
17.
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:
1.
def
derivada(f):
2.
"""Derivada de uma função."""
3.
dx
=
1.e
-
6
4.
def
d(x):
5.
return
(f(x
+
dx)
-
f(x))
/
dx
6.
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:
01.
def
main1():
02.
03.
xx
=
float_range.float_range_lista(
-
4
,
4
,
0.1
)
04.
tartaruga
=
cTurtle.Turtle()
05.
tartaruga.pensize(
3
)
06.
tartaruga.setWorldCoordinates(
-
4
,
-
2
,
4
,
2
)
07.
linha(tartaruga,
-
4
,
0
,
4
,
0
)
08.
linha(tartaruga,
0
,
-
2
,
0
,
2
)
09.
10.
tartaruga.pencolor(
'red'
)
11.
grafico(tartaruga,math.cos,xx)
12.
tartaruga.up()
13.
tartaruga.goto(
0.5
,
1
)
14.
tartaruga.write(
'COS'
, move
=
False
, align
=
'left'
, font
=
(
'Arial'
,
14
,
'normal'
))
15.
tartaruga.down()
16.
17.
tartaruga.pencolor(
'blue'
)
18.
tartaruga.up()
19.
tartaruga.goto(
-
2
,
1.2
)
20.
tartaruga.write(
'DERIVADA COS'
, move
=
False
, align
=
'left'
, font
=
(
'Arial'
,
14
,
'normal'
))
21.
tartaruga.down()
22.
grafico(tartaruga,derivada(math.cos),xx)
23.
tartaruga.exitOnClick()
Executando o programa obtém-se:

Fantástico, não é???
Sem comentários:
Enviar um comentário