<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  <title>The Lorenz Library</title>
  <subtitle>A personal library of linked notes: catalogued, revised, and shelved by subject.</subtitle>
  <link href="https://vishwanath33.github.io/feed.xml" rel="self" />
  <link href="https://vishwanath33.github.io/" />
  <updated>2026-09-28T14:53:37Z</updated>
  <id>https://vishwanath33.github.io/</id>
  <author>
    <name>Vishwanath</name>
  </author>
  <entry>
    <title>Plate I: the Lorenz attractor</title>
    <link href="https://vishwanath33.github.io/notes/plate-i/" />
    <updated>2026-09-28T14:53:37Z</updated>
    <id>https://vishwanath33.github.io/notes/plate-i/</id>
    <content type="html">&lt;figure class=&quot;plate&quot; data-plate=&quot;&quot; aria-labelledby=&quot;plate-caption&quot;&gt;
  &lt;div class=&quot;plate__bar&quot; data-plate-bar=&quot;&quot;&gt;
    &lt;span class=&quot;plate__label&quot;&gt;Plate I&lt;/span&gt;
    &lt;span class=&quot;plate__controls&quot;&gt;
      &lt;button type=&quot;button&quot; data-plate-toggle=&quot;&quot; aria-pressed=&quot;false&quot;&gt;Pause&lt;/button&gt;
      &lt;button type=&quot;button&quot; data-plate-rerun=&quot;&quot;&gt;Re-run&lt;/button&gt;
    &lt;/span&gt;
  &lt;/div&gt;
  &lt;canvas data-plate-canvas=&quot;&quot; aria-hidden=&quot;true&quot;&gt;&lt;/canvas&gt;
  &lt;figcaption class=&quot;plate__caption&quot; data-plate-caption=&quot;&quot; id=&quot;plate-caption&quot;&gt;
    &lt;p class=&quot;plate__title&quot;&gt;
      &lt;em&gt;The Lorenz attractor.&lt;/em&gt; σ&amp;#8202;=&amp;#8202;10, ρ&amp;#8202;=&amp;#8202;28, β&amp;#8202;=&amp;#8202;8/3.
      Three trajectories from one point: &lt;span class=&quot;traj traj--b&quot;&gt;b&lt;/span&gt; and
      &lt;span class=&quot;traj traj--c&quot;&gt;c&lt;/span&gt; begin 10⁻⁵ from &lt;span class=&quot;traj traj--a&quot;&gt;a&lt;/span&gt;,
      and are strangers within a minute.
    &lt;/p&gt;
    &lt;dl class=&quot;readout&quot;&gt;
      &lt;div&gt;&lt;dt&gt;t&lt;/dt&gt;&lt;dd data-readout=&quot;t&quot;&gt;0.00&lt;/dd&gt;&lt;/div&gt;
      &lt;div&gt;&lt;dt&gt;a&lt;/dt&gt;&lt;dd&gt;&lt;span data-readout=&quot;x&quot;&gt;&lt;/span&gt; &lt;span data-readout=&quot;y&quot;&gt;&lt;/span&gt; &lt;span data-readout=&quot;z&quot;&gt;&lt;/span&gt;&lt;/dd&gt;&lt;/div&gt;
      &lt;div&gt;&lt;dt&gt;|a−b|&lt;/dt&gt;&lt;dd&gt;&lt;span data-readout=&quot;delta&quot;&gt;&lt;/span&gt;&lt;canvas class=&quot;spark&quot; data-spark=&quot;&quot; aria-hidden=&quot;true&quot;&gt;&lt;/canvas&gt;&lt;/dd&gt;&lt;/div&gt;
    &lt;/dl&gt;
  &lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;In the winter of 1961 Edward Lorenz was running a toy weather simulation on a
Royal McBee LGP-30 — a machine slower than the chip in a modern doorbell. He
wanted to re-examine a run, so he restarted it from the middle, typing in the
numbers from a printout. The new run tracked the old one for a while and then
diverged completely.&lt;/p&gt;
&lt;p&gt;The printout had rounded to three decimal places. The machine held six.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://vishwanath33.github.io/notes/plate-i/#fn1&quot; id=&quot;fnref1&quot;&gt;[1]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;That difference — one part in a thousand, far smaller than any real
measurement error in atmospheric data — was enough to produce a different
month of weather. Lorenz had not found a bug. He had found the thing that
makes long-range weather forecasting impossible in principle rather than in
practice, and he spent the rest of his career on it.&lt;/p&gt;
&lt;div class=&quot;heading-wrap&quot;&gt;
&lt;h2 id=&quot;the-system&quot; tabindex=&quot;-1&quot;&gt;The system&lt;/h2&gt;
&lt;a class=&quot;header-anchor&quot; href=&quot;https://vishwanath33.github.io/notes/plate-i/#the-system&quot;&gt;&lt;span class=&quot;sr-only&quot;&gt;Permalink to “The system”&lt;/span&gt; &lt;span aria-hidden=&quot;true&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;By 1963 he had boiled the convection model down to three equations, which is
about as small as an interesting dynamical system gets:&lt;/p&gt;
&lt;figure class=&quot;equations&quot; role=&quot;group&quot; aria-label=&quot;The Lorenz equations&quot;&gt;
&lt;math display=&quot;block&quot;&gt;&lt;mtable&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;d&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;x&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;d&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;σ&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;y&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;d&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;y&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;d&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;x&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;(&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;ρ&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;z&lt;/mi&gt;&lt;mo stretchy=&quot;false&quot;&gt;)&lt;/mo&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;y&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;mtr&gt;&lt;mtd&gt;&lt;mfrac&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;d&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;z&lt;/mi&gt;&lt;/mrow&gt;&lt;mrow&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;d&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;t&lt;/mi&gt;&lt;/mrow&gt;&lt;/mfrac&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mo&gt;=&lt;/mo&gt;&lt;/mtd&gt;&lt;mtd&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;x&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;y&lt;/mi&gt;&lt;mo&gt;−&lt;/mo&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;β&lt;/mi&gt;&lt;mi mathvariant=&quot;normal&quot;&gt;z&lt;/mi&gt;&lt;/mtd&gt;&lt;/mtr&gt;&lt;/mtable&gt;&lt;/math&gt;
&lt;figcaption&gt;σ = 10, ρ = 28, β = 8/3&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;p&gt;With σ = 10, ρ = 28, β = 8/3 — Lorenz’s canonical values — the trajectory
never repeats and never escapes. It winds around one lobe some number of
times, crosses over, winds around the other, crosses back. The number of
circuits before each crossing is, for practical purposes, unpredictable.&lt;sup class=&quot;footnote-ref&quot;&gt;&lt;a href=&quot;https://vishwanath33.github.io/notes/plate-i/#fn2&quot; id=&quot;fnref2&quot;&gt;[2]&lt;/a&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Three things are true at once, and holding all three is the whole lesson:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;It is deterministic.&lt;/strong&gt; No noise term. Same initial condition, same
trajectory, every time, forever.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It is bounded.&lt;/strong&gt; Every trajectory is pulled onto the same set of states
and stays there. Nothing runs off to infinity.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;It is unpredictable.&lt;/strong&gt; Nearby states separate exponentially, at a rate
set by the leading Lyapunov exponent — about 0.9 per unit time here, so
errors grow by roughly &lt;em&gt;e&lt;/em&gt; every unit and by a factor of a thousand in
under eight.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Determinism does not buy you predictability. That was the surprise, and it
took the rest of the field a decade to absorb it.&lt;/p&gt;
&lt;div class=&quot;heading-wrap&quot;&gt;
&lt;h2 id=&quot;the-shape&quot; tabindex=&quot;-1&quot;&gt;The shape&lt;/h2&gt;
&lt;a class=&quot;header-anchor&quot; href=&quot;https://vishwanath33.github.io/notes/plate-i/#the-shape&quot;&gt;&lt;span class=&quot;sr-only&quot;&gt;Permalink to “The shape”&lt;/span&gt; &lt;span aria-hidden=&quot;true&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Plot the trajectory and you get the figure in the plate above, and behind
every page of this library: two lobes, a surface that looks like it has area
but has measured volume zero, a fractal dimension around 2.06. Orbits on it
never cross — they cannot, since the system is deterministic and crossing
would mean two futures from one state — so the apparent surface is really
infinitely many sheets, packed arbitrarily close.&lt;/p&gt;
&lt;aside class=&quot;inline-aside&quot;&gt;&lt;span class=&quot;aside-label&quot;&gt;On the picture&lt;/span&gt;&lt;p&gt;The plate above integrates the real system with fourth-order Runge–Kutta at
a fixed step, so the shape is correct rather than decorative. Three
trajectories run at once, seeded a hundred-thousandth apart in &lt;em&gt;z&lt;/em&gt;. For the
first ten seconds or so they agree so closely that they draw a single white
line; then they come apart into three colours, and the separation in the
caption climbs a straight line on its logarithmic sparkline — its slope is
the Lyapunov exponent above. &lt;em&gt;Re-run&lt;/em&gt; starts it again from a new point on the
attractor.&lt;/p&gt;
&lt;/aside&gt;
&lt;p&gt;That it was a &lt;em&gt;strange attractor&lt;/em&gt; — attracting, but not to a point or a
cycle — was named later, by Ruelle and Takens in 1971. That Lorenz’s
particular set really is one was not proved until Warwick Tucker did it in
1999, with a computer-assisted argument. Thirty-six years between the picture
and the proof.&lt;/p&gt;
&lt;div class=&quot;heading-wrap&quot;&gt;
&lt;h2 id=&quot;why-it-is-in-the-background&quot; tabindex=&quot;-1&quot;&gt;Why it is in the background&lt;/h2&gt;
&lt;a class=&quot;header-anchor&quot; href=&quot;https://vishwanath33.github.io/notes/plate-i/#why-it-is-in-the-background&quot;&gt;&lt;span class=&quot;sr-only&quot;&gt;Permalink to “Why it is in the background”&lt;/span&gt; &lt;span aria-hidden=&quot;true&quot;&gt;#&lt;/span&gt;&lt;/a&gt;&lt;/div&gt;
&lt;p&gt;Because it is an honest picture of what this place is for.&lt;/p&gt;
&lt;p&gt;Entries here get revised. A revision is a small perturbation — a sentence, a
number, a source I had not read. Most of them change nothing. Some of them
move the whole argument somewhere I could not have predicted from where it
started, and there is no way to tell in advance which kind a given edit is.
Writing in public, with the revision history exposed, is a way of admitting
that.&lt;/p&gt;
&lt;p&gt;It is also bounded, which is the consoling half. The trajectory wanders
forever and never leaves the attractor. A library can be endlessly revised
and still be about something.&lt;/p&gt;
&lt;section class=&quot;footnotes&quot; role=&quot;doc-endnotes&quot;&gt;
&lt;h2 class=&quot;footnotes-title&quot;&gt;Notes&lt;/h2&gt;
&lt;ol class=&quot;footnotes-list&quot;&gt;
&lt;li id=&quot;fn1&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;0.506 instead of 0.506127. Lorenz first assumed a vacuum tube had
failed, which is the correct first assumption about a 1961 computer. &lt;a href=&quot;https://vishwanath33.github.io/notes/plate-i/#fnref1&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li id=&quot;fn2&quot; class=&quot;footnote-item&quot;&gt;&lt;p&gt;You can encode a trajectory as the sequence of lobes it visits —
LLRLRRRL… — and the resulting symbolic dynamics is essentially a shift map on
random binary sequences. The unpredictability is not sloppiness in the model;
it is the model’s content. &lt;a href=&quot;https://vishwanath33.github.io/notes/plate-i/#fnref2&quot; class=&quot;footnote-backref&quot;&gt;↩︎&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/section&gt;
</content>
  </entry>
</feed>