2015-04-29 9 views
0

работа над проектом, требующим от меня использовать тот же код, отметить в том же файле для создания набора mandelbrot и наборов julia, у меня есть рабочий набор mandelbrot, но вы можете увидеть, как продлить до julia set, используя тот же код , Возможно, я не получаю различий между ними? может кто-нибудь разработатьрасширение mandelbrot для генерации julia

import numpy as np 
import matplotlib.pyplot as plt 
import math 



def Mandelbrot(zmin, zmax, m, n, tmax=256): 

    xs = np.linspace(zmin, zmax, n) 
    ys = np.linspace(zmin, zmax, m) 
    X, Y = np.meshgrid(xs, ys) 


    Z = X + 1j * Y 
    C = np.copy(Z) 
    M = np.ones(Z.shape) * tmax 

    for t in xrange(tmax): 
     mask = np.abs(Z) <= 2. 
     Z[ mask] = Z[mask]**2 + C[mask] 
     M[-mask] -= 1. 
    return M 

list=Mandelbrot(-2,2,500,500) 
plt.imshow(list.T, extent=[-2, 1, -1.5, 1.5]) 
plt.gray() 
plt.savefig('mandelbrot.png') 
+0

upvoting это, из-за неконструктивной downvote – karatedog

ответ

1

Мандельброта множество представляет собой специальный набор в терминах множеств Жюлиа, некоторые документы пишут, что множество Мандельброта является индексом множества всех множеств Жюлиа (есть один и только один индекс набор - Мандельброт - и есть бесконечное количество наборов Julia.)

Когда вы вычисляете точку на множестве Мандельброта и перебираете по z^2 + c, это c принимает то же значение, что и точка, которую вы пытаетесь решить, является ли она частью карты или нет. Этот c изменится, если вы перейдете к следующему пункту (так вы делали в своих расчетах).

Другими словами, у вас есть значение, которое равно постоянному, пока вы проходите через итерацию, но меняетесь для каждой точки.

При расчете Жюлиа, расчет 99,9% же, за исключением того, что вам нужно использовать значение c, что является постоянным при расчете не только для одной точки на весь. И поэтому он не называется c, чтобы избежать путаницы, но обычно k.

Теперь, если я вас смутил, решение было бы простым. Вы должны изменить это:

Z[ mask] = Z[mask]**2 + C[mask] 

к этому:

Z[ mask] = Z[mask]**2 + (-0.8+0.156j) 

Проверить тот же набор здесь: http://en.wikipedia.org/wiki/File:Julia_set_camp4_hi_rez.png

+0

Я просто попытался это после того, как какой-то пустячный и это действительно глупо, просто получив Мандельброт - спасибо! – HugMyster

0

В Мандельброта значение г = 0 в начале итерации и в фрактала Джулии он использует другое значение с экрана координат и фиксированное комплексное число.