Pensez à lire la Charte avant de poster !

$\newcommand{\K}{\mathbf K}$


Les-Mathematiques.net - Cours de mathématiques supérieures
 Les-Mathematiques.net - Cours de mathématiques universitaires - Forum - Cours à télécharger

A lire
Deug/Prépa
Licence
Agrégation
A télécharger
Télécharger
255 personne(s) sur le site en ce moment
E. Cartan
A lire
Articles
Math/Infos
Récréation
A télécharger
Télécharger
Théorème de Cantor-Bernstein
Théo. Sylow
Théo. Ascoli
Théo. Baire
Loi forte grd nbre
Nains magiques
 
 
 
 
 

Dichotomie (python débutant)

Envoyé par alibabadu59 
Dichotomie (python débutant)
il y a sept semaines
Bonjour,
j'enseigne au collège depuis de nombreuses années, je n'ai donc jamais utilisé Python, ni Scilab... Je m'étais inscrit à une formation mais celle-ci a été supprimée par manque de candidats... bref je risque de paraître bête et de poser des questions stupides, désolé.. mais j'aimerais apprendre un peu les bases. Pour cela, je viens de me procurer un livre "Python et les 40 problèmes mathématiques" et je m'exerce.
Déjà, première question, dans ce bouquin on dit de télécharger Pyzo et d'ailleurs tous les exercices sont corrigés avec pyzo, est-ce vraiment la même chose que Python ?
Ensuite je suis en train de travailler sur la méthode de dichotomie pour approximer la racine carrée de 2, je tape exactement ce qui est proposé et qui me semble correct et il apparaît toujours des messages d'erreur.. (en voici un par exemple) je ne comprends pas pourquoi...
Merci !



Edité 1 fois. La dernière correction date de il y a sept semaines et a été effectuée par AD.


Re: python (débutant) dichotomie
il y a sept semaines
avatar
Il manque un caractère : à la fin de la ligne.

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-
Re: python (débutant) dichotomie
il y a sept semaines
Ah oui effectivement ":" mais toute à l'heure un autre message était apparu malgré ça.. je vais réessayer.
Par contre, question sûrement bête, mais je dois tout recommencer le programme quand un message d'erreur apparaît ? je ne vois pas comment supprimer une ligne pour revenir en arrière...



Edité 1 fois. La dernière correction date de il y a sept semaines et a été effectuée par AD.
Re: python (débutant) dichotomie
il y a sept semaines
Autre message d'erreur :(...


Re: python (débutant) dichotomie
il y a sept semaines
Je ne connais pas python, mais c'est bizarre que le else soit indenté différemment du if avec lequel il fonctionne. Et comme c'est "line 9" ...

Cordialement.
Re: python (débutant) dichotomie
il y a sept semaines
Bonjour
Est ce que tu peux faire un copier coller de ton programme pour que je le lance et corriger + facilement l'erreur?
Re: python (débutant) dichotomie
il y a sept semaines
L'erreur vient surement de là mais je ne vois pas comment l'indenter autrement.... :( ou dois-je taper sur entrée plusieurs fois? merci
Re: python (débutant) dichotomie
il y a sept semaines

def f(x):
    return x**2-2
    a=1
    b=2
    while b-a>10**(-4):
        m=(a+b)/2
        if f(m)==0:
            a=b
            else:

[Pour afficher du code python, IL FAUT utiliser le bouton "Code" (5ème par la droite au dessus de la fenêtre d'édition. AD]



Edité 1 fois. La dernière correction date de il y a sept semaines et a été effectuée par AD.
Re: python (débutant) dichotomie
il y a sept semaines
avatar
Pour ne pas tout retaper, tu colles ton script dans un fichier.

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-
Re: python (débutant) dichotomie
il y a sept semaines
Si je comprends bien il faut taper le programme entièrement dans un fichier à gauche puis faire un copier/coller à droite "logger" pour lancer le programme. Je viens de procéder ainsi et cette fois l'erreur apparaît ligne 3...


Re: python (débutant) dichotomie
il y a sept semaines
Bon pour l'instant la déclaration de f est correcte.

Mais la boucle qui commence par while n'est pas terminé donc c'est normal qu'il y a un message d'erreur.
D'ailleurs il n'y a rien après ton else..;;;
Re: python (débutant) dichotomie
il y a sept semaines
Je ne vois vraiment pas comment corriger ce programme et pourquoi il me dit qu'il y a une erreur ligne 3... :(
Re: python (débutant) dichotomie
il y a sept semaines
Peut-être lire un texte sur le fonctionnement du langage python, pour comprendre ce qu'on te dit ... Tu sembles écrire sans t'occuper de la syntaxe du langage, tu ne peux qu'avoir toujours des erreurs ...

Cordialement.
Re: python (débutant) dichotomie
il y a sept semaines
Re: python (débutant) dichotomie
il y a sept semaines
Rebonjour
Je ne connais pas python sauf que j'ai commencé à le regarder il y a 2 jours pour aider quelqu'un. Alors j'aide comme je peux.
Ce que je viens de comprendre c'est que l'indentation est importante avec python
d'où le risque de beaucoup de message d'erreurs en débutant.
Voilà ton programme que j'ai un peu arrangé et il tourne

def f(x):
 return x**2-2

a=1
b=2
k=0

while b-a>10**(-2):
      k=k+1 
      m=(a+b)/2
      if f(m)==0:
         a=b
      else:
          if  f(a)*f(m) < 0:
               b=m
          else:
               a=m

print(a)
print(b)
print(k)

[Pour afficher du code python, IL FAUT utiliser le bouton "Code" (5ème par la droite au dessus de la fenêtre d'édition. AD]



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par AD.
Re: python (débutant) dichotomie
il y a sept semaines
Attention dans mon copier collé l'indentation a disparue ...

[Pour afficher du code python, IL FAUT utiliser le bouton "Code" (5ème par la droite au dessus de la fenêtre d'édition. AD]



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par AD.
Re: python (débutant) dichotomie
il y a sept semaines
Le bouton "code formaté" de la fenêtre d'édition, ça sert à ne pas perdre l'indentation en route !
Re: python (débutant) dichotomie
il y a sept semaines
def f(x):
      return x**2-2

a=1
b=2
k=0

while b-a>10**(-2):
      k=k+1 
      m=(a+b)/2
      if f(m)==0:
         a=b
      else:
          if  f(a)*f(m) < 0:
               b=m
          else:
               a=m

print(a)
print(b)
print(k)

[Pour afficher du code python, IL FAUT utiliser le bouton "Code" (5ème par la droite au dessus de la fenêtre d'édition. AD]



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par AD.
Re: python (débutant) dichotomie
il y a sept semaines
Le bouton "code formaté", ce n'est pas pour les chiens !
Re: python (débutant) dichotomie
il y a sept semaines
def f(x):
    return x**2-2

a=1
b=2
k=0

while b-a>10**(-2):
      k=k+1 
      m=(a+b)/2
      if f(m)==0:
         a=b
      else:
          if  f(a)*f(m) < 0:
               b=m
          else:
               a=m

print(a)
print(b)
print(k)

[Pour afficher du code python, IL FAUT utiliser le bouton "Code" (5ème par la droite au dessus de la fenêtre d'édition. AD]



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par AD.
Re: python (débutant) dichotomie
il y a sept semaines
Euh... Tu vas continuer longtemps comme ça ?
Re: python (débutant) dichotomie
il y a sept semaines
Bonjour,

Ce n'est quand même pas compliqué de cliquer sur le bouton "code formaté".
A moins que bd2017 refuse de suivre les conseils.
def f(x):
    return x**2-2

a=1
b=2
k=0

while b-a>10**(-2):
    k=k+1
    m=(a+b)/2
    if f(m)==0:
        a=b
    else:
        if f(a)*f(m) < 0:
            b=m
        else:
            a=m

print(a)
print(b)
print(k)
Qui répond:
1.4140625
1.421875
7
Cordialement,

Rescassol



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par Rescassol.
Re: python (débutant) dichotomie
il y a sept semaines
Non c'est pas difficile mais j'ai cru que @Gabuzomeu parlait de l'éditeur de pyzo. Et puis il pourrait faire preuve de politesse.
D'autre part c'est pas la peine de se fatiguer. En effet la même question est posée sur un autre forum....
Re: python (débutant) dichotomie
il y a sept semaines
On peut vérifier, quand on compte les étapes, que trois chiffres significatifs de mieux demandent 10 étapes supplémentaires de dichotomie - rien de plus normal.
Re: python (débutant) dichotomie
il y a sept semaines
Merci beaucoup bd2017!
Re: Dichotomie (python débutant)
il y a sept semaines
Ce qui est étrange c'est que cela fonctionne sur [pythontutor.com] mais sur Pyzo j'obtiens toujours un message d'erreur ligne 3 , je ne comprends pas pourquoi...



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par alibabadu59.


Re: Dichotomie (python débutant)
il y a sept semaines
Bonjour,

Je précise que le code que j'ai donné plus haut est écrit dans Pyzo (et non pizo) et qu'il ne génère pas d'erreur.

Cordialement,

Rescassol
Re: Dichotomie (python débutant)
il y a sept semaines
Moi exactement la même chose sur Pyzo et ça affiche une erreur... bref, pas grave.
J'aimerais maintenant effectuer le même genre d'algorithme permettant de donner également une valeur approchée de la racine carrée de 2 à $10^{-100}$ près à l'aide de la méthode des sécantes, puis la méthode de Newton. J'y réfléchis de mon côté et je reviendrai certainement vers vous si je bloque. Merci.



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par AD.
Re: Dichotomie (python débutant)
il y a sept semaines
avatar
Quelle erreur, au juste ?

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-
Re: Dichotomie (python débutant)
il y a sept semaines
Bonjour,

$10^{-100}$ en précision limitée, faut pas rêver !!....

Sinon, j'utilise Pyzo 3.7.2 et non 3.6, mais ça ne peut pas être ça.
Tu peux essayer de supprimer ta fonction f et la retaper sans copier/coller.

Cordialement,

Rescassol



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par Rescassol.
Re: Dichotomie (python débutant)
il y a sept semaines
Ok merci je réessayerai.. c'est une erreur à la ligne 3.

Pour la précision 10^-100 j'aimerais au moins qu'on me donne le rang à partir duquel on a cette précision. J'ai retrouvé mes leçons de capes, ma calculatrice voyage 200 (il y a 13 ans) donnait cette précision.
Re: Dichotomie (python débutant)
il y a sept semaines
Bonjour,

La fonction sqrt, aussi bien dans math que dans numpy répond $1.4142135623730951$, pas mieux.
Puis, $2^{-333}<10^{-100}<2^{-332}$, et comme tu fais de la dichotomie.....

Cordialement,

Rescassol



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par Rescassol.
Re: python (débutant) dichotomie
il y a sept semaines
Re: Dichotomie (python débutant)
il y a sept semaines
Bonsoir,
Citation
alibabadu59
c'est une erreur à la ligne 3.
Quand on te demande quelle erreur, on ne te demande pas à quelle ligne !!! angry smiley

Cordialement,

Rescassol
Re: python (débutant) dichotomie
il y a sept semaines
Si j'ai répondu ligne 3 c'est que je n'en sais pas plus, je ne suis pas sur mon PC là et je n'ai pas le temps là d'y regarder ..
D'après vous, l'algorithme que j'aimerais créer (méthode des sécantes et Newton) est impossible ?
En fait j'aimerais illustrer à l'aide de python le fait que la méthode de Newton est plus performante que la méthode des sécantes, qui est elle aussi plus performante que la méthode par dichotomie, à l'aide de l'exemple d'approximation de la racine carrée de 2. Que me conseillez-vous comme illustration alors ? Merci d'avance.

[Isaac Newton (1643-1727) prend toujours une majuscule. AD]



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par AD.
Re: python (débutant) dichotomie
il y a sept semaines
avatar
Bien sûr que c’est possible.
Il faut juste que tu écrives un script valide syntaxiquement ou que tu nous dises exactement quel est le message d’erreur. Sans ça, on ne peut pas t’aider.

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-
Re: Dichotomie (python débutant)
il y a sept semaines
Voici le message d'erreur sur Pyzo
"Uncaught Python exception: invalid syntax (<logger>, line 3)
File "code.py", line 63, in runsource
File "codeop.py", line 171, in __call__
File "codeop.py", line 100, in _maybe_compile
File "codeop.py", line 87, in _maybe_compile
File "codeop.py", line 136, in __call__"
Re: Dichotomie (python débutant)
il y a sept semaines
Avec la méthode des sécantes on construit la suite Un+1=(2+2Un)/(2+Un) et on montre que 0<racine(2)-Un<(1/5)^n
J'ai créé alors cet algorithme mais c'est faux ,on devrait obtenir n=19 et non 144....


Re: Dichotomie (python débutant)
il y a sept semaines
Avec la méthode de Newton on construit la suite Un+1=(Un+2/Un)*1/2,
et on montre que Un-racine(2)< Vn avec Vn=1/2^(2^n-1). On remarque alors que Vn+1=Vn²/2.

J'ai créé cet algorithme mais pareil il y a un souci car on devrait normalement obtenir n=6 et non 9...



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par AD.


Re: Dichotomie (python débutant)
il y a sept semaines
avatar
Une erreur de syntaxe ligne 3 veut dire que ton script ne respecte la syntaxe de Python à la ligne 3 (et peut-être ailleurs après).

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-
Re: python (débutant) dichotomie
il y a sept semaines
Bonjour.

Ne faut-il pas une ligne vide, après la définition d'une fonction ?
Re: Dichotomie (python débutant)
il y a sept semaines
Dans le code de ce message, il est plausible qu'il suffise d'ajouter une ligne vide après la définition de la fonction, c'est-à-dire remplacer...
def f(x):
    return x**2-2
    a=1
    b=2
ou mieux...
def f(x):
    return x**2-2
a=1
b=2
par
def f(x):
    return x**2-2

a=1
b=2
J'ai déjà eu ce genre de gag en copiant collant du code d'un éditeur de texte dans l'interpréteur Python.
Edit : grillé par Gérard, d'après qui ce n'est pas un gag, c'est un feature.



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par Math Coss.
Re: python (débutant) dichotomie
il y a sept semaines
avatar
Citation
gerard0
Ne faut-il pas une ligne vide, après la définition d'une fonction ?

Pas à ma connaissance (je viens de tester).

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-
Re: Dichotomie (python débutant)
il y a sept semaines
Bonjour,
j'ai beau tout essayer, même en retapant tout dans un nouveau fichier, toujours un message d'erreur ligne 3 c'est bizarre... enfin bref ce n'est pas grave, ça a l'air de fonctionner avec Python3.6.

Sinon qu'est-ce que je dois modifier dans mon algorithme (méthode de la sécante) pour que cela fonctionne ? Merci beaucoup.



Edité 1 fois. La derni&egrave;re correction date de il y a sept semaines et a &eacute;t&eacute; effectu&eacute;e par AD.
Re: Dichotomie (python débutant)
il y a sept semaines
avatar
Montre-nous ce fichier en entier (et correctement aligné).

Le café est un breuvage qui fait dormir,
quand on n’en prend pas.
-+- Alphonse Allais -+-
Re: Dichotomie (python débutant)
il y a sept semaines
Citation
alibabadu59
Si je comprends bien il faut taper le programme entièrement dans un fichier à gauche puis faire un copier/coller à droite "logger" pour lancer le programme.

Non, après avoir tapé ton programme dans ce que tu appelles "fichier à gauche", il faut l'exécuter (avec F5 je crois, je n'ai pas Pyzo sous la main).

Dans ce message [www.les-mathematiques.net] tu es manifestement dans le shell où tu ne peux exécuter qu'une commande à la fois, c'est pour ça que ça ne marche pas.
Seuls les utilisateurs enregistrés peuvent poster des messages dans ce forum.

Cliquer ici pour vous connecter

Liste des forums - Statistiques du forum

Total
Discussions: 140 809, Messages: 1 377 716, Utilisateurs: 25 676.
Notre dernier utilisateur inscrit Ruriii.


Ce forum
Discussions: 2 378, Messages: 17 522.

 

 
©Emmanuel Vieillard Baron 01-01-2001
Adresse Mail:

Inscription
Désinscription

Actuellement 16057 abonnés
Qu'est-ce que c'est ?
Taper le mot à rechercher

Mode d'emploi
En vrac

Faites connaître Les-Mathematiques.net à un ami
Curiosités
Participer
Latex et autres....
Collaborateurs
Forum

Nous contacter

Le vote Linux

WWW IMS
Cut the knot
Mac Tutor History...
Number, constant,...
Plouffe's inverter
The Prime page