J'ai bien conscience d'arriver après la "bataille" (je ne passe plus que très sporadiquement par ici depuis un bon moment ^^), mais des fois que cela soit encore utile...
Le soucis avec l'hyperbole (polynôme de 2nd degré), c'est qu'il n'y en a qu'une seule qui passe par trois points distincts, donc impossible de contrôler le "point bas". La solution de conversion par deux segments de droite est la plus simple à résoudre (et probablement suffisante en terme de résultat), mais sans doute moins évidente à mettre dans excel (formules différentes selon que le pourcentage en entrée est inférieur ou supérieur à 75).
Comme Fu, mon intuition (de graphiste plus que mathématicien) m'orienterait vers une solution basée sur les courbes de Bézier : simple et intuitif dans les logiciels de dessin vectoriel, plus délicat à manipuler pour obtenir une fonction du type f(x) plutôt que paramétrique et sur un seul intervale (0-100, typiquement les courbes de Béziers se définissent "par morceaux" à l'instar de la solution
via deux segments de droites).
Cependant, les courbes de Bézier n"étant rien d'autre que des polynômes du 3ème degré, de manière similaire (mathématiquement) à la résolution d'une hyperbole passant par trois points distincts, on peut "faire passer" un polynôme du 3ème degré par 4 points distincts, et donc avoir plusieurs solutions pour 3 points distincts (une solution plus "souple" que l"hyperbole dont on ne peut faire varier la courbure).
L'idée est donc de chercher non plus une équation du type
f(x) = ax2 + bx + c, mais du type
f(x) = ax3 + bx2 + cx + d :
d se trouve aisément : 1 grâce à la condition f(0) = 1
ensuite, on décide que a, b ou c sera notre "variable d'ajustement" (inconnue traitée comme connue pour trouver les valeurs des deux autres qui en seront "fonction") : j'ai choisi c (qui semblait me simplifier relativement la vie, en tous cas les calculs) en posant f(75) = 30 et f(100) = 100.
On arrive à (je vous épargne les développements):
a = (29 - b*5625 - c*75)/421875
b = (59/10000 - 100*(29 - c*75)/421875 - c/100) / (1 - 562500/421875)
par tatonnements, j'ai posé c = 0.2, ce qui donne (arrondi à 8 décimales):
a = 0.00005644
b = -0.00174444
soit:
f(x) = 0.00005644 x3 - 0.00174444 x2 + 0.2 x + 1
Si c'est utile je peux prendre le temps de mettre en ligne la page/outil que j'ai codé pour "tatonner", et éventuellement l'améliorer (relativement brute et sommaire à l'heure actuelle) si besoin
