Main Content

isIllConditioned

행렬의 조건이 나쁜지 여부 판별

설명

tf = isIllConditioned(dA)는 분해 dA를 만드는 데 사용된 원래 계수 행렬 A의 조건이 나쁜(ill conditioned) 경우 논리형 1(true)을 반환하고, 그렇지 않으면 논리형 0(false)을 반환합니다.

분해 유형에 따라 사용되는 테스트가 달라집니다.

  • 'qr''cod' 분해 — rank(dA) < min(size(A))인 경우 계수 행렬의 조건이 나쁩니다.

  • 기타 모든 분해 — rcond(dA) < eps인 경우 계수 행렬의 조건이 나쁩니다.

isIllConditioned가 논리형 1(true)을 반환하면, dA\b 또는 b/dA를 사용하여 선형 시스템을 풀 때 경고가 표시됩니다. 이러한 경고를 끄려면 분해 객체 dACheckCondition 속성을 사용하십시오.

예제

예제

모두 축소

25×25 힐베르트 계수 행렬에 대한 행렬 분해 객체를 만든 다음 기본 계수 행렬의 조건이 나쁜지(ill conditioned) 여부를 확인합니다.

A = hilb(25);
dA = decomposition(A)
dA = 
  decomposition with properties:

    MatrixSize: [25 25]
          Type: 'lu'

  Show all properties

tf = isIllConditioned(dA)
tf = logical
   1

계수 행렬의 조건수의 역수를 확인합니다. 이 경우, rcond(dA)eps보다 작으므로 isIllConditioned에 따라 계수 행렬 A의 조건이 나쁜지가 결정됩니다.

rcond(dA)
ans = 
1.3969e-19

입력 인수

모두 축소

입력된 분해로, decomposition 객체로 지정됩니다.

예: dA = decomposition(A,'qr')

  • isIllConditioned는 decomposition 객체의 랭크와 조건수 추정값을 사용합니다. 여기서의 추정값은 계수 행렬에서 rank(A) 또는 rcond(A)를 직접 호출할 때와 다를 수 있습니다.

버전 내역

R2017b에 개발됨

참고 항목

| |