针对Mandelbrot Set引发的函数迭代的思考与实验(1)
来源:互联网 发布:岗顶数据恢复 编辑:程序博客网 时间:2024/05/17 16:13
今天重温了一遍许久之前出现在BBC上的一部科学纪录片——The.Secret.Life.of.Chaos(神秘的混沌理论)。惊喜的发现自己相比于去年进步很多,一个很明显的证明便是现在我能看完影片有所触动并在matlab上针对自己的想法进行实验,进一步写下这篇文章。
不得不说看完这部纪录片仍旧感到心潮澎湃,而这次我对Mandelbrot Set产生了极大兴趣,想亲自试试函数迭代后的一系列情形。
这样凭空说起来很模糊抽象(我的复变老师说:在数学中,很多过程都称为迭代),还是直接写公式来的清晰明了。z=z^2+c(c为常数)。
就是这样一个公式,每一次运算的得到的z值代入下一次等号的右边(或许借用一下数字电路分析中现态和次态的概念更加清晰)。据我了解,这便是Mandelbrot Set的思想精华所在。
我对每一次得到的z值与次数所形成的图像蛮有兴趣,于是便随意选了一个c=2进行测试。很有趣的是从第十二次迭代得到的z便inf了。
这显然是c值选取过大。于是慢慢减小取值,发现到c取0.2的时候,迭代一百次毫无问题。更有意思的是他似乎收敛到0.2764这样一个数字
图1 c=0.2迭代10000次
之后又慢慢逼近找到一个差一点点便使得100次迭代中出现inf,最终找到它了——0.25117.
你一定没有忘记主要任务是观察z值与迭代次数的关系吧?那就用这个0.25117画一下图像plot(i, z(i));
结果出现问题了:
图2 c=0.25117迭代一百次未用对数
就好像一下子在99-100那里从0跳到了很大的一个数一样!
仔细观察z的值,发现其在89之前都是小于1的,而93一下子77点多,之后便是e+03,e+07,e+15,e+30,e+60,e+121,e+242了。依次对91-99这九个z值画出其相对应迭代次数(即91-99)的图像:
图3 c=0.25117从91-99对应得z值与迭代次数的图像
显然有值啊!我陷入了迷茫(甚至天真的认为是matlab出bug了),这时我的老师点醒了我(感谢老师!):迭代到最后,每个数字之间差距的太大了,前面9个数分辨不出来;与最后1个数相比,前面9个数太小。老师的意见是取对数(毕竟取了对数之后数值的增长速度便数量级的减少了),再看一下效果:
图4 c=0.25117迭代100取对数后迭代次数90-100对应的z值
很有趣的呈现指数型增长的图像,哪怕这还是取对数减缓增长速度之后的结果,很有意思,不是吗?
这种情形似乎与之前c=0.2时出现的收敛情况不同。我想:这是由于c值取得不同所产生的差别。
再次实验了c=0.24:
图5 c=0.24迭代10000次图像
图6 c=0.24迭代100次取对数
这个时候就能看得出来,图像似乎有些像对数图像。当迭代次数很大(1000以上)时,渐渐收敛于一点0.4000(这里看一下matlab里面的变量发现,哪怕第10000次也不够0.4000,而是0.399多)
- 针对Mandelbrot Set引发的函数迭代的思考与实验(1)
- 针对Mandelbrot Set引发的函数迭代的思考与实验(2) 以及对连续量的认识
- 针对java实验的思考(二)
- 针对java实验的思考(三)
- 针对java实验的思考(四)
- 针对于java实验的思考(一)
- concat()函数引发的思考
- Java IO实验引发的思考
- 一个字符串常量实验引发的思考
- 小实验、小思考(一)------List添加对象引发的小思考
- 由getchar()函数的使用而引发的思考.
- 自反馈与 Mandelbrot set
- 1*1 引发的思考
- 从Main函数引发的static思考
- 从Main函数引发的static思考
- 一个函数命名所引发的思考
- 一个截取字符串函数引发的思考
- pthread_create 函数引发的几点思考
- Android ListView使用
- 解决m2eclipse插件添加依赖结果集为空
- JSWindow对象
- 关于中珠是否该断网的思考
- iOS应用程序内购/内付费(一)
- 针对Mandelbrot Set引发的函数迭代的思考与实验(1)
- 软件静态测试技术
- CC2538之contiki基础演示视频 rpl-border-router,ping6演示
- Android常见控件【一】
- sublime text下markdown的配置.md
- 【转】我想对所有新程序员说的一些话
- 文华企业家代表参与甘肃省与上海市政府参事办经济调研会
- 用r挖掘大概流程
- 需要看的书以及需要了解的知识