2010-12-08 3 views
5

J'ai une question simple.Question mathématique simple:

J'ai deux valeurs MIN et MAX. Alors j'ai une série de valeurs (X) qui peuvent être entre 0 et + l'infini.

Maintenant, je veux avoir un algorithme qui mappe chaque valeur x de X dans la plage entre MIN et MAX.

+0

La plupart du temps oui, mais cela peut être indéterminé –

+3

Je suppose que vous voulez une carte qui est one-to-one, sinon la réponse est triviale. –

+2

Cela dépend de la façon dont vous voulez les cartographier. Vous pouvez utiliser 'atan', exponentielles négatives, et d'autres mappages plus exotiques. –

Répondre

4

MIN + atan (x) * (MAX-MIN)/(PI/2)

3

En supposant que vous voulez une fonction croissante de façon monotone:

MAX + (MIN - MAX)*exp(-k*x) 

k est un facteur de taux qui détermine la rapidement la cartographie approche MAX.

+2

Cela devient très rapidement «MAX» en raison d'une précision limitée en virgule flottante. –

+2

@larsmans: Ensuite, faites 'k' petit. –

+1

Assez juste. +1 pour la version modifiée –

6

Voici qui utilise seulement l'arithmétique de base (pas atan ou exp):

MAX + (MIN - MAX)/(1 + x)

Si vous avez besoin de faire varier la forme de cette représentation conforme, essayer

MAX + (min - max)/(1 + f (x ))

pour toute fonction f positif (par exemple f (x ) = kx ou f (x ) = √ x ou ...).