Error: using fmincon FMINCON requires all values returned by functions to be of data type double.
2 views (last 30 days)
Show older comments
I am getting an error when running this code. It will be helpful if you could help.
%% Input
syms d
G1 = 3e6;
p = 1;
G0 = 1e8;
k0 = 0.004;
k1 = 0.003;
%% Calculation
D = [cos(k1*d) sin(k1*d)*p/(G1*k1)*1i; sin(k1*d)*(G1*k1)/p*1i cos(k1*d)];
L = [2*p/k0*cos(5*k0) sin(5*k0)*2*p/k0*1i; sin(5*k0)*2*G0*1i 2*G0*cos(5*k0)];
B = D*L;
B1 = B(1,1);
B2 = B(1,2);
B3 = B(2,1);
B4 = B(2,2);
answer = (2*p*(B4-B3)-2*k0*G0*(B2-B1))/(k0*(B1+B2)*(B4-B3)-k0*(B4+B3)*(B2-B1));
magnitude = abs(answer);
%% Optimization
fun = @(d)magnitude;
d0 = 0.5;
A = [];
b = [];
Aeq = [];
beq = [];
lb = 0;
ub = Inf;
[s,fval] = fmincon(fun,d0,A,b,Aeq,beq,lb,ub); %minimize
0 Comments
Accepted Answer
Dyuman Joshi
on 9 Nov 2023
%% Input
syms d
G1 = 3e6;
p = 1;
G0 = 1e8;
k0 = 0.004;
k1 = 0.003;
%% Calculation
D = [cos(k1*d) sin(k1*d)*p/(G1*k1)*1i; sin(k1*d)*(G1*k1)/p*1i cos(k1*d)];
L = [2*p/k0*cos(5*k0) sin(5*k0)*2*p/k0*1i; sin(5*k0)*2*G0*1i 2*G0*cos(5*k0)];
B = D*L;
B1 = B(1,1);
B2 = B(1,2);
B3 = B(2,1);
B4 = B(2,2);
answer = (2*p*(B4-B3)-2*k0*G0*(B2-B1))/(k0*(B1+B2)*(B4-B3)-k0*(B4+B3)*(B2-B1));
magnitude = abs(answer);
%% Optimization
fun = matlabFunction(magnitude, 'Vars', d);
d0 = 0.5;
A = [];
b = [];
Aeq = [];
beq = [];
lb = 0;
ub = Inf;
[s,fval] = fmincon(fun,d0,A,b,Aeq,beq,lb,ub) %minimize
More Answers (0)
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!