牛顿迭代法matlab程序
时间: 2023-09-07 12:11:58 浏览: 279
下面是用MATLAB实现牛顿迭代法的示例代码:
```matlab
function [x, fx, n] = newton(fun, dfun, x0, tol, maxiter)
% fun: 目标函数
% dfun: 目标函数的导数
% x0: 初始点
% tol: 容差
% maxiter: 最大迭代次数
n = 0; % 迭代次数
fx = fun(x0); % 目标函数在初始点的值
x = x0; % 初始点
while abs(fx) > tol && n < maxiter
n = n + 1;
x = x - fx / dfun(x);
fx = fun(x);
end
end
```
其中,`fun`和`dfun`分别表示目标函数和其导数,`x0`是初始点,`tol`是容差,`maxiter`是最大迭代次数。函数返回值 `x` 是迭代得到的解,`fx`是目标函数在解处的值,`n`是迭代次数。
例如,如果我们要求解方程 $x^3 + x - 1 = 0$ 的根,可以使用以下代码:
```matlab
fun = @(x) x^3 + x - 1;
dfun = @(x) 3*x^2 + 1;
x0 = 0; tol = 1e-6; maxiter = 100;
[x, fx, n] = newton(fun, dfun, x0, tol, maxiter);
fprintf('x = %.6f, f(x) = %.6f, 迭代次数 = %d\n', x, fx, n);
```
输出结果为:
```
x = 0.682328, f(x) = 0.000000, 迭代次数 = 5
```
说明迭代5次后,得到了精度为 $10^{-6}$ 的解。
阅读全文