Écrire une fonction indicatrice

Écrire une fonction indicatrice - C++ - Programmation

Marsh Posté le 08-01-2008 à 22:59:35    

Bonsoir,
 
voilà j'aimerai savoir s'il est possible d'écrire une fonction indicatrice qui prend un nombre en argument et qui retourne 1 si c'est un nombre rationnel (exemple : 1/10, 3, -5/47) (Q) ou 0 si le nombre est irrationnel (R \ Q) (exemple : pi, e, sqrt(2)).
 
Le seul problème est que si l'on prend des double, ou des float en argument on ne peux pas faire de distinction à cause de la représentation dicrète des nombres.
 
Avec quel type de variable travailler et quel genre d'algorithme peut-on écrire ?
 
Merci beaucoup pour votre aide, je suis vraiment perdu.

Reply

Marsh Posté le 08-01-2008 à 22:59:35   

Reply

Marsh Posté le 08-01-2008 à 23:06:32    

abaddon2002 a écrit :

Bonsoir,
 
voilà j'aimerai savoir s'il est possible d'écrire une fonction indicatrice qui prend un nombre en argument et qui retourne 1 si c'est un nombre rationnel (exemple : 1/10, 3, -5/47) (Q) ou 0 si le nombre est irrationnel (R \ Q) (exemple : pi, e, sqrt(2)).
 
 
J'aimerai demain
 
Le seul problème est que si l'on prend des double, ou des float en argument on ne peux pas faire de distinction à cause de la représentation dicrète des nombres.
 
Avec quel type de variable travailler et quel genre d'algorithme peut-on écrire ?
Comme tu veux
 
 
 
Merci beaucoup pour votre aide, je suis vraiment perdu.
Cartes, gps, au choix


 

Reply

Marsh Posté le 08-01-2008 à 23:14:54    

abaddon2002 a écrit :


Avec quel type de variable travailler et quel genre d'algorithme peut-on écrire ?


 
A moins de ne travailler qu'avec des types à toi, je penses que c'est mort de part la manière donc les nombres sont représentés.

Reply

Marsh Posté le 08-01-2008 à 23:16:18    

c'est pas possible ?  :(  
 

Citation :

Avec quel type de variable travailler et quel genre d'algorithme peut-on écrire ?
Comme tu veux


 
Un type de variable qui ne soit pas une simple représentation discrète des nombres, mais bel et bien une représentation réelle, malheureusement je ne connais pas de type de variable qui soient ça..
 
Pour l'algorithme :
 
si le nombre à virgule (argument de la fonction) peut être représenté comme une fraction de deux entiers alors il est rationnel et on retourne 0, sinon il est irrationnel et on retourne 1.
 

Citation :

Merci beaucoup pour votre aide, je suis vraiment perdu.  
Cartes, gps, au choix


S'il en existe une pour ce genre de problème je l'achète tout de suite !  :jap:


Message édité par abaddon2002 le 08-01-2008 à 23:17:01
Reply

Marsh Posté le 08-01-2008 à 23:18:46    

La definition d'un nombre rationelle n'a pas de sens en representation float IEEE :/

 

Message cité 1 fois
Message édité par Joel F le 08-01-2008 à 23:18:54
Reply

Marsh Posté le 08-01-2008 à 23:21:07    

Joel F a écrit :

La definition d'un nombre rationelle n'a pas de sens en representation float IEEE :/


 
Mais alors comment peut-on distinguer des rationnels d'irrationnels en informatique ????

Reply

Marsh Posté le 08-01-2008 à 23:23:16    

bah tu peut pas je pense ...
 
c'est pr un exercice ou bien ?

Reply

Marsh Posté le 08-01-2008 à 23:25:07    

oui, de mathématiques discrètes...
 
Je sais pas lol, le but c'est peut-être de nous faire remarquer qu'en informatique on fait abstraction des irrationnels.. mais ça me paraît bizarre qu'on ne puisse pas.

Message cité 1 fois
Message édité par abaddon2002 le 08-01-2008 à 23:25:32
Reply

Marsh Posté le 08-01-2008 à 23:28:51    

pour moi la question n' a pas de sens.

Reply

Marsh Posté le 08-01-2008 à 23:39:08    

Mais non mais non Joel F.
Je me souviens d'un logiciel qui sortait la proba pour qu'un nombre à virgule soit un rationnel et lequel. Faudra que je le retrouve.
genre |nombre-epsilon|=rationnel, rien de plus

Reply

Marsh Posté le 08-01-2008 à 23:39:08   

Reply

Marsh Posté le 08-01-2008 à 23:41:37    

la proba, on est bien d'accord ...
tu ne peut pas raisonner formellement sur la representation IEEE d'un réel

Reply

Marsh Posté le 09-01-2008 à 00:54:48    

abaddon2002 a écrit :

oui, de mathématiques discrètes...
 
Je sais pas lol, le but c'est peut-être de nous faire remarquer qu'en informatique on fait abstraction des irrationnels.. mais ça me paraît bizarre qu'on ne puisse pas.

Tant que tu te base sur une représentation machine d'un nombre, avec un nombre maximum de chiffres signicatifs, tu ne peut représenter que des nombres rationnels (et pas tous, uniquement ceux qui n'ont pas un dévellopement decimal cyclique. un nombre comme 1/3 ne sera pas plus représentable que pi).
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-01-2008 à 00:56:58    

GrosBocdel a écrit :

Mais non mais non Joel F.
Je me souviens d'un logiciel qui sortait la proba pour qu'un nombre à virgule soit un rationnel et lequel. Faudra que je le retrouve.
genre |nombre-epsilon|=rationnel, rien de plus

Pour qu'un nombre a virgule soit rationnel, il faut et il suffit que
a) le devellopement decimal s'arrete a un certain rang
ou
b) le devellopement decimal est cyclique a partir un certain rang
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 09-01-2008 à 08:26:39    

Ok gilou ça peut-être une piste, mais dans le cas d'une entrée clavier humaine, est-ce que qu'un 0.000258 bien tronqué c'est 1/3869, 1/3870, 1/3871 ?
Si finalement c'est 0.0002584?
 
A part calculer toute une gamme de fractions et les comparer à ton nombre à epsilon près, abaddon2002, je ne vois pas trop.
Si je retrouve ce logiciel, je vous passerai l'adresse.

Reply

Marsh Posté le 09-01-2008 à 10:03:42    

Dans le cas d'une entrée clavier humaine, 0.000258  ca restera toujours 258/1000000 c'est à dire un nombre rationnel avec un dénominateur qui est une puissance de 10.
Si c'est 0.0002584 ça sera 2584/10000000  
 
Par contre, si tu as un systême capable de représenter un entier de taille quelconque (à la BigNum Smalltalk) et d'effectuer les opérations habituelles sur cette représentation, tu peux alors représenter une fraction comme un couple, et definir sur les couples les operations habituelles.
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed