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
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
R
rodsoliver
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!
RobsonCassol
Hum então vc quer implementar o teorema de bolzano, qual exatamente a dificuldade ? vc travou em que ponto?
R
rodsoliver
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!
R
rodsoliver
tentei fazer esse metodo, mas esta dando looping alguem pode me ajudar?
classRaizCubica{privatestaticdoubleEPSILON=1E-8;privatestaticbooleanenough(doubler,doublex,doubleepsilon){returnMath.abs((r*r*r-x)/x)<epsilon;}publicstaticdoubleraizCubica(doublex){// 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)return0;if(x<0)return-raizCubica(-x);if(Math.abs(x)<1.0)return1.0/raizCubica(1.0/x);doublea=0;doubleb=x;doubler=(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;}returnr;}publicstaticvoidmain(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([telefoneremovido].0,3)};for(doublet:teste){System.out.printf("%g: %g - %g%n",t,raizCubica(t),Math.cbrt(t));}}}
R
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!
camillotus
Ta chegando einh…rsrsrs…quinta - feira…
E
entanglement
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!
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.