Programmer et démontrer

Manipuler des listes Python, distinguer expérimentation et preuve et utiliser contre-exemple, contraposée ou disjonction des cas.

Environ 35 minutes

  • Générer, modifier et parcourir des listes
  • Utiliser connecteurs, quantificateurs et ensembles
  • Distinguer tests, conjectures et démonstrations
Sommaire
  1. Générer et parcourir une liste
  2. Préciser ce qu’une affirmation veut dire
  3. Passer d’une vérification à une démonstration
  4. Rédiger une démarche vérifiable

Cent résultats corrects suffisent-ils à prouver une règle ?

Un ordinateur teste rapidement des cas, mais une affirmation sur tous les nombres exige une justification générale. Tu vas apprendre à lire les listes et les conditions, puis à choisir entre chercher un contre-exemple et démontrer. La programmation aide à explorer ; le domaine et la logique rendent la conclusion précise.

Générer et parcourir une liste

Programmer permet de calculer de nombreux exemples, de repérer une régularité et de chercher un cas qui résiste. Démontrer demande autre chose : expliquer pourquoi une propriété vaut pour tous les objets annoncés. Les deux démarches se complètent à condition de préciser leur rôle. Un programme peut aussi être l’objet du raisonnement lorsque l’on explique ce que ses variables représentent et ce que chaque instruction conserve.

Un automatisme est une procédure comprise et suffisamment maîtrisée pour être mobilisée rapidement. Il se travaille aussi pendant la programmation : prévoir le signe, estimer un ordre de grandeur et reconnaître une factorisation évitent des résultats absurdes. Par exemple, une hausse de 20 % suivie d’une baisse de 10 % multiplie une valeur par 1,2 × 0,9 = 1,08 ; l’évolution globale est une hausse de 8 %. On ne remplace pas ce calcul par la différence des pourcentages. Le programme peut appliquer les facteurs, mais le raisonnement explique leur choix.

Une liste Python est une collection ordonnée de valeurs. On peut la donner en extension, par exemple L = [0, 1, 4, 9, 16, 25], la construire par ajouts successifs avec append, ou la définir en compréhension. Les indices commencent à 0 : L[0] est le premier élément. Une liste de longueur n a des indices de 0 à n − 1. L’expression len(L) donne sa longueur.

La valeur d’indice 3 est 9. La liste possède six éléments, mais son dernier indice est 5.

Exemple résolu

On exécute L = [n*n for n in range(6)]. Quelle liste obtient-on ? Que valent L[3], len(L) et la dernière valeur ?

  1. Étape 1 : range(6) fournit les entiers 0, 1, 2, 3, 4 et 5. La borne 6 est exclue.
  2. Étape 2 : La compréhension élève chaque entier au carré, d’où L = [0, 1, 4, 9, 16, 25].
  3. Étape 3 : L’indice 3 désigne le quatrième élément, donc L[3] = 9. La longueur vaut 6 et le dernier élément est L[5] = 25.
  4. Étape 4 : On peut contrôler la dernière valeur avec L[-1], car Python autorise aussi des indices négatifs comptés depuis la fin.

Résultat : La liste contient six carrés, de 0² à 5². Sa longueur et son dernier indice ne sont pas égaux.

Piège à éviter : Inclure 6² confondrait le nombre d’entiers fournis par range(6) et sa borne supérieure exclue.

Pour parcourir une liste, on peut travailler sur ses valeurs ou sur ses indices. Une somme de valeurs peut être obtenue par sum(L). Une compréhension peut filtrer les éléments : [x for x in L if x > 10] conserve ceux qui dépassent 10. Ajouter avec L.append(36) place 36 à la fin ; L.pop() retire et renvoie le dernier élément ; L.remove(9) retire la première occurrence de la valeur 9 si elle existe. Ces opérations modifient la liste.

À toi d'essayer

On définit L = [2*n + 1 for n in range(5)]. Donne la liste, puis le résultat de [x for x in L if x > 5].

Voir la réponse

La première liste est [1, 3, 5, 7, 9]. Le filtre conserve [7, 9]. L’entier 5 n’est pas gardé car la condition est strictement supérieure à 5.

Préciser ce qu’une affirmation veut dire

Une proposition mathématique peut être vraie ou fausse. Le connecteur « et » exige que les deux propositions soient vraies ; le connecteur « ou » est inclusif : au moins une doit être vraie, éventuellement les deux. En Python, ces connecteurs s’écrivent and et or. Une condition de filtre utilise ces règles : demander x > 0 and x < 1 conserve exactement les valeurs dans ]0 ; 1[.

L’implication « si P, alors Q » affirme que toute situation vérifiant P vérifie aussi Q. P est alors une condition suffisante pour Q, et Q une condition nécessaire pour P. La réciproque échange les rôles : « si Q, alors P ». Elle n’est pas automatiquement vraie. Une équivalence affirme les deux implications, qu’il faut donc justifier toutes deux.

Une phrase quantifiée précise l’ensemble étudié. « Pour tout réel x » n’a pas le même sens que « il existe un réel x ». La négation de « tous les éléments vérifient P » est « il existe un élément qui ne vérifie pas P ». La négation de « il existe un élément qui vérifie P » est « aucun élément ne vérifie P ». Un contre-exemple suffit ainsi à réfuter une affirmation universelle.

Entre 0 et 1, la courbe est sous l’axe horizontal. Le point P fournit un contre-exemple à l’affirmation « x² ≥ x pour tout réel x ».

Exemple résolu

Un élève teste plusieurs entiers positifs et conjecture que x² ≥ x pour tout réel x. Réfute l’affirmation, puis détermine exactement où l’inégalité est vraie.

  1. Étape 1 : Les tests entiers ne couvrent pas tous les réels. On choisit x = 1/2 : x² = 1/4 < 1/2, donc l’affirmation universelle est fausse.
  2. Étape 2 : Pour déterminer les cas vrais, on écrit x² ≥ x si et seulement si x(x − 1) ≥ 0.
  3. Étape 3 : Le produit est positif ou nul lorsque les deux facteurs sont de même signe ou qu’un facteur est nul : x ≤ 0 ou x ≥ 1.

Résultat : Le nombre 1/2 est un contre-exemple. L’inégalité est vraie exactement sur ]−∞ ; 0] ∪ [1 ; +∞[.

Piège à éviter : Un grand nombre de tests réussis sur des entiers ne prouve rien pour les réels situés entre deux entiers.

Les ensembles organisent ces résultats : x ∈ A signifie que x appartient à A ; A ⊂ B indique une inclusion ; A ∩ B retient les éléments communs et A ∪ B ceux de l’un ou l’autre ensemble. Le complémentaire de A dans E contient les éléments de E qui ne sont pas dans A. Dans une liste filtrée, les éléments restent ordonnés et peuvent être répétés : une liste n’est donc pas simplement un ensemble.

À toi d'essayer

Écris la négation de « pour tout réel x de [0 ; 1], f(x) > 0 ». Faut-il prouver que f est négative partout pour réfuter la phrase ?

Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.

Passer d’une vérification à une démonstration

Pour montrer une implication, on peut partir de l’hypothèse et enchaîner des conséquences. On peut aussi démontrer sa contraposée : « si non Q, alors non P ». Cette proposition est équivalente à l’implication initiale. La réciproque et la contraposée sont donc deux objets différents : la première est une nouvelle affirmation, tandis que la seconde permet de démontrer l’affirmation de départ.

Exemple résolu

Démontre que, pour tout entier n, si n² est pair, alors n est pair. Quel rôle peut jouer une vérification informatique ?

  1. Étape 1 : On démontre la contraposée : si n est impair, alors n² est impair.
  2. Étape 2 : Un entier impair s’écrit n = 2k + 1 pour un entier k. Son carré vaut 4k² + 4k + 1 = 2(2k² + 2k) + 1.
  3. Étape 3 : Le nombre 2k² + 2k est entier, donc n² est impair. La contraposée est vraie ; l’implication initiale l’est aussi.
  4. Étape 4 : Un programme testant les entiers de 0 à 100 peut illustrer le résultat et repérer une erreur de saisie, mais la démonstration couvre tous les entiers.

Résultat : Si le carré d’un entier est pair, l’entier est pair. La forme algébrique de l’impair prouve le résultat sans limitation du nombre de cas.

Piège à éviter : Conclure après une boucle finie laisserait tous les entiers non testés sans justification.

Le raisonnement par disjonction des cas sépare un ensemble en situations qui le recouvrent. Par exemple, tout entier est pair ou impair : traiter ces deux cas couvre les entiers. Pour raisonner par l’absurde, on suppose la négation de la conclusion recherchée, puis on en déduit une contradiction avec une hypothèse ou un résultat établi. Chaque méthode doit préciser ce qui est supposé et à quel moment la contradiction ou la couverture des cas est obtenue.

Un programme doit lui aussi être expliqué. Une affectation remplace la valeur d’une variable : u ← u + 3 signifie qu’on ajoute 3 à l’ancienne valeur avant de la stocker. Ce n’est pas une égalité mathématique entre deux nombres fixes. Dans une répétition, les mises à jour suivent un ordre. Pour chercher un seuil d’une suite croissante, on initialise un terme et son indice, on les met à jour ensemble et on s’arrête lorsque le seuil demandé est atteint.

Les comparaisons numériques exigent aussi de la prudence. Des calculs avec des décimaux peuvent être arrondis par la machine ; une égalité théorique peut donc apparaître comme une très petite différence. Pour établir une identité, on transforme les expressions symboliques. Le calcul numérique sert à proposer ou à contrôler, et le raisonnement exact décide.

À toi d'essayer

Détermine la parité du produit n(n + 1) pour tout entier n. Propose un argument valable pour tous les entiers et explique pourquoi une liste de cent résultats ne suffit pas.

Correction détaillée pas à pasDans ce chapitre : 2 corrections détaillées.

Rédiger une démarche vérifiable

Au bac : lire un programme et construire une preuve

  1. Identifier les entrées, la signification des variables, le domaine mathématique et les bornes des répétitions.
  2. Simuler quelques étapes en séparant indice et valeur. Pour une liste, contrôler le premier et le dernier indice.
  3. Distinguer ce qui est observé, ce qui est conjecturé et ce qui est démontré. Choisir une transformation, un contre-exemple ou une méthode de preuve adaptée.
  4. Rédiger la conclusion avec son quantificateur et son domaine. Le calcul sans calculatrice demande des exemples courts et des expressions exactes.
Attention :

Erreurs fréquentes : oublier la borne exclue de range, confondre = et le test == en Python, modifier une liste sans en tenir compte ou utiliser une réciproque non démontrée. Une expérimentation réussie ne remplace pas l’argument qui couvre tous les cas annoncés.

Vocabulaire

Conjecture :
Affirmation proposée à partir d’observations et qui reste à démontrer ou à réfuter.
Contre-exemple :
Objet du domaine annoncé qui rend fausse une affirmation universelle.
Contraposée :
Implication obtenue en niant et en inversant hypothèse et conclusion.
Affectation :
Instruction qui attribue une nouvelle valeur à une variable.

Choisir son outil

SituationDémarche
ExplorerCalculer, filtrer, tester des cas.
Réfuter une phrase universelleTrouver un contre-exemple dans le domaine.
Prouver pour tousConstruire un raisonnement qui couvre le domaine entier.

À retenir

  • Une liste est ordonnée ; ses indices commencent à zéro.
  • Un contre-exemple réfute une affirmation universelle, mais des tests réussis ne la démontrent pas sur un domaine infini.
  • Une implication et sa contraposée sont équivalentes ; sa réciproque doit être étudiée séparément.
  • Une preuve annonce son domaine et justifie chaque étape.

Fiche de révision

Avant un programme, préciser ce que représentent les valeurs et les indices.

Avant une preuve, repérer le quantificateur et l’ensemble étudié.

Pour réfuter « tous », chercher un seul cas qui échoue. Pour prouver « il existe », fournir un cas qui réussit.

Pour n² pair ⇒ n pair, travailler sur l’impair donne une écriture générale simple.

Et maintenant ?

Tu as lu le cours. L’étape suivante tient en une action.

Relis le coursLes exercices de ce chapitre arrivent bientôt.

    Prolonge l’expérience !

    Continue à explorer ce chapitre à travers de nouvelles activités, des défis et des expériences interactives. Avec Premium, l’apprentissage continue !

    Ici, tu débloques aussi 2 corrections détaillées.

    Parent ? Suivez les progrès de votre enfant.

    Tous les cours de Mathématiques spécialité