219 111 40MB
German Pages 320 Year 1998
Mathematik für Wirtschaftswissenschaftler und Ingenieure
mit Mathematica Von
Dipl. Math. Werner Sanns und
Dipl. Math. Marco Schuchmann
R. Oldenbourg Verlag München Wien
Die Informationen in dieser Dokumentation wurden mit großer Sorgfalt erstellt. Trotzdem können Fehler nicht ausgeschlossen werden. Für fehlerhafte Angaben und deren Folgen werden weder juristische Verantwortung noch irgendeine Haftung übernommen. Für eine Mitteilung eventueller Fehler sind die Autoren dankbar.
Die Deutsche Bibliothek - CIP-Einheitsaufnahme Sanns, Werner: Mathematica für Wirtschaftswissenschaftler und Ingenieure mit Mathematica / von Werner Sanns und Marco Schuchmann. München ; Wien : Oldenbourg, 1999 ISBN 3-486-25074-4
© 1999 R. Oldenbourg Verlag Rosenheimer Straße 145, D-81671 München Telefon: (089) 45051-0, Internet: http://www.oldenbourg.de Das Werk einschließlich aller Abbildungen ist urheberrechtlich geschützt. Jede Verwertung außerhalb der Grenzen des Urheberrechtsgesetzes ist ohne Zustimmung des Verlages unzulässig und strafbar. Das gilt insbesondere für Vervielfältigungen, Übersetzungen, Mikroverfilmungen und die Einspeicherung und Bearbeitung in elektronischen Systemen. Gedruckt auf säure- und chlorfreiem Papier Gesamtherstellung: R. Oldenbourg Graphische Betriebe GmbH, München ISBN 3-486-25074-4
Vorwort
3
Vorwort Dieses Buch wendet sich an Studierende der Wirtschaftswissenschaften und der Ingenieurwissenschaften, die die Mathematik ihres Studiengangs unter Zuhilfenahme eines Computers kennenlernen wollen. Mit Hilfe des Computeralgebraprogramms Mathematica wollen wir den Leser mit den Grundlagen der „praktischen" Mathematik vertraut machen. Wir glauben, daß sich durch das Nachvollziehen der Beispiele und Rechnungen am PC ein wesentlich rascherer Lerneffekt einstellt, als es durch das Lernen allein mit Hilfe eines Buches der Fall wäre. Wir haben dabei die für den Wirtschaftswissenschaftler und Ingenieur relevanten Methoden behandelt. Diese Methoden werden jeweils anhand einzelner Beispiele erklärt, so daß Sie analoge Aufgabenstellungen im Rahmen Ihres Studiums mit Mathematica nachvollziehen können. Lediglich statistische Berechnungen werden in diesem Buch nicht behandelt, denn es wurde zu diesem Themenkreis ein ausfuhrliches Werk mit dem Titel "Statistik mit Mathematica" (Autoren: M. Schuchmann, W. Sanns) beim gleichen Verlag herausgegeben. Sie benötigen als Voraussetzungen für das Arbeiten mit unserem Buch Zugang zu einem Rechner mit einer installierten Version von Mathematica. Unsere Programme laufen unter der derzeit neuesten Version von Mathematica (3.01) in der PC-Version unter Windows 95, Windows 98 und Windows NT. Es gibt inzwischen recht preisgünstige Studentenversionen dieses Programms. Die Beispielprogramme können größtenteils auch in älteren MathematicaVersionen ausgeführt werden. Entsprechende Hinweise werden im Text gegeben. Sie können die Grundlagen von Mathematica, soweit sie für unsere Zwecke notwendig sind, im ersten Kapitel des Buches erlernen. Unsere Absicht war es, die gesamten Programme und Beispiele dieses Buches weitgehend unabhängig von der Oberfläche der zur Verfügung stehenden aktuellen Mathematica-Version zu gestalten. Deshalb werden wir auf die Beschreibung der Mathematica-Oberfläche nur in dem Maße eingehen, wie es für einen Einstieg unumgänglich ist. Im Gegensatz dazu beschreiben wir die Mathematica-Anweisungen, die
4
Vorwort
wir bei unseren Berechnungen benutzen, ausfuhrlich und mit zahlreichen Beispielen. Die Programme für die verschiedenen Themenkreise umfassen meist nur wenige Zeilen, die man rasch eingeben kann. Beim Nachvollziehen der Beispiele kann während der Eingabe durch geringfügige Abänderung der Anweisungen sofort der Effekt auf die von Mathematica ausgegebenen Ergebnisse überprüft werden. Auf diese Weise lernen Sie sowohl die Mathematik besser zu verstehen, als auch das Programmpaket Mathematica sicherer zu beherrschen. Wir danken dem Cheflektor des Oldenbourg Verlags, Herrn Weigert, für die gute Zusammenarbeit.
Werner Sanns, Marco Schuchmann.
Inhaltsverzeichnis
5
Inhaltsverzeichnis 1
MATHEMATICA KENNENLERNEN
8
1.1
Elementares Rechnen
1.2
Summen, Produkte, Umformungen
22
1.3
Listen
27
1.4
Gleichungen
32
1.5
Differenzieren und Integrieren
38
1.6
Grafik mit Mathematica
43
2
LINEARE ALGEBRA
9
56
2.1
Motivation
56
2.2
Vektoren und Matrizen
66
2.3
Parameterdarstellung von Geraden und Ebenen
75
2.4
Matrixoperationen
79
2.5
Gleichungssysteme
89
2.6
Lineare Abbildungen
91
2.7
Schnittpunkte und Schnittlinien
104
2.8
Eigenvektoren und quadratische Formen
112
3 UNTERSUCHUNG VON FUNKTIONEN, FOLGEN UND REIHEN MIT MATHEMATICA 130 4 4.1
KURVENDISKUSSION Kurvendiskussion bei ganzrationalen Funktionen
145 145
6
Inhaltsverzeichnis
4.2
Kurvendiskussion bei gebrochen rationalen Funktionen
151
4.3
Bestimmung einer ganzrationalen Funktion fiber Ihre Eigenschaften 159
5
FUNKTIONEN MEHRERER VERÄNDERLICHER
161
5.1
Darstellung von Funktionen in zwei Veränderlichen
161
5.2
Partielle Ableitungen, Gradient, Jakobi-Matrix, Hesse-Matrix
165
6 6.1
EXTREMWERTAUFGABEN Extremwertaufgaben für Funktionen einer Veränderlichen
170 170
6.2 Extremwertaufgaben fur Funktionen in mehrerenVariablen ohne Nebenbedingungen 175 6.3 Extremwertaufgaben fiir Funktionen in mehrerenVariablen mit Nebenbedingungen
184
6.4
Lineare Optimierung
191
DIE TAYLOR-REIHE
194
7 7.1
Die Taylor-Reihe fur Funktionen einer Veränderlichen
194
7.2
Die Taylor-Reihe für Funktionen mehrerer Veränderlicher
199
8
KOMPLEXE ZAHLEN
9 INTEGRALRECHNUNG ZUR FLÄCHEN- UND VOLUMENBERECHNUNG
203
212
9.1
Einfache Integrale
212
9.2
Mehrfache Integrale
215
9.3
Rotationskörper
223
9.4
Integrale längs Kurven
226
Inhaltsverzeichnis
7
9.4.1
Die Bogenlänge einer Kurve
226
9.4.2
Kurvenintegrale
228
10
DIE FOURIERANALYSE
235
11
NUMERISCHE VERFAHREN
246
11.1 Das Newton-Verfahren zur Bestimmung der Nullstellen einer Funktion
246
11.2 Das Newton Verfahren zur Bestimmung lokaler Extrema (NewtonRaphson Verfahren) 251 11.3
Numerische Integration
255
12
APPROXIMATION UND INTERPOLATION
260
13
DIFFERENTIALGLEICHUNGEN
270
14
LAPLACE-TRANSFORMATION
295
14.1
Definitionen und Sätze
14.2 Das Lösen gewöhnlicher linearer Differentialgleichungen mit konstanten Koeffizienten mit Hilfe der Laplacetransformation
295 300
15
ANHANG
304
16
LITERATUR
320
8
1 Mathematica kennenlernen
1 Mathematica kennenlernen Wir wollen Ihnen mit dem Programmpaket Mathematica ein sogenanntes Computeralgebrasystem vorstellen. Es eignet sich sowohl zu numerischen, als auch zu formelmäßigen Berechnungen. Damit Sie Mathematica einsetzen können, geben wir in diesem Kapitel zunächst eine Beschreibung dieses Systems, soweit dies für unsere Belange wichtig ist. Der Leser mit großer Mathematica Erfahrung kann dieses Kapitel übergehen. Für den Mathematica Neuling haben wir hier alles zusammengefaßt, was später an Mathematica Kenntnissen benötigt wird. Werden jedoch spezielle Mathematica-Anweisungen nur innerhalb eines Kapitels benötigt, haben wir diese dort erklärt. Wir nehmen also in diesem Kapitel an, daß Sie noch nie mit Mathematica gearbeitet haben, aber doch gewisse PC Erfahrung mit Windows (95 oder 98 oder NT) besitzen. Außerdem gehen wir davon aus, daß das System Mathematica auf ihrem PC installiert und einsatzbereit ist. Da es in unseren Augen nicht sinnvoll ist, Ihnen eine momentan auf dem Markt erhältliche Mathematica-Version in Einzelheiten vorzustellen, beschreiben wir zunächst nur die Programmeingabe, wie sie auch mit älteren Versionen möglich ist. Diese Syntax der Programme hat sich zu einem gewissen Standard entwickelt. In der neuesten Version (3.0) von Mathematica ist zusätzlich aber auch eine Eingabe mit Hilfe mathematischer Symbole möglich. Auf diesen Aspekt werden wir dann zu sprechen kommen, wenn Sie sich in der Standardsyntax schon so weit auskennen, so daß Sie auch mit Vorgängerversionen die Beispiel durchrechnen können.
1 Mathematica kennenlernen
9
1.1 Elementares Rechnen Wenn Sie die Version 3.0 von Mathematica besitzen, zeigt sich Ihnen die Oberfläche nach dem Start des Programms etwa so:
Bei der Vorgängerversion 2.2.3 sieht die Oberfläche ähnlich aus, es fehlt aber die Symbolpalette. Bei beiden Versionen sehen Sie im Bild ein (standardmäßig) weißes Feld für die Eingabe von Mathematica-Anweisungen. Die Antworten von Mathematica auf unsere Anweisungen werden ebenfalls in diesem Feld ausgegeben. Als Einstieg wollen wir Mathematica gleichsam wie einen Taschenrechner gebrauchen, obwohl das System natürlich viel mächtiger ist. Um beispielsweise 3+5 auszurechnen, geben Sie über die Tastatur ein: 3+5 und schließen diese Eingabe mit der Tastenkombination DJ (=Shift-Taste festhalten!) und dann J (=Enter-Taste) ab. Das schreiben wir auch so:
10
1 Mathematica kennenlernen
3+5 fr J Wichtig: Generell werden wir alle Eingaben mit fettgedruckten Zeichen darstellen. Die von Mathematica erzeugten Ausgaben werden dagegen in dünnem Druck dargestellt. Sie werden sich sicher wundern, daß Mathematica für die Rechnung viel länger braucht als der Taschenrechner. Das liegt daran, daß der Mathematica-Kern, der das eigentliche rechnende System darstellt, beim ersten Aufruf einmal geladen werden muß. Bereits bei der zweiten Rechnung geht alles sehr viel schneller. Es erscheint also die Ausgabe 8
Wie Sie feststellen können, hat Mathematica die Eingabe und das berechnete Ergebnis optisch durch Klammern am rechten Rand getrennt, welche die Eingabe- und Ausgabebereiche als „Zellen" markieren. Außerdem ist die Eingabe mit der Bezeichnung In[l]:= und die Ausgabe mit Out[l]= gekennzeichnet. Die Numerierung wird von Mathematica fortlaufend erzeugt und dient einem eventuellen Bezug einer Berechnung auf eine schon früher ausgeführte Zeile. Die Zeichen für die Grundrechenarten sind: + (Addition), (Subtraktion), * oder Leerzeichen (Multiplikation), / (Division) und Λ (Potenzierung). Das Dezimalkomma wird als Dezimalpunkt eingegeben. Berechnen Sie bitte die folgenden Beispiele (Eingabe fett, Ausgabe kursiv darunter): 3-7frJ -4 3.2*5 .8 fr J
1 Mathematica kennenlernen
11
18.56 1.2/2.9 "0 J 0.413793 3.2 Λ 5.2 Û J
(Das A erscheint nach dem jeweils nächsten Zeichen oder der Leertaste !)
423.428
Die Zeichen "OJ für die Eingabe werden wir künftig nicht mehr hinschreiben, da sie ja jetzt klar geworden sind. Mathematica rechnet auch exakt. Geben Sie beispielsweise ein: 1/3+1/5 8/15 so erhalten Sie auch einen Bruch als Ergebnis. Wenn Sie das Ergebnis als Dezimalzahl erhalten wollen, müssen Sie Mathematica mitteilen, daß die letzte Zeile, angesprochen mit dem %-Zeichen, numerisch (N) ausgegeben werden soll: N[%] 0.533333 Überhaupt können Sie mit %k, wobei k eine Zeilennummer der Inbzw. Out-Zellen darstellt, jede Programmzeile ansprechen. Wir wollen jetzt das Löschen einer Zelle üben. Um beispielsweise die zweiten In- und Out- Zellen zu löschen, fahren Sie den Mauszeiger zu deren Klammerung am rechten Rand des Fensters bis der Mauszeiger sein Symbol in einen Pfeil mit senkrechtem Strich ändert. Dann markieren Sie beide Zellen durch anklicken mit der linken Maustaste. Die Taste [Entf] löscht die beiden Zellen. Klicken Sie nun wieder in
12
l Mathematica kennenlernen
den unteren freien Bereich des weißen Ein-Ausgabefensters, damit Sie neue Berechnungen vornehmen können. Ein wichtiges Thema sind die Hilfen, die uns Mathematica anbietet. Da wäre zunächst die Hilfe, die Sie über die Tastenkombination Û [Fl], also Shift und Fl-Taste (in Mathematica 2.2.3 nur die Fl-Taste drücken), erhalten. Sie können diese auch im Menüfenster oben mit dem rechts liegenden Menüpunkt „Help" aufrufen. Wenn Sie den Masterindex im Hilfemenü (ab Version 3.0) aufrufen, erhalten Sie eine alphabetisch geordnete Liste von Stichwörten, aus denen Sie auswählen können. Bei Mathematica 2.2.3 müssen Sie „Help" und „Search for Help" über die Menüleiste wählen. Eine weitere Art von Hilfen erhalten Sie durch Eintippen des Fragezeichens zusammen mit einer Zeichenkombination. Wenn Sie beispielsweise eingeben: ?Be* Before Begin BeginPackage Below
BernoulliB Bessell BesselJ BesselK
BesselY Beta BetaRegularized
dann erhalten Sie Hilfe zu allen Themen, die mit Be beginnen und dann beliebige Folgebuchstaben besitzen. Versuchen Sie dies mit einem klein geschriebenem b, erhalten Sie die Meldung, daß Mathematica keinen Befehl mit klein geschriebenem b kennt, da es alle internen Befehle mit großen Anfangsbuchstaben schreibt. Mathematica ist also empfindlich gegenüber Groß/Kleinschreibung. Wenn Sie von einem Funktionsnamen, den Sie selbst definiert haben oder der von Mathematica vordefiniert ist, die ersten Buchstaben eingeben und danach die Tastenkombination [Strg] und [k] drücken, dann erhalten Sie eine Liste mit allen Funktionsnamen, die mit dieser Buchstabenkombination beginnen. Wir fahren mit unseren Berechnungen fort. Wollen Sie die Ausgabe einer Berechnung in wissenschaftlicher Notation erzwingen, dann wählen Sie die „ScientificForm"-Anweisung, die Sie mit // der Berechnung nachstellen können. Der Operator ,//" liefert die
1 Mathematica kennenlernen
13
Postfixform einer Anweisung, d.h. der rechts stehende Ausdruck wird im nachhinein auf den links stehenden Ausdruck angewandt: 2.34A8 898.932 % // ScientificForm 8.98932 χ10 2 Die folgenden drei Zeilen, deren Bedeutung wir direkt im Anschluß erklären, können Sie auch in eine einzige In-Zelle schreiben, wenn Sie nach jeder Zeile nur die Enter-Taste für den Sprung in die nächste Zeile drücken und erst am Schluß der dritten Zeile Shift und Enter gleichzeitig drücken um die Berechnung zu starten: x=Sqrt[Pi] SqrtfPi] N[x] 1.77245 N[x,20] 1.7724538509055160273 Dazu bemerken wir: „Sqrt" bezeichnet die Wurzel aus einer Zahl. Funktionen, wie „Sqrt", enthalten ihr Argument in eckigen Klammern; runde Klammern dienen der Festlegung der Reihenfolge bei Berechnungen. Pi stellt die Zahl π dar. x= bedeutet die Vergabe eines Namens (hier „x") für einen berechneten Wert. Damit kann der Wert später wieder abgerufen werden. N[x,20] gibt den numerischen Wert von χ auf 20 Stellen aus (Mathematica zählt die Vorkommastellen mit).
14
1 Mathematca kennenlernen
Wenn Sie bei der Definition von Namen ähnliche Namen verwenden, gibt Mathematica eine Warnung aus. Beispiele für Anwendungen weiterer Funktionen und Operatoren, die wir benötigen: Exp[2]
(Exponentialfunktion mit dem Argument 2)
E2 Exp[2]//N 7.38906 // liefert wieder die Postfixform, d.h. der rechts stehende Ausdruck wird im nachhinein auf den links stehenden Ausdruck angewandt. In unserem Fall bewirkt dies die numerische Berechnung von e2 (Mathematica verwendet für die Eulersche Zahl ein großes E). Log[2] (natürlicher Logarithmus an der Stelle 2) Log[2] Log[2]//N 0.693147 Den Logarithmus von 2 zur Basis 10 erhalten Sie so: Log[10,2]//N 0.30103 Abs[-2] 2
(Absolutbetrag)
1 Mathematica kennenlernen
Sin [χ] Cos [χ]
15
(Sinus und Kosinus)
Sin[Sqrt[Pi]] Cos[Sqrt[Pi]] Diese Ausgabe ist klar, wenn Sie bedenken, daß wir weiter oben x=Sqrt[Pi] eingegeben haben, und daß Mathematica versucht, exakt zu rechnen. Mathematica behält diese Definition und arbeitet damit weiter, sobald Sie die Bezeichnung χ eingeben. Wenn Sie einen Variablennamen - hier z.B. „x" -, den Sie verwendet haben, wieder löschen wollen, können Sie dies mit Clear[x] Von den zahlreichen weiteren Funktionen, die Mathematica kennt, erwähnen wir hier nur noch: „Tan" beziehungsweise „ArcTan" fur die Tangens- und Arcustangens-Funktion. Sie können selbst mit Hilfe elementarer Funktionen zusammengesetzte Funktionen definieren. Ein Beispiel ist die Definition der Funktion f(x)=esin(x) : fIxJ:=Exp[Sin[x]] Hinweis für den weniger geübten PC-Benutzer: Das UnderlineZeichen „ _ " erzeugen Sie auf der Tastatur, wenn Sie die Taste [AltGr] zusammen mit der schräg darüber liegenden Taste für das Minuszeichen benutzen. Bei der Definition der Funktion f(x) muß auf der linken Seite das Underline-Zeichen verwendet werden, rechts dagegen nicht. So können Sie nachsehen, ob Ihre Definition von Mathematica gespeichert wurde: ?f
16
1 Mathematica kennenlernen
Global" f f [ x j := Exp[Sin[x]] Wenn Sie nun den Wert der Funktion beispielsweise an der Stelle x=4 berechnen wollen, dann geben Sie ein: f[4] ESia[41
Mathematica versucht die exakte Lösung beizubehalten. numerischen Wert erhalten Sie so:
Den
f[4]//N 0.469164 Die zeichnerische Darstellung von Funktionen ist Gegenstand des letzten Abschnitts im ersten Kapitel. Analog der „Clear"-Anweisung für das Löschen der Werte von Funktionen und Variablen gibt es einen Befehl für das vollständige Löschen der Namen von Funktionen und Variablen. Remove[f] Wollen Sie nicht nur eine einzige Funktion, selbstdefinierten Namen löschen, so geben Sie ein:
sondern
alle
Remove["Globar*"l Oft treten bei numerischen Berechnungen Abweichungen von den exakten Werten auf, die nur durch Rundungsfehler entstanden sind und die Darstellung der exakten Werte in der Ausgabe stören. Man kann sie mit der „Chop"-Anweisung entfernen. Ist beispielsweise der exakte Wert 1 um den Rundungsfehler IO"20 verfälscht, erhält man den Wert 1 zurück durch: Chop[1.0 + 10A-20J
1 Mathematica kennenlernen
17
1. Bei vielen Berechnungen werden Sie die Einheiten der Größen ebenfalls angeben wollen. Ab der Mathematica-Version 3.0 finden Sie dazu eine Hilfe unter den Menüpunkten:'Ήβΐρ, Help, Add-ons, Standard Packages, Miscellaneous, Units". Wir werden hier nur einige oft benötigte Umrechnungen besprechen. Sie haben bei Verwendung von Einheiten folgende Möglichkeiten: Geht es Ihnen nur um die Bezeichnungen, so können Sie selbst Abkürzungen wählen und mit diesen wie gewohnt arbeiten, beispielweise so: K=2 kg * 4 m/sA2; Κ 8 kg m s2 Wollen Sie dagegen gewisse Einheiten in andere Einheiten umrechnen, dann müssen Sie das Paket „Miscellaneous Units"" laden. Needsf'Miscellaneous'Units" "] Den Inhalt dieses Pakets sehen Sie mit der „Names'VAnweisung. Die Ausgabe von Mathematica geben wir wegen des Umfangs nur verkürzt wieder. Names [" Miscellaneo«! s' Units' *" ] {"Abampere","Abcoulomb",,,Abfarad,l,"Abhenry","Abmho","Abohm" ,"Abvolt","Acre","AMU","Angstrom","Apostilb,,,,,ArcMinute","ArcS econd","Are","AssayTon","AstronomicalUnit"," Atmosphere","Atomi cMassUnit Y Atto"," AU",.... und so weiter. Es folgen einige Beispiele für die Umrechnungen. Eine Problemstellung könnte lauten: Wieviel Kalorien entsprechen 3 Joule?
18
1 Mathematica kennenlernen
Convert[3 Joule,Calorie] 0.716538 C a l o r i e Convertii Joule, Erg] 10000000 Erg Convert[l LightYear, Kilo Meter] 9. 4605 χ IO12 K i l o M e t e r Jetzt wird 1 Lichtjahr in Astronomische Einheiten (AU) umgerechnet. 1 AU ist die mittlere Entfernung der Erde zur Sonne: Convertii LightYear,AU] 6 3 2 4 7 . 5 AU Hier ist die Syntax ein wenig anders, da die Berechnung nicht rein multiplikativ ist: ConvertTemperature[100,Fahrenheit, Celsius] 37.7778
Convert[3 Day, Second] 259200 Second Convert[l Liter, Gallon] 0 . 2 6 4 1 7 2 Gallon Convert[ 45 Degree, Radian]//N
1 Mathematica kennenlernen
19
0.785398 Radian So viel zu den Einheiten. Als nächstes wollen wir einen wichtigen Operator kennenlernen, den Ersetzungsoperator „ /. " (Slash Punkt). Er wendet eine rechts von ihm stehende Ersetzungsregel (erkennbar an dem Pfeil) auf den links von ihm stehenden Ausdruck an: z=a+3 3+a z A 2 /. a->b (3+b)2 Dies bedeutet fur Mathematica: Berechne den Ausdruck z2 und ersetze a durch b. Beachten Sie bitte, daß Mathematica Ausdrücke, die Potenzen enthalten, aufsteigend nach diesen Potenzen sortiert. Ein weiterer wichtiger Operator „ /; " erlaubt es uns Bedingungen in einer Anweisung zu formulieren. So wird im folgenden Beispiel χ der Wert 1 zugewiesen, falls die Bedingung „y ist größer als Null" erfüllt ist und χ wird der Wert 0 zugewiesen, falls „y kleiner oder gleich 0" ist x:=l/; yX) x:=0/;yConvertTo->TraditionalForm verändern. Damit wird die Formel in ihrer Schreibweise auf die gewünschte Symbolik umgesetzt. Natürlich können Sie etwas umständlicher auch hier die Zeichen direkt eingeben. Die Symbole finden Sie in einer Palette von Zeichen, die über die Menüleiste erhalten werden kann: File->Palettes-»BasicCalculations-»Calculus-»Common Operations. Durch erneute Anwendung des D Operators erhalten wir die zweite Ableitung. Zweiteableit=D [Ableit,x] ( - 1 + η) η x" 2 + n
1 Mathematica kennenlernen
39
Dies wäre auch wie folgt möglich, wobei wir anstelle der 2 fur die zweite Ableitung auch eine 3 für die dritte Ableitung usw. schreiben können:
ZweiteabIeit=D [f[x], {x,2} ] ( - 1 +n) η x"2+n Es ist für Sie jetzt möglich, solche Regeln, wie die Kettenregel, die Produkt- oder die Quotientenregel der Differentialrechnung, mit Mathematica nachzuvollziehen:
D[f[g[x]],x] f'ffflx]] !T'[x]
D[u[x]*v[x],x] v[x] u'[x] + u [ x ] v'[x]
D[u[x]/v[x],x]//SimpIify v[x] u'[x] -u[x] Vjx] V[x]'
Das Aufsuchen der ersten Ableitung ist eng verknüpft mit dem geometrischen Problem die Tangente einer gegebenen Funktion zu bestimmen. Wir wollen hier den Grafikmöglichkeiten, die im nächsten Abschnitt vorgestellt werden, schon etwas vorgreifen, indem wir die „Plot"-Anweisung zum Zeichnen von Funktionsgraphen schon hier vorstellen: PlotßFunktion, Bereich] lautet die allgemeine Syntax dieser Anweisung in ihrer einfachsten Form. Für die Normalparabel bedeuted das:
f[xJ:=x A 2
40
1 Mathematica kennenlernen
Grafikl=Plot[f[x],{x,-10,10}]
Wir berechnen die 1. Ableitung: f'[x] 2x Wir legen eine Stelle xO fest, wo wir die Tangente zeichnen wollen x0=5; Für die Ableitung an der Stelle xO=5 berechnen wir den Wert f ' [xO] 10 Die Tangentengleichung kann direkt in die „Plot"-Anweisung eingesetzt werden: Grafik2=PIot[f[x0]+r[x0](x-x0),{x,-10,10}]
1 Mathematica kennenlernen
41
Man kann beide Zeichnungen kombinieren: Show[Grafikl,Grafik2]
Wie Sie eine solche Grafik mit weiteren Optionen Ihren Wünschen anpassen können, zeigen wir im nächsten Abschnitt dieses Kapitels. Kommen wir nun zur Integration.Mit der „Integrate"-Anweisung können Sie das unbestimmte Integral einer Funktion berechnen: f[x_]:=xAn Integrate[f[x],x]
42
1 Mathematca kennenlernen
Χ1*11 1+n Auch hier können Benutzer der Mathematica-Versionen ab 3.0 die symbolische Schreibweise verwenden: jf(x)dx
x1+n 1+n Wie Sie sehen liefert Mathematica leider keine Integrationskonstante. Das bestimmte Integral einer Funktion f im Intervall [a,b] erhalten Sie so: f[xJ:=x A 2 Integrate [f[x], {x,a,b}] a3
"Τ
+
b3
T
Dies ist auch mit der symbolischen Schreibweise möglich:
£fw* a3
b3
1 Mathematica kennenlernen
43
1.6 Grafik mit Mathematica Die Definition von Funktionen und die „Plot"-Anweisung in ihrer Grundform haben Sie im vorherigen Abschnitt schon kennengelernt. Wir wollen jetzt nacheinander einige wichtige „Standard-Grafiken" entwickeln, und zwar nicht nur zweidimensionale, sondern auch räumlich wirkende Grafiken. Beginnen wir mit weiteren Beispielen für die „Plot"-Anweisung, der einfachsten Darstellungsmöglichkeit von Funktionen. Wir löschen eventuelle Vorbelegungen für das Symbol f und definieren dann die zu zeichnende Funktion: Remove[f] f[xJ:=Exp[Sin[x]] Wie sie aus dem vorherigen Abschnitt schon wissen, lautet die „Plot"Anweisung lautet ganz allgemein: Plot[Funktion,Bereich]. In unserem Fall wollen wir f(x) im Bereich x=-5 bis 5 zeichnen: Plot[f[x],{x,-5,5}]
Man kann die zu zeichnende Funktion auch direkt in die PlotAnweisung schreiben, ohne vorher einen Namen zuordnen zu müssen:
44
1 Mathematica kennenlernen
P l o t [ S i n [ χ ] , {χ, - 3 Pi, 3 Pi}]
Wir wollen nun zwei Funktionen addieren und die Summenfunktion zusammen mit diesen plotten. Die griechischen Buchstaben im nächsten Beispiel können Sie aus einer Palette auswählen, die durch folgende Wahl der Menüpunkte sichtbar wird: File->Palettes->BasicInput. Allgemein erhalten Sie mit der Tastenkombination „Esc" und einem zusätzlichen Buchstaben der Tastatur gefolgt von „Esc". Einen griechischen Buchstaben. Zum Beispiel liefert die Kombination „Esc" ρ „Esc" ein π. Falls Sie eine ältere Mathematica-Version besitzen, wählen Sie fur die griechischen Buchstaben einfach einen Namen, wie zum Beispiel omega fur das Zeichen ω. Zwischen zwei Variablensymbolen muß ein Leerzeichen für die Multiplikation stehen, sonst hält Mathematica diese Zeichenkombination für den Namen einer einzigen Variablen. In diesem Beispiel treten erstmals sogenannte Plot-Optionen auf, die zahlreiche Varianten der Grafikgestaltung zulassen. Wir erklären sie im Anschluß an die Grafik. v=0.5 ω=2 π ν fItJ:=3*Sin[û> t] g[t_]:=2*Cos[2 ω t-n/2] h[t_J:=f[t]+g[t]
1 Mathematica kennenlernen
45
graf=Plot [{f[t],g[t],h[t]},{t,-l,l}, PIotStyle->{Hue[0.6], Hue[0.7], RGBCoIor [1,0,0]}]
Die „PlotStyle"-Anweisung dient der unterschiedlichen Kennzeichnung der Kurven, und zwar werden die Funktionen f und g mittels „Hue" in einem blauen Farbton eingefarbt. Die Werte von „Hue" liegen zwischen 0 und 1. Sie erhalten bei Mathematica 3.0 mehr Informationen darüber, wenn Sie „Hue" eintippen und dann die „Fl"-Taste als Hilfe drücken. Die Summenfunktion h wird hier durch eine andere Möglichkeit farbig dargestellt:,,RGBColor[l,0,0]" heißt, daß sie rot gefärbt wird. RGBCoIor steht für Rot-Grün-Blau-Färbung, z.B. RGBColor[0,l,0] bedeutet grün. Sie erhalten Mischfarben, wenn Sie Werte fur jeden Farbanteil in dem Bereich zwischen 0 und 1 vergeben. In der obigen Anweisung legen die Werte für t von - 1 bis 1 den Bereich für das Zeichnen der Funktionen fest. Man kann aber auch den Bereich der Achsen festlegen, und zwar erst den Bereich der xAchse, dann den der y-Achse. Fügen Sie dazu in der obigen PlotAnweisung vor die letzte schließende eckige Klammer folgende Option analog der PlotStyle-option ein: ,PlotRange->{{-2,2},{-6,6}}
46
1 Mathematica kennenlernen
Experimentieren Sie bitte mit den Anweisungen dieses Beispiels, indem Sie eigene Funktionen darstellen. Experimentieren sollten Sie zur Übung auch bei allen anderen Mathematica-Anweisungen. Das zweite Beispiel mit sehr viel mehr Optionen sieht folgendermaßen aus: Zunächst definieren wir eine Funktion f(x), z.B. das Integral von sin(x). f i x J :=Evaluate[Integrate|Sin[x],x]] Die „Evaluate"-Anweisung bewirkt, daß das Integral nur einmal berechnet wird und die Lösungsfunktion beim Plotten an verschieden Punkten ausgewertet wird. Andernfalls würde nämlich Mathematica das Integral für jeden Plotpunkt vollkommen neu berechnen müssen. Diese Funktion wird nun mit den wichtigsten Optionen, deren Bedeutung wir im Anschluß erklären, gezeichnet. Natürlich brauchen Sie nicht immer alle Optionen bei Ihren Anwendungen hinzuschreiben. Meist sind die voreingestellten Werte ausreichend.
1 Mathematica kennenlernen
47
P l o t [ f [ χ ] , {χ, -10, 10}, A s p e c t Rat l o 4 1, Axes -» T r u e , A x e s L a b e l -» { " x - A a h s e " , " y-Achse "J , AxesQrlgln { 0 , 0} , A x e s S t y l e -» { { G r a y L e v e l [ 0 . 1 ] , T h l a k n e s s [ 0 . 0 1 ] } , {GrayLevel[0.2], Thickness[0.02]}}, Ticks {{jt, 2 P I } , {2, 1 . 5 } } , Background -» G r a y L e v e l [1] , C o l o r O u t p u t 4 CMYKColor, D e f a u l t Co l o r R G B C o l o r [ 1 , 0, 0 ] , E p i l o g -*• { P o i n t S i z e [ 0.02 ] , Hue [ 1 ] , P o i n t [ (ττ, f [ττ] } ] } , F r a s e -* F a l s e , FraaeLabel {**x**, " y " } , F r a a e S t y l e -* { { R G B C o l o r [ 1 , 1 , 0 ] } , { R G B C o l o r [ 0 , 1, 0 ] } } , Framericks {{Pi, 2Pi, 3 Pi}, {-1, 1}}, GridLines { { 1 , 2, 5, 7 } , { - 1 , - 0 . 5 , 1 } } , ΡlotLabel StyleForm [ " f (x ) ", " C o u r i e r " , F o n t S i z e -» 25 ] , Ρ l o t Range { { - 1 2 , 12}, { - 2 , 2 } } , Ρ l o t Region { { 0 , 1 } , {0, 1 } } , R o t a t e L a b e l -» T r u e I
48
] Mathematica kennenlernen
Wegen der vielen Optionen mag die Grafik zunächst unübersichtlich aussehen, wir können jedoch folgende Effekte notieren: Plot[f[x], {χ,-10,10} AspectRatio->l Axes->True AxesLabel->{" x-Achse Achse "} Axes0rigin->{0,0} AxesStyle->
Zeichnet f(x) im Bereich x=-10 bis x= 10 Setzt das Seitenverhältnis der Grafik. Die Achsen werden gezeichnet (sonst False) " y - Die Beschriftungen der beiden Achsen. Legt den Schnittpunkt der Achsen fest Setzt die Grautönung
1 Mathematica kennenlernen
{{GrayLevel[0.1 ],Thickness[0.01 ] (0=Schwarz) und beiden Achsen {GrayLevel[0.2],Thickness[0.02]} }
},
Dicke
49
der
Ticks->{ {Pi,2 Pi},{2,1.5}}
Gibt die Positionen, an denen die Achsen beschriftet werden, wirkt nur, wenn kein „Frame" gesetzt wird.
Background->GrayLevel [ 1 ]
Der Hintergrund bleibt weiß (1), oder leicht grau (0.9) etc.
ColorOutput->CMYKColor
Für die Ausgabe auf dem Drucker ist das Farbmodell wichtig (sonst RGBColor) DefaultColor->RGBColor[ 1,0,0] Standardfarbe ist hier rot Im Epilog können zusätzliche Epilog-> nachträglich {PointSize[0.02],Hue[ 1 ],Point[ {Pi Grafik-Optionen gezeichnet werden ,fTPil)]} Kein Rahmen gewünscht, sonst Frame->False „True" wählen Beschriftung des Rahmens, wirkt FrameLabel-> {"x'V'y "} nur wenn Frame auf „True" gesetzt wird Unterer und oberer Rahmenteil FrameStyle-> {{RGBColor[ 1,1,0]}, (RGBColor[ werden unterschiedlich gefärbt, wenn Frame gesetzt ist. 0,1,0]}} FrameTicks->{ {Pi,2Pi,3Pi}, {1,1}} GridLines->{{l,2,5,7},{-1,0.5,1}} PlotLabel->StyleForm["f(x) "Courier", FontSize->25] PlotRange->{ {-12,12}, {-2,2}}
Positionen der Beschriftung dem Rahmen, sofern dieser Frame->True gesetzt wird Hier werden die Positionen Gitternetzlinien in χ und Richtung angegeben Die Überschrift der Grafik Schrifttyp und Größe Der sichtbare Bereich
auf mit für ymit
50
1 Mathematca kennenlernen
PlotRegion-> {{0,1},{0,1}}
Bildschirmausschnitt (l=maximal)
RotateLabel->True
Drehung gewünscht
der
Beschriftung
Hier noch ein wichtiger Hinweis: Sie brauchen sich nicht alle Möglichkeiten für die Plot-Optionen zu merken. Wenn Sie mit der „FullOptions"-Anweisung arbeiten, werden Ihnen die aktuellen Einstellungen angezeigt und Sie können gewünschte Änderungen in den „Plot"-Befehl eintragen. Diese Anweisung lautet beispielweise FullOptions[Plot[Cos[x],{x,-Pi,Pi}]]
{AspectRatio->0.618034, Axes-> {True,True} ,AxesLabel->None, Axes0rigin->{0.,0.}, AxesStyle->{ {GrayLevel[0.],AbsoluteThickness[0.25]}, {GrayLevel[0.],AbsoluteThickness[0.25]}}, BackgroundsAutomatic, Wir haben wegen des Umfangs nur einen Teil der Anzeige aufgelistet! Kommen wir nun zu einer weiteren Grafikmöglichkeit bei Funktionen.
1 Mathematica kennenlernen
51
Oñ sind Funktionen nicht explizit nach y aufgelöst, sondern liegen in impliziter Form vor, z.B. χ 2 +^=1. Für solche Grafiken eignet sich die Mathematica-Anweisung „ImplicitPlot". Wir zeichnen damit eine Ellipse mit der Gleichung x2/49+y2/9=l : Needs [" Graphics' Master' " ] ImplicitPlot[xA2/49+yA2/9=l,{x,-10,10}, PlotStyIe->{Dashing[{0.04,0.02}],RGBColor[l,0,0]}, AspectRatio->Automatic, AxesLabel->{"x","y"} ] y
"Ν
/ \
V
-1
\ /
-2
Liegen dagegen Kurven in Parameterdarstellung vor, z.B. x=cos(t),y=sin(t) für einen Kreis, dann wählen wir die „ParametricPlot'-Anweisung. Auch deren mögliche Optionen können Sie durch eine „Ummantelung" der Anweisung durch FullOptions[ ] einsehen. Wir haben hier durch AspectRatio->l dafür gesorgt, daß nicht durch ein verzerrtes Achsenverhältnis aus dem Kreis eine Ellipse wird. Außerdem wird der Kreis mit RGBColor[0,0,l] blau gezeichnet. ParametricPlot[ {Cos[t],Sin[t]},{t,0,2 Pi},AspectRatio->l, PlotStyle->RGBColor[0,0,l]]
52
1 Mathematica kennenlernen
Nun kommen wir zu den dreidimensionalen Darstellungen. Wir greifen hier schon ein wenig den Ausführungen in unserem Kapitel über Funktionen in mehreren Variablen vor. Eine Funktion in zwei Variablen χ und y kann mittels der „Plot3D"Anweisung innerhalb eines für χ und y einstellbaren Bereichs gezeichnet werden. Beispielsweise wird die Funktion f(x,y)=x2+xy3: durch folgende Anweisung im Bereich x=-4 bis 4 und y=-5 bis 5 gezeichnet Plot3D[xA2+x y A 3, {x,-4,4}, {y,-5,5}]
1 Mathematica kennenlernen
53
Raumkurven in Parameterform werden analog dem „ParametricPlot"Befehl mit der „ParametricPlot3D"-Anweisung erstellt. Im folgenden Bild ist dies eine Schraubenkurve. Beachten Sie bitte, daß die „RGBColor"-Anweisung hier innerhalb der Liste der parametrisierten Komponenten steht. ParametricPlot3D[ {Cos[t],Sin[t],t, RGBColor[0,0,l]},{t,0,2 Pi}]
54
1 Mathematica kennenlernen
Leider gibt es kein 3D-Analogon für den „ImplictPlot"-Befehl. Hier hilft uns die „ContourPlot3D"-Anweisung weiter, die Niveauflächen einer Funktion in drei Variablen zum Niveau Null zeichnet. Die Gleichheit braucht nicht extra hingeschrieben zu werden. Andere Niveaus können angegeben werden. Needs [" Graphics" ContourPlotSD' " ] ContourPlot3D[ x A 2 + y A 2 + z A 2-l, {x,-2,2}, {y,-2,2}, {z,-2,2},PlotPoints->5]
1 Mathematica kennenlernen
55
56
2 Lineare Algebra
2 Lineare Algebra Die Lineare Algebra ist in der modernen Mathematik fur nahezu jedes mathematische Teilgebiet ein unentbehrliches Hilfsmittel geworden. Wenn man sich mit dieser Disziplin befassen will, kann man allerdings unterschiedliche Schwerpunkte setzen, je nachdem, ob man sich für die theoretischen Grundlagen oder die praktischen Anwendungen interessiert. Wir stellen hier die praxisrelevanten Methoden und ihre Realisierungen mit Mathematica in den Vordergrund. Als Ergänzung zu dieser praxisbezogenen Behandlung der Linearen Algebra empfehlen wir dem Leser sich auch mit den theoretischen Grundlagen anhand eines der zahlreichen Lehrbücher vertraut zu machen. Im Anhang dieses Buches finden Sie eine kurze Zusammenstellung einiger wichtiger Grundbegriffe.
2.1 Motivation Die Lineare Algebra hat ein wichtiges zentrales Anliegen: Das Lösen linearer Gleichungssysteme. Sie stellt dazu die Begriffe und Methoden bereit. Bevor wir uns mit diesen Begriffen befassen, wollen wir einige Vorüberlegungen zu linearen Gleichungen anstellen und mit Hilfe von Mathematica veranschaulichen. Bekanntlich stellt eine einzelne Gleichung in zwei Unbekannten χ und y der Form a x + b y + c = 0 eine Gerade in der Ebene dar. Dabei sind a,b,c reelle Zahlen und a und b sind nicht gleichzeitig Null, χ und y gehen linear in diese Gleichung ein, das heißt, sie kommen nicht in einer höheren als der ersten Potenz vor. Als Beispiel wollen wir uns mit Mathematica die lineare Gleichung 2x+3y=4 betrachten. Wir wollen sie in dieser Form belassen, obwohl Sie sicher wissen, daß man durch Auflösen nach y die Normalform einer Geradengleichung erhält, die man mit der „Plot"-Anweisung grafisch darstellen kann. Wir benutzen dagegen hier die „ImplicitPlot"-Anweisung. Zunächst löschen wir alle eventuellen Vorbelegungen:
2 Lineare A Igebra
57
Remove["GIobar*"l Needs["GraphicsMaster"] Wir erstellen eine Grafik mit Namen Gl für diese lineare Gleichung. Die „Dashing"-Option bewirkt eine unterbrochene Linie, die „RGBColor"-Option zeichnet hier in roter Farbe. Gl=ImplicitPlot[2x+3y=4,{x,-5,5}, PlotStyle->{Dashing[{0.04,0.02}],RGBColor[l,0,0]}] 3 2
-4
- 2
-1
\
-2 [
Nun soll eine zweite Gleichung hinzukommen, sagen wir: -2x+2y=4 G2=ImpIicitPlot[-2x+2y=4,{x,-5,5}]
58
2 Lineare Algebra
Wir zeichnen beide zusammen mit Hilfe der „Show"-Anweisung: Show[Gl,G2]
Man sieht, diese beiden Geraden haben einen Schnittpunkt. Dieser Punkt muß, da er auf beiden Geraden liegt, beide Gleichungen erfüllen. Wir können ihn mit der „Solve"-Anweisung, die Sie im ersten Kapitel schon kennengelernt haben, leicht ausrechnen: Solve[{2x+3y=4,-2x+2y=4},{x,y}]
2 Lineare A Igebra
59
Der Schnittpunkt hat die Koordinaten (-2/5, 8/5). Was aber passiert, wenn die zweite Gleichung folgendermaßen aussieht: 4x+6y=l. In diesem Fall haben die erste Gerade und die eben beschriebene keinen Schnittpunkt. Die Geraden liegen parallel und es gibt keinen Punkt, der auf beiden Geraden liegt, das heißt das Gleichungssystem hat keine Lösung, die Lösungsmenge ist leer: G3 = I m p l i c i t P l o t [ 4 x + 6 y == 1 , { x , - 5 , 5 } ]
Show[Gl,G3]
60
2 Lineare Algebra
Lautet die zweite Gleichung dagegegen 4x+6y=8, dann fallen diese und die erste Gerade zusammen. Alle Punkte auf jeder der Geraden erfüllen beide Gleichungen, sind also Lösungen des Systems. G4=ImplicitPIot[4x+6y=8,{x,-5,5}, PlotStyIe-> {Dashing[{0.01,0.04}] ,RGBCoIor |0,0,1 ],Thickness [O.Ol ]}, DisplayFunction->Identity] Show[Gl,G4]
- 2 y
Solve [ {2x+3y=4,4x+6y==8}, {x,y} ]
{{>+*-*}} Wir wollen nun zu linearen Gleichungen in drei Variablen x,y,z übergehen. Es mag den Leser vielleicht überraschen, daß eine Gleichung der Form a x + b y + c z = d, mit reellen Zahlen a,b,c,d, eine Ebene im Raum und keine Gerade darstellt. Wir wollen ein Beispiel mit Mathematica betrachten. Wir löschen zuerst wieder alle eventuellen Vorbelegungen von Variablen. Dann erstellen wir uns mit Hilfe der Grafik-Option „Line" ein Standard-Achsenkreuz, das wir später wieder verwenden können.
2 Lineare Algebra
61
Remove["GIobar *"J Needsf' Graphics Master "] achse=Show[ Graphics3D[ {{Thickness[0.005|, RGBCoIor[0,0,l], Line[ {{10,0,0},{-10,0,0}} ], Line[ {{0,10,0},{0,-10,0}} ], Line[ {{0,0,10},{0,0,-10}} ]} }, Axes->True^xesLabel->{"x","y","z"}] ] 1U
Wir betrachten die lineare Gleichung 2 x + 3 y - 4 z = 0. Zu ihrer Darstellung verwenden wir den Mathematica-Befehl „ContourPlot3D" der bereits impliziert, daß die rechte Seite der Gleichung, die an ersten Position der Anweisung steht, gleich Null ist. Dies braucht daher nicht hingeschrieben zu werden. Es werden nur noch die Bereiche fur x, y und ζ vorgegeben, die wir selbst wählen können. Β1 =ContourPlot3D [2x+3y-4z, {χ,-5,5} ,{y,-5,5} ,{z,-7,7} |
62
2 Lineare A Igebra
Eine weitere Gleichung sei 4x-2y+z=0 B2=ContourPlot3D[4x-2y+z,{x,-5,5},{y,-5,5},{z,-7,7}]
Wir berechnen die Lösung für das System der beiden Gleichungen. Dazu stellen wir zunächst fest, daß nur zwei Gleichungen vorhanden
2 Lineare A Igebra
6 3
sind, aber drei Unbekannte, die zu bestimmen sind. Daher ist eine der Unbekannten eine sogenannte freie Variable, deren Wert man beliebig vorgeben darf. Sie hat die Funktion eines Parameters. Wir wählen ζ als diesen Parameter aus und lösen das System nach χ und y in Abhängigkeit von ζ auf: loes:=Solve[{2x+3y-4z=0
,4x-2y+z==0},{x,y}]
Das System hat also in unserem Beispiel unendlich viele Lösungen. Diese liegen auf der Schittgeraden der beiden Ebenen. loes
Wir entfernen ein Klammerpaar:
y} = f5ζ
9ζι
i 16 '
8 J
y } /· F l a t t e n [ l o e s ]
Dann stellen wir die ParametricPlot3D dar:
Lösung
mit
Hilfe
der
Anweisung
Gerade=ParametricPlot3D[{x,y ,z,{RGBCoIor[l,0,0],Thickness [0.005]}},{ζ,-7,7}]
64
2 Lineare Algebra
Wir lassen alles zusammen zeichnen: Show[achse,Bl»B2,Gerade]
2 Lineare A Igebra
65
10
Als Übungsaufgabe möge der Leser ein System von drei Gleichungen mit drei Unbekannten auf entsprechende Weise grafisch darstellen. Durch Überlegen und Probieren lassen sich verschiedene Fälle konstruieren, wo sich die Ebenen schneiden oder parallel verlaufen. Auf die Bestimmung der Schnittpunkte und Schnittlinien von Geraden und Ebenen kommen wir später zurück.
66
2 Lineare A Igebra
2.2 Vektoren und Matrizen In diesem Kapitel wollen wir uns vor allem mit Vektoren und Matrizen, mit linearen Abbildungen und dem Lösen linearer Gleichungssysteme beschäftigen. Sie haben Sie bereits gelernt, wie man mit der "Solve'-Anweisung ein System zweier linearer Gleichungen in zwei Unbekannten mit Mathematica lösen kann. Betrachten wir uns doch noch einmal ein Beispiel. Wir wollen nämlich daran die wesentlichen Begriffe für eine Verallgemeinerung dieses Typus von Aufgaben erklären. Zu lösen ist das Gleichungssystem 2 x+ 3 y =2, 1 x+ 8 y = 4 Die Faktoren bei den Unbekannten χ und y auf der linken Seite des Systems schreiben wir in das folgende Schema: (2
3\
Wir nennen ein solches KoefFizientenschema eine Matrix und bezeichnen sie meist mit großen Buchstaben, häufig mit A oder mit M. Auch im Falle eines Gleichungssystems in mehr als 2 Unbekannten läßt sich ein solches Koeffizientenschema, also eine Matrix hinschreiben. Hat die Matrix m Zeilen (dies entspricht m Gleichungen) und η Spalten (dies entspricht η Unbekannten), so bezeichnen wir sie als (mxn)-Matrix. Merke: „Zeile zuerst, Spalte •später." Spezialfälle sind (lxn)- und (mxl)-Matrizen. Es handelt sich dabei um 1 zeilige, bzw. 1 spaltige Matrizen, die wir auch als Zeilen- bzw. Spaltenvektoren bezeichnen.
2 Lineare Algebra
67
Die beiden Variablen χ und y fassen wir ebenfalls zusammen und schreiben χ =
. Wir haben also mit χ einen Spaltenvektor (hier \y) eine (2xl)-Matrix) bezeichnet mit den Komponenten χ und y. Auch die beiden Zahlenwerte auf der rechten Seite des Systems wollen wir als einen Spaltenvektor b =
Λ
schreiben.
Wir sagen, der Vektor χ ist, ebenso wie der Vektor b , ein Element des 2-dimensionalen Zahlenraums R 2 , denn er besitzt zwei Komponenten χ und y, die beide Werte aus den reellen Zahlen R annehmen können. Analog sagt man, daß ein Vektor ein Element des n-dimensionalen Zahlenraums R n ist,—> falls er η reelle Komponenten besitzt. Die Komponenten von χ kann man entsprechend als die Koordinaten eines Punktes Ρ in einem kartesischen Koordiantensystem auffassen, wie wir überhaupt die Punkte der Ebene oder des Raumes den Vektoren zuordnen wollen. Oft wird auch die Verbindungslinie vom Ursprung zu Ρ gezeichnet und mit einem Pfeil versehen. Man spricht dann auch vom "Ortsvektor" eines Punktes und von "Vektorpfeilen", eine Darstellungsart von Vektoren, derer wir uns ebenfalls bedienen werden. Unser Ziel wird es später sein, das oben stehende Gleichungssystem mit Hilfe der Matrix-Vektorschreibweise zu formulieren. Diese Schreibweise hat in vielen Gebieten der Mathematik wegen ihrer Übersichtlichkeit Einzug gehalten. Dazu benötigen wir noch einige Kenntnisse, wie mit Vektoren gerechnet werden kann, gewissermaßen das Handwerkszeug. Vektoren und Matrizen werden in Mathematica als Listen betrachtet. Das hat den Vorteil, daß Sie nicht zwischen Zeilen- und Spaltenvektoren zu unterscheiden brauchen. Allerdings müssen Sie beachten, daß es für Listen in Mathematica Anweisungen und Regeln gibt, die für Vektoren nicht erklärt sind. Will man diese Unterscheidung aus mathematischen Gründen trotzdem vornehmen, ist dies natürlich ebenfalls möglich. Wir kommen gleich darauf
68
2 Lineare Algebra
zurück, wenn wir die Behandlung von Matrizen mit Mathematica besprechen. Weil in Mathematica die Symbole für Vektoren ohne den Pfeil darüber dargestellt werden, lassen wir ihn von nun an ebenfalls dort weg, wo keine Mißverständnisse zu befurchten sind. Sie können Vektoren mit Mathematica zum Beispiel folgendermaßen erzeugen: v={2,5,l,8} {2,5,1,8} Dies ist ein 4 dimensionaler Vektor. Wenn Sie ν als Spaltenvektor angezeigt sehen wollen, dann geben Sie ein ColumnForm[v] 2 5
1
8
Die nächsten beiden Zeilen zeigen, wie Sie den Vektor ν mit einer reellen Zahl, hier c=3, multiplizieren. Beachten Sie bitte das Leerzeichen zwischen den Namen als Multiplikationsvorschrift. c=3; c ν {6,15, 3,24} Unter Umständen hat ein Vektor sehr viele Komponenten und es wäre mühsam ihre Anzahl abzuzählen. Um die Anzahl der Komponenten des Vektors zu bestimmen, geben Sie bitte ein: Length [ν] 4
2 Lineare Algebra
69
(Length=Länge hat hier nicht die Bedeutung der geometrischen Länge des Vektorpfeils. Wir kommen gleich darauf zurück). Vektoren mit gleicher Anzahl von Komponenten können addiert werden, indem man ihre entsprechenden Komponenten addiert. Im folgenden Beispiel wird ein zweiter Vektor namens u mit gleicher Komponentenzahl erzeugt: u={3,-l,5,6} {3,-1,5,6} So addieren bzw. subtrahieren Sie u und ν w=u+v {5, 4,6,14} r=u-v {1,-6,4,-2} Neben der Multiplikation mit einer reellen Zahl gibt es auch eine Multiplikation zweier Vektoren gleicher Komponentenanzahl, deren Ergebnis eine reelle Zahl (ein Skalar) ist. Diese Multiplikation („das Skalarprodukt") ist mathematisch ganz allgemein für zwei Vektoren ίχ λ *2
y2 und y -
•
•
V*W so definiert: *y = Zaxi-yi i=\
Das griechische Zeichen Σ ("Sigma") ist, wie Sie schon wissen, das Zeichen für eine Summe, die in unserem Fall von i=l bis η verläuft,
70
2 Lineare Algebra
und die alle Produkte xfyi der Komponenten der beiden Vektoren aufsummiert. Ausgeschrieben lautet die Formel für das Skalarprodukt: ->
->
»
*· ;y = Σ Χ ' · yi = w
i=l
+ x
2?2+
+x»y n
Das Skalarprodukt ist im folgenden Beispiel mit Mathematica für unsere schon oben erzeugten speziellen Vektoren u und ν realisiert: s=u.v 54
Mit Hilfe des Skalarprodukts bestimmt man leicht die Norm, auch Betrag oder euklidische Länge eines Vektors genannt und mit || . || bzw. mit L bezeichnet. Beispielsweise für den Vektors u: L=Sqrt[u.u]//N 8.42615
Diese ist nun die „geometrische Länge" des Vektorpfeils, d.h. der Abstand des Punktes P, der die Spitze des Vektorpfeils realisiert, vom Nullpunkt. Die Norm ist immer größer oder gleich Null. Eine andere wichtige Eigenschaft des Skalarprodukts ergibt sich aus folgender Beziehung: χ• _y =|| χ ||·||^|| -cos(^). Damit ist es möglich den Winkel φ zwischen zwei Vektoren zu bestimmen. Zudem erkennt man sofort, daß zwei Vektoren senkrecht zueinander sind, wenn ihr Skalarprodukt verschwindet. Wir wollen im folgenden Beispiel den Winkel zwischen zwei Vektoren der Ebene berechnen. Das Beispiel läßt sich auf Vektoren im Rn verallgemeinern. Wir definieren zwei Vektoren in der Ebene und den Koordinatenursprung, den wir für die Grafik benötigen.
2 Lineare Algebra
71
u= {3,1}; v={l,6}; Ursprung={0,0}; Die folgende Anweisung stellt die Vektoren im Bild dar. Die Bedeutung der Grafikoptionen ist diese (vergleiche auch Kapitel 1.6): Mit Needs["Graphics" Master "] wird das Gesamtpaket zur Grafik geladen. Der „Show"-Befehl zeigt die Grafikobjekte der „Graphics"Anweisung an. Arrow[Ursprung,u] erstellt als Grafikobjekt einen Pfeil vom Ursprung zum Endpunkt v. Axes->True bedeutet, daß Achsen gezeichnet werden. Diese Einstellung ist Standard. PlotRange-> {{-2,4},{-2,7}} legt den Zeichenbereich zuerst in x-, dann in yRichtung fest. AspectRatio->l legt das Seitenverhältnis fest. DefaultFont-> {"Courier",25}, Prolog-> {Thickness[0.002], Text["u",{3,1.4}], Text["v",{1,6.4}]}]] legen die Schriftart, den Text und die Textpositionen fest. Needs ["Graphics'Master' "] Show[ Graphics [ {Arrow[Ursprung,u],Arrow[Ursprung,v]}, Axes->True, PlotRange->{{-2,4},{-2,7}}, AspectRatio->l, DefauItFont->{" Courier" ,25}, Prolog->{Thickness[0.002], Text["u",{3,1.4}l, Text["v",{1,6.4}]}]]
72
2 Lineare A Igebra
Es folgt die Berechnung des Skalarprodukts: u.v 9 Die Norm beider Vektoren wird berechnet: Nu=Sqrt[u.u] Nv=Sqrt[v.v]
Vio V37 Schließlich folgt die Berechnung des Kosinus des Winkels zwischen den Vektoren und danach die Berechnung des Winkels selbst. Beachten Sie dabei, daß Winkel standardmäßig im Bogenmaß eingegeben werden, daß der Umrechnungsfaktor π/180, den wir für den Wechsel zwischen Grad und Bogenmaß benötigen, in der Mathematica-Variablen „Degree" schon implementiert ist. cosphi=u.v/(Nu Nv) 9 V 370
cosphi//N
2 Lineare Algebra
73
0.467888 phi=ArcCos [cosphi]//N 1.0839 PÍ/180//N 0.0174533 Degree//N 0.0174533 phigrad=l/Degree*phi//N 62.1027 Der Winkel beträgt also ca. 62 Grad. Für Vektoren des dreidimensionalen Raums gibt es noch eine weitere, für uns wichtige Definition eines Produkts: Das Kreuzprodukt (Vektorprodukt). Das Kreuzprodukt zweier Vektoren liefert einen Vektor, der auf den beiden anderen senkrecht steht, und dessen Betrag gleich dem Flächeninhalt des von den beiden Vektoren aufgespannten Parallelogramms ist. Die beiden folgenden Vektoren u und ν stehen auf dem Vektor w, der ihr Kreuzprodukt darstellt, jeweils senkrecht, wie man am Verschwinden des Skalarprodukts von u mit w bzw. ν mit w erkennen kann: u={l, 4,-2}; v = {2, - 1 , 3 } ; w=Cross[u,v]
74
2 Lineare Algebra
{10, -7, -9} u. w 0 V .w o
2 Lineare Algebra
2.3 Parameterdarstellung Ebenen
von
Geraden
75
und
Wir wollen nun mit Hilfe von Vektoren Geraden und Ebenen im dreidimensionalen Raum darstellen. Durch zwei verschiedene Punkte PO und PI verläuft genau eine Gerade und durch 3 verschiedene Punkte im Raum verläuft genau eine Ebene. Wir betrachten die Punkte als die „Spitzen" von Vektorpfeilen. Wir benutzen die sogenannte Parameterdarstellung der Geraden bzw. Ebenen und ihre Darstellungsmöglichkeit in Mathematica mittels der „ParametricPlot3D"-Anweisung. Wir laden zunächst das Paket „Graphics'Master " und zeichnen uns danach ein Achsenkreuz, wie schon zu Beginn des Kapitels, mit Hilfe der „Line"-Anweisungen. Needs ["Graphics" Master" "] achse=Show( Graphics3D[ {{Thickness[0.005], RGBColor[0,0,l], Line[ {{20,0,0},{-20,0,0}} ], Line[ {{0,20,0},{0,-20,0}} ], Line[ {{0,0,20},{0,0,-20}} ]} }, Axes->True^xesLabel->{"x","y", V ' } ] ] zu
76
2 Lineare Algebra
Wir legen den Ursprung des Koordinatensystems für unsere Berechnungen fest. Dann wählen wir einen Punkt PO, durch den die Gerade verlaufen soll und einen Vektor v, der die Richtung der Gerade angeben soll, ν verschieben wir parallel, bis sein ,Aufpunkt", der ursprünglich im Nullpunkt des Koordinatensystems lag, auf den Punkt PO fallt. Die Spitze von ν liegt in einem Punkt PI. Legt man umgekehrt außer PO noch einen zweiten Punkt PI fest, so wird durch die Differenz der Koordinaten beider Punkte (PI-PO) ein Richtungsvektor ν festgelegt. Bemerkung: Wir wechseln hier zwischen den Bezeichnungen der Punkte und ihrer Ortsvektoren hin und her. Ursprung={0,0,0} ; p0={3,-2,-2}; pl={-5,-5,-4}; Die Parameterdarstellung der Gerade ergibt sich als die Summe des Ortsvektors PO und beliebiger Vielfache des Differenzvektors (Richtungsvektors) v=Pl-P0. Die Mathematica-Anweisung zum erstellen „dreidimensionaler" Parameterplots lautet „ParametricPlot3D". Sie wird in der folgenden Eingabe benutzt. Die „Evaluate"-Anweisung bewirkt die Berechnung der Geraden bevor der ,JPlot"-Befehl angewandt wird. Mit DisplayFunction-> Identity wird eine Grafikausgabe verhindert, denn wir wollen erst später alle Zeichnungen in einem einzigen Bild zusammenfassen. gerade=ParametricPlot3D[EvaIuate[p(H-t*(pl-pO)],{t,-1.5,1.5}, DisplayFunction->Identity] Wir erstellen eine Grafik mit den Verbindungslinien des Ursprungs zum „Aufpunkt" PO und mit dem Richtungsvektor PI-PO. rvekt=Graphics3D[ {RGBColor [1,0,0],Thickness [0.005], Line[{Ursprung,pO}], Line[{p0,pl}]}] Nun wird alles zusammen dargestellt.
2 Lineare Algebra
77
Show [achse,gerade,rvekt]
Wir wollen nun auf eine entsprechende Art die Parameterdarstellung einer Ebene berechnen. Die Parameterdarstellung der Ebene hat gegenüber der Geraden noch einen zusätzlichen Summanden, der einem weiteren, die Ebene erzeugenden Richtungsvektor v2=P2-P0, entspricht. Wir legen daher den Aufpunkt, durch den die Ebene verlaufen soll, zusammen mit 2 Vektoren fest, die die Richtungen der Ebene bestimmen. Als Aufpunkt wählen wir wieder willkürlich PO. Clear[pO,pl] Ursprung= {0,0,0}; p0={2,l,-4}; pl={8,3,2}; p2={10,-5,l}; ortsvekt= Show[ Graphics3D[ {{Thickness[0.005], RGBColor[l,0,0], Line[ {Ursprung,pO} ]}, {Thickness [0.005], RGBColor[0.99,0.5,0],
78
2 Lineare Algebra
Line[ {pO,pl} ], Line[ {p0,p2} ] } }, Axes->True^xesLabel->{"x","y","z"} ], DispIayFunction->Identity ] ebene=ParametricPlot3D[ Evaluate[p0+t*(pl-p0)+c*(p2-p0)], {t,-2,2}, {c,-1.5,1.5}, AmbientLight->GrayLevel[0.5], DisplayFunction->Identity ] Show[achse,ebene,ortsvekt^\mbientLight->GrayLeveI[0.5]]
2 Lineare Algebra
7 9
2.4 Matrixoperationen Nachdem wir nun Vektoren mit Mathematica behandeln können, wollen wir uns den Matrizen zuwenden: Wir generieren eine Matrix M. Die Ausgabe soll in der gewohnten Form einer Matrix geschehen: Μ={{1,5},{-4,2}}; M//MatrixForm
Oft ist es bei Matrizen nötig, die Spalten mit den Zeilen zu vertauschen. Man spricht vom „Transponieren" einer Matrix Wir berechnen die Transponierte von M und geben sie in "MatrixForm" aus: T=Transpose[M] ; T//MatrixForm
(s 34) Wir haben oben deshalb 2 Zeilen benutzt und nicht die Anweisung //MatrixForm einfach an die erste Zeile angehängt, weil wir sonst nicht mit der Matrix Τ weiterrechnen könnten. An dieser Stelle noch eine Bemerkung zu Zeilen-und Spaltenvektoren: Vektoren sind spezielle Matrizen. Oft ist es daher sinnvoll, Vektoren nicht nur einfach als Listen aufzufasssen, sondern zwischen Zeilenvektoren und Spaltenvektoren zu unterscheiden. Dies ist dann wichtig, wenn man sich in der Darstellung eines Problems mit Mathematica eng an den mathematischen Formalismus halten will und mit Vektoren und deren Transponierten arbeiten möchte.
80
2 Lineare A Igebra
Diese Unterscheidung ist auch Ein Zeilenvektor schreibt sich so:
in
Mathematica
möglich:
v= {{2, 4, 6}} {{2, 4, 6}} ν / / MatrixForm (2
4
6 )
Er ist gewissermaßen eine Matrix mit einer einzigen Zeile. Dagegen ist ein Spaltenvektor eine Matrix mit mehreren einspaltigen Zeilen. Ein Spaltenvektor wird so geschrieben: w= {{2}, {4}, {5}} {{2}, {4}, {5}}
w // MatrixForm 2 4 ,5, Kommen wir zurück zu der Behandlung von Matrizen. Oft interessiert man sich bei Berechnungen nur für eine bestimmte Spalte oder Zeile einer Matrix. Bestimmte Elemente, Zeilen oder Spalten einer Matrix erhält man wie in folgendem Beispiel. Zuerst wird eine Matrix Ρ definiert und ausgegeben: P={{2,3,4},{1,3,6}}; P//MatrixForm ,2 3 4) U 3 6'
2 Lineare Algebra
81
Das Element P23, also das Element in der zweiten Zeile und der dritten Spalte, erhält man so:
6 Die zweite Zeile ergibt sich wie folgt: PÍÍ2]] {1,3,6} und die zweite Spalte: Transpose[P][[2]] {3,3} Gelegentlich liegen Daten in der folgenden Form vor: dat={2,7,l,3,8,-l,4,9,0}; Sie können daraus eine Matrix erzeugen, beispielsweise eine 3spaltige: B=Partition[dat,3]; B//MatrixForm 7 11 3 8-1 I4 9 0 j
(2
Oft ist das Vertauschen von Zeilen einer Matrix erforderlich. Sollen beispielsweise die erste und die zweite Zeile der oben stehenden Matrix Β vertauscht werden, dann geben Sie ein: {B[[1]],B[[2]]} = {B[[2]],B[[1]]>
82
2 Lineare A Igebra
{{3, 8,-1}, {2, 7,1}} B//MatrixForm 3 8 -l1 2 7 1 ι4 9 O j Spaltenvertauschungen können Sie analog ausführen, wenn Sie die Matrix Β mit der „Transpose'-Anweisung transponiert und nach der Vertauschung der Zeilen wieder zurück transponiert haben. Oft stehen 2 Listen gleicher Länge von Daten zur Verfügung, wie im folgenden Beispiel a={2,3,6}; b={4,8,9}; Wir wollen annehmen, die erste Liste beinhalte die Abszissenwerte und die zweite Liste die Ordinatenwerte von Punkten der Ebene. Wir brauchen aber, um beispielsweise eine Grafik zu erstellen, eine einzige Liste von Koordinatenpaaren. Schreibt man nur c={a,b} so ergibt sich noch nicht die gewünschte Form, sondern: {{2, 3, 6}, {4, 8, 9}} Erst durch c=Transpose[ {a,b} ] {{2,4}, {3, 8}, {6,9}} erhalten wir unsere Punkteliste in der gewünschten Form.
2 Lineare Algebra
8 3
Matrizen können unter geeigneten Voraussetzungen miteinander multipliziert werden. Dazu muß die Anzahl der Spalten der ersten Matrix mit der Anzahl der Zeilen der zweiten Matrix übereinstimmen. Mathematische Formulierung: Das Produkt einer (mxn) Matrix a In
a 11
11
O
mit einer (nxr)-Matrix Β =
A = a mn y
Vaml
\Κι
'
•
Κy
ergibt eine (mxr)-Matrix C, deren Elemente man wie folgt berechnet:
j=>
Nun das Matrizenprodukt, zum Beispiel von Τ und M, wie Sie es mit Mathematica formulieren: T. M//M atrixFo rm ( "
"3)
\-3
29'
Im Gegensatz zur Definition der Matrixmultiplikation der Mathematik ist bei Mathematica aber auch eine Multiplikation entsprechender Komponenten möglich, da auch Matrizen Listen darstellen und mit diesen solche Operationen möglich sind. Τ * M //MatrixForm (' - 21 0
- 42 0 )t
84
2 Lineare Algebra
Analog wäre die Division der Komponenten mit T/M möglich, was fur Listen, nicht aber für Matrizen sinnvoll ist. Beachten Sie auch, daß AA3 nicht die dritte Matrixpotenz darstellt wie A.A.A oder auch MatrixPower[A,3], sondern AA3 bedeutet A*A*A, wobei jede Komponente zur dritten Potenz erhoben wird. Spezielle Matrizen sind die Einheitsmatrizen und die Diagonalmatrizen. Einheitsmatrizen haben in der Hauptdiagonalen, also von links oben nach recht unten, lauter Einsen stehen und sind sonst überall mit Null besetzt. Multipliziert man eine Matrix mit einer Einheitsmatrix, dann bleibt die ursprüngliche Matrix erhalten. Dies entspricht der Multiplikation einer reellen Zahl mit der Eins. Diagonalmatrizen haben nur in der Hauptdiagonalen reelle Zahlen stehen, sonst nur Nullen. Wir erzeugen eine 4x4 Einheitsmatrix: IdentityMatrix(4]//MatrixForm 1
0
0
0
0
0'
0 1 0 0 0 0 1 0 . 0
I i
und eine Diagonalmatrix mit den Elementen 2,7,3,8 in der Hauptdiagonalen: A=DiagonalMatrix[{2,7,3,8}]; A//MatrixForm 2
0 0
0'
0 7 0 0 0 0 3 0 .0
0
0
8;
Diagonalmatrizen haben einige für uns sehr bequeme Eigenschaften. Wir wollen die wichtigsten davon kennenlernen. Betrachten wir beipielsweise Potenzen von Matrizen. Potenzen quadratischer Matrizen, also zum Beispiel die dritte Potenz der oben definierten Matrix M, programmiert man so:
2 Lineare Algebra
85
M={{l,5},{-4,2}}; MatrixPower[M,3]//MatrixForm
(
-79 52
-65 -92
)
Die Elemente der resultierenden Matrix sind nicht ohne weiteres erkennbar. Erst durch wiederholte Multiplikation der Matrix M entsteht im letzten Rechenschritt die Ergebnismatrix. Für Diagonalmatrizen ist die Berechnung einfacher: H=DiagonalMatrix[{2,-l}]; H//MatrixForm
MatrixPower[H,5]//MatrixForm
Wie Sie sehen, ist die fünfte Potenz der Diagonalmatrix H einfach die Matrix, deren Diagonalelemente als fünfte Potenzen der Diagonalelemente der Ausgangsmatrix H entstehen. Auch der Ausdruck e11, den man analog der Reihenentwicklung für die gewöhnliche e-Funktion als Reihe mit Matrizen ansetzen könnte, ist jetzt einfach zu berechnen: MatrixExp [H]//MatrixForm Ε2
0
86
2 Lineare A Igebra
Sie erkennen, daß eH für eine Diagonalmatrix H ebenfalls eine Diagonalmatrix ist, deren Diagonalelemente die Diagonalelemente von H als Potenzen von e enthalten. Ein Beispiel: Die in der Reihenentwicklung (vergleiche Kapitel 7) von eH bis zur Ordnung i=5 auftretenden Matrizen lauten nach aufsteigenden Potenzen von Null bis 5 angeordnet: folge=Table[MatrixForm[MatrixPower[H,i]/i!],{i,0,5}] if1
Uo
(2
)
0
li' U
ί2
- l J ' lo
Ί
f*
ì j ' [o
0
-i)'
f
f
I 0
Ί
Í4"
-A- J ' I o
0
Ii
Die Summation ergibt: Sum[MatríxPower[H,i]/i!,{i,0,5}]//MatruForm 15 i o
υ
#
)
UND DER NUMERISCHE WERT IST %//N//MatrixForm 7.26667 0
0 \ 0.366667J
Kommen wir zu den allgemeinen Matrizen zurück. Während wir oben die Matrizen mit Zahlen erstellt haben, wollen wir jetzt eine 2x3Matrix Q mit den allgemeinen Matrixelementen x¡j erzeugen und ihre Dimensionen anzeigen lassen: CIear[x] Q = A rray [x, {2,3} ] ; Q//MatrixForm
2 Lineare Algebra
87
( X [ l , I I x [ l , 21 x [ l , 3] \ ' x { 2 , 11 χ [ 2 , 2] x [ 2 , 31 '
Ihre Zeilen- bzw. Spaltenzahl erhält man so: Dimensions [Q] {2,3} Statt mit der Array-Anweisung zu arbeiten, kann man auch die TableAnweisung benutzen: Table[a[ij], {i,l,3}, {j,l,2>J //MatrixForm / a l l , 1] a [ l , 2] a[2, 1] a[2, 2] a[3, 1] a(3, 2] . Vergleichen Sie bitte dagegen Table[a[i,j], {i,l,3}, {j,l,2}J //TableForm a [ l , 1] a[2, 1] a[3, 11
a [ l , 2] a[2, 2] a[3, 21
Manche quadratischen Matrizen, also (nxn)-Matrizen, können noch einer Operation unterzogen werden, die man Inversion nennt. Dies geschieht analog der Inversion einer Zahl bei der gewöhnlichen Multiplikation: Die Inverse einer Zahl ζ ist die Zahl ζ"1, deren Produkt mit ζ die Eins ergibt. Beispielsweise ist die Inverse der Zahl 2 die Zahl —, denn es gilt: 2 · — =1. Bei Matrizen wird von der Inversen verlangt, daß ihr Produkt mit der Ausgangsmatrix eine Einheitsmatrix ergibt. Die Berechnung der Inversen und die Ausgabe in "MatrixForm" geschieht so: M={{l,5},{-4,2}}; Inverse[M]//MatrixForm
88
2 Lineare Algebra
r _1_ IL t
ι U
_ _5_ ι tl
1 ÎÎ i
Testen Sie bitte selbst mit Mathematica, ob die oben geforderte Eigenschaft für die Inverse auch wirklich gilt. Man nennt solche quadratischen Matrizen, die eine inverse Matrix besitzen, reguläre Matrizen. Falls sie keine inverse Matrix besitzen, heißen sie singular. Um festzustellen, ob eine gegebene quadratische Matrix regulär, also invertierbar ist, kann man eine Kennzahl berechnen, die die Determinante der Matrix genannt wird. Es gilt: Eine quadratische Matrix ist nur dann invertierbar, wenn sie eine von Null verschiedene Determinante besitzt. Da die Berechnung der Determinante mit Mathematica in nur einer Anweisung erledigt werden kann, verzichten wir hier auf die allgemeinen Formeln zur Berechnung. Lediglich die Formel für die Berechnung der Determinante einer 2x2 Matrix A sei hier angegeben: Det(A) = an' an - &12 a2i. Alle Determinanten mit mehr als 2 Zeilen bzw. Spalten lassen sich durch Reduktion aus diesen errechnen. Wer darüber mehr wissen möchte, findet diese Berechnungen unter dem Stichwort "Laplace'scher Entwicklungssatz" in nahezu jedem Buch über Lineare Algebra. Die Determinante einer quadratischen Matrix läßt sich in Mathematica mit der Det-Anweisung bestimmen Det[M] 22
2 Lineare Algebra
89
2.5 Gleichungssysteme Wir sind nun in der Lage das anfangs in Abschnitt 2.2 aufgeschriebene Gleichungssystem mit Hilfe von Vektoren und Matrizen darzustellen und zu lösen. Wir stellen zunächst fest, daß in unserem Beispiel die Anzahl der Gleichungen mit der Anzahl der Unbekannten übereinstimmt. Die Koeffizientenmatrix A ist hier quadratisch. Wenn wir deren Determinante berechnet haben, können wir eine Aussagen über die Invertierbarkeit von A machen, und falls die Determinante nicht verschwindet, den Lösungsvektor χ angeben. Schreibt man nämlich für das Gleichungssytem: A-x
= b
so erhält man den gesuchten Lösungsvektor mittels der Inversen, die man von links mit beiden Seiten der Gleichung multipliziert, denn das Matrizenprodukt ist nicht kommutativ, das heißt, es ist nicht vertauschbar in der Reihenfolge : A~l • Α - χ = Ε · χ = χ = A'1 b (E=Einheitsmatrix) also χ = A~l
b
Der vollständige Weg zur Auflösung des eingangs aufgeschriebenen Gleichungssystems mit Mathematica könnte daher so aussehen: Die quadratische Matrix A wird eingegeben A={{2,3},{1,8}}; A//MatrixForm 2 3 1 8 Dann wird die Invertierbarkeit mit Hilfe der Determinante überprüft: Det [A] 13
90
2 Lineare Algebra
Diese ist ungleich Null, also ist die Matrix invertierbar, das System eindeutig lösbar. Der Vektor der rechten Seite kann eingegeben werden. b={2,4}; Die Inverse kann berechnet und angezeigt werden. Dies ist übrigens auch mit ein Grund, warum wir hier über Matrizen und Vektoren gehen und nicht, wie im ersten Kapitel, die Solve-Anweisung wählen. Auch im Falle großer System ist dieser Weg besser geeignet. Inverse[A]//MatrixForm _ r
(
__L
13
13 1.
\ 13
13 ,
Der Lösungsvektor wird berechnet: Inverse[A].b
Hier wäre es numerisch günstiger gewesen bei der Berechnung der Inversen dieser einen Namen zuzuweisen und mit diesem Symbol bei der Berechnung des Lösungsvektors in der letzten Anweisung zu arbeiten. Dadurch muß die Inverse nicht noch einmal berechnet werden, was bei großen Matrizen durchaus wichtig ist. Wir haben in unserem Beispiel allerdings aus Gründen der besseren Nachvollziehbarkeit in der letzten Programmzeile nochmals die Inverse berechnet. Bisher haben wir ein System mit 2 Gleichungen in 2 Unbekannten gelöst. Im allgemeinen ist jedoch die Zahl der Gleichungen nicht notwendig gleich der Zahl der Variablen. Wie man in solch einem Fall vorgeht, beschreiben wir weiter unten.
2 Lineare Algebra
91
2.6 Lineare Abbildungen Neben ihrer Bedeutung bei der Auflösung linearer Gleichungssysteme spielen Matrizen und Vektoren eine Rolle bei der Theorie der sogenannten linearen Abbildungen zwischen Vektorräumen. Wenn Ihnen Vektorräume und deren Eigenschaften nicht geläufig sind, können Sie die Begriffe im Anhang nachlesen. Für den Moment reicht es aber, einfach an das Beispiel der Menge der reellen Zahlen R, die Ebene R 2 , oder den 3-dimensionalen Zahlenraum R3 zu denken. Die Vektorräume spielen in der Mathematik eine wichtige Rolle, denn in einem reellen Vektorraum ist es möglich, seine Elemente zu addieren und mit reellen Zahlen zu multiplizieren und dabei wieder ein Element dieses Vektorraums zu erhalten. Wir sagen, daß eine Abbildung f von einem Vektorraum V in einen Vektorraum W linear ist, wenn gilt f(a x+b y)=a f(x)+ b % ) fur alle Vektoren χ und y aus V und alle reellen Zahlen a und b. Man kann leicht zeigen, daß jede lineare Abbildung f von V nach W von der Gestalt ist f(x) = A x. Dabei steht rechts das Produkt einer Matrix A mit einem Vektor x. Um zu verstehen, was die linearen Abbildungen eigentlich bewirken, betrachten wir einmal die Wirkung einer zur linearen Abbildung f:R2-*R2 gehörenden Matrix A bei der Multiplikation mit verschiedenen speziell ausgewählten Vektoren in der Ebene. Wir definieren in Mathematica ein „kartesisches Koordinatensystem" durch den Koordinatenursprung und die sogenannten Einheitsvektoren ei=(l,0) und e2=(0,l) in Richtung der Koordinatenachsen: Ursprung={0,0}; el={l,0}; e2={0,l}; Die Matrix A sei wie folgt gegeben: A={{2,4},{-1,3}}; A//MatrixForm
92
(Λ
2 Lineare Algebra
a)
Wir bilden ei und mit Hilfe der Matrix A linear ab und zwar durch Matrixmultiplikation: f(ei)= A'ei und f(e2)= Α'β2. Dabei erhalten wir je einen Bildvektor: A.el {2,-1} A.e2 {4,3} Die folgenden Programmzeilen erzeugen eine Grafik, welche die Bildvektoren der beiden Einheitsvektoren zeigt, die man durch eine Anwendung der Matrix A auf die Einheitsvektoren erhält. Oder, was das selbe bedeutet, die durch die lineare Abbildung f aus den Einheitvektoren entstanden sind. Needs ["Graphics'Arrow M '] Show [Graphics [ {Arrow[Ursprung,el],Arrow[Ursprung,e2],Hue[0],Dashing[{0.02, 0.02}],Arrow[Urspning,A.el], Arrow[Ursprung,A.e2]}, Axes->True, PlotRange->{{-5,5},{-5,5}}, AspectRatio->l, DefaultFont->{" Courier",25}, Prolog->{Thickness [0.002], Text["f(e2)",{4,4}J, Text["f(el)",{2,-1.4}J,Text["el",{l,0.2}], Text["e2",{-0.4,1}]} ]]
2 Lineare A Igebra
93
f(e2)
2 e2 -4
/
-2
f (el) - 2
-4 -
Wenn Sie sich die Komponenten der Bildvektoren der Einheitsvektoren ansehen, werden Sie feststellen: Die Bildvektoren der Einheitsvektoren sind gerade die Spaltenvektoren der Abbildungsmatrix. Wie zu sehen ist, zeigen die Bildvektoren f(ei) und fife) in verschiedene Richtungen. Falls die Matrix A singular ist, so ist f(ei) ein Vielfaches von f(e2), und beide würden deshalb in die selbe Richtung zeigen. Die Abbildung f bewirkt eine Drehung der ursprünglichen Vektoren ei und , wobei der Winkel zwischen f(ei) und f(e2) im allgemeinen verschieden vom Winkel zwischen ei und e2 ist. Die Abbildung ist daher im allgemeinen nicht winkeltreu. Ebenfalls verändert wird die Länge der beiden Vektoren. Die Abbildung ist also im allgemeinen auch nicht längentreu. Wir wissen nun, wie die Bilder der Einheitsvektoren bei einer vorgegebenen linearen Abbildung erhalten werden. Wir wissen auch, wie man die Abbildungsmatrix erhält, wenn man die Bilder der Einheitsvektoren unter einer linearen Abbildung vorgibt, nämlich
94
2 Lineare
Algebra
indem man die Bilder als Spaltenvektoren der Abbildungsmatrix auffaßt. Was passiert nun mit den anderen Vektoren (hier Vektoren der Ebene). Ein beliebiger Vektor χ läßt sich mit Hilfe der Einheitsvektoren ei und 02 in Mathematica wie folgt schreiben (den griechischen Buchstaben Λ erzeugen Sie über die Tastenkombination „Esc", „1", Esc): X = A l el + X2 e2
{Al, A2} Λι und λ2 sind reelle Zahlen. Sie heißen Koordinaten für χ bezüglich der Basis {ei,e2} und der Ausdruck für χ wird eine Linearkombination der beiden Einheitsvektoren ei und β2 genannt, denn in ihm treten Kombinationen der „linearen Operationen" „+" und „" auf. Die Einheitsvektoren bilden eine „Basis" dieses Raumes (siehe die Definiton der Basis im Anhang). Jeder Vektor des Vektorraums (hier der Ebene) kann aus einer Basis durch Linearkombination erhalten werden. Statt χ=λι"βι+λ2'β2 schreiben wir auch
λ ( Λ x= . ,
die
sogenannte Koordinatenschreibweise des Vektors x. Die Abbildung bewirkt auf χ wie folgt: A.x//MatrixForm
2 A1 + 4A2 ( - Al+ 3 X2 Es werden also die Bildvektoren von ei und β2, das heißt die Spalten der Abbildungsmatrix A, mit Ai bzw. λ2 multipliziert. Dies erkennt man auch sofort an der Linearität der Abbildung, denn f(x)=fj[Ai'ei+A2'e2)=Ai"f(ei)+A2'f(e2) und rechts stehen die mit den Faktoren λι bzw. λ2 multiplizierten Spalten der Matrix A.
2 Lineare Algebra
95
Wir veranschaulichen unsere Rechnung an einem speziellen Beispiel. M
(0.5)
II
W "
ir>
Sei x =
ein Vektor der Ebene:
= 0.5; X2 = 1 . 5 ; XI
λ . χ {7., 4.} Wir erzeugen wieder eine Grafik: Show [Graphics[
{Arrow [Ursprung, el], Arrow [Ursprung. e2], Hue[Q], Dashing[{0.02, 0.02}], Arrow[Ursprung, λ . a l ] , Arrow[Ursprung, A.e2], Hue[0.7], Dashing [{0.05, 0.02}], Arrow [Ursprung, ζ], Arrow [Ursprung, Α. χ]}, Axes -> True, PlotRange -> {{-1, 9}, {-5,5}}' AspectRatio -> 1, Defiultront -> {"Courier", 12}, Prolog -> {Thickness[0.0021, Text["f(e2)'\ {4,3.4}], Text["f(el)", {2, -1.4)1, Text ["el", {1,0.2}], Text["e2\ {-0.4, 1JJ, Text["x", {0.5, 1.6}], Text[«f(x)", {7,4.2}]} 1)
96
2 Lineare Algebra
f (e2)
*
y 2 e2
y
ù f(el)
-2
-4
Die schwarz eingezeichneten Vektoren sind die Einheitsvektoren ei und β2. Rot erscheinen auf dem Bildschirm deren Bilder unter f bzw. A. Blau dagegen wird der Vektor χ und sein Bild unter f bzw. A dargestellt. Gelegentlich ist es notwendig eine sogenannte lineare Unabhängigkeit von Vektoren zu untersuchen. Die k Vektoren ui,....,uk, die jeweils Elemente des R n sind, also η Komponenten besitzen, heißen linear unabhängig, wenn gilt: Die Gleichung Ciui+....+CkUk=0 mit reellen Zahlen c¡ (j=l,...,k) ist nur erfüllt, falls alle Cj gleich Null sind. Auf der rechten Seite der Gleichung steht der Nullvektor, das heißt, der Vektor mit η
2 Lineare A Igebra
9 7
Komponenten, die alle Null sind. Man sagt: „Der Nullvektor läßt sich nur auf triviale Weise aus den Vektoren ui,. ...,Uk linear kombinieren" und meint damit, daß diese Gleichung nur die Lösung ci= C2=...=Ck=0 besitzt. Ist die Gleichung ciUi+....+CkUk=0 für wenigstens ein von Null verschiedene c¡ erfüllt, so heißen die Vektoren linear abhängig. Im Fall der linearen Unabhängigkeit spannen die Vektoren ui,....,uk einen kdimensionalen Unterraum des Rn auf. Sie bilden dann eine Basis des k-dimensionalen Unterraums. Anschaulich gesprochen, zeigt jeder einzelne der linear unabhängigen Vektoren ui,....,uk in eine „Raumrichtung", die durch Summen und Vielfachen der übrigen von diesen Vektoren (Linearkombinationen) nicht erreichbar ist. Wir betrachten nun die Matrix A, deren Spalten aus den Vektoren Uj besteht. Fassen wir die reellen Zahlen Cj zu einem Vektor c zusammen, so stellt sich die obige Gleichung in der Form A'c =0 dar. Somit sind die k Vektoren Ui genau dann linear unabhängig, falls diese Gleichung nur die triviale Lösung c=0 besitzt. In diesem Fall sagen wir, die „Dimension" nb des Bildraums B={y| A'c=y} der zur Matrix A gehörenden linearen Abbildung ist gleich k. k heißt auch der Rang der Matrix A. Entsprechend ist dann die Dimension nr des Kerns N={c| A' c=0} gleich 0. Es gilt allgemein nr + nb = k. Sind diese Vektoren linear abhängig, so ist die Dimension des Kerns nr > 0 und die Dimension des Bildraumes nb = k - nr entsprechend kleiner. Die Dimension des Bildraumes entspricht dann der maximalen Anzahl linear unabhängiger Vektoren unter der Menge der Vektoren {ui, ..., Uk}·
Das Gleichungssystem Ac=0 nennen wir ein homogenes Gleichungssystem. Ist die rechte Seite b des Gleichungssystems ungleich 0, so spricht man von einem inhomogenen Gleichungssystem. Die allgemeine Lösung dieses Gleichungssystem setzt sich aus der allgemeinen Lösung des homogenen Gleichungssystems A'c=0 und einer speziellen Lösung des inhomogenen Systems A" c=b zusammen. Das hat seinen Grand in der Linearität des Systems, denn ist beispielsweise Cmh eine Lösung des inhomogenen Systems und Ch eine Lösung des homogenen Systems, gilt also Acinh=b und A"Ch=0, dann ist auch die Summe Cinh+Ch wegen AXcinh+Ch^A'Cinh+A'o^b+i^b eine Lösung des inhomogenen Systems.
98
2 Lineare A Igebra
Zur Festigung der Begriffe wollen wir ein weiteres Beispiel betrachten. Wir löschen zunächst alle Variablen und definieren eine neue Matrix A, die das Koeffizientenschema der linken Seite eines linearen Gleichungssystems darstellt. Beachten Sie bitte, daß die Matrix A nicht notwendig quadratisch sein muß. Clear|A,x,b] A={{4,1,8}, {0,5,2}, {0,10,4}, {0,-5,-2}}; AZ/MatrixForm '4 1 8 ι 0 5 2 0 10 4 ,0 - 5 - 2 j Die rechte Seite des Gleichungssystems A' x=b, also der Vektor b, sei gegeben als b={6,0,0,0}; b//MatrixForm 6
0 0 k0j Wir erweitern die Matrix A der linken Seite des Systems um den Vektor b und erhalten die Matrix Aerw, die wir später noch benötigen. Die Erweiterung einer Matrix um eine Spalte ist auf mehrere Arten möglich. Hier zeigen wir eine Variante, die es nicht erfordert, ein zusätzliches Paket zu laden. Eine andere Möglichkeit, ohne die Transponierungen zeigen wir später auch noch. Aerw=Transpose[Append[Transpose[AJ,b]J; Aerw//MatrixForm
2 Lineare Algebra
4 0 0 10
1 5 10 -5
99
8 6 1 2 0 4 0 -2 O
Eine spezielle Lösung des Systems liefert die MathematicaAnweisung „LinearSolve". Auch dafür zeigen wir weiter unten eine andere Variante. sp=LinearSolve[A,b] { f Diese spezielle Lösung des inhomogenen Systems bestimmen wir zum besseren Verständniss im nachhinein nochmals in mehreren Schritten. Wir gehen dabei wie in der Literatur üblich vor. Zunächst berechnen wir den Kern der Matrix A, den Lösungsraum des homogenen Systems. Wir wollen nun die Matrix A auf eine Stufenform bringen. Die Anweisung dazu heißt „RowReduce". Sie kennen eine entsprechende Vorgehensweise vielleicht schon von der Schule her aus dem sogenannten Additionsverfahren für das Lösen von Gleichungen, bei welchem schrittweise, durch Addition geeigneter Vielfache einer Gleichung zu einer anderen, jeweils eine Variable eliminiert wird. Dieses Verfahren ist als Gauß'scher Algorithmus bekannt. Ar=RowReduce[A] ; Ar//MatrixForm 1χ
u
0
-12. 10
0 ο
1 0
Ι0
I0
0
0 ,
Eine Basis des oben definierte Kerns ergibt sich nun wie folgt: B=NullSpace[Ar] ;
100
2 Lineare Algebra
B//MatrixForm / _ JA ^
10
5
i \ '
Der Kern wird hier nur von einem einzigen Vektor erzeugt, das heißt alle anderen Vektoren im Kern sind ein Vielfaches des angegeben Vektors. Die Dimension des Kerns ist also 1, wie man auch in der nächsten Berechnung erkennt: rg=Length [NullSpace [Ar]] 1 Dagegen gilt für den Rang der reduzierten Matrix: nb=Length[Ar]; P=Union[Ar]; n=Length[P]; rang=If[AppIy[PIus*Ar[[nb]]A2]==0,n-l,n]
2 Wir stellen den erzeugenden Vektor als Spaltenvektor dar: u=Transpose[NullSpace[Ar]] ; u//MatrixForm
_ 2_ 5
1
ι
Wir testen ob u die Eigenschaft hat, die man von Vektoren aus dem Kern verlangt: A.u {{0}, {0}, {0},
{0}}
2 Lineare Algebra
101
Das Ergebnis ist der Nullvektor (Spaltenvektor). Es ist also tatsächlich A'u=0. Dies gilt auch das für das Zweifache von u: x=2u ü - f >· ί - τ ί ' < 2 » A.X {{0}, {0}, {0}, {0}} Überhaupt für jedes beliebige Vielfache: NR=*1 u U-1!r-b
{'ψ}'
A.NR//Simplify {{0}, {0}, {0}, {0}} NR ist somit der Kern der Matrix A. Nun bestimmen wir noch eine spezielle Lösung des inhomogenen Systems. Wir untersuchen jetzt statt der Matrix A und deren reduzierte Matrix Ar die erweiterte Matrix Aerw, die den Vektor b als zusätzliche Spalte enthält. Wir reduzieren sie ebenfalls auf Stufenform: B=RowReduce[Aerw] ; B//Matrix Form '1 0 0 ,0
0 1 0 0
19 10 2 5 0 0
3 2 0 0 0,
Die letzte Spalte des reduzierten Systems ergibt eine spezielle Lösung,
102
2 Lineare Algebra
die wir suchen. Dies wird sofort klar, wenn wir das zugehörige Gleichungssystem betrachen: 19 3 lx,1 +0x,2 + — χ 3, = — 10 2 2 OjCj + 1X2 +—x3 = 0 Setzt man die dritte Variable (=Spalte 3 der Matrix B) Null, um eine spezielle Lösung zu finden, dann folgt nämlich fur die zweite Variable, daß diese ebenfalls Null sein muß. Damit ist die erste Variable =3/2. Um die letzte Spalte ansprechen zu können, bedienen wir uns diesmal eines kleinen Tricks. Wir ersparen uns dabei die vielen Transponierungen, wie Sie dies im ersten Kapitel kennengelernt haben. Im Paket Statistics" Master beispielsweise befindet sich die Anweisung „ColumnTake", die wir benötigen. Needs["StatistKsMaster"] sp=ColumnTake[B, {4} ] ; sp//MatrixForm A
2
k
0 0 0,
Die Lösungsmenge des inhomogenen Systems ergibt sich als Summe der Lösungen des homogenen Systems und der speziellen Lösung: INHL=NR+{sp[[l]],sp[[2]],sp[[3]]} { { f - ^ M - ^ M ^ l Der Faktor λι ist eine beliebige reelle Zahl. Multiplizieren wir die so gefundenen Lösungen probeweise mit der Matrix A, so erhalten wir tatsächlich die rechte Seite b:
2 Lineare Algebra
A.INHL//Simplify {{6}, {0}, {0}, {0}} b { 6 , 0 , 0, 0}
103
104
2 Lineare Algebra
2.7 Schnittpunkte und Schnittlinien Nun, da uns Lösungsmethoden linearer Gleichungssysteme zur Verfugung stehen, kommen wir zu dem oben bereits erwähnten Problem der Bestimmung von Schnittpunkten einer Geraden mit einer Geraden bzw. einer Ebene im Raum. Betrachten wir zunächst den Fall zweier Geraden im Raum. In den folgenden Beispielen sind jeweils die Aufpunktvektoren und die Richtungsvektoren gegeben. Im ersten Beispiel gibt es genau einen Schnittpunkt. ul= vl= u2= v2=
{1,2, {1, 1, {2, 1, {0,1,
0} ; 1}; 1}; 0} ;
g [ t j :=ul+tvl h[t_] : = u 2 + t v 2 Solve[g[t] == h[s] , {t, s}] {{t^ 1, s ^ 2}}
g [ t ] / . Elatten[%] {2, 3, 1}
Die beiden Geraden im nächsten Beispiel fallen zusammen, es gibt also unendlich viele Schnittpunkte. Daß beide Geraden aufeinander liegen, ist nicht sofort zu erkennen, da die Aufpunkte verschieden sind.
2 Lineare Algebra
ul= vi = u2= v2=
10 5
{1, 2, 0}; {2, -1, 1} ; {-1,3, -1} ; {4, -2, 2} ;
g[t_] := ul+ tvi h[t_] := u2+ tv2 Solve[g[t] == h[s] , {t, s}] Solve : : svars : Equations may not give solutions for all "solve" variables.
{ { t - > - l + 2s}} Mit einer einfachen Rechnung sieht man, daß der Richtungsvektor der Gerade g ein vielfaches des Richtungsvektors der Gerade h ist. vl/v2
Im nächsten Beispiel sind beide Geraden parallel, haben somit keinen Schnittpunkt. Dabei ist ebenfalls der Richtungsvektor der Geraden g ein vielfaches des Richtungsvektors von h. ui= {1,2, l}; vi = {2,-1, 1}; u2= {-1, 3, -1} ; v2={4,-2, 2}; g[tj : = ul + t vi h[t_] := u2+ tv2 Solve[g[t] == h[s] , {t, s}]
{}
106
2 Lineare Algebra
vl/v2
ßl 2 ' -2 '
- )
2J
Die folgenden beiden Geraden schneiden sich ebenfalls nicht und sind auch nicht parallel, sondern windschief. ul= vl= u2= v2=
{-1, 2, 1}; {1, 1 , 4 } ; {0, 1, 1}; {0, 1, 0};
g[t_] := \jl+ t v l h[t_] : = u2 + t v 2 S o l v e [ g [ t ] == h [ s ] , { t , s}] {} v2/vl
{0, 1, 0} v2 ist also kein Vielfaches von vi. Nun kommen wir zur Bestimmung des Schnittpunkts von einer Geraden mit einer Ebene: Im ersten Beispiel gibt es genau einen Schnittpunkt zwischen der Gerade g und der Ebene H.
2 Lineare Algebra
ul= vl= u2= v2= w2=
107
{1, 2, 2}; { 2 , 2 , 1}; { - 4 , 2, -4}; {1, - 4 , 2}; {1, 2, 1};
g[t_J := ul+ t v i H[t_, s_J :=u2 + t v 2 + sw2
SaLve[g[t] == H[k, s] , {k, t , s}]
H [ t , s] / . Flatten[%] Det[ {vi, v2, w2} ] - 8
Wie zu sehen ist, ist der Richtungsvektor vi der Gerade g und die Richtungsvektoren der Ebene h, v2 und w2, linear unabhängig. Aus diesem Grund gibt es genau einen Schnittpunkt. Im nächsten Beispiel gibt es unendlich viele Schnittpunkte, da die Gerade in der Ebene liegt.
108
2 Lineare A Igebra
u l = {3, 1, 1}; v l = {2, - 1 , 1} ; u2= {-1, 3, -1}; v2 = { 4 , - 2 , 2 } ; w2= {1, 3, 1}; g[t_J := ul+ t v l H[t_, s j := u2 + t v 2 + s w2 Solve[g[t] == H[k, s ] , {k, t , s}] Solve : : svars : Equations may not give solutions for all "solve" variables.
{ { k - > l + | , s-> oJJ Det [ {vl, v2, w2} ] 0 Hier sind also die Richtungsvektoren vi der Gerade g und die Richtungsvektoren der Ebene h, v2 und w2, linear abhängig. Daraus folgt, daß es entweder keinen (die Gerade ist parallel zur Ebenen, wie im nächsten Beispiel) oder unendlich viele Schnittpunkte gibt (die Gerade liegt in der Ebene). Im nächsten Beispiel definieren wir nur den Aufpunktvektor der Ebene neu und lassen die anderen Vektoren unverändert.
u2={l,0,0} g[tj:=ul+t vi H[t_,s_J:=u2+t v2+ s w2 Solve[g[t]=H[k,s],{k,t,s}] {}
2 Lineare Algebra
109
Det [ {vi, v2, w2} ] 0 Wir betrachten noch den Fall zweier Ebenen. Hier gibt es drei Möglichkeiten. Im ersten Fall gibt es eine Schnittgerade zwischen den beiden Ebenen, im zweiten Fall sind beide Ebenen identisch und im dritten Fall sind beide parallel. ul= vl= wl= u2= v2= w2=
{1, 2, 4}; { - 4 , 1, 2}; { - 1 , 2, 3}; { 3 , 4 , 1}; { - 4 , 0, 1}; {1, 1, - 1 } ;
El[t_, s_J : = ul +1 vi + s wl E2[t_, s_J := u2 + tv2+ s w2 L= Solve [ El [ t , s] == E2[k, m] , {t, s, k, m}] Solve: :svars : Equations may not give solutions for all "solve" variables.
r r .14+ . —— 17m , s ^ - r6 - 7—i , ,k-> 13 +16m-n |[t-> —— j j
Schnittgerade[m_J := E l [ t , s] / . Flatten [L] Scimi t t g e r a d e [ m] / / ColumRarm l + J f - A
(14+^)
16+2 ( - 6 - ^ f ) + 4+3 (-6-
+2 ( 1 4 + ^ 3 )
oder mit der „Simplify"-Anweisung vereinfacht:
110
2 Lineare Algebra
Schnittgerade [m] / / ColumForm / / Simplify 61w _49
3 m+A
i l * +14 Dies ist eine Parameterdarstellung der Schnittgerade. Versuchen Sie bitte als Aufgabe, diese Gerade mit Hilfe der „ParametricPlot3D"Anweisung, die Sie im ersten Kaptel kennengelernt haben, zu zeichnen. Im nächsten Fall sind die beiden Ebenen El und E2 identisch. uL= vl= wl= u2= v2= w2=
{1,2,4}; { - 4 , 1, 2}; { - 1 , 2, 3}; {10, - 2 , - 3 } ; {-2, -3, -4}; {5, 4, 5};
El [ t _ , s_] : = u l + t v i + s wl E2[t_, s j : = u 2 + t v 2 + sw2 L = Solve [ El [ t , s] == E2[k, m] , { t , s , k , m}] Solve: :svars : Equations may not give solutions for all "solve" variables. {{t-> -2 + k-2m, s-> -1 - 2 k + 3 m}} Falls die beiden Ebenen parallel sind, so gibt Mathematica wieder die leere Menge {} als Lösung aus.
2 Lineare Algebra
ul= vl= wl= u2= v2= w2=
{1, 2, 4}; {-4, 1, 2}; {-1,2, 3}; {3, 4, 1}; {-2,-3, -4}; {5, 4, 5};
El[t_, sj := ul +1 vi + s wl E2[t_, s_J :=u2 + tv2+sw2 L = Solve [El [t, s] == E2[k, m] , {t, s, k, m} ]
{}
111
112
2 Lineare Algebra
2.8 Eigenvektoren und quadratische Formen Ein wichtiges Thema der Linearen Algebra ist das Problem der sogenannten Eigenvektoren und Eigenwerte. Man versteht unter einem Eigenvektor einer linearen Abbildung eines n-dimesionalen reellen oder komplexen Vektorraums V in sich einen vom Nullvektor verschiedenen Vektor, der durch die Abbildung auf ein Vielfaches von sich selbst abgebildet wird. Ist χ ein solcher Vektor, dann gilt also: Α χ=λ χ mit einer zur linearen Abbildung gehörenden (nxn)-Matrix A und einer reellen oder komplexen Zahl Λ, die man auch als Eigenwert zum Eigenvektor χ bezeichnet. Eigenwerte und Eigenvektoren einer Matrix A ergeben sich so: A={{4,2},{2,4}}; Eigenvalues [A] {2,6} Ev=Eigenvectors[A] {{-1,1},{1,1}} Mit der Anweisung „Eigenvectors" erhalten Sie also eine Matrix (eine Liste von Listen), deren Zeilen die Eigenvektoren der Matrix A enthält.Es gilt für unser Beispiel in der Tat: ' - f t (4 2 ( - f t '-Γ ' - f t (~2λ A-
1
2
4
=
V ι>
2-
vi;
und A·
f1!
(4
2s
(ft
=6·
Λ
, (ft
1 ¿s Λ Die Eigenvektoren zu einem Eigenwert bilden die Basis des sogenannten Eigenraums dieses Eigenwertes. Eine (nxn)-Matrix (quadratische Matrix) hat η reelle oder komplexe Eigenwerte. Ist die Matrix A symmetrisch, so besitzt sie nur reelle Eigenwerte und deren 2
4
2 Lineare Algebra
113
Eigenvektoren bilden eine Basis des R n . Dabei sind Eigenvektoren zu verschiedenen Eigenwerten orthogonal zueinander. Wir wollen nun sogenannte quadratische Formen und deren Beziehungen zu den Eigenvektoren betrachten: Zu einer symmetrischen reellen (2x2)-Matrix und einem Vektor χ definieren wir eine quadratische Form q wie folgt: Remove["Globar * " ] A={{a[l,l],a[l,2]},{a[2,l],a[2,2]}
};
a[l,2]=a[2,l]; A//MatrixForm / a [ l , 1] l a [ 2 , 1]
a [ 2 , 1] \ a [ 2 , 2] )
x={xl,x2}; q=x.A.x;
q//Simplify x l 2 a [ l , 1] + 2 xl x 2 a [2, 1] + x 2 * a [ 2 , 2] Hier sei noch einmal auf den Unterschied in der MathematicaNotation mit einfachen Listen und der mathematischen Schreibweise mit Spalten- und Zeilenvektoren hingewiesen (vergleichen Sie bitte Abschnit 2.4). Während wir eben bei der reinen Listenschreibweise X.A.X schreiben konnten, ist dies bei der strengen Unterscheidung von Zeilen- und Spaltenvektoren nicht möglich. Hier gehen wir folgendermaßen vor: Zuerst definieren wir χ als Spaltenvektor
x={{xl},{x2}}; x//MatrixForm
114
2 Lineare Algebra
Der transponierte Vektor ist dann ein Zeilenvektor. Das Zeichen „ f " , mit dem wir transponierte Vektoren und Matrizen kenntlich machen wollen, erzeugen Sie in Mathematica mit der Tastenkombination: „Strg" und ,,Λ", dann „Esc" „d" „g" „Esc", dann „Strg" und Leertaste xf = Transpose!*]; x+ // MatrixForm (xl
x2)
Versucht man nun x.A zu berechnen, dann gibt Mathematica eine Meldung aus, daß die Dimensionen der „Tensoren" (das sind quasi Verallgemeinerungen von Vektoren und Matrizen) inkompatibel seien. Der Grund dafür ist, daß die Spaltenzahl von χ gleich 1 ist, und die Zeilenzahl von A gleich 2. x.A Dot::dotsh : Tensors {{xl}, {x2}} and {{a [1, 1], a [2, 1]}, {a[2, 1], a[2, 2]}} have incompatible shapes.
Dagegen läßt sich A.x berechnen, wie Sie das schon zuvor bei der Multiplikation einer Matrix mit einem Vektor kennengelernt haben. A.x {{xl a [ l , 1] +x2 a [2, 1]}, { x l a [ 2 , 1] + x 2 a [ 2 , 2]}} Wir berechnen die quadratische Form. Zunächst geben wir ihr den Namen g , da wir noch eine Änderung vornehmen wollen, bevor wir die Form dann mit q bezeichnen:: g = χ*. A . χ; g//Simplify {{xl2 a[1, 1] + 2 xl x2 a[2, 1] +x2 z a[2, 2]}} Wir müssen noch die geschweiften Klammern entfernen :
2 Lineare Algebra
115
q=FIatten[g] [[1]]//Expand x l 2 a [1, 1] + 2 x l x2 a [2, 1] + x 2 2 a [ 2 , 2] Wir halten fest: Eine quadratische Form ist gegeben durch einen Ausdruck der Form q=x+. Ax, mit einer symmetrischen reellen (nxn)Matrix, einem (Spalten-)Vektor x, sowie dessen transponiertem Vektor x1". Für eine spezielle symmetrische (2x2)-Matrix wollen wir die zugehörige quadratische Form grafisch darstellen. Wir greifen dabei unseren Ausführungen im Kapitel 5 über die Funktionen in mehreren Variablen etwas vor. Der Leser, der noch keine Kenntnisse diesbezüglich hat, mag dort die einführenden Seiten lesen. Zurück zu unserer grafischen Darstellung. Da wir oben bei der Definition von q ein Gleichheitszeichen und keine „verzögerte" Definition mit := vorgenommen haben, müssen wir die zwei Zeilen für die neue Berechnung von q mit der speziellen Matrix A nochmals eingeben A={{4,2},{2,4}} g = χ*. A . χ; q=Flatten[g] [[1]]//Expand Grl=Plot3D[q, {xl,-4,4},{x2,-4,4}, AspectRatio->2, BoxRatios->{l.,l.,2}, Boxed->False,PlotPoints->30,ViewPoint->{2,-4,0.5}, Mesh->True, AxesLabeI->{"xl","x2",,,q"},HiddenSurface->True]
116
2 Lineare Algebra
Wie anhand des Bildes zu sehen ist, ist diese quadratische Form immer größer als Null, außer im Punkt χ 1=0, x2=0. Dies ist eine Eigenschaft der speziellen quadratischen Form mit unserer Matrix A, die wir nun beschreiben wollen. Man nennt eine quadratische Matrix A positiv définit, wenn q(x)=xt.A.x >0 gilt, für jeden Vektor x, der nicht der Nullvektor ist. Das ist genau dann der Fall, wenn alle Eigenwerte λ der Matrix A
2 Lineare Algebra
117
größer O sind, denn es ist xt.A.x = χ*.λχ = Λx*.x > 0 λ>0 , da x*.x >0 fur alle χ ungleich dem Nullvektor. Für (2>0 und det(A) > 0 . In unserem Fall ist die vorgegebene Matrix A positiv définit. Gilt statt der oben stehenden „>" Zeichen überall „ >" , dann heißt die Form positiv semidefinit und für „ 4]
4 Der Grenzwert existiert also und ist gleich 4. Da es sich um eine gebrochen rationale Funktion handelt, kann davon ausgegangen werden, daß das Zählerpolynom und das Nennerpolynom nicht
3 Untersuchung mit Mathematica
131
teilerfremd sind. Man kann deshalb mit dem Linearfaktor (x-4) kürzen: Cancel [f[x] ] χ Diese gekürzte Funktion g(x)=x ist nun an jeder Stelle des Definitionsbereichs Df mit der Funktion f identisch. Zusätzlich ist diese auch an der Stelle x=4 definiert und es gilt g(4)=4, womit diese Funktion g die Funktion f stetig ergänzt. Als nächstes untersuchen wir die folgende Funktion:
Diese lassen wir zunächst im Intervall [-3,3] zeichnen: P l o t [ f [ x ] , {χ, - 3 , 3}]
Wie zu sehen ist, besitzt die Funktion f zwei Polstellen (x = -1 und χ = 1). Wir wollen nun den Grenzübergang fur χ gegen Unendlich durchführen: T.iïïrit[f[x] , x - > œ]
132
3 Untersuchung mit Mathematica
O Die Funktion strebt also fur χ gegen Unendlich gegen 0, somit nähert sich die Funktion für große x-Werte der x-Achse, womit diese eine Asymptote darstellt. Nun bestimmen wir den rechtsseitigen und den linksseitigen Grenzwert von f an der Stelle χ = 1 : Limit[f{x],x->l,Direction->-l]
Limit[f[x],x->l,Direction->l]
Das Ergebnis lies sich bereits am Graphen erkennen. Der linksseitige Grenzwert ist QO und der rechtsseitige Grenzwert ist -QO. Nun wollen wir noch eine Funktion untersuchen, die an einer Stelle einen sogenannten unbestimmten Ausdruck liefert: sin(x) Λ / K J := — — χ
Bei der oberen Funktion ergibt der Zähler und der Nenner für χ = 0 eine Null. Es ergibt sich somit der unbestimmte Ausdruck „0/0". Wir wollen nun diese Stelle genauer untersuchen und den Grenzwert für χ gegen diese Stelle bestimmen. Zuvor erstellen wir eine Zeichnung der Funktion f: P l o t [ f [ x ] , {χ, - 8 , 8}]
3 Untersuchung mit Mathematica
133
Λ.8 / 0.6 / /
-7.5
N
\
-5
0.4 0.2
-2.5
2.5 \
5
/
7.5
-0.2
Anhand des Graphen ist zu vermuten, daß der Grenzwert an der Stelle χ = 0 existiert und gleich 1 sein muß. Dies überprüfen wir mit Mathematica: Limit[f [χ], x - >
0]
1 Ohne Mathematica müßten wir die Regel von L'Hospital anwenden: Falls sich an einer Stelle ein unbestimmter Ausdruck ( z.B. „2. ^L ") η ' ' 0 00 CO
ergibt, kann der Grenzwert an dieser Stelle bestimmt werden, indem der Zähler und der Nenner nach χ differenziert werden. Der Grenzwert des neuen Quotienten ist an dieser Stelle mit dem des ursprünglichen Quotienten identisch, wie folgende Berechnung zeigt. Dabei benutzen wir die Mathematica-Anweisungen „Numerator" und „Denominator" zur Auswahl des Zählers und des Nenners. Der DOperator dient der Bestimmung der Ableitung. D [Numerator [ f [ x ] ] , x] / D[ Denominator [ f [x] ] , x]
COS[X]
In unserem Fall ergibt sich cos(x). Hier können wir nun den Grenzübergang für χ gegen 0 durchführen, da sich kein unbestimmter Ausdruck an dieser Stelle ergibt. Wir bestimmen einfach cos(O):
134
3 Untersuchung mit Mathematica
%/.x->
0
1 Es ergibt sich somit 1 als Grenzwert von f(x) für χ gegen 0. Im nächsten Schritt wollen den Grenzwert der Folge , 4«2-2»+1 r «["J := β τ2 ; 5n + i l - 3 bestimmen (η = 1,2,3. ..). Folgen sind spezielle Funktionen, die auf den natürlichen Zahlen definiert sind. Wir berechnen beispielsweise die ersten 15 Glieder der Folge:
W= Table[{i, a[i]}, {i, 1,15}]; W// N// TableFarm 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
1. 0.684211 0.688889 0.703704 0.716535 0.726776 0.73494 0.741538 0.746959 0.751479 0.755302 0.758573 0.761404 0.763875 0.766051
Diese Tabelle legt uns nahe anzunehmen, daß die Folge an konvergiert. Die Tabelle läßt sich grafisch darstellen:
3 Untersuchung mit Mathematica
135
ListPlot[W, PlotStyle-> FointSize[0.02] , PlotRange-> {Automatic, {0, 1}}]
lr
·
0.8
0.6
•
·
0.4 0.2
2
4
6
8
10
12
14
Die Grafik läßt vermuten, daß die Folge ab η = 2 streng monoton steigend ist. Diese Vermutung wollen wir überprüfen. Dazu bestimmen wir diejenigen Zahlen n, für die die folgende Differenz d größer als Null ist: d= Sinqplify[a[n+ 1] - a [ n ] ] 2 ( - 6 - 10n + 7 n2) (-3 + n + 5n 2 ) ( 3 + l l n + 5 n 2 ) Needs [Algebra' Inequality Solve' "] ' InequalitySoIve[d>0,n] 1 i < - ¿ ( - l l - ^ ä ) II A (-1-V61) < n < ^ (5-V67) | | - Ì (-11 + V6Ï) n > i (5 + V~67)
(-lW61)ll
136
3 Untersuchung mit Mathematica
Wir lassen uns das Ergebnis numerisch ausgeben: %//N n< - 1 . 8 8 1 0 2 | | -0.881025< n< - 0 . 4 5 5 0 5 | | -0.318975 < n< 0.681025 | | n> 1.88362
Das Zeichen || steht für „oder". Unsere Vermutung ist also bestätigt, denn für η > 2 > 1.88362 ist unsere Folge streng monoton Steigend. Damit diese Folge konvergiert, muß Sie nach oben beschränkt sein. Wir berechnen im folgenden zuerst den Grenzwert mit Mathematica:
g= Limit[a[n], n-> oo] 4 5
%//N 0.8
Dieser liegt somit bei 0,8. Dieser Wert stellt auch die kleinste obere Schänke dieser Folge dar. Nach der Definition der Konvergenz einer Folge, muß es zu jedem ε > 0 ein no geben, so daß der Betrag der Differenz g - a„ kleiner als ε ist für alle η > no. Wir wollen nun ein solches no bestimmen, ab dem die Folge nur noch 0,01 (absolut) vom Grenzwert abweicht. Den Betrag können wir jedoch unberücksichtigt lassen, da die Folge streng monoton steigt und g die kleinste obere Schranke ist, womit die Differenz g - an für η > 2 immer positiv ist. I n e g u a l i t y S o l v e [ g - a [η] < 1 / 1 0 0 , η]
3 Untersuchung mit Mathematica
137
(-1-V61) M ( - 1 + V61) < n < ^ (279-V 71101) | | n> ^
(279 + V71101)
%//N n< -0.881025 | | 0.681025 54.5648 Also befinden sich die Folgenglieder ab dem Wert no = 55 innerhalb einer 0,01-Umgebung vom Grenzwert entfernt. Wir berechnen als Beispiel die Abweichung vom Grenzwert an der Stelle no: g - a [55] / / Ν 0.00992291 Ein anwendungsorientiertes Beispiel zum Thema Folgen kommt aus der Finanzmathematik: Wir gehen davon aus, daß jemand ein Kapital K0 auf einem Konto η Jahre lang anlegt. Dieses Kapital wird zu m unteijährigen Zinsterminen verzinst. Am Ende des n-ten Jahres befindet sich dann das Kapital K[n,m] auf dem Konto. Den Zinsatz bezeichnen wir mit i. Wir definieren nun die Funktion Κ und berechnen ein Beispiel, in dem 1000 Euro auf ein Konto eingezahlt werden. Nach einem Jahr befindet sich dann bei 2 Zinsterminen und einem Zinsfuß von 5% (=100i) das Kapital K[l,2] auf dem Konto. K [ n _ , *_1 : = KO ( 1 + ! / » ) " K [ l , 2 ] / . {K0 - > 1 0 0 0 , i - > 0 . 0 5 } 1050.63
138
3 Untersuchung mit Mathematica
Nun wollen wir die Formal für die stetige (oder auch exponentielle) Verzinsung herleiten, indem wir die Anzahl der Zinstermine pro Jahr gegen unendlich streben lassen: L i m i t [Κ (n, » ] , » -> I n f i n i t y ] EinK0 Nach η Jahren wird demnach aus dem Kapital Ko bei stetiger Verzinsung das Kapital Koein
Kommen wir nun zu den Reihen. Wir bezeichnen die Glieder einer Folge mit Sn und die Summe der ersten η Folgenglieder mit S„. Wir betrachten das folgende Beispiel und bestimmen den Wert der ersten 4 Summanden der Reihe: s[n_J := 1 / n S[nJ:=¿í[i] 1=1 Falls Ihnen die Version 3.0 von Mathematica nicht zur Verfugung steht, schreiben Sie bitte statt der symbolischen Schreibweise des Summenoperators die Anweisung S[n_]:=Sum[s[i],{i,l,n}].
S[4] 25/12 %//N 2.08333 Ein notwendiges Kriterium für die Existenz des Grenzwertes einer Reihe lautet: Die Glieder der Reihe müssen eine Nullfolge bilden. Dies ist bei unserer Folge erfüllt. Dieses Kriterium ist aber nicht
3 Untersuchung mit Mathematica
139
hinreichend, wie wir schnell überprüfen können. Bei der Bestimmung des Grenzwertes der Reihe, verwenden wir nicht die LimitAnweisung, sondern wir gehen wie folgt vor: S[co] Sum: :div : Sum does not converge.
Ss[iI oo
Wie zu sehen ist, ist die Reihe divergent. Wir überprüfen nochmals die Konvergenz mit dem sogenannten Quotientenkriterium. Dazu bildet man den Betrag des Quotienten q zweier aufeinanderfolgender Folgenglieder. Ist q(n) für η gegen unendlich kleiner als Eins, so ist die Reihe absolut konvergent. Das heißt, die Reihe konvergiert auch, falls man die Beträge der Folgenglieder summiert. In unserem Fall ist dies identisch mit der gewöhnlichen Konvergenz, da alle Folgenglieder positiv sind. Falls dieser Quotient gleich Eins ist, so müssen weitere Untersuchungen durchgeführt werden. q [ n j := Abs[s[n+ 1] / s[n] ] L i m i t [ q [ n ] , n - > oo] 1 In unserem Fall ergibt sich Eins als Grenzwert. In diesem Fall läßt sich mit diesem Kriterium keine Aussage über die Konvergenz der Reihe machen. Es wären also weitere Untersuchungen über das Konvergenzverhalten nötig. Wir haben aber mit Hilfe von Mathematica bereits die Divergenz der Reihe erkannt. Das sogenannte Leibniz-Kriterium besagt, daß eine alternierende Reihe, deren Glieder eine Nullfolge bilden, konvergiert. Bei unserer Reihe, trifft die zweite Voraussetzung zu. Nun definieren wir die Folgenglieder alternierend:
s[n_J S[co]
(-1) A n* (1/n)
140
3 Untersuchung mit Mathematica
-Log [2] Der Grenzwert existiert und ist gleich -ln(2). Untersuchen wir nun die neue Reihe: s[n_J := l / n A 2 S[co]
6
Der Grenzwert existiert, obwohl nach dem Quotientenkriterium wieder der Fall q=l eintritt: LimLt:[q[n] , η - > oo] 1 Mit dem Quotientenkriterium kann man also die Konvergenz dieser Reihe nicht nachweisen. Bei der nächsten Reihe, die wir betrachten, ergibt sich der Grenzwert 2. Die Konvergenz überprüfen wir mit dem sogenannten Wurzelkriterium. Ähnlich wie beim Quotientenkriterium werden hier Folgenglieder untersucht und zwar die Wurzel aus dem Betrag des nten Folgengliedes. (Beachten Sie bitte die Groß-Kleinschreibung bei S bzw. s): Clear[S] s [ n j := (1/2) A n H
¿=0 w[n_] := λ/ Abs [ s [η] ] Limit[w[η] , η - > I n f i n i t y ] 2
3 Untersuchung mit Mathematica
141
S[co] 2
Das Wurzelkriterium liefert einen Wert kleiner als Eins, womit die absolute Konvergenz der Folge im nachhinein gezeigt wäre. Der Grenzwert ist 2. Die oben stehende Reihe ist eine geometrische Reihe, die allgemein wie folgt definiert ist: s [n_J : = c^n η
1=0
Geometrische Reihen konvergieren für alle |q| < 1 („Konvergenzradius"). Ihren Grenzwert können wir ganz allgemein für jene q bestimmen. Man erhält die bekannte Formel für die geometrische Reihe: S[oo] 1 1-q Als nächstes betrachten wir noch die bekannte Reihe, über die sich die Exponentialfunktion bestimmen läßt (siehe dazu auch das Kapitel über die Taylor-Reihe): s[n_J := x A n / nl Η
¿=0 S[co] Ex
Es ergibt sich die Funktion ex Diese Reihe ist für alle reellen χ konvergent.
142
3 Untersuchung mit Mathematica
Nun wollen wir den Konvergenzradius einer Potenzreihe bestimmen. Wir gehen folgendermaßen vor. Zuerst löschen wir alle eventuell vorhandenen Definitionen für die Funktion a. Remove[a] ali] a[i] Wir legen die Potenzreihe fest, η S[n_] = £ a [ i ] i*0
(x-xo)1
η i=0
Eine solche Potenzreihe konvergiert für alle χ innerhalb des Konvergenzradius KR, d.h. für alle x, die die Ungleichung erfüllen: I χ - xo I < KR. Es gibt zwei Arten den Konvergenzradius zu bestimmen. Den auf die erste Art definierten Konvergenzradius nennen wir KR und den auf die zweite Art bestimmten KR2. KR = Limi t [ Abs [ a [ n ] / a [ n + 1 ] ] , n->] Limit [Abs [ a , [ n ] I, n-» col l L a [ 1 + n] J J KR2 = Limit [i/*!/ Abs [a[n] ] , n - > oo] Limit [Abs[a[n] ] ~1/n, n-^oo] Der Grenzwert der geometrischen Reihe ergibt sich mit
3 Untersuchung mit Mathematica
143
a[i_] := 1 zo • 0 ; S [oo] 1 T x
Diese hat den Konvergenzradius: KR 1 d.h. die Reihe konvergiert für alle x, für die gilt |x| < 1. Hier noch ein Finanzmathematik:
Anwendungsbeispiel
für
Reihen
in
der
Wir definieren zunächst die n-ten Teilsumme der geometrischen Reihe: m
Sln_, x_l := 2 X ± ι.· Mathematica faßt diese Teilsumme automatisch in einer Formel zusammen: S|n, *] - 1 + χ1*" - 1 +χ Nun gehen wir davon aus, daß eine Person jeweils am Jahresende einen konstanten Betrag, genannt Rente, n+1 Jahre lang auf ein Konto einzahlt. Den Aufzinsungsfaktor bezeichnen wir mit q = (1+i)
144
3 Untersuchung mit Mathematica
R e n t e S [ η , q] ( 0] - 1 6 x + 4 χ3
146
4 Kurvendiskussion
Die Ableitungen können wir mit Mathematica, wie Sie es vom 1. Kapitel her kennen, auch einfacher bestimmen, indem wir die symbolische Schreibweise f ' benutzen. Es folgen die ersten drei Ableitungen der Funktion f: f' [x] f ''
f ''
[x]
' [x]
-16 χ + 4 χ 3 -16 + 12 χ 2 24 χ Es wäre auch möglich gewesen, die erste Ableitung mit D[f[x],x] zu bestimmen, oder allgemein die η-te Ableitung mit D[f[x],{x,n}]. Kommen wir zur den Symmetrieeigenschaften der Funktion f. Wir überprüfen mit der folgenden Anweisung, ob diese achsensymmetrisch zur y-Achse ist: f [ - χ ] === f [X]
True Die Symmetrie zur y-Achse wurde also bestätigt. Nun bestimmen wir die Grenzwerte der Funktion f für |x| gegen unendlich: Limit[f [χ], x - > oo] Limit[f [ χ ] , x - > -oo] 00
00 Bevor wir die Nullstellen der Funktion f bestimmen, zerlegen wir diese in Linearfaktoren: Factor [f [x] ]
4 Kurvendiskussion
147
(-2 +Χ) 2 (2 +Χ) 2 S o l v e [ f [ χ ] == 0] / / Ν { { χ -» - 2 . } , { χ - * - 2 . } , {χ -> 2 . } }
{ χ -» 2 . } ,
Unsere Funktion f hat demnach zwei doppelte Nullstellen, wie man auch der Zerlegung entnehmen kann. Kommen wir zur Berechnung der Extremwerte. Wir bestimmen zunächst die Stellen mit den waagrechten Tangenten und danach überprüfen wir mit der zweiten Ableitung, ob ein lokales Maximum (Hochpunkt) oder Minimum (Tiefpunkt) vorliegt. LI = S o l v e [ f ' [χ] == 0] { { x - » - 2 } , {x-> 0 } , { x - > 2 } } f " [x] / . LI {32, - 1 6 , 32} f[x] / · LI {0, 16, 0} Weil f ' ( 2 ) > 0 , ebenso wie auch f'(-2)>0, liegt also an der Stelle x=2 und x=-2 ein lokales Minimum vor, während an der Stelle x=0 ein lokales Maximum vorliegt (f'(0)2, BoxRatios ->{1,1,1.5} , PlotPoints ->30, ViewPoint ->{0.5,-2,1.1}, AxesLabel ^ { » V y y V T ' } ]
5 Funktionen mehrerer Veränderlicher
163
Wir wählen einen Punkt (xo,yo) in der Ebene aus, zum Beispiel den Nullpunkt: y0=0; x0=0; Dann definieren wir zwei Funktionen gx[x] und gy[y], die dadurch charakterisiert sind, daß sie nur noch von χ bzw. von y abhängig sind, während die jeweils andere Komponente konstant (bei xo bzw. yo) gehalten wird. gx[xj:=f[x,y0] gy[yJ:=f[*o,y] Wir wollen nun die Fläche zusammen mit den beiden Kurven, sowie die x-y-Ebene in einem Bild darstellen. Die Bilder werden zunächst einzeln erzeugt. Die Anweisung „DisplayFunction->Identity" verhindert den Plot einzelner Zeichnungen. Erst mit dem Show-Befehl wird alles angezeigt. xyebene=Plot3D[0, {x,-2,2}, {y1,1.2}, AspectRatio->2, BoxRatios->{l,1,1.5}, PlotPoints->30, ViewPoint->{0.5,-2,l.l},AxesLabel->{'VVyV , f"}, DisplayFunction->Identity] kurvegx=ParametricPlot3D [{x,yO, gx[x]+0.01, {Thickness[0.008], RGBColor[l, 0,0]}},{x,-l,l}, DisplayFunction->Identity] paraIIx=ParametricPlot3D[{x,y0,0, {Thickness[0.009],RGBColor[l, 0,0]}},{x,-l,l}, DisplayFunction->Identity] kurvegy=ParametricPlot3D [{x0,y,gy [y], {Thickness [0.008], RGBColor[0,0, l]}},{y,-l,l}» DisplayFunction->Identity] parally=ParametricPlot3D[{x0,y,0,{Thickness[0.008],
164
5 Funktionen mehrerer Veränderlicher
RGBColor[0,0, l]}},{y,-l,l}, DisplayFunction->Identity] Show [fiacche,xyebene, kurvegx,kurvegy,parallx,parally, DisplayFunction->$DisplayFunction]
5 Funktionen mehrerer Veränderlicher
5.2 Partielle Ableitungen, Matrix, Hesse-Matrix
Gradient,
165
Jakobi-
Für die oben definierten Funktionen gx und gy, deren Graphen die Schnitte des Graphen von f längs der Achsen darstellen, wollen wir jetzt die Ableitungen an der Stelle (xo,yo) berechnen, wie Sie dies für Funktionen einer Variablen kennen. Betrachten wir zunächst die Funktion gx(x). Zur Vereinfachung der Notation nennen wir diese g(x). g[x]:=gx[x]
3x0 +y0
Wie Sie schon wissen, können wir die Ableitungen auch auf die folgende Art berechnen: g'W 3x0 2 +y0
Wir betrachten jetzt den Zusammenhang der Kurve g mit der „Fläche f(x,y)". Um von dem speziellen Punkt (xo,yo)=(0,0) unabhängig zu sein, löschen wird dessen Werte: Clear[x0,y0] Lxmxt [ 3x0 2 +y0
, h -> 0J
166
5 Funktionen mehrerer Veränderlicher
Der letztgenannte Grenzwert, der mit der gewöhnlichen Ableitung der Funktion g(x) nach χ übereinstimmt, heißt die partielle Ableitung der Funktion f(x,y) nach χ im Punkt (xo,yo)· Ihre Bedeutung ist die einer gewöhnlichen Ableitung der Schnittkurve g(x) der Fläche f(x,y), die parallel zur x-Achse durch den Punkt (xo,yo) geschnitten wird. Die partiellen Ableitungen einer Funktion f(x,y) nach x, bzw. analog nach y, berechnet man allgemein so: D[f[*,y],yl 3x2+y X Will man die partiellen Ableitungen in einem bestimmten Punkt (xO,yO) angeben, so schreibt man D[f[x,y],x]/.{x->xO,y->yO} D|nx,y],y]/.{x->*o,y->yO} 3x02+y0 xO Wir nennen eine Funktion f(x,y) (total) differenzierbar, wenn alle beiden partiellen Ableitungen existieren und stetig sind. Den aus den partiellen Ableitungen nach χ und y gebildeten Vektor nennen wir den Gradienten (Grad f) der Funktion f. Gradf[x_,y_] : =Evaluate [ {D [f[x,y] Gradf[x,y]//MatrixForm
,D [flx,y] ,y]} ]
Die ,^Evaluate-Anweisung" ist bei der Definition des Gradienten sinnvoll, damit später bei Berechnungen auch wirklich zuerst die
5 Funktionen mehrerer Veränderlicher
167
partiellen Ableitungen berechnet (=evaluiert) werden, bevor andere Umformungen vorgenommen werden. Wir berechnen beispielsweise den Gradienten an der Stelle (1,1). v=Gradf[l,U {4,1} Dann untersuchen wir, an welcher Stelle der Gradient verschwindet, denn ähnlich wie eine verschwindende Ableitung einer Funktion in einer Variablen ein mögliches Extremum oder einen Sattelpunkt kennzeichnet, werden im Fall des verschwindenden Gradienten entsprechende stationäre Stellen gefunden. Solve[Gradf[x,y]=0,{x,y}] {{y-»0,x-»0}> Der Gradient verschwindet also nur im Nullpunkt. Schauen Sie sich diesen Sachverhalt nochmals an der (vollständigen) ersten Grafik dieses Kapitels an. Hier handelt es sich um einen Sattelpunkt. Wir kommen nun wie bei Funktionen in einer Variablen zu den zweiten Ableitungen, die allerdings im mehrdimensionalen Fall eine Matrix bilden, die sogenannte Hesse-Matrix. Wir programmieren zunächst so, wie man es erwarten würden, wenn man die Formel kennt. Elegantere Methoden werden wir weiter unten kennenlernen. Zunächst übergeben wir die beiden Komponenten des Gradienten in die Funktionen fl und £2.
{fl [x_,y_],f2[x_,y]}=Gradf[x,y] {3x2 +y, x} Wir definieren nun die Matrix der zweiten partiellen Ableitungen von f, also die Hesse-Matrix:
168
5 Funktionen mehrerer Veränderlicher
Hesse [x_,y_]:= £valuate[{{D[fl [x,y],x],D[fl [x,y],y]},{D[f2[x,y],x],D[ß[x,y],y]}}] Hesse[x_,y_]:= Evaluate[{{D[fl[x,y],x],D[il[x,y],y]},{D[f2[x,y],x],D[ß[x,y],y]}}] Hesse[x,y]//MatrixForm
Wie man sieht enthält die Hesse-Matrix die Kombinationen aller zweifach durchgeführten partiellen Ableitungen von f nach χ und y. Sie ist außerdem symmetrisch, da die Reihenfolge der Differentiation wegen der Stetigkeit der zweiten partiellen Ableitungen in unserem Fall nicht relevant ist. Kommen wir nun zu der allgemeineren Situation einer Abbildung f:Rn->Rm. Es handelt sich also um eine Abbildung, bei der sowohl der Definitionsbereich, als auch der Bildbereich mehrdimensional ist. Ein Beispiel für eine solche Abbildung ist: F[ {x_,y_,z_J]:={xA2 y, z A 2 x+3y, 3x y A 2z, 3z x-2y} Diese Abbildung F geht vom R3 (3 Variablen x,y,z) in den IR4, denn das Bild besteht aus den 4 Komponentenfunktionen fi=xA2 y, f2=zA2* x+3, f3=3 χ y A 2*z, £t=3 ζ x-2y. Eine solche Abbildung heißt differenzierbar im Punkt xo, wenn die partiellen Ableitungen aller Komponentenfünktionen nach allen Variablen existieren und stetig sind. Die zugehörige Ableitungsmatrix
5 Funktionen mehrerer Veränderlicher
169
f4«
¿A άχλ
dx„
Jf(Xo) = ËL· ÛXy
(*β)
M
heißt Jakobi-Matrix und ist eine Verallgemeinerung des Gradienten bei reellwertigen Funktionen. Die Jakobi-Matrix läßt sich ganz elegant in Mathematica programmieren: Jakobi[funktionen_List, variablenList] := Outer[D, funktionell, variablen] Jakobi[F[{x,y,z}],{x,y,z}]//MatrixForni ' 2 xy ζΛ2 3 y2 ζ 3 z
χ2
0
3 6xyz -2
2χ ζ 3xy2 3χ
Die „Outer"-Anweisung bewirkt die Anwendung des D-Operators auf alle Funktionen nach allen Variablen. Den Gradienten der anfangs in diesem Kapitel vorgestellten Funktion f(x,y)=x3+y x+5 erhält man daher eleganter auf die folgende Weise: f j | j ,y_}]:=xA3+y x+5 gradi=Jakobi[{f[x,y]},{x,y}]//Flatten {3x2+Y/ χ) Im folgenden Kapitel werden wir noch andere Möglichkeiten zur Berechnung des Gradienten bzw. der Hesse-Matrix kennenlernen.
170
6 Extremwertaufgaben
6 Extremwertaufgaben 6.1 Extremwertaufgaben für Funktionen einer Veränderlichen Zunächst ein einfaches Beispiel: Gegeben sei ein Rechteck vom Umfang U = 100 cm. Gesucht sind die Seitenlängen a und b, so daß der Flächeninhalt A des Rechtecks maximal wird. Die zu maximierende Funktion ist also der Flächeninhalt A, der von der Länge a und der Breite b des Rechtecks abhängig ist. Mit Hilfe der Nebenbedingung U=2a+2b=100 kann jedoch eine Variable eliminiert werden. A[a_,b_J:=a b NB=U=2a+2b; Wir lösen die Nebenbedingung nach b auf: L=Solve[NB,b] {{b^ j (-2 a + U) }} Dann setzen wir diese Lösung in A(a,b) ein und erhalten die Funktion f, die nur noch von a abhängt: f[a_]=A[a,b]/.L[[l]] γ a ( - 2 a + U) Wir bestimmen den Wert von a, fur den die erste Ableitung verschwindet: M=Solve[f [a]=0,a]
6 Extremwertaufgaben
171
{ { « - τ »
amax=a/.M[[l]]; amax/.U->100 25 Für diesen Wert, den wir amax bezeichnet haben, nimmt f auch tatsächlich ein Maximum an, denn die zweite Ableitung ist hier negativ: f'[amax] -2
Für den Wert der Funktion selbst an dieser Stelle, also fur den Flächeninhalt an der Stelle amax erhalten wir: f[amax] 16
Für die spezielle Wahl U=100 gilt: %/.U->100 625 Für die Seite b erhalten wir: bmax=(b/.L[[l]])/.a->amax u_ 4
bmax/.U->100
172
6 Extremwertaufgaben
25 Es folgt ein weiteres Beispiel zu den Extremwertaufgaben. Gegeben sei ein Zylinder mit Volumen V = 100 cm3. Gesucht sind seine Höhe und sein Radius, wenn die Oberfläche minimal sein soll. Wie im ersten Beispiel legen wir die zu minimierende Zielfunktion und die Nebenbedingungen fest: O b [ r _ , h _ ] : = 2 r 2 7 T + 2r7Th NB = V== 7 r r 2 h ; Wir lösen die Nebenbedingung nach einer der Variablen, hier h, auf: L=Solve[NB,h]
{{fc-^}} Einsetzen in die Formel für die Oberfläche liefert eine Funktion f , die noch von den Variablen r und V abhängt:
fIrJ=Ob[r,h]/.L[[l]] r Die Ableitung wird gebildet und Null gesetzt: M=Solve[f ' [r]==0,r] rr
i
1
\1/3
1/31
í
V1/3
i
r
(-1)
2 / 3
V
1 / 3
n
Einsetzen des speziellen Wertes V=100 ergibt: M/.V->100//N
{ {r
-1.2577 - 2 .1784 1} , {r ->2.5154}, {r-1.2577 + 2.1784 I}}
6 Extremwertaufgaben
173
Wir wählen von den 3 Lösungen nur die in Frage kommende reelle Lösung aus und übergeben diese in rmin: rmm=r/.M[[2]] V l/3
(2 TT)1/3 Wir geben nochmals rmin für V=100 aus: rmin/.V->100//N 2.5154 Es handelt sich tatsächlich um ein Minimum, denn f"(rmin) ist größer als Null: f"[rmin] 12 TT
Für die minimale Oberfläche ergibt sich: firmin] 3 (2 π) 1 / 3 V2/3 Wir geben den Wert für das konkrete Volumen V=100 aus und berechnen die zugehörige minimale die Höhe h. %/.V-> 100 30 2 2 / 3 (5 π) 1 / 3 %//N 119.265
174
6 Extremwertaufgaben
hmin=(h/.L[[ll])/.r->rmiii 22/3
γ1/3
TT*« hmin/.V->100
%//Ν
5.0308
6 Extremwertaufgaben
175
6.2 Extremwertaufgaben für Funktionen in mehrerenVariablen ohne Nebenbedingungen
Gegeben sei die folgende Funktion in zwei Veränderlichen y j := (* - 5)Λ2 + (y + 2)Λ2 + 4 Wir berechnen ihren Gradienten: G r a d f [ x , y J :=EvaIuate[{D[f[x,y] ,x] ,D\f\x,y] ,y ]} ] Gradf[x,y]//MatrixForm (2 (-5 + X) \ \ 2 (2 +y) i Uns interessieren diejenigen Stellen, an denen der Gradient verschwindet. SoIve[Gradf[x,y]={0,0}] {{x -> 5 , y - > - 2 } } Wir speichern die Werte des stationären Punktes den Variablen xopt und yopt {xopt,yopt}={x,y}/.Flatten [ %] {5,-2} Wir fuhren die Bezeichnungen fi und fi für die beiden Komponentenfunktionen ein und berechnen danach die Hesse-Matrix.
1 76
6 Extremwertaufgaben
{fl[x_,yJ,f2[x_,yJ}=Gradnx,y] {2 (-5+X), 2 (2 +y)} H[x_,yJ:=Evaluate[{{D[n[x,y],i],D[n[x,y],y]}, {D[f2[x,y],x],D[f2[x,y],y]}}] H [x,y]//MatrixForm
Die Eigenwerte sind alle positiv, es handelt sich um ein lokales Minimum der Funktion: Eigenvalues[H[xopt,yopt]] R2} Falls beide Eigenwerte negativ wären, so läge ein Maximum von f vor. Ist je ein Eigenwert positiv und einer negativ, so handelt es sich um einen Sattelpunkt Plot3D [f[x,y] ,{x,2,8} ,{y,-5,l}]
6 Extremwertaufgab en
177
Wir wollen an dieser Stelle darauf hinweisen, daß der optische Eindruck der Funktion stark von den Seitenverhältnissen der von Mathematica benutzten Box abhängt. Die gleiche Funktion f sieht mit der folgenden Mathematica-Anweisung wesentlich stärker gerümmt aus: plotf=Plot3D[flx,y],{x^,8},{y,-5,l}3oxRatios->{l,lr3}]
178
6 Extremwertaufgaben
Nun wollen wir den im Kapitel über Lineare Algebra bereits erwähnten Zusammenhang mit den quadratischen Formen herstellen. Wir geben die Funktion f noch einmal in ausmultiplizierter Form an: Expand[f[x,y]] 33 - 10 χ + χ 2 + 4 y + y2 Mit Hilfe der Hesse-Matrix an der Stelle (xopt, yopt) bilden wir die quadratische Form Q(x,y). In der Funktion F(x,y) wird der Wert f(xopt,yopt) zur quadratischen Form hinzuaddiert. Es zeigt sich, daß diese Funktion F eine gute Näherung für f darstellt:
6 Extremwertaufgaben
179
CIear[x,y] Q :={x,y} .H [xopt,y opt]. {x,y} F[x,yJ:=Hxopt,yopt]+Q[x-xopt,y-yoptj Die Funktionswerte im Punkt (xopt, yopt) stimmen überein: F[xopt,yopt] 4 f[xopt,yopt] 4 Wir erstellen eine Grafik von F(x,y), geben diese aber mit „DisplayFunction->Identity" noch nicht am Bildschirm aus. plotF=Plot3D[F[x,y],{x,3,7},{y,-5,l}, BoxRatios->{l,l,3}, PlotPoints->30, Mesh->FaIse,DisplayFunction->Identity] Ebenso verfahren wir mit f(x,y): plotf=Plot3D [f[x,y], {x,2,xopt} ,{y,-4,yopt}, BoxRatios->{l,l,3},PlotPoints->30,DisplayFunction->Identity] Beide Grafiken werden nun zusammen in einem Bild ausgegeben. Zusammen=Show[plotF, plotf,ViewPoint->{1.5, -3.345,2.503}, PlotRange->{Automatic,Automatic,{3,15}}]
1 80
6 Extremwertaufgaben
Die Anpassung in der Nähe des Minimums ist gut zu erkennen. Es folgt ein weiteres Beispiel zur Extremwertbestimmung. f[x_, y j := (χ + 4) Λ 3 + (y - 2) A 3 - 12 χ - 12 y GradfIx_,yJ:=Evaluate[{D[qx,y],x],D[flx,y],y]}] Gradf[x,y]//MatrixFonn
6 Extremwertaufgaben
181
- 1 2 +3 (4 + χ) 2 ' - 1 2 + 3 (-2 + y ) 2 j xyopt=Solve[GradfIx,y]={0,0}] { {χ
-6, y
0}, {x -6, y
4} f {χ
-2, y
0} , {Χ4-2Γ
Es ergeben sich also 4 Stellen, für die der Gradient verschwindet. Es folgt die Berechnung der Hesse-Matrix: {fl [x_,yJ,f2[x_,y_]}=GradfIx,y] H[x_,yJ:=Evaluate[{{D[n[x,y],x],D[ñ[x,y],y]}, {D[f2[x,y],x],D[f2[x,y],y]}}] H [x,y]//MatrixForm ι 6 (4 + χ) 0 \ l 0 6 ( - 2 +y) I Wir setzen die Werte ein und erhalten 4 Matrizen: HM=H [x,y]/.xy opt {{{-12, 0}, {0, -12}}, {{-12, 0}, {0, 12}}, {{12, 0}, {0, -12}}, {{12, 0}, {0, 12}}} Die erste davon lautet: HM[[l]]//MatrixForm ( -12
lo
0 j -12/
Die folgende Tabelle zeigt die Eigenwerte an. Sind beide negativ, so liegt ein Maximum von f vor. Sind beide positiv, dann liegt ein Minimum vor. Ist je ein Eigenwert positiv und einer negativ, so handelt es sich um einen Sattelpunkt. Table[Eigenvalues[HM[[il]],{i,l,Length[HM]}]//TableForm
182
6 Extremwertaufgaben
-12
-12
-12
12
-12
12
12
12
Die Funktionswerte errechnen sich wie folgt: f[x,y]/.xyopt//TableForm
Die Stellen, an denen diese auftreten, nochmals in Tabellenform: xyopt//TableForm χ -6 χ -6 χ —2 χ -> —2
y -> 0 y 4 y -» 0 y -> 4
Plot3D[f[x,y],{x,-10,8},{y,-10,8}]
6 Extremwertaufgaben
183
optima={x,y}/.xyopt { { - 6 , 0}, { - 6 , 4}, { - 2 , 0}, { - 2 , 4}} Im folgenden Contour-Plot werden die Höhenlinien, das heißt die Linien gleicher Funktionswerte, der Funktion zusammen mit den Stelle der Extrema, bzw. Sattelpunkte angezeigt: ContourPlot[Hx,y],{x,-8,l},{y,-2,7}, Epilog->{RGBColor(l,0,0],PointSize[0.02],Map[Point,optima]}, Contours->{-20,-10,0,10,20,30,40,50,100}, ContourStyle->Hue[0.7], ContourShading->False]
-8
-6
-4
-2
0
184
6 Extremwertaufgaben
6.3 Extremwertaufgaben für Funktionen in mehrerenVariablen mit Nebenbedingungen Gegeben ist die Funktion Ζ. Ζ könnte z.B. die bei der Produktion zweier Perodukte X und Y anfallenden Kosten in Abhängikeit von zwei Produktionsfaktoren χ und y sein. Nun sollen die Kosten minimiert werden. Wir definieren zunächst die Funktion Ζ und erzeugen ein Schaubild: Z[x_,yJ :=(x-120)A2+(y-100)A2 graf=Plot3D [Z [x,y], {χ,100,140} ,{y ,80,120} ]
Grad [s_,var_List] : =Map [D [s,#]&,var] Wir berechnen nun wie zuvor das Optimum ohne Nebenbedingungen: Opt=Solve[Grad[Z[x,y],{x,y}]={0,0},{x,y}]//N {{x-> 120., y
100.}}
{xopt,yopt}={x,y}/.Opt[[l]];
6 Extremwertaufgaben
185
Wir gehen nun davon aus, daß durch die Proktion eine Nebenbedinung NB gegeben ist, die bei der Optimierung zu berücksichtigen ist. Die Nebenbedingung wird nun definiert: NB=x+y-230=0; Wir zeichnen den Contour-Plot: Needs ["Graphics'Master' "] gl=ContourPIot[Z[x,y],{x,100,140},{y,80,120}, Epilog->{RGBColor[0,l,0],PointSize[0.02],Point[{xopt,yopt}]}, DisplayFunction->Identity] g2=ImplicitPlot [NB, {χ,100,140}, {y ,80,120}, PlotStyle->{RGBColor[ 1,0,0], Thickness [0.01]},Display Function->Identity] Show[gl,g2,DisplayFunction->$DisplayFunction]
100
110
120
130
140
Die Gerade in dieser Grafik repräsentiert die Nebenbedingung. In der Mitte ist der optimale Punkt ohne Nebenbedingung zu sehen. Die
186
6 Extremwertaufgaben
folgende Funktion ZL heißt Lagrange-Funktion. Sie ist die Summe der zu optimierenden Funktion Ζ und der mit einem Faktor λ multiplizierten Nebenbedingung : L[AJ:=(x+y-230) λ ZL[x_,y_,AJ:=Z[x,y]+L[¿] Wir untersuchen das Verschwinden des Gradienten der LagrangeFunktion M=Solve[Grad[ZL[x,y,A],{x,y,A}]={0,0,0},{x,y^}]//N {{x
125., y
105., λ - * - 1 0 . } }
Der Wert von Ζ an dieser Stelle ist z=Z[x,y]/.M {50.} lopt={x,y}/.M[[l]] Die Stelle des Optimums unter Berücksichtigung der Nebenbedingung liegt bei (x,y)= {125., 105.} gl=ContourPlot[Z[x,y],{x,100,140},{y,80,120}, Epilog->{RGBColor [0,1,0] ,PointSize[0.02], Point[{xopt,yopt}],Point[lopt]}, DisplayFunction->Identity] Show [gl ,g2,DisplayFunction->$Display Function]
6 Extremwertaufgaben
ìoo
no
ιεο
130
187
no
Es folgt ein zweites Beispiel. Gegeben sei wieder die ebene schon benutzte Funktion Z: Z[x_,yJ :=(x-120)A2+(y-100)A2 g6=Plot3D[Z[x,y],{x,100,140},{y,80,120}]
Wie oben ergibt sich der Gradient. Grad[s_,var_List]:=Map[D[s,#]&,var]
188
6 Extremwertaufgaben
Für das Optimum ohne Nebenbedingungen erhält man wieder: Opt=Solve[Grad[Z[x,y],{x,y}]={0,0},{x,y}]//N {xopt,yopt}={x,y}/.Opt[[l]]; { { x ^ 120., y-> 100.}} Diesmal sei eine weitere Nebenbedingung gegeben: NB={x+y-230=0, l/4(x-125) A 2+(y-98) A 2-50=0}; Needs ["Graphics'Master' "] gl=ContourPlot[Z[x,y],{x,100,140},{y,80,120}, Epilog->{RGBColor[0,l,0],PointSize[0.02],Point[{xopt,yopt}]}, DisplayFunction->Identity] g2=ImpIicitPlot[NB,{x,100,140},{y,80,120}, PlotStyle->{ {RGBColor [1,0,0] «Thickness [0.01]} }, DisplayFunction->Identity] Show[gl,g2,DisplayFunction->$DisplayFunction]
100
110
IZO
130
140
6 Extremwertaufgaben
189
Wir stellen wieder die Lagrange-Funktion auf, die diesmal von zwei Faktoren Al und Λ2 abhängt: NBx={x+y-230,l/4(x-125)A2+(y-98)A2-50}; Ι.[λ1_,λ2_]:=ΝΒχ.{λ1,λ2} ZL[x_,y_,Al_,A2_]:=Z[x,y]+L[Al,A2] ZL[x,y,Al,A2] (-120 + x) 2 + (-10 0 +y) 2 + (-230 + χ + y) Al + (-50 + j
(-125 +x) 2 + (-98 +y) 2 ) A2
Die weitere Vorgehensweise erfolgt wie oben. M=SoIve[Grad[ZL[x,y^l^2],{x,y^l^2}I= {0,0,0,0},{x,y,*U2}]//N { { A l - 1 4 . 6 2 1 2 , A 2 - 3 . 1 7 9 9 7 , χ ^ 136.271, y-> 93.729}, {Al -9.85875, A2 -0.0200258, χ 124.929, y -> 105.071}} z=Z[x,y]/.M[[l]] 304.07 z=Z[x,y]/.M[[2]] 50.0101 Die beiden letzen Zahlenwerte stellen die Funktionswerte in den beiden Optimalstellen dar. Die beiden Optimalstellen selbst erhält man so: loptl={x,y}/.M[[l]J {136.271, 93.729}
1 90
6
Extremwertaufgaben
lopt2={x,y}/.M[[2]] {124.929,
105.071}
gl=ContourPIot[Z[x,y],{x,100,140},{y,80,120}, Epilog->{RGBColor[0,l,0],PointSize[0.02], Point[{xopt,yopt}],Point[loptl], Point[lopt2]},DisplayFunction->Identity] Show[gl,g2,DisplayFunction->$DisplayFunction]
100
110
120
130
140
In der Mitte ist wieder das Optimum Punkt ohne Nebenbedingung zu sehen. Die Optimalpunkte unter Berücksichtigung der Nebenbedingungen ergeben sich als Schnittpunkte der Geraden und des Kreises, die die Nebenbedingungen grafisch repräsentieren.
6 Extremwertaufgaben
1 91
6.4 Lineare Optimierung Ziel ist es, den Funktionswert einer linearen Funktion in mehreren Variablen unter gewissen linearen Nebenbedingungen zu optimieren. Dabei sind die Nebenbedingungen meist in Form von Ungleichungen gegeben. Mit den Anweisungen „ConstrainedMax" und „ConstrainedMin" kann eine lineare Funktion in mehreren Veränderlichen unter linearen Nebenbedingungen maximiert bzw. minimiert werden. Wir wollen dies mit dem folgenden Beispiel verdeutlichen. Gegeben sei die zu maximierende lineare Zielfunktion z(x,y)=3x + 2y, die den Gewinn in Abhängigkeit der verkauften Stückzahlen χ und y erfaßt. Durch die Zulieferer und durch den Vertrieb seien die folgenden Nebenbedingungen gegeben: 2x+y {RGBColor[l,0,0],PointSize[0.03], Point[{xl,x2}]/.M[[2]]}, DispIayFunction->$DisplayFunction]
6 Extremwertaufgaben
193
Die drei (am Bildschirm roten) parallelen Geraden repräsentieren die sogenannten Höhenlinien der Zielfunktion. Der Punkt in der Grafik stellt das Optimum dar, das auf dem „Eckpunkt" der beiden sich schneidenden Restriktionslinien liegt. Die Höhenlinie des optimalen Zielfunktionswerts geht ebenfalls durch diesen Punkt.
194
7 Die Taylor-Reihe
7 Die Taylor-Reihe 7.1 Die Taylor-Reihe für Funktionen einer Veränderlichen Mit Hilfe der Taylor-Reihe kann eine Funktion, die unendlich oft stetig differenzierbar ist, als eine Potenzreihe dargestellt werden. Wir bezeichnen mit Τ die Taylor-Reihe einer Funktion f an dem Entwicklungspunkt xo. η T = Y 1 (Evaluate [D[f [ χ ] , {χ, i } ] ] / 1-0 (Evaluate[a {x ,i } f[χ] ] / .x->xo) (x-xo) 1
1=0
In einem Beispiel wollen wir die Funktion f(x) = sin(x) durch eine Taylor-Reihe um den Entwicklungspunkt xo=0 approximieren, indem wir die ersten 10 Glieder der Taylor-Reihe bestimmen. Wir berechnen also das Taylorpolynom 10-ten Grades. Dieses tun wir einmal über die oben definierte Taylor-Reihe Τ und einmal über die MathematicaAnweisung Series. xo=0; n=10; fIx_]:=Sin[x] S=Series [fix], {χ,χο,η}]
7 Die Taylor-Reihe
195
Τ χ3 Χ
" ~6
χ5 +
χ7
120 ~ 5040
χ9 +
362880
Über die Funktion Series wird die Taylor-Reihe bis zum 10-ten Glied mit dem Summand 0[x] n abgeschlossen. Dies ist ein Fehlerglied der Ordnung 11, das beim Abbruch der Taylor-Reihe zu berücksichtigen ist. Damit wir aber mit der Taylor-Reihe rechnen können, entfernen wir das Restglied mit der Funktion Normal. Danach zeichnen wir die Graphen der Funktion f und der Approximation g. g[xJ=Normal[S]
x
X3 ~ ~6
+
X5 X7 120 ~ 5040
+
X9 362880
Hot[{g[x],f[x]}, {χ, 0,2El}]
196
7 Die Taylor-Reihe
Wie Sie sehen, stimmt die Funktion mit der Approximation im Entwicklungspunkt überein. Danach wird die Abweichung immer größer, je weiter man sich von diesem Punkt entfernt. Nun wollen wir den Fehler bestimmen, den wir bei unserer Approximation im Intervall [0, x] (hier x=4) machen. Dazu definieren wir zunächst das Restglied R(n,x), das den Fehler erfaßt, den man beim Abbruch der Taylor-Reihe nach dem n-ten Glied an der Stelle χ macht. Der Parameter ue(0,l) ist dabei unbekannt. Wir bestimmen deshalb den maximalen Fehler (wir maximieren das Restglied in Abhängigkeit von u): (* 0 < u < 1 *) Clear [n] f n l [ x _ , n j = E v a l u a t e [ D [ f [ x ] , {χ, n+ 1}] ] sin
(l+n)
[ χ ]
7 Die Taylor-Reihe
R[n_, x_J ::
197
£ n l [ u x , n] iul (x-xo) (n + 1) !
R[10, 4]
16384 Cos [ 4 u] 155925 Solve[D[%, u] == 0] {{Sin[4u]
0}}
Rnax= M « [ A » [ { R [ 1 0 , 4] / . u - > P i / 4 , R[10, 4] / . u - > 0 , R[10, 4] / . u - > 1} ] ] 16384 155925 Rnax// Ν 0.105076 Der Fehler ist demnach kleiner gleich Rmax. Wir bestimmen den tatsächlichen maximalen Fehler: Abs[f[4] - g [ 4 ] ] / / N 0.0950741 Wichtige Potenzreihen sind die der Exponentialfunktion und der trigonometrischen Funktionen. Wir bestimmen nun die ersten 10 Glieder der Taylor-Reihe um den Entwicklungspunkt xo=0 für die Exponential- und die Kosinusfunktion.
198
7 Die Taylor-Reihe
Series[Exp[x],{x,0,10}] Χ3 Χ4 Χ5 Χ7 1+ Χ+ -7Γ + — + + „ ^ „+ _ „ „ + 2 6 24 120 720 5 0 4 0 χ? χ? χ10 η + 40320 3 6 2 8 8 $ 362880Ô Χ Τ
Serìes[Cos[x],{x,0,10}] X¿
Τ
+
Χ4 Xb 2 4 ~ ~Ί20
Xa +
40320
-
xiU 3628800+
η Χ
7 Die Taylor-Reihe
199
7.2 Die Taylor-Reihe für Funktionen mehrerer Veränderlicher Im nächsten Schritt wollen wir eine Funktion mit zwei Veränderlichen mit Hilfe eines Taylorpolynoms zweiten Grades approximieren. Dazu benötigen wir den Gradienten und die Hesse-Matrix. Der Entwicklungspunkt ist zunächst allgemein (xo,yo). Anstelle der ersten Ableitung steht nun der Gradient, anstelle der zweiten Ableitung steht die Hesse-Matrix.
f [x_, y_] := x A 2 Sin[y] + Log[xy] G
[ * _ ' Y J = *fep[D[f[x,y],#]&, { x , y } ] ; G[x, y ] / / ifetrixEbxm -i + 2xSin[y] \ I ± +x 2 Cos[y] j
H[x_, y j = Msp[D[G[x, y ] , #] 6, {x, y}] ; H[x, y] / / MatrixEbm ( - Λ + 2Sin[y] 2xCos[y] ) 2 2xCos[y] -φ- - x Sin[y] j Clear[T, xo]
T[x_, y j = f [xo, yo] +G[x>, yo] . { x - x o , y - y o } + 1 2 { x - x o , Y-yo) . H [ » , yo] . {x-x>, y-yo>
200
7 Die Taylor-Reihe
+xo 2 Cos[yo]) + Log[xoyo] +
(y-yo)
xo2 Sin[yo] + (χ - xo) ( — + 2 xo Sinfyo] ] + \ xo ' ^ ((x-xo) (2 xo (y-yo) Cos[yo] + 2 "I
(x-xo) ( - — +2Sin[yo])) (y-yo) ¡2 (x-xo) xoCosfyo] + (y-yo)
/
1
? . -xo^Sin[yo]
Wir wählen nun die konkreten Entwicklungspunkte χο=1/π und yo π und bestimmen das Taylorpolynom : T[x, y] / . {«>-> 1 / P i , yo -> Ei}
1 ~2
(-π+ y) }
- A + x ) (-τι2 ( - - +x) π
ι \
\ π
ι
2 (
" π + Υ) π
Expand[%] _ -3
1 π
_ _ π2 χ 2 y 2y 2xy + 2 x + 2 ττχ + 1 + —— 2 η π π
Ψ
2 7Γ2 %// Ν -3.31831 + 8.28319Χ- 4.9348 χ2 + 0.737941 y 0.63662 χ y - 0.0506606^
7 Die Taylor-Reihe
201
Falls wir diese Approximation nur bis zum ersten Grad bestimmen, erhalten wir die Tangentialebene TE(x,y) im Punkt (xo,yo). Diese zeichnen wir anschließend zusammen mit der Funktion f. y j = F [xo, yo] + G[XD, yo] . { x - x o , y - y o } /. { x o - > l / Ε ί , yo-> Ei}
Expand[TE[x, y] ] // Ν -1.68169 + 3.14159 x+ 0.216989 y GL = Plot3D[TE[x, y] , { x , 0 . 1 , 1 . 4 } , {y, 2 . 2 , 4 } ]
G2= Plot3D[f[x, y] , {x, 0 . 1 , 5 } , {y, 0 . 1 , 5 } ]
202
7 Die Taylor-Reihe
8 Komplexe Zahlen
203
S Komplexe Zahlen Wir gehen aus von der Menge aller geordneten Zahlenpaare (a,b). Auf dieser Menge erklärt man zwei Operationen, Addition und Multiplikation mit reellen Zahlen, wie folgt: (a,b)+(c,d)=(a+c,b+d) und X(a,b)=(Xa,Xb), XeR. Mit diesen Verknüpfungen bildet die Menge einen Vektorraum ("linearen Raum") den man mit R 2 bezeichnet. Führt man noch folgende Multiplikation zweier Zahlenpaare ein: (a,b)*(c,d)=(ac-bd,ad+bc), so erhalten wir eine algebraische Struktur, die man Körper nennt (vergleiche Anhang). Die Menge aller Zahlenpaare mit den genannten drei Operationen bilden den Körper der komplexen Zahlen, den wir mit C bezeichnen. Eine besondere Rolle spielen die Einheiten (1,0) und (0,1), letztere heißt die imaginäre Einheit und wird auch mit i bezeichnet (in der Elektrotechnik oft mit j und in Mathematica mit I). Es ist nämlich (a,b)=a(l,0)+b(0,l)=a+ib, wenn man das Element (1,0) mit dem Element l e R identifiziert: Die reellen Zahlen ergeben sich dann als Speziallfälle komplexer Zahlen der Form a+Oi. Betrachten wir einmal die Eigenschaften der imaginären Einheit i=(0,l). Nach den oben aufgeführten Regeln der Multiplikation zweier komplexer Zahlen gilt für i2 : i2=(0,l)*(0,l)=(-l,0)=-l. Wir geben in Mathematica ein: Sqrt[-1] I und erhalten als Antwort das Symbol I für die imaginäre Einheit i. Wir wollen zwei komplexe Zahlen definieren und ihre Summe, Differenz, Produkt und den Quotienten berechnen. z=l+2I; w=3+4I;
204
8 Komplexe Zahlen
summ=z+w difT=z-w prod=z w quot=z/w 4+61 -2-21
-5+101 11/25 + 2 I /25 Zu einer komplexen Zahl a+ib gibt es die sogenannte konjugiertkomplexe Zahl a-ib: Conjugatefz] 1-21
Bei einer komplexen Zahl a+ib nennt man a den Realteil und b den Imaginärteil. Man erhält sie mit der Mathematica-Anweisung „Re", bzw. „Im". Beispielsweise erhält man den Real- und Imaginärteil des oben berechneten Produkts prod: a=Re[prodJ b=Im[prod] -5 10 Nun wollen wir die Darstellungsmöglichkeit von komplexen Zahlen wegen ihrer Form (a,b) als Punkte der Ebene betrachten. Wir definieren drei Punkte der Ebene mit Hilfe der oben erklärten komplexen Zahlen z, w und deren Produkt prod. pl={Re[z],Im[z]} p2={Re[w],Im[w]} p3={a,b} Ursprung={0,0}
8 Komplexe Zahlen
205
{1,2}
{3,4} {-5,10} {0,0}
Needs [" Graphics' Master' " ] Show[Graphics[ {Arrow[Urspning,pl],AiTow[Ursprung,p2],Hue[0],Dashing[{0.01, 0.01}], Arrow[Ursprung,p3]}, Axes->True, PlotRange->{{-7,5},{-2,ll}}, AspectRatio->l, DefaultFont->{" Courier" ,25}, Prolog->{Thickness[0.002], Text["z", {1,2.4}], Text["w",{3,4.4}], Text["z.w",{-5.4,10.2}]} ]] ζ ·
χ
10 8 6 W
Λ
-6
- 4
2
-2 -
2
4
206
8 Komplexe Zahlen
Wir berechnen die „Argumente", das heißt die Winkel mit der positiven reellen Achse, für die Zahlen z, w und prod= zw. l/Degree*Arg[z]//N l/Degree*Arg[w]//N l/Degree*Arg[prod]//N 63.4349 53.1301 116.565 Letzerer Winkel ist die Summe der beiden ersten, wie man durch folgende Zeile überprüf (% bedeutet die letzte Eingabezeile, %% die vorletzte etc.). °/
Ω
%%+%%
116.565 Wir berechnen die Beträge der komplexen Zahlen, das heißt deren Abstand vom Punkt (0,0): Abs[z] Abs[w] Abs [prod] V5 5 5V5 Wir wollen nun Funktionen einer komplexen Variablen betrachten. Dazu definieren wir eine komplexe Variable ζ ganz allgemein als z=x+I y; Will man beispielsweise den Realteil der komplexen Funktion Sin[z] grafisch darstellen, so gibt man ein:
8 Komplexe Zahlen
207
Plot3D[Re[Sin[z]],{x,-10,10},{y,-3,3},PlotPoints->40]
10
Analog erhält man den Imaginärteil der komplexen Funktion ez als Grafik: Plot3D [Im [Exp [zj], {x,-1,1}, {y,-5,7} ,PIotPoints->40]
208
8 Komplexe Zahlen
Der Imaginärteil der Wurzelfunktion sieht so aus: Plot3D[Iin[Sqrt[z]],{x,-10,10},{y,-3,3},PlotPoints->40]
Betrachten wir eine komplexe Zahl der Form ττΛψ, also eine komplexe Zahl ohne Realteil, bei der der Wert von φ einen Winkel im Bogenmaß darstellt. z=I Phi IPhi Wir bilden e ί ψ Complex£xpand[£xp [ζ] ] Cos[Phi]+I Sin[Phi] Dies ist die häufig gebrauchte Beziehung: e ι ψ =cos yH-i sin φ . Wir berechnen zu einer komplexen Zahl z=x+i y die η-te Potenz:
8 Komplexe Zahlen
209
z=x+I y; ComplexExpand [zA n]//Simplify Abs [χ + I y ] n (Cos [n Arg [χ + I y] ] + I Sin [n Arg [χ + I y] ] ) Wie fuhren zur Abkürzung folgende Bezeichnungen ein: Für den Betrag Abs[x+i y] wählen wir den Buchstaben r und für das Argument Arg[x+i y] wählen wir den griechischen Buchstaben φ : % / . {Abs [χ + I y ] - > r , A r g [χ + I y ] - > φ} r n (Cos [ηφ] +1 Sin [η φ] ) Wir erhalten also die bekannte Formel zn = r" (cos(ny?)+i sin(n^)). Noch ein Gesichtspunkt beim Umgang mit komplexen Zahlen soll hier angesprochen werden. Wenn man versucht die Funktion "3. Wurzel einer reellen Zahl" zu plotten und zwar auch im negativen Bereich der reellen Achse, so erscheint eine Meldung von Mathematica, die wir hier nur verkürtzt wiedergeben: Clear[x] Plot [xA (1/3), {x,-5,5} ] Plot::plnr : x1/3 is not a machine-size real number at χ = - 5 . . General::stop : Further output of ?lot::plnr will be suppressed during this calculation.
210
8 Komplexe Zahlen
Um den Effekt zu erklären, betrachten wir folgende kleine Berechnung: Solve[x A 3=-4] { { x - > - ( - 2 ) 2 / 3 } , {X->-2 2 / 3 }, {X-> (-1) 1 / 3 2 2 / 3 }} %//N {{χ
0.793701 - 1.37473 1} , {x-1.5874}, {x 0.793701 + 1.37473 I} }
Wie zu sehen ist, hat die Gleichung x3=-4 drei Lösungen, von denen zwei komplex sind. Gibt man dagegen ein: //N 0.793701+1.374731 so erhält man nur eine komplexe Lösung, den sogenannten Hauptteil. Diese imaginäre Zahl kann der Rechner nicht mit der Plotanweisung bewältigen. Wir erheben zum Test die Zahl in die 3. Potenz: %A3//Chop -4. Um sich „ i r g e n d w i e " doch zu behelfen, benutzt man die MathematicaAnweisung „RealOnly", die nur die eine reelle Lösung liefert: Needs [" Miscellaneous' RealOnly" " ] Plot[xA(l/3),{x,-5,5}]
8 Komplexe Zahlen
Für die vorher gezeigte Berechnung folgt jetzt:
ΛΓΑ / / Ν -1.5874 %A3 -4.
211
212
9 Integralrechnung
9 Integralrechnung zur Volumenberechnung
Flächen-
und
9.1 Einfache Integrale Wir stellen uns die Aufgabe die Fläche zwischen einer Kurve und der x-Achse, beziehungsweise zwischen zwei Kurven zu berechnen. Die Funktionsgleichung laute beispielsweise f(x)=xA3-16x. Zunächst laden wir das Paket „FilledPlot", dann berechnen wir mit der „Solve"Anweisung die Nullstellen der Funktion. Needs["Graphics'FilledPlof "] fIx_J:=xA3-16x s=Solve[f[x]=0,x]//N//Chop { { x - > - 4 . } , { x - > 0 } , {x -» 4 . } }
Wir schreiben die gefundenen Nullstellen als Liste v: v=x/.s; v//N { - 4 . , 0, 4 . } Die Flächen zwischen der Kurve und der x-Achse werden ausgefüllt dargestellt: FilledPlot[{f[x],0},{x,v[[l]],v[[3]]}, Fills->RGBColor| 1,0,0 II
9 Integralrechnung
213
Durch Integration in den Bereichen zwischen den Nullstellen erhalten wir die gesuchten Teilflächen, deren Absolutbetrag addieren und damit die Gesamtfläche erhalten.
Al=Abs[Iiitegrate[f[x]»{XiV[[l]],v[[2]]}]J
A2=Abs[Integrate[f[x],{x,v[[2]],v[[3]]}]]
A=A1+A2 128.
Wir gehen im folgenden Beispiel, bei welchem die Fläche zwischen den Graphen zweier Funktionen berechnet deren soll, völlig analog vor: f[x_]:=xA3-9x g[xJ:=4x-4 s=Solve[f[x]=g[x],x]//N//Chop { { X 3 . 4 4 0 5 5 } , {X-» 0.309984}, {x
- 3 .75054} }
214
9 Integralrechnung
v=x/.s; V//N
{3.44055, 0.309984, -3.75054} FilledPlot[{f[x],g[x]},{x,v[[l]],v[[3]]}, Fills->RGBCoIor[l,0,0]]
Al=Abs[Integrate[f[x]-g[x],{x,v[[l]],v[[2]]}]] 28.7675
A2=Abs[Integrate[f[x]-g[x],{x,v[[2]],v[[3]]}]] 57.5854
A=A1+A2 86.353
9 Integralrechnung
215
9.2 Mehrfache Integrale Wir nennen ein Integral der Form jj..J /(x,,.. ,xn )dxx •... · dxn ein Mehrfachintegral. Im Falle n=2 schreiben wir J J
f(x,y)dxdy.
Wie im eindimensionalen Fall die Integration einer Flächenberechnung entspricht, bedeutet sie im zweidimensionalen Fall die Berechnung des Volumens über dem Integrationsgebiet in der Ebene bis zum Graphen der Funktion f. Der Integrationsbereich kann in diesem Fall die ganze Ebene R 2 sein, oder ein „Gebiet" daraus. (Der Begriff des Gebiets, den wir hier nicht näher erläuteren, hat in der Mathematik eine genau festgelegte Bedeutung.) Wir wollen die Fläche eines Kreises mit dem Radius 1 über ein Mehrfachintegral bestimmen. Dazu könnte man natürlich auch einfach über die Funktion Vi-χ 2 im Intervall [-1;1] integrieren und Ergebnis dieses Integrals verdoppeln. Wir zeichnen zunächst Fläche, das Integrationsgebiet. Wir verwenden im Integranden Funktion f(x,y)=l, womit der so bestimmte Wert des Volumens dem Wert der darunter liegenden Fläche übereinstimmt. Plot[{-V 1 -Χ1 , V i - * 2 }, {χ, -1,1}, A s p e c t R a t i o l ]
das die die mit
216
9 Integralrechnung
f [ x _ , y j := 1 Das folgende Integralzeichen erstellen Sie wieder mit der Palette „Basiclnput" Die Integrationsgrenzen liegen, wie im Bild ersichtlich, fur χ zwischen - 1 und 1 und fur y zwischen - V i - * 2 u n d + V i - * 2 .
r^
)
π
Wie zu sehen ist, ergibt sich der bekannte Flächeninhalt π. Wie bereits erwähnt, kann die Fläche auch über ein einfaches Integral bestimmt werden.
9 Integralrechnung
217
f l J T Í d x J-1 η
Im nächsten Schritt wollen wir die unten definierte Funktion f über den selben Bereich wie im vorherigen Beispiel integrieren. Mathematica kann dies auch ohne jede weitere Transformationen, weshalb wir das Integral zunächst direkt berechnen. Das Symbol fur e erzeugen Sie wie üblich über die Palette des „Basiclnput" oder über die Tastenkombination „Esc" „e" „e" „Esc" Benutzer älterer Mathematica-Versionen schreiben Exp[Argument] für die e-Funktion.
λ/τγ
Ε_χ2 Erf [V 1 - χ 2 ] dx
%// Ν 1.98587 Nun wollen wir das gleiche Integral mit einer Transformation auf Polarkoordinaten bestimmen. Dabei wird χ = r cos((p) und y = r sin(tp) substituiert. Dadurch wird dx dy durch |Jakobi| d
True, P l o t S t y l e - > RGBColor[0.5, 0.6, 0.5] , Di splayFunction - > Identity] Show[bildl, bild5, bild2, bild3, bild4, Viewpoint-> {3.038, 1.278 , 0.769}]
9 Integralrechnung
233
Wir kommen nun zur Berechnung des Kurvenintegrals: Da φ{ί) einen Vektor, beziehungsweise eine Liste darstellt, definieren wir eine neue Funktion fl, deren Argument ein Vektor ist, die aber ansonsten mit f identisch ist.
Wir programmieren in Mathematica die Formel aus der Definition des Kurvenintegrals:
Für weitere Berechnungen und Grafiken empfiehlt sich die Evaluierung: g[t_J = Evaluate [%]
Integriert man in den Grenzen von a bis b, so ergibt sich folgende geschlossenen Formel. Dies wäre auch schon bei der Berechnung von W unter Benutzung des bestimmten Integrals mit den Grenzen a und b möglich gewesen. g[b] - g [ a ]
234
9 Integralrechnung
— ( 25591 a -VΓ 1λ+ 4 a2
I 256
r~z—JT-T
C 25591b
23 a 3
96
23b 3
a5 Ì +— +
6)
b=> Ì
V1+ 4b2 I 256 96 + — 6)25609 ArcSuih[2a] , „. . r_ , + 25609 „ArcSinh[2b] wrol _, ^ 5 Wir verwenden nun konkrete Werte fur die Integrationsgrenzen. Wir erhalten den Wert der Fläche zwischen dem Integrationsweg (hier die Normalparabel) und dem zur Fläche „gelitteten" Kurvenabschnitt (siehe obige Grafik). g[4] - g [ 0 ] 106597 V~65 192
%// Ν 4614.98
+
25609 ArcSinh[8] 512
10 Die Fourieranalyse
235
10 Die Fourieranalyse Mit der Fourierreihe kann eine periodische Funktion durch eine Reihe dargestellt oder auch approximiert werden, falls man nur die ersten η Glieder dieser Reihe bestimmt. Die periodische Funktion wird dann als Summe von Kosinus- und Sinusfunktionen verschiedener Frequenzen und Amplituden dargestellt. Die Periode der Funktion muß in der Option (x,...,...} der Mathematica-Anweisung „NfourierTrigSeries" angegeben werden. Wir definieren zunächst eine Funktion f und bestimmen danach die Fourierreihe bis zum 5. Kosinus- bzw. Sinusterm. Als Kommentar in „(* *)" haben wir einen Alternatiworschlag für die Definition einer Funktion angegeben, den Sie selbst als Übung durchrechnen können. Wir zeichnen die Funktion f und die Fourierreihe. Da einige Koeffizienten nahe Null sind, eliminieren wir diese Glieder mit der ChopAnweisung. Naeris[ ail lis ' Eburi prTrasfccn' "] (* f [ x j :=If[l/3 {PGBColorf0.996109 , 0 , 0] , RGBColor[0, 0, 0.996109]}]
244
10 Die Fourieranalyse
Wie oben zu sehen ist, ist die Anpassung an die Funktion f recht gut. Zum Vergleich zeichnen wir nun noch die jeweils ersten drei bzw. die ersten zwei Summanden unserer Fourierreihe zusammen mit der Funktion f. Dabei kann man erkennen, wie sich die Anpassung verschlechtert. f t [ x j = FT[ [1] ] + FT[ [2] ] + FT[ [3] ] 0.5 - 0.405285Cos[2. x] - 0.0450316Cos[6. x] Plot[{f [χ], f t [ x ] } , {x, -EL, Pi} , PlotStyle -> {PGBColor[0.996109, 0, 0] , RGBColor[0 , 0 , 0.996109])]
f t [ x J = FT[[l]]
+
FT[[2]]
0.5 - 0.405285Cos[2. x]
10 Die Fourieranalyse
245
P l o t [ {f [χ] , f t [ x ] } , {χ, - P i , P i } , P l o t S t y l e - > {FGBColor[0.996109, 0 , 0] , RGBColorfO, 0 , 0.996109]}]
246
11 Numerische Verfahren
11 Numerische Verfahren 11.1 Das Newton-Verfahren zur Bestimmung der Nullstellen einer Funktion In diesem Kapitel wollen wir Ihnen zuerst das Newton-Verfahren zur Bestimmung von Nullstellen einer differenzierbaren Funktion mit zunächst nur einer Veränderlichen vorstellen. Danach erweitern wir dieses Verfahren auf differenzierbare Abbildungen von R n in R n . Dieses Verfahren kann immer dann angewendet werden, falls sich die Nullstellen nicht auf analytische Weise bestimmen lassen. Falls das Verfahren mit dem gewählten Startwert konvergiert, dann hat es die Konvergenzordnung 2, d.h. mit jedem neuen Iterationsschritt wird die Anzahl der genauen Stellen in etwa verdoppelt. Nehmen wir an, wir wollen die Nullstelle der Funktion f(x)=cos(x)-x bestimmen. Wir verschaffen uns zunächst mit Hilfe einer Grafik einen Überblick und versuchen die Nullstelle auf grafischem Weg abzuschätzen: Plot[Cos[x]-x,{x,-5,5}]
- 4
- 2
Nun zur Berechnung. Mit Ne(x) bezeichnen wir eine Funktion, mit der jeweils eine neue Näherung für die Nullstelle der Funktion f bestimmt werden kann. Wir fuhren dann 5 Iterationsschritte mit dem NewtonVerfahren durch und beginnen mit dem Startwert xo = 2,5. Diesen recht groben Näherungswert haben wir der Grafik entnommen. Es sei daraufhingewiesen, daß wir das folgende kleine Programm wegen des
11 Numerische Verfahren
247
besseren Verständnisses geschrieben haben. Es ist nämlich auch möglich mit der Mathematica-Funktion FindRoot[f[x]=0,{x,xo}] zu arbeiten und damit ebenfalls eine Näherung für die Nullstellen einer Funktion mittels des Newton-Verfahrens mit dem Startwert xo zu berechnen. Die Bedeutung der unten stehenden „NestList"-Anweisung ist die folgende: NestList[Ne,xo,5],n] erstellt eine Liste von Werten, die aus dem Wert xo selbst und der fünffachen Anwendung auf den jeweiligen Startwert xo entsteht. Demnach enthält die Liste L den Staitwert und die Näherungen aus dem ersten bis fünften Iterationsschritt. Ne[x_J:=x - f[x] / F[x] n=5; xo=2.5; f[x_|:=Cos[x]-x L=NestList[Ne,xo,n] {2.5,0.434813,0.767013,0.739252,0.739085,0.739085}
Daß der letzte gefundene x-Wert schon eine gute Näherung für die Nullstelle ist, zeigt die Berechnung des Funktionswerts an dieser Stelle, der mit -1.033*10"* schon nahe bei Null liegt. f[L[[5]]]
-1.03322x10-® Das Newton-Verfahren nähert sich der Nullstelle, indem es die Tangente der Funktion f an einer bestimmten vorgegebenen Stelle benutzt, die Nullstelle der Tangente bestimmt, und diese Nullstelle als eine neue Näherung für die Nullstelle der Funktion verwendet. Wir berechnen nun die ersten 3 Tangenten und zeichnen diese zusammen mit der Funktion f, so daß die Arbeitsweise dieses Verfahrens anhand unseres Beispiels recht gut verdeutlicht werden kann.
248
11 Numerische Verfahren
t [ x _ , x o j := £[xo] + f ' [300] * (X-XD) T = T S b l e [ t [ x , L [ [ i ] ] ] , { i , 1, 3}] {-3.30114-1.59847 ( - 2 . 5 + X), 0.472136-1.42124 (-0.434813 + χ ) , - 0.0470257 - 1.69399 (- 0.767013 + x)}
g l = Plot:[Evaluate[{f[χ] , Τ}] , {χ, - 2 , 3}]
Wir erweitern nun das Newton-Verfahren auf Abbildungen von Rn in R" und verdeutlichen dieses am Beispiel einer Abbildung f: R2 ->R 2 , indem wir eine Nullstelle dieser Funktion mit Hilfe des NewtonVerfahrens berechnen. Dazu benötigen wir die Jakobi-Matrix der Funktion f. Ansonsten verläuft das Verfahren analog zum einfachen Fall. f [ x _ , y_] := { x * S i n [ y ] + 1, y * C o s [ x ] }
11 Numerische Verfahren
Jakohi[x_, y j = Map[D[f [ x , y] , #]
{ x , y} ] ;
Jalcchi[x, y] / / IfetrixEtoxm Sin[y] -ySin[x] \ xCosfy] Cos[x] / Newt[{x_,yJ]:= {x,y}-Inverse[Jakobi[x,y]].f[x,y] Newt[{x,y}] r
y 2 Cos[x] Sin[x] xyCos[y] Sin[x] +Cos[x] Sin[y] Cos[x] (1 + χ Sin[y] ) xyCos[y] Sin[x] +Cos[x] Sin[y] yCos[x] Sin[y] xyCos[y] Sin[x] +Cos[x] Sin[y] xCos[y] (1 + χSin[y] ) τ xyCosfy] Sin[x] +Cos[x] Sin[y] J
xstart={l,0.5}; NestList[Newt,xstart,10]//MatrixForm 1 453208 4 .8082 4. 57065 4. 66895 4. 69959 4. 70744 4. 71068 4. 71175 4. 71216 4 .7123
-0.
0.5 2. 36036 - 1 .88323 - 3 .66995 - 2 .74687 - 3 .04102 - 2 .86759 - 2 .96337 - 2 .90779 - 2 .93933 - 2 .92118
+ +
249
250
11 Numerische Verfahren
Die obige Liste erfaßt die Näherungswerte in den Zeilen, beginnend mit dem Startwert (1; 0,5). Das Newton-Verfahren kann, wie bereits erwähnt, auch über eine Mathematica Funktion durchgeführt werden: F i n d R o o t f f [ x , y] == {0, 0 } , {x, 4 } , {y, - 3 } ] {x-> 4.71239, y-> -2.92776} Falls Sie einen anderen als den von uns vorgegebenen Startwert benutzen, kann das Newton-Verfahren bei ungünstiger Startwertwahl auch divergieren.
11 Numerische Verfahren
251
11.2 Das Newton Verfahren zur Bestimmung lokaler Extrema (Newton-Raphson Verfahren) Mit dem Newtonverfahren können nicht nur Nullstellen einer Funktion bestimmt werden, sondern es können auch lokale Minima oder lokales Maxima einer Funktion f:Rn-*R gesucht werden. Um dieses Verfahren programmieren zu können, benötigt man den Gradienten und die Hesse-Matrix von f: f [xl_, x2J := (xl + 2) A4+ (x2 - 3) A4 - 8 Gradf [xl_, x2_J : = Evaluate [ {D[f[xl, x2] , xl] , D[f[xl, x2], x2]}] {fl[xl_, x2J , f2[xl_, x2_] } = Gradf [xl, x2] {4 (2 + xl) 3 , 4 (-3 + X2)3} Hf[xl_, x2J : = Evaluate [ { { D [ f i [xl, x2] , xl] , D[fl[zl, x2] , x2] } , {D[£2[xl, x2], xl] , D[f2[xl, x2], x2]>}] Hf [xl, x2] / / MatrixEbrm /12 (2 + xl) 2 0 \ ' 0 12 (-3 + x2) 2 ' Wir suchen nun das lokale (in diesem Fall ist dies gleichzeitig das globale) Minimum der Funktion f. Die Hesse-Matrix muß an den jeweiligen Iterationswerten positiv définit (falls das lokale Maximum gesucht wäre: negativ définit) sein, damit das Verfahren konvergieren kann. Das Verfahren konvergiert dann für hinreichend gute Startwerte. In unserem Beispiel sieht man sofort, daß die Hessematrix positiv définit ist, denn sie ist in unserem Beispiel eine Diagonalmatrix. Da
252
11 Numerische Verfahren
unsere Hesse-Matrix auf der Hauptdiagonalen nur positive Werte besitzt (außer für xl * -2 und x2 * 3), ist sie bis auf eine Ausnahme, an allen Stellen positiv définit. Gefordert wird aber nur, daß diese für die Iterationswerte positiv définit sein muß. Bei anderen Funktionen können für die Iterationswerte auch die Eigenwerte der Hesse-Matrix an diesen Stellen berechnet werden. Sind diese alle größer Null, so ist die Hesse-Matrix an den entsprechenden Stellen positiv définit (vgl. Extremwert von Funktionen in mehreren Veränderlichen). In unserem Beispiel gibt es noch einen gravierenden Nachteil. Der Gradient verschwindet direkt an den Stellen xl = -2 und x2 = 3, an denen die Hesse-Matrix nicht mehr positiv définit ist. Je mehr wir uns bei der Iteration dieser Stelle nähern, um so größer werden die numerischen Probleme, da die Determinante der Hesse-Matrix immer kleiner wird. Sie ist sogar an dieser Stelle gleich Null. Wie wir aber später bei der Iteration sehen werden, stellt dies für Mathematica (jedenfalls bei den ersten 12 Iterationsschritten) kein Problem dar. Über die im folgenden definierte Funktion GA kann nun die Iteration durchgeführt werden. GA[ {xl_, x2_)] := Flatten[ { { x l } , {x2}} - Inverse [Hf[xl, x2] ] .Gradf[xl, x2] ] GA[{xl, x2} ] { x l - (48 (2 + x l ) 3 ( - 3 + x2) 2 ) / (5184 + 5184 x l + 1296 xl 2 - 3456 x2 - 3456 x l x2 864 xl 2 x2 + 576 x2 2 + 576 xl x2 2 + 144 xl 2 x2 2 ), x 2 - (48 (2 + x l ) 2 ( - 3 + x2) 3 ) / ( 5184 + 5184 x l + 1296 xl 2 - 3456 x2 - 3456 x l x2 864 xl 2 x2 + 576 x2 2 + 576 xl x2 2 + 144 xl 2 x2 2 )} Wir starten mit dem Vektor (-1, 2) T und berechnen 12 Iterationen. Danach stellen wir die Höhenlinien der Funktion f und die Iterationswerte in einer Grafik dar. L = NestList[GA, { - 1 . , 2 . } , 12]
11 Numerische Verfahren
{{-1., 2.}, {-1.55556, {-1.80247, {-1.91221, {-1.96098, {-1.98266, {-1.99229,
{-1.33333, 2.55556}, 2.80247}, 2.91221}, 2.96098}, 2.98266}, 2.99229}}
253
2.33333}, {-1.7037, 2.7037}, {-1.86831, 2.86831}, {-1.94147, 2.94147}, {-1.97399, 2.97399}, {-1.98844, 2.98844},
CcntourPlot[f [ x , y] , { x , - 3 , - 1 } , { y , 2 , 4 } , E p i l o g - > { RGBColor [ 1, 0 , 0] , Map [Point, L ] } ]
-3
-2.5
-2
-1.5
-1
Anhand der oberen Grafik ist zu sehen, wie das Verfahren konvergiert. Der Startwert ist in der unteren rechten Ecke zu sehen.
254
U Numerische Verfahren
Wir bestimmen nun noch direkt die Werte, bei denen der Gradient unserer Funktion f verschwindet. S o l v e [ G r a d f [ x l , x2] == {0, 0}] {{xl -> -2, x2 -> 3}, {xl->-2, x2-> 3}, {xl-» -2, x2->3}, {xl-> -2, x2^ 3}, {xl-> -2, x2-» 3}, {xl-> -2, x2-> 3}, {xl-> -2, x2-> 3}, {xl-> -2, x2-> 3}, {xl -> -2, x2->3}} Um die bereits in unserem Beispiel erwähnten eventuell auftretenden numerischen Probleme zu umgehen, kann man die Iterationsfunktion vereinfachen und auswerten lassen, so daß nicht bei jedem Interationsschritt die Hesse-Matrix invertiert werden muß. Dabei verschwindet die Unstetigkeit der Iterationsfunktion an der Extremstelle, so daß wir sogar diese Stelle in die Funktion GA einsetzen können. Außerdem wird der Ausdruck zur Berechnung der Iterationswerte erheblich vereinfacht, wie unten zu sehen ist. GA[{xl_,x2J]:= Flatten[{{xl},{x2}}Inverse[Hf[xl,x2]].Gradf[xl,x2]]//Simplify//Evaluate GA[{xl,x2}] ,. , 2x2 ι {Γ 2- ,(-1. + X1), 1+ — }
GA[{-2,3}] {-2,3} Diese Vorgehensweise empfiehlt sich generell, insbesondere bei größeren Problemen.
11 Numerische
Verfahren
255
11.3 Numerische Integration Wir wollen im nächsten Beispiel eine Funktion, deren Stammfunktion nicht geschlossen ermittelt werden kann, über dem Intervall [0,1] numerisch integrieren. Dies können wir mit der MathematicaAnweisung „Nlntegrate" Danach programmieren wir die numerische Integration selbst, indem wir die Funktion zunächst durch ein Taylorpolynom, zum Beispiel 8 Grades (je höher dabei der gewählte Grad ist, um so besser ist die Näherung), im Entwicklungspunkt 0 approximieren und danach dieses über dem gegebenen Intervall integrieren. Diese Vorgehensweise ist als Integration durch Reihenentwicklung bekannt. Betrachten wir die Funktion f(x)= e'* 1 Integrals über dem Bereich [0,1],
Gesucht ist der Wert des
NIntegrate[Exp[-xA2],{x,0,l}] 0.746824 Series [Exp[-xA2] , {x, 0, 8}] v4 1 - χ2 + — - — + — 2 6 24
+
0[x]9
Wir „normalisieren" die Darstellung, d.h. wir entfernen den Term 0[x] 9 h [ x _ ] = Mönnal[%] o
X4 X6 Τ " Τ
+
X8 24
Bevor wir nun über das Taylorpolynom integrieren, zeichnen wir die Funktion, über die wir integrieren, sowie das zugehörige Taylorpolynom 8-ten Grades am Entwicklungspunkt 0. Dabei ist zu
256
11 Numerische Verfahren
sehen, daß die Approximation am Entwicklungspunkt am besten ist (hier stimmen die Funktionswerte überein). Je weiter man sich von Entwicklungspunkt entfernt, um so schlechter ist die Approximation. Über dem Bereich [0,1], über den wir integrieren wollen, ist zwischen der Funktion f und der Approximation fast keine Abweichung in der unten stehenden Grafik zu erkennen. P l o t [ { E x p [ - x A 2 ] , h [ x ] } , {χ, 0, 3} ]
Int = ^ h [ x ] d x ¡ Int// Ν 0.747487
Mathematica löst das Problem auch direkt. Unsere Näherung ist demnach recht gut. (V*2 J0
dx
I VÄ Erf [1] Mathematica benutzt intern die sogenannte „Error-Function" oder das „Fehlerintegral" Dieses spielt in der Statistik für die Tabellierung von
11 Numerische Verfahren
257
Verteilungen eine wichtige Rolle. Den numerischen Wert erhalten wir so: %// ν
0.746824
Wir wollen zur Übung eine weitere numerische Integration am Beispiel der unten definierten Funktion im Intervall [0,1] durchführen. Zum Vergleich verwenden wir wieder zunächst die MathematicaFunktion NIntegrate. f[x_] := Cos[x] *Exp[x] NIntegrate [f[x], {x,0,1} ] 1.37802
S e r i e s [ f [ x ] , {x, 0, 8}] 1+X
X3
X4
X5
3
6
30
+
X7
+
630
X8
2520
h[x_] = Nonnal[%] ^
X3 +Χ-
Ί3
X4
6
X5
30
X7
630
X8 +
2520
P l o t [ { f [ x ] , h [ x ] } , { x , 0 , 3}]
+Λ 0[x]π 9
258
11 Numerische Verfahren
Die Näherung über das Taylorpolynom ist im Intervall [0,1] sehr gut, wie an der oberen Grafik zu erkennen ist. Wir integrieren nun über das Taylorpolynom h(x) und danach zum Vergleich direkt mit Mathematica. Int = J^Aíjic] dx; Int// Ν 1.37802
Γ / Μ Jo
dx
+ λ e (Cos[l] + Sin[l] ) %// Ν 1.37802
Es folgt noch ein Beispiel zur numerischen Integration über eine Liste von Wertepaaren. Mit den folgenden Anweisungen kann über eine
11 Numerische Verfahren
259
Liste von Wertepaaren, die wir zunächst über die Table-Anweisung erzeugen, numerisch integriert werden. Needs ["NumericalMath' Listintegrate" " ] data=TabIe[{x,-xA2+4},{x,-2,2,0.1}]; Listlntegrate[data,2]//N 10.66
260
12 Approximation und Interpolation
12 Approximation und Interpolation Häufig stellt sich bei technischen Berechnungen das Problem, Paare von Messwerten als Punkte in der x-y-Ebene grafisch darzustellen und durch eine geeignete Funktion zu verbinden, beziehungsweise anzunähern. Will man eine Kurve bestimmen, die durch jeden Einzelpunkt verläuft, so spricht man von Interpolation. Will man dagegen eine Kurve bestimmen, die die Punkte insgesamt möglichst gut beschreibt, ohne daß verlangt wird, daß die Kurve jeden Einzelpunkt trifft, so spricht man von Approximation. Es gilt bei beiden Problemstellungen geeignete Kriterien fur die Güte der Näherung festzulegen. Beginnen wollen wir mit der Approximation. Um die Berechnungen und Grafiken mit Mathematica durchführen zu können, laden wir zwei Programm-Pakete: Needsf'StatisticsMaster^ "] Needs["Graphra Master "] Gegeben seien die folgenden Messwertpaare : DataReg={{l, 1.8}, {2,3.1},{4,3.8}, {5,5.3 }, {6,6.8 },{7,7.3 }}; Wir verschaffen uns Annordnung:
zunächst
einen
Überblick
Gl=ListPlot[DataReg, PlotStyle->PointSize[0.02]]
über
deren
12 Approximation und Interpolation
261
Durch die folgende Mathematica-Anweisung „Fit" wird eine Regressionsgerade nach der „Methode der kleinsten Quadrate" berechnet. Bei dieser Methode wird die Gerade so bestimmt, daß die Summe aller quadrierten Abweichungen der Meßpunkte von der Geraden minimal wird. Man benutzt deshalb die Quadrate dieser Abweichungen, um unabhängig von deren Vorzeichen zu sein, denn die Abweichungen zweier Punkte von der Geraden könnten sich sonst unerwünschterweise gegenseitig aufheben, wenn die Punkte gleich weit über bzw. unter der Geraden liegen. Gegenüber der Betragsfiinktion, die man auch wählen könnte, hat aber die Wahl der Abweichungsquadrate den Vorteil der Differenzierbarkeit der Funktion, die bei der Minimumsbestimmung eine Rolle spielt. fReg [xJ=Fit [DataReg, {1 ,x} ,x] 0.876398 + 0.913665 x
Diese Ausgabe ist die Gleichung der Regressionsgeraden, die wir unter dem Namen „fReg" gespeichert haben. Wir erstellen nun die Grafik mit der Regressionsgeraden und plotten dann die Punkte zusammen mit der Grafik. G2=Plot[fReg[x],{x,0,ll},PlotStyle->RGBColor[l,0,0j, DisplayFunction->Identity] Show [Gl ,G2,Display Fimction->$Display Function]
262
12 Approximation und Interpolation
Im nächsten Beispiel sollen Punkte, die annähernd auf einem Polynom 3 Grades liegen, approximiert werden. Zur Erzeugung der Werte, bedienen wir uns eines kleinen Tricks. Wir erzeugen Zufallszahlen, die wir zu den Werten eines von uns vorgegeben Polynoms addieren. Das Approximationspolynom stimmt dann wegen der zufalligen Abweichungen nicht mit dem werteerzeugenden Polynom überein. Die zufälligen Abweichungen können zum Beispiel Meßfehler repräsentieren: e=5* Random [] g [ x j := χ Λ 3 - x A 2- 16 χ + 16 Dat=Table[{x,g[x]+e},{x,-5,5,0.5}]; Die folgende Mathematica-Anweisung berechnet ein Polynom dritten Grades wegen der Liste {l,x,xA2,xA3} in der Fit-Anweisung. fReg2[xJ = Fit [Da t, {1, x, xA2, xA3}, x] 18.1538 - 16.3046 χ - 0.998293 xz + 1.01739 x3 G3=ListPlot[Dat,PlotStyle->PointSize[0.02],
12 Approximation und Interpolation
263
DisplayFunction->Identity] G4=Plot[fReg2 [χ], {x,-5,5} ,PlotStyle->RGBColor [ 1,0,0], DisplayFunction->Identity] Show[G3,G4,DisplayFunction->$DispIayFunction, PlotRange->All]
Das nächste Beispiel zur Approximation verläuft analog. Wir wollen aber mit der Anweisung „NonlinearFit" eine nichtlineare Anpassung von Daten im Raum R vornehmen. Die Approximationsfunktion ist dabei eine Abbildung von R2 in R. Wir erzeugen zunächst Datenpunkte im Raum, die zufallige Abweichungen von einer vorgegebenen Fläche besitzen. Clear[e,x,y] Remove[f] e := Random [] f[x_, y j := 2 x A 2 - 3 y A 2 + 4 + e Dat = Flatten[Table[{i, y, f[x, y]}, {x, -5, S, 1}, {y, -5,5,1>], 1]; par = NonlinearFit [Dat, a + b χ Λ 2 + c y A 2, {x, y}, {a, b, c}];
264
12 Approximation und Interpolation
Rfx[x,y_|=par 4.48751 + 1.9975 χ2 - 2.99918 y2 In der folgenden Abbildung ist der Graph der Approximationsfunktion f dargestellt, sowie die zufällig davon abweichenden Punkte: G1=Plot3D [Rfx[x,y ], {x,-5,5}, {y,-5,5}, Display Function->Identity] ; G2=ScatterPlot3D [Dat, DisplayFunction->Identity] ; Show [Gl,G2,DisplayFunction->$Display Function]
Es folgt ein letztes Beispiel zur Approximation. Hier ist unsere Approximationsfunktion eine sogenannte logistische Funktion, die von den Parametern a und b abhängt. Diese Parameter schätzen wir wieder über die Mathematica-Funktion „NonlinearFit": CIear[e,x,y] Remove[f]
12 Approximation und Interpolation
265
β : = Random [] fi[x ] :=
l + Exp[-a-bx]
Dati = Table [{χ, (fl[x] /. {a-»l, b->0.2})
}, {χ, 1,10, 0.1}] ; 1 1001
pari = NonlinearFit1[Dati,
, χ, {a. b}1 J
u
l+Exp[-(a+bx)]
ι 1 + e-0.9810B9-0.193676 X Gal=ListPlot [Da tl,Display Fu nction->ld entity] Ga2=Plot[£valuate[parl],{x,l,10},DisplayFunction->]Identity, PlotStyle->RGBColor[1.000,0.OOO,O.OOO]] Show[Gal,Ga2,DisplayFunction->$DisplayFunction]
Wir kommen nun zur Interpolation. Durch die folgende Liste mit dem Namen „Werte" seien 10 Messpunkte gegeben. Wir stellen uns die Aufgabe, ein Polynom durch sämtliche Punkte zu legen, oder die
266
12 Approximation und Interpolation
Punkte durch Polynomstücke miteinander zu verbinden, wobei wir fordern, daß die einzelnen Polynomfunktionen stetig differenzierbar ineinander übergehen (Spline-Interpolation). Mit der „ListPlot"Anweisung verschaffen wir uns einen Überblick über die Lage der Punkte. Werte={{l,7},{2,9},{3,0},{4,2},{5,3},{6,6}, {7,5},{8,5.2},{9,9},{10,0.51}}; gl=ListPIot[Werte,PlotStyIe->PointSlze[0.02]] 8 6
4
6
8
10
Die folgende Anweisung berechnet Polynome 3. Grades, die die Punkte interpolieren: f=Interpolation[Werte,InterpolationOrder->3] InterpolatingFunction[{{1., 10.}}, ]
Mathematica antwortet mit einer allgemeinen Bezeichnung für die Interpolationspolynome. Trotzdem können wir, da wir für die Anweisung einen Namen vergeben haben, den Funktionswert an einer von uns gewählten Stelle berechnen. f[8.7]
12 Approximation und Interpolation
267
8.42745 Wie zeichnen die Punkte zusammen mit den Polynomen. Experimentieren Sie bitte mit der ,JnterpolationOrder" in der letzten Anweisung. g2=Plot [f[x], {χ, 1 * 10},Display Function->Identity] Show [gl,g2,Display Function->$Display Function]
Wenn wir dagegen ein einziges Polynom berechnen und zeichnen wollen, wählen wir die „InterpolatingPolynomial"-Anweisung, die für η Punkte ein Polynom (n-l)-ten Grades bestimmt: P[x_]=InterpolatingPolynomial[Werte,x]//Expand -803.51 +2123.57 χ - 2203.21 X2 + 1222.54 x3 - 407.403 x4 + 85.5093 x5 - 11.3885 χ 6 + 0.93323 χ7 - 0.0428857 x8 + 0.000845211 x9 Bildpx=Plot[P[x],{x,0,15},PlotStyle->RGBColor[l,0,0]J
268
12 Approximation und Interpolation
Auch hier lassen sich für beliebige Zwischenstellen des Intervalls Funktionswerte berechnen. P[8.7] 9.08951 Einen Vergleich der beiden Interpolationsmöglichkeiten zeigt das nächste Bild. Beachte Sie bitte, wie das einzelne Polynom (hier 9. Grades) an den Enden stark schwingt, was für eventuelle Vorhersagen von Zwischenwerten Konsequenzen haben könnte. Show[gl,g2,Bildpx, DisplayFunction->$DisplayFunction]
12 Approximation und Interpolation
269
270
13 Differentialgleichungen
13 Differentialgleichungen In den Naturwissenschaften spielen bei der mathematischen Modellierung verschiedenartigster Phänomene sogenannte Differentialgleichungen eine überragende Rolle. Es handelt sich um Gleichungen, in denen eine unbekannte, noch zu bestimmende Funktion, sowie deren Ableitungen auftreten. Genauer sprechen wir von einer gewöhnlichen Differentialgleichung η-ter Ordnung in impliziter Form, wenn wir eine Gleichung der Form Fix, y(x),y(x),y"(x),....,yin\x)) =0 meinen. Dabei ist y(x) die gesuchte Funktion und die höchste vorkommende Ableitung von y(x) ist die η-te Ableitung yin\x). Die {n) höchste Potenz, in der die η-te Ableitung y (x) vorkommt, heißt der Grad der Differentialgleichung. Ist F linear in der Variablen y sowie deren Ableitungen, so spricht man von einer linearen gewöhnlichen Differentialgleichung. Dagegen sprechen wir von einer partiellen Differentialgleichung, n-ter Ordnung, wenn die gesuchte Funktion von zwei oder mehreren Variablen abhängt und damit partielle Ableitungen bis zur n-ten Ordnung vorkommen. Auf diese werden wir später noch zu sprechen kommen. Ist die Gleichung bereits nach der höchsten Ableitung aufgelöst, liegt also eine gewöhnliche Differentialgleichung der folgenden Form vor so spricht man von einer Differentialgleichung η-ter Ordnung.
expliziten
gewöhnlichen
Die Mathematica-Anweisung zum Lösen sowohl gewöhnlicher, als auch partieller Differentialgleichungen, ist die „DSolve"-Anweisung. Der Leser möge nun nicht glauben, man könne alle vorkommenden Differentialgleichungen lösen. Es gibt viele Differentialgleichungen, die gar nicht exakt lösbar sind und man kann allenfalls versuchen eine numerische Näherungslösung zu erhalten. Auch dafür hat Mathematica einen Befehl, die „NDSolve"-Anweisung.
13 Differentialgleichungen
2 71
Wie beide Möglichkeiten eingesetzt werden, wollen wir jetzt, von einfachen Beispielen ausgehend, vorfuhren, bis wir schließlich zu partiellen Differentialgleichungen gelangen, die naturgemäß meist verwickelter sind. Zur Kenntlichmachung geben wir jedem Beispiel einen Namen : Bsp. 1, Bsp.2, und so weiter. Bsp.l: Als ersten Spezialfall expliziter gewöhnlicher Differentialgleichungen betrachten wir eine solche, bei denen die rechts stehende Funktion f gar nicht von y und deren Ableitungen abhängt. Sie sind also von der Form y'(x)=f(x), das heißt man kennt von einer gesuchten Funktion y(x) in einer Variablen χ deren Ableitung f(x). Dies ist ein typisches Integrationsproblem wie Sie es aus dem ersten Kapitel bei der „Integrate'-Anweisung kennengelernt haben. Man löst solche Probleme, sofern sie lösbar sind, durch gewöhnliche Integration. Dabei ist jedoch folgendes zu beachten: Wie Sie schon wissen, gibt Mathematica die Integrationskonstante bei der „Integrate"-Anweisung leider nicht aus. Dagegen leistet dies die allgemeine Anweisung zum Lösen von Differentialgleichung „DSolve", wie folgender Vergleich zeigt: CIear[x] Remove[y,f] fIxJ:=x A 3 Integrateci] ,x] 4 d g l = DSolve [ y ' [x] == f [χ] , y [ x ] , x] / / F l a t t e n {y[x] - χ +c[i]} Wie Sie sehen bezeichnet Mathematica die Integrationskonstante mit C[l]. Treten bei Gleichungen höherer Ordnung mehrere Konstanten auf, so werden diese mit C[1],C[2],.. usw. durchnumeriert. Wir wenden die Regel „dgl" auf eine Funktion y[x] an und setzen die Integrationskonstante zum Beispiel auf den Wert 5:
272
13 Differentialgleichungen
y[xj=y[x ]/.dgl/.C[l]->5; y[x]
Mit dieser Funktion können wir wie gewohnt arbeiten, beispielsweise deren Wert an der Stelle x=2 berechnen: y[2]
9 Wir zeichnen die zu dieser Integrationskonstante gehörende Lösung der Differentialgleichung: g r a f i = P l o t [y [χ] , {χ, - 2 . 5 ,
2.5},
PlotRange -> {{-3, 3}, { - 1 , 15}}, P l o t S t y l e - > RGBColorfO,
- 3 - 2 - 1
1 2
0,1]]
3
Wir sind in der Wahl der Konstante jedoch frei, denn auch für eine andere Konstante, z.B. 0, erhalten wir eine Lösung unseres Integrationsproblems: y [ * J = y [ x ] / - d g i / · c [ i ] -> o
13 Differentialgleichungen
273
4
g r a f 2 = P l o t [y [ χ ] , {χ, - 2 . 5 , 2.5}, PlotRange-> {{-3, 3}, { - 1 , 1 5 } } , P l o t s t y l e - > RGBColor [ 1 , 0 , 0 ] ]
Diese Lösungskurven haben ganz allgemein die Eigenschaft, in ein Richtungsfeld, das durch die DifFerentialgleichnung beschrieben wird, zu „passen", denn die Differentialgleichung y'=f(x,y) besagt ja gerade, daß der Anstieg der Tangente y' an die gesuchte Kurve y gerade durch f(x,y) vorgegeben ist. Wenn man also in der Ebene einen Punkt (x,y) auswählt, so ist durch f(x,y)=y£ der Anstieg der Lösungskurve in diesem Punkt berechenbar und durch ein kurzes Tangentenstück grafisch darstellbar. Needs ["Graphics 'Master " " ] g r a f 3 = P l o t V e c t o r F i e l d [ { 1 , x A 3 } , {x, - 3 , 3 } , { y , - 1 , 1 5 } , Di s p l a y F u n c t i o n - > I d e n t i t y ] Show[grafi, graf2,
graf3]
274
13 Differentialgleichungen
Bsp. 2: Wir kommen zum nächsten Speziallfall: y'=f(x,y)=y. Löschen Sie bitte immer die alten Definitionen der Variablen und Funktionen, sonst könnten unliebsame Fehler in den Berechnungen auftreten. Remove [ f , y ] C l e a r [χ, y] D S o l v e [ y ' [ χ ] == y [ χ ] , y [ χ ] , χ ] {{Y[Χ]
ΕΧE[I]}}
Die Lösung lautet hier also in üblicher Notation: y(x)=c"ex Beachten Sie hier bitte, daß in der „Dsolve"-Anweisung y[x] steht und nicht nur y. Sonst würde folgender Fall eintreten: D S o l v e [ y ' [x] == y , y [ x ] , x] {{y[x]
x y + C[l]}}
Es wäre also y wie eine Konstante behandet worden und wir wären wie im ersten Speziallfall bei der gewöhlichen Integration. Noch eine Variante sei hier erwähnt: Läßt man bei der Funktion y[x] in der Mitte der „Dsolve"-Anweisung die eckige Klammer mit dem Argument χ weg, dann erhält man eine reine Funktion als Lösungsfunktion: d g l = D S o l v e [ y ' [ x ] == y [ x ] , y , x ]
13 Differentialgleichungen
{ {y
275
(E#1C[1]&)}}
Dies hat zwar den Nachteil der Unübersichtlichkeit, hat dafür aber den Vorteil, daß man beim Weiterrechnen nicht nur die Lösungsfunktion y(x), sondern auch deren Ableitungen benutzen kann. Dies wird in den nächsten beiden Eingabezeilen klar: Zuerst wird eine Klammerebene entfernt und die Konstante willkürlich auf den Wert 1 gesetzt. In der zweiten Eingabezeile wird die Lösung der Gleichung y'(x)=2 berechnet. dgl = Flatten[dgl] / . C [ l ] -> 1 { y - » (E* 1 1&)} Solve [y· [χ] ==2 / . dgl, χ] //Ν
{ { χ —» 0.693147}}
Bsp. 3: Eine geringfügige Erweiterung des zweiten Spezialfalls ergibt den Fall 3: y'(x)=a y(x):
Remove [ f , y , a ] Clear [χ, y , a] f [x_, y_] := a
y [x]
d g l = D S o l v e [ y * [ x ] == f [ x , y ] , y [ x ] , x ] { { y [ x ] -» E a x C [ l ] } } Die Lösung dieser Differentialgleichung lautet also in üblicher mathematischer Notation: y(x)=c eax. Wir lösen nun ein sogenanntes Anfangswertproblem, bei welchem der Wert der zu bestimmenden Lösungskurve y(x) an einer Stelle xo (z.B. xo=0 ) vorgegeben wird.
276
13 Differentialgleichungen
Dies kann bei der mathematischen Beschreibung natürlicher Prozesse durch physikalische Rahmenbedingungen gegeben sein. Dadurch wird auch die Integrationskonstante festgelegt, denn es ist in unserem Beispiel c=y(0), wie man an der allgemeinen Lösimg y(x)=c eax sofort durch Einsetzen von x=0 erkennt. Danach zeichnen wir die Lösungskurve des Anfangswertproblems fur die Wahl a=-2 und anschließend für a=+2 im Bereich x=0 bis 5. Beachten Sie bitte, wie die Anfangsbedingung y(0)=l in die „Dsolve"-Anweisung eingeht. AWP = DSolve[ { y ' [χ] == f [ χ , γ ] , y [ 0 ] == 1}, y [ x ] , x] / / Flatten {y[x]
Eax}
y[xJ=yW /· AWP Eax
a = -2 - 2
yW E
- 2 X
P l o t [ y [ x ] , {x, 0, 5}, P l o t R a n g e - > { { - 0 . 1 , 5>, { - 0 . 1 , 1.2>>]
13 Differentialgleichungen
277
a = +2 2 Υ[*] e 2X
P l o t [ y [ x ] , {χ, 0, 2}, PlotRange -> {{-0.1, 2},
0.5
1
1.5
{-0.1,10}}]
2
Bsp.4.: Im nächsten Beispiel lösen wir ein ähnliches Anfangswertproblem, allerdings ist der Koeffizient a von y(x) jetzt keine Konstante, sondern eine Funktion von χ Remove [f, γ, a] Clear [χ, y, a]
278
13 Differentialgleichungen
AWP = DSolve [ { y · [ χ ] == a [ x ] y [ χ ] , y [0] == 1} , y [ χ ] , χ ] / / Flatten {y [Χ]
[DSolve^t] dDSolve^tj
y [ x _ ] = y [ x ] / . AWP EJ0
x
a [DSolvevt] dDSolvest
Wir spezifizieren nun a(x), zum Beispiel: a [χ ] = - 2 χ Α 2 -2 χ 2
Wir erhalten somit eine spezielle Lösung, die wir nun zeichnen. y[x] 2x3 Plot[y[x],
{*, 0,
5},
PlotRange -> {{-0.1, 5}, { - 0 . 1 , 1.2}}]
13 Differentialgleichungen
279
Remove[f, y , a] Clear [χ, y , a] Bsp. S: Das nächste Beispiel zeigt ein Anfangswertproblem für eine lineare Differentialgleichung erster Ordnung, deren rechte Seite eine Funktion von χ darstellt (inhomogene Differentialgleichung) AWP = D S o l v e [ { y ' [ x ] + 2 y [ x ] = = - x A 2 , y[0] = = i > , y [ χ ] , χ] / / Flatten {y[x] -» - J E"2x (-5 + E 2x -2E 2x X + 2E2xX2)} y [ x _ ] = y [ x ] / . P&TP E"2x (-5 + E 2x - 2 E 2x χ + 2 E 2x χ 2 ) y[x] e~2x ( - 5 + E 2 x - 2 E 2 X X + 2E2XX2)
P l o t [ y [ x ] , {χ, 0 , 5 } , P l o t R a n g e - > { { - 0 . 1 , 6 } , { - 1 0 , 2}}]
Bsp.6: Wir betrachten nun eine Differentialgleichung, die wir numerisch lösen wollen. Dieses Problem tritt dann auf, wenn die
280
13
Differentialgleichungen
Differentialgleichung keine exakte Lösung besitzt. Denken Sie an folgendes Beispiel: Die Raumfahrt steht vor dem Problem eine Raumsonde zielgenau zu einen Planeten des äußeren Sonnensystems zu bringen. Die Bewegung der Sonde wird durch ihren Antrieb und das Gravitationsfeld der Planeten beeinflußt, aber auch durch ReibungsefFekte, wie Sonnenwind, interplanetaren Staub und so weiter. Hohe Genauigkeitsanforderungen an die Bahn erfordern möglichst gute Kenntnisse der äußeren Bedingungen und deren Berücksichtigungen im System aller Differentialgleichungen, die die Kräfte bestimmen. Dieses System hat maximal fur drei Körper im Raum und nur unter gewissen Einschränkungen noch eine exakte Lösung. Bereits bei Berücksichtigung eines zusätzlichen Körpers oder anderer Einflüße ist eine exakte Lösung der Differentialgleichungen nicht mehr möglich. Hier muß man numerische Methoden einsetzen. Unter Berücksichtigung der augenblicklichen Position und Geschwindigkeit, sowie momentaner Reibungseffekte, wird mit kurzer Schrittweite ein neuer Werte für die nächste Position und Geschwindigkeit errechnet. Diese werden mit Meßdaten verglichen, gegebenenfalls korrigiert und als Ausgangspunkt für die nächste Berechnung angenommen. Die Differentialgleichungen für dieses Problem sind zwar von zweiter Ordnung, aber grundsätzlich trifft diese Vorhenhensweise bei allen numerischen Verfahren zu: Man tastet sich bei numerischen Lösungen schrittweise auf einer Lösungskurve (Bahnkurve) voran, bis zum gewünschten Endpunkt der Integration. In diesem Beispiel lösen wir das Anfangswertprobelm für die Differentialgleichung y'(x)=x*y(x), mit zwei verschiedenen Anfangswerten, einmal y(0)=l und dann für y(0)=4 , wobei jedesmal für χ der Bereich von x=0 bis 2 gilt. Wir erhalten also zwei Lösungskurven, zu jedem Anfangswert eine. Mathematica liefert keine geschlossene Formel, sondern nennt die numerische Lösung einfach „InterpolatingFunction" Mit dieser erhält man Zahlenwerte der numerischen Lösung durch Einsetzen von x-Werten und kann diese auch zeichnerisch darstellen.
13 Differentialgleichungen
R e m o v e C l e a r
[ f ,
y ,
[ χ ,
a ]
y ,
n u m l o e s l
a ]
-
N D S o l v e [ { y ' y [ x ] ,
{ { y [ x ]
{ χ ,
[ χ ] 0 ,
= = x *
y
[ χ ]
,
y [ 0 ]
= =
1 }
2 . } } ,
o ]
[
,
2 } ]
-»
I n t e r p o l a t i n g F u n c t i o n [ { { 0 . , χ ] } }
n u m l o e s 2
=
N D S o l v e [ { y ' y [ x ]
í { y [ x ]
,
{ χ ,
[ χ ] 0 ,
= = x *
y [ χ ]
,
y [ 0 ]
= =
4 } ,
2 } ]
->
I n t e r p o l a t i n g F u n c t i o n [ { { 0 . ,
2 . } } ,
< > ] [
χ ] } }
P l o t [ { E v a l u a t e [ y [ x ] E v a l u a t e [ y [ χ ] { χ ,
0 ,
2 }
,
/.
/ ·
n u m l o e s 2 ] } ,
P l o t S t y l e
{ R G B C o l o r [ 1 ,
0 ,
n u m l o e s l ] ,
0 ]
- > ,
R G B C o l o r [ 0 ,
14
12 10 /
0.5
1.5
0 ,
1 ] } ]
281
282
13 Differentialgleichungen
Bsp. 7: Wir kommen nun zu Differentialgleichungen zweiter Ordnung. Bei diesen tritt also zusätzlich y"(x) auf. Wir betrachten den Fall einer homogenen linearen Differentialgleichung zweiter Ordnung mit konstanten Koeffizienten. Das soll heißen: die Gleichung ist linear, denn die Funktion y(x) und ihre Ableitungen treten nur in den ersten Potenzen auf und es gibt keine gemischten Produkte unter ihnen. Die Gleichung ist homogen, denn die rechte Seite der linearen Differentialgleichung, die im inhomogenen Fall eine Funktion von χ darstellt, ist hier Null. Remove[" Global*"] dgL = DSciLve[y' * [x] + ay» [x] +by[x] = 0, y [ x ] , x] {{y[x] -» E
| (-a-Va*-4b) x
C
[l]
+ E
7
(-aWaMb)x
c [ 2 ]
In üblicher mathematischer Notation lautet diese Lösung also:
Diese Art von Differentialgleichung tritt in der Physik häufig auf, und es ist nützlich zu wissen, wie man den Ansatz zur Lösung einer solchen Differentialgleichung wählen muß, wenn man diese nur mit Bleistift und Papier lösen möchte. (Trotzdem zeigen wir auch dies zu Bestätigung der Rechnungen unter Einsatz von Mathematica ). Man geht aus vom Ansatz y(x)=AeAx mit unbekannten und zu bestimmenden Parametern A und λ: y[x_]
:=A*Exp[JLx]
Daher erhält man für die Ableitungen:
13 Differentialgleichungen
283
y [χ] y " [χ] Α Εχλ λ ΑΕχΑλ2 Eingesetzt in die DifFerentialgleichnung folgt:
g = y" [χ] + ay' [χ] +by[x] // Factor Α Ε χ λ (b + a A + λ 2 ) Die rechte Seite der Differentialgleichung soll 0 sein, also versuchen wir Λ so zu bestimmen, daß die Gleichung erfüllt wird. Es ergeben sich die Lösungen aus einer quadratischen Gleichung;
loes = Solve [g == 0, Χ ] { { λ ^ Ι ( - a - V a 2 - 4 b ) j , [λ* I
(-a + Va2 - 4 b ) } }
{Λ1, Χ2} = Χ /. loes (-a-Va»-4b), j
(-a+Va*-4b)}
Wegen unseres Ansatzes erhalten wir zwei Lösungen der Form y l [ x _ ] = c l Exp [XI * x ] ; Y 2 [ * _ 1 = c 2 Exp [Λ2 * x ] ; Die allgemeine Lösung der Differentialgleichung lautet: y[x_] = yi [*] +y2[x] c l ET
)X
+ c 2 B
| (
) X
284
13 Differentialgleichungen
Daß diese tatsächlich die Differentialgleichung erfüllt, sieht man nach dem Einsetzen: y * ' [χ] + a y ' [ χ ] + b y [ x ] / / S i m p l i f y O
Bsp. 7b: Wegen ihrer Wichtigkeit bei pysikalischen Vorgängen soll die lineare Differentialgleichung zweiter Ordnung mit konstanten Koeffizienten noch einmal betrachtet werden, aber nun mit einer anderen Notation der Variablen und mit vorgegeben Werten für die konstanten Koeffizienten. Oft ist nämlich die Zeit t die unabhängige Variable und die abhängige Variable wird mit x(t) bezeichnet. Wir wollen im folgenden die Schwingungen eines Federpendels beschreiben. Eine Kugel hängt an einer Metallfeder. Ihre Ruhelage wird als Nullpunkt markiert. Dann wird die Kugel ein Stück aus der Ruhelage nach unten gezogen, bis zu einem Punkt xO. Wir lassen die Kugel los und infolge der Rückstellkaft der Feder bewegt sich die Kugel nach oben zurück. Infolge ihrer Trägheit schwingt sie über die Ruhelage hinaus, bis ihr Gewicht sie wieder nach unten bewegt. Wir erhalten eine Schwingung, die aber noch keine Reibungskräfte berücksichtigt. Eine solche Schwingung heißt harmonische Schwingung. Um die Gleichung für die Bewegung der Kugel angeben zu können, müssen wir folgende Gesetzmäßigkeiten kennen: Streckt man eine Feder innerhalb ihres formreversiblen Bereichs um die Strecke χ gemessen von einem Nullniveau aus, so ist die rücktreibende Kraft nach dem Hook'sehen Gesetz linear in x: Das Hook'sche Gesetz lautet: K = -D- x(t). Die in der Literatur mit D bezeichnete Konstante heißt Federkonstante und hat die Dimension Kraft/Länge. Da bei Mathematica der D-Operator für die Differentiation vorbelegt ist und wir diese Konvention nicht außer
13 Differentialgleichungen
285
Kraft setzen wollen, wählen wir hier die Bezeichnung f für die Federkonstante. Diese rücktreibene Kraft bewirkt eine Beschleunigung der Kugel zur Ruhelage hin, für die nach dem Newtonschen Gesetz gilt „Kraft=Masse*Beschleunigung" . Wenn x(t) die Auslenkung der Kugel aus der Ruhelage zum Zeitpunkt t, x'(t) ihre Geschwindigkeit und x"(t) ihre Beschleunigung zu diesem Zeitpunkt darstellen, dann ··
lautet das Newton'sehe Gesetz als Formel Κ = m· x(t). (Statt der Ableitungsstriche schreibt man bei Zeitableitungen meist Punkte). Im reibungsfreien Fall gilt ··
m · x(i) = -D · x(t) Die Reibungskraft soll beispielsweise dadurch berücksichtigt werden, daß in unserem Versuchsaufbau die Kugel auf einer Unterlage reibt oder ein vergleichbarer Effekt die Bewegung der Kugel bremst. Reibungskräfte sind im allgemeinen proprotional zur Geschwindigkeit und ihr immer entgegengesetzt: Κ = -k- x(t) . Insgesamt gilt für die Bewegungsgleichung bei Reibung: ·· vorhandener · m · x(t) + k • x(t) + f · x(t) = 0 Wir formulieren die Gleichung mit Mathematica, zunächst ohne den Reibungsterm, das heißt für k=0. Die anderen Konstanten seien jetzt gleich 1. Remove["Globar J m=l;
k=0; f=l; DSolve[{m x"[t]+k x'[t]+f x[t]==0, x [ 0 ] = l , x'[0]=0} ,x[t], t] {{X[t]
C03 [ t]} }
286
13 Differentialgleichungen
Für diese Werte der Koeffizienten m, k, f und die Anfangswerte für den Ort x(t) sowie die Anfangsgeschwindigkeit x'(t) ergibt sich als Lösung x(t)=cos(t) x[tJ-x[t]/.Flatten[%] Cos [t] Plot[x[t],{t,0,10},PIotRange->{{-l,10},{-l,2}}]
Das nächste Bild soll Ihnen die Animationsmöglichkeit für Grafiken in Mathematica demonstrieren. Geben Sie die folgenden Zeilen sorgfaltig ein. Nach deren Ausführung erscheint auf dem Bildschirm eine Folge von Grafiken und am Ende die mehrzellige Ausgabe „Graphics" (wir zeigen aus Platzgünden nur zwei der Grafiken). Gehen Sie nun zurück mit der Bildschirmanzeige, bis Sie eine der Grafiken in der Bildmitte sehen. Nun müssen Sie alle (!) Grafiken markieren, indem Sie mit der linken Maustaste die Zellenklammer an der rechten Bildseite anklicken, die alle Grafik umfasst (nicht die innerste für die Einzelgrafik). Über die Menüfolge „Cell->Animate Selected Graphics" (oder die Tastenkombination Strg und y) wird die Grafik bewegt. Der rote Punkt stellt unsere Kugel dar, die sich, dem Bewegungsgesetz folgend, auf und ab bewegt. Der grüne Punkt stellt den zeitlichen Verlauf der Bewegung längs einer waagrecht verlaufenden Zeitachse dar. Die „Buttons" am unteren Fensterrand des
13 Differentialgleichungen
Mathematicafensters dienen u.a. Verlangsamung der Animation.
der
Beschleunigung
Needs [" Graphics" Master'"] Bildl= Tablel Show[ Graphics [
{
{PointSize[0.02] ,Hue[ 1 ],Point [ {0,x [t]} ]}, {PointSize[0.02],Hue[0.35],Point[{t,x[t]}|}, Line[{{0,0},{25,0}}] PIotRange->{ {-1,25},{-1.5,1.5} } ]
]
,{t,0, 7*Pi, 0.2}]
287
oder
288
13
Differentialgleichungen
Als Aufgabe lösen Sie bitte dieses Problem mit einem nicht verschwindenden Reibungsterm und testen Sie die Animation der zugehörigen Grafik Bsp.8: Das folgende Beispiel zeigt die Lösung einer inhomogenen linearen Differentialgleichung zweiter Ordnung: Remove["Global*"] DSolvef x A 3 y ' ' [x] + 3 x A 2 y ' [x] + x y [ x ] = = 6 L o g [ x ] , γ[χ], {{y[x]
x] Log[x] 3 X
|
C [1] + C [2] Log [χ] ^ X
Bsp.9: Wir kommen nun zu den Differentialgleichungssystemen. Gleichzeitig sollen Sie lernen, wie man aus einer Differentialgleichung höherer Ordnung ein System von Differentialgleichungen erster Ordnung gewinnen kann. Das hat in der numerischen Mathematik oft den Vorteil, daß man Lösungsmethoden, die für Differentialgleichungen erster Ordnung programmiert wurden, ohne großen Aufwand auch zur Lösung von Differentialgleichungen höherer Ordnung verwenden kann, wenn man diese in ein System umgewandelt hat.
13 Differentialgleichungen
289
Der Einfachheit halber wandeln wir eine Differentialgleichung zweiter Ordnung in ein System von zwei Gleichungen erster Ordnung um. Allgemein ergeben sich η Gleichungen erster Ordnung, wenn man eine einzelne Differentialgleichung η-ter Ordnung umwandelt. Es sei also jetzt die Gleichung y"(x)+a*y'(x)+b*y(x)=0 gegeben. Wir machen folgenden Ansatz, den man leicht für Gleichungen höherer Ordnung verallgemeinern kann: yi(x) = y(x), y2(x) = y'(x). Dann folgt daraus yi'(x) =y'(x) = y2(x) und y 2 '(x)=(y')-y"(x)=-a*y'(x)-b*y(x)= -a y2(x) - b yi (x). Insgesamt haben wir das System fur die zwei gesuchte Funktionen yi und y2 yi'(x) = Y2 (x) y 2 '(x) = - a y 2 (x)-b yi(x) Wir lösen das Anfangswertproblem für das System zum Beispiel für a=l und b=l, sowie den Anfangswerten yi(0)=l und y2(0)=0. In der „DSolve"-Anweisung stehen die beiden Differentialgleichungen, gefolgt von den beiden Anfangsbedingungen als Liste an erster Stelle in der eckigen Klammer. Dann folgt eine Liste der beiden im System auftretenden gesuchten Funktionen, und schließlich die unabhängige Variable x. Die Lösung soll in möglichst einfacher Form (//Simplify) und bereinigter Klammernzahl (//Flatten) ausgegeben werden.
Remove[" Global*"] a=l; b=l; d g l = DSolve [ { y l ' [ x ] == y 2 [ x ] , y 2 ' [ x ] == - a y 2 [ x ] - b y l [χ] , y l [ 0 ] == 1 , y2[0] = = 0 } , { y l [χ] , γ 2 [X] } , X] / / S i m p l i f y / / F l a t t e n
290
13 Differentialgleichungen
(_L)L/3
{yi[x]
Ε
-(-1)1/3Χ
[
χ
]
Ε
,2/3, (-1)^Χ
1 + (-1) 1/3 - l i / . (-E - ' \ ! / ' v +„ f E' ' 1î t/ ^3 1+ ( - 1 ) 3
( — 1) υy 2
+
-»
-
—
-
—
2
3
) . };
{ f l [ x ] , f 2 [x ] } = { y l [ x ] , y 2 [ x ] } / . % ( _
1 )
1 / 3
E
- ( - 1 ) ^ X
+
E
,2/3, (-1)
1 + (-I)1/3
i
1+
(-1)
1/3
}
P l o t [ { f l [ x ] , f 2 [ x ] } , {x, 0 , 5}] 10.75 0.5 0.25
-0.25 -0.5
Der Leser möge sich nicht wundern, daß hier zwei Lösungskurven auftreten, wo doch die ursprüngliche Differentialgleichung zweiter Ordnung nur eine Lösung y(x) besitzt. Hier ist die eine Kurve yi(x) die gesuchte Funktion y(x) und die zweite y2(x) ist ihre Ableitung. Die beiden Gleichungen des Systems sind also nicht unabhängig. Das muß im allgemeinen nicht so sein, denn nicht jedes System stammt aus der Umwandlung einer Gleichung höherer Ordnung.
Bsp. 10.: Auch manche nichtlinearen Differentialgleichungen lassen sich mit Mathematica lösen. Bei der folgenden nichtlinearen Differentialgleichung erster Ordnung tritt y' als zweite Potenz auf, die Gleichung ist also vom zweiten Grad.
13 Differentialgleichungen
291
Remove["GIobar *"] DSolve[y' [χ] A 2 - x y ? [x] +y[x] == 0, y [ x ] , x] { { > « - > < 2 *+«l)}} Wir kommen nun zu einer kurzen Beschreibung, wie man einige Typen partielle Differentialgleichungen lösen kann. Für zwei unabhängige Variablen χ und y und die gesuchte Funktion u(x,y) schreibt sich eine partielle Differentialgleichung η-ter Ordnung so: ,..,uyw)
F{x,y,u(x,y),ux
= 0
Dabei bedeutet beispielweise ux die partielle Ableitung von u(x,y) nach χ und U x , y ( n " l x l ) die (n-l)-malige partielle Ableitung von u nach χ und einmalige partielle Ableitung nach y. Eine partielle Differentialgleichnung erster Ordnung in zwei Variablen lautet also allgemein F(x,y,
u(x, y), ux, uxy, uy ) = 0
und eine partielle Differentialgleichung zweiter Ordnung in zwei Variablen hat daher die Form rFix 2 = 20 u(x νΛ dx >—öy > dxdy » a* -^Λ \*'>ytuν \A'ySh ' dy > Betrachten wir einen ganz einfachen Fall: Zu lösen sei folgende partielle Differentialgleichung (PDG) erster Ordnung: =Q dx
Dazu geben wir in Mathematica ein: Remove[" Global' * "] pdg=D[f[x,y],x]=0 f (1,0) ^ y j __ Q Wir können auch hier wieder „TraditionalForm" anzeigen ρ,dg s
dx
==_0
diese Zeile
gleich
in
der
292
13 Differentialgleichungen
f ( 1 ' 0 ) [χ, y ] == O Nun die „DSolve"-Anweisung für die Lösung dieser einfachsten partiellen Differentialgleichung: DSolve[pdg, f[x,y], {x,y}] {{f [ χ , y ] ->C[1] [ y ] } } Die Lösung ist nun nicht eine Konstante C[l] wie bei gewöhnlichen Differentialgleichungen, sondern eine Funktion von y, die hier mit C[l][y] bezeichnet wird. Es ist klar, daß jede differenzierbare Funktion in y die Differentialgleichung erfüllt. Ähnlich ist die folgende partielle Differentialgleichung: Remove["Globar*"] ρ dg =
*/(«, du
r)
+
d/(u,
v)
== 0
dv
Wer die „InputForm" bevorzugt, mag eingeben: pdg = D[f[u, ν], u] + D[f[u, v], v] = 0 f ^ ' V [u, v] + f ( 1 ' 0 ) [u, ν ] == 0
DSolve [pdg, f [u, ν] , {u, v>] {{f [u, ν ]
C [1 ] [ - U + V ] } }
Die Lösung enthält hier eine beliebige differenzierbare Funktion von (v-u). Sie können als Übung diese Differentialgleichnung mit nicht verschwindender rechter Seite lösen, zum Beispiel könnte die rechte Seite lauten l/(u*v).
13 Differentialgleichungen
293
Ein Beispiel für eine partielle Differentialgleichung zweiter Ordnung ist die Wellengleichung, die die Ausbreitung einer Welle f mit der Geschwindigkeit c beschreibt. Wir berechnen die Lösung fur c=l: Remove["Global*"] c=l; DSolve L[d x , x f [ χ , t ] -
c2
Ô t , t f [ χ , t ] == 0 ,
f [ x , t ] , {χ, t } ] {{f[x, t] -> C[l] [t +x] +C[2] [ t - x ] } } Hier lautet die allgemeine Lösung φ(ί+χ)+ψ(ί-χ), wobei wir die Funktionen Cl und C2 zu Vermeidung von Zahlen im Funktionsnamen mit φ bzw. ψ bezeichnet haben. Numerisch kann man das Anfangswertproblem für die Wellengleichung wie folgt berechnen. Dabei seien f(x,0) und ft(x,0) vorgegebene Funktionen: Remove["Globalx *"] c=l; pdg = HDSolve||d X(X f [x, t ] - a
t ( t
f [ X f t ] ==0,
f [ x , 0] ==Εχρ[-χ Λ 2], Derivative[0, 1] [f] [x, 0] ==0, f [ - 5 , t ] ss f [5, t ] } , f , {x, -5, 5}, { t , - 5 , 5}]
{{f
I n t e r p o l a t i n g F u n c t i o n [ { { - 5 , 5 . } , { - 5 . f 5.}}, ]}}
Plot3D [Evaluate[f [χ, t ] / . First[pdg] ], {χ, -3, 3}, {t, 0, 3}, PlotRange ->Autoaatic, PlotPoints ->30]
294
13 Differentialgleichungen
14 Laplace-Transformation
295
14 Laplace-Transformation Die Laplace-Transformation trägt den Namen des französischen Mathematikers, Physikers und Astronomen Pierre Simon Marquis de Laplace (1749 bis 1827). Laplace hat die Laplacetransformation nicht selbst entwickelt, sondern hat diese sehr häufig bei seinen wahrscheinlichkeitstheoretischen Untersuchungen angewandt. Aufgrund seiner großen Verdienste wurde diese Transformation nach ihm benannt. Die Laplacetransformation gilt als Verallgemeinerung der Fouriertransformation.
14.1 Definitionen und Sätze Die Laplacetransformation stellt eine Funktionentransformation dar, welche der Funktion f(t) (t e R+o) die Funktion F(s) zuordnet. Das Argument s kann hierbei sogar komplex sein, wir betrachten aber nur den Spezialfall reellwertiger Argumente und verzichten auf weiter funktionentheoretische Untersuchungen. 00
¿{f(t»=F(s)= J e _ l t f ( t ) d t o Laplaceintegral
*
»
'
Falls F(s) für mindestens ein s existiert, dann kann ein Konvergenzbereich Kf angegeben werden, mit Kf = (σ, qo) oder Kf = [σ, αο) (die Stelle s = σ muß dann speziell untersucht werden). F(s) = X{f(t)} mit s e Kf heißt dann die Laplacetransformierte von f(t). Beispiele: Gesucht ist die Laplacetransformierte F(s) der folgenden Funktionen m.
296
14 Laplace-Transformation
F[s_J := Evaluate [ I n t e g r a t e [ f [ t ] * E ç [ - s t ] , { t , 0 , I n f i n i t y } , GenerateCcnditicns - > False] ] f [ t ] := t F[s] 1 S2 f [ t ] := Cos[ t] F[s]
s 1+ S2 f [ t ] := Cos [ a t ] F[s] a a 2 + s2 Diese lassen sich aber auch direkt über die folgende MathematicaAnweisung bestimmen ( Das Symbol „ « " entspricht der Anweisung „Needs"): 18 0/0 133 Abbildung 162,311 Abbildungen 66, 91,250 abelsch 312 abgeschlossen 313 Ableitung zweite 38 Abs 13,216 absolut konvergent 140
Achsen 45 Achsenkreuz 61,75 Achsensymmetrie 152 achsensymmetrisch 147 Addition 9 AlgebraMnequalitySolve 136 AlgebraicManipulation 23 algebraische Struktur 205 allgemeine Lösung 97 Alternative 19 alternierend 141 AmbientLight 78 Amplituden 239 Anfangswertproblem 280,293 Anhang 91,308 anhängen 29 von Spalten einer Matrix 128 Animation 291 Animationsmöglichkeit 290 Antworten 8 Anzahl der Komponenten 68 Apart 25,158 Append 30 AppendRows 128 Apply 29,100 Approximation 264 ArcTan 14 Argumente 208 Array 87 Arrow 71 AspectRatio 48, 52,115,163 Assoziativgesetz 312 Asymptote 133,154 Aufgabe 127
Index
aufzählende Form 308 äußere Multiplikation 313 Axes 48 AxesLabel 48, 163 AxesOrigin 48 AxesStyle 49 Background 49 Basiclnput 44, 219 Bedingungen 18,19 Bereich 43,45 beschreibende Form 308 Beschriftung 49 Beschriftungen 48 Betrag 70 bijektiv 312 Bildschirmausschnitt 50 Bildvektor 92 Bogenlänge 229 Bogenmaß 72 Boxed 115 BoxRatios 115,179 Bruch 10 C[l] 276 C[l][y] 296 Calculus" Laplacetransform" 301 Cancel 24,132 Chop 16 Clear 14,15 CMYKColor 49 ColorOutput 49 ColumnForm 68 ColumnTake 102 ComplexExpand 211 Computeralgebrasystem 7 ConstrainedMax 193 ConstrainedMin 193 Contour-Plot 187
311
ContourPlot3D 54,61 Contours 185 ContourShading 185 ContourStyle 185 ConvertTo 38 Cos 14 Courier 50 Cross 74 D 38 Darstellungsmöglichkeit 43 Dashing 51 DefaultColor 49 définit 117 Definition einer Funktion 14 Definitionsbereich 131 Degree 72,208 Denominator 134, 156 Det 88 Determinante 88,220 Dezimalpunkt 9 DiagonalMatrix 84 Diagonalmatrizen 84 Dicke 49 Differentialgleichungen 274 Differentialgleichungen zweiter Ordnung 286 Differentialgleichungssysteme 292 Differentialquotient 146 Differenz zweier Mengen 309 differenzierbar 168 Differenzieren 38 Dimension 97 Dimensions 87 Direction 133 DisplayFunction 76,164 Distributivgesetz 312
312
Index
divergent 140 Division 9 Do 19,20,130 D-Operator 134,289 D-Operators 171 Doppelschleife 130 Drehung 50 dreidimensional 52 D Solve 274 Durchschnitt 309 Ebene 56 Eigenraum 112 Eigenschaften von Funktionen 160 Eigenvalues 112,178 Eigenvectors 112 Eigenvektoren 112, 122 Eigenwerte 112,178 Ein-Ausgabefenster 11 eineindeutig 311 Eingabe 8 Einheitsmatrizen 84 Einheitsvektoren 91 Element 29 Element der Liste 27 Elementares Rechnen 7 Elemente 80 Ellipse 51, 120 Enter-Taste 8 Entwicklungspunkt 196 Epilog 49 Error-Function 261 Ersetzungsregel 18 erweiterte Matrix 101 Esc 44,220 euklidische Länge 70 Eulersche Zahl 13 Evaluate 46, 76, 168
Existenz des Grenzwertes 140 Exp 13 Expand 23 Exponentialfunktion 142 Extremum 169 Extremwertaufgaben 174 Extremwerte 148 f(x,y) 162 f:Rn->Rm 170 f[x_,y_] 163 f ' 38, 147 Fl-Taste 11 Factor 24 False 49 Farbmodell 49 Federkonstante 288 Federpendel 288 Fehlerintegral 261 FilledPlot 215 Fills 215 FindRoot 251 Fit 265 Flächeninhalt 73,172 Flächenmoment 224 Flatten 27 Folge 135 FontSize 50 Formeln 23 Fourieranalyse 239 Fourierreihe 239 Fouriertransformation 299 Frame 49 FrameLabel 49 FrameStyle 49 FrameTicks 49 Frequenzen 239 FullOptions 50 Funktion 30, 162, 311
Index
reine 30 Funktionen 14 ganze Zahlen 309 ganzrationale Funktion 146 gebrochen rationale Funktion 131,152 gelittet 237 geometrische Reihe 142 Gerade 56 gewöhnliche Differentialgleichung 274 Gitternetzlinien 50 Gleichheitszeichen 20 Gleichungen 32 Gleichungssysteme 56 Global' * 57 Grad 72,274 Gradient 168, 171, 177, 201, 255 Grafik 43 Graph 163,311 Graphics 71 Graphics" ImplicitPlot' 194 Graphics" Master 207 Graphics3D 77 grau 49 Grautönung 49 GrayLevel 49 Grenzübergang 132 Grenzwert 131,147 GridLines 50 griechische Buchstaben 44 Groß/Kleinschreibung 11 Größe 50 grün 45 Grundrechenarten 9 Gruppe 312 harmonische Schwingung 288
313
Hauptachsen 120 Hauptdiagonale 84, 256 Hauptnenner 24 Help 11 Hesse-Matrix 169, 183,201, 255 HiddenSurface 115 Hilfen 11 Hintergrund 49 Höhenlinien 185, 194,256 homogen 97 Hook'sches Gesetz 288 Hue 45 i 205 I 205 Identity 76 IdentityMatrix 84 If 19, 100 Im 206 imaginäre Einheit 205 Imaginärteil 206 ImplicitPlot 51 implizit 51 In[l]:= 9 Inhaltsverzeichnis 5 inhomogen 97 inhomogene Differentialgleichung 283 inhomogene lineare Differentialgleichung zweiter Ordnung 292 injektiv 311 Integral 215 Integrate 42, 216,275 Integration 41 Integrationsgrenzen 237 Integrationskonstante 275 Integrationsweg 237
314
Index
Integrieren 38 InterpolatingFunction 284 InterpolatingPolynomial 271 Interpolation 264, 269, 270 InterpolationOrder 270 Inverse 87 inverses Element 312 Inversion 87 invertierbar 88 Iterationsschritt 250 Jakobi-Matrix 171,252 Kern 97 Kettenregel 39 Klammer 33 Klammerung 10 Koeffizienten 241 Koeffizientenschema 66 Kommentar 239 Kommentare 29 kommutativ 89,312 Kommutativgesetz 312 komplexe Zahlen 309 Komplexe Zahlen 205 Komponenten 67 konjugiert-komplexe Zahl 206 Konvergenzordnung 250 Konvergenzradius 142 Körper 205, 312 Kosinus 72 Kreis 52 Kreuzprodukt 73 Kurvendiskussion 146 kürzen 24, 132 Lagrange-Funktion 188 Laplace'scher Entwicklungssatz 88 Laplacetransform 301 Laplace-Transformation 299
Laplacetransformierte 299 leer 59 Leerzeichen 44 Leibniz-Kriterium 140 Length 68,100 Limit 131 Line 76 linear 91 linear kombinieren 97 LinearAlgebra' MatrixManipul ation 127 lineare Abbildung 91 Lineare Algebra 56 lineare Differentialgleichung erster Ordnung 283 Lineare Optimierung 193 lineare Unabhängigkeit 96 linearer Raum 205 Linearfaktor 132 Linearfaktoren 147 LinearSolve 99 Liste 27 ListPlot 264 Log 13 lokales Maximum 148 lokales Minimum 148 Löschen definierter Funktionen 15 Löschen einer Zelle 10 Lösung 276 Map 31, 185 Map-Anweisung 30 Master 51 Mathematica-Kera 9 Matrix 66, 79 Matrixelemente 86 MatrixForm 79, 87 Matrixmultiplikation 83,92
Index
Matrixpotenz 84 MatrixPower 84 Matrizen 29, 66 Matrizenprodukt 83 Max 30 Maximum 148, 173 Mehrfache Integrale 218 Mengen 308 Mesh 115 Messwerte 264 Methode der kleinsten Quadrate 265 Min 30 Minimum 148 Miscellaneous" RealOnly 213 Mischfarben 45 monoton 136 Motivation 56 Multiplikation 9 Ν 10,12 Namen 27 natürlichen Zahlen 309 NDSolve 275 Nebenbedingung 172 Nebenbedingungen 186, 193 Needs 51 Nennerpolynom 132 NestList 251 neutrales Element 312 Newton-Raphson 255 Newtonsches Gesetz 289 Newton-Verfahren 250 NfourierTrigSeries 239 nichtlineare Anpassung 267 nichtlineare Differentialgleichungen 294 NIntegrate 259,261 Niveau 54
315
NonlinearFit 267 Norm 70 Normal 197 Notation 11 η-te Ableitung 147 Nullfolge 140 NullSpace 100 Nullstelle 32 Nullstellen 147 Nullvektor 96 Numerator 134,157 numerisch 28, 284 Numerische Integration 259 Numerische Verfahren 250 0[x] 197,259 oder 137 Operator 18 Ordnung 274 Ortsvektoren 76 Out[l]= 9 Outer 171 Palette 22 parallel 59 Parallelogramm 73 Parameter 63 Parameterdarstellung 52,230 ParametricPlot 52 ParametricPlot3D 53,233 Part 25 Partialbruchzerlegung 156 partiell 274 partielle Ableitung 168 partielle Differentialgleichungen 295 Partition 81 PDG 295 Periode 244 Pi 12
316
Index
Plot 39,48 Plot3D 53 PlotLabel 50 Plot-Optionen 44 PlotPoints 163 PlotRange 46,50 PlotRegion 50 PlotStyle 45 Plus 29, 100 Pol 153 Polarkoordinaten 220 Polstellen 132 PolynomialQuotient 157 PolynomialRemainder 157 positiv définit 116 Postfixform 12,13 Potenz 56, 85 Potenzen 18,28 Potenzierung 9 Potenzreihe 196 Print 20 Product 22 Produkt 22, 83, 309 Produktregel 39 Punktsymmetrie 152 quadratisch 89 quadratische Form 113,180 quadratische Gleichung 34 Quotientenkriterium 140 Quotientenregel 39 R(n,x) 198 Random 266 Rang 97 Raumkurve 53 Re 206 Realteil 206 reelle Zahlen 309 Regelliste 32
Regressionsgerade 265 reguläre Matrizen 88 Reibungskräfte 288 Reihe 139 Reihenentwicklung 259 reine Funktion 278 Remove 15 Restglied 198 Restriktionen 194 RGBColor 45, 49 Richtungsfeld 277 Richtungsvektor 76 Richtungsvektors 105 rot 45 RotateLabel 50 Rotationskörper 226 RowReduce 99 Rückstellkaft 288 Rundungsfehler 15,16 Sattelpunkt 178, 183 Scatterplot 234 Schleifen 20 Schnittpunkt 48, 58 Schnittpunkte 104 Schrifttyp 50 Schwerpunkt 222 ScientificForm 12 Seitenverhältnis 48 semidefinit 117 Semikolon 19,28 senkrecht 70 SequenceForm 20 Shift 11 Shifl-Taste 8 Show 41, 58 Simplify 25 Sin 14 singulär 88
Index
Skalare 313 Skalarprodukt 69 Slash Punkt 18 Solve 32, 58 Spalte 128 Spaltenvektor 66 Spaltenvektoren 79 Spaltenvertauschungen 82 spezielle Lösung 102 Sqrt 12 Stammfunktion 259 Startwert 251 Statistics'Master' 102 Stellen 13 StyleForm 50 substituiert 220 Subtraktion 9 Sum 22 Summe 22, 29, 70 suijektiv 311 Symmetrie 147 symmetrisch 224 System 36 Table 87 Table-Anweisung 28 TableForm 28, 87 Tan 14 Tangente 39 Tangenten 148 Tangentengleichung 40 Tangentenstück 277 Taschenrechner 8 Taste [AltGr] 14 Taylorpolynom 259,262 Taylor-Reihe 142,196 teilerfremd 132 Teilraum 313 Thickness 49,51
31 7
Ticks 49 Times 29 Together 25 TraditionalForm 295 Trägheit 288 transponieren 79 Transpose 79 TrigExpand 26 TrigReduce 26 trivial 97 True 49 Übungsaufgabe 65 Umkehrfunktion 227 Umwandlung 294 Unbekannte 56 unbestimmter Ausdruck 133, 134 Underline-Zeichen 14 Unendlich 132 ungerade Funktion 242 Ungleichungen 193 Union 29, 100 Unterraum 97, 313 Ursprung 76 u x 295 Variablennamen 14 Vektoren 29, 66, 313 Vektorpfeil 67 Vektorprodukt 73 Vektorraum 91,205,313 Venn-Diagramm 309 Vereinigungsmenge 29, 309 Verknüpfung 312 Version 3.0 7 Vertauschen 81 ViewPoint 163 Volumen 226 weiß 49
318
Index
Wellengleichung 297 Wendepunkt 148 Wendetangente 155 Wert 15 Winkel 70,208 Wurzelkriterium 141 Zahlenpaare 205 Zählerpolynom 131
Zählvariablen 20 Zeilen 66 Zeilenvektor 66 Zeilenvektoren 79 Zeitableitung 289 Zellen 9 Zufallszahl 266 Zuordnungsvorschrift 162
320
16 Literatur
16 Literatur [1] Ameling,W.: „Laplace-Transformation (für Naturwissenschaft und Technik)"; Vieweg [2] Doetsch,G. „Anleitung zum praktischen Gebrauch der LaplaceTransformation und der Z-Transformation"; Oldenbourg [3] Forster,Ο.:,.Analysis" (Bd. 1-3), Vieweg [4] Heuser,H.:"Gewöhnliche Differentialgleichungen"; Teubner [5] Joos Richter: „Höhere Mathematik für den Praktiker" J. ABarth [6] Kowalsky,H.-J.: "Lineare Algebra";De-Gruyter. [7] Lingenberg,R.:"Lineare Algebra", B.I. [8] Schuchmann,M.; Sanns,W.: „Statistik mit Mathematica", Oldenbourg [9] Spiegel,M R.: „Laplace-Transformationen Theorie und Anwendung"; Schaum's [10] Weber,H.: „Laplace-Transformation für Ingenieure der Elektrotechnik"; Teubner [11] Wolfram,S.: „Mathematica-Handbuch" Cambridge University Press