The inverse iteration is an iteration algorithm based on the Power Method, please refer to "Eigenvalue Power Method".
Algorithm
By definition, if λ is an eigenvalue of matrix A, then 1/λ is
an eigenvalue of A-1. This concept gave us the idea to create a method to compute the
smallest eigenvalue of A.
Arrange eigenvalues of A-1 such that
|λn-1| > |λn-1-1| >=
|λ1-1|
|
Then apply the power method to A-1. It is possible to explicitly compute the inverse
matrix of A, which is efficient because it has to be done only once. Alternatively, it is
possible to solve,
for xk+1 by using an efficient algebra solver such as LU factorization, since it
only has to be done once.
The power and the new inverse iteration methods only compute the eigenvalue with
the largest or smallest absolute value, and its corresponding eigenvector. By employing the power and inverse method, it is
actually possible to calculate the value closest to any number N.
Running this real-time set up produces the results shown above.
The reader can try variations by entering new values to
Matrix A as well as setting new eigenvalue closest parameter values.
Testing the Inverse Iteration Method
In order to test the Inverse Iteration method as defined above, a new TestInverse()
static method has been added and executed. Supporting code and methods are not shown.
►
|
static void TestInverse();
{
ListBox1.Items.Clear();
ListBox2.Items.Clear();
MatrixR A = new MatrixR(new double[,] { { t1, t2, t3 }, { t4, t5, t6 },
{ t7, t8, t9 } });
VectorR x;
double lambda;
Eigenvalue.Inverse(A, t10, 1e-5, out x, out lambda);
ListBox1.Items.Add(" " + lambda);
ListBox2.Items.Add(" " + x);
}
|
|