Filter löschen
Filter löschen

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

2 Ansichten (letzte 30 Tage)
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

Akzeptierte Antwort

Star Strider
Star Strider am 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 Kommentare
Eric Daiber
Eric Daiber am 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 am 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?

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Tags

Noch keine Tags eingegeben.

Community Treasure Hunt

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

Start Hunting!

Translated by