22 Eigen::MatrixXd A_prime = Q * R;
24 for (
int i = 0; i < A.rows(); i++) {
25 for (
int j = 0; j < A.cols(); j++) {
33 Eigen::MatrixXd QTQ = Q.transpose() * Q;
36 for (
int i = 0; i < QTQ.rows(); i++) {
37 for (
int j = 0; j < QTQ.cols(); j++) {
52 int filter = BaseQNAcceleration::QR1FILTER;
53 Eigen::MatrixXd A(n, m);
56 for (
int i = 0; i < n; i++) {
57 for (
int j = 0; j < m; j++) {
58 double entry = 1.0 /
static_cast<double>(i + j + 1);
76 Eigen::MatrixXd A_prime1 = A;
77 Eigen::VectorXd col6 = A.col(m - 1);
78 A_prime1.conservativeResize(n, m - 1);
87 Eigen::MatrixXd A_prime2 = A_prime1;
88 Eigen::VectorXd col1 = A.col(0);
89 for (
int i = 0; i < A_prime2.rows(); i++)
90 for (
int j = 0; j < A_prime2.cols() - 1; j++)
91 A_prime2(i, j) = A_prime2(i, j + 1);
92 A_prime2.conservativeResize(n, A_prime2.cols() - 1);
117 Eigen::MatrixXd A_prime3 = A;
118 Eigen::VectorXd colk = A.col(k);
119 for (
int i = 0; i < A_prime3.rows(); i++)
120 for (
int j = k; j < A_prime3.cols() - 1; j++)
121 A_prime3(i, j) = A_prime3(i, j + 1);
122 A_prime3.conservativeResize(n, A_prime3.cols() - 1);
140 qr_1.
reset(A, A.rows());
145 Eigen::MatrixXd q = qr_1.
matrixQ();
146 Eigen::MatrixXd r = qr_1.
matrixR();
148 qr_1.
reset(q, r, q.rows(), q.cols());
158 int filter2 = BaseQNAcceleration::QR2FILTER;
159 int filter3 = BaseQNAcceleration::QR3FILTER;
161 Eigen::MatrixXd A2(n, m);
162 Eigen::MatrixXd A3(n, m);
165 for (
int i = 0; i < n; i++) {
166 for (
int j = 0; j < m; j++) {
167 double entry = 1.0 /
static_cast<double>(i + j + 1);
BOOST_AUTO_TEST_SUITE(PreProcess)
BOOST_AUTO_TEST_SUITE_END()
void testQTQequalsIdentity(Eigen::MatrixXd &Q)
void testQRequalsA(Eigen::MatrixXd &Q, Eigen::MatrixXd &R, Eigen::MatrixXd &A)
BOOST_AUTO_TEST_CASE(testQRFactorization)
#define PRECICE_TEST_SETUP(...)
Creates and attaches a TestSetup to a Boost test case.
Class that provides functionality for a dynamic QR-decomposition, that can be updated in O(mn) flops ...
bool insertColumn(int k, const Eigen::VectorXd &v, double singularityLimit=0)
inserts a new column at arbitrary position and updates the QR factorization This function works on th...
Eigen::MatrixXd & matrixR()
returns a matrix representation of the upper triangular matrix R
void applyFilter(double singularityLimit, std::vector< int > &delIndices, Eigen::MatrixXd &V)
filters the least squares system, i.e., the decomposition Q*R = V according to the defined filter tec...
void reset()
resets the QR factorization zo zero Q(0:0, 0:0)R(0:0, 0:0)
size_t getResetFilterCounter() const
Eigen::MatrixXd & matrixQ()
returns a matrix representation of the orthogonal matrix Q
void deleteColumn(int k)
updates the factorization A=Q[1:n,1:m]R[1:m,1:n] when the kth column of A is deleted....
contains implementations of acceleration schemes.
boost::test_tools::predicate_result equals(const std::vector< float > &VectorA, const std::vector< float > &VectorB, float tolerance)
equals to be used in tests. Compares two std::vectors using a given tolerance. Prints both operands o...
Main namespace of the precice library.