Next: An example tridiagonal matrix
Up: Poisson's equation
Previous: Introduction
1-d problem with Dirichlet boundary conditions
As a simple test case, let us consider the solution of Poisson's equation
in one dimension. Suppose that
|
(113) |
for
, subject to the Dirichlet boundary conditions
and .
As a first step, we divide the domain
into equal
segments whose vertices are located at the grid-points
|
(114) |
for . The boundaries, and , correspond to and ,
respectively.
Next, we discretize the differential term on the grid-points. The most
straightforward discretization is
|
(115) |
Here,
, and
. This type
of discretization is termed a second-order, central difference scheme.
It is
``second-order'' because the truncation error is , as can
easily be demonstrated via Taylor expansion. Of course, an th order scheme
would have a truncation error which is .
It is a ``central difference'' scheme because it is symmetric about the central
grid-point, .
Our discretized version of Poisson's equation takes the form
|
(116) |
for , where
. Furthermore, and .
It is helpful to regard the above set of discretized equations as a matrix equation.
Let
be the vector of the -values,
and let
|
(117) |
be the vector of the source terms. The discretized equations can be written
as:
|
(118) |
The matrix takes the form
|
(119) |
for . The generalization to other values is fairly obvious.
Matrix is termed a tridiagonal matrix, since only those elements which lie on
the three leading diagonals are non-zero.
The formal solution to Eq. (118) is
|
(120) |
where is the inverse matrix to . Unfortunately, the most efficient
general purpose algorithm for inverting an matrix--namely, Gauss-Jordan elimination
with partial pivoting--requires arithmetic operations. It is fairly clear that this
is a disastrous scaling for finite-difference solutions of Poisson's equation.
Every time we doubled the resolution (i.e., doubled the number of grid-points) the
required cpu time would increase by a factor of about eight. Consequently, adding a second dimension (which
effectively requires the number of grid-points to be squared) would be prohibitively expensive
in terms of cpu time. Fortunately, there is a well-known trick for inverting an
tridiagonal
matrix which only requires arithmetic operations.
Consider a general tridiagonal matrix equation
.
Let , , and be the vectors of the left, center and right
diagonal elements of the matrix, respectively
Note that and are undefined, and can be conveniently
set to zero. Our matrix equation can now be written
|
(121) |
for .
Let us search for a solution of the form
|
(122) |
Substitution into Eq. (121) yields
|
(123) |
which can be rearranged to give
|
(124) |
However, if Eq. (122) is general then we can write
.
Comparison with the previous equation yields
|
(125) |
and
|
(126) |
We can now solve our tridiagonal matrix equation in two stages. In the first stage, we scan
up the leading diagonal from to using Eqs. (125) and (126). Thus,
|
(127) |
since . Furthermore,
|
(128) |
for . Finally,
|
(129) |
since . We have now defined all of the and . In the second stage,
we scan down the leading diagonal from to using Eq. (122).
Thus,
|
(130) |
since , and
|
(131) |
for . We have now inverted our tridiagonal matrix equation using arithmetic
operations.
Clearly, we can use the above algorithm to invert Eq. (118), with the source terms
specified in Eq. (117), and the diagonals of matrix given by
for , plus for , and for .
Next: An example tridiagonal matrix
Up: Poisson's equation
Previous: Introduction
Richard Fitzpatrick
2006-03-29