{
  "aliases": null,
  "backlinks": null,
  "body": "\n## Definition\n\nLet $(h_n)_{n \\in \\Z}$ be a finite sequence of real numbers with $\\sum_n h_n = \\sqrt{2}$.\nLet $\\varphi_0 \\in L^2(\\R)$ be a starting function, usually the indicator function of $[0, 1)$.\nThe *cascade algorithm* with filter $(h_n)$ is the iteration\n$$\\varphi_{i+1}(x) = \\sqrt{2} \\sum_{n} h_n \\, \\varphi_i(2x - n), \\qquad i = 0, 1, 2, \\dots$$\nSuppose the sequence $(\\varphi_i)$ converges in $L^2(\\R)$ to a limit $\\varphi$.\nThen $\\varphi$ satisfies the refinement equation $\\varphi(x) = \\sqrt{2}\\sum_n h_n \\varphi(2x - n)$.\nSo $\\varphi$ is the [[scaling function|YH4BERB952]] of the filter.\n\n## Remarks\n\nThe condition $\\sum_n h_n = \\sqrt{2}$ keeps the integral fixed: $\\int \\varphi_{i+1} = \\sqrt{2}\\sum_n h_n \\cdot \\frac{1}{2}\\int\\varphi_i = \\int \\varphi_i$.\nThe values of $\\varphi_i$ at the points $k 2^{-i}$ can be computed by repeated upsampling by $2$ and convolution with $\\sqrt{2}\\,h$.\nThis is the inverse fast wavelet transform applied to a single coefficient.\n\nExample: for the Haar filter $h_0 = h_1 = 1/\\sqrt{2}$ and $\\varphi_0 = \\mathbf{1}_{[0,1)}$, one step gives $\\varphi_1(x) = \\mathbf{1}_{[0,1)}(2x) + \\mathbf{1}_{[0,1)}(2x - 1) = \\mathbf{1}_{[0,1)}(x)$.\nSo the iteration is constant and converges at once to the Haar scaling function.\n\nNon-example: for the filter $h_0 = h_1 = 1$, the sum is $2 \\ne \\sqrt{2}$.\nFrom $\\varphi_0 = \\mathbf{1}_{[0,1)}$ one gets $\\varphi_i = 2^{i/2}\\mathbf{1}_{[0,1)}$, which does not converge.\n\nFor the filters of the Daubechies wavelets, the iterates converge to the scaling function in $L^2(\\R)$.\nFor some filters that satisfy the sum condition, the iteration still fails to converge, so convergence depends on further properties of the filter.\n\n## Explanations\n\n### L1 human\n\nThe cascade algorithm turns the self-similarity rule of a scaling function into a repeated computation.\nEach round replaces the current shape by a weighted sum of half-size, shifted copies of it.\n",
  "commit": "ff8a40749dc16545e3d2fc637f6b0196e81d0bfa",
  "front": {
    "defines": "VZK6ZAXWJR",
    "kind": "definition",
    "msc": [
      "65T60",
      "42C40"
    ],
    "name": "Cascade algorithm",
    "sources": [
      {
        "url": "https://en.wikipedia.org/wiki/Cascade_algorithm"
      }
    ],
    "tag": "ZKXDA3XF3Z",
    "uses": [
      "YH4BERB952",
      "SASP14MA1Z"
    ]
  },
  "kind": "definition",
  "link": "https://tamnd.github.io/math2/node/ZKXDA3XF3Z/",
  "links": [
    {
      "field": "defines",
      "target": "VZK6ZAXWJR"
    },
    {
      "field": "uses",
      "target": "YH4BERB952"
    },
    {
      "field": "uses",
      "target": "SASP14MA1Z"
    }
  ],
  "markdown": "https://tamnd.github.io/math2/node/ZKXDA3XF3Z.md",
  "msc": [
    "65T60",
    "42C40"
  ],
  "name": "Cascade algorithm",
  "prov": null,
  "role": "",
  "source": "https://github.com/tamnd/math2/blob/main/nodes/ZKX/ZKXDA3XF3Z.md",
  "status": null,
  "tag": "ZKXDA3XF3Z",
  "uri": "m2://ZKXDA3XF3Z",
  "url": "https://tamnd.github.io/math2/wiki/cascade-algorithm-definition/",
  "writing": {
    "tag": "ZKXDA3XF3Z",
    "kind": "definition",
    "level": "W0",
    "next": [
      {
        "what": "an inventory row",
        "note": "the row of the inventory that the node accounts for",
        "have": 0,
        "want": 1
      },
      {
        "what": "a source with a locator",
        "have": 0,
        "want": 1
      }
    ]
  }
}
