二分法求根的Matlab程序
时间: 2023-06-10 18:08:34 浏览: 118
以下是二分法求根的 Matlab 程序:
```matlab
function [root, iter] = bisection(f, a, b, tol, max_iter)
% f: 函数句柄
% a, b: 区间 [a, b]
% tol: 精度要求
% max_iter: 最大迭代次数
% 初始化
iter = 0;
fa = f(a);
fb = f(b);
if fa * fb > 0
error('函数在区间两端点处取值符号相同,无法使用二分法求解!');
end
% 迭代
while iter < max_iter
iter = iter + 1;
c = (a + b) / 2;
fc = f(c);
if abs(fc) < tol
break;
end
if fa * fc < 0
b = c;
fb = fc;
else
a = c;
fa = fc;
end
end
% 输出结果
root = c;
if iter == max_iter
warning('达到最大迭代次数,未达到指定精度!');
end
```
使用方法:
1. 将上述代码保存为一个 `.m` 文件,如 `bisection.m`。
2. 在 Matlab 命令窗口中输入 `help bisection` 查看使用说明。
3. 调用该函数,传入函数句柄、区间、精度要求和最大迭代次数等参数,即可得到根和迭代次数。
例如,求函数 $f(x)=x^3-x^2-1$ 在区间 $[1, 2]$ 中的一个根:
```matlab
f = @(x) x^3 - x^2 - 1;
a = 1;
b = 2;
tol = 1e-6;
max_iter = 100;
[root, iter] = bisection(f, a, b, tol, max_iter);
disp(['根为 ', num2str(root), ',迭代次数为 ', num2str(iter)]);
```