error using fzero in a loop
3 次查看(过去 30 天)
显示 更早的评论
I'm trying to find all the points between 0 and 10 where the derivative of y=0 by using (x1(H)+x2(H))/2) as a staring point but I keep on getting this error... Please help :(
Error using fzero (line 169) If FUN is a MATLAB object, it must have an feval method.
h=10;
ti=(1/200);
n=[1.2 2.9];
ni=[1 3];
na=[2 1];
x=[];
for k=1:numel(n)
x=sort([x (((0:1:1+(ceil(h/(n(k)))))-0.5)*(n(k)))]);
end
x1=(x(1:numel(x)-1));
x2=(x(2:numel(x)));
for T=[1:10];
nwa=[na.*sin((T*ti)*(pi./(ni)))];
for H=(1:numel(x1))
syms d;
y=sum(nwa.*cos(d.*(pi./n)));
X(H)=fzero(diff(y),(x1(H)+x2(H))/2);
end
P=(X(X>x1<x2))';
end
0 个评论
采纳的回答
dpb
2013-10-20
From the doc's for fzero
X = fzero(FUN,X0) ... FUN is a function handle.
Your code is
X(H)=fzero(diff(y),(x1(H)+x2(H))/2);
where you've entered an actual function.
4 个评论
dpb
2013-10-21
There's an example in the doc on fzero using trig functions for formulation that should be illustrative.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Surrogate Optimization 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!