2012-05-01 3 views
4

행렬의 역행렬의 행렬식을 계산하려고합니다. 행렬의 역이 존재합니다. 그러나 역함수의 행렬식을 계산하려고하면 matlab에 Inf 값이 표시됩니다. 이 이유는 무엇입니까?행렬의 행렬식을 계산할 때의 문제

+4

아마 당신의 매트릭스는 단수의 *에 매우 가깝습니다. –

+0

단수에 가깝게 무엇을 의미합니까 –

+1

단수에 매우 가깝다면 행렬식은 매우 제로에 가까울 것이므로 역함수의 확률은 매우 커질 것입니다. 계산이 수치 정밀도에 의해 제한되면 결국 무한대가 될 수 있습니다. –

답변

2

단답형 : A

  1. 행렬식의 수치 계산 동안 오버플
  2. 하나 이상의 무한 요소 : A = inv(B) 주어진 후 det(A)==Inf 두 가지 설명이있다. det(B)가 언더 플로우 및 오버 플로우 det(A) 수 있도록

는 첫 번째 경우에서 매트릭스 심하게 스케일링된다. det(a*B) == a^N * det(B)을 기억하십시오. a은 스칼라이고 BNN 행렬입니다.

두 번째 경우 (즉, nnz(A==inf)>0) 행렬 B은 "단수에서 작동 정밀도"일 수 있습니다.

PS :이 큰 조건 수있는 경우

행렬 거의 단수이다. (행렬식의 크기 자체가 스케일링의 영향을 받기 때문에 작은 결정자는 특이점과 아무런 관련이 없습니다.)

가우스 제거에서 제로 피벗이있는 경우 행렬은 작동 정밀도에 대해 단수입니다. 역함수를 계산할 때 1/0Inf을 반환해야합니다.

사실 Matlab 오버 플로우 및 제로 나눗셈 예외는 잡히지 않으므로 IEEE 754에 따라 Inf 값이 전파됩니다.