Ортогонализация Грамма-Шмидта - PullRequest
4 голосов
/ 13 июля 2010

Учитывая матрицу A (не обязательно квадратную) с независимыми столбцами, я смог применить итерацию Грамма-Шмидта и создать ортонормированный базис для ее пространства столбцов (в форме ортогональной матрицы 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, которая производит ортогональную матрицу Q? (Грамма-Шмидта).Функция R qr не дает ортогональную Q.

Ответы [ 2 ]

12 голосов
/ 13 июля 2010

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

Это выход, который вы хотели?

3 голосов
/ 13 июля 2010

Быстрый поиск по rseek.org приводит к пакету far и его функции orthonormalization, которую вы можете попробовать.

...