Prior to the calculation of log(λ+1) and log(1-λ) I have an if statement that stops the optimization if λ>1 or λ<-1 returning the current matrix iterate.
I would look carefully at how you are handling this condition. Newton's method assumes a continuous objective function. If you are short-circuiting the computation and "returning the matrix iterate," that could be the cause of the problem.
1. Is it possible that the algorithm makes a quadratic approximation of say a log(constraints) penalty term and that allows it to consider nonfeasible solutions?
That doesn't sound likely.
2. Would it help if I came up with a mapping from the space of all real 2x2 matrices to that of matrices with eigenvalues between -1 and 1? I would then eliminate the nonlinear constraints all together.
I hope you already have a NORMALIZATION constraint in the problem. If A*x = lambda*x satisfies your problem, then you need to make sure that simply scaling the matrix elements does not also satisfy the problem. In other words, prevent (cA) from satisfying the problem. One technique is to only consider matrices of the form
[1 b]
[b c]
rather than the general symmetric 2x2 matrix
[a b]
[b c].
If you can't tell me anything more about your problem, I doubt there is much more I can suggest. Maybe someone else will have additional ideas. Good luck
... View more