Rayleigh iteration method

このトピックには0件の返信が含まれ、1人の投稿者がいます。2 年、 2 ヶ月前 nereida37j さんが最後の更新を行いました。

1件の投稿を表示中 - 1 - 1件目 (全1件中)
  • 投稿者
    投稿
  • #62451 返信

    nereida37j

    <br><br>Rayleigh iteration method – an iterative algorithm for calculating eigenvalues ​​and vectors, which complements the idea of ​​the inverse power-law method by iteratively calculating the current approximation to the eigenvalue using the Rayleigh ratio.<br><br>Rayleigh’s method has a very high convergence rate and often requires only a few iterations to obtain a solution. For symmetric and Hermitian matrices, with sufficiently well chosen initial values, the convergence is cubic. However, the execution time of each is usually proportional to the cube of the size of the matrix, while for the inverse power-law and power-law methods it is quadratic.<br>Algorithm<br>As in the inverse power method, we set some μ 0 displaystyle mu _ 0 to the eigenvalue of the matrix A displaystyle A and an initial vector b 0 displaystyle b_ 0, which can be either random or known approximation to the eigenvector. Next, we iteratively compute new approximations to the eigenvector bi + 1 displaystyle b_ i + 1 by the formula<br><br> bi + 1 = (A – μ i I) – 1 bi | | (A – μ i I) – 1 bi | | , displaystyle b_ i + 1 = frac (A-mu _ i I) ^ – 1 b_ i ,, where I displaystyle I is the identity matrix.<br><br>At the end of the iteration, we calculate the following approximation to the eigenvalue using the ratio:<br><br> μ i + 1 = bi + 1 ∗ A bi + 1 bi + 1 ∗ bi + 1. displaystyle mu _ i + 1 = frac b_ i + 1 ^ * Ab_ i + 1 b_ i + 1 ^ * b_ i + 1. <br>An example of software implementation<br>Below is an example implementation in GNU Octave language.<br><br> function x = rayleigh (A, epsilon, mu, x) x = x / norm (x); % the backslash operator in Octave solves a linear system 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<br>

1件の投稿を表示中 - 1 - 1件目 (全1件中)
返信先: Rayleigh iteration method
あなたの情報: