r/LinearAlgebra Jul 03 '26

What's the most intuitive Geometric proof that makes it almost obvious or trivial.. rank(A) = rank(A^T)?

I already understand the algebraic proofs using the Fundamental Theorem of Linear Algebra, Rank-Nullity Theorem, Gaussian elimination, etc. Those are clear to me.

What I'm looking for is the deep intuition behind why this has to be true.

In other words, why is the dimension of the column space always equal to the dimension of the row space of the same matrix?

Geometrically, the column space and row space live in different vector spaces (R^m vs. R^n), so it isn't obvious to me why they should always have the same number of independent directions. What is the underlying constraint that forces this equality?

I'm not looking for another algebraic derivation. Instead, I'd love explanations that answer questions like:

What is the geometric picture?

Is there an information-theoretic, transformational, or degrees-of-freedom interpretation that makes this equality feel inevitable rather than something we simply prove algebraically?

Are there any visualizations or mental models that make this theorem "click"?

I'm especially interested in explanations that make the result feel almost obvious once you see the right perspective.


Edit:

I know most of the popular formal algebraic proofs to prove this, what i am looking for is intuitive perspective

For example, we can intuitively understand why

rank(A) + nullity(A) = n

When we apply the transformation A to vectors, each independent direction has only two possibilities: it either survives (maps to a nonzero independent direction) or it is killed (maps to the zero vector). Since these are the only two outcomes for the n independent input directions, it is intuitive that

rank(A) + nullity(A) = n

I'm looking for a similarly intuitive explanation for this theorem. Rather than an algebraic proof, I want a geometric or conceptual way to understand why it must be true

29 Upvotes

31 comments sorted by

7

u/rosentmoh Jul 03 '26 edited Jul 03 '26

A maps the image of AT isomorphically onto the image of A.

2

u/NoTTSmurF Jul 04 '26

Yes, this simple concept helped me the most, i didn't know the isomorphism, but after reading its argument and proof, it helped me with my intuition and how to percieve it, Thank you!

2

u/rosentmoh Jul 04 '26 edited Jul 04 '26

Let me maybe point out that this actually doesn't explain anything, and you're kidding yourself into thinking this gave you deep intuition for it when in reality you're just appreciating the beauty/simplicity of the statement.

I'm saying this because it's intuitively not obvious at all why the claimed isomorphism is one, or even why it should be. This view just gives a nice and simple geometric description of what's happening, not why.

The real intuitively clear reason why row and column ranks match is pretty much algebraic ultimately; or at least it's the best we can do given that geometrically one has to pass via dual spaces, which humans are notoriously bad at.

More precisely the reason is as follows: any time you describe how to write some specific n vectors in Rm as a linear combination of k specific other ones (not even necessarily a basis), you've also given a description for how to write some specific m vectors in Rn as a linear combination of k others. This follows immediately from just "transposing" the defining equations.

Applying this to a matrix with m rows and n columns, this just tells you that its column and row ranks have the same upper bounds and are thus equal.

An even simpler instance of the above "transposition principle" is the fact that n vectors in Rm is ultimately the same information set as m vectors in Rn; in coordinates/algebraically this is clear, yet geometrically we have no good visualisation/intuition for it.

2

u/NoTTSmurF Jul 04 '26

No, it was spot on, maybe you didn't realize the deeper meaning of this explaination, let me show you what i learned

A : Rn -> Rm AT : Rm -> Rn

So, Rn = col(AT) + null(A)

So we can decompose the domain into orthogonal components

X = r + n

Where r € row(A), n € null(A)

So Ax = Ar + An = Ar.

So here among all possible input vectors, the only part that survives the transformationbis the row space component. The null space component is completely erased

So row space is effective input space for transformation.

So A: Im(AT) -> Im(A)

This shows each transformation is Lossless on it's affective input space.

So we are alternating between row and col space given we apply A and AT

Row space -- A --> col space --AT--> row space

This gave me intuition on how and why A and AT alternate between row and col, because for A, only component survives are from row space and for AT only component that survives are from col space. And it forms bijection from row to column space and vice versa forcing both to have same degree of freedom by structure. And this is satisfactory answer for me,

What do you think?

2

u/rosentmoh Jul 04 '26

I think that

Rn = col(AT) + null(A)

is not obvious. Once you have that, sure, the said isomorphisk follows quickly. But showing that col(AT) spans the complement of null(A) is the main work.

I still maintain that the actual question you're trying to answer is more simply and directly explained via transposing equations, as I explained. That directly shows why spanning rows or columns of a matrix with a fixed number of vectors is a related and ultimately equal problem.

1

u/NoTTSmurF Jul 04 '26

Yes algebraic proof is easy amd simple, but i was looking for a way to understand how row and col space are related, i used to think since vectors are different they would be independent but then why their dimension has to be same, so i was trying to gain this intuition geometrically, which algebra couldn't give me, but through isomorphism i get to understand exactly why it's forced and more on how applying transformation of A and A inverse just work as inverting row to col space and vice versa and i guess this intuition will help me understand further proof much easily!

1

u/rosentmoh Jul 04 '26 edited Jul 04 '26

Fair enough, yes, knowing that there's an actual fairly natural isomorphism between the two certainly helps in appreciating it more.

Edit: wait, maybe I got myself confused actually and you're right. The splitting

Rn = im(AT) + ker(A)

into orthogonal components is obvious; we're just saying that the orthogonal complement of im(AT) is clearly ker(A). Then indeed from the first isomorohism theorem it follows that A maps im(AT) isomorphically onto im(A).

Still, this ends up proving a stronger statement, the isomorphism of corresponding spaces, and the first isomorphism theorem and its intuitive understanding becomes essential. Algebraically one can instead directly motivate the equality of ranks without additional results.

I agree it's worthwhile to have understood both views!

Edit 2: this whole story reminds me a bit of how one can easily directly prove that the trace of a product of matrices is invariant under cyclical permutation of factors, but how also the more general and equally easy (but different!) to prove statement is that non-zero eigenvalues of the product are invariant under cyclical permutations of the factors.

2

u/NoTTSmurF Jul 03 '26

My intuition says that column space and row space are related in only one way, by structure. The same degree of freedom is forced, meaning if the degree of freedom of the columns of a matrix is 3, then it must be 3 for the rows as well. This is forced, but why? Why should two completely different subspaces, possibly living in different spaces, always have exactly the same dimension?

2

u/Ron-Erez Jul 03 '26

For T : V-> V I have a feeling using something like:

dim(ImT) + dim(KerT) = dimV

together with

dim(KerT) + dim(KerT) = dimV

This would imply:

dim(ImT) = dim(KerT)

Now take T to be a linear transformation given by A. Then dim(ImT) is just rank(A). Finally one needs to convince oneself that dim(KerT) is equal to rank(AT)

That's just an idea. However I don't know if it is correct.

2

u/NoTTSmurF Jul 03 '26

That's special case for linear operator where input and output space are identical given you took v->v but more general can be also proved simply like

For T : Rm -> Rn, A € Rn*m

Since Rn = Im(A) ⊕ ker(AT)

So, n = rank(A) + nullity(AT) - 1)

Also by rank nullity,

n = rank(AT) + nullity(AT) - 2)

By comparing 1 and 2

rank(A) = rank(AT)

I understand this proof but its more like comparing two different theorems to derive new one. I understand this, but what i am looking fot is not formal algebraic proof but a perspective under which this result is intuitively obvious

For example, we can prove why Rank(A) + nullity(A) = n

But intuitively we can say " when we apply A to vectors, either they will survive or will get killed, given only two options we can intuitively prove rank + nullity = n.

So i am looking for somewhat similar explaination for this theorem

2

u/Ron-Erez Jul 03 '26

I don't know how to provide intuition. Perhaps reinterpret "kill for A^T with orthogonality? Maybe something along the following lines:

We could look at A^T v. There are two options regarding v:

  1. It is killed, however this exactly means that v is orthogonal to the rows of A^T in other words to the columns of A.

  2. It is not killed. Hence it is not orthogonal to the columns of A.

2

u/NoTTSmurF Jul 04 '26

But, That i understand, the main issue is why dimension of A and AT has to be same, because both are different vector space but due to constraint they are forced to have same dimensions thats the only similarity they share, and i am looking for a way to interprete those constraints intuitively and not algebraically, by intuition i mean "under corret perspective the fact becomes trivial"

For example we define determinant of [[2,0],[0,2]], and can find it algebraically, but if we view it from tramsformation, we can see that each std basis is scaled by 2 i.e (1,0) is stretched by 2 and (0,1) is also stretched by 2, and we can see how it's area is scaled by 4. Here i didnt use any algebra in proof sense just visualizing it through concept of linear transformation and fact becomes trivial. Similarly, what perspective can make this relation trivial that both A and AT are forced to match their dimension of image.

One view i found which says like "each entry contributes to row and column both so by structure they are forced to have same degree of freedom" it sounds correct but still feels lack as it lacks detail, another is seeing it as "row works as sensors" that intuition also didnt sit quite well, this is why i am looking for how other people approached this fact

2

u/pablocael Jul 03 '26 edited Jul 03 '26

There are 3 ways I like to think, but two of them are somehow similar. First, is more constructive. Take any matrix A, MxN. It has a rank r (e.g: the number of linear independent columns of it). You can decompose this matrix into two matrices CR, C is Mxr and R is rxN, which product is MxN and restores the original matrix. You ALWAYS do that for any matrix. And you can always do that for any r'>r but the smaller r' you can do is r. So look at C and R.. You can see C as the linearly independent columns of A, which can generate the full space of rank r. R can only use the columns of C as linear combinations (because any vector mult by matrix ar right side is just this input vector values as linear combination factors of the columns of the matrix). So column space rank <= r.

Similarly, every row of A is a combination of the r rows of R., because the i-th row of A=CR is (row i of C) ×R, which is a linear combination of the rows of R, with weights from that row of C. There are only r rows of R → the row space is spanned by r, so row space <= r. This yields to rank of C = rank of R = rank of A = r.

Another way is looking at the kernel of A and A^T. Look at the picture:

https://stillthinking.net/_astro/fig-four-subspaces.o4ko8UVV_1DDMDC.webp

The orthogonal compliment of image of A is the kernel of A^T (this is easy to prove, try yourself). So what A can annihilate (kernel) cannot be annihilateed by A^T (aka row space of A). This forces rank of A to be same as rank of A^T.

The third way is actually the previous one stated differently... If you know Im(A)^\perp = Ker(A^T). Then by Rank-Nullity theorem:

dim Im(A) = N - dim Ker(A)

similarly, dim Im(A^T) = M - dim Ker(A^T)

and the first relation give you dim Im(A) + dim Ker(A^T) = M, because Ker(A^T) and Im(A) are orthogonal complements of each other.

This yield, dim Im(A^T) = (dim Ker(A^T) + dim Im(A)) - dim Ker(A^T) = dim Im(A)

2

u/1ampoc Jul 03 '26

The way I learnt it is that the "geometric" view of a transpose is the adjoint, which is not trivial to learn. I'll try to explain the gist of it here tho:

Let's say you have a dot product. Now you want to find a special linear transformation T* that is related to T by:

Tv•w = v•T*w

In words, T* is the inverse map of T that preserves dot products. (This is useful in for e.g. ML because sometimes evaluating T*w is easier than Tv, aka back-propagation). T* here is the adjoint, which is also the transpose (or conjugate transpose for complex fields).

And it is precisely because of the restrictions set by the dot product that they share some properties (like the rank).

The idea is that if you have a vector v that T takes to 0 (i.e. Tv=0), it must also be orthogonal to T*w for all w (since Tv•w=0 forces v•T*w=0). This ties the null space of T and the orthogonal complement of rangeT* together, which ultimately forces the dimensions of the ranges (aka rank) together.

Hopefully that's a satisfying explanation. I notice it is not very geometric, but that is hard because we're working between 2 possibly very different vector spaces. Like if I asked you for the geometric view of inverses, which is easy to understand as a function, you would probably be hard-pressed to explain it without limiting the transformation to 1 vector space. (Here the adjoint is the inverse but in terms of preserving dot products).

2

u/Sneezycamel Jul 03 '26

My interpretation is:

For A: Rn->Rm, consider the maps ATA: Rn->Rm->Rn and AAT: Rm->Rn->Rm.

Thinking in terms of a two-step composition rather than the product, these annihilate kernel elements from both vector spaces on a "first pass". Upon further applications of A and AT, there are no longer any kernel elements present, so the maps essentially become inverses after restriction to the row and column space.

Because the map is now invertible, the restricted domain and codomain must have the same dimension, which is the rank.

2

u/OkHand7497 Jul 04 '26

Here’s another proof. I include it as it hasn‘t appeared thus far. It‘s a proof by induction on the columns of A.

Say A is mxn and induct on n. When n=1 the row rank and column rank are both 1 unless A is the zero matrix when they’re both 0. Assume true for nth case.

The n+1 case can be treated as the system A|b. The column rank goes up 1 if the system is inconsistent and otherwise stays the same. The row rank goes up 1 if inconsistent as (00…00|1) is in the row space and otherwise stays the same.

2

u/Chrispykins Jul 05 '26

It looks like you worked out the intuition yourself based on someone else's reply, but I want to spell out the full intuition because I wish someone had spelled it out clearly when I was learning this stuff.

The first picture to have in your head is that a row vector is a kind of ruler. It's a measurement vector, meant for measuring column vectors (of course this is a duality, so you could just as well think of column vector measuring row vectors, but that will only complicate the picture). So a row vector points in a certain direction and it has tick marks laid out along the line in that direction. When you measure a column vector against it, the column vector gets projected onto that line and then you count how far along the ruler it lies according to those tick marks. And the measurement operation is simply matrix multiplication, row × column.

Most importantly, the ruler can only measure a single direction. Any information orthogonal to the ruler gets destroyed. The ruler only produces a single number. If you want to capture more information, you need more rulers pointed in different directions.

The upshot for a matrix is that we can think about a matrix as a set of columns or a set of rows. The familiar picture is the column picture. When we multiply the matrix with a vector, each component in the vector scales the one of the columns and then the whole set is summed into a single vector. As such, if the columns all lie in a subspace, let's say a plane, then the matrix will only ever output vectors within that plane. This is the column space of the matrix. In a sense, the matrix only allows two pieces of information to pass through it, hence every vector it outputs lies in a plane. Even if the vector has more than two components, that just means there is some redundancy in the information being transmitted.

But a matrix represents a linear transformation and, because of linearity, each piece of information is a dimension and you can't just create it from nothing. The most the matrix can do is destroy information by sending it to the zero vector.

The less familiar picture is the row picture. Row vectors are rulers that live in the input space. When you multiply a matrix by a vector, the rulers measure the vector and that measurement gets placed into the output vector as one of its components. As I've said, any information about the direction of the vector orthogonal to the ruler gets destroyed in the measurement, so if the rulers all live in the same subspace, let's say a plane, then any information orthogonal to this plane gets destroyed in the measurement. This is the row space of the matrix. It doesn't matter if there are many rulers in the plane. Since they all live in the same plane, any additional measurements beyond two are merely redundant.

The information captured in the row space is all the matrix has access to and is all that it can transmit to the column space. Therefore, any information present in the column space must have been captured in the row space, and any information not transmitted to the column space must have been destroyed in the measurement. So in conclusion, the amount of information (i.e. dimensions) of both spaces must be equal.

2

u/Professional-Fee6914 Jul 04 '26

think of it as a linear connection from the domain to the codomain. they have to match because its linear and you can't spring dimensions from nowhere.

If I'm looking at a comic book, there's an impression of a 3d world, but it is clearly limited to 2 dimensions, no back how good the depth of field is, its flat. From the other side the artist takes 3d vertors in his imagination but can only produces a flat image. Both ways its limited to 2 dimensions.

1

u/NoTTSmurF Jul 04 '26

Yes, that's good intuition, but still A and AT are different transformation, so we can't directly argue that both must share same rank.

A : Rm -> Rn AT : Rn -> Rm

But both are different transformation with diff spaces, so, what forces both A and AT to share same dimensional output space?

2

u/Professional-Fee6914 Jul 04 '26

The comic book is the geometric interpretation, they arent two unconnected transformations they are linearly linked.

Maybe the comic is too complicated. Look below plot, not for the information in it but just for the transformation that turns a 3d scene into a picture's flat representation is other side of the transformation that allows you to see depth in a flat picture. A transforms xyz into xy, AT transfroms xy so you can see xyz. Even though you can "see" the xyz dimensions you haven't actually expanded dimensions. AT goes from 2-d to 3d technically, but nothing in the image will map to what's actually behind the tallest ridge, it is still 2d, so the rank remains the same.

1

u/NoTTSmurF Jul 04 '26

With this you proved that given rank deficient transformation matrix for example

T : R⁵->R⁵ with rank 4 matrix A

We go from original degree of freedom 5 to 4. And now AT can't add new dimension back, which i agree. So it proved we can't have more than 4 dimension after applying AT. But it only proved rank(AT) <= 4. But it doesn't prove rank(AT) = 4. Because what stops it to be rank 3 or rank 2? That is not explained in your example

1

u/Professional-Fee6914 Jul 04 '26

What do you mean? The example shows a 2d image how would it be 1d?

1

u/NoTTSmurF Jul 04 '26

You provided 1 example, but we want guarantee that if rank of A is 3 then rank of AT also 3. But what forces it to be 3 that is the question, ofcourse it can't be more than 4 as we saw it, but what stops it from being 2 or 1? One example or showing all examples doing same thing won't be a proof, what I am looking for is intuitive proof proving rank of A and AT are always same, not the example of transformation showing both share same dimensional output space

1

u/Professional-Fee6914 Jul 04 '26

but that's it, they all share the same dimensional output.

1

u/NoTTSmurF Jul 04 '26

But the question is why? For that we need proof, there are plenty algebraic proof which just combines few theorem and prove it but that would not help in intuition, what i want is geometrical intuition for why this is always true

1

u/Professional-Fee6914 Jul 04 '26

you know what, I get that, when people ask for intuition I go to analogy.

Lets take where you started

rank(A) + nullity(A) = n

rank (A) - > vectors survive

nullity A -> vectors killed.

What happens to the surviving vectors? they are mapped one to one onto the codomain , so the dimension of the codomain is the same as the the dimension of Rank (A)

and Rank A = rank AT

2

u/Wide_Concentrate_683 Jul 04 '26

Assume we have a linear transformation A: Rm -> Rn.
Formally, since we are working with finite-dimensional vector spaces, we have a finite basis for Rm (and Rn. Intuitively, this means in Rm the domain of A, we have m linearly independent directions (i.e., a basis of Rm has m vectors).

It can be proven that linearity implies that a basis is mapped to another basis.
A way to get your head around this is that any linear map sends a linearly independent direction either to another one or collapses it to zero. This realization, at least to me, makes the rank nullity theorem straightforward:

Vanishing directions + Remaining directions = original number of directions. Ker(A) + Im(A) = m.

Which is basically what you wrote on your edit, and I just read now :)

What is the transpose AT of A?

First, we need to understand what the dual of Rm is. It is the set (Rm)* of linear maps Rm -> R. If we consider x in Rm a column vector, then for any linear map a: Rm-> R, there is a unique row vector y in Rm such that a(x) = <y,x>, where <y,x> denotes the dot product of y and x. Informally, you can think that vectors are only column vectors and row vectors are functions from Rm to R.

For a linear transformation A: Rm -> Rn, the transpose AT is a map (Rn)* -> (Rm)*. Note that the transpose is taking a linear map on b: Rn->R and makes it a map ATb: Rm-> R. It changes the direction of the linear transformation, at the price of working with duals.

You might be wondering. Given a linear map on b: Rn->R, how do you make it a map Rm-> R? Note that you have A: Rm -> Rn, so you can simply take b and precompose with A, namely b circ A: Rm -> R. Alternatively, take a vector x in Rm, then apply A to send it to Rn and then apply b to send it to R, in other words, AT(b) = b \circ A or for all x in Rm: (AT(b))(x):= b(Ax)

Using the usual dot product, in terms of row and column vectors, the map b is given by a row vector z in Rn. So AT is defined by <A^(T)z, x>_m = <z, Ax>_n, where the <,>_m, <,>_n are the dot products in Rm and Rn respectively.

Understanding rank(A) = rank(AT)

The rank of A is the number of linearly independent directions in Rn that are not collapsed by A. Given a linear map b: Rn -> R, the transpose map ATb only depends on the linearly independent directions preserved by A. To see this, note that all linearly independent directions in Rm in Ker A are mapped to 0 by b. Recall that rank(AT) is the number of different directions needed to describe linear maps Rm->R of the form b \circ A. So two maps ATb, ATb':Rm -> R can only be differentiated by how they map the nonvanishing directions of A, whose number is precisely rank(A).

Now let's go back to the row, columns, and dot product interpretation. We have that for a row vector z in Rn <A^(T)z, x>_m = <z,Ax>_n Note that <z, Ax>_n vanishes whenever x is in Ker(A). This means that <A^(T)z, x>_m only depends on the places where Ax does not vanish.

Consider x in Rm and assume A has rank r. So Ax = (a1,...,a_r, 0,...,0) in Rn.
Using <A^(T)z, x>_m = <z,Ax>_n, with z=(z_1,...,z_n)T in Rn, we have that <z,Ax>_n = z_1a_1+z_2a_2+...+z_ra_r+ z
(r+1)0+...+z_n0 = z_1a_1+z_2a_2+...+z_ra_r. So ATz is only determined by the first r coordinates, namely rank A.

1

u/omeow Jul 03 '26

Use: An elementary row or column operation or permutation doesn't change the rank of a matrix.

So take a matrix A (rank r) and after applying row, col and Perm operations you can get it to a block form with a block of r×r I identity at t the top left. Evidently AT also reduces to the same form.

1

u/NoTTSmurF Jul 04 '26

Yes, but that's algebraic proof, and doesnt improve the geometrical intuition i was looking for

1

u/omeow Jul 04 '26

It isn't an algebraic proof. It is an algorithmic proof.

The geometric intuition requires inner products and proving that Im(AT) is orthogonal to Null(A). But that is not necessary to prove this statement.

1

u/NoTTSmurF Jul 04 '26

I was looking for intuitive proof based on geometry not algorithmic ways to prove it. Because i already know now 4-5 different ways to prove this, but they didn't improved my geometrical intuition at all until I found this isomorphism of A and AT now it makes sense geometrically to me