Skip to content

算法Algorithm

张量积谱离散与 Kronecker 和

Tensor product spectral discretization

以明确的列向量化约定组装二维谱算子,并用不同轴尺度的算例检查 Kronecker 因子次序。

形式陈述 ​

二维谱算子怎样由一维矩阵组装,并避免把横纵方向写反?令网格值矩阵 Uij=u(xi,yj),行索引属于 x,列索引属于 y。设一维二阶导数矩阵为 A,B,则

uxx ↔ AU,uyy ↔ UBT.

按列堆叠得到 v=vec(U),也就是 x 索引变化最快。Kronecker 积 C⊗A 的第 (r,s) 块定义为 CrsA。于是

vec(AU+UBT)=(Iy⊗A+B⊗Ix)v.

这给出矩形网格上的 Laplace 离散;−Δ 再取负号。配点法决定一维 A,B 及边界处理,Kronecker 结构决定它们在二维矩阵中的摆放。

直觉

左乘 A 对 U 的每一列做同样的 x 微分,因此按列堆叠后表现为一组相同的对角块 Iy⊗A。右乘 BT 混合不同的列,在块层面由 B 控制。

对一个可分离网格值 U=abT,有 v=b⊗a,而二维算子给出 b⊗Aa+Bb⊗a。这一分离式是检查方向和转置最直接的方法。

例子与边界

取两个方向各两个内部点。x∈[−1,1] 的三次 Chebyshev 插值在齐次端点条件下,其内部二阶算子为

A=13(−1688−16).

若 y∈[−2,2],则尺度变化给出 B=A/4。对 U=(1234),直接算得

AU+UBT=(8/3−2−44/3−58/3).

按列堆叠的输入是 (1,3,2,4)T,输出应为 (8/3,−44/3,−2,−58/3)T。这组不同区间尺度使横纵交换错误不再被对称性掩盖。

如果程序按行存储逻辑展平,则 Kronecker 因子的次序应对应改变。内存中的连续布局与数学上的向量化约定也应分清:只要索引映射一致,任一种约定都能正确实现。

推论与应用

每个方向 n 个内部点时,显式二维矩阵有 n2×n2 个位置,稠密存储为 O(n4),通用分解成本为 O(n6)。矩阵自由应用 AU+UBT 只需存储一维算子与 U,一次作用约 O(n3)。可分离系数还可能使用 Sylvester 方程或特征分解进一步加速。

非零 Dirichlet 边界先进入一维消元形成的右端贡献,再组装内部系统。变系数 a(x,y)、混合导数和非矩形几何通常破坏简单 Kronecker 和结构,需要保留真实算子顺序。尤其 ∂x(a∂xu) 与 a∂xxu 本来就是不同算子。

参考资料
  • Trefethen, Spectral Methods in MATLAB, Chapter 9,二维 Poisson 与张量积离散。
  • Golub and Van Loan, Matrix Computations, 4th ed., Johns Hopkins University Press, 2013,Kronecker 积及结构化矩阵计算。
关系图谱11 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组