@Gille59 et
Gégé
Merci pour les codes. Je ne me souvenais plus de l’usage des registres mémoire pour simplifier le programme . Si c’est fort astucieux sur la Casio Fx-602P pour faire tenir en un minimum de pas, sur un Pocket BASIC, les READ et RESTORE alourdissent un peu la lecture.
Mais je tenais à faire remarquer al similitude.
Par contre, je suis assez curieux de savoir d’où viennent les coefficients des formules, car en utilisant la méthode des logarithmes pour éviter les calculs de puissance (cela me rappelle le temps où l’on faisait les calculs avec des abaques (calculatrice interdite car quelques uns seulement en avait à la fac).
Attention Log décimal et Ln népérien (mais là je prends le risque de réveiller les chevaliers zodiacals).
Effectivement, il y a moyen d’y arriver :
(eq.1) 0.007184*W^0.425*H^0.725 = D.
L'équation (EQ1) passé au LOG devient :
(leq.1) -2.144+0.425*Log W+0.725*Log H = Log D.
D’où
Log H = 2.957 – 0.586*Log W + 1.379*Log D.
(eq.2) 3.207E-4 *(H^0.3)* (1000*W)^(0.6721-0.0188*(3+Log W)) = B.
L'équation (EQ.2) passé aux Logs devient :
(leq.2) -1.478 – 0.019*Log2 W + 0.616*Log W+0.300*Log H=Log B.
En substituant Log H on obtient :
(leq.3) -0.519 – 0.019*Log2 W + 0.440*Log W + 0.414*Log D. = Log B.
(leq.3) -0.519 – 0.019*x2 + 0.440*x + 0.414*Log D. = Log B. avec x = Log W
Equation quadratique qui admet deux solutions :
X1 = 11.698 – 26.596*SQRT[ 0.149 – 0.075 * Lob B. + 0.031 * Log D. ]
X2 = 11.698 + 26.596*SQRT[ 0.149 – 0.075 * Lob B. + 0.031 * Log D. ]
Pourquoi n’en garder qu’une seule ! Ben c’est des logs alors on arrive vite à des grands nombres qui n’ont plus de sens pour une masse carporelle.
A.N. : Avec mon cas D. = B. = 2.008
On obtient : Log W = 11.689 +/- 0.797
On ne retiendra bien évidemment que la première solution, je ne suis pas un géant pesant 3.10^21 kg ! Quoi que !
Log W = 1.901 soit W = 10^1.1901 = 79.55 kg !
Le « bon programme » est donc (pour SHARP PC-1211):
Code : Tout sélectionner
10:INPUT "SURF.CORP. DUBOIS ";D,"SURF.CORP. BOYDE " ;B:D=LOG D,B=LOG B
20:W=11.697817–26.595745*SQRT(.149046–.0752B+.031117D),H=2.956736-.586207W+1.37931D
30:W=10^W,H=10^H
40:PRINT USING "####.#";"POIDS ";W;" TAILLE";H
50:END
Mais en voyant nos codes, mon fils rigole doucement !
« Ah ! Ah ! Moi j’aurais utilisé un algorithme génétique. »
En voyant le dernier code posté , je me demande si la solution ‘au goût du jour’ ne serait assez proche de ce premier prototype :
P.S.: Concernant la HP50g, je pense que le 'bug' doit provienir du paramétrage de mode 'calculs approchés / valeurs exactes' qui doit être convenablement sélectionné pour utiliser ISOL.
Il doit aussi y avoir quelque paramètre supplèmentaire avec ISOL qui est plus perfectionnée que sur les HP28/48 car permet d'avoir un solution même si la variable en question apparait plusiseurs fois dans la formule. Sur HP28S on obtient dans ce dernier cas un résultat éroné.