답변:
행렬의 널 공간을 결정하는 표준 방법은 QR 분해 또는 SVD를 사용하는 것입니다. 정확성이 가장 중요한 경우 SVD가 선호됩니다. QR 분해가 더 빠릅니다.
SVD를 사용하여 인 경우 작은 특이 값 (즉, Σ의 작은 대각선 항목)에 해당하는 V의 열은 널 공간의 기초를 구성합니다. 여기서 관련된 허용 오차는 "작은"특이 값을 고려하는 것입니다. 예를 들어 MATLAB은 작을 때 최대 ( m , n ) ⋅ ε 이됩니다. 은 기계 정확도와 관련이 있습니다 (여기서는 MATLAB 문서 참조).
QR 분해를 사용하여 이고 A 의 순위 가 r 이면 QR 분해가 순위를 표시한다고 가정 할 때 Q 의 마지막 n - r 열 은 A 의 영 공간을 구성합니다 . r 을 결정하려면 크기가 허용 오차를 초과하는 R 의 주 대각선에있는 엔트리 수를 계산하십시오 (SVD 접근법에서 사용 된 것과 유사).
LU 분해를 사용하지 마십시오. 정확한 산술에서는 실행 가능한 방법이지만 부동 소수점 산술을 사용하면 수치 오류가 누적되어 부정확합니다.
Wikipedia는 여기 에서이 주제를 다룹니다 .
경우 귀하의 질문에 나타난 바와 같이, 먼저 인덱스를 선택하여 몇 가지 작업을 저장할 수 있습니다 설정 I을 의 페이지 ≈ 5 N (말) 임의의 행과 직교 인수 분해하여 T I : = Q R을 . 합니다 (QR 인수 분해는 하나 Q가 sqare의이고, R은 랭크의 장방형 (R) , 나머지 N - R 용 의 열 R은 제로인 안정성을 향상시키는 순열 QR 인수 분해를 사용하여 상기 전치는 다음에서 고려되어야한다. 더 자세한 레시피.)
일반적으로 이것은 Q 의 마지막 n - r 열인 의 열에 의해 훨씬 더 낮은 차원의 부분 공간을 제공합니다 . 이 부분 공간은 A 의 널 공간을 포함합니다 . 이제 다른 분리 된 랜덤 인덱스 세트를 선택하고 ( A I : N ) T 의 QR 인수 분해를 계산하십시오 . 왼쪽의 결과 Null 공간에 N 을 곱하여 더 작은 차원의 N 을 향상시킵니다 . N 의 차원이 더 이상 줄어들지 않을 때까지 반복하십시오 . 그런 다음 아마도 올바른 null 공간이 있고 A N 을 계산하여 확인할 수 있습니다. 아직 무시할 수없는 경우 가장 중요한 행을 추가로 반복하십시오.
편집 : 이 있으면 피벗을 사용하여 N T = Q R 의 직교 인수 분해를 통해 A 의 선형 독립 열의 최대 세트 J 를 찾을 수 있습니다 . 실제로 피벗으로 선택되지 않은 인덱스 집합 J 에는이 속성이 있습니다.