{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "af913c03",
"metadata": {
"tags": [
"remove-cell"
]
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"┌ Info: verify download of index files...\n",
"└ @ MatrixDepot /Users/driscoll/.julia/packages/MatrixDepot/GEDc3/src/MatrixDepot.jl:139\n",
"┌ Info: reading database\n",
"└ @ MatrixDepot /Users/driscoll/.julia/packages/MatrixDepot/GEDc3/src/download.jl:23\n",
"┌ Info: adding metadata...\n",
"└ @ MatrixDepot /Users/driscoll/.julia/packages/MatrixDepot/GEDc3/src/download.jl:67\n",
"┌ Info: adding svd data...\n",
"└ @ MatrixDepot /Users/driscoll/.julia/packages/MatrixDepot/GEDc3/src/download.jl:69\n",
"┌ Info: writing database\n",
"└ @ MatrixDepot /Users/driscoll/.julia/packages/MatrixDepot/GEDc3/src/download.jl:74\n",
"┌ Info: used remote sites are sparse.tamu.edu with MAT index and math.nist.gov with HTML index\n",
"└ @ MatrixDepot /Users/driscoll/.julia/packages/MatrixDepot/GEDc3/src/MatrixDepot.jl:141\n"
]
}
],
"source": [
"using FundamentalsNumericalComputation\n",
"FNC.init_format()"
]
},
{
"cell_type": "markdown",
"id": "6f10f4e7",
"metadata": {},
"source": [
"(section-twodim-laplace)=\n",
"# Laplace and Poisson equations\n",
"\n",
"```{index} ! Laplace equation, ! Poisson equation\n",
"```\n",
"Consider the heat equation $u_t=u_{xx}+u_{yy}$. After a long time, the distribution of temperature will stop changing. This steady-state solution must satisfy the PDE $u_{xx}+u_{yy}=0$, which is our third and final canonical PDE.\n",
"\n",
"::::{proof:definition} Laplace and Poisson equations\n",
"The **Poisson equation** in two dimensions is\n",
"\n",
":::{math}\n",
":label: poispde\n",
"u_{xx} + u_{yy} = f(x,y).\n",
":::\n",
"\n",
"A common notation for it is $\\Delta u = f$, where $\\Delta$ is known as the **Laplacian operator**.\n",
"\n",
"The function $f$ is sometimes called a *forcing function*. If $f$ is identically zero, then {eq}`poispde` is the **Laplace equation**.\n",
"::::\n",
"\n",
"```{index} elliptic PDE\n",
"```\n",
"\n",
"The Laplace/Poisson equation is the archetype of an **elliptic PDE**. All linear, constant-coefficient PDEs with no higher than second derivatives can be classified as either parabolic, hyperbolic, or elliptic. No time variable appears in {eq}`poispde`. Although variable names are arbitrary, elliptic PDEs often do represent systems at steady state. \n",
"\n",
"In order to get a fully specified problem, the Laplace or Poisson equations must be complemented with a boundary condition. Because both $x$ and $y$ are spatial variables, this is our first encounter with a boundary condition that is not imposed simply at a pair of points. We consider only the Dirichlet condition $u(x,y)=g(x,y)$ around the entire boundary.\n",
"\n",
"## Sylvester equation\n",
"\n",
"With the unknown solution represented by its values $\\mathbf{U}=\\mtx(u)$ on a rectangular grid, and second-derivative finite-difference or spectral differentiation matrices $\\mathbf{D}_{xx}$ and $\\mathbf{D}_{yy}$, the Poisson equation {eq}`poispde` becomes the discrete equation\n",
"\n",
":::{math}\n",
" :label: poissylvester\n",
" \\mathbf{D}_{xx}\\mathbf{U} + \\mathbf{U} \\mathbf{D}_{yy}^T = \\mathbf{F},\n",
":::\n",
"\n",
"```{index} ! Sylvester equation\n",
"```\n",
"where $\\mathbf{F}=\\mtx(f)$. Equation {eq}`poissylvester`, with an unknown matrix $\\mathbf{U}$ multiplied on the left and right in different terms, is known as a **Sylvester equation**. We will use a new matrix operation to solve it.\n",
"\n",
"## Kronecker product\n",
"\n",
"```{index} ! Kronecker product\n",
"```\n",
"(definition-laplace-kron)=\n",
"::::{proof:definition} Kronecker product\n",
"Let $\\mathbf{A}$ be $m\\times n$ and $\\mathbf{B}$ be $p\\times q$. The **Kronecker product** $\\mathbf{A}\\otimes \\mathbf{B}$ is the $mp\\times nq$ matrix given by\n",
"\n",
":::{math}\n",
" :label: krondef\n",
" \\mathbf{A}\\otimes \\mathbf{B} =\n",
" \\begin{bmatrix}\n",
" A_{11} \\mathbf{B} & A_{12}\\mathbf{B} & \\cdots & A_{1n}\\mathbf{B} \\\\\n",
" A_{21} \\mathbf{B} & A_{22}\\mathbf{B} & \\cdots & A_{2n}\\mathbf{B} \\\\\n",
" \\vdots & \\vdots & & \\vdots \\\\\n",
" A_{m1} \\mathbf{B} & A_{m2}\\mathbf{B} & \\cdots & A_{mn}\\mathbf{B}\n",
" \\end{bmatrix}.\n",
":::\n",
"::::\n",
"\n",
"(demo-laplace-kron)=\n",
"```{proof:demo}\n",
"```\n",
"\n",
"```{raw} html\n",
"
\n",
"```\n",
"\n",
"```{raw} latex\n",
"%%end demo%%\n",
"```\n",
"\n",
"The Kronecker product obeys several natural-looking identities:\n",
"\n",
"(theorem-laplace-kron)=\n",
"::::{proof:theorem} Kronecker product identities\n",
"Given matrices for which the non-Kronecker operations make sense, the following hold.\n",
"\n",
"1. $\\mathbf{A}\\otimes (\\mathbf{B} + \\mathbf{C}) = \\mathbf{A}\\otimes \\mathbf{B} + \\mathbf{A}\\otimes \\mathbf{C}$ \n",
"2. $(\\mathbf{A} + \\mathbf{B}) \\otimes \\mathbf{C} = \\mathbf{A}\\otimes \\mathbf{C} + \\mathbf{B}\\otimes \\mathbf{C}$ \n",
"3. $(\\mathbf{A} \\otimes \\mathbf{B}) \\otimes \\mathbf{C} = \\mathbf{A} \\otimes (\\mathbf{B} \\otimes \\mathbf{C})$ \n",
"4. $(\\mathbf{A} \\otimes \\mathbf{B})^T = \\mathbf{A}^T \\otimes \\mathbf{B}^T$ \n",
"5. $(\\mathbf{A} \\otimes \\mathbf{B})^{-1} = \\mathbf{A}^{-1} \\otimes \\mathbf{B}^{-1}$ \n",
"6. $(\\mathbf{A} \\otimes \\mathbf{B})(\\mathbf{C}\\otimes \\mathbf{D}) = (\\mathbf{A}\\mathbf{C}) \\otimes (\\mathbf{B}\\mathbf{D})$\n",
"\n",
"For the vec operation defined in {numref}`Definition {number} ` and matrices of compatible sizes, \n",
"\n",
":::{math}\n",
":label: vecidentity\n",
"\\operatorname{vec}(\\mathbf{A}\\mathbf{B}\\mathbf{C}^T) = ({\\mathbf{C}}\\otimes {\\mathbf{A}})\\operatorname{vec}(\\mathbf{B}).\n",
":::\n",
"::::\n",
"\n",
"::::{proof:proof}\n",
"(Partial proof.) These all boil down to algebraic manipulations. For instance, for item 5, let $\\mathbf{Z}=\\mathbf{A}^{-1}$. Then\n",
"\n",
"$$\n",
"\\bigl(\\mathbf{A} \\otimes \\mathbf{B}\\bigr) \\bigl(\\mathbf{A}^{-1} \\otimes \\mathbf{B}^{-1}\\bigr) &= \\begin{bmatrix}\n",
" A_{11} \\mathbf{B} & A_{12}\\mathbf{B} & \\cdots & A_{1n}\\mathbf{B} \\\\\n",
" A_{21} \\mathbf{B} & A_{22}\\mathbf{B} & \\cdots & A_{2n}\\mathbf{B} \\\\\n",
" \\vdots & \\vdots & & \\vdots \\\\\n",
" A_{n1} \\mathbf{B} & A_{n2}\\mathbf{B} & \\cdots & A_{n n}\\mathbf{B}\n",
" \\end{bmatrix} \\, \\begin{bmatrix}\n",
" Z_{11} \\mathbf{B}^{-1} & Z_{12}\\mathbf{B}^{-1} & \\cdots & Z_{1n}\\mathbf{B}^{-1} \\\\\n",
" Z_{21} \\mathbf{B}^{-1} & Z_{22}\\mathbf{B}^{-1} & \\cdots & Z_{2n}\\mathbf{B}^{-1} \\\\\n",
" \\vdots & \\vdots & & \\vdots \\\\ \n",
" Z_{n1} \\mathbf{B}^{-1} & Z_{n2}\\mathbf{B}^{-1} & \\cdots & Z_{n n}\\mathbf{B}^{-1}\n",
" \\end{bmatrix} \\\\[1mm]\n",
" &= \\begin{bmatrix}\n",
" (A_{11} Z_{11} + \\cdots + A_{1n}Z_{n1})\\mathbf{I}_n & \\cdots & (A_{11} Z_{1n} + \\cdots + A_{1n}Z_{n n})\\mathbf{I}_n \\\\\n",
" \\vdots & & \\vdots \\\\\n",
" (A_{n1} Z_{11} + \\cdots + A_{n n}Z_{n1})\\mathbf{I}_n & \\cdots & (A_{n1} Z_{1n} + \\cdots + A_{n n}Z_{n n})\\mathbf{I}_n\n",
" \\end{bmatrix} \\\\ & = (\\mathbf{A}\\mathbf{Z}) \\otimes \\mathbf{I}_n \\\\ & = \\mathbf{I}_{2n}.\n",
"$$\n",
"::::\n",
"\n",
"## Poisson as a linear system\n",
"\n",
"We can use {eq}`vecidentity` to express the Sylvester form {eq}`poissylvester` of the discrete Poisson equation as an ordinary linear system. First, we pad {eq}`poissylvester` with identity matrices,\n",
"\n",
"$$\n",
"\\mathbf{D}_{xx}\\mathbf{U} \\mathbf{I}_{y} + \\mathbf{I}_{x} \\mathbf{U} \\mathbf{D}_{yy}^T = \\mathbf{F},\n",
"$$\n",
"\n",
"where $\\mathbf{I}_{x}$ and $\\mathbf{I}_{y}$ are the $(m+1)\\times (m+1)$ and $(n+1)\\times (n+1)$ identities, respectively. Upon taking the vec of both sides and applying {eq}`vecidentity`, we obtain\n",
"\n",
":::{math}\n",
":label: poiskronpde\n",
"\\underbrace{\\bigl[ ({\\mathbf{I}_{y}} \\otimes {\\mathbf{D}_{xx}}) + ({\\mathbf{D}_{yy}}\\otimes {\\mathbf{I}_{x}})\\bigr]}_{\\mathbf{A}} \\, \\underbrace{\\operatorname{vec}(\\mathbf{U})}_{\\mathbf{u}} &=\n",
" \\underbrace{\\operatorname{vec}(\\mathbf{F})}_{\\mathbf{b}} \\\\[1mm] \\mathbf{A} \\mathbf{u} &= \\mathbf{b}.\n",
":::\n",
"\n",
"This is in the form of a standard linear system in $(m+1)(n+1)$ variables. \n",
"\n",
"Boundary conditions of the PDE must yet be applied to modify {eq}`poiskronpde`. As has been our practice for one-dimensional boundary-value problems, we replace the collocation equation for the PDE at each boundary point with an equation that assigns that boundary point its prescribed value. The details are a bit harder to express algebraically in the two-dimensional geometry, though, than in the 1D case. \n",
"\n",
"Say that $N=(m+1)(n+1)$ is the number of entries in the unknown $\\mathbf{U}$, and let $B$ be a subset of $\\{1,\\dots,N\\}$ such that $i\\in B$ if and only if $(x_i,y_i)$ is on the boundary. Then for each $i\\in B$, we want to replace row $i$ of the system $\\mathbf{A}\\mathbf{u}=\\mathbf{b}$ with the equation\n",
"\n",
"$$\n",
" %:label: pois2bcrep\n",
" \\mathbf{e}_i^T \\mathbf{u} = g(x_i,y_i).\n",
"$$\n",
"\n",
"Hence from $\\mathbf{A}$ we should subtract away its $i$th row and add $\\mathbf{e}_i^T$ back in. When this is done for all $i\\in B$, the result is the replacement of the relevant rows of $\\mathbf{A}$ with relevant rows of the identity:\n",
"\n",
":::{math}\n",
" :label: pois2bcrep\n",
" \\tilde{\\mathbf{A}} = \\mathbf{A} - \\mathbf{I}_B\\mathbf{A} +\\mathbf{I}_B,\n",
":::\n",
"\n",
"where $\\mathbf{I}_B$ is a matrix with zeros everywhere except for ones at $(i,i)$ for all $i\\in B$. A similar expression can be derived for the modification of $\\mathbf{b}$. However, rather than implementing a literal interpretation of {eq}`pois2bcrep`, the changes to $\\mathbf{A}$ and $\\mathbf{b}$ are made more easily through logical indexing. A small example is more illuminating than further description.\n",
"\n",
"(demo-laplace-fd)=\n",
"```{proof:demo}\n",
"```\n",
"\n",
"```{raw} html\n",
"
\n",
"```\n",
"\n",
"```{raw} latex\n",
"%%start demo%%\n",
"```\n",
"\n",
"\n",
"Here is a forcing function for Poisson's equation."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "b4b3286c",
"metadata": {},
"outputs": [],
"source": [
"f = (x,y) -> x^2 - y + 2;"
]
},
{
"cell_type": "markdown",
"id": "e1ca2b04",
"metadata": {},
"source": [
"We make a crude discretization for illustrative purposes."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "240ca437",
"metadata": {},
"outputs": [],
"source": [
"m,n = 6,5\n",
"x,Dx,Dxx = FNC.diffmat2(m,[0,3])\n",
"y,Dy,Dyy = FNC.diffmat2(n,[-1,1])\n",
"unvec = u -> reshape(u,m+1,n+1);"
]
},
{
"cell_type": "markdown",
"id": "6b6e069d",
"metadata": {},
"source": [
"Next, we evaluate $\\phi$ on the grid."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "b0ca3fd9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7×6 Matrix{Float64}:\n",
" 3.0 2.6 2.2 1.8 1.4 1.0\n",
" 3.25 2.85 2.45 2.05 1.65 1.25\n",
" 4.0 3.6 3.2 2.8 2.4 2.0\n",
" 5.25 4.85 4.45 4.05 3.65 3.25\n",
" 7.0 6.6 6.2 5.8 5.4 5.0\n",
" 9.25 8.85 8.45 8.05 7.65 7.25\n",
" 12.0 11.6 11.2 10.8 10.4 10.0"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"F = [ f(x,y) for x in x, y in y ]"
]
},
{
"cell_type": "markdown",
"id": "5915a600",
"metadata": {},
"source": [
"Here are the equations for the PDE collocation, before any modifications are made for the boundary conditions."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "b01e4673",
"metadata": {},
"outputs": [],
"source": [
"A = kron(I(n+1),Dxx) + kron(Dyy,I(m+1))\n",
"b = vec(F);"
]
},
{
"cell_type": "markdown",
"id": "86bc531f",
"metadata": {},
"source": [
"The number of equations is equal to $(m+1)(n+1)$, which is the total number of points on the grid."
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "4a3417ea",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"N = length(F) = 42\n"
]
}
],
"source": [
"@show N = length(F);"
]
},
{
"cell_type": "markdown",
"id": "7bbb5e2b",
"metadata": {},
"source": [
"The combination of Kronecker products and finite differences produces a characteristic sparsity pattern."
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "7c0742fa",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
]
},
"execution_count": 11,
"metadata": {
"filenames": {
"image/png": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/twodim/laplace_19_0.png",
"image/svg+xml": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/twodim/laplace_19_0.svg"
}
},
"output_type": "execute_result"
}
],
"source": [
"spy(sparse(A),color=:blues,m=3,\n",
" title=\"System matrix before boundary conditions\")"
]
},
{
"cell_type": "markdown",
"id": "18329216",
"metadata": {},
"source": [
"We now construct a Boolean array the same size as `F` to indicate where the boundary points lie in the grid."
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "a17ddb4f",
"metadata": {},
"outputs": [],
"source": [
"isboundary = trues(m+1,n+1)\n",
"isboundary[2:m,2:n] .= false\n",
"idx = vec(isboundary);"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "6a7c416d",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
]
},
"execution_count": 13,
"metadata": {
"filenames": {
"image/png": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/twodim/laplace_22_0.png",
"image/svg+xml": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/twodim/laplace_22_0.svg"
}
},
"output_type": "execute_result"
}
],
"source": [
"spy(sparse(isboundary),m=3,color=:darkblue,legend=:none,\n",
" title=\"Boundary points\",\n",
" xaxis=(\"column index\",[0,n+2]),yaxis=(\"row index\",[0,m+2]) )"
]
},
{
"cell_type": "markdown",
"id": "898a3212",
"metadata": {},
"source": [
"In order to impose Dirichlet boundary conditions, we replace the boundary rows of the system by rows of the identity."
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "d7f0e42e",
"metadata": {},
"outputs": [],
"source": [
"I_N = I(N)\n",
"A[idx,:] .= I_N[idx,:]; # Dirichlet conditions"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "77712c2a",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
]
},
"execution_count": 15,
"metadata": {
"filenames": {
"image/png": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/twodim/laplace_25_0.png",
"image/svg+xml": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/twodim/laplace_25_0.svg"
}
},
"output_type": "execute_result"
}
],
"source": [
"spy(sparse(A),color=:blues,m=3,\n",
" title=\"System matrix with boundary conditions\") "
]
},
{
"cell_type": "markdown",
"id": "7c079e5d",
"metadata": {},
"source": [
"Finally, we must replace the rows in the vector $\\mathbf{b}$ by the boundary values being assigned to the boundary points. Here, we let the boundary values be zero everywhere."
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "4f00ad16",
"metadata": {},
"outputs": [],
"source": [
"b[idx] .= 0; # Dirichlet values"
]
},
{
"cell_type": "markdown",
"id": "3438a8cb",
"metadata": {},
"source": [
"Now we can solve for $\\mathbf{u}$ and reinterpret it as the matrix-shaped $\\mathbf{U}$, the solution on our grid."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "a0753df9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"7×6 Matrix{Float64}:\n",
" 0.0 0.0 4.23103e-16 -1.27734e-15 1.96159e-15 0.0\n",
" -2.84217e-16 -0.549304 -0.758277 -0.712098 -0.453391 0.0\n",
" 1.06581e-15 -0.917873 -1.30273 -1.24377 -0.798473 0.0\n",
" 2.06057e-15 -1.21928 -1.74064 -1.67911 -1.09539 0.0\n",
" 7.67386e-15 -1.39869 -1.97682 -1.91786 -1.27929 0.0\n",
" 5.68434e-15 -1.21024 -1.65843 -1.61225 -1.11433 0.0\n",
" 0.0 0.0 -1.9111e-15 2.57711e-15 0.0 0.0"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"u = A\\b\n",
"U = unvec(u)"
]
},
{
"cell_type": "markdown",
"id": "67370ea5",
"metadata": {},
"source": [
"```{raw} html\n",
"
\n",
"```\n",
"\n",
"```{raw} latex\n",
"%%end demo%%\n",
"```\n",
"\n",
"\n",
"## Implementation\n",
"\n",
"{numref}`Function {number} ` is our code to solve the Poisson equation.\n",
"\n",
"(function-poissonfd)=\n",
"````{proof:function} poissonfd\n",
"**Solve Poisson's equation by finite differences**\n",
"```{code-block} julia1\n",
":lineno-start: 1\n",
"\"\"\"\n",
" poissonfd(f,g,m,xspan,n,yspan)\n",
"\n",
"Solve Poisson's equation on a rectangle by finite differences.\n",
"Function `f` is the forcing function and function `g` gives the\n",
"Dirichlet boundary condition. The rectangle is the tensor product of\n",
"intervals `xspan` and `yspan`, and the discretization uses `m`+1\n",
"and `n`+1 points in the two coordinates.\n",
"\n",
"Returns vectors defining the grid and a matrix of grid solution values.\n",
"\"\"\"\n",
"function poissonfd(f,g,m,xspan,n,yspan)\n",
" # Discretize the domain.\n",
" x,Dx,Dxx = FNC.diffmat2(m,xspan)\n",
" y,Dy,Dyy = FNC.diffmat2(n,yspan)\n",
" mtx = h -> [ h(x,y) for x in x, y in y ]\n",
" X,Y = mtx((x,y)->x),mtx((x,y)->y)\n",
" N = (m+1)*(n+1) # total number of unknowns\n",
"\n",
" # Form the collocated PDE as a linear system.\n",
" A = kron(I(n+1),sparse(Dxx)) + kron(sparse(Dyy),I(m+1))\n",
" b = vec( mtx(f) )\n",
"\n",
" # Identify boundary locations.\n",
" isboundary = trues(m+1,n+1)\n",
" isboundary[2:m,2:n] .= false\n",
" idx = vec(isboundary)\n",
"\n",
" # Apply Dirichlet condition.\n",
" scale = maximum(abs,A[n+2,:])\n",
" A[idx,:] = scale * I(N)[idx,:] # Dirichlet assignment\n",
" b[idx] = scale * g.(X[idx],Y[idx]) # assigned values\n",
"\n",
" # Solve the linear system and reshape the output.\n",
" u = A\\b\n",
" U = reshape(u,m+1,n+1)\n",
" return x,y,U\n",
"end\n",
"```\n",
"````\n",
"\n",
"We use {numref}`Demo %s ` as a template: create the linear system, modify it for the boundary conditions, solve it using backslash, and reshape to get a grid function. The matrix is $N=(m+1)(n+1)$ on each side and very sparse, so we take care to use sparse matrices in the code to exploit that structure. There is a small but important change from {numref}`Demo %s `: the boundary conditions are rescaled to read $\\sigma u(x,y)=\\sigma g(x,y)$, where $\\sigma$ is the largest element of a row of $\\mathbf{A}$. This tweak improves the condition number of the final matrix.\n",
"\n",
"(demo-laplace-poisson)=\n",
"```{proof:demo}\n",
"```\n",
"\n",
"```{raw} html\n",
"
\n",
"```\n",
"\n",
"```{raw} latex\n",
"%%start demo%%\n",
"```\n",
"\n",
"We can engineer an example by choosing the solution first. Let $u(x,y)=\\sin(3xy-4y)$. Then one can derive $f=\\Delta u = -\\sin(3xy-4y)\\bigl(9y^2+(3x-4)^2\\bigr)$ for the forcing function and use $g=u$ on the boundary.\n",
"\n",
"First we define the problem on $[0,1]\\times[0,2]$."
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "fb47732c",
"metadata": {},
"outputs": [],
"source": [
"f = (x,y) -> -sin(3*x*y-4*y)*(9*y^2+(3*x-4)^2);\n",
"g = (x,y) -> sin(3*x*y-4*y);\n",
"xspan = [0,1]; yspan = [0,2];"
]
},
{
"cell_type": "markdown",
"id": "239c82d7",
"metadata": {},
"source": [
"Here is the finite-difference solution."
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "030b96ae",
"metadata": {},
"outputs": [],
"source": [
"x,y,U = FNC.poissonfd(f,g,40,xspan,60,yspan);"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "991a14a7",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAfQAAAFACAIAAADF7xm+AAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOy9eYBVxbE/XtWX2QccQFkEFBhEAY0GNK4Rg4MLRiUoPlzjFjDGJUajJnF7efElatSoiSKG+FyiJvqSl4hLBPVLJPoTBdEwCiojLsiAsjjMwDAz99Tvj+qqrnNnu2yzcerxzLl9+vTpc+6dT3/6U9XVSESQWGKJJZZY1zLX3h1ILLHEEkts+1sC7oklllhiXdAScG9/W758+c0333z22WefcMIJ55577q233rpixYpWrzr99NMffvjhluuUl5fPnz+fj0855ZQnnnhiO3S3NVu3bt0VV1wxYcKEd955J+PUww8/PN7Ycccdd/755z/88MN1dXUtNNhmPQeA9957b/z48f/v//2/trndFlm7fJuJdV7r1t4d2Nlt2bJll19++cCBA0855ZRevXqtWrXqmWee+cEPfnDvvffuvvvu29j4P/7xj08//fQb3/gGAJx00kn77LPP9uhyK/bss89++OGHN9xwQ2lpaZMVrrzyypycHACora198803H3nkkbVr1/7whz9srsE263kHt3b5NhPrvJaAezvbE088scsuu/zmN7/Jz8/nkuOPP/7CCy987LHHrrrqqu14o+9+97vbsbUWrKampl+/foccckhzFcaNG5ebm8vHJ5xwwn/+538+++yzF198sRZmWJv1HAD69esHAP3792+zO26dteU7SayTWgLu7WwrVqwoKChQZAeA4uLis88+e8OGDVry97///dlnn12xYsXAgQOPPfbYiRMn2hYmTpx4zjnnTJo0iT/OmjXr3nvvffbZZy+77LL33nsPAMaPHz99+vSf/OQnkyZNmjJlSgtt3nLLLYcffvgXX3zxwgsvfPbZZ8OHD7/00ksHDx7cZM+bbOG66657/fXX+aa33HLL6NGjW30DI0eOnDdvXmVl5R577NFkm6eddpr2/LPPPvv9739fXl5eV1e31157fe9739t7771bKN/SJ+3Zs2f//v2HDBnScpsZ9uqrr/7pT3+qqKgoKSkZP378mWeemUqlACCdTj/88MNz586tqqoaMWLEGWec8cMf/nD69OlXXnllk18ZANTV1T322GPz5s1buXJl9+7dDz744KlTpxYVFe3obzOxrmeJ5t7Ots8++3z88cd33313RUWFFp5wwgn6d/vQQw/dc889++2335VXXvm1r33t3nvvffDBB7Np+aabbho7duzw4cMfffTRPffc055qrs2lS5c++uij8+bNO/vss88999yPP/745ptvbrLx5lq48sorJ0yYMGDAgEcffXTffffNpp/vvvsuAOy2226tPml9ff0111zz6aefnnnmmRdeeOG6deuuu+66urq65sq37klnzJiRm5vbQpsZNnv27Jtuumnw4MFXXXXVuHHjnnjiidtuu41P3XrrrU888cThhx/+gx/8IC8v70c/+lGrb+Puu+9+4oknDj300B//+MfHHnvs888/P3PmTNjB32ZiXdIS5t7OduGFF27evPn5559/+umnS0pK9t9//wMOOODII4/s0aMHAHz11Vd//vOfp0yZcsEFFwDAUUcdlZ+f/9RTT33nO99pteVevXoVFhbm5ub27dvXlrfc5tq1a++66668vDwAqKmpeeSRR+rq6jIEkxZa6NmzZ1FRUU5OTsZNrc2dO1c19wULFsybN+/YY4+tq6tr9Uk//fTT1atX/+xnPzvqqKMAoLS09Pnnn6+qqqqqqmqyPCcnZyuelGdRzd1r1113tc9SX18/c+bMk0466ZJLLgGAsWPH9u/f//bbb58yZUoURS+99NJll1124oknAsDRRx+t05oWrLa29uyzzz7zzDO5wytWrHj//fd36LeZWFe1BNzb2QoLC3/84x9fcsklixcvfuedd95666277rrr3nvvZRq4bNmyurq6srIyrV9WVvbYY48tW7Zsq+/YcptjxoxhLAAAVifS6XT2LYwZM6bVDtx666163Lt378mTJ3/3u99l9aPlJ+3Tp09RUdFDDz1UU1MzZsyYkSNHjhw5EgDy8/ObLF+4cOFWP2lz98qwzz77bM2aNaNHj/7yyy+5hP2c7733Xl1dnXPuuOOO08rHHHNMq+B+3XXXAUBdXd2qVas+/vjjd999t2fPni3U3/ZvM7Guagm4t6cRUX19fU5OTkFBwUEHHXTQQQcBwIoVK26++ebbb7/9wAMPZMiwbJGPv/jiixbabPmmLbdZUlLSare3olfWnnnmmcbkMZs2i4uLb7/99kcffXT69Om1tbX9+vU76aSTTj311ObKt+VJm2sTEW21yspKALjxxhszLt+wYcP69et79uzJcxR798Zmv7KlS5f+7ne/W7JkSY8ePQYNGlRcXNxCJ2F7fJuJdVVLwL09bcWKFeedd96NN954xBFHaOGAAQNOO+20m2++eeXKlfyHumbNmqKiIj67du1aAOjdu3dzbX711Vct37TlNjPAayta2DrLss3S0tIbb7yxoaHhww8/fO6552bMmLHLLrscc8wxTZZv45M2dy9bh9HzwQcfHDhwYMblTz755Pr16xsaGrp162bv3tj0K9u4ceMVV1wxduzY66+/frfddgOAe+65Z8mSJVv93rL5NhPrqpY4VNvT+vfv37t377/+9a+bN2+25W+99VZOTs6QIUOGDBmSk5Pz4osv6qk5c+bk5OTYEHLn3CeffKIfW534Z9Pmjm5h69qcN2/eWWed9eWXX3br1m2fffa54oorCgsLV6xY0Vz5tvSzuTYzqu255575+fl20dPLL7/83e9+d/Xq1cOHD0+n07Nnz9ZTL7zwAh8095V98MEH9fX1EydOZGQHgOXLl2/7e0ts57SEubenpVKpK6+88uabb542bdq4ceP69u27adOmhQsXvvbaa5dddllubm5ubu6pp576+OOP19fXjxw58t13333qqaf+4z/+o1evXtrIsGHDXnzxxd133720tPSFF16ora3VUzk5OStXrnz77beHDx+uhT179my1zZZt21vYujaHDx++fv36n//85yeffDIAvPrqq7W1tQcffPCuu+7aZPm29LO5e2VUKywsPPvssx944IH169fvv//+y5Yt++tf/zp69Og+ffr06dPn61//+t13311ZWTlkyJBXX3118eLFfFVzX9nAgQNzcnJmzpw5adKkdDo9a9asioqKbt26VVRUDB06dAd9m4l1VUvddNNN7d2HndoGDBgwduzYysrKd955Z86cOR9++GH37t0vueSSb33rW1zh61//enFx8SuvvPL888/X1NRMmTLl9NNPR8T//d//3Wuvvfbff//99tvvo48+evHFF//973/vu+++Z511Vn19/aGHHgoAJSUl8+fPf/rpp8eOHTt79uwRI0ZweGJzbf7tb38bOHCgOkU/+eSTuXPnnn766VY4brlXALBgwYLPP//8pJNOavywb7/99jvvvKNh4Fm2+eSTT3LPi4qKRo4c+fbbb7/wwgvz58/Pz8+/7LLLDjjggObKt+VJW2gzw0aNGtW3b9958+Y999xzK1euPP7447///e+z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pY5OGjJkyCuvvBK3Z82atXr16kGDBmV5li9ffuyxx2633XY/+MEPKonm8OHDZ8yYoT83FLjPnTv3tttuK+/fb7/99CY9+uijK1euPOSQQ+bNm3fIIYc8+eSTOjDZcsstlyxZ0tbWduCBB55yyimtra333nvvf/3Xf51++ukxQ61W+973vnfeeefdd999e+yxxwa6inVK9iGrm5Y9oKcQX+qcKMcDBRHT3y/Zc6ev/dnfPaXqhoDCIQXAxAwAlfIIJ9ahgmop4pdbFkzWSAZLHJgUP4aSicME0VlPsaF9YPXTCliEBPGgvZDNIilRkLEWswfGuKFjGEBTFolVvMu4vJHH0uw3djOAIOuZwN8N1QHf2eUH5CVXlHPMpgOu13V/FriJteRQW2VF8PJdsVKjGxDoTtexaSNoIzMElzJzjy5BU3W/liI9bs+xHNjlm1Oeu+gc8imO4NV/2CUpdF6WIWpubv7Qhz60TuWfcMIJRx111Lx587beeusf//jH48eP79OnDxFNmzatb9++I0eOXLly5cSJE1tbW3/4wx/WIBR71qxZ2267LRG9/fbbN99887777gtt5s41eQOkUaNGPfXUUytWrCCiU089tW/fvt/97nfjoenTp3/iE5+48MILp06d+rvf/W7bbbc988wzf/KTn/ztb39Dk3Xbbbd94QtfmDZt2m677dY111CVUhRNUmmC/pt4isalkASSi34th4gDbfPVc3a68M8UJ2UMAYBb4Fb2B/IZKMBPy0aUbWgbIDOR7tc8bJXGQYKIsKLpk+2hhFuwR646FW4505e0EkMjRblsth2ycwlAimRDe4/cIWxeSgwnQjm+Fiikoj2+EIFbzFzC9eDwGuCP836APD6nK9W1MFTsLDWpE/urSuAOitXUYTlVmavbLOm5i3Nwj2nVqlUrVqzI8H2jMfqzr7/rd395sTM5l8+b1fzX+55++ul1reKzn/3sXXfdteOOO/7973+/55579tprLyL66Ec/utdee02aNOkXv/jFxIkThw4d2q1bYuT33XffsGHDjjjiiBdffHHbbbd97rnndtttt1/84hd9+/aNGboG3FevXj1z5szdd9+9KIpnn322W7du06dPv/7664899ti99tpr7Nix7e3tO+6448CBA8ePHz906NDJkyc//vjj/fr1mzdv3lZbbYVF3Xrrreeee+7999+/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",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
]
},
"execution_count": 20,
"metadata": {
"filenames": {
"image/png": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/twodim/laplace_34_0.png",
"image/svg+xml": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/twodim/laplace_34_0.svg"
}
},
"output_type": "execute_result"
}
],
"source": [
"surface(x,y,U',color=:viridis,\n",
" title=\"Solution of Poisson's equation\", \n",
" xaxis=(L\"x\"),yaxis=(L\"y\"),zaxis=(L\"u(x,y)\"),\n",
" right_margin=3Plots.mm,camera=(70,50)) "
]
},
{
"cell_type": "markdown",
"id": "e17e6f49",
"metadata": {},
"source": [
"The error is a smooth function of $x$ and $y$. It must be zero on the boundary; otherwise, we have implemented boundary conditions incorrectly."
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "a89e849e",
"metadata": {
"tags": [
"hide-input"
]
},
"outputs": [
{
"data": {
"image/png": "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P6Rpevfu3c899xwA3HHHHW+99ZbP55PJZIcPH1YqleXl5QCwZs2anTt3Ll68GAA+/fTTNWvWAABN07G36JEjR8RicXZ2dqwPGO5oFIZctxkKRVweP4/L1WmHXtk0mYKhCE0zIqFgPLnsI4edFIRQPNLS0p5//vm1a9fef//9O3bseO6559LT0wHggw8+2LFjx/HjxwHgP/7jP77xjW90dXXV1dVFo9EHHngAAObPn79s2bKVK1euXLnyL3/5yyuvvMLj8QDg5ZdfXr58udfrNZvNzc3N3/nOdwDg/fff/+c//1leXu5wOHbs2PHrX/9a0G8KQALD3ev1trW1GY1G9nPKAD6fLxK5vH8mh8NRKhO40zGaENEoRTMMj8sdkJs2pwcAtBr5dLjP9ZNBABjnEqor4T6V035Qsnv99ddXrlx5/vz5t99+e/Xq1ezBb3zjG+zdNwAsW7bsq6++2rt375w5c+677z7RlQc827dv37lzZ2tr68cff7xo0SL24Ny5c8+ePbtr1665c+e+++67KpUKAB544IH09PT29vby8vKf//znRUVF/TuQqHDfvn37008/bTQa29ra/vSnP91zzz0DGjz00EMHDx5kf89kZGTU1NQkqCdookSoKADweQPfM+xyUK162Gozk8lPhmACwj0AAFK8c09dvTUXWr76Ms7G9Fhry6xatWrVqlX9j5hMJpPp6kKQGTNmzJgxY8CruFzuunXrBp8tLy/v+9//fv8jKpVqyJashIR7IBB45plntm3btnLlyt27d2/cuPHOO+8cPM3+97///eOPP56IDqBEYOubD67y6PUFAGBqp7fHsB8jVIqxbM0a4/H5AUAhG9dJ0HRGul3WpoY4G/efvpJEEhLu+/fvV6lUK1euBIC77rqLx+MdPnw49sEkJhqN2my2tLS0RPQBTTiKogCAyxkY7uxyUJlkWswatNo9AKDTjn2Uj6JpfyBAEIQch2VSV+bMWYp0fZyNOX/8c0I7kyAJCff29vb+Hz1MJlNbW9vgZi+++OLPfvYzhmFee+21J598cshTmc3mqqoq9uuysjKxGD8pT5nL4T5ow+grIyFTH+4Mw9idXgDQacb+aNfj8zMMo5BJp8MjBJQgYqVKrFTF2ThJJ/gmJNz9fr+w31RosVjs8w0s5PT222/n5uYSBHHo0KG777579uzZsecM/e3du7e6upr9+oMPPuj/O2NUSJKMRqP44zoqJEkCAEVRXq8XAHx+PwAwNMN+269ZEAAoKuz1UlPRzatsDm80SsmlonA4GA6PsbyMxWYDALFQOOA/M34D/t1Q/Px+P03TExKmfD5fdGOvQUtIuOv1eqfTGfvW4XAMqJgDAOxsfABYsWLFypUrP//88yHD/bHHHnv99dfH3yUOhyMWizHcR4VdtcHlctlipP5QGAAEAn6sNimLohkAUKuUU36DU9vUBwD5OfoBPRwVf2c3AKSnacd8kgH/bih+BEFIpdIpfyOlhoSEXUVFRXV1dTAYBACfz3fhwoWKiorrtDebzTgVcvpjaAYAiGsXB7Hb0fGmx3Z0nT1WABhnwWGnxwMAmmF2I0EoWSQk3OfMmbNgwYJNmzYdP378ySefXLZsWXFxMQD88Y9//Pa3vw0APp/vRz/60a5du/bv3//kk0+2tbXdd999iegJmkA0QwMAh7jmPROl2Ck0U/+RyGx1+cmQTCoaz6RMr5+MRKIioXC4HWLjwS6RHWdZSoTGKVE/k//85z/VavUvfvGLzMzMDz/8kD1YUFCwYMECABAIBGKx+J133vnNb34jl8srKyv1+nifXKNphQACAKbDTLFLTV0AYMobOAA4KjanEwC0qnF9jgxFQwAQjobGcxKExilRi5i0Wu3vfve7AQfvuOOOO+64AwAEAsFrr72WoEujycSWcKHpKY53nz/Y0W3jcDjFpnHVHLY6nACg00x9bUuExmnqP02jZMHm94CRdfYZNT2+4unjV9vQyTCMMTddLBp7HcdINOr0eDkEkaaOd5IcQtMWhjuKFxvrA27RuVwOh0NQNE1N3RCz1xdoaOkhCGLmjNzxnMdsszMMo1EpedyBC7UQSjpYFRLFa8D2AjEioYAMhAKBsEw6NdOKT59romi6qCBDpRxXwYAeqw0AMnS4ZDr1OdpazbUX42xMU1O8gGNsMNxRvDgEAQD0oHCXiIVkIBQIhqYk3HvMjs4eG5/Pm1duHM95QuGw0+3hcDj64Yt0o5Rha2w4/4+P4mzMYLij1EZwOADADBp+kYgFAOAPhCZ/q45wJHryTAMAzC7NG89oOwB0my0Mw+jTtIMro40WW36HM6gID5o+NPkFpWu/Hmdj4p+fJrQzCYLhjuLF5XAAYPDYulIuBbC53H7IHupliXSist7rC2jV8rKicV2bYZiOXjMAZOvTx98rAU8Q+xNNT2lFM9KKBtbaHQ5n0zMJ7UyC4ANVNKxINBL7E66UDKMGfURVq2QA4HQPLB+UaHVN3W1dFj6Pe+visnEWljDbHcFQSCoR4zwZlDIw3NGwKJqK/QkA7KbA1KBZjxqVDABsjkktkmWxuSvPNQHAkoWlinGXkm/r6gGAvMyBmw4jlLww3FG82AmC0UF37kq5hH2mytZSnwR2p/fgsfMUTZcWZo+zkgwAWBwOl9cr4POzJmJMBqFpAsMdxYvdYC8y1JZjBTnpANDc3jcJ3XC4fPuPngtHogU56QvnFo7zbAxAY1snAJhys7lYNBSlEHw3o3jxuFwCIBqNDp7qbswzAEBbpyXR1bLsTu++I2dD4UhuVtrXFpWNvxRlj9ni9fvFImGOAasboZSC4Y6GxU7pi+2rRxAEn89nAMKRgTfvGpVMrZSFwpG2Lmvi+tPWadl7uDoUjuRkpi27aSaHM95kj0SjDW0dAFCUl4u1/lGKwTc0Ghafx4/9yRIJBQAQDA1R77BsRjYAnK9tS8RuwhRFnzrbeORkTTRKFRVk3HZz+YRkcV1LWygcVivkGemTP0cfocTCcEejIBYKASAwVLib8gwKmdjtJeuauif2om4P+b+Hqi41dnE4nMXzim5ZUDL+e3YAsDqc3WYLl8Mpn1E49fuMIDTRcBETGgV2C4tgcIhwJwhiwZzCQ8cvVJ1vTtPIddoJ2ForEqUu1rXXNHRSFK2QS25dXDaejTj6C0ciNY3NAFCUnyvFXddvPEGXy2+1xNk4ER9GJwGGOxoFiUgEAP5AYMi/zclMKynMrmvqOvDF+TW3zWPnv49NlKIaW3ov1LUHgmEAKCrIWDS3aPyFAVg0TVdfqg+Gw2qFIi8rc0LOiZJL6+FDp9/5v3E2psLhhHYmQTDc0SjIpBIA8JLkcA0WzS0MBEPtXdbPDlcvmlc0hn2RAsFwU2tvbWNXMBQGAJ1WuXCOaUI+B8TUNLU43R6RUDC3dAYOyNyYxCq1Nu7yA8SxkwntTIJguKNRkEkkAODzDxvuBEHcurjsKNS2d1mPnbrU3mWtKDfGU4k3HIn2mp2tnebOHhu7r1OaRjG7NC8nc4IL8LZ0dnWbLVwut6KsVCjA8i83qPzblufftjzOxtwtWxPamQTBcEejIODzhQJBKBwmA0GJeOgCvxwO57aby5vb+k6dbezssXX22FQKaW6WTq2SKuVSiVjAbrsaCIVDoYjbSzpcPrvTY3N42ZFNgiBys9JKTNkZ+onf6661q6ehrYMAmFNcpJCNq/g7QtMchjsaHZVcZrY7nB7PcOHOMuUbMvTq85fa27osLo/f5fFf/7QcDpGepsrO0JryDOMs3jucpo7OpvZOAqCsyJSu1STiEghNHxjuaHTUSqXZ7nC4PSNWYpGIhTdVzFg8r6jH7OyzOt0e0uMlA6HLz6aEAr5YJJBJRGqVTKOSpWuVE/W8dDCGYepa2tp7egmCmDWjMBNntaMbAIY7Gh2NUg4ATne8NcIIgsgyaLIMU3anHIlGz9c3Wh1ODoczp7hIn4YbLaEbAoY7Gh25VCrg88lg0EeS7PPV6czhdp+vbwqGQnw+b15piUapmOoeITRJcIUqGh2CINgB6z6bfar7cj00Tde1tJ0+XxMMhVRy+ZJ5czDZ0Q0Fwx2NWoYuDQA6e82JrgE5ZnaX+/iZc23dPUAQhXk5i+eUi4TCqe4UurG0t7evW7fOZDKtW7eura1tcINIJPKTn/ykpKTkpptu2rVrV+z4mTNnVq5cWVRU9MQTTzidTvbg6dOnf/rTn951112vvvpq/5PU1dWtXbu2sLDwW9/6Vm9vb/+/wnBHo6ZVKRVSaSgcbu/pHbn15PL6yaqaS6cv1PgDAZlEcvPcWYW5OeOvDIzQaN1///0mk+nIkSMzZsz45je/ObjBm2++eeTIkd27d//85z//9re/3dzcDACBQGDt2rXr1q07ePBgMBj83ve+xzY+e/YsRVECgeDChQuxM9A0fc8999x0002HDx9Wq9WPPPLINRdgprHXX3/95ZdfnpBT+Xw+iqIm5FQ3jqqqKgCoqKgY/Fc2h3PP0eP7jp8gg8HJ79iQPD5/dW3dnqPH9xw9vv/Lk82dXRRNT0lPTp06BQALFy6ckqsnNa/XS0/R/7XrUKvVDodjVC+prKyUy+XBYJBhmHA4rFKpTp48OaBNVlbWnj172K8ffPDBn/3sZwzDbNmyZdasWezBzs5OgUBgsVhiL3nllVfWr18f+3bfvn2ZmZnsv5jb7RYKhQ0NDbG/xQeqaCy0alWGLq3XarvU3FpRVjK1nbE7Xa3dPTanCwC4HE5OhsGYkyXg80d8IbphXdzyty//6804G0eDwdGev6ampry8XCgUAgCfz589e3ZNTc3ixYtjDVwuV3d39/z589lv58+ff/ToUfaFsYPZ2dkajaahoUGnG3rybk1NTUVFBfvBVKFQFBUV1dTUFBUVsX+L4Y7GqMSYb3U6LXZHY1tHUX7u5HcgGAr3WCzdZitbyIzL5WQb9MbsLCwqgCbHvn37woNqipWUlBQWFlqtVqXyakEklUplsVxThNJmswFArI1KpbJarQAw4gv7u35jDHc0RkKBoLzQdK6+sbmzKxgOlxeZJmdoOxgKme2OPqvd5fGwlVhFAkFupiEnw8Du8orQiMoferj8oYfjbPyyRqPRXF2oodFozGYzj8f761//6vP5BjR+6KGHCgsLVSqV3391VbbH41GrrymnoVKpAMDv9wsEAgDwer1sA5VKFXuIOuQLB5yktrZ2uMb4w4DGzqBL43K5Z+vqu80WH0mWGAvUiomptz4ATdNOj9fuclsdTu+Vnxkuh6PTarL0ujSVCh+ZooRyOByDQ/Zvf/vbcO2NRmNDQwNN0xwOh2GYhoYGo9HYv4FWq1UqlXV1dTfffDMA1NfXsw2MRuOWLVvYNk6n02q1DnjhgKv8+c9/Zr8Oh8Otra39G+NsGTQuOo160exykUDg9vq+OnehurbO6nTSE7G5QSAYNNsdDW0dp85fPHDi1OkLNS2dXV6/n8vl6tO0c0pmrLhp4dySGTq1GpMdTTe33nqrSCTavHkzAGzZsoXL5S5fvhwADh8+/PbbbwMAQRAPP/zwf//3f1MU1dbWtn37dnauy/r166urq48dOwYAv/3tb5csWZKbmwsAoVDI6XQGg8FwOOx0OkmSBIC1a9dardadO3cCwLvvvpubmxsbrwe8c0fjp5TJli6Y19rd09rVY7Y7zHYHn8fTqpRKuUwhk0nFIqFAcJ38pWk6HIkGQqFgKBQIhvyBgD8Q8PnJKEXF2hAACplUo1LqVCq1UoGbWaNpjsvlbtmy5eGHH/7xj38slUr//ve/83g8AKirq9u/f/8PfvADAHjllVcefPBBnU5H0/RPf/rTRYsWAYBWq/3ggw+++c1v0jSdnZ390UcfsSfcunXrj370I/Zrk8m0cePGX/3qV2KxeMuWLd/5znc2btyo0Wg+/PDD/n0gmGm8g9Qbb7zhdrtff/318Z/K7/eLxWIMhVE5c+bM/PnzKyoq2DmRIwqFI119ZrPN7vFfUwOSIAgBn8flcHn9xsQpmqJpOhKJ9g/x/oQCvlwqVcplSrlMrVAk0Xj66dOnFy1atHDhQnZOJIqfz+eTSqXT7aOYRqNpbm6+ztj3dXi9Xrn8emOVJEkKBALetW9vhmF8Pt/1XzjiVZLmBwZNf0IB35SbbcrNJoNBp9vj9vm9Pn8gGAxFIqFwBCAy5Ks4BCHg80VCoUgoEIuEErFYKhbJJBKcy4hSwIgBLRmqQBNBEPEn+3BXwXBHE08iEklEoiz95W8ZhglHIhRFR6lorA2Hw+FwOAI+n8dNVKVfhG5kGO4o4QiCwLnnCE0yHINGCKEUhOGOEEIpCIdlEEI3nOb//d8Lf/kgzsbUoBoDSQHDHSF0w/F1d3cePRpnY2aY2brTXALDva+vz2azlZaWcoeZDuH3+5ubm/Pz8xUK3CIHITR5THet1RQXx9n4P+65J6GdSZBEhfu//du/bd68OSsry+Px7N27N1aFMmb37t2PP/54QUFBc3Pz22+//dBDDyWoJwghNIAsM0uWmRVnYyI5Fz8mpNOnTp3661//ev78+erq6vvvv//ll18e0CAajT799NPvvvvuqVOndu7c+f3vf39wcTWEEEJjlpBw37p167333mswGABg06ZNO3fuZMvcxBw7diwcDn/jG98AgCVLlmRnZ+/ZsycRPUEIoRtTQoZl2tvbY8XJ8vPzaZru7u7uPzLT0dFRUFAQq/RiMpna29uHPJXZbI4VNikrKxOLxYnoMLqOxsbG1atXT3UvkonH45nqLiCUmHD3+/0ikYj9msvlCgSCAaMufr9f2G83erFYPNywzN69e6urq9mvP/jgA5PJNLYukSQZjUaxcNioZGRkvPHGGy+//PKBAwemui/JR6PReL3eqe5FkvH7/TRNT0jhMD6fH0uhG1NCwl2v18c2EyFJMhgMskM0QzYAALvdPqBBzGOPPTYhVSE5HA5WhRwtuVz++OOPxzZpRPELBoO33HLLqGo/IQAgCGIaVoVMUgkJ94qKCrZ+PAB8+eWX2dnZer2+f4O5c+fW19c7nU61Wh2JRCorK1977bVE9CTmd7/73YoVK2666aaEXiX1vP/++2vWrFm4cOFUdyTJvPLKKxkZGf33ZkPx+PWvf33vvffOmzdvqjuSChJyJ/voo4+eO3fuV7/61aFDh1544YVnn32WvWV+9NFHf/vb3wKA0Wi88847N27c+MUXXzz11FOlpaWJjo+vvvqqu7s7oZdISSdPnuzp6ZnqXiSfEydO9Pb2TnUvks+XX37Z19c31b1IEQkJd7Va/fnnn1+4cOG//uu/Nm7c+OMf/5g9vnDhwthj1b/+9a+FhYWvvvqqXC7/5JNPEtENhBC6YSVqEdOsWbPY/QP7e+6552JfKxSKN998M0FXRwihGx0zjX3++ecCrAOOEBq9559/fqKC6Be/+AVJkhN1tkkzrfdQRQghNDY4NRAhhFIQhjtCCKUgDHeEEEpBGO4IIZSCbridmCiKqqurq6+vLysrKykpmeruTGu1tbV79+5Vq9UbNmyQSqVT3Z3kwL7B6urqysvLi+PeDgI5nc4DBw50dHTk5OTcc889N3hZmAlxw925r1q16vbbb9+0adPHH3881X2Z1g4cOLBkyRKz2bxjx45bbrklGAxOdY+Sw2233bZmzZpNmzZ9+umnU92XZFJRUbFlyxaLxfI///M/FRUVbrd7qnuU9G64O/dPPvlEoVCsW7duqjsy3b3yyiuvvvrqs88+S9P0ggULtm/f/sgjj0x1p5LA7t27FQrF17/+9anuSJI5deqUTqcDAIqiysvLd+zY8cQTT0x1p5LbDXfnjvu1xiMQCHzxxRd33303AHA4nLvuumvfvn1T3ankgG+wsWGTHa4UCccCruOH/4JoCGzRq4yMDPbbjIwMLB+GJse2bdtsNtu999471R1Jeik4LLNhw4Zjx44NOHjXXXe9//77U9KfZMQW1I6tXmYYBktso0lw5MiRZ5999uOPP1apVFPdl6SXguH+3nvvhcPhAQfx4fuoGAwGgiD6+vry8/MBoK+vL3YXj1CCnDhxYsOGDVu3br3lllumui+pIAWHZVQqVfogOBI6KmKxeOnSpbt27QIAmqZ37969Zs2aqe4USmXV1dXr1q3785//vGLFiqnuS4q44QqHvffeewcOHPjyyy81Gk1JScn3vve92267bao7NR0dPHjw/vvv37hxY21tbXd398mTJ/HTTzzeeeedQ4cOHTt2TKfTFRcXP/vss7feeutUdyoJ6PV6mUw2f/589tt169Y9+OCDU9ulZHfDhXtVVVVLS0vs24ULF7IjD2iwurq6zz77TKPR3HfffbiIKU6VlZWtra2xbxctWpSXlzeF/UkWO3bsoCgq9m1paWl5efkU9icF3HDhjhBCN4IUHHNHCCGE4Y4QQikIwx0hhFIQhjtCCKUgDHeEEEpBGO4IIZSCMNwRQigFYbgjhFAKwnBHCKEUhOGOEEIpCMMdIYRSUArWc0epzel0btu2DQBcLldFRUVLS8uZM2fefffdqe4XQtMLhjtKMu+9995LL70EAGq1etu2bUaj8b333pvqTiE07WBVSJRkqqqq2KrfBIHvXoSGhWPuKMmwyb5///5Vq1ZNdV8Qmr4w3FFSOnDgQCzcq6qqprYzCE1DGO4omWzfvn39+vUA8I9//MNoNALA/v37VSrVVPcLoWkHH6iiZGI0Go1G45tvvrlv3z72OapKpTKZTFPdL4SmHXwkhRBCKQiHZRBCKAVhuCOEUArCcEcIoRSE4Y4QQikIwx0hhFIQhjtCCKUgDHeEEEpBGO4IIZSCMNwRQigFYbgjhFAKwnBHCKEUhOGOEEIpCMMdIYRSEIY7QgilIAx3hBBKQRjuCCGUgjDcEUIoBWG4I4RQCsJwRwihFIThjhBCKQjDHSGEUhCGO0IIpaD/D/+fLcB9KqnfAAAAAElFTkSuQmCC",
"image/svg+xml": [
"\n",
"\n"
],
"text/html": [
"\n",
"\n"
]
},
"execution_count": 21,
"metadata": {
"filenames": {
"image/png": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/twodim/laplace_36_0.png",
"image/svg+xml": "/Users/driscoll/repos/fnc-julia/_build/jupyter_execute/twodim/laplace_36_0.svg"
}
},
"output_type": "execute_result"
}
],
"source": [
"error = [g(x,y) for x in x, y in y] - U;\n",
"M = maximum(abs,error)\n",
"contour(x,y,error',levels=17,aspect_ratio=1,\n",
" clims=(-M,M),color=:redsblues,colorbar=:bottom,\n",
" title=\"Error\",xaxis=(L\"x\"),yaxis=(L\"y\"),\n",
" right_margin=7Plots.mm)\n",
"plot!([0,1,1,0,0],[0,0,2,2,0],l=(2,:black))"
]
},
{
"cell_type": "markdown",
"id": "a035e288",
"metadata": {},
"source": [
"```{raw} html\n",
"
\n",
"```\n",
"\n",
"```{raw} latex\n",
"%%end demo%%\n",
"```\n",
"\n",
"## Accuracy and efficiency\n",
"\n",
"In {numref}`Function {number} ` we used second-order finite differences for the discretization. Let's simplify the discussion by assuming that $m=n$. The error in the solution can be expected to be $O(n^{-2})$. \n",
"\n",
"The matrix $\\mathbf{A}$ has size $N=O(n^2)$. The upper and lower bandwidths of the matrix $\\mathbf{A}$ are both $O(n)$. It can be shown that the matrix is symmetric and negative definite, so sparse Cholesky factorization can be applied to $-\\mathbf{A}$, taking $O(n^2N)=O(n^4)$ operations. \n",
"\n",
"As $n$ increases, the truncation error decreases while the operation count increases. The growth in operations is faster than the corresponding decrease in error, making it costly to get high accuracy. Suppose we have fixed running time $T$ at our disposal. Then $n=O(T^{1/4})$, and the convergence is $O(1/\\sqrt{T})$. For example, reduction of the error by a factor of 10 requires 100 times the computational effort. \n",
"\n",
"If we chose a Chebyshev spectral discretization instead, the calculus changes. Provided that the solution is smooth, we expect convergence at a rate $K^{-n}$ for some $K>1$. However, the system matrix is no longer sparse nor symmetric, and solution by LU factorization takes $O(N^3)=O(n^6)$ flops. Hence as a function of running time $T$, we expect a convergence rate on the order of $K^{-T^{1/6}}$. It's not simple to compare this directly to the finite-difference case. In the long run, the spectral method will be much more efficient, but if the accuracy requirement is undemanding, second-order finite differences may be faster. For the specific case of Poisson's equation on a rectangle, there are specialized fast solution methods that are beyond the scope of this discussion.\n",
"\n",
"\n",
"## Exercises\n",
"\n",
"1. ✍ Using general $2\\times 2$ matrices, verify identities 4 and 6 in {numref}`Theorem {number} `. \n",
"\n",
" (problem-laplace-symmetry)=\n",
"2. ✍ Prove that the matrix $\\mathbf{A}$ defined in {eq}`poiskronpde` is symmetric if $\\mathbf{D}_{xx}$ and $\\mathbf{D}_{yy}$ are symmetric. \n",
"\n",
" (problem-laplace-usage)=\n",
"3. ⌨ Use {numref}`Function {number} ` to solve the following problems on $[0,1]\\times[0,1]$ using $m=n=50$. In each case, make a plot of the solution and a plot of the error. \n",
"\n",
" **(a)** $u_{xx}+u_{yy} = 2x^2[x^2(x-1)+(10x-6)(y^2-y)]$, with $u=0$ on the boundary. \n",
" \n",
" Solution: $u(x,y) = x^4(1-x)y(1-y)$.\n",
" \n",
" **(b)** $u_{xx}+u_{yy} = \\left(16 x^2 + (1-4 y)^2\\right) \\sinh (4 x y-x)$, with $u=\\sinh(4xy-x)$ on the boundary. \n",
" \n",
" Solution: $u(x,y) = \\sin(4\\pi x))$.\n",
" \n",
" **(c)** $u_{xx}+u_{yy} = -(20\\pi^2) \\sin (4\\pi x) \\cos (2\\pi y)$, with $u = \\sin (4\\pi x) \\cos (2\\pi y)$ on the boundary. \n",
" \n",
" Solution: $u(x,y) = \\sin (4\\pi x) \\cos (2\\pi y)$.\n",
"\n",
"4. ⌨ For each case in Exercise 3, solve the problem using {numref}`Function {number} ` with $m=n=20,30,40,\\ldots,120$. For each numerical solution compute the maximum absolute error on the grid. On a log-log plot, compare the convergence of the error as a function of $n$ to theoretical second-order accuracy. \n",
"\n",
"5. ⌨ Copy {numref}`Function {number} ` to a new function named `poischeb`, and modify it to use a Chebyshev discretization rather than finite differences. For each item in [Exercise 3](problem-laplace-usage), solve the problem using `poischeb` for $m=n=10,15,20,\\ldots,40$. For each numerical solution compute the maximum absolute error on the grid. Show the convergence of the error as a function of $n$ on a log-linear plot.\n",
"\n",
"6. ⌨ Sometimes boundary conditions are specified using a piecewise definition, with a different formula for each side of the domain. Use {numref}`Function {number} ` with $m=n=60$ to solve the Laplace equation on $[0,1]^2$ with boundary conditions \n",
"\n",
" $$\n",
" u(0,y) = u(1,y) \\equiv 0, \\quad u(x,0) = \\sin(3\\pi x), \\quad u(x,1) = e^{2x}(x-x^2).\n",
" $$\n",
"\n",
" Make a surface plot of your numerical solution."
]
}
],
"metadata": {
"jupytext": {
"cell_metadata_filter": "-all",
"formats": "md:myst",
"text_representation": {
"extension": ".md",
"format_name": "myst",
"format_version": 0.13,
"jupytext_version": "1.11.5"
}
},
"kernelspec": {
"display_name": "Julia fastload",
"language": "julia",
"name": "julia-fast"
},
"language_info": {
"file_extension": ".jl",
"mimetype": "application/julia",
"name": "julia",
"version": "1.7.1"
},
"source_map": [
16,
20,
94,
98,
100,
104,
107,
114,
116,
221,
223,
227,
232,
236,
238,
242,
245,
249,
251,
255,
258,
262,
268,
272,
276,
281,
284,
288,
290,
294,
297,
376,
380,
384,
388,
394,
398,
407
]
},
"nbformat": 4,
"nbformat_minor": 5
}