2009-05-21 8 views
9

Ho provato a cercare per il logaritmo + Objective-C, ma tutto quello che ottiene è pagine di test di matematica da parte degli insegnanti, o spiegazioni che cosa è un logaritmo;)Che tipo di funzioni/metodi del logaritmo sono disponibili in ogg-c/cocoa-touch?

Ho alcune misure che sono come 83912,41,234 mila e gli altri sono 32,94,232 mila. Devo premere questo enorme spettro in qualcosa tra 0 e 100, e che 32.94232 dovrebbe essere almeno qualcosa di più grande di 2, in cui l'83912.41234 sarebbe qualcosa vicino a 100. Quindi penso che una funzione di logaritmo sarà mio amico qui.

UPDATE: ho sono imbattuto il file math.h tramite "Apri in fretta" (molto bello il comando in Xcode: SHIFT + CMD + D), e là, grande 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); 

Ma : Nessun testo, nessun commento. Non sono un tale maniaco della matematica. Quindi qualche descrizione sarebbe buona, cioè che tipo di logaritmo per quale caso, come appare la curva, ecc ... quindi tutti i link migliori sono molto apprezzati!

+0

Sei alla ricerca di risultati di essere su una curva o una linea retta? – Abizern

+0

Devo provarlo, ma per il momento credo sia una curva. log2() sembra essere buono, ma sembra anche che sia un calcolo molto costoso. – Thanks

+0

Costoso in che modo? – Abizern

risposta

1

Che ne dici di prendere un libro sulle funzioni della libreria standard C?

In caso contrario, si può provare pagine man: man 3 logf, ad esempio

2

math.h è uno standard comprendono. la pagina wikipedia ha qualche documentazione.

Un altro modo per "schiacciare" i valori è quello di adattare i valori a una linea retta. Per voi Esempio: equazione linea

Etero

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 rapido calcolo sui vostri valori dà qualcosa di simile:

y = 1.17e-3 x + 1.96 

Spero che questo aiuti.

+0

+1 per il collegamento Wiki ... non ci avrei mai pensato –

14

Inoltre, ottenendo un logaritmo con una base arbitraria:

float logx(float value, float base) 
{ 
    return log10f(value)/log10f(base); 
} 
Problemi correlati