【问题标题】:Programming Fractals [closed]编程分形[关闭]
【发布时间】:2009-01-14 20:56:13
【问题描述】:

学习编程分形是否有助于清晰地思考某些编程问题?

【问题讨论】:

    标签: fractals


    【解决方案1】:

    分形编程将向您介绍递归、迭代、图形编程概念、图像处理和用户界面设计。从数学的角度,您将了解几何、复数、莫比乌斯变换(克莱因分形)、仿射变换(IFS 分形)、求根方法(牛顿分形)。

    除此之外,您还可以看到自己的努力产生了奇怪和不寻常的图像。

    【讨论】:

      【解决方案2】:

      据我所知,如果不出意外,你会很好地处理递归......也许还有一点位图级编程......

      【讨论】:

      • 没有必要使用递归来绘制分形。我知道的大多数分形,例如 Mandelbrot 集都使用简单的迭代。
      • 即使他们完成了递归,它也是有限制的递归,无论如何都会重构为迭代。或者至少我见过的每个例子都有明确的限制。
      • 递归如何处理轨道和不动点? IIRC 有一个证明,对于所有 N>=1,在 Mandelbrot 集中存在长度为 N 的循环非终止轨道。
      • 别再对递归那么迂腐了。当然,分形将有助于教授递归! +1
      【解决方案3】:

      如果您是初学者,这样的活动肯定会帮助您提高技能。除了根据分形类型和您设定的目标来编程分形可视化之外,您还可能会获得一些特定的技能或知识,例如:

      • 从事图形、图像处理;
      • 理解递归和递归 结构;
      • 优化技术;
      • 低级程序优化;
      • 了解计算机的运行方式 (例如,为什么分辨率会是 通常受限 -> 浮点 精度和误差累积);
      • 并行编程;
      • 一些数学改进和 扩大您的兴趣范围;
      • 了解各种技术 (例如,您可以在 PixelBendercode Mandelbrot set,即 非常快,因为可以执行 GPU);
      • 理解复杂的压缩 算法(例如某种分形 压缩);
      • 创造力(例如,您发明自己的 分形集着色算法);
      • 还有更多 :)

      这确实是一个多才多艺且有趣的领域,有很多东西需要探索和学习。我以前经常画分形:)

      【讨论】:

      • 链接失效
      【解决方案4】:

      分形让我想到了复数和branch-points。我想,这是否是一件好事,这是一个见仁见智的问题。 :-)

      【讨论】:

      • 别开玩笑了,这当然是好事 :)
      【解决方案5】:

      任何类型的编程经验都是有用的。所以是的。

      特别是:

      • 数学题
      • 基本算法
      • 当然还有分形编程

      【讨论】:

        【解决方案6】:

        它可能会让你练习实现数学公式。

        【讨论】:

          【解决方案7】:

          一些分形是显式递归的良好视觉示例;如果您对这个概念有困难,那么它们可能是工作的好问题。您可以从“海龟图形”样式的分形路径开始,例如希尔伯特曲线或经典的“雪花”分形。

          许多分形生成方法都使用重型数字运算(例如,Mandelbrot 和 Julia 集)。数字运算本身当然是一个领域,调整分形生成器以尽可能快地运行可能是一个很好的优化练习。

          【讨论】:

            【解决方案8】:

            我不认为编程分形会教给你任何特别的东西。根据分形,我想它可能会教你一些关于数学或一般分形的知识。

            但是,我确实认为分形作为编程入门很有趣,初学者/学生通常对结果着迷,无论是像 mandelbrot 或 julia 集这样的图形分形,还是更容易理解的 L 系统。

            当然,如果您是编程新手,那么它也有望教会您很多关于一般编程的知识。如果没有别的,分形看起来很有趣。

            【讨论】:

              【解决方案9】:

              当我还是一名本科生时,我们使用分形绘图为并行处理工作提供动力。它很快就会变得相当计算密集,因此拥有多个可用的 CPU 来完成这项工作可以让您看到效率的明显提高。

              因此,除了递归之外,我想说它有助于学习如何在并行处理器之间平衡 CPU 负载。

              ...或者如果设备不可用,它可能会教你禅宗般的耐心。 :)

              【讨论】:

                【解决方案10】:

                好主意!我认为对分形进行编码是一个很棒的“练习曲”(学习)大小的程序。通过这种方式,它有一些不错的功能:通常您不需要太多的 3rd 方代码,它们可以在相当短的时间内(和复杂性)实现,并且最终您会得到一些不错的东西,这也验证了您的工作.

                如果你这样做,你会遇到数学和数值算法的实现方面的大量基本问题。

                从像基本 Mandelbrot 集生成器这样简单的东西,您可以扩展到评论者提到的各种问题。不过,即使坚持这一点,您也可以了解优化技术(为什么我的生成器这么慢)和数值问题(为什么我不能在这里放大),而且如果您想了解一点颜色理论(什么是 L ab* 空间)和其他零碎的东西。

                玩得开心!

                【讨论】:

                  【解决方案11】:

                  分形是一个非常有趣的主题,即使是最简单的实现也会让您了解复数数学、图形生成、缩放图像和一般编程。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 2012-09-09
                    • 2023-04-09
                    • 1970-01-01
                    • 2010-09-14
                    • 1970-01-01
                    • 1970-01-01
                    • 2012-12-10
                    • 2021-10-01
                    相关资源
                    最近更新 更多