Solving over-determined nonlinear system with complex variables

2 views (last 30 days)
Hi All,
I am experiencing some problems while solving an over-determined nonlinear system composed of 25 equations in 4 unknowns. The system can be represented in matrix form as:
B - XAX' = 0
where B,A,X are matrices 5x5. A and B are fully populated matrices of known complex values whereas X (and its conjugate transpose form X') is populated by unknown complex variables. Because of the nature of the problem, the first step was to separate the real to the imaginary part obtaining a system of 50 equations in 8 real unknowns (4 for the real part, and 4 for the imaginary part).
The form of the matrix X is given below:
if true
% X=[X11 0 0 0 X15;
0 X11 0 -X15 0;
0 0 X33 0 0;
0 -X15 0 X44 0;
X15 0 0 0 X44];
end
It is clear that the matrix is symmetric and most of the coefficients are null. In addition, because of the geometry of the system, the useful coefficients reduce to 4 only.
Although I tried it seems there are not any chances to write the system in the easier form HY = C where H,C and Y are combinations of the matrices A,B and X and in particular Y would be the vector of nonlinear unknown variables.
I have used both fsolve and lsqnonlin but none of them gave good results. I have also changed the optimset thus to have:
if true
% opts=optimset('TolX',1e-16,'TolFun',1e-16,'Display', 'off', 'MaxFunEvals',1e9, 'MaxIter',1e9,'Jacobian','off','Algorithm','trust-region-reflective');
end
but still getting no solutions from the solver or "solver stalled".
Below find the complete script of the solver function:
if true
% function fsys=dmsolver4(dm,Sfb,Sacc,cont)
dm11=complex(dm(1),dm(2));
dm33=complex(dm(3),dm(4));
dm44=complex(dm(5),dm(6));
dm15=complex(dm(7),dm(8));
dyn=[dm11, 0, 0, 0, dm15;
0, dm11, 0, -dm15, 0;
0, 0, dm33, 0, 0;
0, -dm15, 0, dm44, 0;
dm15, 0, 0, 0, dm44];
fsys(1:25)=real(Sfb(:,:,cont)-((dyn*Sacc(:,:,cont))*dyn'));
fsys(26:50)=imag(Sfb(:,:,cont)-((dyn*Sacc(:,:,cont))*dyn'));
end
end
Can any of you help me with this problem? Thanks and regards,
Dan
  3 Comments
Star Strider
Star Strider on 28 May 2014
I believe Image Analyst responded to that observation a while ago. If you click on the ‘[{}Code]’ button before posting code and highlighting it, this appears:
if true
% code
end
Personally, I prefer the minor inconvenience of ‘if true ... end’ to the significant inconvenience of unformatted code. Ignore it, but watch for the extra ‘end’ if you copy code from a post to run it.
I doubt if anyone actually puts ‘if true ... end’ blocks around their code!
Matt J
Matt J on 28 May 2014
Edited: Matt J on 28 May 2014
@daniele,
Show us a case where the solver fails when a solution exists and is known. If you cannot, I tend to think you are getting no solution merely because none exist. Since your equations are overdetermined, this is even likely.

Sign in to comment.

Answers (0)

Categories

Find more on Configure Simulation Conditions in Help Center and File Exchange

Community Treasure Hunt

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

Start Hunting!