PIM - CC et CT

PIM - CC et CT

by FACCANONI Gloria -

Bonjour à tous,

Je souhaite aborder plusieurs points importants avec vous. Pour une lecture complète, lisez ce mail sur Moodle dans le forum Annonces.

Correction du CC

L...

more...

Bonjour à tous,

Je souhaite aborder plusieurs points importants avec vous. Pour une lecture complète, lisez ce mail sur Moodle dans le forum Annonces.

Correction du CC

La relecture des copies du CC est terminée. Maintenant, vous avez accès à plusieurs éléments :

  • votre note (j'ai laissé 4.5 points bonus : par exemple, si vous avez obtenu 15/24.5, votre note finale sera 15/20);
  • votre copie, accompagnée de suggestions de correction pour chaque question;
  • éventuellement, des commentaires ajoutés à vos codes.

Ne vous découragez pas si le résultat du CC n'est pas celui escompté. Cette note ne peut pas vous nuire ; elle ne peut qu'améliorer votre note finale si elle dépasse celle du CT. Le CC sert avant tout à évaluer où on en est. Si on a tout bien réussi, c'est super, mais son objectif principal est de repérer ce qu'il faut retravailler, ce qui n'est pas encore totalement maîtrisé. Il est important d'identifier précisément ce qui a pu poser problème : des erreurs de distraction ou dues au stress ou à une mauvaise compréhension, ou encore un manque de temps, ou bien d'autres raisons encore. L'important est de comprendre pourquoi on n'était pas encore totalement au point afin de pouvoir corriger cela pour le CT. Prenez le temps de lire les commentaires et n'hésitez pas à poser des questions si nécessaire.

Préparation du CT de janvier

Pour vous préparer, travaillez sur les nombreux exercices du polycopié. Tentez d'abord de trouver vos propres solutions, puis confrontez-les aux corrections pour vérifier l'exactitude et eventuellement découvrir une approche plus simple. Refaire le CC (et le test d'entraînement) selon cette même approche est vivement conseillé.

Rappels sur les tests en ligne

  • Durée : 2 heures à partir de la connexion au test (2h40 pour les étudiants bénéficiant d'un tiers temps).
  • Documents autorisés : une feuille A4 recto-verso manuscrite et vos fichiers de TP uniquement. Tout autre document (papier ou numérique) et tout appareil électronique sont interdits.
  • Correction : les questions sont sélectionnées aléatoirement, tout comme les tests pour évaluer vos codes. Chaque question suit un modèle "tout ou rien" : votre code est évalué et vous obtenez les points seulement si tous les tests sont réussis. Assurez-vous que votre résultat soit renvoyé par une fonction ou affiché dans un script, en respectant les consignes sur le type des données et le format de sortie.
    • Les tests sont aléatoires et peuvent être ajoutés ultérieurement. Le but n'est pas que votre code passe des tests (ce n'est pas un concours de programmation !) mais de vérifier vos acquis. Les tests aléatoires aident dans cette évaluation.
    • Même si vos tests passent, des erreurs peuvent subsister. Je reteste toutes les copies avec de nouveaux tirages aléatoires. C'est pourquoi vous devez utiliser des tests personnels rigoureux pour éviter des surprises lors de la correction.
    • Un échec des tests signifie probablement une erreur à corriger. Si vous avez des doutes, demandez de l'aide aux surveillants pour vérifier l'énoncé ou le code sur Moodle.
  • Types de réponse :
    • Fonctions pré-remplies : Complétez la fonction donnée, en respectant sa signature et son comportement. Renvoyez le résultat attendu (sans utiliser de print).
    • Scripts : Affichez le résultat en utilisant la fonction print.
    • Modules : Seul le module math est autorisé, importez-le uniquement si nécessaire.

Je vous souhaite de passer de très bonnes vacances.
Gloria Faccanoni

P.S. Suites

En étant en licence de mathématiques, la maîtrise de la construction des suites est fondamentale dans ce cours, qui vise l'utilisation de la programmation dans des contextes mathématiques, notamment en analyse numérique. Ainsi, je vous propose de regrouper les exercices du polycopié et du CC sur des suites en 4 catégories :

  1. \(u_n=f(n)\)
  2. \(u_{n+1} = f(u_n)\)
  3. \(u_{n+1} = f(u_n, u_{n-1})\)
  4. \((u_{n+1}, v_{n+1}) = (f_1(u_n, v_{n}), f_2(u_n, v_{n}))\)

Chaque catégorie est accompagnée d'un canevas de code pour vous guider.

Type \(u_n=f(n)\)
Dans ce type d'exercice, la construction de la suite consiste à appliquer une fonction explicite de l'indice n. Généralement, l'objectif est de déterminer le plus petit indice n pour lequel u_n satisfait une condition spécifique (recherche d'un seuil). Utilisez une boucle while, car le nombre d'itérations n'est pas prédéfini. La boucle doit se poursuivre tant que le critère n'est pas satisfait. Par exemple, si l'on cherche le plus petit \(n\) tel que f(n)>s, il faut répéter les calculs tant que f(n)<=s, car la négation de > est <=Voici un exemple de canevas :

n = # Initialisation
while not(f(n) > s): # Tant que la condition n'est pas satisfaite
    n += 1 # Incrément
print(f"Le plus petit n tel que f(n) > s est {n = }")

Type \(u_n=f(u_n)\)
Ces exercices impliquent une suite définie par récurrence où chaque terme dépend du précédent. Lorsque vous travaillez sur ces exercices avec un N donné, assurez-vous de calculer u_N et non u_{</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist"><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">N+1} ou u_{</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist"><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight">N-1}. Voici un exemple de canevas :

u = [u0] # Initialisation
N = # Les éléments de la suite ont pour indice n = 0...N
for n in range(0, N):
    u.append(f(u[n])) # ou u.append(f(u[-1]))
print(f"La suite contient {len(u)} éléments : {u = }")

Type \(u_n=f(u_n,u_{n-1})\)
Cette catégorie concerne des suites définies par récurrence sur deux pas, où chaque terme dépend non seulement du dernier terme de la suite, mais aussi de l'avant-dernier. Voici un exemple de canevas :

u = [u0, u1]  # Initialisation avec les deux premières valeurs u0 et u1
N = # Les éléments de la suite ont pour indice n = 0...N
for n in range(1, N):
    u.append(f(u[n], u[n - 1]))  # Calcul du terme suivant en utilisant f(u_n, u_{n-1})
print(f"La suite contient {len(u)} éléments : {u = }")

Type \( u_{n+1​},v_{n+1})=(f_1(u_n,v_n),f_2(u_n,v_n))\)
Ce type d'exercice implique une suite vectorielle définie par récurrence, où chaque terme dépend des termes précédents. Il est recommandé d'utiliser les affectations parallèles ou l'utilisation explicite de l'indice n pour éviter tout décalage entre u_{</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist"><span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">n</span><span class="mbin mtight">+</span>1}  et  v_{</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist"><span><span class="sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">n</span><span class="mbin mtight">+</span>1}. Voici un exemple de canevas :

u, v = [u0], [v0]  # Initialisation avec les premières valeurs u0 et v0
N = # Les éléments des suites ont pour indice n = 0...N
for n in range(0, N):
    u.append(f_1(u[n], v[n]))  # Calcul de u_{n+1} en utilisant f_1(u_n, v_n)
    v.append(f_2(u[n], v[n]))  # Calcul de v_{n+1} en utilisant f_2(u_n, v_n)
print(f"{u = }, {v = }")