Você está na página 1de 27

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Passeio aleatrio

Algoritmo: comear no centro da janela atirar moeda ao ar;


cara virar 90 graus esquerda coroa virar 90 graus direita

Anlise: diculdade: saber se se saiu da janela soluo: diferir, encapsulando numa funo

dar 50 passos em frente se a tartaruga sair da janela, parar


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

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Verso 1
(verso simplista de isInScreen: 90% de probabilidade de a tartaruga estar na janela)
import random import turtle def isInScreen(w,t): if random.random() > 0.1: return True else: 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()
Joo Pedro PEDROSO Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

isInScreen corrigido

def isInScreen(w,t): leftBound = - w.window_width()/2 rightBound = w.window_width()/2 topBound = w.window_height()/2 bottomBound = -w.window_height()/2 turtleX = t.xcor() turtleY = t.ycor() stillIn = True if turtleX > rightBound or turtleX < leftBound: stillIn = False if turtleY > topBound or turtleY < bottomBound: stillIn = False return stillIn

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Vantagens da implementao de isInScreen

simplica o cdigo no restante programa (relativamente a ter uma condio complexa no while); isInScreen pode ser utilizada noutros contextos; ao reutilizar esta funo, temos mais conana de que est correta (j foi testada); este um exemplo da decomposio funcional: diviso de um programa em partes.

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Mtodo de Newton (ou de Newton-Raphson): permite encontrar razes de funes reais de varivel real, por aproximaes sucessivas; raz: ponto onde a funo igual a zero, x : f (x ) = 0 aproximaes sucessivas: encontramos sequncias de valores que (se a funo for bem comportada) tendem para o zero; o mtodo termina quando a aproximao sucientemente boa.

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton

Mtodo de Newton: algoritmo Dados:


1 2 3 4

funo real de varivel real f ; a sua derivada f ; estimativa inicial x0 ; tolerncia ;

Aproximaes sucessivas so obtidas com: x n +1 = x n f (xn ) f (xn )

O processo repetido at que a aproximao seja sucientemente precisa, i.e.: |f (xn )| <

Joo Pedro PEDROSO

Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton
Mtodo de Newton: Python
def newton(f,d,x0,eps): f0 = f(x0) d0 = d(x0) while abs(f0) > eps: x0 = x0 - f0/d0 f0 = f(x0) d0 = d(x0) return x0 if __name__ == "__main__": import math def 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 referncia funo passada como parmetro.


Joo Pedro PEDROSO Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Mtodo de Newton
Mtodo de Newton: Python
def newton(f,d,x0,eps): f0 = f(x0) d0 = d(x0) while abs(f0) > eps: x0 = x0 - f0/d0 f0 = f(x0) d0 = d(x0) return x0 if __name__ == "__main__": import math def 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 referncia funo passada como parmetro.


Joo Pedro PEDROSO Introduo Programao - minor

Alguns algoritmos

Passeio aleatrio Mtodo de Newton

Prxima aula

Algoritmos

Joo Pedro PEDROSO

Introduo Programao - minor

Você também pode gostar