methodBisection[left_, right_, eps_ : 0.001] := Block[{func},
func = Sin[
#] - Cos[#
] &;
Mean@NestWhile[
If[func[Mean@
#]*func[#
[[2]]] < 0., {Mean@#, #[[2]]}, {#[[1]],
Mean@#}] &, {left, right}, (Abs@*Subtract
@@ # /2.> eps) &]];
methodBisection[-1., 2.]
这里使用了 NestWhile 进行二分法迭代.
假设被求零点的函数是SIn[x]-Cos[x], 这可以任意修改, 区间左侧端点left为x=-1., 右侧端点right为x=+2, 容许误差为eps