# qpspecial: Special Quadratic Programming Solver In pracma: Practical Numerical Math Functions

## Description

Solves a special Quadratic Programming problem.

## Usage

 `1` ```qpspecial(G, x, maxit = 100) ```

## Arguments

 `G` `m x n`-matrix. `x` column vector of length `n`, the initial (feasible) iterate; if not present (or requirements on x0 not met), x0 will be found. `maxit` maximum number of iterates allowed; default 100.

## Details

Solves the QP problem

`min q(x) = || G*x ||_2^2 = x'*(G'*G)*x`
`s.t. sum(x) = 1`
`and x >= 0`

The problem corresponds to finding the smallest vector (2-norm) in the convex hull of the columns of `G`.

## Value

Returns a list with the following components:

• `x` – optimal point attaining optimal value;

• `d = G*x` – smallest vector in the convex hull;

• `q` – optimal value found, `= t(d) %*% d`;

• `niter` – number of iterations used;

• `info` – error number:
`= 0`: everything went well, q is optimal,
`= 1`: maxit reached and final x is feasible,
`= 2`: something went wrong.

## Note

`x` may be missing, same as if requirements are not met; may stop with an error if `x` is not feasible.

## Author(s)

Matlab code by Anders Skajaa, 2010, under GPL license (HANSO toolbox); converted to R by Abhirup Mallik and Hans W. Borchers, with permission.

## References

[Has to be found.]

## Examples

 ``` 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25``` ```G <- matrix(c(0.31, 0.99, 0.54, 0.20, 0.56, 0.97, 0.40, 0.38, 0.81, 0.06, 0.44, 0.80), 3, 4, byrow =TRUE) qpspecial(G) # \$x # [,1] # [1,] 1.383697e-07 # [2,] 5.221698e-09 # [3,] 8.648168e-01 # [4,] 1.351831e-01 # # \$d # [,1] # [1,] 0.4940377 # [2,] 0.3972964 # [3,] 0.4886660 # # \$q # [1] 0.6407121 # # \$niter # [1] 6 # # \$info # [1] 0 ```

### Example output

```\$x
[,1]
[1,] 1.383697e-07
[2,] 5.221698e-09
[3,] 8.648168e-01
[4,] 1.351831e-01

\$d
[,1]
[1,] 0.4940377
[2,] 0.3972964
[3,] 0.4886660

\$q
[1] 0.6407121

\$niter
[1] 6

\$info
[1] 0
```

pracma documentation built on Jan. 30, 2018, 5:04 p.m.