gett
Maio 5, 2010, 2:12pm
#1
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
Adelar
Maio 5, 2010, 3:45pm
#2
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.
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.
tauame
Maio 5, 2010, 6:40pm
#7
[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”.