BUG: mantis #1373: eigen value/vector calculation now handles repeated eigen values

This commit is contained in:
william
2014-08-28 10:54:00 +01:00
committed by Andrew Heather
parent f107eba31e
commit 98e6dc581c
2 changed files with 252 additions and 282 deletions

View File

@ -69,5 +69,121 @@ int main()
Info<< (symm(t7) && t7) - (0.5*(t7 + t7.T()) && t7) << endl;
Info<< (t7 && symm(t7)) - (t7 && 0.5*(t7 + t7.T())) << endl;
/*
// Lots of awkward eigenvector tests ...
tensor T_rand_real
(
0.9999996423721313, 0.3330855667591095, 0.6646450161933899,
0.9745196104049683, 0.0369445420801640, 0.0846728682518005,
0.6474838852882385, 0.1617118716239929, 0.2041363865137100
);
Debug(T_rand_real);
vector L_rand_real(eigenValues(T_rand_real));
Debug(L_rand_real);
tensor U_rand_real(eigenVectors(T_rand_real));
Debug(U_rand_real);
Info << endl << endl;
tensor T_rand_imag
(
0.8668024539947510, 0.1664607226848602, 0.8925783634185791,
0.9126510620117188, 0.7408077120780945, 0.1499115079641342,
0.0936608463525772, 0.7615650296211243, 0.8953040242195129
);
Debug(T_rand_imag);
vector L_rand_imag(eigenValues(T_rand_imag));
Debug(L_rand_imag);
tensor U_rand_imag(eigenVectors(T_rand_imag));
Debug(U_rand_imag);
Info << endl << endl;
tensor T_rand_symm
(
1.9999992847442627, 1.3076051771640778, 1.3121289014816284,
1.3076051771640778, 0.0738890841603279, 0.2463847398757935,
1.3121289014816284, 0.2463847398757935, 0.4082727730274200
);
Debug(T_rand_symm);
vector L_rand_symm(eigenValues(T_rand_symm));
Debug(L_rand_symm);
tensor U_rand_symm(eigenVectors(T_rand_symm));
Debug(U_rand_symm);
Info << endl << endl;
symmTensor T_rand_Symm
(
1.9999992847442627, 1.3076051771640778, 1.3121289014816284,
0.0738890841603279, 0.2463847398757935,
0.4082727730274200
);
Debug(T_rand_Symm);
vector L_rand_Symm(eigenValues(T_rand_Symm));
Debug(L_rand_Symm);
tensor U_rand_Symm(eigenVectors(T_rand_Symm));
Debug(U_rand_Symm);
Info << endl << endl;
tensor T_rand_diag
(
0.8668024539947510, 0, 0,
0, 0.7408077120780945, 0,
0, 0, 0.8953040242195129
);
Debug(T_rand_diag);
vector L_rand_diag(eigenValues(T_rand_diag));
Debug(L_rand_diag);
tensor U_rand_diag(eigenVectors(T_rand_diag));
Debug(U_rand_diag);
Info << endl << endl;
tensor T_repeated
(
0, 1, 1,
1, 0, 1,
1, 1, 0
);
Debug(T_repeated);
vector L_repeated(eigenValues(T_repeated));
Debug(L_repeated);
tensor U_repeated(eigenVectors(T_repeated));
Debug(U_repeated);
Info << endl << endl;
tensor T_repeated_zero
(
1, 1, 1,
1, 1, 1,
1, 1, 1
);
Debug(T_repeated_zero);
vector L_repeated_zero(eigenValues(T_repeated_zero));
Debug(L_repeated_zero);
tensor U_repeated_zero(eigenVectors(T_repeated_zero));
Debug(U_repeated_zero);
Info << endl << endl;
tensor T_triple
(
2, 0, 0,
0, 2, 0,
0, 0, 2
);
Debug(T_triple);
vector L_triple(eigenValues(T_triple));
Debug(L_triple);
tensor U_triple(eigenVectors(T_triple));
Debug(U_triple);
*/
return 0;
}