TP¶
Accès aux logiciels et téléchargement du devoir¶
Pour cette semaine, le devoir sera essentiellement vide. L’utilisation du dépôt git sera principalement une manière pratique pour vous pour sauvegarder et transférer votre travail, et pour nous pour le consulter.
Consignes¶
Tout code non trivial doit être dans le fichier moncode.py
. S’il
devient trop long, vous pouvez créer d’autres fichiers, en les
mentionnant dans le rapport.
Toute fonction doit:
être documentés
la documentation doit inclure des exemples et une estimation rapide de la complexité algorithmique de la fonction;être testée
voir l’exemple fourni pour comment rédiger les tests sous forme de doctests;utiliser chaque fois que possible des annotations de type.
Vous devez avoir vérifié votre code avec un analyseur statique comme
pyflakes
ou mypy
.
Vous devez en outre rédiger dans rapport.md
un rapport concis
mettant en valeur votre travail: quelles exercices avez vous abordés,
traités; indiquer les fonctions implantées avec exemples, préciser les
difficultés rencontrées, …
Prise en main¶
Consulter les fichiers moncode.py et rapport.md.
Importer les objets définis dans moncode.py
et les recharger
automatiquement en cas de changement:
%load_ext autoreload
%autoreload 2
from moncode import *
Utilisation:
response("As-tu faim")
Consultation de la documentation:
response?
Vérifications statiques:
!pyflakes moncode.py
!mypy moncode.py
Lancement des tests:
!sage -t moncode.py
Indications¶
Pour utiliser des objets de Sage dans moncode.py
, par exemple pour
des annotations de type, il faut les importer:
from sage.all import matrix, GF # type:ignore
Gau߶
Implanter l’algorithme de Gauß de mise sous-forme échelon réduite d’une matrice à coefficients dans un corps.
def forme_echelon_réduite(m: matrix) -> matrix:
"""
Renvoie la matrice `m` mise sous forme échelon
"""
Test d’appartenance à un sous espace vectoriel¶
Soit V=(v_i)_i
une liste de vecteurs. On souhaite déterminer si un vecteur w
est dans le sous-espace vectoriel engendré par les (v_i)_i
.
Implanter une fonction:
def appartientSEV(V, w):
"""
Teste si `w` est engendré par les vecteurs dans `V`.
"""
Vous utiliserez la fonction forme_echelon_réduite
.
Pourrait-t’on se contenter d’une matrice sous forme échelon?