在一个项目上工作,要求我使用相同的代码,请注意在同一个文件中生成曼德尔布罗集和朱莉娅集,我有一个工作曼德尔布罗集,但可以看到如何使用相同的代码扩展到朱莉娅集。
也许我没有理解之间的区别?谁能详细说明一下
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')
The 曼德尔布罗特集合是 Julia 集合中的一个特殊集合,一些文档写道 Mandelbrot 集合是所有 Julia 集合的索引集合(只有一个索引集合 - Mandelbrot - 并且 Julia 集合的数量是无限的。)
当您计算 Mandelbrot 集上的点并迭代时z^2 + c
, this c
其值与您尝试确定它是否是地图的一部分的点相同。这c
如果您转到下一点(这就是您在计算中的做法),将会发生变化。
换句话说,你的价值是constant当你经历迭代时,但会针对每个不同的点进行更改。
当您计算 Julia 集时,计算结果 99.9% 相同,只是您必须使用c
期间保持恒定的值entire计算不只是针对单个点。这就是为什么它不被命名为c
以避免混淆,但通常k
.
现在,如果我已经让你感到困惑了,那么解决方案非常简单。你必须改变这个:
Z[ mask] = Z[mask]**2 + C[mask]
to this:
Z[ mask] = Z[mask]**2 + (-0.8+0.156j)
在这里检查相同的集合:http://en.wikipedia.org/wiki/File:Julia_set_camp4_hi_rez.png http://en.wikipedia.org/wiki/File:Julia_set_camp4_hi_rez.png
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)