关于正交矩阵的算法

时间:2015-01-15 05:13:10

标签: algorithm matrix orthogonal

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

谢谢!

1 个答案:

答案 0 :(得分: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)正交
  • ,您可以利用Q
  • 因此从逆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
    
  • 这应该是可以解决的......

  • 如果没有,那么你也可以添加bullet 1
  • 中的方程式
  • 如果仍然没有找到解决方案,或者你需要使用不同的方法

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

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

第3。如果你有element = 1.0

  • 然后该行/列中的所有元素都将为零