初学编程,教材中有一个地方看不懂,请坛友们指点

2019-07-17 13:40发布

本帖最后由 fxwangwei87 于 2015-7-15 09:37 编辑

1:书中编写了牛顿求根的函数文件,如下:


function [x,iter,X]=newton_w(f,x0,eps,maxiter)
if nargin<2
   error('输入参数至少2个');
end
if nargin<3|isempty(eps)
   eps=1e-6;
end
if nargin<4|isempty(maxiter)
   maxiter=1e4;
end
err=1;k=0;
df=inline(diff(f));
while err>eps
      k=k+1;
      fx0=feval(f,x0);
      dfx0=feval(df,x0);
   if dfx0==0
      error('daoshu wei 0,tingzhijisuan');
   end
      x1=x0-fx0/dfx0;
      err=abs(x1-x0);
     x0=x1;
     X(k)=x1;
end
if k>=maxiter
   error('excess the limitn');
end
x=x1;
iter=k;
X=X';


上述文件中红 {MOD}地方是我添加的,因为原来的函数文件中没有df=diff(f),只有下面的那个红 {MOD}语句:[fx0,dfx0]=feval(f,x0);运行的话运行不下去,改了那两句后,运行依然提示有问题: Error using ==> diff
Function 'diff' is not supported for class 'function_handle'.我想问一下,这个地方是不是需要编写另一个求导的函数文件?需要的话,是要重新建立函数文件吗?还是跟上面的函数文件放在一个函数文件里作为子函数呢?还请坛友们指点一下小弟,谢谢了~
ps:书中求根调用这个函数文件的时候,对函数进行了描述,编写了另外2个函数文件,但是我没看懂.....
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。