问题标签 [mandelbrot]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
7 回答
34986 浏览

algorithm - Mandelbrot 集渲染的平滑光谱

我目前正在编写一个程序来生成非常巨大的(65536x65536 像素及以上)Mandelbrot 图像,我想设计一个光谱和着色方案来使它们公正。维基百科的特色 mandelbrot 图像似乎是一个很好的例子,尤其是调色板如何在序列的所有缩放级别保持变化。不过,我不确定它是在旋转调色板还是在做其他一些技巧来实现这一点。

我熟悉 mandelbrot 集的平滑着色算法,所以我可以避免条带,但我仍然需要一种方法来为该算法的输出值分配颜色。

我正在生成的图像是金字塔形的(例如,一系列图像,每个图像的尺寸都是前一个的一半),所以我可以使用某种旋转调色板,只要在后续调色板之间发生变化缩放级别不是太明显。

0 投票
2 回答
6714 浏览

python - 如何“放大”曼德布洛特集的一部分?

我创建了一个 Python 文件来生成 Mandelbrot 集图像。最初的数学代码不是我的,所以我不明白——我只是对其进行了大量修改,使其速度提高了大约 250 倍(线程规则!)。

无论如何,我想知道如何修改代码的数学部分以使其呈现一个特定的位。这是数学部分:

以及尺寸定义:

我需要修改什么以使其呈现集合的某个部分?

0 投票
9 回答
4039 浏览

optimization - Lua 挑战:你能提高 mandelbrot 实现的性能吗?

状态:到目前为止,最佳答案的程序执行时间是原始程序的 33%!但可能还有其他方法可以优化它。


Lua 目前是最快的脚本语言,但是 Lua 在一些针对 C/C++ 的基准测试中得分非常低。

其中之一是 mandelbrot 测试(生成 Mandelbrot 设置便携式位图文件 N=16,000),它的得分是可怕的 1:109(多核)或 1:28(单核)

由于速度的 Delta 非常大,因此这是一个很好的优化候选者。另外我敢肯定,那些知道 Mike Pall 是谁的人可能会认为不可能进一步优化这个,但这是明显错误的。任何做过优化的人都知道,总是有可能做得更好。此外,我确实设法通过一些调整获得了一些额外的性能,所以我知道它是可能的 :)

那么如何优化它(当然,与任何优化一样,您必须测量您的实现以确保它更快)。并且你不能为此改变 Lua 的 C 核心,或者使用 LuaJit,它是关于寻找优化 Lua 弱点之一的方法。

编辑:为此设置赏金以使挑战更有趣。

0 投票
1 回答
999 浏览

java - Clojure/Java Mandelbrot 分形绘图

我正在尝试将此算法移植到clojure。

我的代码是

乘法、加法和 abs 函数正在正常工作。我用计算器测试过它们。但是对于以下值:

我正在使用我在网上找到的另一个 java 小程序检查正确的迭代次数。它似乎正在工作,因为它产生了正确的输出。其迭代函数为

谁能发现我的错误?

0 投票
4 回答
2449 浏览

ruby - ruby 中的快速/快速整数乘法?

我正在尝试在 Ruby 中快速/高效地实现 Mandelbrot。很久很久以前,加速它的一种方法是使用定点整数而不是浮点数。

所以我做了以下基准,使用乘法或平方**操作数将浮点数和整数提升到平方比较。

这会生成以下输出:

这清楚地表明 Fixnum 乘法几乎是浮点数的两倍。

我有两个问题:

  • 谁能解释一下?我可以想象的一个原因是 Fixnum 乘法较慢,因为内部检查是否需要将其转换为 Bignum。
  • 其次,红宝石是否有一个快速的整数乘法?
0 投票
2 回答
1952 浏览

set - Common Lisp 中的 Mandelbrot Set 实现

我一直致力于用几种不同的语言实现Mandelbrot 集。我在 C++、C#、Java 和 Python 中有一个可用的实现,但是 Common Lisp 实现有一些我无法弄清楚的错误。它生成集合,但在管道中的某个地方,集合被扭曲了。我已经测试并且几乎可以肯定地知道文件 I/O CLO 不是问题 - 这不太可能但可能,我已经对其进行了非常彻底的测试。

请注意,这些实现的目的是将它们相互进行基准测试 - 所以我试图使代码实现尽可能相似,以便它们具有可比性。

Mandelbrot 集(此处由 Python 实现生成):

http://www.freeimagehosting.net/uploads/65cb71a873.png “Mandelbrot 集(由 Python 生成)”

但是我的 Common Lisp 程序会生成这个:

http://www.freeimagehosting.net/uploads/50bf29bcc9.png “普通 Lisp 版本的扭曲曼德布罗集”

该错误在 Clisp 和 SBCL 中是相同的。

代码:

普通 Lisp:

最接近它的是 Python:

我也可以根据需要发布 C++、C# 或 Java 代码。

谢谢!

编辑:感谢埃德蒙的回应,我发现了这个错误——只是一些在移植时从裂缝中溜走的东西。修改后的代码:

虽然代码不是很像 LISP(这是一个词吗?),但它可以工作。感谢所有发布/评论/回答的人:)

0 投票
2 回答
1817 浏览

graphics - 基于着色器的 mandelbrot explorer 的大浮点数

我已经设法使用 Open Gl 和 NVidia 提供的 CGFX SDK 创建了一个简单的 mandelbrot 浏览器。它工作得很好,但目前是基于浮点的,因此没有太多的“深度”——随着从最小复数到最大复数的距离变小,精度会丢失,并且生成的图像是“像素化的”。

不幸的是,CGFX 似乎不支持双精度,即使这样,双精度也仅限于我的意图。因为 CGFX,因为它的预期设计,没有 bignum 类,我认为最好创建我自己的类。

我设法在 C++ 中创建了一个原型——它只使用无符号整数——但是当我试图将它移动到 CGFX 时,FX Composer 2.5 似乎无法编译它。因为我只使用无符号整数、乘法和加法,所以代码包含很多位移操作,根据 FX Composer 2.5,这些操作在我的配置文件中不可用。

我知道这个问题包含很多查询,但不幸的是,我对数值分析、着色器编程或 open gl 并不是很熟悉,此时我感到不知所措——而且很确定我正在尝试修复泄漏用大锤。

因此,如果有人对这些问题中的任何一个有答案,我将不胜感激:

  1. CGFX 或任何其他着色器语言是否支持无符号整数和浮点数的位移运算符(需要将浮点数转换为大浮点数)?

  2. CGFX 或任何其他着色器语言是否支持双精度或更高的浮点?

  3. 有没有更精致的数学方法来处理我的问题,而不是创建一个大的浮点类?

如果有人需要更多说明或代码片段,请随时提出。

0 投票
15 回答
4008 浏览

code-golf - 代码高尔夫:Mandelbrot 套装

代码高尔夫的通常规则。这里以python中的一个实现为例

结果应该是这样的

曼德布罗集

允许使用图像库。或者,您可以使用 ASCII 艺术。这段代码做同样的事情

结果

编辑

ASCII 艺术的规则:

  • 行/列的大小是参数化的,代码必须使用任何有效值。
  • 根据迭代次数,密度至少有三级差异(所以我的原型不符合要求)
  • 水平方向(所以我上面的原型不兼容)
  • 关键参数是固定的(最大迭代次数 = 1000,失控值 x x + y y <= 4.0)

图形规则:

  • 行/列的大小是参数化的,代码必须使用任何有效值。
  • 至少三级颜色,灰度
  • 水平方向(我的原型是兼容的)
0 投票
3 回答
1064 浏览

java - 帮助在 Java 中渲染 Mandelbrot 集

我使用 JComponent 在 Java 中编写了 Mandelbrot 集的实现,但是在渲染它时却得到了奇怪的结果。除此之外,一切都编译正确。我只是不确定我做错了什么。任何代码审查也将不胜感激。

我的来源发布在 pastebin 上,因为它在这里会占用太多空间:

JMandelbrot.java Mandelbrat.java

0 投票
2 回答
476 浏览

image - 为什么图像(Mandelbrot)会被扭曲和环绕?

所以我只是写了一个小片段来生成 Mandelbrot 分形,想象一下当它出现时我的惊讶和扭曲(如你在底部看到的那样)。我很感激为什么会发生这种情况。这是一种学习体验,我不是在寻找任何人为我做这件事,但我在调试它时有点走投无路。有问题的生成代码是:

图像代码(我相当有信心)是:

丑陋的曼德尔歪斜东西