Path: news.mathworks.com!not-for-mail From: "Romain " <romain_leg@yahoo.fr> Newsgroups: comp.soft-sys.matlab Subject: System of nonlinear equations: no convergence to a root using fsolve Date: Fri, 8 Jul 2011 16:56:09 +0000 (UTC) Organization: The MathWorks, Inc. Lines: 20 Message-ID: <iv7cr9$aqv$1@newscl01ah.mathworks.com> Reply-To: "Romain " <romain_leg@yahoo.fr> NNTP-Posting-Host: www-06-blr.mathworks.com Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: newscl01ah.mathworks.com 1310144169 11103 172.30.248.38 (8 Jul 2011 16:56:09 GMT) X-Complaints-To: news@mathworks.com NNTP-Posting-Date: Fri, 8 Jul 2011 16:56:09 +0000 (UTC) X-Newsreader: MATLAB Central Newsreader 2943433 Xref: news.mathworks.com comp.soft-sys.matlab:735572 Hello everybody, I have a problem using the fsolve function. The aim of the procedure I implement is to identify a matrix subject to certain restrictions. To do so, I can decompose my matrix into a nonlinear system of equations. It is a rather small system (8 equations, 8 unknown), however, when I use the fsolve function, I always obtain the error message:'Optimizer appears to be converging to a minimum that is not a root:Sum of squares of the function values exceeds the square root of options.Tolfun.Try again with a new starting point'. I tried with many different initial values, but that was no improvement. Precisely, here is my system: F(1)=x(1)^2+x(2)^2+x(3)^2-EXO_SIGMA1SQ; F(2)=x(4)^2+x(5)^2+x(6)^2-EXO_SIGMA2SQ; F(3)=x(7)^2+x(8)^2-EXO_SIGMA3SQ; F(4)=x(1)*x(4)+x(2)*x(5)+x(3)*x(6)-EXO_SIGMA12; F(5)=x(2)*x(7)+x(3)*x(8)-EXO_SIGMA13; F(6)=x(5)*x(7)+x(6)*x(8)-EXO_SIGMA23; F(7)=x(2)*EXO_K1+x(5)*EXO_K2+x(7); F(8)=x(3)*EXO_K1+x(6)*EXO_K2+x(8); The EXO variables are constants whose values are known by the program when it runs the algorithm, and the actual variables to value are the x(.). I am a bit surprised since the system is rather small, and since I previously obtained convergence very easily with a very similar system. According to my thesis supervisor, the system should admit a solution. Then my question is: how can i solve this system in the end? Is there a way to implement a loop that would create random initial values, so that in the end one of these random sets could succeed to carry the solution? Is there a way to compel the function to stop to a global min, and not a local min? Should I try a different function for solving? Thanks a lot for any help.