当运行它时,它会给出一个未定义的警告框,你能帮我调试这个代码吗?我找不到正确的错误,你可以检查一下,并请帮助我。它必须通过使用越来越小的x=10
给出f(x)=x^2+1
在点h
处的导数,直到达到所需的精度。
function f(x) {
return x * x + 1;
}
var iter = [];
var h = 0;
var ddx = 0;
iter[0] = ((f(10 + h) - f(10)) / h);
function d_dx(p) {
for (i = 1; i < 20; i++) {
iter[i] = ((f(p + h) - f(p)) / h);
if (iter[i] = iter[i - 1]) {
break;
var ddx = iter[i];
} else {
h = h / 2;
}
}
return ddx;
}
console.log(d_dx(10));
发布于 2018-05-31 18:18:13
中断后无法访问var ddx。这就是它返回undefined的原因。还有一件事,您正在使用赋值而不是条件表达式(正确的比较是- if (iteri == iteri - 1))。
返回ddx时,您使用的var ddx超出了作用域。
发布于 2018-05-31 18:21:54
您的iter
数组将为NaN
。h
将始终为0
,并除以0。if (iter[i] = iter[i - 1])
语句错误,应使用===
比较值。如果您想要多次循环此代码,则不能在if
中使用break
。你的代码中有很多错误。
https://stackoverflow.com/questions/50621356
复制相似问题