{
  "schemaVersion": 1,
  "lessonId": "science-02",
  "contentHash": "234d7211d2bf84a53616cb343de4501461839ddc5882b35fa1fe0f6f3f80225e",
  "rendererHash": "a1bd5b648f4731ae5d5f0a24811c2540d1a0a132149ce589d17c4113509cbedf",
  "kind": "executed",
  "generatedAt": "2026-10-20T10:48:19.511737+00:00",
  "provenance": "recorded_cpu_computation",
  "environment": {
    "backend": "cpu",
    "deviceCount": 1,
    "jax": "0.9.2",
    "numpy": "2.4.4",
    "matplotlib": "3.10.8"
  },
  "stdout": "Shape: (3, 41) endpoints: [0.12329848 0.24659697 0.49319394]\nscan(vectors) transposed equals vmap(scan)\n",
  "data": {
    "kind": "line",
    "x": [
      0.0,
      0.05,
      0.1,
      0.15000000000000002,
      0.2,
      0.25,
      0.30000000000000004,
      0.35000000000000003,
      0.4,
      0.45,
      0.5,
      0.55,
      0.6000000000000001,
      0.65,
      0.7000000000000001,
      0.75,
      0.8,
      0.8500000000000001,
      0.9,
      0.9500000000000001,
      1.0,
      1.05,
      1.1,
      1.1500000000000001,
      1.2000000000000002,
      1.25,
      1.3,
      1.35,
      1.4000000000000001,
      1.4500000000000002,
      1.5,
      1.55,
      1.6,
      1.6500000000000001,
      1.7000000000000002,
      1.75,
      1.8,
      1.85,
      1.9000000000000001,
      1.9500000000000002,
      2.0
    ],
    "xlabel": "time (seconds)",
    "ylabel": "excess temperature",
    "series": [
      {
        "label": "initial 0.5",
        "y": [
          0.5,
          0.4828027083463542,
          0.4661969103731495,
          0.4501622619017182,
          0.4346791184829407,
          0.4197285113303391,
          0.40529212408094223,
          0.39135227035545106,
          0.37789187209021274,
          0.36489443861445753,
          0.35234404644716516,
          0.3402253197888099,
          0.3285234116840837,
          0.3172239858325198,
          0.3063131990247321,
          0.2957776841827529,
          0.2856045339836914,
          0.2757812850466491,
          0.2662959026635202,
          0.2571367660549693,
          0.2482926541335241,
          0.23975273175634007,
          0.23150653645079589,
          0.22354396559665643,
          0.21585526404909988,
          0.20843101218744567,
          0.20126211437494146,
          0.19433978781547087,
          0.18765555179353027,
          0.18120121728429192,
          0.1749688769210247,
          0.16895089530758126,
          0.16313989966408313,
          0.1575287707943436,
          0.1521106343639623,
          0.146878852478406,
          0.14182701555075808,
          0.13694893444917297,
          0.13223863291441607,
          0.1276903402381988,
          0.12329848419333966
        ]
      },
      {
        "label": "initial 1",
        "y": [
          1.0,
          0.9656054166927084,
          0.932393820746299,
          0.9003245238034364,
          0.8693582369658814,
          0.8394570226606782,
          0.8105842481618845,
          0.7827045407109021,
          0.7557837441804255,
          0.7297888772289151,
          0.7046880928943303,
          0.6804506395776198,
          0.6570468233681674,
          0.6344479716650396,
          0.6126263980494642,
          0.5915553683655058,
          0.5712090679673828,
          0.5515625700932982,
          0.5325918053270404,
          0.5142735321099386,
          0.4965853082670482,
          0.47950546351268014,
          0.46301307290159177,
          0.44708793119331286,
          0.43171052809819976,
          0.41686202437489134,
          0.4025242287498829,
          0.38867957563094174,
          0.37531110358706055,
          0.36240243456858384,
          0.3499377538420494,
          0.3379017906151625,
          0.32627979932816625,
          0.3150575415886872,
          0.3042212687279246,
          0.293757704956812,
          0.28365403110151616,
          0.27389786889834594,
          0.26447726582883213,
          0.2553806804763976,
          0.24659696838667933
        ]
      },
      {
        "label": "initial 2",
        "y": [
          2.0,
          1.9312108333854168,
          1.864787641492598,
          1.8006490476068728,
          1.7387164739317629,
          1.6789140453213565,
          1.621168496323769,
          1.5654090814218042,
          1.511567488360851,
          1.4595777544578301,
          1.4093761857886606,
          1.3609012791552395,
          1.3140936467363349,
          1.2688959433300793,
          1.2252527960989283,
          1.1831107367310116,
          1.1424181359347656,
          1.1031251401865965,
          1.0651836106540808,
          1.0285470642198773,
          0.9931706165340964,
          0.9590109270253603,
          0.9260261458031835,
          0.8941758623866257,
          0.8634210561963995,
          0.8337240487497827,
          0.8050484574997658,
          0.7773591512618835,
          0.7506222071741211,
          0.7248048691371677,
          0.6998755076840988,
          0.675803581230325,
          0.6525595986563325,
          0.6301150831773744,
          0.6084425374558492,
          0.587515409913624,
          0.5673080622030323,
          0.5477957377966919,
          0.5289545316576643,
          0.5107613609527952,
          0.49319393677335865
        ]
      }
    ]
  },
  "diagram": {
    "title": "Vectorize across systems; scan through time",
    "prediction": "What should happen if you permute independent initial conditions?",
    "reading": "Each row is an independent initial condition. Horizontal arrows advance only that system; there are no cross-row state dependencies. Vectorization groups rows and scan represents recurrence. Boxes show state positions in the computation, not physical coordinates or measured durations.",
    "alt": "Each row is an independent initial condition. Horizontal arrows advance only that system; there are no cross-row state dependencies. Vectorization groups rows and scan represents recurrence. Boxes show state positions in the computation, not physical coordinates or measured durations.",
    "scope": "Architecture and dataflow mechanism diagram.",
    "height": 5,
    "panel": {
      "kind": "graph",
      "nodes": [
        {
          "id": "00",
          "x": 2,
          "y": 1.2,
          "label": "Trajectory 0\nstate at t=0",
          "tone": "state",
          "w": 2.5,
          "h": 0.85
        },
        {
          "id": "01",
          "x": 5,
          "y": 1.2,
          "label": "Trajectory 0\nstate at t=1",
          "tone": "state",
          "w": 2.5,
          "h": 0.85
        },
        {
          "id": "02",
          "x": 8,
          "y": 1.2,
          "label": "Trajectory 0\nstate at t=2",
          "tone": "state",
          "w": 2.5,
          "h": 0.85
        },
        {
          "id": "10",
          "x": 2,
          "y": 3.2,
          "label": "Trajectory 1\nstate at t=0",
          "tone": "state",
          "w": 2.5,
          "h": 0.85
        },
        {
          "id": "11",
          "x": 5,
          "y": 3.2,
          "label": "Trajectory 1\nstate at t=1",
          "tone": "state",
          "w": 2.5,
          "h": 0.85
        },
        {
          "id": "12",
          "x": 8,
          "y": 3.2,
          "label": "Trajectory 1\nstate at t=2",
          "tone": "state",
          "w": 2.5,
          "h": 0.85
        },
        {
          "id": "20",
          "x": 2,
          "y": 5.2,
          "label": "Trajectory 2\nstate at t=0",
          "tone": "state",
          "w": 2.5,
          "h": 0.85
        },
        {
          "id": "21",
          "x": 5,
          "y": 5.2,
          "label": "Trajectory 2\nstate at t=1",
          "tone": "state",
          "w": 2.5,
          "h": 0.85
        },
        {
          "id": "22",
          "x": 8,
          "y": 5.2,
          "label": "Trajectory 2\nstate at t=2",
          "tone": "state",
          "w": 2.5,
          "h": 0.85
        }
      ],
      "edges": [
        {
          "from": "00",
          "to": "01",
          "exit": "right",
          "enter": "left"
        },
        {
          "from": "01",
          "to": "02",
          "exit": "right",
          "enter": "left"
        },
        {
          "from": "10",
          "to": "11",
          "exit": "right",
          "enter": "left"
        },
        {
          "from": "11",
          "to": "12",
          "exit": "right",
          "enter": "left"
        },
        {
          "from": "20",
          "to": "21",
          "exit": "right",
          "enter": "left"
        },
        {
          "from": "21",
          "to": "22",
          "exit": "right",
          "enter": "left"
        }
      ],
      "height": 6.4,
      "width": 10
    }
  }
}
