Rn na verdade vai ser o número que foi calculado na interação n. Você realmente não precisa de vetores para isso. Por exemplo, se definissemos:
rn=n/2;
O algoritmo seria:
for (int n = 0; n < 10; n++) {
rn = n / 2;
}
claudneto
Mas o rn+1, r0, r1…não preciso do valor do anterior pra calcular?
r1=1/2*(r0+x/r0)
Pra calcular o r1…eu preciso do r0. Ou não?
ViniGodoy
Sim, mas pela sua fórmula você precisa de 2 valores.
rn-1 e rn, ou seja, o valor de r na interação anterior e nessa. E para isso, usa-se 2 variáveis.
claudneto
Isso é verdade.
Vou tentar pensar em algo com isso.
Valeu!
peczenyj
doubler=x,r_proximo,episilon;for(intn=1;n<LIMITE_ITERACOES;n++){r_proximo=0.5*(r+x/r);if(Math.abs(r_proximo-r)<episilon){break;// encontrou, sai do loop}r=r_proximo;}
claudneto
Bom, eu fiz, mas ele sempre retorna 0!
Grrrrrr...
public double raizQuadrada (double x) {
//rn1 refere-se ao rn+1 (quando rn1 = (x + 1) / 2 => rn1 quando rn = x)
double rn1 = (x + 1) / 2;
//rn refere-se ao rn (quando rn = x => estimativa inicial)
double rn = x;
while (absoluto(rn1 - rn) >= epsilon) {
rn1 = 1 / 2 * (rn + (x / rn));
rn = rn1;
}
return rn;
}
Não tenho nem idéia do pq isso está acontecendo!
Obs.: O método absoluto retorna o módulo do valor passado como parâmetro!
E
entanglement
1 / 2, em Java, é zero.
Use 1.0 / 2.0, que dá 0.5.
OK?
peczenyj
1- adicione varios System.out.println(“passei por aqui linha X”); em cada ponto do seu programa
2- estude sobre como funciona um debugger (basicamente sobre o que é um breakpoint).
claudneto
entanglement:
1 / 2, em Java, é zero.
Use 1.0 / 2.0, que dá 0.5.
OK?
A raíz quadrada de 63 é 32? Hahahaha…foi o que apareceu!
Principalmente ao peczenyj que me lembrou do Debugger! Foi com ele que eu consegui...apenas tive que inverter a ordem das atribuições, pois no fim, a diferença era 0 e ele saia do laço!