# correctionDefinite: Correcting Definiteness of a Matrix In CEGO: Combinatorial Efficient Global Optimization

## Description

Correcting a (possibly indefinite) symmetric matrix with chosen approach so that it will have desired definiteness type: positive or negative semi-definite (PSD, NSD).

## Usage

 `1` ```correctionDefinite(mat, type = "PSD", method = "flip", tol = 1e-08) ```

## Arguments

 `mat` symmetric matrix `type` string that specifies type of correction: `"PSD"`,`"NSD"` to enforce PSD or NSD matrices respectively. `method` string that specifies method for correction: spectrum clip `"clip"`, spectrum flip `"flip"`, nearest definite matrix `"near"`, spectrum square`"square"`, spectrum diffusion `"diffusion"`. `tol` torelance value. Eigenvalues between `-tol` and `tol` are assumed to be zero.

## Value

list with

`mat`

corrected matrix

`isIndefinite`

boolean, whether original matrix was indefinite

`lambda`

the eigenvalues of the original matrix

`lambdanew`

the eigenvalues of the corrected matrix

`U`

the matrix of eigenvectors

`a`

the transformation vector

## References

Martin Zaefferer and Thomas Bartz-Beielstein. (2016). Efficient Global Optimization with Indefinite Kernels. Parallel Problem Solving from Nature-PPSN XIV. Accepted, in press. Springer.

`modelKriging`
 ``` 1 2 3 4 5 6 7 8 9 10 11``` ```x <- list(c(2,1,4,3),c(2,4,3,1),c(4,2,1,3),c(4,3,2,1),c(1,4,3,2)) D <- distanceMatrix(x,distancePermutationInsert) is.NSD(D) #matrix should not be CNSD D <- correctionDefinite(D,type="NSD")\$mat is.NSD(D) #matrix should now be CNSD # different example: PSD kernel D <- distanceMatrix(x,distancePermutationInsert) K <- exp(-0.01*D) is.PSD(K) K <- correctionDefinite(K,type="PSD")\$mat is.PSD(K) ```