2009-05-21 11 views
9

He intentado buscar logaritmo + Objective-C, pero lo único que consigue es páginas de prueba de matemáticas de los maestros, o explicaciones lo que es un logaritmo;)¿Qué tipo de funciones/métodos de logaritmo están disponibles en objective-c/cocoa-touch?

Tengo algunas medidas que son como 83912,41234 y otros son 32.94232. Necesito presionar este gran espectro en algo entre 0 y 100, y ese 32.94232 debería ser al menos algo más grande que 2, donde el 83912.41234 sería algo cerca de 100. Así que creo que una función de logaritmo será mi amiga aquí.

ACTUALIZACIÓN: he encontré con el archivo math.h través de "abrir rápidamente" (muy agradable de comandos en Xcode: SHIFT + CMD + D), y allí, gran sorpresa:

extern double log (double); 
extern float logf (float); 

extern double log10 (double); 
extern float log10f (float); 

extern double log2 (double); 
extern float log2f (float); 

extern double log1p (double); 
extern float log1pf (float); 

extern double logb (double); 
extern float logbf (float); 

Pero : Sin texto, sin comentarios. No soy tan fanático de las matemáticas. Así que alguna descripción sería buena, es decir, qué tipo de logaritmo, por qué caso, cómo se ve la curva, etc., por lo que cualquier enlace excelente es muy apreciado.

+0

¿Usted está buscando los resultados para estar en una curva o una línea recta? – Abizern

+0

Tengo que probarlo, pero por el momento supongo que es una curva. log2() parece ser bueno, pero también parece que es un cálculo muy caro. – Thanks

+0

Caro de qué manera? – Abizern

Respuesta

1

¿Qué le parece tomar un libro sobre las funciones estándar de la biblioteca C?

De lo contrario, puede intentar páginas man: man 3 logf, por ejemplo

2

math.h es un estándar incluyen. la página wikipedia tiene algo de documentación.

Otra forma de 'aplastar' los valores es ajustar sus valores a una línea recta. Por ejemplo que: Ecuación de la recta

recta

y = mx + c 
y = 'squished' value. 
x = The value you want to squish 
m = Gradient of the line 
c = intercept on the y axis 

Un cálculo rápido en sus valores da algo así como:

y = 1.17e-3 x + 1.96 

Espero que esto ayude.

+0

+1 para el enlace Wiki ... nunca hubiera pensado en eso –

14

Además, conseguir un logaritmo con una base arbitraria:

float logx(float value, float base) 
{ 
    return log10f(value)/log10f(base); 
} 
Cuestiones relacionadas