Ajudem um novato XD

3 respostas
A

Bom, é um exercício de facul… e to no 1° período, então peguem leve q to bem no começo…

É sobre raiz quadrada eu implementei o método babilônico que foi assim:

public static double raizQuadrada(int n, int i) {

if (n <= 0) {

throw new IllegalArgumentException();

}

double r = 1;

while (i >= 0) {

r = (r + n / r) / 2;

i;

}

return r;

}

Porém o professor quer que eu forneça uma ‘margem de erro para assegurar que a raiz não esteja errada’… e disse pra mim colocar o nome de raizQuadradaDelta (vai que isso ajuda ^^)

Não quero o código, só que alguem me explique o q eu tenho q fazer… tipo, q margem de erro é essa…

3 Respostas

khaoz

Você precisa de duas coisas:

  1. Isso
  2. Pesquisar sobre tratamento de exceções no java (try catch)

:wink:

EDITADO: Depois que eu entedi. É “margem” e não “mensagem” de erro então usa a resposta 2 apenas para estudo mesmo :stuck_out_tongue:
Quanto a questão da “margem para assegurar que a raiz não esteja errada”, não entendi. O que é uma raiz quadrada errada ?

CintiaDR

Talvez o seu professor se referisse a algum erro de arredondamento.

Verifique sua divisão, ela provavelmente não está gerando um número de ponto flutuante (“com vírgula”).

T

O que ele queria é isto aqui:

class TesteRaizQuadrada {

    public static double raizQuadrada(int n, int i) {
        if (n <= 0) {
            throw new IllegalArgumentException();
        }
        double r = 1;
        while (i >= 0) {
            r = (r + n / r) / 2;
            i--;
        }
        return r;
    } 

    public static double raizQuadradaDelta(double n, double delta) {
        if (n <= 0 || delta <= 0.0) {
            throw new IllegalArgumentException();
        }
        double r = 1;
        double dif = n;
        while (dif > delta) {
            dif = r;
            r = (r + n / r) / 2;
            dif = Math.abs (dif - r);
        }
        return r;
    } 

    public static void main(String[] args) {
        System.out.println (Math.sqrt (2.0)); // 1.4142135623730951
        System.out.println (TesteRaizQuadrada.raizQuadrada (2, 3)); // 1.4142135623746899
        System.out.println (TesteRaizQuadrada.raizQuadradaDelta (2.0, 1E-3)); // 1.4142135623746899
    }

}

Leia o código com atenção e entenda o que seu professor sugeriu fazer.

Criado 4 de junho de 2009
Ultima resposta 4 de jun. de 2009
Respostas 3
Participantes 4