2011-07-12 11 views
6

Tengo una fórmula y esta fórmula utiliza una función de registro con una base personalizada, por ejemplo, registro con una base de by un valor de x. En objetivo-c, sé que hay funciones de registro que calculan sin una base y una base de 2 o 10.Creación de una función de registro con una base personalizada

¿Existe una función que tenga la capacidad de calcular una función de registro con una base personalizada/variable? o tal vez haya un método alternativo para completar esta fórmula.

La idea básica de mi fórmula es este registro (1 + 0.02) (1.26825) (1 + 0.02 es la base). Esto debería ser igual a 12,000.

Respuesta

14

De esta manera:

double logWithBase(double base, double x) { 
    return log(x)/log(base); 
} 
+0

Gracias por tonelada que funcionó a la perfección –

1

Puede calcular logaritmos arbitrarios con logbx = logcx/logcb, donde c es una de las bases más fácilmente disponibles, tales como 10 o e.

Para su ejemplo particular, loge1.26825 = 0.237637997 y loge1.02 = 0.019802627. Eso es 12.000 (dentro de los límites de la precisión de mi calculadora): 0.237637997/0.019802627 = 12.000326876.

De hecho, es en realidad 1.02121.268241795 y, si se utiliza que valor, se obtiene mucho más cercano a 12:

  • loge1.268241795 = 0.237631528
  • loge1.02 = 0.019802627
  • 0.237631528/0.019802627 = 12.000000197.
1

Ray es correcta, pero aquí hay una modificación de métodos Obj-C de la misma:

-(double) logWithBase:(double)base andNumber:(double)x { 
    return log(x)/log(base); 
} 
+1

No tiene sentido tener esto como un método de instancia, ya que doesn' t hacer uso de una instancia. Puede tenerlo como un método de clase en una clase MathUtils o algo así si realmente quiere un método Obj-C y no solo una función C. –

Cuestiones relacionadas