From bea0350c9ca7ab07831b65923f678af1bdb6c867 Mon Sep 17 00:00:00 2001 From: Bertrand Benjamin Date: Mon, 25 May 2020 09:07:25 +0200 Subject: [PATCH] Feat: algo de seuil --- 1ST/Programmation/2-Fonctions.html | 93 ++++++++++++++-------------- 1ST/Programmation/2-Fonctions.ipynb | 95 +++++++++++++---------------- 2 files changed, 88 insertions(+), 100 deletions(-) diff --git a/1ST/Programmation/2-Fonctions.html b/1ST/Programmation/2-Fonctions.html index 60ae487..e64ca08 100644 --- a/1ST/Programmation/2-Fonctions.html +++ b/1ST/Programmation/2-Fonctions.html @@ -13422,7 +13422,7 @@ $$

Le faire de la sorte peut prendre beaucoup de temps et se serait se priver de faire travailler l'ordinateur à notre place

-

Pour réaliser plusieurs calculs de façon systématiques, on peut utiliser une boucle for.

+

Pour réaliser plusieurs calculs de façon systématiques, on peut utiliser une boucle for.

Ici la boucle va calculer les images par la fonction $f$ de tous les nombres de 0 à 9.

@@ -13470,7 +13470,7 @@ $$

    -
  • Approcher le maximum de la fonction $g$.
  • +
  • Calculer toutes les valeurs de $g(x)$ pour $x$ allant de -10 à 10.
@@ -13492,22 +13492,42 @@ $$

-

On peut aussi utiliser une boucle while (tant que).

-

Ici, on va calculer les images par la fonction $f$ des nombres entre 2 et 4 avec un pas de 0,1.

+

Algortihme de seuil

Dans cette partie, nous allons voir un algorithme "classique" dit algorithme de seuil. Le but de cet algorithme est de chercher à partir de quelle valeur de $x$ une fonction dépasse une certaine valeur.

+

Par exemple, on pourrait vouloir savoir à partir de quelle valeur de $x$, $f(x)$ est plus petit que -100 en partant de $x=0$ et avec une précision de 0,1.

+
    +
  • Faire cette recherche à la main en essayant de détailler votre démarche.
  • +
+ +
+
+
+
+
+
+

L'algorithme pourrait s'écrire en pseudo-code:

+ +
x <- 0
+pas <- 0,1
+tant que f(x) > -100 faire
+    x <- x + pas
+afficher x
+
+
+

Tant que se traduit en python par while. Ainsi l'algorithme précédent s'écrit en Python:

-
In [3]:
+
In [8]:
-
x = 2
+
x = 0
 pas = 0.1
-while x <= 4:
-    print("Quand x vaut", x, "f(x) vaut ", f(x))
-    x = x + 0.1
+while f(x) > -100:
+    x = x + pas
+print("Quand x dépasse", x, ",f(x) passe en dessous de -100", )
 
@@ -13524,26 +13544,7 @@ $$

-
Quand x vaut 2 f(x) vaut  5
-Quand x vaut 2.1 f(x) vaut  5.190000000000001
-Quand x vaut 2.2 f(x) vaut  5.359999999999999
-Quand x vaut 2.3000000000000003 f(x) vaut  5.51
-Quand x vaut 2.4000000000000004 f(x) vaut  5.640000000000001
-Quand x vaut 2.5000000000000004 f(x) vaut  5.75
-Quand x vaut 2.6000000000000005 f(x) vaut  5.84
-Quand x vaut 2.7000000000000006 f(x) vaut  5.91
-Quand x vaut 2.8000000000000007 f(x) vaut  5.960000000000001
-Quand x vaut 2.900000000000001 f(x) vaut  5.99
-Quand x vaut 3.000000000000001 f(x) vaut  6.000000000000002
-Quand x vaut 3.100000000000001 f(x) vaut  5.989999999999998
-Quand x vaut 3.200000000000001 f(x) vaut  5.959999999999999
-Quand x vaut 3.300000000000001 f(x) vaut  5.91
-Quand x vaut 3.4000000000000012 f(x) vaut  5.839999999999998
-Quand x vaut 3.5000000000000013 f(x) vaut  5.749999999999998
-Quand x vaut 3.6000000000000014 f(x) vaut  5.639999999999999
-Quand x vaut 3.7000000000000015 f(x) vaut  5.509999999999998
-Quand x vaut 3.8000000000000016 f(x) vaut  5.359999999999999
-Quand x vaut 3.9000000000000017 f(x) vaut  5.189999999999996
+
Quand x dépasse 13.299999999999969 ,f(x) passe en dessous de -100
 
@@ -13557,34 +13558,30 @@ Quand x vaut 3.9000000000000017 f(x) vaut 5.189999999999996

Les nombreux chiffres après la virgules (qui sont faux!) viennent de la façon de stocker les nombres à virgules dans l'ordinateur. Ils sont présents dans la majorité des programmes et il est difficile de les éviter. C'est une des raison pour laquelle on ne peut pas faire aveuglément confiance à un ordinateur.

    -
  • Écrire toutes les conversions de -100 à 100 degrés farhenheit vers les degrés celcius avec un pas de 10.
  • -
  • Affiner votre recherche de maximum de la fonction $g$ avec un pas de 0,1 puis de 0,01.
  • +
  • Trouver le plus petit $x$ tel que $g(x)$ passe en dessous 100 avec une précision de 0,1.
+
+
+
+
In [ ]:
+
+
+
 
+
+ +
+
+
+
-

Reçut/Recalé/mentions au bac

Au bac, on applique le barème suivant:

    -
  • Note strictement inférieure à 10: recalé
  • -
  • Note supérieure à 10: reçut
  • -
-

On peut y voir une fonction qui transforme une note en l'un des deux mots recalé ou reçut.

-
    -
  • Programmer cette fonction (aller voir du coté des if dans le mémo).
  • -
-

Parmi les reçuts, certains peuvent avoir des mentions:

-
    -
  • $10 \leq note < 12 $: pas de mentions
  • -
  • $12 \leq note < 14 $: Assez Bien
  • -
  • $14 \leq note < 16 $: Bien
  • -
  • $16 \leq note $: Très Bien

    -
  • -
  • Programmer cette fonction qui transforme une note en la mention.

    -
  • +
  • Trouver le plus petit 𝑥 tel que 𝑔(𝑥) passe en dessous 100 avec une précision de 0,01.
diff --git a/1ST/Programmation/2-Fonctions.ipynb b/1ST/Programmation/2-Fonctions.ipynb index f306de1..b081379 100644 --- a/1ST/Programmation/2-Fonctions.ipynb +++ b/1ST/Programmation/2-Fonctions.ipynb @@ -271,7 +271,7 @@ "source": [ "Le faire de la sorte peut prendre beaucoup de temps et se serait se priver de faire travailler l'ordinateur à notre place\n", "\n", - "Pour réaliser plusieurs calculs de façon systématiques, on peut utiliser ** une boucle ** `for`.\n", + "Pour réaliser plusieurs calculs de façon systématiques, on peut utiliser **une boucle** `for`.\n", "\n", "Ici la boucle va calculer les images par la fonction $f$ de tous les nombres de 0 à 9. " ] @@ -306,7 +306,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "* Approcher le maximum de la fonction $g$." + "- Calculer toutes les valeurs de $g(x)$ pour $x$ allant de -10 à 10." ] }, { @@ -320,49 +320,51 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "On peut aussi utiliser une boucle `while` (tant que).\n", + "## Algortihme de seuil\n", "\n", - "Ici, on va calculer les images par la fonction $f$ des nombres entre 2 et 4 avec un pas de 0,1." + "Dans cette partie, nous allons voir un algorithme \"classique\" dit algorithme de seuil. Le but de cet algorithme est de chercher à partir de quelle valeur de $x$ une fonction dépasse une certaine valeur.\n", + "\n", + "Par exemple, on pourrait vouloir savoir à partir de quelle valeur de $x$, $f(x)$ est plus petit que -100 en partant de $x=0$ et avec une précision de 0,1.\n", + "\n", + "- Faire cette recherche à la main en essayant de détailler votre démarche." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "L'algorithme pourrait s'écrire en pseudo-code:\n", + "\n", + " x <- 0\n", + " pas <- 0,1\n", + " tant que f(x) > -100 faire\n", + " x <- x + pas\n", + " afficher x\n", + "\n", + "**Tant que** se traduit en python par `while`. Ainsi l'algorithme précédent s'écrit en Python:\n" ] }, { "cell_type": "code", - "execution_count": 3, - "metadata": {}, + "execution_count": 8, + "metadata": { + "scrolled": true + }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ - "Quand x vaut 2 f(x) vaut 5\n", - "Quand x vaut 2.1 f(x) vaut 5.190000000000001\n", - "Quand x vaut 2.2 f(x) vaut 5.359999999999999\n", - "Quand x vaut 2.3000000000000003 f(x) vaut 5.51\n", - "Quand x vaut 2.4000000000000004 f(x) vaut 5.640000000000001\n", - "Quand x vaut 2.5000000000000004 f(x) vaut 5.75\n", - "Quand x vaut 2.6000000000000005 f(x) vaut 5.84\n", - "Quand x vaut 2.7000000000000006 f(x) vaut 5.91\n", - "Quand x vaut 2.8000000000000007 f(x) vaut 5.960000000000001\n", - "Quand x vaut 2.900000000000001 f(x) vaut 5.99\n", - "Quand x vaut 3.000000000000001 f(x) vaut 6.000000000000002\n", - "Quand x vaut 3.100000000000001 f(x) vaut 5.989999999999998\n", - "Quand x vaut 3.200000000000001 f(x) vaut 5.959999999999999\n", - "Quand x vaut 3.300000000000001 f(x) vaut 5.91\n", - "Quand x vaut 3.4000000000000012 f(x) vaut 5.839999999999998\n", - "Quand x vaut 3.5000000000000013 f(x) vaut 5.749999999999998\n", - "Quand x vaut 3.6000000000000014 f(x) vaut 5.639999999999999\n", - "Quand x vaut 3.7000000000000015 f(x) vaut 5.509999999999998\n", - "Quand x vaut 3.8000000000000016 f(x) vaut 5.359999999999999\n", - "Quand x vaut 3.9000000000000017 f(x) vaut 5.189999999999996\n" + "Quand x dépasse 13.299999999999969 ,f(x) passe en dessous de -100\n" ] } ], "source": [ - "x = 2\n", + "x = 0\n", "pas = 0.1\n", - "while x <= 4:\n", - " print(\"Quand x vaut\", x, \"f(x) vaut \", f(x))\n", - " x = x + 0.1" + "while f(x) > -100:\n", + " x = x + pas\n", + "print(\"Quand x dépasse\", x, \",f(x) passe en dessous de -100\", )" ] }, { @@ -371,33 +373,22 @@ "source": [ "Les nombreux chiffres après la virgules (qui sont faux!) viennent de la façon de stocker les nombres à virgules dans l'ordinateur. Ils sont présents dans la majorité des programmes et il est difficile de les éviter. C'est une des raison pour laquelle on ne peut pas faire aveuglément confiance à un ordinateur.\n", "\n", - "* Écrire toutes les conversions de -100 à 100 degrés farhenheit vers les degrés celcius avec un pas de 10.\n", - "* Affiner votre recherche de maximum de la fonction $g$ avec un pas de 0,1 puis de 0,01." + "\n", + "- Trouver le plus petit $x$ tel que $g(x)$ passe en dessous 100 avec une précision de 0,1.\n" ] }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Reçut/Recalé/mentions au bac\n", - "\n", - "Au bac, on applique le barème suivant:\n", - "\n", - "* Note strictement inférieure à 10: recalé\n", - "* Note supérieure à 10: reçut\n", - "\n", - "On peut y voir une fonction qui transforme une *note* en l'un des deux mots *recalé* ou *reçut*.\n", - "\n", - "* Programmer cette fonction (aller voir du coté des `if` dans le mémo).\n", - "\n", - "Parmi les reçuts, certains peuvent avoir des mentions:\n", - "\n", - "* $10 \\leq note < 12 $: pas de mentions\n", - "* $12 \\leq note < 14 $: Assez Bien\n", - "* $14 \\leq note < 16 $: Bien\n", - "* $16 \\leq note $: Très Bien\n", - "\n", - "* Programmer cette fonction qui transforme une note en la mention." + "- Trouver le plus petit 𝑥 tel que 𝑔(𝑥) passe en dessous 100 avec une précision de 0,01." ] }, { @@ -424,7 +415,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.8.2" + "version": "3.8.3" } }, "nbformat": 4,