我有以下 PDE 系统,我为其提供了参数和,
无通量边界条件为和为了和. 初始条件是.
Mathematica 未能产生结果,因为边界条件中导数的阶数为,与导数的阶相同写在 PDE 中。
Mathematica 的任何替代品?
我有以下 PDE 系统,我为其提供了参数和,
无通量边界条件为和为了和. 初始条件是.
Mathematica 未能产生结果,因为边界条件中导数的阶数为,与导数的阶相同写在 PDE 中。
Mathematica 的任何替代品?
这是我拼凑的东西,它肯定是不正确的,因为程序正在抛出错误。特别是,SolutionVariableNumberError
提出了一个。这可能是因为方程写错了。可能的嫌疑人,我猜是在SourceTerm
's。这是一个关于如何在 FiPy 中求解这些方程的开始。
也许论坛中的某个人对这个工具有更多的经验,并且可以详细说明这里出了什么问题。除此之外,如果您想继续使用此工具,我建议您阅读和学习更多 FiPy 的示例。您也可以发布到他们的邮件列表,并在编写方程式时寻求帮助。我已经看到其他人在列表中这样做,因为我已经关注了一段时间。项目维护人员非常有帮助。(我与该项目无关,我只是一个粉丝)。
from fipy import CellVariable
from fipy import DiffusionTerm
from fipy import Grid1D
from fipy import ImplicitSourceTerm
from fipy import numerix
from fipy import PowerLawConvectionTerm
from fipy import TransientTerm
mu = 1.
gam = 1.
tau = 1.
m = Grid1D(nx=100,Lx=1.)
L = CellVariable(mesh=m, hasOld=True)
F = CellVariable(mesh=m, hasOld=True)
T = CellVariable(mesh=m, hasOld=True)
x = m.cellCenters
L.value = numerix.exp(-x**2)
F.value = numerix.exp(-x**2)
T.value = numerix.exp(-x**2)
eqn0 = TransientTerm(var=L) == DiffusionTerm(mu, var=L) + (ImplicitSourceTerm(var=F) - ImplicitSourceTerm(var=L*T))
eqn1 = TransientTerm(var=F) == PowerLawConvectionTerm(-1., F) - (ImplicitSourceTerm(var=F) - ImplicitSourceTerm(var=L*T))
eqn2 = TransientTerm(var=T) == gam * (ImplicitSourceTerm(1., var=L) + ImplicitSourceTerm(tau, var=F) + ImplicitSourceTerm(-1.,var=T))
eqn = eqn0 & eqn1 & eqn2
for t in range(100):
L.updateOld()
F.updateOld()
T.updateOld()
eqn.solve(dt=1.e-3)
看看你的边界条件是什么,你应该使用光谱(Galerkin)方法。我正在尝试解决一些类似的问题,但是在 9 个维度中,并且将无限场衰落视为边界条件的方法是使用 galerkin 方法。
可能使用像这样的基础. 尽管您应该更多地研究可能的基础。
这里边界条件隐含在基的选择中,因为每个函数都已经满足它们。
然后,您应该对初始条件进行级数扩展(例如傅立叶级数,但使用新的基础)。女巫会给你一个用于级数展开系数的 ODE-s 系统。
我希望这有任何帮助。