As a part of the project I'm working on, the input matrix needs to be deflated, meaning split into 2 parts. These parts are the upper left and lower right portions of the original matrix, and certain operation needs to be performed there. When in the process of deflation(splitting) we encounter a 1x1` matrix, we should stop and print that matrix. Take a look at the following code:
Code:
void ImplicitQRdeflatedAll(Matrix Dmatrix, VecDouble& EigenValues) {
if(Dmatrix.rowNo==1) {
PrintMatrix(Dmatrix);
return;
} else {
for(int i=1;i<=20;i++) {
Dmatrix=forImplicitQR(Dmatrix);
if(i%3==0) {
int k=checkConvDominant(Dmatrix);
if(k!=-1) {
std::pair<Matrix, Matrix> myLRpair=deflate(Dmatrix, k);
ImplicitQRdeflatedAll(myLRpair.first, EigenValues);
ImplicitQRdeflatedAll(myLRpair.second, EigenValues);
return;
}
}
}
}
}
The idea is to print out n(where n is the number of rows/columns of the input matrix) 1x1 matrices, but the code above sometimes reaches n print outs, but more frequently less than n printouts. Any idea why this happens? Thanks