7template<
class Scalar,
class D1,
class D2>
9 const Eigen::MatrixBase<D1>& A,
10 const Eigen::MatrixBase<D2>& b,
11 Eigen::Matrix<Scalar,Eigen::Dynamic,Eigen::Dynamic>& Z,
12 Eigen::Matrix<Scalar,Eigen::Dynamic,1>& xeq
18 Eigen::JacobiSVD<MatrixXs> svd(A, Eigen::ComputeThinU|Eigen::ComputeFullV);
25 if(A.cols() > svd.rank()) {
27 Z = svd.matrixV().rightCols(svd.cols()-svd.rank());
32 Z.resize(A.cols(), 0);
37template<
class Scalar,
class D1,
class D2>
39 const Eigen::MatrixBase<D1>& A,
40 const Eigen::MatrixBase<D2>& b,
41 Eigen::Matrix<Scalar,Eigen::Dynamic,Eigen::Dynamic>& Z,
42 Eigen::Matrix<Scalar,Eigen::Dynamic,1>& xeq
50 xeq = Eigen::ColPivHouseholderQR<MatrixXs>(A).solve(b);
53 Eigen::ColPivHouseholderQR<MatrixXs> QR(A.transpose());
57 if(A.cols() > QR.rank()) {
59 Z = MatrixXs(QR.householderQ()).rightCols(A.cols()-QR.rank());
64 Z.resize(A.cols(), 0);
Main namespace of this project, containing all utilities.
void svd_projection(const Eigen::MatrixBase< D1 > &A, const Eigen::MatrixBase< D2 > &b, Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &Z, Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > &xeq)
Return all solutions to a linear system, using a kernel-based parameterization.
void qr_projection(const Eigen::MatrixBase< D1 > &A, const Eigen::MatrixBase< D2 > &b, Eigen::Matrix< Scalar, Eigen::Dynamic, Eigen::Dynamic > &Z, Eigen::Matrix< Scalar, Eigen::Dynamic, 1 > &xeq)
Return all solutions to a linear system, using a kernel-based parameterization.
#define EigenOptTypedefs(ScalarType)