{ "cells": [ { "cell_type": "markdown", "id": "81b1d2f0", "metadata": {}, "source": [ "---\n", "title: \"Discrete Fourier Transform and Stability in 2-norm\"\n", "subtitle: \"Lecture 15\"\n", "date: 2026-04-01\n", "abstract-title: Overview\n", "format:\n", " html:\n", " other-links:\n", " - text: This notebook\n", " href: L15.ipynb\n", "---" ] }, { "cell_type": "markdown", "id": "63cf0867", "metadata": {}, "source": [ "::: {.callout-note}\n", "\n", "I encourage you to play around with the juptyer notebook for this lecture - you can copy the code with the ```this notebook``` button on the side of this page.\n", "\n", ":::\n", "\n", "::: {.callout-warning}\n", "\n", "These notes are mainly a record of what we discussed and are not a substitute for attending the lectures and reading books! If anything is unclear/wrong, let me know and I will update the notes.\n", "\n", ":::\n", "\n", "::: {.callout-tip}\n", "\n", "This chapter is mostly based on \n", "\n", "* @Burden Chapter 11, \n", "* @FNC Chapter 10\n", "\n", ":::" ] }, { "cell_type": "code", "execution_count": 1, "id": "f8408d86", "metadata": {}, "outputs": [], "source": [ "#| echo: false\n", "\n", "using Plots, LaTeXStrings, LinearAlgebra\n", "\n", "# IF YOU ARE READING THIS, THANK YOU\n", "# FOR DOWNLOADING THE LECTURE NOTES.\n", "# THE FIRST PERSON TO LET ME KNOW,\n", "# WINS SOME CHOCOLATES OF YOUR CHOICE" ] }, { "cell_type": "markdown", "id": "81473756", "metadata": {}, "source": [ "## Recap\n", "\n", "We are considering boundary value problems of the following form: Suppose we have a differential operator $\\mathcal L$, a \"nice\" domain $\\Omega \\subset \\mathbb R^d$, and *data* $f$. Seek $u : \\Omega \\to \\mathbb R$ such that \n", "\n", "\\begin{align}\n", " \\mathcal L[u] &= f &&\\text{in } \\Omega \\nonumber\\\\\n", " u &= 0 &&\\text{on } \\partial \\Omega .\n", " \\tag{BVP}\n", "\\end{align}\n", "\n", "This is a problem with *homogeneous Dirichlet boundary conditions* (the values of the solution are prescribed on the boundary (Dirichlet) and are zero (homogeneous)). \n", "\n", "We also consider the specific problem (in 1d):\n", "\n", "::: {#exm-BVPs}\n", "# Linear Advection-Diffusion-Reaction Equations\n", "\n", "Consider\n", "\n", "\\begin{align}\n", " \\mathcal L[u] := -\\Delta u + p \\cdot \\nabla u + q u\n", "\\end{align}\n", "\n", "In the context of semiconductor physics, $u(x)$ represents the concentration of charge carriers at a position $x \\in \\Omega$. Each of these terms relates to the physics in question: \n", "\n", "* $-\\Delta$ : diffusion; electrons move from areas of high concentration to low, \n", "* $p \\cdot \\nabla u$ : advection (drift); the solution is driven with velocity $p$ (due to e.g. an external electric field), \n", "* $q u$ : reaction; electrons and electron holes are being created or destroyed.\n", "\n", "The same equation also models e.g pollutant transport in a river, drug delivery in a blood vessel, asset price in finance, heat transfer in fluids, ...... \n", "\n", ":::\n", "\n", "By approximating the continuous problem with finite differences, we obtain a discrete problem: find $\\bm U \\in \\mathbb R^{n+1}$ (with index starting at $0$ or equivalently $U: \\Omega_h \\to \\mathbb R$ where $\\Omega_h := \\{x_j\\}_{j=0}^n \\to \\mathbb R$ with $U_j := U(x_j)$) such that \n", "\n", "\\begin{align}\n", " \\begin{split}\n", " &\\mathcal L_h [\\bm U] = \\bm f \\\\\n", " &U_0 = U_n = 0 \n", " \\end{split}\\tag{$\\text{BVP}_h$}\n", "\\end{align}\n", "\n", "where $\\mathcal L_h$ depends on the choice of finite difference scheme.\n", "\n", "Last time, we approximated the ADR equation with the following finite difference scheme on the *mesh* $\\{x_j\\}_{j=0}^n$ with $x_j = \\frac{j}{n}$ and *mesh size* $h= \\frac{1}{n}$:\n", "\n", "\\begin{align}\n", " \\mathcal L_h &= -L + p D^0 + qI \\nonumber\\\\\n", " %\n", " &= -\\frac{1}{h^2} \n", " \\begin{pmatrix}\n", " -2 & 1 & & & \\\\\n", " 1 & -2 & 1 & & \\\\\n", " & 1 & -2 & \\ddots \\\\\n", " & & \\ddots & \\ddots & 1\\\\\n", " & & & 1 & -2 \n", " \\end{pmatrix}\n", " %\n", " + \\frac{p}{2h} \n", " \\begin{pmatrix}\n", " 0 & 1 & & & \\\\\n", " -1 & 0 & 1 & & \\\\\n", " & -1 & 0 & \\ddots \\\\\n", " & & \\ddots & \\ddots & 1\\\\\n", " & & & -1 & 0 \n", " \\end{pmatrix}\n", " % \n", " + q I, \\nonumber\n", "\\end{align}\n", "\n", "a $(n-1)\\times(n-1)$ matrix (acting on the interior points of the grid).\n", "\n", "We saw that this method is:\n", "\n", "* 2nd order consistent,\n", "* Stable in the $\\infty$-norm if $q>0$ (using the fact that the matrix is SDD) with stability constant $\\frac{1}{q}$, \n", "* Stable in the $\\infty$-norm for $p = q=0$ (using the fact that the matrix is an M matrix) with stability constant $\\frac{1}{8}$, \n", "\n", "Thus, in these particular cases, the finite difference approximation converges with order $p=2$. \n", "\n", "## Periodic boundary conditions\n", "\n", "We now consider the following periodic problem:\n", "\n", "\\begin{align}\n", " \\mathcal Lu &:= -u'' + p u' + q u = f \\qquad \\text{on } (0,1) \\nonumber\\\\\n", " &u(0) = u(1) \\\\\n", " &u'(0) = u'(1) \\nonumber \n", "\\end{align}\n", "\n", "::: {#exr-consistency}\n", "\n", "Write down a consistent finite difference approximation to $\\mathcal L$ on the grid $\\{x_j\\}_{j=0}^n$ with $x_j = jh$ and $h = \\frac{1}{n}$ (that also incorporates the boundary conditions).\n", "\n", "Hint: the matrices are now $n\\times n$.\n", "\n", ":::\n", "\n", "We thus consider the problem \n", "\n", "\\begin{align}\n", " \\mathcal L_h &= -L_{\\rm per} + p D^0_{\\rm per} + qI \\nonumber\\\\\n", " %\n", " &= -\\frac{1}{h^2} \n", " \\begin{pmatrix}\n", " -2 & 1 & & & 1 \\\\\n", " 1 & -2 & 1 & & \\\\\n", " & 1 & -2 & \\ddots \\\\\n", " & & \\ddots & \\ddots & 1\\\\\n", " 1 & & & 1 & -2 \n", " \\end{pmatrix}\n", " %\n", " \\nonumber\\\\\n", " &\\qquad + \\frac{p}{2h} \n", " \\begin{pmatrix}\n", " 0 & 1 & & & -1\\\\\n", " -1 & 0 & 1 & & \\\\\n", " & -1 & 0 & \\ddots \\\\\n", " & & \\ddots & \\ddots & 1\\\\\n", " 1 & & & -1 & 0 \n", " \\end{pmatrix}\n", " % \n", " + q I. \\nonumber\n", "\\end{align}\n", "\n", "We would like to prove stability (and thus convergence) of this numerical method. We do this in the $2$-norm: we want to show that \n", "\n", "\\begin{align}\n", " \\| x \\|_2 \\leq C \\| Ax\\|_2\n", "\\end{align}\n", "\n", "where $A := -L_{\\rm per} + p D^0_{\\rm per} + q I$.\n", "\n", "We have seen that, if $(\\lambda_k, v_k)$ are normalised eigenpairs of $A$ and \n", "\n", "\\begin{align}\n", " A = \\sum_k \\lambda_k v_k v_k^\\star\n", "\\end{align}\n", "\n", "with $\\lambda_k \\not=0$, then $A$ is invertible with eigenpairs $(\\lambda_k^{-1}, v_k)$. Therefore, if we able to compute the eigenvalues of $A := -L_{\\rm per} + p D^0_{\\rm per} + q I$ and they are nonzero we can invert $A$ and write\n", "\n", "\\begin{align}\n", " \\| x\\|_2 &= \\|A^{-1} Ax \\|_2 \\nonumber\\\\\n", " %\n", " &\\leq \\|A^{-1}\\|_2 \\| Ax \\|_2 \\nonumber\\\\\n", " %\n", " &= \\rho(A^{-1}) \\| Ax \\|_2 \\nonumber\\\\\n", " %\n", " &= \\max_{\\lambda \\in \\sigma(A)} \\frac{1}{|\\lambda|} \\| Ax \\|_2.\n", "\\end{align}\n", "\n", "We will use the discrete Fourier transform to diagonalise $\\mathcal L_h$." ] }, { "cell_type": "markdown", "id": "c60d165c", "metadata": {}, "source": [ "## Discrete Fourier Transform\n", "\n", "Suppose we have some $U_j$ for $j = 0,1,...,n-1$ (e.g. representing the values of some function on a grid $\\{x_j\\}_{j=0}^{n}$ (and $U_n = U_0$)). The idea behind the *discrete Fourier transform (DFT)* is to write $U_j$ with respect to the *Fourier basis*: for $k = 0,\\dots,n-1$, \n", "\n", "\\begin{align}\n", " (\\bm e_k)_j &:= \\frac{1}{\\sqrt{n}} e^{\\frac{2\\pi ijk}{n}}.\n", "\\end{align}\n", "\n", "::: {#exr-}\n", "\n", "Show that $\\bm e_k$ satisfy the periodic boundary conditions.\n", "\n", ":::\n", "\n", "We define the *inner product* $(u,v) := \\sum_{j=0}^{n-1} \\overline{u_j} v_j$ on $\\mathbb C^{n}$ (notice this extends the dot product to complex valued vectors). \n", "\n", "::: {.callout-note}\n", "\n", "Some people put the complex conjugate in the other component $\\sum_{j=0}^n u_j \\overline{v_j}$.\n", "\n", ":::\n", "\n", "We say that $u, v$ are *orthogonal* if $(u,v) = 0$. A set $\\{u^{(j)}\\}_j$ is *orthonormal* if $(u^{(j)}, u^{(j')}) = \\delta_{jj'}$ (i.e. $=1$ if $j=j'$ and $=0$ if $j\\not=j'$). \n", "\n", "::: {#exr-}\n", "\n", "Show that $\\{ \\bm e_k \\}_{k=0}^{n-1}$ forms an *orthonomal basis* of $\\mathbb C^n$.\n", "\n", ":::\n", "\n", "We can write $U$ with respect to this basis: there exists constants $\\hat{U}_k$ such that\n", "\n", "\\begin{align}\n", " U_j = \\sum_{k=0}^{n-1} \\hat{U}_k (\\bm e_k)_j.\n", "\\end{align}\n", "\n", "The constants $\\hat{U}_k$ are the *Fourier coefficients* of $U$ and we can write $U = \\sum_{k=0}^{n-1} \\hat{U}_k \\bm e_k$. \n", "\n", "::: {#exr-}\n", "\n", "Use the orthonormality of $\\bm e_k$ to write down a formula for $\\hat{U}_k$.\n", "\n", "**Extra.** Show *Parseval's identity*: $\\|U\\|_2 = \\|\\hat{U}\\|_2$. \n", "\n", ":::\n", "\n", "::: {#exr-stab}\n", "\n", "Write down *(i)* $D^0_{\\rm per} \\bm e_k$ and *(ii)* $-L_{\\rm per} \\bm e_k$. Hence write down the eigenvalues $\\lambda_k$ of $\\mathcal L_h$.\n", "\n", ":::\n", "\n", "Recall, we are approximating the solution to $-u'' + p u' + q u = f$ with PBCs $u(0) = u(1)$ and $u'(0) = u'(1)$ with the finite difference $\\mathcal L_h = -L_{\\rm per} + p D^0_{\\rm per} + qI$. \n", "\n", "::: {#exr-convergence}\n", "\n", "Take $p = 0$ and $q>0$. Show that the solution $U_h$ of $\\mathcal L_h U_h = F$ converges to the solution of the continuous problem as $h \\to 0$.\n", "\n", ":::\n", "\n", "::: {#exr-}\n", "\n", "Let $F_j = \\sum_{k=0}^{n-1} \\hat{F}_k (\\bm e_k)_j$ and $U_j = \\sum_{k=0}^{n-1} \\hat{U}_k (\\bm e_k)_j$. Rewrite the problem $\\mathcal L_h U = F$ in terms of the Fourier coefficients $(\\hat{U}_k, \\hat{F}_k)$. Explain how you can use DFT to solve the linear system of equations $-\\mathcal L_h U = F$ without inverting the matrix $\\mathcal L_h$ directly.\n", "\n", "Here, we solve $(-L_{\\rm per} + q I) U = F$ doing this:" ] }, { "cell_type": "code", "execution_count": null, "id": "6eb38471", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" } ], "source": [ "using Plots \n", "\n", "q = 1\n", "\n", "f(x) = x\n", "n = 2^10\n", "h = 1/n\n", "\n", "# this is an inefficient way to do this (see A5)\n", "DFT = [ exp( -2π*1im*j*k/n )/sqrt(n) for k∈0:n-1, j∈0:n-1 ]\n", "Uhat = DFT*f.(0:h:1-h) ./ ( (2/h^2)*[1-cos(2π*k/n) for k∈0:n-1] .+ q )\n", "U = DFT' * Uhat \n", "\n", "U = [U..., U[1]]\n", "\n", "plot( 0:h:1, real.(U), m=1 )" ] }, { "cell_type": "markdown", "id": "691620e2", "metadata": {}, "source": [ ":::" ] }, { "cell_type": "markdown", "id": "b1d5ab0c", "metadata": {}, "source": [ ":::{.callout-tip}\n", "# TO-DO\n", "\n", "* Take a look at the suggestions for [Presentations/Posters/Papers](/Presentations.html) and sign up to present, \n", "* Read through the proofs/exercises from this lecture and Monday, \n", "* (Sign-up to office hours if you would like)\n", "\n", "Previous reading:\n", "\n", "* Chapter 1 reading:\n", " * @Burden sections 5.1 - 5.6, \n", " * @FNC [zero stability](https://fncbook.com/zerostability/) \n", "* Chapter 2 reading:\n", " * Recap matrices: sections 7.1 - 7.2 of @Burden \n", " * Jacobi & Gauss-Seidel: section 7.3 @Burden \n", " * CG: section 7.6 @Burden\n", "* Chapter 3 reading: \n", " * Sections 11.1 - 11.2 of @Burden: shooting methods\n", "\n", ":::" ] } ], "metadata": { "kernelspec": { "display_name": "Julia 1.11", "language": "julia", "name": "julia-1.11" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.11.6" } }, "nbformat": 4, "nbformat_minor": 5 }