2010-12-08 23 views
5

Tengo una pregunta simple.Pregunta matemática simple:

Tengo dos valores MIN y MAX. Entonces tengo una serie de valores (X) que pueden estar entre 0 y + infinito.

Ahora quiero tener un algoritmo que asigne cada valor x de X al rango entre MIN y MAX.

+0

La mayoría de las veces sí, pero puede ser indeterminado –

+3

Supongo que quiere un mapa que sea uno a uno, de lo contrario la respuesta es trivial. –

+2

Eso depende de cómo quieras mapearlos. Puede usar 'atan', exponenciales negativos y otras asignaciones más exóticas. –

Respuesta

4

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

3

Suponiendo que desea una función monótona creciente:

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

Dónde k es un factor de tasa que determina cómo rápidamente el mapeo se acerca a MAX.

+2

Esto se convierte rápidamente en 'MAX 'debido a la precisión de coma flotante limitada. –

+2

@larsmans: Entonces haz 'k' pequeño. –

+1

Bastante justo. +1 para la versión editada. –

6

Aquí hay una que sólo utiliza la aritmética básica (sin atan o exp):

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

Si tiene que variar la forma de esta representación conforme, intente

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

para cualquier función f positivo (por ejemplo f (x ) = kx o f (x ) = √ x o ...).