Created
May 23, 2017 19:26
-
-
Save rms80/d5a654be7a98af7e4370c50f545c63e7 to your computer and use it in GitHub Desktop.
eigensolver test matrices
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// make wilkinson matrix | |
int N = 7; | |
double[] matrix = new double[] { | |
3, 1, 0, 0, 0, 0, 0, | |
1, 2, 1, 0, 0, 0, 0, | |
0, 1, 1, 1, 0, 0, 0, | |
0, 0, 1, 0, 1, 0, 0, | |
0, 0, 0, 1, 1, 1, 0, | |
0, 0, 0, 0, 1, 2, 1, | |
0, 0, 0, 0, 0, 1, 3 | |
}; | |
// make lehmer matrix | |
// eigenvalues: 0.2078, 0.4078, 0.8482, 2.5362 | |
//int N = 4; | |
//double[] matrix = new double[] { | |
// 1.0000, 0.5000, 0.3333, 0.2500, | |
// 0.5000, 1.0000, 0.6667, 0.5000, | |
// 0.3333, 0.6667, 1.0000, 0.7500, | |
// 0.2500, 0.5000, 0.7500, 1.0000 | |
//}; | |
// make rosser matrix http://blogs.mathworks.com/cleve/2014/01/06/the-rosser-matrix/ | |
// eigenvalues: 1.0e+03 * | |
//-1.020049018429998 | |
// 0.000000000000000 | |
// 0.000098048640722 | |
// 1.000000000000000 | |
// 1.000000000000000 | |
// 1.019901951359278 | |
// 1.020000000000000 | |
// 1.020049018429997 | |
//int N = 8; | |
//double[] matrix = new double[] { | |
// 611, 196, -192, 407, -8, -52, -49, 29, | |
// 196, 899, 113, -192, -71, -43, -8, -44, | |
// -192, 113, 899, 196, 61, 49, 8, 52, | |
// 407, -192, 196, 611, 8, 44, 59, -23, | |
// -8, -71, 61, 8, 411, -599, 208, 208, | |
// -52, -43, 49, 44, -599, 411, 208, 208, | |
// -49, -8, 8 , 59 , 208, 208, 99, -911, | |
// 29, -44, 52, -23, 208, 208, -911, 99 }; | |
SymmetricEigenSolver solver = new SymmetricEigenSolver(N, 10000); | |
solver.Solve(matrix, SymmetricEigenSolver.SortType.Increasing); | |
double[] eigenvalues = solver.GetEigenvalues(); | |
double[] eigenvectors = solver.GetEigenvectors(); | |
System.Console.WriteLine("Matrix: "); | |
for ( int r = 0; r < N; ++r ) { | |
System.Console.Write("[{0}]: ", r); | |
for (int c = 0; c < N; ++c) | |
System.Console.Write("{0} ", matrix[r * N + c]); | |
System.Console.WriteLine(); | |
} | |
System.Console.WriteLine("Eigenvalues: "); | |
for ( int r = 0; r < N; ++r ) | |
System.Console.Write("{0:F5} ", eigenvalues[r]); | |
System.Console.WriteLine(); | |
System.Console.WriteLine("Eigenvectors: "); | |
for ( int r = 0; r < N; ++r ) { | |
System.Console.Write("[{0}]: ", r); | |
for (int c = 0; c < N; ++c) | |
System.Console.Write("{0:F5} ", eigenvectors[r * N + c]); | |
System.Console.WriteLine(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment