lsqlincon | R Documentation |
Solves linearly constrained linear least-squares problems.
lsqlincon(C, d, A = NULL, b = NULL,
Aeq = NULL, beq = NULL, lb = NULL, ub = NULL)
C |
|
d |
vector or a one colum matrix with |
A |
|
b |
vector or |
Aeq |
|
beq |
vector or |
lb |
lower bounds, a scalar will be extended to length n. |
ub |
upper bounds, a scalar will be extended to length n. |
lsqlincon(C, d, A, b, Aeq, beq, lb, ub)
minimizes ||C*x - d||
(i.e., in the least-squares sense) subject to the following constraints:
A*x <= b
, Aeq*x = beq
, and lb <= x <= ub
.
It applies the quadratic solver in quadprog
with an active-set
method for solving quadratic programming problems.
If some constraints are NULL
(the default), they will not be taken
into account. In case no constraints are given at all, it simply uses
qr.solve
.
Returns the least-squares solution as a vector.
Function lsqlin
in pracma
solves this for equality constraints
only, by computing a base for the nullspace of Aeq
. But for linear
inequality constraints there is no simple linear algebra ‘trick’, thus a real
optimization solver is needed.
HwB email: <hwborchers@googlemail.com>
Trefethen, L. N., and D. Bau III. (1997). Numerical Linear Algebra. SIAM, Society for Industrial and Applied Mathematics, Philadelphia.
lsqlin
, quadprog::solve.QP
## MATLABs lsqlin example
C <- matrix(c(
0.9501, 0.7620, 0.6153, 0.4057,
0.2311, 0.4564, 0.7919, 0.9354,
0.6068, 0.0185, 0.9218, 0.9169,
0.4859, 0.8214, 0.7382, 0.4102,
0.8912, 0.4447, 0.1762, 0.8936), 5, 4, byrow=TRUE)
d <- c(0.0578, 0.3528, 0.8131, 0.0098, 0.1388)
A <- matrix(c(
0.2027, 0.2721, 0.7467, 0.4659,
0.1987, 0.1988, 0.4450, 0.4186,
0.6037, 0.0152, 0.9318, 0.8462), 3, 4, byrow=TRUE)
b <- c(0.5251, 0.2026, 0.6721)
Aeq <- matrix(c(3, 5, 7, 9), 1)
beq <- 4
lb <- rep(-0.1, 4) # lower and upper bounds
ub <- rep( 2.0, 4)
x <- lsqlincon(C, d, A, b, Aeq, beq, lb, ub)
# -0.1000000 -0.1000000 0.1599088 0.4089598
# check A %*% x - b >= 0
# check Aeq %*% x - beq == 0
# check sum((C %*% x - d)^2) # 0.1695104
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.