Einführung in Scilab/Xcos & Maxima - Wintersemester 2012/2013 · Wintersemester 2012/2013 T....
Transcript of Einführung in Scilab/Xcos & Maxima - Wintersemester 2012/2013 · Wintersemester 2012/2013 T....
-
Einführung in Scilab/Xcos & MaximaWintersemester 2012/2013
T. Schauer
Fachgebiet RegelungssystemeTU Berlin
30. Oktober 2012
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 1 / 70
-
Scilab
Gliederung
1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGrafikfunktionenLineare Systeme und ReglerentwurfXcosVerschiedenes
2 Maxima
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 2 / 70
-
Scilab Allgemeine Informationen über Scilab
Gliederung
1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGrafikfunktionenLineare Systeme und ReglerentwurfXcosVerschiedenes
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 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 Routinenfür numerische Berechnungen
Funktionesbibliotheken→ Toolboxes für Simulation, Optimierung, Systemanalyse,Reglerentwurf, Signalverarbeitung ...
ScicosScilab Toolbox mit graphischen Block-Diagramm-Editor für die Erstellung und Simulationdynamischer Systeme
Automatische C-Code-Generierung
GeschichteEntwickelt seit 1994 durch INRIA (Institut National de Recherche en Informatique et enAutomatique) und ENPC (Ecole Nationale des Ponts et des Chaussées) in Frankreich
Seit 2003: Koordination der Entwicklung durch ein internationales Scilab Konsortium mitIndustriebeteiligung
Scilab/Scicos: einzige wirkliche Alternative zu kommerziellen Programmpaketen wieMATLAB/Simulink und MATRIXx/SystemBuild
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 4 / 70
-
Scilab Allgemeine Informationen über Scilab
Verfügbarkeit / Literatur
Downloadwww.scilab.org
Verfügbar für Unix/Linux, Windows, MacOSX
Aktuell genutzte Version: 5.4
LiteraturBuch: S.L. Campbell, J.-P. Chanceller und R. Nikoukhah, Modeling and Simulation inScilab/Scicos, Springer Verlag, 2006
Buch: S.L. Campbell, J.-P. Chanceller und R. Nikoukhah, Modeling and Simulation inScilab/Scicos with ScicosLab 4.4, Springer Verlag, 2010
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 5 / 70
-
Scilab Allgemeine Informationen über Scilab
Nutzung am Fachgebiet Regelungssysteme
RechnerpoolRechnerpool im Raum EN 656
tubIT-Logins
Vorgehen1. 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 viaASF-Homeverzeichnis
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 6 / 70
-
Scilab Erste Schritte
Gliederung
1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGrafikfunktionenLineare Systeme und ReglerentwurfXcosVerschiedenes
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 7 / 70
-
Scilab Erste Schritte
Start
Scilab Command WindowInteraktives Fenster
Bestätigung von Befehlen mittels ReturnScilab ist sowohl ein Interpreter als aucheine Programmiersprache!
Einzelne Befehle oder Skriptdateien mitBefehlslisten können ausgeführt werden(exec-Befehl, // - Kommentare).Blättern in alten Befehlen mittelsPfeil-Hoch- und -Runter-Tasten
Scilab Help BrowserOnline Dokumentation mit Suchfunktion undProgrammbeispielen
Scilab EditorKomfortabler Editor mit Syntax-Hervorhebungund Debugging-Interface
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 8 / 70
-
Scilab Objekte
Gliederung
1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGrafikfunktionenLineare Systeme und ReglerentwurfXcosVerschiedenes
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 9 / 70
-
Scilab Objekte
Philosophie1. Objekte erstellen
keine expliziete Deklaration oderSpeicherzuordnung
eine zufällige 2x3 Matrix erstellen:�−−>a = rand ( 2 , 3 ) ;−−>typeof ( a )
ans =
constant� �
3. Typ dynamisch ändern�−−>a = ’ s c i l a b ’ ; typeof ( a )
ans =
str ing� �4. Objekt löschenNiemals clear() ohne Parameterausführen!!!�−−>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 30. Oktober 2012 10 / 70
-
Scilab Objekte
Speicher und Zahlen
SpeicherDer verfügbare Speicher in Scilab wirdüber den Befehl stacksize eingestellt.Speicher anzeigen (Größe undmaximale Anzahl von Variablen) undvergrößern:�−−>stacksize
ans =
5000000. 15983.−−>stacksize (6000000)
−−>� �
ZahlenDouble-Precision Floats
Prozessortypabhängige Genauigkeit
mögliche Erweiterung derZahlenmenge um %inf (infinity) und%nan (not a number) mittels desBefehls ieee�−−>ieee ( )
ans =0.
−−>1/0!−−error 27
d i v i s i o n by zero . . .−−>ieee ( 2 )−−>1/0
ans =I n f
−−>0/0ans =
Nan−−>� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 11 / 70
-
Scilab Objekte
Matrizen
InfoBasis-Objekt: zweidimensionale Matrixmit floating-point Zahlen
interne Speicherung alseindimensionales Feld(spaltengeordnet)
Skalar: 1x1 Matrix
Konstruktion von MatrizenSpalternverkettungsoperator: ’,’ oderLeerzeichen
Zeilenverkettungsoperator: ’;’ oderZeilenumbruch
beide Operatoren erscheinen zwischen’[’ und ’]’
�−−>A=[1 ,2 ,3 +5]A =
1. 2 . 3 . 5 .
−−>A=[1 ,2 ,3 ∗5]A =
1. 2 . 15.
−−>A=[A, 0 ; 1 , 2 , 3 , 4 ]A =
1. 2 . 15. 0 .1 . 2 . 3 . 4 .� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 12 / 70
-
Scilab Objekte
Matrizen
Funktionen zur Erstellung von Matrizen
’ transponiertdiag (m,n) Matrix mit gegebener Diagonale (oder Ausgabe der Diagonale)eye (m,n) Matrix mit Einsen auf der Hauptdiagonalenrand (m,n) Zufallsmatrixzeros (m,n) Matrix bestehend aus Nullenones (m,n) Matrix bestehend aus Einsenlinespace or ’:’ linearly spaced vectorlogspace logarthmically spaced vectormatrix Formen einer (m,n) Matrix aus einem (n*m) Vektor�
−−> A = [ eye ( 2 , 1 ) , 3∗ones ( 2 , 3 ) ; l inspace ( 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 30. Oktober 2012 13 / 70
-
Scilab Objekte
Matrizen
Funktionen zur Erstellung von Matrizen
’ transponiertdiag (m,n) Matrix mit gegebener Diagonale (oder Ausgabe der Diagonale)eye (m,n) Matrix mit Einsen auf der Hauptdiagonalenrand (m,n) Zufallsmatrixzeros (m,n) Matrix bestehend aus Nullenones (m,n) Matrix bestehend aus Einsenlinespace or ’:’ linearly spaced vectorlogspace logarthmically spaced vectormatrix Formen einer (m,n) Matrix aus einem (n*m) Vektor�
−−> A = [ eye ( 2 , 1 ) , 3∗ones ( 2 , 3 ) ; l inspace ( 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 30. Oktober 2012 13 / 70
-
Scilab Objekte
Extraktion, Einfügen und Löschen von Matrixelementen
InfoSpezifikation von Matrixeinträgen überA(B) oder A(B,C) wobei B und C sindnumerische oder boolesche Matrizensind die als als Indizes genutzt werden.
’$’ - letzter Index
’:’ - alle Einträge
’=’ Zuweisungsoperator
A(B)= oder A(B,C)=Die Einträge der Matrix auf der linkenSeite werden ersetzt durch dieEinträge von der rechten Seite, falls essich um keine Matrix verschieden vonNull handelt und die Größenkompatibel sind.
Wenn die rechte Seite eine leere Matrix([]) ist, werden die Elemente auf derlinken Seite gelöscht.
�−−>clear A;−−>A(2 ,4 ) = 1
A =0. 0 . 0 . 0 .0 . 0 . 0 . 1 .
−−>A( [ 1 , 2 ] , [ 1 , 2 ] ) = 3∗ones ( 2 ,2 )A =
3. 3 . 0 . 0 .3 . 3 . 0 . 1 .
−−>A( : , 1 ) = 8A =
8. 3 . 0 . 0 .8 . 3 . 0 . 1 .
−−>A ( : , $ ) = [ ]A =
8. 3 . 0 .8 . 3 . 0 .
−−>A ( : , $ + 1 )= [ 4 ;5 ]A =
8. 3 . 0 . 4 .8 . 3 . 0 . 5 .� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 14 / 70
-
Scilab Objekte
Extraktion, Einfügen und Löschen von Matrixelementen
=A(B) oder A(B,C)Falls die Audrücke A(B) oder A(B,C)auf der rechten Seite der Zuweisungstehen, werden Untermatrizenextrahiert.�
−−>D=A ( : , 2 : 3 )D =
3. 4 .3 . 5 .
−−>A( : , 4 ) =D( 1 , : ) ’A =
8. 3 . 4 . 3 .8 . 3 . 5 . 4 .� �
Boolesche MatrizenWerte für eine boolesche Variable:’True’ %t oder ’False’ %f
Benutzung von %t und %f zurKonstruktion von booleschen Matrizen
Vergleichsoperatoren ’==’,’>’, ’=2) %T&%F]ans =
T F−−>x =1:2:10
x =1. 3 . 5 . 7 . 9 .
−−>x ( x>5)=4x =
1. 3 . 5 . 4 . 4 .−−>f ind ( x
-
Scilab Objekte
Elementare Matrixoperationen
Operatoren| logisches Oder& logisches Und˜ negieren==,>=,,A= ( 1 : 3 ) ’∗ones ( 1 ,3 )
A =1. 1 . 1 .2 . 2 . 2 .3 . 3 . 3 .� �
Elementweise Multiplikation:�−−>A.∗A
ans =1. 1 . 1 .4 . 4 . 4 .9 . 9 . 9 .� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 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 mitminimaler Norm wird ermittelt:�−−>A1=[A, zeros (A ) ] ; x=A1 \ b
x =− 4.
4.50 .0 .� �
Überbestimmtes System -Least-Squares-Lösung wird ermittelt:�−−>A1=[A ;A ] ; x=A1 \ [ b ; 7 ; 8 ]
x =− 5.
5.5� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 17 / 70
-
Scilab Objekte
Zeichenketten und Polynome
Zeichenkettenbegrenzt durch ’ ’ oder
Matrix aus Zeichenketten
Vielzahl von Funktionen fürZeichenketten�
−−>S=[ ’ Die ’ , ’ 2x2 ’ ; ’ Ma t r i x ’ , ’ ! ’ ]S =
! The 2x2 !! !! Mat r i x ! !
−−>length (S)ans =
3. 3 .6 . 1 .� �
PolynomeEin Polynom kann mittels derScilabFunktion poly über seine Wurzeln oderKoeffizienten definiert werden.
Polynome lassen sich addieren,multiplizieren, in Matrizen packen, etc.
Löser für Diophantische Gleichungen�−−>p=poly ( [ 1 3 ] , ’ s ’ )
p =2
3 − 4s + s−−>q=poly ( [ 1 2 ] , ’ s ’ , ’ c ’ )
q =1 + 2s
−−>G=q / p ;G =
1 + 2s−−−−−−−−−−
23 − 4s + s� �T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 18 / 70
-
Scilab Objekte
Listen
Erzeugung von Listen über die Funktionen list, tlist oder mlistIndizierter Zugriff nur für list und tlistZugriff 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 ( [ ’ m y l i s t ’ , ’A ’ , ’B ’ , ’C ’ ] , ’ Bla ’ , 8 , [ 1 2 ] ) ;−−>sys ( ’B ’ )
ans =8.
−−>sys ( 3 )ans =Bla −−>−−>sys .B
ans =8.
−−>sys=mlist ( [ ’ m y l i s t ’ , ’A ’ , ’B ’ , ’C ’ ] , ’ Bla ’ , 8 , [ 1 2 ] ) ;−−>sys ( 3 )
!−−error 4undef ined v a r i a b l e : %l_e� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 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_newsys_new =
A: " Bla "B : 8C: [ 1 , 2 ]� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 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 endfunctionScilab-coded Funktionen können von Scilab-Skripten aus geladen werden mittels execScilab-coded Funktionen im Speicher können im Binärformat gespeichert oder geladenwerden 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 30. Oktober 2012 21 / 70
-
Scilab Objekte
Funktionen
Achtung: Funktionen können gelöscht order maskiert werden durch Zuweisungen!�−−>sin =[1 3 ] ;Warning : r e d e f i n i n g function : sin−−>sin ( 2 )
ans =3.
−−>clear sinWarning : r e d e f i n i n g function : sin−−>sin ( 2 )
ans =0.9092974� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 22 / 70
-
Scilab Programmierung
Gliederung
1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGrafikfunktionenLineare Systeme und ReglerentwurfXcosVerschiedenes
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 23 / 70
-
Scilab Programmierung
Scilab-Programme
Scilab-ProgrammeScilab-Programm: Anzahl von Instruktionen die in einer spezifierten Reihenfolge ausgeführtwerden.
gewöhnlich in einer ASCII-Datei spezifiziertAusfü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 S k r i p t ausexec ( ’ d io . s c i ’ ,−1); / / Laedt d ie Funkt ion und
/ / un te rd rueck t d ie Ausgabe .� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 24 / 70
-
Scilab Programmierung
VerzweigungenVerzeigungen mittels if/then/else bzw. elseif
if then else endMehrfachverzweigungen durch: elseif�
−−>A=log ( rand ( 3 , 3 ) ) ;−−> i f imag (A)==0 then disp ( ’A i s a r e a l mat r i x ’ ) ;−−>else ( ’A i s complex ’ ) ; end ;
A i s a rea l 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 < i n s t r u c t i o n s >case then < i n s t r u c t i o n s >. . .else < i n s t r u c t i o n s >
end� �T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 25 / 70
-
Scilab Programmierung
Schleifen 1/2
Die for-Schleifefor =
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 30. Oktober 2012 26 / 70
-
Scilab Programmierung
Schleifen 2/2
Die while-Schleifewhile
end
Solange der Ausdruck wahr ist, wird die Instruktionen des inneren Blockesausgeführt.�
−−>y =0; x =1;−−>while ( x y=y+x ;−−> x=x +1;−−> end−−>y
y =5050.
−−>� �T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 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 Funktionund 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 30. Oktober 2012 28 / 70
-
Scilab Programmierung
Scilab-Funktionen 2/4Beispiel einer rekursiven Funktion:�−−>function y= f a c t ( x )−−> i f x else y=x∗ f a c t ( x−1);−−> end−−>endfunction−−>f a c t ( 4 )
ans =24.� �
Nutzung einer Variablen aus derAufrufumgebung�−−>function y= f ( x ) ;−−> y=2∗x ;−−> x=2∗x ;−−>endfunction−−>x=90;−−>f ( )
ans =180.
−−>xx =
90.� �
Im Funktionskörper kann die Anzahlder gegebenen Eingangsargumente(rhs) und die Anzahl der erforderlichenRückgabewerte (lhs) mittels�[ lhs , rhs ]= argn ( )� �erfragt werden.
Durch die Funktion error kann eineFehlermeldung erzeugt werden.
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 29 / 70
-
Scilab Programmierung
Scilab-Funktionen 3/4Beispiel�−−>function [ u , v ]= f ( x , y )−−> [ lhs , rhs ]= argn ( )−−> i f rhs then error ( ’ a t l e a s t one argument must be given ’ ) ; end−−> i f rhs i f l hs == 2 then−−> u=x ; v=y ;−−> else−−> u=x+y ;−−> end−−>endfunction−−>−−>[u , v ]= f ( 4 )
v =2.
u =4.� �
Globale VariablenDefinition in der Ausrufsumgebung und in der entsprechenden Funktion mit global !
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 30 / 70
-
Scilab Programmierung
Scilab-Funktionen 4/4Funktionen mit variabler Anzahl von Ein- und Ausgangsargumenten
Letzes Eingangsargument: vararginLetzer Rückgabewert: varargoutvarargin und varargout sind im Funktionskörper Vektoren, die Ein- und Ausgangsargumentebeinhalten.�
−−>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 30. Oktober 2012 31 / 70
-
Scilab Programmierung
Programme debuggen
VorgehensweiseProgramm unterbrechen mittels Ctrl-C oder dem Befehl pause→ Prompt ändert sich undzeigt 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 resumeBeenden des Programms mit dem Befehl abortSchrittweise Abarbeitung von Programmcode mit dem Befehl exec
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 32 / 70
-
Scilab Ein- und Ausgabefunktionen
Gliederung
1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGrafikfunktionenLineare Systeme und ReglerentwurfXcosVerschiedenes
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 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ärmodusSchließ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 TextmodusFormatierte Ausgabe mit mfprintf (Schreiben)Formatierte Eingabe mit mfscanf (Lesen)
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 34 / 70
-
Scilab Ein- und Ausgabefunktionen
Datei-Funktionen 2/3Beispiel: 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 f i l e i n read mod−−>mgetl ( fd , 2 ) ; / / bypassing the f i r s t two l i n e s−−>[n , a , b , c ]= mfscanf (−1, fd , "%[ ^ , ] ,%∗ [ , ]%d%∗ [ , ]%d\ n " ) ;
/ / fo rmat tedread−−>n / / number o f read arguments
ans =3.
−−>str ipblanks ( a )~ / / removing spaces and t ranpos ing s t r i n g mat r i xans =
CLKIN_f . s c i CLKINV_f . s c i−−>[b , c ] / / numer ica l values
ans =98. 16.91. 16.
−−>mclose ( fd ) ;� �T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 35 / 70
-
Scilab Ein- und Ausgabefunktionen
Datei-Funktionen
Ein- und Ausgabe im BinärmodusVariablen 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= ’ h a l l o ’ ;−−>save s i t zung / / spe i che r t a l l e Var iab len i n der Date i Si tzung−−> / / oder save ( ’ s i tzung ’ )−−>clear a l l−−>load s i t zung / / oder load ( ’ s i tzung ’ )−−>A
A =0.2113249 0.00022110.7560439 0.3303271
−−>save ( ’ S i tzung ’ ,A) / / spe i che r t nur A i n der Date i Si tzung� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 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): mgetBinäre Ausgabe (schreiben): mput
Beispiel: Schreiben einer Matrix und Einlesen einer Matrix�−−>fd=mopen( ’ t e s t . dat ’ , ’wb ’ )−−>A=rand ( 2 ,3 )
A =0.2312237 0.8833888 0.30760910.2164633 0.6525135 0.9329616
−−>mput (A , ’ d ’ ) ;−−>mclose ( fd ) ;−−>fd=mopen( ’ t e s t . dat ’ , ’ rb ’ ) ;−−>y=mget (2∗3 , ’ d ’ , fd ) ;−−>A=matrix ( y , 2 , 3 )
A =0.2312237 0.8833888 0.30760910.2164633 0.6525135 0.9329616
−−>mclose ( fd ) ;� �T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 37 / 70
-
Scilab Grafikfunktionen
Gliederung
1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGrafikfunktionenLineare Systeme und ReglerentwurfXcosVerschiedenes
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 38 / 70
-
Scilab Grafikfunktionen
2D Plot als Beispiel 1/3
AllgemeinesVielfältige Grafikfunktionen
Export von Grafiken nach EPS, PDF,Gif, Xfig
PDF-Export mit xs2pdfGrafiken sind ObjekteAktuelle Handles:
Achsen: h1=gca()Figure: h2=gcf()Elemente: h3=gce()
Speichern und laden von Figurenmittels xsave und xload2 Plotbefehle: plot (Matlab-like) undplot2d (Scilab)Figure erzeugen: scfFigure löschen: xdelFigure-Inhalt löschen: clf
Beispiel (Scilab-Skript für plot):�/ / example w i th subp lo tst =0 :0 .1 :100 ;y1=sin ( t ∗0.1)∗50;y2=sin ( t ∗0.3)∗75;subplot (211)plot ( t , y1 , ’ r ’ , t , y2 , ’ b ’ ) ;a=gca ( ) ;a . y_ labe l . t e x t = " y1 " ;a . g r i d =[1 1 ] ;a . data_bounds =[20 −100 ;80 100 ] ;subplot (212)plot ( t , y2 , ’ b ’ ) ;a=gca ( ) ;a . y_ labe l . t e x t = " y2 " ;a . x_ labe l . t e x t = " x " ;a . g r i d =[1 1 ] ;a . data_bounds =[0 0 ;100 100 ] ;xsave ( ’ myf igure ’ ) ;xs2pdf (0 , ’ myf igure . pdf ’ ) ;� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 39 / 70
-
Scilab Grafikfunktionen
2D Plot als Beispiel 2/3Ergebnis des Plot-Skripts:
20 30 40 50 60 70 80−100
−80
−60
−40
−20
0
20
40
60
80
100y1
0 10 20 30 40 50 60 70 80 90 1000
10
20
30
40
50
60
70
80
90
100
x
y2
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 40 / 70
-
Scilab Grafikfunktionen
2D Plot als Beispiel 3/3
Beispiel (Scilab-Skript für plot2d):�/ / example w i th subp lo tst =0 :0 .1 :100 ;y1=sin ( t ∗0.1)∗50;y2=sin ( t ∗0.3)∗75;/ / c reates f i g u r e w i th i d 4f4=sc f ( 4 ) ;plot2d ( t , [ y1 ’ y2 ’ ] , . . .
s t y l e =[1 1 ] , . . .r e c t = [0 ,−100 ,100 ,100] , . . .l o g f l a g = ’ nn ’ ) ;
e=gce ( ) ;e . c h i l d r e n ( 1 ) . l i n e _ s t y l e =1;e . c h i l d r e n ( 1 ) . l i n e _ s t y l e =2;legend ( [ ’ y1 ’ ; ’ y2 ’ ] ) ;xgridx t i t l e ( ’ Example ’ , ’ t ’ , ’ y ’ ) ;xs2pdf (4 , ’ plot2d_example . pdf ’ ) ;xdel ( 4 ) ;� �
Ergebnis des Plot-Skriptes:
0 10 20 30 40 50 60 70 80 90 100−100
−80
−60
−40
−20
0
20
40
60
80
100
Example
t
y
y1
y2
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 41 / 70
-
Scilab Lineare Systeme und Reglerentwurf
Gliederung
1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGrafikfunktionenLineare Systeme und ReglerentwurfXcosVerschiedenes
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 42 / 70
-
Scilab Lineare Systeme und Reglerentwurf
Definition linearer Systeme 1/2
Zeitkontinuierliche SystemePolynomkoeffizienten dürfen nicht komplex sein!
Definition als Transferfunktion über Wurzeln:�S1=sysl in ( ’ c ’ ,2∗poly (−0.5 , ’ s ’ ) / poly ( [ 0 , 0 ] , ’ s ’ ) ) ;� �
Definition als Transferfunktion über Koeffizienten:�s=poly (0 , ’ s ’ )S2=sysl in ( ’ c ’ , (1+2∗s ) / ( s ^ 2 ) ) ;� �
Definition als Zustandsraummodell:�A= [ 0 , 1 ; 0 , 0 ] ;B = [ 1 ; 1 ] ;C= [ 1 , 1 ] ;S3=sysl in ( ’ c ’ ,A ,B,C ) ;� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 43 / 70
-
Scilab Lineare Systeme und Reglerentwurf
Definition linearer Systeme
Zeitdiskrete SystemePolynomkoeffizienten dürfen nicht komplex sein!
Definition als Transferfunktion über Wurzeln:�TA=1;S4=sysl in (TA,−1.5∗poly ( 0 . 6 , ’ z ’ ) / poly ( [ 1 1 ] , ’ z ’ ) ) ;� �
Definition als Transferfunktion über Wurzeln:�z=poly (0 , ’ z ’ ) ;S5=sysl in (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=sysl in (TA,A,B,C ) ;� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 44 / 70
-
Scilab Lineare Systeme und Reglerentwurf
Transformationen, Zugriff auf Systemparameter
TransformationenTransferfunktion nachZustandsraummodell:�
S3= t f2ss (S1 ) ;� �Zustandsraummodell nachTransferfunktion:�−−>typeof (S3)
ans=sta te−spaceS1= t f2ss (S3 ) ;−−>typeof (S1)
ans= r a t i o n a l� �Diskretisierung:�
TA=1;S6=dscr (S1 ,TA ) ;S6=dscr (S3 ,TA ) ;� �
Zugriff auf SystemparameterVerstärkung einer Transferfunktion:�−−>horner (S1 , 1 ) ;
ans=3� �Zugriff auf Systemeigenschaften:�
S1 . den ; S1 .num; S3 . d t ;S3 .A ; S3 .B ; S3 .C; S3 .D;� �
Koeffizienten eines Polynoms:�coeff (S1 .num ) ; coeff (S1 . den ) ;� �Wurzeln eines Polynoms:�roots (S1 .num ) ; roots (S1 . den ) ;� �Bei der Weiterverwendung vonWurzeln in Polynomen immer Ergebnismit real() umwandeln!
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 45 / 70
-
Scilab Lineare Systeme und Reglerentwurf
Bodeplot, P/Z-Plot und Nyquistdiagramm
Bodediagramm:�bode (S1 ) ; / / Frequenz i n 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 30. Oktober 2012 46 / 70
http://www.ee.iitb.ac.in/uma/~ishan/scilab/rltool.htm
-
Scilab Lineare Systeme und Reglerentwurf
Simulation linearer Systeme
SprungantwortenZeitkontinuierliche Systeme�t =0 :0 .01 :1 ; u=ones (1 , length ( t ) ) ;csim ( ’ s tep ’ , t , S1 ) ; / / a l t e r n a t i v csim ( u , t , S1 ) ;� �Zeitdiskrete Systeme�dsimul (S6 , u ) / / Zustandsraummodell e r f o r d e r l i c h� �
Frequenzantworten�f =logspace (−2 ,2 ,100); / / Frequenzvektor i n Hz ![ f , r ]= repfreq (S1 , f ) ; / / 1 . Var ian te[ f , r ]= repfreq (S1 , fmin , fmax ) ; / / 2 . Var ian te[ db , ph i ]= dbphi ( r ) ; / / Ampli tude und Phase� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 47 / 70
-
Scilab Lineare Systeme und Reglerentwurf
Beispiel
Scilab-Skript zur Erzeugung desAmplitudenganges:�s=poly (0 , ’ s ’ ) ;G=sysl in ( ’ c ’ , 1 / ( s^2+2∗s + 1 ) ) ;f =logspace (−2 ,2 ,100);[ f , r ]= repfreq (G, f ) ;[ db , ph i ]= dbphi ( r ) ;sc f ( 1 ) ;c l f (1 , ’ rese t ’ ) ;plot2d ( f ∗2∗%pi , db , . . .
s t y l e = [ 1 ] , . . .l o g f l a g = ’ l n ’ ) ;
e=gce ( ) ;e . c h i l d r e n ( 1 ) . l i n e _ s t y l e =1;xgridx t i t l e ( ’ Amplitudengang ’ , . . .
’ Frequenz i n [ rad / s ] ’ , . . .’ Verstaekung i n [ dB ] ’ ) ;
xs2eps (1 , ’ example_AG . eps ’ ) ;� �
Ergebnis:
−210
−110
010
110
210
310
−120
−100
−80
−60
−40
−20
−0
Amplitudengang
Frequenz in [rad/s]
Ver
stae
kung
in [d
B]
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 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 =rea l part
20.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 30. Oktober 2012 49 / 70
-
Scilab Lineare Systeme und Reglerentwurf
Lösung Diophantischer Gleichungen
ProblemLösen einer Diophantischen Gleichungvom Typ
A(z)R(z)Rd (z)+
B(z)S(z)Sd (z) = Ac(z)
wobei die Regelstecke durch B(z)/A(z)gegeben ist.
Der Regler hat die Struktur(S(z)Sd (z))/(R(z)Rd (z)).
Die Reglerpolynome R(z) und S(z) sindfür ein gegebenes Wunschpolynom Ac(z)des geschlossenen Kreises zu bestimmen.
Die Reglerpolynome Rd (z) und Sd (z) sindfest vorgegeben, um z.B. ein gewünschtesSystemverhalten gegenüber Störungen zuerzielen. Eine häufige Annahme istRd (z) = z − 1 (integrales Reglerverhalten)und Sd (z) = 1.
Routine auf der Scilab-Website desFachgebiets.
Beispiele:�exec ( ’ d io . s c i ’ ,−1)z=poly (0 , ’ z ’ ) ;
/ / Example 1A=z2+0.3∗z +0 .1 ;B=0.4+0.1∗z ;Ac=z3+0.2∗z2+0.3∗z +0 .4 ;Rd=1;Sd=1;[R,S]= d io (A,B, Rd, Sd , Ac ) ;
/ / Example 2 wi th i n t e g r a t o rA=z2+0.3∗z +0 .1 ;B=0.4+0.1∗z ;Ac=z4+2∗z3+0.2∗z2+0.3∗z +0 .4 ;Rd=z−1;Sd=1;[R,S]= d io (A,B, Rd, Sd , Ac ) ;� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 50 / 70
-
Scilab Xcos
Gliederung
1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGrafikfunktionenLineare Systeme und ReglerentwurfXcosVerschiedenes
2 Maxima
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 51 / 70
-
Scilab Xcos
Einführung
Was ist Xcos?Graphischer Editor zur Erstellung vonBlockdiagramm-Modellen
Blöcke von verschiedenen Paletten
Automatische Codegenerierungmöglich
Start von Xcos:�−−>xcos ;� �Laden eines existierenden Diagramms:�−−>xcos my_diagramm . xcos ;� �
EditierenBlöcke hinzufügen: Drag and Drop vomPalette browser
Verzweigung: Mit der Maus auf derVerbindung bleiben bis diese grün wird.Dann linke Maustaste gedrückt haltenund neue Verbindung ziehen.
Triggerung zeitdiskreter Blöcke wieScopes mittels einer Uhr
Bei Scopes den Wertebereich(Ymin,Ymax) und Darstellzeit (RefreshPeriod) festlegen!
SimulationSimulationseinstellungen über Menü:Simulation→ SetupAnpassen der Simulationsdauer: FinalIntegration Time
Start über Menü Simulation→ Startoder Start-Button
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 52 / 70
-
Scilab Xcos
Symbolische Parameter
Alle Parameter aus demScilab-Workspace können in Xcos alssymbolische Parameter verwendetwerden.
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 53 / 70
-
Scilab Xcos
Datenaustausch über Dateien und Batchsimulation
DatenaustauschEinlesen und Speichern von Datenüber ASCII-Dateien, in denen dieDaten in Spalten gespeichert sind.
Schreiben und Lesen der Dateien unterScilab mit write und read oderfprintfMat und fscanfMatVon Xcos gespeicherte Daten habenals erste Spalte immer die Zeit!
Eingangsdaten in Scilab können eineneigenen Zeitvektor beinhalten odergetaktet sein!
Halten der letzten definiertenEingangsdaten
Festlegen der Anzahl der Ein- undAusgänge und Dateinamen in Xcos
Batch SimulationStarten der Simulation von Scilab aus!
Beispielskript:�/ / generate i npu t data/ / Sampling t ime 0.1 assumedunix ( ’ rm i n p u t _ f i l e ’ ) ;u=[ zeros ( 0 : 0 . 1 : 1 ) . . .
ones ( 1 . 1 : 0 . 1 : 2 ) . . .zeros ( 2 . 1 : 0 . 1 : 3 ) ] ’ ;
write ( ’ i n p u t _ f i l e ’ , u ) ;
importXcosDiagram ( ’ example . xcos ’ )/ / parametersk=2/ / s imu la t i onsc icos_s imu la te ( scs_m ) ;
/ / read i n s tored t ime and outputsdata=read ( ’ o u t p u t _ f i l e ’ ,−1 ,3);/ / arg : f i lename , rows , columnsunix ( ’ rm o u t p u t _ f i l e ’ ) ;
t =data ( : , 1 ) ; y=data ( : , 2 ) ;u=data ( : , 3 ) ;� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 54 / 70
-
Scilab Xcos
Datenaustausch über Dateien und Batchsimulation
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 55 / 70
-
Scilab Xcos
Datenaustausch und Batchsimulation
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 56 / 70
-
Scilab Xcos
From/To Workspace
IdeeSpeichern 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 demspezifizierten Variablennamen in Scilab verfügbar.
Batch-Simulation funktioniert nicht. �/ / generate data f o r/ / ’ from workspace ’t ime =0 :0 .1 :10 ;input_vec . t ime=time ’ ;input_vec . values=sin ( t ime ) ’ ;� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 57 / 70
-
Scilab Xcos
To/From Workspace
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 58 / 70
-
Scilab Xcos
Xcos - Blöcke 1/4
IdeeErstellung eigener Blöcke (statischeroder dynamischer Natur) unter Xcos
Verschiedene Typen: Scilab (Type 5),C/C++ (Type 4)
Verarbeitene Funktion: ComputationalFunction
Xcos steuert die Funktionen über flags:Flag 0: Berechnung der kont.ZustandsableitungenFlag 1: Berechnung der AusgängeFlag 2: Update der Zustände durchexterne Aktivierung
Ein- und Ausgänge können Matrizensein!
Comp. Functions müssen in Scilabgeladen werden, bevor Xcos gestartetwird!
Beispiel für System 3-ter Ordnung (kont.und zeitdiskret):�function block=model ( block , f l a g )/ / Parameterk1 =1;k2 =2;i f f l a g ==0 / / \ dot x updateblock . xd ( 1 ) = . . .−k1∗block . x (1)+ block . i n p t r ( 1 ) ^ 2 ;
b lock . xd ( 2 ) = . . .−k2∗block . x (2)+ block . x ( 1 ) ;
e l s e i f f l a g ==2 / / z updateblock . z (1)= block . z (1)+block . i n p t r ( 1 ) ;e l s e i f f l a g ==1 / / ou tputs
block . o u t p t r ( 1 ) ( 1 ) = . . .b lock . x ( 1 ) ;
b lock . o u t p t r ( 2 ) ( 1 ) = . . .b lock . z ( 1 ) ;
b lock . o u t p t r ( 3 ) ( 1 : 2 ) = . . .b lock . x ;
endendfunction� �
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 59 / 70
-
Scilab Xcos
Xcos - Blöcke 2/4
DatenstrukturEingänge: block.inptr
Ausgänge: block.outptr
Kont. Zustand: block.x
Ableitung des kont. Zustands:block.xd
Zeit-diskreter Zustand: block.z
Reelle Parameter: block.rpar
Integer-Parameter: block.ipar
Listen-Parameter: block.opar
Matrizen als ZuständeUmwandlung der Matrix M (Zeitpunkt: kbzw. k + 1 , Dimension n x m) in einenVektor Mvec=M(:) (flag 2).
Speichern des Vektors Mvec innerhalbvon block.z (flag 2).
Auslesen des Vektors Mvec (Zeitpunkt:k − 1 bzw. k ) aus block.z (flag 1).Umwandlung des Vektors Mvec in eineMatrix M=matrix(Mvec,n,m) (flag 1).
Achtung: Xcos ruft immer zuerst flag 1auf, und dann flag 2.
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 60 / 70
-
Scilab Xcos
Xcos - Blöcke 3/4
Einbinden in XcosGenerelle Maske: Palette - Others,Block - Generic
Eintragen des Names derComputational Function, derDimension der Eingangs- undAusgangsgrößen
Initialisierung der Zustände
Festlegung, ob ein direkter Durchgriffvom 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 30. Oktober 2012 61 / 70
-
Scilab Xcos
Xcos - Blöcke 4/4
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 62 / 70
-
Scilab Verschiedenes
Gliederung
1 ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGrafikfunktionenLineare Systeme und ReglerentwurfXcosVerschiedenes
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 63 / 70
-
Scilab Verschiedenes
Simulation gewöhnlicher Differentialgleichungen
VorgehensweiseDefinition des DGL-Systemsẋ = f (t , x) über eine Funktion,welche die Ableitungenzurückliefert.
Zeitabhängigkeit der DGLmöglich!
Simulation der DGL mittels derFunktion ode.Argumente von ode sind derVektor der Anfangswerte, dieAnfangszeit t0, der Zeitvektor tfür die Simulationausgabesowie der Name der Funktion,welche das DGL-Systemsbeschreibt.
Beispiel (Pendel):�−−>function xdot=pendulum_ode ( t , x )−−> a=1; b=2;−−> xdot (1)= x ( 2 ) ;−−> xdot (2)=−a∗x(2)−b∗sin ( x ( 1 ) ) ;−−>endfunction� ��−−>t =0 :0 .01 :10 ; t0 =0;−−>x0 =[ %pi / 2 ; 0 ] ;−−>x=ode ( x0 , t0 , t , pendulum_ode ) ;−−>h=sc f ( ) ; plot2d ( t , x ( 1 , : ) , [ 2 ] ) ;−−>xs2eps ( h . f i g u r e _ i d , ’ ode . eps ’ ) ;� �
0 1 2 3 4 5 6 7 8 9 10−0.5
0.0
0.5
1.0
1.5
2.0
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 64 / 70
-
Scilab Verschiedenes
Erstellung von Vektorfelddiagrammen für Systeme 2. Ordnung
VorgehensweiseDefinition des DGL-Systemsẋ = f (t , x) über eine Funktion,welche die Ableitungenzurückliefert.
Zeitabhängigkeit der DGL möglich!
Erstellung des Vektorfeldes mittelsder Funktion fchamp.Argumente von fchamp sindzunächst der Name der Funktion,welche das DGL-Systemsbeschreibt sowie der Zeitpunkt tzur Berechnung des Vektorfeldesbei zeitvarianten Systemen.Anschließend werden zweiVektoren übergeben, welche dieGitterpunkte bestimmen, an denendie Vektoren gezeichnet werden.Optional können die Größe derPfeile und die Achsenmaßevorgegeben werden.
�−−>function xdot=pendulum_ode ( t , x )−−> xdot (1)= x ( 2 ) ;−−> xdot (2)=−1∗x(2)−2∗sin ( x ( 1 ) ) ;−−>endfunction� ��−−>x1 =−4:0.5:4; x2 =−4:0.5:4; t =0;−−>fchamp ( pendulum_ode ,0 , x1 , x2 , . . .−−> 1 ,[−4 ,−4 ,4 ,4]) ;� �
−4 −3 −2 −1 0 1 2 3 4−4
−3
−2
−1
0
1
2
3
4
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 65 / 70
-
Scilab Verschiedenes
Lösung nichtlinearer Gleichungssysteme
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 66 / 70
-
Scilab Verschiedenes
Nichtlineare Optimierung
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 67 / 70
-
Maxima
Gliederung
1 Scilab
2 Maxima
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 68 / 70
-
Maxima
Maxima
Was ist Maxima?Maxima ist ein Computeralgebrasystem (symbolisches Mathematikprogramm), das alsOpen-Source-Projekt unter der GNU General Public License (GPL) entwickelt wird.
Vergleichbar mit Maple oder Mathematica
Programmiert in Lisp
Verfügbar für Windows, Mac OS X und Linux
Webseite: maxima.sourceforge.net
Maxima basiert auf Macsyma, einem der ersten Computeralgebrasysteme.
FunktionenManipulation 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 Polynomberechnen
und vieles mehr
T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 69 / 70
http://maxima.sourceforge.net
-
Maxima
WxMaximaWas 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 30. Oktober 2012 70 / 70
ScilabAllgemeine Informationen über ScilabErste SchritteObjekteProgrammierungEin- und AusgabefunktionenGrafikfunktionenLineare Systeme und ReglerentwurfXcosVerschiedenes
Maxima