📄 brent.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 + -