Einführung in Scilab/Xcos & Maxima - Wintersemester 2012/2013 · Wintersemester 2012/2013 T....

71
Einführung in Scilab/Xcos & Maxima Wintersemester 2012/2013 T. Schauer Fachgebiet Regelungssysteme TU Berlin 30. Oktober 2012 T. Schauer (FG RS) Einführung in Scilab/Xcos & Maxima 30. Oktober 2012 1 / 70

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