youyubobo 发表于 2010-9-12 17:43

新手求助—函数调用方面的问题

这是我主程序的一部分,x(:,1)是ode45求出来的一组数,t_T和t_0也都赋值了,运行过程中fzero调用df出错,但我不知道怎么改正,请求高手指点,谢谢!!
x_1=poly2sym(x(:,1),'t');
TL=(t_T-t_0);
dF=0;
F=0;
for ni=1:5
    syms t
    ani=2.*int(x_1.*cos(2.*ni.*pi.*t./TL),t,-TL./2,TL./2)./TL;
    bni=2.*int(x_1.*sin(2.*ni.*pi.*t./TL),t,-TL./2,TL./2)./TL;
    dF=dF+(ani.*2.*ni.*pi./TL).*sin(2.*ni.*pi.*t./TL)+(bni.*2.*ni.*pi./TL).*cos(2.*ni.*pi.*t./TL);
    F=F+ani.*cos(2.*ni.*pi.*t./TL)+bni.*sin(2.*ni.*pi.*t./TL);
end
t=fzero(df,tspan);
给出的错误是这样的:
??? Error using ==> error
When the first input is a message identifier, the second input
must be a string.
Error in ==> fzero at 157
    error('MATLAB:fzero:InvalidFUN',msg)
Error in ==> shoot2 at 36
t=fzero(df,tspan);

qibbxxt 发表于 2010-9-12 20:36

建议你用匿名函数或者函数文件的形式构造dF
例如:
f = @(x)x.^3-2*x-5;
z = fzero(f,2)
z =
    2.0946

Happy99 发表于 2010-9-13 00:21

是df还是dF?? 大小写是不一样的!

youyubobo 发表于 2010-9-13 09:02

回复 qibbxxt 的帖子


    但是在这个程序中,我不会用匿名函数构造,因为是上一步中得到的,请指点!!谢谢!

youyubobo 发表于 2010-9-13 09:03

回复 Happy99 的帖子


    对不起,是书写错误,我昨天在各种试的过程的误写的,谢谢指正!!
页: [1]
查看完整版本: 新手求助—函数调用方面的问题