4
행렬의 역행렬의 행렬식을 계산하려고합니다. 행렬의 역이 존재합니다. 그러나 역함수의 행렬식을 계산하려고하면 matlab에 Inf 값이 표시됩니다. 이 이유는 무엇입니까?행렬의 행렬식을 계산할 때의 문제
행렬의 역행렬의 행렬식을 계산하려고합니다. 행렬의 역이 존재합니다. 그러나 역함수의 행렬식을 계산하려고하면 matlab에 Inf 값이 표시됩니다. 이 이유는 무엇입니까?행렬의 행렬식을 계산할 때의 문제
단답형 : A
에
A = inv(B)
주어진 후 det(A)==Inf
두 가지 설명이있다. det(B)
가 언더 플로우 및 오버 플로우 det(A)
수 있도록 는 첫 번째 경우에서 매트릭스 심하게 스케일링된다. det(a*B) == a^N * det(B)
을 기억하십시오. a
은 스칼라이고 B
은 N
번 N
행렬입니다.
두 번째 경우 (즉, nnz(A==inf)>0
) 행렬 B
은 "단수에서 작동 정밀도"일 수 있습니다.
PS :이 큰 조건 수있는 경우
행렬 거의 단수이다. (행렬식의 크기 자체가 스케일링의 영향을 받기 때문에 작은 결정자는 특이점과 아무런 관련이 없습니다.)
가우스 제거에서 제로 피벗이있는 경우 행렬은 작동 정밀도에 대해 단수입니다. 역함수를 계산할 때 1/0
은 Inf
을 반환해야합니다.
사실 Matlab 오버 플로우 및 제로 나눗셈 예외는 잡히지 않으므로 IEEE 754에 따라 Inf
값이 전파됩니다.
아마 당신의 매트릭스는 단수의 *에 매우 가깝습니다. –
단수에 가깝게 무엇을 의미합니까 –
단수에 매우 가깝다면 행렬식은 매우 제로에 가까울 것이므로 역함수의 확률은 매우 커질 것입니다. 계산이 수치 정밀도에 의해 제한되면 결국 무한대가 될 수 있습니다. –