1

我正在尝试在 Python 中使用 FiPy 解决一些微分方程,作为新手,我仍然遇到一些问题。我所做的如下:我定义了一个单元格变量,我为这个变量求解了一个方程并更新了它。我想在每次迭代后存储它的值。这是一个例子:

a = CellVariable(mesh,name='a', value=0., hasOld=True) 
# eq is an equation involving 'a'
# define an array to store the values of 'a' after solving 'eq'
a_tt = []
for t in range(10):
      eq.sweep(dt=0.01)
      a.updateOld() 
      a_tt.append(a)

我意识到我的错误 - 每次更新“a”时都会更新“a_tt”中的值,所以最后我有一个包含所有相同元素的数组。我应该怎么做才能避免这种情况?

4

1 回答 1

1

我认为a_tt.append(a.copy())可能会奏效。

否则, http: //www.ctcms.nist.gov/fipy/examples/diffusion/generated/examples.diffusion.mesh1D.html 的扫描部分中使用的方法应该可以工作。就像是:

a_tt.append(CellVariable(mesh=m, value=a.value))
于 2015-06-29T02:05:05.383 回答