raiz cubica sin libreria math

Iniciado por ericklopez, 29 Marzo 2020, 08:24 AM

0 Miembros y 1 Visitante están viendo este tema.

ericklopez

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

engel lex

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)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

ericklopez

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;
                    }
                }