ldei {limSolve} | R Documentation |
Solves the following underdetermined inverse problem:
min(sum {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 E have a names attribute, they will be used to label the output |
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 G have a names attribute and columns of E do not, they will be used to label the output |
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 ldei error messages |
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 sum {w_i*x_i}^2 |
IsError |
logical, TRUE if an error occurred |
type |
the string "ldei", such that how the solution was obtained can be traced |
Karline Soetaert <k.soetaert@nioo.knaw.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)
# parsimonious (simplest) solution of the mink diet problem A <- rbind(Minkdiet$Prey,rep(1,7)) B <- c(Minkdiet$Mink,1) parsimonious <- ldei(A,B,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")