14.5. Algorithme de vérification « LinearityTest »¶
Description¶
Cet algorithme permet de vérifier la qualité de linéarité d’un opérateur, en calculant un résidu dont les propriétés théoriques sont connues. Plusieurs formules de résidu sont utilisables et sont décrites ci-dessous avec leur interprétation. Le test est applicable à un opérateur quelconque, d’évolution comme d’observation.
Pour toutes les formules, avec le point courant de
vérification, on prend
et
avec
un paramètre
utilisateur de mise à l’échelle, par défaut à 1.
est l’opérateur ou
le code de calcul (qui est ici acquis par la commande d’opérateur d’observation
« ObservationOperator »).
Résidu « CenteredDL »¶
On observe le résidu suivant, provenant de la différence centrée des valeurs de
au point nominal et aux points perturbés, normalisée par la valeur au
point nominal :
S’il reste constamment très faible par rapport à 1, l’hypothèse de linéarité
de est vérifiée.
Si le résidu varie, ou qu’il est de l’ordre de 1 ou plus, et qu’il n’est
faible qu’à partir d’un certain ordre d’incrément, l’hypothèse de linéarité
de n’est pas vérifiée.
Si le résidu décroît et que la décroissance se fait en selon
, cela signifie que le gradient est bien calculé jusqu’au niveau
d’arrêt de la décroissance quadratique.
Résidu « Taylor »¶
On observe le résidu issu du développement de Taylor de la fonction ,
normalisée par la valeur au point nominal :
S’il reste constamment très faible par rapport à 1, l’hypothèse de linéarité
de est vérifiée.
Si le résidu varie, ou qu’il est de l’ordre de 1 ou plus, et qu’il n’est
faible qu’à partir d’un certain ordre d’incrément, l’hypothèse de linéarité
de n’est pas vérifiée.
Si le résidu décroît et que la décroissance se fait en selon
, cela signifie que le gradient est bien calculé jusqu’au niveau
d’arrêt de la décroissance quadratique.
Résidu « NominalTaylor »¶
On observe le résidu obtenu à partir de deux approximations d’ordre 1 de
, normalisées par la valeur au point nominal :
S’il reste constamment égal à 1 à moins de 2 ou 3 pourcents prés (c’est-à-dire
que reste égal à 2 ou 3 pourcents), c’est que l’hypothèse de
linéarité de
est vérifiée.
S’il est égal à 1 sur une partie seulement du domaine de variation de
l’incrément , c’est sur sous-domaine que l’hypothèse de linéarité
de
est vérifiée.
Résidu « NominalTaylorRMS »¶
On observe le résidu obtenu à partir de deux approximations d’ordre 1 de
, normalisées par la valeur au point nominal, dont on
calcule l’écart quadratique (RMS) avec la valeur au point nominal :
S’il reste constamment égal à 0 à moins de 1 ou 2 pourcents prés, c’est que l’hypothèse de linéarité de F est vérifiée.
S’il est égal à 0 sur une partie seulement du domaine de variation de
l’incrément , c’est sur cette partie que l’hypothèse de linéarité
de F est vérifiée.
Commandes requises et optionnelles¶
Les commandes générales requises, disponibles en édition dans l’interface graphique ou textuelle, sont les suivantes :
- CheckingPoint
- Vecteur. La variable désigne le vecteur utilisé comme l’état autour duquel
réaliser le test requis, noté
, similaire à l’ébauche
. Sa valeur est définie comme un objet de type « Vector » ou « VectorSerie ». Sa disponibilité en sortie est conditionnée par le booléen « Stored » associé en entrée.
- ObservationOperator
- Opérateur. La variable désigne l’opérateur d’observation, usuellement noté
, qui transforme les paramètres d’entrée
en résultats
qui sont à comparer aux observations
. Sa valeur est définie comme un objet de type « Function » ou de type « Matrix ». Dans le cas du type « Function », différentes formes fonctionnelles peuvent être utilisées, comme décrit dans la section Conditions requises pour les fonctions décrivant un opérateur. Si un contrôle
est inclus dans le modèle d’observation, l’opérateur doit être appliqué à une paire
.
Les commandes optionnelles générales, disponibles en édition dans l’interface graphique ou textuelle, sont indiquées dans la Liste des commandes et mots-clés pour un cas de vérification. De plus, les paramètres de la commande « AlgorithmParameters » permettent d’indiquer les options particulières, décrites ci-après, de l’algorithme. On se reportera à la Description des options d’un algorithme par « AlgorithmParameters » pour le bon usage de cette commande.
Les options sont les suivantes :
- AmplitudeOfInitialDirection
Valeur réelle. Cette clé indique la mise à l’échelle de la perturbation initiale construite comme un vecteur utilisé pour la dérivée directionnelle autour du point nominal de vérification. La valeur par défaut est de 1, ce qui signifie qu’il n’y a aucune mise à l’échelle.
Exemple :
{"AmplitudeOfInitialDirection":0.5}
- AmplitudeOfTangentPerturbation
Valeur réelle. Cette clé indique l’amplitude numérique relative de la perturbation utilisée pour estimer la valeur tangente de l’opérateur au point d’évaluation, i.e. sa dérivée directionnelle. Le défaut conservatif est de 1.e-2 i.e. 1%, et il est fortement recommandé de l’adapter aux besoins pour des problèmes réels, en diminuant sa valeur de plusieurs ordres de grandeur.
Exemple :
{"AmplitudeOfTangentPerturbation":1.e-2}
- EpsilonMinimumExponent
Valeur entière. Cette clé indique la valeur de l’exposant minimal du coefficient en puissance de 10 qui doit être utilisé pour faire décroître le multiplicateur de l’incrément. La valeur par défaut est de -8, et elle doit être négative entre 0 et -20. Par exemple, la valeur par défaut conduit à calculer le résidu de la formule avec un incrément fixe multiplié par 1.e0 jusqu’à 1.e-8.
Exemple :
{"EpsilonMinimumExponent":-12}
- InitialDirection
Vecteur. Cette clé indique la direction vectorielle utilisée pour la dérivée directionnelle autour du point nominal de vérification. Cela doit être un vecteur de la même taille que celle du point de vérification. Si elle n’est pas spécifiée, la direction par défaut est une perturbation vectorielle autour de zéro de la même taille que le point de vérification.
Exemple :
{"InitialDirection":[0.1,0.1,100.,3}
pour un espace d’état de dimension 4
- ResiduFormula
Nom prédéfini. Cette clé indique la formule de résidu qui doit être utilisée pour le test. Le choix par défaut est « CenteredDL », et les choix possibles sont « CenteredDL » (résidu de la différence entre la fonction au point nominal et ses valeurs avec des incréments positif et négatif, qui doit rester très faible), « Taylor » (résidu du développement de Taylor de l’opérateur normalisé par sa valeur nominal, qui doit rester très faible), « NominalTaylor » (résidu de l’approximation à l’ordre 1 de l’opérateur, normalisé au point nominal, qui doit rester proche de 1), et « NominalTaylorRMS » (résidu de l’approximation à l’ordre 1 de l’opérateur, normalisé par l’écart quadratique moyen (RMS) au point nominal, qui doit rester proche de 0).
Exemple :
{"ResiduFormula":"CenteredDL"}
- SetSeed
Valeur entière. Cette clé permet de donner un nombre entier pour fixer la graine du générateur aléatoire utilisé dans l’algorithme. Par défaut, la graine est laissée non initialisée, et elle utilise ainsi l’initialisation par défaut de l’ordinateur, qui varie donc à chaque étude. Pour assurer la reproductibilité de résultats impliquant des tirages aléatoires, il est fortement conseiller d’initialiser la graine. Une valeur simple est par exemple 123456789. Il est conseillé de mettre un entier à plus de 6 ou 7 chiffres pour bien initialiser le générateur aléatoire.
Exemple :
{"SetSeed":123456789}
- StoreSupplementaryCalculations
Liste de noms. Cette liste indique les noms des variables supplémentaires, qui peuvent être disponibles au cours du déroulement ou à la fin de l’algorithme, si elles sont initialement demandées par l’utilisateur. Leur disponibilité implique, potentiellement, des calculs ou du stockage coûteux. La valeur par défaut est donc une liste vide, aucune de ces variables n’étant calculée et stockée par défaut (sauf les variables inconditionnelles). Les noms possibles pour les variables supplémentaires sont dans la liste suivante (la description détaillée de chaque variable nommée est donnée dans la suite de cette documentation par algorithme spécifique, dans la sous-partie « Informations et variables disponibles à la fin de l’algorithme ») : [ « CurrentState », « Residu », « SimulatedObservationAtCurrentState », ].
Exemple :
{"StoreSupplementaryCalculations":["BMA", "CurrentState"]}
Informations et variables disponibles à la fin de l’algorithme¶
En sortie, après exécution de l’algorithme, on dispose d’informations et de
variables issues du calcul. La description des
Variables et informations disponibles en sortie indique la manière de les obtenir par la
méthode nommée get
, de la variable « ADD » du post-processing en interface
graphique, ou du cas en interface textuelle. Les variables d’entrée, mises à
disposition de l’utilisateur en sortie pour faciliter l’écriture des procédures
de post-processing, sont décrites dans l”Inventaire des informations potentiellement disponibles en sortie.
Sorties permanentes (non conditionnelles)
Les sorties non conditionnelles de l’algorithme sont les suivantes :
- Residu
Liste de valeurs. Chaque élément est la valeur du résidu particulier vérifié lors du déroulement de l’algorithme, selon l’ordre des tests effectués.
Exemple :
r = ADD.get("Residu")[:]
Ensemble des sorties à la demande (conditionnelles ou non)
L’ensemble des sorties (conditionnelles ou non) de l’algorithme, classées par ordre alphabétique, est le suivant :
- CurrentState
Liste de vecteurs. Chaque élément est un vecteur d’état courant utilisé au cours du déroulement itératif de l’algorithme utilisé.
Exemple :
Xs = ADD.get("CurrentState")[:]
- Residu
Liste de valeurs. Chaque élément est la valeur du résidu particulier vérifié lors du déroulement de l’algorithme, selon l’ordre des tests effectués.
Exemple :
r = ADD.get("Residu")[:]
- SimulatedObservationAtCurrentState
Liste de vecteurs. Chaque élément est un vecteur d’observation simulé par l’opérateur d’observation à partir de l’état courant, c’est-à-dire dans l’espace des observations.
Exemple :
hxs = ADD.get("SimulatedObservationAtCurrentState")[-1]