时间稳定的 SO(n) 矩阵合成算法

计算科学 线性代数 矩阵
2021-12-15 04:27:17

考虑一个方程,其中是给定的,向量是连续的,即它的端点在单位球体。任务是找到连续解(数值)。考虑一个时间网络S(t)b(t)=aa,b(t)Sn1b(t)S(t)SO(n)t0<...<tn

  1. 在 2D 情况下,我们可以计算的角度,然后将是该角度(倒数)的旋转矩阵,由的角度校正。b(t)S(t)a
  2. 在 3D 情况下,我们可以使用欧拉定理并在迭代方法的每个步骤中通过将矩阵乘以发送到来校正矩阵 S(t_k) S(tk)Sb(tk)b(tk+1)
  3. 在一般情况下假设我试图在第一步使用 Gram-Schmidt 过程。然后在我们方法的每个步骤中,我使用 Gram-Schmidt 过程和之前的基础作为初始条件构建了新的方法。它有效,但它足够耗时。a=(1,0,...,0)Tb(t0),e2,...,enS(t0)=[b(t0),e2,...,en]1

我的问题是如何在一般情况下更快地S(t)

2个回答

如果没有任何变化,所以不失一般性,假设 , 并假设都是可逆的。A(tk)=[b(tk),e2,,en]b(tk+1)=b(tk)b(tk+1)b(tk)0A(tk)A(tk+1)

通过注意是 A 的秩一更新,​​您可以从 A(t_{k})^{-1} 得到A,并使用Sherman-Morrison 公式,其中与使用 LU 分解相比,这种 rank-1 更新会更便宜。A(tk+1)1A(tk)1A(tk+1)A(tk)u=b(tk+1)b(tk)v=e1A(tk+1)

然后,由于 1}的一级更新,您可以更新您的 QR 分解(至少,这就是我会在数字上做 Gram-Schmidt)也使用秩一更新方案。在Golub 和 van Loan的矩阵计算第三版的第 12.5.1 节中可以找到一种用于完成 QR 分解的秩一更新的算法。A(tk+1)1A(tk)1

这两个更新都应该将操作的复杂性降低到操作;您甚至可以以这种方式计算及其 QR 分解,因为是单位矩阵的秩一更新。O(n3)O(n2)A(t0)1A(t0)

重写你的方程

b(t)=B(t)a

B(t+Δt)=BB(t)其中 使得带到现在

B=(b/bb˙/b˙)(cosθsinθsinθcosθ)(b/bb˙/b˙)+I(b/bb˙/b˙)(b/bb˙/b˙)
θBb(t)b(t+Δt)S(t)=B(t)

B 的构造使得您的坐标系由定义。由于所有其他方向不受影响,我们投影到的补码(右边的第二项),然后在(右边的第一项)内旋转。bb˙span {b,b˙}bb˙

您可能还想考虑您的问题可以理解为

Sb˙+S˙b=0
使得
SSO(n).