bisect.m

来自「这是一些关于MATLAB的小程序」· M 代码 · 共 15 行

M
15
字号
function x = bisect(fname,a,b,e)
% 用途:二分法解非线性方程f(x) = 0
% 格式:x = bisect(fname,a,b,e)  fname为用函数句柄或内嵌函数表达的
%      f(x),a,b为区间端点,e为精度(默认值10e-4),x返回解,程序要求函数在
%      两端点值必须异号,中间变量fa,fb,fx引入可以最大限度减少fname调用次数,
%      从而提高速度
if nargin<4,e = 1e-4;end;
fa = feval(fname,a);fb = feval(fname,b);
if fa*fb>0,error('函数在两端点值必须异号');end
x = (a+b)/2
while(b-a)>(2*e),
    fx = feval(fname,x);
    if fa*fx<0,b = x;fb = fx;else a = x;fa = fx;end
    x = (a+b)/2
end

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?