学习编程分形有助于清楚地思考某些编程问题吗?
11 回答
分形编程将向您介绍递归、迭代、图形编程概念、图像处理和用户界面设计。从数学的角度,您将学习几何、复数、莫比乌斯变换(克莱因分形)、仿射变换(IFS 分形)、求根方法(牛顿分形)。
最重要的是,您会看到自己的努力会产生奇怪和不寻常的图像,从而获得回报。
据我所知,如果没有别的,你会很好地处理递归......也许还有一点位图级编程......
如果您是初学者,这样的活动肯定会帮助您提高技能。除了根据分形类型和您设定的目标对分形可视化进行编程之外,还可能会为您提供一些特定的技能或知识,例如:
- 从事图形、图像处理工作;
- 理解递归和递归结构;
- 优化技术;
- 低级程序优化;
- 了解计算机是如何运行的(例如,为什么分辨率通常会受到限制 -> 浮点精度和误差累积);
- 并行编程;
- 一些数学改进并扩展您的兴趣范围;
- 了解各种技术(例如,您可以在PixelBender中编写 Mandelbrot 集,这非常快,因为可以在 GPU 上执行);
- 理解复杂的压缩算法(例如某种分形压缩);
- 创造力(例如,您发明了自己的分形集着色算法);
- 还有更多:)
它确实是一个多才多艺且有趣的领域,有很多东西需要探索和学习。我以前经常画分形:)
分形让我想到了复数和分支点。我想,这是否是一件好事,这是一个见仁见智的问题。:-)
任何类型的编程经验都是有用的。所以是的。
尤其是给:
- 数学问题
- 基本算法
- 当然还有分形编程
它可能会让你练习实现数学公式。
一些分形是显式递归的良好视觉示例;如果您对这个概念有困难,那么它们可能是工作的好问题。您可以从“海龟图形”样式的分形路径开始,例如希尔伯特曲线或经典的“雪花”分形。
许多分形生成方法使用重型数字运算(例如,Mandelbrot 和 Julia 集)。数字运算本身当然是一个领域,调整分形生成器以尽可能快地运行可能是一个很好的优化练习。
我不认为编程分形会特别教你任何东西。根据分形,我想它可能会教你一些关于数学或一般分形的知识。
但是,我确实认为分形作为编程入门很有趣,初学者/学生通常对结果着迷,无论是像 mandelbrot 或 julia 集这样的图形分形,还是更容易理解的 L 系统。
当然,如果您是编程新手,那么它也有望教会您很多关于一般编程的知识。如果不出意外,分形看起来很有趣。
当我还是一名本科生时,我们使用分形绘图来为并行处理工作提供动力。它很快就变得相当计算密集,因此拥有多个可用的 CPU 来完成这项工作可以让您看到效率的明显提高。
因此,与递归一起,我想说它有助于学习如何在并行处理器之间平衡 CPU 负载。
... 或者如果设备不可用,它可能会教你禅宗般的耐心。:)
很好的主意!我认为对分形进行编码是一个很棒的“练习曲”(学习)大小的程序。通过这种方式,它具有一些不错的功能:通常您不需要太多的 3rd 方代码,它们可以在相当短的时间内(和复杂性)实现,并且最终您会得到一些不错的东西,这也验证了您的工作.
此外,在数学和数值算法的实现中,如果你这样做,你会遇到很多基本问题。
从像基本 Mandelbrot 集生成器这样简单的东西,您可以扩展到评论者提到的各种问题。但是,即使坚持这一点,您也可以了解优化技术(为什么我的生成器这么慢)和数值问题(为什么我不能在这里放大),而且如果您想了解一点颜色理论(什么是 L无论如何都是一个b* 空间)和其他零碎的东西。
玩得开心!
分形是一个非常有趣的话题,即使是最简单的实现也会让你了解复数数学、图形生成、缩放图像和一般编程。