Sei sulla pagina 1di 22

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 u
xx
at time step j:




u
i1, j
2u
i, j
+ u
i+1, j
h
2
grid point involved with space difference
grid point involved with time difference

Implicit Method
We use the centered-difference approximation
for u
xx
at step (j+1) :




u
i1, j +1
2u
i, j +1
+ u
i+1, j +1
h
2
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

u
t
(x
i
, t
j
) ~
u
i, j +1
u
i, j
k
cu
xx
(x
i
, t
j
) ~c
u
i1, j +1
2u
i, j +1
+ u
i+1, j +1
h
2
Then the heat equation (u
t
=cu
xx
) can be approximated as


Or,

Let r = (ck/h
2
) Solving for u
i,j
we get:


Implicit Method

u
i, j +1
u
i, j
k
= c
u
i1, j +1
2u
i, j +1
+ u
i+1, j +1
h
2

u
i, j +1
u
ij
=
ck
h
2
u
i1, j +1
2u
i, j +1
+ u
i+1, j +1
( )

u
i, j
= ru
i1, j +1
+(1+2r)u
i, j +1
ru
i+1, j +1
( )
Putting in the boundary conditions, we get the
following equations for the (implicit) solution to the
heat equation is:

Implicit Method

u
i, j
= ru
i1, j +1
+(1+2r)u
i, j +1
ru
i+1, j +1
( )
j >0 i = 2,K n 2
u
1, j
= rg
0, j +1
+(1+2r)u
1, j +1
ru
2, j +1
( )
j >0
u
n1, j
= ru
n2, j +1
+(1+2r)u
n1, j +1
rg
1, j +1
( )
j >0
u
i,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








(

(
(
(
(
(
(
u
1, j +1
u
2, j +1
M
u
n2, j +1
u
n1, j +1
|
\






|
.
|
|
|
|
|
|
+
rg
0, j +1
0
M
0
rg
1, j +1
|
\






|
.
|
|
|
|
|
|
=
u
1, j
u
2, j
M
u
n2, j
u
n1, j
|
\






|
.
|
|
|
|
|
|

u
i, j
= ru
i1, j +1
+(1+2r)u
i, j +1
ru
i+1, j +1
( )
j >0 i = 2,K n 2
u
1, j
= rg
0, j +1
+(1+2r)u
1, j +1
ru
2, j +1
( )
j >0
u
n1, j
= ru
n2, j +1
+(1+2r)u
n1, j +1
rg
1, j +1
( )
j >0
u
i,0
= f
i
i = 0K n




This is of the form
To 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








(

(
(
(
(
(
(
u
1, j +1
u
2, j +1
M
u
n2, j +1
u
n1, j +1
|
\






|
.
|
|
|
|
|
|
+
rg
0, j +1
0
M
0
rg
1, j +1
|
\






|
.
|
|
|
|
|
|
=
u
1, j
u
2, j
M
u
n2, j
u
n1, 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
Calculated solution appears stable:

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 have
Since the eigenvalues of A
-1
are the reciprocal of the
eigenvalues of A, we have that the eigenvalues of A
-1
are
all <= 1.
Thus, the implicit algorithm yields stable iterates they do
not grow without bound.
Stability

1+2r 2r s s1+2r +2r
1s s1+ 4r

Au(:, j +1) +b = u(:, j)

u(:, j +1) = A
1
(u(:, j) b)
Convergence means that as A x and A 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+h
2
) .

Implicit Method is stable for any choice of r and will again
have truncation error of O(k+h
2
) .

It would be nice to have a method that is O(k
2
+h
2
). The
Crank-Nicholson method has this nice feature.
Convergence and Stability
Crank-Nicholson Method
We average the centered-difference
approximation
for u
xx
at time steps j
and j+1:




u
i1, j
2u
i, j
+ u
i+1, j
h
2
grid point involved with space difference
grid point involved with time difference


u
i1, j +1
2u
i, j +1
+ u
i+1, j +1
h
2
Crank-Nicholson Method
We get the following




u
i, j +1
u
ij
=
ck
2h
2
u
i1, j
2u
i, j
+ u
i+1, j
( )
+
ck
2h
2
u
i1, j +1
2u
i, j +1
+ u
i+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
2
u
i1, j +1
+(1+ r)u
i, j +1

r
2
u
i+1, j +1
|
\

|
.
| =
r
2
u
i1, j
+(1 r)u
i, j
+
r
2
u
i+1, j
|
\

|
.
|

r
2
g
0, j +1
+(1+ r)u
1, j +1

r
2
u
2, j +1
|
\

|
.
| =
r
2
g
0, j
+(1 r)u
1, j
+
r
2
u
2, j
|
\

|
.
|

r
2
u
n2, j +1
+(1+ r)u
n1, j +1

r
2
g
1, j +1
|
\

|
.
| =
r
2
u
n2, j
+(1 r)u
n1, j
+
r
2
g
1, j
|
\

|
.
|
u
i,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
2
u
i1, j +1
+(1+ r)u
i, j +1

r
2
u
i+1, j +1
|
\

|
.
| =
r
2
u
i1, j
+(1 r)u
i, j
+
r
2
u
i+1, j
|
\

|
.
|

r
2
g
0, j +1
+(1+ r)u
1, j +1

r
2
u
2, j +1
|
\

|
.
| =
r
2
g
0, j
+(1 r)u
1, j
+
r
2
u
2, j
|
\

|
.
|

r
2
u
n2, j +1
+(1+ r)u
n1, j +1

r
2
g
1, j +1
|
\

|
.
| =
r
2
u
n2, j
+(1 r)u
n1, j
+
r
2
g
1, j
|
\

|
.
|
u
i,0
= f
i

Potrebbero piacerti anche