2 Copyright (C) 2008-2014 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 .. index:: single: LinearityTest
25 .. _section_ref_algorithm_LinearityTest:
27 Algorithme de vérification "*LinearityTest*"
28 --------------------------------------------
33 Cet algorithme permet de vérifier la qualité de linéarité de l'opérateur, en
34 calculant un résidu dont les propriétés théoriques sont connues. Plusieurs
35 formules de résidu sont utilisables.
37 Dans tous les cas, on prend :math:`\mathbf{dx}_0=Normal(0,\mathbf{x})` et
38 :math:`\mathbf{dx}=\alpha*\mathbf{dx}_0`. :math:`F` est le code de calcul.
43 On observe le résidu suivant, provenant de la différence centrée des valeurs de
44 :math:`F` au point nominal et aux points perturbés, normalisée par la valeur au
47 .. math:: R(\alpha) = \frac{|| F(\mathbf{x}+\alpha*\mathbf{dx}) + F(\mathbf{x}-\alpha*\mathbf{dx}) - 2*F(\mathbf{x}) ||}{|| F(\mathbf{x}) ||}
49 S'il reste constamment très faible par rapport à 1, l'hypothèse de linéarité
50 de :math:`F` est vérifiée.
52 Si le résidu varie, ou qu'il est de l'ordre de 1 ou plus, et qu'il n'est
53 faible qu'à partir d'un certain ordre d'incrément, l'hypothèse de linéarité
54 de :math:`F` n'est pas vérifiée.
56 Si le résidu décroit et que la décroissance se fait en :math:`\alpha^2` selon
57 :math:`\alpha`, cela signifie que le gradient est bien calculé jusqu'au niveau
58 d'arrêt de la décroissance quadratique.
63 On observe le résidu issu du développement de Taylor de la fonction :math:`F`,
64 normalisée par la valeur au point nominal :
66 .. math:: R(\alpha) = \frac{|| F(\mathbf{x}+\alpha*\mathbf{dx}) - F(\mathbf{x}) - \alpha * \nabla_xF(\mathbf{dx}) ||}{|| F(\mathbf{x}) ||}
68 S'il reste constamment trés faible par rapport à 1, l'hypothèse de linéarité
69 de :math:`F` est vérifiée.
71 Si le résidu varie, ou qu'il est de l'ordre de 1 ou plus, et qu'il n'est
72 faible qu'à partir d'un certain ordre d'incrément, l'hypothèse de linéarité
73 de :math:`F` n'est pas vérifiée.
75 Si le résidu décroit et que la décroissance se fait en :math:`\alpha^2` selon
76 :math:`\alpha`, cela signifie que le gradient est bien calculé jusqu'au niveau
77 d'arrêt de la décroissance quadratique.
79 Résidu "NominalTaylor"
80 **********************
82 On observe le résidu obtenu à partir de deux approximations d'ordre 1 de
83 :math:`F(\mathbf{x})`, normalisées par la valeur au point nominal :
85 .. math:: R(\alpha) = \max(|| F(\mathbf{x}+\alpha*\mathbf{dx}) - \alpha * F(\mathbf{dx}) || / || F(\mathbf{x}) ||,|| F(\mathbf{x}-\alpha*\mathbf{dx}) + \alpha * F(\mathbf{dx}) || / || F(\mathbf{x}) ||)
87 S'il reste constamment égal à 1 à moins de 2 ou 3 pourcents prés (c'est-à-dire
88 que :math:`|R-1|` reste égal à 2 ou 3 pourcents), c'est que l'hypothèse de
89 linéarité de :math:`F` est vérifiée.
91 S'il est égal à 1 sur une partie seulement du domaine de variation de
92 l'incrément :math:`\alpha`, c'est sur sous-domaine que l'hypothèse de linéarité
93 de :math:`F` est vérifiée.
95 Résidu "NominalTaylorRMS"
96 *************************
98 On observe le résidu obtenu à partir de deux approximations d'ordre 1 de
99 :math:`F(\mathbf{x})`, normalisées par la valeur au point nominal, dont on
100 calcule l'écart quadratique (RMS) avec la valeur au point nominal :
102 .. math:: R(\alpha) = \max(RMS( F(\mathbf{x}), F(\mathbf{x}+\alpha*\mathbf{dx}) - \alpha * F(\mathbf{dx}) ) / || F(\mathbf{x}) ||,RMS( F(\mathbf{x}), F(\mathbf{x}-\alpha*\mathbf{dx}) + \alpha * F(\mathbf{dx}) ) / || F(\mathbf{x}) ||)
104 S'il reste constamment égal à 0 à moins de 1 ou 2 pourcents prés, c'est
105 que l'hypothèse de linéarité de F est vérifiée.
107 S'il est égal à 0 sur une partie seulement du domaine de variation de
108 l'incrément :math:`\alpha`, c'est sur cette partie que l'hypothèse de linéarité
111 Commandes requises et optionnelles
112 ++++++++++++++++++++++++++++++++++
114 .. index:: single: CheckingPoint
115 .. index:: single: ObservationOperator
116 .. index:: single: AmplitudeOfInitialDirection
117 .. index:: single: EpsilonMinimumExponent
118 .. index:: single: InitialDirection
119 .. index:: single: ResiduFormula
120 .. index:: single: SetSeed
122 Les commandes requises générales, disponibles dans l'interface en édition, sont
126 *Commande obligatoire*. Elle définit le vecteur utilisé comme l'état autour
127 duquel réaliser le test requis, noté :math:`\mathbf{x}` et similaire à
128 l'ébauche :math:`\mathbf{x}^b`. Sa valeur est définie comme un objet de type
132 *Commande obligatoire*. Elle indique l'opérateur d'observation, notée
133 précédemment :math:`H`, qui transforme les paramètres d'entrée
134 :math:`\mathbf{x}` en résultats :math:`\mathbf{y}` qui sont à comparer aux
135 observations :math:`\mathbf{y}^o`. Sa valeur est définie comme un objet de
136 type "*Function*". Différentes formes fonctionnelles peuvent être
137 utilisées, comme décrit dans la section
138 :ref:`section_ref_operator_requirements`. Si un contrôle :math:`U` est
139 inclus dans le modèle d'observation, l'opérateur doit être appliqué à une
142 Les commandes optionnelles générales, disponibles dans l'interface en édition,
143 sont indiquées dans la :ref:`section_ref_checking_keywords`. En particulier, la
144 commande optionnelle "*AlgorithmParameters*" permet d'indiquer les options
145 particulières, décrites ci-après, de l'algorithme. On se reportera à la
146 :ref:`section_ref_options_AlgorithmParameters` pour le bon usage de cette
149 Les options de l'algorithme sont les suivantes:
151 AmplitudeOfInitialDirection
152 Cette clé indique la mise à l'échelle de la perturbation initiale construite
153 comme un vecteur utilisé pour la dérivée directionnelle autour du point
154 nominal de vérification. La valeur par défaut est de 1, ce qui signifie pas
157 Exemple : ``{"AmplitudeOfInitialDirection":0.5}``
159 EpsilonMinimumExponent
160 Cette clé indique la valeur de l'exposant minimal du coefficient en
161 puissance de 10 qui doit être utilisé pour faire décroître le multiplicateur
162 de l'incrément. La valeur par défaut est de -8, et elle doit être entre 0 et
163 -20. Par exemple, la valeur par défaut conduit à calculer le résidu de la
164 formule avec un incrément fixe multiplié par 1.e0 jusqu'à 1.e-8.
166 Exemple : ``{"EpsilonMinimumExponent":-12}``
169 Cette clé indique la direction vectorielle utilisée pour la dérivée
170 directionnelle autour du point nominal de vérification. Cela doit être un
171 vecteur. Si elle n'est pas spécifiée, la direction par défaut est une
172 perturbation par défaut autour de zéro de la même taille vectorielle que le
173 point de vérification.
175 Exemple : ``{"InitialDirection":[0.1,0.1,100.,3}``
178 Cette clé indique la formule de résidu qui doit être utilisée pour le test.
179 Le choix par défaut est "CenteredDL", et les choix possibles sont
180 "CenteredDL" (résidu de la différence entre la fonction au point nominal et
181 ses valeurs avec des incréments positif et négatif, qui doit rester très
182 faible), "Taylor" (résidu du développement de Taylor de l'opérateur
183 normalisé par sa valeur nominal, qui doit rester très faible),
184 "NominalTaylor" (résidu de l'approximation à l'ordre 1 de l'opérateur,
185 normalisé au point nominal, qui doit rester proche de 1), et
186 "NominalTaylorRMS" (résidu de l'approximation à l'ordre 1 de l'opérateur,
187 normalisé par l'écart quadratique moyen (RMS) au point nominal, qui doit
190 Exemple : ``{"ResiduFormula":"CenteredDL"}``
193 Cette clé permet de donner un nombre entier pour fixer la graine du
194 générateur aléatoire utilisé pour générer l'ensemble. Un valeur pratique est
195 par exemple 1000. Par défaut, la graine est laissée non initialisée, et elle
196 utilise ainsi l'initialisation par défaut de l'ordinateur.
198 Exemple : ``{"SetSeed":1000}``
203 Références vers d'autres sections :
204 - :ref:`section_ref_algorithm_FunctionTest`