使用matlab编写程序用牛顿下山法求解方程fx=x3-x-1=0在x=15附近的根1使用牛顿下山法下山因子从1开始2初值x0为043不要定义函数4输出下山成功时的下山因子5输出迭代的次数
% 牛顿下山法求解方程f(x)=x^3-x-1=0在x=1.5附近的根 % 下山因子从1开始,初值x0为0.4
x0 = 0.4; % 初值 max_iter = 100; % 最大迭代次数 tol = 1e-6; % 精度要求
x = x0; % 初始值 alpha = 1; % 初始下山因子 iter = 0; % 迭代次数
while iter < max_iter f = x^3 - x - 1; % 函数值 df = 3x^2 - 1; % 导数值 dx = -f/df; % 牛顿下山法迭代公式 if abs(dx) < tol % 迭代精度达到要求 break; end if f(x+dx)^3 - (x+dx) - 1 < f*(x+dx)^3 - x - 1 % 判断是否需要下山 alpha = 1; % 重新设置下山因子 else alpha = alpha/2; % 下山因子减半 end x = x + alpha*dx; % 下山迭代公式 iter = iter + 1; % 迭代次数加1 end
if iter >= max_iter % 迭代失败 disp('迭代失败'); else % 迭代成功 fprintf('迭代成功,下山因子为%f,迭代次数为%d\n', alpha, iter); fprintf('方程的解为%f\n', x); end
原文地址: https://www.cveoy.top/t/topic/b17v 著作权归作者所有。请勿转载和采集!