在阅读了 Hirsch [1] 的矩阵稳定性章节 (10) 之后,我决定深入研究该章节的参考列表。作为参考引用的其中一篇论文 [2] 展示了一种非常有趣的稳定性分析方法。
这篇论文展示了一个真实世界的具有人工耗散的 NACA0012 翼型的流动解决方案的稳定性评估,以及有望解决这种类型流场的所有铃铛和智慧。
基本上,矩阵稳定性方法,如 Hirsch 中所述,显然在参考文献中使用。[2],定义如下:
如果你有一个离散的 PDE,你最终会得到。
.
如果您计算雅可比行列式的特征值,特征值的最大实部告诉您空间离散化方案是否稳定。一个正的真实特征值会随着时间的推移而放大,最终会破坏你的稳定性。
我正在尝试研究一些非常简单的案例的稳定性,但是,我不想使用矩阵的定义带状矩阵定义. 我希望能够以数值方式推导出它,所以当案例变得不那么琐碎时,我仍然能够评估我的案例的稳定性。我现在面临的问题是如何推导矩阵,因为它被定义为:
在哪里代表我的空间离散化方案,和是我的解决方案向量。
对于一维情况,是一个大小相同的向量. 我尝试使用简单的有限差分,但是,它们看起来不够健壮。或者,至少,尝试计算导数:
for i in range(1,n_points):
drhs_du = (rhs[i+1] - rhs[i-1]) / 2.0*(u[i+1] - u[i-1])
给了我很多零除法。
我看到了一些使用 Frechet 导数来计算Jacobian,但使用它的作者(我亲自认识)也报告说这种类型的数值导数相当麻烦。
最后,我的问题与以数字方式计算此雅可比行列式的稳健建议有关。你会使用哪种算法,甚至,你们会使用哪种衍生定义?是否有可靠的高性能库并实现了算法?
谢谢 !
[1] Hirsch.C《内外流数值计算 Vol.01》
[2] Eriksson.LE Rizzi“对欧拉方程离散近似稳态收敛的计算机辅助分析”
编辑#01
以下评论第二段中描述的方法的正确实现是否可以翻译为:
def frhs(unn,unm1,dx):
return (unn - unm1)/dx
eps = 0.0001
drhs_du = np.zeros((nx,nx))
for i in range(1,nx-1):
for j in range(1,nx-1):
drhs_du[i,j] = (frhs(un[i] + eps,un[i-1] + eps,dx) - frhs(un[j],un[j-1],dx))/eps
?