Why Undefined operator '-' in function_handle?

12 Ansichten (letzte 30 Tage)
Jay
Jay am 7 Apr. 2020
Bearbeitet: Walter Roberson am 7 Apr. 2020
When I enter ' H(3) ' in the command line, the following error is shown:
Undefined operator '-' for input arguments of type 'function_handle'.
Error in
Trial_H>@(m)d1+s*(cos(gama)+sum(cos(gama+(pi/2-phi_i))))+((2*r)-omega)*sin(B_j(m))+(r-omega)*sum(sin((1:m-1)*pi-sum(B_j(1:m-1))))
Here is the code:
% Variables
m = 3;
L = 10;
R = 1;
r = R/(m+1);
S = sqrt(2);
s = S/(m+1);
d1 = 1;
d2 = 0.25;
omega = R/(3*(m+1));
gama = atan(R/d1);
% Functions
phi_i = @(ii, m) atan( (d1+(ii*d2)./(m+1) )./(r/3) );
B_j = @(ii, m) 2*phi_i(ii, m);
H = @(m) d1 + s*( cos(gama) + sum(cos(gama+(pi/2-phi_i))) ) + ( (2*r)-omega)*sin(B_j(m) ) + (r-omega)*sum(sin((1:m-1)*pi - sum(B_j(1:m-1))));
  8 Kommentare
Walter Roberson
Walter Roberson am 7 Apr. 2020
Bearbeitet: Walter Roberson am 7 Apr. 2020
H = @(m) d1 + s*( cos(gama) + sum(cos(gama+(pi/2-phi_i))) ) + ( (2*r)-omega)*sin(B_j(m) ) + (r-omega)*sum(sin((1:m-1)*pi - sum(B_j(1:m-1))));
^^^^^^
That is a reference to the anonymous function phi_i but it is not a call to run phi_i with particular parametrs.
B_j = @(ii, m) 2*phi_i(ii, m);
That defines B_j as being a handle to an anonymous function that expects two parameters
H = @(m) d1 + s*( cos(gama) + sum(cos(gama+(pi/2-phi_i))) ) + ( (2*r)-omega)*sin(B_j(m) ) + (r-omega)*sum(sin((1:m-1)*pi - sum(B_j(1:m-1))));
^^^^^^ ^^^^^^^^^^
Those two places, you try to invoke B_j with one parameter.
Where is the ii value coming from that you expect to pass into B_j and phi_i ?
Jay
Jay am 7 Apr. 2020
Bearbeitet: Jay am 7 Apr. 2020
I have to input a value for it. Thank you for the very explicit explanation

Melden Sie sich an, um zu kommentieren.

Antworten (0)

Kategorien

Mehr zu Variables finden Sie in Help Center und File Exchange

Produkte


Version

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by