Scientific Computing Partial Differential Equations Implicit Solution of Heat Equation.
-
Upload
margery-oliver -
Category
Documents
-
view
228 -
download
2
Transcript of Scientific Computing Partial Differential Equations Implicit Solution of Heat Equation.
Explicit vs Implicit Methods
• Explicit methods have problems relating to stability
• Implicit methods overcome this but at the expense of introducing a more complicated algorithm
• In the implicit algorithm, we develop simultaneous equations for u at the j-th and (j+1)-st time steps
Explicit Method
We use the centered-difference approximation for uxx at time step j:
€
ui−1, j − 2ui, j + ui+1, j
h2
grid point involved with space difference grid point involved with time difference
Implicit Method
We use the centered-difference approximation for uxx at step (j+1) :
€
ui−1, j+1 − 2ui, j+1 + ui+1, j+1
h2
grid point involved with space difference grid point involved with time difference
• We use the forward-difference formula for the time derivative and the centered-difference formula for the space derivative at time step (j+1):
Implicit Method
€
ut (x i, t j ) ≅ui, j+1 − ui, j
k
cuxx (x i, t j ) ≅ cui−1, j+1 − 2ui, j+1 + ui+1, j+1
h2
• Then the heat equation (ut =cuxx ) can be approximated as
Or,
Let r = (ck/h2) Solving for ui,j we get:
Implicit Method
€
ui, j+1 − ui, jk
= cui−1, j+1 − 2ui, j+1 + ui+1, j+1
h2
€
ui, j+1 − uij =ck
h2 ui−1, j+1 − 2ui, j+1 + ui+1, j+1( )
€
ui, j = −rui−1, j+1 + (1+ 2r)ui, j+1 − rui+1, j+1( )
• Putting in the boundary conditions, we get the following equations for the (implicit) solution to the heat equation is:
Implicit Method
€
ui, j = −rui−1, j+1 + (1+ 2r)ui, j+1 − rui+1, j+1( ) j ≥ 0 i = 2,K n − 2
u1, j = −rg0, j+1 + (1+ 2r)u1, j+1 − ru2, j+1( ) j ≥ 0
un−1, j = −run−2, j+1 + (1+ 2r)un−1, j+1 − rg1, j+1( ) j ≥ 0
ui,0 = f i i = 0K n
Matrix Form of Solution
€
1+ 2r −r
−r 1+ 2r −r
O O O
−r 1+ 2r −r
−r 1+ 2r
⎡
⎣
⎢ ⎢ ⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥ ⎥ ⎥
u1, j+1
u2, j+1
M
un−2, j+1
un−1, j+1
⎛
⎝
⎜ ⎜ ⎜ ⎜ ⎜ ⎜
⎞
⎠
⎟ ⎟ ⎟ ⎟ ⎟ ⎟
+
−rg0, j+1
0
M
0
−rg1, j+1
⎛
⎝
⎜ ⎜ ⎜ ⎜ ⎜ ⎜
⎞
⎠
⎟ ⎟ ⎟ ⎟ ⎟ ⎟
=
u1, j
u2, j
M
un−2, j
un−1, j
⎛
⎝
⎜ ⎜ ⎜ ⎜ ⎜ ⎜
⎞
⎠
⎟ ⎟ ⎟ ⎟ ⎟ ⎟
€
ui, j = −rui−1, j+1 + (1+ 2r)ui, j+1 − rui+1, j+1( ) j ≥ 0 i = 2,K n − 2
u1, j = −rg0, j+1 + (1+ 2r)u1, j+1 − ru2, j+1( ) j ≥ 0
un−1, j = −run−2, j+1 + (1+ 2r)un−1, j+1 − rg1, j+1( ) j ≥ 0
ui,0 = f i i = 0K n
This is of the formTo solve for u(:,j) we need to use a linear systems method.Since we have to solve this system repeatedly, a good choice
is the LU decomposition method.
Matrix Form of Solution
€
Au(:, j +1) +b = u(:, j)
€
1+ 2r −r
−r 1+ 2r −r
O O O
−r 1+ 2r −r
−r 1+ 2r
⎡
⎣
⎢ ⎢ ⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥ ⎥ ⎥
u1, j+1
u2, j+1
M
un−2, j+1
un−1, j+1
⎛
⎝
⎜ ⎜ ⎜ ⎜ ⎜ ⎜
⎞
⎠
⎟ ⎟ ⎟ ⎟ ⎟ ⎟
+
−rg0, j+1
0
M
0
−rg1, j+1
⎛
⎝
⎜ ⎜ ⎜ ⎜ ⎜ ⎜
⎞
⎠
⎟ ⎟ ⎟ ⎟ ⎟ ⎟
=
u1, j
u2, j
M
un−2, j
un−1, j
⎛
⎝
⎜ ⎜ ⎜ ⎜ ⎜ ⎜
⎞
⎠
⎟ ⎟ ⎟ ⎟ ⎟ ⎟
function z = implicitHeat(f, g0, g1, T, n, m, c)%Simple Implicit solution of heat equation % Constants h = 1/n; k = T/m; r = c*k/h^2; % x and t vectors x = 0:h:1; t = 0:k:T; % Boundary conditions u(1:n+1, 1) = f(x)'; u(1, 1:m+1) = g0(t); u(n+1, 1:m+1) = g1(t);
Matlab Implementation
% Set up tri-diagonal matrix for interior points of the grid A = zeros(n-1, n-1); % 2 less than x grid size for i= 1: n-1 A(i,i)= (1+2*r); if i ~= n-1 A(i, i+1) = -r; end if i ~= 1 A(i, i-1) = -r; end end % Find LU decomposition of A [LL UU] = lu_gauss(A); % function included below
Matlab Implementation
% Solve for u(:, j+1); for j = 1:m % Set up vector b to solve for in Ax=b b = zeros(n-1,1); b = u(2:n, j)'; % Make a column vector for LU solver b(1) = b(1) + r*u(1,j+1); b(n-1) = b(n-1) + r*u(n+1,j+1); u(2:n, j+1) = luSolve(LL, UU, b); end z=u'; % plot solution in 3-d mesh(x,t,z);end
Matlab Implementation
Usage: f = inline(‘x.^4’); g0 = inline(‘0*t’); g1 = inline(‘t.^0’); n=5; m=5; c=1; T=0.5; z = implicitHeat(f, g0, g1, T, n, m, c);
Matlab Implementation
To analyze the stability of the method, we again have to consider the eigenvalues of A for the equation
We have
Using the Gershgorin Theorem, we see that eigenvalues are contained in circles centered at (1+2r) with max radius of 2r
Stability
€
Au(:, j +1) +b = u(:, j)
€
A =
1+ 2r −r
−r 1+ 2r −r
O O O
−r 1+ 2r −r
−r 1+ 2r
⎡
⎣
⎢ ⎢ ⎢ ⎢ ⎢ ⎢
⎤
⎦
⎥ ⎥ ⎥ ⎥ ⎥ ⎥
Thus, if λ is an eigenvalue of A, we have
Thus, all eigenvalues are at least 1. In solving for u(:,j+1) in we haveSince the eigenvalues of A-1 are the reciprocal of the
eigenvalues of A, we have that the eigenvalues of A-1 areall <= 1. Thus, the implicit algorithm yields stable iterates – they do
not grow without bound.
Stability
€
1+ 2r − 2r ≤ λ ≤1+ 2r + 2r
⇒ 1≤ λ ≤1+ 4r
€
Au(:, j +1) +b = u(:, j)
€
u(:, j +1) = A−1(u(:, j) −b)
• Convergence means that as x and t approach zero, the results of the numerical technique approach the true solution
• Stability means that the errors at any stage of the computation are attenuated, not amplified, as the computation progresses
• Truncation Error refers to the error generated in the solution by using the finite difference formulas for the derivatives.
Convergence and Stability
Example: For the explicit method, it will be stable if r<= 0.5 and will have truncation error of O(k+h2) .
Implicit Method is stable for any choice of r and will again have truncation error of O(k+h2) .
It would be nice to have a method that is O(k2+h2). The Crank-Nicholson method has this nice feature.
Convergence and Stability
Crank-Nicholson Method
We average the centered-difference approximation
for uxx at time steps j and j+1:
€
ui−1, j − 2ui, j + ui+1, j
h2
grid point involved with space difference grid point involved with time difference
€
ui−1, j+1 − 2ui, j+1 + ui+1, j+1
h2
Crank-Nicholson Method
We get the following
€
ui, j+1 − uij =ck
2h2 ui−1, j − 2ui, j + ui+1, j( )
+ck
2h2 ui−1, j+1 − 2ui, j+1 + ui+1, j+1( )
• Putting in the boundary conditions, we get the following equations for the (C-N) solution to the heat equation is:
Crank-Nicholson Method
€
−r
2ui−1, j+1 + (1+ r)ui, j+1 −
r
2ui+1, j+1
⎛
⎝ ⎜
⎞
⎠ ⎟=r
2ui−1, j + (1− r)ui, j +
r
2ui+1, j
⎛
⎝ ⎜
⎞
⎠ ⎟
−r
2g0, j+1 + (1+ r)u1, j+1 −
r
2u2, j+1
⎛
⎝ ⎜
⎞
⎠ ⎟=r
2g0, j + (1− r)u1, j +
r
2u2, j
⎛
⎝ ⎜
⎞
⎠ ⎟
−r
2un−2, j+1 + (1+ r)un−1, j+1 −
r
2g1, j+1
⎛
⎝ ⎜
⎞
⎠ ⎟=r
2un−2, j + (1− r)un−1, j +
r
2g1, j
⎛
⎝ ⎜
⎞
⎠ ⎟
ui,0 = f i
• Class Project: Determine the matrix for the C-N method and revise the Matlab implicitHeat function to implement C-N.
Crank-Nicholson Method
€
−r
2ui−1, j+1 + (1+ r)ui, j+1 −
r
2ui+1, j+1
⎛
⎝ ⎜
⎞
⎠ ⎟=r
2ui−1, j + (1− r)ui, j +
r
2ui+1, j
⎛
⎝ ⎜
⎞
⎠ ⎟
−r
2g0, j+1 + (1+ r)u1, j+1 −
r
2u2, j+1
⎛
⎝ ⎜
⎞
⎠ ⎟=r
2g0, j + (1− r)u1, j +
r
2u2, j
⎛
⎝ ⎜
⎞
⎠ ⎟
−r
2un−2, j+1 + (1+ r)un−1, j+1 −
r
2g1, j+1
⎛
⎝ ⎜
⎞
⎠ ⎟=r
2un−2, j + (1− r)un−1, j +
r
2g1, j
⎛
⎝ ⎜
⎞
⎠ ⎟
ui,0 = f i