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).

Répondre

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
vingt sept plus quinze
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Retour

Résumé de la discussion (messages les plus récents en premier)

totomm
04-08-2011 08:23:26

Bonjour,

@yoshi : mille mercis enthousiastes. Extra les fractions dans Python !!

yoshi
03-08-2011 12:20:23

Re,

Ok ! No problem..

Encore une ellipse que j'aurais dû éviter !! :-)

Non, non, j'étais sincère, j'ai réllement cru que tu n'étais pas méfié...
En l'occurrence, on m'a toujours dit :
<< Ce qui va sans dire, va généralement encore mieux en le disant ! >>

Je rectifie une bêtise écrite en réponse à thadrien :
il ne s'agit pas du module décimal mais tout simplement du module... fractions :
http://docs.python.org/library/fractions.html

>>> from fractions import Fraction
>>> Fraction(1,2)+Fraction(1,3)
Fraction(5, 6)
>>>

Et voilà ce que donnent les sorties du programme de totomm revu et corrigé avec l'introduction des fractions :

a, b, c, s = 3 3 3   1/3
a, b, c, s = 3 3 4   41/144
a, b, c, s = 3 3 5   59/225
Solution : 3 3 6
a, b, c, s = 3 3 7   107/441
a, b, c, s = 3 4 4  17/72
a, b, c, s = 4 4 4    3/16
fin
>>>

Python est magique !

@+

totomm
03-08-2011 09:07:24

Bonjour,

Le petit programme en Python 3.2 que j'ai présenté post #17 n'avait pour but que de montrer les conditions d'arrêt automatique de l'algorithme (sur un dialogue antérieur de Mstafa à yoshi).

Mais bien sûr yoshi a raison de souligner aussitôt post #18 le problème des arrondis (représentation interne des décimaux en binaire).
S'il y avait eu une difficulté pour s == 0.25 dans cette implémentation (quel affreux mot) particulière, j'aurais bien sûr travaillé en entiers en comparant a²b²c² à 4(a²b²+b²c²+c²a²) pour les tests, tout en affichant l'évolution de s pour bien montrer les conditions d'arrêt.

Encore une ellipse que j'aurais dû éviter !! :-)
Cordialement

yoshi
02-08-2011 21:54:10

Re,


thadrien a écrit :

@yoshi : python supporte t-il la manipulation directe de fractions ? C'est en effet le mieux pour faire des programmes qui cherchent automatiquement ce genre de solutions. Avec les vraies fractions, il n'y a pas d'arrondi.

Oui, je n'y ai pas pensé : module décimal !
Ce n'est pas propre à Python, ni un problème d'arrondi, mais  d'informatique en général : représentation des nombres en virgule flottante, des décimaux, quoi...

Je vais essayer de trouver le temps de regarder ça de plus près...

@+

thadrien
02-08-2011 20:56:57

Salut,

@yoshi : python supporte t-il la manipulation directe de fractions ? C'est en effet le mieux pour faire des programmes qui cherchent automatiquement ce genre de solutions. Avec les vraies fractions, il n'y a pas d'arrondi.

yoshi
02-08-2011 17:18:31

Re,

Notons que dahfnee n'a pas été capable de dire merci, juste de corriger ma déduction par un "au moins" qui ne veut rien dire, ni n'est repassé vous remercier vous tous qui déployez des trésors d'ingéniosité...

En pareille circonstance, quand j'étais gosse,  mon père me jetait un regard de travers et ajoutait sèchement :

<< Merci mon chien ! >>

@+

freddy
02-08-2011 12:38:55

Salut,

exact, il ne manque que le smiley.

Je voulais dire que je suis allé voir Wikipédia à minuit passé, en écoutant mon émission de radio favorite, pour retrouver l'équation paramétrique cartésienne de la sphère afin de proposer une idée de solution à laquelle j'avais songé en regardant la question.

Tu sais tout, l'ami.

yoshi
02-08-2011 12:28:24

Salut totomm,

Tu l'as essayé ton prog ?
Oui, pas de pb ? alors tu as de la chance

s=(1/a/a) + (1/b/b) + (1/c/c)
            if s == 0.25:

Toute comparaison  sur des décimaux est hasardeuse s'ils sont très très voisins sauf si utilises le module nommé "decimal" couplé avec getcontext().prec= 20 (par ex)...
Regarde :

>>> 1/2+1/3+1/6
0.99999999999999989
>>> print 1/2+1/3+1/6
1.0
>>> 1/2+1/3+1/6<1.0
True
>>>

Au fait, j'ai pris ton code ci-dessus et l'ai lancé, résultat :

>>> ================================ RESTART ================================
>>>
a, b, c, s = 3 3 3 0
fin
>>>

Visiblement, c'est faux !


Quant au post #16, sauf si c'est une raillerie déplacée...

Je pense, pratiquant freddy depuis un temps certain, que c'était juste un clin d'oeil (manque le smiley).

@+

[EDIT]
J'ai trouvé l'erreur.
Tu travailles en Python 3.x, moi en 2.6.5...
La division / par défaut en 2.6.x donne le quotient entier avec des nombres entiers.
Je dois soit remplacer 1 par 1.0, soit en début de script, écrire  :  from __future__ import division.
Après relance, j'obtiens :

>>> ================================ RESTART ================================
>>>
a, b, c, s = 3 3 3 0.333333333333
a, b, c, s = 3 3 4 0.284722222222
a, b, c, s = 3 3 5 0.262222222222
Solution : 3 3 6
a, b, c, s = 3 3 7 0.242630385488
a, b, c, s = 3 4 4 0.236111111111
a, b, c, s = 4 4 4 0.1875
fin
>>>

Dont acte...

totomm
02-08-2011 11:22:52

Bonjour,

@ Mstafa  et yoshi : Pour modérer le post #12 et traiter en Python un algorithme qui ne soit pas seulement "force brute", mais ni moins ni plus "intelligent" que l'algorithme d'Euclide pour le PGCD, voici un programme qui automatise sa condition d'arrêt en n'explorant que les triplets nécessaire à trouver "TOUTES" les solutions : il lui suffit de 7 lignes, et la borne 1000 n'est placée que pour impressionner !

# Trouver tous les triplets d'entiers naturels (a;b;c)
# tels que 1/4=1/a²+1/b²+1/c²
# On pose a <= b <= c sans restreindre la généralité des solutions (aux permutations près)
s=1.0
for a in range(3,1000):
    for b in range(a,1000):
        for c in range(b,1000):
            s=(1/a/a) + (1/b/b) + (1/c/c)
            if s == 0.25:
                print("Solution :",a,b,c)
            elif s < 0.25:
                print("a, b, c, s =",a,b,c, s)
                break
            else:
                print("a, b, c, s =",a,b,c, s)
        if s < 0.25 and b == c:
            break
    if s < 0.25 and a == b:
        break
print("fin")

Quant au post #16, sauf si c'est une raillerie déplacée, je suis prêt à collaborer à montrer un cheminement qui trouverait toutes les solutions en triplets de coordonnées d'entiers( ou de rationnels) des points qui se trouveraient sur la sphère de rayon 1/2.....

Cordialement

freddy
01-08-2011 23:39:16

Hello !

je propose une autre piste d'analyse, résultat de ma première intuition que j'ai pris soin de développer avant de m'exprimer.


Trouver tous les triplets d'entiers naturels (a, b, c) tels que

[tex]\frac14=\left(\frac{1}{a}\right)^2+\left(\frac{1}{b}\right)^2+\left(\frac{1}{c}\right)^2[/tex]

ressemble furieusement à l'équation d'une sphère de centre l'origine du repère et de rayon 1/2 dont on peut aisément réécrire l'équation paramétrique cartésienne sous la forme :

[tex]\frac{1}{a}=\frac12\cos\theta\cos\nu[/tex]

[tex]\frac{1}{b}=\frac12\sin\theta\cos\nu[/tex]

[tex]\frac{1}{c}=\frac12\sin\nu[/tex]

avec, pour les angles :

[tex]-\pi \le \theta \le \pi,\;-\frac{\pi}{2} \le \nu \le \frac{\pi}{2}[/tex]

En bidouillant ces deux angles, on trouve rapidement les trois solutions.

Ça vous plait ?

totomm
01-08-2011 20:48:01

Bonsoir,

à l'instigation de freddy pour un autre problème, je me lance dans une démonstration qui peut-être reprend des arguments déjà énoncés :

Je reprends à partir de l'équation de MOHAMED_AIT_LH qui, en supposant  a <= b <= c,  a démontré que a=3 et que les 3 nombres a, b et c ne peuvent être tous égaux et sont tous >=3

Mais j'écris l'équation sous la forme (6/b)² + (6/c)² = 5
Si b = c, alors b >= 4 mais l'équation exige alors que [tex]b = \frac{6}{sqrt\left(\frac 5 2\right)} \approx 3.79 < 4[/tex] donc b < c
si b >= 4, alors c >= b+1 et l'équation ne peut être satisfaite, son premier membre étant à fortiori toujours inférieur à 5.(en comparant avec l'hypothèse b=c)
Donc b=3 et c, seule inconnue restante, vaut donc 6

sauf erreur de ma part, car ce raisonnement me parait tellement simple....

yoshi
01-08-2011 19:40:22

Salut,

il y a quelque dizaines d'années les calculatrices étaient interdites  - en plus des calculatrices rudimentaires - et se sont des formulaires qui étaient utiliser pour les valeurs approchées comme les logarithmes et les racines carrées, maintenant petit à petit l'informatique prend ça place parmi les outils de mathématiques

Tout à fait vrai, j'ai passé mon Bac sans calculatrice...
Et maintenant, leur usage/apprentissage figure dans les programmes officiels dès la 6e...
mais je parle d'apprentissage : à cet âge, on ne doit pas leur laisser s'en servir n'importe comment, n'importe quand pour faire n'importe quoi...
Un exemple, un jour (il y a longtemps !) je corrigeais un problème de 6e dans lequel il était question de la surface d'un champ pour mettre les vaches à paître.
Un élève m'interpelle tout content << Monsieur, Monsieur vous êtes trompé ! >> Et il brandit sa calculette...
Effectivement, son résultat différait du mien.
Et de lui demander ce qu'il avait fait : il s'était tout bonnement trompé dans ses conversions avant de calculer...
très déçu (il avait raté son effet), il se sentait trahi par sa machine ! Il a mis du temps à comprendre qu'il n'avait récolté que ce qu'il avait semé.
Autre exemple. Un collègue considérait la calculatrice comme le mal absolu et l'avait interdite dans ses classes.
Fort bien ! Que se passait-il, en fait ? Et bien les mômes s'en servaient quand même, en dehors de ses cours et c'était vraiment du grand n'importe quoi !

J'ai toujours mes tables de valeurs numériques : Tables Laborde, tables de log "Bouvard et Ratinet" où figure encore en page de garde le célèbre slogan : "S et KOH !"...
Ah, les racines carrées... La technique ne s'apprend plus maintenant, moi, je me souviens de l'avoir apprise en 4e !

Mon plus gros usage de l'informatique, vraiment un gain de temps maintenant : un grapheur ! Pour visualiser les limites, savoir si celle que je trouve est bonne...

@+

Mstafa
01-08-2011 17:37:36

Salut Yoshi,

Je ne suis pas déçu du tout, merci pour l'explication.

C'est vrai l'Informatique rend un peu paresseux mais il aide des fois pour conjecturer et se faire des idées , et la démonstration vient après.

il y a quelque dizaines d'années les calculatrices étaient interdites  - en plus des calculatrices rudimentaires - et se sont des formulaires qui étaient utiliser pour

les valeurs approchées comme les logarithmes et les racines carrés, maintenant petit à petit l'informatique prend ça place parmi les outils de mathématiques

indispensables.

yoshi
01-08-2011 14:20:11

Re,

J'ajoute mes félicitations.
@Mstafa : tu vas être déçu. Informatiquement, j'ai utilisé la force brute :
je me suis fait la réflexion que pour obtenir 1/4, a,b et c ne devaient pas être très grands (Pas tout à vrai, mais bon...) parce que si a, b et c sont grands, a², b², c² le sont encore plus et donc leurs inverses eux sont d'autant plus petits...
J'ai donc bêtement testé a²b²c²=4(a²b²+a²c²+b²c²) avec 3 boucles imbriquées a, b et c variant de 2 à 10...
Ensuite, comme ça par acquit de conscience, j'ai testé de 2 à 100 : l'informatique va vite et rend un peu paresseux...
La suite, tu la connais.

@+

Mstafa
01-08-2011 11:24:18

Bravo Mohamed,

Rien à dire c'est parfait,

Pied de page des forums