Calcular raiz quadrada sem o Math.sqrt

7 respostas
G

como eu posso calcular a raiz quadrada sem utilizar o math.sqrt

eu tinha feito com math.sqrt, tem como ajeitar esse aqui e baixo mas tirar os math.sqrt?

1. public class Baskara {  
   2.   
   3.    public static void main(String[] args) {  
   4.       try {  
   5.          System.out.println("Expressao: 2x^2 + 5x + 1");  
   6.          Baskara b = new Baskara(2, 5, 1);  
   7.          System.out.println("Delta:    " + b.getDelta());  
   8.          System.out.println("x1   :    " + b.getX1());  
   9.          System.out.println("x2   :    " + b.getX2());  
  10.       }  
  11.       catch (Throwable t) {  
  12.          t.printStackTrace();  
  13.       }  
  14.    }  
  15.   
  16.    private double termoA;  
  17.    private double termoB;  
  18.    private double termoC;  
  19.   
  20.    public Baskara(double a, double b, double c) {  
  21.       termoA = a;  
  22.       termoB = b;  
  23.       termoC = c;  
  24.    }  
  25.   
  26.    public double getDelta() {  
  27.       return (termoB * termoB) - (4 * termoA * termoC);  
  28.    }  
  29.   
  30.    public double getX1() {  
  31.       return ((-1 * termoB) + Math.sqrt(getDelta())) / (2 * termoA);  
  32.    }  
  33.   
  34.    public double getX2() {  
  35.       return ((-1 * termoB) - Math.sqrt(getDelta())) / (2 * termoA);  
  36.    }  
  37. }

vlw

7 Respostas

Adelar

Olá,
vc pode usar o método babilônico, que corresponde a uma aproximação da raiz quadrada. No site da wikipedia http://pt.wikipedia.org/wiki/Raiz_quadrada tem uma explicação de como usá-lo.

att.

guisantogui

Meu, ai o problema eh com a matematica naum com o JAVA muito provavelmente o Google poderia te ajudar mais, ou algum forum de matematica!

Frantic_Avenger
Não sei se isso pode te ajudar masQuando fiz um trabalho para calcular a raiz quadrada o professor tinha me avisado que a entrada de dados iriam ser números quadrados perfeitos, se for seu caso a raiz do número x é a soma dos valores de sua raiz nos primeiros números ímpares. Exemplo.

1 = 1 ( 1 número impar raiz 1)

4 = 1 + 3 (2 números ímpares raiz 2)

9 = 1 + 3 + 5 (3 números ímpares raiz 3)

16 = 1 + 3 + 5 + 7

25 = 1 + 3 + 5 + 7 + 9121 = 1 + 3 + 5 + 7 + 9 + 11 + 13 + 15 + 17 + 19 + 21

Espero ter ajudado. :wink:

Marky.Vasconcelos

Por curiosidade eu fui ver no source do java como isso é feito.

public static double sqrt(double a) {
	return StrictMath.sqrt(a);
    }

Com entusiasmo fui ver na classe StrictMath.sqrt e achei isso.

public static native double sqrt(double a);

Só falta alguem olhar nos códigos nativos da API para descobrir.

B

http://hg.openjdk.java.net/jdk6/jdk6-gate/jdk/file/a42d6999734b/src/share/native/java/lang/fdlibm/src/e_sqrt.c

tauame

http://hg.openjdk.java.net/jdk6/jdk6-gate/jdk/file/a42d6999734b/src/share/native/java/lang/fdlibm/src/e_sqrt.c

lol :stuck_out_tongue:

walissongpi
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 *
 * @author Walisson Pereira de Sousa
 * Ciencia da Computação - 7º Período
 */
public class Raiz2 {

    public static void main(String[] args) {
        List<Integer> list=  new ArrayList<Integer>();

        System.out.println("digite um numero: ");
        int n=new Scanner(System.in).nextInt();
        
        for(int i=2;i<=n;i++){
            if(n%i==0){
                while(n%i==0){
                    n/=i;
                list.add(i);
                }
            }
            
        }
        
        for(int i=0;i<list.size()-1;i+=2){
           
        }

        int raiz=1;
        for(int i=0 ;i<list.size();i=i+2){
             if(list.get(i)!=list.get(i+1)){
                System.out.println("não foi possivel calcular a raiz quadrada deste numero...");
                System.exit(0);
            }

            raiz*=list.get(i);
        }
        System.out.println("raiz eh: "+raiz);
    }

}

testem e apontem os erros. Ele só funciona com números que possuem raiz quadrada "inteira".

Criado 5 de maio de 2010
Ultima resposta 5 de mai. de 2010
Respostas 7
Participantes 8