MuPAD — Eine praktische Einführung - Institut für Mathematik ...
MuPAD — Eine praktische Einführung - Institut für Mathematik ...
MuPAD — Eine praktische Einführung - Institut für Mathematik ...
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Kai Gehrs · Frank Postel<br />
<strong>MuPAD</strong> <strong>—</strong><br />
<strong>Eine</strong> <strong>praktische</strong> <strong>Einführung</strong><br />
<strong>Mathematik</strong> 1 x anders: Materialien und Werk-<br />
zeuge <strong>für</strong> computerunterstütztes Lernen<br />
SciFace Software
Kai Gehrs<br />
Frank Postel<br />
Universität Paderborn<br />
AutoMATH <strong>Institut</strong><br />
Warburger Straße 100<br />
33095 Paderborn<br />
schule@mupad.de<br />
<strong>MuPAD</strong> <strong>—</strong> <strong>Eine</strong> <strong>praktische</strong> <strong>Einführung</strong> / von Kai Gehrs und Frank Postel. <strong>Mathematik</strong> 1 x anders: Materialien<br />
und Werkzeuge <strong>für</strong> computerunterstütztes Lernen, Band 1. Paderborn: SciFace Software GmbH & Co. KG, 2001.<br />
ISBN 3-933764-02-5.<br />
1. Auflage: Februar 2001<br />
2. Auflage: Juni 2002, überarbeitete und erweiterte Auflage<br />
3. Auflage: März 2003, überarbeitete und erweiterte Auflage <strong>für</strong> <strong>MuPAD</strong> Pro 3.0<br />
ISBN 3-933764-02-5 SciFace Software GmbH & Co. KG Paderborn<br />
Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Verwertung außerhalb der engen Grenzen<br />
des Urheberrechtsgesetzes ist ohne Zustimmung der Firma SciFace Software GmbH & Co. KG unzulässig<br />
und strafbar.<br />
© 2001 SciFace Software GmbH & Co. KG, Paderborn<br />
Die Wiedergabe von Gebrauchsnamen, Handelsnamen, Warenbezeichnungen usw. in diesem Werk berechtigt<br />
auch ohne besondere Kennzeichnung nicht zu der Annahme, dass solche Namen im Sinne der Warenzeichenund<br />
Markenschutz-Gesetzgebung als frei zu betrachten wären und daher von jedermann benutzt werden dürfen.<br />
Printed in Germany<br />
Druck und Binden: Druckerei Kleine, Paderborn<br />
Einbandgestaltung: SciFace Software GmbH & Co. KG, Paderborn
Vorwort<br />
Die Entwicklung von <strong>MuPAD</strong> begann 1990 an der Universität Paderborn mit<br />
einem Forschungsprojekt zur Lösung spezieller Problemstellungen im Bereich<br />
der Dynamischen Systeme. <strong>MuPAD</strong> wurde jedoch sehr bald zu einem univer-<br />
sellen Werkzeug zum symbolischen und exakten sowie numerischen Rech-<br />
nen. Darüberhinaus können zwei- und dreidimensionale mathematische<br />
Sachverhalte in hoher Darstellungsqualität visualisiert und interaktiv mani-<br />
puliert werden.<br />
Die Entwicklung von <strong>MuPAD</strong> wurde bereits 1993 von der Forschungsge-<br />
meinschaft mit dem Deutsch-Österreichischen Hochschul-Software Preis und<br />
1994 mit dem European Academic Software Award honoriert.<br />
Im Februar 1997 wurde als Teilausliederung aus der Universität Pader-<br />
born das Unternehmen SciFace Software GmbH & Co. KG gegründet, um<br />
<strong>MuPAD</strong> in enger Kooperation mit der <strong>MuPAD</strong>-Forschungsgruppe weiterzu-<br />
entwickeln und den zunehmenden Anforderungen der Benutzer u.a. hinsicht-<br />
lich vielfältiger und mehrsprachiger Dokumentationen zum System und mo-<br />
dernen Benutzerschnittstellen gerecht zu werden.<br />
Forschungen aus der Universität werden von SciFace Software aufgegrif-<br />
fen, zu marktreifen Entwicklungen ausgebaut und in das System <strong>MuPAD</strong> in-<br />
tegriert. Aufgrund dieser erfolgreichen und engen Zusammenarbeit von Sci-<br />
Face Software mit der Universität Paderborn wurde das Unternehmen 1998<br />
mit dem Förderpreis des Technologie Forum Paderborn e.V. <strong>für</strong> hervorragen-<br />
de Leistungen auf dem Gebiet der Zusammenarbeit zwischen Wirtschaft und<br />
Wissenschaft ausgezeichnet.<br />
<strong>MuPAD</strong> wird u.a. zur Forschung und Lehre an Universitäten eingesetzt<br />
und findet mittlerweile auch verstärkt Einzug in den <strong>Mathematik</strong>unterricht<br />
der gymnasialen Oberstufe. <strong>MuPAD</strong> trägt dabei ergänzend und unterstützend<br />
zur Lehre von <strong>Mathematik</strong> bei.<br />
Das starke Interesse und die vielfältigen Tätigkeiten von SciFace Soft-<br />
ware in dem Bereich der Lehre von <strong>Mathematik</strong> zeigt sich auch an der engen<br />
Zusammenarbeit mit bedeutenden deutschen Verlagen und Herstellern von
Unterrichtssoftware mit dem Ziel, über gemeinsame Anstrengungen heraus<br />
Lösungen zu schaffen, den Schülern und Studenten u.a. einen interaktiven,<br />
explorativen Zugang zu mathematischen Sachverhalten und ein Web-<br />
unterstütztes Lernen zu ermöglichen.<br />
Schreiben Sie uns, wenn Sie Fragen oder Anregungen zum Thema „Mu-<br />
PAD in der Lehre“ haben. Nehmen Sie Teil an der Entwicklung einer moder-<br />
nen <strong>Mathematik</strong>software und senden Sie uns Ihre Vorschläge, Kritiken und<br />
Fragen an schule@mupad.de.<br />
Paderborn im Juni 2001<br />
Dr. Andreas Sorgatz,<br />
SciFace Software
Über dieses Buch<br />
Das vorliegende Buch ist aus einer Reihe von <strong>MuPAD</strong>-Notebooks entstanden,<br />
die als Kursmaterialien auf Lehrerfortbildungen und <strong>MuPAD</strong>-Kursen einge-<br />
setzt worden sind. Das hat sich nachhaltig auf den Stil ausgewirkt, in dem<br />
dieses Buches verfasst ist. Sehr häufig wird der Leser auch außerhalb der<br />
Übungsaufgaben dazu angeregt, selbst Hand anzulegen. Es empfiehlt sich<br />
daher, <strong>MuPAD</strong> beim Lesen dieses Buches stets in greifbarer Nähe zu haben.<br />
Das Buch soll einen schnellen und einfachen Zugang zum Computeralgeb-<br />
ra-System <strong>MuPAD</strong> bieten, insbesondere in Hinsicht auf dessen Einsatz <strong>für</strong> die<br />
Lehre in Schulen und Universitäten. Zu Beginn eines jeden Abschnittes ha-<br />
ben wir eine Tabelle mit den in dem jeweiligen Abschnitt neu behandelten<br />
<strong>MuPAD</strong>-Befehlen angeführt. Dort wird ganz kurz und stichpunktartig erklärt,<br />
wo<strong>für</strong> der Befehl nützlich ist. Wir haben uns in der Regel auf einfache Bei-<br />
spiele aus der Schulmathematik beschränkt, da nicht die <strong>Mathematik</strong>, son-<br />
dern das Arbeiten mit <strong>MuPAD</strong> im Vordergrund steht.<br />
Neben einer kurzen <strong>Einführung</strong> in den Umgang mit dem <strong>MuPAD</strong> Pro Note-<br />
book-Konzept stellen wir Ihnen vor, wie man Probleme aus der Analysis, der<br />
Linearen Algebra und der Stochastik mit einem Computeralgebra-System<br />
behandeln kann. Hier wird insbesondere auch auf grafische Möglichkeiten<br />
eingegangen, die <strong>MuPAD</strong> bietet – ein wichtiger Vorteil von modernen Com-<br />
puteralgebra-Systemen, der es sowohl dem Lehrer erleichtert, spezielle ma-<br />
thematische Sachverhalte anschaulich darzustellen, wie auch den Schüler<br />
darin unterstützt, die notwendige Anschauung und das überaus wichtige in-<br />
tuitive Verständnis von <strong>Mathematik</strong> weiterzuentwickeln.<br />
Das Buch basiert auf <strong>MuPAD</strong> Pro 2.0, das auf Windows-Betriebssystemen<br />
zur Verfügung steht. Insbesondere das Notebook-Konzept, das im ersten<br />
Kapitel behandelt wird, steht nur <strong>für</strong> <strong>MuPAD</strong> Pro zur Verfügung.
Sämtliche <strong>MuPAD</strong>-Eingaben und deren entsprechenden Ausgaben sind je-<br />
doch betriebssystemunabhängig und können somit auch mit <strong>MuPAD</strong> 2.0 un-<br />
ter Linux und MacOS bearbeitet werden.<br />
Zur zweiten Auflage<br />
Kai Gehrs<br />
Frank Postel<br />
Paderborn, Juni 2001<br />
In dieser zweiten Auflage der „Praktischen <strong>Einführung</strong> in <strong>MuPAD</strong>“ wurden<br />
einige kleinere Fehler ausgemerzt, die sich in der ursprünglichen Version<br />
eingeschlichen hatten. Inhaltlich sind alle bisherigen Abschnitte übernom-<br />
men worden. Leichte Modifikationen wurden in Kapitel 5 Abschnitt 4 vorge-<br />
nommen: Die Visualisierung der Binomialverteilung kann in der aktuellen<br />
Version <strong>MuPAD</strong> Pro 2.5 nun leichter erreicht werden als in der, in diesem<br />
Buch ursprünglich vorgestellten, <strong>MuPAD</strong> Version 2.0. Zusätzlich wurde in<br />
Kapitel 6 ein Beispiel zum Umgang mit dem neuen 3d-Viewer eingefügt. Alle<br />
anderen in der ersten Auflage beschriebenen Funktionalitäten stehen weiter-<br />
hin auch in <strong>MuPAD</strong> Pro 2.5 zur Verfügung.<br />
Kai Gehrs<br />
Paderborn, Mai 2002
Zur dritten Auflage<br />
Für die nunmehr dritte Auflage der „Praktischen <strong>Einführung</strong> in <strong>MuPAD</strong>“<br />
wurden alle Stellen in diesem Buch überarbeitet, an denen <strong>MuPAD</strong>-Grafiken<br />
erzeugt werden.<br />
Die neue Version <strong>MuPAD</strong> Pro 3.0 <strong>für</strong> Windows bietet eine vollständig neu<br />
entwickelte Grafik-Bibliothek, die es nicht nur erlaubt, mathematische Grafi-<br />
ken schöner und ästhetischer zu gestalten, sondern die gleichzeitig auch ei-<br />
ne Vielzahl neuer Möglichkeiten eröffnet: Ein wichtiger Bestandteil der neuen<br />
<strong>MuPAD</strong>-Grafik ist z.B., dass nahezu jedes graphische Objekt – sei es eine<br />
Gerade, ein Kreis oder etwa ein Rotationskörper – animiert werden kann.<br />
Koordinatensysteme in 2D werden nun standardmäßig mit Pfeilen an den<br />
Koordinatenachsen ausgestattet, vertikale Asymptoten von Funktionen kön-<br />
nen in Form gestrichelter Polgeraden angedeutet werden, Legenden an Mu-<br />
PAD Grafiken erlauben ein einfaches Zuordnen von verschiedenen Funktions-<br />
termen zu ihren Funktionsgraphen etc.<br />
Wenn man auch eigentlich ein ganzes Buch vom Ausmaß dieses Bandes<br />
zu dem Kapitel „Grafik in <strong>MuPAD</strong>“ schreiben kann, so soll hier dennoch in<br />
einem bescheidenen Rahmen auf die neue <strong>MuPAD</strong>-Grafik eingegangen wer-<br />
den. Erste elementare Animationen werden im letzten Kapitel des vorliegen-<br />
den Bandes vorgestellt, so dass die „Praktische <strong>Einführung</strong> in <strong>MuPAD</strong>“ auch<br />
in Sachen Grafik weiterhin einen schnellen und unkomplizierten Einstieg in<br />
die Fähigkeiten des Systems bietet. Dem darüber hinaus interessierten Leser<br />
empfiehlt das <strong>MuPAD</strong> in Schule & Studium-Team einen Blick in die in der On-<br />
line-Dokumentation von <strong>MuPAD</strong> 3.0 vorhandene „<strong>Einführung</strong> in die neue Mu-<br />
PAD Grafik“; dieses Dokument wartet mit vielen tollen Beispielen auf, die<br />
leider in diesem knappen Rahmen hier nicht diskutiert werden können.<br />
Kai Gehrs<br />
Paderborn, Februar 2004
Inhaltsverzeichnis<br />
Vorwort .........................................................................................3<br />
Über dieses Buch ............................................................................5<br />
Inhaltsverzeichnis ...........................................................................9<br />
1. Arbeiten mit <strong>MuPAD</strong>-Notebooks unter Windows ............................9<br />
1.1 Was ist ein <strong>MuPAD</strong>-Notebook? .................................................9<br />
1.2 Speichern und Einladen von Notebooks................................... 11<br />
1.3 Ändern und Löschen in einer Region ....................................... 12<br />
2. Grundkurs Analysis ................................................................ 14<br />
2.1 Rechnen mit <strong>MuPAD</strong>............................................................. 14<br />
2.2 <strong>Eine</strong> klassische Funktionsuntersuchung ................................... 18<br />
2.3 Bestimmte und unbestimmte Integration ................................ 25<br />
2.4 Ein Extremwertproblem ........................................................ 32<br />
2.5 Das Arbeiten mit <strong>MuPAD</strong>-Bibliotheken..................................... 35<br />
2.6 Hilfe, ich weiß nicht weiter ... ................................................ 36<br />
2.7 Differentialgleichungen – <strong>Eine</strong> Anwendungsaufgabe .................. 38<br />
3. Lineare Algebra ..................................................................... 40<br />
3.1 Erstellen von Matrizen .......................................................... 40<br />
3.2 Zeilen- und Spaltenzahl einer Matrix....................................... 42<br />
3.3 Zugriff auf die Einträge einer Matrix ....................................... 42<br />
3.4 Elementare Matrixrechnung................................................... 44<br />
3.5 Weitere Tipps zur Eingabe von Matrizen .................................. 47<br />
3.6 Über den Koeffizientenbereich von Matrizen............................. 48<br />
4. Die linalg-Bibliothek ............................................................... 50<br />
4.1 Lineare Abhängigkeit und Unabhängigkeit von Vektoren............ 52<br />
4.2 <strong>Eine</strong> Anwendung aus der Analytischen Geometrie ..................... 55<br />
5. Kombinatorik und Wahrscheinlichkeitsrechnung ......................... 58<br />
5.1 Kombinatorische Berechnungen ............................................. 58<br />
5.2 Simulation einfacher Laplace-Experimente............................... 60<br />
5.3 Relative Häufigkeiten und das Gesetz der großen Zahlen ........... 62<br />
5.4 Berechnung der Binomialverteilung ........................................ 64
6. Grafiken in <strong>MuPAD</strong> leicht gemacht ............................................ 68<br />
6.1 Funktionsgraphen ................................................................ 69<br />
6.2 Beispiele im Umgang mit der Plot-Bibliothek ............................ 74<br />
6.3 <strong>Eine</strong> Anwendung – Modellierung eines Strahlers ....................... 79<br />
6.4 Grafik-Gallerie..................................................................... 86<br />
6.5 Einfache Animationen ........................................................... 88<br />
7. <strong>MuPAD</strong> in Schule und Studium ................................................. 95<br />
Literaturverzeichnis ....................................................................... 96
Arbeiten mit <strong>MuPAD</strong>-Notebooks unter Windows 9<br />
1. Arbeiten mit <strong>MuPAD</strong>-Notebooks unter<br />
Windows<br />
1.1 Was ist ein <strong>MuPAD</strong>-Notebook?<br />
Ein <strong>MuPAD</strong>-Notebook präsentiert sich als ein Arbeitsblatt, das aus<br />
verschiedenen Absätzen besteht, die Text, mathematische Formeln,<br />
<strong>MuPAD</strong>-Eingaben, <strong>MuPAD</strong>-Ausgaben und Grafiken enthalten können.<br />
In einem <strong>MuPAD</strong>-Notebook handelt es sich bei Absätzen mit einem<br />
Punkt • vor dem Text (gewöhnlich in roter Farbe) um <strong>MuPAD</strong>-<br />
Eingaben, sogenannte Eingaberegionen. Befindet sich der Cursor in<br />
einer solchen Region, so wird im rechten Teil der <strong>MuPAD</strong> Pro - Sta-<br />
tuszeile der Text „Eing, ite“ angezeigt.<br />
Absätze, die direkt unterhalb von <strong>MuPAD</strong>-Eingaben stehen und<br />
gewöhnlich in blauer Farbe erscheinen, sind <strong>MuPAD</strong>-Ausgaben. Solche<br />
Absätze werden im folgenden als Ausgaberegionen bezeichnet. Befin-<br />
det sich der Cursor in einer solchen Region, wird der Text „Ausg.“ im<br />
rechten Teil der <strong>MuPAD</strong> Pro - Statuszeile angezeigt.<br />
Schließlich gibt es noch Textregionen, d.h. Absätze, die gewöhnli-<br />
chen, formatierten Text enthalten. Sie erkennen solche Absätze wie-<br />
der an dem Eintrag in der <strong>MuPAD</strong> Pro - Statuszeile, dort erscheint die<br />
Kennung „Text“.<br />
Um eine <strong>MuPAD</strong>-Eingabe auszuführen (d.h. die Eingabe von Mu-<br />
PAD berechnen zu lassen), reicht es, den Cursor an einer beliebigen<br />
Stelle innerhalb des entsprechenden Absatzes zu platzieren und die<br />
-Taste zu drücken. Die zugehörige <strong>MuPAD</strong>-Ausgabe er-<br />
scheint unmittelbar darunter. Ein Beispiel:<br />
• 1/5 + 2/3 – 5<br />
− 62 <br />
15
10<br />
1.1 Was ist ein <strong>MuPAD</strong>-Notebook?<br />
Mit + ist es möglich, eine <strong>MuPAD</strong>-Anweisung<br />
über mehrere Zeilen zu erstrecken, ohne dass der jeweilige Teil der<br />
<strong>MuPAD</strong>-Anweisung sofort ausgewertet wird. Ein Beispiel:<br />
• 2+<br />
3+<br />
4+<br />
5+<br />
6+<br />
7<br />
27<br />
Es ist im Gegensatz zu früheren Versionen von <strong>MuPAD</strong> nicht mehr<br />
zwingend notwendig, eine <strong>MuPAD</strong>-Eingabe mit einem Semikolon ab-<br />
zuschließen. Das Semikolon dient jetzt nur noch zur Trennung von<br />
Anweisungen, die über mehrere Zeilen verteilt in einem Eingabe-<br />
Absatz oder innerhalb von Prozeduren stehen.<br />
<strong>Eine</strong> <strong>MuPAD</strong>-Eingabe kann auch durch einen Doppelpunkt „:“ ab-<br />
geschlossen werden. Dann wird die Berechnung zwar ausgeführt, a-<br />
ber das Ergebnis nicht auf dem Bildschirm ausgegeben. Probieren Sie<br />
es aus, indem Sie z.B. die Anweisung sin(1.4123) einmal ohne,<br />
einmal mit einem Doppelpunkt abschließen.<br />
Sie können auch mehrere Anweisungen hintereinander in einem<br />
<strong>MuPAD</strong>-Eingabeabsatz eingeben:<br />
• f:= sin(x): F:= int(sin(x), x); diff(F, x)<br />
−cos x <br />
sin x <br />
Dabei müssen die Anweisungen mit dem Semikolon getrennt werden,<br />
wenn die Ergebnisse der Anweisungen auf dem Bildschirm erscheinen<br />
sollen.
1 Arbeiten mit <strong>MuPAD</strong>-Notebooks unter Windows<br />
1.2 Speichern und Einladen von Notebooks<br />
Wie in einem gewöhnlichen Textverarbeitungssystem lassen sich No-<br />
tebooks abspeichern und später wieder einladen. Zum Speichern von<br />
Notebooks stehen die Einträge „Speichern“ und „Speichern unter...“<br />
aus dem Menü „Datei“ zur Verfügung. Geben Sie Ihrem Notebook ei-<br />
nen Namen und bestätigen Sie das Speichern (<strong>MuPAD</strong>-Notebooks tra-<br />
gen die Dateiendung „.mnb“).<br />
Mit „Datei Öffnen...“ laden Sie ein <strong>MuPAD</strong>-Notebook ein. Sie kön-<br />
nen auch mehrere Notebooks gleichzeitig geöffnet halten, wobei je-<br />
des Notebook zu einer eigenständigen <strong>MuPAD</strong>-Sitzung gehört, d.h. sie<br />
kommen sich bei ihren Berechnungen nicht in die Quere.<br />
Tipps<br />
Unter „Datei/Exportieren...“ können Sie ein Notebook u.a. in das<br />
RTF-Format (Rich-Text-Format) abspeichern, das die gängigen<br />
Textverarbeitungssysteme unter Windows verarbeiten können.<br />
Damit können Sie Ihr Notebook beispielsweise in ein Microsoft<br />
Word-Dokument integrieren, sobald Sie Ihre Berechnungen mit<br />
<strong>MuPAD</strong> abgeschlossen haben. Da Microsoft Word unter anderem<br />
ein Exportieren von Dateien in das HTML-Format ermöglicht,<br />
können auf diese Weise auch <strong>MuPAD</strong>-Notebooks in HTML-<br />
Dokumente konvertiert werden.<br />
Auch der umgekehrte Weg funktioniert: Sie können ein Notebook<br />
mit Ihrer bevorzugten Textverarbeitung vorbereiten und im RTF-<br />
Format abspeichern. Dieses Dokument lässt sich dann unter „Da-<br />
tei/Öffnen“ einladen, indem Sie in dem „Datei/Öffnen“-Dialog als<br />
Dateityp „rtf“ einstellen.<br />
Unter dem Menü „Hilfe“ stehen Ihnen unter dem Eintrag „<strong>Einführung</strong>en“<br />
vorgefertigte Notebooks zur Einarbeitung in <strong>MuPAD</strong> zur<br />
Verfügung.<br />
11
12<br />
1.3 Ändern und Löschen in einer Region<br />
1.3 Ändern und Löschen in einer Region<br />
Wie in einem gewöhnlichen Textverarbeitungssystem lassen sich die<br />
Inhalte einer Region nachträglich ändern. Man kann Text einfügen,<br />
löschen, kopieren und vieles mehr. Auch Drag & Drop und Copy & Pa-<br />
ste sind möglich.<br />
Um neue Eingabe- und Textregionen einzufügen, gibt es die Ein-<br />
träge „Eingabe darüber (+)“, „Eingabe darunter<br />
()“, „Text darüber (+)“ und „Text darunter<br />
()“ in dem Menü „Einfügen“. Besonders hilfreich ist hierbei das<br />
Kontextmenü der Maus (drücken Sie die rechte Maustaste), mit dem<br />
Sie schnell auf die Befehle zum Einfügen von Regionen zugreifen<br />
können. Nach längerem Arbeiten empfiehlt sich zudem der Weg über<br />
Tastaturkürzel. So lässt sich mit der Taste eine neue Eingabe-<br />
region unterhalb der aktuellen Region einfügen.<br />
Zum Löschen von Regionen müssen Sie den Cursor an eine belie-<br />
bige Stelle innerhalb der zu löschenden Region platzieren und die Re-<br />
gion auswählen. Dies geschieht über die Taste oder über den<br />
Eintrag „Region auswählen“ aus dem Menü „Notebook“. Drücken Sie<br />
anschließend die Taste , oder wählen Sie aus dem Menü „Be-<br />
arbeiten“ den Eintrag „Ausschneiden“ aus. Seien Sie bitte vorsichtig<br />
mit dem voreiligen Löschen von Regionen. Es gibt keine Möglichkeit,<br />
ein unbeabsichtigtes Löschen rückgängig zu machen!<br />
Nach dem gleichen Prinzip lassen sich vollständige Regionen ko-<br />
pieren oder verschieben.<br />
Benötigen Sie Hilfe zur Bedienung von <strong>MuPAD</strong> Pro, so empfiehlt<br />
sich die Direkthilfe in der Symbolleiste oder die <strong>MuPAD</strong> Pro Hilfe, die<br />
Sie über den Eintrag „Hilfe Themen“ (+) aus dem Menü<br />
„Hilfe“ erreichen. Sie können hierzu auch auf das Fernglas-Symbol in<br />
der <strong>MuPAD</strong> Pro-Symbolleiste klicken.
Tipp<br />
1 Arbeiten mit <strong>MuPAD</strong>-Notebooks unter Windows<br />
Zum Durcharbeiten eines vorgefertigten <strong>MuPAD</strong>-Notebooks erscheint<br />
es angenehm, dass <strong>MuPAD</strong> nicht nach jeder ausgeführten<br />
Eingaberegion automatisch die Eingabe mit einer neuen<br />
Eingaberegion fortführt. Zum interaktiven Arbeiten mit einem<br />
eigenen Notebook mag man diese Funktionalität jedoch<br />
vermissen. Daher können Sie in dem Menü „Ansicht“ unter dem<br />
Eintrag „Optionen“ und der Registerkarte „Notebook“ einstellen,<br />
welches Verhalten Sie bevorzugen.<br />
13
14<br />
2.1 Rechnen mit <strong>MuPAD</strong><br />
2. Grundkurs Analysis<br />
Wir wollen nun <strong>MuPAD</strong> als Hilfsmittel <strong>für</strong> Berechnungen aus der Ana-<br />
lysis schätzen lernen.<br />
2.1 Rechnen mit <strong>MuPAD</strong><br />
Neue <strong>MuPAD</strong>-Funktionen<br />
sqrt Quadratwurzel<br />
float Gleitkommadarstellung <strong>für</strong> numerische Rechnun-<br />
gen<br />
DIGITS Anzahl der Nachkommastellen bei numerischen<br />
Berechnungen<br />
delete Löschen des Wertes einer Variablen<br />
expand Ausmultiplizieren von Ausdrücken<br />
normal Kürzen rationaler Ausdrücke<br />
simplify Vereinfachen von Ausdrücken<br />
In <strong>MuPAD</strong> können wir wie mit einem gewöhnlichen Taschenrechner<br />
rechnen:<br />
• 2 + 1/3 - 10*2^20<br />
− 31457273 <br />
3<br />
Der Unterschied zum Taschenrechner liegt darin, dass <strong>MuPAD</strong> mit<br />
beliebig langen Zahlen rechnen kann, deren Größe nur durch den zur<br />
Verfügung gestellten Hauptspeicher beschränkt ist. Ein Beispiel <strong>für</strong><br />
eine recht große Zahl liefert die folgende Eingabe:<br />
• 10^1000<br />
1000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000
2 Grundkurs Analysis<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
0000000000000000000000000000000000000000000000000000000<br />
00000000000<br />
Nun rechnet <strong>MuPAD</strong> nicht nur schnell und mit sehr großen Zahlen,<br />
sondern auch exakt. Exakte Berechnungen sind eine der wichtigsten<br />
Eigenschaften von <strong>MuPAD</strong>. Was aber bedeutet „exakt“?<br />
Berechnen wir beispielsweise 12 : Dazu benötigen wir den Befehl<br />
sqrt (square root, englisch: Quadratwurzel):<br />
• sqrt(12)<br />
2 ⋅ 3<br />
<strong>MuPAD</strong> hat offensichtlich die Vereinfachung 12 = 4⋅ 3 = 2⋅ 3 vorge-<br />
nommen. 3 kann <strong>MuPAD</strong> nicht weiter (exakt!) vereinfachen, da 3<br />
eine irrationale Zahl ist. D.h. ein (weitestgehend vereinfachter) exak-<br />
ter Wert von 12 ist 2 3.<br />
Um einen Näherung dieser Zahl auf 10 Nachkommastellen zu<br />
bestimmen, verwenden wir die Funktion float:<br />
• float(sqrt(12))<br />
3.464101615<br />
Ein weiteres Beispiel <strong>für</strong> eine exakte Berechnung liefert uns die<br />
folgende Eingabe:<br />
• cos(PI/2)<br />
0<br />
15
16<br />
2.1 Rechnen mit <strong>MuPAD</strong><br />
Hier taucht das Symbol PI auf, das die Zahl π in <strong>MuPAD</strong> reprä-<br />
sentiert. Viele <strong>MuPAD</strong>-Funktionen kennen dieses Symbol und können<br />
daher exakte Ergebnisse zurückliefern, wie im folgenden Beispiel:<br />
• sin(PI/3)<br />
<br />
3<br />
2<br />
Neben symbolischen und exakten Berechnungen kann <strong>MuPAD</strong><br />
auch numerisch rechnen, wie oben bereits gesehen. Bestimmte nu-<br />
merische Rechnungen können mit einer nahezu beliebigen Ge-<br />
nauigkeit erfolgen. So erhalten wir beispielsweise die ersten 1000 De-<br />
zimalstellen von π wie folgt:<br />
• DIGITS:= 1000: float(PI)<br />
3.14159265358979323846264338327950288419716939937510582<br />
0974944592307816406286208998628034825342117067982148086<br />
5132823066470938446095505822317253594081284811174502841<br />
0270193852110555964462294895493038196442881097566593344<br />
6128475648233786783165271201909145648566923460348610454<br />
3266482133936072602491412737245870066063155881748815209<br />
2096282925409171536436789259036001133053054882046652138<br />
4146951941511609433057270365759591953092186117381932611<br />
7931051185480744623799627495673518857527248912279381830<br />
1194912983367336244065664308602139494639522473719070217<br />
9860943702770539217176293176752384674818467669405132000<br />
5681271452635608277857713427577896091736371787214684409<br />
0122495343014654958537105079227968925892354201995611212<br />
9021960864034418159813629774771309960518707211349999998<br />
3729780499510597317328160963185950244594553469083026425<br />
2230825334468503526193118817101000313783875288658753320<br />
8381420617177669147303598253490428755468731159562863882<br />
3537875937519577818577805321712268066130019278766111959<br />
09216420199<br />
Die Variable DIGITS gibt an, mit wie vielen Stellen numerische Be-<br />
rechnungen durchgeführt werden sollen. Um nicht auch alle nachfol-<br />
genden Rechnungen mit einer derart hohen Genauigkeit auszuführen,<br />
setzen wir mittels der delete-Anweisung diese Variable wieder auf<br />
ihren Ursprungswert, d.h. den Wert 10 zurück:
• delete DIGITS:<br />
2 Grundkurs Analysis<br />
An diesem Beispiel haben wir darüberhinaus erkennen können, wie<br />
in <strong>MuPAD</strong> Werte an Variablen zugewiesen werden, nämlich über den<br />
Zuweisungsoperator := :<br />
• f:= sin(x)<br />
sin x <br />
Nach dieser Anweisung hat die Variable f den Wert sin(x). Den Wert<br />
einer Variablen liest man wie folgt aus:<br />
• f<br />
sin x <br />
Wollen wir die Variable f später <strong>für</strong> einen anderen Zweck verwenden,<br />
so können wir sie entweder einfach mit einem neuen Wert per Zuwei-<br />
sung belegen oder ihren Wert mittels der Anweisung delete löschen:<br />
• delete f:<br />
Besitzt eine Variable keinen Wert, so ist das Ergebnis ihrer Auswer-<br />
tung die Variable selber:<br />
• f<br />
f<br />
Mit solchen Variablen, d.h. Variablen ohne Wert, können beispielswei-<br />
se Unbekannte oder Parameter in Gleichungen repräsentiert werden.<br />
Sie werden festgestellt haben, dass die Funktion delete ange-<br />
wandt auf die Variable DIGITS den Wert von DIGITS nicht gelöscht,<br />
sondern auf ihren Ursprungswert zurückgesetzt hat. Solche Variablen<br />
werden Umgebungsvariablen genannt. Sie steuern global bestimmte<br />
Einstellungen <strong>für</strong> <strong>MuPAD</strong>.<br />
Tipp<br />
Sie haben mit der neu in <strong>MuPAD</strong> Pro angelegten „Befehlsleiste“,<br />
die Sie im oberen Fensterbereich sehen können, die Möglichkeit,<br />
17
18<br />
2.2 <strong>Eine</strong> klassische Funktionsuntersuchung<br />
bestimmte Befehle direkt in Ihre Eingaberegion einzufügen. Kli-<br />
cken Sie beispielsweise auf das Symbol π ≈ 314 , ..., so wird der<br />
Text float(%?) an die Stelle Ihres Cursors eingefügt. Nun brau-<br />
chen Sie nur noch die mit %? gekennzeichneten Stellen wie in ei-<br />
nem vorgefertigten Formular auszufüllen. Mit der Tabulatortaste<br />
können Sie übrigens bei Funktionen, die mehrere Argumente er-<br />
warten, direkt auf die mit %? gekennzeichneten Stellen springen.<br />
Übungen<br />
Berechnen Sie 27 − 4 3 und cos π d 8i<br />
exakt. Ermitteln Sie auf 5<br />
Dezimalstellen genau numerische Näherungen <strong>für</strong> diese Zahlen!<br />
Welchen Unterschied macht <strong>MuPAD</strong> zwischen 1 3 1 3 1 + +<br />
3<br />
und<br />
10 . 1 1<br />
3<br />
+<br />
3<br />
+<br />
3<br />
?<br />
Mit der Funktion expand(expr) wird der Ausdruck expr<br />
ausmultipliziert. Testen Sie diese Funktion an den Ausdrücken<br />
2 3 5<br />
aa+ bf, aa+ bfund aa+ bf!<br />
Mit normal(expr) wird ein rationaler Ausdruck expr auf einen<br />
gemeinsamen Hauptnenner gebracht und weitgehend gekürzt.<br />
Testen Sie diese Funktion an den Beispielen x 2<br />
1+<br />
x 1 x<br />
− 2<br />
x −1<br />
und !<br />
− 1+<br />
x<br />
Wenden Sie die Funktion simplify auf die folgenden Ausdrücke<br />
an:<br />
a f a f<br />
d i<br />
d i<br />
2 2<br />
(1) sin( x) + cos( x)<br />
(2) sin x + π 2<br />
(3) cos x − π 2<br />
2.2 <strong>Eine</strong> klassische Funktionsuntersuchung<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
solve Lösen von Gleichungen und Ungleichungen
2 Grundkurs Analysis<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
diff Bestimmen von Ableitungen<br />
limit Bestimmen von Grenzwerten<br />
%i Rückgriff auf das i-Schritte zurückliegende Er-<br />
gebnis<br />
subs Ersetzen von Ausdrücken (z.B. zum Einsetzen<br />
von Werten in Gleichungen)<br />
plotfunc2d 2-dimensionale Darstellung von Funktionsgra-<br />
phen<br />
Im folgenden wollen wir eine klassische Funktionsuntersuchung am<br />
2<br />
x − 5x+ 6<br />
Beispiel der Funktion f( x):=<br />
durchführen. Wir weisen dazu<br />
x −1<br />
der Variablen f den Funktionsterm zu:<br />
• delete x: f:= (x^2 - 5*x + 6)/(x - 1)<br />
x 2 − 5 ⋅ x + 6<br />
x − 1<br />
Beachten Sie, dass wir den Wert der Variable x (vorsichtshalber) zu-<br />
vor gelöscht haben, um sie als unabhängige Variable im Funktions-<br />
term von f verwenden zu können.<br />
Wir können direkt aus dem Term ablesen, dass die Zahl 1 nicht im<br />
Definitionsbereich von f enthalten ist und können daher unmittelbar<br />
mit der Bestimmung der Schnittstellen von f mit den Koordinatenach-<br />
sen fortfahren. Zunächst bestimmen wir die Nullstellen der Funktion:<br />
• solve(f = 0, x)<br />
2, 3 <br />
Die y-Koordinate des Schnittpunktes von f mit der y-Achse ergibt sich<br />
wie folgt:<br />
• subs(f, x = 0)<br />
−6<br />
19
20<br />
2.2 <strong>Eine</strong> klassische Funktionsuntersuchung<br />
Nun untersuchen wir f auf mögliche Extremstellen und beginnen mit<br />
der notwendigen Bedingung: f ′ ( x)<br />
= 0:<br />
• f1:= diff(f, x)<br />
2 ⋅ x − 5<br />
−<br />
x<br />
x − 1<br />
2 − 5 ⋅ x + 6<br />
(x − 1) 2<br />
<br />
Die Ableitung von f haben wir der Variablen f1 zugewiesen und be-<br />
rechnen nun ihre Nullstellen:<br />
• S:= solve(f1 = 0, x)<br />
<br />
{ 2 + 1, 1 − 2}<br />
Hier sehen wir wieder, dass <strong>MuPAD</strong> exakt rechnet. Wir erhalten eine<br />
Näherung der möglichen Extremstellen, indem wir die Funktion float<br />
auf die Menge S anwenden:<br />
• float(S)<br />
−0.4142135624, 2.414213562 <br />
Nun müssen wir diese Nullstellen der 1. Ableitung in die 2. Ableitung<br />
von f einsetzen, um die hinreichende Bedingung zu überprüfen:<br />
• f2:= diff(f, x, x)<br />
<br />
2 ⋅ x 2 <br />
− 5 ⋅ x + 6<br />
(x − 1) 3<br />
+ 2 2 ⋅ (2 ⋅ x − 5)<br />
−<br />
x − 1 (x − 1) 2<br />
<br />
Tipps<br />
Wir sehen, dass wir einfach nur zweimal das x hinschreiben<br />
brauchen, um die zweite Ableitung zu berechnen. Ganz analog<br />
können Sie auch mit der dritten, vierten usw. Ableitung verfah-<br />
ren.<br />
Der Befehl diff(f, x$n), wobei n eine natürliche Zahl ist, be-<br />
stimmt die n-te Ableitung von f. Wir könnten stattdessen auch<br />
diff(f, x, x) <strong>für</strong> die 2. Ableitung oder diff(f, x, x, x, x,
2 Grundkurs Analysis<br />
x, x) <strong>für</strong> die 6. Ableitung schreiben, nichts anderes bedeutet die<br />
$-Schreibweise:<br />
• x $ 6<br />
x, x, x, x, x, x<br />
• diff(x^7, x $ 6)<br />
5040 ⋅ x<br />
Das Einsetzen der möglichen Extremstellen in die zweite Ableitung<br />
können wir mit Hilfe der Funktion subs (substitute; engl.: ersetze)<br />
machen. Dies haben wir stillschweigend auch schon bei der Berech-<br />
nung des Schnittpunktes der Funktion mit der y-Achse getan. Wir be-<br />
ginnen mit der 1. Nullstelle von f ′ ( x):<br />
• xe:= subs(f2, x = S[1])<br />
<br />
2<br />
2 + 1 − 5 ⋅ 2 + 1 ⋅ 2<br />
−<br />
2<br />
• float(xe)<br />
1.414213562<br />
<br />
2 + 3<br />
Das es sich um einen positiven Wert handelt, liegt an der Stelle 2 + 1<br />
ein Minimum vor. Mit dem hier verwendeten Befehl S[i] greift man<br />
auf das i-te Element einer Menge (oder auch Liste) zu. Wir testen<br />
schließlich noch auf die 2. Nullstelle von f ′ ( x):<br />
• float(subs(f2, x = S[2]))<br />
−1.414213562<br />
Hierbei handelt es sich also um ein Maximum von f.<br />
Die Funktion f besitzt keine Wendestellen, da die 2. Ableitung kei-<br />
ne Nullstellen hat:<br />
21
22<br />
• S:= solve(f2 = 0, x)<br />
∅<br />
2.2 <strong>Eine</strong> klassische Funktionsuntersuchung<br />
Schließlich lassen wir uns von <strong>MuPAD</strong> den Graphen von f im Bereich<br />
[-6,6] zeichnen:<br />
• plotfunc2d(f, x = -6..6)<br />
y<br />
2<br />
-6 -5 -4 -3 -2 -1 1 2 3 4 5 6<br />
x<br />
-2<br />
-4<br />
-6<br />
-8<br />
-10<br />
Dieser Graph lässt sich interaktiv weiter bearbeiten. Ein Doppel-<br />
klick auf den Graphen startet das <strong>MuPAD</strong>-Grafiktool VCam, die Me-<br />
nüleiste trägt nun die Funktionen von VCam. Ein Klick im Menü „Be-<br />
arbeiten“ auf „Objekteigenschaften“ öffnet ein Fenster, indem sich<br />
zahlreiche Eigenschaften dieser Grafik einstellen lassen.<br />
Tipps<br />
Neue Grafiken können auch interaktiv erzeugt werden. Setzen<br />
Sie den Cursor im Notebook an eine beliebige Eingabestelle. In<br />
dem Menü „Einfügen“ finden Sie die Einträge „2D Grafik“ und<br />
„3D Grafik“. Wählen Sie einen dieser beiden Einträge aus, so er-<br />
scheint ein grau hinterlegtes Rechteck. Mit einem Doppelklick auf<br />
dieses Rechteck wird VCam gestartet und dessen Menüleiste an-<br />
gezeigt.
2 Grundkurs Analysis<br />
Für eine (interaktiv) erstellte Grafik lässt sich die zugehörige Mu-<br />
PAD-Anweisung zum Erzeugung der Grafik ermitteln. Im VCam-<br />
Menü „Bearbeiten“ finden Sie den Eintrag „Befehl an das Note-<br />
book“, um den entsprechenden <strong>MuPAD</strong>-Befehl zur Erzeugung der<br />
Grafik direkt in eine Eingabezeile unterhalb der Grafik einzufü-<br />
gen.<br />
Ein Grafik läßt sich als Datei in diverse Grafikformate abspeichern<br />
(siehe den Befehl „Speichere Grafik“ aus dem VCam-Menü<br />
„Bearbeiten“) oder über Copy & Paste in andere Anwendungen<br />
wie beispielsweise Microsoft Word einfügen. Durch Doppelklick<br />
auf ein eingebettetes Grafikobjekt lassen sich Eigenschaften die-<br />
ser Grafik auch noch nachträglich und von der Anwendung aus,<br />
in der die Grafik eingebettet worden ist, ändern.<br />
Notebooks mit grafischen Objekten werden schnell sehr groß.<br />
Das kann reduziert werden, indem ein grafisches Objekt nur als<br />
Symbol eingefügt wird. Dazu muss in dem Untermenü „Objekt<br />
Eigenschaften“ aus dem Menü „Bearbeiten“ in dem Dialogfenster<br />
„Ansicht“ die Option „Darstellung als Symbol“ ausgewählt.<br />
Auch bei den hier kennen gelernten Befehlen diff, solve, subs<br />
und plotfunc2d finden Sie entsprechende Symbole<br />
l q , f x x y<br />
∂<br />
f( x), ∂x<br />
x f = 0 ( ) = und ein Symbol <strong>für</strong> den Graphen einer<br />
Funktion in der Befehlsleiste von <strong>MuPAD</strong> Pro.<br />
Übungen<br />
Zeichnen Sie die Funktion<br />
1<br />
sin( )<br />
x<br />
im Intervall 01 , !<br />
Zeichnen Sie die Funktion sin( x + y)<br />
auf dem Gebiet 0, π × 0,<br />
π !<br />
Führen Sie <strong>für</strong> die folgenden Funktionen eine Funktionsuntersuchung<br />
mit <strong>MuPAD</strong> durch:<br />
(a) f x x e x<br />
( )= ⋅ − 2<br />
23
24<br />
(b) f x e x<br />
( )= − −<br />
1<br />
(c) f( x) = ln x −<br />
2.2 <strong>Eine</strong> klassische Funktionsuntersuchung<br />
2 c 1h<br />
Bestimmen Sie die Nullstellen der folgenden Funktion f(x) zu<br />
5 4 3 2<br />
f( x)= x − 5x + 5x + 5x − 6 x und überprüfen Sie das Ergebnis durch<br />
Einsetzen der Werte in f!<br />
Bestimmen Sie die folgenden Grenzwerte:<br />
lim<br />
x→∞<br />
F<br />
H<br />
I<br />
K<br />
F<br />
H<br />
x 1. 000. 000<br />
10 − ⋅ + 2 und lim<br />
2<br />
x + 1 0. 001x<br />
x→∞<br />
I<br />
K<br />
F<br />
G<br />
HG<br />
x<br />
1 3<br />
+ x −1<br />
x<br />
den Sie die Funktionen limit und infinity.<br />
I<br />
J<br />
KJ<br />
. Hinweis: Verwen-<br />
Bestimmen Sie den rechts- und linksseitigen Grenzwert <strong>für</strong> x → 2<br />
x − 3<br />
von: f( x)=<br />
. Zeichnen Sie die Funktion <strong>für</strong> den Bereich<br />
2<br />
x − 5x+ 6<br />
[ −55 , ] . Hinweis: Verwenden Sie die Funktion limit mit den Optio-<br />
nen Right, Left.<br />
Zeigen Sie mit <strong>MuPAD</strong> über die Definition der Ableitung, dass<br />
gilt:<br />
f ( x) = sin( x) ⇒ f ′ ( x) = cos( x)<br />
.<br />
a f a f<br />
20<br />
Bestimmen Sie <strong>für</strong> f( x) = ln ln( x) , f′ ( x) = ?, f′′ ( x) = ?, f ( x)<br />
= ?<br />
und<br />
f ( x) = u( x) ⋅ v( x)<br />
die entsprechenden Ableitungen. Hinweis: Ver-<br />
wenden Sie die Funktionen diff und limit.<br />
Für eine Ware sei die Angebotsfunktion y A und die<br />
Nachfragefunktion y N wie folgt gegeben:<br />
yA( x)<br />
= 100 − , yN( x)<br />
= −<br />
x<br />
x<br />
20<br />
90 15<br />
. Der Staat setzt den Preis auf 95 €<br />
2<br />
pro Mengeneinheit fest. Bestimmen Sie, ob es einen Angebots-<br />
oder Nachfrageüberhang gibt und ermitteln Sie die Höhe des<br />
Überhangs. Hinweis: Lösen Sie die Gleichungen y x<br />
A( )= 95 und<br />
y x<br />
N ( )= 95 jeweils nach x und bilden Sie die Differenz der beiden<br />
gefundenen Lösungen.
2 Grundkurs Analysis<br />
2.3 Bestimmte und unbestimmte Integration<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
int Bestimmte und unbestimmte Integration<br />
taylor Taylor-Reihe einer Funktion<br />
expr Umwandeln einer Reihe in einen gewöhnlichen<br />
Ausdruck<br />
numeric::solve Numerisches Lösen von Gleichungen<br />
Auch bei der, gerade im Vergleich zur Differentiation, wesentlich<br />
schwierigeren Integration kann <strong>MuPAD</strong> helfen:<br />
• delete x: int(x^4, x)<br />
x 5<br />
<br />
5<br />
Der Befehl int führt bestimmte und unbestimmte Integration durch.<br />
Ein weiteres Beispiel:<br />
• F:= int(sin(x)*cos(x)*x^2, x)<br />
cos 2 ⋅ x <br />
x ⋅ sin<br />
+<br />
8<br />
2 ⋅ x <br />
x<br />
−<br />
4<br />
2 ⋅ cos 2 ⋅ x <br />
<br />
4<br />
Machen wir die Probe:<br />
• f:= diff(F, x)<br />
x 2 ⋅ sin 2 ⋅ x <br />
<br />
2<br />
Das Ergebnis hat eine andere Struktur als der Integrand, von dem wir<br />
ausgegangen waren. Doch sind beide Terme gleich, was wir in <strong>MuPAD</strong><br />
wie folgt überprüfen können:<br />
• s:= sin(x)*cos(x)*x^2 - f<br />
x 2 ⋅ cos x ⋅ sin x − x2 ⋅ sin 2 ⋅ x <br />
<br />
2<br />
25
26<br />
• simplify(s)<br />
0<br />
2.3 Bestimmte und unbestimmte Integration<br />
Gerade auf dem Gebiet der Integration kann der Einsatz eines Com-<br />
puteralgebra-Systems sehr nützlich sein. Ein einfaches Beispiel bietet<br />
uns da<strong>für</strong> die Stochastik, in der häufig mit der Gauß’schen Normal-<br />
verteilung gerechnet wird.<br />
Ihre Funktionswerte müssen hierbei mühselig in Tabellen nachge-<br />
schlagen werden, da sie sich als bestimmte Integrale der Funktion<br />
ϕ , x e<br />
01<br />
a f = ⋅<br />
1 2<br />
− ⋅x<br />
2<br />
1<br />
2π<br />
ergeben.<br />
Wir wollen das nun einmal mit Hilfe eines Computeralgebra-Systems<br />
nachvollziehen, mit dem wir darüber hinaus die Werte dieser Vertei-<br />
lungsfunktion in einer nahezu beliebigen Genauigkeit berechnen kön-<br />
nen.<br />
Wir bestimmen im folgenden die halbe Fläche unter der zentrier-<br />
ten und standardisierten Gauß'schen Glockenkurve und beginnen zu-<br />
nächst mit einer Zeichnung der Funktion:<br />
• delete x:<br />
gauss:= 1/(sqrt(2*PI))*exp(-1/2*x^2)<br />
− x2<br />
2<br />
2 ⋅ e<br />
2 ⋅ √ <br />
π
• plotfunc2d(gauss, x = -4..4)<br />
y<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
2 Grundkurs Analysis<br />
Gauss'sche Normalverteilung<br />
-4 -3 -2 -1 0 1 2 3 4<br />
x<br />
• F:=int(gauss, x)<br />
<br />
2 ⋅ x<br />
erf <br />
2<br />
2<br />
• limit(F, x = infinity)<br />
1<br />
2<br />
Und wie erwartet erhalten wir das Ergebnis 1/2.<br />
Zum Schluss dieses Abschnitts wollen wir noch auf die Tangenten-<br />
Problematik eingehen, wie sie in der Analysis auch an Schulen be-<br />
c h und ihre Tangente im<br />
b g schließen eine Fläche ein. Zuerst wollen wir uns<br />
handelt wird. Die Funktion f x x x e x<br />
( )= + + ⋅ −<br />
2<br />
2 1<br />
Berührpunkt P 0?<br />
den Graphen der Funktion ansehen:<br />
27
28<br />
2.3 Bestimmte und unbestimmte Integration<br />
• f:= exp(-x)*(x^2 + 2*x + 1):<br />
plotfunc2d(f, x = -3..3, YRange = 0..10)<br />
y<br />
10<br />
9<br />
8<br />
7<br />
6<br />
5<br />
4<br />
3<br />
2<br />
1<br />
-3 -2 -1 0 1 2 3<br />
x<br />
Um die Gleichung der Tangente zu bestimmen, berechnen wir die ers-<br />
ten beiden Glieder der Taylor-Reihe von f:<br />
• t:= taylor(f, x = 0, 2)<br />
<br />
1 + x + O x 2<br />
<br />
die wir über den Befehl expr in einen gewöhnlichen <strong>MuPAD</strong>-Ausdruck<br />
umwandeln (d.h. der Fehlerterm wird beseitigt):<br />
• t:= expr(t)<br />
x + 1<br />
Jetzt können wir mit t so weiterarbeiten, wie wir es von der Funk-<br />
tion f gewohnt sind.<br />
Ein Schaubild von f und der Tangente t erhalten wir dann wie üb-<br />
lich, indem wir die Funktionen f und t, einen entsprechenden Definiti-<br />
onsbereich (in unserem Fall x = -3..3) sowie einen sinnvollen Wert-<br />
bereich (in unserem Fall YRange = -3..10) an die Funktion plot-<br />
func2d übergeben.
2 Grundkurs Analysis<br />
• plotfunc2d(f, t, x = -3..3, YRange = -3..10)<br />
y<br />
10<br />
8<br />
6<br />
4<br />
2<br />
-3 -2 -1 1 2 3<br />
x<br />
-2<br />
exp(-x)*(2*x + x^2 + 1)<br />
x + 1<br />
Abschließend bestimmen wir noch die Fläche zwischen der Funktion f<br />
und der Tangente t. Das Schaubild suggeriert, dass es „fast keine“<br />
Fläche zwischen den beiden Graphen gibt. Daher vergrößern wir ein-<br />
mal mit Hilfe des Grafik-Viewers VCam (zu erreichen über einen Dop-<br />
pelklick mit der Maus auf die Grafik) einen bestimmten Bereich. Dazu<br />
klicken wir auf das Symbol der Lupe mit dem +-Zeichen sowie an-<br />
schließend einfach mit der Maus in den Bereich des Koordinatensys-<br />
tems, den wir gerne vergrößert sehen möchten:<br />
-1.0 -0.9 -0.8 -0.7 -0.6 -0.5 -0.4<br />
exp(-x)*(2*x + x^2 + 1)<br />
x + 1<br />
1.0<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
x<br />
-0.2<br />
-0.4<br />
y<br />
29
30<br />
2.3 Bestimmte und unbestimmte Integration<br />
Hieraus erkennt man leichter, wie wir zur Bestimmung der Fläche<br />
vorgehen müssen und bestimmen zunächst die Schnittstellen der<br />
Tangente mit dem Funktionsgraphen. Das machen wir mit der Funkti-<br />
on numeric::solve, wobei wir in diesem Fall nicht auf die Funktion<br />
solve zurückgreifen können, da es sich um eine transzendente Glei-<br />
chung handelt. Wir sind also gezwungen, diese Gleichung numerisch<br />
zu lösen:<br />
• numeric::solve(f = t, x)<br />
−1.0 <br />
Die gesuchte Fläche erhalten wir daraus unmittelbar durch das fol-<br />
gende bestimmte Integral:<br />
• int(t - f, x = -1..0)<br />
11<br />
− 2 ⋅ e<br />
2<br />
<strong>Eine</strong> Näherung dieser Zahl in Dezimalbruch-Darstellung lautet:<br />
• float(%)<br />
Tipp<br />
0.06343634308<br />
<strong>MuPAD</strong> bietet in der Bibliothek student schulübliche numerische<br />
Standardverfahren zur Integration, die zudem grafisch visuali-<br />
siert werden können. Am Beispiel der Riemann-Integration ste-<br />
hen die Funktionen student::riemann und stu-<br />
dent::plotRiemann zur Verfügung. So lässt sich die Riemann-<br />
Integration der Funktion f x e x<br />
( )= im Intervall −11 , mit dem fol-<br />
genden Aufruf visualisieren, wobei eine Unterteilung des Inter-<br />
valls in 10 Segmente gewählt wurde (die Aufrufsyntax ist sehr<br />
ähnlich zu der, die wir von der Funktion plotfunc2d kennen:<br />
Zuerst geben wir die darzustellende Funktion an, dann den ent-<br />
sprechenden Definitionsbereich und schließlich die Anzahl der
2 Grundkurs Analysis<br />
Unterteilungen des Integrationsintervalls, d.h. im wesentlichen<br />
die Genauigkeit, mit der die Fläche unter dem Graphen angenä-<br />
hert werden soll):<br />
• plot(student::plotRiemann(exp(x), x = -1..1, 10))<br />
Riemann: 2.346<br />
real: 2.350<br />
y<br />
2.5<br />
2.0<br />
1.5<br />
1.0<br />
0.5<br />
-1.0 -0.8 -0.6 -0.4 -0.2 0.0 0.2 0.4 0.6 0.8 1.0<br />
x<br />
Über ?student erhalten Sie eine Übersicht der zur Verfügung<br />
stehenden Integrationsverfahren.<br />
Übungen<br />
Berechnen Sie das bestimmte Integral der Funktionen f ( x) = sin( x)<br />
und f ( x) = cos( x)<br />
in den Grenzen 0 bis 2.<br />
Bestimmen Sie die folgenden Integrale:<br />
sin( x)cos( x) dx,<br />
x dx z z<br />
π<br />
2<br />
1 1<br />
0<br />
0 2<br />
1−<br />
.<br />
Berechnen Sie die unbestimmten Integrale der folgenden Funktionen:<br />
z<br />
z 1<br />
⋅<br />
4x+ 1<br />
(1) e dx<br />
−x<br />
(2) x e dx<br />
a f2 z<br />
(3) ln( x) dx<br />
(4)<br />
z<br />
ln( x)<br />
2<br />
x<br />
dx<br />
31
32<br />
2.4 Ein Extremwertproblem<br />
z z<br />
2 tx<br />
2 tx<br />
(5) txedx ⋅ und txedt ⋅<br />
z<br />
2<br />
x −1<br />
(6) ln( x)<br />
− dx 2<br />
e −1<br />
Berechnen Sie das Volumen des Rotationskörpers, der durch die<br />
Funktion f x e x 2 + 1<br />
( )= im Intervall 04 , gegeben ist. Verwenden Sie<br />
z0<br />
2 1 2<br />
4<br />
c h .<br />
x+<br />
dazu die Formel V = π ⋅ e dx<br />
2<br />
Für k ∈IR ist die Funktionenschar f ( x)= x −kx ⋅e<br />
k<br />
x c h gegeben.<br />
Bestimmen Sie k ∈IR so, dass die zugehörige Funktion mit der x-<br />
Achse eine Fläche mit dem Inhalt 4 Flächeneinheiten einschließt.<br />
c h und ihre Tangente im Berühr-<br />
b g schließen eine Fläche ein.<br />
Die Funktion f x x x e x<br />
( )= + + ⋅ −<br />
2 3 2<br />
punkt P 0?<br />
(a) Zeichnen Sie den Graphen der Funktion f(x).<br />
(b) Bestimmen Sie die Tangente an den Graphen.<br />
(c) Zeichnen Sie die Funktion und die Tangente in ein gemein-<br />
sames Koordinatensystem ein.<br />
(d) Bestimmen Sie die Schnittstellen der Tangente mit dem<br />
Funktionsgraphen. Wählen Sie nun diese als Integrationsgrenzen<br />
<strong>für</strong> das zu bestimmende Integral.<br />
2.4 Ein Extremwertproblem<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
assume Festlegen von Variablenbereichen<br />
<strong>Eine</strong> zylinderförmige Konservendose soll einen Inhalt von 1 Liter fas-<br />
sen. Wie sind nun der Radius r und die Höhe h zu wählen, damit der<br />
Blechverbrauch zur Herstellung der Konservendose möglichst gering<br />
ist?
2 Grundkurs Analysis<br />
Da der Blechverbrauch von der Größe der Oberfläche abhängt, be-<br />
trachten wir zunächst die bekannte Formel zur Berechnung der Ober-<br />
fläche eines Zylinders:<br />
2<br />
Arh (,)= 2πr+ 2π<br />
rh<br />
Diese Formel übertragen wir nach <strong>MuPAD</strong>, wobei wir annehmen kön-<br />
nen, dass <strong>für</strong> r und h nur positive (reelle) Zahlen in Betracht kom-<br />
men:<br />
• delete r, h: assume(r > 0): assume(h > 0):<br />
• A:= 2*PI*r^2 + 2*PI*r*h<br />
2 ⋅π⋅r 2 + 2 ⋅π⋅h ⋅ r<br />
Um sicher zu stellen, dass r und h keine Werte besitzen, mussten wir<br />
über delete mögliche Werte der Variablen löschen.<br />
Wir haben nun von der Aufgabe die Vorgabe, dass das Volumen 1<br />
Liter betragen soll. Die Formel <strong>für</strong> das Volumen eines Zylinders ist:<br />
• V:= r^2*PI*h<br />
π⋅h ⋅ r 2<br />
Die letzte Gleichung ist also unsere Nebenbedingung, mit der wir in<br />
der Gleichung <strong>für</strong> die Oberfläche einen Parameter eliminieren können.<br />
Wir lösen die Formel V der Einfachheit halber nach h auf:<br />
• L:= solve(1000 = V, h)<br />
<br />
1000<br />
π⋅r 2<br />
<br />
<br />
und setzen den Wert von h in den Funktionsterm von A ein:<br />
• A:= subs(A, h = L[1])<br />
2 ⋅π⋅r 2 + 2000 <br />
r<br />
Damit haben wir unsere Zielfunktion gefunden, die wir jetzt nur noch<br />
auf mögliche Extremstellen untersuchen müssen. Wir berechnen die<br />
erste Ableitung:<br />
33
34<br />
• A1:= diff(A, r)<br />
4 ⋅π⋅r − 2000<br />
r 2<br />
<br />
und bestimmen deren Nullstellen:<br />
• L:= solve(A1 = 0, r)<br />
<br />
3<br />
500<br />
√ <br />
<br />
3<br />
π<br />
2.4 Ein Extremwertproblem<br />
Zum Überprüfen der hinreichenden Bedingung berechnen wir die<br />
zweite Ableitung von A und setzen den <strong>für</strong> r erhaltenen Wert dort ein:<br />
• A2:= diff(A, r, r)<br />
4 ⋅π+ 4000<br />
r 3<br />
<br />
• subs(A2, r = L[1])<br />
12 ⋅π<br />
Dieser Wert ist positiv – damit haben wir ein Minimum gefunden. Nun<br />
gilt es, noch den zugehörigen Wert <strong>für</strong> die Höhe h zu bestimmen.<br />
Um h zu berechnen, setzen wir in die Gleichung V=1000 <strong>für</strong> das<br />
Volumen den berechneten Wert <strong>für</strong> r ein:<br />
• s:= subs(V = 1000, r = L[1])<br />
√ 3<br />
π<br />
⋅ 500<br />
2<br />
3<br />
⋅ h = 1000<br />
und lösen diese Gleichung schließlich nach h auf:<br />
• solve(s, h)<br />
<br />
3<br />
2 ⋅ 500<br />
√ <br />
<br />
3<br />
π
2 Grundkurs Analysis<br />
2.5 Das Arbeiten mit <strong>MuPAD</strong>-Bibliotheken<br />
Das meiste mathematische Wissen von <strong>MuPAD</strong> ist in sogenannten<br />
Bibliotheken strukturiert. <strong>Eine</strong> Bibliothek besteht aus einer Sammlung<br />
von Funktionen zur Lösung von Problemen eines speziellen Gebietes<br />
wie etwa der Linearen Algebra, der Analysis, der Algebra, der Nume-<br />
rik usw.<br />
Die <strong>MuPAD</strong>-Bibliothek numeric beispielsweise stellt eine Vielzahl<br />
an Funktionen <strong>für</strong> die Numerik bereit. Mit info erhalten Sie eine Ü-<br />
bersicht über alle Funktionen dieser Bibliothek:<br />
• info(numeric)<br />
Library 'numeric': functions for numerical<br />
mathematics<br />
-- Interface:<br />
numeric::butcher, numeric::complexRound,<br />
numeric::cubicSpline, numeric::det,<br />
numeric::eigenvalues, numeric::eigenvectors,<br />
numeric::expMatrix, numeric::fMatrix,<br />
numeric::factorCholesky, numeric::factorLU,<br />
numeric::factorQR, numeric::fft,<br />
numeric::fsolve, numeric::gldata,<br />
numeric::gtdata, numeric::indets,<br />
numeric::int, numeric::inverse,<br />
numeric::invfft, numeric::lagrange,<br />
numeric::linsolve, numeric::matlinsolve,<br />
numeric::ncdata, numeric::odesolve,<br />
numeric::odesolve2,<br />
numeric::odesolveGeometric,<br />
numeric::polyroots, numeric::polysysroots,<br />
numeric::quadrature, numeric::rationalize,<br />
numeric::realroot, numeric::realroots,<br />
numeric::singularvalues, numeric::singularvectors,<br />
numeric::solve, numeric::sort,<br />
numeric::spectralradius<br />
Nehmen wir uns einmal die Funktion numeric::fsolve zur Bestim-<br />
mung einer Nullstelle einer Funktion in einem vorgegebenen Bereich<br />
heraus:<br />
• numeric::fsolve(sin(x), x = 2..4)<br />
x = 3.141592654 <br />
35
36<br />
2.6 Hilfe, ich weiß nicht weiter ...<br />
Wie Sie an diesem Beispiel erkennen können, brauchen Funktionen<br />
einer Bibliothek nicht explizit in <strong>MuPAD</strong> eingeladen werden. Bei einer<br />
erstmaligen Verwendung wird die Funktion automatisch geladen und<br />
entsprechend dem Aufruf ausgeführt (daher kann es bei erstmaligen<br />
Aufrufen von <strong>MuPAD</strong>-Funktion zu relativ langen Ladezeiten führen;<br />
bei einer erneuten Verwendung der Funktion sind die Ausführungszei-<br />
ten entsprechend schneller).<br />
Zum interaktiven Arbeiten mit Bibliotheken bietet es sich an, ihre<br />
Funktionen zu „exportieren“, d.h. dem System global bekannt zu ma-<br />
chen. Danach sind sie direkt ohne den Namen der Bibliothek aufruf-<br />
bar. Am Beispiel der Funktion numeric::det zur Bestimmung der De-<br />
terminante einer Matrix mit numerischen Methoden sieht das dann<br />
wie folgt aus:<br />
• export(numeric, det):<br />
• det(matrix([[2, 1], [2, 2]]))<br />
2.0<br />
Funktionen einer Bibliothek lassen sich jedoch nur exportieren, wenn<br />
der Name der Funktion ein „freier“ Bezeichner, d.h. ein Bezeichner<br />
ohne Wert ist.<br />
Die wichtigste <strong>MuPAD</strong>-Bibliothek trägt den Namen stdlib. Sie<br />
enthält zentrale Funktionen des Systems wie beispielsweise diff,<br />
simplify oder int. Alle Funktionen dieser Bibliothek stehen (nur)<br />
global zur Verfügung, d.h. sie werden nicht über den Bibliotheksna-<br />
men stdlib:: angesprochen.<br />
2.6 Hilfe, ich weiß nicht weiter ...<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
?befehl Öffnet die entsprechende Hilfeseite zu einem Befehl
2 Grundkurs Analysis<br />
Kennen Sie den Namen eines <strong>MuPAD</strong>-Befehls, wissen aber nicht mehr<br />
seine genaue Bedeutung oder die exakte Aufrufsyntax, so hilft ein<br />
Blick auf die zugehörige Hilfe-Seite. Um beispielsweise die Hilfe-Seite<br />
der Funktion limit anzufordern, geben Sie den Befehl ?limit ein.<br />
Nach Ausführen des Befehles wird der Hilfe-Assistent gestartet und<br />
der Befehl limit im unteren Fenster des Hilfe-Assistenten markiert.<br />
Bestätigen Sie die Auswahl durch „Anzeigen“, woraufhin das Hilfe-<br />
System von <strong>MuPAD</strong> gestartet und die entsprechende Hilfeseite ange-<br />
zeigt wird.<br />
Das Hilfe-System von <strong>MuPAD</strong> ist hypertextbasiert. Stichworte sind<br />
farbig markiert, durch Anklicken eines dieser Stichworte kann auf die<br />
entsprechende Seite im Handbuch verzweigt werden. Sie können im<br />
Handbuch unmittelbar auf das Inhaltsverzeichnis, den Index oder auf<br />
das vorhergehende bzw. folgende Kapitel springen.<br />
Beispiele, die am Ende einer Beschreibung eines <strong>MuPAD</strong>-Befehls<br />
zu finden sind, lassen sich direkt in ein <strong>MuPAD</strong>-Notebook übertragen.<br />
Dazu genügt ein Doppelklick auf das farbig markierte Symbol >> am<br />
Beginn jedes Beispiels.<br />
Was aber, wenn Sie mit <strong>MuPAD</strong> eine bestimmte Aufgabe lösen<br />
wollen, beispielsweise das charakteristische Polynom einer Matrix be-<br />
rechnen wollen, aber den Namen der entsprechenden <strong>MuPAD</strong>-<br />
Funktion nicht kennen? Auch hier hilft Ihnen der Hilfe-Assistent, in-<br />
dem Sie entweder durch Auswahl der Registerkarte „Suchen“ nach<br />
bestimmten Wörtern (wie beispielsweise chara <strong>für</strong> charakteristisches<br />
Polynom) suchen lassen oder in der Registerkarte „Inhalt“ den Eintrag<br />
„Lineare Algebra“ auswählen, um auf die Hilfeseite der <strong>MuPAD</strong>-Biblio-<br />
thek linalg zu gelangen. Dort werden Sie schnell den gewünschten<br />
<strong>MuPAD</strong>-Befehl finden.<br />
Übungen<br />
Mit welchen <strong>MuPAD</strong>-Funktionen können Differentialgleichungen<br />
in <strong>MuPAD</strong> gelöst werden?<br />
37
38<br />
2.7 Differentialgleichungen – <strong>Eine</strong> Anwendungsaufgabe<br />
Welche <strong>MuPAD</strong>-Funktion löst lineare Gleichungssysteme?<br />
Wie lautet der Name der <strong>MuPAD</strong>-Bibliothek zur elementaren Zah-<br />
lentheorie?<br />
Suchen Sie die Seite im <strong>MuPAD</strong>-Handbuch, die Ihnen eine Übersicht<br />
über alle <strong>MuPAD</strong>-Bibliotheken liefert!<br />
Tipps<br />
<strong>Eine</strong> Demonstration der mathematischen Fähigkeiten von <strong>MuPAD</strong><br />
kann auf der Registerkarte „Inhalt“ des Hilfe-Assistenten geöff-<br />
net werden, indem der Punkt „Demonstration“ angewählt und<br />
auf den Befehl „Anzeigen“ geklickt wird.<br />
Die kontextabhängige Hilfe des Hilfe-Assistenten kann Fragen<br />
zum Hilfe-Assistenten beantworten.<br />
Die Windows-Hilfe erklärt die Benutzung des Hilfe-Assistenten.<br />
Die elektronische interaktive Buchversion des deutschen <strong>MuPAD</strong>-<br />
Tutoriums wird mit <strong>MuPAD</strong> Pro ausgeliefert. Im Menü „Hilfe“ fin-<br />
den Sie dazu den Eintrag „Tutorium öffnen“.<br />
2.7 Differentialgleichungen – <strong>Eine</strong><br />
Anwendungsaufgabe<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
ode Definiert eine Differentialgleichung<br />
solve Lösen einer Differentialgleichung<br />
S[i] Liefert das i-te Element einer Menge S<br />
Die Temperatur eines Backrohres sei beschrieben durch die folgende<br />
Gleichung:<br />
Tt () = − ⋅e −<br />
200 180<br />
<strong>Eine</strong> Pizza soll 20 Minuten bei ca. 200°C gebacken werden. Die Tem-<br />
peraturzunahme ist proportional zur Differenz der Temperatur des<br />
03 . x
2 Grundkurs Analysis<br />
Backrohres und der Pizza mit einem Proportionalitätsfaktor von 0,2.<br />
Nach wie vielen Minuten erreicht die Pizza 95% der Endtemperatur?<br />
PAD:<br />
Wir übertragen die Temperaturfunktion des Backrohres nach Mu-<br />
• T:= 200 - 180*exp(-0.3*t)<br />
− 0.3 ⋅ x − 0.3<br />
200 − 180 ⋅ e<br />
Die Temperatur der Pizza, die zugleich mit dem Einschalten in das<br />
Backrohr kommt, ergibt sich durch:<br />
dP() t<br />
= ,2 ⋅ Tt () −Pt<br />
()<br />
dt<br />
0 a f<br />
wobei P(t) die Temperatur der Pizza zum Zeitpunkt t beschreibt. Neh-<br />
men wir nun zum Zeitpunkt 0 eine Anfangstemperatur der Pizza von<br />
20°C an, so übersetzen wir dieses Anfangswertproblem nach <strong>MuPAD</strong><br />
durch folgende Anweisung:<br />
• o:= ode({diff(p(t), t) = 0.2*(T - p(t)), p(0) = 20},<br />
p(t))<br />
ode<br />
<br />
p 0 = 20, 0.2 ⋅ p t + ∂<br />
<br />
<br />
−0.3⋅t<br />
p t + 36.0 ⋅ e − 40.0 , p<br />
∂t<br />
t <br />
Diese Differentialgleichung lässt sich nun mit <strong>MuPAD</strong> über den be-<br />
kannten Befehl solve lösen:<br />
• s:= solve(o)<br />
⎧<br />
⎪⎨<br />
⎪⎩ −340.0 ⋅ e−0.2⋅t +<br />
<br />
e t 10<br />
⎫<br />
⎪⎬<br />
<br />
360.0 ⋅ e−0.2⋅t<br />
⎪⎭<br />
<strong>Eine</strong> Antwort auf unsere Ausgangsfrage erhalten wir dann wie folgt:<br />
• solve(s[1] = 200*0.95, t)<br />
Die symbolische Lösung ist etwas komplexer in der Ausgabe, daher<br />
haben wir sie hier nicht angegeben.<br />
39
40<br />
3. Lineare Algebra<br />
3.1 Erstellen von Matrizen<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
linalg Die <strong>MuPAD</strong>-Bibliothek zur Linearen Algebra<br />
matrix Erzeugen von Matrizen und Vektoren<br />
Um Ihnen einen Einstieg in die Lineare Algebra zu geben, lernen wir<br />
in diesem Abschnitt, wie sich Matrizen in <strong>MuPAD</strong> erstellen lassen und<br />
wie mit ihnen gerechnet wird. Zudem werden wir einen kleinen Ein-<br />
blick in die Bibliothek linalg von <strong>MuPAD</strong> bekommen, die eine Reihe<br />
von Funktionen aus dem Gebiet der Linearen Algebra umfasst.<br />
3.1 Erstellen von Matrizen<br />
Wir geben die folgende Matrix in <strong>MuPAD</strong> ein:<br />
⎛ ⎞<br />
14033<br />
⎜ ⎟<br />
⎝20020⎠<br />
70321<br />
• matrix([[1, 4, 0, 3, 3], [2, 0, 0, 2, 0], [7, 0, 3, 2,<br />
1]])<br />
<br />
1 4 0 3 3<br />
2 0 0 2 0<br />
7 0 3 2 1<br />
Wir erzeugen eine Matrix also mit dem <strong>MuPAD</strong>-Befehl matrix,<br />
dem in runden Klammern als Argument die Einträge der Matrix pro<br />
Zeile in einem Paar eckiger Klammern [...] angegeben wird.<br />
Übung<br />
Testen Sie einige Eingaben, auch Eingaben, die vermutlich von<br />
<strong>MuPAD</strong> nicht als korrekt akzeptiert werden! Was passiert, wenn<br />
man Zeilen mit unterschiedlicher Anzahl an Elementen eingibt?<br />
Wir geben einige spezielle Schreibweisen an:
• A:= matrix([[8, 3, 5, 6]])<br />
8356 <br />
3 Lineare Algebra<br />
Vergleichen wir diese Matrix (eine 1x4-Matrix, auch Zeilenvektor mit<br />
4 Einträgen genannt) mit der 4x1-Matrix:<br />
• A:= matrix([8, 3, 5, 6])<br />
⎛ ⎞<br />
8<br />
⎜<br />
⎜3<br />
⎟<br />
⎜<br />
⎟<br />
⎝5<br />
⎠<br />
6<br />
so sehen wir, dass uns <strong>MuPAD</strong> hier die Eingabe der Matrix erleichtert,<br />
denn eigentlich hätten wir ja konsistenterweise die Matrix wie folgt<br />
angeben müssen (was wir natürlich auch tun können):<br />
• A:= matrix([[8], [3], [5], [6]])<br />
⎛ ⎞<br />
8<br />
⎜<br />
⎜3<br />
⎟<br />
⎜<br />
⎟<br />
⎝5<br />
⎠<br />
6<br />
Über die Befehlsleiste von <strong>MuPAD</strong> Pro können Sie Matrizen sehr<br />
leicht eingeben. Klicken Sie dazu auf das entsprechende Matrixsymbol<br />
und wählen Sie die passende Zeilen- und Spaltenzahl aus. Für eine<br />
4x4-Matrix wird dann der folgende Text in die aktuelle Eingaberegion<br />
eingefügt:<br />
• matrix([[%?,%?,%?,%?], [%?,%?,%?,%?], [%?,%?,%?,%?],<br />
[%?,%?,%?,%?]])<br />
Mit bzw. springen Sie auf den Einträgen %? vor<br />
und zurück.<br />
Übungen<br />
Erstellen Sie einen Zeilenvektor mit den Einträgen 1,2,3.<br />
Versuchen Sie, in <strong>MuPAD</strong> die drei Einheitsvektoren des IR 3 ein-<br />
zugeben.<br />
41
42<br />
3.2 Zeilen- und Spaltenzahl einer Matrix<br />
Geben Sie ein Beispiel einer Diagonalmatrix an!<br />
Erstellen Sie die 4x5-Nullmatrix!<br />
3.2 Zeilen- und Spaltenzahl einer Matrix<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
linalg::ncols Anzahl der Spalten einer Matrix<br />
linalg::nrows Anzahl der Zeilen einer Matrix<br />
Um die Zeilenzahl und Spaltenzahl einer Matrix zu erhalten, bietet<br />
<strong>MuPAD</strong> die Befehle linalg::ncols (number of columns, englisch:<br />
Anzahl an Spalten) und linalg::nrows (number of rows, englisch:<br />
Anzahl an Zeilen) an:<br />
• M:= matrix([[1, 7], [3, 1], [1.5, 0]])<br />
<br />
1<br />
<br />
7<br />
3 1<br />
1.5 0<br />
• linalg::ncols(M)<br />
2<br />
• linalg::nrows(M)<br />
3<br />
3.3 Zugriff auf die Einträge einer Matrix<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
A[i, j] Koeffizient der i-ten Zeile und j-ten Spalte von A<br />
linalg::col Extrahieren von Spalten einer Matrix<br />
linalg::row Extrahieren von Zeilen einer Matrix
3 Lineare Algebra<br />
Um auf die Koeffizienten einer Matrix zuzugreifen, verwendet man<br />
den Operator []. Dazu ein Beispiel:<br />
• M:= matrix([[1, 4, 0, -1], [3, 4, 7, 8], [-5, -6, 7,<br />
1]])<br />
1 4 0 − 1<br />
3 4 7 8<br />
− 5 − 6 7 1<br />
<br />
Den Koeffizienten der 2. Zeile und 1. Spalte erhalten wir dann wie<br />
folgt:<br />
• M[2, 1]<br />
3<br />
Weitere Beispiele:<br />
• M[1, 3]<br />
0<br />
• M[2, 3]<br />
7<br />
Auf ähnliche Weise lassen sich Einträge einer Matrix ändern, ohne<br />
gleich die gesamte Matrix neu erstellen zu müssen:<br />
• M[1, 3]:= 2<br />
• M<br />
1 4 2 − 1<br />
3 4 7 8<br />
− 5 − 6 7 1<br />
<br />
Wie wir sehen, haben wir den Eintrag der 1. Zeile und 3. Spalte durch<br />
den Wert 2 ersetzt.<br />
Schließlich lassen sich über den Klammernoperator nicht nur ein-<br />
zelne Einträge, sondern ganze Teilmatrizen extrahieren:<br />
43
44<br />
• M1:= M[1..3, 2..3]<br />
<br />
4<br />
<br />
2<br />
4 7<br />
− 6 7<br />
• zeile1:= M[1..1, 1..4]<br />
( 1 4 2 − 1 )<br />
3.4 Elementare Matrixrechnung<br />
Zum Extrahieren von Zeilen und Spalten stehen aber auch die Funkti-<br />
onen linalg::row und linalg::col zur Verfügung:<br />
• zeile1:= linalg::row(M, 1)<br />
( 1 4 2 − 1 )<br />
• spalten132:= linalg::col(M, [1, 3, 2])<br />
Übungen<br />
<br />
1<br />
<br />
3<br />
− 5<br />
,<br />
<br />
2 4<br />
7 , 4<br />
7 − 6<br />
Was passiert, wenn man eine Zeilennummer (Spaltennummer)<br />
angibt, die größer als die Zeilenzahl (Spaltenzahl) der Matrix ist?<br />
Erstellen Sie mit <strong>MuPAD</strong> die Matrix X =<br />
F<br />
G<br />
HG<br />
1 −2<br />
1 5<br />
3 0 1 1<br />
2 2 2 2<br />
0 2 1 12<br />
I<br />
J<br />
KJ<br />
. Definieren<br />
Sie nun diejenigen 2x2-Teilmatrizen A,B,C und D, so dass gilt:<br />
X<br />
A B<br />
= F H G I K J .<br />
C D<br />
3.4 Elementare Matrixrechnung<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
linalg::transpose Transponierte einer Matrix<br />
+ Matrixaddition
3 Lineare Algebra<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
* Matrixmultiplikation<br />
^(-1) Matrixinversion<br />
Zur Matrixrechung erstellen wir uns zwei Beispielmatrizen mit symbo-<br />
lischen Einträgen:<br />
• A:= matrix([[a11, a12], [a21, a22]])<br />
<br />
a11 a12<br />
a21 a22<br />
• B:= matrix([[b11, b12], [b21, b22]])<br />
<br />
b11 b12<br />
b21 b22<br />
die wir wie folgt addieren und multiplizieren können:<br />
• A + B<br />
<br />
• A * B<br />
<br />
<br />
a11 + b11 a12 + b12<br />
a21 + b21 a22 + b22<br />
<br />
a11 ⋅ b11 + a12 ⋅ b21 a11 ⋅ b12 + a12 ⋅ b22<br />
a21 ⋅ b11 + a22 ⋅ b21 a21 ⋅ b12 + a22 ⋅ b22<br />
Natürlich ist es auch möglich, Matrizen in <strong>MuPAD</strong> zu invertieren, was<br />
sehr angenehm ist, da gerade diese Operation – ähnlich wie das Lö-<br />
sen von Gleichungssystemen – in der Regel recht aufwendig ist, aber<br />
mathematisch nicht unbedingt eine große Herausforderung darstellt.<br />
Zur Bestimmung der Inversen beispielsweise der Matrix:<br />
45
46<br />
3.4 Elementare Matrixrechnung<br />
• A:= matrix([<br />
[2, 0, 1, 3, 5], [4, 1, -1, 0, 4], [1, -1, 1, 0, 1],<br />
[0, 2, 1, -6, 7], [-1, -2, 0, 3, 4]<br />
])<br />
⎛<br />
2<br />
⎜<br />
4<br />
⎜<br />
⎝<br />
1<br />
0<br />
0<br />
1<br />
− 1<br />
2<br />
1<br />
− 1<br />
1<br />
1<br />
3 5<br />
0 4<br />
0 1<br />
− 6 7<br />
− 1 − 2 0 3 4<br />
⎞<br />
⎟<br />
⎠<br />
müssen wir die Anweisung 1/A oder auch A^(-1) eingeben:<br />
• iA:= 1/A<br />
⎛<br />
−<br />
⎜<br />
⎝<br />
1 6 62<br />
49 35 245 − 3 5<br />
49 − <br />
49<br />
17 4<br />
49 − 123<br />
35 − 2<br />
245 49 − 13 <br />
49<br />
17 11<br />
49 − 73 2<br />
35 245 49 − 13 <br />
49<br />
29 2<br />
147 − 44<br />
35 − 11<br />
245 − 2<br />
147 − <br />
147<br />
1 13<br />
− 3 5<br />
1<br />
49<br />
35<br />
245<br />
Wir überprüfen das Resultat:<br />
• iA * A; A * iA<br />
⎛<br />
10000<br />
⎜<br />
01000<br />
⎜<br />
⎝<br />
00100<br />
00010<br />
00001<br />
⎛<br />
10000<br />
⎜<br />
01000<br />
⎜<br />
⎝<br />
00100<br />
00010<br />
00001<br />
⎞<br />
⎟<br />
⎠<br />
⎞<br />
⎟<br />
⎠<br />
49<br />
49<br />
⎞<br />
⎟<br />
⎠<br />
Ist eine Matrix nicht invertierbar, so liefert <strong>MuPAD</strong> als Ergebnis FAIL<br />
zurück.<br />
Übung<br />
Gegeben seien die Matrizen A, B, C und D mit<br />
F I<br />
HG KJ F I = HG KJ = F HG I<br />
KJ = − F<br />
HG<br />
2 0 0 −1<br />
1 2 1 0<br />
A= , B , C , D .<br />
1 −1<br />
3 3 3 4 0 −1<br />
Übertragen Sie diese Matrizen nach <strong>MuPAD</strong> und berechnen Sie:<br />
I K J
3 Lineare Algebra<br />
A⋅ ( B + C) + A⋅ C ⋅D,( −A−( B − ( A + C − ( B + C) − D))),<br />
T<br />
A −2 ⋅A⋅B⋅D⋅A⋅D⋅B⋅D. Hinweis: Das hochgestellte T bezeichnet<br />
die transponierte Matrix, die über linalg::transpose(A) be-<br />
rechnet werden kann.<br />
3.5 Weitere Tipps zur Eingabe von Matrizen<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
Diagonal Option <strong>für</strong> matrix: Erzeugung von Diagonal-<br />
matrizen<br />
-> Definition einer Abbildung (Funktion)<br />
Diagonalmatrizen lassen sich direkt über die Angabe der Option<br />
Diagonal erstellen:<br />
• matrix(4, 4, 1, Diagonal)<br />
⎛<br />
1 0 0 0<br />
⎜⎜<br />
⎝<br />
0 1 0 0<br />
0 0 1 0<br />
0 0 0 1<br />
⎞<br />
⎟<br />
⎠<br />
• matrix(4, 4, x -> x^2, Diagonal)<br />
⎛<br />
1 0 0<br />
⎜<br />
⎝<br />
0 4 0<br />
0 0 9<br />
0<br />
0<br />
0<br />
0 0 0 16<br />
⎞<br />
⎟<br />
⎠<br />
• matrix(3, 4, [1, 2, 1], Diagonal)<br />
<br />
1000<br />
0200<br />
0010<br />
Anstelle eine Liste von Zeilen anzugeben, lassen sich Matrizen erstel-<br />
len, deren Einträge aus einer Funktion berechnet werden:<br />
47
48<br />
3.6 Über den Koeffizientenbereich von Matrizen<br />
• matrix(3, 4, (i,j) -> (i^2 + j^2))<br />
<br />
2<br />
<br />
5 10 17<br />
5 8 13 20<br />
10 13 18 25<br />
3.6 Über den Koeffizientenbereich von Matrizen<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
Dom::Matrix Matrixerzeuger <strong>für</strong> Matrizen über Koeffizientenbe-<br />
reiche<br />
Dom::Integer Bereich der ganzen Zahlen<br />
Dom::Rational Körper der rationalen Zahlen<br />
Wir haben uns bisher nicht viele Gedanken über den Typ der Einträge<br />
einer Matrix gemacht. In <strong>MuPAD</strong> hat man aber die Möglichkeit, die<br />
Menge von Matrizen über einem bestimmten Koeffizientenbereich zu<br />
betrachten. Das machen wir beispielsweise über den rationalen Zah-<br />
len wie folgt:<br />
• MQ:= Dom::Matrix(Dom::Rational):<br />
• A:= MQ([[1, -3, 3], [3, -5, 3], [6, -6, 4]])<br />
<br />
1 − 3 3<br />
3 − 5 3<br />
6 − 6 4<br />
Berechnen wir nun die Inverse dieser Matrix:<br />
• 1/A<br />
⎛<br />
3<br />
− 8 ⎜ 7<br />
⎝ − 8<br />
3<br />
−<br />
− 1<br />
8<br />
3<br />
8<br />
3<br />
4<br />
3<br />
8<br />
3<br />
8<br />
1<br />
4 4<br />
⎞<br />
⎟<br />
⎠<br />
so erkennen wir, dass die Einträge dieser Matrix rationale Zahlen<br />
sind, während die Matrix A ausschließlich ganze Zahlen als Einträge<br />
besitzt.
3 Lineare Algebra<br />
Definieren wir nun die Matrix A explizit über den ganzen Zahlen:<br />
• MZ:= Dom::Matrix(Dom::Integer):<br />
• A2:= MZ(A)<br />
<br />
1 − 3 3<br />
3 − 5 3<br />
6 − 6 4<br />
und berechnen dann die Inverse dieser Matrix, so erhalten wir die fol-<br />
gende Antwort von <strong>MuPAD</strong>:<br />
• 1/A2<br />
FAIL<br />
Die Matrix ist also über dem festgelegten Koeffizientenbereich nicht<br />
invertierbar, so wie wir es erwartet haben.<br />
Wir können auch als Koeffizienten beliebige Einträge zulassen, mit<br />
denen wir rechnen können (also insbesondere auch Parameter):<br />
• A:= matrix([[2, 3], [a, 4]])<br />
<br />
• A^2<br />
<br />
<br />
2 3<br />
a 4<br />
<br />
3 ⋅ a + 4 18<br />
6 ⋅ a 3 ⋅ a + 16<br />
Tipp<br />
<strong>MuPAD</strong> stellt mit den Bibliotheken Dom eine Vielzahl an Koeffizientenbereichen<br />
<strong>für</strong> Matrizen zur Verfügung, u.a. Dom::Integer,<br />
Dom::Rational, Dom::Real, Dom::Float und Dom::Complex.<br />
49
50<br />
3.6 Über den Koeffizientenbereich von Matrizen<br />
4. Die linalg-Bibliothek<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
linalg::matlinsolve Lösung linearer Gleichungssysteme<br />
linalg::eigenvectors Eigenvektoren einer Matrix<br />
linalg::charpoly charakteristisches Polynom einer Matrix<br />
linalg::jordanForm Jordan’sche Normalform einer Matrix<br />
linalg::gaussElim Gauß-Elimination<br />
linalg::addRow Addieren einer Zeile zu einer anderen<br />
linalg::addCol Addieren einer Spalte zu einer anderen<br />
linalg::multRow Multiplikation einer Zeile mit einem Skalar<br />
linalg::multCol Multiplikation einer Spalte mit einem Skalar<br />
linalg::expr2Matrix Umwandlung von linearen Gleichungssys-<br />
temen in Matrixschreibweise<br />
Die <strong>MuPAD</strong>-Bibliothek linalg stellt eine Reihe an wichtigen Funktio-<br />
nen aus dem Gebiet der Linearen Algebra zur Verfügung. <strong>Eine</strong>n Über-<br />
blick über den Umfang des Paketes erhalten wir mit der Funktion in-<br />
fo:<br />
• info(linalg)<br />
Library 'linalg': the linear algebra package<br />
-- Interface:<br />
linalg::addCol, linalg::addRow,<br />
linalg::adjoint,<br />
linalg::angle, linalg::basis,<br />
linalg::charmat,<br />
linalg::charpoly, linalg::col,<br />
linalg::companion,<br />
linalg::concatMatrix, linalg::crossProduct, ...<br />
-- Exported:<br />
conjugate, exp, norm, normal<br />
Aufgrund ihrer Größe wurde die Ausgabe hier nur ausschnittsweise<br />
widergegeben.
4 Die linalg-Bibliothek<br />
Wir wollen nun einige Funktionen aus der Bibliothek zur Linearen<br />
Algebra kennen lernen und beginnen mit der Erstellung einer Bei-<br />
spielmatrix:<br />
• A:= matrix([[1, -3, 3], [3, -5, 3], [6, -6, 4]])<br />
<br />
1 − 3 3<br />
3 − 5 3<br />
6 − 6 4<br />
Das System der Eigenwerte und Eigenvektoren von A liefert uns die<br />
folgende Funktion:<br />
• linalg::eigenvectors(A)<br />
⎡<br />
<br />
⎢<br />
⎣ − 2, 2,<br />
⎡<br />
<br />
1 − 1 ⎢<br />
1 , 0 , ⎣4, 1,<br />
0 1<br />
⎡ ⎛<br />
1<br />
⎢ ⎜2<br />
⎣ ⎝1<br />
2<br />
1<br />
⎞⎤<br />
⎤⎤<br />
⎟⎥<br />
⎥⎥<br />
⎠⎦<br />
⎦⎦<br />
Das Ergebnis besteht in diesem Fall aus einer Liste von zwei Teillis-<br />
ten. In jeder Teilliste steht zuerst der entsprechende Eigenwert (hier<br />
-2 und 4), dann dessen algebraische Vielfachheit (hier 2 und 1, d.h.<br />
-2 ist eine doppelte Nullstelle des charakteristischen Polynoms von<br />
A), und schließlich eine Liste von Eigenvektoren zum jeweiligen Ei-<br />
genwert. Diese Folge von Eigenvektoren bildet jeweils ein Eigensys-<br />
tem zum entsprechenden Eigenwert.<br />
folgt:<br />
Das charakteristische Polynom einer Matrix bestimmen wir wie<br />
• linalg::charpoly(A, x)<br />
x 3 − 12 ⋅ x − 16<br />
Dabei übergeben wir dieser Funktion als 2. Parameter die Unbe-<br />
stimmte des charakteristischen Polynoms (hier: x).<br />
Die Diagonalisierung einer Matrix führen wir direkt über die fol-<br />
gende Anweisung aus:<br />
51
52<br />
4.1 Lineare Abhängigkeit und Unabhängigkeit von Vektoren<br />
• linalg::jordanForm(A)<br />
<br />
− 2 0 0<br />
<br />
0 4 0<br />
0 0 − 2<br />
Das Paket stellt auch Funktionen <strong>für</strong> die elementaren Zeilen- und<br />
Spaltenoperationen zur Verfügung, z.B. linalg::addRow und li-<br />
nalg::addCol, linalg::multCol und linalg::multRow, usw. Damit<br />
lassen sich z.B. die einzelnen Rechenoperationen des Gauß-<br />
Verfahrens schrittweise durchführen.<br />
Übungen<br />
Was macht die Funktion linalg::gaussElim? Welche Informationen<br />
liefert uns die Option All dieser Funktion?<br />
Wie berechnet man die Determinante einer quadratischen Matrix<br />
in <strong>MuPAD</strong>? Geben Sie Beispiele an!<br />
Berechnen Sie die allgemeine Lösung des folgenden Systems linearer<br />
Gleichungen: x + y+ z = 10, 2x − y+ z = 8, 3x + 2z = 18.<br />
Verwen-<br />
den Sie da<strong>für</strong> die Funktionen linalg::expr2Matrix und li-<br />
nalg::matlinsolve! Finden Sie heraus, mit welcher Funktion<br />
der Standard-Bibliothek Sie dieses System auch direkt lösen<br />
können!<br />
4.1 Lineare Abhängigkeit und Unabhängigkeit von<br />
Vektoren<br />
Wir wollen nun Vektoren auf lineare Abhängigkeit bzw. Unabhängig-<br />
keit untersuchen. Wie so oft lernt man den Umgang mit Vektoren in<br />
<strong>MuPAD</strong> am besten anhand von Beispielen.
4 Die linalg-Bibliothek<br />
Dazu betrachten wir zunächst die folgenden drei Vektoren:<br />
F<br />
G<br />
HG<br />
I<br />
1 1 0<br />
1 1<br />
2J<br />
, 4 0 J<br />
G<br />
J,<br />
J<br />
G<br />
J . Der Ansatz a⋅ J<br />
G 2 b c G<br />
J + ⋅ J<br />
G4<br />
G<br />
J + ⋅ J −1<br />
2 1<br />
−1<br />
2<br />
K<br />
F<br />
H<br />
I<br />
K<br />
F<br />
H<br />
I<br />
K<br />
homogenes lineares Gleichungssystem:<br />
F<br />
H<br />
I<br />
K<br />
F<br />
H<br />
I<br />
K<br />
F<br />
G<br />
HG<br />
F<br />
G<br />
HG<br />
I<br />
J<br />
K<br />
53<br />
J =<br />
0<br />
0 0 führt dann auf ein<br />
1<br />
I<br />
1 1 0<br />
2 4 0 J −1<br />
2 1<br />
⋅<br />
K<br />
F<br />
G<br />
HG<br />
I<br />
J<br />
K<br />
J =<br />
a<br />
b<br />
c<br />
Besitzt dieses System als einzige Lösung a= b= c=<br />
0, so sind die<br />
Vektoren linear unabhängig, anderenfalls linear abhängig.<br />
Wir erstellen die drei Vektoren in <strong>MuPAD</strong>:<br />
• v1:= matrix([1, 2, -1]):<br />
• v2:= matrix([1, 4, 2]):<br />
• v3:= matrix([0, 0, 1]):<br />
und erhalten die entsprechende Koeffizientenmatrix des linearen Glei-<br />
chungssystems wie folgt:<br />
• A:= v1 . v2 . v3<br />
<br />
1<br />
<br />
1 0<br />
2 4 0<br />
− 1 2 1<br />
Der Punktoperator fügt also in diesem Kontext Vektoren zu einer Mat-<br />
rix zusammen.<br />
In <strong>MuPAD</strong> können wir das Gleichungssystem mit dem Befehl<br />
• linalg::matlinsolve(A, matrix([0, 0, 0]))<br />
<br />
0<br />
0<br />
0<br />
lösen. Ihr werden die Koeffizientenmatrix und der Rechte-Seite-<br />
Vektor als Parameter übergeben.<br />
Wir erhalten das Ergebnis a= b= c=<br />
0, d.h. die Vektoren sind linear<br />
unabhängig.<br />
Wir wissen, dass in einem dreidimensionalen Vektorraum eine<br />
Menge von drei linear unabhängigen Vektoren eine Basis bildet. Fer-<br />
F<br />
G<br />
HG<br />
0<br />
0<br />
0<br />
I<br />
J<br />
KJ<br />
.
54<br />
4.1 Lineare Abhängigkeit und Unabhängigkeit von Vektoren<br />
ner ist uns bekannt, dass jeder Vektor<br />
F<br />
G<br />
H<br />
G<br />
a<br />
a<br />
a<br />
1<br />
2<br />
3<br />
I<br />
J<br />
K<br />
J<br />
des Vektorraumes eindeu-<br />
tig bestimmte Koordinaten bezüglich dieser Basis haben muss, d.h. es<br />
gibt eindeutig bestimmte Zahlen x1, x2, x3,<br />
so dass gilt:<br />
F 1I<br />
F1I<br />
F0I<br />
a1<br />
x1⋅G2x2 4 x3<br />
0 a2<br />
G<br />
J + ⋅ J<br />
G<br />
J + ⋅ J<br />
G<br />
J −1<br />
2 1 a<br />
=<br />
F I<br />
G<br />
J . Wir wollen nun versuchen, im Falle des<br />
J<br />
H<br />
K<br />
Vektors<br />
F<br />
G<br />
HG<br />
1<br />
2<br />
3<br />
H<br />
I<br />
J<br />
KJ<br />
K<br />
H<br />
K<br />
H<br />
3<br />
K<br />
seine Koordinaten bezüglich der Basis aus unseren drei<br />
Vektoren zu bestimmen. Das ist ganz einfach, denn wir müssen ledig-<br />
lich das inhomogene lineare Gleichungssystem<br />
F<br />
G<br />
HG<br />
I<br />
1 1 0<br />
2 4 0 J −1<br />
2 1<br />
⋅<br />
lösen. Das machen wir ganz analog zur obigen Vorgehensweise:<br />
• linalg::matlinsolve(A, matrix([1, 2, 3]))<br />
<br />
1<br />
0<br />
4<br />
Für einen beliebigen Vektor<br />
lung wie folgt:<br />
F<br />
G<br />
H<br />
G<br />
a<br />
a<br />
a<br />
1<br />
2<br />
3<br />
I<br />
J<br />
K<br />
J<br />
K<br />
F<br />
G<br />
H<br />
G<br />
x<br />
x<br />
x<br />
1<br />
2<br />
3<br />
I<br />
J<br />
K<br />
J =<br />
erhalten wir die Koordinatendarstel-<br />
• L:=linalg::matlinsolve(A, matrix([a1, a2, a3]))<br />
⎛<br />
⎜<br />
⎝<br />
4 ⋅ a1 −<br />
2 ⋅ a1 − a2 <br />
2<br />
− a1 + a2 <br />
2<br />
+ a3<br />
3 ⋅ a2<br />
2<br />
⎞<br />
⎟<br />
⎠<br />
Das ist die allgemeine Lösung des obigen Gleichungssystems, was wir<br />
sofort nachprüfen können:<br />
F<br />
G<br />
HG<br />
1<br />
2<br />
3<br />
I<br />
J<br />
KJ
4 Die linalg-Bibliothek<br />
• L[1] * v1 + L[2] * v2 + L[3] * v3<br />
<br />
a1<br />
a2<br />
a3<br />
Übungen<br />
Prüfen Sie die Vektoren<br />
bzw. Unabhängigkeit!<br />
F<br />
G<br />
HG<br />
I<br />
55<br />
2 3 −1<br />
1J,<br />
0 2 J<br />
G<br />
J,<br />
J<br />
G<br />
J auf lineare Abhängigkeit<br />
J<br />
1 −1<br />
0<br />
K<br />
F<br />
H<br />
Zeigen Sie mit <strong>MuPAD</strong>: Zwei Vektoren des IR 3 sind genau dann<br />
linear abhängig, wenn sie skalare Vielfache voneinander sind.<br />
4.2 <strong>Eine</strong> Anwendung aus der Analytischen Geometrie<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
linalg::angle Berechnung des Winkels zwischen zwei Vekto-<br />
ren<br />
Wir betrachten die Ebene Ex : l m<br />
2 1 −3<br />
= G 1 G<br />
J + ⋅ − J<br />
G 1 G<br />
J + ⋅ J<br />
G 1 G<br />
−1<br />
−1<br />
4<br />
F<br />
H<br />
I<br />
K<br />
F<br />
H<br />
I<br />
J<br />
KJ<br />
F<br />
H<br />
I<br />
K<br />
I<br />
K<br />
F<br />
H<br />
F<br />
H<br />
I<br />
K<br />
I<br />
K<br />
F<br />
H<br />
I<br />
J<br />
K<br />
J<br />
und eine Gerade<br />
gx : k<br />
3 4<br />
= G0<br />
G<br />
J + ⋅ − J<br />
G 1 . Gesucht ist der Schnittpunkt von Gerade und Ebene.<br />
G 1 2<br />
F I<br />
G<br />
H<br />
G<br />
K<br />
Wir setzen dazu die Ebenen- und die Geradengleichung gleich<br />
F<br />
H<br />
I<br />
K<br />
F<br />
H<br />
I<br />
K<br />
F<br />
H<br />
I<br />
K<br />
F<br />
H<br />
I<br />
K<br />
F<br />
H<br />
I<br />
K<br />
3 4 2 1 3 1 3 4 1 1 3 4<br />
0J<br />
+ ⋅ 1 1 1 1 1 1 1 1 1 1 1<br />
J<br />
G−<br />
G<br />
J 1 2 1 1 4 1 4 2 2 1 4 2<br />
=<br />
−<br />
− −<br />
G<br />
J + ⋅ − J<br />
G<br />
J + ⋅ J<br />
G<br />
J ⇔ ⋅ − J<br />
G<br />
J + ⋅ J<br />
G<br />
J + ⋅ J<br />
G = G<br />
G−<br />
G<br />
J − −<br />
−<br />
−<br />
⇔<br />
− −<br />
− J − −<br />
⋅<br />
l<br />
k l m l m k<br />
m<br />
k<br />
und erhalten als Koeffizientenmatrix des linearen Gleichungssys-<br />
tems nach dieser Umformung:<br />
F<br />
H<br />
I<br />
K<br />
F<br />
H<br />
I<br />
J<br />
K<br />
J<br />
F<br />
H<br />
I<br />
K<br />
F<br />
G<br />
H<br />
G<br />
I F<br />
G<br />
K H<br />
G<br />
I<br />
J<br />
K<br />
J<br />
F<br />
1<br />
= G−1<br />
G 2<br />
H<br />
I<br />
J<br />
K<br />
J
56<br />
4.2 <strong>Eine</strong> Anwendung aus der Analytischen Geometrie<br />
• A:= matrix([[1, -3, -4], [-1, 1, 1], [-1, 4, -2]])<br />
<br />
1<br />
<br />
− 3 − 4<br />
− 1 1 1<br />
− 1 4 − 2<br />
Als rechte Seite des Systems erhält man nach obiger Rechnung den<br />
Vektor:<br />
• b:= matrix([1, -1, 2])<br />
<br />
1<br />
− 1<br />
2<br />
Das lösen wir wie bereits im vorhergehenden Abschnitt durch die fol-<br />
gende Anweisung:<br />
• L:= linalg::matlinsolve(A, b)<br />
⎛<br />
⎜<br />
⎝<br />
<br />
6<br />
5<br />
3<br />
5<br />
− 2 <br />
5<br />
⎞<br />
⎟<br />
⎠<br />
Die dritte Komponente des Lösungsvektors liefert uns den Wert, den<br />
wir <strong>für</strong> k in die obige Geradengleichung einsetzen müssen. Wir erhal-<br />
ten damit die folgenden Koordinaten <strong>für</strong> den Schnittpunkt von Gerade<br />
und Ebene:<br />
• matrix([3, 0, 1]) + L[3] * matrix([4, -1, 2])<br />
⎛<br />
7<br />
5 ⎜<br />
⎜2<br />
⎝5<br />
<br />
1<br />
5<br />
Übungen<br />
⎞<br />
⎟<br />
⎠<br />
Für die Multiplikation und Addition von Matrizen gilt das Distributivgesetz,<br />
d.h. es ist A⋅ B+ C = A⋅ B+ A⋅C a f . Rechnen Sie nach, dass<br />
dies <strong>für</strong> alle 2x2 Matrizen korrekt ist. Hinweis: Verwenden Sie die<br />
Funktionen expand.
Für welche x ist die Matrix<br />
bar?<br />
4 Die linalg-Bibliothek<br />
F<br />
G<br />
HG<br />
x−1 x− 1 x+<br />
2<br />
x−1 2x− 3 x+<br />
5<br />
2( x−1) 3x− 4 3x+ 4<br />
I<br />
J<br />
KJ<br />
57<br />
nicht invertier-<br />
Hinweis: Berechnen Sie die Determinante von A. Die Determi-<br />
nante von A ist ein Polynom in x, dessen Nullstellen die gesuch-<br />
ten Werte <strong>für</strong> x sind, <strong>für</strong> die A nicht invertierbar ist. Verwenden<br />
Sie die Funktionen linalg::det, solve.<br />
Gegeben seien die Matrizen A und B mit<br />
A =<br />
F<br />
G<br />
HG<br />
I<br />
0 −2<br />
x 1 3 0<br />
2 3 −2J,<br />
B = − J<br />
G0<br />
2 3 G<br />
J . Für welche x ∈IR ist die Summe<br />
J<br />
0 4 −4<br />
x −3<br />
5<br />
K<br />
von A und B nicht invertierbar?<br />
F<br />
H<br />
I<br />
K<br />
Bestimmen Sie die allgemeine Lösung des linearen Gleichungs-<br />
F<br />
G<br />
H<br />
1 2 0 4<br />
4<br />
systems Ax = b mit: A= −1 G<br />
8<br />
−2 1<br />
−1 18 17<br />
, b=<br />
.<br />
−6<br />
−8<br />
J G J<br />
2 4 1 10 11<br />
Es seien die Punkte A, B, C und D im IR 3 wie folgt gegeben: A(1<br />
; 2 ; 3), B = (-1 ; 0 ; 2) und C = (-1 ; 2 ; -3) sowie D = (0 ; 4 ;<br />
4). Bestimmen Sie die Geradengleichungen der Gerade G1 durch<br />
die Punkte A und B und der Gerade G2 durch die Punkte C und<br />
D. Bestimmen Sie den Winkel, in dem die Richtungsvektoren von<br />
G1 und G2 zueinander liegen. Hinweis: Verwenden Sie die Funk-<br />
tion linalg::angle.<br />
Zeigen Sie mit <strong>MuPAD</strong>, dass <strong>für</strong> beliebige 3x3 Matrizen A und B<br />
folgendes gilt: det( A⋅ B) = det( A) ⋅ det( B)<br />
. Hinweis: Verwenden Sie die<br />
Funktionen linalg::det und expand.<br />
I<br />
J<br />
K<br />
F<br />
G<br />
H<br />
3<br />
I<br />
J<br />
K
58<br />
5.1 Kombinatorische Berechnungen<br />
5. Kombinatorik und Wahrscheinlichkeitsrechnung<br />
Dieses Kapitel soll Ihnen einen Einblick in die Einsatzmöglichkeiten<br />
von <strong>MuPAD</strong> in der Stochastik geben.<br />
5.1 Kombinatorische Berechnungen<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
fact Fakultät<br />
binomial Bestimmung des Binomialkoeffizienten<br />
Wir beginnen dazu mit einfachen Aufgaben aus der Kombinatorik:<br />
1. Wir werfen mit einem idealen Würfel 30 mal und legen Wert auf<br />
die Reihenfolge der Wurfergebnisse. Dann gibt es:<br />
• 6^30<br />
221073919720733357899776<br />
verschiedene Wurfergebnisse.<br />
2. Es sollen 25 Personen auf 25 Plätze verteilt werden. Wie viele<br />
mögliche Sitzverteilungen gibt es dabei? Die Antwort lautet:<br />
• fact(25)<br />
15511210043330985984000000<br />
Für 100 Personen und 100 Plätze lautet das Ergebnis:<br />
• fact(100)<br />
9332621544394415268169923885626670049071596826438162146<br />
8592963895217599993229915608941463976156518286253697920<br />
827223758251185210916864000000000000000000000000<br />
Nun, diese Zahl ist wirklich so groß, dass wir sie gar nicht mehr<br />
überblicken können. Um eine Vorstellung von dieser Zahl zu erlan-<br />
gen, führen wir die Berechnung wie folgt aus:<br />
• float(fact(100))
5 Kombinatorik und Wahrscheinlichkeitsrechnung<br />
9.332621545 ⋅ 10 157<br />
Geben wir den 100 Personen <strong>für</strong> das Wechseln von einer Sitzord-<br />
nung zur nächsten 15 Minuten Zeit, so würde es:<br />
• float(fact(100)/35040)<br />
2.663419391 ⋅ 10 153<br />
Jahre dauern, um alle Sitzordnungen auszuprobieren.<br />
3. Alle möglichen Ziehungsergebnisse beim Lotto „6 aus 49“ erhalten<br />
wir bekannterweise wie folgt:<br />
• binomial(49, 6)<br />
13983816<br />
Die Wahrscheinlichkeit, im Lotto „6 aus 49“ genau 6 Richtige zu<br />
erhalten, ist also näherungsweise:<br />
• float(1/binomial(49, 6))<br />
Übungen<br />
0.00000007151123842<br />
Machen Sie sich ein wenig mit den Funktionen fact und binomi-<br />
al vertraut. Experimentieren Sie ruhig auch mit großen Zahlen –<br />
Ihnen sind dabei (fast) keine Grenzen gesetzt.<br />
Wir werfen eine Münze 20 mal. Wie viele mögliche Wurfergebnisse<br />
gibt es?<br />
Bei einem Kartenspiel erhält man 8 aus 32 Karten. Wie viele<br />
mögliche „Blätter“ kann man erhalten?<br />
Nach einem Vortrag sollen 5 <strong>Mathematik</strong>er von einem Reporter<br />
fotografiert werden. Sie können sich aber über die Anordnung<br />
nicht einigen. Folglich beschließen Sie, sich in allen möglichen<br />
Anordnungen fotografieren zu lassen. Der Reporter hat einen<br />
Film mit 32 Bildern. Reicht ein Film?<br />
59
60<br />
5.2 Simulation einfacher Laplace-Experimente<br />
Das Vorgehen aus der vorherigen Aufgabe hat sich bewährt. Nun<br />
treffen sich 5 <strong>Mathematik</strong>er auf einem Kongress. Sie entstam-<br />
men zwei verschiedenen Nationalitäten. Auch sie wollen sich<br />
wieder fotografieren lassen – ihnen kommt es jedoch nur auf An-<br />
ordnung bezüglich ihrer Nationalität an. Wie viele mögliche Auf-<br />
nahmen gibt es? Ist die Aufgabe überhaupt eindeutig gestellt<br />
bzw. lösbar?<br />
5.2 Simulation einfacher Laplace-Experimente<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
random Erzeugung von Zufallszahlen<br />
print Funktion zur Ausgabe von Daten<br />
Um einfache Laplace-Experimente zu simulieren, können wir in Mu-<br />
PAD auf die Funktion random zurückgreifen. Zunächst wollen wir als<br />
einfachsten Fall einen Münzwurf mit einer idealen Münze simulieren.<br />
Wir einigen uns darauf, dass die 1 <strong>für</strong> das Symbol „Kopf“ und die 2<br />
<strong>für</strong> das Symbol „Zahl“ steht. Die Münze soll zunächst nur einmal ge-<br />
worfen werden. Wir definieren uns zunächst eine Variable <strong>für</strong> unser<br />
Zufallsexperiment. Diese nennen wir MuenzWurf:<br />
• MuenzWurf:= random(1..2):<br />
Wir können nun das einmalige Würfeln einer Münze durch:<br />
• MuenzWurf()<br />
2<br />
simulieren. Um die Münze 10 mal hintereinander zu werfen, können<br />
wir den Aufruf dieser Funktion in eine Schleife packen und jeden Wurf<br />
über die Funktion print auf dem Bildschirm ausgeben:<br />
• for i from 1 to 10 do print(MuenzWurf()) end_for<br />
1
2<br />
2<br />
1<br />
1<br />
2<br />
1<br />
2<br />
2<br />
2<br />
5 Kombinatorik und Wahrscheinlichkeitsrechnung<br />
Natürlich können wir damit auch das 10-malige Würfeln mit einem<br />
idealen Würfel simulieren. Wir ändern die obigen Zeilen nur ein wenig<br />
ab, da wir ja nun Zufallszahlen zwischen 1 bis 6 erzeugen müssen.<br />
• Wuerfeln:= random(1..6):<br />
• for i from 1 to 10 do print(Wuerfeln()) end_for<br />
4<br />
4<br />
3<br />
3<br />
2<br />
1<br />
4<br />
4<br />
6<br />
1<br />
Übungen<br />
In einer Urne befinden sich 30 Kugeln, welche mit den Zahlen 1<br />
bis 30 markiert sind. Sie unterscheiden sich nur in ihrer Markie-<br />
61
62<br />
5.3 Relative Häufigkeiten und das Gesetz der großen Zahlen<br />
rung, nicht in ihrer Größe oder Oberfläche. Simulieren Sie mit<br />
<strong>MuPAD</strong> 10 Ziehungen aus dieser Urne, wobei die gezogene Kugel<br />
stets wieder zurückgelegt werden soll und lediglich ihre Markie-<br />
rung vor dem Zurücklegen festgestellt und notiert werden soll.<br />
Führen Sie das Experiment ein weiteres Mal aus. Wie es der Zufall<br />
will, so sollten <strong>—</strong> nach dem Gesetz der großen Zahlen zu ur-<br />
teilen <strong>—</strong> nun andere Zahlen erscheinen.<br />
In einer Schulklasse von 27 Personen wird zu Beginn jeder Stunde<br />
eine Schülerin oder ein Schüler aufgefordert, den Unterrichts-<br />
inhalt der vergangenen Stunde zu wiederholen. Dabei wird sie<br />
oder er zufällig nach folgendem Verfahren ausgelost: In einem<br />
Kasten befinden sich die Namen aller Personen. Zu Beginn zieht<br />
der Lehrer einen Zettel mit einem Namen – diese Person ist da-<br />
mit auserwählt. Wie groß ist die Wahrscheinlichkeit, dass dreimal<br />
hintereinander die gleiche Person den Unterrichtsinhalt der ver-<br />
gangenen Stunde wiederholen muss?<br />
5.3 Relative Häufigkeiten und das Gesetz der großen<br />
Zahlen<br />
Wir wollen nun die Ergebnisse aus dem vorhergehenden Abschnitt<br />
nutzen, um relative Häufigkeiten zu bestimmen. Dazu betrachten wir<br />
wieder einen idealen Würfel und zählen die relative Häufigkeit der<br />
Sechsen. Wir schreiben eine Prozedur, der wir die Anzahl n der<br />
Durchführungen unseres Experimentes übergeben, die dann in der<br />
Variablen rh die Anzahl der gewürfelten Sechsen zählt und anschlie-<br />
ßend die relative Häufigkeit per Division von rh durch n berechnet:<br />
• Wuerfeln:= random(1..6):<br />
• relativeHaeufigkeit:= proc(n)<br />
local rh;<br />
begin<br />
rh := 0;<br />
for i from 1 to n do
5 Kombinatorik und Wahrscheinlichkeitsrechnung<br />
if Wuerfeln() = 6 then rh := rh + 1 end_if;<br />
end_for;<br />
return(rh/n)<br />
end:<br />
Mit dem Aufruf:<br />
• relativeHaeufigkeit(10)<br />
1<br />
10<br />
bestimmen wir nun die relative Häufigkeit der 6 bei 10-maligem Wür-<br />
feln. Wir wissen, dass die Wahrscheinlichkeit, eine 6 zu würfeln, bei<br />
1/6 liegt.<br />
Bei zunehmender Versuchsanzahl (also bei wachsendem n) nähert<br />
sich die relative Häufigkeit der tatsächlichen Wahrscheinlichkeit im-<br />
mer besser an. Wir wollen das experimentell überprüfen und würfeln<br />
hintereinander zunächst 10-mal, dann 100-mal, dann 1000-mal usw.,<br />
bis maximal 100000-mal und bestimmen jeweils die zugehörige rela-<br />
tive Häufigkeit:<br />
• float(relativeHaeufigkeit(10))<br />
0.2<br />
• float(relativeHaeufigkeit(100))<br />
0.17<br />
• float(relativeHaeufigkeit(1000))<br />
0.157<br />
• float(relativeHaeufigkeit(10000))<br />
0.1688<br />
• float(relativeHaeufigkeit(100000))<br />
0.16768<br />
63
64<br />
Übungen<br />
5.4 Berechnung der Binomialverteilung<br />
Versuchen Sie, das obige Berechnungsverfahren so zu modifizieren,<br />
dass es Ihnen die relative Häufigkeit von Einsen und Sech-<br />
sen bestimmt.<br />
Hinweis: Denken Sie dabei besonders über die Rolle der if-<br />
Anweisung in der obigen Prozedur nach.<br />
Schreiben Sie eine neue Prozedur, die die relative Häufigkeit der<br />
0 beim Roulette berechnet. Gehen Sie dabei wieder von n-<br />
maliger Durchführung des Experimentes aus. Hinweis: Auch hier<br />
können Sie große Teile der obigen Prozedur übernehmen – den-<br />
ken Sie lediglich noch einmal über die Rollen der random-<br />
Funktion in der Prozedur nach.<br />
5.4 Berechnung der Binomialverteilung<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
sum Berechnung von Summen<br />
plot::Bars2d Grafische Darstellung von „Daten“ mit <strong>MuPAD</strong><br />
plot Ausgabe einer Grafik auf dem Bildschirm<br />
Wir betrachten ein Experiment, welches n-mal (voneinander un-<br />
abhängig) durchgeführt wird. Wir interessieren uns dabei nur <strong>für</strong> die<br />
zwei möglichen Versuchsausgänge „Treffer“ und „Niete“.<br />
Wir gehen davon aus, dass die Wahrscheinlichkeit <strong>für</strong> einen Treffer<br />
durch p (0
5 Kombinatorik und Wahrscheinlichkeitsrechnung<br />
• B := (n, p, k) -> binomial(n,k) * p^k * (1-p)^(n-k):<br />
Diese Funktion können wir in einem beliebigen Zufallsexperiment<br />
verwenden, solange wir eine Binomialverteilung zugrunde legen kön-<br />
nen.<br />
Dazu ein Beispiel: Wir werfen 50-mal mit einem idealen Würfel.<br />
Gesucht sind die Wahrscheinlichkeiten der folgenden Ereignisse: (1)<br />
Man wirft genau 10-mal eine 6, (2) Man wirft mindestens 2 und höch-<br />
stens 18 Sechsen.<br />
Wir wissen nun, dass die oben mit p bezeichnete Wahrscheinlich-<br />
keit 1/6 ist. Ferner ist n=50 die Anzahl der Durchführungen. Damit ist<br />
die Wahrscheinlichkeit von Ereignis (1) gegeben durch:<br />
• B(50, 1/6, 10)<br />
<br />
46712912853763555176556110382080078125<br />
404140638732382030321569800228268146688<br />
<strong>Eine</strong>n Näherungswert erhalten wir bekannterweise durch:<br />
• float(%)<br />
0.1155857847<br />
Zur Bestimmung der Wahrscheinlichkeit von Ereignis (2) müssen wir<br />
die entsprechenden Einzelwahrscheinlichkeiten aufsummieren:<br />
• float(sum(B(50, 1/6, k), k = 2..18))<br />
0.9985409078<br />
Natürlich können wir eine solche Binomialverteilung auch grafisch<br />
darstellen. Dazu nutzen wir den Befehl plot::Bars2d, mit dem Säu-<br />
lendiagramme erstellt werden können:<br />
• diagramm:= plot::Bars2d([[B(50, 1/6, 7), B(50, 1/6, 10),<br />
B(50, 1/6, 14)]]):<br />
Mit Hilfe des Befehls plot geben wir das Diagramm auf dem Bild-<br />
schirm aus:<br />
65
66<br />
• plot(diagramm)<br />
y<br />
0.14<br />
0.12<br />
0.10<br />
0.08<br />
0.06<br />
0.04<br />
0.02<br />
5.4 Berechnung der Binomialverteilung<br />
0.00<br />
0.0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 2.0 2.2 2.4 2.6 2.8 3.0<br />
Um die vollständige Binomialverteilung zu zeichnen, nutzen wir den<br />
Folgenoperator $. So kommen wir mit einer sehr kurzen Eingabe zu-<br />
recht:<br />
• plot(plot::Bars2d([[B(50, 1/6, i) $ i = 0..50]]))<br />
y<br />
0.14<br />
0.12<br />
0.10<br />
0.08<br />
0.06<br />
0.04<br />
0.02<br />
0.00<br />
0 10 20 30 40 50<br />
Nun wollen wir Binomialverteilungen <strong>für</strong> jeweils verschiedene Wahr-<br />
scheinlichkeiten in einem Bild darstellen:<br />
x<br />
x
5 Kombinatorik und Wahrscheinlichkeitsrechnung<br />
• plot(plot::Bars2d([[B(50,j/6,i) $ i = 0..50] $ j=1..5]))<br />
y<br />
0.14<br />
0.12<br />
0.10<br />
0.08<br />
0.06<br />
0.04<br />
0.02<br />
Übungen<br />
0.00<br />
0 20 40 60 80 100 120 140 160 180 200 220 240 260<br />
Wir werfen mit einer idealen Münze 100 mal. Bestimmen Sie die<br />
Wahrscheinlichkeiten der folgenden Ereignisse: (1) Genau 50<br />
mal Zahl. (2) Mindestens 40 und höchstens 60 mal Zahl. (3)<br />
Kein einziges Mal Zahl. Verwenden Sie dazu die Funktion B von<br />
oben.<br />
Wir würfeln mit einem idealen Würfel 1500 mal. Bestimmen Sie<br />
die Wahrscheinlichkeit, zwischen 400 und 500 mal eine gerade<br />
Zahl zu werfen.<br />
Bei einem Glücksspiel wird ein Glücksrad 4 mal gedreht. Es können<br />
die Ziffern 0 bis 9 auftreten. Wie groß ist die Wahrschein-<br />
lichkeit der folgenden Ereignisse:<br />
(a) Sie erhalten genau zweimal eine gerade Zahl.<br />
(b) Sie erhalten mindestens dreimal eine Zahl kleiner 5.<br />
(c) Sie erhalten 2 oder 3 mal eine Zahl, die größer ist als 2.<br />
x<br />
67
68<br />
5.4 Berechnung der Binomialverteilung<br />
6. Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
Wir haben bereits in den Abschnitten über Analysis und Stochastik<br />
einige der Möglichkeiten kennen gelernt, die <strong>MuPAD</strong> bietet, um ma-<br />
thematische Sachverhalte zu visualisieren. Nun wollen wir uns in die-<br />
sem Kapitel noch etwas intensiver den grafischen Möglichkeiten von<br />
<strong>MuPAD</strong> widmen.<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
plot::Arrow2d/3d Zeichnen von 2D- und 3D-Pfeilen<br />
plot::Circle2d/3d Zeichnen von 2D- und 3D-Kreisen<br />
plot::Cone Zeichnen von 3D-Kegeln und Kegelschnitten<br />
plot::Function2d/3d Zeichnen von 2D- und 3D-Funktionsgraphen<br />
plot::Hatch Zeichnen von Schraffuren in 2D<br />
plot::<strong>MuPAD</strong>Cube Zeichnen des <strong>MuPAD</strong>-Cubes<br />
plot::Piechart2d/3d Zeichnen von 2D- und 3D-<br />
Tortendiagrammen<br />
plot::Point2d/3d Zeichnen von 2D- und 3D-Punkten<br />
plot::PointList2d Zeichnen von 2D- und 3D-Punktelisten<br />
plot::Polygon2d/3d Zeichnen von Polygonen in 2D und 3D<br />
plot::Rectangle Zeichnen von Rechtecken in 2D<br />
plot::Scene2d/3d Zeichnen von 2D- und 3D-Szenen<br />
plot::Sphere Zeichnen von Kugeln in 3D<br />
plot::Tube Zeichnen von Röhren in 3D<br />
plot::XRotate Zeichnen von Rotationskörpern in 3D<br />
Axes = Boxed Koordinatensystem in Form einer Box dar-<br />
stellen<br />
BackgroundColor = c Hintergrundfarbe in Farbe c<br />
Color = RGB::Red Graphische Objekte in roter Farbe darstellen<br />
Footer = „text“ Bildunterschrift<br />
Header = „text“ Bildüberschrift
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
Neue <strong>MuPAD</strong>-Funktionen<br />
GridVisible = TRUE Koordinatensystem mit Gitterlinien hinterle-<br />
gen<br />
Height/Width Festlegung der Höhe/Breite <strong>für</strong> graphische<br />
Szenen<br />
Submesh Numerische (Zwischen-)Stützstellen <strong>für</strong><br />
6.1 Funktionsgraphen<br />
glattere Darstellung<br />
In den vorhergehenden Kapiteln haben wir bereits die Funktion plot-<br />
func2d zur Darstellung 2-dimensionaler Funktionsgraphen verwen-<br />
det. Hier wollen wir zu Beginn eine neue Funktion kennen lernen, mit<br />
der wir ebenfalls 2-dimensionale Funktionsgraphen zeichnen können:<br />
die Funktion plot::Function2d. Hierbei handelt es sich um eine<br />
Funktion aus der plot-Bibliothek.<br />
Prinzipiell leistet diese Funktion alles, was uns auch plotfunc2d<br />
bietet, jedoch liefert uns das Konzept der plot-Bibliothek, das wir<br />
hier kurz vorstellen wollen, weitergehende Vorteile insbesondere beim<br />
Erstellen komplexerer Grafiken.<br />
Wir wollen den Graphen der Funktion f( x)= x<br />
3 im Intervall von –3<br />
bis 3 zeichnen. Im Gegensatz zu vorher erstellen wir uns zunächst<br />
den Graphen der Funktion als grafisches Objekt:<br />
• f:= plot::Function2d(x^3, x = -3..3)<br />
<br />
plot::Function2d x 3 <br />
, x =−3 ..3<br />
Beachten Sie, dass der Graph von f nicht unmittelbar auf dem Bild-<br />
schirm ausgegeben wird. Erst mit dem Befehl plot wird der Graph<br />
auf dem Bildschirm ausgegeben:<br />
69
70<br />
• plot(f)<br />
6.1 Funktionsgraphen<br />
y<br />
20<br />
10<br />
-3 -2 -1 1 2 3<br />
x<br />
Wir können das natürlich auch mit einer Zeile erledigen:<br />
• plot(plot::Function2d(x^3, x = -3..3))<br />
y<br />
-10<br />
-20<br />
20<br />
10<br />
-3 -2 -1 1 2 3<br />
x<br />
-10<br />
-20<br />
Jetzt ist es aber auch möglich, den Achsenstil und die Beschriftung<br />
der Achsen vorzugeben. Dazu ein Beispiel: Wir richten die Koordina-<br />
tenachsen so aus, dass sie am linken bzw. unteren Rand der Szene<br />
dargestellt werden. Die Beschriftung der x-Achse wählen wir so, dass<br />
Markierungen an den Stellen von -3 bis 3 aufgetragen werden und<br />
sich dazwischen keine weiteren unbeschrifteten Markierungen befin-<br />
den:
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
• plot(plot::Function2d(x^3, x = -3..3), Axes = Frame,<br />
TicksNumber = Low, TicksBetween = 0)<br />
y<br />
20<br />
10<br />
0<br />
-10<br />
-20<br />
-3 -2 -1 0 1 2 3<br />
x<br />
Es ist auch möglich, den Wertebereich der Funktion, die man zeich-<br />
nen möchte, einzuschränken. Wir wollen, um dies zu verdeutlichen,<br />
einmal einen Graphen der Sinusfunktion zeichnen und wählen dazu<br />
als Definitionsbereich das Intervall 06 , π . Im Gegensatz zur normalen<br />
Darstellung lassen wir die Funktion aber nun nur in den Bereichen<br />
zeichnen, in denen sie Werte aus dem Intervall 01 , annimmt:<br />
• f:= plot::Function2d(sin(x), x = 0..6*PI,<br />
ViewingBoxYRange = 0..1):<br />
plot(f)<br />
y<br />
1.0<br />
0.9<br />
0.8<br />
0.7<br />
0.6<br />
0.5<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
0.0<br />
0 2 4 6 8 10 12 14 16 18<br />
x<br />
71
72<br />
6.1 Funktionsgraphen<br />
Um Gitterlinien in das Koordinatensystem eintragen zu lassen,<br />
wodurch das Ablesen von Koordinaten wesentlich erleichtert wird,<br />
verwendet man die Option GridVisible:<br />
• plot(f, GridVisible)<br />
y<br />
1.0<br />
0.9<br />
0.8<br />
0.7<br />
0.6<br />
0.5<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
0.0<br />
0 2 4 6 8 10 12 14 16 18<br />
Wir können auch den sichtbaren Bereich der Darstellung bestimmen.<br />
Soll beispielsweise die Funktion nur in dem Bereich <strong>für</strong> −2≤ x ≤22<br />
und<br />
−2≤ y ≤2<br />
dargestellt werden, muss die Option ViewingBox=[-2..22,<br />
-2..2] verwendet werden:<br />
• plot(f, ViewingBox = [-2..22, -2..2])<br />
y<br />
2<br />
1<br />
-2 2 4 6 8 10 12 14 16 18 20 22<br />
x<br />
-1<br />
-2<br />
x
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
Um mehrere Graphen in ein gemeinsames Koordinatensystem einzu-<br />
zeichnen, definieren wir uns zunächst die entsprechenden grafischen<br />
Objekte, ohne sie zu zeichnen:<br />
• f:= plot::Function2d(sin(x), x = 0..2*PI):<br />
g:= plot::Function2d(cos(x), x = 0..2*PI):<br />
h:= plot::Function2d(tan(x), x = 0..2*PI):<br />
Jetzt ordnen wir diesen Objekten nachträglich Eigenschaften zu - wir<br />
wollen, dass f in schwarzer Farbe erscheint, g in blauer Farbe und h<br />
in grüner Farbe:<br />
• f::Color:= RGB::Black:<br />
g::Color:= RGB::Blue:<br />
h::Color:= RGB::Green:<br />
Hier erkennt man nun bereits die Vorteile der plot-Bibliothek. Wir<br />
können bequem auf den Objekten arbeiten, ihre Eigenschaften ver-<br />
ändern und Manipulationen vornehmen, ohne sie gleich auf dem Bild-<br />
schirm ausgeben zu müssen.<br />
Schließlich zeichnen wir alle Objekte in ein Koordinatensystem,<br />
das zusätzlich mit Gitterlinien unterlegt wird und den Achsenstil Bo-<br />
xed zugewiesen bekommt:<br />
• plot(f, g, h, Axes = Boxed, GridVisible)<br />
y<br />
4<br />
3<br />
2<br />
1<br />
0<br />
-1<br />
-2<br />
-3<br />
-4<br />
0 1 2 3 4 5 6<br />
x<br />
73
74<br />
6.2 Beispiele im Umgang mit der Plot-Bibliothek<br />
6.2 Beispiele im Umgang mit der Plot-Bibliothek<br />
Die Bibliothek plot stellt insgesamt sehr viele weitere Grafikobjekte<br />
und Grafikfunktionen zur Verfügung, darunter:, plot::Function3d,<br />
plot::Ellipse2d, plot::Curve2d, plot::Curve3d,<br />
plot::Polygon2d, plot::PointList2d und plot::Scene2d/3d.<br />
Auch diese Funktionen zeichnen nicht unmittelbar auf den Bild-<br />
schirm, sondern liefern Objekte, die die zu erstellende Grafik reprä-<br />
sentieren. Sie gestatten u.a. das Zusammensetzen solcher Objekte in<br />
Gruppen oder vollständigen Grafikszenen und das Ändern von Gra-<br />
fikoptionen und Attributen auch nach dem Erzeugen des Objektes -<br />
ähnlich wie wir es bereits am Beispiel der Funktion<br />
plot::Function2d gesehen haben.<br />
Wir lernen nun einige Funktionen der plot-Bibliothek kennen, die<br />
auch das Zeichnen anderer mathematischer Objekte als Funktionen<br />
im 2-dimensionalen erlauben und beginnen dazu mit einem einfachen<br />
Beispiel zum Zeichnen von Kreisen und Ellipsen:<br />
• kreis:= plot::Circle2d([0, 0], 1):<br />
Mit dieser Zeile haben wir uns nun das grafische Objekt kreis defi-<br />
niert, das über den Befehl plot auf dem Bildschirm ausgegeben wird:<br />
• plot(kreis)<br />
y<br />
1.0<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
-1.0 -0.8 -0.6 -0.4 -0.2 0.2 0.4 0.6 0.8 1.0<br />
-0.2<br />
x<br />
-0.4<br />
-0.6<br />
-0.8<br />
-1.0
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
Soll der Kreis zusätzlich in ein Rechteck eingeschlossen werden,<br />
müssen wir zunächst das Rechteck als grafisches Objekt definieren<br />
und anschließend beide Objekte in eine gemeinsame Grafikszene ein-<br />
zeichnen.<br />
Um dieses Ziel zu erreichen, wählen wir die altbewährte Vorge-<br />
hensweise: Zunächst weisen wir das erzeugte Rechteck an eine Vari-<br />
able rechteck zu.<br />
Wir erinnern uns, dass wir den Kreis als grafisches Objekt noch<br />
immer in der Variablen kreis gespeichert haben – wir müssen ihn<br />
also nicht extra neu in <strong>MuPAD</strong> erzeugen.<br />
Somit können wir uns eine „grafische Szene“ definieren, die wir<br />
schlicht szene nennen, und in der wir beide Objekte zusammen-<br />
schließen.<br />
Anschließend wird die gesamte Szene in einem Koordinatensystem<br />
auf die gewohnte Weise mit Hilfe des plot-Befehls ausgegeben:<br />
• rechteck:= plot::Rectangle(-1..1, -1..1):<br />
• szene:= plot::Scene2d(rechteck, kreis):<br />
• plot(szene)<br />
y<br />
1.0<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
-1.0 -0.8 -0.6 -0.4 -0.2 0.2 0.4 0.6 0.8 1.0<br />
-0.2<br />
x<br />
-0.4<br />
-0.6<br />
-0.8<br />
-1.0<br />
75
76<br />
6.2 Beispiele im Umgang mit der Plot-Bibliothek<br />
Abschließend geben wir ein Beispiel zur Visualisierung von Zahlenfol-<br />
n<br />
gen in <strong>MuPAD</strong> und betrachten dazu die Folge an<br />
=<br />
n<br />
sin( ) . Um die ersten<br />
50 Folgenglieder dieser Folge zu zeichnen, müssen wir die folgenden<br />
Anweisungen eingeben:<br />
• punktfolge:= plot::PointList2d([[n, sin(n)/n]<br />
$ n = 1..50]):<br />
• plot(punktfolge)<br />
y<br />
0.8<br />
0.7<br />
0.6<br />
0.5<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
0 10 20 30 40 50<br />
-0.1<br />
x<br />
-0.2<br />
Um die Farbe der Punkte in Rot zu ändern, ersetzen wir den Wert der<br />
Option Color des Objektes punktfolge durch die gewünschte Farbe:<br />
• punktfolge::Color:= RGB::Red: plot(punktfolge)<br />
y<br />
0.8<br />
0.7<br />
0.6<br />
0.5<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
0 10 20 30 40 50<br />
-0.1<br />
x<br />
-0.2
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
Als nächstes versuchen wir, die Beschränktheit dieser Folge grafisch<br />
darzustellen.<br />
Dazu könnten wir die Folge zwischen den beiden Funktionen<br />
1 1<br />
f( x)<br />
= und gx ( ) = − einschließen.<br />
x<br />
x<br />
Würden wir in diesem Fall auf die Funktion plotfunc2d zurück-<br />
greifen, so hätten wir keine Chance, nachträglich die Folgenglieder in<br />
unsere Grafik einzufügen.<br />
Mit den Funktionen der plot-Bibliothek (ihre Funktionen ermögli-<br />
chen es, dass einzelne grafische Bestandteile wie z.B. Punkte oder<br />
Funktionsgraphen als eigenständige Objekte definiert werden können)<br />
kann das Problem elegant und schnell durch die folgenden Zeilen ge-<br />
löst werden:<br />
• f:= plot::Function2d(1/x, x = 0..50):<br />
• g:= plot::Function2d(-1/x, x = 0..50):<br />
• szene:= plot::Scene2d(f, g, punktfolge):<br />
plot(szene)<br />
y<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0.0<br />
-0.2<br />
-0.4<br />
10 20 30 40 50<br />
x<br />
77
78<br />
6.2 Beispiele im Umgang mit der Plot-Bibliothek<br />
Auch hier können wir nachträglich auf dem Objekt szene arbeiten.<br />
Wollen wir beispielsweise das Schaubild in einen Kasten einschließen<br />
und mit Gitterlinien hinterlegen, so brauchen wir auch hier nicht alle<br />
Objekte einzeln zu beeinflussen, sondern es genügt die Befehlszeile:<br />
• szene::Axes:= Boxed: szene::GridVisible:= TRUE:<br />
plot(szene)<br />
y<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0.0<br />
-0.2<br />
-0.4<br />
0 10 20 30 40 50<br />
x<br />
Übungen<br />
Zeichnen sie die Graphen der Funktionen sin, cos und tan in ein<br />
gemeinsames Koordinatensystem. Wählen Sie dabei den Bereich<br />
[-4, 4]!<br />
Schränken Sie in der vorhergehenden Aufgabe den Wertebereich<br />
auf y=-1..1 ein!<br />
Wie können Sie erreichen, dass nur der positive Anteil der Funk-<br />
3<br />
tion f( x)= x −x<br />
gezeichnet wird?<br />
Versehen Sie Ihre letzte Zeichnung mit den oben bereits<br />
verwendeten Gitterlinien (GridVisible)!<br />
Versuchen Sie mit Hilfe der kennen gelernten Funktionalitäten<br />
der plot-Bibliothek folgenden Sachverhalt an einem Beispiel zu<br />
visualisieren: Jede konvergente Folge von reellen Zahlen ist be-
schränkt.<br />
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
Hinweis: Lassen Sie sich dazu die Folgen<br />
a<br />
n + 1<br />
= b<br />
2⋅ n + 1<br />
n<br />
=<br />
n<br />
⋅ +<br />
2<br />
2 1<br />
3<br />
−1⋅ , a f<br />
n n n<br />
jeweils in einer Szene von <strong>MuPAD</strong> zeichnen und versuchen Sie<br />
dann, ähnlich wie oben, die Folgenglieder in einen „Schlauch von<br />
zwei Funktionen“ einzuschließen.<br />
Verfahren Sie analog mit der Folge cn<br />
n<br />
= 1+ H nK<br />
1 und lassen Sie<br />
sich auch von <strong>MuPAD</strong> den Grenzwert berechnen.<br />
Zeichnen Sie dann den Grenzwert g als konstante Funktion der<br />
Form y = g (Parallele zur x-Achse des Koordinatensystem) mit in<br />
das Schaubild.<br />
6.3 <strong>Eine</strong> Anwendung – Modellierung eines Strahlers<br />
Wir wollen mit <strong>MuPAD</strong> einen Strahler modellieren. Wir verwenden<br />
<strong>für</strong> die spätere grafische Ausgabe die folgenden Voreinstellungen:<br />
• Kamera := CameraDirection = [-10, -60, 0]:<br />
Optionen:= Scaling = Unconstrained:<br />
a := 40: b := 8/10: c := 10:<br />
Zunächst müssen wir eine Funktion wählen, die die Seitenlinie des<br />
Glaskörpers beschreiben kann. Diese Funktion bezeichnen wir mit<br />
Kontur:<br />
• Kontur = ( K:= x -> a * sqrt(x) * exp(-b*x) /<br />
( 1 + c * sqrt(x) * exp(-b*x) ) )<br />
len".<br />
<br />
Kontur = x → a ⋅ √ − b ⋅ x<br />
x ⋅ e<br />
1 + c ⋅ √ <br />
<br />
− b ⋅ x<br />
x ⋅ e<br />
Die Funktion Kontur scheint hier geradezu "vom Himmel zu fal-<br />
F<br />
I<br />
79
80<br />
6.3 <strong>Eine</strong> Anwendung – Modellierung eines Strahlers<br />
Der Prozess, einige Funktionen auszutesten und ihre Graphen dar-<br />
auf hin zu prüfen, ob sie <strong>für</strong> unsere Zwecke verwendbar sind, kann<br />
hier natürlich nicht im Detail dargestellt werden. Wir beschränken uns<br />
daher, die von uns gewählte Funktion zu betrachten. Auch scheint die<br />
Funktion sehr kompliziert zu sein – dies soll uns nicht stören, denn<br />
sie bietet einen guten Anreiz, die folgenden Berechnungen wirklich<br />
nicht mit Hand, sondern mit dem Computer durchzuführen.<br />
Ihren Graphen können wir darstellen durch:<br />
• plot(plot::Function2d( K(x), x = 0..5.4), GridVisible)<br />
y<br />
3<br />
2<br />
1<br />
0<br />
0 1 2 3 4 5<br />
Das sieht schon recht gut aus - nun lassen wir den Graphen in<br />
dem vorgegebenen Intervall 0..5.4 um die x-Achse rotieren. Auch<br />
solche Rotationskörper können wir mit <strong>MuPAD</strong> darstellen.<br />
Dazu benutzen wir die Funktion plot::XRotate aus der <strong>MuPAD</strong><br />
plot-Bibliothek, die zur Darstellung von Rotationskörpern (bei einer<br />
um die x-Achse rotierenden Funktion oder Kurve) gedacht ist. Die<br />
Handhabung dieser Funktion ist simpel – in Anlehnung an die Integ-<br />
ration müssen wir nur den Funktionsterm angeben, ein geeignetes<br />
Intervall auf der x-Achse, über dem die Funktion rotieren soll, und<br />
(optionaler Weise) Werte <strong>für</strong> das numerische Netz von Stützstellen,<br />
damit wir eine schöne glatte Darstellung des Körpers erhalten.<br />
x
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
• GlassKoerper:= plot::XRotate(K(x), x = 0..5.4,<br />
Submesh = [2,2]):<br />
plot(GlassKoerper, Kamera, Optionen):<br />
Das Volumen dieses Rotationskörpers im Intervall 0..5.4 ist gege-<br />
ben durch das folgende bestimmte Integral:<br />
• Volumen = ( V:= PI * int( K(x)^2, x = 0..5.4) )<br />
<br />
5.4<br />
− 4 ⋅ x<br />
5<br />
1600 ⋅ x ⋅ e<br />
Volumen =π⋅<br />
0<br />
2<br />
<br />
10 ⋅ √ <br />
− 4 ⋅ x 2 d x<br />
5<br />
x ⋅ e + 1<br />
Wir können das Volumen näherungsweise bestimmen durch<br />
• float(V)<br />
109.0970678<br />
Damit ist der Glaskörper des Strahlers modelliert.<br />
Nun fehlt noch das Gewinde, mit dem man ihn in eine Fassung<br />
einschrauben kann. Für das Gewinde wählen wir eine Sinusfunktion.<br />
Dabei erhöhen wir die Periode der Funktion drastisch, um die wellen-<br />
förmige Seitenlinie eines Gewindes zu simulieren:<br />
81
82<br />
6.3 <strong>Eine</strong> Anwendung – Modellierung eines Strahlers<br />
• plot(plot::Function2d(1/9*sin(22*x)+K(5.3),<br />
x = 5.4..6.71))<br />
y<br />
1.10<br />
1.05<br />
1.00<br />
0.95<br />
0.90<br />
5.4 5.5 5.6 5.7 5.8 5.9 6.0 6.1 6.2 6.3 6.4 6.5 6.6 6.7<br />
x<br />
Der aufmerksame Leser bemerkt sofort: Mit diesem Gewinde ha-<br />
ben wir keine Chance, die Glühbirne anschließend wirklich einzu-<br />
schrauben. Wir mogeln hier ein wenig und geben uns der Einfachheit<br />
halber mit dieser „Notlösung“ zufrieden.<br />
Lassen wir auch diese Funktion um die x-Achse rotieren, so erhal-<br />
ten wir folgendes Schaubild:<br />
• Gewinde:= plot::XRotate(1/9*sin(22*x) + K(5.3),<br />
x = 5.4..6.71, Submesh = [2, 2]):<br />
plot(Gewinde, Kamera, Optionen)
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
Abschließend benötigen wir noch den Kontakt, der unseren Strah-<br />
ler beim Einschalten des Lichtschalters mit Strom versorgt. Diesen<br />
setzen wir rechts an das Gewinde an - der Kontakt wird durch einfa-<br />
chere lineare Funktionen modelliert:<br />
• plot(plot::Function2d( -6*x + 41.26, x = 6.71..6.81),<br />
plot::Function2d( -x + 7.21, x = 6.81..7.21))<br />
y<br />
1.0<br />
0.9<br />
0.8<br />
0.7<br />
0.6<br />
0.5<br />
0.4<br />
0.3<br />
0.2<br />
0.1<br />
6.7 6.8 6.9 7.0 7.1 7.2<br />
Man darf aber an dieser Stelle nicht vergessen, dass das Darstel-<br />
lungsintervall 6.71..7.1 verschwindend klein ist.<br />
• Kontakt:= plot::XRotate(-6*x + 41.26, x = 6.71..6.81),<br />
plot::XRotate(-x + 7.21, x = 6.81..7.1):<br />
plot(Kontakt, Kamera, Optionen)<br />
x<br />
83
84<br />
6.3 <strong>Eine</strong> Anwendung – Modellierung eines Strahlers<br />
Und nun setzen wir alle Objekte zusammen zu einem großen Rota-<br />
tionskörper:<br />
• plot(GlassKoerper, Gewinde, Kontakt, Kamera, Optionen)<br />
<strong>Eine</strong> Nachbearbeitung dieser Grafik mit dem neuen Grafik-Viewer<br />
VCam kann wie folgt vorgenommen werden: Wir aktivieren die Grafik<br />
mit einem Doppelklick. Der Grafik-Viewer öffnet sich automatisch und<br />
bietet uns eine Vielzahl von interaktiven Manipulationsmöglichkeiten:<br />
In der Tool-Bar im oberen Bereich des Fensters finden sich u.a. zwei<br />
kleine Lupen (eine mit einem Plus-Symbol und eine weitere mit einem<br />
Minus-Symbol), die ein Hinein- bzw. Herauszoomen in bzw. aus der<br />
geöffneten Grafik ermöglichen. Desweiteren finden wir auf der rech-<br />
ten Seite Fenster, die die „Objekt-Struktur“ der Grafik anzeigen. Über<br />
diesen „Objektbaum“ kann auf alle Eigenschaften („Attribute“) eines<br />
jeden Bestandteils der Gesamtgrafik zugegriffen werden. So lassen<br />
sich im Grafik-Viewer auch nachträglich interaktiv per Mausklick alle<br />
wesentlichen Eigenschaften der Einzelobjekte modifizieren. Die vor-<br />
genommenen Änderungen werden dann auch gleichzeitig im linken<br />
Bildschirmbereich, in dem sich die Grafik befindet, angezeigt. Das fol-<br />
gende Bild zeigt einen Screenshot der englischen Benutzungsoberflä-
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
che des Grafik-Viewers (die bei der deutschen Version von <strong>MuPAD</strong> Pro<br />
3.0 selbstverständlich in deutscher Sprache gehalten ist):<br />
Das Fenster mit der Überschrift „Definition“ in der linken unteren E-<br />
cke des Grafik-Viewers zeigt uns auch die aktuelle Kamera-Position<br />
sowie den Punkt an, auf den die Kamera ausgerichtet ist. Wir können<br />
hier andere Werte eintragen und ändern so die Sicht des Betrachters<br />
auf die graphische Szene. Um die Szene zu drehen, müssen wir die<br />
Kameraposition allerdings nicht explizit angeben. Wir können auch<br />
einfach mit der Maus auf die entsprechenden Symbole <strong>für</strong> Rotation in<br />
der Tool-Bar (ganz oben in der VCam-Oberfläche) klicken und so die<br />
gewünschte Sicht auf die Szene erreichen.<br />
85
86<br />
6.4 Grafik-Gallerie<br />
Einige Bilder, die die Manipulationsmöglichkeiten des Grafik-Viewers<br />
verdeutlichen, haben wir hier <strong>für</strong> unseren Rotationskörper aufgeführt:<br />
6.4 Grafik-Gallerie<br />
<strong>Eine</strong> Auswahl weiterer schöner 2D- und 3D-Grafiken, die mit Mu-<br />
PAD erstellt wurden, zeigt die folgende kleine „Gallerie“. Wir verzich-<br />
ten aus Platzgründen an dieser Stelle darauf, den Quellcode zum Er-<br />
zeugen der jeweiligen Grafik anzugeben. Ein Großteil findet sich aller-<br />
dings unmittelbar in der <strong>MuPAD</strong> Online-Dokumentation.
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
87
88<br />
6.5 Einfache Animationen<br />
6.5 Einfache Animationen<br />
In diesem Abschnitt wollen wir sehen, wie man einfache Animatio-<br />
nen mit <strong>MuPAD</strong> erstellen kann. Prinzipiell ist nahezu jedes graphische<br />
Objekt und jede seiner Eigenschaften animierbar. Diese Tatsache ga-<br />
rantiert ein Höchstmaß an Flexibilität, die wir hier in diesem Rahmen<br />
in ihrem Gesamtumfang nicht vorstellen können. Dem über diesen<br />
Abschnitt hinaus interessierten Leser sei daher ein Blick in die Online-<br />
Dokumentation von <strong>MuPAD</strong> Pro 3.0 empfohlen. Die dort verfügbare<br />
„<strong>Einführung</strong> in die plot-Bibliothek“ stellt eine Vielzahl von Beispielen<br />
bereit und erklärt Grundkonzepte und Anwendungsweise der Grafik-<br />
Bibliothek in detaillierter und verständlicher Form.<br />
Wir beginnen mit einem ganz einfachen Beispiel: Ein Punkt, der<br />
sukzessiv den Graphen der Sinus-Funktion über eine volle Periode<br />
darstellt:<br />
• Punkt:= plot::Point2d(a, sin(a), a = 0..2*PI):<br />
Sinus:= plot::Function2d(sin(x), x = 0..a, a = 0..2*PI):<br />
plot(Punkt, Sinus)<br />
y<br />
1.0<br />
0.8<br />
0.6<br />
0.4<br />
0.2<br />
0.0<br />
-0.2<br />
-0.4<br />
-0.6<br />
-0.8<br />
-1.0<br />
1 2 3 4 5 6<br />
Wir haben den Punkt “animiert”, indem wir seine Koordinaten ein-<br />
fach von einem Parameter a abhängig gemacht haben und <strong>für</strong> den<br />
Parameter a (den so genannten „Animationsparameter“) einen Be-<br />
reich spezifiziert haben. Um den Funktionsgraphen zu animieren, ha-<br />
x
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
ben wir den Funktionsterm so eingegeben, als würden wir die Funkti-<br />
on allein darstellen wollen. Die Animation ergibt sich daraus, dass wir<br />
den Darstellungsbereich x = 0..a in Abhängigkeit des Animationspa-<br />
rameters a angegeben haben. Auch hier müssen wir einen Bereich<br />
mit Werten spezifizieren, die von a während der Animation durchlau-<br />
fen werden. Die Grafik, die uns <strong>MuPAD</strong> nun ausgibt, zeigt das erste<br />
Einzelbild der Animation. Wir können die Grafik jetzt mit einem Dop-<br />
pelklick aktivieren, so dass sich der Grafik-Viewer VCam öffnet. Zu-<br />
sätzlich zu der üblichen Oberfläche finden sich jetzt im oberen Bereich<br />
des Fensters Symbole, wie wir sie von einem CD-Player, Video-<br />
Recorder oder etwa dem Media Player von Microsoft Windows kennen.<br />
Ein Mausklick auf den Button führt dazu, dass die Animation<br />
abgespielt wird. Mit Hilfe des Sliders kann die A-<br />
nimation auch interaktiv mit der Maus vor- bzw. zurückgespult und<br />
der Verlauf der Animation dabei beobachtet werden. Darüber hinaus<br />
bietet sich im Menü „Bearbeiten – Grafik Exportieren“ die Möglichkeit,<br />
die Animation u.a. in dem verbreiteten AVI-Filmformat abzuspei-<br />
chern. Die gespeicherte Datei kann dann auf jedem Rechner mit dem<br />
mit einer entsprechenden Software zum Abspielen von AVI-Dateien<br />
betrachtet werden. Vier Einzelbilder der oben von uns erzeugten ani-<br />
mierten Sinus-Funktion sehen wir hier:<br />
89
90<br />
6.5 Einfache Animationen<br />
Als nächstes Beispiel <strong>für</strong> eine Animation betrachten wir die Schar<br />
von Parabeln<br />
• fa:= a * x^2<br />
a ⋅ x 2<br />
Anstatt einige Parabeln der Schar statisch in ein Koordinatensys-<br />
tem zu zeichnen, können wir mit dem folgenden Befehl eine Animati-<br />
on erzeugen, in der sukzessive je eine Parabel gezeichnet wird:<br />
• plotfunc2d(fa, x = -2..2, a = -3..3)<br />
Wir stellen auch hier wieder vier Einzelbilder der erzeugten Anima-<br />
tion dar:
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
Die <strong>MuPAD</strong> Funktion plot::Hatch erlaubt es, flächige Bereiche in-<br />
nerhalb von 2D-Koordinatensystemen schraffiert darzustellen – ein<br />
Hilfsmittel, das im Bereich der Visualisierung der Flächenberechnung<br />
mittels Integration sehr nützlich sein kann. Im folgenden erzeugen<br />
wir eine Animation, die einige Funktionen der Schar<br />
• fa:= sin(a*x)<br />
sin(a ⋅ x)<br />
darstellt und dabei immer die von der Funktion mit der x-Achse ein-<br />
geschlossene Fläche mit einzeichnet:<br />
• f:= plot::Function2d(fa, x = -PI..PI, a = 0.2..3):<br />
plot(f, plot::Hatch(f))<br />
Der Animationsparameter ist wieder a (dies ist der Scharparame-<br />
ter der oben definierten Kurvenschar von Sinus-Funktionen). Die<br />
Funktion plot::Hatch können wir schlicht auf die Funktionsgraphen<br />
der Schar fa anwenden; sie sorgt dann automatisch da<strong>für</strong>, dass die<br />
Fläche zwischen dem jeweiligen Funktionsgraphen und der x-Achse<br />
schraffiert wird. Die folgenden Einzelbilder entstammen der erzeugten<br />
Animation:<br />
91
92<br />
6.5 Einfache Animationen<br />
Zum Abschluss dieses Abschnitts betrachten wir noch eine Anima-<br />
tion im Raum: Der Schnitt eines Kegels mit einer Ebene und die dabei<br />
entstehenden Schnittgebilde.<br />
Diese Animation scheint auf den ersten Blick nicht ganz so leicht<br />
zu erzeugen zu sein wie die bisher betrachteten Animationen in der<br />
Ebene. Das liegt jedoch lediglich daran, dass wir im folgenden separat<br />
zuerst zwei graphische Objekte erzeugen (einen Kegel und eine Ebe-<br />
ne) und dann anschließend zwei graphische Szenen im Raum definie-<br />
ren, die beide sowohl den Kegel als auch die Ebene enthalten. An-<br />
schließend lassen wir beide Szenen gleichzeitig nebeneinander dar-<br />
stellen.<br />
Dies hat den Vorteil, dass wir bei Ablauf der Animation links den<br />
Kegel und die Ebene sehen werden und rechts den Schnitt des Kegels<br />
mit der Ebene in der Ebene selbst:<br />
• Kegel:= plot::Cone(<br />
1, // Radius der Basis<br />
[-sin(a), 0, -cos(a)], // Zentrum der Basis<br />
[sin(a), 0, cos(a)], // Zentrum der Spitze
6 Grafiken in <strong>MuPAD</strong> leicht gemacht<br />
a = 0..2*PI, // Animationsbereich<br />
Color=RGB::Blue.[0.6]):<br />
Ebene:= plot::Surface([x, y, 0],<br />
x = -1.5..1.5,<br />
y = -1.5..1.5,<br />
MeshVisible):<br />
S1 := plot::Scene3d(Kegel, Ebene):<br />
S2 := plot::Scene3d(Kegel, Ebene,<br />
ViewingBoxZRange = -0.02 .. 0.02):<br />
• plot(S1, S2, Layout = Horizontal, Width=240)<br />
Der Trick besteht nun darin, dass wir die zwei Szenen so definie-<br />
ren, dass sie beide den animierten Kegel (er wird während der Ani-<br />
mation gedreht) und die Ebene enthalten. Bei der zweiten Szene je-<br />
doch wählen wir den Sichtbarkeitsbereich in z-Richtung so schmal,<br />
dass es beim Betrachten der Szene so erscheint, als würden wir nur<br />
eine Ebene und eine Kurve in der Ebene gezeichnet haben (die<br />
Schnittkurve von Kegel und Ebene ergibt also, indem wir das gesam-<br />
te Bild stark „zusammenschrumpfen“ und nur einen winzigen Streifen<br />
der gesamten Szene darstellen lassen). Die Ebene selbst ist nicht a-<br />
nimiert – in ihrer Definition taucht kein Animationsparameter auf. Der<br />
einzige animierte Bestandteil der Grafik ist der Kegel selbst. Er wird<br />
durch geschickte Wahl einer Parametrisierung des Zentrums und der<br />
Spitze über die Dauer der Animation gedreht (a ist wieder der Anima-<br />
tionsparameter). Fünf Einzelbilder der Animation sehen wir hier:<br />
93
94<br />
6.5 Einfache Animationen
7 <strong>MuPAD</strong> in Schule und Studium<br />
7. <strong>MuPAD</strong> in Schule und Studium<br />
Unter der Adresse<br />
http://www.mupad.de/schule+studium<br />
bietet das <strong>MuPAD</strong>-Schule-Team eine Vielzahl weiterer Materialien<br />
und Zusatzinformationen zu und rund um <strong>MuPAD</strong> in Schule und Stu-<br />
dium: Neben <strong>MuPAD</strong> selbst stehen dort eine große Menge von vorge-<br />
fertigten interaktiven <strong>MuPAD</strong> Arbeitsblättern und mit <strong>MuPAD</strong> erstellte<br />
Unterrichtseinheiten im mnb-Format sowie auch im html-Format zum<br />
Download zur Verfügung. Der Großteil der dort verfügbaren Unter-<br />
richtseinheiten wurde dabei nicht vom <strong>MuPAD</strong>-Schule-Team selbst,<br />
sondern vielmehr von externen Autoren – Lehrerinnen und Lehrern<br />
die <strong>MuPAD</strong> erfolgreich im Unterricht einsetzen – erstellt.<br />
Diese Materialien ermöglichen nicht nur einen schnellen und un-<br />
komplizierten Einstieg in <strong>MuPAD</strong>, sondern sie geben darüber hinaus<br />
viele Anregungen zum Einsatz von Computeralgebra in der Lehre. Als<br />
besonders nützlich erweist sich bei der Fülle der Materialien die Mög-<br />
lichkeit einer Volltextsuche innerhalb aller <strong>MuPAD</strong> Arbeitsblätter, die<br />
eine zielgerichtete und erfolgreiche Recherche auf dem Server garan-<br />
tiert.<br />
Ein Blick unter die Rubrik „Aktuelles“ verrät auf welchen Tagungen<br />
<strong>MuPAD</strong> vertreten ist, wo und wann Lehrerfortbildungen und Schnup-<br />
perkurse angeboten werden und was es sonst noch so an Neuigkeiten<br />
rund um <strong>MuPAD</strong> gibt. Zusätzlich stehen alle bis dato erschienenen<br />
Exemplare der Buchreihe „<strong>Mathematik</strong> 1 x anders“ sowie diverse Arti-<br />
kel im PDF-Format zum freien Download bereit.<br />
Desweiteren finden sich auf den Webseiten des <strong>MuPAD</strong>-Schule-<br />
Teams diverse Zusatzpakete <strong>für</strong> <strong>MuPAD</strong>: Pakete zur „Elektrotechnik“,<br />
zur „ebenen euklidischen Geometrie“, zur „Analysis“ uvm.<br />
Technische Unterstützung und qualifizierter Rat zu und rund um<br />
<strong>MuPAD</strong> kann jeder Zeit per eMail an schule@mupad.de angefordert<br />
werden.<br />
95
96<br />
Literaturverzeichnis<br />
Literaturverzeichnis<br />
Einige der Beispiele und Übungen dieses Buches sind der folgenden Literatur<br />
entnommen, ohne jeweils unmittelbar darauf verwiesen zu haben:<br />
Baumann: Analysis 1. Klett, 1997<br />
Burkhart: http://www.weihenstephan.org/~burkhart/mupad/mupad.html<br />
Eckart; Jehle; Vogel: Analytische Geometrie. BSV <strong>Mathematik</strong>, 1994<br />
Feuerpfeil; Heigl; Wiedling: Praktische Stochastik. BSV <strong>Mathematik</strong>, 1994<br />
Grabinger: Projekte und Aufgaben zur Analytischen Geometrie. Schroedel,<br />
1999<br />
Griesel; Postel: Grundkurs Analysis Gesamtband, <strong>Mathematik</strong> heute,<br />
Schroedel / Schöningh, 1991<br />
Heugl; Klinger; Lechner: <strong>Mathematik</strong>unterricht mit Computeralgebra-<br />
Systemen. Addison-Wesley, 1996.<br />
Jahnke; Lauter; Rüdiger: <strong>Mathematik</strong> Sekundarstufe II, Analysis Leistungs-<br />
kurse. Cornelsen, 1993<br />
Oevel; Postel; Rüscher; Wehmeier: Das <strong>MuPAD</strong> Tutorium. Springer, 2000<br />
Oevel: <strong>Einführung</strong> in die numerische <strong>Mathematik</strong>. Spektrum, 1996
$ 66<br />
Index<br />
:= 17<br />
All 52<br />
assume 33<br />
delete 14, 16, 17<br />
Diagonal 47<br />
diff 21, 23<br />
DIGITS 14, 16, 17<br />
Dom 49<br />
Integer 49<br />
Rational 49<br />
Real 49<br />
Float 49<br />
Complex 49<br />
expand 14, 18, 56<br />
float 14, 20<br />
GrindVisible 78<br />
if 64<br />
info 35<br />
int 25<br />
linalg<br />
row 44<br />
col 44<br />
transpose 47<br />
addRow 52<br />
addCol 52<br />
multCol 52<br />
multRow 52<br />
expr2Matrix 52<br />
matlinsolve 52<br />
det 57<br />
angle 57<br />
normal 14, 18<br />
numeric<br />
op 21<br />
solve 30<br />
fsolve 35<br />
plot 65, 74<br />
Bars2d 65<br />
Function2d 69<br />
Function3d 74<br />
Ellipse2d 74<br />
Curve2d 74<br />
Curve3d 74<br />
Polygon2d 74<br />
PointList2d 74<br />
Scene2d/3d 74<br />
XRotate 80<br />
random 60, 64<br />
simplify 14, 18, 36<br />
solve 23, 30, 39, 57<br />
sqrt 14, 15<br />
stdlib 36<br />
student 30<br />
subs 21, 23
<strong>Mathematik</strong> 1 x anders: Materialien und Werkzeuge <strong>für</strong><br />
computerunterstütztes Lernen<br />
Bisher erschienen:<br />
<strong>MuPAD</strong> - <strong>Eine</strong> <strong>praktische</strong> <strong>Einführung</strong><br />
Kai Gehrs und Frank Postel, Band 1 - 2. überarb. und erw. Auflage, <strong>Mathematik</strong> 1 x anders -<br />
Materialien und Werkzeuge <strong>für</strong> computerunterstütztes Lernen, August 2001, SciFace Software<br />
GmbH & Co.KG, Paderborn, ISBN-3-933764-02-5, ca. 90 Seiten,<br />
Titelbild, PDF-Version.<br />
Ein Streifzug durch die Physik mit <strong>MuPAD</strong><br />
Alessandro Dell'Aere, Band 2, <strong>Mathematik</strong> 1 x anders - Materialien und Werkzeuge <strong>für</strong> computerunterstütztes<br />
Lernen, August 2001, SciFace Software GmbH & Co.KG, Paderborn, ISBN-3-<br />
933764-03-3, ca. 35 Seiten,<br />
Titelbild, PDF-Version.<br />
Stochastik mit <strong>MuPAD</strong><br />
Julia Faflek, Band 3, <strong>Mathematik</strong> 1 x anders - Materialien und Werkzeuge <strong>für</strong> computerunterstütztes<br />
Lernen, September 2002, SciFace Software GmbH & Co.KG, Paderborn, ca. 68 Seiten,<br />
Titelbild, PDF-Version.<br />
Analysis mit <strong>MuPAD</strong><br />
Kai Gehrs, Vera Verspohl, Band 4, <strong>Mathematik</strong> 1 x anders - Materialien und Werkzeuge <strong>für</strong><br />
computerunterstütztes Lernen, Juni 2003, SciFace Software GmbH & Co.KG, Paderborn, ca. 88<br />
Seiten, ,<br />
Titelbild, PDF-Version.<br />
Elektrotechnik mit <strong>MuPAD</strong><br />
Thomas Kosch, Band 5, <strong>Mathematik</strong> 1 x anders - Materialien und Werkzeuge <strong>für</strong> computerunterstütztes<br />
Lernen, Februar 2003, SciFace Software GmbH & Co.KG, Paderborn, ca. 56 Seiten,<br />
Titelbild, PDF-Version, PDF-Version mit Graustufenbildern <strong>für</strong> den Druck.<br />
Lineare Transformationen mit <strong>MuPAD</strong><br />
Wolfgang Lindner, Band 6, <strong>Mathematik</strong> 1 x anders - Materialien und Werkzeuge <strong>für</strong> computerunterstütztes<br />
Lernen, Mai 2003, SciFace Software GmbH & Co.KG, Paderborn, ca. 103 Seiten,<br />
,<br />
Titelbild, PDF-Version.<br />
Ausgleichsrechnung, überbestimmte LGS und Pseudoinverse mit <strong>MuPAD</strong><br />
Wolfgang Lindner, Band 7, <strong>Mathematik</strong> 1 x anders - Materialien und Werkzeuge <strong>für</strong> computerunterstütztes<br />
Lernen, Juni 2003, SciFace Software GmbH & Co.KG, Paderborn, ca. 110 Seiten,<br />
, Vorabversion, Final folgt Anfang Juli,<br />
Titelbild, PDF-Version.<br />
Die Hefte dieser Reihe sind als PDF-Dokumente auch in Web verfügbar unter:<br />
www.mupad.de/schule/literatur/index.shtml#books