28.02.2014 Aufrufe

Kapitel 2 Lineare und nichtlineare Gleichungen - Institut für ...

Kapitel 2 Lineare und nichtlineare Gleichungen - Institut für ...

Kapitel 2 Lineare und nichtlineare Gleichungen - Institut für ...

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

2.1 <strong>Lineare</strong> Gleichungssysteme 43<br />

Dies ergibt:<br />

j−1<br />

<br />

i = j : a jj = ljj 2 + ljk 2 bzw. l jj :=<br />

k=1<br />

j−1<br />

<br />

i>j: a ij = l ij l jj + l ik l jk bzw. l ij :=<br />

k=1<br />

j−1<br />

<br />

a jj −<br />

k=1<br />

j−1<br />

<br />

a ij −<br />

k=1<br />

l 2 jk 1/2,<br />

l ik l jk<br />

l jj .<br />

Wegen dieser <strong>Gleichungen</strong> kann man sukzessive spalten- oder zeilenweise die Matrix L<br />

berechnen. So lautet z. B. eine Spaltenversion des resultierenden Cholesky-Verfahrens:<br />

• Input: Gegeben sei die symmetrische, positiv definite Matrix A =(a ij ) ∈ R n×n .<br />

Benutzt wird nur die untere Hälfte von A, d. h. Elemente a ij mit i ≥ j.<br />

• Für j =1,...,n:<br />

l jj := (a jj − j−1<br />

k=1 l2 jk )1/2 .<br />

Für i = j +1,...,n:<br />

l ij := (a ij − j−1<br />

k=1 l ikl jk )/l jj .<br />

• Output: Nur die untere Hälfte von L (einschließlich der Diagonalen) ist definiert.<br />

Bevor das Pivotelement durch Wurzelziehen gebildet wird, prüft man natürlich, ob<br />

a kk − k−1<br />

j=1 a2 kj ≥ ist, wobei >0 eine vorgegebene kleine Zahl ist. Eine Umsetzung8<br />

in eine MATLAB-Funktion ist die folgende (wobei wir auf den oben angegebenen Test<br />

verzichten):<br />

function L=Chol(A);<br />

%****************************************************<br />

%Input-Parameter:<br />

% A n x n symmerische, positiv definite Matrix<br />

%Output-Parameter:<br />

% L n x n untere Dreiecksmatrix mit positiven<br />

% Diagonalelementen <strong>und</strong> A=L*L’.<br />

%****************************************************<br />

[n,n]=size(A);<br />

L=zeros(n); s=zeros(n,1);<br />

for j=1:n<br />

s(j:n)=A(j:n,j);<br />

for k=1:j-1<br />

s(j:n)=s(j:n)-L(j:n,k)*L(j,k);<br />

end<br />

% s(i)=A(i,j)-sum_1^(j-1)L(i,k)L(j,k), i=j,...,n<br />

L(j:n,j)=s(j:n)/sqrt(s(j));<br />

end<br />

8 Siehe C, F. van Loan (1997, S. 245).

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!