MATLAB立方根表生成:牛顿迭代法与平行弦法
% 构造立方根表
% 牛顿迭代法 % x(n+1) = (2x(n) + a/(x(n)^2))/3 % 简单牛顿迭代法(平行弦法) % x(n+1) = x(n) - f(x(n))/(f(x(n))-f(x(n-1)))(x(n)-x(n-1))
clc; % 清屏 format short; % 控制小数点后的位数 a = [101:111]; % 待求的数 x1 = zeros(11,1); % 牛顿迭代法的初值 x1(:,1) = a(:); % 初值为待求数 x2 = zeros(11,2); % 简单牛顿迭代法的初值 x2(:,1) = a(:); % 初值为待求数 x2(1,2) = 1; % 简单牛顿迭代法的第二个初值
% 牛顿迭代法 for i = 1:11 % 循环求解每一个数的立方根 for j = 1:20 % 最多迭代20次 x1(i,j+1) = (2*x1(i,j)+a(i)/(x1(i,j)^2))/3; % 迭代公式 if abs(x1(i,j+1)-x1(i,j))<1e-7 % 当迭代值与上一次值的差小于1e-7时,认为已经求得近似解 break; % 跳出迭代 end end end
% 简单牛顿迭代法(平行弦法) for i = 1:11 % 循环求解每一个数的立方根 for j = 2:20 % 最多迭代20次 x2(i,j) = x2(i,j-1) - (x2(i,j-1)^3-a(i))/(x2(i,j-1)^2-x2(i(i-1),j-1)*x2(i,j-1)+x2(i-1,j-1)^2); % 迭代公式 if abs(x2(i,j)-x2(i,j-1))<1e-7 % 当迭代值与上一次值的差小于1e-7时,认为已经求得近似解 break; % 跳出迭代 end end end
% 输出结果 disp('牛顿迭代法:'); disp(num2str([a' x1(:,2:end)],'%10.6f')); % 数组转字符串,并保留6位有效数字 disp('简单牛顿迭代法:'); disp(num2str([a' x2(:,2:end)],'%10.6f')); % 数组转字符串,并保留6位有效数字
原文地址: https://www.cveoy.top/t/topic/nmH7 著作权归作者所有。请勿转载和采集!