Ces derniers jours, certaines de mes lectures m'ont bien occupées et notamment la dernière gazette de Pockéticaires m'a bien intéressée.
J'y ai trouvé de quoi approfondir l'exploration de ma nouvelle acquisition et ses étonnantes possibilités.
Un des articles de la Gazette détaille le calcul de la fonction W(x) de Lambert et notamment donne quelques applications de cette fonction pour la résolution d'équations transcendantales et quelques exemples allégrement expliqués et commentés par gégé auteur de la rubrique.
Dans son article, la résolution des sept formes d'équations paramétrées est implémentée pour HP Prime et CASIO pb700.
Je donne ci-dessous la version pour HP-71B telle qu'elle est implantée dans mon pocket.
Dans l'article de gégé, les sept formes suivantes d'équation ayant pour paramètres les variables a et b sont résolues à l'aide de la fonction W de Lambert. EDIT: La formule solution n°7 donnée dans la Gazette est erronée, voir le message de tyann qui a signalé l'anomalie et la formule corrigée donnée plus loin.
Le code ci-dessous utilise la structure DEF FNW(T) ... END DEF pour définir la procédure d'approximation numérique de la branche positive réelle de la fonction W de Lambert au point d'abscisse T (c'est à dire la branche Wo sur la capture d'écran Ti-92 II cu-dessus). Les lignes 4 à 7 contiennent la définition de la fonction utilisateur FNW(T) qui pour une valeur T donnée calcule, affine et renvoie la valeur numérique réelle de la branche positive de la fonction W de Lambert ou une valeur NaN pour indiquer une requête hors du domaine de définition.
Les DATAs de la ligne 1 permettent deux choses :
- De créer le menu qui permettra à l'utilisateur de sélectionner l'équation adaptée à son problème à l'aide des touches curseur [↓] et [↑] en validant à l'aide de la touche [END LINE]. La touche [ON] permet de sortir prématurément du programme sans sélection. Evidemment l'instruction MENU n'est pas présente sur tous les HP-71B. Mais je suis sûr que les malheureux processeurs d'HP-71B démunis d'un module JPC ROM sauront combler cette lacune par un petit bout de code supplémentaire.
- D'afficher l'équation sélectionnée lors de la saisie des paramètres a et b qui viennent d'ailleurs s'insérer dans l'équation affichée à l'aide de la fonction POS
Le sous-programme de la ligne 20 permet de retrouver l'équation ou l'expression solution dans les lignes de DATA en fonction du choix de l'utilisateur indiqué par la variable M. Les malheureux utilisateurs d'un HP-71B dépourvu de JPC ROM peuvent s'inspirer de son principe de fonctionnement pour mettre au point leur propre sous-routine de sélection de l'équation à défaut d'avoir une instruction MENU préétablie.
Code:
Code : Tout sélectionner
1 DATA X*e^X=a,X*e^(aX)=b, X+a*ln X=b , X^a*e^X=b , X*e^X+a*e^X=b , X+a*e^X=b , X+a*X*ln X=b
2 DATA FNW(A) ,FNW(A*B)/A,A*FNW(EXP(B/A)/A),A*FNW(B^(1/A)/A),FNW(B*EXP(A))-A,B-FNW(A*EXP(B)),B/FNW(B*EXP(1/A)/A)/A
4 DEF FNW(T)
5 IF T<=-EXP(-1) THEN W=NAN @ GOTO 7 ELSE IF T<1.5 THEN W=SQRT(T+.37)-.5 ELSE W=LOG(T)
6 FOR I=1 TO 7 @ W=(W*W+T*EXP(-W))/(1+W) @ NEXT I
7 FNW=W @ END DEF
10 DEFAULT EXTEND @ SFLAG -1 @ I=TRAP(IVL,2) @ STD @ M=MENU(7) @ IF M<1 THEN END
12 RESTORE 1 @ GOSUB 20 @ DISP E$; @ INPUT " a=";A @ P=POS(E$,"a") @ E$[P,P]=STR$(A)
14 P=POS(E$,"b") @ IF P THEN DISP E$; @ INPUT " b=";B @ E$[P,P]=STR$(B)
16 DISP E$;" --> X="; @ RESTORE 2 @ GOSUB 20 @ X=VAL(E$) @ FIX 6 @ DISP X @ STD @ END
20 FOR I=1 TO M @ READ E$ @ NEXT I @ RETURN
Variables globales:
A: paramètre a.
B: paramètre b.
E$: équation paramétrique substituée / expression solution à éVALuer.
I: indice d'itération du sous-programme 20.
M: sélection de l'équation paramétrique / numéro du menu / numéro de l'expression solution à évaluer.
P: position du paramètre à substituer dans l'équation paramétrique E$.
X: solution de l'équation paramétrée.
Variables locales fonction FNW():
I: indice d'itération pour calcul affiné (ligne 6).
T: abscisse du point à évaluer
W: ordonnée du point à évaluer (valeur de la branche positive de la fonction W de Lambert)
Utilisation
Saisir le programme.
Lancer la résolution par la touche [RUN] ou en tapant RUN+[END LNE] ou tout autre moyen de lancer le programme préalablement saisi)
Sélectionner l'équation de la forme la plus adaptée à la résolution du problème.
A la demande du HP-71B, saisir les expressions donnant les valeurs numériques des paramètres a et b.
En quelque fraction de secondes l'HP-71B affiche la valeur numérique solution pour X ou, le cas échéant, une valeur NaN ou ±Inf indiquant qu'il n'y a pas de solution réelle (grâce au contrôle des exceptions mathématiques TRAP et SFLAG -1).
Exemple 1 (calcul direct de W)
Code : Tout sélectionner
AFFICHAGE: SAISIE:
> [F][N][W][(][7][4][2][.][0][6][5][7][9][5][5][1][5][)][END/LINE]
5.00000000001
Exemple 2 (exemple pour HP Prime dans la gazette n°13)
Code : Tout sélectionner
AFFICHAGE: SAISIE:
> [RUN]
aXe^X=b (prgm) [↓][↓][↓]
X^a*e^X=b (prgm) [END/LINE]
X^a*e^X=b a=_ (prgm) [2][END/LINE]
X^2*e^X=b b=_ (prgm) [6][END/LINE]
X^2*e^X=6 --> X= 1. (prgm)
╾2*e^X=6 --> X= 1.28 (prgm)
╾e^X=6 --> X= 1.2870 (prgm)
╾X=6 --> X= 1.287052 (prgm)
Code : Tout sélectionner
AFFICHAGE: SAISIE:
> [RUN]
aXe^X=b (prgm) [g][↓][↑]
X+a*e^X=b (prgm) [END/LINE]
X+a*e^X=b a=_ (prgm) [8][/][2][END/LINE]
X+4*e^X=b b=_ (prgm) [2][0][/][2][END/LINE]
X+4*e^X=10 --> X= (prgm)
╾4*e^X=10 --> X= 0.8 (prgm)
╾e^X=10 --> X= 0.829 (prgm)
╾X=10 --> X= 0.82967 (prgm)
╾=10 --> X= 0.829678 (prgm)