本帖最后由 fxwangwei87 于 2015-7-15 09:37 编辑
1:书中编写了牛顿求根的函数文件,如下:
func
tion [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个函数文件,但是我没看懂.....
一周热门 更多>