From 5a69adf83caa7bdf375ffa163de2f7b480d32f25 Mon Sep 17 00:00:00 2001 From: Kyle Niemeyer Date: Tue, 10 Mar 2020 11:19:26 -0700 Subject: [PATCH] updated elliptic and some work on parabolic --- _build/images/parabolic-explicit-stencil.png | Bin 0 -> 82409 bytes _build/pdes/elliptic.html | 326 ++++++++++-------- content/images/parabolic-explicit-stencil.png | Bin 0 -> 82409 bytes content/pdes/elliptic.ipynb | 53 ++- content/pdes/parabolic.ipynb | 72 ++++ 5 files changed, 292 insertions(+), 159 deletions(-) create mode 100644 _build/images/parabolic-explicit-stencil.png create mode 100644 content/images/parabolic-explicit-stencil.png create mode 100644 content/pdes/parabolic.ipynb diff --git a/_build/images/parabolic-explicit-stencil.png b/_build/images/parabolic-explicit-stencil.png new file mode 100644 index 0000000000000000000000000000000000000000..f933565810ab23c6b0db80679404335fa7b87dc8 GIT binary patch literal 82409 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

%d zYm^Q)Q2O|^K>NUymEoKw=_HJaxWGX%dQ~&2BiOS+a=HAOD$w(L5JI-t^ah~0q7NRA zorWf$$@vbUn6u?yJ8vHnLkeOF;tF_nGHgwz_oU6JkOM#Y^;*BD5)dh-Q(H;yCYYr1 zYdEa*} z%z=HbmZZ=l8~%1ZQL^zxYTVlUeavB~x7hq8KPT=z8tpOmAi(f$CD%x1^IRa{?gF8P zrb>_x6uu_E=Kl}s-a8QM|N9%y6=g(b$|%Z~kyR+Jl*rz)OER;!j7zDcLMeMCTgcwy zEu!qbLu7@Nz3=n7Xnnr#&+m8N|K0Z=A0NG4*X#8h=bYy`kMlU^xkX<&YB>*FOvCZ- zkXK{hu95QoK4=JdUkaguyJiVQ@I(*&=f6l&>#4mo7g)H6xU0lx2YAcnS$yyfuGFz} z2`QfZyo!K1!6&z|Z2`V3eTTyJQpji~P?Dki#rsx2sTO|-ccEOHbFR1pV{p8CvWo2n zt^M<g%ndxcC>!y#^*` zdf_I4(($IjsBe)!{yBJ6X)-KWEF2CP>TMg&M{PZL-mwJG!(|6be%B^qSX*rzrKj2w zWTAp=i7~W#PPniha#Dh?i}lVdeSCCoWa)Fw8xi4Nx~%pZTLN?@Yk`>Q;$aU zmdX1tjUl{28t3T__NLk1LpZp%aW3$67f2BwF5n-P`+CB2sNADJ&w_el*|V>q`Ce_K zhjeGE`qIj?mP>@p6x}|Ry8cj;dTv7~ z?-n;97w*yQDoZgxbt9^3ayi&7`=mKl9D9tS*qYG>R~tS9sopTSs%6knTq1+rB*eTk z)r|a*-n|6b5Dimw$g6Stmh+)b-s>{FMs}!tV z{`X7&B%N^7YVqYPksCxg%nfJ_onIQ%KTJMTAbkphcEBOlpXo~1S$vt$$t-Pf(a}2j zj8pMa4v|`SG4uwM57>gU@Yvvke(N>y+0p0(8l{wlr0YQ^caBP)KVsrYWwiQxJ+^sh?d z@nwuT>t^1TrpY7ejYn=bVzI6#Z`zV)(LKL*hC?kmw$5%Ju^Aug0|DEQqub ^nTL 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 literal 0 HcmV?d00001 diff --git a/_build/pdes/elliptic.html b/_build/pdes/elliptic.html index b9f4f7f..e7127b5 100644 --- a/_build/pdes/elliptic.html +++ b/_build/pdes/elliptic.html @@ -11,7 +11,7 @@ next_page: url: /quizzes/quiz2-IVPs.html suffix: .ipynb -search: u j equation partial x y points boundary begin end frac where grid point delta using heat example align n laplaces solve figure center values solution method us index formula k transfer right value d square recursion well bmatrix row problems temperature style lets conditions mathbf dimensional column gauss seidel nabla equations img src images png alt width px figcaptionfigure figcaption nine text unknowns matrix elliptic pde left step difference h very vector b mapping set into columns m ghost jacobi shows also finite differences central used direction five stencil consider td above major only need array accurate vdots size +search: u j equation x begin end partial y points boundary n frac where k bmatrix using grid point delta mathbf vdots heat solve values b method example align solution laplaces right figure center us value index formula transfer text xi d square recursion well quad row old problems left temperature style lets conditions dimensional column jacobi nabla equations img src images png alt width px figcaptionfigure difference figcaption nine unknowns very matrix cdots elliptic pde step h vector mapping into columns m ghost iterative gauss seidel shows also finite differences central used direction five stencil consider td above system major comment: "***PROGRAMMATICALLY GENERATED, DO NOT EDIT. SEE ORIGINAL FILES IN /content***" --- @@ -141,18 +141,18 @@

Example: heat transfer in a sq
-
clear all; clc
-
-A = [
-1 0 0 0  0 0 0 0 0;
-0 1 0 0  0 0 0 0 0;
-0 0 1 0  0 0 0 0 0;
-0 0 0 1  0 0 0 0 0;
-0 1 0 1 -4 1 0 1 0;
-0 0 0 0  0 1 0 0 0;
-0 0 0 0  0 0 1 0 0;
-0 0 0 0  0 0 0 1 0;
-0 0 0 0  0 0 0 0 1];
+
clear all; clc
+
+A = [
+1 0 0 0  0 0 0 0 0;
+0 1 0 0  0 0 0 0 0;
+0 0 1 0  0 0 0 0 0;
+0 0 0 1  0 0 0 0 0;
+0 1 0 1 -4 1 0 1 0;
+0 0 0 0  0 1 0 0 0;
+0 0 0 0  0 0 1 0 0;
+0 0 0 0  0 0 0 1 0;
+0 0 0 0  0 0 0 0 1];
 b = [100; 100; 100; 100; 0; 100; 100; 0; 100];
 
 % solve system of linear equations
@@ -435,7 +435,7 @@ 

Example: heat transfer
-
clear; clc; close all
+
clear; clc; close all
 
 h = 0.1;
 x = [0 : h : 1]; n = length(x);
@@ -449,43 +449,43 @@ 

Example: heat transfer u_left = 100; u_right = 100; u_bottom = 100; -u_top = 0; +u_top = 0; -for j = 1 : m - for i = 1 : n +for j = 1 : m + for i = 1 : n % for convenience we calculate all the indices once kij = (j-1)*n + i; kim1j = (j-1)*n + i - 1; kip1j = (j-1)*n + i + 1; kijm1 = (j-2)*n + i; - kijp1 = j*n + i; - - if i == 1 + kijp1 = j*n + i; + + if i == 1 % this is the left boundary A(kij, kij) = 1; - b(kij) = u_left; - elseif i == n + b(kij) = u_left; + elseif i == n % right boundary A(kij, kij) = 1; - b(kij) = u_right; - elseif j == 1 + b(kij) = u_right; + elseif j == 1 % bottom boundary A(kij, kij) = 1; - b(kij) = u_bottom; - elseif j == m + b(kij) = u_bottom; + elseif j == m % top boundary A(kij, kij) = 1; - b(kij) = u_top; - else - % these are the coefficients for the interior points, + b(kij) = u_top; + else + % these are the coefficients for the interior points, % based on the recursion formula A(kij, kim1j) = 1; A(kij, kip1j) = 1; A(kij, kijm1) = 1; A(kij, kijp1) = 1; - A(kij, kij) = -4; - end - end + A(kij, kij) = -4; + end + end end u = A \ b; @@ -565,7 +565,7 @@

Neumann (derivative) boundary
-
clear; clc; close all
+
clear; clc; close all
 
 h = 0.1;
 x = [0 : h : 1]; n = length(x);
@@ -578,45 +578,45 @@ 

Neumann (derivative) boundary u_left = 100; u_right = 100; -u_bottom = 0; +u_bottom = 0; -for j = 1 : m - for i = 1 : n +for j = 1 : m + for i = 1 : n % for convenience we calculate all the indices once kij = (j-1)*n + i; kim1j = (j-1)*n + i - 1; kip1j = (j-1)*n + i + 1; kijm1 = (j-2)*n + i; - kijp1 = j*n + i; - - if i == 1 + kijp1 = j*n + i; + + if i == 1 % this is the left boundary A(kij, kij) = 1; - b(kij) = u_left; - elseif i == n + b(kij) = u_left; + elseif i == n % right boundary A(kij, kij) = 1; - b(kij) = u_right; - elseif j == 1 + b(kij) = u_right; + elseif j == 1 % bottom boundary A(kij, kij) = 1; - b(kij) = u_bottom; - elseif j == m + b(kij) = u_bottom; + elseif j == m % top boundary, using the ghost node + recursion formula A(kij, kim1j) = 1; A(kij, kip1j) = 1; A(kij, kijm1) = 2; - A(kij, kij) = -4; - else - % these are the coefficients for the interior points, + A(kij, kij) = -4; + else + % these are the coefficients for the interior points, % based on the recursion formula A(kij, kim1j) = 1; A(kij, kip1j) = 1; A(kij, kijm1) = 1; A(kij, kijp1) = 1; - A(kij, kij) = -4; - end - end + A(kij, kij) = -4; + end + end end u = A \ b; @@ -689,43 +689,43 @@

Iterative solutions for ( u_left = 100; u_right = 100; u_bottom = 100; -u_top = 0; +u_top = 0; -for j = 1 : m - for i = 1 : n +for j = 1 : m + for i = 1 : n % for convenience we calculate all the indices once kij = (j-1)*n + i; kim1j = (j-1)*n + i - 1; kip1j = (j-1)*n + i + 1; kijm1 = (j-2)*n + i; - kijp1 = j*n + i; - - if i == 1 + kijp1 = j*n + i; + + if i == 1 % this is the left boundary A(kij, kij) = 1; - b(kij) = u_left; - elseif i == n + b(kij) = u_left; + elseif i == n % right boundary A(kij, kij) = 1; - b(kij) = u_right; - elseif j == 1 + b(kij) = u_right; + elseif j == 1 % bottom boundary A(kij, kij) = 1; - b(kij) = u_bottom; - elseif j == m + b(kij) = u_bottom; + elseif j == m % top boundary A(kij, kij) = 1; - b(kij) = u_top; - else - % these are the coefficients for the interior points, + b(kij) = u_top; + else + % these are the coefficients for the interior points, % based on the recursion formula A(kij, kim1j) = 1; A(kij, kip1j) = 1; A(kij, kijm1) = 1; A(kij, kijp1) = 1; - A(kij, kij) = -4; - end - end + A(kij, kij) = -4; + end + end end u = A \ b; @@ -778,21 +778,21 @@

Iterative solutions for (
-
clear all; clc;
+
clear all; clc;
 
 step_sizes = [0.1, 0.05, 0.025, 0.02, 0.0125, 0.01];
 
 n = length(step_sizes);
-nums = zeros(n,1); times = zeros(n,1);
+nums = zeros(n,1); times = zeros(n,1);
 
-for i = 1 : n
-    [times(i), nums(i)] = heat_equation(step_sizes(i));
-end
+for i = 1 : n
+    [times(i), nums(i)] = heat_equation(step_sizes(i));
+end
 
-loglog(nums, times, '-o')
+loglog(nums, times, '-o')
 xlabel('Number of unknowns'); 
 ylabel('Time for direct solution (sec)')
-hold on
+hold on
 
 x = nums(3:end);
 n2 = x.^2 * (times(3) / x(1)^2);
@@ -848,7 +848,30 @@ 

Iterative solutions for (
-

Jacobi method

+

Jacobi method

The Jacobi method essentially works by starting with an initial guess to the solution, then using the recursion formula to solve for values at each point, then repeating this until the values converge (i.e., stop changing).

+

An algorithm we can use to solve Laplace's equation:

+
    +
  1. Set some initial guess for all unknowns: $u_{i,j}^{\text{old}}$
  2. +
  3. Set the boundary values
  4. +
  5. For each point in the interior, use the recursion formula to solve for new values based on old values at the surrounding points: $u_{i,j} = \left( u_{i+1,j}^{\text{old}} + u_{i-1,j}^{\text{old}} + u_{i,j+1}^{\text{old}} + u_{i,j-1}^{\text{old}} \right)/4$.
  6. +
  7. Check for convergence: is $\epsilon$ less than some tolerance, such as $10^{-6}$? Where $\epsilon = \max \left| u_{i,j} - u_{i,j}^{\text{old}} \right|$. If no, then return to step 2 and repeat.
  8. +
+

More formally, if we have a system $A \mathbf{x} = \mathbf{b}$, where +\begin{equation} +A = \begin{bmatrix} +a_{11} & a_{12} & \cdots & a_{1n} \\ +a_{21} & a_{22} & \cdots & a_{2n} \\ +\vdots & \vdots & \ddots & \vdots \\ +a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix} +\quad \mathbf{x} = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix} +\quad \mathbf{b} = \begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_n \end{bmatrix} +\end{equation} +then we can solve iterative for $\mathbf{x}$ using +\begin{equation} +x_i^{(k+1)} = \frac{1}{a_{ii}} \left( b_i - \sum_{j \neq i} a_{ij} x_j^{(k)} \right) , \quad i = 1,2,\ldots, n +\end{equation} +where $x_i^{(k)}$ is a value of the solution at iteration $k$ and $x_i^{(k+1)}$ is at the next iteration.

+
@@ -886,43 +909,43 @@

Jacobi method% dummy value for residual variable epsilon = 1.0; -num_iter = 0; -while epsilon > 1e-6 +num_iter = 0; +while epsilon > 1e-6 u_old = u; - epsilon = 0; - for j = 1 : m - for i = 1 : n + epsilon = 0; + for j = 1 : m + for i = 1 : n kij = (j-1)*n + i; kim1j = (j-1)*n + i - 1; kip1j = (j-1)*n + i + 1; kijm1 = (j-2)*n + i; - kijp1 = j*n + i; + kijp1 = j*n + i; - if i == 1 + if i == 1 % this is the left boundary - u(kij) = u_left; - elseif i == n + u(kij) = u_left; + elseif i == n % right boundary - u(kij) = u_right; - elseif j == 1 + u(kij) = u_right; + elseif j == 1 % bottom boundary - u(kij) = u_bottom; - elseif j == m + u(kij) = u_bottom; + elseif j == m % top boundary - u(kij) = u_top; - else - % interior points - u(kij) = (u_old(kip1j) + u_old(kim1j) + u_old(kijm1) + u_old(kijp1))/4.0; - end - end - end - - epsilon = max(abs(u - u_old)); - num_iter = num_iter + 1; -end - -u_square = reshape(u, [n, m]); + u(kij) = u_top; + else + % interior points + u(kij) = (u_old(kip1j) + u_old(kim1j) + u_old(kijm1) + u_old(kijp1))/4.0; + end + end + end + + epsilon = max(abs(u - u_old)); + num_iter = num_iter + 1; +end + +u_square = reshape(u, [n, m]); % the "20" indicates the number of levels for the contour plot contourf(x, y, u_square', 20); c = colorbar; @@ -964,11 +987,11 @@

Jacobi method
step_sizes = [0.1, 0.05, 0.025, 0.02, 0.0125, 0.01, 0.005];
 n = length(step_sizes);
 
-nums_jac = zeros(n,1); times_jac = zeros(n,1); num_iter_jac = zeros(n,1);
+nums_jac = zeros(n,1); times_jac = zeros(n,1); num_iter_jac = zeros(n,1);
 
-for i = 1 : n
-    [times_jac(i), nums_jac(i), num_iter_jac(i)] = heat_equation_jacobi(step_sizes(i));
-end
+for i = 1 : n
+    [times_jac(i), nums_jac(i), num_iter_jac(i)] = heat_equation_jacobi(step_sizes(i));
+end
 

@@ -1015,15 +1038,22 @@

Jacobi method
-

Gauss-Seidel method

The Gauss-Seidel method essentially works by starting with an initial guess to the solution, then using the recursion formula to solve for values at each point, then repeating this until the values converge (i.e., stop changing).

-

An algorithm we can use to solve Laplace's equation:

-
    -
  1. Set some initial guess for all unknowns: $u_{i,j}^{\text{old}}$
  2. -
  3. Set the boundary values, and set $u_{i,j} = u_{i,j}^{\text{old}}$
  4. -
  5. For each point in the interior, use the recursion formula to solve for new values based on surrounding points: $u_{i,j} = \left( u_{i+1,j} + u_{i-1,j} + u_{i,j+1} + u_{i,j-1} \right)/4$.
  6. -
  7. Check for convergence: is $\epsilon$ less than some tolerance, such as $10^{-6}$? Where $\epsilon = \max \left| u_{i,j} - u_{i,j}^{\text{old}} \right|$. If no, then return to step 2 and repeat.
  8. -
-

One important component of the Gauss-Seidel method is to immediately incorporate updated values in the solution; this contrasts the Jacobi method, which only uses old values to calculate new ones. The Gauss-Seidel generally converges faster.

+

Gauss-Seidel method

The Gauss-Seidel method is very similar to the Jacobi method, but with one important difference: rather than using all old values to calculate the new values, incorporate updated values as they are available. Because the method incorporates newer information more quickly, it tends to converge faster (meaning, with fewer iterations) than the Jacobi method.

+

Formally, if we have a system $A \mathbf{x} = \mathbf{b}$, where +\begin{equation} +A = \begin{bmatrix} +a_{11} & a_{12} & \cdots & a_{1n} \\ +a_{21} & a_{22} & \cdots & a_{2n} \\ +\vdots & \vdots & \ddots & \vdots \\ +a_{n1} & a_{n2} & \cdots & a_{nn} \end{bmatrix} +\quad \mathbf{x} = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix} +\quad \mathbf{b} = \begin{bmatrix} b_1 \\ b_2 \\ \vdots \\ b_n \end{bmatrix} +\end{equation} +then we can solve iterative for $\mathbf{x}$ using +\begin{equation} +x_i^{(k+1)} = \frac{1}{a_{ii}} \left( b_i - \sum_{j=1}^{i-1} a_{ij} x_j^{(k+1)} - \sum_{j =i+1}^n a_{ij} x_j^{(k)} \right) , \quad i = 1,2,\ldots, n +\end{equation} +where $x_i^{(k)}$ is a value of the solution at iteration $k$ and $x_i^{(k+1)}$ is at the next iteration.

@@ -1062,43 +1092,43 @@

Gauss-Seidel method% dummy value for residual variable epsilon = 1.0; -num_iter = 0; -while epsilon > 1e-6 +num_iter = 0; +while epsilon > 1e-6 u_old = u; - epsilon = 0; - for j = 1 : m - for i = 1 : n + epsilon = 0; + for j = 1 : m + for i = 1 : n kij = (j-1)*n + i; kim1j = (j-1)*n + i - 1; kip1j = (j-1)*n + i + 1; kijm1 = (j-2)*n + i; - kijp1 = j*n + i; + kijp1 = j*n + i; - if i == 1 + if i == 1 % this is the left boundary - u(kij) = u_left; - elseif i == n + u(kij) = u_left; + elseif i == n % right boundary - u(kij) = u_right; - elseif j == 1 + u(kij) = u_right; + elseif j == 1 % bottom boundary - u(kij) = u_bottom; - elseif j == m + u(kij) = u_bottom; + elseif j == m % top boundary - u(kij) = u_top; - else - % interior points - u(kij) = (u(kip1j) + u(kim1j) + u(kijm1) + u(kijp1))/4.0; - end - end - end - - epsilon = max(abs(u - u_old)); - num_iter = num_iter + 1; -end - -u_square = reshape(u, [n, m]); + u(kij) = u_top; + else + % interior points + u(kij) = (u(kip1j) + u(kim1j) + u(kijm1) + u(kijp1))/4.0; + end + end + end + + epsilon = max(abs(u - u_old)); + num_iter = num_iter + 1; +end + +u_square = reshape(u, [n, m]); %% the "20" indicates the number of levels for the contour plot contourf(x, y, u_square', 20); c = colorbar; @@ -1140,13 +1170,13 @@

Gauss-Seidel method
step_sizes = [0.1, 0.05, 0.025, 0.02, 0.0125, 0.01, 0.005];
 n = length(step_sizes);
 
-nums_gs = zeros(n,1); times_gs = zeros(n,1); num_iter_gs = zeros(n,1);
+nums_gs = zeros(n,1); times_gs = zeros(n,1); num_iter_gs = zeros(n,1);
 
-for i = 1 : n
-    [times_gs(i), nums_gs(i), num_iter_gs(i)] = heat_equation_gaussseidel(step_sizes(i));
-end
+for i = 1 : n
+    [times_gs(i), nums_gs(i), num_iter_gs(i)] = heat_equation_gaussseidel(step_sizes(i));
+end
 
-loglog(nums, times, '-o'); hold on
+loglog(nums, times, '-o'); hold on
 loglog(nums_jac, times_jac, '-^')
 loglog(nums_gs, times_gs, '-x')
 xlabel('Number of unknowns'); 
@@ -1202,7 +1232,7 @@ 

Gauss-Seidel method
loglog(nums_jac, num_iter_jac, '-^')
-hold on;
+hold on;
 loglog(nums_gs, num_iter_gs, '-x')
 xlabel('Number of unknowns')
 ylabel('Number of iterations required')
diff --git a/content/images/parabolic-explicit-stencil.png b/content/images/parabolic-explicit-stencil.png
new file mode 100644
index 0000000000000000000000000000000000000000..f933565810ab23c6b0db80679404335fa7b87dc8
GIT binary patch
literal 82409
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

%d zYm^Q)Q2O|^K>NUymEoKw=_HJaxWGX%dQ~&2BiOS+a=HAOD$w(L5JI-t^ah~0q7NRA zorWf$$@vbUn6u?yJ8vHnLkeOF;tF_nGHgwz_oU6JkOM#Y^;*BD5)dh-Q(H;yCYYr1 zYdEa*} z%z=HbmZZ=l8~%1ZQL^zxYTVlUeavB~x7hq8KPT=z8tpOmAi(f$CD%x1^IRa{?gF8P zrb>_x6uu_E=Kl}s-a8QM|N9%y6=g(b$|%Z~kyR+Jl*rz)OER;!j7zDcLMeMCTgcwy zEu!qbLu7@Nz3=n7Xnnr#&+m8N|K0Z=A0NG4*X#8h=bYy`kMlU^xkX<&YB>*FOvCZ- zkXK{hu95QoK4=JdUkaguyJiVQ@I(*&=f6l&>#4mo7g)H6xU0lx2YAcnS$yyfuGFz} z2`QfZyo!K1!6&z|Z2`V3eTTyJQpji~P?Dki#rsx2sTO|-ccEOHbFR1pV{p8CvWo2n zt^M<g%ndxcC>!y#^*` zdf_I4(($IjsBe)!{yBJ6X)-KWEF2CP>TMg&M{PZL-mwJG!(|6be%B^qSX*rzrKj2w zWTAp=i7~W#PPniha#Dh?i}lVdeSCCoWa)Fw8xi4Nx~%pZTLN?@Yk`>Q;$aU zmdX1tjUl{28t3T__NLk1LpZp%aW3$67f2BwF5n-P`+CB2sNADJ&w_el*|V>q`Ce_K zhjeGE`qIj?mP>@p6x}|Ry8cj;dTv7~ z?-n;97w*yQDoZgxbt9^3ayi&7`=mKl9D9tS*qYG>R~tS9sopTSs%6knTq1+rB*eTk z)r|a*-n|6b5Dimw$g6Stmh+)b-s>{FMs}!tV z{`X7&B%N^7YVqYPksCxg%nfJ_onIQ%KTJMTAbkphcEBOlpXo~1S$vt$$t-Pf(a}2j zj8pMa4v|`SG4uwM57>gU@Yvvke(N>y+0p0(8l{wlr0YQ^caBP)KVsrYWwiQxJ+^sh?d z@nwuT>t^1TrpY7ejYn=bVzI6#Z`zV)(LKL*hC?kmw$5%Ju^Aug0|DEQqub ^nTL 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 literal 0 HcmV?d00001 diff --git a/content/pdes/elliptic.ipynb b/content/pdes/elliptic.ipynb index 90af4fb..6bd61c9 100644 --- a/content/pdes/elliptic.ipynb +++ b/content/pdes/elliptic.ipynb @@ -711,7 +711,31 @@ "metadata": {}, "source": [ "### Jacobi method\n", - "\n" + "\n", + "The Jacobi method essentially works by starting with an initial guess to the solution, then using the recursion formula to solve for values at each point, then repeating this until the values converge (i.e., stop changing). \n", + "\n", + "An algorithm we can use to solve Laplace's equation:\n", + "\n", + "1. Set some initial guess for all unknowns: $u_{i,j}^{\\text{old}}$\n", + "2. Set the boundary values\n", + "3. For each point in the interior, use the recursion formula to solve for new values based on old values at the surrounding points: $u_{i,j} = \\left( u_{i+1,j}^{\\text{old}} + u_{i-1,j}^{\\text{old}} + u_{i,j+1}^{\\text{old}} + u_{i,j-1}^{\\text{old}} \\right)/4$.\n", + "4. Check for convergence: is $\\epsilon$ less than some tolerance, such as $10^{-6}$? Where $\\epsilon = \\max \\left| u_{i,j} - u_{i,j}^{\\text{old}} \\right|$. If no, then return to step 2 and repeat.\n", + "\n", + "More formally, if we have a system $A \\mathbf{x} = \\mathbf{b}$, where\n", + "\\begin{equation}\n", + "A = \\begin{bmatrix}\n", + "a_{11} & a_{12} & \\cdots & a_{1n} \\\\\n", + "a_{21} & a_{22} & \\cdots & a_{2n} \\\\\n", + "\\vdots & \\vdots & \\ddots & \\vdots \\\\\n", + "a_{n1} & a_{n2} & \\cdots & a_{nn} \\end{bmatrix}\n", + "\\quad \\mathbf{x} = \\begin{bmatrix} x_1 \\\\ x_2 \\\\ \\vdots \\\\ x_n \\end{bmatrix}\n", + "\\quad \\mathbf{b} = \\begin{bmatrix} b_1 \\\\ b_2 \\\\ \\vdots \\\\ b_n \\end{bmatrix}\n", + "\\end{equation}\n", + "then we can solve iterative for $\\mathbf{x}$ using\n", + "\\begin{equation}\n", + "x_i^{(k+1)} = \\frac{1}{a_{ii}} \\left( b_i - \\sum_{j \\neq i} a_{ij} x_j^{(k)} \\right) , \\quad i = 1,2,\\ldots, n \n", + "\\end{equation}\n", + "where $x_i^{(k)}$ is a value of the solution at iteration $k$ and $x_i^{(k+1)}$ is at the next iteration." ] }, { @@ -845,21 +869,28 @@ "source": [ "### Gauss-Seidel method\n", "\n", - "The Gauss-Seidel method essentially works by starting with an initial guess to the solution, then using the recursion formula to solve for values at each point, then repeating this until the values converge (i.e., stop changing). \n", - "\n", - "An algorithm we can use to solve Laplace's equation:\n", - "\n", - "1. Set some initial guess for all unknowns: $u_{i,j}^{\\text{old}}$\n", - "2. Set the boundary values, and set $u_{i,j} = u_{i,j}^{\\text{old}}$\n", - "3. For each point in the interior, use the recursion formula to solve for new values based on surrounding points: $u_{i,j} = \\left( u_{i+1,j} + u_{i-1,j} + u_{i,j+1} + u_{i,j-1} \\right)/4$.\n", - "4. Check for convergence: is $\\epsilon$ less than some tolerance, such as $10^{-6}$? Where $\\epsilon = \\max \\left| u_{i,j} - u_{i,j}^{\\text{old}} \\right|$. If no, then return to step 2 and repeat.\n", + "The Gauss-Seidel method is very similar to the Jacobi method, but with one important difference: rather than using all old values to calculate the new values, incorporate updated values as they are available. Because the method incorporates newer information more quickly, it tends to converge faster (meaning, with fewer iterations) than the Jacobi method.\n", "\n", - "One important component of the Gauss-Seidel method is to immediately incorporate updated values in the solution; this contrasts the Jacobi method, which only uses old values to calculate new ones. The Gauss-Seidel generally converges faster." + "Formally, if we have a system $A \\mathbf{x} = \\mathbf{b}$, where\n", + "\\begin{equation}\n", + "A = \\begin{bmatrix}\n", + "a_{11} & a_{12} & \\cdots & a_{1n} \\\\\n", + "a_{21} & a_{22} & \\cdots & a_{2n} \\\\\n", + "\\vdots & \\vdots & \\ddots & \\vdots \\\\\n", + "a_{n1} & a_{n2} & \\cdots & a_{nn} \\end{bmatrix}\n", + "\\quad \\mathbf{x} = \\begin{bmatrix} x_1 \\\\ x_2 \\\\ \\vdots \\\\ x_n \\end{bmatrix}\n", + "\\quad \\mathbf{b} = \\begin{bmatrix} b_1 \\\\ b_2 \\\\ \\vdots \\\\ b_n \\end{bmatrix}\n", + "\\end{equation}\n", + "then we can solve iterative for $\\mathbf{x}$ using\n", + "\\begin{equation}\n", + "x_i^{(k+1)} = \\frac{1}{a_{ii}} \\left( b_i - \\sum_{j=1}^{i-1} a_{ij} x_j^{(k+1)} - \\sum_{j =i+1}^n a_{ij} x_j^{(k)} \\right) , \\quad i = 1,2,\\ldots, n \n", + "\\end{equation}\n", + "where $x_i^{(k)}$ is a value of the solution at iteration $k$ and $x_i^{(k+1)}$ is at the next iteration." ] }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 1, "metadata": {}, "outputs": [ { diff --git a/content/pdes/parabolic.ipynb b/content/pdes/parabolic.ipynb new file mode 100644 index 0000000..8ef8600 --- /dev/null +++ b/content/pdes/parabolic.ipynb @@ -0,0 +1,72 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Parabolic PDEs\n", + "\n", + "A classic example of a parabolic partial differential equation (PDE) is the one-dimensional unsteady heat equation:\n", + "\\begin{equation}\n", + "\\frac{\\partial T}{\\partial t} = \\alpha \\frac{\\partial^2 T}{\\partial t^2} \n", + "\\end{equation}\n", + "where $T(x,t)$ is the temperature varying in space and time, and $\\alpha$ is the thermal diffusivity: $\\alpha = k / (\\rho c_p)$, which is a constant.\n", + "\n", + "We can solve this using finite differences to represent the spatial derivatives and time derivatives separately.\n", + "First, let's rearrange the PDE slightly:\n", + "\\begin{equation}\n", + "\\frac{\\partial^2 T}{\\partial x^2} = \\frac{1}{\\alpha} \\frac{\\partial T}{\\partial t}\n", + "\\end{equation}\n", + "\n", + "Let's use a *central difference* for the spatial derivative with a spacing of $\\Delta x$, and a *forward difference* for the time derivative with a time-step size of $\\Delta t$. With these choices, we can obtain an approximation to the PDE that applies at time $t^k$ and spatial location $x_i$:\n", + "\\begin{equation}\n", + "\\frac{T_{i-1}^k - 2 T_i^k + T_{i+1}^k}{\\Delta x^2} = \\frac{1}{\\alpha} \\left( \\frac{T_i^{k+1} - T_i^k}{\\Delta t} \\right)\n", + "\\end{equation}\n", + "where $T_i^k$ is the temperature at time $t^k$ and spatial location $x_i$. The following figure shows the stencil of points involved in the PDE, for a domain with five points in the $x$-direction.\n", + "\n", + "

\n", + "
\n", + " \"stencil\n", + "
Figure: Stencil for explicit solution to heat equation
\n", + "
\n", + "
\n", + "\n", + "To solve the heat equation for a one-dimensional domain over $0 \\leq x \\leq L$, we will need both initial conditions at $t = 0$ and boundary conditions at $x=0$ and $x=L$ (for all time). In terms of our nodal values, this means we need $T_i^{k=1}$ for $i = 1 \\ldots n$, where $n$ is the number of points, as well as information about $T_1^k$ and $T_n^k$ for all times $k$.\n", + "\n", + "We can rearrange the above equation to obtain our recursion formula:\n", + "\\begin{equation}\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "L" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Matlab", + "language": "matlab", + "name": "matlab" + }, + "language_info": { + "codemirror_mode": "octave", + "file_extension": ".m", + "help_links": [ + { + "text": "MetaKernel Magics", + "url": "https://metakernel.readthedocs.io/en/latest/source/README.html" + } + ], + "mimetype": "text/x-octave", + "name": "matlab", + "version": "0.16.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +}