Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#401 Re : Le coin des beaux problèmes de Géométrie » Hauteur d'un triangle » 08-07-2016 12:31:50

Bonjour,

Considérons un triangle ABC sans angle obtus. On note $a$, $b$ et $c$ les longueurs respectives des segments opposés aux sommets A, B et C.
Nous cherchons la longueur $h$ de la hauteur issue de A.

Le triangle n'ayant pas d'angle obtus, la hauteur issue de A coupe le segment [BC] en H.
On note $x$ et $y$ les longueurs respectives des segments [CH] et [BH].
On a donc $a=x+y$.

D'après Pythagore, on obtient les relations :
$b^2=x^2+h^2$     (1)
$c^2=y^2+h^2$     (2)

$b^2-c^2=x^2-y^2$     (1)-(2)
$b^2+c^2=x^2+y^2+2h^2$     (1)+(2)

$b^2-c^2=a(x-y)$
$b^2+c^2=a^2-2xy+2h^2$

On a donc
$\displaystyle h^2=\frac{-a^2+b^2+c^2+2xy}{2}$     (3)
avec $\displaystyle x=\frac{b^2-c^2+ay}{a}$
et $y=a-x$

En combinant les deux dernières relations, on obtient
$\displaystyle x=\frac{a^2+b^2-c^2}{2a}$
et $\displaystyle y=\frac{a^2-b^2+c^2}{2a}$

que l'on réinjecte dans (3) pour obtenir
$\displaystyle h^2=\frac{-a^2+b^2+c^2+(a^2-b^2+c^2)(a^2+b^2-c^2)}{4a^2}$


C'est une solution moins moche que celle à laquelle je m'attendais.
Je ne sais pas s'il existe une signification géométrique de ces $\pm a^2\pm b^2\pm c^2$.

Et il reste à vérifier si ça fonctionne aussi pour un triangle quelconque.

#402 Re : Café mathématique » Dlzlogic et les probabilités vs les forums de maths » 05-07-2016 12:39:54

Salut,

Il est tout à fait possible d'obtenir 100 piles d'affilé, ou même 10 000 ou $10^{10}$ piles d'affilé. C'est juste très peu probable. Et ce n'est surement jamais arrivé dans tout l'histoire du jeu de pile ou face.
Mais un truc bien avec les math, c'est qu'on s'en fout de la réalité.
Si la probabilité est non nulle (ce qui est le cas ici), alors c'est possible.
Certes d'un point de vue physique, c'est tout à fait négligeable, mais ce n'est pas notre problème ici.

Et en parlant de physique. Comme l'a dit Yassine, ta notion de quantité mesurable ou non ressemble fortement à notion physique de quantité extensive ou intensive. Quitte à utiliser des notions de physique, cela clarifierait un peu tes propos si tu utilisais le vocabulaire déjà admis par tous.

D'autant plus que je ne vois pas du tout l'intérêt de faire une telle distinction dans le cadre des probabilités.

Une petite question au passage : Le temps, tu le classes dans quelle catégorie? "mesurable" ou non?

#403 Re : Café mathématique » Apprendre les mathématiques : à quoi ça sert? » 04-07-2016 13:56:38

Re,

Je te répond rapidement.
Au sujet du redoublement, ça n'existe plus. Un conseil de classe n'a plus le droit de demander un redoublement. Il est obligé de proposer un passage en classe supérieure. Au pire, une réorientation, mais les places en pro sont de plus en plus chères. Et les commissions d'appels donnent de plus en plus souvent raison aux familles, même avec un dossier catastrophique. (Tu es trop gentil avec ton 9-10 de moyenne. Un 6 suffit.) Si redoublement il y a, il doit venir d'une demande de la famille.

Cette année, un peu plus d'un tiers de mes élèves de seconde avait forcé le passage en troisième malgré leur 6-7 de moyenne générale. Au dernier conseil de l'année, on a demandé de réorientation pour la plupart. Mais je sais très bien que je les retrouverai à la rentrée en première techno, voire général s'il n'y a plus de places en STMG.

En soit je ne suis pas contre la suppression du redoublement. Statistiquement, il semblerait qu'il fasse plus de mal que je bien. Mais une suppression pur et simple sans aucun accompagnement des élèves, soutien ou structure adaptée... ça je ne suis pas d'accord.

Mais au pire c'est pas très grave, le bac on peut leur donner s'ils le veulent... Je sors tout juste de commission de bac justement. Bah, je n'ai pas été déçu !
"Bon pour l'élève jean dubois (hein? c'est plus anonyme? ha bah non...), son dossier scolaire dit qu'il n'était pas très investi cette année, mais c'est quand même globalement positif, donc on va lui rajouter 2 points en math et 2 points en physique pour qu'il ait son bac."
Tout simplement hallucinant !

#404 Re : Café mathématique » Apprendre les mathématiques : à quoi ça sert? » 04-07-2016 00:20:13

Salut,

Voilà maintenant 3 ans que j'enseigne, et même si je m'y attendais, l'innumérisme m'a sauté à la gorge sans que je ne puisse rien faire. Toujours les mêmes prétextes : "Les math ça sert à rien.", "Dans ma famille on est nul en math de père en fils."...
De plus, n'ayant enseigné qu'au lycée, ces idées semblaient définitivement ancrées dans le cerveau de mes élèves. Un collègue m'expliquait qu'il préférait le collège car il avait encore l'espoir d'en sauver quelques uns. "Au lycée c'est trop tard."
Et j'ai eu beau me débattre toute l'année, rien n'y a fait. Les "mauvais" le sont restés. Et pire encore, les quelques bons élèves ont chuté considérablement, faute de leur accorder suffisamment d'attention pour les stimuler.
(Ça se sent que je suis vraiment déçu de mon année? ^^)
Avec en plus le fait que dans ces quartiers parfois difficiles, les élèves pensent qu'à cause de leur origines, ils ne pourront de toutes manières pas aller bien loin... Alors pourquoi se prendre la tête avec un truc ne leur servira pas à grand chose... Et l'enseignement français étant ce qu'il est, c'était difficile de les contredire.
[Fin de la minute où je me plaint]



Je n'ai pas assez de recul, mais je me pose la question "Y a-t-il vraiment une monté de l'innumérisme?".
Ce que je veux dire par là, c'est que certes les élèves actuels ont beaucoup de mal avec le calcul mental, mais quand était-il des élèves d'il y a 30 ou 60 ans?
Quand Yoshi prend l'exemple de cette personne âgée sachant faire de tête un rabais de 30% face à ce jeune vendeur qui lui ne sait pas, ce n'est pas tellement comparable. Savait-elle le faire quand elle était elle-même élève? Elle a eu toute une vie pour se rendre compte que ce n'est pas si inutile de savoir faire des calculs de tête et apprendre à le faire.



Et pour les causes, elles sont trop multiples et complexes pour les cibler si facilement. Sinon cela ferait longtemps que l'on aurait résolu le problème. [digression théorie du complot en fin de message]
Cependant je pense qu'une des raisons est que, de nos jours, on devient rarement prof par vocation.
Qui a vraiment envie d'être prof de nos jours? Les fous peut-être !
L'image du métier d'enseignant est assez mauvaise. Quand un prof n'est pas en grève, c'est qu'il est en arrêt maladie ou en formation...
Qu'il y ait un manque de reconnaissance de la part des élèves, c'est presque normal ; de leurs parents, bon pourquoi pas ; mais même de la hiérarchie, c'est... troublant. Après c'est peut-être un cas particulier des établissements dans lesquels j'ai travaillés.

On arrive maintenant assez facilement à la licence, pis on se rend compte qu'il n'y a pas de boulot.
"Le CRPE? C'est quoi ce truc? Pour devenir prof? C'est chiant comme taf ça... Ha mais ya que ça... Bah allons-y alors..."
Certains vont jusqu'au master, pis ya pas de boulot non plus, alors on passe le CAPES ou l'agreg.
On peut même tenter un doctorat, mais le résultat est le même.
Combien de mes camarades étudiants sont maintenant mes collègues? Alors certains y ont trouvé une véritable passion et adore ça, mais ça reste minoritaire.



[théorie du complot]
Une collègue m'a prêté un livre relatant l'histoire des enseignants avec un éclairage anarcho-syndicaliste.
Toute l'organisation de l'enseignement actuel depuis Ferry ne serait qu'une immense farce permettant de mieux contrôler le peuple.
Bon je grossis le trait. En vrai le livre est très bien écrit et est très intéressant.
Abolition des châtiments corporels, mixité à l'école, égalité de traitement des enseignants et enseignantes, droit de se syndiquer, droit de grève, encadrement des "déplacements d'office" et des révocations, ... tant de grandes causes qui nous paraissent si évidentes aujourd'hui (à moi en tout cas), mais qui ne l'était pas il y a moins d'un siècle. (1960 la mixité à l'école !)



@freddy : Un sage m'a dit un jour "Face à l'incompréhension, le silence est parfois la meilleure réponse."



PS : Je me rend compte après relecture que mon post est très négatif. Il n'en est rien de mon état d'esprit. Je suis extrêmement fier et heureux d'exercer ce métier.

PPS : Je me rend compte également que je pars dans tous les sens, et que par conséquent mon propos en perd. Bon courage à ceux qui essaieront de me répondre. Après une certaine heure il vaut mieux aller se coucher que d'écrire.
Surtout quand on est de commission de bac toute la journée le lendemain...

#405 Re : Café mathématique » Proposition » 26-06-2016 21:13:00

Bonsoir,

Je crois que je vais suivre le conseil de freddy.
J'ai essayé de m'accrocher sérieusement pour savoir s'il y avait peut-être quelque chose de novateur dans tout ton schmilblick, mais décidément je n'y arrive pas.

Si tu penses réellement détenir une théorie intéressante, propose la à des magazines spécialisés, des experts l'étudieront en détail. Mais tu devras tout d'abords apprendre le vocabulaire propre à se domaine plutôt que de chercher à réinventer l'eau chaude.

Peut-être es-tu le plus grand génie de ce siècle, mais si personne ne te comprend, ça ne sert pas à grand chose.

Sur ces mots, je te laisse à tes théories et te souhaite tout de même bonne chance.

#406 Re : Café mathématique » Proposition » 25-06-2016 19:00:57

@Dizlogic
Cela fait déjà quelques années mais lorsque j'ai vu la loi des grands nombres en cours, il me semble qu'on l'avait démontré. Et je suis certain qu'on l'avait fait sans ce "postulat de la moyenne" (J’essaierai de retrouver la démo)
A vrai dire, je n'ai jamais entendu parler de "postulat de la moyenne". Et google (même si ce n'est pas forcément une référence) n'en a jamais entendu parler non plus semble-t-il...

Par empirique, j'entends expérimentale, soit les mesures observées. 

Je me lancerai dans tes exercices quand j'aurais un peu plus de temps.


@Yassine
Il faut m'expliquer ton histoire de température là... La température est justement la mesure de l'agitation moléculaire et ça se mesure très bien. Je ne vois pas pourquoi on ne pourrait pas dire qu'il fait 10°C de plus qu'hier.

#407 Re : Café mathématique » Proposition » 25-06-2016 15:50:44

Bon, j'avoue j'ai joué l'idiot avec mon exemple bidon.

Mais j'ai l'impression que ce postulat de la moyenne, ce juste dire que les valeurs empiriques obtenues après un grand nombre d'essais se rapprochent en moyenne de la valeur théorique.

Si c'est ça, ce n'est pas un postulat. Ça se démontre très bien (sous certaines conditions), je l'enseigne à mes élèves de seconde...

#408 Re : Café mathématique » Proposition » 25-06-2016 14:36:14

Un petit exemple très simple pour être sûr d'avoir bien compris.
Je dispose d'une pièce parfaitement équilibrée sur laquelle j'ai écrit 0 d'un coté et 100 de l'autre.
La moyenne arithmétique est donc 50.
Donc, en lançant cette pièce et en notant la valeur de la face visible lorsqu'elle retombe, je suis censé obtenir un nombre très proche de 50?

Je pense que j'ai loupé un truc...

#409 Re : Café mathématique » Proposition » 25-06-2016 13:59:42

Re,

Qu'entendez-vous exactement par "mesures observées" et "mesure recherchée"?

#410 Re : Café mathématique » Proposition » 25-06-2016 13:24:23

Bonjour,

Je trouve cette discussion tout simplement hallucinantes ! (Suis-je le seul?)
C'est simple. Je n'y comprend rien. Pourtant j'ai un niveau de mathématiques quand même pas trop moche, notamment en probabilité où sans être un expert, les notions citées plus haut me sont familières...

Mais j'essaye de suivre !
Pour commencer, est-il possible d'avoir un énoncé "clair et précis" de se fameux postulat de la moyenne dont vous parlez tant?

#411 Re : Café mathématique » Les livres pour les élèves » 24-06-2016 14:26:53

Ha ! Quel grand débat que voici !
Débat que j'ai eu en ces lieux, en particulier avec Yoshi, notamment concernant l'utilisation de la calculatrice, mais qui peut largement se généraliser à l'outil informatique en général.

Pour te répondre rapidement, tu as bien résumé les arguments de chaque camp.
Il serait serai idiot de se passer de l'informatique étant donné le monde actuel. Et donc il est important de l'enseigner. Mais il ne faut pas en devenir esclave non plus.
Le compromis réside dans une utilisation intelligente et réfléchie de l'informatique. Et quant à la signification exacte de cette formule, la question reste ouverte. Et je doute qu'il existe une unique bonne réponse.




PS :

pourquoi le prof de physique doit-il enseigner la chimie ? Pourquoi le prof d'histoire doit enseigner la géographie ? Pourquoi le prof de français doit enseigner le latin ?

Tiens ! Je ne m'étais jamais posé la question !

#412 Re : Café mathématique » Les livres pour les élèves » 24-06-2016 08:34:25

Salut,

Par contre on peut se demander pourquoi l'ajouter au programme de math.
A priori, l'informatique n'est pas un domaine particulier des mathématiques mais bien une matière à part entière.

Si moi ça ne me dérange pas de m'en charger, certains collègues de math n'ont peut-être jamais programmé.

#413 Re : Café mathématique » Matheu contre Matheu » 17-06-2016 18:45:39

Salut,
Je m'incruste sans vraiment apporter quelques choses à la discussion.

Je serais intéressé de savoir
- ce que tu entends par "matheux",
- qui sont ces fameux "8 matheux",
- est-il possible de voir les échanges entre ces "matheux"?

#414 Re : Entraide (collège-lycée) » Suite arithmétique ou géométrique » 15-06-2016 19:03:13

Bonsoir,

Je me permet d'intervenir car c'est un exercice assez classique sur les suites géométriques et il est donc préférable de le résoudre avec des suites et leurs notations. En effet, si la première question peut se résoudre "à la main" avec un peu d'intuition, la seconde devient déjà  plus fastidieuse. Imaginez un peu que l'énoncé demande le chiffre d'affaire total sur 3 ans au lieu d'un !

Je propose donc d'introduire la notation suivante : On note pour tout $n\ge 1$, $u_n$ le chiffre d'affaire du $n$-ième mois à partir de janvier 2001. On a donc $u_1=200000$.
Questions préliminaires :
1) Quelle est la nature de la suite $(u_n)$?
2) En déduire l'expression de $u_n$ en fonction de $n$.
A partir de là, les deux questions posées deviennent plus simples.



Yoshi a écrit :

Sauf si par CA de janvier, ton prof voulait dire : on démarre le mois de janvier (le 1er janvier) avec un CA de 200000 €...
Dans ce cas, fin janvier, le CA sera bien augmenté de 2%...
Voir ça avec ton prof...

Un chiffre d'affaire représente, en gros, la quantité d'argent gagné par l'entreprise. Du coup, le CA de janvier est la quantité d'argent gagné en janvier et se calcule donc fin janvier.


@Yoshi : Si mon intervention est déplacée car tu comptais y arriver petit à petit, je m'en excuse et tu peux retirer mon post.

#415 Re : Café mathématique » Les livres pour les élèves » 14-06-2016 21:50:22

Salut à tous !

Cette discussion me rappelle la citation suivante présente dans la lettre de rentrée que j'ai reçu l'année dernière :
" Beaucoup de gens, et notamment  la  plupart  de  ceux  qui  se  bornent  à utiliser des  mathématiques, prétendent que lorsqu’on écrit pour des débutants, il est inutile, ou même nuisible, d’essayer  de  faire  preuve  d’une  trop  grande  rigueur,  de  tout  démontrer  [...]  S’ils avaient  raison,  cela  voudrait  dire  que, contrairement aux  mathématiciens professionnels, et au bon sens, les débutants comprennent d’autant plus facilement un texte mathématique qu’il est plus mal rédigé. " (Roger Godement, Cours d’algèbre, 1963)


Au passage, quelques liens sur le nouveau programme :
http://cache.media.education.gouv.fr/fi … 469229.pdf
http://www.reformeducollege.fr/nouveaux … hematiques

Je trouve très intéressant que la programmation, ou plus généralement l'informatique, prenne une part plus grande dans les programmes (Il était temps !). C'est une excellente manière d'apprendre à raisonner, tout en ayant des applications pratiques et visuelles assez rapidement.

#416 Re : Enigmes, casse-têtes, curiosités et autres bizarreries » Casse tête 4 par 4 » 22-08-2015 10:09:58

Bonjour,

Qu'entends-tu exactement par ligne?
Je suppose que tu veux dire alignement de 4 boules. Mais dans ce cas, si on on aligne 5 boules, est-ce que ça compte comme deux lignes?

#417 Re : Échecs et maths » [Archive] Une miniature ! » 02-08-2015 16:10:05

Salut,

J'y connais pas grand chose mais je tente quand même.

Texte caché

Dd1-h5+     Re8-d7
Ff1-b5+     Rd7-e7
Dh5-f7++

Ça m'a fait pensé au coup du berger.

#418 Re : Programmation » Petit jeu divertissant. » 23-07-2015 23:07:41

Salut,

J'y ai passé ma soirée mais je suis enfin parvenu au bout.
Ça faisait longtemps que je voulais programmer un Mastermind, et vous m'avez donné envie de m'y mettre ce soir.
Par contre excusez moi par avance pour le code complétement à l’arrache. Au début, j'essayais de bien commenter, mais rapidement mes mauvaises habitudes ont repris le dessus.

Python

# -*- coding: cp1252 -*-


        ##########################
        ##########################
        ####                  ####
        ####                  ####
        ####    MASTERMIND    ####
        ####                  ####
        ####                  ####
        ##########################
        ##########################

##################
##### import #####
##################

from Tkinter import *   # interface graphique # enlevez la majuscule en cas d'erreur
from random import randrange
#import itertools        # module de combinaisons et arrangements

#################################
##### parametres par defaut #####
#################################

couleur=["white", "black", "red", "green", "blue",  # on peut en ajouter autant que l'on veut
         "yellow", "brown", "orange", "grey", "cyan",
         "purple", "pink"]
nbTrou=5
nbCouleur=8
nbEssai=12

noEssai=0
noTrou=0

####################
##### fonction #####
####################

def cercle(can, x, y, r, coul="grey"):
    """trace dans le canvas can un cercle de centre (x,y) de rayon r et de couleur coul"""
    return can.create_oval(x-r, y-r, x+r, y+r, fill=coul, outline="black")


##### parametrage du jeu #####
def nbTrouMoins():
    global nbTrou
    if nbTrou>1:
        nbTrou=nbTrou-1
        nbTrouLabel.config(text="Nombre de trous = %s"%(nbTrou))
def nbTrouPlus():
    global nbTrou
    if nbTrou<30:
        nbTrou=nbTrou+1
        nbTrouLabel.config(text="Nombre de trous = %s"%(nbTrou))
def nbCouleurMoins():
    global nbCouleur
    if nbCouleur>2:
        nbCouleur=nbCouleur-1
        nbCouleurLabel.config(text="Nombre de couleurs = %s"%(nbCouleur))
def nbCouleurPlus():
    global nbCouleur
    if nbCouleur<len(couleur):
        nbCouleur=nbCouleur+1
        nbCouleurLabel.config(text="Nombre de couleurs = %s"%(nbCouleur))
def nbEssaiMoins():
    global nbEssai
    if nbEssai>2:
        nbEssai=nbEssai-1
        nbEssaiLabel.config(text="Nombre d'essais = %s"%(nbEssai))
def nbEssaiPlus():
    global nbEssai
    if nbEssai<30:
        nbEssai=nbEssai+1
        nbEssaiLabel.config(text="Nombre d'essais = %s"%(nbEssai))


##### jeu #####
def initJeu():
    """Creation du plateau de jeu"""
    global cache, jeuFrame, couleur, possible, nbCombi
    global solution, solutionCanvas
    global essai, essaiCercle, essaiCanvas
    global aide, aideCercle, aideCanvas
    initFrame.destroy()

    ## toutes combinaisons possibles
    #possible=[]
    #for i in itertools.product(couleur[:nbCouleur], repeat=nbTrou):
    #    possible.append(list(i))
    #nbCombi=Label(root, text=str(len(possible)))
    #nbCombi.grid(row=0, column=0)
       

    # solution
        # la solution est enregistree dans une liste de couleur
    solution=[]
    for i in range(nbTrou):
        solution.append(couleur[randrange(nbCouleur)])
    #print(solution)
        # la solution est affichee dans un canvas
    solutionCanvas=Canvas(root, bg="white", height=24, width=22*nbTrou+4)
    solutionCanvas.grid(row=0, column=1, padx=5, pady=5)
    for i in range(nbTrou):
        cercle(solutionCanvas, i*22+14, 14, 10, coul=solution[i])
        # la solution est recouverte d'un cadre noir qui sera supprime a la fin de la partie
    cache=solutionCanvas.create_rectangle(0,0,22*nbTrou+4, 24, fill="black")
    #solutionCanvas.delete(cache)

    # essai
        # les essais sont enregistres dans un tableau
    essai=[]
    essaiCercle=[]
        # les essais sont affiches dans un canvas
    essaiCanvas=Canvas(root, bg="white", height= 24*nbEssai+8, width=22*nbTrou+4)
    essaiCanvas.grid(row=1, column=1, padx=5, pady=5)
    for i in range(nbEssai):
        essai.append([])
        essaiCercle.append([])
        for j in range(nbTrou):
            essai[i].append(None)
            essaiCercle[i].append(cercle(essaiCanvas, j*22+14, 24*nbEssai+8-(i*24+14), 10))
    #print(essai)        
    #print(essaiCercle)
        # le premier trou est selectionne
    essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="white")

    # aide
        # les aides sont enregistrees dans un tableau
    aide=[]
    aideCercle=[]
        # les aides sont affichees dans un canvas
    aideCanvas=Canvas(root, bg="white", height= 24*nbEssai+8, width=12*nbTrou+4)
    aideCanvas.grid(row=1, column=0, padx=5, pady=5)
    for i in range(nbEssai):
        aideCercle.append([])
        for j in range(nbTrou):
            aideCercle[i].append(cercle(aideCanvas, j*12+10, 24*nbEssai+8-(i*24+14), 5))

    # boutons de jeu
    jeuFrame=Frame(root, bg="white")
    jeuFrame.grid(row=0, column=3, rowspan=10, padx=5, pady=5)

        # deplacement du cercle selectionne
    def droite():
        global noTrou, essaiCanvas
        essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="black")
        if noTrou<nbTrou-1:
            noTrou=noTrou+1
        else:
            noTrou=0  
        essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="white")
    Button(jeuFrame, text="-->", width=4, command=droite).grid(row=6, column=0)
   
    def gauche():
        global noTrou, essaiCanvas
        essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="black")
        if noTrou>0:
            noTrou=noTrou-1
        else:
            noTrou=nbTrou-1
        essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="white")
    Button(jeuFrame, text="<--", width=4, command=gauche).grid(row=5, column=0)

        # changement de couleur du cercle selectionne
    changeCouleur=[]
    for i in range(nbCouleur):
        def changeCouleurFonc(coul=couleur[i]):
            global essaiCanvas, essai
            essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], fill=coul)
            essai[noEssai][noTrou]=coul
            droite()
            #print(couleur[i])
        changeCouleur.append(changeCouleurFonc)
        #print(changeCouleur)
    for i in range(nbCouleur):
        Button(jeuFrame, bg=couleur[i], width=4, command=changeCouleur[i]).grid(row=i+10, column=0)
        Checkbutton(jeuFrame).grid(row=i+10, column=1)

        # tester la combinaison
    Button(jeuFrame, text="OK", width=4, command=test).grid(row=0, column=0)
    #Button(jeuFrame, text="IA", width=4, command=IA).grid(row=1, column=0)
   
   
def test():
    #global solution, solutionCanvas
    global possible
    #global nbCombi
    global essai, essaiCercle, essaiCanvas
    global aide, aideCercle, aideCanvas
    global noEssai, noTrou, jeuFrame, cache
    t=1
    for i in essai[noEssai]:
        if i==None:
            t=0
    if t==1:
        essaiTemp=[]
        solTemp=[]
        for i in range(nbTrou):
            essaiTemp.append(essai[noEssai][i])
            solTemp.append(solution[i])
        indice=testCombi(essaiTemp, solTemp)
        aide.append(indice)
        for i in range(len(indice)):
            if indice[i]==2:
                aideCanvas.itemconfig(aideCercle[noEssai][i], fill="black")
            if indice[i]==1:
                aideCanvas.itemconfig(aideCercle[noEssai][i], fill="white")    
        if indice==[2]*nbTrou:
            solutionCanvas.delete(cache)
            gagnFen=Toplevel()
            Label(gagnFen, text="Gagné").grid()
            jeuFrame.destroy()
    if noEssai>nbEssai-2 and indice!=[2]*nbTrou:
        solutionCanvas.delete(cache)
        gagnFen=Toplevel()
        Label(gagnFen, text="Perdu").grid()
        jeuFrame.destroy()
    else:
        essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="black")
        noEssai=noEssai+1
        noTrou=0
        essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="white")

        # calcul des combinaisons restantes
        #possibleTemp=[]
        ##print("indice=", indice)
        #for i in range(len(possible)):
        #    essaiTemp=[]
        #    posTemp=[]
        #    for j in range(nbTrou):
        #        essaiTemp.append(essai[noEssai-1][j])
        #        posTemp.append(possible[i][j])
        #    aideTemp=testCombi(essaiTemp, posTemp)
        #    #print(aideTemp)
        #    if indice==aideTemp:
        #        #print("OK")
        #        possibleTemp.append(possible[i])
        #        
        #possible=[]
        #for i in possibleTemp:
        #    possible.append(i)
        #nbCombi.config(text=str(len(possible)))


       

       
def testCombi(combi, sol):
    #print(essai[noEssai])
    #print(type(combi), type(sol))
    indice=[]
    for i in range(nbTrou):
        if sol[i]==combi[i]:
            indice.append(2)
            sol[i]=0
            combi[i]=1
    for i in range(nbTrou):
        for j in range(nbTrou):
            if sol[i]==combi[j]:
                indice.append(1)
                sol[i]=0
                combi[j]=1
    return indice

   

##### IA #####

#def IA():
#    global essaiCanvas, essai
#    combi=possible[randrange(len(possible))]
#    for i in range(nbTrou):
#        essaiCanvas.itemconfig(essaiCercle[noEssai][i], fill=combi[i])
#        essai[noEssai][i]=combi[i]

   

       
   

################
##### main #####
################

root=Tk()   # fenetre principale
root.title("Mastermind")

# parametrage du jeu
initFrame=Frame(root)
initFrame.grid()
Label(initFrame, text="Parametres du jeu").grid(row=0, column=0, columnspan=10)
    # nombre de trous
nbTrouLabel=Label(initFrame, text="Nombre de trous = %s"%(nbTrou))
nbTrouLabel.grid(row=1, column=0)
Button(initFrame, text="-", command=nbTrouMoins).grid(row=1, column=1)
Button(initFrame, text="+", command=nbTrouPlus).grid(row=1, column=2)
    # nombre de couleurs
nbCouleurLabel=Label(initFrame, text="Nombre de couleurs = %s"%(nbCouleur))
nbCouleurLabel.grid(row=2, column=0)
Button(initFrame, text="-", command=nbCouleurMoins).grid(row=2, column=1)
Button(initFrame, text="+", command=nbCouleurPlus).grid(row=2, column=2)
    # nombre d'essais
nbEssaiLabel=Label(initFrame, text="Nombre d'essais = %s"%(nbEssai))
nbEssaiLabel.grid(row=3, column=0)
Button(initFrame, text="-", command=nbEssaiMoins).grid(row=3, column=1)
Button(initFrame, text="+", command=nbEssaiPlus).grid(row=3, column=2)
    # GO !!!
Button(initFrame, text="Lancer le jeu !", command=initJeu).grid(row=4, column=0)


root.mainloop()

 


et pour les fainéants, une petite AI en plus.
Par IA, je n'entend pas un algorithme complexe, mais simplement un script qui calcule toutes les possibilités et en choisi une au hasard.


avec IA

# -*- coding: cp1252 -*-


        ##########################
        ##########################
        ####                  ####
        ####                  ####
        ####    MASTERMIND    ####
        ####                  ####
        ####                  ####
        ##########################
        ##########################

##################
##### import #####
##################

from Tkinter import *   # interface graphique # enlevez la majuscule en cas d'erreur
from random import randrange
import itertools        # module de combinaisons et arrangements

#################################
##### parametres par defaut #####
#################################

couleur=["white", "black", "red", "green", "blue",  # on peut en ajouter autant que l'on veut
         "yellow", "brown", "orange", "grey", "cyan",
         "purple", "pink"]
nbTrou=5
nbCouleur=8
nbEssai=12

noEssai=0
noTrou=0

####################
##### fonction #####
####################

def cercle(can, x, y, r, coul="grey"):
    """trace dans le canvas can un cercle de centre (x,y) de rayon r et de couleur coul"""
    return can.create_oval(x-r, y-r, x+r, y+r, fill=coul, outline="black")


##### parametrage du jeu #####
def nbTrouMoins():
    global nbTrou
    if nbTrou>1:
        nbTrou=nbTrou-1
        nbTrouLabel.config(text="Nombre de trous = %s"%(nbTrou))
def nbTrouPlus():
    global nbTrou
    if nbTrou<30:
        nbTrou=nbTrou+1
        nbTrouLabel.config(text="Nombre de trous = %s"%(nbTrou))
def nbCouleurMoins():
    global nbCouleur
    if nbCouleur>2:
        nbCouleur=nbCouleur-1
        nbCouleurLabel.config(text="Nombre de couleurs = %s"%(nbCouleur))
def nbCouleurPlus():
    global nbCouleur
    if nbCouleur<len(couleur):
        nbCouleur=nbCouleur+1
        nbCouleurLabel.config(text="Nombre de couleurs = %s"%(nbCouleur))
def nbEssaiMoins():
    global nbEssai
    if nbEssai>2:
        nbEssai=nbEssai-1
        nbEssaiLabel.config(text="Nombre d'essais = %s"%(nbEssai))
def nbEssaiPlus():
    global nbEssai
    if nbEssai<30:
        nbEssai=nbEssai+1
        nbEssaiLabel.config(text="Nombre d'essais = %s"%(nbEssai))


##### jeu #####
def initJeu():
    """Creation du plateau de jeu"""
    global cache, jeuFrame, couleur, possible, nbCombi
    global solution, solutionCanvas
    global essai, essaiCercle, essaiCanvas
    global aide, aideCercle, aideCanvas
    initFrame.destroy()

    # toutes combinaisons possibles
    possible=[]
    for i in itertools.product(couleur[:nbCouleur], repeat=nbTrou):
        possible.append(list(i))
    nbCombi=Label(root, text=str(len(possible)))
    nbCombi.grid(row=0, column=0)
       

    # solution
        # la solution est enregistree dans une liste de couleur
    solution=[]
    for i in range(nbTrou):
        solution.append(couleur[randrange(nbCouleur)])
    #print(solution)
        # la solution est affichee dans un canvas
    solutionCanvas=Canvas(root, bg="white", height=24, width=22*nbTrou+4)
    solutionCanvas.grid(row=0, column=1, padx=5, pady=5)
    for i in range(nbTrou):
        cercle(solutionCanvas, i*22+14, 14, 10, coul=solution[i])
        # la solution est recouverte d'un cadre noir qui sera supprime a la fin de la partie
    cache=solutionCanvas.create_rectangle(0,0,22*nbTrou+4, 24, fill="black")
    #solutionCanvas.delete(cache)

    # essai
        # les essais sont enregistres dans un tableau
    essai=[]
    essaiCercle=[]
        # les essais sont affiches dans un canvas
    essaiCanvas=Canvas(root, bg="white", height= 24*nbEssai+8, width=22*nbTrou+4)
    essaiCanvas.grid(row=1, column=1, padx=5, pady=5)
    for i in range(nbEssai):
        essai.append([])
        essaiCercle.append([])
        for j in range(nbTrou):
            essai[i].append(None)
            essaiCercle[i].append(cercle(essaiCanvas, j*22+14, 24*nbEssai+8-(i*24+14), 10))
    #print(essai)        
    #print(essaiCercle)
        # le premier trou est selectionne
    essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="white")

    # aide
        # les aides sont enregistrees dans un tableau
    aide=[]
    aideCercle=[]
        # les aides sont affichees dans un canvas
    aideCanvas=Canvas(root, bg="white", height= 24*nbEssai+8, width=12*nbTrou+4)
    aideCanvas.grid(row=1, column=0, padx=5, pady=5)
    for i in range(nbEssai):
        aideCercle.append([])
        for j in range(nbTrou):
            aideCercle[i].append(cercle(aideCanvas, j*12+10, 24*nbEssai+8-(i*24+14), 5))

    # boutons de jeu
    jeuFrame=Frame(root, bg="white")
    jeuFrame.grid(row=0, column=3, rowspan=10, padx=5, pady=5)

        # deplacement du cercle selectionne
    def droite():
        global noTrou, essaiCanvas
        essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="black")
        if noTrou<nbTrou-1:
            noTrou=noTrou+1
        else:
            noTrou=0  
        essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="white")
    Button(jeuFrame, text="-->", width=4, command=droite).grid(row=6, column=0)
   
    def gauche():
        global noTrou, essaiCanvas
        essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="black")
        if noTrou>0:
            noTrou=noTrou-1
        else:
            noTrou=nbTrou-1
        essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="white")
    Button(jeuFrame, text="<--", width=4, command=gauche).grid(row=5, column=0)

        # changement de couleur du cercle selectionne
    changeCouleur=[]
    for i in range(nbCouleur):
        def changeCouleurFonc(coul=couleur[i]):
            global essaiCanvas, essai
            essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], fill=coul)
            essai[noEssai][noTrou]=coul
            droite()
            #print(couleur[i])
        changeCouleur.append(changeCouleurFonc)
        #print(changeCouleur)
    for i in range(nbCouleur):
        Button(jeuFrame, bg=couleur[i], width=4, command=changeCouleur[i]).grid(row=i+10, column=0)
        Checkbutton(jeuFrame).grid(row=i+10, column=1)

        # tester la combinaison
    Button(jeuFrame, text="OK", width=4, command=test).grid(row=0, column=0)
    Button(jeuFrame, text="IA", width=4, command=IA).grid(row=1, column=0)
   
   
def test():
    #global solution, solutionCanvas
    global possible, nbCombi
    global essai, essaiCercle, essaiCanvas
    global aide, aideCercle, aideCanvas
    global noEssai, noTrou, jeuFrame, cache
    t=1
    for i in essai[noEssai]:
        if i==None:
            t=0
    if t==1:
        essaiTemp=[]
        solTemp=[]
        for i in range(nbTrou):
            essaiTemp.append(essai[noEssai][i])
            solTemp.append(solution[i])
        indice=testCombi(essaiTemp, solTemp)
        aide.append(indice)
        for i in range(len(indice)):
            if indice[i]==2:
                aideCanvas.itemconfig(aideCercle[noEssai][i], fill="black")
            if indice[i]==1:
                aideCanvas.itemconfig(aideCercle[noEssai][i], fill="white")    
        if indice==[2]*nbTrou:
            solutionCanvas.delete(cache)
            gagnFen=Toplevel()
            Label(gagnFen, text="Gagné").grid()
            jeuFrame.destroy()
    if noEssai>nbEssai-2 and indice!=[2]*nbTrou:
        solutionCanvas.delete(cache)
        gagnFen=Toplevel()
        Label(gagnFen, text="Perdu").grid()
        jeuFrame.destroy()
    else:
        essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="black")
        noEssai=noEssai+1
        noTrou=0
        essaiCanvas.itemconfig(essaiCercle[noEssai][noTrou], outline="white")

        # calcul des combinaisons restantes
        possibleTemp=[]
        #print("indice=", indice)
        for i in range(len(possible)):
            essaiTemp=[]
            posTemp=[]
            for j in range(nbTrou):
                essaiTemp.append(essai[noEssai-1][j])
                posTemp.append(possible[i][j])
            aideTemp=testCombi(essaiTemp, posTemp)
            #print(aideTemp)
            if indice==aideTemp:
                #print("OK")
                possibleTemp.append(possible[i])
               
        possible=[]
        for i in possibleTemp:
            possible.append(i)
        nbCombi.config(text=str(len(possible)))


       

       
def testCombi(combi, sol):
    #print(essai[noEssai])
    #print(type(combi), type(sol))
    indice=[]
    for i in range(nbTrou):
        if sol[i]==combi[i]:
            indice.append(2)
            sol[i]=0
            combi[i]=1
    for i in range(nbTrou):
        for j in range(nbTrou):
            if sol[i]==combi[j]:
                indice.append(1)
                sol[i]=0
                combi[j]=1
    return indice

   

##### IA #####

def IA():
    global essaiCanvas, essai
    combi=possible[randrange(len(possible))]
    for i in range(nbTrou):
        essaiCanvas.itemconfig(essaiCercle[noEssai][i], fill=combi[i])
        essai[noEssai][i]=combi[i]

   

       
   

################
##### main #####
################

root=Tk()   # fenetre principale
root.title("Mastermind")

# parametrage du jeu
initFrame=Frame(root)
initFrame.grid()
Label(initFrame, text="Parametres du jeu").grid(row=0, column=0, columnspan=10)
    # nombre de trous
nbTrouLabel=Label(initFrame, text="Nombre de trous = %s"%(nbTrou))
nbTrouLabel.grid(row=1, column=0)
Button(initFrame, text="-", command=nbTrouMoins).grid(row=1, column=1)
Button(initFrame, text="+", command=nbTrouPlus).grid(row=1, column=2)
    # nombre de couleurs
nbCouleurLabel=Label(initFrame, text="Nombre de couleurs = %s"%(nbCouleur))
nbCouleurLabel.grid(row=2, column=0)
Button(initFrame, text="-", command=nbCouleurMoins).grid(row=2, column=1)
Button(initFrame, text="+", command=nbCouleurPlus).grid(row=2, column=2)
    # nombre d'essais
nbEssaiLabel=Label(initFrame, text="Nombre d'essais = %s"%(nbEssai))
nbEssaiLabel.grid(row=3, column=0)
Button(initFrame, text="-", command=nbEssaiMoins).grid(row=3, column=1)
Button(initFrame, text="+", command=nbEssaiPlus).grid(row=3, column=2)
    # GO !!!
Button(initFrame, text="Lancer le jeu !", command=initJeu).grid(row=4, column=0)


root.mainloop()

 


[Edit] Attention avec l'IA à ne pas mettre trop de couleurs ET de trous car le nombre de possibilités augmente très très vite.
Et il faudrait optimiser un peu le code, notamment je déteste utiliser la commande global. Je trouve ça profondément moche.

#419 Re : Enigmes, casse-têtes, curiosités et autres bizarreries » Le glaçon dans le verre d'eau » 22-07-2015 23:36:14

Salut,

Il me semble (mais c'est à prendre avec des pincettes) que :
- si on maintient les glaçon immergé, en fondant le niveau de l'eau va baisser mais à l’échelle d'un verre ce sera quasiment imperceptible. C'est d'ailleurs l'un des trois matériaux connus de l'univers dont la forme solide est moins dense que la forme liquide.
- par contre si on laisse flotter le glaçon, la partie hors de l'eau fera déborder le verre en fondant.

#420 Re : Café mathématique » racine d'un nombre décimal » 22-07-2015 11:29:42

Salut,

Si j'ai bien compris, ce que tu cherches c'est d'extraire une racine n-ième "à la main".

Autrement dit, soit [tex]A[/tex] un nombre décimal et [tex]n[/tex] un entier naturel non nul. On cherche la forme décimale (nombre à virgule) de [tex]\sqrt[n]{A}[/tex].


Pour commencer, il faut savoir qu'en général, on ne pourra pas écrire une valeur exacte de [tex]\sqrt[n]{A}[/tex] sous forme décimale. Dans la plupart des cas, tout ce qu'on pourra avoir c'est une valeur approchée. En effet la forme décimale d'une racine n-ième admet le plus souvent une infinité de chiffres après la virgule, et pire encore, est irrationnelle (c'est à dire qu'on ne peut pas l'écrire sous forme de fraction) et donc il y aura pas de périodicité.
Par exemple [tex]\frac{1}{7}=0.142\ 857\ 142\ 857\ 142\ 857...[/tex] que l'on note [tex]0.\overline{142\ 857}[/tex], alors que [tex]\sqrt{2}=1.414\ 213\ 562...[/tex].


Une méthode "simple" et efficace est d'utiliser la méthode de Newton.
La méthode de Newton consiste à définir une suite par récurrence qui va se rapprocher de plus en plus de la valeur exacte de [tex]\sqrt[n]{A}[/tex].
[tex]\left\{ \begin{array}{l}
x_0\in \mathbb{R} \text{ pas trop éloigné de } \sqrt[n]{A}\\
\displaystyle x_{k+1} = \frac{1}{n} \left[{(n-1)x_k +\frac{A}{x_k^{n-1}}}\right]
\end{array} \right.[/tex]

Exemple :
Calcul d'une valeur approchée de [tex]\sqrt[5]{17}[/tex]
[tex]x_0=1[/tex]
[tex]x_1=\frac{1}{5} \left[{(5-1)\times 1 +\frac{17}{1^{5-1}}}\right]=\frac{21}{5}=4.2[/tex]
[tex]x_2=\frac{1}{5} \left[{(5-1)\times 4.2 +\frac{17}{4.2^{5-1}}}\right]\simeq 3.370926517...[/tex]
[tex]x_3=\frac{1}{5} \left[{(5-1)x_2 +\frac{21}{x_2^{5-1}}}\right]\simeq2.723073088...[/tex]
[tex]x_4=\frac{1}{5} \left[{(5-1)x_3 +\frac{21}{x_3^{5-1}}}\right]\simeq2.240294518...[/tex]
[tex]x_5=\frac{1}{5} \left[{(5-1)x_4 +\frac{21}{x_4^{5-1}}}\right]\simeq1.927212204...[/tex]
[tex]x_6=\frac{1}{5} \left[{(5-1)x_5 +\frac{21}{x_5^{5-1}}}\right]\simeq1.788237892...[/tex]
[tex]x_7=\frac{1}{5} \left[{(5-1)x_6 +\frac{21}{x_6^{5-1}}}\right]\simeq1.763079667...[/tex]
[tex]x_8=\frac{1}{5} \left[{(5-1)x_7 +\frac{21}{x_7^{5-1}}}\right]\simeq1.762340967...[/tex]
[tex]x_9=\frac{1}{5} \left[{(5-1)x_8 +\frac{21}{x_8^{5-1}}}\right]\simeq1.762340347...[/tex]
[tex]x_{10}=\frac{1}{5} \left[{(5-1)x_9 +\frac{21}{x_9^{5-1}}}\right]\simeq1.762340347...[/tex]
...
Pour tous ces calculs j'ai un peu triché en utilisant Python, mais tous les calculs sont faisables à la main,... mais c'est quand même très long.

Algo Pyhton

print("Calcul de racine n-ieme de A")
print("n=")
n=input()
print("A=")
A=input()

x=1.
for i in range(15):
    x=((n-1)*x+A/x**(n-1))/n
    print("%.20f"%(x))
 

Avantages
- Très facilement implémentable
- Convergence quadratique (Ce qui signifie, en gros, qu'à chaque étape on gagne 2 chiffres après la virgule de précision.


Voilà, j'espère t'avoir répondu

#421 Re : Le coin des beaux problèmes de Géométrie » Coupe spéciale. » 19-07-2015 09:34:26

Salut,

@Terces : Pas mieux, mais la démonstration va être plus ardue.

@Yoshi : Je crois que tu à louper une partie de l'énoncé :

Terces a écrit :

il faut forcément séparer votre disque en 2, la partie coupé qui a la plus petite aire tombe.

#423 Café mathématique » Jeux Mathématiques à faire en classe » 11-06-2015 14:28:21

tibo
Réponses : 5

Bonjour,

Demain, il me reste 2h avec mes élèves. J'ai fini le programme depuis une semaine et demi et j'arrive à cours d'idées pour les occuper :
J'ai fait des révisions, mastermind, test psychotechniques, le compte est bon, énigmes logiques, ...

Si certains d'entre vous ont des idées de petits jeux mathématiques, je serais intéressé.
Ce sont des 1iere ST2S. Donc les maths ne sont pas trop leur truc, mais si c'est suffisamment ludique ça passe bien.

Merci d'avance

#424 Re : Enigmes, casse-têtes, curiosités et autres bizarreries » Origami » 06-04-2015 22:46:40

Salut,

@yoshi : La droite (EF) est la droite représentée par le pli. Prend une feuille et pli la en rabattant un coin du bas sur le milieu du coté du haut.

@jpp : Bravo! Très jolie démonstration !

#425 Enigmes, casse-têtes, curiosités et autres bizarreries » Origami » 03-04-2015 10:05:45

tibo
Réponses : 3

Salut,

Petite énigme proposée lors des Olympiades de Mathématiques Seconde :

Une feuille de papier rectangulaire ABCD, de largeur AB=240 et de longueur BC=288 est pliée selon la droite (EF) de telle sorte que le somment C est transporté au milieu du segment [AB].
Quelle est la longueur du segment [EF]?

Pied de page des forums