description: [XRat,L,D,P,err]=RprojRldlt(XX,SDP_data,ldlt_test,start) tries to find an exact rational positive semidefinite solution of the problem A*X=b from the floating point solution XX. The algorithm tries to find an appropiate rational approximation of the matrix XX which is after the projection on the hyperplane A*X=b a positive semidefinite matrix. arguments: XX is a floating point solution of the SDP: XX PsD, A*XX=b. SDP_data is a structure holding .A and .b which represent A*XX=b. if ldlt_test=true the programme tries to compute an exact rational LDU decomposition of a rational positive semidefinite solution of the problem A*XX=b. Otherwise positive semidefiniteness relies on numerical computation of eigenvalues. Default value is false. start tells the programme from what tolerance the rounding part starts. The tolerance equals 1/(2^start). Default value is 0. output: XRat - a cell of two matrices which represent numerators and denominators of the exact rational positive semidefinite solution L - a cell of two matrices which represent numerators and denominators of the matrix L in the (P*L)*D*(P*L)^T decomposition of the matrix XRat D - a cell of two matrices which represent numerators and denominators of the diagonal matrix D in the (P*L)*D*(P*L)^T decomposition of the matrix XRat P - a permutation pivot matrix in the (P*L)*D*(P*L)^T decomposition of the matrix XRat err - if it equals 0 means that program ended with success, if it equals -1 rational LDLT decomposition failed because of too large numbers otherwise the whole procedure failed possible usage: RprojRldlt(XX,SDP_data), RprojRldlt(XX,SDP_data,ldlt_test), RprojRldlt(XX,SDP_data,ldlt_test,start) |
Documentation >