【问题标题】:Algorithm concerning orthogonal matrices关于正交矩阵的算法
【发布时间】:2015-03-13 11:28:53
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: algorithm matrix orthogonal


    【解决方案1】:

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

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

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

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

    2。超过 1 个缺失元素

    • 首先找到方法 1 可以找到的所有未知数
    • 如果Q 是正交的,那么您可以利用Inverse(Q)==Transpose(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
      
    • 这应该是可以解决的……

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

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

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

    3.如果你有 element=1.0

    • 那么该行/列中的所有元素都将为零

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-17
      • 2013-05-10
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 2021-03-19
      • 2015-09-09
      相关资源
      最近更新 更多