高阶偏微分方程
我正在尝试求解具有固定边界值的六阶非线性 PDE (1D)(扩展 Fisher-Kolmogorov - EFK)。 FTCS 失败后,下一次尝试是使用 LSODES 等 MoL(空间中心或 FEM)。
如何实施?到目前为止使用Python/C + OpenMP,但需要一些指导 有效地做到这一点。
带有附加六阶项的 EFK:
u_t = d u_6x - g u_4x + u_xx + u-u^3
其中 d、g 是实数系数。
u(x,0) = exp(-x^2/16), 边界域上的 ux = 0
为 [0,300] 且 dx << 1 因为我正在寻找模式形成(取决于值 d, g)
我希望这是足够的信息。
I'm trying to solve a 6th-order nonlinear PDE (1D) with fixed boundary values (extended Fisher-Kolmogorov - EFK). After failing with FTCS, next attempt is MoL (either central in space or FEM) using e.g. LSODES.
How can this be implemented? Using Python/C + OpenMP so far, but need some pointers
to do this efficiently.
EFK with additional 6th order term:
u_t = d u_6x - g u_4x + u_xx + u-u^3
where d, g are real coefficients.
u(x,0) = exp(-x^2/16),
ux = 0 on boundary
domain is [0,300] and dx << 1 since i'm looking for pattern formations (subject to the values
of d, g)
I hope this is sufficient information.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
像这样的所有 PDE 解决方案最终都会在程序中使用线性代数来表示,因此技巧是在开始编码之前弄清楚如何将 PDE 转换为该形式。
有限元方法通常从加权残差法开始。非线性方程需要线性近似和迭代方法,如牛顿-拉夫森。我建议你从那里开始。
您的解决方案是瞬态的,因此您必须进行时间步进。您可以使用显式方法并接受稳定性限制所需的小时间步长,也可以使用隐式方法,这将迫使您在每个步骤中进行矩阵求逆。
我首先对线性部分进行傅里叶分析,以了解稳定性要求。
该方程中唯一使其非线性的项是最后一项:-u^3。您是否尝试过先去掉该项并求解剩下的线性方程?
更新:评论引发了一些额外的想法:
我理解
u^3
术语有多么重要。扩散是空间的二阶导数,所以我不确定六阶方程是否会遵循。我对偏微分方程的经验来自没有六阶方程的物理学分支,所以老实说我不知道解可能是什么样的。我会先解决线性问题以了解它。至于稳定性和显式方法,对时间步长的稳定性限制使得它们可能会失败,这是教条,但概率不是 1.0。我认为 MapReduce 和云计算可能会让显式解决方案比 10-20 年前更加可行。显式动力学已成为解决困难的静力学问题的主流方法,因为它们不需要矩阵求逆。
All PDE solutions like this will ultimately end up being expressed using linear algebra in your program, so the trick is to figure out how to get the PDE into that form before you start coding.
Finite element methods usually begin with a weighted residual method. Non-linear equations will require a linear approximation and iterative methods like Newton-Raphson. I would recommend that you start there.
Yours is a transient solution, so you'll have to do time stepping. You can either use an explicit method and live with the small time steps that stability limits will demand or an implicit method, which will force you to do a matrix inversion at each step.
I'd do a Fourier analysis first of the linear piece to get an idea of the stability requirements.
The only term in that equation that makes it non-linear is the last one: -u^3. Have you tried starting by leaving that term off and solving the linear equation that remains?
UPDATE: Some additional thoughts prompted by comments:
I understand how important the
u^3
term is. Diffusion is a 2nd order derivative w.r.t. space, so I wouldn't be so certain that a 6th order equation will follow suit. My experience with PDEs comes from branches of physics that don't have 6th order equations, so I honestly don't know what the solution might look like. I'd solve the linear problem first to get a feel for it.As for stability and explicit methods, it's dogma that the stability limits placed on time step size makes them likely to fail, but the probability isn't 1.0. I think map reduce and cloud computing might make an explicit solution more viable than it was even 10-20 years ago. Explicit dynamics have become a mainstream way to solve difficult statics problems, because they don't require a matrix inversion.