Académique Documents
Professionnel Documents
Culture Documents
RésolutionDeSystemes 2021
RésolutionDeSystemes 2021
Un fichier de données data.py vous est fourni, il vous donne pour chaque fonction demandée
un jeu de tests : une liste L (données) et une liste SOL (solutions). Vous ne devez pas le
modifier.
Un fichier d’évaluation automatique eval.py vous sera fourni ultérieurement.
Vous devez rendre 2 fichiers :
• fonctions.py : ce fichier contiendra au moins les fonctions suivantes :
1. la fonction de l’exercice 1 de la feuille de TP nommée gauss
Rappel : la fonction gauss ne renvoie pas le système résolu mais seulement la liste
des indices des pivots.
2. la fonction teste_gauss déjà fournie : elle est utile pour vérifier la forme du système
"résolu" calculé dans la fonction gauss.
3. la fonction de l’exercice 2 de la feuille de TP nommée est_compatible
4. une fonction rang_fam qui prend une famille de vecteurs supposés tous de même
taille et renvoie son rang. Cette famille de vecteurs est représentée par une liste de
listes toutes de même longueur . On rappelle que le rang d’une famille de vecteurs
est égal au rang de la matrice dont les colonnes sont constituées des vecteurs de la
famille.
On pourra d’abord construire le système homogène associé à cette matrice puis
calculer son rang en remarquant que c’est la longueur de la liste des pivots renvoyée
par la fonction gauss.
Par exemple :
· rang_fam([[-3]])=1
· rang_fam([[Fraction(2, 7), Fraction(-1, 10)], [0, Fraction(1, 3)]])=2
· rang_fam([[Fraction(1, 1), Fraction(0, 1), Fraction(-80, 63)], [1,1,Fraction(-59,
63)]])=2
· rang_fam([[Fraction(0, 1), 2 , Fraction(1, 1)] , [ Fraction(-10, 21),0,0], [1,2,3]])=2
· rang_fam([[Fraction(0, 1), 0 , 0] , [0,0,0] ])=0
5. la fonction diff qui prend un entier n ≥ 0 et une liste d’entiers strictement crois-
sante L incluse dans la liste {0, · · · n − 1} et renvoie la liste croissante des entiers
de {0, · · · n − 1} non contenus dans L (c’est à dire le complémentaire de L dans
{0, · · · n − 1}).
Par exemple :
· diff(3,[0,2])=[1]
· diff(6,[0,1,3])=[2,4,5]
· diff(3,[0,1,2])=[]
Pensez aux listes en compréhension...
Cette fonction sera utile pour déterminer la liste des inconnues indépendantes dans
la fonction resoudre.
6. la fonction solH_egaux qui prend F1 et F2 2 familles de vecteurs (2 listes de listes
supposées toutes de même taille) et renvoie un booléen.
Si F1 et F2 sont vides on renvoie True.
Sinon l’un des deux est vide et pas l’autre on renvoie False.
Sinon, dans le cas général (F1 et F2 non vides), on renvoie le booléen V ect(F1 ) =
V ect(F2 ) . On utilisera le résultat suivant :
Par exemple :
· solS_egaux( [ [[4, 6], [[Fraction(2, 5), 1] ]] , [[2,1], [[20,50] ] ] ] )=True
· solS_egaux( [ [[Fraction(8, 5), 0], [[Fraction(2, 7), 1] ]] , [[2,1], [[2,5] ] ] ]=False ,
· solS_egaux( [ [[Fraction(2, 1), 1], [[Fraction(2, 5), 1], [1,0] ]] , [[1,1], [[0,1],[1,0] ]
] ] =True
Comme il n’y a pas unicité de l’écriture d’un espace affine sous la forme : solution
particulière +SH (v + V ect(F )), la fonction solS_egaux permet éventuellement de
savoir si le résultat de la fonction resoudre est correct lorsque le résultat obtenu n’a
pas la même forme que l’expression attendue.
8. la fonction de l’exercice 3 de la feuille de TP nommée resoudre
Vous placerez également dans ce fichier que toute autre fonction auxiliaire que vous
jugerez nécessaire de créer.
Il est obligatoire de créer des fonctions auxiliaires : a minima une
fonction pour permuter deux lignes, une fonction pour dilater une
ligne d’une matrice,... Il est souhaitable que vous en créiez un certain
nombre pour alléger votre code. D’une manière générale une fonction
dont le code ne tient pas tout entier à l’écran devrait être découpée
en fonctions auxiliaires !
1 Consignes de remise :
— vous devez coder en python3
— chacun des 2 fichiers fonctions.py et tests.py commencera par une ligne de commentaire
avec votre nom et prénom.
— seuls les fichiers .py seront acceptés (pas ipynb ou autre ...)
— vous créerez un répertoire nommé VotreNom_VotrePrenom contenant les 2 fichiers
fonctions.py et tests.py et un fichier VotreNom_VotrePrenom.pdf (décrit ci-dessous) puis
zipperez ce répertoire. Vous déposerez ce fichier zip sur moodle avant le dimanche 5
Décembre minuit.
Le non respect de ces consignes peut entraîner un malus de 3 points
2 Notation
• Résolution du système : 12 pts Validation automatique avec un fichier fourni ultérieu-
rement. Ce fichier d’évaluation est adossé au fichier de données fourni data.py.
• Tests unitaires : 3 pts
— tests unitaires des fonctions auxiliaires : les lignes de tests de chacune de vos fonc-
tions auxiliaires doivent figurer directement dans le fichier fonctions.py
— tests unitaires des fonctions demandées : ils sont placés dans le fichier tests.py
• Forme : 2 pts
— Pas de code intercalé dans les fonctions
— Explications dans le code quand cela est nécessaire
— Vous utiliserez au maximum la clause assert pour vérifier la cohérence des données
des fonctions
— Chaque définition de fonction sera précédée d’un cartouche (comme dans les fi-
chiers de départ déjà fournis dans des TP précédents (affichage_str) et précisant
les Entrées, les Sorties et l’action accomplie)
— Lisibilité du code : choix des identificateurs...
• Document texte explicatif : 3 pts
— au format pdf
— entre 1 et 2 pages
— il permet de préciser : quelle version de python, quel système d’exploitation vous
avez utilisé ; qu’est ce qui est opérationnel dans un temps acceptable (c’est à dire
quelques secondes) ; quels problèmes vous avez rencontré ; comment vous les avez
résolus ou pourquoi vous pensez ne pas y être parvenu ?
— il inclura une copie d’écran de l’exécution du programme de validation.
♦