BEITRÄGE DER HOCHSCHULE PFORZHEIM Frank Thuselt Das Arbeiten mit Numerik-Programmen MATLAB, Scilab und Octave in der Anwendung Nr. 129 Herausgeber: Prof. Dr. Ansgar Häfner, Prof. Dr. Norbert Jost, Prof. Dr. Karl-Heinz Rau, Prof. Dr. Roland Scherr, Prof. Dr. Christa Wehner, Prof. Dr. Hanno Beck (geschäftsführend; [email protected]) Frau Alice Dobrinski Sekretariat: Hochschule Pforzheim Tiefenbronner Str. 65 75175 Pforzheim [email protected] Telefon: 07231/28-6201 Telefax: 07231/28-6666 Ausgabe: Juni 2009 Frank Thuselt Das Arbeiten mit Numerik-Programmen MATLAB, Scilab und Octave in der Anwendung Diese Arbeit wurde gefördert durch die Firma THALES Defence GmbH, Pforzheim Beiträge der Hochschule Pforzheim Nr. 129 3 Prof. Dr. Frank Thuselt Tiefenbronner Str. 65 75175 Pforzheim [email protected] Frank Thusselt ist Professor für Beiträge der Hochschule Pforzheim Nr. 129 4 Inhaltsverzeichnis 1. Einleitung........................................................................................................ 7 2. Kommerzielle Mathematik-Programme: MATLAB im Vergleich mit Maple und Mathematica ................................................................................................... 7 3. Numerik-Programme. Grundsätzliches zu MATLAB, Scilab und Octave ....... 9 3.1. MATLAB .................................................................................................. 9 3.2. Scilab ..................................................................................................... 11 3.3. Octave ................................................................................................... 11 4. Einstieg in MATLAB, Scilab und Octave ...................................................... 12 4.1. Installation der Programme .................................................................... 12 4.1.1. MATLAB .........................................................................................1 2 4.1.2. Scilab ..............................................................................................1 2 4.1.3. Octave ............................................................................................1 3 4.2. Arbeiten auf Kommandozeilenebene (Taschenrechner-Funktion) ......... 14 4.2.1. Einfache Operationen mit Zahlen und Variablen ............................ 15 4.2.2. Einige grundlegende Eigenschaften ...............................................1 7 4.3. Einfache Vektoren und Matrizen ............................................................ 20 4.4. Rechnen mit komplexen Zahlen ............................................................ 22 4.5. Graphik .................................................................................................. 24 4.6. Matrizenalgebra und Polynome ............................................................. 28 5. Script-Dateien und Funktionen ..................................................................... 36 5.1. Script-Dateien ........................................................................................ 36 5.1.1. Grundsätzliches ..............................................................................3 6 5.1.2. Einrichten des Arbeitsverzeichnisses in MATLAB/Octave .............. 37 5.1.3. Einrichten des Arbeitsverzeichnisses in Scilab ............................... 37 5.1.4. Einfaches Beispiel in MATLAB .......................................................3 8 5.2. Funktionen ............................................................................................. 39 Beiträge der Hochschule Pforzheim Nr. 129 5 5.2.1. Allgemeines über Funktionen .........................................................3 9 5.2.2. Funktionsaufrufe .............................................................................4 0 5.2.3. Funktionen von Funktionen ............................................................4 2 6. Kontrollstrukturen ......................................................................................... 45 6.1. Die if-Bedingung .................................................................................... 45 6.2. Die switch-Bedingung ............................................................................ 46 6.3. Die for-Schleife ...................................................................................... 47 6.4. Die while-Schleife .................................................................................. 50 7. Einfache Benutzer-Interfaces (GUI) ............................................................. 53 7.1. Dialogbox „menu“................................................................................... 53 7.2. Eingabe-Listen „listdlg“ und „xchoose“ ................................................... 55 8. Arbeitsgeschwindigkeit der einzelnen Programme ....................................... 57 9. Simulink und Scicos ..................................................................................... 57 10. Erfahrungen aus Lehre und Ausbildung, Forschung und Entwicklung ...... 67 11. Literaturverzeichnis ................................................................................... 71 Beiträge der Hochschule Pforzheim Nr. 129 6 Zusammenfassung Innerhalb der Mathematik-Software nehmen die Numerik-Programme MATLAB, Scilab und Octave eine herausragende Rolle ein. In der vorliegenden Arbeit werden sie mit solchen Programmen verglichen, die sich vorwiegend der Computeralgebra widmen, wie Mathematica oder Maple. Dabei betrachten wir die grundsätzlichen Eigenschaften, das Installationsverhalten und die ersten Schritte des täglichen Gebrauchs beim Arbeiten mit den Numerikprogrammen. Dies geschieht am Beispiel von komplexen Zahlen, von Graphik und von Polynomen. Die Verwendung von Script-Files und Funktionen wird erklärt. Anhand zahlreicher Beispiele stellen wir dabei MATLAB/Octave und Scilab direkt gegenüber. Zusätzlich vergleichen wir einige Aspekte von Simulink mit Scicos. Am Schluss wird über Erfahrungen in Entwicklung und Ausbildung berichtet. Summary Within mathematical software the numerical programs MATLAB, Scilab, and Octave play an outstanding role. In this paper, they shall be compared with programs that are mostly dedicated to computer algebra, as Mathematica or Maple. Moreover, their basic features, their installation behaviour, and first steps of everyday use are considered. For this purpose, complex numbers, graphics, and polynoms are used as examples. Besides, the application of script files and functions will be explained. In a large number of examples, MATLAB and Octave are directly opposed to Scilab. Additionally, some aspects of Simulink and Scicos are discussed. Finally, we report on some experiences in engineering development and education. Beiträge der Hochschule Pforzheim Nr. 129 7 1. Einleitung In den Natur- und Ingenieurwissenschaften ist die Benutzung mathematischer Hilfsmittel unumgänglich. Hierzu zählen insbesondere Programme zum Verarbeiten numerischer Daten. Sie werden meist zusammenfassend kurz als Mathematikprogramme oder Numerik-Programme bezeichnet. Diese Bezeichnung ist allerdings nicht für alle Programme zutreffend. Richtiger müsste man unterscheiden zwischen echten numerischen Programmen und so genannten Computeralgebra-Systemen. Neben den Marktführern MATLAB, Maple und Mathematica1 gibt es unter ihnen noch eine Vielzahl weiterer Programme, wie MathCAD, DERIVE, MACSYMA2 usw., deren Bedeutung allerdings bei weitem nicht so umfassend ist. Schließlich existieren noch kleinere Programmpakete, die das Ziel haben, zu günstigeren Konditionen, zum Beispiel als Freeware oder Open Source, die wichtigsten Funktionen der „großen“ Programme ebenfalls anzubieten. Im Folgenden soll das Programmpaket MATLAB im Vergleich mit zwei der kleineren Programme betrachtet werden, insbesondere hinsichtlich seiner Eignung für die studentische Ausbildung. Die Vergleichskandidaten sind dabei Octave und Scilab. 2. Kommerzielle Mathematik-Programme: MATLAB im Vergleich mit Maple und Mathematica Nach Benker [1] unterscheidet man bei integrierten Softwaresystemen Computeralgebra-Systeme (CAS) und Numerik-Systeme. Als Computeralgebra-Systems bezeichnet man ein Computerprogramm, das Rechenaufgaben aus verschiedenen Bereichen der Mathematik lösen und dabei nicht nur (wie ein Taschenrechner) mit Zahlen, sondern auch vor allem mit symbolischen Ausdrücken (Variablen, Funktionen, Matrizen) umgehen kann. Dazu gehören neben Maple und Mathematica weiterhin Mathcad, Derive, Axiom und MuPAD3. Die Grenzen zwischen den Systemen sind jedoch aufgeweicht, da Systeme der einen Gruppe auch Merkmale der jeweils anderen Gruppe beinhalten. Zu den echten Numerik-Programmen gehört an erster Stelle MATLAB. Es hat seinen dominierenden Platz in den Ingenieurwissenschaften eingenommen. Weitere anspruchsvolle Programme sind Mathematica und Maple. Mathematica und Maple waren ursprünglich Computeralgebra-Systeme, inzwischen haben sie jedoch wie MATLAB auch weitgehend 1 Hinweis: MATLAB© ist ein eingetragenes Warenzeichen von The MathWorks, Inc., MAPLE© ist ein eingetragenes Warenzeichen von Waterloo Maple Inc., Mathematica© ist ein eingetragenes Warenzeichen von Wolfram Research, Inc. 2 Die Namen sind teilweise eingetragene Markenzeichen ihrer jeweiligen Hersteller. 3 MuPAD wurde in Deutschland entwickelt. und in der Zwischenzeit von The MathWorks Beiträge der Hochschule Pforzheim Nr. 129 8 numerische Funktionen übernommen, während umgekehrt MATLAB durch Lizenzübernahme des Computeralgebra-Pakets Maple Algebra-Funktionen integriert hat. Algebraische Aufgaben im engeren Sinne sind: • algebraische Ausdrücke vereinfachen und vergleichen • algebraische Gleichungen lösen • lineare Gleichungssysteme lösen und Matrizenberechnung durchführen • Funktionen differenzieren und integrieren • mit Dezimalzahlen mit beliebiger Genauigkeit rechnen (mit einem guten CAS kann man z. B. mit geringem Programmieraufwand die Zahl π (pi) auf zehntausende Nachkommastellen genau bestimmen) Zu den Aufgaben von Numerik-Programmen gehören zum Beispiel: • Lösen von Integralen und Differentialgleichungen durch numerische Integration („Quadratur“) • Lösen von linearen Gleichungssystemen beliebig hoher Dimension • Lösen von nichtlinearen Gleichungen und Gleichungssystemen • Bestimmung von Eigenwerten und Eigenvektoren • Optimierung und Simulation komplizierter Zusammenhänge • Signalanalyse und -verarbeitung • Graphische Darstellung von Funktionen und Daten in zwei oder drei Dimensionen • Bereitstellung einer Benutzerschnittstelle für das Einbinden eigener Algorithmen in einer höheren Programmiersprache In der Regel arbeiten alle Systeme mit Interpreter. Interpreter sind zwar oft langsamer, aber dafür einfacher zu bedienen als Compiler. In einer Artikelserie der IEEE-Zeitschrift Computer Science and Engineering ([2] bis [5]) wurden die drei Marktführer unter den Mathematikprogrammen MATLAB, Maple und Mathematica einem umfangreichen Vergleichstest unterzogen, vor allem hinsichtlich ihres Einsatzes in der Ausbildung. Viele Ergebnisse sind jedoch auch für andere Situationen aufschlussreich. Folgende Auf- gabenfelder und Ziele sind darin formuliert worden [4]: 1. Simulation - Studenten sollen befähigt werden, in kleinen Gruppen als Design- und Entwicklungsteams zusammenzuarbeiten - Medium für Lehrkräfte zur Interaktion mit Studenten „just in time“ - Möglichkeit für zusätzliches Experimentieren durch besonders motivierte Studenten aufgekauft. Beiträge der Hochschule Pforzheim Nr. 129 9 2. Tutorium - Studenten sollen befähigt werden, individuell zu arbeiten - Medium für interaktives Lernen 3. Computerprogrammierung - Studenten sollen befähigt werden, individuell oder in Gruppen zu arbeiten - Medium für interaktives Erlernen des Designs, der Implementierung und des Tests von Computeralgorithmen - Möglichkeit für projektbezogenes Experimentieren (z.B. Sammlung von Algorithmen, Eingabe- und Ausgabemechanismen) für umfangreichere Anwendungen Der Vergleich der Entwicklungsumgebungen läuft auf folgende Kernaussagen hinaus [5]: Während Mathematica und Maple mit Standard-Benutzeroberflächen (GUIs) einschließlich Symbolleisten und Pull-down-Menüs ausgestattet sind – die Paletten lassen sich in Mathematica sogar verschieben –, bietet MATLAB hingegen lediglich eine Kommandozeilen-Oberfläche in einem von mehreren Fenstern (Kommandozeile, Kommando-Stack und Directory tree). Beispielsweise steht bei Maple für die Quadratwurzel ein Button mit dem Wurzelsymbol zur Verfügung, welches im Editorfeld automatisch eine Codezeile, wie z.B. sqrt() erzeugt. Erst in der neuesten Version R2008b hat sich bei MATLAB die Benutzerfreundlichkeit etwas verbessert. Die einzelnen Programme bedienen verschiedene Zielgruppen in unterschiedlicher Weise. So ist zum Beispiel Mathematica bei Physikern sehr beliebt wegen der zahlreichen Tools, die spezielle physikalische Fragestellungen unterstützen. MATLAB hingegen hat sich im ingenieurwissenschaftlichen Bereich als nahezu alternativlos etabliert, insbesondere wenn es gilt, anspruchsvolle Aufgaben und Simulationen auf den Gebieten der Signalverarbeitung und der Regelungstechnik zu bewältigen. Da sich die Syntax zwischen den drei Programmen erheblich unterscheidet, bleiben jedoch Anwender in der Regel bei dem Programm, das sie einmal kennengelernt haben. 3. Numerik-Programme. Grundsätzliches zu MATLAB, Scilab und Octave Im Folgenden beschränken wir uns auf die eigentlichen Numerik-Programme. Heute sind zumindest drei solcher Numerik-Programme verfügbar, deren Arbeitsweise etwa vergleichbar ist: MATLAB, Scilab und Octave. Der große Vorteil beim Arbeiten mit diesen Numerik-Programmen ist, dass gleichzeitig mit ganzen Zahlengruppen, das heißt Matrizen, operiert werden kann. Bei MATLAB drückt sich dies auch im Namen aus: MATLAB ist die Abkürzung für Matrix Laboratory. 3.1. MATLAB MATLAB wurde seit 1984 von der Firma The Mathworks, Inc. entwickelt und als kommerzielle Software vor allem für Windows und Linux-/Unixrechner vertrieben. Seit Version 6.5 existiert auch eine Version für den Macintosh. MATLAB ist heute unangefochtener Marktführer im Bereich der Numerik-Software. The MathWorks mit Sitz in Natick, Massachusetts, hat heute weltweit über 2000 Mitarbeiter [6]. Ursprünglich wurde MATLAB als Bedienerschnittstelle für den Zugang zu FORTRAN-Programmen entwickelt und auch in FORTRAN programmiert. Seit langer Zeit allerdings wurde der Code in der schnelleren Sprache C implementiert.
Description: