Python, approximation nombre réel par un nombre rationnel

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
Reznov
Membre Relatif
Messages: 191
Enregistré le: 10 Sep 2012, 12:15

Python, approximation nombre réel par un nombre rationnel

par Reznov » 01 Déc 2013, 19:35

Bonjours à tous et à toute.
Je poste ici pour avoir une AIDE POUR LA QUESTION 3, LA DERNIERE QUESTION ( ça peut paraitre grand) J'ai mis ce qui il y a avant pour comprendre le sujet :)

1ere question:

Il faut que je réalise une fonction nommé distance à 3 paramètres.
1) x un nombre réel (float)
2) n et d deux entiers (int), d non nul
qui renvoie la distance séparant le nombre réel x du nombre rationnel n/d , c'est à dire
Valeur absolue de x-(n/d)

On peut utiliser la fonctionne abs_float qui calcule la valeur absolue du flottant passé en paramètre.



2eme question:
on commence par chercher toutes les fractions de dénominateurs fixé d, celle qui est la plus proche du réel x qu'on supposera compris entre 0 et 1.
Il s'agit donc d'examiner un à un tous les numérateurs k compris entre 0 et d, et de retenir de tous ces numérateurs celui qui minimise la distance entre x et k/d

Il font réaliser une fonction meilleur_numerateur à 2 paramètres
1) d un entier (int) supposée strictement positif
2) x un réel (float) supposé compris entre 0 et 1.
qui renvoie l'entier k compris entre 0 et d minimisant la distance entre x et k/d

3eme question
Réaliser une fonction nommée imprimer_flottant_en_rationnel à 2 paramètres.
1) n un entier (int) supposé strict positif
2) x un réel (float) suposée compris entre 0 et 1.
qui imprime la fraction la plus proche de x parmi toutes celles de dénominateur n'excédent pas n.

Au fait, on doit avoir:

imprimer_flottant_en_rationnel(20, 0.141592):
1/7
- : unit = ()

Ca signifie que parmi toutes les fractions comprise entre 0 et 1 dont le dénominateur n'excède pas 20, 1/7 est la plus proche du nombre x = 0.141592

Merci d'avance cordialement



Avatar de l’utilisateur
fatal_error
Modérateur
Messages: 6610
Enregistré le: 22 Nov 2007, 13:00

par fatal_error » 01 Déc 2013, 21:35

slt,

ben c'est assez facile vu que t'as plus qu'à assembler ce que t'as déjà fait,
Code: Tout sélectionner
imprimer_flottant_en_rationnel(n, x):
meilleurDistance=infini
pour denom=1 à d
  //on cherche le numerateur qui donne la frac la plus proche de x
  k=meilleur_numerateur(denom,x)
  currentDistance=distance(x,k,denom)
  si currentDistance < meilleureDistance
   //on sauvegarde la meilleure fraction
   bestK=k
   bestD=denom
   meilleureDistance=currentDistance
  finsi
retourner bestK/bestD
la vie est une fête :)

Reznov
Membre Relatif
Messages: 191
Enregistré le: 10 Sep 2012, 12:15

par Reznov » 01 Déc 2013, 22:48

Bonjours, il faut que je le mette en language python au fait et ça la que je bloque.
J'avais fait language algo mais on veut python

kangourex
Membre Naturel
Messages: 32
Enregistré le: 21 Nov 2013, 19:39

par kangourex » 01 Déc 2013, 23:27


 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 36 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite