Optimization of complex variables in matlab
I am working with some optimization, I need to find the best $Lxp$ which is a control gain by minimizing the objective function $obj$ wich is the magnitude of the squares of the eigenvalues of phi_sol minus the values I enter $p1$ and $p2$. By programming in Matlab I have done this function.
function obj=objetivo(Lxp)%x,phi,gamma0,gamma1) global phi; %phi=[1 1;0 1] global gamma0; % gamma0=[0.4900; 0.9900] global gamma1; % gamma1=[0.0100; 0.0100] global p1 global p2 phi_sol= [1 0;0 1]; for k=1:100 phi_sol=phi+gamma0*Lxp+ gamma1*Lxp*inv(phi_sol); end E=vpa(eig(phi_sol)) obj=abs((E(1)-p1)^2+(E(2)-p2)^2)
The optimization is done by using fminsearch so I do:
>>options = optimset('MaxFunEvals',10000,'TolFun',10^-11,'MaxIter',100000); >>global p1; global p2; p1=0.7;p2=0.6; >>[XOUT,FVAL,EXITFLAG]=fminsearch(@objetivo,[0.8 0.9],options)
It converges being $XOUT=[-0.1182 -0.6334]$ which is Lxp.
The problem comes when I need to find solution Lxp for complex $p1$ and $p2$, for example $p1=0.7+0.1*i$;$p2=0.6+0.05i$. My questions are: How should I work with complex variables in this particular optimization problem? How do I split them $p1$, $p2$ and E indeed, and calculate the objective function by using real and complex part?
1 Comment
Answers (1)
0 Comments
See Also
Categories
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!