用Theano求解反应扩散系统

时间:2016-02-21 08:57:31

标签: python scipy theano

我是Theano的新手,我尝试实现反应扩散系统的数值积分器 - FitzHugh–Nagumo model此版本:

enter image description here

enter image description here

现在我的表达是:

import theano as th
import theano.tensor as T

u = T.dmatrix('u')
v = T.dmatrix('v')
e = T.dscalar('e')
a0 = T.dscalar('a0')
a1 = T.dscalar('a1')

dudt = u - u**3 -v
dvdt = e*(u - a1*v - a0)

所以我还没有实现有限差异laplacian operator。我的问题是,在Theano中是否有一种聪明的方式吗?

3 个答案:

答案 0 :(得分:4)

使用Theano有什么理由吗? Python中还有其他方法可以解决耦合非线性ODE系统。

谷歌的反应 - 扩散系统定义似乎暗示了u(x,y,t),v(x,y,t)。

我不是Theano的用户,但它看起来像是一个等式的形式来解决问题,比如b = Ax是要走的路。

我在Google上遇到的使用Theano并且通常解决PDE的一些资源如下。

Expressing the Laplacian using Theano

Solving a reaction-diffusion problem using numpy

Github project using Theano to solve the shallow water PDE

答案 1 :(得分:2)

在谷歌的张量流上使用卷积网络解决的类似但更简单问题的一个有趣例子可以在这里找到:

https://www.tensorflow.org/versions/r0.7/tutorials/pdes/index.html

特别是他们使用以下扩散核的定义:

  laplace_k = make_kernel([[0.5, 1.0, 0.5],
                           [1.0, -6., 1.0],
                           [0.5, 1.0, 0.5]])

答案 2 :(得分:1)

我在这里看到两个耦合的一阶非线性常微分方程。

更新:现在你的方程很清楚了 - 拉普拉斯人就在那里;两个耦合的非线性PDE。 很多更好。

您的空间离散化需要有限差分或有限元方法。当然,你的选择,但我更喜欢有限元方法而不是有限差分。

您还需要及时进行某种数值整合。隐式纠错方案最好。

我很快看了一下Theano文档。我没有看到任何可以帮助您解决空间离散化问题的事情。一旦你完成了,你将拥有可以解决的矩阵方程式,但我不相信Theano会帮助你解决问题。

我承认我不是Theano maven。