Error: using fmincon with integral function
4 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Manoj Manoj
le 13 Nov 2023
Réponse apportée : Walter Roberson
le 13 Nov 2023
I am using integral and fmincon simultaneously but I am getting an error. I want to integrate magnitude wrt p and then optimize the objective function wrt to d.
%% Input
syms d p
G1 = 3e6
G0 = 1.25e8;
V0 = 250;
k0 = p/V0;
V1 = 316;
k1 = p/V1;
%% 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);
I = matlabFunction(amgnitude,"Vars",[p d]);
options = optimset('PlotFcns',@optimplotfval);
d0 = 0.5;
A = [];
b = [];
Aeq = [];
beq = [];
lb = 0;
ub = Inf;
nonlcon = [];
[s,fval] = fmincon(integral(I,0,10),d0,A,b,Aeq,beq,lb,ub,nonlcon,options); %minimize
0 commentaires
Réponse acceptée
Walter Roberson
le 13 Nov 2023
%% Input
syms d p
G1 = 3e6
G0 = 1.25e8;
V0 = 250;
k0 = p/V0;
V1 = 316;
k1 = p/V1;
%% 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);
I = matlabFunction(magnitude,"Vars",[p d]);
options = optimset('PlotFcns',@optimplotfval);
d0 = 0.5;
A = [];
b = [];
Aeq = [];
beq = [];
lb = 0;
ub = Inf;
nonlcon = [];
[s,fval] = fmincon(@(d)integral(@(p)I(p,d),0,10),d0,A,b,Aeq,beq,lb,ub,nonlcon,options); %minimize
0 commentaires
Plus de réponses (0)
Voir également
Catégories
En savoir plus sur Solver Outputs and Iterative Display dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
