Computing the determinant of a block matrix

14 visualizzazioni (ultimi 30 giorni)
I am having trouble using a well-known formula for computing the determinant of a block matrix. That is, if
in which A and D are square matrices and exists then
.
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

Risposta accettata

KSSV
KSSV il 1 Ago 2022
A = rand(2) ;
B = rand(2) ;
C = rand(2) ;
D = rand(2) ;
M = [A B; C D] ;
det(M)
ans = -0.0221
det(A)*det(D-C*inv(A)*B)
ans = -0.0221
In your case, D is a scalar.
  14 Commenti
RickyBoy
RickyBoy il 1 Ago 2022
Modificato: RickyBoy il 1 Ago 2022
Aha!
OK, so for a bit of enlightenment, @Bruno Luong, let me demonstrate how this is so helpful...
In my setup (and it happens to be that . Therefore using detBlockAlt, we can achieve
.
Which is a much simpler form of the determinant than a general formulation will result in.
Thank you so much for your engagement!
Bruno Luong
Bruno Luong il 1 Ago 2022
Good. I don't get why contribution is so helpful, but if you say so...

Accedi per commentare.

Più risposte (1)

Walter Roberson
Walter Roberson il 1 Ago 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

Categorie

Scopri di più su Linear Algebra in Help Center e File Exchange

Prodotti


Release

R2022a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by