[科普] - 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()
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 = 100000
留言
張貼留言