用 Galerkin 方法求解非线性热方程得到负值

计算科学 非线性方程
2021-11-29 02:57:13

我正在尝试求解非线性时间相关的热方程

tT=(kT(T)T)+f
使用具有诺依曼边界条件的 Galerkin 方法。对于非线性部分的线性化,我使用牛顿方法。源项f总是保持积极,因此我希望
TT0tt0
但现在我注意到在某些节点上我的价值T低于初始值,甚至进入负值范围。我不明白为什么会发生这种情况,它与时间步无关,但与f.
这种行为的原因可能是什么?
我注意到负值的范围大约比最大值小五到六个数量级T那时,这可能是一个准确性问题吗?

1个回答

事实证明,最近在 deal.II 邮件列表中询问了这个问题的一个变体,所以我将在这里复制我的答案:

您的误解是您认为方程的精确解的属性应该也适用于离散的。但实际上没有任何理由会出现这种情况,除了您知道数值解的极限必须是这样的事实之外h0在某种意义上。

举一个例子,如果你使用 Heaviside 函数

H(x)={0if x01if x>1
那么它显然是非负的。但是如果你在有限数量的基函数之后进行傅里叶变换并截断,那么你会得到吉布斯现象——这里有很多过冲和下冲的例子: https ://en.wikipedia.org/wiki/Fourier_transform 所以对于有限维情况,也不满足连续性。事实上,如果你N:傅里叶变换只收敛于L2,不在L