Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu...

25
Allgemeines Programmierung RT-Anwendungen Grafiken Scicos Einf¨ uhrung in Scilab und Scicos Stephanie Geist 14. November 2006 Stephanie Geist Einf¨ uhrung in Scilab und Scicos

Transcript of Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu...

Page 1: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Einfuhrung in Scilab und Scicos

Stephanie Geist

14. November 2006

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 2: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Gliederung

1 Allgemeines

2 ProgrammierungMatrizenPolynomeProgrammierung

3 Regelungstechnische AnwendungenLineare SystemeAnalyseFrequenzantwortenZeitantworten

4 Erstellen von Grafiken

5 Scicos

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 3: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Was ist Scilab/Scicos?

Scilab

Kostenloses Open-Source Software-Paket fur wissenschaftlicheBerechnungen

Hunderte von Funktionen fur allgemeine Zwecke und eine Vielzahlvon speziellen Routinen fur numerische Berechnungen

Funktionsbibliotheken → Toolboxes fur Simulation, Optimierung,Systemanalyse, Reglerentwurf, Signalverarbeitung ...

Scicos

Scilab Toolbox mit graphischen Block-Diagramm-Editor fur dieErstellung und Simulation dynamischer Systeme

Automatische C-Code-Generierung

Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wieMATLAB/Simulink und MATRIXx/SystemBuild

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 4: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Geschichte und Verfugbarkeit

Geschichte

Entwickelt seit 1994 durch INRIA (Institut National de Recherche enInformatique et en Automatique) und ENPC (Ecole Nationale desPonts et des Chausses) in Frankreich

Seit 2003: Koordination der Entwicklung durch ein internationalesScilab Konsortium mit Industriebeteiligung

Download

www.scilab.org

Verfugbar fur Unix/Linux, Windows, MacOSX

Downloadgroße kleiner 15MByte

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 5: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Literatur

Buch: S.L. Champbell, J.-P. Chanceller und R. Nikoukhah, Modeling andSimulation in Scilab/Scicos, Springer Verlag, 2006

Kapitel 1 und 2: Scilabfrei verfugbar:http://www.springer.com/dal/home/math/cse?SGWID=1-10045-22-65671832-detailsPage=ppmmedia (samplepages)

Kapitel 6 und 7: Scicosfrei verfugbar: http://www.scicos.org/book/

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 6: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Start

Scilab Command Window

Interaktives Fenster

Bestatigung von Befehlen mittelsReturn

Scilab ist sowohl ein Interpreter alsauch eine Programmiersprache!

Einzelne Befehle oder Skriptdateienmit Befehlslisten konnen ausgefuhrtwerden (exec-Befehl, // -Kommentare).

Blattern in alten Befehlen mittelsPfeil-Hoch- und -Runter-Tasten

Scilab Help Browser

Online Dokumentation mit Suchfunktionund Programmbeispielen

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 7: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Philosophie1. Objekte erstellen

keine expliziete Deklaration oder Speicherzuordnung

eine zufallige 2x3 Matrix erstellen:

−−>a = rand ( 2 , 3 ) ;−−>t y p e o f ( a )

ans =

con s t an t

2. Dynamische Anpassung der Große

−−>a=[a , z e r o s ( 2 , 1 ) ]a =

0.2113249 0.0002211 0.6653811 0 . 0 .0 .7560439 0.3303271 0.6283918 0 . 0 .

3. Typ dynamisch andern

−−>a = ’ s c i l a b ’ ; t y p e o f ( a )ans =

s t r i n g

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 8: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Gliederung

1 Allgemeines

2 ProgrammierungMatrizenPolynomeProgrammierung

3 Regelungstechnische AnwendungenLineare SystemeAnalyseFrequenzantwortenZeitantworten

4 Erstellen von Grafiken

5 Scicos

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 9: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Matrizen

Info

Basis-Objekt: zweidimensionaleMatrix mit floating-point Zahlen

interne Speicherung alseindimensionales Feld(spaltengeordnet)

Skalar: 1x1 Matrix

Konstruktion von Matrizen

Spalternverkettungsoperator: ’,’oder Leerzeichen

Zeilenverkettungsoperator: ’;’oder Zeilenumbruch

beide Operatoren erscheinenzwischen ’[’ 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 .

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 10: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

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 i n s p a c e ( 3 , 9 , 4 ) ; z e r o s ( 1 : 4 ) ]

A =

1 . 3 . 3 . 3 .0 . 3 . 3 . 3 .3 . 5 . 7 . 9 .0 . 0 . 0 . 0 .

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 11: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

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 i n s p a c e ( 3 , 9 , 4 ) ; z e r o s ( 1 : 4 ) ]

A =

1 . 3 . 3 . 3 .0 . 3 . 3 . 3 .3 . 5 . 7 . 9 .0 . 0 . 0 . 0 .

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 12: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Elementare Matrixoperationen

Operatoren— logisches Oder& logisches Und˜ negieren==,≥,≤,>,<,<>,= Vergleichsoperatoren+,- binare Addition und Subtraktion+,- unare Addition und Subtraktion.*,./,. .*,./.,.,*,/,/.,˙

”Multiplikationen“ und

”Divisionen“

, **, ., .** Potenzieren’,.’ transponieren

Operatoren mit dem Punkt-Symbol stehen fur elementweiseOperationen.

Transponieren und gewohnlichesMatrixprodukt:

−−>A=(1:3) ’ ∗ ones (1 , 3 )A =

1 . 1 . 1 .2 . 2 . 2 .3 . 3 . 3 .

Elementweise Multiplikation:

−−>A.∗Aans =

1 . 1 . 1 .4 . 4 . 4 .9 . 9 . 9 .

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 13: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Polynome

Ein Polynom kann mittelsderScilab Funktion poly uberseine Wurzeln oder Koeffizientendefiniert werden.

Polynome lassen sich addieren,multiplizieren, in Matrizenpacken, etc.

Loser fur DiophantischeGleichungen

−−>p=po l y ( [ 1 3 ] , ’ s ’ )p =

23 − 4 s + s

−−>q=po l y ( [ 1 2 ] , ’ s ’ , ’ c ’ )q =

1 + 2 s−−>G=q/p ;

G =1 + 2 s

−−−−−−−−−−2

3 − 4 s + s

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 14: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Verzweigungen

if <condition> then <instruction> else <instructions> end

Mehrfachverzweigungen durch: elseif

Mehrfachverzweigungen mittels selectselect <expr>,

case <expr1> then <instructions>case <expr2> then <instructions>...else < instructions>

end

Schleifen

for-Schleife:for <name>=<expr>

< instructions>

end

while-Schleife:while <condition>

< instructions>

end

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 15: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Funktionen

Funktionen werden auch als Okjekte betrachtet.

Man unterscheided hard-coded Funktionen (z.B. sin) undScilab-coded Funktionen (z.B. sinh).

Definition von Funktionen durch die Schlusselworter function undendfunction

Scilab-coded Funktionen konnen von Scilab-Skripten aus geladenwerden mittels exec

−−>f u n c t i o n y=foo ( x , g ) ; y=g ( x ) ; e nd f un c t i o n−−>t y p e o f ( foo )

ans =f u n c t i o n

−−>f oo(%pi , s i n )ans =

1.225E−16

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 16: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Gliederung

1 Allgemeines

2 ProgrammierungMatrizenPolynomeProgrammierung

3 Regelungstechnische AnwendungenLineare SystemeAnalyseFrequenzantwortenZeitantworten

4 Erstellen von Grafiken

5 Scicos

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 17: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Einlesen linearer Systeme

Zustandsmodelle

−−>A=[−5 −2; 2 0 ] ;

−−>B= [ 0 . 5 ; 1 ] ;

−−>C=[0 1 ] ;

−−>s y s=s y s l i n ( ’ c ’ ,A ,B,C)

Ubertragungsfunktionen

−−>s=po l y (0 , ’ s ’ ) ;

−−>s y s=s y s l i n ( ’ c ’ , ( s +6)/( s ˆ2+5∗ s +4))

tf2ss,ss2tf

ss2tf :berechnet die Ubertragungsfunktion fur gegebeneZustandsdarstellung

tf2ss :berechnet eine Zustandsdarstellung fur gegebenerUbertragungsfunktion

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 18: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Analyse

Eigenwerte und Eigenvektoren

−−>A=[−2 1 0 ; 0 −3 0 ; 4 2 −4];

−−>[X , d i a g e v a l s ]= spec (A)d i a g e v a l s =

− 4 . 0 00 − 2 . 00 0 − 3 .

X =

0 0.4472136 − 0.40824830 0 0.40824831 . 0 .8944272 − 0.8164966

Pole und Nullstellen

−−>s=po l y (0 , ’ s ’ ) ;

−−>s y s=s y s l i n ( ’ c ’ , ( s +6)/( s ˆ2+5∗ s +4))s y s =

6 + s−−−−−−−−−

24 + 5 s + s

−−>t r fmod ( s y s )

oder

−−>r o o t s ( s y s . num)ans =

− 6 .

−−>r o o t s ( s y s . den )ans =

− 1 .− 4 .

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 19: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Ortskurven und Bodediagramme

−−>s=po l y (0 , ’ s ’ ) ;

−−>G=s y s l i n ( ’ c ’ , 1/( s ∗( s +1)))G =

1−−−−−

2s + s

−−>n yqu i s t (G, 0 . 0 0 1 , 1 00 )

−−>c l f ( )

−−>bode (G, 0 . 0 01 , 1 00 )

0.003

0.004

0.006

0.012

0.149 0.280 100

−1.2 −1.0 −0.8 −0.6 −0.4 −0.2 0.0 0.2−70

−60

−50

−40

−30

−20

−10

0

10

Nyquist plot

Re(h(2i*pi*f))

Im(h

(2i*

pi*f

))

−310

−210

−110

010

110

210

−120

−100

−80

−60

−40

−20

0

20

40Magnitude

Hz

db

−310

−210

−110

010

110

210

−180

−170

−160

−150

−140

−130

−120

−110

−100

−90Phase

Hz

degr

ees

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 20: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Simulation kontinuierlicher Systeme im Zeitbereich

[y [, x]]=csim(u,t , sl ,[ x0 [, tol ]])

−−>s y ss y s =

6 + s−−−−−−−−−

24 + 5 s + s

−−>t =0 : 0 . 1 : 7 ;

−−>y=cs im ( ’ s t e p ’ , t , s y s ) ;

−−>p l o t 2d ( t , y )

0 1 2 3 4 5 6 70.0

0.5

1.0

1.5

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 21: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Gliederung

1 Allgemeines

2 ProgrammierungMatrizenPolynomeProgrammierung

3 Regelungstechnische AnwendungenLineare SystemeAnalyseFrequenzantwortenZeitantworten

4 Erstellen von Grafiken

5 Scicos

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 22: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

2D Plot als Beispiel 1/2

Allgemeines

Vielfaltige Grafikfunktionen

Export von Grafiken nach EPS,Gif, Xfig

EPS-Export mit xs2eps

Grafiken sind Objekte

Aktuelle Handles:

Achsen: h=gca()Figure: h=gcf()

Speichern und laden vonFiguren mittels xsave und xload

// example with s u b p l o t st =0 : 0 . 1 : 1 00 ;y1=s i n ( t ∗0 . 1 )∗50 ;y2=s i n ( t ∗0 . 3 )∗75 ;s u bp l o t (211)p l o t ( t , y1 , ’ r ’ , t , y2 , ’ b ’ ) ;a=gca ( ) ;a . y l a b e l . t e x t=”y1 ” ;a . g r i d =[1 1 ] ;a . data bounds =[20 −100 ;80 1 0 0 ] ;s u bp l o t (212)p l o t ( t , y2 , ’ b ’ ) ;a=gca ( ) ;a . y l a b e l . t e x t=”y2 ” ;a . x l a b e l . t e x t=”x ” ;a . g r i d =[1 1 ] ;a . data bounds =[0 0 ;100 1 0 0 ] ;x save ( ’ my f i gu r e ’ ) ;x s2ep s (0 , ’ my f i gu r e . eps ’ ) ;

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 23: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

2D Plot als Beispiel 1/2

Ergebnis des Plot-Skriptes:

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

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 24: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

Gliederung

1 Allgemeines

2 ProgrammierungMatrizenPolynomeProgrammierung

3 Regelungstechnische AnwendungenLineare SystemeAnalyseFrequenzantwortenZeitantworten

4 Erstellen von Grafiken

5 Scicos

Stephanie Geist Einfuhrung in Scilab und Scicos

Page 25: Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu kommerziellen Programmpaketen wie MATLAB/Simulink und MATRIXx/SystemBuild Stephanie Geist

Allgemeines Programmierung RT-Anwendungen Grafiken Scicos

example_scicos

1/s 1/s

−3−3

−2−2

MScopeMScope

22

Stephanie Geist Einfuhrung in Scilab und Scicos