Add chapter concerning vector iteration
This commit is contained in:
parent
f4eac0a144
commit
9d75bf669c
1 changed files with 53 additions and 3 deletions
|
@ -69,8 +69,8 @@
|
|||
- [Numerische Bestimmung von Eigenwerten und Eigenvektoren](#numerische-bestimmung-von-eigenwerten-und-eigenvektoren)
|
||||
- [Theorie](#theorie)
|
||||
- [$QR$-Verfahren](#qr-verfahren)
|
||||
- [Vektor-Iteration](#vektor-iteration)
|
||||
- [Formelbuchstaben](#formelbuchstaben)
|
||||
- [Glossar](#glossar)
|
||||
|
||||
## Einführung
|
||||
### Einsatzgebiet
|
||||
|
@ -1582,6 +1582,57 @@ def EV(A, iterations):
|
|||
return [A, P]
|
||||
```
|
||||
|
||||
### Vektor-Iteration
|
||||
|
||||
Die Vektor-Iteration, auch **von-Mises-Iteration** genannt, erlaubt das Bestimmen des grössten Eigenwertes $\lambda$ einer diagonalisierbaren Matrix $A$.
|
||||
|
||||
<div class="formula">
|
||||
|
||||
***Spektral-Radius:***
|
||||
|
||||
Der Spektral-Radius $\rho(A)$ definiert den höchsten Eigenwert der Matrix $A$:
|
||||
|
||||
$$\rho(A) = \max\{|\lambda|\; | \; \lambda \text{ ist ein Eigenwert von }A \in \mathbb{R}^{n \times n}\}$$
|
||||
|
||||
</div>
|
||||
<div class="formula">
|
||||
|
||||
Sei $A$ eine diagonalisierbare Matrix mit den Eigenwerten $\lambda_1, \dots, \lambda_n$ wobei $\lambda_1$ betragsmässig am höchsten ist:
|
||||
|
||||
$$|\lambda_1| > |\lambda_2| \ge \dots \ge | \lambda_n|$$
|
||||
|
||||
Der grösste Eigenwert $\lambda_1$ und der dazugehörige Eigenvektor $v$ lässt sich mit der Vektor-Iteration bestimmen.
|
||||
|
||||
Zunächst muss ein beliebiger Startvektor $v_0 \in \mathbb{C}^n$ mit Länge $1$ gewählt werden.
|
||||
|
||||
Als nächstes wird für $k = 0, \dots, \infin$ folgendes ausgeführt:
|
||||
|
||||
$$v^{(k + 1)} = \frac{A \cdot v^{(k)}}{||A \cdot v^{(k)}||_2}$$
|
||||
|
||||
$$\lambda^{(k + 1)} = \frac{(v^{(k)})^T \cdot A \cdot v^{(k)}}{(v^{(k)})^T \cdot v^{(k)}}$$
|
||||
|
||||
</div>
|
||||
|
||||
***Code-Beispiel:***
|
||||
|
||||
```py
|
||||
from numpy import array, linalg
|
||||
|
||||
def vectorIteration(A, v, iterations = 10):
|
||||
l = 0
|
||||
v = array(v)
|
||||
v = v.reshape(len(v), 1)
|
||||
for i in range(iterations):
|
||||
l = ((v.T @ A @ v) / (v.T @ v)).item()
|
||||
v = (A @ v) / (linalg.norm(A @ v, ord=2))
|
||||
print()
|
||||
print(f"k: {i + 1}")
|
||||
print(f"x: {v}")
|
||||
print(f"λ: {l}")
|
||||
|
||||
return [v, l]
|
||||
```
|
||||
|
||||
## Formelbuchstaben
|
||||
<div class="letters">
|
||||
|
||||
|
@ -1611,7 +1662,6 @@ def EV(A, iterations):
|
|||
- $\tilde{x}$: Approximation/Annäherung an $x$
|
||||
- $x^{(k)}$: Die Annäherung von $x$ in der $k$-ten Iteration
|
||||
- $\lambda$: Eigenwert einer Matrix
|
||||
- $\rho(A)$: Spektral-Radius der Matrix $A$ (siehe Vektor-Iteration)
|
||||
|
||||
</div>
|
||||
|
||||
## Glossar
|
||||
|
|
Loading…
Reference in a new issue