这是一个程序,它要求用户输入一个数字(变量 r)来找到它的正根,然后要求一个起始区间 [a,b]。这是在一些 HTML 代码中完成的。它下面的 javascript 在 while 循环中具有线性插值的代码。
function everything() {
r= document.getElementById('ri').value*1;
a= document.getElementById('ai').value*1;
b= document.getElementById('bi').value*1;
bisect(function(x){return x*x-r;},a,b);
}
function bisect(f,a,b) {
var avg,fa,fb;
avg = NaN;
while (Math.abs(a-b)>1e-10) {
fa=f(a);
fb=f(b);
if(fa*fb<0) {
grad=(fb-fa)/(b-a);
avg=a-(fa/grad);
favg=f(avg);
} else {
alert('There has been an error. Redifine the interval A to B');
break;
}
if (fa*favg<0) {
b=avg;
} else {
a=avg;
}
}
alert(avg);
}
这段代码的问题是它返回错误文本,最后是 avg 的最终值。这是个问题。