Calcul de factorielle, avec les chiffres significatifs Hitskin_logo Hitskin.com

Ceci est une prévisualisation d'un thème de Hitskin.com
Installer le thèmeRetourner sur la fiche du thème

Tout 82
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Tout 82

Ven 25 Oct 2024 - Bienvenue,

Rechercher
 
 

Résultats par :
 


Rechercher Recherche avancée

Connexion

Récupérer mon mot de passe



Chatbox externe


Derniers sujets
» [JEU] Mon voisin du dessous
Calcul de factorielle, avec les chiffres significatifs EmptyDim 16 Oct 2022 - 21:11 par Wistaro

» Bonne année 2018!
Calcul de factorielle, avec les chiffres significatifs EmptyVen 2 Nov 2018 - 19:42 par Ti64CLi++

» Lancement du TI-Concours 2017 !
Calcul de factorielle, avec les chiffres significatifs EmptySam 20 Mai 2017 - 0:27 par Paulo1026

» Chaînes Youtube des membres
Calcul de factorielle, avec les chiffres significatifs EmptyVen 19 Mai 2017 - 22:41 par Wistaro

» cacul du taux d'intêret
Calcul de factorielle, avec les chiffres significatifs EmptyVen 24 Mar 2017 - 21:50 par m@thieu41

» [Projet] Un mario by tout82
Calcul de factorielle, avec les chiffres significatifs EmptyDim 29 Jan 2017 - 14:09 par Wistaro

» Cherche documentation assembleur TI82stat
Calcul de factorielle, avec les chiffres significatifs EmptyMer 25 Jan 2017 - 12:29 par Ti64CLi++

» Probleme Ti-82 Stats fr
Calcul de factorielle, avec les chiffres significatifs EmptyJeu 12 Jan 2017 - 13:56 par Ti64CLi++

» ROM 82 stats.fr
Calcul de factorielle, avec les chiffres significatifs EmptyJeu 15 Déc 2016 - 10:24 par Ti64CLi++

Partenaires
TI-Planet Espace-TI : Forum

Faire un don à Tout-82...
Où va cet argent ?
Membres donateurs:- Persalteas (10€)
- Wistaro (5€)
- jo2geek (22€)

Les posteurs les plus actifs du mois
Aucun utilisateur

Le Deal du moment : -37%
Promo : radiateur électrique d’appoint ...
Voir le deal
76.99 €

Vous n'êtes pas connecté. Connectez-vous ou enregistrez-vous

Calcul de factorielle, avec les chiffres significatifs

5 participants

Aller en bas  Message [Page 1 sur 1]

persalteas

persalteas
----------------------
----------------------

Salut, alors voilà mon algorithme, qui effectue bêtement ce qu'on fait à la main quand on calcule une factorielle: il pose les multiplications.

Je n'ai pas su trouver la méthode plus rapide pour laquelle 135! est une limite.
Mon algorithme ci-dessous est donc plus lent (7 minutes et 8 secondes pour calculer 135!) mais peut calculer jusqu'à 449! (997 chiffres significatifs).


En virant les zéros de fin de liste et en stockant leur nombre dans une variable, on pourrait étendre la portée de l'algorithme jusqu'à la factorielle qui possède 999 chiffres significatifs avant les zéros, ce qui est assez puissant, quand même. (mais que je n'ai pas fait dans le cadre du concours, c'était inutile... )


prgmFACTDG a écrit:
:Input N
:getTime→L6
:ClrHome
:Disp "COMPUTING…
:Output(3,1,"*
:abs(iPart(real(NN
:{1L1
:For(A,2,N
: Output(2,1,A
: Output(4,1,L1
: AL1L1
: A-1
: dim(L1)-iPart(Ans/5)-iPart(Ans/25
: For(C,Ans,1,1
: If 9<L1(C:Then
: If C=1:Then
: iPart(.1L1(C
: augment({Ans},L1L1
: IS>(C,C:
: Else
: L1(C-1)+iPart(.1L1(CL1(C-1
: End
: 10fPart(.1L1(CL1(C
: End
: End
:End
:DelVar ADelVar CDelVar NClrHome
:Disp "SPENT TIME:","{H,M,S}",getTime-L6,"=
:L1
:DelVar L1Pause Ans
:ClrHome

Bon, en plus de l'algo de base, j'ai ajouté des petits affichages graphiques pour occuper le correcteur, et un calcul du temps d'exécution.

Le programme permet de récupérer la liste contenant les chiffres du résultat dans Ans.

La ligne "dim(L1)-iPart(Ans/5)-iPart(Ans/25" sert à se passer des zéros en fin de liste, les calculer ne sert à rien, alors autant gagner de la vitesse. Une factorielle prend un zéro tout les 5! (à 5!, 10!, 15! ... etc) et un de plus tous les 25! , d'où cette ligne.


Autre remarque, le programme est optimisé pour la vitesse, pas pour le poids en octets, vous l'aurez remarqué Smile
J'aimerais bien connaitre votre méthode, aussi, svp :P



Dernière édition par persalteas le Jeu 6 Mar 2014 - 19:12, édité 1 fois

https://tout82.forumactif.org

Wistaro

Wistaro
Passioné
Passioné

Waw c'est beau! Tu as fait comment la colorationsyntaxique?
Et que-ce que le gettime() vient faire ici?

https://www.youtube.com/user/Wistaro

persalteas

persalteas
----------------------
----------------------

La coloration syntaxique c'est du HTML tout droit sorti de SourceCoder ou de TI-Editor :

Calcul de factorielle, avec les chiffres significatifs M810

Le getTime me permet juste d'afficher le temps d'exécution du programme à la fin, il ne sert pas à grand chose, oublie le :P

https://tout82.forumactif.org

Samos


----------------------
----------------------

Voilà ma version:
Spoiler:
EDIT: j'ai caché pour que les éventuelles personnes ne devant pas voir mon code ne le voient pas.



Dernière édition par Samos le Ven 7 Mar 2014 - 11:42, édité 2 fois

m@thieu41

m@thieu41
----------------------
----------------------

On est pas sensé attendre les résultats en théorie avant de publier ?

Je poste quand même mon code Razz: (EDIT: du coup j'ai fait pareil que Samos)
Spoiler:

Je n'ai pas non plus compris la limite 135! ...



Dernière édition par m@thieu41 le Ven 7 Mar 2014 - 14:12, édité 2 fois

Wistaro

Wistaro
Passioné
Passioné

Je posterais bien le mien mais comme il ne fonctionne pas :-(

Samos: Tu peux expliquer comment fonctionne le tient stp? Merci.

Persalteas: Au lieu de passer par un Get_Time tu pourrais passer par un StartTmr. Tu stockes sa valeur avant l'exécution du programme, puis celle après le programme et tu fait une soustraction...Le temps est en seconde, mais ce n'est pas plus mal et tu gagnes quelques octets

https://www.youtube.com/user/Wistaro

persalteas

persalteas
----------------------
----------------------

m@thieu, tu fais combien en temps pour 135! ?

@Wistaro oui mais de toutes façons je te dis, le programme n'est pas optimisé en octets...

https://tout82.forumactif.org

m@thieu41

m@thieu41
----------------------
----------------------

Sur Wabbitemu (vitesse 100%): 28 secondes.
Sur ma calto (mémoire pleine): 56 secondes (le double...).
Je ne sais pas si: Wabbitemu est plus rapide avec la nouvelle version ou si c'est ma calto qui avec sa mémoire pleine et des piles pas pleines qui est plus lente...

Samos


----------------------
----------------------

@Wistaro
Le mien fonctionne d'une manière très simple et apparemment pas du tout optimisée Sad
Spoiler:

m@thieu41

m@thieu41
----------------------
----------------------

J'aurais eut besoin d'une formule pour connaitre le nombre de chiffres d'une factorielle, j'ai trouvé ceci:
⌊(log(2π)−2n+log(n)∗(1+2n))/(2log(10))⌋+1
ici: http://www.dcode.fr/calcul-factorielle
Mais je ne sais pas à quoi correspondent les ⌊⌋...
Quelqu'un a une idée?

Wistaro

Wistaro
Passioné
Passioné

Valeur absolue?...

Merci Samos

https://www.youtube.com/user/Wistaro

m@thieu41

m@thieu41
----------------------
----------------------

Nan c'est pas ça...
Ils auraient mis || de toute façon je pense...

Samos


----------------------
----------------------

ça correspond à l'arrondi à la valeur inférieure

noelthebest


Intéressé
Intéressé

ouais, la partie entière.

ah oui, et j'ai mis 135 parce que un multiple de 5 ça fait plus classe, en théorie j'aurais pu aller jusqu'à 136, 137.

Wistaro

Wistaro
Passioné
Passioné

Nooon, sérieux?...

https://www.youtube.com/user/Wistaro

m@thieu41

m@thieu41
----------------------
----------------------

Bah la formule n'est pas bonne alors...

Ah mais... Tu n'avais pas dis que 135 n'avait pas été choisi au hasard?  Suspect 

noelthebest


Intéressé
Intéressé

Non, il n'a pas été choisi au hasard. En fait, j'aurais pu aussi choisir 138 ou 139, je m'en rends compte avec le recul. Wink

Wistaro

Wistaro
Passioné
Passioné

Moi je pensais que comme 135/2 = 67,5, on pouvait utiliser sa et que sa pouvait nous être utile...

https://www.youtube.com/user/Wistaro

m@thieu41

m@thieu41
----------------------
----------------------

Mais pourquoi 135 138 ou 139? Pourquoi pas par exemple 120 ou 150?

persalteas

persalteas
----------------------
----------------------

Aucune idée, comme vous Razz

Donc à priori c'est m@thieu qui a le meilleur temps entre nous tous...
Fuu, tu va foncer vers le podium ! je suis jaloux :P

https://tout82.forumactif.org

m@thieu41

m@thieu41
----------------------
----------------------

Ah ça fait plaisir  Smile 
je m'y attendais pas au début Razz

Mais bon il reste encore la finale vous allez pouvoir me rattraper même si je vais faire mon possible pour que ça n'arrive pas  Very Happy 

Contenu sponsorisé



Revenir en haut  Message [Page 1 sur 1]

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum