numerik – interaktiv - .numerik – interaktiv thomas risse institut f¨ur informatik und...

Download Numerik – interaktiv - .Numerik – interaktiv Thomas Risse Institut f¨ur Informatik und Automation

Post on 03-Jun-2019

230 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

Numerik interaktiv

Thomas RisseInstitut fur Informatik und Automation

Hochschule Bremen

5. Dezember 2007

Zusammenfassung

Dieses Dokument erlaubt, diverse grundlegende numerische Algo-rithmen interaktiv zu untersuchen.So bestimmt dieses Dokument die Berechnungsgenauigkeit, ermoglichteinfachste 2D und 3D Vektorrechnung, lost Systeme linearer Glei-chungen, invertiert Matrizen, listet einige numerische Konstanten, bie-tet die Moglichkeit, beliebige aus elementaren Funktionen zusammen-gesetzte Funktionen auszuwerten, stellt diese elementaren Funktio-nen zusammen mit ihren Umkehr-Funktionen vor, fuhrt CORDIC-Algorithmen ein, erlaubt, Nullstellen, Minima und Integrale solcherbeliebigen Funktionen zu approximieren sowie gewohnliche Differen-tialgleichungen erster Ordnung numerisch zu losen.

1

1 Vorbemerkung

Dieses Dokument soll helfen, Einsichten in Arbeitsweise und Leistung ei-niger grundlegender numerischer Algorithmen zu vermitteln, indem es dieGelegenheit bietet, jeder Algorithmus direkt auszufuhren, Abhangigkeit vonStartwerten zu untersuchen, Komplexitat von verschiedenen Algorithmen mitderselben Zielsetzung zu vergleichen usw.

1.1 Konventionen und Gebrauch

Im Folgenden grundsatzlich:

click = , um eine Operation auszufuhren oder eine Funktion auszuwerten;click Operation , um Argumente und Ergebnis zu loschen,

Eingaben in -Felder

Ausgaben in oder -Felder

Das layout zielt darauf ab, alle fur einen Algorithmus relevanten Informa-tionen Bildschirm-fullend, also Fenster-Breite (Strg-2) im Acrobat Readeroder Seiten-Breite (Strg-3) im Acrobat Writer auf einer Seite darzustellen.

2

1.2 Rechengenauigkeit

Die relative Rechengenauigkeit1 wird durch

epsilon=1.0;

while (1.0+epsilon>1.0) epsilon/=2;

nu=2*epsilon;

bestimmt. Fur JavaScript gilt: JS precision =

Ub. Genauigkeit von JavaScript Berechnungen ausgedruckt in Anzahl vonDezimal-Ziffern?

1.3 Gleitpunkt-Arithmetik

Aufgrund der beschrankten Genauigkeit gelten bestimmte Gesetze der Arith-metik im Rechner nicht! etwa das der Assoziativitat (a+ b)+ c = a+(b+ c)

a =

b =

c =

(a + b) + c =

a + (b + c) =reset Add

Ub. Berechne den relativen Fehler!

1 Im Gegensatz zu JavaScript oder Java-applets konnen Computer-Algebra-Pakete wieetwa Mathematica, Maple oder MuPad mit beliebig vorzugebender Genauigkeit rechnen.

3

1.4 Gleitpunkt-Arithmetik mit gegebener Prazision

JavaScript-Berechnungen sind ziemlich genau. Um die Effekte der beschrank-ten Genauigkeit demonstrieren zu konnen, kann nun die Anzahl der Dezimal-Ziffern fur die Darstellung von Gleitpunkt-Zahlen vorgegeben werden.

Argumente und Ergebnisse dargestellt mit JavaScript-Genauigkeit

a = b = c =

a + b = (a + b) + c =

b + c = a + (b + c) =

p = # Dezimal-Ziffern = test random reset Add

Argumente und Ergebnisse dargestellt mit p Dezimal-Ziffern

a = b = c =

(a + b) = (a + b) + c =

(b + c) = a + (b + c) =

Ub. Darstellung der eingegebenen Zahlen? relativer Fehler fur verschiedenep ?

4

2 Vektor-Rechnung

2.1 Operationen auf Vektoren der Ebene

2.1.1 skalare Vielfache c~a von Vektoren ~a der Ebene

( )

=( )

2.1.2 Addition ~a +~b von Vektoren der Ebene( )+

( )=

( )

2.1.3 Skalar-Produkt ~a ~b von Vektoren der Ebene( )

( )=

Ub.: Welchen Winkel 6 (~a,~b) schlieen die Vektoren ~a =

22

(1, 1) und ~b =

(

3 2, 1) ein? Verwende Abschnitt 5.

2.1.4 Lange oder Betrag |~a| von Vektoren der Ebene

reset( ) =

Ub.: Normalisiere Vektoren wie ~a =

22

(1, 1) oder ~b = (

32, 1). VerwendeAbschnitt 5.

5

2.2 Operationen auf Vektoren im Raum

2.2.1 skalare Vielfache c~a von Vektoren ~a im Raum

=

2.2.2 Addition ~a +~b von Vektoren im Raum +

=

2.2.3 Skalar-Produkt ~a ~b von Vektoren im Raum

=

2.2.4 Lange oder Betrag |~a| von Vektoren im Raum

reset

=

2.2.5 Vektor-Produkt ~a~b von Vektoren im Raum

=

Ub.: Verifiziere: ~ex, ~ey und ~ez sind orthonormiert.

Ub.: Konstruiere Einheitswurfel mit Ecken in ~0 und

33

(1, 1, 1).

6

3 lineare Gleichungssysteme

Lineare Gleichungssysteme sind durch Ax = b gegeben. Zur Demonstrationwerden nur 3 3-Koeffizienten-Matrizen A verwendet, also LGSe mit dreiGleichungen in drei Unbekannten. Verglichen werden das Gausche Elimina-tionsverfahren ohne und mit Pivotisierung und das Gau-Seidel-Verfahren.

7

3.1 Gausches Eliminationsverfahren

Koeffizienten-Matrix A und Vektor b der rechten Seite spezifizieren:

A=

Ax=A

x1x2x3

=A

=

=breset tests random save A and b det(A) =

x1 eliminieren dann x2 eliminieren

x3 bestimmen x2 bestimmen x1 bestimmen

Mit originaler Koeffizienten-Matrix A, Losungsvektor x und originalem Vek-tor b der rechten Seite berechne Residuum r = bAx Residuum

x

=

= r mit ||r||2 =

Ub.: Genauigkeit? Losungsbedingungen? unterbestimmte Systeme linearerGleichungen?

8

3.2 Gausches Eliminationsverfahrenmit Pivotisierung

Details zur partiellen und vollstandigen Pivotisierung siehe z.B.www.weblearn.hs-bremen.de/risse/MAI/docs/heath.pdf

Koeffizienten-Matrix A und Vektor b der rechten Seite spezifizieren:

A=

Ax=A

x1x2x3

=A

=

=breset test random save A and b det(A) = solve

Mit originaler Koeffizienten-Matrix A, Losungsvektor x und originalem Vek-tor b der rechten Seite berechne Residuum r = bAx Residuum

x

=

= r mit ||r||2 =

Ub.: Was passiert, wenn die Matrix schlecht konditioniert ist? vgl.www.weblearn.hs-bremen.de/risse/MAI/docs/heath.pdf

9

http://www.weblearn.hs-bremen.de/risse/MAI/docs/heath.pdfhttp://www.weblearn.hs-bremen.de/risse/MAI/docs/heath.pdf

3.3 Stifelsches Verfahren LGS & Matrix Inversion

Das Stifelsche Austauschverfahren lost quadratische Systeme linearer Glei-chungen Ax = b, indem jede Gleichung nach einer Unbekannten aufgelostund die Unbekannte in allen anderen Gleichungen durch den sich ergeben-den Ausdruck ersetzt wird. Dabei werden also Unbekannte gegen Konstanten(der rechten Seite) ausgetauscht. Das Verfahren lost Ax = b, indem dieKoeffizienten-Matrix A invertiert wird, so da sich x = A1b ergibt.

Austausche werden im folgenden Schema durchgefuhrt. Die sogenannte Kel-ler-Zeile speichert Zwischenergebnisse zur Wiederverwendung.

x1 x2 . . . xj . . . xnb1 a11 a12 . . . a1j . . . a1n...

...bi ai1 ai2 . . . aij . . . ain...

...bn1 an1,1 an1,2 . . . an1,j . . . an1,n

bn an1 an2 . . . anj . . . annKeller

bi wird gegen xj durch die folgende Prozedur ausgetauscht:

vorbereiten pivot = aij; for (k 6= j) Keller[k] = aik/pivot;

austauschen aij = 1/pivot; for (k 6= i) akj /= pivot;for (k 6= j) akj=tmp[k];for (u 6= i) for (v 6= j) auv += auj*tmp[v];

Ub.: Verifiziere die Invarianz von Spalten-Vektor (linke Seite des Schemas)= Matrix mal transponierter Zeilen-Vektor (oben im Schema).

10

reset test random save A

Keller

mit det(A) =1. click: Keller fullen2. click: Rest setzen3. click: Pivot-Spalte setzen4. click: Pivot-Zeile setzen

161

162

163

261

262

263

361

362

363

verifiziereAA1 = I

AA1 =

Ub.: Genauigkeit? Auswirkungen verschiedener Reihenfolgen der Austausch-schritte?

11

3.4 Gau-Seidel-Verfahren

Vorausgesetzt, alle Hauptdiagonal-Elemente der Koeffizienten-Matrix sindvon Null verschieden, d.h. aii 6= 0 fur i = 1, . . . , n, so lat sich Ax = b nachden Unbekannten der Hauptdiagonalen auflosen, fur n = 3 also

x1 =1

a11(b1 a12x2 a13x3)

x2 =1

a22(b2 a21x1 a23x3)

x3 =1

a33(b3 a31x1 a32x2)

und per

x(k+1)1 =

1a11

(b1 a12x(k)2 a13x

(k)3

)x

(k+1)2 =

1a22

(b2 a21x(k+1)1 a23x

(k)3

)x

(k+1)3 =

1a33

(b3 a31x(k+1)1 a32x

(k+1)2

)dazu nutzen, ausgehend von einem Start-Vektor x(0) schrittweise x(k) einzu-setzen und unter Verwendung bereits verbesserter Komponenten weiter zuverbessern und so x(k) in x(k+1) zu uberfuhren.

Das Verfahren konvergiert, wenn etwa (gegebenenfalls nach Umordnung) dieHauptdiagonalelemente jeweils die ubrigen Elemente der zugehorigen Zeiledominieren, d.h. wenn |ai,i| >

nj=1,j 6=i |ai,j| fur i = 1, . . . , n gilt.

12

Koeffizienten-Matrix A und Vektor b der rechten Seite spezifizieren:

A=

Ax(k+1) =

= b

Start-Vektor x(0) =

, det(A) =

reset test random A random b random x(0) Konvergenz?

k =

x(k) =

k + 1 =

x(k+1) =

x(k)1 x

(k+1)1 x

(k)2 x

(k+1)2 x

(k)3 x

(k+1)3 oder zusammen k k + 1

Ub.: Abhangigkeit vom Start-Vektor? Konvergenzgeschwindigkeit?

Ub.: Vergleich direktes (Gau) mit iterativem (Gau-Seidel) Verfahren?

13

4 einige Konstanten

e =

ln 2 =

ld e=log2 e=

1/2 =

=

ln 10 =

lg e=log10 e=

2 =

get constants

Ub.: Vergleiche die eingebauten Konstanten mit berechneten Werten ge-eigneter Funktionen im Abschnitt 5.

14

5 Berechnung von Funktionswerten

Ausgewertet werden bel