Aller au contenu

Messages recommandés

Posté(e) (modifié)

J'ai besoin d'aide pour un devoir-maison. Voici ce que l'on nous demande: 
1) Créer un programme en python calculant la racine carrée d’un entier n. (en python racine s’écrit sqrt ().
2) a) Ecrire un algorithme permettant de trouver une approximation de √n (racine de n) avec une précision p à l’aide de la suite (un).
b) Programmer cet algorithme.
c) Combien de valeurs successives sont nécessaires pour obtenir une valeur approchée de 5 avec une précision p = 10-8 .

Modifié par Denis CAMUS
Changement de titre
  • E-Bahut
Posté(e)
il y a 52 minutes, kekeking a dit :

2) a) Ecrire un algorithme permettant de trouver une approximation de √n (racine de n) avec une précision p à l’aide de la suite (un).
 

Bonjour, (non, c'est pas un gros mot)

Quelle suite ?

 

De rien.

  • E-Bahut
Posté(e)

Algorithme de Héron, de mémoire.

Internet foisonne d'exemples complets de cet algorithme. Fouine un peu et sans trop d'efforts tu auras la réponse.

Posté(e) (modifié)

Bonjour, 

pour l'instant j'ai juste fait le 1) 2) et le 3) a, b et c 

je ne comprends pas cependant le 3 d donc par conséquent incapable de répondre à la e 

et je ne comprends pas également tout le 4) 

Modifié par Denis CAMUS
Suppression de la citation inutile
  • E-Bahut
Posté(e)

Bonjour,

La suite concerne la programmation en Python. Je suppose que tu as quelques notions de ce logiciel puisque tu as su faire le 3)c). En particulier qu'as-tu obtenu au 3)c) par exemple pour n=2 ?

Posté(e) (modifié)

Pour n= 2, j'ai obtenu les résultats suivants:  

2; 1,5; 1,416; 1,414; 1,414; 1,414; 5; 1,414; 1,414; 1,414; 1,414

Modifié par Denis CAMUS
Suppression de la citation inutile
  • E-Bahut
Posté(e)

Bonjour,

Avec seulement 3 décimales ? Tu as géré l'affichage ou tu n'as recopié que celles-là ? Par contre, le 5 au beau milieu est bizarre.

2; 1,5; 1,416; 1,414; 1,414; 1,414; 5; 1,414; 1,414; 1,414; 1,4

Donc, tu sais faire. Pour le d), il suffit d'un tout petit script

from math import sqrt # car sqrt ne fait pas partir du langage de base, il faut donc importer le module math
n=int(input("Valeur de n"))
print(sqrt(n))

Tu dois constater que ce script retourne la dernière valeur de chacune des listes précédentes.

Pour l'algorithme de la partie 4, réfléchis et essaie de poster un élément de réponse.

Posté(e) (modifié)

Pour l'algorithme de la partie 4, j'ai vu qu'on pouvait utiliser l'algorithme de Héron car ce dernier permet de déterminer des valeurs approchées de √𝑛 pour n entier naturel.

Pour déterminer une valeur approchée de √𝑛, on peut calculer les valeurs successives de 𝑢2,𝑢3,𝑢4,... avec :

𝑢1 = 𝑛  

𝑢2 = 0,5(𝑢1 + 𝑛/𝑢1)  

𝑢3 = 0,5(𝑢2 + 𝑛/𝑢2)

𝑢4 = 0,5(𝑢3 + 𝑛/𝑢3)

et ainsi de suite 

En poussant un peu plus mes recherches sur Internet, j'ai pu trouver un algorithme écrit en langage naturel permettant de calculer √𝑛 avec une précision p (ici en pièce jointe): 

j'ai essayé de le traduire en langage python mais je n'y arrive pas, il y a toujours une erreur de syntaxe...

Capture d’écran 2021-03-06 à 16.12.02.png

Modifié par Denis CAMUS
Suppression de la citation inutile
  • E-Bahut
Posté(e)

Cet algorithme est correct, la seule chose qu'on peut lui reprocher, c'est qu'il suppose qu'on dispose effectivement de la fonction racine. Si on doit s'en passer, il faut tester la différence un-un-1 par rapport à p, donc travailler sur deux variables.

Pour le moment, travaille avec l'algorithme que tu as trouvé. Poste ton script, ce n'est pas difficile à faire, c'est du texte, il suffit de faire un copier-coller. Je te dirai où ça ne va pas. Regarde aussi le message d'erreur, sur quel élément il porte.

  • E-Bahut
Posté(e)

Bonjour,

En supposant que les indentations sont correctes, il y a deux choses qui ne vont pas :

* u=0,5*(u+(n/u))

la virgule, pour Python, comme pour la plupart des logiciels de programmation, le séparateur décimal est le point.

* return u and p

Je ne sais pas comment Python interprète ce and dans ce contexte, en tout cas, pas correctement.

La bonne syntaxe est

return u,p

Mais, de toute façon, le retour de p ne sert à rien, il vaut mieux retourner i, nombre de calculs successifs.

 

J'ai testé ce script, qui fonctionne,

from math import*
def k(n,p):
  u=n
  i=0
  while(u-sqrt(n))>p:
    u=0.5*(u+n/u)
    i=i+1
  return u,i

print(k(2,0.001))

Posté(e) (modifié)

D'accord merci beaucoup pour ton aide. Grâce à toi, je pense avoir réussi 

Modifié par Denis CAMUS
Suppression de la citation inutile
  • E-Bahut
Posté(e)

Bonjour,

Lorsque tu veux répondre au dernier message (juste au-dessus) il est inutile de cliquer sur "Citer". Cela recopie ce message inutilement et n'apporte rien de plus, sinon alourdir le fil et parfois le rendre difficilement compréhensible.

Il vaut mieux taper le texte directement dans le cadre du bas, celui où il y a écrit : "Répondre à ce sujet".

  • E-Bahut
Posté(e)

@kekeking

Juste un petit complément. Si on ne veut pas utiliser la fonction sqrt, on peut procéder comme indiqué dans le script ci-dessous (évidemment testé)

n=int(input("Valeur de n ?"))
p=float(input("Précision ?"))
u0=n
u1=1/2*(u0+n/u0)
nb=1
while u0-u1>p:
  u0=u1
  u1=1/2*(u0+n/u0)
  nb=nb+1
print(str(u1)+" < racine("+str(n)+") < "+str(u0))
print("Nombre de valeurs successives : "+str(nb))

L'idée est de travailler sur deux valeurs successives de un et de comparer l'écart à la précision souhaitée. Sur Internet, tu trouves aussi une méthode utilisant deux suites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...
spam filtering
spam filtering