cond
역행렬의 조건수
설명
예제
행렬의 조건수
행렬의 조건수를 계산하고 역행렬 계산에 대한 감도를 검토합니다.
2×2 행렬을 만듭니다.
A = [4.1 2.8; 9.7 6.6];
A
의 2-노름 조건수를 계산합니다.
C = cond(A)
C = 1.6230e+03
A
의 조건수가 1보다 훨씬 크므로, 이 행렬은 역행렬 계산에 민감합니다. A
의 역행렬을 계산한 다음, A
의 두 번째 행을 조금만 변경하고 역행렬을 다시 계산합니다.
invA = inv(A)
invA = 2×2
-66.0000 28.0000
97.0000 -41.0000
A2 = [4.1 2.8; 9.671 6.608]
A2 = 2×2
4.1000 2.8000
9.6710 6.6080
invA2 = inv(A2)
invA2 = 2×2
472.0000 -200.0000
-690.7857 292.8571
결과를 보면 A
를 조금만 변경해도 역행렬 계산의 결과가 완전히 달라질 수 있다는 점을 알 수 있습니다.
1-노름 조건수
행렬의 1-노름 조건수를 계산합니다.
3×3 행렬을 만듭니다.
A = [1 0 -2; 3 4 6; -1 5 7];
A
의 1-노름 조건수를 계산합니다. m×n 행렬에 대한 1-노름 조건수의 값은 다음과 같습니다.
,
여기서 1-노름은 다음과 같이 지정된 행렬의 열 절댓값의 최대 합입니다.
C = cond(A,1)
C = 18.0000
이 행렬은 조건수가 그리 크지 않기 때문에 역행렬 계산에 크게 민감하지 않습니다.
입력 인수
A
— 입력 행렬
행렬
입력 행렬입니다. A
는 정사각 행렬이나 직사각 행렬일 수 있습니다.
데이터형: single
| double
복소수 지원 여부: 예
p
— 노름 유형
2
(디폴트 값) | 1
| 'fro'
| Inf
노름 유형으로, 다음 표에 표시된 값 중 하나로 지정됩니다. cond
는 2가 아닌 p
의 값에 대해서는 norm(A,p) * norm(inv(A),p)
를 사용하여 조건수를 계산합니다. 이러한 노름 유형에 대한 추가 정보는 norm
페이지를 참조하십시오.
p의 값 | 노름 유형 |
---|---|
| 1-노름 조건수 |
| 2-노름 조건수 |
| 무한대 노름 조건수 |
| 프로베니우스 노름(Frobenius Norm) 조건수 |
예: cond(A,1)
은 1-노름 조건수를 계산합니다.
출력 인수
C
— 조건수
스칼라
조건수로, 스칼라로 반환됩니다. C
의 값이 1에 가까우면 조건이 좋은 행렬을 나타내고, C
의 값이 크면 조건이 나쁜 행렬을 나타냅니다. 특이 행렬의 조건수는 Inf
입니다.
일반적으로 빈 행렬의 조건수는 0입니다.
세부 정보
역행렬의 조건수
행렬 및 계산 작업에 대한 조건수는 답이 입력 데이터의 변화와 풀이 과정의 반올림 오차에 얼마나 민감한지 측정합니다.
역행렬의 조건수는 데이터의 오차에 대한 선형 연립방정식 해의 민감도를 측정합니다. 이는 역행렬과 선형 방정식 해의 결과에 대한 정확성을 나타냅니다. 예를 들어, 정사각 행렬의 2-노름 조건수는 다음과 같습니다.
이런 맥락에서 큰 조건수는 계수 행렬 A
가 조금만 변경되어도 선형 방정식 Ax = b와 xA = b의 출력값 b
가 크게 변경될 수 있음을 뜻합니다. 극단적인 예로, 만일 A
의 조건이 매우 나빠 특이 행렬이면(즉, 조건수가 무한대이면) 역행렬이 없고 선형 방정식에 유일한 해가 없습니다.
팁
rcond
는 행렬의 조건을 예측하는 수단으로,cond
에 비해 효율적이지만 안정성이 떨어집니다.
알고리즘
cond
에 대한 알고리즘은 세 가지로 나뉩니다.
p = 2
인 경우cond
는svd
에서 제공하는 특이값 분해를 사용하여 최대 특이값과 최소 특이값의 비율을 구합니다.p = 1
,Inf
또는'fro'
인 경우cond
는 입력 행렬의 적절한 노름을 사용하여 조건수를 계산하고norm(A,p) * norm(inv(A),p)
를 사용하여 역행렬을 계산합니다.입력 행렬이 희소 행렬인 경우
cond
는 지정된p
값을 무시하고condest
를 호출합니다.
확장 기능
C/C++ 코드 생성
MATLAB® Coder™를 사용하여 C 코드나 C++ 코드를 생성할 수 있습니다.
사용법 관련 참고 및 제한 사항:
cond
는 희소 행렬을 지원하지 않습니다.
스레드 기반 환경
MATLAB®의 backgroundPool
을 사용해 백그라운드에서 코드를 실행하거나 Parallel Computing Toolbox™의 ThreadPool
을 사용해 코드 실행 속도를 높일 수 있습니다.
이 함수는 스레드 기반 환경을 완전히 지원합니다. 자세한 내용은 스레드 기반 환경에서 MATLAB 함수 실행하기 항목을 참조하십시오.
GPU 배열
Parallel Computing Toolbox™를 사용해 GPU(그래픽스 처리 장치)에서 실행하여 코드 실행 속도를 높일 수 있습니다.
cond
함수는 GPU 배열을 완전히 지원합니다. GPU에서 이 함수를 실행하려면 입력 데이터를 gpuArray
(Parallel Computing Toolbox)로 지정하십시오. 자세한 내용은 GPU에서 MATLAB 함수 실행하기 (Parallel Computing Toolbox) 항목을 참조하십시오.
분산 배열
Parallel Computing Toolbox™를 사용하여 대규모 배열을 클러스터의 결합된 메모리에 걸쳐 분할할 수 있습니다.
사용법 관련 참고 및 제한 사항:
cond
는 희소 행렬을 지원하지 않습니다.
자세한 내용은 분산 배열을 사용하여 MATLAB 함수 실행 (Parallel Computing Toolbox) 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨R2021b: cond
는 nonfinite 입력값에 대해 NaN
을 반환함
입력값에 nonfinite 값(Inf
또는 NaN
)이 포함되어 있을 때 cond
는 NaN
을 반환합니다. 이전에는 cond
는 입력값에 nonfinite 값이 포함되어 있으면 오류를 발생시켰습니다.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)