0

假设我有一个 n 维正交矩阵,其中一些元素给定,而其他元素未知。是否存在一种有效的算法来找出未知元素并恢复整个矩阵(如果有很多只需要找到一个解决方案,当没有解决方案时会出错)?

谢谢!

4

1 回答 1

0

解决方案取决于每行/列缺少多少元素。

  • 我可以看到两种方法来解决这个问题

1. 每行/列最多缺少 1 个元素

  • 在这种情况下,您可以利用正交矩阵的任何行/列都是单位向量
  • 所以对于任何行/列{ a1,a2,a3=??,a4,...,an }
  • 未知元素是a3=sqrt(1-a1^2-a2^2-a4^2-a5^2-...-an^2)
  • 如果行中有多个未知元素,请使用列,反之亦然
  • 如果行和列中同时存在太多未知数
  • 那么您需要对该元素使用不同的方法

2. 多于 1 个缺失元素

  • 首先找到方法1可以找到的所有未知数
  • 那么你可以利用Inverse(Q)==Transpose(Q)ifQ是正交的
  • 所以从逆 Q 导出每个未知元素的代数公式
  • 并将其与转置的进行比较
  • 这将创建一个线性方程
  • 对所有未知数执行此操作并求解系统

         a11 a12     a13
    Q =  a21 a22=?? a23=??
         a31 a32=?? a33=??
    
                      a11 a21 a31
    transpose(Q) =  a12 a22=?? a32=??
                      a13 a23=?? a33=??
    
                 i11 i12 i13
    inverse(Q)= i21 i22 i23
                 i31 i32 i33
    
    det=a11.a22.a33+a21.a32.a13+a31.a12.a23-a11.a32.a23-a31.a22.a13-a21.a12.a33
    a22=i22=(a11.a33-a13.a31)/det
    a32=i23=(a13.a21-a11.a23)/det
    a23=i32=(a12.a31-a11.a32)/det
    a33=i33=(a11.a22-a12.a21)/det
    
  • 这应该是可以解决的...

  • 如果不是,那么您还可以添加项目符号 1 中的方程式
  • 如果仍然没有,则找不到任何解决方案,或者您需要使用不同的方法

在计算之前,您应该先检查是否|elements|不是太大

  • 所以将行/列中的所有已知元素 ^ 2 相加,结果应该是<=1
  • 如果不是,那么这也不是正交矩阵...
  • 有关更多信息,请参见正交矩阵 (Wiki)

3.如果你有元素=1.0

  • 那么该行/列中的所有元素都将为零
于 2015-01-15T06:54:10.983 回答