如何正确使用多项式投影来获取可视化节点的值?

计算科学 插值 多项式 不连续-galerkin 投影
2021-12-19 06:53:48

我正在尝试为线性和非线性方程组实现节点不连续 Galerkin 谱元方法。每个时间步的解在N节点处给出,这些节点位于 Legendre-Gauss/Legendre-Gauss-Lobatto 正交的积分点处。

出于可视化目的,我想在M等距可视化节点处获得解决方案,通常是M > N. 据我所知,通常 L2 投影优于多项式插值(尽管成本更高),尤其是在更高自由度的情况下,因为投影给出了 L2 范数的最佳近似值。

据我了解,这是我必须采取的步骤的粗略概述:

  1. 为旧节点组装 Vandermonde 矩阵V
  2. 反转V
  3. 使用V和 节点值来获得模态系数。
  4. 投影到新节点。
  5. 为新节点组装 Vandermonde 矩阵V'
  6. 使用V'和 模态系数来获得节点值。

最后,我的问题:

  • a) 这种方法通常正确吗?
  • b)是否有针对我的具体问题的算法简化,例如
    • 的反演V是微不足道的,因为我可以使用所用多项式(Legendre)或节点(L-Gauss/L-Gauss-Lobatto)的一些属性?
    • 整个算法可以简化,因为我已经从多项式近似开始,而不是任意精确函数?

任何建议或指向进一步阅读材料的建议都非常感谢。

编辑:

我使用拉格朗日基函数进行计算,GL/LGL 节点仅用于数值积分。因此,在我想在新节点上获得解决方案时,我没有关于解决方案的任何信息,而是旧节点上的值。

2个回答

你想在这里插值,而不是执行L2投影。您希望DG 解决方案在等间距节点上的价值。在任何情况下L2投影只会反馈你开始使用的多项式(记住,它最小化L2错误..如果您已经是多项式,那么您将无法做得更好)。

这是您需要计算的矩阵

  1. LGL 节点的 Vandermonde:V
  2. Vandermonde 用于所需的等距 noes:Veq

然后给出一个解向量u插值看起来像

ueq=VeqV1u

所有这一切都假设您不直接使用拉格朗日多项式基础进行计算,而是使用像勒让德多项式这样的正交基础,因此您的 Vandermondes 将是

Vij=Pj(xi)

在您用于计算的任何基础上。

编辑:再读一遍不清楚您是要可视化计算的 DG 解决方案还是解析解决方案(或初始条件)。在后一种情况下,仍然使用插值。这要容易得多,而且您不会注意到可视化中的准确性差异。不过,我会将其保留在 LGL 节点上,然后对插值多项式进行采样以进行可视化。

在我的代码中,当我得到 FE 解决方案时f(x)作为基函数的线性组合ϕi(x)

f(x)=iqiϕi(x)
我可以随时 轻松评估x0通过评估此时的基函数(ϕi(x0)) 并进行线性组合:
f(x0)=iqiϕi(x0)

我也使用这种方法将解决方案转移到正交点(以防它们与节点不同)。显然,光谱元素的优点之一是使用相同的点作为节点和正交点,然后不必这样做——但你仍然需要这个来绘图(如你所问),但同样,很多次我为自己省去了麻烦,只在节点上绘制了值,这通常让我很好地了解解决方案的外观。