MATLAB 立方根表计算:牛顿迭代法与平行弦法
% 构造立方根表 clc clear
% 牛顿迭代法 fprintf('牛顿迭代法\n') fprintf(' k x_k\n') fprintf('------------\n') for k = 101:111 % 初始值 x = k/10; % 迭代过程 for i = 1:10 x = x - (x^3-k)/(3*x^2); end fprintf('%2d %.6f\n', k, x) end
% 简单牛顿迭代法(平行弦法) fprintf('\n简单牛顿迭代法(平行弦法)\n') fprintf(' k x_k\n') fprintf('------------\n') for k = 101:111 % 初始值 x = k/10; x0 = x - 0.1; % 迭代过程 for i = 1:10 x1 = x - (x^3-k)/(3x^2); x2 = x0 - (x0^3-k)/(3x0^2); x = x1 - (x1-x2)/(3x1^2-2x1*x2+x2^2); x0 = x1; end fprintf('%2d %.6f\n', k, x) end
% 输出立方根表 fprintf('\n立方根表\n') fprintf(' k x_k\n') fprintf('------------\n') x1 = zeros(11,1); x2 = zeros(11,1); for k = 101:111 % 牛顿迭代法 x = k/10; for i = 1:10 x = x - (x^3-k)/(3x^2); end x1(k-100) = x; % 简单牛顿迭代法(平行弦法) x = k/10; x0 = x - 0.1; for i = 1:10 x1 = x - (x^3-k)/(3x^2); x2 = x0 - (x0^3-k)/(3x0^2); x = x1 - (x1-x2)/(3x1^2-2x1x2+x2^2); x0 = x1; end x2(k-100) = x; end x = [x1 x2]; fprintf('%2d %.6f %.6f\n', [101:111; x'])
原文地址: https://www.cveoy.top/t/topic/nmHK 著作权归作者所有。请勿转载和采集!