Calcular raiz quadrada sem o Math.sqrt

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?

[code] 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. }

[/code]

vlw

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.

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!

Não sei se isso pode te ajudar mas…
Quando 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 + 9

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

Espero ter ajudado. :wink:

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.

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

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

lol :stuck_out_tongue:

[code]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 list= new ArrayList();

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

    }

}[/code]

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