newton_finding_roots.m

来自「数值计算中的二分法和牛顿迭代法的演示」· M 代码 · 共 40 行

M
40
字号
% To compute M
% Let f(x) = x^2-M;
% then f'(x) = 2*x;
% the algorithm is 
% x(n+1) = x(n)-f(x(n))/f'(x(n)) = x(n)-(x(n)^2-M)/(2*x(n))
%        = 0.5*(x(n)+M/x(n));
% 第 1 次计算结果:
%    1.50000000000000
% 
% 第 2 次计算结果:
%    1.41666666666667
% 
% 第 3 次计算结果:
%    1.41421568627451
% 
% 第 4 次计算结果:
%    1.41421356237469
% 
% 第 5 次计算结果:
%    1.41421356237309
% 
% 第 6 次计算结果:
%    1.41421356237309
% Newton's method takes only six iterations.
clear all
clc
format('long');
M = 2;
x = 1; % Initial value
xprev = 0;
i = 0;
while abs(x - xprev) > eps*abs(x)
    i=i+1;
    xprev = x;
    x = 0.5*(x + M/x);
    disp(['第 ',num2str(i),' 次计算结果:']);
    disp(x); % Print to screen
end
format('short');

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?