ellipsoids icon indicating copy to clipboard operation
ellipsoids copied to clipboard

Improve numerically instable code connected to comparisons and CVX

Open irublev opened this issue 7 years ago • 0 comments

  1. There are several places where comparison is performed. Among them are
  • getIsGoodDirMat method of GenEllipsoid class

  • calculation of rank in ellunion_ea method of ellipsoid class

  • `gras.la.ismatposdef' function checking positive definiteness of a matrix

It is necessary to make the corresponding code more numerically stable, especially with the corresponding inequalities are strict (some tolerances are to be used that separate left- and right-hand sides of these inequalities from being close to each other within given tolerances). This functionlity should be thoroughly covered by tests.

  1. ellunion_ea method of ellipsoid class is very numerically instable (especially for bad conditioned shape matices of ellipsoids). This leads to highly instable performance of the test testEllUnionEaSensitivity from elltool.core.test.mlunit.EllipsoidIntUnionTC suite checking sensitivity of ellunion_ea under small disturbances of shape matrices of ellipsoids. The problem is that CVX optimizition is highly instable what concerns the argument (may be it is better to check stability with respect to the functional being the optimal volume of the ellipsoid containing the union of given ellipsoids). Other thing is that for two ellipsoids the corresponding optimization problem may be significantly simplified by reducing the initial case to the case of diagonal shape matrices. But for more than two ellipsoids the problem should be better investigated. It is possible also to extract some abstract optimization problem that is solved instably and to send this problem to CVX development team for investigation.

irublev avatar Dec 16 '17 19:12 irublev