A Fractal de Newton
Por: Pedro Simionato • 29/3/2020 • Trabalho acadêmico • 444 Palavras (2 Páginas) • 139 Visualizações
import matplotlib.pyplot as plt
import numpy as np
import time as t
#função
t1 = t.time()
def f(z): return z**3 - 8.0
def df(z): return 3.0*(z**2)
#dominio
Xmin = -0.5
Xmax = 1.0
Ymin = -0.5
Ymax = 1.0
#tamanho da imagem
tamanho_imagem = 809
deltax=((Xmax-Xmin)/tamanho_imagem)
deltay=((Ymax-Ymin)/tamanho_imagem)
#cria uma matriz cheia de zeros
frac = np.zeros((tamanho_imagem, tamanho_imagem))
math = np.zeros((tamanho_imagem, tamanho_imagem))
#metodo de newton
def newt(f, df, z):
#fazer no máximo 15 iterações
for i in range(15):
z2 = z - f(z)/df(z)
# Confere se o método convergiu
if abs(z2 - z) < 10e-8:
z = z2
break
z = z2
return(z,i)
for x in range(tamanho_imagem):
for y in range(tamanho_imagem):
z0 = complex(Xmin+x*deltax, Ymin+y*deltay)
#chamar o método de newton
raiz, it = newt(f,df,z0)
# criar um if para ver qual raiz foi encontrada
if abs((-(2)**(1/3)) - raiz) < 0.01:
frac[x,y] = 1000
math[x,y] = it
elif abs((complex(-1,-1.7321) - raiz)) < 0.01:
frac[x,y] = 2000
math[x,y] = it
elif abs((complex(-1,1.7321) - raiz)) < 0.01:
frac[x,y] = 3000
math[x,y] = it
elif abs(2**(1/3) - raiz) < 0.01:
frac[x,y] = 4000
math[x,y] = it
else:
frac[x,y] = 5000
math[x,y] = it
"""
...