Prev | Next |
Syntax
# include <cppad/utility/lu_invert.hpp>
LuInvert(ip, jp, LU, X)
A * X = B
using an LU factorization computed by LuFactor
.
cppad/utility/lu_invert.hpp
is included by cppad/cppad.hpp
but it can also be included separately with out the rest of
the CppAD
routines.
ip
has prototype
const SizeVector &ip
(see description for
SizeVector
in
LuFactor
specifications).
The size of
ip
is referred to as
n
in the
specifications below.
The elements of
ip
determine
the order of the rows in the permuted matrix.
jp
has prototype
const SizeVector &jp
(see description for
SizeVector
in
LuFactor
specifications).
The size of
jp
must be equal to
n
.
The elements of
jp
determine
the order of the columns in the permuted matrix.
LU
has the prototype
const FloatVector &LU
and the size of
LU
must equal @(@
n * n
@)@
(see description for
FloatVector
in
LuFactor
specifications).
L
in terms of
LU
.
The matrix
L
is zero above the diagonal
and the rest of the elements are defined by
L(i, j) = LU[ ip[i] * n + jp[j] ]
for @(@
i = 0 , \ldots , n-1
@)@ and @(@
j = 0 , \ldots , i
@)@.
U
in terms of
LU
.
The matrix
U
is zero below the diagonal,
one on the diagonal,
and the rest of the elements are defined by
U(i, j) = LU[ ip[i] * n + jp[j] ]
for @(@
i = 0 , \ldots , n-2
@)@ and @(@
j = i+1 , \ldots , n-1
@)@.
P
in terms of
the matrix
L
and the matrix
U
by
P = L * U
.
A
,
which defines the linear equations that we are solving, is given by
P(i, j) = A[ ip[i] * n + jp[j] ]
(Hence
LU
contains a permuted factorization of the matrix
A
.)
X
has prototype
FloatVector &X
(see description for
FloatVector
in
LuFactor
specifications).
The matrix
X
must have the same number of rows as the matrix
A
.
The input value of
X
is the matrix
B
and the
output value solves the matrix equation
A * X = B
.
LuFactor
with LuInvert
.
The file
lu_invert.cpp
contains an example and test of using LuInvert
by itself.