我正在研究洛伦兹系统。我使用 'scipy.integrate.odeint' 内置函数按照 Wikipedia 1的建议进行集成。Lorenz 系统具有三个变量:x、y、z。当我比较具有相同初始条件、相同时间差(dt)但不同时间设定点的两个洛伦兹系统的 x 演化时,我得到了不同的集合。这两个系统在一段时间内发展相似,但后来出现了分歧2。是什么原因?唯一的区别是它们具有不同的时间集(但具有相同的时差)。时间点设置如何影响集成?
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import odeint
from mpl_toolkits.mplot3d import Axes3D
rho = 28.0
sigma = 10.0
beta = 8.0 / 3.0
def f(state, t):
x, y, z = state # Unpack the state vector
return sigma * (y - x), x * (rho - z) - y, x * y - beta * z # Derivatives
##Evolution_1
state0 = [3.0, 1.0, 1.0]
t = np.arange(0.0, 40.0, 0.01)
states = odeint(f, state0, t)
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot(states[:, 0], states[:, 1], states[:, 2])
plt.show()
#Evolution_2
state0 = [3.0, 1.0, 1.0]
t2 = np.arange(1.0, 41.0, 0.01)
states2 = odeint(f, state0, t2)
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.plot(states2[:, 0], states2[:, 1], states2[:, 2])
plt.show()
plt.plot(states2[:, 0],range(len(states2[:, 0])),states[:, 0],range(len(states2[:, 0])),np.absolute(np.subtract(states2[:, 0],states[:, 0])),range(len(states2[:, 0])))`
我还附上了我为上述代码获得的图表:x 在这两个系统中的演变。