Einführung in Scilab/Xcos & Maxima
Total Page:16
File Type:pdf, Size:1020Kb
Einführung in Scilab/Xcos & Maxima Sommersemester 2015 T. Schauer Fachgebiet Regelungssysteme TU Berlin 14. April 2015 T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 1 / 70 Scilab Gliederung 1 Scilab Allgemeine Informationen über Scilab Erste Schritte Objekte Programmierung Ein- und Ausgabefunktionen Grafikfunktionen Lineare Systeme und Reglerentwurf Xcos Verschiedenes 2 Maxima T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 2 / 70 Scilab Allgemeine Informationen über Scilab Gliederung 1 Scilab Allgemeine Informationen über Scilab Erste Schritte Objekte Programmierung Ein- und Ausgabefunktionen Grafikfunktionen Lineare Systeme und Reglerentwurf Xcos Verschiedenes T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 3 / 70 Scilab Allgemeine Informationen über Scilab Was ist Scilab? Scilab Kostenloses Open-Source Software-Paket für wissenschaftliche Berechnungen Hunderte von Funktionen für allgemeine Zwecke und eine Vielzahl von speziellen Routinen für numerische Berechnungen Funktionesbibliotheken ! Toolboxes für Simulation, Optimierung, Systemanalyse, Reglerentwurf, Signalverarbeitung ... Scicos Scilab Toolbox mit graphischen Block-Diagramm-Editor für die Erstellung und Simulation dynamischer Systeme Automatische C-Code-Generierung Geschichte Entwickelt seit 1994 durch INRIA (Institut National de Recherche en Informatique et en Automatique) und ENPC (Ecole Nationale des Ponts et des Chaussées) in Frankreich Seit 2003: Koordination der Entwicklung durch ein internationales Scilab Konsortium mit Industriebeteiligung Scilab/Scicos: einzige wirkliche Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 4 / 70 Scilab Allgemeine Informationen über Scilab Verfügbarkeit / Literatur Download www.scilab.org Verfügbar für Unix/Linux, Windows, MacOSX Aktuell genutzte Version: 5.5.1 Literatur Buch: S.L. Campbell, J.-P. Chanceller und R. Nikoukhah, Modeling and Simulation in Scilab/Scicos, Springer Verlag, 2006 Buch: S.L. Campbell, J.-P. Chanceller und R. Nikoukhah, Modeling and Simulation in Scilab/Scicos with ScicosLab 4.4, Springer Verlag, 2010 T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 5 / 70 Scilab Allgemeine Informationen über Scilab Nutzung am Fachgebiet Regelungssysteme Rechnerpool Rechnerpool im Raum EN 656 tubIT-Logins Vorgehen 1. Anmelden 2. Konsolen-Fenster starten (Terminal-Icon auf dem Desktop) 3. Scilab starten: s c i l a b & § 4. ¦Datensicherung via Web-Mailer (Hotmail, Google-Mail, GMX, etc.), via USB-Stick oder via ¥ ASF-Homeverzeichnis T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 6 / 70 Scilab Erste Schritte Gliederung 1 Scilab Allgemeine Informationen über Scilab Erste Schritte Objekte Programmierung Ein- und Ausgabefunktionen Grafikfunktionen Lineare Systeme und Reglerentwurf Xcos Verschiedenes T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 7 / 70 Scilab Erste Schritte Start Scilab Command Window Interaktives Fenster Bestätigung von Befehlen mittels Return Scilab ist sowohl ein Interpreter als auch eine Programmiersprache! Einzelne Befehle oder Skriptdateien mit Befehlslisten können ausgeführt werden (exec-Befehl, // - Kommentare). Blättern in alten Befehlen mittels Pfeil-Hoch- und -Runter-Tasten Scilab Help Browser Online Dokumentation mit Suchfunktion und Programmbeispielen Scilab Editor Komfortabler Editor mit Syntax-Hervorhebung und Debugging-Interface T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 8 / 70 Scilab Objekte Gliederung 1 Scilab Allgemeine Informationen über Scilab Erste Schritte Objekte Programmierung Ein- und Ausgabefunktionen Grafikfunktionen Lineare Systeme und Reglerentwurf Xcos Verschiedenes T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 9 / 70 Scilab Objekte Philosophie 1. Objekte erstellen 3. Typ dynamisch ändern keine expliziete Deklaration oder −−>a = ’scilab’; typeof ( a ) Speicherzuordnung §ans = eine zufällige 2x3 Matrix erstellen: string −−>a = rand ( 2 , 3 ) ; §−−>typeof ( a ) 4. Objekt löschen ans = ¦ ¥ Niemals clear() ohne Parameter ausführen!!! constant −−>clear ( ’ a ’ ) ; exists ( ’ a ’ ) ¦ ¥ §ans = 0. 2. Dynamische Anpassung der Größe ¦ ¥ −−>a =[a , zeros ( 2 , 2 ) ] §a = 0.2113249 0.0002211 0.6653811 0. 0. 0.7560439 0.3303271 0.6283918 0. 0. ¦ T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 10 / 70¥ Scilab Objekte Speicher und Zahlen Speicher Zahlen Der verfügbare Speicher in Scilab wird Double-Precision Floats über den Befehl stacksize eingestellt. Prozessortypabhängige Genauigkeit Speicher anzeigen (Größe und mögliche Erweiterung der maximale Anzahl von Variablen) und Zahlenmenge um %inf (infinity) und vergrößern: %nan (not a number) mittels des Befehls ieee −−>stacksize §ans = −−>ieee () §ans = 5000000. 15983. 0. −−>stacksize (6000000) −−>1/0 !−−error 27 −−> division by zero... −−>ieee ( 2 ) ¦ ¥ −−>1/0 ans = I n f −−>0/0 ans = Nan −−> T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 11 / 70 ¦ ¥ Scilab Objekte Matrizen Info −−>A=[1,2,3 +5] §A = Basis-Objekt: zweidimensionale Matrix mit floating-point Zahlen 1. 2. 3. 5. interne Speicherung als eindimensionales Feld −−>A=[1 ,2 ,3 ∗5] (spaltengeordnet) A = Skalar: 1x1 Matrix 1. 2. 15. Konstruktion von Matrizen −−>A=[A,0;1,2,3,4] Spalternverkettungsoperator: ’,’ oder A = Leerzeichen 1. 2. 15. 0. Zeilenverkettungsoperator: ’;’ oder 1. 2. 3. 4. Zeilenumbruch beide Operatoren erscheinen zwischen ’[’ und ’]’ ¦ ¥ T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 12 / 70 A = § 1. 3. 3. 3. 0. 3. 3. 3. 3. 5. 7. 9. 0. 0. 0. 0. ¦ ¥ Scilab Objekte Matrizen Funktionen zur Erstellung von Matrizen ’ transponiert diag (m,n) Matrix mit gegebener Diagonale (oder Ausgabe der Diagonale) eye (m,n) Matrix mit Einsen auf der Hauptdiagonalen rand (m,n) Zufallsmatrix zeros (m,n) Matrix bestehend aus Nullen ones (m,n) Matrix bestehend aus Einsen linespace or ’:’ linearly spaced vector logspace logarthmically spaced vector matrix Formen einer (m,n) Matrix aus einem (n*m) Vektor −−> A = [ eye ( 2 , 1 ) , 3∗ones ( 2 , 3 ) ; linspace ( 3 , 9 , 4 ) ; zeros ( 1 : 4 ) ] § ¦ ¥ T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 13 / 70 Scilab Objekte Matrizen Funktionen zur Erstellung von Matrizen ’ transponiert diag (m,n) Matrix mit gegebener Diagonale (oder Ausgabe der Diagonale) eye (m,n) Matrix mit Einsen auf der Hauptdiagonalen rand (m,n) Zufallsmatrix zeros (m,n) Matrix bestehend aus Nullen ones (m,n) Matrix bestehend aus Einsen linespace or ’:’ linearly spaced vector logspace logarthmically spaced vector matrix Formen einer (m,n) Matrix aus einem (n*m) Vektor −−> A = [ eye ( 2 , 1 ) , 3∗ones ( 2 , 3 ) ; linspace ( 3 , 9 , 4 ) ; zeros ( 1 : 4 ) ] § ¦A = ¥ § 1. 3. 3. 3. 0. 3. 3. 3. 3. 5. 7. 9. 0. 0. 0. 0. ¦ T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 13 / 70¥ Scilab Objekte Extraktion, Einfügen und Löschen von Matrixelementen Info −−>clear A; §−−>A( 2 , 4 ) = 1 Spezifikation von Matrixeinträgen über A = A(B) oder A(B,C) wobei B und C sind 0. 0. 0. 0. numerische oder boolesche Matrizen 0. 0. 0. 1. sind die als als Indizes genutzt werden. −−>A([1,2],[1,2])=3 ∗ ones ( 2 , 2 ) ’$’ - letzter Index A = ’:’ - alle Einträge 3. 3. 0. 0. 3. 3. 0. 1. ’=’ Zuweisungsoperator −−>A( : , 1 ) = 8 A = A(B)= oder A(B,C)= 8. 3. 0. 0. 8. 3. 0. 1. Die Einträge der Matrix auf der linken −−>A( : , $ ) = [ ] Seite werden ersetzt durch die A = Einträge von der rechten Seite, falls es 8. 3. 0. sich um keine Matrix verschieden von 8. 3. 0. Null handelt und die Größen −−>A(: ,$+1)=[4;5] kompatibel sind. A = Wenn die rechte Seite eine leere Matrix 8. 3. 0. 4. ([]) ist, werden die Elemente auf der 8. 3. 0. 5. linken Seite gelöscht. T. Schauer (FG RS) Einführung in Scilab/Xcos¦ & Maxima 14. April 2015 14 /¥ 70 Scilab Objekte Extraktion, Einfügen und Löschen von Matrixelementen =A(B) oder A(B,C) Benutzung von %t und %f zur Falls die Audrücke A(B) oder A(B,C) Konstruktion von booleschen Matrizen auf der rechten Seite der Zuweisung Vergleichsoperatoren ’==’,’>’, ’<’, ’<=’ stehen, werden Untermatrizen und~ ’=’ (ungleich) liefern boolesche extrahiert. Matrizen. Logikoperatoren wie ’&’ (and), ’|’ (or) und~ ’’ (not) lassen sich auf boolesche −−>D=A(: ,2:3) Matrizen anwenden. §D = 3. 4. 3. 5. −−>[~(1>=2) %T&%F] −−>A(:,4)=D(1 ,:) ’ §ans = A = TF 8. 3. 4. 3. −−>x =1:2:10 8. 3. 5. 4. x = 1. 3. 5. 7. 9. ¦ ¥ −−>x ( x >5)=4 Boolesche Matrizen x = 1. 3. 5. 4. 4. Werte für eine boolesche Variable: −−>find ( x <5) //Indizes best. ’True’ %t oder ’False’ %f ans = 1. 2. 4. 5. T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 15 / 70 ¦ ¥ Scilab Objekte Elementare Matrixoperationen Operatoren | logisches Oder & logisches Und ~ negieren ==,>=,<=,>,<,<>,~= Vergleichsoperatoren +,- binäre Addition und Subtraktion +,- unäre Addition und Subtraktion .*,./,. .*,./.,.˙,*,/,/.,˙ Multiplikationen und Divisionen ^, **, .^, .** Potenzieren ’,.’ transponieren Operatoren mit dem Punkt-Symbol stehen für elementweise Operationen. Transponieren und gewöhnliches Elementweise Multiplikation: Matrixprodukt: −−>A. ∗A −−>A= ( 1 : 3 ) ’ ∗ ones ( 1 , 3 ) §ans = §A = 1. 1. 1. 1. 1. 1. 4. 4. 4. 2. 2. 2. 9. 9. 9. 3. 3. 3. ¦ ¥ ¦ ¥ T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 16 / 70 Scilab Objekte Elementare Matrixoperationen Lösen des linearen Gleichungssystems Ax=b. −−>A=[1,2;3,4]; b=[5;6]; §−−>x = A \ b ; norm(A∗x−b ) ans