牛顿迭代法求方程的根MATLAB程序代码
时间: 2024-11-07 22:03:58 浏览: 32
牛顿迭代法是一种常用的数值方法,用于逼近非线性方程的根。在MATLAB中,你可以通过以下步骤编写一个简单的牛顿迭代法求解函数零点的程序:
```matlab
% 定义牛顿迭代法函数
function root = newtonMethod(f, df, x0, tol, maxIter)
% 输入检查
if nargin < 5
error('Not enough input arguments.');
end
% 初始猜测值
iter = 0;
prevRoot = x0;
while abs(root - prevRoot) > tol && iter < maxIter
% 计算函数值和导数
rootNew = prevRoot - f(prevRoot) / df(prevRoot);
% 更新迭代值
prevRoot = rootNew;
iter = iter + 1;
end
% 检查是否达到最大迭代次数
if iter == maxIter
warning('Maximum number of iterations reached.');
end
% 返回最终结果或警告
if iter >= maxIter
disp(['No solution found within tolerance. Final iteration: ' num2str(iter)]);
else
root = rootNew;
end
end
% 示例:求解x^3 - 2x^2 + 5 = 0的一个近似根,假设f(x) = x^3 - 2x^2 + 5, df(x) = 3x^2 - 4x
f = @(x) x.^3 - 2*x.^2 + 5;
df = @(x) 3*x.^2 - 4*x; % 导数函数
% 设置初始猜测值、精度和最大迭代次数
x0 = 1; % 可以尝试改变这个值
tol = 1e-6;
maxIter = 100;
% 调用函数并打印结果
root = newtonMethod(f, df, x0, tol, maxIter);
disp(['Solution found at: ' num2str(root)]);
阅读全文