随笔 - 373  文章 - 1  评论 - 771  阅读 - 137万

混沌图像---洛伦兹的蝴蝶

      Lorenz系统作为第一个混沌模型,是混沌学发展史上的一个重要的里程碑,具有举足轻重的地位。我看过很多本关于混沌方面的书,每一本都会有洛伦兹吸引子,并且几乎每一本的封面上都会画上洛伦兹的蝴蝶曲线。虽然我看了这么多书,却始终没明白,这洛伦兹的方程式怎么就跟天气发生了关系。气象学家洛伦兹在1963年论文中提出的它的公式以表示天气模型。天气系统如此复杂,用数百万个变量来描述都不为过,但洛仑兹将其压缩到了三个变量:x,y和z,所以这只是一个玩具模型。这个玩具模型对于他的论点来说,也许恰到好处。之前的天气模型大多是线性的,没有过多考虑各种因素之间的复杂关系,洛伦兹早认为这样的模型无法描述多变的天气。而他的模型,尽管只有三个随着时间变化的变量,但变量之间却有着非线性的联系,能够很好地诠释了因素之间的相互影响。

  就在这样简单的Lorenz模型之下,出现了混沌现象。而且这种现象似乎是普遍的,因为在三个变量取值的大部分可能性下,系统演变的轨迹都会渐渐趋近于同一个产生混沌的区域,就像磁铁吸引着图钉,混沌的行为成为了必然。这就是人们发现的第一个混沌吸引子:洛伦兹吸引子。它的形状,就像一只蝴蝶;这大概也是洛伦兹将这种混沌的现象称为“蝴蝶效应”的原因。一只南美洲蝴蝶的扑翼,在蝴蝶效应的放大下,也许引起德克萨斯州的一场飓风。天气不可能准确预测,因为天气是混沌的,微小的扰动在长远看来是不可忽略的,而我们又无力去追踪无数的扰动,只能一边预计,一边修正。

      如果不明白上面的话也无所谓,反正这里研究的不是天气、不是雾霾,我只是用洛伦兹吸引子生成漂亮的图像。

      这里使用自己定义语法的脚本代码生成混沌图像.相关软件参见:YChaos生成混沌图像.如果你对数学生成图形图像感兴趣,欢迎加入QQ交流群: 367752815

先上脚本代码:

复制代码
 1 [ScriptLines]
 2 u=a*(y - x)
 3 v=b*x - y - x*z
 4 w=x*y - c*z
 5 x=x+u*t
 6 y=y+v*t
 7 z=z+w*t
 8 
 9 [Variables]
10 a=10.000000
11 b=28.000000
12 c=2.666667
13 t=0.001000
14 x=-10.000000
15 y=10.000000
16 z=25.000000
复制代码

生成如下的图像:

      如果你了解洛伦兹的数学公式,你会发现它实际上是三维的,有XYZ三个维度。这里只是生成二维的图像,所以这里需要将三维的数据投影到一个二维平面上。可以先想象一下夏天拍蚊子的情景,将空间中的蚊子拍死在二维的墙面上。如果是拍人呢,可以选择前后拍,左右拍,最残忍的应该是上下拍。记得小说《三体》中有一种很厉害的武器是张小纸条,它能够将三维的世界拍成二维的,于是地球以及整个太阳系就这么被毁灭了。

      上述脚本是使用默认的XOY面做为投影面,同样也可以使用XOZ面,YOZ面。

YOZ

复制代码
[ScriptLines]
u=a*(j - i)
v=b*i - j - i*k
w=i*j - c*k
i=i+u*t
j=j+v*t
k=k+w*t
x=i
y=j*cos(d) - k*sin(d)
z=j*sin(d) + k*cos(d)
复制代码

XOZ

复制代码
[ScriptLines]
u=a*(j - i)
v=b*i - j - i*k
w=i*j - c*k
i=i+u*t
j=j+v*t
k=k+w*t
x=i*cos(d) - k*sin(d)
y=j
z=i*sin(d) + k*cos(d)
复制代码

将三维的物体投影到二维平面上,你可以将其按任意角度,任意平面去投影,下面的公式为将图形以Z轴旋转一定角度:

复制代码
[ScriptLines]
u=a*(j - i)
v=b*i - j - i*k
w=i*j - c*k
i=i+u*t
j=j+v*t
k=k+w*t
x=i*cos(d) - j*sin(d)
y=i*sin(d) + j*cos(d)
z=k
复制代码

洛伦兹吸引子是没有随机性的,但我可以强行为其加上随机性:

[ScriptLines]
u=a*(y - x)
v=b*x - y - x*z
w=x*y - c*z
x=x+u*t + rand2(-r,r)
y=y+v*t + rand2(-r,r)
z=z+w*t + rand2(-r,r)

说实话,这几幅洛伦兹蝴蝶的图像颜色看着有些难看。当时我只是随意写了个配色函数,感觉是惨绿惨绿的。下面将帖几张漂亮点的蝴蝶图像:

相关软件介绍:

YChaos生成混沌图像

相关文章:

混沌数学之Lorenz(洛伦茨)吸引子

posted on   叶飞影  阅读(17089)  评论(3编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示