Error: using fmincon with integral function
    5 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!


