Salome HOME
9455b9d0f39faf1997ade5fdc278a1b71d64a9f6
[modules/adao.git] / doc / fr / ref_algorithm_TangentTest.rst
1 ..
2    Copyright (C) 2008-2015 EDF R&D
3
4    This file is part of SALOME ADAO module.
5
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.
10
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.
15
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
19
20    See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21
22    Author: Jean-Philippe Argaud, jean-philippe.argaud@edf.fr, EDF R&D
23
24 .. index:: single: TangentTest
25 .. _section_ref_algorithm_TangentTest:
26
27 Algorithme de vérification "*TangentTest*"
28 ------------------------------------------
29
30 Description
31 +++++++++++
32
33 Cet algorithme permet de vérifier la qualité de l'opérateur tangent, en
34 calculant un résidu dont les propriétés théoriques sont connues.
35
36 On observe le résidu suivant, provenant du rapport d'incréments utilisant
37 l'opérateur linéaire tangent :
38
39 .. math:: R(\alpha) = \frac{|| F(\mathbf{x}+\alpha*\mathbf{dx}) - F(\mathbf{x}) ||}{|| \alpha * TangentF_x * \mathbf{dx} ||}
40
41 qui doit rester stable en :math:`1+O(\alpha)` jusqu'à ce que l'on atteigne la
42 précision du calcul.
43
44 Lorsque :math:`|R-1|/\alpha` est inférieur ou égal à une valeur stable lorsque
45 :math:`\alpha` varie, le tangent est valide, jusqu'à ce que l'on atteigne la
46 précision du calcul.
47
48 Si :math:`|R-1|/\alpha` est très faible, le code de calcul :math:`F` est
49 vraisemblablement linéaire ou quasi-linéaire (ce que l'on peut vérifier par
50 l':ref:`section_ref_algorithm_LinearityTest`), et le tangent est valide jusqu'à
51 ce que l'on atteigne la précision du calcul.
52
53 On prend :math:`\mathbf{dx}_0=Normal(0,\mathbf{x})` et
54 :math:`\mathbf{dx}=\alpha*\mathbf{dx}_0`. :math:`F` est le code de calcul.
55
56 Commandes requises et optionnelles
57 ++++++++++++++++++++++++++++++++++
58
59 .. index:: single: AlgorithmParameters
60 .. index:: single: CheckingPoint
61 .. index:: single: ObservationOperator
62 .. index:: single: AmplitudeOfInitialDirection
63 .. index:: single: EpsilonMinimumExponent
64 .. index:: single: InitialDirection
65 .. index:: single: SetSeed
66 .. index:: single: StoreSupplementaryCalculations
67
68 Les commandes requises générales, disponibles dans l'interface en édition, sont
69 les suivantes:
70
71   CheckingPoint
72     *Commande obligatoire*. Elle définit le vecteur utilisé comme l'état autour
73     duquel réaliser le test requis, noté :math:`\mathbf{x}` et similaire à
74     l'ébauche :math:`\mathbf{x}^b`. Sa valeur est définie comme un objet de type
75     "*Vector*".
76
77   ObservationOperator
78     *Commande obligatoire*. Elle indique l'opérateur d'observation, notée
79     précédemment :math:`H`, qui transforme les paramètres d'entrée
80     :math:`\mathbf{x}` en résultats :math:`\mathbf{y}` qui sont à comparer aux
81     observations :math:`\mathbf{y}^o`.  Sa valeur est définie comme un objet de
82     type "*Function*". Différentes formes fonctionnelles peuvent être
83     utilisées, comme décrit dans la section
84     :ref:`section_ref_operator_requirements`. Si un contrôle :math:`U` est
85     inclus dans le modèle d'observation, l'opérateur doit être appliqué à une
86     paire :math:`(X,U)`.
87
88 Les commandes optionnelles générales, disponibles dans l'interface en édition,
89 sont indiquées dans la :ref:`section_ref_checking_keywords`. De plus, les
90 paramètres de la commande "*AlgorithmParameters*" permettent d'indiquer les
91 options particulières, décrites ci-après, de l'algorithme. On se reportera à la
92 :ref:`section_ref_options_Algorithm_Parameters` pour le bon usage de cette
93 commande.
94
95 Les options de l'algorithme sont les suivantes:
96
97   AmplitudeOfInitialDirection
98     Cette clé indique la mise à l'échelle de la perturbation initiale construite
99     comme un vecteur utilisé pour la dérivée directionnelle autour du point
100     nominal de vérification. La valeur par défaut est de 1, ce qui signifie pas
101     de mise à l'échelle.
102
103     Exemple : ``{"AmplitudeOfInitialDirection":0.5}``
104
105   EpsilonMinimumExponent
106     Cette clé indique la valeur de l'exposant minimal du coefficient en
107     puissance de 10 qui doit être utilisé pour faire décroître le multiplicateur
108     de l'incrément. La valeur par défaut est de -8, et elle doit être entre 0 et
109     -20. Par exemple, la valeur par défaut conduit à calculer le résidu de la
110     formule avec un incrément fixe multiplié par 1.e0 jusqu'à 1.e-8.
111
112     Exemple : ``{"EpsilonMinimumExponent":-12}``
113
114   InitialDirection
115     Cette clé indique la direction vectorielle utilisée pour la dérivée
116     directionnelle autour du point nominal de vérification. Cela doit être un
117     vecteur. Si elle n'est pas spécifiée, la direction par défaut est une
118     perturbation par défaut autour de zéro de la même taille vectorielle que le
119     point de vérification.
120
121     Exemple : ``{"InitialDirection":[0.1,0.1,100.,3}``
122
123   SetSeed
124     Cette clé permet de donner un nombre entier pour fixer la graine du
125     générateur aléatoire utilisé pour générer l'ensemble. Un valeur pratique est
126     par exemple 1000. Par défaut, la graine est laissée non initialisée, et elle
127     utilise ainsi l'initialisation par défaut de l'ordinateur.
128
129     Exemple : ``{"SetSeed":1000}``
130
131   StoreSupplementaryCalculations
132     Cette liste indique les noms des variables supplémentaires qui peuvent être
133     disponibles à la fin de l'algorithme. Cela implique potentiellement des
134     calculs ou du stockage coûteux. La valeur par défaut est une liste vide,
135     aucune de ces variables n'étant calculée et stockée par défaut. Les noms
136     possibles sont dans la liste suivante : ["CurrentState", "Residu",
137     "SimulatedObservationAtCurrentState"].
138
139     Exemple : ``{"StoreSupplementaryCalculations":["CurrentState"]}``
140
141 Informations et variables disponibles à la fin de l'algorithme
142 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
143
144 En sortie, après exécution de l'algorithme, on dispose d'informations et de
145 variables issues du calcul. La description des
146 :ref:`section_ref_output_variables` indique la manière de les obtenir par la
147 méthode nommée ``get`` de la variable "*ADD*" du post-processing. Les variables
148 d'entrée, mises à disposition de l'utilisateur en sortie pour faciliter
149 l'écriture des procédures de post-processing, sont décrites dans
150 l':ref:`subsection_r_o_v_Inventaire`.
151
152 Les sorties non conditionnelles de l'algorithme sont les suivantes:
153
154   Residu
155     *Liste de valeurs*. Chaque élément est la valeur du résidu particulier
156     vérifié lors d'un algorithme de vérification, selon l'ordre des tests
157     effectués.
158
159     Exemple : ``r = ADD.get("Residu")[:]``
160
161 Les sorties conditionnelles de l'algorithme sont les suivantes:
162
163   CurrentState
164     *Liste de vecteurs*. Chaque élément est un vecteur d'état courant utilisé
165     au cours du déroulement de l'algorithme d'optimisation.
166
167     Exemple : ``Xs = ADD.get("CurrentState")[:]``
168
169   SimulatedObservationAtCurrentState
170     *Liste de vecteurs*. Chaque élément est un vecteur d'observation simulé à
171     partir de l'état courant, c'est-à-dire dans l'espace des observations.
172
173     Exemple : ``hxs = ADD.get("SimulatedObservationAtCurrentState")[-1]``
174
175 Voir aussi
176 ++++++++++
177
178 Références vers d'autres sections :
179   - :ref:`section_ref_algorithm_FunctionTest`
180   - :ref:`section_ref_algorithm_LinearityTest`
181   - :ref:`section_ref_algorithm_AdjointTest`
182   - :ref:`section_ref_algorithm_GradientTest`