La question (de précision) du dimanche !

Ici, on fait dans le petit, le LCD qui déchire sa race, on y cause même calculatrices quand on est en manque !

Modérateur : Politburo

Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6167
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: La question (de précision) du dimanche !

Message par Marge »

Marge a écrit : 10 sept. 2018 19:23 Ah oui. Eh bien, je me demande si une HP-41 avec magnéto cassette y arriverait... ça semble tout de même titanesque, merci C.Ret.
La réponse à ma question est ici : http://www.hp41.net/forum/viewtopic.php?t=5
Une cassette du lecteur de cassettes numériques HP-IL contient 128 Ko.

[...]

Certes, 128 Ko, ce n'était pas beaucoup, mais il était toujours possible, comme le montre la photo ci-dessous (parue dans le HP Key Notes Vol. 6 No. 3, Juin-Août 1982) de relier à un HP-41 trente lecteurs de cassettes HP 82161A, sur une même boucle HP-IL.
On se retrouvait ainsi avec 3,75 Mo de données en ligne, soit presque la capacité de stockage de trois disquettes 3"1/2 HD :wink: !
Ce dispositif de stockage coûtait quand même la modique somme de 16910 dollars :cry: (125 + 30 x 550 + 3 x 95, cf. Tarifs, prix de détail, US - 08/1985).
Précisions de Thomas FR69 sur hp41.net.
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Avatar du membre
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5217
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: La question (de précision) du dimanche !

Message par bernouilli92 »

On peut utiliser le développement en série pour obtenir une valeur sûre à N chiffres après la virgule :
Image
Les termes de la somme vont en augmentant avant de rediminuer. Et à un moment donné, ce terme sera plus petit qu'un certain epsilon, la valeur finale sera alors au plus égale à la valeur obtenue + epsilon x nb de termes restants.

les premiers termes sont (environ) : 1 13 90 402 1352, etc.
Cela monte jusque environ 73600 (14ème terme) avant de diminuer. On descend en dessous de 1 à partir du 38ème terme.
Le 60ème terme vaut environ 2e-14, en multipliant par (2^27-60) ou 2^27, on trouve environ 3e-6.
En faisant la somme des 60 premiers termes, on est sûr du résultat au 5ème chiffre après la virgule (à peu de chose près, sauf si le 5ème chiffre est 9 et le 6ème chiffre 9 aussi).

Cela vous semble correct ?
Avec ma hp48, je trouve 674530.470741, en tronquant à 4 chiffres après la virgule : 674530.4707
avec worlfram alpha :
sum(comb(2^27,n)*(1e-7^n),n,0,59) = 674530.4707410845593
HP, Casio, Sharp, Psion, quelques TI et divers autres
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6167
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: La question (de précision) du dimanche !

Message par Marge »

Éblouissant. 8)

J'ai toutefois du mal à comprendre comment passer du premier terme au "dernier" de ton développement en série :
a(a-1)... (a-n+1), tu peux l'expliquer ?
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Avatar du membre
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5217
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: La question (de précision) du dimanche !

Message par bernouilli92 »

appelons K=2^27=134217728

on a alors
1.0000001^(2^27)=1+somme(n=0 à K,An*(1e-7)^n) avec An=Comb(K,n)
On a :
A0=1
A1=K/(1!)=K
A2=K*(K-1)/(2!) ~= 9e15
A3=K*(K-1)*(K-2)/(3!) ~= 4e23
A4=K*(K-1)*(K-2)*(K-3)/(4!) ~= 1e31
...
A(K)=K!/K!=1

En utilisant mathurl :
Image

An va en grandissant avant de diminuer à partir de K/2
mais (1e-7)^n va en diminuant constamment : 1e-7, 1e-14, 1e-21, 1e-28, 1e-35

On reste dans le domaine de calcul des calculatrices, on multiplie deux nombres, un avec un très grand exposant et un autre avec un exposant tout petit. Et obtient des nombres proches, on peut les additionner sans trop de perte de précision.

Voici un petit programme pour hp48 qui donne les N premiers termes :

Code : Tout sélectionner

« 1 -
  « DUP 2 27 ^ SWAP COMB .0000001 ROT ^ *   »
  -> N A
  « 0 N
    FOR I I A EVAL
    NEXT N 1 + ->LIST
  »
»
1 -> {1}
3 -> { 1 13.4217728 90.0719918763 }
HP, Casio, Sharp, Psion, quelques TI et divers autres
Avatar du membre
fred260571
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 362
Enregistré le : 19 avr. 2016 13:10
Localisation : Toulouse

Re: La question (de précision) du dimanche !

Message par fred260571 »

il faudrait utiliser la
GNU Multiple Precision Arithmetic Library
https://fr.wikipedia.org/wiki/GNU_MP
Je m'y colle quand il fera bien moins chaud : 33°C aujourd'hui
ignorance is bliss
TI 57 II, TI 66, casio fx7500g, HP48GX, HP49G+, HP200LX, palm m125, Sharp PC-G850VS, HP12C
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6167
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: La question (de précision) du dimanche !

Message par Marge »

@bernouilli92 : merci, c'est plus clair. Et bravo ! Il ne me reste plus qu'à tester cela.
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: La question (de précision) du dimanche !

Message par Ben »

Comment passe t'on d'un 1.0000001^(2^27) à ça? :?

Image

De plus, dans la formule, c'est "1+...", mais dans le programme pour l'HP48, tu fais '1-...', non?
Avatar du membre
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5217
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: La question (de précision) du dimanche !

Message par bernouilli92 »

1,0000001^(2^27) c'est (1+x)^a avec x=0,0000001 et a=2^27

Ensuite on intègre le 1 dans la somme en faisant démarrer n à 0 au lieu de 1 car comb(N,0)=1 quelque soit N.

Après dans mon code, j'enlève 1 au nombre entré pour avoir le bon nombre de termes car je commence la boucle FOR à 0, si je veux les 3 premiers termes, je fais une boucle de 0 à 2.
On peut aussi faire une boucle de 1 à N et rajouter le premier terme qui vaut toujours 1 au début.
HP, Casio, Sharp, Psion, quelques TI et divers autres
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3400
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: La question (de précision) du dimanche !

Message par C.Ret »

bernouilli92 a écrit : 11 sept. 2018 15:05 […]
On reste dans le domaine de calcul des calculatrices, on multiplie deux nombres, un avec un très grand exposant et un autre avec un exposant tout petit. Et obtient des nombres proches, on peut les additionner sans trop de perte de précision.
[...]
Vérifions ensemble cela :

Image

Adaptons donc notre problème aux termes de cette formule providentielle :

Ce n'a pas été évident pour moi à la première lecture, mais l'astuce est que le (1+x) est en fait notre 1.0000001 c'est à dire que x = 0.0000001.

D'autre part, nous souhaitons mettre à la puissance α = 2^27 = 134'217'728


Il nous faut tout de même une bonne calculatrice, on va boucler plus de 134 millions de fois. J'envisageai de le faire sur mon HP-41C ou mon SHARP PC-1211.

Ce qui m'inquiète le plus dans cette somme est qu'il y a plusieurs centaines de millions de termes qui paraissent insignifiants et qui ne seront pas pris en compte si on les ajoute dans le mauvais ordre. En effet, si la somme déjà accumulée fait dans les 7 chiffres avant la virgule, un terme plus faible que 10^-3 sera négligé. Mais comme il y en a des centaines de millions, cela ne risque-t-il pas de fausser le résultat ? Et du coup le résultat donné par notre très astucieux ami bernouilli ne risque-t-il pas d'être le même que celui donné par le calcul direct (basé sur les LN et EXP) car il fait en fait la même erreur d'arrondi en négligeant l'effet du demi milliard de décimales situées loin à droite après la virgule ?


Voyons s'il y a un moyen de limiter la casse !

Code : Tout sélectionner

1 A=2^27 , N=0, X =1,S=0
2 S=S+X : PAUSE N : PRINT X,S 
3 N=N+1, X=X*(A-N)/€7N : GOTO 2
Où faut-il s'arrêter ? Sous-entendu que l'on ira pas jusqu'à n = α mais que l'on veut obtenir un résultat dont les décimales s'approche le plus possible de ce que l'on aurait si l'on avait fait le calcul avec .93 milliards de chiffres.

Code : Tout sélectionner

 0:     1.              1.           
 1:    13.4217727      14.4217727         26:   521.7191688       674044.5329
 2:    90.07199053    104.4937632         27:   259.3479533       674303.8809
 3:   402.9752552     507.4690184         28:   124.3181635       674428.1991
 4:  1352.16054      1859.629558          29:    57.53688913      674485.736  
 5:  3629.678176     5489.307734          30:    25.7415627       674511.4776
 6:  8119.452273    13608.76001           31:    11.14507504      674522.6227
 7: 15568.20543     29176.96544           32:     4.674582168     674527.2973
 8: 26119.11297     55296.07841           33:     1.901247405     674529.1985
 9: 38951.64183     94247.72024           34:      .750532        674529.949
10: 52280.00479    146527.725             35:      .287813        674530.2368
11: 63790.02625    210317.7513            36:      .107304        674530.3441
12: 71347.93022    281665.6815            37:      .0389248       674530.383
13: 73662.73972    355328.4212            38:      .0137484       674530.3967
14: 70620.31809    425948.7393            39:      .00473148      674530.4014
15: 63189.9839     489138.7232            40:      .00158762      674530.403
16: 53007.59413    542146.3173            41:      .000519724     674530.4035
17: 41850.34088    583996.6582            42:      .000166086     674530.4037
18: 31205.87175    615202.53              43:      .0000518412    674530.4038
19: 22044.10849    637246.6385            44:      .0000158136    674530.4038
20: 14793.54858    652040.1871            45:      .00000471660   674530.4038
21:  9455.029375   661495.2165            46:      .00000137619   674530.4038
22:  5768.328877   667263.5454            47:      .000000393     674530.4038
23:  3366.138537   670629.6839            48:      .000000109890  674530.4038
24:  1882.480774   672512.1647            49:      .0000000301006 674530.4038
25:  1010.648982   673522.8137        etc.
                                   134217728:
Il est clair que tel qu'à partir de n=43: mon pauvre PC-1211 ne fait plus de somme, les incréments (variable X) étant trop faible par rapport à S pour son arithmétique sur 12 chiffres significatifs.


Mais, même si les incréments successifs décroissent régulièrement, il en reste (134217728-43) ce qui doit faire quelque chose de significatif et qui pourrait influencer sur la valeur des 4 premières décimales. Non ?
Modifié en dernier par C.Ret le 11 sept. 2018 21:21, modifié 1 fois.
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.
cgh
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 2136
Enregistré le : 30 août 2011 12:23
Localisation : Vous êtes ici -> .

Re: La question (de précision) du dimanche !

Message par cgh »

J'ai ressorti mon SHARP EL-5100: 1.0000001^2 (27 fois) donne 674494.0561.
En calculant 1.0000001^(2^27) j'obtiens 674530.4705 :)
Il y a ceux qui voient les choses telles qu'elles sont et se demandent pourquoi, et il y a ceux qui imaginent les choses telles qu'elles pourraient être et se disent... pourquoi pas? - George Bernard Shaw
J'adore parler de rien, c'est le seul domaine où j'ai de vagues connaissances ! - Oscar Wilde
Ce n'est pas parce que les choses sont difficiles que nous n'osons pas. C'est parce que nous n'osons pas que les choses sont difficiles. - Sénèque
Avatar du membre
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5217
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: La question (de précision) du dimanche !

Message par bernouilli92 »

C.Ret a écrit : 11 sept. 2018 19:53 Mais comme il y en a des centaines de millions, cela ne risque-t-il pas de fausser le résultat ? Et du coup le résultat donné par notre très astucieux ami bernouilli ne risque-t-il pas d'être le même que celui donné par le calcul direct (basé sur les LN et EXP) car il fait en fait la même erreur d'arrondi en négligeant l'effet du demi milliard de décimales situées loin à droite après la virgule ?
Non justement, si tu fais la somme de centaines de millions de nombres qui sont tous plus petits que 1e-14, tu obtiens un résultat qui est plus petit que 1e-14 multiplié par des centaines de millions, soit un nombre qui est plus petit que 3e-6 (134000000x1e-6).
Du coup une fois que as la somme des 60 premiers termes (appellons la S60) et que tu sais que la somme des 134217669 termes restants est plus petite que 3e-6, on peut en conclure que la somme totale des 134217729 termes est comprise entre S60 et S60+3e-6.

Il faut encore demontrer que la suite formée par les termes Ai est décroissante à partir d'uncertain rang (ici c'est au rang 14). Même si on le devine aisément.
Modifié en dernier par bernouilli92 le 11 sept. 2018 21:31, modifié 1 fois.
HP, Casio, Sharp, Psion, quelques TI et divers autres
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3400
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: La question (de précision) du dimanche !

Message par C.Ret »

Effectivement, il faut réussir à montrer que le taux de décroissance est suffisament fort pour ne pas que le cummul des millions d'incréments restant ne "remonte" jusqu'aux premières décimales. Ce doit être assez facile, on a quelque chose qui varie en (K-x)/x pour x croissant.

J'ai essayé d'avoir un meilleurs résultat en sommant sur deux variables (S somme partie entière) et T (partir décimale)

Code : Tout sélectionner

1 A=2^27 , N=0, X =1,S=0
2 S=S+INT X , T=T+X-INT X , S=S+INT T, T=T-INT T
3 PAUSE N,X : PRINT S,T 
4 N=N+1, X=X*(A-N)/€7N : GOTO 2
J'obtiens toujours quelque chose de faux S=674530 et T= .4036275358

L'erreur provient des premiers incréments X (ex. 73662.73972 ) dont la précision n'est pas suffisante. Apparemment !

Pourquoi je n'obtiens pas moi aussi un beau 674530.4707 ???
Modifié en dernier par C.Ret le 11 sept. 2018 21:40, modifié 1 fois.
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.
Avatar du membre
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 5217
Enregistré le : 21 nov. 2012 13:03
Localisation : Ile de France

Re: La question (de précision) du dimanche !

Message par bernouilli92 »

C.Ret a écrit : 11 sept. 2018 21:31 Effectivement, il faut réussir à montré que le taux de décroissance est suffisament fort pour ne pas que le cummul des millions d'incréments restant ne "remonte" jusqu'aux premières décimales. Ce doit être assez facile, on a quelque chose qui varie en (K-x)/x pour x croissant.
Non, pas besoin de cela. Il suffit que la suite soit décroissante.
Il ne s'agit pas d'une somme infinie de termes mais bien d'une somme finie de termes tous bornés.
Si tu as une somme de 1000 éléments et que ces éléments sont tous inférieurs à 1, tu peux dire que la somme est inférieure à 1000x1.
Dans le cas précédent, il suffit que tous les termes au delà du 60eme soient tous inférieurs à 1e-14. Il n'est même pas nécessaire que la suite soit décroissante. Mais comme elle est décroissante, alors tous les termes après le 60eme sont inférieurs à 1e-14.
HP, Casio, Sharp, Psion, quelques TI et divers autres
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3400
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: La question (de précision) du dimanche !

Message par C.Ret »

Ah! Oui. C'est juste une suite décroissante (pas une série infinie - je suis un peu fatigué je voyais 134217728 plus grand que 1E10 ! )

Donc effectivement on peut s'arrêter assez vite (n=60) et il n'y aura pas de "remonté". hé hé bien joué.

Juste des erreurs de calcul liées à la façon dont je calcule X d'une itération à l'autre : X= X * (A-N) / 1E7 / N

Alors la réponse à donner à Marge est qu'à 4 décimales, c'est quoi ? Je fais tourner mon petit programme sur différentes machine et j'ai jamais les mêmes décimales ??

674530.4036 c'est bon ou c'est mauvais ??
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.
Avatar du membre
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6167
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: La question (de précision) du dimanche !

Message par Marge »

Alors la réponse à donner à Marge est qu'à 4 décimales, c'est quoi ? Je fais tourner mon petit programme sur différentes machine et j'ai jamais les mêmes décimales ??

674530.4036 c'est bon ou c'est mauvais ??
Les quatre décimales données par Jean Meus sont 4707 (au total : 674 530.4707).

La question que je me posais était justement de savoir comment J. Meus avait pu être certain de cette valeur, surtout quand je voyais les résultats divergents sur HP. Bernouilli92 semble nous donner une piste concluante...
3 hommes, 3 demis, un 3a... Magnéto, Serge !

Quelques-uns de mes petits programmes pour machines Hewlett-Packard :
15C : Knight's Tour ;
29C : (k-)Permutations, Combinations, Linear Regression and Pseudo-random number ;
34C : Hanoi Towers - Automatic & Manual resolutions ;
67
__: A L I E N .

« Boris », c'était juste Maurice enrhumé.
Répondre

Retourner vers « Tous les Pockets »