For the state space system defined by
the estimate of
given observations
to
is denoted by
with
. The function performs one recursion of the square root information filter algorithm, summarised as follows:
where
is an orthogonal transformation triangularizing the pre-array. The triangularization is done entirely via Householder transformations exploiting the zero pattern of the pre-array. The term
is the mean process noise and
is the estimated error at instant
. The inverse of the state covariance matrix
is factored as follows
where
(
is lower triangular).
The new state filtered state estimate is computed via
The function returns
and
(see the
G13 Chapter Introduction for more information concerning the information filter).
Vanbegin M, van Dooren P and Verhaegen M H G (1989) Algorithm 675: FORTRAN subroutines for computing the square root covariance filter and square root information filter in dense or Hessenberg forms ACM Trans. Math. Software 15 243–256
Verhaegen M H G and van Dooren P (1986) Numerical aspects of different Kalman filter implementations IEEE Trans. Auto. Contr. AC-31 907–917
-
1:
– Integer
Input
-
On entry: the actual state dimension, , i.e., the order of the matrices and .
Constraint:
.
-
2:
– Integer
Input
-
On entry: the actual input dimension, , i.e., the order of the matrix .
Constraint:
.
-
3:
– Integer
Input
-
On entry: the actual output dimension, , i.e., the order of the matrix .
Constraint:
.
-
4:
– Nag_ab_input
Input
-
On entry: indicates how the matrix
is to be passed to the function.
- Array b must contain the product .
- Then array b must contain .
-
5:
– double
Input/Output
-
Note: the th element of the matrix is stored in .
On entry: the leading by upper triangular part of this array must contain the square root of the inverse of the state covariance matrix .
On exit: the leading by upper triangular part of this array contains , the square root of the inverse of the of the state covariance matrix .
-
6:
– Integer
Input
-
On entry: the stride separating matrix column elements in the array
t.
Constraint:
.
-
7:
– const double
Input
-
Note: the th element of the matrix is stored in .
On entry: the leading by part of this array must contain the inverse of the state transition matrix.
-
8:
– Integer
Input
-
On entry: the stride separating matrix column elements in the array
ainv.
Constraint:
.
-
9:
– const double
Input
-
Note: the th element of the matrix is stored in .
On entry: the leading by part of this array must contain (if ) or its product with (if ).
-
10:
– Integer
Input
-
On entry: the stride separating matrix column elements in the array
b.
Constraint:
.
-
11:
– const double
Input
-
Note: the th element of the matrix is stored in .
On entry: if the measurement noise covariance matrix is to be supplied separately from the output weight matrix, then the leading
by
upper triangular part of this array must contain
, the right Cholesky factor of the inverse of the measurement noise covariance matrix. If this information is not to be input separately from the output weight matrix (see below) then the array
rinv must be set to
NULL.
-
12:
– Integer
Input
-
On entry: the stride separating matrix column elements in the array
rinv.
Constraint:
if
rinv is defined.
-
13:
– const double
Input
-
Note: the th element of the matrix is stored in .
On entry: if the array
rinv has been set to
NULL then the leading
by
part of this array must contain
, the output weight matrix (or its product with
) of the discrete system at instant
.
-
14:
– Integer
Input
-
On entry: the stride separating matrix column elements in the array
c.
Constraint:
.
-
15:
– const double
Input
-
Note: the th element of the matrix is stored in .
On entry: the leading by upper triangular part of this array must contain the right Cholesky factor of the inverse of the process noise covariance matrix.
-
16:
– Integer
Input
-
On entry: the stride separating matrix column elements in the array
qinv.
Constraint:
.
-
17:
– double
Input/Output
-
On entry: this array must contain the estimated state
On exit: the estimated state .
-
18:
– const double
Input
-
On entry: this array must contain , the product of the upper triangular matrix and the measured output .
-
19:
– const double
Input
-
On entry: this array must contain , the mean value of the state process noise.
-
20:
– double
Input
-
On entry:
tol is used to test for near singularity of the matrix
. If you set
tol to be less than
then the tolerance is taken as
, where
is the
machine precision.
-
21:
– NagError *
Input/Output
-
The NAG error argument (see
Section 7 in the Introduction to the NAG Library CL Interface).
- NE_2_INT_ARG_LT
-
On entry, while . These arguments must satisfy .
On entry, while . These arguments must satisfy .
On entry, while . These arguments must satisfy .
On entry, while . These arguments must satisfy .
On entry, while . These arguments must satisfy .
On entry, while . These arguments must satisfy .
- NE_ALLOC_FAIL
-
Dynamic memory allocation failed.
- NE_BAD_PARAM
-
On entry, argument
inp_ab had an illegal value.
- NE_INT_ARG_LT
-
On entry, .
Constraint: .
On entry, .
Constraint: .
On entry, .
Constraint: .
- NE_MAT_SINGULAR
-
The matrix inverse(S) is singular.
The use of the square root algorithm improves the stability of the computations.
Please consult the
X06 Chapter Introduction for information on how to control and interrogate the OpenMP environment used within this function. Please also consult the
Users' Note for your implementation for any additional implementation-specific information.
The algorithm requires approximately
operations and is backward stable (see
Verhaegen and van Dooren (1986)).
To apply three iterations of the Kalman filter (in square root information form) to the system . The same data is used for all three iterative steps.