Salome HOME
- Nouvelle version de Jean-Philippe ARGAUD
[modules/adao.git] / src / tests / daComposant / Plateforme / test012_LinearLeastSquares.py
1 #-*-coding:iso-8859-1-*-
2 __doc__ = """
3     Analyse moindre carres sans ebauche
4 """
5 __author__ = "Sophie RICCI, Jean-Philippe ARGAUD - Septembre 2008"
6
7 import numpy
8 from daCore.AssimilationStudy import AssimilationStudy
9
10 #===============================================================================
11 def test(dimension = 100, precision = 1.e-13):
12     """
13     Analyse moindre carres sans ebauche
14     """
15     #
16     # Définition des données "théoriques" vraies
17     # ------------------------------------------
18     xt = numpy.matrix(numpy.random.normal(0.,1.,size=(dimension,))).T
19     H  = numpy.identity(dimension)
20     yo = H * xt
21     #
22     # Définition des matrices de covariances d'erreurs
23     # ------------------------------------------------
24     R  = numpy.identity(dimension)
25     #
26     # Analyse BLUE
27     # ------------
28     ADD = AssimilationStudy()
29     # Les valeurs de xb et B ne sont pas utilisées dans l'algorithme 
30     # pour lequel on ne considere pas d'ébauche
31     ADD.setBackground         (asVector     = numpy.zeros((dimension,)) )
32     ADD.setBackgroundError    (asCovariance = numpy.zeros((dimension,dimension)) )
33     ADD.setObservation        (asVector     = yo )
34     ADD.setObservationError   (asCovariance = R )
35     ADD.setObservationOperator(asMatrix     = H )
36     #
37     ADD.setControls()
38     #
39     ADD.setAlgorithm(choice="LinearLeastSquares")
40     #
41     ADD.analyze()
42     #
43     xa = ADD.get("Analysis").valueserie(0)
44     if max(abs(xa - xt.A1)) > precision :
45         raise ValueError("Resultat du test errone")
46     else :
47         print test.__doc__
48         print "    Test correct"
49         print
50
51 #===============================================================================
52 if __name__ == "__main__":
53
54     print
55     print "AUTODIAGNOSTIC"
56     print "=============="
57     
58     test(3)