[FX-702P... etc] Fraction et réduction illimitées pour Noël

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 de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 822
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par Thierry Loiseau » 30 déc. 2016 19:41

C.Ret a écrit :
Thierry Loiseau a écrit :Bon. Et comment déduis-tu cela ?

2.5550
Je ne veux pas répondre à la place de franck196569, mais clairement son algorithme est basé sur une décomposition en fractions continues, (les registre H et Ides lignes 1 et 4) fractions continues que l'on détermine pas à pas jusqu'à obtenir une valeur suffisamment proche du réel initial x (cf. test ligne 6).

Image

Ce qui est malin c'est que la fraction est exprimée à chaque pas sous la forme d'une somme de deux fractions dont on détermine le numérateur (registres A,B et E,F) et le dénominateur par inversions successives de ceux-ci (ligne 5).
Ce qui fait que dès que l'on estime être assez proche du nombre réel initial, il suffit d'afficher la fraction finale (ligne 7)

Je connaissait cet algorithme, mais avec un tableau intermédiaire (qui mémorise les a(i) des fractions continues) construit à partir de X (décomposition), puis une seconde partie effectuait les calcul des numérateur et dénominateur à partir des valeurs du tableau intermédiaire (recomposition).

Image

Le code proposé par franck196569, est plus malin car il combine les deux étapes.
Rappel du code de franck...

Code : Tout sélectionner

1 CLEAR : INPUT G : H = G : I = INT H : X = G
2 IF ABS (G-INT G)<=1E-9*ABS G LET B=X : E=1 : GOTO 7
3 A=1 : B=I : D=0 : E=1
4 H=1/(H-I) : I=INT H
5 C=B*I+A : A=B : B=C : F=E*I+D : D=E : E=F
6 IF ABS (G-C/F)>1E-9*ABS G THEN 4
7 PRINT STR$ B;"/";STR$E : END
Superbe ton analyse C.Ret... Ça me donne envie de transcrire pour mon HP-41C :idea:
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Avatar de l’utilisateur
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7180
Inscription : 31 janv. 2008 15:24
Localisation : Banlieue Paârisienne
Contact :

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par gege » 31 déc. 2016 02:42

Bonjour,
En effet fractions continues, cf cette page ou ce fil (qui est plus complet).

Pour que ça marche bien pour des fractions avec numérateur ou dénominateur de plus de 6-7 chiffres, il faut pas mal de décimales, et passer par exemple sur les Sharp à 20 chiffres de précision.

Valentin Albillo avait écrit un puissant programme pour HP71B qui faisait tout, une merveille... quelqu'un l'a-t-il gardé ?
G.E.

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 822
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par Thierry Loiseau » 31 déc. 2016 03:37

Non, mais merci bonhomme :)
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Avatar de l’utilisateur
bernouilli92
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 4848
Inscription : 21 nov. 2012 14:03
Localisation : Ile de France

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par bernouilli92 » 31 déc. 2016 10:14

gege a écrit : Valentin Albillo avait écrit un puissant programme pour HP71B qui faisait tout, une merveille... quelqu'un l'a-t-il gardé ?
G.E.
C'est celui là ?
https://dl.dropboxusercontent.com/u/532 ... eVA029.pdf

Il est référencé dans le hp71b compendium :
http://www.hpmuseum.org/forum/thread-5286.html
HP, Casio, Sharp, Psion, quelques TI et divers autres

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 822
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par Thierry Loiseau » 31 déc. 2016 10:49

bernouilli92 a écrit :
gege a écrit : Valentin Albillo avait écrit un puissant programme pour HP71B qui faisait tout, une merveille... quelqu'un l'a-t-il gardé ?
G.E.
C'est celui là ?
https://dl.dropboxusercontent.com/u/532 ... eVA029.pdf

Il est référencé dans le hp71b compendium :
http://www.hpmuseum.org/forum/thread-5286.html
Oui ! :mrgreen:
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

franck196569
Fonctionne à 300 bauds
Fonctionne à 300 bauds
Messages : 97
Inscription : 27 sept. 2012 09:56
Localisation : Nantes

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par franck196569 » 31 déc. 2016 16:26

Merci à C. Ret d'avoir pris la peine et surtout le temps de détailler mon code (fait sur PC 1500 quand j'étais en prépa, voici quelques très nombreuses années maintenant ..., c'est très exhaustif et clair ! Je ne ferai pas mieux sur le plan pédagogique !

Bon réveillon !

Franck.

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 822
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par Thierry Loiseau » 31 déc. 2016 21:59

franck196569 a écrit :(...) Je ne ferai pas mieux sur le plan pédagogique ! (...)
Pas mieux aussi :)
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 822
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par Thierry Loiseau » 03 janv. 2017 18:26

gege a écrit : Pour que ça marche bien pour des fractions avec numérateur ou dénominateur de plus de 6-7 chiffres, il faut pas mal de décimales, et passer par exemple sur les Sharp à 20 chiffres de précision.
Ah oui, alors pas la peine que je tente pour l'HP-41C :(
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 822
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par Thierry Loiseau » 08 janv. 2017 02:29

Oups, une GROSSE erreur...
Thierry Loiseau a écrit : Le code HP-41C

Code : Tout sélectionner

52 LBL"PGCD
53 XEQ"RESTE
54 1
55 RCL 09
56 X<=Y?
57 GTO"SUITE
58 RCL 08
59 STO 07
60 RCL 09
61 STO 08
62 XEQ"PGCD
...
94 STOP
END
Le code HP-41C version 2

Code : Tout sélectionner

62 GTO"PGCD
...
94 FIX 9
END
Je n'ai pas trouvé le moyen de mémoriser la valeur du FIX utilisateur au lancement du programme. Je mets à 9. :roll:
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 822
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par Thierry Loiseau » 08 janv. 2017 15:46

Un peu optimisé :)

Code : Tout sélectionner

01 LBL"FSI
02 FIX 0
03"N=?
04 AVIEW
05 STOP
AVIEW STOP = PROMPT

Code : Tout sélectionner

40 LBL"RESTE
41 RCL 07
42 RCL 08
43 /
44 INT
45 RCL 08
46 *
47 CHS
48 RCL 07
49 +
50 STO 09
51 RTN
La fonction MOD est mon ami :)

Le code HP-41C v3

Code : Tout sélectionner

01 LBL"FSI
02 FIX 2
03 "N=?
04 PROMPT
05 STO 01
06 "DECAL=?
07 PROMPT
08 STO 02
09 "REPET=?
10 PROMPT
11 STO 03
12 LOG
13 INT
14 1
15 +
16 STO 04
17 RCL 04
18 10^X
19 1
20 -
21 RCL 01
22 *
23 RCL 03
24 +
25 STO 05
26 STO 07
27 RCL 04
28 10^X
29 1
30 -
31 RCL 02
32 10^X
33 *
34 STO 06
35 STO 08
36 LBL"PGCD
37 RCL 07
38 RCL 08
39 MOD
40 STO 09
41 1
42 RCL 09
43 X<=Y?
44 GTO"SUITE
45 RCL 08
46 STO 07
47 RCL 09
48 STO 08
49 GTO"PGCD
50 LBL"SUITE
51 RCL 09
52 X=0?
53 GTO"AFPGCD
54 1
55 STO 08
56 GTO"RESULT
57 LBL"AFPGCD
58 RCL 08
59 STO 09
60"PGCD=
61 ARCL 08
62 AVIEW
63 TONE 2
64 STOP
65 LBL"RESULT
66 RCL 05
67 ENTER
68 RCL 08
69 /
70 STO 07
71 RCL 06
72 RCL 08
73 /
74 STO 08
75 CLA
76 ARCL 07
77"[/
78 ARCL 08
79 AVIEW
80 BEEP
81 FIX 9
82 END
Au final, je passe de 95 lignes à 82.
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 822
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par Thierry Loiseau » 08 janv. 2017 15:55

Bon, je vais tenter l'autre formule...
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 822
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par Thierry Loiseau » 11 janv. 2017 08:18

franck196569 a écrit :Un programme de fraction analogue pour Pocket Sharp (13XX, 15XX, 1600, ...) :

1 CLEAR : INPUT G : H = G : I = INT H : X = G
2 IF ABS (G-INT G)<=1E-9*ABS G LET B=X : E=1 : GOTO 7
3 A=1 : B=I : D=0 : E=1
4 H=1/(H-I) : I=INT H
5 C=B*I+A : A=B : B=C : F=E*I+D : D=E : E=F
6 IF ABS (G-C/F)>1E-9*ABS G THEN 4
7 PRINT STR$ B;"/";STR$E : END
STO 01=A ; STO 02=B ; ... STO 10=X

Le code HP-41C version 1.franck196569

Code : Tout sélectionner

01 LBL"FGH
02 FIX 9
03"NBRE:?
04 AVIEW
05 STOP
06 STO 07
07 STO 08
08 STO 10 
09 INT
10 STO 09
11 RCL 07
12 -
13 ABS 
14 STO 00
15 RCL 07
16 1 E-9
17 *
18 ABS
19 STO 11
20 RCL 00
21 X<=Y?
22 GTO"F2
23 GTO"F3
24 LBL"F2
25 RCL 10
26 STO 02
27 1
28 STO 05
29 TONE 9
30 GTO"F7
31 LBL"F3
32 1
33 STO 01
34 STO 05
35 RCL 09
36 STO 02
37 0
38 STO 04
39 LBL"F4 
40 RCL 08
41 ENTER
42 RCL 09
43 -
44 1/X
45 STO 08
46 INT
47 STO 09
48 RCL 02
49 ENTER
50 RCL 09
51 *
52 RCL 01
53 +
54 STO 03
55 RCL 02
56 STO 01
57 RCL 03
58 STO 02
59 RCL 05
60 ENTER 
61 RCL 09
62 *
63 RCL 04
64 +
65 STO 06
66 RCL 05
67 STO 04
68 RCL 06
69 STO 05
70 RCL 03
71 ENTER
72 RCL 06
73 /
74 CHS
75 ENTER
76 RCL 07
77 +
78 ABS
79 STO 00
80 RCL 07
81 ABS
82 1 E-9
83 *
84 RCL 00
85 X>Y?
86 GTO"F4
87 LBL"F7
88 FIX 0
89 CLA
90 ARCL 02
91"[/
92 ARCL 05
93 AVIEW
94 BEEP
95 FIX 9
96 END
... et ça marche bien ! :D
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 822
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par Thierry Loiseau » 12 janv. 2017 14:18

Thierry Loiseau a écrit :

Code : Tout sélectionner

62 GTO"PGCD
...
94 FIX 9
END
Je n'ai pas trouvé le moyen de mémoriser la valeur du FIX utilisateur au lancement du programme. Je mets à 9. :roll:
De ce que j'ai pu lire, l'HP mémorise sous forme de flag (36 à 39) l'état du Fix :
_____________________________________________________________________________
CF : Clear flag nn. See RCL for indirect addressing modes. Flags are:
...
36-39: Number Of Digits. These flags are used internally to control the number of digits displayed

_____________________________________________________________________________
FC? : Check whether flag nn is clear. See CF
PRGM mode: If the condition is true the next program step is executed,
otherwise it is skipped.
RUN mode: The test result is displayed (YES or NO)

_____________________________________________________________________________

Voilà ma routine permettant de mémoriser cette valeur sous forme décimale :

Code : Tout sélectionner

01 LBL"NFIX
01 FS? 36
02 8
03 FS? 37
04 4
05 FS? 38
06 2
07 FS? 39
08 1
09 +
10 STO 16
14 RTN
Il est dit cela.
_____________________________________________________________________________
FIX : Select fix point display format rounded to n valid digits after the decimal point.
Will automatically switch to SCI format if the number gets too big or too small.
This does not affect the internal representation of the number.
See RCL for indirect addressing modes

_____________________________________________________________________________
Malheureusement, je ne vois pas trop comment reforcer le FIX _ qui ne permet que de saisir un chiffre :(
franck196569 a écrit :Mon programme met en fait sous forme fractionnelle tout nombre décimal.
Exemples : 2,22 donne 111/50
SQR 2 donne 47321/33461
2,555 donne 511/200
2,55555555 donne 5115642/2001773

etc ...
Avec l'HP-41C, j'obtiens :

2,22 :arrow: 111 / 50
SQRT 2 :arrow: 27720 / 19601
2,555 :arrow: 511 / 200
2,55555555 :arrow: 51339271 / 20089280
2,555555555 :arrow: 23 / 9
π :arrow: 104340 / 33215

Pour π, la FX-850P donne la meilleur approche :arrow: 103993 / 33102
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Avatar de l’utilisateur
zpalm
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 2498
Inscription : 03 mai 2008 15:33
Localisation : Grenoble

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par zpalm » 12 janv. 2017 18:15

Thierry Loiseau a écrit : Voilà ma routine permettant de mémoriser cette valeur sous forme décimale :

Code : Tout sélectionner

01 LBL"NFIX
01 FS? 36
02 8
03 FS? 37
04 4
05 FS? 38
06 2
07 FS? 39
08 1
09 +
10 STO 16
14 RTN
Intéressant mais ça ne marche pas pour FIX 7, la valeur mémorisée est 3. Il faut aussi mettre X à 0 au début sinon pour FIX 1 par exemple on ajoute 1 à la valeur initiale de X.

Voici une version qui marche sur une 41C de base et qui conserve les registres X,Y et Z d’origine en Y, Z et T.

Code : Tout sélectionner

01 LBL"NFIX
02 1
03 STO L
04 FC? 39
05 ST- L
06 ST+ X
07 FS? 38
08 ST+ L
09 ST+ X
10 FS? 37
11 ST+ L
12 ST+ X
13 FS? 36
14 ST+ L
15 X<>L
16 STO 16
17 RTN 
Thierry Loiseau a écrit :Malheureusement, je ne vois pas trop comment reforcer le FIX _ qui ne permet que de saisir un chiffre :(

FIX IND 16 (FIX [Shift] 16) va restaurer la valeur de FIX à partir de la valeur sauvegardée dans le registre 16.

Pour sauvegarder/restaurer le mode d'affichage on peut aussi utiliser les commandes SD et RD de la PPC-ROM à base de programmation synthétique.

Avatar de l’utilisateur
Thierry Loiseau
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 822
Inscription : 10 avr. 2004 22:23
Localisation : Terrasson (Périgord)
Contact :

Re: [FX-702P... etc] Fraction et réduction illimitées pour N

Message par Thierry Loiseau » 12 janv. 2017 18:18

Yes ! J'allais justement me répondre pour le FIX IND !!! :roll:
Merci beaucoup pour ton aide ! En effet, cela retourne au 3 lieu de 7 ?!
HP-41C, HP-12C ; Casio FX-702P, FX-850P, FX-602P, FX-3900P, FX-4000P, FX-180Pv ;
TI 57 avec adaptation d'une pile LR9 et une originale, accus HS; Newton MP 120FR, MP 2100US, MP 130US...
Apple //e, 7100, 8100, 8500, PB-540c, PISMO, CPC-6128, MO5... et bien d'autres trucs

http://astrophoto.free.fr/

Répondre

Revenir vers « Tous les Pockets »