Misez p'tit Optimisez n°53 : la suite de Syracuse

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

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

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par Marge »

Syracuse, la cité d'Archimède, méritait bien un peu d'archéologie.

Je viens de découvrir cette vidéo en français qui propose le calcul de la suite de Syracuse pour un Psion Organizer II (à 14 m 27 s environ).

Pour info, ce type propose d'autres programmes de maths pour d'autres machines, dont la Numworks.
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é.
caloubugs
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 434
Enregistré le : 05 juin 2014 22:23
Localisation : Dans le Gâtinais avec les abeilles, près de Fontainebleau

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par caloubugs »

Marge a écrit : 10 févr. 2020 18:29 Pour info, ce type propose d'autres programmes de maths pour d'autres machines, dont la Numworks.
Mais c'est très sympa tout ça ! :idea:
Merci pour le lien
RetroGeek, mais pas que...
HP : 15C, 41CV, 48GX, 71B, 75C Canon X-07 Sharp PC 1403H, PC1500A, PC1600, PC-G850V Texas : CC40, 66, 74, 95, 92 Casio : PB-700, PB-1000, Z-1GR Psion 5mx, mais pas que...
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par Ben »

Cette vidéo m'a donné envie de ressortir les calculettes. Je pense qu'on n'avait encore fait de programme sur la HP-20S :-)

Code : Tout sélectionner

LBL A    61 41 A
STO 0    21 0     'X
STO 3    21 3     'M
0        0
STO 2    21 2     'C
LBL 1    61 41 1  'Boucle principale
RCL 0    22 0     'Test si X=1
-        65
1        1
=        74
X=0?     61 43
GTO 3    51 41 3  'Exit du programme
2        2
STO / 0  21 45 0
RCL 0    22 0
FP       61 45
X=0?     61 43
GTO 2    51 41 2
RCL 0    22 0
*        55
6        6
+        75
1        1
=        74
INPUT    31       'Test si X>M
RCL 3    22 3
SWAP     51 31
X<=Y?    61 42
STO 3    21 3
STO 0    21 0
LBL 2    61 41 2
1        1        'C=C+1
STO + 2  21 75 2
GTO 1    51 41 1
LBL 3    61 41 3
RCL 3    22 3     'Affiche M Altitude
RTN

Faire RCL 2 pour avoir le vol
Du coup, le Sharp PC-E220 passait par là, on a été un peu plus loin, le syracuse en multi-précision. Je peux calculer le vol pour le nombre 104899295810901231 :-)

Code : Tout sélectionner

200 CLS:PRINT "Syracuse multi"
210 L=0:I=0:E=0:C=0:W=0:R=0
220 DIM A(255):DIM X$(1)*255
230 INPUT "Nbr=";X$(1)
240 L=LEN(X$(1))
250 IF L<6 THEN A(1)=VAL(X$(1)):E=1:GOTO320
260 FOR I=L-5 TO 1 STEP -6
270 E=E+1
280 A(E)=VAL(MID$(x$(1),I,6))
290 NEXT I
300 IF E*6=L THEN 320
310 E=E+1:A(E)=VAL(MID$(X$(1),1,L-(E-1)*6))
320 W=0
330 FOR I=0 TO E
340 IF A(I)>0 LET W=1
350 NEXT I
360 IF W=0 AND A(1)=1 THEN BEEP 1:PRINT "C=";C:END
370 W=A(1)/2:C=C+1
380 IF W=INT(W) THEN 470
390 R=0
400 FOR I=1 TO E
410 A(I)=A(I)*3+R
420 R=INT(A(I)/1E6):A(I)=A(I)-R*1E6
430 NEXT I
440 IF R>0 LET E=E+1:A(E)=R
450 A(1)=A(1)+1
460 GOTO 320
470 R=0
480 FOR I=E TO 1 STEP -1
490 W=A(I)/2
500 A(I)=INT(W)+R*1E5
510 R=W-INT(W))*10
520 NEXT I
530 IF A(E)=0 THEN E=E-1:GOTO 530
540 GOTO 320
Amusez-vous bien

Ben
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par C.Ret »

Ben a écrit : 25 févr. 2020 20:50[…]Amusez-vous bien
C'est bien ce que je compte faire. Et concernant la multi-précision, mon idée est de le faire en assembleur afin d'optimiser la vitesse. Je compte profiter de l'écran 40col pour faire et afficher très simplement et très directement les calculs :)

En attendant, les vidéo de notre ami Schraf m'ont également donné le goût de me remettre à cet MPO, avec cependant un petit aspect graphique en plus.
Ce faisant, je me suis rendu compte que nous avions complètement passé outre la détection (ou le calcul) de la trajectoire en altitude.
MPO 53 - 443 LinLog profile.gif
MPO 53 - 443 LinLog profile.gif (89.01 Kio) Vu 16738 fois
MPO 53 - 6171 LinLog Profile.gif
MPO 53 - 6171 LinLog Profile.gif (32.14 Kio) Vu 16738 fois

L'idée d'afficher en échelle logarithmique les termes de la suite vient directement de la vidéo n°4 illustrant le fonctionnement des calculatrices graphiques anciennes en traçant le profil des suites.

MPO 53 - 873 LinLog Profile.gif
MPO 53 - 873 LinLog Profile.gif (139.38 Kio) Vu 16738 fois
MPO 53 - 873 Syracuse.gif
MPO 53 - 873 Syracuse.gif (73.18 Kio) Vu 16738 fois

P.S.: Le listing de ce programme est assez long, il n'est pas exactement au style MPO; Si cela intéresse certains, je peux le transmettre.
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
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par Schraf »

Bonjour,

Sur certaines pages de Silicium on m'appelle "le gars" et sur d'autres "le type", vous pouvez aussi m'appeler Eric ou Schraf :D :P :P

Je suis en train de préparer une vidéo sur Syracuse en langage machine pour le ZX81(microprocesseur Z80A) et en discutant sur http://www.silicium.org/forum/viewtopic ... 65&t=45035 d'autres avaient dans l'idée de le programmer pour des processeurs différents. Comme j'avais fait 2 vidéos sur l'Altair 8800 (https://youtu.be/0tIUWQEq0-0 et https://youtu.be/GVICaX8MWIo) je me suis dit qu'il fallait aussi que je le tente pour cette mémorable machine. Bref, ça marche ! Le programme ne donne pour le moment que le temps de vol (et pas l'altitude max) mais bon. Pour tester par vous-même :

Code : Tout sélectionner

LXI H ,80h 	; HL = 80h
LXI B ,0h	; B = 0
MOV L,M		; L = Contenu de la mémoire (80h)
MOV H ,B	; H = 0
loop:MOV A ,H	; On va tester si HL = 1 (càd si on a fini)
CPI 0		; H = 0 ?
JNZ suite	; Si non, on n'a pas fini 
MOV A ,L 	; A = L
CPI 1		; A = 1 ?
JZ fin		; On a fini 
suite:INR B	; B = B+1 (temps de vol)
MOV A,L		; On regarde si le nb est impair
ANI 1		; en faisant L AND 1 (unité de L)
JNZ impair	; Si le résultat n'est pas nul, le nb est impair 
MOV A,L		; Il s'agit de diviser la valeur de HL par 2, si vous trouvez mieux dites-le moi ! 
ANI feh		;  Je supprime l'unité de L  (par ex: 11110011 debient 11110010) en fas
MOV L,A		; L = A
XRI 0		; Je remets le drapeau des retenues à 0
MOV A ,H	; A = H
RAR		; Décalage d'un bit vers la droite (donc division par 2 de la valeur) ET en même temps l'unité va dans le drapeau des retenues
MOV H,A		; H = A
MOV A,L		; A = L
ACI 0		; A = A + valeur du drapeau des retenues (donc si H se terminait par un "1", on le récupère dans l'unité de L)
RRC		; Rotation de tous les bits de L vers la droite, donc l'unité se retrouve à gauche ! (mon astuce est là)
MOV L,A		; L = A        
JMP loop
impair:PUSH H	; Il faut faire *3 + 1 pour ça ajoutons HL dans la pile
POP D		; on récupère la valeur dans la paire DE (donc DE = HL)
DAD H		; HL = HL + HL
DAD D		; HL = HL + DE soit 3 * le contenu initial de HL
INX H		; +1
JMP loop
fin:LXI H ,81h	; HL = 81h
MOV M,B		; On met le temps de vol à cette adresse
HLT
  • A droite dans Memory view vous tapez à l'adresse 008-0 (ligne 008 colonne 0) la valeur "1b" qui correspond à 27 en hexadécimal (bien sûr vous pouvez mettre un autre nombre entre 1 et 255 (tjs en hexa))
  • Vous cliquez sur le bouton vert Assemble puis sur celui d'à côté Run
  • Vous voyez apparaitre en 0081 la valeur 6F qui est bien le temps de vol du nombre 27, à savoir 111 (vous pouvez essayer avec FF (255) qui donne un temps de vol de 47 ("2F" en hexa))
Pour l'Altair, je vous donne le code (voir ma seconde vidéo qui explique comment éviter d'entrer à la main toutes les instructions (même si c'est fun))

Code : Tout sélectionner

[33,128,0,1,0,0,110,96,124,254,0,194,20,0,125,254,1,202,53,0,4,125,230,1,194,45,0,125,230,254,111,238,0,124,31,103,125,206,0,15,111,124,195,8,0,229,209,41,25,35,195,8,0,33,129,0,112,118].map((v,k) => MemWrite(k,v))
Le programme fait 58 octets, je pense être dans la bonne rubrique :roll:
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par Schraf »

Voici les visuels suite à mon message précédent sur l'Altair 8800 :

On dépose 27d = 11011b à l'adresse 80h = 10 000 000b

Image

On lance le programme et on lit le résultat 101 111b = 111d à l'adresse 81h

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

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par Marge »

Excellent, merci ! C'est de la machine, ça...
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
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par C.Ret »

C.Ret a écrit : 25 oct. 2017 18:28 Sur Hp prime, je trouve:
MPO53.syr2.png
MPO53.syr2.png (9.08 Kio) Vu 16613 fois
[/code]
Je viens d'obtenir le même résultat est en dix fois moins de temps sur mon Commodore C128D avec un petit code en assembleur pour 6502/6510/8502 qui exploite bien le matériel. (449 OCTETS)

Les calculs se font dans la mémoire vidéo et aucun temps n'est perdu pour l'affichage. Tous ces calculs sont fait directement à partir des codes caractères à l'aide de pointeurs (en jaune) et des deux tables visibles au centre de l'écran; respectivement en bleu pour la table de multiplication par 3 et en rouge pour la table de division par 2.
Dans ces tables les chiffres donnant le résultat sont directement visibles (c'est le but), Les lettres correspondent en fait aux retenues @=0 A=1 B=2 … ); Sur les CBM 8bit, évidemment les codes caractères VIC II ne sont pas des codes ASCII , ni même les PET-ascii.

MPO 53 - Syracuse C128D 40col.gif
MPO 53 - Syracuse C128D 40col.gif (20.77 Kio) Vu 16613 fois
Les résultats sont au bas de l'écran où sont donnés dans l'ordre (en blanc) l'entier saisi, l'altitude maximale , la longueur du trajet en altitude et le temps de vol total (en noir).
MPO 53 -  8400511 sys 2048.gif
MPO 53 - 8400511 sys 2048.gif (18.14 Kio) Vu 16611 fois
Les lignes entre les valeurs sont dues à l'espace réservé pour chacun des nombres, puisque ce petit mais très véloce code peut traiter (en théorie) des nombres jusqu'à 240 chiffres.
Modifié en dernier par C.Ret le 26 mars 2020 00:06, modifié 2 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.
Ben
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1549
Enregistré le : 21 août 2016 19:04

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par Ben »

Je vois qu'Eric donne des ailes! :-D
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par Schraf »

Quelqu'un a calculé la longueur du trajet en altitude de @C.Ret lui-même ?? :P :P :P

Projet pas encore commencé, parler des possibilités du ZX81 à utiliser les routines (genre sin, ln, exp...) et commandes (plot, unplot, cls...) de la ROM dans des programmes en LM. Le thème pourrait donc rester la suite de Syracuse qui a besoin de tout ça pour représenter par exemple l'histogramme des maximums ou des temps de vol (ou les 2)...
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par C.Ret »

C'est ta faute Eric ! Tu demandais dans l'une de tes dernières vidéo comment afficher l'alphabet en assembleur sur l'écran d'un Sinclair ZX-81 !

Ca m'a donné l'idée sz faire les calculs directement sur l'écran 40Col de mon C128D.

Il faut maintenant que je trouve le moyen de programmer la même chose mais sur le Zilog Z80 qui gère l'écran 80col de mon antiquité !?


D'ailleurs si quelqu'un connait un moyen, je suis preneur :(
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
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par C.Ret »

Terrassé par la fulgurance à laquelle mon C128D parcourt les suites de Syracuse et très déçus par le temps de vol en altitude médiocre de mon matricule de sécurité sociale :), je me suis attaqué à la représentation graphique sur HP-28S. J'ai réussi à obtenir les mêmes profils de vol log/lin:
MPO 53 - N=27 (M=9232 A=95 T=11) on HP-28S.gif
MPO 53 - N=27 (M=9232 A=95 T=11) on HP-28S.gif (100.71 Kio) Vu 16520 fois
Sur cette première capture d'écran, on trouve les résultats du vol de 27. la conjecture est bien vérifiée; la suite converge effectivement jusqu'à 1.

J'obtiens ensuite le profil, les traits pleins représentent la succession des valeurs de la suite en échelle linéaire et les points représentent ces mêmes valeurs mais en échelle logarithmique. Les deux graphes ont pour sommet commun l'altitude maximale à 9232. La croix est le curseur graphique de l'HP-28S qui permet, entre autres choses, de parcourir la suite en lisant les valeurs.
MPO 53 - N=27 (profil graph log+lin) on HP-28S.gif
MPO 53 - N=27 (profil graph log+lin) on HP-28S.gif (94.46 Kio) Vu 16520 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
Marge
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 6172
Enregistré le : 01 oct. 2008 14:39
Localisation : En bas, tout au fond à gauche.

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par Marge »

Bravo, C.Ret, j'aimerais savoir manipuler la 28 aussi bien pour obtenir de si jolis graphes !
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
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par C.Ret »

Ce n'est pas très compliqué.

L'astuce est de mémoriser les termes de la suite de Syracuse dans la matrice des données statistique ∑DAT. Ce qui se fait très facilement à l'aide de l'instruction ∑+ au fur et à mesure de leur calcul.

On peut saisir le terme initial n et utiliser le code suivant qui mémorise dans ∑DAT chaque terme en bouclant jusqu'à atteindre 1:
MPO 53 - HP-28S - STO∑SYR.gif
MPO 53 - HP-28S - STO∑SYR.gif (31.67 Kio) Vu 16239 fois
Une fois la suite mémorisée dans ∑DAT la fonction N∑ donne (t+1) le temps de vol augmenté d'une unité car la matrice contient aussi le terme initial n et la fonction MAX∑ donne l'altitude maximale.

Ensuite, le graphique ce fait par le code suivant:
MPO 53 - HP-28S - DRWSYR.gif
MPO 53 - HP-28S - DRWSYR.gif (71.2 Kio) Vu 11740 fois
L'HP-28S dessine, pour chaque donnée dans ∑DAT, la line droite et le point logarithme (x,ln x) projetés de façon à ce que les altitudes maximales m et ln m soient bien toutes en haut de l'écran. La mise à l'échelle tient compte du nombre de pixels du LCD et effectue les arrondis nécessaires à un affiche propre et régulier.


EDITx2:
Modifier version pour éviter ROUND et surtout avoir le curseur graphique qui permet de lire une altitude maximale correcte
Modifié en dernier par C.Ret le 18 avr. 2021 08:37, 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
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3404
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit Optimisez n°53 : la suite de Syracuse

Message par C.Ret »

Bon, j'ai réussi à faire le même type de graphiques sur TI-92 II

Dans un premier temps j'ai utilisé l'application SEQUENCE et cela marche bien, même sans rien programmer ou presque.

Code : Tout sélectionner

:SYR(n)
:Func
:If mod(n,2)=0 Then
: n/2
:Else
: 3n+1
:EndIf
:EndFunc
La TI-92 est vraiment faite pour cela, définir une fonction ou une suite et l'on dispose immédiatement de tout un environnement pour explorer son comportement , les valeurs et comprendre ce qui se passe soit par les formules qui en découle, soit graphiquement soit au travers de table de valeurs. C'est clairement la mère des calculatrices actuelles, parfait outil d'exploration des données et donc d'apprentissage.

Mais par contre, on ne peut pas trop changer l'aspect du graphique ni avoir facilement sans parcourir la table le temps de vol, l'altitude maximale etc.
MPO 53 - TI92II - SEQUENCE SCATTER PLOT 27.GIF
MPO 53 - TI92II - SEQUENCE SCATTER PLOT 27.GIF (2.11 Kio) Vu 16213 fois
Et donc très difficilement obtenir la superposition des deux courbes l'une linéaire et l'autre logarithmique comme je souhaite le faire.

Je me suis donc résolu à utiliser le mode application FUNCTION et créer d'une part un petit Program qui mémorise les termes, leurs abscisses et leurs logarithmes dans des listes (nommées respectivement avec une seule lettre s, x et l afin d'être effacées facilement par F6); tout cela pour ploter avec les outils disponibles dans l'application Y=.

Code : Tout sélectionner

FnOff
PlotsOff  
NewPlot 1,1,x,l,,,,3
NewPlot 2,4,x,,s,,,,1
DispG 
J'ai encore un peu de mal avec le Ti-BASIQUE dont je ne trouve pas toutes les commandes très intuitives, ni la syntaxe très claire d'ailleurs. Ceux d'entre vous qui ont plus de pratique que moi auront tout de suite compris en lisant les trois lignes de code ci-dessus que le premier graphe dessinera avec des '+' la courbe des termes logarithmiques (suite stockée en l) et le second tracera un histogramme donnant l'altitude de chaque terme.
La superposition de l'échelle des ordonnées des deux graphes étant garantie par la mise à l'échelle de la liste logarithmique l que j'ai pris le soin de réaliser lors de la création les trois listes.

Cela marche bien, à condition d'avoir une séquence de moins de 100 termes. Sinon, impossible d'afficher avec les outils graphiques de base ! (ERROR: Plot setup (ESC=CANCEL)
MPO 53 - TI92II - 255 PLOT1 PLOT2.GIF
MPO 53 - TI92II - 255 PLOT1 PLOT2.GIF (2.55 Kio) Vu 16213 fois
Donc pas moyen de tracer avec cette méthode les profils les plus intéressant comme par exemple celui pour N=27.

Je me suis donc résolu à écrire un second programme qui dessine directement les lin et les log. Et là je dois dire que les instructions graphiques sont bien faites et permettent directement de dessiner avec les valeurs des termes. En effet, toutes les instructions graphiques existent soit sous la forme de commande adressant directement les pixels de l'écran, soit des instructions utilisant la fenêtre graphique dont les bornes sont simplement indicable par les variables systèmes globales xmin, ymin, xmax, ymax, etc.

Code : Tout sélectionner

:Prgm                 : ClrDraw                          :  Line x+1,s[x] , x+1, 0
: 1→xmin              : PtText "N="&string(n),.8t,.8m    :  If s[x]=m
: 1→ymin              : For x,1,dim(s)                   :   PtText string(m),1+x,m
: t→xmax              :  Line  x ,l[x] , x+1,l[x]        : EndFor
: m→ymax              :  Line  x ,  0  , x  ,s[x]        : DispG
: FnOff               :  Line  x ,s[x] , x+1,s[x]        :EndPrgm
Et là on peut contrôler exactement ce que l'on veut dessiner et comment le faire.
MPO 53 - TI92II - 27 LINLOG PROFIL.GIF
MPO 53 - TI92II - 27 LINLOG PROFIL.GIF (2.42 Kio) Vu 16213 fois
On profitera alors de la puissance de la TI-92 II qui peut traiter des nombres de taille quasi infinie sans avoir à ce soucier de la limite due au nombre de chiffres. Les calculs ne sont pas instantanés et nécessitent quelques dizaines de secondes. Ce n'est pas immédiat comme sur l'HP Prime, mais pas non plus un PC-1211, le petit 6800 au cœur de la machine semble être bien exploité.
MPO 53 - TI92II -113383 LINLOG PROFILE.GIF
MPO 53 - TI92II -113383 LINLOG PROFILE.GIF (2.42 Kio) Vu 16213 fois
Je dois reconnaitre que tout cela n'a pas été chose facile pour moi qui découvre cette machine très puissante mais dont l'environnement ne cesse de me déconcerter.
Heureusement le mode d'emploi est bien fait et heureusement que je l'ai au format papier (épais comme une bible) car trouver dans un fichier PDF m'aurait vite agacé.
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.
Répondre

Retourner vers « Tous les Pockets »