La 34S ne peut pas gagner parce-que un pas est toujours deux octets.Hobiecat a écrit :Exact ! Donc la version optimale reste celle de la 15C, en incluant l'amélioration de Marcus :
Misez p'tit, Optimisez - Le retour
Modérateur : Politburo
- Marcus von Cube
- Fonctionne à 1200 bauds
- Messages : 914
- Enregistré le : 20 avr. 2006 13:48
- Localisation : Wehrheim, Allemagne
- Contact :
Re: Misez p'tit, Optimisez - Le retour
Marcus von Cube
Wehrheim, Allemagne
http://www.mvcsys.de
CASsette IO utilities
BASIC comparison sheet
WP 34S
Wehrheim, Allemagne
http://www.mvcsys.de
CASsette IO utilities
BASIC comparison sheet
WP 34S
- C.Ret
- 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
Sur HP-50g.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
La valeur x est sur le premier niveau de la pile :
Code : Tout sélectionner
[ 3 4 1 9 ] SWAP PEVAL
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.
- Hobiecat
- Fonctionne à 9600 bauds
- Messages : 3641
- Enregistré le : 06 sept. 2011 14:57
- Localisation : Normandie
Re: Misez p'tit, Optimisez - Le retour
Que fait cette fonction PEVAL exactement ?C.Ret a écrit :...PEVAL...
Joli en tout cas !
- Marcus von Cube
- Fonctionne à 1200 bauds
- Messages : 914
- Enregistré le : 20 avr. 2006 13:48
- Localisation : Wehrheim, Allemagne
- Contact :
Re: Misez p'tit, Optimisez - Le retour
PEVAL: Évaluation d'un polynôme.
Marcus von Cube
Wehrheim, Allemagne
http://www.mvcsys.de
CASsette IO utilities
BASIC comparison sheet
WP 34S
Wehrheim, Allemagne
http://www.mvcsys.de
CASsette IO utilities
BASIC comparison sheet
WP 34S
- Hobiecat
- Fonctionne à 9600 bauds
- Messages : 3641
- Enregistré le : 06 sept. 2011 14:57
- Localisation : Normandie
Re: Misez p'tit, Optimisez - Le retour
Oui, je viens de regarder... existe depuis la 48G au moins d'ailleurs !
Re: Misez p'tit, Optimisez - Le retour
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
- Hobiecat
- Fonctionne à 9600 bauds
- Messages : 3641
- Enregistré le : 06 sept. 2011 14:57
- Localisation : Normandie
Re: Misez p'tit, Optimisez - Le retour
On va le garder pour "misez p'tit optimisez n°2" celui-ci ! Ça risque d'être intéressant ...C.Ret a écrit :4096.x^13 - 13312.x^11 - 16640.x^9 - 9984.x^7 + 2912.x^5 - 384.x^3 + 13.x
- C.Ret
- 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
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) !
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.
- gege
- Fonctionne à 14400 bauds
- Messages : 7147
- Enregistré le : 31 janv. 2008 14:24
- Localisation : Banlieue Paârisienne
- Contact :
Re: Misez p'tit, Optimisez - Le retour
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 !!!!
G.E.
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 !!!!
G.E.
- C.Ret
- 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
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 ?
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.
- gege
- Fonctionne à 14400 bauds
- Messages : 7147
- Enregistré le : 31 janv. 2008 14:24
- Localisation : Banlieue Paârisienne
- Contact :
Re: Misez p'tit, Optimisez - Le retour
C.Ret a écrit :... et dans quel sens il faudra la lire ?
- dprtl
- Fonctionne à 1200 bauds
- Messages : 463
- Enregistré le : 27 janv. 2013 00:26
- Localisation : Strasbourg
- Contact :
Re: Misez p'tit, Optimisez - Le retour
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" :
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 :
alpha = -1.95078
beta = 0.308725 + 1.20105i
gamma = 0.308725 - 1.20105i
Code : Tout sélectionner
Y=3*X^3+4*X^2+X+9[IN]
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]
beta = 0.308725 + 1.20105i
gamma = 0.308725 - 1.20105i
Modifié en dernier par dprtl le 01 janv. 2014 18:50, modifié 1 fois.
- C.Ret
- 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
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.
- C.Ret
- 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
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
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 ! .
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.
Re: Misez p'tit, Optimisez - Le retour
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 :
Sur Ti-80/81/83/84... :
Hors concours (APL) :
Sur HP-50g :
Code : Tout sélectionner
<< [3 4 1 9] SWAP PEVAL >> 'F STO
5 F donne 489
45 F donne 281529
etc.
Hors concours (APL) :
Code : Tout sélectionner
{⍵⊥3 4 1 9} 5
489