平方根近似

时间:2019-04-12 14:16:21

标签: javascript node.js algebra

我正在尝试解决此挑战,但是我不知道我的代码是否错误,或者挑战的措词是否错误。该算法说:

  1. 选择两个数字S,EX的平方根必须在[S,E]的间隔内。
  2. 选择所需的精度e
  3. 当前间隔的中间值M将是一个很好的近似值。
  4. 当间隔[S,E]大于e时,请执行以下操作:

    • 找到当前间隔M的中间值;
    • if M^2 > xE = M,否则,S = M
    • 当长度 我们的间隔小于e的平方根X = M

下面的代码会产生无限循环:

e = 0.001; //I want square root of 10
n = "10";
x = parseInt(n);
E = (x / 2);
S = 1;
M = ((E - S) / 2);
tam = (E - S);
while (tam >= e) {
 console.log(M)
 if ((M * M) > x) {
   E = M;
 } else {
   S = M
 };
 M = ((E - S) / 2);
 tam = (E - S);
}
console.log(n + ": " + M);

谢谢

1 个答案:

答案 0 :(得分:1)

您没有正确找到间隔的中点。您应该将ES相加并除以2,而不是减去。

e=0.001; //I want square root of 10
   n="10";
   x=parseInt(n);
   E=(x/2);
   S=1;
   M=((E+S)/2);
   tam = (E-S);
   while(tam>=e){
       console.log(M)
       if ((M*M)>x){E=M;}else{S=M};
       M=((E+S)/2);
       tam = (E-S);
   }   console.log(n+": "+M);