Putzer-Algorithmus

Aus testwiki
Zur Navigation springen Zur Suche springen

Beim Putzer-Algorithmus (nach Eugene James Putzer) handelt es sich um eine rekursive Methode zur Berechnung des Matrixexponentials. Ziel des Verfahrens ist es also, für gegebenes An×n und x das Matrixexponential exp(Ax):=k=0(Ax)kk! zu bestimmen.

Der Algorithmus spielt wie auch das Matrixexponential vor allem in der Theorie gewöhnlicher Differentialgleichungen eine Rolle, da durch ihn Lösungen linearer Differentialgleichungssysteme bestimmt werden können.[1]

Das Verfahren

Sei An×n eine quadratische (n×n)-Matrix. Sei weiter {λj}j=1,,n eine Abzählung der Eigenwerte der Matrix A unter Berücksichtigung der algebraischen Vielfachheit. Diese Abzählung existiert, da algebraisch abgeschlossen ist.

Für k{1,,n} definieren wir nun rekursiv stetig differenzierbare Funktionen pkC1(,) und (n×n)-Matrizen Mk1n×n, so dass für x folgende Beziehung gilt:

exp(Ax)=k=1npk(x)Mk1.

Die Rekursionsvorschrift für die Matrizen Mk lautet

M0:=In und Mk:=(AλkI)Mk1.

Die pk sind rekursiv durch folgende Anfangswertprobleme definiert:

{p1(x)=λ1p1(x)p1(0)=1{pk(x)=λkpk(x)+pk1pk(0)=0

Beispiel

Illustration des Verfahrens für n=2: Sei folgende Matrix A=(3111) gegeben. Wir werden nun mit dem Putzer-Algorithmus das Matrixexponential exp(Ax) für beliebiges x berechnen. Als erstes bestimmen wir die Eigenwerte der Matrix A unter Berücksichtigung der algebraischen Vielfachheit. Dazu berechnen wir das charakteristische Polynom und setzen es gleich 0:

χA(λ):=det(AλI)=det(3λ111λ)=λ24λ+4=(λ2)2=!0

Es folgt, dass λ=2 der einzige Eigenwert der Matrix A ist, allerdings mit algebraischer Vielfachheit 2. Somit handelt es sich bei (λ1,λ2)=(2,2) um eine Abzählung der Eigenwerte von A.

Als nächstes bestimmen wir mit den Rekursionsformeln von oben die Matrizen Mk,k{0,1}. Es folgt M0=(1001) und entsprechend M1=(Aλ1I2)M0=(Aλ1I2)=(1111).

Zuletzt berechnen wir für k{1,2} die Funktionen pk, die über folgende Anfangswertprobleme definiert sind:

{p1(x)=2p1(x)p1(0)=1{p2(x)=2p2(x)+p1p2(0)=0

Das erste Anfangswertproblem lässt sich mittels der Lösungsmethode Trennung der Veränderlichen für gewöhnliche Differentialgleichungen leicht als p1(x)=exp(2x) bestimmen. Das zweite Anfangswertproblem lässt sich ebenfalls sehr einfach über die Methode Variation der Konstanten berechnen und wir erhalten als Lösung p2(x)=xexp(2x).

Da wir nun alles beisammen haben, können wir exp(Ax) für ein x angeben:

exp(Ax)=k=12pk(x)Mk1=exp(2x)(1001)+xexp(2x)(1111)=exp(2x)(1+xxx1x)

Spezielle Lösungen

Wie im Beispiel gezeigt, lässt sich das erste Anfangswertproblem mittels der Lösungsmethode Trennung der Veränderlichen für gewöhnliche Differentialgleichungen bestimmen. Die weiteren Anfangswertprobleme mit k{2,,n} lassen sich ebenfalls einfach über die Methode Variation der Konstanten berechnen. Dementsprechend folgen zunächst die Lösungen:

p1(t)=eλ1t
pk(t)=eλktx=0tpk1(x)eλkxdx

Hieraus lassen sich wiederum weitere spezielle Lösungen abhängig von den Eigenwerten ableiten.

Gleiche Eigenwerte

Sind alle Eigenwerte gleich (λ=λ1=λ2==λn), folgt aus der integralen Darstellung für pk mit k2, dass die Funktion f=1 gerade (k1)-mal integriert werden muss. Für k1 gilt somit:

pk(t)=tk1(k1)!eλt

Das Matrix-Exponential einer (n×n)-Matrix mit gleichen Eigenwerten λ kann schließlich explizit mit folgender Formel bestimmt werden:

exp(At)=eλtE+teλt(AλE)+=eλti=0n1tii!(AλE)i

Ungleiche Eigenwerte

Häufig sind alle Eigenwerte der Matrix verschieden (λiλj für ij). In diesem Fall gilt für die Diskriminante des charakteristischen Polynoms Dn0. Die Lösung für p1(t) bleibt davon unverändert. Ab k2 folgt nach Integration:

p2(t)=eλ1teλ2tλ1λ2,
p3(t)=eλ1teλ3t(λ1λ2)(λ1λ3)+eλ2teλ3t(λ2λ1)(λ2λ3)
usw.

Die Lösung folgt hierbei offensichtlich der Systematik

pk(t)=i=1k1eλiteλktj=1k(λiλj) mit ji.

Für das Exponential einer (n×n)-Matrix mit verschiedenen Eigenwerten folgt damit die Newton-Interpolation[2]

exp(At)=eλ1tE+i=2n[λ1,,λi]j=1i1(AλjE)

für die Darstellung der Matrix-Exponentialfunktion als Polynom. Die von x abhängigen Funktionen können dabei rekursiv berechnet werden mit

[λ1,λ2]=eλ1teλ2tλ1λ2,
[λ1,,λk+1]=[λ1,,λk][λ2,,λk+1]λ1λk+1 (k2).

Aufwand von Polynom-Lösungsmethoden

Der Putzer-Algorithmus hat einen Aufwand der Größenordnung 𝒪(n4) (im Wesentlichen n Matrizenmultiplikationen). Damit ist der Aufwand deutlich höher als bei Verwendung von Methoden auf Basis der Taylorreihe oder auf Basis von Matrix-Zerlegungsmethoden (wie Diagonalisierung oder QR-Algorithmus), mit jeweils einem Aufwand der Größenordnung 𝒪(n3). Der Algorithmus ist also eher nur für kleinere Matrizen geeignet, jedoch erhält man hier vorteilhaft eine vollständig symbolische Lösung.

Vergleicht man zum Aufwand die Lösung für die Matrix-Exponentialfunktion mittels Diagonalisieren der Matrix

exp(At)=Vdiag(eλit)V1=j=1neλitvjyjT,

wobei yjT die j-te Zeile von V1 ist, mit der Lagrange-Interpolation

exp(At)=j=1neλitAj,

wobei

Aj=k=1nAλkEλjλk(kj),

dann folgt daraus

Aj=vjyjT

und der Aufwand der Größenordnung 𝒪(n4) zur Berechnung von Aj ist völlig unnötig.[3]

Literatur

  • Paul Waltman: Differential Equations and Dynamical Systems, Dover Publications, 2004, ISBN 978-0486434780, S. 49–60
  • Eugene J. Putzer: Avoiding the Jordan Canonical Form in the Discussion of Linear Systems with Constant Coefficients, The American Mathematical Monthly, Vol. 73(1), 1966, S. 2–7, DOI:10.1080/00029890.1966.11970714.
  • Vorlage:YouTube

Einzelnachweise