Misez p'tit, Optimisez - Le retour

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
Marcus von Cube
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 914
Enregistré le : 20 avr. 2006 13:48
Localisation : Wehrheim, Allemagne
Contact :

Re: Misez p'tit, Optimisez - Le retour

Message par Marcus von Cube »

Hobiecat a écrit :Exact ! Donc la version optimale reste celle de la 15C, en incluant l'amélioration de Marcus :
La 34S ne peut pas gagner parce-que un pas est toujours deux octets. ;-)
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3419
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit, Optimisez - Le retour

Message par C.Ret »

Hobiecat a écrit : Pour se remettre en jambes, on va partir d'un truc de base :
- on suppose que x est une valeur à l'affichage
- calculer 3x^3 + 4x^2 + x + 9 en le moins de pas possible
Sur HP-50g.
La valeur x est sur le premier niveau de la pile :

Code : Tout sélectionner

[ 3 4 1 9 ] SWAP PEVAL
Donc 8 pas ou "instructions".
Mais je ne sais pas si c'est rentable si charo compte les octets, l'Hp-50g c'est pas deux qu'il faut compter par "instruction", c'est bien plus !!!
Je sens que l'on va encore dire que c'est de la triche !



P.S.: Challenge annexe : même question mais cette fois avec le polynôme :
4096.x^13 - 13312.x^11 + 16640.x^9 - 9984.x^7 + 2912.x^5 - 384.x^3 + 13.x

Je ne veux pas vous décourager, mais sur une HP-49/50g, c'est pas plus de trois ou quatre instructions ! - Toujours avec la valeur de x sur le premier niveau de la pile (et donc à l'affichage) - parce qu'avec un 'x' formel, c'est deux instructions.

Mais si vos petites HP sont bien ... malgré tout.


ATTENTION : edit signe du troisième terme est faux !
Modifié en dernier par C.Ret le 06 oct. 2011 20:59, 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.
Avatar du membre
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3641
Enregistré le : 06 sept. 2011 14:57
Localisation : Normandie

Re: Misez p'tit, Optimisez - Le retour

Message par Hobiecat »

C.Ret a écrit :...PEVAL...
Que fait cette fonction PEVAL exactement ?
Joli en tout cas !
Avatar du membre
Marcus von Cube
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 914
Enregistré le : 20 avr. 2006 13:48
Localisation : Wehrheim, Allemagne
Contact :

Re: Misez p'tit, Optimisez - Le retour

Message par Marcus von Cube »

PEVAL: Évaluation d'un polynôme.
Avatar du membre
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3641
Enregistré le : 06 sept. 2011 14:57
Localisation : Normandie

Re: Misez p'tit, Optimisez - Le retour

Message par Hobiecat »

Oui, je viens de regarder... existe depuis la 48G au moins d'ailleurs !
Avatar du membre
febed01
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 412
Enregistré le : 21 juin 2009 22:13

Re: Misez p'tit, Optimisez - Le retour

Message par febed01 »

Ok, donc là je n'ai pas ma 50 sous la main mais j'imagine que dans ces conditions :

Code : Tout sélectionner

[ 4096 0 -13312 0 -16640 0 -9984 0 2912 0 -384 0 13 0 ] SWAP PEVAL
10 PRINT "One program a day keeps Alzheimer away..." : GOTO 10
Avatar du membre
Hobiecat
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3641
Enregistré le : 06 sept. 2011 14:57
Localisation : Normandie

Re: Misez p'tit, Optimisez - Le retour

Message par Hobiecat »

C.Ret a écrit :4096.x^13 - 13312.x^11 - 16640.x^9 - 9984.x^7 + 2912.x^5 - 384.x^3 + 13.x
On va le garder pour "misez p'tit optimisez n°2" celui-ci ! :wink: Ça risque d'être intéressant ...
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3419
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit, Optimisez - Le retour

Message par C.Ret »

Elle permet de calculer la valeur d'un polynôme en un point donné.

Pour cela, elle utilise deux arguments :
- la liste des coefficients de ce polynôme (dans l'ordre décroissant des degrés - c'est à dire ordre décroissant des puissance de x) sous forme d'un vecteur.
Il y a toute une famille d'instructions RPL qui depuis les HP-48 permettent d'exprimer les polynôme sous forme de vecteur de cette façon. LE premeir terme étant le coeficient du degré le plus élevé et le dernier le coefficient constant "sans x" du polynôme. On peut de cette façon travailler (intégré, dériver,
- la valeur du point .

AInsi :
[ 2 0 -1 ] 3 PEVAL revient à évaluer le polynôme P(x)=2.x²-1 pour x=3.
On obtient directemetn la valeur P(3)=17.

A febed01,
Bien vu. J'ai plus court, beacoup plus court (tout au moins pour une HP-50g) mais je laisse quelques jours pour laisser à chacun le temps de chercher une astuce.
Car même si je doute que l'on puisse le faire en 4 pas sur une HP-15c, il doit y avoir un moyen de faire en moins de pas (ou d'instructions) !
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
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7147
Enregistré le : 31 janv. 2008 14:24
Localisation : Banlieue Paârisienne
Contact :

Re: Misez p'tit, Optimisez - Le retour

Message par gege »

OK, mais j'ai toujours trouvé cette façon de représenter les polynômes particulièrement maladroite.
Pour calculer avec les coefficients des degrés en ordre décroissant, il faut sans arrêt regarder la longueur du tableau.
Impossible de faire des sommes ou différences simplement.

Quand l'inconnue est "grande" ok, ça fait un peu sens, mais pour les développements limités où la variable est petite, on a envie de simplement tronquer tout à la même longueur lorsqu'on veut ajouter ou multiplier etc.
Exemple : sin(x) = x - x^3/6 + x^5/210 - x^7/5040 + ...
cos(x) = 1 -x^2/2 + x^4/24 - ...

J'écris dans l'ordre 'naturel' : s = [ 0, 1, 0, -1/6, 0, 1/210, 0, -1/5040 ] et c = [ 1, 0, -1/2, 0, 1/24 ]
et pour trouver le développement limité de sin(x) + 10 * cos(x) il suffit de tronquer bestialement au plus court des deux, on fait alors :
[ 0, 1, 0, -1/6, 0 ] + 10 * [ 1, 0, -1/2, 0, 1/24 ] et zou on trouve [ 10, 1, -5, -1/6, 5/12 ]
presque sans réfléchir !

Je ne vous parle même pas des produits ou compositions de polynômes qui sont infiniment plus faciles à coder si les coefficients sont dans l'ordre des puissances croissantes...

Ca y est la coupe est pleine, je rentre, je peins une banderole et je fonce défiler sur la place de la Concorde !!!! :twisted: :twisted:
G.E.
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3419
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit, Optimisez - Le retour

Message par C.Ret »

Je prends le prochain TGV pour la capitale et je serais à l'autre bout de la banderole !

Je trouve aussi que l'ordre le plus logique est de commencer par la constante et ensuite d'avoir les coefficients de degré plus élevé. Cela n'a que des avantages. J'imagine que la norme est inverse sur les HP car cette représentation semble être celle utilisée dans les lycées et universités au U.S.A.

Mais sion, je suis à 100% d'accord.
Pour additionner deux polynômes c'est plus simple, on additionne les termes dans l'ordre jusqu'à épuisement du plus petit et ensuite on ajoute ceux de l'autre.

Pareil pour les développements limités, dérivation, intégration... je ne sais pas pourquoi cet ordre perdure chez nos voisin aoutre-atlantique.

C'est exactement comme les nombres binaires. Pourquoi mettent-ils le bit 1^0 à droite ???
Et nous, pourquoi le chiffre des milliers d'euros est-il à gauche de celui des centaines ???

P.S.: Au fait il y aura quoi d'écrit sur la banderole et dans quel sens il faudra la lire ?
Modifié en dernier par C.Ret le 07 oct. 2011 09:48, 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
gege
Fonctionne à 14400 bauds
Fonctionne à 14400 bauds
Messages : 7147
Enregistré le : 31 janv. 2008 14:24
Localisation : Banlieue Paârisienne
Contact :

Re: Misez p'tit, Optimisez - Le retour

Message par gege »

C.Ret a écrit :... et dans quel sens il faudra la lire ?
:D
Avatar du membre
dprtl
Fonctionne à 1200 bauds
Fonctionne à 1200 bauds
Messages : 463
Enregistré le : 27 janv. 2013 00:26
Localisation : Strasbourg
Contact :

Re: Misez p'tit, Optimisez - Le retour

Message par dprtl »

Si on fait le focus sur le critère de la simplicité, il me semble que la Casio FX-850P est très bien placée pour répondre à ce MPO ; on pourrait même dire "sans programmation" :

Code : Tout sélectionner

Y=3*X^3+4*X^2+X+9[IN]
Bon ok, ça fait 18 touches, mais c'est garanti sans aucun noeud au cerveau !

D'autre part (hors sujet), pour trouver les racines réelles et complexes de ce polynôme :

Code : Tout sélectionner

5060[LIB]
3[EXE]
4[EXE]
1[EXE]
9[EXE]
alpha = -1.95078
beta = 0.308725 + 1.20105i
gamma = 0.308725 - 1.20105i
Modifié en dernier par dprtl le 01 janv. 2014 18:50, modifié 1 fois.
Avatar du membre
C.Ret
Fonctionne à 9600 bauds
Fonctionne à 9600 bauds
Messages : 3419
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit, Optimisez - Le retour

Message par C.Ret »

oupps !
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 : 3419
Enregistré le : 31 mai 2008 23:43
Localisation : N 49°22 E 6°10

Re: Misez p'tit, Optimisez - Le retour

Message par C.Ret »

Hobiecat a écrit : 06 oct. 2011 11:35
zpalm a écrit :RPN, en 13 pas en n'utilisant que la pile
Pareil... qui va faire mieux que 13 ???
Et on attend les TI !! :wink:
Elles arrivent, enfin presque car pas trop tôt, ni très court :

Sur une TI-58c munie d'un module bibliothèque de base (Solid State Master Library), qui je crois était livré avec chaque machine TI58/Ti59, on peut faire en un seul programme qui fera alors 14 pas.

Préparation:
RST 2nd CMs 2nd CP Sort de tout sous-programme ou module, efface les registres et la mémoire programme
LRN Début saisie du programme de calcul de P(x)

Code : Tout sélectionner

000 03                3
001 42 04            STO 04     Initialise degré du polynôme 
003 42 08            STO 08     Puis des autres registres qui correspondent aux coefficients 
005 33               x^2 
006 42 05            STO 05
008 04                4
009 42 07            STO 07
011 01                1
012 42 06            STO 06
014 91               R/S
LRN

Utilisation:
Avant le premier calcul de P(x) pressez RST R/S afin d'initialiser la TI-58C / Ti-59 qui affiche 1.
Puis le premier calcul de P(x), il convient de pressez 2nd Pgm 7 C afin d'activer le programme du module et afficher P(x).
Les calculs suivants s'obtiendront simplement en saisissant x et en pressant la touche utilisateur C.

Exemple:
RST R/S affiche 1
5 2nd Pgm 7 C affiche 489.
45 C affiche 281529.
-570 C affiche -5542279961.

Alternativement, on peut aussi n'utiliser que le module directement:
Initialiser le polynôme:
Saisir son degré 3 puis pressez 2nd Pgm 7 A
Puis saisir ses coefficients dans l'ordre des degrés croissants - voilà qui va faire plaisir à gégé - j'espère qu'il se souvient où il a mis sa banderole ! :D.
Saisir 0 puis pressez sur B
Saisir successivement 9 R/S 1 R/S 4 R/S 3 R/S
Calculer les P(x):
5 C affiche 489.
45 C affiche 281529.
-570 C affiche -5542279961.
etc...
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 - Le retour

Message par Schraf »

A part Hörner ou PEVAL, je ne vois pas du tout ton astuce @C.Ret :( . Est-ce lié à ce polynôme en particulier, mystère !

Sur HP-50g :

Code : Tout sélectionner

<< [3 4 1 9] SWAP PEVAL >> 'F STO
 
 5 F donne 489
 45 F donne 281529
 etc.
Sur Ti-80/81/83/84... :
Rien d'original
Rien d'original
Prog.png (9.22 Kio) Vu 3838 fois
Touche Entrée pour relancer automatiquement le programme
Touche Entrée pour relancer automatiquement le programme
Valeurs.png (9.96 Kio) Vu 3838 fois
Hors concours (APL) :oops: :

Code : Tout sélectionner

{⍵⊥3 4 1 9} 5
489
Répondre

Retourner vers « Tous les Pockets »