Main Content

colperm

0이 아닌 요소의 개수에 기반한 희소 열 치환(Column Permutation)

구문

j = colperm(S)

설명

j = colperm(S)는 치환 벡터 j를 생성하여 S(:,j)의 열이 0이 아닌 항목의 증가하는 개수에 따라 정렬되도록 합니다. 이는 LU 분해에 대한 전위(Preordering)로 유용할 수 있습니다. 이 경우 lu(S(:,j))를 사용해야 합니다.

S가 대칭인 경우 j = colperm(S)는 치환 j를 생성하여 S(j,j)의 행과 열이 모두 0이 아닌 항목의 증가하는 개수에 따라 정렬되도록 합니다. 이는 S가 양의 정부호인 경우 촐레스키 분해(Cholesky Factorization)에 대한 전위(Preordering)로 유용할 수 있습니다. 이 경우 chol(S(j,j))를 사용해야 합니다.

예제

다음 100×100 화살촉 표시 모양 행렬의 경우

n = 100;
A = [ones(1,n); ones(n-1,1) speye(n-1,n-1)]

첫 번째 행과 열이 비희소(Full)입니다. LU 분해 lu(A)는 거의 완전히 비희소(Full)입니다. 다음 명령문은

j = colperm(A)

j = [2:n 1]을 반환합니다. 따라서 A(j,j)는 비희소(Full) 행과 열을 맨 아래와 뒤쪽으로 보내고 lu(A(j,j))A 자신과 동일한 0이 아닌 구조체를 가집니다.

반면에, 버키 볼(Bucky Ball) 예제에서

B = bucky

각 행과 열에 0이 아닌 요소가 정확히 3개 있으므로 j = colperm(B)는 항등 치환(Identity Permutation)이며 그 이후의 분해로 필인(Fill-in)을 줄이는 데 전혀 도움이 되지 않습니다.

알고리즘

이 알고리즘은 각 열에서 0이 아닌 요소의 개수 정렬과 관련 있습니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| | | | | |