【问题标题】:Solving reaction-diffusion system with Theano用 Theano 求解反应扩散系统
【发布时间】:2016-02-21 08:57:31
【问题描述】:

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

现在我的表达是:

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 中是否有一种聪明的方法?

【问题讨论】:

  • 你的空间域是什么,边界条件是什么?
  • 我的空间域是二维的,所以vu(x,y) 的函数。现在我正在研究周期性边界条件。

标签: python scipy theano


【解决方案1】:

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

Google 的反应-扩散系统定义似乎表明 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

【讨论】:

  • 第三个链接真的很有帮助
  • sympy 也是一个可能的选项,可能比theano 更简单?
【解决方案2】:

在 Google 的 tensorflow 上使用卷积网络解决了一个类似但更简单的问题的有趣示例,可以在此处找到:

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]])

【讨论】:

    【解决方案3】:

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

    更新:现在你的方程很清楚了——拉普拉斯算子就在那里;两个耦合非线性偏微分方程。 好多了

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

    您还需要及时进行某种数值积分。最好采用隐式纠错方案。

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

    我承认我不是 Theano 专家。

    【讨论】:

      猜你喜欢
      • 2020-05-11
      • 2011-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-13
      • 1970-01-01
      相关资源
      最近更新 更多