lizfcm/notes/Nov-3.org

63 lines
1.6 KiB
Org Mode
Raw Normal View History

2023-11-06 10:52:40 -05:00
* eigenvalues \rightarrow power method
we iterate on the x_{k+1} = A x_k
y = Av_0
v_1 = \frac{1}{|| y ||} (y)
\lambda_0 = v_0^T A v_0 = v_0^T y
Find the largest eigenvalue;
#+BEGIN_SRC c
while (error > tol && iter < max_iter) {
v_1 = (1 / magnitude(y)) * y;
w = m_dot_v(a, v_1);
lambda_1 = v_dot_v(transpose(v_1), w);
error = abs(lambda_1 - lambda_0);
iter++;
lambda_0 = lambda_1;
y = v_1;
}
return [lambda_1, error];
#+END_SRC
Find the smallest eigenvalue:
** We know:
If \lambda_1 is the largest eigenvalue of $A$ then \frac{1}{\lambda_1} is the smallest eigenvalue of $A^{-1}$.
If \lambda_n is the smallest eigenvalue of $A$ then \frac{1}{\lambda_n} is the largest eigenvalue of $A^{-1}$.
*** However, calculating $A^{-1}$ is inefficient
So, transform $w = A^{-1} v_1 \Rightarrow$ Solve $Aw = v_1$ with LU or GE (line 3 of above snippet).
And, transform $y = A^{-1} v_0 \Rightarrow$ Solve $Ay = v_0$ with LU or GE.
** Conclusions
We have the means to compute the approximations of \lambda_1 and \lambda_n.
(\lambda_1 \rightarrow power method)
(\lambda_n \rightarrow inverse power method)
* Eigenvalue Shifting
If (\lambda, v) is an eigen pair, (v \neq 0)
Av = \lambdav
Thus for any \mu \in R
(Av - \mu I v) = (A - \mu I)v = \lambda v - \mu I v
= (\lambda - \mu)v
\Rightarrow \lambda - \mu is an eigenvalue of (A - \mu I)
(A - \mu I)v = (\lambda - \mu)v
Idea is to choose \mu close to our eigenvalue. We can then inverse iterate to
construct an approximation of \lambda - \mu and then add \mu back to get \lambda.
v_0 = a_1 v_1 + a_2 v_2 + \cdots + a_n v_n
A v_0 = a_1 (\lambda_1 v_1) + \cdots