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