返回资讯中心
外部精选
软件工程
#开发者实时流

研究者用Mathematica绘制四维双复数Mandelbrot集Tetrabrot

来源标题:Hypercomplex Fractals

研究者展示了四维双复数Mandelbrot集(又称Tetrabrot集)的渲染结果,并给出可复现的Mathematica代码。该代码运行约2.6分钟即可生成首个微型Tetrabrot集,其形状被比作铋晶体。相关深度缩放程序TetraBrot Explorer由Etienne Martineau和Dominic Rochon开发。

Hacker News 最新datavorous_2026/11/11 · 今天22 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

) - C++,2009年7月30日 {x,y,z,w}² = {x²-y²-z²+w², 2(xy-zw), 2(xz-yw), 2(xw+yz)} 这是四维双复数 Mandelbrot 集,也称为 Tetrabrot 集。其形状让我想起铋晶体。以下是生成第一个微型 Tetrabrot 集的 Mathematica 代码: (* 运行时间:2.6 分钟,提高 n 可获得更高分辨率 ) n = 100; norm[x_] := x.x; BicomplexSquare[{x_, y_, z_, w_}] := {x^2 - y^2 - z^2 + w^2, 2 (x y - z w), 2 (x z - y w), 2 (x w + y z)}; Mandelbrot4D[c_] := Module[{q = {0, 0, 0, 0}, i = 0}, While[i = 0 && Mandelbrot4D[{x, y, z, 0}] False, Frame -> False, PlotRange -> {-0.02, 0.06}] 链接 TetraBrot Explorer - Etienne Martineau 和 Dominic Rochon 开发的深度缩放程序,参见动画 类似渲染 - 由 Jason McGuiness 制作 左图是 Tetrabrot 集的三阶变体。右图是一块铋晶体。 四维双复数 Julia 集 - C++,2009年7月29日 {x,y,z,w}² = {x²-y²-z²+w², 2(xy-zw), 2(xz-yw), 2(xw+yz)} 逆向四维双复数 Julia 集 - C++,2009年9月21日 这些图像是使用逆向 Julia 集方法计算的。Dominic Rochon 帮我推导了求双复数平方根的公式。该公式有 4 个根,因此每次迭代后总点数增加为原来的 4 倍。以下是 Mathematica 代码: ( 运行时间:0.7 秒 ) SqrtW[w1_, w2_] := 0.5{Re[w1] + Re[w2], Im[w1] + Im[w2], Im[w2] - Im[w1], Re[w1] - Re[w2]}; BicomplexSqrts[{a_, b_, c_, d_}] := Module[{z1 = a + I b, z2 = c + I d, w1, w2}, w1 = Sqrt[z1 - I z2]; w2 = Sqrt[z1 + I z2]; {SqrtW[w1, w2], SqrtW[w1, -w2],SqrtW[-w1, w2], SqrtW[-w1, -w2]}]; wc = {-0.2, 0.8, 0, 0}; wlist = {{1.0, 1.0, 1.0, 1.0}}; Do[wlist = Flatten[Map[BicomplexSqrts[# - wc] &, wlist], 1], {6}]; Show[Graphics3D[{PointSize[0.005], {Hue[#[[4]]], Point[Delete[#, 4]]} & /@ wlist}, Boxed -> False, Background -> RGBColor[0, 0, 0], ViewPoint -> {0, 10, 0}]] 四维 Julibrot 集 - C++,2009年7月6日 复 Julia 集通常在二维平面上以固定的复数种子值计算。然而,如果考虑所有可能的 Julia 集(即所有可能的种子值),就得到了完整的四维 Julibrot 集。Mandelbrot 集作为四维 Julibrot 集的一个二维切片包含其中。也可以像这里展示的那样,取四维 Julibrot 集的三维切片。左图显示的是当起始值的实部沿第三维变化时 Mandelbrot 集的样子,右图显示的是虚部变化时的样子。严格来说,这并不是一个超复数分形,但在这里仍然值得一提。以下是 Mathematica 代码: ( 运行时间:18 秒,提高 n 可获得更高分辨率 ) n = 100; Julibrot[z0_, zc_] := Module[{z = z0, i = 0}, While[i = 0 && Julibrot[z, x + I y] False, Frame -> False,PlotRange -> {0, 1.5}] 链接 四维中的 Julia 集 - 由 Eric Baird 提供的详细解释 超复数分形画廊 - 由 Jos Leys 制作 Julibrot 讨论 - 见于 Fractal Forums 展示 Mandelbrot 集的截面 - 由 Ramiro Perez 制作 Alien Interface - 带轨道陷阱的动画 Julibrot,由 David Makin 制作 四维 Hopfbrot 集 - C++,2009年12月2日 有人提出,Mandelbulb 集的扭曲区域与球坐标系的极点有关。理想的公式应该没有极点,但这只有在四维中才可能(因为毛球定理)。这让我想到,也许可以用 Hopf 映射(一种无极点四维球面映射)来创建扭曲较少的四维 Mandelbrot 集。结果表明,它仍然存在一些扭曲区域。wc = 0 处的三维切片包含 Mandelbulb 集,zc = 0 处的三维切片看起来值得进一步研究,yc = 0 处的三维切片是圣诞树 Mandelbrot 集,而 xc = 0 处的三维切片则显得十分怪异。 三维指数 Mandelbrot 集 - C++,2009年7月6日 这就是当指数沿第三维变化时 Mandelbrot 集的样子。它呈扭曲形状,因为随着指数增大,Mandelbrot 集的特征会围绕原点旋转。严格来说,这并不是一个超复数分形,但在这里仍然值得一提。以下是 Mathematica 代码: ( 运行时间:49 秒,提高 n 可获得更高分辨率 *) n = 100; Mandelbrot[n_, zc_] := Module[{z = 0, i = 0}, While[i = 0 && Mandelbrot[z, x + I y] False, Frame -> False, PlotRange -> {0, 1.5}] 四维 Mandelbulb 集 - C++,2009年7月7日 以下是 Daniel White 平方公式的四维版本。在四维中,旋转是绕一个平面进行的,有 6 种可能的旋转矩阵可供选择:Rxy、Ryz、Rxz、Rxw、Ryw、Rzw。顺着这个思路,我通过连续应用三个四维旋转,得出了 Daniel 公式的如下四维类比: {x,y,z,w}² = Rxy(2θ)Rxz(2φ)Rxw(2ψ){r²,0,0,0}, r2=sqrt(x²+y²), r3=sqrt(x²+y²+z²), r=sqrt(x²+y²+z²+w²), θ=atan2(y,x), φ=atan2(z,r2), ψ=atan2(w,r3) 展开后得到: {x, y, z, w}² = r²{cos(2ψ)cos(2φ)cos(2θ), cos(2ψ)cos(2φ)sin(2θ), -cos(2ψ)sin(2φ), sin(2ψ)} 当 w = 0 时,该公式退化为 Daniel 的平方公式(而当 z = 0 时,后者又退化为常规的复数平方公式)。为了加快计算速度,该公式可以简化为: {x, y, z, w}² = {(x²-y²)b, 2xyb, -2r2za, 2r3w}, a=1-w²/r3², b=a(1-z²/r2²) 使用这个公式,我渲染了该四维 Mandelbrot 分形在 w = 0、z = 0、y = 0、x = 0 处的三维切片。动画展示了三维切片从 w = 0 开始,然后旋转到 z = 0,再到 y = 0,再到 x = 0,最后回到 w = 0 的过程。 三维 Nebulabrot - C++,2009年9月9日 Nebulabrot 是 Buddhabrot 技术的一种变体。这些三维变体每幅由 20 亿个点渲染而成。另见我的二维 Nebulabrot。 链接 环绕三维 Nebulabrot 飞行 - 基于 Daniel White 平方公式的动画,由 Krzysztof Marczak 制作

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →