Java - Raiz cuadrada con numeros de mayor precision

 
Vista:

Raiz cuadrada con numeros de mayor precision

Publicado por Adelsork (7 intervenciones) el 09/11/2006 01:33:32
Hola a todos me gustaria pediros ayuda, a ver si me podeis echar un cable. Bueno a ver mi problema esta en q necesito realizar una raiz cuadrada y q el resultado tenga mayor precision q un double, investigando he localizado q existe un tipo en la clase Math que es BigDecimal, en fin creo que ese tipo de dato me servira pero segun estoy viendo es muy puñetero y no tiene ningun metodo que realice la raiz cuadrada ni posibilidad a elevarlo a numeros decimales ni nada por el estilo :(

Alguien conoce alguna manera de conseguir el reultado de la raiz cuadrada con mayor precision??

Muchas gracias.

Un saludo
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Raiz cuadrada con numeros de mayor precision

Publicado por Tom (16 intervenciones) el 09/11/2006 13:14:03
Pues de momento no se puede, tienes que implementarlo tú, o buscar un poco a ver si encuentras algo ya hecho.

Se utiliza el método de Newton-Raphson.

Suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Raiz cuadrada con numeros de mayor precision

Publicado por Adelsork (7 intervenciones) el 09/11/2006 14:14:24
Puers muchas gracias investigare sobre lo k me has dicho y vere si consigo algo, de todas formas si alguien sabe algo sobre el tema y lo quiere compartir ;)

En fin lo dicho muchas gracias y hasta pronto.
Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Raiz cuadrada con numeros de mayor precision

Publicado por Adelsork (7 intervenciones) el 10/11/2006 18:39:33
Bueno pues para aportar algo al foro os dejo la solucion q he utilizado, buscando encotre una clase donde lo hacian con double y me dedique a traspasar el codigo para que pueda funcionar con BigDecimal y segun parece funciona asi que si alguien lo necesita aqui lo tiene ;)

/**
* Función principal que prepara la llamada a la fución realmente
* recursiva. Ya se utilizó esta forma en la práctica de recursión y complejidad.
*/
private static BigDecimal raizRecursivo( BigDecimal numero, BigDecimal margenError) {
return raizRecursivoAux(numero, new BigDecimal("0"), numero, margenError);
}
/**
* Función recursiva que va arrinconando la raíz cuadrada hasta que se aproxima menor que el
* margen de error. Al igual que en la práctica de recursión, nos llamamos varias veces pero
* cambiando los parámetros de entrada de forma que vamos reduciendo el numero de operaciones.
*/
private static BigDecimal raizRecursivoAux( BigDecimal numero, BigDecimal menor, BigDecimal mayor, BigDecimal margenError ) {
//Creamos variable para almacenar resultado y hacer sólo return al final
BigDecimal resultado =new BigDecimal("0.0"); // Como está declarada dentro del método es necesario inicializarla a un valor

if ( mayor.subtract( menor).compareTo(margenError)==-1 ) { //mayor - menor < margenError
//return menor;
resultado = menor;
}
else {
BigDecimal media = (menor.add(mayor)).divide(new BigDecimal("2.0")); //( menor + mayor ) / 2.0;
if ( media.multiply(media).compareTo(numero)==1 ) { //media * media > numero
//return raizRecursivoAux( numero, menor, media, margenError );
resultado = raizRecursivoAux( numero, menor, media, margenError );
}
else if ( media.multiply(media).compareTo(numero)==-1) { //media*media < numero
//return raizRecursivoAux( numero, media, mayor, margenError );
resultado =raizRecursivoAux( numero, media, mayor, margenError );
}
else {
//return media;
resultado = media;
}
}
return resultado;
}

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar