Hello,
I'm using Pardiso to compute the Schur complement of a symmetric positive-semidefinite matrix with a kernel of dimension 6. I don't know if this is officially supported, but for similar rank-deficient matrices, I sometimes get the correct results. To see whether the Schur complement is right or not, I'm checking in MATLAB the eigenvalues of the result given by Pardiso after the numerical factorization. The first 6 eigenvalues should be 0. With MUMPS, I get the following (correct) output:
>> eig(triu(MUMPS) + tril(MUMPS') - diag(diag(MUMPS)))
ans =
1.0e+11 *
-0.0000
-0.0000
-0.0000
0.0000
0.0000
0.0000
0.0253
0.0412
0.0796
0.0999
0.1078
0.1258
With brute force MATLAB, I get the following (correct) output:
>> sort(real(eig(MATLAB(10:63,10:63) - MATLAB(10:63,1:9) * MATLAB(1:9,1:9)^-1 * MATLAB(1:9,10:63))))
ans =
1.0e+11 *
-0.0000
-0.0000
-0.0000
-0.0000
0.0000
0.0000
0.0253
0.0412
0.0796
0.0999
0.1078
With Pardiso, I get the following (wrong) output:
>> eig(triu(Pardiso) + tril(Pardiso') - diag(diag(Pardiso)))
ans =
1.0e+11 *
-2.5490
-2.1172
-1.5318
-0.8751
-0.4827
-0.3927
-0.3516
-0.2968
-0.1554
-0.1176
I'm attaching a reproducer that factorizes the matrix and output the Schur complement, as well as the original matrix stored in dense format to be used inside MATLAB. Can you reproduce this problem ? Do I need to adjust some parameters, or is there a bug inside the solver ?
Thank you for your help.