HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
Modérateur : Politburo
-
- Fonctionne à 300 bauds
- Messages : 109
- Enregistré le : 04 avr. 2021 16:09
- Localisation : 50.693165,4.573478
HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
Salut à tous,
N'ayant pas beaucoup de retour sur le forum HP je vous soumets cette énigme.
Je reteste une intégration numérique en RPL que je faisais il y a bien longtemps sur la 28S.
L'équation algébrique donnée pour l'intégration appelle un programme RPL, celui-ci utilisant la variable d'intégration spécifiée.
La 28S avale cela sans soucis, la 48G bloque. Bizarre bizarre.
Je colle le texte en anglais.
Je ne m'attends pas à un miracle, au moins j'en ferai suer l'un ou l'autre, et ça me ravit déjà.
I create an equation for the integration: EQ1. This equation calls a small RPL program ('F1') where the integration variable (here 'Y') is also used. I simplified the scenario here, but I had this problem in a much larger application.
The 28S does this very well, while the 48GX does not.
The 48GX does not want to understand that the 'Y' is the same as the Y for the integral.
If anyone can figure out why the 48GX can't do it...or show me how.
Rem1: on a Swissmicros DM42, I can carry out this scenario without problem. This machine is still wonderful.
Rem2: syntax on the 28S was different than the syntax on the 48GX
28S:
EQ1 : 'F1(Y^2)'
F1: << -> x 'x*Y' >> (x is a local variable)
the stack before the command:
3: 'EQ1'
2: {Y 0.5 1}
1: 0.001 (accuracy)
integral command : S
answer 28S:
2: 0.234 (integral)
1: 2.34E-4 (error)
48GX : (flag -3 Set : numerical result)
EQ1: 'F1(Y^2)'
F1: << -> x 'x*Y' >> (x is a local variable)
the stack before the command:
4: 0.500
3: 1.00
2: 'EQ1'
1: 'Y'
integral command : S
answer 48GX:
^Error:
Undefined Name
What's happening here ?
N'ayant pas beaucoup de retour sur le forum HP je vous soumets cette énigme.
Je reteste une intégration numérique en RPL que je faisais il y a bien longtemps sur la 28S.
L'équation algébrique donnée pour l'intégration appelle un programme RPL, celui-ci utilisant la variable d'intégration spécifiée.
La 28S avale cela sans soucis, la 48G bloque. Bizarre bizarre.
Je colle le texte en anglais.
Je ne m'attends pas à un miracle, au moins j'en ferai suer l'un ou l'autre, et ça me ravit déjà.
I create an equation for the integration: EQ1. This equation calls a small RPL program ('F1') where the integration variable (here 'Y') is also used. I simplified the scenario here, but I had this problem in a much larger application.
The 28S does this very well, while the 48GX does not.
The 48GX does not want to understand that the 'Y' is the same as the Y for the integral.
If anyone can figure out why the 48GX can't do it...or show me how.
Rem1: on a Swissmicros DM42, I can carry out this scenario without problem. This machine is still wonderful.
Rem2: syntax on the 28S was different than the syntax on the 48GX
28S:
EQ1 : 'F1(Y^2)'
F1: << -> x 'x*Y' >> (x is a local variable)
the stack before the command:
3: 'EQ1'
2: {Y 0.5 1}
1: 0.001 (accuracy)
integral command : S
answer 28S:
2: 0.234 (integral)
1: 2.34E-4 (error)
48GX : (flag -3 Set : numerical result)
EQ1: 'F1(Y^2)'
F1: << -> x 'x*Y' >> (x is a local variable)
the stack before the command:
4: 0.500
3: 1.00
2: 'EQ1'
1: 'Y'
integral command : S
answer 48GX:
^Error:
Undefined Name
What's happening here ?
- Hobiecat
- Fonctionne à 9600 bauds
- Messages : 3644
- Enregistré le : 06 sept. 2011 14:57
- Localisation : Normandie
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
Au lieu de passer par la pile, as-tu essayé de passer par le menu d'intégration, pour voir si l'erreur intervient lors de l'entrée d'un des paramètres ?
-
- Fonctionne à 300 bauds
- Messages : 109
- Enregistré le : 04 avr. 2021 16:09
- Localisation : 50.693165,4.573478
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
J'essaierai ce soir.
C'est vrai que j'aurais pu essayer (ou alors je ne m'en souviens pas).
Cette intégration particulière intervenait dans un ancien programme, plus large que cet exemple. Peu d'intérêt de passer par ce menu donc.
C'est vrai que j'aurais pu essayer (ou alors je ne m'en souviens pas).
Cette intégration particulière intervenait dans un ancien programme, plus large que cet exemple. Peu d'intérêt de passer par ce menu donc.
-
- Fonctionne à 300 bauds
- Messages : 109
- Enregistré le : 04 avr. 2021 16:09
- Localisation : 50.693165,4.573478
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
Je vérifie à l'instant sur l'émulateur iHP48.
Je ne vois pas de menu d'intégration pour les intégrales. Tout se déroule dans la pile.
- bernouilli92
- Fonctionne à 14400 bauds
- Messages : 5270
- Enregistré le : 21 nov. 2012 13:03
- Localisation : Ile de France
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
Cela ne fonctionne pas car la fonction F1 n'est pas définie si la variable globale Y n'existe pas.
Qu'est-ce que tu veux calculer comme intégrale ?
La fonction F1 prend en paramètre une valeur qu'elle met dans x et ensuite calcule x* Y mais la variable Y n'existe pas.
Qu'est-ce que tu veux calculer comme intégrale ?
La fonction F1 prend en paramètre une valeur qu'elle met dans x et ensuite calcule x* Y mais la variable Y n'existe pas.
HP, Casio, Sharp, Psion, quelques TI et divers autres
-
- Fonctionne à 300 bauds
- Messages : 109
- Enregistré le : 04 avr. 2021 16:09
- Localisation : 50.693165,4.573478
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
ok Bernouilli92, mais Y est pourtant une variable globale.
Sur la 28S, ça fonctionne. C'est un peu ça qui cloche
(réponse courte, je dois partir )
Par rapport à Y : vu qu'elle est définie comme la variable d'intégration, à chaque appel de EQ1 le système donne une valeur à 'Y'.
Je m'attends à ce que, comme sur la 28S, ce Y défini puisse être évalué dans EQ1 et dans le programme appelé F1.
Sur 50g : pour que cela fonctionne , il faut le flag :
03 Function -> Symb
Sur la 28S, ça fonctionne. C'est un peu ça qui cloche
(réponse courte, je dois partir )
Par rapport à Y : vu qu'elle est définie comme la variable d'intégration, à chaque appel de EQ1 le système donne une valeur à 'Y'.
Je m'attends à ce que, comme sur la 28S, ce Y défini puisse être évalué dans EQ1 et dans le programme appelé F1.
Sur 50g : pour que cela fonctionne , il faut le flag :
03 Function -> Symb
-
- Fonctionne à 300 bauds
- Messages : 109
- Enregistré le : 04 avr. 2021 16:09
- Localisation : 50.693165,4.573478
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
l’intégrale : elle fait partie d’un calcul de volume : étant donnée une mesure de liquide restant dans une citerne cylindrique horizontale dont les extrémités ont une forme de dôme sphérique, le calcul du volume de liquide. Ce sont les dômes en partie remplis qui compliquent le calculbernouilli92 a écrit : ↑22 mars 2023 15:03 Cela ne fonctionne pas car la fonction F1 n'est pas définie si la variable globale Y n'existe pas.
Qu'est-ce que tu veux calculer comme intégrale ?
La fonction F1 prend en paramètre une valeur qu'elle met dans x et ensuite calcule x* Y mais la variable Y n'existe pas.
-
- Fonctionne à 300 bauds
- Messages : 109
- Enregistré le : 04 avr. 2021 16:09
- Localisation : 50.693165,4.573478
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
l’intégrale : elle fait partie d’un calcul de volume : étant donnée une mesure de liquide restant dans une citerne cylindrique horizontale dont les extrémités ont une forme de dôme sphérique, le calcul du volume de liquide. Ce sont les dômes en partie remplis qui compliquent le calcul J’arrivais à une intégrale double. La première réalisée algébriquement, la seconde numériquement. Encore un prétexte pour ouvrir sa calculette et impressionner Mémé (sic)bernouilli92 a écrit : ↑22 mars 2023 15:03 Cela ne fonctionne pas car la fonction F1 n'est pas définie si la variable globale Y n'existe pas.
Qu'est-ce que tu veux calculer comme intégrale ?
La fonction F1 prend en paramètre une valeur qu'elle met dans x et ensuite calcule x* Y mais la variable Y n'existe pas.
- bernouilli92
- Fonctionne à 14400 bauds
- Messages : 5270
- Enregistré le : 21 nov. 2012 13:03
- Localisation : Ile de France
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
J'ai fait quelques essais. Cela fonctionne si à la place de mettre EQ1 sur la pile, tu mets le contenu de EQ1.
C'est très bizarre que cela ne fonctionne pas avec EQ1.
J'ai essayé en mettant ´F1(T^2)' dans EQ1 et en faisant une intégration suivant la variable T mais cela ne fonctionne pas non plus.
Édit : d'après la doc, le niveau 2 de la pile doit contenir l'expression qu'on veut intégrer et non le nom d'une variable contenant une expression.
C'est très bizarre que cela ne fonctionne pas avec EQ1.
J'ai essayé en mettant ´F1(T^2)' dans EQ1 et en faisant une intégration suivant la variable T mais cela ne fonctionne pas non plus.
Édit : d'après la doc, le niveau 2 de la pile doit contenir l'expression qu'on veut intégrer et non le nom d'une variable contenant une expression.
HP, Casio, Sharp, Psion, quelques TI et divers autres
- Hobiecat
- Fonctionne à 9600 bauds
- Messages : 3644
- Enregistré le : 06 sept. 2011 14:57
- Localisation : Normandie
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
C'est dans "flèche à droite" puis "symbolic", ensuite choisir "integrate" dans le menu qui est sur l'écran.
Il faut sélectionner "numeric" au lieu de "symbolic" dans le mode, puis entrer les divers paramètres.
-
- Fonctionne à 300 bauds
- Messages : 109
- Enregistré le : 04 avr. 2021 16:09
- Localisation : 50.693165,4.573478
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
merci pour ton support.bernouilli92 a écrit : ↑22 mars 2023 21:43 J'ai fait quelques essais. Cela fonctionne si à la place de mettre EQ1 sur la pile, tu mets le contenu de EQ1.
C'est très bizarre que cela ne fonctionne pas avec EQ1.
J'ai essayé en mettant ´F1(T^2)' dans EQ1 et en faisant une intégration suivant la variable T mais cela ne fonctionne pas non plus.
Édit : d'après la doc, le niveau 2 de la pile doit contenir l'expression qu'on veut intégrer et non le nom d'une variable contenant une expression.
Malheureusement sur ma 48GX, si je mets le contenu de EQ1 ('F1(Y^2)' donc) au niveau 2:, j'ai quand même l'erreur.
OK et merci pour le menu Symbolic, Hobbiecat. HP n'avait pas de Design Manager à l'époque (humour déformation professionnelle )
L'étape suivante, après la 48GX, sera de m'attaquer à la Prime et son curieux langage, mais j'ai un peu la flemme.
- bernouilli92
- Fonctionne à 14400 bauds
- Messages : 5270
- Enregistré le : 21 nov. 2012 13:03
- Localisation : Ile de France
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
Chez moi cela fonctionne en mettant une valeur dans le variable globale Y, le flag -3 a Set, et en mettant dans la pile :
4: 0,5
3: 1
2: 'F1(Y^2)'
1: 'Y'
Et en lançant ∫, j'obtiens 0,583333 (avec 2 dans Y)
Si le flag -3 est Clear, alors j'obtiens '∫(.5,1,F1(Y^2),Y)' qui me donne 0,583333 si j'utilise →NUM
F1 est définie comme cela :
« → x 'x*Y' »
J'ai testé sur 48sx et j'obtiens la même chose.
4: 0,5
3: 1
2: 'F1(Y^2)'
1: 'Y'
Et en lançant ∫, j'obtiens 0,583333 (avec 2 dans Y)
Si le flag -3 est Clear, alors j'obtiens '∫(.5,1,F1(Y^2),Y)' qui me donne 0,583333 si j'utilise →NUM
F1 est définie comme cela :
« → x 'x*Y' »
J'ai testé sur 48sx et j'obtiens la même chose.
HP, Casio, Sharp, Psion, quelques TI et divers autres
-
- Fonctionne à 300 bauds
- Messages : 109
- Enregistré le : 04 avr. 2021 16:09
- Localisation : 50.693165,4.573478
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
ahh, vu comme ça, oui c'est logique.bernouilli92 a écrit : ↑23 mars 2023 13:25 Chez moi cela fonctionne en mettant une valeur dans le variable globale Y, le flag -3 a Set, et en mettant dans la pile :
4: 0,5
3: 1
2: 'F1(Y^2)'
1: 'Y'
Et en lançant ∫, j'obtiens 0,583333 (avec 2 dans Y)
Si le flag -3 est Clear, alors j'obtiens '∫(.5,1,F1(Y^2),Y)' qui me donne 0,583333 si j'utilise →NUM
F1 est définie comme cela :
« → x 'x*Y' »
J'ai testé sur 48sx et j'obtiens la même chose.
Dans ce cas avec 'Y'=2, on intègre la fonction simplifiée "Y^2*2", dont la primitive est "2/3*Y^3", donc l'intégrale vaut 2/3*1^3 - 2/3*(0.5)^3 = 0.583
C'est une illusion malheureusement : Le Y de F1 n'est pas interprété de la même façon que celui de EQ1, en F1 il est statique et vaut 2, tandis que celui de EQ1 est bien variable pour l'intégrale.
- bernouilli92
- Fonctionne à 14400 bauds
- Messages : 5270
- Enregistré le : 21 nov. 2012 13:03
- Localisation : Ile de France
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
Ah ok. En fait vous voulez faire une intégrale double ?
Mais alors que contient la variable globale Y?
Mais alors que contient la variable globale Y?
HP, Casio, Sharp, Psion, quelques TI et divers autres
-
- Fonctionne à 300 bauds
- Messages : 109
- Enregistré le : 04 avr. 2021 16:09
- Localisation : 50.693165,4.573478
Re: HP RPL - intégrales numériques avec fonction+programme-48G KO, 28S OK
Oui une double est nécessaire pour le calcul du volume me semble t-il.bernouilli92 a écrit : ↑23 mars 2023 15:10 Ah ok. En fait vous voulez faire une intégrale double ?
Mais alors que contient la variable globale Y?
Evidemment à l'époque je l'avais écrit pour la 28S et c'était passé "comme une fleur" (avec validation sur une citerne réelle dont la jauge était fichue). J'avais pris des notes, revendu la 28S, et les années ont passé.
J'ai récupéré la 48GX familiale et tenté de faire tourner ce vieux programme. Curieusement ça ne fonctionnait plus. "RPL pourtant... "
EQ1, à intégrer selon la profondeur mouillée dans la citerne, contient la différence : primitive(borne supérieure) - primitive(borne inférieure).
et "F1" contient une formule exprimant cette primitive, dont le paramètre d'entrée est une de ces 2 bornes, dans une formule encore lisible.
Evidemment je pourrais éclater tout en une seule équation et me passer de l'appel supplémentaire, ce serait plus lourd à écrire et ce ne serait plus "élégant"
Etant un peu têtu et curieux j'ai essayé d'adapter pour la 48GX. On est face à une subtilité du RPL inattendue, mais un chouette exemple de calcul numérique et de petite programmation qui me plait.