Foro de elhacker.net

Programación => Java => Mensaje iniciado por: ericklopez en 29 Marzo 2020, 08:24 am



Título: raiz cubica sin libreria math
Publicado por: ericklopez en 29 Marzo 2020, 08:24 am
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


Título: Re: raiz cubica sin libreria math
Publicado por: engel lex en 29 Marzo 2020, 10:38 am
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)


Título: Re: raiz cubica sin libreria math
Publicado por: ericklopez en 29 Marzo 2020, 19:13 pm
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

Código:
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;
                    }
                }


Título: Re: raiz cubica sin libreria math
Publicado por: CalgaryCorpus en 30 Marzo 2020, 04:07 am
Una alternativa es usar la aproximacion de Newton:

https://math.stackexchange.com/questions/575281/how-to-calculate-square-root-or-cube-root