Einführung in /Xcos & 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 -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/ 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 . 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 = 0.

¦ Unterbestimmtes System - eine Lösung mit ¥ minimaler Norm wird ermittelt: Überbestimmtes System - Least-Squares-Lösung wird ermittelt: −−>A1=[A, zeros (A)]; x=A1 \ b § x = −−>A1=[A;A];x=A1\[b;7;8] − 4. § x = 4.5 − 5. 0. 5.5 0. ¦ ¥ ¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 17 / 70 Scilab Objekte Zeichenketten und Polynome

Zeichenketten Polynome begrenzt durch ’ ’ oder Ein Polynom kann mittels derScilab Matrix aus Zeichenketten Funktion poly über seine Wurzeln oder Koeffizienten definiert werden. Vielzahl von Funktionen für Zeichenketten Polynome lassen sich addieren, multiplizieren, in Matrizen packen, etc. Löser für Diophantische Gleichungen −−>S=[’Die’,’2x2’; ’Matrix’,’! ’] §S = −−>p=poly ( [ 1 3 ] , ’ s ’ ) ! The 2x2 ! §p = !! 2 ! Matrix ! ! 3 − 4s + s −−>q=poly ([1 2],’s’,’c’) −−>length (S) q = ans = 1 + 2s −−>G=q / p ; 3. 3. G = 6. 1. 1 + 2s −−−−−−−−−− ¦ ¥ 2 3 − 4s + s T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 18 / 70 ¦ ¥ Scilab Objekte Listen

Erzeugung von Listen über die Funktionen list, tlist oder mlist Indizierter Zugriff nur für list und tlist Zugriff auf Elemente über Namen nur mit tlist und mlist

−−>sys= l i s t (’Bla’,8,[1 2]); §−−>sys ( 2 ) ans = 8. −−>sys= t l i s t ([ ’mylist’,’A’,’B’,’C’],’Bla’,8,[1 2]); −−>sys ( ’B ’ ) ans = 8. −−>sys ( 3 ) ans = Bla −−> −−>sys .B ans = 8. −−>sys=mlist ([ ’mylist’,’A’,’B’,’C’],’Bla’,8,[1 2]); −−>sys ( 3 ) !−−error 4 undefined variable : %l_e

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 19 / 70 ¦ ¥ Scilab Objekte Listen

Einfacherer Aufbau von mlist-Objekten mittels des ’.’ Operators

−−>sys_new.A= ’Bla ’ ; § −−>sys_new.B=8;

−−>sys_new.C=[1 2];

−−>sys_new sys_new =

A: " Bla " B: 8 C: [ 1 , 2 ]

¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 20 / 70 Scilab Objekte Funktionen

Auch Funktionen werden auch als Okjekte betrachtet. Man unterscheided hard-coded Funktionen (z.B. sin) und Scilab-coded Funktionen (z.B. sinh). Definition von Funktionen durch die Schlüsselwörter function und endfunction Scilab-coded Funktionen können von Scilab-Skripten aus geladen werden mittels exec Scilab-coded Funktionen im Speicher können im Binärformat gespeichert oder geladen werden mittels save bzw. load. Scilab-coded Funktionen werden später ausführlich betrachtet. Betrachten des Source-Codes von Scilab-Coded Funktionen mittels fun2string

−−>function y=foo (x,g); y=g(x); endfunction §−−>typeof ( foo ) ans = function −−>foo ( %pi , sin ) ans = 1.225E−16

¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 21 / 70 Scilab Objekte Funktionen

Achtung: Funktionen können gelöscht order maskiert werden durch Zuweisungen!

−−>sin =[1 3 ] ; §Warning :redefining function : sin −−>sin ( 2 ) ans = 3. −−>clear sin Warning :redefining function : sin −−>sin ( 2 ) ans = 0.9092974

¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 22 / 70 Scilab Programmierung 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 23 / 70 Scilab Programmierung Scilab-Programme

Scilab-Programme Scilab-Programm: Anzahl von Instruktionen die in einer spezifierten Reihenfolge ausgeführt werden. gewöhnlich in einer ASCII-Datei spezifiziert Ausführen des Programms mittels exec Endung von Scilab-Skripten: *.sce Endung von Scilab-Skripten, die nur Funktionen beinhalten: *.sci Beim start von Scilab werden die Skripte scilab.star im Scilab Installationsverzeichnis, sowie .scilab oder scilan.ini im Home-Verzeichnis oder aktuellen Verzeichnis ausgeführt.

exec ( ’parameter.sce ’ ); //Fuehrt das Skript aus § exec (’dio.sci’, −1); // Laedt die Funktion und // unterdrueckt die Ausgabe.

¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 24 / 70 Scilab Programmierung Verzweigungen Verzeigungen mittels if/then/else bzw. elseif if then else end Mehrfachverzweigungen durch: elseif

−−>A=log ( rand ( 3 , 3 ) ) ; §−−> i f imag (A)==0 then disp (’A i s a r e a l matrix ’ ) ; −−>else (’A i s complex ’ ) ; end ; A i s a real matrix

¦ ¥ Mehrfachverzweigungen mittels select Der Inhalt der Variablen () wird nacheinander mit , usw. verglichen Bei keiner Übereinstimmung kommen die Anweisungen hinter else zum tragen.

select , § case then case then ... else end

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 25 / 70 ¦ ¥ Scilab Programmierung Schleifen 1/2

Die for-Schleife for = end Die Instruktion wird einmal evaluiert. Danach wird der innere Block wiederholt ausgeführt, bei bei jeder Iteration nimmt die Variable einen neuen Wert an. Wenn eine Matrix ist, so nimmt nacheinander den Wert der Spalten an. Ist eine Liste, so nimmt nacheinander den Wert der Listenelemente an.

−−>y =0; §−−>for x=1:100 −−> y=y+x ; −−> end −−>y y = 5050. −−>

¦ ¥ T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 26 / 70 Scilab Programmierung Schleifen 2/2

Die while-Schleife while end Solange der Ausdruck wahr ist, wird die Instruktionen des inneren Blockes ausgeführt.

−−>y =0; x =1; §−−>while ( x<=100) −−> y=y+x ; −−> x=x +1; −−> end −−>y y = 5050. −−>

¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 27 / 70 Scilab Programmierung Scilab-Funktionen 1/4

Funktionen haben Eingangsargumente und Rückgabewerte Deklaration: function [,,...]=(,,...) endfunction ,,...: Funktionsargumente ,,...: Rückgabewerte Funktionsaufruf: (,,...) oder [,,...,]=(,,...) Im letzteren Fall werden die Rückgabewerte in die p Variablen ,,..., kopiert. Überprüfen der Argumente nach Funktionsaufruf und Werteübergabe (calling by value) Bei der Ausführung des Funktion wird nach Variablen in der lokalen Umgebung der Funktion und der Aufrufsumgebung der Funktion gesucht. Variablen aus der Aufrufsumgebung werden jedoch nicht geändert (lokale Kopie falls nötig)! Beendigung einer Funktion bei endfunction oder vorzeitig mittels return

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 28 / 70 Scilab Programmierung Scilab-Funktionen 2/4 Beispiel einer rekursiven Funktion: Im Funktionskörper kann die Anzahl −−>function y= f a c t ( x ) der gegebenen Eingangsargumente §−−> i f x<= 1 then y=x ; (rhs) und die Anzahl der erforderlichen −−> else y=x∗ f a c t ( x −1); Rückgabewerte (lhs) mittels −−> end −−>endfunction [ lhs , rhs ]= argn () −−>f a c t ( 4 ) § ans = erfragt werden. 24. ¦ ¥ Durch die Funktion error kann eine Nutzung einer Variablen aus der Fehlermeldung erzeugt werden. ¦Aufrufumgebung ¥

−−>function y= f ( x ) ; §−−> y=2∗x ; −−> x=2∗x ; −−>endfunction −−>x =90; −−>f ( ) ans = 180. −−>x x = 90. T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 29 / 70 ¦ ¥ Scilab Programmierung Scilab-Funktionen 3/4 Beispiel −−>function [u,v]=f(x,y) §−−> [lhs,rhs]= argn () −−> i f rhs <= 0 −−> then error ( ’ at l e a s t one argument must be given ’ ) ; end −−> i f rhs <= 1 then y =2; end −−> i f l h s == 2 then −−> u=x ; v=y ; −−> else −−> u=x+y ; −−> end −−>endfunction −−> −−>[u , v ]= f ( 4 ) v = 2. u = 4.

¦Globale Variablen ¥ Definition in der Ausrufsumgebung und in der entsprechenden Funktion mit global !

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 30 / 70 Scilab Programmierung Scilab-Funktionen 4/4 Funktionen mit variabler Anzahl von Ein- und Ausgangsargumenten Letzes Eingangsargument: varargin Letzer Rückgabewert: varargout varargin und varargout sind im Funktionskörper Vektoren, die Ein- und Ausgangsargumente beinhalten.

−−>function [ l ]= f ( x , varargin ) ; l =varargin ; endfunction §−−>f ( 0 , 1 , 2 ) ans = ans ( 1 ) 1. ans ( 2 ) 2.

¦−−>function [ varargout ]= f ( ) ¥ §−−> varargout= l i s t ( 1 , 2 , 3 ) −−>endfunction −−>[a , b ]= f ( ) b = 2. a = 1. T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 31 / 70 ¦ ¥ Scilab Programmierung Programme debuggen

Vorgehensweise Programm unterbrechen mittels Ctrl-C oder dem Befehl pause → Prompt ändert sich und zeigt den Pause-Level. Variablen können überprüft werden. Mittels where und whereami kann ermittelt werden, wo die Pause erzeugt wurde. Fortsetzen des Programms mit dem Befehl resume Beenden des Programms mit dem Befehl abort Schrittweise Abarbeitung von Programmcode mit dem Befehl exec

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 32 / 70 Scilab Ein- und Ausgabefunktionen 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 33 / 70 Scilab Ein- und Ausgabefunktionen Datei-Funktionen 1/3

Öffnen und Schließen von Dateien Öffen einer Datei: [fd, err]=mopen(filename, mode) mode: ’r’ - Lesen, ’w’ - Schreiben, ’r+’ Lesen und Schreiben, Zusatz ’b’ → Binärmodus Schließen von Dateien: [ err]=mclode([fd]) ([fd] - Vektor mit fd Werten vom Dateiöffnen) Schließen aller Dateien: [ err]=mclode(’all ’ )

Formatiere Ein-Ausgabe im Textmodus Formatierte Ausgabe mit mfprintf (Schreiben) Formatierte Eingabe mit mfscanf (Lesen)

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 34 / 70 Scilab Ein- und Ausgabefunktionen Datei-Funktionen 2/3 Beispiel: Einlesen von Daten aus folgender Textdatei (mfscanf.dat): An example of reading a file with a separator of type "[ ]*,[ ]*" ------CLKIN_f.sci , 98 , 16 CLKINV_f.sci , 91 , 16

−−>fd =mopen("mfscanf.dat","r"); //opens a file in read mod §−−>mgetl ( fd , 2 ) ; //bypassing the first two lines −−>[n , a , b , c ]= mfscanf(−1,fd ,"%[^ ,] ,%∗ [, ]%d%∗ [, ]%d\ n " ) ; // formattedread −−>n //number of read arguments ans = 3. −−>stripblanks ( a)~ // removing spaces and tranposing string matrix ans = CLKIN_f . s c i CLKINV_f . s c i −−>[b , c ] // numerical values ans = 98. 16. 91. 16. −−>mclose ( fd ) ;

¦ ¥ T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 35 / 70 Scilab Ein- und Ausgabefunktionen Datei-Funktionen

Ein- und Ausgabe im Binärmodus Variablen aus der aktuellen Umgebung können mit save gespeichert werden. Mit load könnnen gespeicherte Variablen in die aktuellen Umgebung geladen werden.

−−>A=rand (2,2); B=’hallo ’; §−−>save sitzung //speichert alle Variablen in der Datei Sitzung −−> //oder save(’sitzung ’) −−>clear a l l −−>load sitzung //oder load(’sitzung ’) −−>A A = 0.2113249 0.0002211 0.7560439 0.3303271 −−>save ( ’Sitzung ’ ,A) //speichert nur A in der Datei Sitzung

¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 36 / 70 Scilab Ein- und Ausgabefunktionen Datei-Funktionen Ein- und Ausgabe im Binärmodus mit mget,mput Öffnen und Schließen von Dateien mit mopen und mlose (Option ’b’!) Binäre Eingabe (lesen): mget Binäre Ausgabe (schreiben): mput Beispiel: Schreiben einer Matrix und Einlesen einer Matrix

−−>fd =mopen( ’test.dat’,’wb’) §−−>A=rand ( 2 , 3 ) A = 0.2312237 0.8833888 0.3076091 0.2164633 0.6525135 0.9329616 −−>mput(A, ’ d ’ ) ; −−>mclose ( fd ) ; −−>fd =mopen(’test.dat’,’rb’); −−>y=mget(2∗3 , ’ d ’ , fd ) ; −−>A=matrix ( y , 2 , 3 ) A = 0.2312237 0.8833888 0.3076091 0.2164633 0.6525135 0.9329616 −−>mclose ( fd ) ;

¦ ¥ T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 37 / 70 Scilab Grafikfunktionen 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 38 / 70 Scilab Grafikfunktionen 2D Plot als Beispiel 1/3 Beispiel (Scilab-Skript für plot):

Allgemeines //example with subplots §t=0:0.1:100; Vielfältige Grafikfunktionen y1=sin ( t ∗0.1)∗50; Export von Grafiken nach EPS, PDF, y2=sin ( t ∗0.3)∗75; Gif, Xfig subplot (211) PDF-Export mit xs2pdf plot (t,y1,’r’,t,y2,’b’); a=gca ( ) ; Grafiken sind Objekte a.y_label.text="y1"; Aktuelle Handles: a.grid=[1 1]; Achsen: h1=gca() a.data_bounds=[20 −100 ;80 100]; Figure: h2=gcf() subplot (212) Elemente: h3=gce() plot (t,y2, ’b’); Speichern und laden von Figuren a=gca ( ) ; mittels xsave und xload a.y_label.text="y2"; 2 Plotbefehle: plot (Matlab-like) und a.x_label.text="x"; plot2d (Scilab) a.grid=[1 1]; Figure erzeugen: scf a.data_bounds=[0 0 ;100 100]; xsave ( ’myfigure ’); Figure löschen: xdel xs2pdf(0, ’myfigure.pdf ’); Figure-Inhalt löschen: clf ¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 39 / 70 Scilab Grafikfunktionen 2D Plot als Beispiel 2/3 Ergebnis des Plot-Skripts:

100 80 60 40 20

y1 0 −20 −40 −60 −80 −100 20 30 40 50 60 70 80

100 90 80 70 60

y2 50 40 30 20 10 0 0 10 20 30 40 50 60 70 80 90 100 x

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 40 / 70 Scilab Grafikfunktionen 2D Plot als Beispiel 3/3

Beispiel (Scilab-Skript für plot2d): Ergebnis des Plot-Skriptes:

//example with subplots Example § 100 t=0:0.1:100; y1 80 y1=sin ( t ∗0.1)∗50; y2 60

y2=sin ( t ∗0.3)∗75; 40

//creates figure with id 4 20

f4 = s c f ( 4 ) ; y 0 plot2d (t,[y1’ y2’] ,... −20 style=[1 1],... −40 r e c t =[0 , −100,100,100],... −60 logflag=’nn’); −80 −100 0 10 20 30 40 50 60 70 80 90 100 e=gce ( ) ; t e.children(1). line_style=1; e.children(1). line_style=2; legend([ ’y1’; ’y2’]); xgrid x t i t l e ( ’Example’,’t ’,’y’); xs2pdf(4, ’plot2d_example.pdf ’ ); xdel ( 4 ) ;

¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 41 / 70 Scilab Lineare Systeme und Reglerentwurf 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 42 / 70 Scilab Lineare Systeme und Reglerentwurf Definition linearer Systeme 1/2

Zeitkontinuierliche Systeme Polynomkoeffizienten dürfen nicht komplex sein! Definition als Transferfunktion über Wurzeln:

S1=syslin ( ’ c ’ ,2∗ poly ( −0.5 , ’ s ’ ) / poly ([0, 0],’s’)); § ¦Definition als Transferfunktion über Koeffizienten: ¥ s=poly (0 , ’ s ’ ) § S2=syslin ( ’ c ’ ,(1+2∗ s ) / ( s ^ 2 ) ) ;

¦Definition als Zustandsraummodell: ¥ A=[0,1;0,0];B=[1;1];C=[1,1]; § S3=syslin ( ’c’,A,B,C);

¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 43 / 70 Scilab Lineare Systeme und Reglerentwurf Definition linearer Systeme

Zeitdiskrete Systeme Polynomkoeffizienten dürfen nicht komplex sein! Definition als Transferfunktion über Wurzeln:

TA=1; § S4=syslin (TA, −1.5∗ poly ( 0 . 6 , ’ z ’ ) / poly ([1 1],’z’));

¦Definition als Transferfunktion über Wurzeln: ¥ z=poly (0 , ’ z ’ ) ; § S5=syslin (TA,( −1.5+2.5∗ z )/(1 −2∗ z+z ^ 2 ) ) ;

¦Definition als Zustandsraummodell: ¥ A=[1,1;0,1];B=[1.5;1];C=[1, 1]; § S6=syslin (TA,A,B,C);

¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 44 / 70 Scilab Lineare Systeme und Reglerentwurf Transformationen, Zugriff auf Systemparameter

Transformationen Zugriff auf Systemparameter Transferfunktion nach Verstärkung einer Transferfunktion: Zustandsraummodell: −−>horner (S1 , 1 ) ; S3=tf2ss (S1 ) ; § ans=3 § ¦Zustandsraummodell nach ¥ ¦Zugriff auf Systemeigenschaften: ¥ Transferfunktion: S1.den; S1.num; S3.dt; −−>typeof (S3) § S3.A; S3.B; S3.C; S3.D; § ans=state−space S1=tf2ss (S3 ) ; Koeffizienten eines Polynoms: −−>typeof (S1) ¦ ¥ ans= r a t i o n a l coeff (S1 .num ) ; coeff (S1 . den ) ; § Diskretisierung: ¦ ¥ ¦Wurzeln eines Polynoms: ¥ TA=1; roots (S1 .num ) ; roots (S1 . den ) ; § S6=dscr (S1 , TA ) ; § S6=dscr (S3 , TA ) ; Bei der Weiterverwendung von ¦Wurzeln in Polynomen immer Ergebnis ¥ mit real() umwandeln! ¦T. Schauer (FG RS) Einführung in Scilab/Xcos¥ & Maxima 14. April 2015 45 / 70 Scilab Lineare Systeme und Reglerentwurf Bodeplot, P/Z-Plot und Nyquistdiagramm

Bodediagramm:

bode (S1 ) ; //Frequenz in Hz!!!! anwendbar auf S1−S6 § ¦Nyquist: ¥ nyquist (S1 ) ; //anwendbar auf S1−S6 § ¦P/Z-Plot: ¥ plzr (S1 ) ; //anwendbar auf S1−S6 §

¦Wurzelortskurve: RL-TOOL http://www.ee.iitb.ac.in/uma/vishan/scilab/rltool.htm ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 46 / 70 Scilab Lineare Systeme und Reglerentwurf Simulation linearer Systeme

Sprungantworten Zeitkontinuierliche Systeme

t=0:0.01:1; u=ones (1 , length ( t ) ) ; § csim ( ’step’,t ,S1); // alternativ csim(u,t ,S1);

¦Zeitdiskrete Systeme ¥ dsimul (S6 , u ) // Zustandsraummodell erforderlich § ¦ ¥ Frequenzantworten

f =logspace ( −2 ,2 ,100); // Frequenzvektor in Hz! §[ f , r ]= repfreq (S1 , f ) ; // 1. Variante [ f , r ]= repfreq (S1,fmin ,fmax); //2. Variante [ db , phi ]= dbphi ( r ) ; // Amplitude und Phase

¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 47 / 70 Scilab Lineare Systeme und Reglerentwurf Beispiel

Scilab-Skript zur Erzeugung des Ergebnis: Amplitudenganges:

Amplitudengang s=poly (0 , ’ s ’ ) ; −0 § G=syslin ( ’c’ ,1/(s^2+2∗s + 1 ) ) ; −20 f =logspace ( −2 ,2 ,100); [ f , r ]= repfreq (G, f ) ; −40

[ db , phi ]= dbphi ( r ) ; −60

s c f ( 1 ) ; Verstaekung in [dB] clf(1,’reset’); −80 plot2d ( f ∗2∗%pi , db , . . . −100 style=[1] ,... −120 −2 −1 0 1 2 3 logflag=’ln ’); 10 10 10 10 10 10 e=gce ( ) ; Frequenz in [rad/s] e.children(1). line_style=1; xgrid x t i t l e ( ’Amplitudengang ’ ,... ’ Frequenz i n [rad/s]’ ,... ’Verstaekung i n [ dB ] ’ ) ; xs2eps(1, ’example_AG.eps ’ );

¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 48 / 70 Scilab Lineare Systeme und Reglerentwurf Warnung: Fehlerhafte Polynomdefinitionen über Wurzeln!!!

Falsch:

−−>z=poly (0 , ’ z ’ ) ; §−−>A=(z−0.7+%i ∗ 0 . 1 ) ∗ ( z−0.7−%i ∗0.1) A = real part 2 0.5 − 1.4 z + z imaginary part − 6.661E−18 −−>

¦Führt zu komplexen Polynomkoeffizienten!!! ¥ Richtig:

−−>A=poly ([ −0.7+%i∗0.1,−0.7−%i ∗ 0 . 1 ] , ’ z ’ ) §A = 2 0.5 + 1.4 z + z −−>

¦Poly-Befehl nutzen, um ein Polynom über seine Wurzeln zu beschreiben! ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 49 / 70 Scilab Lineare Systeme und Reglerentwurf Lösung Diophantischer Gleichungen Problem Beispiele: Lösen einer Diophantischen Gleichung vom Typ exec (’dio.sci’,−1) §z=poly (0 , ’ z ’ ) ; A(z)R(z)Rd (z)+ B(z)S(z)Sd (z) = Ac (z) / / Example 1 A=z2 +0.3∗ z +0.1; wobei die Regelstecke durch B(z)/A(z) B=0.4+0.1∗ z ; gegeben ist. Ac=z3 +0.2∗ z2 +0.3∗ z +0.4; Der Regler hat die Struktur Rd=1; (S(z)Sd (z))/(R(z)Rd (z)). Sd=1; Die Reglerpolynome R(z) und S(z) sind [R,S]=dio(A,B,Rd,Sd,Ac); für ein gegebenes Wunschpolynom Ac (z) des geschlossenen Kreises zu bestimmen. //Example 2 with integrator A=z2 +0.3∗ z +0.1; Die Reglerpolynome Rd (z) und Sd (z) sind B=0.4+0.1∗ z ; fest vorgegeben, um z.B. ein gewünschtes Ac=z4+2∗z3 +0.2∗ z2 +0.3∗ z +0.4; Systemverhalten gegenüber Störungen zu Rd=z−1; erzielen. Eine häufige Annahme ist Sd=1; Rd (z) = z − 1 (integrales Reglerverhalten) [R,S]=dio(A,B,Rd,Sd,Ac); und Sd (z) = 1. Routine auf der Scilab-Website des Fachgebiets. ¦ ¥ T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 50 / 70 Scilab Xcos 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 51 / 70 Scilab Xcos Einführung Was ist Xcos? Editieren Graphischer Editor zur Erstellung von Blöcke hinzufügen: Drag and Drop vom Blockdiagramm-Modellen Palette Browser Blöcke von verschiedenen Paletten Verzweigung: Mit der Maus auf der Automatische Codegenerierung Verbindung bleiben bis diese grün wird. möglich Dann linke Maustaste gedrückt halten und neue Verbindung ziehen. Start von Xcos: Triggerung zeitdiskreter Blöcke wie Scopes mittels einer Uhr −−>xcos ; § Bei Scopes den Wertebereich (Ymin,Ymax) und Darstellzeit (Refresh ¦Laden eines existierenden Diagramms: ¥ Period) festlegen! −−>xcos my_diagramm.xcos; § Simulation ¦ ¥ Simulationseinstellungen über Menü: Simulation → Setup Anpassen der Simulationsdauer: Final Integration Time Start über Menü Simulation → Start oder Start-Button

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 52 / 70 Scilab Xcos Symbolische Parameter

Alle Parameter aus dem Scilab-Workspace können in Xcos als symbolische Parameter verwendet werden.

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 53 / 70 Scilab Xcos Datenaustausch über Dateien und Batchsimulation Beispielskript:

Datenaustausch //generate input data §//Sampling time 0.1 assumed Einlesen und Speichern von Daten unix ( ’ rm input_file ’); über ASCII-Dateien, in denen die u =[ zeros (0:0.1:1) ... Daten in Spalten gespeichert sind. ones (1.1:0.1:2) ... Schreiben und Lesen der Dateien unter zeros (2.1:0.1:3)] ’; Scilab mit write und read oder write (’input_file ’,u); fprintfMat und fscanfMat Von Xcos gespeicherte Daten haben loadXcosLibs (); loadScicos (); als erste Spalte immer die Zeit! importXcosDiagram( ’example.xcos ’ ) // parameters Eingangsdaten in Scilab können einen k=2 eigenen Zeitvektor beinhalten oder // simulation getaktet sein! scicos_simulate(scs_m); Halten der letzten definierten Eingangsdaten //read in stored time and outputs Festlegen der Anzahl der Ein- und data=read ( ’output_file ’, −1 ,3); Ausgänge und Dateinamen in Xcos //arg: filename , rows, columns unix ( ’ rm output_file ’);

Batch Simulation t=data(: ,1);y=data(: ,2); u=data(: ,3); Starten der Simulation von Scilab aus!

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 54 / 70 ¦ ¥ Scilab Xcos Datenaustausch über Dateien und Batchsimulation

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 55 / 70 Scilab Xcos Datenaustausch und Batchsimulation

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 56 / 70 Scilab Xcos From/To Workspace

Idee Speichern von Signalen im Scilab-Workspace Auslesen von Signalen aus dem Scilab-Workspace Entsprechende Blöcke in den Paletten Sources und Sinks Bei To Workspace muss spezifiziert werden, wie viele Datenpunkte man speichern möchte! Nach der Simulation sind die Signale als Struktur mit den Zeiten und Signalwerten unter dem spezifizierten Variablennamen in Scilab verfügbar. Batch-Simulation funktioniert nicht.

//generate data for § // ’from workspace’ time=0:0.1:10; input_vec.time=time ’; input_vec.values=sin ( time ) ’ ;

¦ ¥

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 57 / 70 Scilab Xcos To/From Workspace

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 58 / 70 Scilab Xcos Xcos - Blöcke 1/4 Beispiel für System 3-ter Ordnung (kont. und zeitdiskret):

Idee function block=model(block , flag ) §// Parameter Erstellung eigener Blöcke (statischer k1 =1; oder dynamischer Natur) unter Xcos k2 =2; Verschiedene Typen: Scilab (Type 5), i f f l a g ==0 //\dot x update C/C++ (Type 4) block.xd(1) = ... Verarbeitene Funktion: Computational −k1∗ block.x(1)+block. inptr (1)^2; Function block.xd(2) = ... −k2∗ block.x(2)+block.x(1); Xcos steuert die Funktionen über flags: e l s e i f f l a g ==2 / / z update Flag 0: Berechnung der kont. block.z(1)=block.z(1)+ Zustandsableitungen block.inptr (1); Flag 1: Berechnung der Ausgänge e l s e i f f l a g ==1 / / outputs Flag 2: Update der Zustände durch block.outptr(1)(1) = ... externe Aktivierung block.x(1); Ein- und Ausgänge können Matrizen block.outptr(2)(1) = ... sein! block.z(1); Comp. Functions müssen in Scilab block.outptr(3)(1:2) = ... geladen werden, bevor Xcos gestartet block . x ; wird! end endfunction

T. Schauer (FG RS) Einführung in Scilab/Xcos¦ & Maxima 14. April 2015 59 /¥ 70 Scilab Xcos Xcos - Blöcke 2/4

Matrizen als Zustände Datenstruktur Umwandlung der Matrix M (Zeitpunkt: k Eingänge: block.inptr bzw. k + 1 , Dimension n x m) in einen Ausgänge: block.outptr Vektor Mvec=M(:) (flag 2). Kont. Zustand: block.x Speichern des Vektors Mvec innerhalb Ableitung des kont. Zustands: von block.z (flag 2). block.xd Auslesen des Vektors Mvec (Zeitpunkt: Zeit-diskreter Zustand: block.z k − 1 bzw. k ) aus block.z (flag 1). Reelle Parameter: block.rpar Umwandlung des Vektors Mvec in eine Matrix M=matrix(Mvec,n,m) (flag 1). Integer-Parameter: block.ipar Achtung: Xcos ruft immer zuerst flag 1 Listen-Parameter: block.opar auf, und dann flag 2.

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 60 / 70 Scilab Xcos Xcos - Blöcke 3/4

Einbinden in Xcos Generelle Maske: Palette - Others, Block - Generic Eintragen des Names der Computational Function, der Dimension der Eingangs- und Ausgangsgrößen Initialisierung der Zustände Festlegung, ob ein direkter Durchgriff vom Ein- zum Ausgang existiert (Detektion algebraischer Schleifen). Zeitdiskrete Blöcke mit einer Abtastzeit: Input event port size = [1]

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 61 / 70 Scilab Xcos Xcos - Blöcke 4/4

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 62 / 70 Scilab Verschiedenes 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 63 / 70 Scilab Verschiedenes Simulation gewöhnlicher Differentialgleichungen Beispiel (Pendel):

Vorgehensweise −−>function xdot=pendulum_ode(t ,x) §−−> a=1; b=2; Definition des DGL-Systems −−> xdot(1)=x(2); x˙ = f (t, x) über eine Funktion, −−> xdot (2)=−a∗x(2)−b∗sin ( x ( 1 ) ) ; welche die Ableitungen −−>endfunction zurückliefert. Zeitabhängigkeit der DGL möglich! ¦−−>t=0:0.01:10; t0=0; ¥ § Simulation der DGL mittels der −−>x0=[%pi/2;0]; Funktion ode. −−>x=ode (x0,t0 ,t ,pendulum_ode); −−>h= s c f ( ) ; plot2d (t,x(1,:),[2]); Argumente von ode sind der −−>xs2eps(h.figure_id , ’ode.eps’ ); Vektor der Anfangswerte, die Anfangszeit t0, der Zeitvektor t für die Simulationausgabe ¦ 2.0 ¥

sowie der Name der Funktion, 1.5 welche das DGL-Systems 1.0 beschreibt.

0.5

0.0

−0.5 0 1 2 3 4 5 6 7 8 9 10

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 64 / 70 Scilab Verschiedenes Erstellung von Vektorfelddiagrammen für Systeme 2. Ordnung

Vorgehensweise −−>function xdot=pendulum_ode(t ,x) §−−> xdot(1)=x(2); Definition des DGL-Systems −−> xdot (2)=−1∗x(2)−2∗ sin ( x ( 1 ) ) ; x˙ = f (t, x) über eine Funktion, −−>endfunction welche die Ableitungen zurückliefert. Zeitabhängigkeit der DGL möglich! ¦−−>x1 = −4:0.5:4; x2= −4:0.5:4; t=0; ¥ § Erstellung des Vektorfeldes mittels −−>fchamp (pendulum_ode,0,x1,x2 ,... der Funktion fchamp. −−> 1 ,[ −4 , −4 ,4 ,4]); Argumente von fchamp sind ¦ ¥ zunächst der Name der Funktion, 4

welche das DGL-Systems 3

beschreibt sowie der Zeitpunkt t 2

zur Berechnung des Vektorfeldes 1

bei zeitvarianten Systemen. 0

Anschließend werden zwei −1 Vektoren übergeben, welche die −2 Gitterpunkte bestimmen, an denen −3

−4 die Vektoren gezeichnet werden. −4 −3 −2 −1 0 1 2 3 4 Optional können die Größe der Pfeile und die Achsenmaße vorgegeben werden.

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 65 / 70 Scilab Verschiedenes Lösung nichtlinearer Gleichungssysteme

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 66 / 70 Scilab Verschiedenes Nichtlineare Optimierung

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 67 / 70 Maxima Gliederung

1 Scilab

2 Maxima

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 68 / 70 Maxima Maxima Was ist Maxima? Maxima ist ein Computeralgebrasystem (symbolisches Mathematikprogramm), das als Open-Source-Projekt unter der GNU General Public License (GPL) entwickelt wird. Vergleichbar mit oder Mathematica Programmiert in Lisp Verfügbar für Windows, Mac OS X und Webseite: maxima.sourceforge.net Maxima basiert auf Macsyma, einem der ersten Computeralgebrasysteme.

Funktionen Manipulation von algebraischen Ausdrücken mit reellen oder komplexen Konstanten, Variablen und Funktionen Gleichungen lösen Differenzieren mit wählbarem Grad Integrieren Lineare Algebra: Inverse Matrix, Eigenwerte, Eigenvektoren, charakteristisches Polynom berechnen und vieles mehr

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 69 / 70 Maxima WxMaxima Was ist WxMaxima? Frontend für Maxima GUI: http://wxmaxima.sourceforge.nethttp://wxmaxima.sourceforge.net

Hinweis: Ausführen der Befehle mittel CTRL+ENTER!

T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 14. April 2015 70 / 70