Idea. For an open U∋A we must find an interval around detA contained in det(U). We move A along a curve inside U along which det varies over an interval around detA.
Case 1: detA=0. Let As=Adiag(s,1,…,1). Then detAs=sdetA and As→A as s→1, so As∈U for s∈(1−τ,1+τ) for some τ>0. As s runs over (1−τ,1+τ), detAs runs over the interval (detA(1−τ),detA(1+τ)) (or reversed), which is a neighbourhood of detA.
Case 2: detA=0. Write the SVD A=PΣQT with P,Q orthogonal and Σ=diag(σ1,…,σr,0,…,0), σi>0, r<n. Let k=n−r≥1. For τ>0 small and s∈[−τ,τ] put
Σs=diag(σ1,…,σr,s,τ,…,τ)(with k−1 entries equal to τ),
and As=PΣsQT. Then
- ∥As−A∥=∥Σs−Σ∥≤τ (operator norm is invariant under orthogonal maps), so As∈U when τ is small enough;
- detAs=detPdetQ⋅σ1⋯σr⋅τk−1⋅s=cs where c=±σ1⋯σrτk−1=0.
As s ranges over [−τ,τ], detAs=cs covers the interval [−∣c∣τ,∣c∣τ], a neighbourhood of 0=detA.
Conclusion. For every open U and A∈U, det(U) contains a neighbourhood of detA, so det(U) is open.
Remark. The determinant is a *submersion* at every matrix of rank ≥n−1 (its derivative tr(adj(A)⋅) is nonzero there, Problem 79), so openness is easy near them; the interest is at matrices of rank ≤n−2 where ddet=0: det is still open though not a submersion. For n=1 it is the identity.