Main Content

rcond

조건수의 역수

설명

예제

C = rcond(A)는 1-노름에서 A의 조건수의 역수 추정값을 반환합니다. A의 조건이 좋은 경우 rcond(A)는 1.0에 가깝습니다. A의 조건이 나쁜 경우 rcond(A)는 0에 가깝습니다.

예제

모두 축소

조건이 나쁜 행렬이 얼마나 민감한지 알아보겠습니다.

양의 정부호 대칭 행렬이면서 조건이 나쁜 행렬의 대표적인 예로 힐베르트 행렬을 들 수 있습니다. 힐베르트 행렬의 요소는 H(i,j)=1/(i+j-1)입니다.

10×10 힐베르트 행렬을 생성합니다.

A = hilb(10);

이 행렬의 조건수의 역수를 구합니다.

C = rcond(A)
C = 2.8286e-14

조건수의 역수가 작으므로 A는 조건이 나쁜 것입니다.

A의 조건수는 유사한 선형 연립방정식의 해에 영향을 줍니다. 이 영향을 보기 위해 Ax=b의 해를 섭동 시스템 Ax=b+0.01의 해와 비교합니다.

1로 구성된 열 벡터를 만들고 Ax=b를 풉니다.

b = ones(10,1);
x = A\b;

이번에는 b0.01만큼 변경하고 섭동 시스템을 풉니다.

b1 = b + 0.01;
x1 = A\b1;

두 해 xx1을 비교합니다.

norm(x-x1)
ans = 1.1250e+05

A는 조건이 나쁘기 때문에 b가 조금만 변해도 x = A\b의 해가 크게 변합니다(1e5 수준). 이 시스템은 섭동에 민감합니다.

조건수의 역수가 행렬식보다 특이성을 더욱 정확히 나타내는 측정 수치가 되는 이유를 알아보겠습니다.

5×5의 단위 행렬에 수를 곱한 행렬을 만듭니다.

A = eye(5)*0.01;

이 행렬은 완전 랭크 행렬이며 5개의 동일한 특이값을 같습니다. 이는 svd(A)를 계산하여 확인할 수 있습니다.

A의 행렬식을 계산합니다.

det(A)
ans = 1.0000e-10

행렬의 행렬식이 0에 가깝긴 하나, 실제로 A는 조건이 매우 좋으며 특이 행렬에 가깝지 않습니다.

A의 조건수의 역수를 계산합니다.

rcond(A)
ans = 1

이 행렬의 조건수의 역수는 1이므로 조건이 매우 좋습니다. det(A) 대신 rcond(A) 또는 cond(A)를 사용하여 행렬의 특이성을 확인하십시오.

입력 인수

모두 축소

입력 행렬로, 정사각 숫자형 행렬로 지정됩니다.

데이터형: single | double

출력 인수

모두 축소

조건수의 역수로, 스칼라로 반환됩니다. C의 데이터형은 A의 데이터형과 같습니다.

조건수의 역수는 지정된 행렬이 특히 행렬 집합과 얼마나 가까운지를 나타내는 척도 불변 측정 수치입니다.

  • C가 0에 가까우면 이 행렬은 유사 특이 행렬이고 조건이 나쁘다고 합니다.

  • C가 1.0에 가까우면 이 행렬은 조건이 좋은 것입니다.

  • rcond는 행렬의 조건을 예측하는 수단으로, 조건수 cond에 비해 효율적이지만 안정성이 떨어집니다.

확장 기능

버전 내역

R2006a 이전에 개발됨

참고 항목

| | | | |