CALCUL GRANDE PRECISION

bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 - 23 mai 2004 à 20:46
vlad2i Messages postés 285 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 13 février 2005 - 2 déc. 2004 à 18:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/23105-calcul-grande-precision

vlad2i Messages postés 285 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 13 février 2005
2 déc. 2004 à 18:26
Plein de gens l'ont codée la racine ...

Développement en suite de Newton, en série, ou pour de grands entiers, tu peux utiliser cet algo simple (qui ne donne que la valeur entière)

nNombreImpair=1
Do while nRacine<nNombre
nRacine = nRacine + nNombreImpair
nNombreImpair = nNombreImpair+2
nValeur = nValeur +1
Loop

Quand la boucle est finie, nValeur contient la valeur entière de la racine de ton nombre...

Une méthode primitive mais rapide si on n'a pas besoin des décimales :)

Vlad
MadM@tt Messages postés 2167 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 16 juillet 2009 1
30 nov. 2004 à 19:54
Et la racine carré que je recherche désespérement...
personne ne l'a codée ?
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
1 juil. 2004 à 13:02
Désolé j'ai pas le temps de mettre à jour avec Division et Multiplication. On verra dans quelques temps.
Si quelqu'un est partant bonne prog.

++
DeadlyPredator Messages postés 222 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 30 juin 2008
5 juin 2004 à 01:29
T'es-tu un prof de math?
cs_bayosky Messages postés 17 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 23 juillet 2007
5 juin 2004 à 01:24
Remarques concernant ce qui a été dit:

1. Un nombre peut posséder des milliards de chiffres après la virgule et "s'arréter un jour".
2. Les nombres rationnels sont caractérisés par le fait que le développement décimal est "périodique à partir d'un certain rang"
( comme 3,4578 123 123 123 123 ... )
3. Les décimaux sont des rationnels particuliers...
4. Les irrationnels ont donc un dévelopement décimal illimité et non-périodique .
5. Parmi les irrationnels, les nombres comme pi et autres e ( exp(1) )
ont une position particulière : Il ne sont pas solution d'un équation algébrique .... On les qualifie de "transcendants" ...
6. Les calculs en "multiprécision" sont programmés en général dans des idiomes "près des machines" et de nombreux programmes font cela très bien et très vite, y compris sur les bécanes avec peu de mémoire mais les algorithmes utilisés ne sont pas "naifs" et prennent en compte le necessaire contrôle des erreurs pour que la précision anoncée soit réelle ...
Exemple : je mesure l'arete d'un cube et je trouve 10 cm +/- 0,1
erreur maximale 1 mm
cela signifie que le volume est entre 9,9^3 et 10,1^3 c'est à dire
entre 970,299 et 1030,301 soit, en gros 1000 +/- 30
l'erreur maximale est donc un peu plus grande que 30 cm3 soit
30 000 mm3
( valeur à comparer au "1 mm " )

ouala, ouala... bref l'entreprise est louable mais le problème très complexe,
surtout si l'on veut attaquer ainsi autre chose que + - * et /
vlad2i Messages postés 285 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 13 février 2005
27 mai 2004 à 21:49
Tu as compris mec :)
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
27 mai 2004 à 21:24
Petie MAJ, modifiée par les soins de vladi2i.
Effectivement plus rapide et à l'air de prendre des montant plus importants.
Merci vladi2i

Petite question sur Modulo.
Si j'ai bien compris.
Si je fais 11 / 3 , j'obtiens 3 et modulo = 2 ?

++
vlad2i Messages postés 285 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 13 février 2005
27 mai 2004 à 17:55
C'est un plaisir de t'expliquer...

Alors : 1) on note A mod B comme ça A[B]
2) Le "modulo" est le reste d'une division (ex 5:2 -> quotient 2 / reste (= modulo) 1)

Voila :P
J'essayes d'etre clair mais j'ai du mal :P
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
26 mai 2004 à 07:53
vladi2i>>
Merci,
j'ai pas eu le temps de m'y remettre, effectivement je me suis dis que cela pouvait etre IsNumeric qui posait probleme. C'est à mon avis ce qui à causé l'erreur de DeadlyPredator, car si la chaine est trop grande, VB ne la voit plus comme un nombre mais une simple chaine (enfin je pense).
Oui, je veux bien que tu m'envoi le code, cela sera sympa.
Mon email : BouvetDavid@hotmail.com
Autre chose, à quoi sert la fonction Modulo, je connu cette fonction sur le site, mais je ne sais absolument pas a quoi elle peut servir. Il faut dire que je n'ai fait n'y d'étude de Maths ni d'informatique, je suis comptable. SI tu pouvait m'expliquer en quelques lignes.
Merci encore.
vlad2i Messages postés 285 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 13 février 2005
25 mai 2004 à 16:15
Oho !!!

Que vois je !!!
Une erreur gravissimissime !!!

:P

Je te corrige ton code, si tu le veux tu me demandes :P
Mais sache que envoyer 3.141592653589793238462 à IsNumeric renverra False...

héhé j'ai réglé 5-6 bugs et acceleré le tout, si tu veux, je suis la :

vlad2i@hotmail.com
vlad2i Messages postés 285 Date d'inscription mercredi 20 août 2003 Statut Membre Dernière intervention 13 février 2005
25 mai 2004 à 15:55
Je suis pas d'accord avec le piti prédator...

Ca peut etre TRES TRES utile
Na

Ne serait-ce que pour approcher une intégrale...
Calculer 100 000 000 décimales de pi...
Approcher un nombre de plus de 32 bits ...

Ca peut servir (en soi). Et ce n'est pas bête qu'il ait essayé avec des décimaux.

Au passage : des idées. × et div c'est facile...

Modulo
Racine (racine carrée, cubique...)
Factorisation (n!)
Logarithmes (log, e)
Puissances (x^y)

et des op avec bcp plus que 2 opérandes :P

Voila voila, je te donnes des idées :P
Ca m'a l'air bien interessant :P
DeadlyPredator Messages postés 222 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 30 juin 2008
24 mai 2004 à 19:08
Selon moi, le max d'un tableau doit être une valeur en long donc sur 8 octets alors le max va être de 4294967295.
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
24 mai 2004 à 08:04
DeadlyPredator>>
Il y a effectivement peut-etre un probleme de memoire. Moi j'ai 512Mo
Si je fais le calcul du tu m'as donné j'obtiens:
100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
Pour le prouvé je poste une nouvelle capture d'écran avec un calcul bcp plus grand.
Merci qd meme pour ces infos

Autre chose, effectivement, si les valeurs que tu utilise ne sont pas numeric je demande de renvoyer la valeur 0. Peut-etre renvoit-il cette meme valeur si le nombre est trop grand ? Mais il est tres facile de renvoyer un autre message..
Maintenant si tu veux une approximation de PI, je n'ai pas la valeur exact, mais avec cette source je peux te calculer pas moins de 30000 decimales voir plus si tu le veux.
++
DeadlyPredator Messages postés 222 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 30 juin 2008
24 mai 2004 à 07:19
lol désolé pour ce bug bizzare. Flush le prémier commentaire ...
******************************************************
précision mon cul oui. Check. selon moi, c'est inutile. En général (je ne crois pas me trompé) quand un nombre à 6 chiffres ou plus après la virgule, on peut en conclure que c'est un nom irrationnel (essais de me trouver la vrai valeur de pi) donc c'est ... comme chercher à voir la base d'un arc-en-ciel... donc il va quand même falloir arrondir pi on va perdre de la précision. Par contre, pour les gros nombres (les milliards de milliard...) ça a un peut plus de sens. C'est judicieux d'utiliser les tableux de vb ... mais il faut bien qu'ils aient une propriétées pour dire leur "count" donc cette propriétée, elle est d'un certain type (variant, integer, long,...) donc ça risque de débordé. Et vb est un language de programmation lent donc ça risque de créer des problèmes.
*****************
je viens de faire un test sur les tableux :
à 1473533 ça a boguer : mémoire insufisante (j'ai 128mo)
je refais le test et c'est la même chose (même même chose)
Donc je crois avoir atteint le "top"
*****************
Donc il y a une limite. Mais c'est très bien car au moins, ça montre "redim", "preserve" et comment on additione/soustrait à la main ;-). Et un dernier p.s. je crois que variant supporte plus que string mais faudrait vérifier.
DeadlyPredator Messages postés 222 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 30 juin 2008
24 mai 2004 à 07:17
précision mon cul oui. Check. selon moi, c'est inutile. En général (je ne crois pas me trompé) quand un nombre à 6 chiffres ou plus après la virgule, on peut en conclure que c'est un nom irrationnel (essais de me trouver la vrai valeur de pi) donc c'est ... comme chercher à voir la base d'un arc-en-ciel... donc il va quand même falloir arrondir pi on va perdre de la précision. Par contre, pour les gros nombres (les milliards de milliard...) ça a un peut plus de sens. C'est judicieux d'utiliser les tableux de vb ... mais il faut bien qu'ils aient une propriétées pour dire leur "count" donc cette propriétée, elle est d'un certain type (variant, integer, long,...) donc ça risque de débordé. Et vb est un language de programmation lent donc ça risque de créer des problèmes.
*****************
je viens de faire un test sur les tableux :
à 1473533 ça a boguer : mémoire insufisante (j'ai 128mo)
je refais le test et c'est la même chose (même même chose)
Donc je crois avoir atteint le "top"
*****************
Donc il y a une limite. Mais c'est très bien car au moins, ça montre "redim", "preserve" et comment on additione/soustrait à la main ;-). Et un dernier p.s. je crois que variant supporte plus que string mais faudrait vérifier.

essais 99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 + 1 je crois pas que ça donne 0. C'est le max de ton prog je crois.
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
23 mai 2004 à 20:46
z'allais oublier, les valeurs doivent etre des String.
++
Rejoignez-nous