You are on page 1of 5

ALGORITMO ITERATIVO RAICES CUADRADAS

METODOLOGIA - JAVA

~1~

CREAR UN ALGORITMO PARA CREAR RACES CUADRADAS = ALGORITMO ITERATIVO Datos de entrada El nmero a calcular la raz cuadrada debe ser un nmero real mayor o igual que cero. x0 Por tanto si el usuario nos introduce un valor menor que cero debemos lanzar un error en el programa (la raz cuadrada de un nmero negativo dar un complejo) X, nmero real (x0) si x<0 error! Datos de salida Devolver otro nmero tambin positivo , la raz positiva (0) Procesamiento

0.000000001 Esta es la forma correcta de comprbar que

ALGORITMO ITERATIVO RAICES CUADRADAS

METODOLOGIA - JAVA

~2~

Comprobando el diagrama para el nmero 8 tenemos como resultados: B=64 B=32,5 B=17,2346 B=10,474 B=8,292 B=8,005 B=8,000001

Realizar el pseudocdigo de la aplicacin raizCuadrada(x) Si (x<0): excepcin (Valor no vlido) En este caso la precisin es de 1e12, que es la diferencia entre el valor real y el obtenido

Mientras

1e-12 :

Fin Mientras Retornar b

ALGORITMO ITERATIVO RAICES CUADRADAS Date 2010-07-28

METODOLOGIA - JAVA

~3~

IMPLEMENTACION ALGORITMO EN JAVA EJEMPLO. Hacer la raiz cuadrada del nmero 3 /** * @author Nessy * */ public class RaizCuadrada { /** * @param args */ public static void main(String[] args) { double x=3; double resultado; resultado=raizCuadrada(x); System.out.println("La raiz cuadrada de " + x + " es " +resultado); } public static double raizCuadrada(double x){ double b; b=x; /* Comprobamos que el nmero introducido sea mayor que 0 * sino sacamos un error**/ if (x<0)return Double.NaN; while (Math.abs(b*b-x)>1e-12){ b=((x/b)+b)/2; } return b; } } MEJORA Pedirle al usuario el nmero al cual le calcularemos la raz cuadrada
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * @author Nessy * */ public class RaizCuadrada { /** * @param args */ public static void main(String[] args) { double x; BufferedReader br =new BufferedReader(new InputStreamReader(System.in)); System.out.println("Introduce un nmero: "); try { x=Double.parseDouble(br.readLine()); System.out.println("La raiz cuadrada de " + x + " es " +raizCuadrada(x)); } catch (NumberFormatException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }

ALGORITMO ITERATIVO RAICES CUADRADAS

METODOLOGIA - JAVA

~4~

public static double raizCuadrada(double x){ double b; b=x; /* Comprobamos que el nmero introducido sea mayor que 0 * sino sacamos un error**/ if (x<0)return Double.NaN; while (Math.abs(b*b-x)>1e-12){ b=((x/b)+b)/2; } return b; } }

MEJORA . Sacar por pantalla la raz cuadrada de los primero 100 nmeros.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; /** * @author Nessy * */ public class RaizCuadrada { /** * @param args */ public static void main(String[] args) { //CASO 3 Mostrar la raiz de los 100 primeros nmeros double x=0; double resultado; for (x = 0;x<101;x++){ resultado=raizCuadrada(x); System.out.println("La raiz cuadrada de " + x + " es " +resultado); } } public static double raizCuadrada(double x){ double b; b=x; /* Comprobamos que el nmero introducido sea mayor que 0 * sino sacamos un error**/ if (x<0)return Double.NaN; while (Math.abs(b*b-x)>1e-12){ b=((x/b)+b)/2; } return b; } }

ALGORITMO ITERATIVO RAICES CUADRADAS

METODOLOGIA - JAVA

~5~

MEJORA. Mostrar el resultado con 2 posiciones decimales (Utilizar DecimalFormat)


import import import import java.io.BufferedReader; java.io.IOException; java.io.InputStreamReader; java.text.DecimalFormat;

/** * @author Nessy * */ public class RaizCuadrada { /** * @param args */ public static void main(String[] args) { // CASO 4 pedir el nmero al usuario y sacar el resultado con 2 decimales double x=0; double resultado; DecimalFormat formato = new DecimalFormat("0.00"); for (x = 0;x<101;x++){ resultado=raizCuadrada(x); System.out.println("La raiz cuadrada de " + x + " es " +formato.format(resultado)); } } public static double raizCuadrada(double x){ double b; b=x; /* Comprobamos que el nmero introducido sea mayor que 0 * sino sacamos un error**/ if (x<0)return Double.NaN; while (Math.abs(b*b-x)>1e-12){ b=((x/b)+b)/2; } return b; } }

You might also like