[科普] - Lorenz Attractor Python Implement



媽咪說的視頻,【分形与混沌4】天气预报为什么不准?蝴蝶效应与洛伦兹吸引子



【物理發展史】羅倫茲(Edward Lorenz)和蝴蝶效應

勞侖次方程式是基於納維-斯托克斯方程式、熱傳導方程式和連續性方程式簡化得出,三個方程如下




動態系統理論的重要目的是要找到動態系統的不動點或是穩態,也就是一些使系統狀態可以維持定值,不隨時間改變的數值。有些不動點稱為吸引子,是指若系統的初始值在這些點附近,系統會慢慢趨近吸引子。

三種常見的平庸吸子
  • 不動點(平衡)
  • 極限環(週期運動)
  • 整數維環面(概週期運動)
勞侖次在研究氣象時發現奇異吸子,它表現了混沌系統中非週期性,無序的系統狀態,在項空間中畫出來的圖案如下




在初始狀態只有些微改變下,最後的歸宿卻截然不同,也因為形狀像蝴蝶,故也稱蝴蝶效應。

Python implement 
------------------------------------------------------------------------------------------------------------
X = []
Y = []
Z = []

#initial point setup
x = 3.051522
y = 1.582542
z = 15.62388

#dt
dt = 0.0001

#parameter setup
a = 5
b = 15
c = 1

for i in range(500000):
 
    x1 = x + a * (-x + y) * dt
    y1 = y + (b * x - y - z * x) * dt
    z1 = z + (-c * z + x * y) * dt
 
    X.append(x1)
    Y.append(y1)
    Z.append(z1)
 
    x = x1
    y = y1
    z = z1

import matplotlib.pyplot as plt
ax = plt.subplot(111, projection='3d')
ax.scatter(X, Y, Z, c='y')
ax.set_zlabel('Z')
ax.set_ylabel('Y')
ax.set_xlabel('X')
plt.show()
------------------------------------------------------------------------------------------------------------

<執行>

 i = 100000



 i = 500000



 i = 1000000


留言

熱門文章