Transverse mode: Difference between revisions
en>Valandil211 Found citation for part of the paragraph on hybrid modes. |
en>Srleffler added Category:Laser science using HotCat |
||
Line 1: | Line 1: | ||
'''Rayleigh quotient iteration''' is an [[eigenvalue algorithm]] which extends the idea of the [[inverse iteration]] by using the [[Rayleigh quotient]] to obtain increasingly accurate [[eigenvalue]] estimates. | |||
Rayleigh quotient iteration is an [[iterative method]], that is, it must be repeated until it [[Limit of a sequence|converges]] to an answer (this is true for all eigenvalue algorithms). Fortunately, very rapid convergence is guaranteed and no more than a few iterations are needed in practice. The Rayleigh quotient iteration algorithm [[rate of convergence|converges cubically]] for Hermitian or symmetric matrices, given an initial vector that is sufficiently close to an [[EigenVector|eigenvector]] of the [[Matrix (mathematics)|matrix]] that is being analyzed. | |||
== Algorithm == | |||
The algorithm is very similar to inverse iteration, but replaces the estimated eigenvalue at the end of each iteration with the Rayleigh quotient. Begin by choosing some value <math>\mu_0</math> as an initial eigenvalue guess for the Hermitian matrix <math>A</math>. An initial vector <math>b_0</math> must also be supplied as initial eigenvector guess. | |||
Calculate the next approximation of the eigenvector <math>b_{i+1}</math> by | |||
<math> | |||
b_{i+1} = \frac{(A-\mu_i I)^{-1}b_i}{||(A-\mu_i I)^{-1}b_i||}, | |||
</math><br> | |||
where <math>I</math> is the identity matrix, | |||
and set the next approximation of the eigenvalue to the Rayleigh quotient of the current iteration equal to<br> | |||
<math> | |||
\mu_i = \frac{b^*_i A b_i}{b^*_i b_i}. | |||
</math> | |||
To compute more than one eigenvalue, the algorithm can be combined with a deflation technique. | |||
== Example == | |||
Consider the matrix | |||
:<math> | |||
A = | |||
\left[\begin{matrix} | |||
1 & 2 & 3\\ | |||
1 & 2 & 1\\ | |||
3 & 2 & 1\\ | |||
\end{matrix}\right] | |||
</math> | |||
for which the exact eigenvalues are <math>\lambda_1 = 3+\sqrt5</math>, <math>\lambda_2 = 3-\sqrt5</math> and <math>\lambda_3 = -2</math>, with corresponding eigenvectors | |||
:<math>v_1 = \left[ | |||
\begin{matrix} | |||
1 \\ | |||
\varphi-1 \\ | |||
1 \\ | |||
\end{matrix}\right]</math>, <math>v_2 = \left[ | |||
\begin{matrix} | |||
1 \\ | |||
-\varphi \\ | |||
1 \\ | |||
\end{matrix}\right]</math> and <math>v_3 = \left[ | |||
\begin{matrix} | |||
1 \\ | |||
0 \\ | |||
1 \\ | |||
\end{matrix}\right]</math>. | |||
(where <math>\textstyle\varphi=\frac{1+\sqrt5}2</math> is the golden ratio). | |||
The largest eigenvalue is <math>\lambda_1 \approx 5.2361</math> and corresponds to any eigenvector proportional to <math>v_1 \approx \left[ | |||
\begin{matrix} | |||
1 \\ | |||
0.6180 \\ | |||
1 \\ | |||
\end{matrix}\right]. | |||
</math> | |||
We begin with an initial eigenvalue guess of | |||
:<math>b_0 = | |||
\left[\begin{matrix} | |||
1 \\ | |||
1 \\ | |||
1 \\ | |||
\end{matrix}\right], ~\mu_0 = 200</math>. | |||
Then, the first iteration yields | |||
:<math>b_1 \approx | |||
\left[\begin{matrix} | |||
-0.57927 \\ | |||
-0.57348 \\ | |||
-0.57927 \\ | |||
\end{matrix}\right], ~\mu_1 \approx 5.3355 | |||
</math> | |||
the second iteration, | |||
:<math>b_2 \approx | |||
\left[\begin{matrix} | |||
0.64676 \\ | |||
0.40422 \\ | |||
0.64676 \\ | |||
\end{matrix}\right], ~\mu_2 \approx 5.2418 | |||
</math> | |||
and the third, | |||
:<math>b_3 \approx | |||
\left[\begin{matrix} | |||
-0.64793 \\ | |||
-0.40045 \\ | |||
-0.64793 \\ | |||
\end{matrix}\right], ~\mu_3 \approx 5.2361 | |||
</math> | |||
from which the cubic convergence is evident. | |||
== Octave Implementation == | |||
The following is a simple implementation of the algorithm in [[GNU Octave|Octave]]. | |||
<source lang="matlab"> | |||
function x = rayleigh(A,epsilon,mu,x) | |||
x = x / norm(x); | |||
y = (A-mu*eye(rows(A))) \ x; | |||
lambda = y'*x; | |||
mu = mu + 1 / lambda | |||
err = norm(y-lambda*x) / norm(y) | |||
while err > epsilon | |||
x = y / norm(y); | |||
y = (A-mu*eye(rows(A))) \ x; | |||
lambda = y'*x; | |||
mu = mu + 1 / lambda | |||
err = norm(y-lambda*x) / norm(y) | |||
end | |||
end | |||
</source> | |||
== See also == | |||
* [[Power iteration]] | |||
* [[Inverse iteration]] | |||
==References== | |||
* Lloyd N. Trefethen and David Bau, III, ''Numerical Linear Algebra'', Society for Industrial and Applied Mathematics, 1997. ISBN 0-89871-361-7. | |||
* Rainer Kress, "Numerical Analysis", Springer, 1991. ISBN 0-387-98408-9 | |||
{{Numerical linear algebra}} | |||
[[Category:Numerical linear algebra]] |
Revision as of 04:26, 28 October 2013
Rayleigh quotient iteration is an eigenvalue algorithm which extends the idea of the inverse iteration by using the Rayleigh quotient to obtain increasingly accurate eigenvalue estimates.
Rayleigh quotient iteration is an iterative method, that is, it must be repeated until it converges to an answer (this is true for all eigenvalue algorithms). Fortunately, very rapid convergence is guaranteed and no more than a few iterations are needed in practice. The Rayleigh quotient iteration algorithm converges cubically for Hermitian or symmetric matrices, given an initial vector that is sufficiently close to an eigenvector of the matrix that is being analyzed.
Algorithm
The algorithm is very similar to inverse iteration, but replaces the estimated eigenvalue at the end of each iteration with the Rayleigh quotient. Begin by choosing some value as an initial eigenvalue guess for the Hermitian matrix . An initial vector must also be supplied as initial eigenvector guess.
Calculate the next approximation of the eigenvector by
where is the identity matrix,
and set the next approximation of the eigenvalue to the Rayleigh quotient of the current iteration equal to
To compute more than one eigenvalue, the algorithm can be combined with a deflation technique.
Example
Consider the matrix
for which the exact eigenvalues are , and , with corresponding eigenvectors
The largest eigenvalue is and corresponds to any eigenvector proportional to
We begin with an initial eigenvalue guess of
Then, the first iteration yields
the second iteration,
and the third,
from which the cubic convergence is evident.
Octave Implementation
The following is a simple implementation of the algorithm in Octave.
function x = rayleigh(A,epsilon,mu,x)
x = x / norm(x);
y = (A-mu*eye(rows(A))) \ x;
lambda = y'*x;
mu = mu + 1 / lambda
err = norm(y-lambda*x) / norm(y)
while err > epsilon
x = y / norm(y);
y = (A-mu*eye(rows(A))) \ x;
lambda = y'*x;
mu = mu + 1 / lambda
err = norm(y-lambda*x) / norm(y)
end
end
See also
References
- Lloyd N. Trefethen and David Bau, III, Numerical Linear Algebra, Society for Industrial and Applied Mathematics, 1997. ISBN 0-89871-361-7.
- Rainer Kress, "Numerical Analysis", Springer, 1991. ISBN 0-387-98408-9