error using fzero in a loop

1 view (last 30 days)
Tristan
Tristan on 20 Oct 2013
Commented: dpb on 21 Oct 2013
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

Accepted Answer

dpb
dpb on 20 Oct 2013
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 Comments
Tristan
Tristan on 20 Oct 2013
I'm trying to find a way to calculate the position of the antinodes (the maximas and minimas) of a waveworm=sum(nwa.*cos(d.*(pi./n))) by using its derivative, and then using fzero starting at all the midpoints between consecutive multiples of n between 0 and 10.
dpb
dpb on 21 Oct 2013
There's an example in the doc on fzero using trig functions for formulation that should be illustrative.

Sign in to comment.

More Answers (0)

Categories

Find more on Optimization in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!