matlab二分法求方程的根
时间: 2023-10-26 09:07:55 浏览: 145
二分法是一种简单有效的求方程根的方法,其基本思想是:对于一个单峰函数,通过不断缩小函数值变号的区间,最终找到函数的零点。
下面是一个用 MATLAB 实现二分法求方程根的示例代码:
function [x, iter] = bisection(f, a, b, tol, maxiter)
% f: 待求根的函数
% a, b: 初始区间
% tol: 容差
% maxiter: 最大迭代次数
% x: 方程根
% iter: 迭代次数
fa = f(a); % 计算 a 处的函数值
fb = f(b); % 计算 b 处的函数值
if fa * fb > 0
error('The function has the same sign at both endpoints of the interval.');
end
for iter = 1 : maxiter
x = (a + b) / 2; % 计算区间的中点
fx = f(x); % 计算中点处的函数值
if abs(fx) < tol
break;
elseif fx * fa < 0
b = x;
fb = fx;
else
a = x;
fa = fx;
end
end
if iter == maxiter
warning('The maximum number of iterations has been reached.');
end
end
使用示例:
f = @(x) x^3 - 2*x - 5;
a = 1;
b = 3;
tol = 1e-6;
maxiter = 100;
[x, iter] = bisection(f, a, b, tol, maxiter);
fprintf('The root of the equation is %f (iteration: %d).\n', x, iter);
输出结果:
The root of the equation is 2.094559 (iteration: 23).
阅读全文