Hola amigos, alguien me pudiera ayudar como sacar la raiz cubica sin libreria math, la raiz cuadrada la saque con metodo babilonico pero la cubica no se como, gracias por su ayuda, en java y estoy utilizando netbeans
un metodo muy usado es el de aproximacion es decir sumas un numero muy pequeño una y otra vez hasta que el cubo de la sumatoria sea lo mas cerca del numero buscado como sea posible
es decir....
raiz cubica de 40
variables:
cubo = 40 (numero a buscar)
gamma = 0.001 (resolucion a buscar)
a = 1 (este será el sumador)
t = 0 (este es un valor intermedio donde probaremos)
sumatoria =0
ejecucion:
t = sumatoria + a (0+1)
si t*t*t < cubo entonces
sumatoria = t
sino
aumentar resolucion
esto es un vago esbozo, pero veamos como se aproxima
t = t+a (0+1=1)
t*t*t (1*1*1=1)
- continuar
t = t+a (1+1=2)
t*t*t (2*2*2=8)
- continuar
t = t+a (2+1=3)
t*t*t (3*3*3=27)
- continuar
t = t+a (3+1=4)
t*t*t (4*4*4=64)
- requiere aumentar resolucion, sumatoria = 3
t = t+a (3+0.1=3.1)
t*t*t (3.1*3.1*3.1=29.791)
- continuar
...
t = t+a (3.3+0.1=3.4)
t*t*t (3.4*3.4*3.4=39.304)
- continuar
... (aqui aumentamos resolucion, y así continuamos hasta que a sea menor que gamma, en ese caso terminamos)
gracias, ya lo habia intentado algo asi pero con tu ayuda aclaraste la idea y ya resolvio aca les dejo el codigo por si le sirve a mas de alguien
double ra = Double.parseDouble(a.getText()); // ra es mi numero a evaluar
double aux;
double tem=0;
double r = 0;
for (double i = 0; i<Double.MAX_VALUE; i++){
aux = i*i*i;
if (aux==ra){ // aca evalua si la raiz cubica es entero
System.out.println("su raiz cubica es"+i);
break;
}
if(aux<ra){
tem = aux;
r= i;
}
else { // si no es entero aca busca el decimal
double aux2 = 0;
while(aux2<ra){
r = r+0.01;
aux2 = r*r*r;
}
System.out.println(r);
break;
}
}
Una alternativa es usar la aproximacion de Newton:
https://math.stackexchange.com/questions/575281/how-to-calculate-square-root-or-cube-root