代码之家  ›  专栏  ›  技术社区  ›  Yorgos

克-施密特正交化

  •  4
  • Yorgos  · 技术社区  · 14 年前

    给出了一个具有独立列的矩阵A(不一定是正方形),我能够应用gram-schmidt迭代,并利用matlab函数为其列空间(以正交矩阵Q的形式)生成一个正交基。 qr

    A=[1,1;1,0;1,2]
    
    [Q,R] = qr(A)
    

    然后

    >> Q(:,1:size(A,2))
    ans =
      -0.577350269189626  -0.000000000000000
      -0.577350269189626  -0.707106781186547
      -0.577350269189626   0.707106781186547
    

    可以验证列是否为正交

    Q(:,1)'*Q(:,2) equals zero and
    
    norm(Q(:,1)) equals norm(Q(:,2)) equals 1
    

    给定一个有独立列的矩阵(如a),r中是否有一个函数产生(gram-schmidt)正交矩阵q?R的 QR 函数不产生正交q。

    2 回复  |  直到 11 年前
        1
  •  12
  •   Richard Herron    14 年前

    qr 有效,但它使用一个独特的约定并生成 QR 进一步操作的对象 qr.Q qr.R :

    > A
         [,1] [,2]
    [1,]    1    1
    [2,]    1    0
    [3,]    1    2
    > A.qr <- qr(A)
    > qr.Q(A.qr)
               [,1]          [,2]
    [1,] -0.5773503 -5.551115e-17
    [2,] -0.5773503 -7.071068e-01
    [3,] -0.5773503  7.071068e-01
    > qr.R(A.qr)
              [,1]      [,2]
    [1,] -1.732051 -1.732051
    [2,]  0.000000  1.414214
    

    这是你想要的输出吗?

        2
  •  3
  •   Dirk is no longer here    14 年前

    快速搜索通过 rseek.org 引出到包 far 它的功能 orthonormalization 你可以试试。