Salome HOME
Adding multi-functions input capabilities (2)
[modules/adao.git] / doc / en / ref_algorithm_ExtendedKalmanFilter.rst
index d313387e5173edd02636d73f946daac2e8a71448..bd074c10d4d42a59a6bc84c8ff28b25d47c036d2 100644 (file)
@@ -1,5 +1,5 @@
 ..
-   Copyright (C) 2008-2015 EDF R&D
+   Copyright (C) 2008-2018 EDF R&D
 
    This file is part of SALOME ADAO module.
 
@@ -31,89 +31,64 @@ Description
 +++++++++++
 
 This algorithm realizes an estimation of the state of a dynamic system by a
-extended Kalman Filter, using a non-linear calculation of the state.
+extended Kalman Filter, using a non-linear calculation of the state and the
+incremental evolution (process).
+
+In case of really non-linear operators, one can easily use the
+:ref:`section_ref_algorithm_EnsembleKalmanFilter` or the
+:ref:`section_ref_algorithm_UnscentedKalmanFilter`, which are often far more
+adapted to non-linear behavior but more costly. One can verify the linearity of
+the operators with the help of the :ref:`section_ref_algorithm_LinearityTest`.
 
 Optional and required commands
 ++++++++++++++++++++++++++++++
 
-.. index:: single: Background
-.. index:: single: BackgroundError
-.. index:: single: Observation
-.. index:: single: ObservationError
-.. index:: single: ObservationOperator
-.. index:: single: Bounds
-.. index:: single: ConstrainedBy
-.. index:: single: EstimationOf
-.. index:: single: StoreSupplementaryCalculations
-
 The general required commands, available in the editing user interface, are the
 following:
 
-  Background
-    *Required command*. This indicates the background or initial vector used,
-    previously noted as :math:`\mathbf{x}^b`. Its value is defined as a
-    "*Vector*" or a *VectorSerie*" type object.
-
-  BackgroundError
-    *Required command*. This indicates the background error covariance matrix,
-    previously noted as :math:`\mathbf{B}`. Its value is defined as a "*Matrix*"
-    type object, a "*ScalarSparseMatrix*" type object, or a
-    "*DiagonalSparseMatrix*" type object.
-
-  Observation
-    *Required command*. This indicates the observation vector used for data
-    assimilation or optimization, previously noted as :math:`\mathbf{y}^o`. It
-    is defined as a "*Vector*" or a *VectorSerie* type object.
-
-  ObservationError
-    *Required command*. This indicates the observation error covariance matrix,
-    previously noted as :math:`\mathbf{R}`. It is defined as a "*Matrix*" type
-    object, a "*ScalarSparseMatrix*" type object, or a "*DiagonalSparseMatrix*"
-    type object.
-
-  ObservationOperator
-    *Required command*. This indicates the observation operator, previously
-    noted :math:`H`, which transforms the input parameters :math:`\mathbf{x}` to
-    results :math:`\mathbf{y}` to be compared to observations
-    :math:`\mathbf{y}^o`. Its value is defined as a "*Function*" type object or
-    a "*Matrix*" type one. In the case of "*Function*" type, different
-    functional forms can be used, as described in the section
-    :ref:`section_ref_operator_requirements`. If there is some control :math:`U`
-    included in the observation, the operator has to be applied to a pair
-    :math:`(X,U)`.
+  .. include:: snippets/Background.rst
+
+  .. include:: snippets/BackgroundError.rst
+
+  .. include:: snippets/EvolutionError.rst
+
+  .. include:: snippets/EvolutionModel.rst
+
+  .. include:: snippets/Observation.rst
+
+  .. include:: snippets/ObservationError.rst
+
+  .. include:: snippets/ObservationOperator.rst
 
 The general optional commands, available in the editing user interface, are
-indicated in :ref:`section_ref_assimilation_keywords`. In particular, the
-optional command "*AlgorithmParameters*" allows to choose the specific options,
+indicated in :ref:`section_ref_assimilation_keywords`. Moreover, the parameters
+of the command "*AlgorithmParameters*" allows to choose the specific options,
 described hereafter, of the algorithm. See
-:ref:`section_ref_options_AlgorithmParameters` for the good use of this command.
+:ref:`section_ref_options_Algorithm_Parameters` for the good use of this
+command.
 
 The options of the algorithm are the following:
 
-  Bounds
-    This key allows to define upper and lower bounds for every state variable
-    being optimized. Bounds have to be given by a list of list of pairs of
-    lower/upper bounds for each variable, with extreme values every time there
-    is no bound (``None`` is not allowed when there is no bound).
+  .. include:: snippets/BoundsWithExtremes.rst
 
-    Example : ``{"Bounds":[[2.,5.],[1.e-2,10.],[-30.,1.e99],[-1.e99,1.e99]]}``
+  .. include:: snippets/ConstrainedBy.rst
 
-  EstimationOf
-    This key allows to choose the type of estimation to be performed. It can be
-    either state-estimation, with a value of "State", or parameter-estimation,
-    with a value of "Parameters". The default choice is "State".
-
-    Example : ``{"EstimationOf":"Parameters"}``
+  .. include:: snippets/EstimationOf.rst
 
   StoreSupplementaryCalculations
+    .. index:: single: StoreSupplementaryCalculations
+
     This list indicates the names of the supplementary variables that can be
     available at the end of the algorithm. It involves potentially costly
     calculations or memory consumptions. The default is a void list, none of
     these variables being calculated and stored by default. The possible names
-    are in the following list: ["APosterioriCovariance", "BMA", "CostFunctionJ",
-    "CurrentState", "Innovation"].
+    are in the following list: ["APosterioriCorrelations",
+    "APosterioriCovariance", "APosterioriStandardDeviations",
+    "APosterioriVariances", "BMA", "CostFunctionJ", "CostFunctionJb",
+    "CostFunctionJo", "CurrentState", "Innovation"].
 
-    Example : ``{"StoreSupplementaryCalculations":["BMA","Innovation"]}``
+    Example :
+    ``{"StoreSupplementaryCalculations":["BMA", "Innovation"]}``
 
 Information and variables available at the end of the algorithm
 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@@ -128,59 +103,34 @@ writing of post-processing procedures, are described in the
 
 The unconditional outputs of the algorithm are the following:
 
-  Analysis
-    *List of vectors*. Each element is an optimal state :math:`\mathbf{x}*` in
-    optimization or an analysis :math:`\mathbf{x}^a` in data assimilation.
-
-    Example : ``Xa = ADD.get("Analysis")[-1]``
+  .. include:: snippets/Analysis.rst
 
 The conditional outputs of the algorithm are the following:
 
-  APosterioriCovariance
-    *List of matrices*. Each element is an *a posteriori* error covariance
-    matrix :math:`\mathbf{A}*` of the optimal state.
-
-    Example : ``A = ADD.get("APosterioriCovariance")[-1]``
-
-  BMA
-    *List of vectors*. Each element is a vector of difference between the
-    background and the optimal state.
-
-    Example : ``bma = ADD.get("BMA")[-1]``
-
-  CostFunctionJ
-    *List of values*. Each element is a value of the error function :math:`J`.
+  .. include:: snippets/APosterioriCorrelations.rst
 
-    Example : ``J = ADD.get("CostFunctionJ")[:]``
+  .. include:: snippets/APosterioriCovariance.rst
 
-  CostFunctionJb
-    *List of values*. Each element is a value of the error function :math:`J^b`,
-    that is of the background difference part.
+  .. include:: snippets/APosterioriStandardDeviations.rst
 
-    Example : ``Jb = ADD.get("CostFunctionJb")[:]``
+  .. include:: snippets/APosterioriVariances.rst
 
-  CostFunctionJo
-    *List of values*. Each element is a value of the error function :math:`J^o`,
-    that is of the observation difference part.
+  .. include:: snippets/BMA.rst
 
-    Example : ``Jo = ADD.get("CostFunctionJo")[:]``
+  .. include:: snippets/CostFunctionJ.rst
 
-  CurrentState
-    *List of vectors*. Each element is a usual state vector used during the
-    optimization algorithm procedure.
+  .. include:: snippets/CostFunctionJb.rst
 
-    Example : ``Xs = ADD.get("CurrentState")[:]``
+  .. include:: snippets/CostFunctionJo.rst
 
-  Innovation
-    *List of vectors*. Each element is an innovation vector, which is in static
-    the difference between the optimal and the background, and in dynamic the
-    evolution increment.
+  .. include:: snippets/CurrentState.rst
 
-    Exemple : ``d = ADD.get("Innovation")[-1]``
+  .. include:: snippets/Innovation.rst
 
 See also
 ++++++++
 
 References to other sections:
   - :ref:`section_ref_algorithm_KalmanFilter`
+  - :ref:`section_ref_algorithm_EnsembleKalmanFilter`
   - :ref:`section_ref_algorithm_UnscentedKalmanFilter`