{
  "schemaVersion": 1,
  "lessonId": "science-01",
  "contentHash": "8486d3e81207351a75dfa4705d96508dd920bb659388c6ab92450b3530072db8",
  "rendererHash": "a1bd5b648f4731ae5d5f0a24811c2540d1a0a132149ce589d17c4113509cbedf",
  "kind": "executed",
  "generatedAt": "2026-10-20T10:46:07.165936+00:00",
  "provenance": "recorded_cpu_computation",
  "environment": {
    "backend": "cpu",
    "deviceCount": 1,
    "jax": "0.9.2",
    "numpy": "2.4.4",
    "matplotlib": "3.10.8"
  },
  "stdout": "Euler final: 0.3570125000000001 analytic final: 0.493193927883213\nEndpoint errors: [0.13618143 0.06399208 0.03107265 0.0153167 ]\nLast refinement ratio: 2.0286780018480166\n",
  "data": {
    "kind": "line",
    "x": [
      0.0,
      0.5,
      1.0,
      1.5,
      2.0
    ],
    "xlabel": "time (seconds)",
    "ylabel": "excess temperature",
    "series": [
      {
        "label": "Euler h=0.5",
        "y": [
          2.0,
          1.3,
          0.8450000000000001,
          0.5492500000000001,
          0.3570125000000001
        ]
      },
      {
        "label": "Euler h=0.25 (sampled)",
        "y": [
          2.0,
          1.3612499999999998,
          0.9265007812499999,
          0.6305995942382813,
          0.4292018488284302
        ]
      },
      {
        "label": "analytic exponential",
        "y": [
          2.0,
          1.4093761794374269,
          0.993170607582819,
          0.6998754982223109,
          0.493193927883213
        ]
      }
    ]
  }
}
