newton1.m
来自「数值分析, 同济大学教材<<现代数值数学和计算>>数值分」· M 代码 · 共 49 行
M
49 行
function [x,it,hist]=newton1(x0,f,g,maxit,tol,dnhl)
%%
%% find the zero of function f by Newton method
%% Usage [x,it,hist]=newton(x0,f,g,maxit,tol,dnhl)
%% f function
%% g gradient
%% dnhl 1: downhill search
%% 0: no search, steplength = 1
%%
if nargin<6, dnhl = 1;
if nargin<5, tol = 1e-6;
if nargin<4, maxit = 100;
if nargin<3, error('too few input!!');
end; end; end; end;
x = x0;
hist = x;
fx = feval(f,x);
for it = 1:maxit,
if norm(fx)<=tol,
disp('Newton Iteration successes!!')
return;
end
d = feval(g,x)\fx;
if dnhl==1,
lambda = 1.0;
xn = x - d;
fn = feval(f,xn);
while norm(fn)>=norm(fx),
lambda = lambda * 0.85;
if lambda<tol,
error('too short step!!');
end
xn = x - lambda * d;
fn = feval(f,xn);
end
x = xn;
fx = fn;
else
x = x - d;
fo = fx;
fx = feval(f,x);
if norm(fx)>norm(fo),
warning('an uphill direction!!');
end
end
hist = [hist x];
end
disp('Newton Iteration fails!!');
%% end of newton
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?