diff --git a/__pycache__/book.cpython-32.pyc b/__pycache__/book.cpython-32.pyc deleted file mode 100644 index 7eb377b..0000000 Binary files a/__pycache__/book.cpython-32.pyc and /dev/null differ diff --git a/__pycache__/config.cpython-32.pyc b/__pycache__/config.cpython-32.pyc deleted file mode 100644 index 812ebb9..0000000 Binary files a/__pycache__/config.cpython-32.pyc and /dev/null differ diff --git a/__pycache__/dev.cpython-32.pyc b/__pycache__/dev.cpython-32.pyc deleted file mode 100644 index 3c83f83..0000000 Binary files a/__pycache__/dev.cpython-32.pyc and /dev/null differ diff --git a/__pycache__/divers.cpython-32.pyc b/__pycache__/divers.cpython-32.pyc deleted file mode 100644 index ecb9bd9..0000000 Binary files a/__pycache__/divers.cpython-32.pyc and /dev/null differ diff --git a/__pycache__/lecon.cpython-32.pyc b/__pycache__/lecon.cpython-32.pyc deleted file mode 100644 index aef378f..0000000 Binary files a/__pycache__/lecon.cpython-32.pyc and /dev/null differ diff --git a/agreg.py b/agreg.py index efe1eef..900e9c2 100755 --- a/agreg.py +++ b/agreg.py @@ -106,6 +106,28 @@ class Agreg(): self.book += [bo] # -------------------- Analyse +# Enfin on compte le nombre de dev par leçon. Puis on fait la somme des min avec 2 et on divise par le nombre de dévelloppement + + + def compte_dev(self): + """Crée un dictionnaire correspondant aux leçons + dans le premier element on compte les devs possibles pour cette leçon + dans le deuxième on ne compte que ceux qui sont sensé être connu + + Arguments: + - `self`: + """ + # Initialisation du dico des du nombre de dev par leçons + self.nbr_dev_lecon = dict() + for l in liste_lecon: + self.nbr_dev_lecon[l] = [0,0] + + for d in self.dev: + for l in d.lecon: + self.nbr_dev_lecon[int(l)][0] += 1 + + if d.connu: + self.nbr_dev_lecon[int(l)][1] += 1 def nbr_dev(self): """ Calcul et trie le nombre de developpement par lecon et stock la liste dans lecon_nbr_dev @@ -120,7 +142,7 @@ class Agreg(): self.lecon_nbr_dev = sorted(self.lecon_nbr_dev, reverse=True, key=itemgetter(1)) def score_dev(self): - """ Calcul le score/avancement dans nos lecons + """ Calcul le score/avancement de l'elaboration des leçons et de leurs connaissance (théorique) Arguments: - `self`: @@ -128,13 +150,17 @@ class Agreg(): # Calcul du nombre de développement effectué (pas plus de 2 par lecon sinon c'est triché!) score = 0 - for l in self.lecon.values(): - score += min(2, len(l.dev)) + score_connu = 0 + + for n in self.nbr_dev_lecon.values(): + score += min(n[0],2) + score_connu += min(n[1],2) # Nombre total de développement nécessaire nbr_dev_tot = 2 * len(self.lecon) self.score = score / nbr_dev_tot * 100 + self.score_connu = score_connu / nbr_dev_tot * 100 @@ -142,15 +168,13 @@ class Agreg(): def print_analyse_dev(self): """ Affiche le nombre de developpement par lecon en ordre décroissant - Arguments: - `self`: """ # On calcul et trie le nombre de dev - self.nbr_dev() + self.compte_dev() - for i, n in self.lecon_nbr_dev: - self.lecon[i].print_nbr_dev() + self.print_nbr_dev() self.score_dev() if self.score != 100: @@ -158,6 +182,11 @@ class Agreg(): else: print("\n Bien joué! Toutes les lecons au moins deux développements!") + if self.score_connu != 100: + print("\n Courage! T'en connais déjà {score}% c'est déjà pas mal non?".format(score = self.score_connu)) + else: + print("\n Bien joué! Toutes les lecons au moins deux développements! Et tu les connais!") + def print_lecon_from_int(self, num = 101): """ Écrit le nom des développements en relation avec la leçonà partir du numero de la lecon @@ -197,21 +226,23 @@ class Agreg(): for d in [d for d in self.dev if divers.normalise_str(chaine) in divers.normalise_str(d.nom)]: d.print_info() - + + def print_nbr_dev(self): + """Affiche le nombre de dev et de dev connu pour les lecons""" + print("Connue , Envisagée numero: nom") + for l,n in self.nbr_dev_lecon.items(): + + color_defaut = "\033[00m" + color_print = color_defaut + if n[1] >= 2: # Chic j'ai deux dev pour cett lecon + color_print = "\033[0,32m" + if n[1] ==1: # Encore un de plus + color_print = "\033[0,33m" + + print(color_print + "{connu} , {envi} {num}: {nom}".format(connu = n[1] , envi = n[0] , num = l , nom=divers.dico_nom_lecon[str(l)]) + color_defaut ) + if __name__ == '__main__': - # agreg = Agreg() - # agreg.import_dev('/media/documents/Cours/Agreg/developpement/mes_dev/') - # # agreg.analyse_dev() - # # for num in dico_nom_lecon: - # # agreg.print_lecon_dev(num) - # agreg.extract_from_dev() - # # agreg.print_analyse_dev() - # agreg.print_lecon_dev(213) - # agreg.print_lecon_dev(201) - # agreg.print_lecon_dev(234) - # agreg.print_lecon_dev(245) - # Pour analyser les options qu'on lui demande parser = optparse.OptionParser() diff --git a/config.py b/config.py index e71ad2d..0eac47a 100644 --- a/config.py +++ b/config.py @@ -1,5 +1,5 @@ # Fichier configuration -lieu_dev = "developpements/" -lieu_lecon = "lecons/" -lieu_bouquin = "bouquins/" +lieu_dev = "../developpement/mes_dev/" +lieu_lecon = "../lecons/" +lieu_bouquin = "../Bouquins/" diff --git a/dev.py b/dev.py index 8a4e04e..33a6459 100755 --- a/dev.py +++ b/dev.py @@ -45,13 +45,21 @@ class Dev(): # Extraction du nom du developpement self.nom = self.document.getElementsByTagName('dev')[0].getAttribute("nom") + # On vérifie s'il est sensé être connu + self.connu = self.document.getElementsByTagName('dev')[0].getAttribute("connu") + # des lecons for lecon in self.document.getElementsByTagName('lecon'): self.lecon += [lecon.getAttribute("num")] # des bouquins for book in self.document.getElementsByTagName('book'): - self.book += [book.getAttribute("nom") , book.getAttribute("auth") , book.getAttribute("isbn") , book.getAttribute("pg")] + self.add_book({"nom" : book.getAttribute("nom") ,"auth" : book.getAttribute("auth") ,"isbn" : book.getAttribute("isbn") ,"pg": book.getAttribute("pg")}) + + try: + self.commentaire = self.document.getElementsByTagName('commentaire')[0].childNodes[0].nodeValue + except: + self.commentaire = "" # -------------------- Création et ajout d'information sur d'un développement @@ -72,20 +80,20 @@ class Dev(): # print(self.document.toprettyxml()) - def add_book(self, book = ["nom", "auth", "isbn", "pg"] ): + def add_book(self, book = {"nom" : "", "auth" : "", "isbn" : "", "pg" : ""} ): """ Ajoute un bouquin en relation avec ce developpement Arguments: - `self`: - - `book`: sous la forme suivante ["nom", "auth", "isbn", "pg"] + - `book`: sous la forme suivante {"nom" : "", "auth" : "", "isbn" : "", "pg" : ""} """ self.book += [book] element = self.document.createElement("book") - element.setAttribute("nom", book[0]) - element.setAttribute("auth", book[1]) - element.setAttribute("isbn", book[2]) - element.setAttribute("pg", book[3]) + element.setAttribute("nom", book["nom"]) + element.setAttribute("auth", book["auth"]) + element.setAttribute("isbn", book["isbn"]) + element.setAttribute("pg", book["pg"]) racine = self.document.getElementsByTagName('dev')[0] racine.appendChild(element) @@ -110,6 +118,26 @@ class Dev(): # print(self.document.toprettyxml()) + + def add_comment(self, comment): + """ Ajoute un commentaire + + Arguments: + - `self`: + - `comment`: le commentaire + """ + self.commentaire = comment + + element = self.document.createElement("commentaire") + com = self.document.createTextNode(comment) + element.appendChild(com) + + racine = self.document.getElementsByTagName('dev')[0] + racine.appendChild(element) + + # print(self.document.toprettyxml()) + + # -------------------- Concernant le Prompt def from_prompt(self): @@ -135,6 +163,8 @@ class Dev(): self.prompt_add_lecon() + self.prompt_add_comment() + print("\n ---------- Voila fini! ----------\n ") @@ -171,8 +201,14 @@ class Dev(): print("page") pg = input() - self.add_book([nom , auth , ref , pg]) + self.add_book({"nom" : nom , "auth" : auth ,"isbn" : ref , "pg" : pg}) + def prompt_add_comment(self): + """Prompt pour ajouter un commentaire""" + print("\n ---------- Ajout d'un commentaire ---------- \n Attention il vaut mieux ne pas faire entrer... ") + comment = input() + + self.add_comment(comment) # -------------------- Affichage @@ -183,14 +219,21 @@ class Dev(): - `self`: """ print(" \n ---------- Informations sur :{nom} ".format(nom = self.nom)) + if self.connu: + print("Ce développement est sensé être connu!") + print(" --- Leçons --- ") for l in self.lecon: lec = lecon.Lecon() lec.from_scratch(l) lec.print_nom() - # print(" --- Bouquins --- ") + print(" --- Bouquins --- ") + for b in self.book: + print("{nom} -- {aut} -- {isbn} p{pg}".format(nom = b["nom"] , aut = b["auth"] , isbn = b["isbn"] , pg = b["pg"])) + print(" --- Commentaire --- ") + print(self.commentaire) # -------------------- Sauvegarde diff --git a/divers.py b/divers.py index e8a2b7d..33bece7 100644 --- a/divers.py +++ b/divers.py @@ -14,3 +14,13 @@ def normalise_str(chaine): - `chaine`: """ return unicodedata.normalize('NFKD', chaine).encode('ASCII', 'ignore').lower() + + + +# ---------------------------------------- +# Les listes des lecons + + +liste_lecon = ( 101 , 103 , 104 , 105 , 106 , 107 , 108 , 109 , 110 , 111 , 112 , 113 , 114 , 116 , 117 , 119 , 120 , 123 , 124 , 125 , 126 , 127 , 128 , 130 , 131 , 132 , 133 , 135 , 136 , 137 , 139 , 140 , 141 , 144 , 145 , 146 , 148 , 149 , 201 , 202 , 203 , 204 , 205 , 206 , 207 , 208 , 213 , 214 , 215 , 216 , 217 , 218 , 219 , 220 , 221 , 223 , 224 , 226 , 228 , 229 , 230 , 232 , 234 , 235 , 236 , 238 , 239 , 240 , 241 , 242 , 243 , 245 , 246 , 247 , 249 , 250 , 251 , 252 , 253 , 254 , 255 , 256 ) + +dico_nom_lecon = { '101' : "Groupe opérant sur un ensemble. Exemples et applications." , '103' : "Exemples et applications des notions de sous-groupe distingué et de groupes quotient." , '104' : "Groupes finis. Exemples et applications." , '105' : "Groupe des permutations d'un ensemble fini. Applications." , '106' : "Groupe linéaire d'un espace vectoriel de dimension finie E, sous-groupes de GL(E). Applications" , '107' : "Représentations et caractères des groupes finis sur un espace vectoriel complexe" , '108' : "Exemples de parties génératrices d'un groupe. Applications." , '109' : "Anneau Z/nZ. Applications." , '110' : "Nombres premiers. Applications." , '111' : "Anneaux principaux. Applications" , '112' : "Corps finis. Applications." , '113' : "Groupe des nombres complexes de module 1. Sous-groupes des racines de l'unité. Applications." , '114' : "Anneau des séries formelles. Applications" , '116' : "Polynômes irréductibles à une indéterminée. Corps de rupture. Exemples et applications." , '117' : "Algèbre des polynômes à plusieurs inderterminées; aspects théoriques et applications" , '119' : "Exemples d'actions de groupes sur les espaces de matrices" , '120' : "Dimension d'un espace vectoriel (on se limitera au cas de dimension finie). Rang. Exemples et applications." , '123' : "Déterminant. Exemples et applications." , '124' : "Polynôme d'endomorphismes en dimension finie. Applications à la réduction d'un endomorphisme en dimension finie." , '125' : "Sous-espaces stables d'un endomorphisme ou d'une famille d'endomorphisme d'un espace vectoriel de dimension finie. Applications." , '126' : "Endomorphismes diagonalisables en dimension finie" , '127' : "Exponentielle de matrices. Applications." , '128' : "Endomorphismes trigonalisables. Endomorphismes nilpotents." , '130' : "Matrices symétriques réelles, matrices hermitiennes." , '131' : "Formes quadratiques sur un espace vectoriel de dimension finie. Orthogonalité, isotropie. Applications" , '132' : "Formes linéaires et hyperplans en dimension finie. Exemples et applications." , '133' : "Endomorphismes remarquables d'un espace vectoriel euclidien de dimension finie." , '135' : "Isométries d'un espace affine euclidien de dim finie. Formes réduites. Applications en dim 2 et 3." , '136' : "Coniques. Applications." , '137' : "Barycentres dans un espace affine réel de dimension finie, convexité. Applications" , '139' : "Application des nombres complexes à la géométrie" , '140' : "Systèmes linéaires;opérations, aspects algorithmiques et conséquences théoriques" , '141' : "Utilisation des groupes en géométrie." , '144' : "Problèmes d'angles et de distances en dimension 2 ou 3." , '145' : "Méthodes combinatoires, problèmes de dénombrement." , '146' : "Résultant. Applications" , '148' : "Formes quadratiques réelles. Exemples et applications." , '149' : "Représentations des groupes finis de petit cardinal" , '201' : "Espaces de fonctions. Exemples et applications." , '202' : "Exemples de parties denses et applications." , '203' : "Utilisation de la notion de compacité." , '204' : "Connexité. Exemples et applications." , '205' : "Espaces complets. Exemples et applications." , '206' : "Théorèmes de point fixe. Exemples et applications." , '207' : "Prolongement de fonctions. Exemples et applications." , '208' : "Espaces vectoriels normés, applications linéaires continues . Exemples" , '213' : "Espaces de Hilbert, bases hilbertiennes. Exemples et applications." , '214' : "Théorème d'inversion locale, théorème des fonctions implicites. Exemples et applications." , '215' : "Applications différentiables définies sur un ouvert de Rn. Exemples et applications." , '216' : "Etude métrique des courbes. Exemples" , '217' : "Sous-variétés de Rn, exemples" , '218' : "Applications des formules de Taylor." , '219' : "Problèmes d'extremum." , '220' : "Equations différentielles X ' = f(t, X), exemples d'études qualitatives des solutions." , '221' : "Equations différentielles linéaires. Systèmes d'équations différentielles linéaires. Exemples et applications." , '223' : "Convergence des suites numériques. Exemples et applications." , '224' : "Comportement asymptotique des suites numériques. Rapidité de convergence. Exemples." , '226' : "Comportement d'une suite réelle ou vectorielle définie par une itération un+1 = f (un). Exemples." , '228' : "Continuité et dérivabilité des fonctions réelles d'une variable réelle. Exemples et contrexemples." , '229' : "Fonctions monotones. Fonctions convexes. Exemples et applications." , '230' : "Séries de nombres réels ou complexes. Comportement des restes ou des sommes partielles des séries numériques. Exemples." , '232' : "Méthodes d'approximation des solutions d'une équation F(X) = 0. Exemples." , '234' : "Espaces Lp." , '235' : "Suites et séries de fonctions intégrables. Exemples et applications." , '236' : "Illustrer par des exemples quelques méthodes de calcul d'intégrales de fonctions d'une ou plusieurs variables réelles." , '238' : "Méthodes de calcul approché d'intégrales et d'une solution d'équation différentielle." , '239' : "Fonctions définies par une intégrale dépendant d'un paramètre. Exemples et applications" , '240' : "Transformation de Fourier, produit de convolution. Applications." , '241' : "Suites et Séries de fonctions. Exemples et contre-exemples." , '242' : "Utilisation en probabilités des transformations de Fourier ou de Laplace et du produit de convolution" , '243' : "Convergence des séries entières, propriétés de la somme. Exemples et applications." , '245' : "Fonctions holomorphes et méromorphes sur un ouvert de C." , '246' : "Séries de Fourier. Exemples et applications." , '247' : "Exemples de problèmes d'interversion de limites." , '249' : "Suites de variables de Bernoulli indépendantes." , '250' : "Loi des grands nombres, théorème de la limite centrale. Applications." , '251' : "Indépendance d'événements et de variables aléatoires. Exemples." , '252' : "loi binomiale, loi de Poisson - Applications" , '253' : "Utilisation de la notion de convexité en analyse." , '254' : "Espace de Schwartz et distributions tempérées." , '255' : "Dérivation au sens des distributions . Exemples et applications." , '256' : "Transformation de Fourier dans S(Rd) et S'(Rd)." } diff --git a/lecon.py b/lecon.py index 8c0171e..f3ba399 100644 --- a/lecon.py +++ b/lecon.py @@ -5,8 +5,7 @@ import xml.dom.minidom as md import os import config - -dico_nom_lecon = { '101' : "Groupe opérant sur un ensemble. Exemples et applications." , '103' : "Exemples et applications des notions de sous-groupe distingué et de groupes quotient." , '104' : "Groupes finis. Exemples et applications." , '105' : "Groupe des permutations d'un ensemble fini. Applications." , '106' : "Groupe linéaire d'un espace vectoriel de dimension finie E, sous-groupes de GL(E). Applications" , '107' : "Représentations et caractères des groupes finis sur un espace vectoriel complexe" , '108' : "Exemples de parties génératrices d'un groupe. Applications." , '109' : "Anneau Z/nZ. Applications." , '110' : "Nombres premiers. Applications." , '111' : "Anneaux principaux. Applications" , '112' : "Corps finis. Applications." , '113' : "Groupe des nombres complexes de module 1. Sous-groupes des racines de l'unité. Applications." , '114' : "Anneau des séries formelles. Applications" , '116' : "Polynômes irréductibles à une indéterminée. Corps de rupture. Exemples et applications." , '117' : "Algèbre des polynômes à plusieurs inderterminées; aspects théoriques et applications" , '119' : "Exemples d'actions de groupes sur les espaces de matrices" , '120' : "Dimension d'un espace vectoriel (on se limitera au cas de dimension finie). Rang. Exemples et applications." , '123' : "Déterminant. Exemples et applications." , '124' : "Polynôme d'endomorphismes en dimension finie. Applications à la réduction d'un endomorphisme en dimension finie." , '125' : "Sous-espaces stables d'un endomorphisme ou d'une famille d'endomorphisme d'un espace vectoriel de dimension finie. Applications." , '126' : "Endomorphismes diagonalisables en dimension finie" , '127' : "Exponentielle de matrices. Applications." , '128' : "Endomorphismes trigonalisables. Endomorphismes nilpotents." , '130' : "Matrices symétriques réelles, matrices hermitiennes." , '131' : "Formes quadratiques sur un espace vectoriel de dimension finie. Orthogonalité, isotropie. Applications" , '132' : "Formes linéaires et hyperplans en dimension finie. Exemples et applications." , '133' : "Endomorphismes remarquables d'un espace vectoriel euclidien de dimension finie." , '135' : "Isométries d'un espace affine euclidien de dim finie. Formes réduites. Applications en dim 2 et 3." , '136' : "Coniques. Applications." , '137' : "Barycentres dans un espace affine réel de dimension finie, convexité. Applications" , '139' : "Application des nombres complexes à la géométrie" , '140' : "Systèmes linéaires;opérations, aspects algorithmiques et conséquences théoriques" , '141' : "Utilisation des groupes en géométrie." , '144' : "Problèmes d'angles et de distances en dimension 2 ou 3." , '145' : "Méthodes combinatoires, problèmes de dénombrement." , '146' : "Résultant. Applications" , '148' : "Formes quadratiques réelles. Exemples et applications." , '149' : "Représentations des groupes finis de petit cardinal" , '201' : "Espaces de fonctions. Exemples et applications." , '202' : "Exemples de parties denses et applications." , '203' : "Utilisation de la notion de compacité." , '204' : "Connexité. Exemples et applications." , '205' : "Espaces complets. Exemples et applications." , '206' : "Théorèmes de point fixe. Exemples et applications." , '207' : "Prolongement de fonctions. Exemples et applications." , '208' : "Espaces vectoriels normés, applications linéaires continues . Exemples" , '213' : "Espaces de Hilbert, bases hilbertiennes. Exemples et applications." , '214' : "Théorème d'inversion locale, théorème des fonctions implicites. Exemples et applications." , '215' : "Applications différentiables définies sur un ouvert de Rn. Exemples et applications." , '216' : "Etude métrique des courbes. Exemples" , '217' : "Sous-variétés de Rn, exemples" , '218' : "Applications des formules de Taylor." , '219' : "Problèmes d'extremum." , '220' : "Equations différentielles X ' = f(t, X), exemples d'études qualitatives des solutions." , '221' : "Equations différentielles linéaires. Systèmes d'équations différentielles linéaires. Exemples et applications." , '223' : "Convergence des suites numériques. Exemples et applications." , '224' : "Comportement asymptotique des suites numériques. Rapidité de convergence. Exemples." , '226' : "Comportement d'une suite réelle ou vectorielle définie par une itération un+1 = f (un). Exemples." , '228' : "Continuité et dérivabilité des fonctions réelles d'une variable réelle. Exemples et contrexemples." , '229' : "Fonctions monotones. Fonctions convexes. Exemples et applications." , '230' : "Séries de nombres réels ou complexes. Comportement des restes ou des sommes partielles des séries numériques. Exemples." , '232' : "Méthodes d'approximation des solutions d'une équation F(X) = 0. Exemples." , '234' : "Espaces Lp." , '235' : "Suites et séries de fonctions intégrables. Exemples et applications." , '236' : "Illustrer par des exemples quelques méthodes de calcul d'intégrales de fonctions d'une ou plusieurs variables réelles." , '238' : "Méthodes de calcul approché d'intégrales et d'une solution d'équation différentielle." , '239' : "Fonctions définies par une intégrale dépendant d'un paramètre. Exemples et applications" , '240' : "Transformation de Fourier, produit de convolution. Applications." , '241' : "Suites et Séries de fonctions. Exemples et contre-exemples." , '242' : "Utilisation en probabilités des transformations de Fourier ou de Laplace et du produit de convolution" , '243' : "Convergence des séries entières, propriétés de la somme. Exemples et applications." , '245' : "Fonctions holomorphes et méromorphes sur un ouvert de C." , '246' : "Séries de Fourier. Exemples et applications." , '247' : "Exemples de problèmes d'interversion de limites." , '249' : "Suites de variables de Bernoulli indépendantes." , '250' : "Loi des grands nombres, théorème de la limite centrale. Applications." , '251' : "Indépendance d'événements et de variables aléatoires. Exemples." , '252' : "loi binomiale, loi de Poisson - Applications" , '253' : "Utilisation de la notion de convexité en analyse." , '254' : "Espace de Schwartz et distributions tempérées." , '255' : "Dérivation au sens des distributions . Exemples et applications." , '256' : "Transformation de Fourier dans S(Rd) et S'(Rd)." } +import divers # -------------------------------------------------- @@ -67,8 +66,8 @@ class Lecon(): """ self.num = str(num) - if self.num in dico_nom_lecon: - self.nom = dico_nom_lecon[self.num] + if self.num in divers.dico_nom_lecon: + self.nom = divers.dico_nom_lecon[self.num] self.document=md.Document() racine = self.document.createElement("lecon") diff --git a/liste_lecon b/liste_lecon index 5892bdd..f56d770 100644 --- a/liste_lecon +++ b/liste_lecon @@ -36,6 +36,8 @@ 146 Résultant. Applications 148 Formes quadratiques réelles. Exemples et applications. 149 Représentations des groupes finis de petit cardinal +150 Racines d'un polynôme, fonctions symétriques, localisation des racines (cas réél et complexe) +151 Extensions de corps. Exemples et applications. 201 Espaces de fonctions. Exemples et applications. 202 Exemples de parties denses et applications. 203 Utilisation de la notion de compacité. diff --git a/notes b/notes index 82684ca..0278e3b 100644 --- a/notes +++ b/notes @@ -1,3 +1,4 @@ - * Dans Gourdon (et certainement Rouvière) regrader extrema lié - * Verifier dans le Toulouse si test du khi2 passe pour Poisson-Binômiale + * Verifier dans le Toulouse si test du khi2 passe pour Poisson-Binômiale et le théorème de Cochran (potentiel dev pour les formes quadratiques) * Jeter un coup d'oeil à la méthode du gradiant optimal + * fonctions lipschitziennes dans le Brezis avec vocabulaire des distribs :D + * thm de Wantzel en BU math 512.3 CAR