3342 résultats trouvés

par C.Ret
29 janv. 2024 22:25
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers
Réponses : 65
Vues : 2933

Re: Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers

C.Ret a écrit : 30 déc. 2023 11:33
Schraf a écrit : 30 déc. 2023 10:12

Code : Tout sélectionner

...    ROT SWAP +			On ajoute 3 à droite de "0." ce qui donne "0.3"
...  OBJ→			Permet de transformer le "0.3522" en 0.3522
»
Merci Schraf pour ces explications, c'est justement ça que je n'avais pas compris ! Construire la réponse sous forme d'une chaine de caractères afin de ne pas avoir à faire la division des termes de la somme.
Je viens de relire ce message, et je me souviens avoir aussi écrit une version pour HP-41C qui utilise le registre ALPHA pour simplifier le calcul de la distance. J'ai retrouvé mon code et je l'ai raccourci avec quelques astuces survenues depuis sa création.

Code : Tout sélectionner

001 LBL"MPO124
002 "d=0,"  FIX 0  CF 29                       @@ Initialise et formate affichage 
005 LBL 00                                     @@ Boucle principale   
006   XEQ 01  RCL Z  XEQ 01  X<>Y  R↑  -  ABS  @@   Différence derniers chiffres des deux entiers
013   ARCL X  AVIEW  RDN                       @@   Met à jour et l'affiche distance
016 X≠Y? GTO 00                                @@   Test fin de boucle
018 RTN                                        @@ Fin programme

019 LBL 01                                     @@ Extrait dernier chiffre et raccourci l'entier
020   STO 00  10  ST/ 00  MOD  RCL 00  INT     @@ Utilise transitoirement le registre R00
026 END
L'avantage est que le calcul de la distance s'affiche au fur et à mesure de sa détermination et reste affiché à la fin du programme dans le registre Alpha.
Le principe est assez simple, à chaque appel de la boucle de calcul, les deux entiers (ou ce qu'il en reste) sont présents dans les registres X et Y. Le sous-programme extrait le dernier chiffre et raccourci tour à tour chaque entier. La valeur absolue de leur différence est alors ajoutée au bout de la distance dans le registre ALPHA.
Comme les quatre niveaux de la pile sont utilisés, le registre R00 sert de tampon transitoire pour la réduction de l'entier.

2024 Shift RTN 271 R/S affiche "d=0,3522 ".

Attention à ne pas utiliser d'imprimante avec ce code, car chaque ajout d'une décimale à la distance imprime une nouvelle ligne.
par C.Ret
27 janv. 2024 19:39
Forum : Tous les Pockets
Sujet : Mes boîtes - Partie 2 - Texas Instruments
Réponses : 8
Vues : 859

Re: Mes boîtes - Partie 2 - Texas Instruments

Woow :slime: :slime:

J'avais oublié à quoi ressemblait la boite de ma Ti-57 LCD. Je regrette de ne pas avoir gardé cette boite, comme les autres d'ailleurs...
par C.Ret
27 janv. 2024 16:59
Forum : Tous les Pockets
Sujet : Equation du second degré avec une calculatrice "4 opérations"
Réponses : 35
Vues : 1237

Re: Equation du second degré avec une calculatrice "4 opérations"

Trypilec a écrit : 27 janv. 2024 16:21La méthode itérative consiste à résoudre l'équation
x + q/x + p = 0.
x2 = p-x1
Ce ne serai pas plutôt x₂=-q-x₁ ou x₂=p/x₁ ?

Et évidemment, on peut utiliser les méthodes itératives que l'on veut, comme il s'agit d'un polynôme continu et facilement dérivable, on peut par exemple utiliser la méthode de Newton-Raphson. Si P(x)=x²-s*x+p alors sa dérivée est connue P'(x)=2*x-s, on cherche une des racines en partant d'une première estimation x₀ et l'on calcule jusqu'à obtenir une convergence la suite x(n):

Image

Je n'ai pas de"4 opérations", mais cela va donner un truc avec plein de MC M+ MR comme avec les techniques démontrée ci-dessus par nos amis MangeGrain et Scharf.

Exemple : P(x)= x²-12.28x-2.75 on a alors P'(x)=2x-12.28.

En cherchant une première racine autour de 10 on a:
x(0) = 10
x(1) = (-2.75-10²)/(12.28-2*10) = 13.31
x(2) = (-2.75-13.31²)/(12.28-2*13.31) = 12.546
x(3) = (-2.75-12.546²)/12.28-(2*12.546) = 12.5
x(4) = (-2.75-12.5²)/(12.28-2*12.5) = 12.5
x(5) = (-2.75-12.5²)/(12.28-2*12.5) = 12.5
x(6) = (-2.75-12.5²)/(12.28-2*12.5) = 12.5
...
Donc une des racines est x₁≅12.5 et on en déduit l'autre x₂= -2.75/12.5 ≅ -0.22
Méthode de Newton - Raphson polynôme quadratique réduit P(x)=x²-12.28x-2.75.gif
Méthode de Newton - Raphson polynôme quadratique réduit P(x)=x²-12.28x-2.75.gif (24.93 Kio) Vu 204 fois
par C.Ret
27 janv. 2024 15:55
Forum : Tous les Pockets
Sujet : Equation du second degré avec une calculatrice "4 opérations"
Réponses : 35
Vues : 1237

Re: Equation du second degré avec une calculatrice "4 opérations"

Trypilec a écrit : 27 janv. 2024 15:21J'ai parcouru tous les manuels de logarithme publiés des années 20 aux années 80 et aucun ne connaît cette méthode ! Il n'existe que des méthodes itératives.
Ce n'est pas une règle des logarithmes, ce sont des techniques forts connues depuis la seconde guerre mondiale. Ces techniques sont décrites dans de nombreux Mode d'Emplois. La plupart du temps pour des règles à calculs "avancées" (je ne suis pas sûr de ce qu'ils entendaient par là. Peut-être simplement des règles ayant plusieurs dizaines d'échelles ??).

Vois par exemple, les explications aux pages 20-21 dans le manuel d'utilisation de la VERSALOG M34 (publié par Frederick POST Compagny de Chicago - USA) qui à la fin du chapitre traitant des sommes, divisions et multiplications dans les exemples d'utilisation donne cette méthode pour résoudre les équations quadratiques réduites.

C'est effectivement une "méthode itérative", car la règle ne donne pas directement les racines. Il faut les trouver; une fois le produit fixé par la position de la réglette, on déplace le curseur afin d'encadrer puis trouver les deux racines et calculant à chaque position testée la somme ou la différence des valeurs lues sur les échelles CI et D (ou les échelle CIF et DF lorsque les valeurs se trouvent au-delà de la zone accessible de la réglette).
par C.Ret
27 janv. 2024 15:10
Forum : Tous les Pockets
Sujet : Equation du second degré avec une calculatrice "4 opérations"
Réponses : 35
Vues : 1237

Re: Equation du second degré avec une calculatrice "4 opérations"

Je voulais juste ajouter que s'il l'on a qu'une simple "4 opération" sans mémoire, il est possible aussi de déterminer √6 et sin(1,4 rad) en dessinant à l'échelle ces deux figures et en mesurant à la règle graduée les distances correspondantes à ces deux valeurs (repérées en rouge):
No calculator - Measure it yourself.gif
No calculator - Measure it yourself.gif (28.82 Kio) Vu 253 fois
par C.Ret
27 janv. 2024 12:47
Forum : Tous les Pockets
Sujet : Equation du second degré avec une calculatrice "4 opérations"
Réponses : 35
Vues : 1237

Re: Equation du second degré avec une calculatrice "4 opérations"

MangeGrain a écrit : 22 janv. 2024 14:45La manip est hyper simple, un peu inhabituelle (on cherche généralement un repère sur une échelle, pas une différence entre les valeurs de 2 échelles)…
En l'occurrence, on aurait aussi bien pour arrêter le curseur à la graduation 6 de l'échelle D : là aussi on trouve un 5 en échelle CI, et on a aussi 6-5=1.
Ah! ca fait plaisir de voir quelqu'un capable de sortir une règle à calculer de qualité pour s'en servir. J'aime la finesse des gravures de ces règles. Ont-elles vraiment les gravures les plus fines du monde comme l'affirme la notice ?

En tout cas merci pour les liens vers la publication, je viens de découvrir que cette méthode permet de résoudre des équations de degré supérieur à deux et surtout que l'on peut trouver les racines complexes.

Reformulons ensemble le problème et tachons de trouver le petit détail que j'ai oublié. Je ne résous pas tous les jours des équations du second degré et encore moins souvent avec ma Graphoplex.

En général, l'équation du second degré nous apparait sous la forme générale Image avec a non nul.

Il nous faut réduire l'équation afin de n'avoir aucun coefficient devant le terme du second degré. Il suffit de diviser chaque coefficient par a C'est bien pratique car il ne peut être nul. On obtient une équation du genre Image avec Image et Image.

Appelons x₁ et x₂ les deux solutions de notre équation quadratique. Le polynôme P(x) = x²-s.x+p s'annule pour chacune d'elles, on peut donc le factoriser ainsi: Image

s et p sont respectivement la somme et le produit des deux solutions.
La résolution joue sur le fait que simultanément Image avec Image.

Comme on le voit, les deux solutions x₁ et x₂ sont parfaitement symétriques car elles interviennent par leur somme et leur produit qui tous les deux sont commutatifs. Donc, il n'y a aucune raison de choisir un sens ou l'autre et donc il est tout à fait normal de trouver l'une ou l'autre des deux racines sur chaque échelle. Notamment lorsque les deux racines sont du même ordre de grandeur. Les seuls cas où l'on ne peut pas trouver les racines sur chaque échelle sont liés à la taille de la réglette (une des racines est hors de portée) ou s'il y a une asymétrie liée au fait que l'une des racines est plus grande (ou plus petite) que l'autre d'un (ou plusieurs) ordre de grandeur. Et dans ces cas, l'autre couple de racines se trouve de l'autre coté de l'index de la réglette ou sur une échelle repliée.


J'allais ranger ma règle à calcul et désespérément chercher une simple calculette "4 opérations" que je n'ai pas. Je ne vais pas utiliser mes machines scientifiques et programmables et utiliser les 4 opérations (qui en sont bien plus d'après les post que je lis ci-dessus) alors que par conception elles ont toutes de bien plus simples moyens d'obtenir ces résultats.
Et avec toute la précision nécessaire à calculer toute les diagonales avec une précision largement subatomique. Le grand-père de Trypilec est plein de bon sens, à chaque technologie correspond une précision raisonnable pour les calculs correspondants. Ce n'est pas le chimiométre que je suis (depuis que j'ai obtenue ma Maitrise de Sciences Appliquée de Mesure et Contrôle) qui affirmera le contraire. Bien au contraire, soyons modeste et surtotu pragmatique. A quoi servent les 27 chiffres de la calculatrice google ??

Du coup, je laisse ma règle Graphoplex sur mon bureau, les deux ou trois chiffres significatifs que permet son utilisation sont bien suffisant pour la majorité des applications. Et je fais bien:
Trypilec a écrit : 27 janv. 2024 12:29Si nous calculons 0,0135 × 0,0105 × 0,00343 sur une telle calculatrice, nous obtiendrons 0,0000004.
Pour plus de précision, vous devez multiplier les mantisses des nombres 1,35×1,05×3,43=4,8620250 et ajouter les indicateurs (-2)+(-2)+(-3)=-7.
C'est bien ainsi que fonctionne les règles à calculer. Que du bon sens les anciens, vous ne croyez pas ! J'ose espérer que nos grand-pères acquiesceront cette allégation.

Ainsi, lorsque je place le curseur mobile sur la graduation 6 de l'échelle A (celle de x²), je vois qu'il est exactement sur la graduation 2,45 de l'échelle D. J'en déduis donc que √6 ≅ 2,45. Evidemment, je sais que ce n'est pas une solution exacte. La solution exacte est le produit √2×√3 qui sont tous deux des irrationnels. Jamais aucune machine ne sera assez précise pour mesurer un tel produit exactement. Quelque soit son prix.
GRAPHOPLEX 690 NEPERLOG  sin(1.4 rad) = 0.9854(5).gif
GRAPHOPLEX 690 NEPERLOG sin(1.4 rad) = 0.9854(5).gif (82.62 Kio) Vu 271 fois
Par contre, en voulant calculer le sinus de 1,4 radians, je me rends compte que l'opération n'est pas aussi simple qu'elle peut paraitre sur ma Modèle 690 Neperlog.
En effet, celle-ci est graduée en degrés - minutes.
Il me faut donc réaliser deux opérations préparatoires avant de trouver la valeur du sinus en question. Je me demande si je n'aurais pas plus vite fais de demander à Badaze de consulter son CALCULATEUR UNIVERSEL; il y a de grandes chances qu'il trouve rapidement un résultat précis dans ses tables.
Image

Pour convertir 1,4 radians en degré, le plus simple (et donc le plus précis) est d'effectuer Image. La division par se fera exactement en passant de l'échelle repliée DF vers l'échelle D; La multiplication sera faite par le placement de la réglette afin d'obtenir le produit sur l'échelle C de celle-ci.

Je place donc l'index droit de la réglette en face de la graduation 5,555 de l'échelle D ainsi la graduation 1,80 de l'échelle C est en vis à vis de l'index gauche de l'échelle de base.
Puis je place le curseur mobile sur la graduation 1,4 de l'échelle DF et je lis sur l'échelle C que 1,4 r ≈ 80,2°.
GRAPHOPLEX 690 NEPERLOG  8_10 degree = 48 min.gif
GRAPHOPLEX 690 NEPERLOG 8_10 degree = 48 min.gif (45.27 Kio) Vu 271 fois
Pour être plus précis, je vais utiliser le complément de 80,2° c'est à dire 90-80,2 = 9,8°. Je calcule en fait la valeur du cosinus de 1,4 radians et j'utiliserai l'échelle pythagorienne P qui me donnera une valeur plus précise du sinus. En effet, 80,2° étant à l'extrémité droite de l'échelle des sinus S les graduations sont très proches et manquent de précision sur cette partie de la règle.

Il me faut cependant, convertir 9,8° en degré-minutes car ma règle est ainsi graduée. L'angle est donc de 9° et 8/10' (huit 10-ième de minute). Je place l'index droit de l'échelle C sur la graduation 6 de l'échelle D (notons que l'on peut faire différemment, mais passer de la graduation 5,555 à 6 est le déplacement occasionnant le moindre effort). Je déplace le curseur sur la position 8 de l'échelle C et je vois que 8/10' correspond à 48' sur l'échelle D.
GRAPHOPLEX 690 NEPERLOG  1.4 rad = 80.2 deg.gif
GRAPHOPLEX 690 NEPERLOG 1.4 rad = 80.2 deg.gif (76.71 Kio) Vu 271 fois
Je retourne afin ma règle afin d'avoir accès aux échelles trigonométriques que je remets bien en place.
Je déplace le curseur sur la position la plus proche 9°48', c'est à dire à droite de la graduations 9°45' et affleurant à gauche de la graduation 90°50' de l'échelle des sinus S ce qui positionne le repère du curseur sur la valeur du cosinus qui pourrait être lue sur l'échelle D.
Mais, je lis la valeur 0,9854½ sur l'échelle P qui donne Image.

Je trouve donc que Image ce qui est pas mal et justifie tout à fait la valeur d'une telle règle. C'est pour cela que je la conserve, je ne suis pas sûr que les tables de trigonométriques des almanachs (y compris les almanachs universels) tabulent leurs valeurs des sinus en radians avec une telle précision.
GRAPHOPLEX 690 NEPERLOG  6² = 2.45.gif
GRAPHOPLEX 690 NEPERLOG 6² = 2.45.gif (58.82 Kio) Vu 271 fois
Bien, en conclusion, je trouve que Scharf aurait pu faire l'effort de nous présenter une méthode utilisant des angles exprimés en degré-minutes, car je trouve que j'ai bien eut du mal à trouver ce sinus avec ma machine "24 opérations" qui n'a pas d'échelle de conversion RAD↔DEG, ni d'angles exprimables en degrés décimaux.
par C.Ret
21 janv. 2024 22:26
Forum : Tous les Pockets
Sujet : Equation du second degré avec une calculatrice "4 opérations"
Réponses : 35
Vues : 1237

Re: Equation du second degré avec une calculatrice "4 opérations"

MangeGrain a écrit : 21 janv. 2024 00:27Apparemment c'est plutôt étudié en seconde maintenant, mais il me semble qu'en troisième au début des années 80 on résolvait déjà des équations du second degré...
Oui, ce doit être cela, je me rappelle parfaitement qu'un des premiers programmes que j'ai écrit pour mon SHARP PC-1211 était justement pour la détermination du discriminant et des racines d'une équation quadratique (pardon, anglissime, je veux dire équation du second degré).

Mais, nous n'en sommes pas encore aux pockets programmables en BASIC.

Nous en étions à une "4 opérations" qui en possède en réalité cinq puisqu'elle est capable d'extraire une racine carrée !! Sur une vraie "4 opérations", la méthode de Héron (peu précise) ou la méthode exacte utilisant la somme des nombres impairs indiquée ci-dessus par Trypilec est nécessaire. Je suis d'accord avec marge, cette méthode est fort utile et surtout rigoureuse contrairement à l'approximation de la méthode de Héron.

Avant d'utiliser une Ti-30 ou une autre scientifique de l'époque (vraisemblablement une CASIO fx), il y a aussi la méthode de résolution à l'aide d'une règle à calculer.

Pour résoudre 10x² + x - 3 = 0 à l'aide d'une règle à calculs, il faut en général réduire le polynôme afin de n'avoir aucun coefficient devant le terme quadratique: x² + 0.1x - 0.3 = 0. Dans cet exemple, ce n'est pas nécessaire car la règle à calcul ne tient pas compte des puissances de dix.

Le principe est que les coefficients b et c donnent respectivement la somme et le produit des racines x₁ et x₂. En positionnant convenablement la réglette mobile, on fixe le produit x₁∙x₂. Ensuite, en déplaçant le curseur, on cherche à retrouver la somme x₁+x₂. Les positions du curseur lues sur l'échelle principale et l'échelle inversée de la réglette -- selon le modèle échelles B et a (Rietz) ou échelles D et CI sur les (Neperlog & US) -- donnent, au signe près (car opposé), la valeur des deux racines ×₁ et x₂.

Comme ici le coefficient c est négatif, les deux racines sont de signe opposé, la somme est en réalité une différence.
On place donc l'index gauche de l'échelle CI (ou a) en face de la graduation 3 de l'échelle D (ou B selon modèle) car c=-3.
On déplace ensuite le curseur afin que la différence lue entre les échelles D (ou B) et CI (ou a) soit aussi proche que possible de 1 car b=1.
Cette position est trouvée exactement en plaçant le curseur sur la graduation 5 de l'échelle D (ou B) qui se trouve en vis à vis de la graduation 6 de l'échelle CI (ou a). En effet 6-5 = 1 exactement.
GRAPHOPLEX 690 NEPERLOG  10x²+x-3=0.gif
GRAPHOPLEX 690 NEPERLOG 10x²+x-3=0.gif (123.53 Kio) Vu 523 fois
Rappelons-nous que nous avons réduit virtuellement l'équation par le facteur a=10 (mais sans le faire afin de profiter pleinement des échelles logarithmiques de notre règle à calculer). Cela signifie que l'équations 10x² + x - 3 = 0 a pour racines x₁= +0.50 et x₂= -0.60.
par C.Ret
21 janv. 2024 14:15
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers
Réponses : 65
Vues : 2933

Re: Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers

Schraf a écrit : 20 janv. 2024 19:34Super C.Ret ! Pour éviter de taper le 0 (ou autre), soit on crée 2 programmes, le premier servant à lancer le second qui lui sera récursif (bien entendu tu y as pensé j'en suis sûr mais c'est moche), soit on pourrait utiliser un drapeau. […] Sur la HP-28S il n'y a pas de UNROT mais ROT ROT fait la même chose, par contre pour les drapeaux il y en a ou pas ??
Oui, il y a des drapeaux et ils fonctionnent exactement comme sur les machines RPL suivantes avec le même jeu d'instruction SF CF FS? FC? FS?C FC?C. Seul le nombre de drapeaux est différent. Il n'y a pas d'indice négatif pour les drapeaux systèmes qui se trouvent simplement aux indices 31-64).

C'est FLISZT qu'il faut remercier, c'est en tentant de décompiler son dernier code RPL après avoir vu ton dernier code que m'est venue l'idée de cette approche.

Je ne voyais pas l'intialisation comme un problème, au contraire cela permet de choisir ce que l'on fait de la distance entre les deux entiers.

Par contre, si l'on veut que l'utilisateur n'ai à saisir que les deux entiers, on peut utiliser le même code tout en évitant la dernière addition. On peut alors comme le propose Scharf utiliser un drapeau.
Pour faire un peu plus court, on peut aussi utiliser le fait que l'instruction DROP2 n'est exécutée qu'une et une seule fois lorsque la fin de la décomposition est atteinte. J'en profite pour insérer le 0 initial à ce moment. Une petite modification de la façon de faire le calcul de la distance (c'est-à-dire la somme des écarts normalisée) économise la pile et surtout les quelques instructions de mouvement de celle-ci. En effet, les écarts intermédiaires étant mémorisés par ailleurs les mouvement de la pile sont grandement simplifiés.

Code : Tout sélectionner

MPO124²:
« DUP2 ≠                               @@  Compare arguments N et P
  « 1 2 START                          @@  N≠P: Traite N et P présents dans la pile
           10 MOD                      @@     Extrait dernier chiffre de N (puis de P)
           LAST / IP SWAP ROT NEXT     @@     Remplace N par N DIV 10 (puis P par P DIV 10)
    - ABS → d                          @@     calcul écart absolu et le mémorise localement
               « MPO124²               @@     Appel récursif MPO124²(P DIV 10 , N DIV 10) l'interversion de N et P n'a pas d'incidence
                 d + 10 / » »          @@     Ajoute l'écart local et normalise la somme en cours.      
  « DROP2 0 »                          @@  N=P:Fin de décomposition retire N et P, initialise somme à 0 
  IFTE »                               @@  Test les arguments N et P.
Petits exemples de calculs de la distance entre deux entiers :

Code : Tout sélectionner

2:N     1:P     1:D     Appels      Ecarts →d)  MEMORIZED
123789  123654          (  MPO124²  5)
12365   12378           (( MPO124²  5)  3)
1237    1236            (((MPO124²  5)  3)  1)
123     123     0       (((MPO124²  5)  3)  1)
                1       (( MPO124²  5)  3) 
                .31     (  MPO124²  5)
                .531

Code : Tout sélectionner

2024    271             (           3)
27      202             ((          3)  5)
20      2               (((         3)  5)  2)
0       2               ((((        3)  5)  2)  2)
0       0        0      ((((                    2)
                 .2     (((                 2)
                 .22    ((              5)
                 .522   (           3)
                 .3522
Dans cette dernière sophistication, la pile contient les deux arguments de chaque appel (phase ascendante) puis la somme normalisée produisant la distance (phase descendante). On peut n'utiliser que la pile et se passer de la mémoire locale.

Code : Tout sélectionner

MPO124₃:
« DUP2 ≠                               @@  Compare arguments N et P
  « 1 2 START                          @@  N≠P: Traite N et P présent dans la pile
           10 MOD                      @@     Extrait dernier chifre de N (puis P)
           LAST / IP SWAP ROT NEXT     @@     Remplace N par N DIV 10 (puis par P DIV 10)
    - ABS ROT ROT MPO124₃ + 10 / »     @@     Ecart, organise pile, récursion, somme normalisée
  « DROP2 0 »                          @@  N=P:Fin de décomposition retire N et P, initialise somme à 0 
  IFTE »                               @@  Test si les arguments N et P sont identiques.

Code : Tout sélectionner

(                                    2024     271       °
(                               3      27     202       °°
(                       3       5      20       2       °°°
(               3       5       2       0       2       °°°°
(       3       5       2       2       0       0       °°°°°
)               3       5       2       2      0.       °°°°
)                       3       5       2      .2       °°°
)                               3       5     .22       °°
)                                       3    .522       °
1:                                          .3522
Dans ce dernier cas, la pile contient les arguments de chaque appel et les écarts intermédiaires (phase ascendante) puis uniquement la somme et ses termes (phase descendante) conduisant au résultat final. Par contre, les mouvement de la pile sont un peu plus élaborés, mais comme chaque block de programme fait perdre des bytes, cette version est plus courte et mieux adaptée à un MPO. Par contre, la lisibilité du code est médiocre (déjà que le RPL n'est pas très clair, ici c'est une dimension de plus).

P.S.: j'espère que Trypilec est à l'écoute, car comme le dit sa signature, ce dernier code peut perdre facilement un pas (une instruction bien placée peut en remplacer deux consécutives - sans compte les deux ROT ROT qui peuvent être remplacés par un UNROT sur les machines qui en sont pourvues)). mais tout le monde l'a vu !? Non ?! Ohhhh! :(


Si comme moi, vous ne maitrisez pas bien les mouvements de la pile car cela demande un temps bien trop long lors de la mise au point, l'avantage des RPL est que se sont aussi des systèmes purement algébriques qui vous permettent de définir très facilement une fonction utilisateur récursive facile à lire et à utiliser :

Code : Tout sélectionner

FCT124: « → a b 'IFTE( a≠b , ABS(MOD(a,10)-MOD(b,10)) + FCT124(IP(a/10),IP(b/10)) , 0 )/10' »
Ce qui vous permet de transcrire cela sur votre pocket Basic récursif préféré - car c'est le seul en fait - :

Code : Tout sélectionner

10 DEF FND(A,B)
12 IF A=B THEN FND=0 ELSE FND=(ABS(MOD(A,10)-MOD(B,10))+FND(A DIV 10,B DIV 10))/10
14 END DEF
Et sans lancer de programme, obtenir les distances que vous souhaitez directement en ligne de commande FND(2024,271) [END LINE] affiche .3522
par C.Ret
21 janv. 2024 11:12
Forum : Présentation
Sujet : Petit Retour
Réponses : 11
Vues : 742

Re: Petit Retour

Merci à toi, bonne année à toi aussi et que ce Petit Retour soit en fait un Grand Retour.

Je trouve très bien d'avoir des projets pour toutes ces vieilleries qui peuvent encore servir ou être la source d'activités et de développement personnel ou familial.

Tu as du mérite de vouloir initier tes filles aux pockets et au BASIC. C'est vrai que les SHARP PC-1260 et 1261 ont les capacités pour les calculs, l'analyse et la résolution des problèmes et exercices de mathématiques, sciences physiques, sciences du vivant, etc...
Mais, la programmation, l'affichage des résultats sur ces pocket ne fait plus le poids face aux machines actuelles comme par exemple la NUMWORKS qui permettrait d'initier tes filles aux techniques de programmation actuelles (Python), avoir des affichages et illustrations des résultats plus en adéquation avec les attendus actuels (formules, tableaux, couleurs, graphiques), et permet facilement grace au Cloud de Numworks.com de partager les contenus (codes et résultats) avec tes machines, celles de tes enfants et de leur camarades de classe…

J'ai peur que tes filles ne considèrent pas que les SHARP PC-1260 ou 1261 soient "Has Been" mais qu'elles pensent que c'est leur père qui l'est. Car, alors qu'il maitrise parfaitement les technologies et techniques de programmation d'il y a quarante ans, il est incapable de ce mettre à la page et d'utiliser le Crunch actuel !

Bon, je ne veux pas critiquer, j'ai eu le même souci avec mes deux fils. Apprendre avec eux a été un grand bonheur surtout pour leur donner les clefs des technologies actuelles. Celles dont ils ont eut besoin pour passer leurs concours et trouver leur voie. Mes fils n'ont jamais eut le goût pour les sassefaiplus et bien que j'ai eu du mal à me remettre à la page, je suis content de ne pas les avoir enfermés dans une passion personnelle qui ne leur sert à rien, sauf à donner à leur maigre curiosité quelques rares exemples d'artéfacts de l'histoire du calcul électronique.

Maintenant, bien souvent, les aidant à faire leur devoirs, je me suis bien amusé à retrouver leurs résultats sur mes vieilles bécanes afin de les vérifier. Et nous avons bien rit quand il me fallait parfois plusieurs heures pour programmer, débugger, calculer, trouver et imprimer les solutions que leurs TI-84 mettaient quelques secondes à afficher proprement.
par C.Ret
20 janv. 2024 18:48
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers
Réponses : 65
Vues : 2933

Re: Misez p'tit, Optimisez ! n° 124 : Distance entre les entiers

Schraf a écrit : 16 janv. 2024 19:37Une version récursive qui pourra peut-être donner de nouvelles idées :
Effectivement, voici une version récursive pour HP-28S qui devrait d'ailleurs fonctionner sur d'autres RPL: l'idée maitresse va vous être familière, car ce code est tout simplement une réinterprétation récursive du code corrigé de FLISZT adapté aux HP-28C/S.

Code : Tout sélectionner

MPO124:
« DUP2 ≠
  « 1 2 START 
           10 MOD LAST / IP SWAP ROT NEXT
    - ABS ROT ROT MPO124 10 / + »
  « DROP2 »
  IFTE »
Utilisation:
Entrez un zéro (pour initialise la somme) dans la pile puis les deux entiers et lancer le programme MPO124.

Par exemple:
Taper 0 [SPACE] 2024 [SPACE] 271 et pressez sur le soft-menu (MPO124) lance le calcul et affiche .3522 au niveau 1:.

Si on entre autre-chose que 0, la distance calculée est ajoutée à cette valeur initialement saisie
Par exemple 'D' 159753 852456 (MPO124) affiche 'D+.303707' et { } 7412 36985 (MPO124) renvoi { .37513 }
par C.Ret
17 janv. 2024 18:25
Forum : Sondages
Sujet : Question AER du dimanche 14 Janvier 2024.
Réponses : 19
Vues : 1868

Re: Question AER du dimanche 14 Janvier 2024.

Hobiecat a écrit : 17 janv. 2024 09:55
C.Ret a écrit : 16 janv. 2024 22:30JMalheureusement, mon EL-5150 ne voit pas les choses de la même façon et ne semble pas trouver cela très amusant
Merci d'avoir essayé C.Ret, effectivement, ce dernier essai pose question sur la façon dont l'AER interprète les demandes. :?:
Mais, il est essentiel à la comprehension du fonctionnement du EL-5150 (ou EL-5050 et autres AER depuis ces deux modèles) et surtout il m'a permis de me rendre compte que j'interprétais mal les explications de l'Annexe E intitulée "Niveaux de priorité lors des calculs et opérations en cours".

J'attends que tout le monde ai voté et d'ici le fin de la semaine prochaine, je publierai des extraits de cette annexe illustrée par les étapes et sous-étapes du calcul ainsi que d'autres expérimentations.

Et fait tout cela est voulu par les concepteurs de ces machines et n'a pour but que de simplifier la vie des utilisateurs qui peuvent saisir leurs expressions comme dans les publications et comptes-rendus qui inspirent leurs calculs.
L'astuce est que la multiplication implicite n'est pas autorisée n'importe où et surtout pas dans n'importe quel ordre: n'est absolument pas équivalent à π2π peut être le nombre PI (une touche lui est dédiée) mais aussi un registre global A~Z ou une variable locale nommée, ou une fonction comme le SIN de notre expression et aussi une sous-expression placée entre parenthèses.
Héhé :P

Et l'AER a bel et bien une pile opérationnelle, il est indiqué dans cette même Annexe E que l'évaluation de l'expression se fait au fur et à mesure des opérations rencontrées. L'expression est évaluée numériquement en fonction des priorités relatives des opérateurs. Mais si une sous-expression est rencontrée, l'évaluation des opérations en cours est "suspendue" et ne sera reprise qu'une fois la sous-expression entièrement évaluée.
Il y a donc une zone mémoire tampon servant à la mise en attente "des opérations en cours", celle-ci est à la fois une pile opérationnelle qui mémorise jusqu'à 16 commandes ou fonctions de calcul et une pile numériques intermédiaires de 8 registres.
Héhé, :P voilà qui va parler aux RPN et RPL-istes que nous sommes. :tongue: mais aussi aux amateurs d'AOS et ses mystérieux HIR. :mrgreen:
par C.Ret
16 janv. 2024 22:30
Forum : Sondages
Sujet : Question AER du dimanche 14 Janvier 2024.
Réponses : 19
Vues : 1868

Re: Question AER du dimanche 14 Janvier 2024.

FLISZT a écrit : 15 janv. 2024 06:05Je ne connais rien à ces Sharp et à leurs modes AER mais je me lance :Image
Ah!Ah! C'est une bonne idée de se lancer. Surtout sans connaitre la machine.

Ma première machine est un SHARP PC-1211 qui lui aussi permet la multiplication implicite, mais ses règles d'évaluations sont plus BASIQUES. Les AER ont héritées d'un sens vraiment très développée de l'évaluation. L'idée est que l'on puisse y saisir des expressions comme on les rencontre dans les livres , manuels scolaires et autres traités de sciences appliquées.

Par exemple:
* la loi des cosinus: Image
* la réponse d'un diffractomètre de rayon x: Image
* oscillation d'un pendule simple: Image
* équation temps d'un signal porteur : Image

Les machines AER ont un système que je trouve compliqué pour l'évaluation des expressions afin de coller au mieux aux notations habituelles d'une myriade de formules et expressions littérales.
Parmi toutes ces expressions, un petit nombre utilise les fonctions trigonométriques et la rare constante entre toutes les expressions et notations que l'on trouve universellement, est que les parenthèses sont utilisées dès qu'il y a plus d'un paramètre.

Fortuitement, EL-5150 ne déroge pas à cette règle .

Hobiecat a écrit : 15 janv. 2024 07:25Ça manque de pile opérationnelle pour gérer proprement les priorités.
Là, je ne peux que être d'accord à 100%. Tous ces tracas proviennent d'un système d'évaluation mal adapté à chaque cas de figure. Les RPN et RPL ont sur ce point trouvé une méthode infaillible et universelle pour effectuer les calculs comme l'entendent leurs utilisateurs. :mrgreen: :mrgreen:
Hobiecat a écrit : 15 janv. 2024 07:25Ce serait d'ailleurs amusant de terminer l'expression sur la Sharp par 3 exposant -1 pour voir si le résultat change.
Je trouve l'idée très bonne et je me suis empressé d'essayer. Malheureusement, mon EL-5150 ne voit pas les choses de la même façon et ne semble pas trouver cela très amusant :
BP_EXPRESSION_Hobiecat.gif
BP_EXPRESSION_Hobiecat.gif (1.43 Kio) Vu 792 fois
En pressant sur le touche PlayBack [PB] on voit que ce n'est pas possible. :x
EXPRESSION_Hobiecat.gif
EXPRESSION_Hobiecat.gif (12.66 Kio) Vu 792 fois
Quels mystères animent cet AER ???
par C.Ret
15 janv. 2024 20:53
Forum : Frimer - brag - dernières acquisitions
Sujet : Ca faisait longtemps
Réponses : 5
Vues : 538

Re: Ca faisait longtemps

Oui, bravo, belle machine.

Il y a un plein de choses à dire sur cet engin.

La première fois que je l'ai eu entre les mains, j'étais impatient de l'essayer. Mais dans la salle de réunion, je n'était pas seul. Et je ne savais pas comment activer/désactiver le 'bip' des touches. Je me suis fais remarquer et on m'a fait les gros yeux. J'ai dû attendre de rentrer à l'hôtel pour enfin pouvoir m'en servir librement.

Le toggle pour le bip des touches c'est CTRL+0 (appuyer sur le zéro du pavé numérique et la touche CRTL simultanément).

Ensuite, 2ndF et SHIFT ne fonctionnent pas de la même façon, il faut maintenir SHIFT enfoncé pour avoir la fonction seconde, alors que la touche préfixe 2ndF doit être relâchée. Je n'avais pas compris, j'ai cru un instant que j'avais un modèle au clavier défectueux.

Bon, avoir le mode d'emploi et prendre le temps de bien le lire fait gagner du temps (et permet de rester discret quand on ne suit pas une réunion); il y a un concentré de choses et d'astuces sur ces machines surpuissantes.
par C.Ret
14 janv. 2024 17:59
Forum : Tous les Pockets
Sujet : Misez p'tit, Optimisez ! n° 125 : Galette des rois
Réponses : 25
Vues : 1346

Re: Misez p'tit, Optimisez ! n° 125 : Galette des rois

Je ne résiste pas au plaisir de vous présenter le code qui permet de découper les galettes et les tartes; C'est important, la saison de galette touchant à sa fin, votre code peut être recyclé pour la découpe des parts de tartes ou de quiches.
Image
Cette merveille de dialogue homme-machine est obtenue avec un code qui peut facilement perdre au moins un pas de programme. C'est-à-dire que Trypilec pourra facilement optimiser car il ne fait pas moins de 73 bytes (dont 10 pour le nom, la réservation et 26 pour les deux variables locales pn et pp).
MPO 125 - SHARP EL-5150 (long code).gif
MPO 125 - SHARP EL-5150 (long code).gif (2.91 Kio) Vu 335 fois
L'avantage de cet obésiciel(°) est qu'il donnera de façon non équivoque la bonne mesure pour les grandes et petites parts de tartes quelque soit le mode trigonométrique dans lequel l'utilisateur a laissé sa machine.

Ce n'est pas le cas du code suivant qui profite des améliorations découvertes dans cet MPO. Pour avoir la bonne mesure, il faut mettre sa machine en mode trigonométrique RADIANS et être attentif aux réponses ANS 1 et ANS 2 qui peuvent selon les cas correspondre aux petites et grandes parts dans cet ordre ou non !
MPO 125 - SHARP EL-5150 (short code).gif
MPO 125 - SHARP EL-5150 (short code).gif (2.34 Kio) Vu 335 fois
L'avantage est que ce code est qu'il ne fait que 37 octets (donc 12 pour le nom et la réservation).

(°) Hommage à Niklaus Wirth décédé au tout début de cette année.
par C.Ret
14 janv. 2024 16:39
Forum : Silicium
Sujet : Décès de Niklaus Wirth
Réponses : 11
Vues : 789

Re: Décès de Niklaus Wirth

Merci d'avoir fait remonter cette triste nouvelle.
Malheureusement, les média n'en ont pas parlé. C'est bien triste, que quelque soit leur niveau et leur implication dans l'histoire de l'Informatique, les programmeurs disparaissent sans faire de bruit…

Aller à la recherche avancée