www.gusucode.com > matlab 案例源码 matlab代码程序 > matlab/ComputeDeterminantofInverseofIllConditionedMatrixExample.m
%% Compute Determinant of Inverse of Ill-Conditioned Matrix % Examine how to calculate the determinant of the matrix inverse |A^(-1)|, % for an ill-conditioned matrix |A|, without explicitly calculating % |A^(-1)|. %% % Create a 10-by-10 Hilbert matrix, |A|. A = hilb(10); %% % Find the condition number of |A|. c = cond(A) %% % The large condition number suggests that |A| is close to being singular, % so calculating |inv(A)| might produce inaccurate results. Therefore, the % inverse determinant calculation |det(inv(A))| is also inaccurate. %% % Calculate the determinant of the inverse of |A| by exploiting the fact % that % % $$det\left( A^ {-1} \right) = \frac{1}{det\left(A\right)}$$ % d1 = 1/det(A) %% % This method avoids computing the inverse of the matrix, |A|. %% % Calculate the determinant of the exact inverse of the Hilbert matrix, % |A|, using |invhilb|. Compare the result to |d1| to find the relative % error in |d1|. d = det(invhilb(10)); relError = abs(d1-d)/abs(d) %% % The relative error in |d1| is reasonably small. Avoiding the explicit % computation of the inverse of |A| minimizes it. %% % For comparison, also calculate the determinant of the inverse of |A| by % explicitly calculating the inverse. Compare the result to |d| to see the % relative error. d2 = det(inv(A)); relError2 = abs(d2-d)/abs(d) %% % The relative error in the calculation of |d2| is many orders of magnitude % larger than that of |d1|.