首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >扩展mandelbrot生成julia

扩展mandelbrot生成julia
EN

Stack Overflow用户
提问于 2015-04-29 15:51:37
回答 2查看 243关注 0票数 0

在一个项目中,我需要使用相同的代码,注意在同一个文件中生成mandelbrot集和julia集,我有一个工作的mandelbrot集,但是可以看到如何使用相同的代码扩展到julia集。也许我不明白两者之间的区别?有人能详细说明吗?

代码语言:javascript
复制
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')
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-05-01 09:06:38

Mandelbrot 集是茱莉亚集的一个特殊集合,一些文献指出,Mandelbrot集是所有Julia集的索引集(只有一个索引集--Mandelbrot--并且有无穷多个朱莉娅集)。

当您在Mandelbrot集上计算一个点并在z^2 + c上迭代时,这个c的值与您试图确定它是否是映射的一部分的值相同。如果转到下一个点(这就是计算过程中所做的),这个c就会改变。

换句话说,在进行迭代时,您有一个常数的值,但是每个不同的点都会发生变化。

计算朱莉娅集时,计算值为99.9%,但您必须使用c值,该值在整个计算期间是常数,而不仅仅是单个点。这就是为什么它不被命名为c以避免混淆,但通常是k

如果我把你搞糊涂了,解决办法很简单。你必须改变这一点:

代码语言:javascript
复制
Z[ mask] = Z[mask]**2 + C[mask]

对此:

代码语言:javascript
复制
Z[ mask] = Z[mask]**2 + (-0.8+0.156j)

检查这里的同一组:rez.png

票数 2
EN

Stack Overflow用户

发布于 2015-05-01 08:59:35

在Mandelbrot分形中,z值在迭代开始时为0,在Julia分形中,它使用与屏幕坐标不同的值和一个固定的复数。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29948730

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档