Look at the figure: the arrow's tip lands at the point (3,2). The horizontal component (3)
is how far right, the vertical component (2) is how far up. That's all a vector is — an
instruction to move.
Why the topic needs it: everything scipy.linalg does is solve for, transform, or analyse
these arrows. Ax=b literally asks "which arrow x, after the machine A, becomes the arrow b?"
The core operation is matrix times vector. Here is the rule, in plain words:
In the figure the blue arrow is the input v; after the machine A acts, it becomes the
orange arrow Av — rotated and stretched. That picture — "a machine that twists and
stretches arrows" — is the mental model the whole parent note leans on.
The figure shows why QTQ=Imeans "columns are perpendicular unit arrows": entry (i,j) of
QTQ is the dot product of column i with column j. On the diagonal that's a column dotted
with itself = its length² = 1; off the diagonal it's two different columns dotted = 0 because
they are perpendicular. (Dot product is next.)
Why the topic needs it: least squares means "make the leftover arrow Ax−b as short as
possible" — that's min∥Ax−b∥. And "Q preserves length" (∥Qv∥=∥v∥) is
the single fact that makes QR-least-squares work.
Most arrows get twisted (grey, they change direction). The teal arrow is an eigenvector: it
comes out pointing the same way, only longer — stretched by λ. Finding these is what
eig and Schur do.
Why the topic needs it: the parent's key stability argument is "normal equations square the
condition number, κ(ATA)=κ(A)2" — a machine that was mildly nervous becomes wildly
nervous. QR avoids that. See Condition Number.
Why the topic needs it: LU with partial pivoting swaps rows to always divide by the largest
available entry (never a tiny one). Premembers which swaps happened, giving PA=LU.
Read it top-down: arrows and machines feed everything; dot product feeds length and orthogonality;
those feed the three factorizations the parent teaches; condition number explains why they're the
stable choice.