mirror of
https://gitlab.com/libeigen/eigen.git
synced 2026-04-10 11:34:33 +08:00
Extend documentation and add examples for EigenSolver class.
This commit is contained in:
16
doc/snippets/EigenSolver_EigenSolver_MatrixType.cpp
Normal file
16
doc/snippets/EigenSolver_EigenSolver_MatrixType.cpp
Normal file
@@ -0,0 +1,16 @@
|
||||
MatrixXd A = MatrixXd::Random(6,6);
|
||||
cout << "Here is a random 6x6 matrix, A:" << endl << A << endl << endl;
|
||||
|
||||
EigenSolver<MatrixXd> es(A);
|
||||
cout << "The eigenvalues of A are:" << endl << es.eigenvalues() << endl;
|
||||
cout << "The matrix of eigenvectors, V, is:" << endl << es.eigenvectors() << endl << endl;
|
||||
|
||||
complex<double> lambda = es.eigenvalues()[0];
|
||||
cout << "Consider the first eigenvalue, lambda = " << lambda << endl;
|
||||
VectorXcd v = es.eigenvectors().col(0);
|
||||
cout << "If v is the corresponding eigenvector, then lambda * v = " << endl << lambda * v << endl;
|
||||
cout << "... and A * v = " << endl << A.cast<complex<double> >() * v << endl << endl;
|
||||
|
||||
MatrixXcd D = es.eigenvalues().asDiagonal();
|
||||
MatrixXcd V = es.eigenvectors();
|
||||
cout << "Finally, V * D * V^(-1) = " << endl << V * D * V.inverse() << endl;
|
||||
6
doc/snippets/EigenSolver_compute.cpp
Normal file
6
doc/snippets/EigenSolver_compute.cpp
Normal file
@@ -0,0 +1,6 @@
|
||||
EigenSolver<MatrixXf> es;
|
||||
MatrixXf A = MatrixXf::Random(4,4);
|
||||
es.compute(A);
|
||||
cout << "The eigenvalues of A are: " << es.eigenvalues().transpose() << endl;
|
||||
es.compute(A + MatrixXf::Identity(4,4)); // re-use es to compute eigenvalues of A+I
|
||||
cout << "The eigenvalues of A+I are: " << es.eigenvalues().transpose() << endl;
|
||||
4
doc/snippets/EigenSolver_eigenvalues.cpp
Normal file
4
doc/snippets/EigenSolver_eigenvalues.cpp
Normal file
@@ -0,0 +1,4 @@
|
||||
MatrixXd ones = MatrixXd::Ones(3,3);
|
||||
EigenSolver<MatrixXd> es(ones);
|
||||
cout << "The eigenvalues of the 3x3 matrix of ones are:"
|
||||
<< endl << es.eigenvalues() << endl;
|
||||
4
doc/snippets/EigenSolver_eigenvectors.cpp
Normal file
4
doc/snippets/EigenSolver_eigenvectors.cpp
Normal file
@@ -0,0 +1,4 @@
|
||||
MatrixXd ones = MatrixXd::Ones(3,3);
|
||||
EigenSolver<MatrixXd> es(ones);
|
||||
cout << "The first eigenvector of the 3x3 matrix of ones is:"
|
||||
<< endl << es.eigenvectors().col(1) << endl;
|
||||
9
doc/snippets/EigenSolver_pseudoEigenvectors.cpp
Normal file
9
doc/snippets/EigenSolver_pseudoEigenvectors.cpp
Normal file
@@ -0,0 +1,9 @@
|
||||
MatrixXd A = MatrixXd::Random(6,6);
|
||||
cout << "Here is a random 6x6 matrix, A:" << endl << A << endl << endl;
|
||||
|
||||
EigenSolver<MatrixXd> es(A);
|
||||
MatrixXd D = es.pseudoEigenvalueMatrix();
|
||||
MatrixXd V = es.pseudoEigenvectors();
|
||||
cout << "The pseudo-eigenvalue matrix D is:" << endl << D << endl;
|
||||
cout << "The pseudo-eigenvector matrix V is:" << endl << V << endl;
|
||||
cout << "Finally, V * D * V^(-1) = " << endl << V * D * V.inverse() << endl;
|
||||
Reference in New Issue
Block a user