All animations · In the chapter · Open full MP4
Animation 14
Eigenvectors pictured
symmetry-eigenbasis-stretch.mp4
These are sparse samples decoded from the current MP4, not newly rendered illustrations. They can support checks of the sampled states and labels, but cannot establish continuous motion, timing, transitions, or the absence of problems between samples. Use the full MP4 when judging those properties.
1280 × 720 · 24 fps · 14.5 s · 348 frames · 12 samples
MP4 SHA-256 627d8caf6e17df54a5c6851f9ca579314a2d120308ea56741b74c40388b9f31e
Frame manifest · Context markdown · Download complete review packet
Chapter context
Section: Primer -- Eigenfunctions. Excerpts are verbatim; line numbers refer to the included chapter markdown.
Caption
Eigenvectors pictured
Image description
Stretching in ordinary and eigenvector bases
Before the animation
Chapter lines 614–616
| $(x,y)$ basis: components mix | $(u,v)$ basis: components do not mix |
|---|---|
| $\displaystyle \begin{aligned}\mathbf r&=\frac12\begin{pmatrix}s+s^{-1}&s-s^{-1}\\s-s^{-1}&s+s^{-1}\end{pmatrix}\mathbf r_{\mathrm{in}}\\&=\frac12\left[(s+s^{-1})x+(s-s^{-1})y\right]\hat{\mathbf x}\\&\quad+\frac12\left[(s-s^{-1})x+(s+s^{-1})y\right]\hat{\mathbf y}\end{aligned}$ | $\displaystyle \begin{aligned}\mathbf r&=\begin{pmatrix}s&0\\0&s^{-1}\end{pmatrix}\mathbf r_{\mathrm{in}}\\&=su\hat{\mathbf u}+s^{-1}v\hat{\mathbf v}\end{aligned}$ |
Chapter lines 618–618
This is readily understood visually:
After the animation
Chapter lines 626–626
Now for a bunch of terminology. The "natural" basis vectors are the eigenvectors, the values a transformation scales these by are the eigenvalues and the basis they form is called the eigenbasis. When the "vectors" are functions, we call them eigenfunctions. As the transformation matrix is diagonal in the eigenbasis, the procedure for finding an eigenbasis is typically called diagonalization.
Generation source
Run the main script without arguments. It draws the eigenbasis-stretch frames with Pillow and encodes them with FFmpeg. It has no local Python imports or input movie.
Mapping evidence and limits
render() sets the exact symmetry-eigenbasis-stretch output stem. Constants specify 1280 x 720 at 24 fps. No matching validation JSON is present; attribution is by source/output name and pipeline, not a recorded movie hash.
Source SHA-256 values identify the exact downloadable bytes in this packet. The source mapping and recorded checks explain the likely generation pipeline; they do not prove that these exact source bytes produced the movie. A GitHub link pinned to a commit is provided only when the delivered source bytes exactly match that path at the build's Git HEAD.
- scripts/generate_symmetry_eigenbasis_stretch_animation.py · GitHub at 974f9de35254
SHA-256 290c0d3d8b0e69edb127ce8ab7568c60d3679c3eb5b2d012ceb7cdfba2c89f55
Decoded contact sheet
Extraction method: Twelve evenly spaced decoded frame indices, including first and last. Native-resolution JPEGs from the encoded MP4; timestamps read from FFmpeg showinfo. No source rerendering. Frame indices are zero-based. Sparse samples do not establish continuous motion or capture every transition.. Frame indices are zero-based.

Full-size sampled frames











