Está en la página 1de 5

ALGORITMO ITERATIVO

RAICES CUADRADAS METODOLOGIA - JAVA ~1~

CREAR UN ALGORITMO PARA CREAR RAÍCES CUADRADAS = ALGORITMO ITERATIVO

Datos de entrada

El número a calcular la raíz cuadrada debe ser un número real mayor o igual que cero. x≥0

Por tanto si el usuario nos introduce un valor menor que cero debemos lanzar un error en el programa (la raíz
cuadrada de un número negativo dará un complejo)

X, número real (x≥0)

si x<0  error!

Datos de salida

Devolverá otro número también positivo

√𝑥, la raíz positiva (≥0)

Procesamiento

|𝑏 2 − 𝑥| <0.000000001

Esta es la forma correcta


de comprbar que 𝑏 2 ~𝑥
ALGORITMO ITERATIVO
RAICES CUADRADAS METODOLOGIA - JAVA ~2~

Comprobando el diagrama para el número 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 pseudocódigo de la aplicación

raizCuadrada(x)

Si (x<0): excepción (“Valor no válido”)

𝑏←𝑥
En este caso la precisión es de 1e-12,
Mientras |𝑏 2 − 𝑥| > 1e-12 :
que es la diferencia entre el valor real y
𝑥
( +𝑏)
𝑏← 𝑏 el obtenido
2

Fin Mientras

Retornar b
ALGORITMO ITERATIVO
RAICES CUADRADAS METODOLOGIA - JAVA ~3~
Date 2010-07-28

IMPLEMENTACION ALGORITMO EN JAVA

EJEMPLO. Hacer la raiz cuadrada del número 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 número 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 número al cual le calcularemos la raíz 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 número: ");
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 número 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 raíz cuadrada de los primero 100 números.

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 números


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 número 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 java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.text.DecimalFormat;

/** * @author Nessy * */


public class RaizCuadrada {

/** * @param args */


public static void main(String[] args) {
// CASO 4 pedir el número 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 número 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;
}
}

También podría gustarte