Gram-Schmidt-Verfahren

Gram-Schmidt-Verfahren

Studium
u⃗k=v⃗k−∑j=1k−1⟨v⃗k,u⃗j⟩⟨u⃗j,u⃗j⟩ u⃗j,w⃗k=u⃗k∥u⃗k∥\vec u_k = \vec v_k - \sum_{j=1}^{k-1} \frac{\langle \vec v_k, \vec u_j \rangle}{\langle \vec u_j, \vec u_j \rangle}\, \vec u_j, \qquad \vec w_k = \frac{\vec u_k}{\lVert \vec u_k \rVert}

Voraussetzung: v⃗1,…,v⃗n\vec v_1, \ldots, \vec v_n linear unabhängig

v⃗1,…,v⃗n\vec v_1, \ldots, \vec v_n
gegebene linear unabhängige Vektoren
u⃗k\vec u_k
k-ter orthogonalisierter Vektor, beginnend mit u₁ = v₁
w⃗k\vec w_k
k-ter normierter Vektor der Orthonormalbasis
⟨⋅,⋅⟩\langle \cdot, \cdot \rangle
Skalarprodukt, im Rⁿ das Standardskalarprodukt
∥u⃗k∥\lVert \vec u_k \rVert
Länge (Norm) von u_k

Man zieht von jedem Vektor seine Projektionen auf die bereits orthogonalisierten Vektoren ab und normiert danach.

Erklärung

Das Gram-Schmidt-Verfahren macht aus linear unabhängigen Vektoren v⃗1,…,v⃗n\vec v_1, \ldots, \vec v_n ein Orthogonalsystem u⃗1,…,u⃗n\vec u_1, \ldots, \vec u_n, das denselben Raum aufspannt. Normiert man anschließend, erhält man eine Orthonormalbasis w⃗1,…,w⃗n\vec w_1, \ldots, \vec w_n.

Schritte:

  1. u⃗1=v⃗1\vec u_1 = \vec v_1.
  2. Für k=2,…,nk = 2, \ldots, n: Von v⃗k\vec v_k werden die orthogonalen Projektionen auf alle bisherigen u⃗j\vec u_j abgezogen. Was übrig bleibt, steht senkrecht auf allen u⃗1,…,u⃗k−1\vec u_1, \ldots, \vec u_{k-1}.
  3. Jeden Vektor durch seine Länge teilen: w⃗k=u⃗k/∥u⃗k∥\vec w_k = \vec u_k / \lVert \vec u_k \rVert.

Für jedes kk spannen u⃗1,…,u⃗k\vec u_1, \ldots, \vec u_k denselben Raum auf wie v⃗1,…,v⃗k\vec v_1, \ldots, \vec v_k. Sind die v⃗k\vec v_k linear abhängig, entsteht irgendwann u⃗k=0⃗\vec u_k = \vec 0, und die Division im Normierungsschritt bricht ab.

Man darf jedes u⃗k\vec u_k vor dem nächsten Schritt mit einer Zahl ≠0\neq 0 multiplizieren, um Brüche zu vermeiden. Die Richtung, und damit das Ergebnis nach dem Normieren, bleibt bis aufs Vorzeichen gleich. Das Verfahren funktioniert mit jedem Skalarprodukt, z.B. auch mit ⟨f,g⟩=∫−11f(x)g(x) dx\langle f, g \rangle = \int_{-1}^{1} f(x) g(x)\,dx für Polynome.

Beispiele

Gegeben v⃗1=(1, 1, 0)\vec v_1 = (1,\ 1,\ 0), v⃗2=(1, 0, 1)\vec v_2 = (1,\ 0,\ 1), v⃗3=(0, 1, 1)\vec v_3 = (0,\ 1,\ 1).

u⃗1=(1, 1, 0)\vec u_1 = (1,\ 1,\ 0), ⟨u⃗1,u⃗1⟩=2\langle \vec u_1, \vec u_1 \rangle = 2.

u⃗2=v⃗2−12u⃗1=(12, −12, 1)\vec u_2 = \vec v_2 - \frac{1}{2}\vec u_1 = \left(\tfrac12,\ -\tfrac12,\ 1\right), ⟨u⃗2,u⃗2⟩=32\langle \vec u_2, \vec u_2 \rangle = \frac{3}{2}.

u⃗3=v⃗3−12u⃗1−1/23/2u⃗2=v⃗3−12u⃗1−13u⃗2=(−23, 23, 23)\vec u_3 = \vec v_3 - \frac{1}{2}\vec u_1 - \frac{1/2}{3/2}\vec u_2 = \vec v_3 - \frac12 \vec u_1 - \frac13 \vec u_2 = \left(-\tfrac23,\ \tfrac23,\ \tfrac23\right).

Alle drei Skalarprodukte ⟨u⃗j,u⃗k⟩\langle \vec u_j, \vec u_k \rangle mit j≠kj \neq k sind 00. Normiert (mit den Vielfachen (1, −1, 2)(1,\ -1,\ 2) und (−1, 1, 1)(-1,\ 1,\ 1) gerechnet):

w⃗1=12(1, 1, 0),w⃗2=16(1, −1, 2),w⃗3=13(−1, 1, 1).\vec w_1 = \tfrac{1}{\sqrt2}(1,\ 1,\ 0), \quad \vec w_2 = \tfrac{1}{\sqrt6}(1,\ -1,\ 2), \quad \vec w_3 = \tfrac{1}{\sqrt3}(-1,\ 1,\ 1).

Typische Fehler

  • Von v⃗k\vec v_k die Projektionen auf die ursprünglichen v⃗j\vec v_j statt auf die bereits orthogonalisierten u⃗j\vec u_j abziehen.
  • Im Nenner ⟨v⃗k,v⃗k⟩\langle \vec v_k, \vec v_k \rangle statt ⟨u⃗j,u⃗j⟩\langle \vec u_j, \vec u_j \rangle verwenden.
  • Den Nenner weglassen, obwohl mit den nicht normierten u⃗j\vec u_j gerechnet wird. Ohne Nenner geht es nur mit den normierten w⃗j\vec w_j: Dann lautet der Abzug ⟨v⃗k,w⃗j⟩ w⃗j\langle \vec v_k, \vec w_j \rangle\, \vec w_j, weil ⟨w⃗j,w⃗j⟩=1\langle \vec w_j, \vec w_j \rangle = 1.
  • Das Normieren am Ende vergessen, wenn eine Orthonormalbasis verlangt ist.

Verwandte Formeln