ldei {limSolve} | R Documentation |
Solves the following underdetermined inverse problem:
\min(∑ {x_i}^2)
subject to
Ex=f
Gx>=h
uses least distance programming subroutine ldp (FORTRAN) from Linpack
The model has to be UNDERdetermined, i.e. the number of independent equations < number of unknowns.
ldei(E, F, G = NULL, H = NULL, tol = sqrt(.Machine$double.eps), verbose = TRUE)
E |
numeric matrix containing the coefficients of the equality
constraints Ex=F; if the columns of |
F |
numeric vector containing the right-hand side of the equality constraints. |
G |
numeric matrix containing the coefficients of the inequality
constraints Gx>=H; if the columns of |
H |
numeric vector containing the right-hand side of the inequality constraints. |
tol |
tolerance (for singular value decomposition, equality and inequality constraints). |
verbose |
logical to print |
a list containing:
X |
vector containing the solution of the least distance with equalities and inequalities problem. |
unconstrained.solution |
vector containing the unconstrained solution of the least distance problem, i.e. ignoring Gx>=h. |
residualNorm |
scalar, the sum of absolute values of residuals of equalities and violated inequalities; should be zero or very small if the problem is feasible. |
solutionNorm |
scalar, the value of the quadratic function at the solution, i.e. the value of ∑ {w_i*x_i}^2. |
IsError |
logical, |
type |
the string "ldei", such that how the solution was obtained can be traced. |
Karline Soetaert <karline.soetaert@nioz.nl>.
Lawson C.L.and Hanson R.J. 1974. Solving Least Squares Problems, Prentice-Hall
Lawson C.L.and Hanson R.J. 1995. Solving Least Squares Problems. SIAM classics in applied mathematics, Philadelphia. (reprint of book)
Minkdiet
, for a description of the Mink diet example.
#------------------------------------------------------------------------------- # A simple problem #------------------------------------------------------------------------------- # minimise x1^2 + x2^2 + x3^2 + x4^2 + x5^2 + x6^2 # subject to: #-x1 + x4 + x5 = 0 # - x2 - x4 + x6 = 0 # x1 + x2 + x3 > 1 # x3 + x5 + x6 < 1 # xi > 0 E <- matrix(nrow = 2, byrow = TRUE, data = c(-1, 0, 0, 1, 1, 0, 0,-1, 0, -1, 0, 1)) F <- c(0, 0) G <- matrix(nrow = 2, byrow = TRUE, data = c(1, 1, 1, 0, 0, 0, 0, 0, -1, 0, -1, -1)) H <- c(1, -1) ldei(E, F, G, H) #------------------------------------------------------------------------------- # parsimonious (simplest) solution of the mink diet problem #------------------------------------------------------------------------------- E <- rbind(Minkdiet$Prey, rep(1, 7)) F <- c(Minkdiet$Mink, 1) parsimonious <- ldei(E, F, G = diag(7), H = rep(0, 7)) data.frame(food = colnames(Minkdiet$Prey), fraction = parsimonious$X) dotchart(x = as.vector(parsimonious$X), labels = colnames(Minkdiet$Prey), main = "Diet composition of Mink extimated using ldei", xlab = "fraction")