f(x) = 3.9*x*(1- x)
g(x) = 3.9*(x - x**2)
h(x) = 3.9*x - 3.9 * x * x
Vamos supor que queremos computar a órbita para o valor inicial de x= 0.35. Esse cálculo é feito iterando as funções definidoras, isto é produzindo a sequência:
x, f(x), f(f(x)), f(f(f(x))), ...
.
Vejamos o programa que faz os cálculos e que usa o módulo cTurtle para desenhar o gráfico.
01.
import
cTurtle
02.
03.
def
grafico(funcao,inicio,num,cor):
04.
"""
05.
Faz o gráfico da função a partir do ponto inic.
06.
"""
07.
x
=
inicio
08.
cTurtle.pencolor(cor)
09.
cTurtle.up()
10.
cTurtle.goto(
0
,x)
11.
cTurtle.down()
12.
cTurtle.dot(
3
)
13.
14.
for
i
in
range(
1
,num):
15.
x
=
funcao(x)
16.
cTurtle.goto(i,x)
17.
cTurtle.dot(
3
)
18.
19.
# Funções de teste
20.
def
f(x):
21.
return
3.9
*
x
*
(
1
-
x)
22.
23.
def
g(x):
24.
return
3.9
*
(x
-
x
*
*
2
)
25.
26.
def
h(x):
27.
return
3.9
*
x
-
3.9
*
x
*
x
28.
29.
def
main(n):
30.
cTurtle.setWorldCoordinates(
-
1.0
,
-
0.1
,n
+
1
,
1.1
)
31.
grafico(f,
0.35
,n,
'red'
)
32.
grafico(g,
0.35
,n,
'green'
)
33.
grafico(h,
0.35
,n,
'blue'
)
34.
cTurtle.mainloop()
O leitor mais atento notará que esta solução retoma o tema das funções como parâmetros das definições. Ao executar o programa, chamando main() veja o que acontece. O vídeo abaixo reproduz a parte final da execução. Se reparar, embora matematicamente equivalentes, na parte final os gráficos divergem de modo significativo. Porque será???
ninguem sabe responder lol
ResponderEliminarnão sei se estarei a divagar mas penso o seguinte:
ResponderEliminareu primeiro simulei para valores de n pequenos e ate ai tudo bem batia tudo igual , mas depois aumetei o valor e foi possivel notar o efeito da propagação do erro resultante na limitação das representações feitas pelo computador (a diferença entre os graficos ). por exemplo se a função operava so com inteiros isto provavelmente não aconteceria .
Não está a divagar. O problema tem que ver com a imprecisão da máquina, que origina erros que se vão amplificando com os sucessivos cálculos.
ResponderEliminaré óbvio que o que mudou foi a ordem de precedência no calculo, onde o parâmetro cercado por parênteses tem tratamento diferenciado.
ResponderEliminar