Clear Filters
Clear Filters

Why Undefined operator '==' for input arguments of type 'function_handle'

2 views (last 30 days)
Why do I receive the following error every time I run? "Why Undefined operator '==' for input arguments of type 'function_handle'"
Y = @(m,y) sin(theta)*m - cos(theta)*m - Q/(2*pi)*atan((m/y))
x=[];
for y = -100:0.1:100
x=[x; fzero(@(m,y) Y,25)];
end
Thanks, Eric

Accepted Answer

Star Strider
Star Strider on 23 Sep 2016
The fzero function solves for functions of one variable. You have two, so you would have to use fsolve or another optimisation function, and you have to address them as a vector of parameters for any of the optimisation functions to work.
I have no idea what you want to do, but this is one approach that will probably work:
Q = ...;
theta = ...;
m = ...;
Y = @(m,y) sin(theta)*m - cos(theta)*m - Q./(2*pi)*atan((m./y));
x=[];
for y = -100:0.1:100
yi = fzero(@(y) Y(m,y),25)
x=[x; yi];
end
  2 Comments
Eric Daiber
Eric Daiber on 23 Sep 2016
So I put this into Matlab and the error showing up now is: Operands to the and && operators must be convertible to logical scalar values.
Error in fzero (line 306) elseif ~isfinite(fx) ~isreal(fx)
Error in Trial3 (line 12) yi = fzero(@(y) A(m,y),25)
What is wrong? I am new to this.
Star Strider
Star Strider on 23 Sep 2016
In the code you posted, you did not state what ‘Q’, ‘theta’, and ‘m’ are, so I suspect the problem is with one of them and the result of the calculations with them in your ‘Y’ function.
Please describe a bit about what you’re doing. That would help me discover where the problems may be.
Also, to clarify:
Q./(2*pi)*atan((m./y)) is the same as atan(m./y)*Q./(2*pi)
Is that what you intend?

Sign in to comment.

More Answers (0)

Tags

No tags entered yet.

Community Treasure Hunt

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

Start Hunting!