ipfp: Function to run basic IPFP (iterative proportional fitting procedure)
Description
Use IPFP starting from x0 to produce vector x s.t. Ax = y
within tolerance. Need to ensure that x0 >= 0.
Usage
ipfp(y, A, x0, tol = .Machine$double.eps, maxit = 1000, verbose = FALSE, full = FALSE)
Arguments
y
numeric constraint vector (length nrow)
A
constraint matrix (nrow x ncol)
x0
numeric initial vector (length ncol)
tol
numeric tolerance for IPFP; defaults to
.Machine$double.eps
maxit
integer maximum number of iterations for
IPFP; defaults to 1e3
verbose
logical parameter to select verbose output
from C function
full
logical parameter to select full return (with
diagnostic info)
Value
if not full, vector of length ncol containing solution
obtained by IPFP. If full, list containing solution (as x),
number of iterations (as iter), and norm of Ax - y (as
errNorm)
A <- buildStarMat(3)
x <- rgamma(ncol(A), 10, 1/100)
y <- A %*% x
x0 <- x * rgamma(length(x), 10, 10)
ans <- ipfp(y, A, x0, full=TRUE)
print(ans)
print(x)