⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 brent.m

📁 c语言数值算法集中brent优化算法的matlab版本
💻 M
字号:
function root = brent(func,a,b,tol)
% a,he b shi zui xiao zhi de fan wei 
%tol shi jing du
%qiu yi ge han shu  zai a ,b nei de  zui xiao zhi


if nargin < 4; tol = 1.0e6*eps; end
x1 = a; f1 = feval(func,x1);
if f1 == 0; root = x1; return; end
x2 = b; f2 = feval(func,x2);
if f2 == 0; root = x2; return; end
if f1*f2 > 0.0
    error('Root is not bracketed in (a,b)')
end
x3 = 0.5*(a + b);
for i = 1:30
    f3 = feval(func,x3);
    if abs(f3) < tol
        root = x3; return
    end
    if f1*f3 < 0.0; b = x3;
    else; a = x3;
    end
    if (b - a) < tol*max(abs(b),1.0)
        root = 0.5*(a + b); return
    end
    denom = (f2 - f1)*(f3 - f1)*(f2 - f3);
    numer = x3*(f1 - f2)*(f2 - f3 + f1)...
        + f2*x1*(f2 - f3) + f1*x2*(f3 - f1);
    if denom == 0; dx = b - a;
    else; dx = f3*numer/denom;
    end
    x = x3 + dx;
    if (b - x)*(x - a) < 0.0
        dx = 0.5*(b - a); x = a + dx;
    end
    if x < x3
        x2 = x3; f2 = f3;
    else
        x1 = x3; f1 = f3;
    end
    x3 = x;
end
root = NaN;





⌨️ 快捷键说明

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