Computing the determinant of a block matrix
9 views (last 30 days)
Show older comments
I am having trouble using a well-known formula for computing the determinant of a block matrix. That is, if
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1084345/image.png)
in which A and D are square matrices and
exists then
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1084350/image.png)
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/1084355/image.png)
The code snippet below should achieve this but it returns two different results. I'm sure it's a very trivial mistake I've made but I've probably been staring at it too long now to find it.
As a follow up, does anyone know if there is a suitably adjusted version of this formula for the case when it is B and C which are the square matrices?
function [detM,detBlock] = BlockDeterminant()
M = magic(4);
detM = det(M);
A = M(1:3,1:3);
B = M(1:3,4);
C = M(4,1:3);
D = M(4,4);
detBlock = det(A)*det(D-C*inv(A)*B);
end
0 Comments
Accepted Answer
KSSV
on 1 Aug 2022
A = rand(2) ;
B = rand(2) ;
C = rand(2) ;
D = rand(2) ;
M = [A B; C D] ;
det(M)
det(A)*det(D-C*inv(A)*B)
In your case, D is a scalar.
14 Comments
More Answers (1)
Walter Roberson
on 1 Aug 2022
Just round-off error. You are calculating two different order of operations and that affects the results .
If you use M = sym(magic(4)) you will get exact zero for each
0 Comments
See Also
Categories
Find more on Operating on Diagonal Matrices in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!