2 Copyright (C) 2008-2015 EDF R&D
4 This file is part of SALOME ADAO module.
6 This library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
11 This library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
16 You should have received a copy of the GNU Lesser General Public
17 License along with this library; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
20 See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
22 Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
24 .. _section_ref_covariance_requirements:
26 Exigences pour décrire les matrices de covariance
27 -------------------------------------------------
29 De multiples matrices de covariance sont nécessaires pour mettre en oeuvre des
30 procédures d'assimilation de données ou d'optimisation. Les principales sont la
31 matrice de covariance des erreurs d'ébauche, notée :math:`\mathbf{B}`, et la
32 matrice de covariance des erreurs d'observation, notée :math:`\mathbf{R}`. Une
33 telle matrice doit être une matrice carré symétrique semi-définie positive.
35 Il y a 3 méthodes pratiques pour l'utilisateur pour fournir une matrice de
36 covariance. La méthode est choisie à l'aide du mot-clé "*INPUT_TYPE*" de chaque
37 matrice de covariance, comme montré dans la figure qui suit :
39 .. eficas_covariance_matrix:
40 .. image:: images/eficas_covariance_matrix.png
44 **Choisir la représentation d'une matrice de covariance**
46 Première forme matricielle : utiliser la représentation "*Matrix*"
47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
49 .. index:: single: Matrix
50 .. index:: single: BackgroundError
51 .. index:: single: EvolutionError
52 .. index:: single: ObservationError
54 La première forme est le défaut et la plus générale. La matrice de covariance
55 :math:`\mathbf{M}` doit être entièrement spécifiée. Même si la matrice est
56 symétrique par nature, la totalité de la matrice :math:`\mathbf{M}` doit être
59 .. math:: \mathbf{M} = \begin{pmatrix}
60 m_{11} & m_{12} & \cdots & m_{1n} \\
61 m_{21} & m_{22} & \cdots & m_{2n} \\
62 \vdots & \vdots & \vdots & \vdots \\
63 m_{n1} & \cdots & m_{nn-1} & m_{nn}
66 Cela peut être réalisé soit par un vecteur ou une matrice Numpy, soit par une
67 liste de listes de valeurs (c'est-à-dire une liste de lignes). Par exemple, une
68 matrice simple diagonale unitaire de covariances des erreurs d'ébauche
69 :math:`\mathbf{B}` peut être décrite dans un fichier de script Python par::
71 BackgroundError = [[1, 0 ... 0], [0, 1 ... 0] ... [0, 0 ... 1]]
75 BackgroundError = numpy.eye(...)
77 Seconde forme matricielle : utiliser la représentation "*ScalarSparseMatrix*"
78 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
80 .. index:: single: ScalarSparseMatrix
81 .. index:: single: BackgroundError
82 .. index:: single: EvolutionError
83 .. index:: single: ObservationError
85 Au contraire, la seconde forme matricielle est une méthode très simplifiée pour
86 définir une matrice. La matrice de covariance :math:`\mathbf{M}` est supposée
87 être un multiple positif de la matrice identité. Cette matrice peut alors être
88 spécifiée de manière unique par le multiplicateur :math:`m`:
90 .. math:: \mathbf{M} = m \times \begin{pmatrix}
93 \vdots & \vdots & \vdots & \vdots \\
97 Le multiplicateur :math:`m` doit être un nombre réel ou entier positif (s'il
98 est négatif, ce qui est impossible car une matrice de covariance est positive,
99 il est convertit en nombre positif). Par exemple, une simple matrice diagonale
100 unitaire de covariances des erreurs d'ébauche :math:`\mathbf{B}` peut être
101 décrite dans un fichier de script Python par::
105 ou, mieux, par un "*String*" directement dans le cas ADAO.
107 Troisième forme matricielle : utiliser la représentation "*DiagonalSparseMatrix*"
108 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
110 .. index:: single: DiagonalSparseMatrix
111 .. index:: single: BackgroundError
112 .. index:: single: EvolutionError
113 .. index:: single: ObservationError
115 La troisième forme est aussi une méthode simplifiée pour fournir la matrice,
116 mais un peu plus puissante que la seconde. La matrice de covariance
117 :math:`\mathbf{M}` est toujours considérée comme diagonale, mais l'utilisateur
118 doit spécifier toutes les valeurs positives situées sur la diagonale. La matrice
119 peut alors être définie uniquement par un vecteur :math:`\mathbf{V}` qui se
120 retrouve ensuite sur la diagonale:
122 .. math:: \mathbf{M} = \begin{pmatrix}
123 v_{1} & 0 & \cdots & 0 \\
124 0 & v_{2} & \cdots & 0 \\
125 \vdots & \vdots & \vdots & \vdots \\
126 0 & \cdots & 0 & v_{n}
129 Cela peut être réalisé soit par vecteur ou une matrice Numpy, soit par
130 une liste, soit par une liste de listes de valeurs positives (dans tous les cas,
131 si certaines valeurs sont négatives, elles sont converties en valeurs
132 positives). Par exemple, un matrice simple diagonale unitaire des covariances
133 des erreurs d'ébauche :math:`\mathbf{B}` peut être décrite dans un fichier de
136 BackgroundError = [1, 1 ... 1]
140 BackgroundError = numpy.ones(...)