2016-06-11 3 views

답변

4

orthsingular value decomposition을 사용합니다. orth의 정의는 현재 https://github.com/scipy/scipy/blob/master/scipy/linalg/decomp_svd.py에 살고, 나는이 쓰기로, (문서화 문자열을 삭제) orth에 대한 전체 코드는 다음과 같습니다

def orth(A): 
    u, s, vh = svd(A, full_matrices=False) 
    M, N = A.shape 
    eps = numpy.finfo(float).eps 
    tol = max(M, N) * numpy.amax(s) * eps 
    num = numpy.sum(s > tol, dtype=int) 
    Q = u[:, :num] 
    return Q 

결과는 적은 tol보다 특이 값이 0이된다는 점이며, 해당 방향은 A 범위의 일부로 간주되지 않습니다. tol상대 값 허용 오차입니다.이 값은 A의 최대 특이 값 max(M, N)*eps 번으로 설정됩니다. 여기서 eps은 부동 소수점 컴퓨터 입니다.

orthtol이 계산되는 방법을 제어하는 ​​인수를 제공하지 않지만 알 수 있듯이이 함수는 몇 줄에 불과합니다. 무시할 특 수 값을 결정하는 데 다른 방법을 사용하려면 orth을 자신의 함수를 작성하기위한 시작점으로 사용할 수 있습니다.