Método de Newton Passeio aleatório - FCUPjpp/ip/slides-08.pdf · Alguns algoritmos Passeio aleatório Método de Newton Passeio aleatório Algoritmo: começar no centro da janela
Post on 07-Oct-2018
220 Views
Preview:
Transcript
Alguns algoritmosPasseio aleatórioMétodo de Newton
Passeio aleatório
Algoritmo:começar no centro da janelaatirar moeda ao ar;
cara → virar 90 graus àesquerdacoroa → virar 90 graus à direita
dar 50 passos em frentese a tartaruga sair da janela,parar
Análise:
dificuldade: saber se se saiu dajanela
solução: diferir, encapsulandonuma função
create a window and a turtle
while the turtle is still in the window:generate a random number between 0 and 1if the number == 0 (heads):
turn leftelse:
turn rightmove the turtle forward 50
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Versão 1
(versão simplista de isInScreen: 90% de probabilidade de a tartarugaestar na janela)import randomimport turtle
def isInScreen(w,t):if random.random() > 0.1:
return Trueelse:
return False
wn = turtle.Screen()t = turtle.Turtle()t.shape(’turtle’)
while isInScreen(wn,t):coin = random.randrange(0,2)if coin == 0: # heads
t.left(90)else: # tails
t.right(90)
t.forward(50)
wn.exitonclick()João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
isInScreen corrigido
def isInScreen(w,t):leftBound = - w.window_width()/2rightBound = w.window_width()/2topBound = w.window_height()/2bottomBound = -w.window_height()/2
turtleX = t.xcor()turtleY = t.ycor()
stillIn = Trueif turtleX > rightBound or turtleX < leftBound:
stillIn = Falseif turtleY > topBound or turtleY < bottomBound:
stillIn = False
return stillIn
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Vantagens da implementação de isInScreen
simplifica o código no restante programa (relativamente a ter umacondição complexa no while);
isInScreen pode ser utilizada noutros contextos;
ao reutilizar esta função, temos mais confiança de que está correta (jáfoi testada);
este é um exemplo da decomposição funcional: divisão de um programaem partes.
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
Método de Newton (ou de Newton-Raphson):
permite encontrar raízes de funções reais de variável real, poraproximações sucessivas;
raíz: ponto onde a função é igual a zero,
x : f (x) = 0
aproximações sucessivas: encontramos sequências de valores que (sea função for “bem comportada”) tendem para o zero;
o método termina quando a aproximação é suficientemente boa.
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
Método de Newton: algoritmoDados:
1 função real de variável real f ;2 a sua derivada f ′;3 estimativa inicial x0;4 tolerância ε;
Aproximações sucessivas são obtidas com:
xn+1 = xn −f (xn)
f ′(xn)
O processo é repetido até que a aproximação seja suficientementeprecisa, i.e.:
|f (xn)| < ε
João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
Método de Newton: Python
def newton(f,d,x0,eps):f0 = f(x0)d0 = d(x0)while abs(f0) > eps:
x0 = x0 - f0/d0f0 = f(x0)d0 = d(x0)
return x0
if __name__ == "__main__":import mathdef f(x):
return math.sin(x)def d(x):
return math.cos(x)
x0 = 3.
root = newton(f,d,x0,1.e-12)print("solution:", root)
Nota: a referência à função é passada como parâmetro.João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Método de Newton
Método de Newton: Python
def newton(f,d,x0,eps):f0 = f(x0)d0 = d(x0)while abs(f0) > eps:
x0 = x0 - f0/d0f0 = f(x0)d0 = d(x0)
return x0
if __name__ == "__main__":import mathdef f(x):
return math.sin(x)def d(x):
return math.cos(x)
x0 = 3.
root = newton(f,d,x0,1.e-12)print("solution:", root)
Nota: a referência à função é passada como parâmetro.João Pedro PEDROSO Introdução à Programação - minor
Alguns algoritmosPasseio aleatórioMétodo de Newton
Próxima aula
Algoritmos
João Pedro PEDROSO Introdução à Programação - minor
top related