Metodo bolzano

alguem sabe como poderia implementar um metodo , parara calcular a raiz cubica
pelo metodo de bolzano? ou seja sem usar o metodo Math. ou seja de maneira
que dado uma aproximação por construtor, fazer o calculo. por ex

class Raizes1{
  
  double _epsilon;
  double _atual = 0;
  
  public Raizes1(double epsilon){
    
    _epsilon = epsilon;
  }
  public double raizCubica(double numero){

//aqui ele fazer o calculo pelo metodo de bolzano
}
}

Cara ta faltando matemática!!!

a raiz de um número é igual ao número cm expoente 1/x onde x é o radical por exemplo:
raiz quadrada de 9 é igual a 9 elevado a 1/2
raiz cúbica de 9 é igual a 9 elevado a 1/3

então robson, isso eu to ligado, conheço sim essas partes do calculo da raiz, mas naum conheço o metodo de bolzano, quer dizer sei mais ou menos como funciona, o problema é trasfomalo em código, dado um numero ele faz de maneira interativa, ou seja utilizando o valor anterior calculado, ate que a precisão do calculo solicitado seja satisfeita, no caso a precisão seria o epsilon dado no contrutor!

Hum então vc quer implementar o teorema de bolzano, qual exatamente a dificuldade ? vc travou em que ponto?

então robson ,naum se vc conhece esse metodo.
Suponha que desejamos extrair a raiz cubica de um numero real x > 0. Escolhe-se como
estimativa inicial para raiz cubica de x, o numero r0 = (a0+b0)/2, sendo a0 o maior inteiro tal que a ao cubo<= x e b0 = a0 + 1. Calcula-se a seguinte sequencia de numeros: rn= (an +bn)/2, onde a(n+1) = rn e b(n+1) = bn
se rn ao cubo <= x
se rn ao cubo > x: a(n+1) = an e b(n+1) = rn.
ai esse processo é repetido enquanto|rn ao cubo - x| > epsilon! a minha duvida é de como vou utilizar esses an e bn!! espero ter sido claro!

tentei fazer esse metodo, mas esta dando looping alguem pode me ajudar?

public double raizCubica(double numero){
    double anterior =  numero;
    double _atual = (_a0 + _b0)/2;
    if((numero > 0) && (_epsilon > 0) &&(_epsilon <1)){
      while((absoluto(_a0*_a0*_a0)- anterior)<= _epsilon){
        if(_atual*_atual*_atual <= numero){
          _a0 = _atual;
          _b0 = _b0;
          _atual = (_a0 + _b0)/2;
        }
        else if(_atual*_atual*_atual > numero){
          _a0 = _a0;
          _b0 = _atual;
          _atual = (_a0 + _b0)/2;
        }
        else{
          System.out.print("erro!");
        }
      }
    }

Leia este programa e veja o que você pode fazer.

class RaizCubica {

	private static double EPSILON = 1E-8;

	private static boolean enough (double r, double x, double epsilon) {
		return Math.abs ((r * r * r - x) / x) < epsilon;
	}

	public static double raizCubica (double x) {
		// Como é difícil obter a0 e b0 de acordo com o algoritmo, vamos simplesmente considerar a0 = 0, e b0 = n.
		// Isso faz com que o algoritmo demore mais para convergir, mas para nossos efeitos isso é suficiente.
		if (x == 0) return 0;
		if (x < 0) return -raizCubica (-x);
		if (Math.abs (x) < 1.0) return 1.0 / raizCubica (1.0 / x);
		double a = 0;
		double b = x;
		double r = (a + b) / 2;
		while (!enough (r, x, EPSILON)) {
//			System.out.printf ("a=%f, b=%f, r=%f%n", a, b, r);
			if (r * r * r <= x) {
				a = r;
			} else {
				b = r;
			}
			r = (a + b) / 2;
		}
		return r;
	}

	public static void main (String[] args) {
		double[] teste = {
			0.0,
			1.0,
			-1.0,
			Math.pow (0.2, 3),
			Math.PI,
			Math.E,
			Math.pow (123456789.0, 3),
			Math.pow (98765.4321, 3),
			Math.pow (77777777777.0, 3)
		};
		
		for (double t: teste) {
			System.out.printf ("%g: %g - %g%n", t, raizCubica (t), Math.cbrt (t));
		}
	}
}

então entanglement, é que gostaria de implementalo de maneira interativa mesmo, sem usar a função Math,
sera que vc poderia me dar um help, eu entendi uma parte sim do que vc fez, mas queria realmente sem o auxilio do Math, eu sei que facilita, mas queria trainar mais minha lógica, eu consegui fazer o daraiz quadrada com o metodo de newton, acho que ate postei aqui, agora queria fazer o da raiz cubica com o metodo de bolzano!

Ta chegando einh…rsrsrs…quinta - feira…

[quote=rodsoliver]então entanglement, é que gostaria de implementalo de maneira interativa mesmo, sem usar a função Math,
sera que vc poderia me dar um help, eu entendi uma parte sim do que vc fez, mas queria realmente sem o auxilio do Math, eu sei que facilita, mas queria trainar mais minha lógica, eu consegui fazer o daraiz quadrada com o metodo de newton, acho que ate postei aqui, agora queria fazer o da raiz cubica com o metodo de bolzano! [/quote]
Rode meu programa passo-a-passo, e troque Math.abs pela sua função “absoluto”. Entenda por que é que seu programa não deu certo.