1 #-*-coding:iso-8859-1-*-
3 Cas-test vérifiant que si l'erreur sur le background est nulle et que
4 l'erreur sur les observations est connue, alors l'analyse donne le "milieu"
5 du background et des observations.
7 __author__ = "Jean-Philippe ARGAUD - Mars 2008"
10 from daCore.AssimilationStudy import AssimilationStudy
12 #===============================================================================
13 def test(precision = 1.e-13, dimension = 3):
15 Cas-test vérifiant que si l'erreur sur le background est nulle et que
16 l'erreur sur les observations est connue, alors l'analyse donne le "milieu"
17 du background et des observations.
20 # Définition des données "théoriques" vraies
21 # ------------------------------------------
22 xt = numpy.matrix(numpy.arange(dimension)).T
23 Eo = numpy.matrix(numpy.random.normal(0.,1.,size=(dimension,))).T
24 Eb = numpy.matrix(numpy.zeros((dimension,))).T
26 H = numpy.matrix(numpy.core.identity(dimension))
34 # Définition des matrices de covariances d'erreurs
35 # ------------------------------------------------
36 R = numpy.matrix(numpy.core.identity(dimension)).T
37 B = numpy.matrix(numpy.core.identity(dimension)).T
41 ADD = AssimilationStudy()
42 ADD.setBackground (asVector = xb )
43 ADD.setBackgroundError (asCovariance = B )
44 ADD.setObservation (asVector = yo )
45 ADD.setObservationError (asCovariance = R )
46 ADD.setObservationOperator(asMatrix = H )
49 ADD.setAlgorithm(choice="Blue")
53 Xa = ADD.get("Analysis")
54 xa = numpy.matrix(Xa.valueserie(0)).T
55 SigmaObs2 = ADD.get("SigmaObs2")
56 SigmaBck2 = ADD.get("SigmaBck2")
57 d = ADD.get("Innovation")
59 # Vérification du résultat
60 # ------------------------
61 if max(abs(xa.A1 - xb - Eo.A1/2.)) > precision:
62 raise ValueError("Résultat du test erroné (1)")
63 elif max(abs(yo - (H * xa).A1 - Eo.A1/2.)) > precision:
64 raise ValueError("Résultat du test erroné (2)")
67 print " Test correct, erreur maximale inférieure à %s"%precision
70 #===============================================================================
71 if __name__ == "__main__":
74 print "AUTODIAGNOSTIC"
75 print "=============="
76 # numpy.random.seed(1000)