Mes factorielles sont fausses
Modérateur : Politburo
Mes factorielles sont fausses
Quand j'appuie sur la touche factorielle d'une HP-32S, 33S, 42S, 15C, TI-81 et d'autres la valeur affichée me semble tout-à-fait bonne. Mais si je réalise les multiplications moi-même, à la main ou par programme, en commençant du début ou par la fin, ce que je trouve a très souvent un écart minime.
Dans la capture ci-dessus, en haut, c'est mon produit de facteurs patiemment calculé (49!), et en bas, la valeur retournée par la touche factorielle. Le dernier chiffre est différent et c'est le chiffre de la touche qui est bon.
Je me demande ce que fait le micro programme de factorielle que je ne fais pas, pour que nous aboutissions à des résultats différents.
La fonction gamma de la 42S pour 50 donne exactement la même valeur que la touche factorielle. C'est juste mon empilement de multiplications qui est faux. Il n'y a pas de chiffres de garde dans la 42S ... Je bloque
Dominique
-
- Fonctionne à 2400 bauds
- Messages : 1799
- Enregistré le : 03 mai 2003 02:24
- Localisation : Nonglard (Annecy)
- Contact :
Re: Mes factorielles sont fausses
Salut,
Je pense que la différence vient du fait que quand tu fais les calculs à la main, il y a des arrondis à chaque itération alors que la fonction factoriel doit utiliser une formule mathématique pour obtenir directement le resultat (plus rapide donc).
Je pense que la différence vient du fait que quand tu fais les calculs à la main, il y a des arrondis à chaque itération alors que la fonction factoriel doit utiliser une formule mathématique pour obtenir directement le resultat (plus rapide donc).
Amiga, UNIX
Sharp, NetBSD http://destroyedlolo.info/
Apache, PHP 100 % dictionnary free
Vacances, Voyages 1 mispelling by word
Sharp, NetBSD http://destroyedlolo.info/
Apache, PHP 100 % dictionnary free
Vacances, Voyages 1 mispelling by word
- pcscote
- Fonctionne à 300 bauds
- Messages : 160
- Enregistré le : 11 juil. 2018 01:06
- Localisation : Québec/Canada
Re: Mes factorielles sont fausses
HP-42S - Owner's Manual, page 3:
HP-42S - Manuel d’utilisation, page 3:The microprocessor has been optimized for fast and reliable computations. The calculator uses 15 digits internally, then rounds to 12 digits for precise results.
L'optimisation du microprocesseur assure des calculs rapides et fiables sur 15 chiffres de fagon interne (arrondi a 12 chiffres) et des résultats précis.
Sylvain
Calculatrices et Pockets HP > J'ai tous les modèles, manuels, accessoires et périphériques, mes préférés: 41, 71 & 75.
Techno : 41 > 41CL, MLDL2K, Clonix-d, NoV-64d, MAXX | 71 > FRAM71, MultiMod | IL > PIL-Box, PIL-IO, GPIO | ...
Calculatrices et Pockets HP > J'ai tous les modèles, manuels, accessoires et périphériques, mes préférés: 41, 71 & 75.
Techno : 41 > 41CL, MLDL2K, Clonix-d, NoV-64d, MAXX | 71 > FRAM71, MultiMod | IL > PIL-Box, PIL-IO, GPIO | ...
-
- Fonctionne à 1200 bauds
- Messages : 650
- Enregistré le : 21 sept. 2009 21:56
- Localisation : Metz
Re: Mes factorielles sont fausses
La fonction factorielle n'utilise t-elle pas une table precalculee?
-
- Fonctionne à 300 bauds
- Messages : 106
- Enregistré le : 04 avr. 2021 16:09
- Localisation : 50.693165,4.573478
Re: Mes factorielles sont fausses
Ta machine a sans doute raison.
Ici calculé dans un programme RPN, la mantisse est suffisante pour ne pas raboter le 34.
Affichage étendu en haut de l'écran (commande SHOW).
Ici calculé dans un programme RPN, la mantisse est suffisante pour ne pas raboter le 34.
Affichage étendu en haut de l'écran (commande SHOW).
Re: Mes factorielles sont fausses
Il y a aussi ces programmes à tester :
- grandes factorielles (OP12 page 62)
- Article sur les grandes factorielles (avec organigramme + programme pour TI-58) (OP5 page 55)
- Toutes les décimales d'une factorielle version HP-41 (OP10 page 68)
- grandes factorielles (OP12 page 62)
- Article sur les grandes factorielles (avec organigramme + programme pour TI-58) (OP5 page 55)
- Toutes les décimales d'une factorielle version HP-41 (OP10 page 68)
Re: Mes factorielles sont fausses
Bonsoir, merci pour vos réponses
Je ne savais pas pour les 15 chiffres mais ça correspond à l'effet constaté. Donc quand je fais mes multiplications, j'agis toujours sur un nombre précédent qui vient d'être arrondi en interne de 15 à 12 chiffres. Mais comment le micro-programme de factorielle arrive-t-il à échapper à l'étape d'arrondi. Je devrais pouvoir en faire autant à la main, c'est là que je bloque.pcscote a écrit : ↑07 févr. 2022 04:42 HP-42S - Owner's Manual, page 3:HP-42S - Manuel d’utilisation, page 3:The microprocessor has been optimized for fast and reliable computations. The calculator uses 15 digits internally, then rounds to 12 digits for precise results.L'optimisation du microprocesseur assure des calculs rapides et fiables sur 15 chiffres de fagon interne (arrondi a 12 chiffres) et des résultats précis.
Dominique
- Administrateur
- Messages : 5941
- Enregistré le : 24 mai 2002 16:55
- Localisation : Toulouse
- Contact :
Re: Mes factorielles sont fausses
Salut,
C'est peut être par ce que l'algorithme de calcul utilisé n'est pas celui qu'on présuppose : https://en.wikipedia.org/wiki/Factorial#Computation
A+
C'est peut être par ce que l'algorithme de calcul utilisé n'est pas celui qu'on présuppose : https://en.wikipedia.org/wiki/Factorial#Computation
A+
- bernouilli92
- Fonctionne à 14400 bauds
- Messages : 5230
- Enregistré le : 21 nov. 2012 13:03
- Localisation : Ile de France
Re: Mes factorielles sont fausses
Il faut noter que suivant comment ont fait les calculs, on obtient un résultat différent.
Si on commencer par 2 et qu'on fini par 49, on obtient une valeur plus petite que la bonne valeur.
Mais si on commence par 49 et qu'on fini par 2, on obtient une valeur plus grande.
Si on commencer par 2 et qu'on fini par 49, on obtient une valeur plus petite que la bonne valeur.
Mais si on commence par 49 et qu'on fini par 2, on obtient une valeur plus grande.
HP, Casio, Sharp, Psion, quelques TI et divers autres
Re: Mes factorielles sont fausses
Je ne vois pas trop pourquoi tu bloques sur ce point, ou alors c'est moi qui ai loupé quelque chose.Tipoucet a écrit : ↑07 févr. 2022 19:13 Je ne savais pas pour les 15 chiffres mais ça correspond à l'effet constaté. Donc quand je fais mes multiplications, j'agis toujours sur un nombre précédent qui vient d'être arrondi en interne de 15 à 12 chiffres. Mais comment le micro-programme de factorielle arrive-t-il à échapper à l'étape d'arrondi. Je devrais pouvoir en faire autant à la main, c'est là que je bloque.
Les multiplications se font en interne sur 15 chiffres, et le résultat n'est arrondi à 12 chiffres qu'à la fin.
La HP 42S est programmée en interne en RPL-système, comme les HP48 ou la HP50g. Or en RPL-système, on peut manipuler des nombre de 12 chiffres, ceux accessibles à l'utilisateur, mais aussi des nombres de 15 chiffres, avec les opérations associées. Il suffit donc que la programmation de la factorielle en RPL-système utilise des multiplications sur 15 chiffres pour minimiser l'effet des arrondis.
D'autre part, mais c'est un peu un autre sujet, les calculatrices HP utilisent les mêmes algorithmes mathématiques depuis la HP 71B. Toutes ces calculatrices donnent donc des résultats identiques :
http://www.rskey.org/%7Emwsebastian/miscprj/results.htm
-
- Fonctionne à 2400 bauds
- Messages : 1799
- Enregistré le : 03 mai 2003 02:24
- Localisation : Nonglard (Annecy)
- Contact :
Re: Mes factorielles sont fausses
Non, comme je le disais, il serait étonnant qu'elle passe par des multiplications vu que ce n'est pas efficace : elle utilise une formule mathématique (faire une recherche sur google, c'est un grand classique) qui non seulement réduit le nombre de calculs à faire et évite tout ces problèmes d'arrondis.
C'est la même chose pour la grosse majorité des fonctions mathématiques.
Amiga, UNIX
Sharp, NetBSD http://destroyedlolo.info/
Apache, PHP 100 % dictionnary free
Vacances, Voyages 1 mispelling by word
Sharp, NetBSD http://destroyedlolo.info/
Apache, PHP 100 % dictionnary free
Vacances, Voyages 1 mispelling by word
- bernouilli92
- Fonctionne à 14400 bauds
- Messages : 5230
- Enregistré le : 21 nov. 2012 13:03
- Localisation : Ile de France
Re: Mes factorielles sont fausses
Même avec une précision de 34 chiffres, le résulat est faux à partir d'un certain chiffre.
Le bon résultat est 608281864034267560872252163321295376887552831379210240000000000.
Si tu refais le calcul mais dans l'autre sens, tu auras un résulat différent.
La factorielle se calcule effectivement par une formule et la complexité du calcul ne dépend que (très) peu de la valeur d'entrée (sauf dans de rare cas de calculatrice très anciennes).
On peut notamment calculer la factorielle en utilisant la fonction gamma, qui peut être calculée de différentes manières, dont une avec une fonction polynomiale.
Voir ici :
http://www.rskey.org/CMS/index.php/the-library/11
HP, Casio, Sharp, Psion, quelques TI et divers autres
Re: Mes factorielles sont fausses
Bonjour, merci pour ces échanges riches.
Je reste perplexe sur l'implémentation de développements mathématiques sophistiqués sur de simples calculatrices n'ayant que 10 ou 12 chiffres + une lucarne d'exposant de dix. Ce que je constate c'est que la solution par multiplications successives est loin d'être mauvaise car l'écart que je constate, quand il existe pour une valeur donnée, est toujours minime par rapport à la touche (jamais plus du dernier chiffre significatif). Et dans la vingtaine de machines que j'ai testées récemment, il y a bien proportionnalité entre la hauteur des valeurs et le temps de réponse (modèles plus ou moins récents mais pas antiques). Parfois la rapidité de la machine est telle qu'il faut programmer une succession de centaines ou milliers de calculs identiques (Casio Graph 90, TI NSPIRE) pour le mesurer mais c'est indéniable. Il est possible de prédire à la seconde près le temps de calcul selon la valeur à calculer). J'aime bien l'idée que les 15 chiffres internes de la 42S sont responsables de résultats différents selon que le calcul est manuel ou par micro-programme. Cela voudrait dire que TI et CASIO et d'autres font de même et agissent en interne sur des ressources inaccessibles à l'utilisateur. Pour une précision quasi identique, mais manifestement différente. Une autre idée que j'aime bien est le sens d'où on part pour réaliser les multiplications. J'ai obtenu pour une valeur un écart en partant du bas et zéro en partant du haut. Mais j'avais testé cela aussi au début sur une autre machine et n'avait pas abouti à zéro. Il est possible que des machines très modernes et précises comme la WP 34S ou DM42 (que je n'ai pas) aient recours à des algo plus précis et rapides vu leur fenêtre de réponse. Mais les calculatrices courantes je doute encore. Il me faudrait faire une étude plus complète. Un jour ... Bon weekend
Je reste perplexe sur l'implémentation de développements mathématiques sophistiqués sur de simples calculatrices n'ayant que 10 ou 12 chiffres + une lucarne d'exposant de dix. Ce que je constate c'est que la solution par multiplications successives est loin d'être mauvaise car l'écart que je constate, quand il existe pour une valeur donnée, est toujours minime par rapport à la touche (jamais plus du dernier chiffre significatif). Et dans la vingtaine de machines que j'ai testées récemment, il y a bien proportionnalité entre la hauteur des valeurs et le temps de réponse (modèles plus ou moins récents mais pas antiques). Parfois la rapidité de la machine est telle qu'il faut programmer une succession de centaines ou milliers de calculs identiques (Casio Graph 90, TI NSPIRE) pour le mesurer mais c'est indéniable. Il est possible de prédire à la seconde près le temps de calcul selon la valeur à calculer). J'aime bien l'idée que les 15 chiffres internes de la 42S sont responsables de résultats différents selon que le calcul est manuel ou par micro-programme. Cela voudrait dire que TI et CASIO et d'autres font de même et agissent en interne sur des ressources inaccessibles à l'utilisateur. Pour une précision quasi identique, mais manifestement différente. Une autre idée que j'aime bien est le sens d'où on part pour réaliser les multiplications. J'ai obtenu pour une valeur un écart en partant du bas et zéro en partant du haut. Mais j'avais testé cela aussi au début sur une autre machine et n'avait pas abouti à zéro. Il est possible que des machines très modernes et précises comme la WP 34S ou DM42 (que je n'ai pas) aient recours à des algo plus précis et rapides vu leur fenêtre de réponse. Mais les calculatrices courantes je doute encore. Il me faudrait faire une étude plus complète. Un jour ... Bon weekend
Dominique
- badaze
- Fonctionne à 14400 bauds
- Messages : 8385
- Enregistré le : 12 févr. 2007 18:36
- Localisation : Pas très loin de Lyon
- Contact :
Re: Mes factorielles sont fausses
Et par divisions successives en partant du résultat final ?
Avec de très grands nombres, un algorithme n’a besoin d’être juste que sur une partie du résultat affiché.
Ainsi, pour 69! avec une calculatrice normale, que les chiffres affichés soient faux à partir du 6ème n’a pas grande importance.
Avec de très grands nombres, un algorithme n’a besoin d’être juste que sur une partie du résultat affiché.
Ainsi, pour 69! avec une calculatrice normale, que les chiffres affichés soient faux à partir du 6ème n’a pas grande importance.
Tout est bon dans le pocket.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
Moi j'aime tout.... Casio, HP, Sharp, TI et les autres sauf que les TI semblent ne pas m'aimer
http://www.emmella.fr
Mes Casio - HP - Sharp - TI
Homme invisible.
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3405
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: Mes factorielles sont fausses
Je rejoins entièrement cet avis.
La chose importante est que pour calculer 49! ou 69! à la main, il faut poser sur le papier respectivement 49 et 69 multiplications enchainées dont le produit va très vite faire plusieurs dizaines de chiffres.
Qu'il y ai ou non une petite erreur sur le dernier chiffre de l'affichage de ma calculatrice n'a finalement que très peu d'importance. Ce qui me satisfait pleinement, c'est que je n'ai pas à utiliser une vingtaine de pages de mon block-note et le reste de la semaine à faire les calculs.
Même si ma HP-15C met 5 secondes à calculer une valeur très proche de 49!, c'est infiniment mieux que de le faire à la main !
Sans compter, que je ne suis pas sûr d'être capable de faire trois jours de calculs enchainés sans faire quelque part une erreur et devoir recommencer bientôt… Errare humanum est
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.