Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu...
Transcript of Einführung in Scilab und Scicos - TU Berlin · 2006-12-06 · Scilab/Scicos: Alternative zu...
Allgemeines Programmierung RT-Anwendungen Grafiken Scicos
Einfuhrung in Scilab und Scicos
Stephanie Geist
14. November 2006
Stephanie Geist Einfuhrung in Scilab und Scicos
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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