Écrire une fonction indicatrice - C++ - Programmation
Marsh Posté le 08-01-2008 à 23:06:32
abaddon2002 a écrit : Bonsoir, |
Marsh Posté le 08-01-2008 à 23:14:54
abaddon2002 a écrit : |
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.
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 ? |
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. |
S'il en existe une pour ce genre de problème je l'achète tout de suite !
Marsh Posté le 08-01-2008 à 23:18:46
La definition d'un nombre rationelle n'a pas de sens en representation float IEEE
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 ????
Marsh Posté le 08-01-2008 à 23:23:16
bah tu peut pas je pense ...
c'est pr un exercice ou bien ?
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.
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
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
Marsh Posté le 09-01-2008 à 00:54:48
abaddon2002 a écrit : oui, de mathématiques discrètes... |
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+,
Marsh Posté le 09-01-2008 à 00:56:58
GrosBocdel a écrit : Mais non mais non Joel F. |
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+,
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.
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+,
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.