Bon, le plus simple est quand même d’utiliser les capacités du solveur sur les machines (CAS ou RPL) permettant de
travailler sur les formules littérales.
Elles sont capables de résoudre le problème mais ce faisant, elles permettent aussi de reformuler les équations qui
serviront pour les calculs sur les pockets basiques, par une méthode itérative quelconque comme la dichotomie.
Evidemment, l’astuce de
charo qui utilise une boucle FOR TO NEXT en changeant le compteur est assez
déroutante. Je préfère utiliser un DO...LOOP et expliciter les bornes et l’étude du signe comme dans l’algorithme
classique de la recherche de racine d’une fonction.
1er étape
Formulation du problème : on recherche à déterminer avec une précision suffisante (moins du kg et du cm), le poids et la
taille des Siliciumiens qui ont fournit leur surface corporelle D0 et B0 calculées selon les formule respective de Dubois
et Boyde :
D0 = 0.007184*W^0.425*H^0.725 (eq.1)
B0 = 3.207E-4 *(H^0.3)* (1000*W)^(0.6721-0.0188*(3+Log W)) (eq.2)
Avec W = poids en kg, H = taille en cm et Log est ici le logarithme de base 10.
Comme on peut le voir, dans la seconde équation (eq.2) le poids W apparait deux fois dont une fois dans un logarithme.
Alors que la première équation (eq.1) permet facilement d’extraire les valeurs de H ou W qui n’apparaissent qu’une seule
fois.
D’après (eq.1), nous pouvons exprimer H en fonction de D0 et W :
H = [ D0 / (0.007*W^0.425) ]^1.37 (eq.3)
Sur la HP28S, cela se fait par :
Code : Tout sélectionner
‘D0 = 0.007184*W^0.425*H^0.725’ ‘H’ ISOL
Il faut avoir levé le flag 34 pour éviter d’avoir les solutions complexes :
H = [ D0 / (0.007*W^0.425) ]^1.37 * EXP (2*pi*i*n1/0.725) avec n1=0, 1, 2,...
Grâce à (eq.3), substituant la variable H dans l’équation (eq.2).
Nous obtenons une relation plus compliquée, mais qui fait intervenir les deux paramètres (= les deux données initiale D0
et B0) ainsi qu’une unique variable (le poids W) à déterminer :
B0 = 3.207E-4 *((D0/(0.007*W^0.425))^1.37)* (1000*W)^(0.6721-0.0188*(3+Log W)) (eq.4)
En utilisant le solveur, on saisit les paramètres D0 et B0 (dans mon cas 2.008 et 2.008) et l’on demande de rechercher
une valeur pour W.
Evidemment, comme il y a un logarithme, il ne faut pas oublier de suggérer une valeur initiale et un intervalle
‘acceptable’ pour le domaine de recherche (par exemple entre 50 et 150 kg !).
Sur la HP28S, cela se fait facilement :
Code : Tout sélectionner
## Déduisons H de l’équation de Dubois :
34 SF ‘D0 = 0.007184*W^0.425*H^0.725’ ‘H’ ISOL ‘H’ STO
## Substituons H dans l’équation Boyde :
‘B0 = 3.207E-4 *(H^0.3)* (1000*W)^(0.6721-0.0188*Log W)’ ‘D0’ SHOW
## Cette dernière équation est introduite dans le Solveur.
[SOLV] [STEQ] [SLVR]
## Saisir les paramètres et l’intervalle de recherche de W :
2.008 [ D0 ]
2.008 [ B0 ]
{ 99 50 150 } [ W ]
## Rechercher une solution possible pour W :
[ f ][ W ]
On obtient au bout de moins de 10 s :
W : 79.5512 (Zero)
Mon poids est donc compris entre 79 et 80 kg.
Et on en déduit ma taille
‘H’ [->NUM] 182.0409
Ma taille est donc de 182 cm.
On peut alors traiter les autres cas simplement en entrant les paramètres D0 et B0 de chacun :
1.95 [ D0 ]2 [ B0 ] [ f ][ W] 82.2159 (sign reversal) H [->NUM]
Comme on le voit, le plus long est de saisir les équations de Dubois et de Boyde. Après, l’utilisation des fonction ISOL
STO SHOW STEQ et le menu dynamique du solveur rende les choses très simple.
Code : Tout sélectionner
D0 H0 W H
Tipoucet 1.95 2.00 82 kg 171-172 cm
Pir2 2.149 2.161 90 kg 186 cm
Charognard 1.73 1.74 64 kg 169 cm
Zpalm 2.06 2.07 84 kg 183 cm
Marge ? ? ? ?
C.Ret 2.008 2.008 79-80 kg 182 cm
Gege 2.18 0,03 6 g 1756 feet
Marcus v.C. 1.791 1.798 67 kg 172 cm
Gilles59 2.028 2.048 83 kg 180 cm
Remarquons que gege ne nous a pas donné sa valeur non erronée de surface corporelle selon Boyde ! A moins qu’il ne soit
réellement un ver de 6g et 1756 pieds de long !
Notons aussi depuis que j’ai indiqué que la donnée des deux surfaces corporelles permettait de retrouver poids et taille,
plus personne n’ose poster le résultat de son calcul !
La version BASIC se déduit des formules et des étapes utilisées ci-dessus :
Code : Tout sélectionner
10 REM ******************* SAISIE PARAMETRES ***
20 INPUT "ENTREZ SURFACE CORPORELLE DUBOIS ";D0
30 INPUT "ENTREZ SURFACE CORPORELLE BOYDE ";B0
40 :
100 REM ******************* RECHERCHE W DANS INTERVALLE [WA;WB]
110 WA= 50:W=WA:GOSUB 1000:BA=B : REM borne inf
120 WB=150:W=WB:GOSUB 1000:BB=B : REM borne sup
130 :
140 DO
150 : W=(WA+WB)/2:GOSUB 1000
160 : IF B<B0 AND BA<B THEN WA=W:BA=B
170 : IF B0<B AND B<BB THEN WB=W:BB=B
180 LOOP WHILE WB-WA>.25
190 :
200 REM ******************* CALCUL TAILLE
210 HB=(D0/(.007184*WA^.425))^1.37931
220 HA=(D0/(.007184*WB^.425))^1.37931
230 :
300 REM ******************* AFFICHE RESULTATS
310 PRINT USING " POIDS ENTRE ####.# ET ####.# KG";WA,WB
320 PRINT USING "TAILLE ENTRE ####.# ET ####.# CM";HA,HB
330 PRINT
340 END
1000 B=0.002472*(1000*W)^(.6721-.0188*LOG(W)/LOG(10))/W^.175862*D0^.413793
1010 RETURN
READY.
Cela n'a pas l'air mais c'est le même algorithme que celui de charo. C'est juste présenté de façon plus conventionnelle
et calssique.