我有一段代码增加了所谓的Lorenz95 模型(由 Ed Lorenz 于 1995 年发明)的时间步长。它通常以 40 变量模型的形式实现,并显示出混乱的行为。我已经将算法的时间步长编码如下:
class Lorenz:
'''Lorenz-95 equation'''
global F, dt, SIZE
F = 8
dt = 0.01
SIZE = 40
def __init__(self):
self.x = [random.random() for i in range(SIZE)]
def euler(self):
'''Euler time stepping'''
newvals = [0]*SIZE
for i in range(SIZE-1):
newvals[i] = self.x[i] + dt * (self.x[i-1] * (self.x[i+1] - self.x[i-2]) - self.x[i] + F)
newvals[SIZE-1] = self.x[SIZE-1] + dt * (self.x[SIZE-2] * (self.x[0] - self.x[SIZE-3]) - self.x[SIZE-1] + F)
self.x = newvals
这个函数 euler 并不慢,但不幸的是,我的代码需要对它进行非常大量的调用。有没有办法我可以编写时间步长以使其运行得更快?
非常感谢。