MPO n°117 : le problème du tourneur

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
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: MPO n°117 : le problème du tourneur

Message par Schraf »

Merci @Gilles59 de nous parler régulièrement du newRPL, finalement je viens de me lancer et de transformer tout à l'heure une de mes HP 50g. Une fois que l'on a compris le coup des menus avec les lettres de A à L + menu principal touche P, que HIST c'est STO, que ALPHA permet de bloquer la saisie en majuscules puis minuscules, que l'autocomplétion se fait par ALPHA+Flèches bas/haut pour le choix et ALPHA+Flèche droite pour valider, on arrive à taper les programmes assez facilement. J'ai testé avec celui que j'ai proposé (solution au hasard) et ça marche bien :

Ca marche !
Ca marche !
newRPL.jpg (31.39 Kio) Vu 1811 fois
Maintenant, je n'ai absolument pas compris comment on pouvait taper un programme avec le bloc-note et le tester dans le simulateur, ni comment connecter une vraie machine en USB sur le PC.

J'ai regardé les infos sur ce site, je ne sais pas si c'est bien le bon ?
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: MPO n°117 : le problème du tourneur

Message par Gilles59 »

Pour le NewRPL le lien que tu cites est le bon avec celui-ci en plus :
https://www.hpmuseum.org/forum/thread-14562.html
Claudio qui gère le newRPL est très réactif sur ce lien si question.

Pour les échanges entre la HP50g et le PC je fais comme ça :
1/ Sur PC installer "newRPL Desktop for Windows" (voir dans lien ci-dessus)
2/ La connexion avec la HP50g est hyper simple : la brancher sur le port USB du PC et coté newRPL Desktop cliquez sur Hardware/USBConnexion et logiquement le HP50g apparait
3/ Le transfert entre NotePad++ et le newRPL desktop se fait par un copier-coller du code avec le menu coté PC Stack/Paste to level1 (ou Paste and compile). Le newRPL utilise un codage UTF donc plus de soucis sur les caractères spéciaux qui sont compatibles Windows (ou Linux)
4/ La commande USBSEND envoie l'objet qui au niveau 1 de la pile vers la HP50g (en inversement)

Voilà en gros. Je vais rouvrir un sujet spécifique newRPL. Ce qui est compliqué au début c'est l'interface très destabilisante versus RPL HP. Il a un certains nombre de raccourcis clavier à retenir dont certains géniaux (mais si) pour le format des nombres par exemple : voir https://newrpl.wiki.hpgcc3.org/doku.php ... x:bindings
La gestion des unités est extra aussi...
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Avatar du membre
Schraf
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 499
Enregistré le : 05 mars 2020 20:45
Contact :

Re: MPO n°117 : le problème du tourneur

Message par Schraf »

@Gilles59 : Ma proposition pour ton LDROP :

Code : Tout sélectionner

«
  1 + :A=S1 DROP OBJ→ :POP.A.#1 1 - →LIST
»
On met la liste L et le rang n sur la pile et on lance LDROP :

Code : Tout sélectionner

2 | {4 7 9 10}
1 | 3
LDROP
1 | {4 9 10}
Le principe est d'ajouter 1 à n car OBJ→ ajoute la taille de la liste donc un élément de plus. On mémorise cette valeur dans A et POP.A.#1 supprime l'élément au niveau A de la pile, on diminue de 1 la taille et on recrée la liste.
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: MPO n°117 : le problème du tourneur

Message par Gilles59 »

Schraf a écrit : 20 mai 2023 09:41 @Gilles59 : Ma proposition pour ton LDROP :

Code : Tout sélectionner

«
  1 + :A=S1 DROP OBJ→ :POP.A.#1 1 - →LIST
»
(...)
Ah oui, le NewRPL contient aussi un pseudo assembleur intégré :O J'ai jamais testé encore ! A voir si c'est plus rapide ? vais tester.
Edit : plus compact mais pas plus rapide dans ce cas. Le traitement des listes est probablement ce qui a accéléré le plus en NewRPL. Pas fait de test précis mais du genre 100 à 200 fois plus vite.

A propos de ce MPO, un programme récursif serait probablement bien plus compact en évitant les 4 boucles imbriquées.
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: MPO n°117 : le problème du tourneur

Message par C.Ret »

Wowww..

C'est impressionnant la brutalité de ces machines et surtout du newRPL. On pose le problème en terme simples (point de vue que quelqu'un qui maitrise listes, arrays et autre structures de données classiques) et celles-ci creusent en quelques dizaines de secondes des galeries jusqu'à l'autre bout de cet espace à quatre dimensions.
Car c'est un peu là le souci, j'hésite à lancer mon HP-41C dans une analyse linéaire de cette dimension.

Par contre, cette même HP-41C a trouvée une solution exacte pour faire un filetage de 48 tpi sur la machine de Michel.
Le problème est, qu'encore une fois, Michel se lance dans des taches ardues sans avoir au préalable réuni le matériel nécessaire.

Ce matin Jean-Louis est passé pour lui filler l'engrenage de 55 dents. Il a bien rit lorsqu'il a appris que Michel s'est lançé dans un filetage aux normes anglaises sans avoir d'engrenage de 127 dents.

Dans la profession, tout le monde sait que sur nos machines, il faut, pour réaliser des travaux en inches, une roue de 127 dents.

Bon, en y réfléchissant, Jean-Louis c'est rendu compte que ce n'était pas possible sur le tour de Michel, il faut le modèle au-dessus qui est plus grand et permet d'adapter une plus grande game d'engrenages:

Image


Et oui, je vous laisse trouver d'où vient l'idée de cet engrenage de 127 dents lorsque l'on convertir des inches en mm (1 in = 25.4 mm).
Ce qui laisse entre voir le principe fondamental de l''algorithme que je vous conquocte pour la fin de ce week-end. :)

Vérifions:
127 A 60 B 10 C 60 D 48 SHIFT-E J affiche bien ERR= 0.00 %

Au fait, j'y pense, ces brutes en Delphi et en newRPL, ont-elles une fonction PPCM ?
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.
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: MPO n°117 : le problème du tourneur

Message par Gilles59 »

On attends cela avec impatience C.ret ;D

J'ai en tête un algo bien plus simple qu'une recherche brute, mais c'est le % de tolérence qui me bloque.

Pour tout dire, si j'étais Michel, j'essairai de tranformer les tpi en pas metrique et verrait ce qui est le plus proche sur le tableau et calculerai le % d'err, mais j'ai un peu la flemme de reféchir ce jour ;D Comme disait ma prof de physique, lire et relire l'énoncé est la clé.

EDIT : J'ai vu ton indice c.ret, c'est mon idée aussi mais quid du % d'erreur ?
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: MPO n°117 : le problème du tourneur

Message par C.Ret »

L'erreur provient uniquement des dents manquantes ou surnuméraires !

Prenons un exemple métrique, c'est plus simple à formaliser. Par exemple p = 1.375 mm

On sait qu'il existe au moins une configuration parfaite permettant de travailler à ce pas : Image.

Malheureusement, nous n'avons pas d'engrenage de a dents.
On le remplace par un engrenage proche ayant α dents avec α = a - n :Image

C'est exemple, où il faut un engrenage de 55 dents que Michel remplace par les plus proches qu'il possède c'est-à-dire 54 ou 57 dents.

L'erreur est donc : Image


soit Image



Exemple numérique:
Pour p = 1.375, il faudrait installer le montage suivant A=40, B=60, C=55 et D=40 dents.
Mais Michel essaye avec son engrenage de 57 dents : l'erreur est alors de +3.64% c'est à dire deux dents de trop sur une roue attendue de cinquante-cinq dents.
Avec son engrenage de 54 dents, l'erreur est plus faible et de sens opposée soit -1.82% c'est à dire manque une dent sur cinquante-cinq.

Si plusieurs engrenages ne sont pas correct, les dents manquantes ou en trop s'accumulent multiplicativement.
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.
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: MPO n°117 : le problème du tourneur

Message par FLISZT »

@C.Ret
127 dents ?
Même à cette heure déjà avancée de la nuit (ou peut-être grâce à… ), je peux dire que 254 / 2 = 127 sans en dire davantage. :wink:

Mon défunt père a eu l'occasion de se servir d'un tour (et même d'une fraiseuse, il me semble). Mais il ne devait rien y avoir de numérique à sa dispostion ; je gage toutefois que "tout cela" l'aurait bien intéressé.
Je doute qu'il ait eu l'occasion d'utiliser des unités de mesure impériales, mais, même à la retraite, il savait qu'un pouce faisait 25,4 mm.

Grâce à ce MPO, je viens (enfin) d'embarquer, sur ma 50g Blue, la bibliothèque ListExt sagement stockée sur mon PC depuis des lustres (même la ver. 1.21 ! ). La 50g Black sera "livrée" via IR. C'est beau le progrès !

Sauf erreur sur le produit, cette bibliothèque n°1423 devrait m'être utile - en m'évitant de réinventer la roue - pour ce MPO très mécanique.

À suivre… peut-être.
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: MPO n°117 : le problème du tourneur

Message par FLISZT »

1) Ma 50g Black a pu être ravitaillée en Listext via IF, mais il a fallu ne nombreuses tentatives… bcp de turbulences !!

2) Ceci doit permettre d'obtenir les A(4,20) = (8 ! / (8 − 4)! ) = 116 280 arrangements possibles :

Code : Tout sélectionner

<<
	{ 20 20 35 36 ... 70 80 80 }
	4
	<< >>
	DOPERM
>>
Sauf que…

… avec une liste de seulement 8 éléments, après le prog suivant,

Code : Tout sélectionner

<<
	{ 1 2 3 4 5 6 7 8 }
	4
	<< >>
	DOPERM
>>
on obtient une liste contenant 1 680 sous-listes (de 4 élts), laquelle pèse 25 205 octets.

Donc avec une liste contenant 69,2 fois (116 280 / 1 680) plus de sous-listes de 4 élts, il faudrait une RAM de plus 1 744 546 octets… :mrgreen:
Les plus de 233 300 octets encore disponibles ne suffisent pas.

Donc bis, soit Martin (un intérimaire) essaye (et essaye encore… ) une à une différentes listes jusqu'à ce qu'il en obtienne (enfin) une qui satisfait aux exigences du problème, soit il demande au patron du matériel plus performant.

Si l'on veut tester toutes les possibiltés (le but étant de trouver toutes les combinaisons fonctionnelles), il ne reste pas d'autre solution (?) que de faire des FOR imbriqués (4), ce qui est assez lourd, afin de tester une par une les listes de 4 engrenages.

La 1ère boucle ira de 1 à 20, la seconde de 1 à 19, de 1 à 18 pour la 3ème et de 1 à 17 pour la dernière.
On a bien : 20x19x18x17 = 116 280.

Je vais donc modifier mon programme dans ce sens (pas mal de boulot)… mais pas dans l'immédiat.
La manière dont je fais les tests est très RPL et (très) bien optimisée, quasiment géniale… quasiment :wink:
(sur une hp-28, ça fonctionne aussi)

Il devrait y avoir une suite à cette étrange affaire d'oranges électro-mécaniques qui seraient parfois bleues ! 8O

Image

:lol:
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
Gilles59
Fonctionne à 2400 bauds
Fonctionne à 2400 bauds
Messages : 1602
Enregistré le : 27 oct. 2010 20:46

Re: MPO n°117 : le problème du tourneur

Message par Gilles59 »

FLISZT a écrit : 21 mai 2023 15:44 (…)Ceci doit permettre d'obtenir les A(4,20) = (8 ! / (8 − 4)! ) = 116 280 arrangements possibles :

Code : Tout sélectionner

<<
	{ 20 20 35 36 ... 70 80 80 }
	4
	<< >>
	DOPERM
>>
Sauf que…

… avec une liste de seulement 8 éléments, après le prog suivant on obtient une liste contenant 1 680 sous-listes (de 4 élts), laquelle pèse 25 205 octets.

Donc avec une liste contenant 69,2 fois (116 280 / 1 680) plus de sous-listes de 4 élts, il faudrait une RAM de plus 1 744 546 octets… :mrgreen:
Les plus de 233 300 octets encore disponibles ne suffisent pas. (…)
Il suffit de filtrer les sous-listes générées « au vol ». En fait le pb n’est pas la mémoire mais la vitesse.

Code : Tout sélectionner

 <<
	{ 1 2 3 4 5 6 7 8 }
	4
	<< filtrer ici ce qu’on veut garder dans la liste finale; le filtre se fait "au vol" (avant de générer tous les résulats)  >>
	DOPERM
>>
C’est que je fais pour ce MPO dans un prog posté au dessus. Mais ça met 20mn avec l’émulateur et est inexploitable sur une hp50g

Par exemple avec DOCOMB qui est comme DOPERM mais sans permutation le programme suivant donne rapidement toutes les sous listes de 4 éléments qui donnent un total de 12 :

Code : Tout sélectionner

<<
	{ 1 2 3 4 5 6 7 8 }
	4
	<< IF DUP LSUM 12 <> THEN DROP END >>
	DOCOMB 
>>

Resultat : { { 1 2 3 6 } { 1 2 4 5 } }
EDIT : LSUM est équivalent de ∑LIST et corrige le bug quand il n'y a qu'un élément dans la liste. Plus rapide aussi.

Le même programme avec DOPERM plutôt que DOCOMB donne :

Code : Tout sélectionner

{ { 1 2 3 6 } { 1 2 6 3 } { 1 3 2 6 } { 1 3 6 2 } { 1 6 2 3 } { 1 6 3 2 } { 2 1 3 6 } { 2 1 6 3 } { 2 3 1 6 } { 2 3 6 1 } { 2 6 1 3 } { 2 6 3 1 } { 3 1 2 6 } { 3 1 6 2 } { 3 2 1 6 } { 3 2 6 1 } { 3 6 1 2 } { 3 6 2 1 } { 6 1 2 3 } { 6 1 3 2 } { 6 2 1 3 } { 6 2 3 1 } { 6 3 1 2 } { 6 3 2 1 } { 1 2 4 5 } { 1 2 5 4 } { 1 4 2 5 } { 1 4 5 2 } { 1 5 2 4 } { 1 5 4 2 } { 2 1 4 5 } { 2 1 5 4 } { 2 4 1 5 } { 2 4 5 1 } { 2 5 1 4 } { 2 5 4 1 } { 4 1 2 5 } { 4 1 5 2 } { 4 2 1 5 } { 4 2 5 1 } { 4 5 1 2 } { 4 5 2 1 } { 5 1 2 4 } { 5 1 4 2 } { 5 2 1 4 } { 5 2 4 1 } { 5 4 1 2 } { 5 4 2 1 } }
Modifié en dernier par Gilles59 le 21 mai 2023 20:03, modifié 2 fois.
Casio FX-502P /602P / 603P / FX180P+ / FX4000P / TI57 / TI66 / TI74 Basicalc / TI95 Procalc / HP12C / HP15C LE / DM41L / HP 30B / HP39GII / HP 48SX USA / 49G / 49g+ / 50G / 50G NewRPL / HP Prime / Oric 1 / Amstrad CPC 6128+ CM14 et MM12 / Alice 32
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: MPO n°117 : le problème du tourneur

Message par C.Ret »

Ah! Ah! je vois que ça bosse...


Alors que certains combinent les engrenages quatre à quatre et filtrent ou non des oranges bleues,...
Image
... j'ai décidé de couper la lyre en deux comme une poire.

L'idée est d'avoir un nombre réduit de combinaisons précalculés et ordonnés afin de rendre la détermination digérable par les machines les plus rudimentaires.

En rassemblant deux à deux les 19 engrenages de Michel et les 3 engrenages apportés par Jean-Louis, je ne trouve qu'une centaine de rapports et leurs inverses. J'espère pouvoir mémoriser tout cela dans une machine facilement utilisable à l'atelier comme une HP-41C, un SHARP PC-1211 ou une CASIO fx-602p.

L'idée d'avoir ces rapports précalculés (les inverses sont déduits par le calcul) et ordonnés dans la mémoire de la machine, devrait rendre la recherche des combinaisons bien plus efficace en temps comme en mémoire nécessaire. Sans compter que tout cela sera facilement adaptable à des tours avec montage de 2, 4, 6 ou plus d'engrenages.
MPO117  Enumération Réductions et Démultiplications.gif
MPO117 Enumération Réductions et Démultiplications.gif (11.7 Kio) Vu 1673 fois
Les chiffres verts indiquent la multiplicité des engrenages (1ère ligne) ou la multiplicité des combinaisons (tableau).
Par exemple il y a cinq combinaisons pour obtenir p=0.5 (respectivement q=2.0) à partir des engrenages donnés : p = 10/20 = 20/40 = 30/60 = 35/70 = 40/80 = .5 (respectivement q= 20/10 = 40/20 = 60/30 = 70/35 = 80/40 = 2. )

Le programme se composera de deux parties. La première construit la base de données au fur et à mesure de l'ajout des engrenages disponibles. La seconde liste les montage permettant d'obtenir un pas donné par l'utilisateur (en mm ou en tpi). Si aucun pas exact ne peut être obtenu avec les engrenages disponibles, les meilleures approximations sont affichées avec l'indication de l'erreur relative.
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.
FLISZT
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 655
Enregistré le : 09 mars 2022 19:14

Re: MPO n°117 : le problème du tourneur

Message par FLISZT »

@Gilles59

Syndrome du manuel lu trop rapidement, j'ai fait plusieurs erreurs dans l'utilisation de la fonction DOPERM, erreurs que j'ai découvertes une à une…
Néanmoins, du fait d'une de ces erreurs, il y avait bien un problème de taille mémoire (saturation de la pile "infinie" ).

Reste le problème du temps de calcul qui semble insoluble (avec mon matériel) à moins, comme j'ai cru le comprendre, qu'il y ait (au moins) une solution mathématique découverte par C.Ret qui accélère le temps de calcul du fait d'un meilleur algo.

(@C.Ret, j'aime bien le nouvel hyper-multilignes LED de ta hp-28S même si je l'aurais préféré ambre plutôt que vert ! :D Mais c'est quoi donc cet écran ?! )

Pour revenir à notre tour :mrgreen:, je crois que je vais me contenter d'une version qui, elle-même, se contentera de donner son "verdict" après la saisie d'une combinaison de quatre engrenages. Après tout, un bon professionnel développe des intuitions ! Xiao Yun (délocalisation oblige) ne devrait donc pas avoir besoin de tester des centaines de combinaisons avant d'en trouver une fonctionnelle.
Bruno
Sanyo CZ-0124 ? TI-57 ? HP-15C ? Canon X-07 + XP-140 Monitor Card ? HP-41CX ? HP-28S ? HP-50G ? HP-50G
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3405
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: MPO n°117 : le problème du tourneur

Message par C.Ret »

FLISZT a écrit : 23 mai 2023 20:09@C.Ret, j'aime bien le nouvel hyper-multilignes LED de ta hp-28S même si je l'aurais préféré ambre plutôt que vert ! :D Mais c'est quoi donc cet écran ?! )
C'est pas ni une HP ( c'est un C= ) ni une 28 ( c'est un 128 ) ni une S, mais bel est bien l'affichage 80 col. et les 16 couleurs d'un modèle D parmi les plus aboutis des CBM 8 bits.

Image
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 »