four fundamental subspaces of a matrix
Put a vector into a matrix and another vector comes out. Not every input is treated the same. Some directions come out alive and some directions are crushed whole to 0. So one matrix splits space into four pieces. On the output side is the column space, every result you can reach, and on the input side is the null space, the directions that die to 0. Add the rank, the number of directions that survive, to the nullity, the number of directions that die, and you always get the input dimension. This one picture solves why A x = b can have no solution, exactly one, or infinitely many. It is the structure an inverse alone never shows.
Drag the input vector. This matrix is flat, its two columns pointing the same way, so det=0, and the green column and the orange column lie on top of each other. Wherever you drag, the output A x lands only on a gold line. The blue input folds onto that line. That line is the column space. A x is some multiple of the first column plus some multiple of the second, a combination of the two columns, and because the columns are parallel the only thing that combination can make is the line of that parallel direction. The output can never leave the line. Every reachable result is trapped on this 1-dimensional line. That is the image, the column space.
On the same flat matrix, look at the input side. There are inputs that die to 0. Drag the blue input and when you set it on the blue line the output A x pins exactly to the origin. That line is the null space, and the column space stays as a gold dashed line. An input that comes in along that direction is crushed whole to 0 and leaves no trace. Step even a little off that line and the output jumps straight up onto the column space. It is not one point. The whole line goes to 0. So the solutions of A x = 0 are not the single x = 0. There are infinitely many. The fact that this null space is not 0 is the key to why there can be many solutions.
Now collapse the matrix with the slider, from alive to flat. At one end the matrix has full rank 2. The unit square becomes a gold parallelogram, and the green column and the orange column point different ways. The only input that goes to 0 is x = 0, so the nullity is 0. Tip one column toward the other with the slider and the two columns become parallel, det goes to 0, and the parallelogram crushes into one segment. At that moment the rank is 1 and the nullity is 1. A whole line goes to 0. Either way, rank plus nullity is always 2. The input dimension splits exactly into two shares. The rank, the dimension that survived, is a green number, the nullity, the dimension that died, is a blue number, and their sum is gold and always equals the dimension that came in. That is the rank-nullity theorem.
Look at the input plane again. It is not only the null space. The row space is on the input side too. The row space is the direction the two rows of the matrix spread, and on a flat matrix that is also one line. Turn the two lines on and the gold row space and the blue null space meet at exactly 90 degrees. They are a pair that complete each other at a right angle. Press the split button and one input breaks into two pieces. Each component of A x is the dot product of one row with the input, and if the input lies in the null space that dot product is 0, which means the input is perpendicular to every row. So every input vector splits in two. The row-space part survives in the output and the null-space part vanishes to 0. The half that saves and the half that kills are split at a right angle.
Now solve A x = b with the picture of the four subspaces. Move the target with the slider and the answer shows. If the target is not on the gold column-space line, no input reaches that target, so there are 0 solutions. Lift the target onto the column space and solutions appear at once, and there is not one. One particular solution plus the whole null space, the whole line translated along the null-space direction drawn as a blue dashed line, is the solution, so there are infinitely many. The particular solution is one input that reaches the target, and however much of a direction that dies to 0 you add, the output stays the same. If the null space were only 0, a full-rank matrix, there would be exactly one solution, the answer an inverse used to give. 0, and 1, and infinitely many: all three branches come straight out of the shape of the four subspaces.