método de newton passeio aleatório - fcupjpp/ip/slides-08.pdf · alguns algoritmos passeio...

27
Alguns algoritmos Passeio aleatório Método de Newton Passeio aleatório Algoritmo: começar no centro da janela atirar moeda ao ar; cara virar 90 graus à esquerda coroa virar 90 graus à direita dar 50 passos em frente se a tartaruga sair da janela, parar Análise: dificuldade: saber se se saiu da janela solução: diferir, encapsulando numa função create a window and a turtle while the turtle is still in the window: generate a random number between 0 and 1 if the number == 0 (heads): turn left else: turn right move the turtle forward 50 João Pedro PEDROSO Introdução à Programação - minor

Upload: trannguyet

Post on 07-Oct-2018

222 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

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

Page 2: 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

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

Page 3: 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

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

Page 4: 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

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

Page 5: 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

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

Page 6: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 7: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 8: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 9: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 10: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 11: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 12: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 13: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 14: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 15: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 16: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 17: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 18: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 19: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 20: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 21: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 22: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 23: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Método de Newton

João Pedro PEDROSO Introdução à Programação - minor

Page 24: 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

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

Page 25: 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

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

Page 26: 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

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

Page 27: 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

Alguns algoritmosPasseio aleatórioMétodo de Newton

Próxima aula

Algoritmos

João Pedro PEDROSO Introdução à Programação - minor