%root是系统保留字。不推荐使用。可以用exist('root')命令测试
% Newton Method
% The first parameter f is a external function with respect to viable x.
% The second parameter df is the first order diffential function of fx.
% x0 is initial iteration point.
% tol is the tolerance of the loop.
% N is the maximum number of iterations.
x=x0
f0=eval(f)df0=eval(df)
n=0
disp(' [ nxn xn+1 fn+1 ]')
while n<=N
x1=x0-f0/df0
x=x1
f1=eval(f)
X=[n,x0,x1,f1]
disp(X)
if abs(x0-x1)<tol
fprintf('The procedure was successful.\n')%改了这里
kk=X%改了这里
return
else
n=n+1
x0=x1f0=f1
end
end
if n==N+1
fprintf('the method failed after N iterations. '),
kk=0%改了这里
end
采用第一个。首先你的两个代码的计算过程和方法以及步骤是一致的。
只不过第二个将k==N放在循环内部判断是没有必要的。
放在while外面,可以节省点计算量。
如果你要求结果精度高一些的话,你调用:
x=nanewton1(fname,dfname,x0,e,N)
时e要小一些,比如说取1e-6这样。
另外:
if nargin<4
e=1e-4 %这个值也下调几个量级,作为缺省的精度。
end
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)