szimbolikus és numerikus szoftvermegoldások - … informatikai tÁrgyak... · a derive programot...
Post on 30-May-2018
220 Views
Preview:
TRANSCRIPT
2015-11-26 AP: MIMG02, 2015 2
Ez az anyag kizárólag a Számítógépes modellezés, szimuláció
(BMEGEMIMG02) tantárgy2015/16/1 féléves hallgatói számára készült,
személyes használatra, a felkészülés támogatására.
Bármiféle továbbadás, közzététel, megosztás tilos.
2015-11-26 AP: MIMG02, 2015 3
Matematikai programok
● megoldási módszer– szimbolikus, analitikus– numerikus
● felhasználói felület– szöveges (konzolos vagyis parancssoros)– grafikus (parancssoros)– grafikus
● munkafüzet (notebook)–
2015-11-26 AP: MIMG02, 2015 5
Matematikai modellek csoportosítása
● bemenetek és kimenetek száma szerint– egy bemenetű, egy kimenetű
(single input, single output): SISO– több bemenetű, egy kimenetű
(multiple input, single output): MISO– egy bemenetű, több kimenetű
(single input, multiple output): SIMO– több bemenetű, több kimenetű
(multiple input, multiple output): MIMO
2015-11-26 AP: MIMG02, 2015 6
Matematikai modellek(analitikus megoldás)
● BEMENET-KIMENET MODELLEK● differenciálegyenlet
– Közönséges Állandó együtthatós Lineáris Inhomogén● frekvenciaátviteli függvény● átviteli függvény● zérus-pólus-erősítés alak
● BELSŐ ÁLLAPOTOK FIGYELEMBE VÉTELE● állapottér modell
– kanonikus alakú állapottér modell formálisan előállítható a K.Á.L.I. differenciálegyenletből
2015-11-26 AP: MIMG02, 2015 7
Matematikai modellek(numerikus megoldás)
● BEMENET-KIMENET MODELLEK– differenciálegyenlet
● BELSŐ ÁLLAPOTOK FIGYELEMBE VÉTELE– állapottér modell
● Mindegyik modelltípus lehet– nemlineáris– változó paraméterű
2015-11-26 AP: MIMG02, 2015 8
Matematikai modellek csoportosítása
● a modell jellege szerint– bemenet-kimenet kapcsolat– belső állapotok figyelembe vétele
RENDSZER-MODELL
bemenet (u)
bemenetekvektora (u)
állapotváltozók vektora (x)
kimenet (y)
kimenetekvektora (y)
2015-11-26 AP: MIMG02, 2015 9
Matematikai modellek csoportosítása
● a felírás tartománya szerint– időtartománybeli
● bemenet-kimenet kapcsolat:– differenciálegyenlet (SISO)
● belső állapotok figyelembe vétele:– állapottér modell (SISO-tól MIMO-ig)
– frekvenciatartománybeli● bemenet-kimenet kapcsolat:
– (komplex kör)frekvenciaátviteli függvény (SISO)– Laplace-operátoros tartománybeli
● bemenet-kimenet kapcsolat:– átviteli függvény (SISO)
● belső állapotok figyelembe vétele:– állapottér modell (SISO-tól MIMO-ig)
STATE SPACE (SS) A, B, C és D mátrix
TRANSFER FUNCTION (TF)
számláló és nevező polinom együtthatói vektorként felírva
MathScript RTtimeresp:impulse, initial, lsim, step
MathScript RTfrqresp:bode, nyquist, ...
2015-11-26 AP: MIMG02, 2015 10
Mintapélda
● Mechatronikai berendezések tervezése jegyzet● 4.1. fejezete “Torziós tengely és tárcsa dinamikai
modelljei keresztváltozó (szögsebesség) forrással”
2015-11-26 AP: MIMG02, 2015 11
Differenciálegyenlet és (frekvencia)átviteli függvény
Osztás K-val, idő szerinti deriválás, átrendezés
Laplace-transzformációzérus kezdeti feltételekkel
Átviteli függvény előállítása
Frekvenciaátviteli függvény formális előállítása
2015-11-26 AP: MIMG02, 2015 12
Kanonikus állapottér modell formális előállítása differenciálegyenletből: matematikus út
2015-11-26 AP: MIMG02, 2015 13
Állapottér modell előállítása az integro-differenciálegyenletből: mérnöki út
2015-11-26 AP: MIMG02, 2015 14
Matematikai modellek(analitikus megoldás)
BEMENET-KIMENET MODELLEK● differenciálegyenlet
– Közönséges, Állandó együtthatós, Lineáris, Inhomogén● frekvenciaátviteli függvény
– exponenciális (Euler) alak– algebrai alak
● átviteli függvény– polinomiális alak– zérus-pólus-erősítés alak
BELSŐ ÁLLAPOTOK FIGYELEMBE VÉTELE● állapottér modell
– kanonikus alakú állapottér modell formálisan előállítható a K.Á.L.I. differenciálegyenletből
2015-11-26 AP: MIMG02, 2015 15
tf (transfer function), zpk (zero-pole-gain), ss (state-space)
and n y
dt n+…+ a2
d 2 y
dt 2+ a1
d ydt
+ a0 y (t)=b0u(t )+ b1d udt
+ b2d 2u
dt 2++…+ bm
dmu
dtm
n⩾m
G( jω)=~y (t)~u (t)
=Y 0(ω)e j(ω t +φ(ω))
U 0(ω)e jω t=bm( jω)
m+…+b2( jω)
2+b1 jω+b0
an ( jω)n+…+a2( jω)2+a1 jω+a0
G(s)=Y (s)U (s)
=bm s
m+ …+ b2 s
2+ b1 s+ b0
an sn+ …+ a2 s
2+ a1 s+ a0
G(s)=Y (s)U (s)
=K⋅Z (s)P(s)
=K⋅(s−z1)(s− z2)…(s−zm)
(s−p1)(s− p2)…(s− pn)
d xd t
=A x (t)+ Bu( t)
y (t)=C x (t )+ Du( t)
s X (s )−x (0)=A X (s)+ BU (s)Y (s)=C X (s )+ DU (s)
ss
zpk
tf
2015-11-26 AP: MIMG02, 2015 16
Átjárás a matematikai modellek között
● tf: transfer function (átviteli függvény)– tf2zpk, tf2ss
● zpk: zeros-poles-gain (zérus-pólus-erősítés)– zpk2tf, zpk2ss
● ss: state space (állapottér) – ss2tf, ss2zpk, ss2ss
● continuous (folytonos idejű) és discrete (diszkrét idejű, mintavételes)– c2d, d2s, d2d
2015-11-26 AP: MIMG02, 2015 17
● sos_to_ss Second-order section to state-space ● sos_to_tf Second-order section to transfer function ● sos_to_zpk Second-order section to zero-pole-gain ● ss_to_sos State-space to second-order section ● ss_to_tf State-space to transfer function ● ss_to_zpk State-space to zero-pole-gain ● tf_to_sos Transfer function to second-order section ● tf_to_ss Transfer function to state-space ● tf_to_zpk Transfer function to zero-pole-gain ● zpk_to_sos Zero-pole-gain to second-order section ● zpk_to_ss Zero-pole-gain to state-space ● zpk_to_tf Zero-pole to transfer function
MathScript RT: átjárás a matematikai modellek között
2015-11-26 AP: MIMG02, 2015 25
u(t)
x=A⋅x t B⋅u t
y=C⋅x(t )+D⋅u (t)
∫dty(t)
A
B C
D
x(t)
A számítások belseje: állapottér modell
2015-11-26 AP: MIMG02, 2015 26
Példák szimbolikus matematikai program (Maxima) használatára
● Huba Antal, Aradi Petra, Czmerk András, Lakatos Béla, Chován Tibor, Varga Tamás: Mechatronikai berendezések tervezése– 8. fejezet - DC motor hajtóművel egybeépített modelljei– 15. fejezet - CD-fej fókusztávolság szabályozásának
tervezése és szimulációja– 16. fejezet - Golyósorsós pozícionáló szabályozásának
tervezése és szimulációja– 17. fejezet - Vonóelemes pozícionáló szabályozásának
tervezése és szimulációja
http://mogi.bme.hu/TAMOP/mechatronikai_berendezesek_tervezese/
2015-11-26 AP: MIMG02, 2015 27
DC motor hajtóművel egybeépített modelljei
● Visszahatás nélküli hajtómű– Általános változat (egytárolós)– Háromtárolós változat– Négytárolós változat
● DC motor és hajtómű visszahatással, pl. i<500, és golyósorsós átalakítóval
2015-11-26 AP: MIMG02, 2015 28
Impedanciák 1. villamos rész 2. motor tehetelenségéből és a veszteségből 3. hajtómű rugómerevségéből 4. hajtómű fogaskerekeihez és csapágyazásaihoz kapcsolódó 5. golyósorsós mozgásátalakító rugalmasságából 6. golyósorsós mozgásátalakító tömegből és veszteségéből
Különböző típusú részrendszerek “egységesítése”, energiaátalakítók figyelembevétele: impedanciahálózat modell.
2015-11-26 AP: MIMG02, 2015 31
CD-fej fókusztávolság szabályozás: elhanyagolás lehetőségének vizsgálata
2015-11-26 AP: MIMG02, 2015 33
Computer Algebra System
● szimbolikus műveletek● az 1960-as évektől, elméleti fizikusok és
mesterséges intelligencia kutatók igényei alapján● 1987-től számológépekben is van CAS (HP, TI)● források:
– http://en.wikipedia.org/wiki/Computer_algebra_system– http://en.wikipedia.org/wiki/Comparison_of_computer_al
gebra_systems
2015-11-26 AP: MIMG02, 2015 34
CAS: szimbolikus műveletek
● egyszerűsítés és kifejtés helyettesítéssel● részlettörtekre bontás, összevonás
(trigonometrikus, exponenciális, polinomiális, stb.)● parciális és teljes differenciálás● szimbolikus integrálás (néhány határozatlan és
határozott integrál)● szimbolikus globális optimalizálás● lineáris és néhány fajta nemlineáris egyenlet és
egyenletrendszer megoldása
2015-11-26 AP: MIMG02, 2015 35
CAS: szimbolikus műveletek
● néhány fajta differenciál- és differencia egyenlet megoldása
● határértékszámítás● integrál transzformációk● sorozatokkal kapcsolatos műveletek
(pl. összegzés, szorzás)● mátrixműveletek (szorzás, inverz, stb.)● statisztikai számítások● tételek bizonyítása és igazolása● optimalizált kód előállítása
2015-11-26 AP: MIMG02, 2015 36
CAS: többletfunkciók
● programozási nyelv saját algoritmusok kódolására● tetszőleges pontosságú numerikus műveletek● pontos egész aritmetika és számelméleti
funkcionalitás● matematikai kifejezések “szép” külalakkal● rajzolás akár paraméteresen is 2D-ben, 3D-ben
animációval● API a külső programokhoz kapcsoláshoz● string műveletek (keresés, stb.)● kiegészítő csomagok tudományterületekhez
2015-11-26 AP: MIMG02, 2015 37
Népszerű CAS programcsomagok
● muMATH● Reduce● Derive (alapja a muMATH)● Macsyma (jelenleg copyleft változata a Maxima
van folyamatos fejlesztés alatt)● a legnépszerűbb kereskedelmi rendszerek:
– Mathematica– Maple– MathCAD
● ingyenes alternatíva pl. a Sage (front-end több ingyenes CAS csomaghoz)
2015-11-26 AP: MIMG02, 2015 38
Derive(computer algebra system)
● a muMATH (Soft Warehouse) program utódja● a Soft Warehouse-t megvette a Texas Instruments● a Derive programot muLISP (Soft Warehouse)
nyelven írták● memóriaigénye kicsi
– DOS– Windows– TI számológépek
● Derive: 1988-2007– utolsó verzió: 6.1 (Windows)
● utóda a TI-Nspirehttp://ti-nspire.com/tools/images/screens/MR3.jpg
2015-11-26 AP: MIMG02, 2015 39
Derive
● Mathematical Methods CMPMA1021 Course Notes (Dr T.A.Etchells, 2004)
● http://www.cms.livjm.ac.uk/cmstetch/NOTES/MA1021%20Notes%20.pdf● Derive 6 Mathematics Software Reviews
● http://www.chartwellyorke.com/derive/derivereviews.html
2015-11-26 AP: MIMG02, 2015 40
Derive
● címsor● menü
● Command Toolbar● Algebra Window (View)
● Status Bar● Expression Entry Toolbar (entry line)
● Greek Symbol Toolbar, Math Symbol Toolbar
2015-11-26 AP: MIMG02, 2015 41
Derive
● munkalap (Worksheet)– kifejezések bevitele– parancsok alkalmazása– segítség: Tooltip és Stauts Bar
● beviteli mód aktiválása: Kifejezés bevitele – Kifejezés beírása (Enter)– Egyszerűsít– Beírás és egyszerűsítés (Ctrl+Enter)– Kiértékel– Beírás és kiértékelés (Shift+Enter)– Mindent töröl (Shift+Del)
2015-11-26 AP: MIMG02, 2015 42
Derive
● matematikai munkalapok● kifejezések bevitele, szimbólumgombok● diagramrajzoló ablak● 2D és 3D ábrázolás● aritmetika● algebra● analízis● vektorok, mátrixok,
halmazok● programozás
2015-11-26 AP: MIMG02, 2015 44
FAKTOR(n, ossz) := PROG(ossz := n, LOOP(IF(n = 2, RETURN ossz), ossz := ossz·(n - 1), n := n - 1))
Programozás
2015-11-26 AP: MIMG02, 2015 45
Derive helyett...
● Maths - Alternative application for Derive 6– Hello everybody,
I have to use the proprietary math application Derive, I am searching for open source (FLOSS) alternatives for this program,Can somebody help me with this problem?Many thanks in advance.
● Re: Maths - Alternative application for Derive 6– Plotting--gnuplot– numerical work--octave– symbolic work--maxima– statistics--R
● There might be others, but those are the usual suggestions. Hope it helps.
http://ubuntuforums.org/showthread.php?t=570714
2015-11-26 AP: MIMG02, 2015 46
Derive helyett...
● Re: Maths - Alternative application for Derive 6● Pari, SAGE, and GAP are all useful for a variety of
tasks. Do you want to accomplish anything in particular?– SAGE: http://www.sagemath.org/– PARI: http://pari.math.u-bordeaux.fr/– GAP: http://www.gap-system.org/
● If you have more specific tasks you're interested in, there's likely more specific software.
http://ubuntuforums.org/showthread.php?t=570714
2015-11-26 AP: MIMG02, 2015 48
Maxima, a Computer Algebra System
● az MIT-n (Massachusetts Institute of Technology) fejlesztett Macsyma rendszer 1982-es verzióján alapuló számítógépes algebra rendszer (computer algebra system)
● az összes POSIX (Portable Operating System Interface for uniX) platformon (pl. BSD, GNU/Linux, Mac OS X) és Microsoft Windows változatokon használható, sőt Androidon is
● szabad szoftver (free software), használatát a GNU General Public License (GNU GPL) szabályozza
2015-11-26 AP: MIMG02, 2015 49
Maxima, a Computer Algebra System
● ALGOL-szerű szintaktikájú, Lisp-szerű szemantikájú teljes programozási nyelvet tartalmaz
● Common Lisp nyelven íródott● programozási szinten elérhető és bővíthető, a
mögöttes Lisp meghívásával● rajzoláshoz a GNUplot rendszert használja● nagyszámú lebegőpontos és mátrix számítás
esetén más programozási nyelven (Fortran) hatékonyabban futtatható kód generálható
● többféle felület (parancssoros és grafikus)
2015-11-26 AP: MIMG02, 2015 50
Maxima, a Computer Algebra System
● szimbolikus és numerikus kifejezések kezelése● tetszőleges pontosságú aritmetika (a számábrázolás
pontosságának a számítógép memóriája szab határt)– nagy pontosságú numerikus eredmények a pontos törtek használata miatt– tetszőleges pontosságú egész számok, változó pontosságú lebegőpontos
számok● differenciálás és integrálás● Taylor sorok● Laplace-transzformáció● közönséges differenciálegyenletek● lineáris egyenletrendszerek● polinomok● halmazok, listák, vektorok, mátrixok, tenzorok● függvények és adatok kirajzolása 2 és 3 dimenzióban
2015-11-26 AP: MIMG02, 2015 53
wxMaxima GUI
● http://andrejv.github.com/wxmaxima/● http://andrejv.github.com/wxmaxima/help.html● http://andrejv.github.com/wxmaxima/tutorials/10minute.zip
2015-11-26 AP: MIMG02, 2015 58
wxMaxima GUI
● grafikus felhasználói felület, alapja a wxWidgets● natív Windows, X11 és Mac OS X operációs
rendszereken● 2D formázott matematikai kijelző (saját matematikai
kijelző motor)● menürendszer, amelyen keresztül a legtöbb
Maxima utasítás elérhető● a legtöbb funkció a gombpanelekről is elérhető● dialógusokkal adhatók meg az egynél több
argumentumot használó utasítások, így nem szükséges megjegyezni a pontos szintaktikát
2015-11-26 AP: MIMG02, 2015 59
wxMaxima GUI
● parancssor történet a bemeneti soroknál, utasítás kiegészítés az előző bemenet alapján
● zárójelezés● utasítások kiegészítése gépelés közben● sablonok Maxima függvényekhez és változókhoz● „élő” matematikai dokumentum létrehozása és
mentése: a szöveg keverhető matematikai kifejezésekkel és számításokkal
● beilleszthetők képek● egyszerű animációk● LaTeX export● több nyelven tud, köztük magyarul
2015-11-26 AP: MIMG02, 2015 60
(wx)Maxima alapok
● címkék (labels) – minden bemeneti (%i1) és kimeneti (%o2) sort egyedi
címke jelöl (a későbbi hivatkozás alapja)– nem ajánlott ezekkel a címkékkel összekeverhető
változóneveket (pl. %i1 vagy %o2) használni● ; (pontosvessző) és $ (dollárjel)
– a pontosvesszővel zárt sor kimenete megjelenik– a $ végűé nem
● % (százalékjel) és %th(n) (n-edik százalék)– az utolsó számítás (utolsó kimenet sor) eredményére
lehet hivatkozni a százalék (%) jellel– az n-el korábbi kimenet sor eredménye
2015-11-26 AP: MIMG02, 2015 61
wxMaxima alapok
● néhány gyakran használt parancs a menükben:– Maxima, Equations, Algebra, Calculus, Simplify, Plot, Numeric
● a '...' végződésű menüelemek dialógusablakot nyitnak, segítve a parancs pontos bevitelét
● a létrehozott parancsot a program beszúrja a vízszintes kurzor pozíciójába vagy az éppen aktív cella alá
● a parancs rögtön végrehajtódik (a kifejezés kiértékelődik)
● a Maxima > Panes menüből elérhető gomb-panelek hasonlóan működnek
2015-11-26 AP: MIMG02, 2015 62
(wx)Maxima alapok
● értékadás– : (kettőspont)
● változó deklarálása és értékadás: a:3;– := (kettőspont egyenlő)
● függvény definiálása: f(x):=x^2;● többváltozós: g(x,y):=cos(x^2+y^2);● helyettesítési érték számítása: f(2);
– =: (egyenlőségjel)● egyenlet definiálása: x=a-2*y;● változó is használható a kifejezésben, ennek értékét a
program behelyettesíti
2015-11-26 AP: MIMG02, 2015 63
(wx)Maxima alapok
● egyenlet megoldása: solve(x^2-3*x-10=0, x);– a solve első argumentuma az egyenlet (maga az
egyenlet, %on vagy %), amit vesszővel elválasztva követ az egyenletben szereplő független változó
– az egyenlet megoldásai listában ([elem1, elem2, elem3]) összefoglalva jelennek meg
– az eredmény(ek)et a további felhasználáshoz ki kell válogatni az eredmények listájából
– %[1]; (megoldott egyenlet elem1 eredményének felhasználása)
2015-11-26 AP: MIMG02, 2015 64
(wx)Maxima alapok
● egyenletrendszer megoldása– solve([x+3*y=3,2*x+5*y=5],[x,y]); – eredmény az összetartozó megoldáspárok
listájának listája
2015-11-26 AP: MIMG02, 2015 65
(wx)Maxima alapok
● függvényábrázolás– egyszerű függvényábrázolás:
plot2d(x^2-3*x-10, [x, -6, 10]); ● a plot2d első argumentuma a függvény, ezt vesszővel
elválasztva követi lista formában a változó, valamint az ábrázolás alsó és felső határa
– több függvény ábrázolás egy diagramban:plot2d([(3-x)/3,(5-2*x)/5],[x,-1,1]);
● az ábrázolandó függvények listáját követi az ábrázolás értelmezési tartománynak listája
-2 0
-1 0
0
1 0
2 0
3 0
4 0
5 0
6 0
-6 -4 -2 0 2 4 6 8 1 0
x^2-
3*x-
10
x
0 . 6
0 . 7
0 . 8
0 . 9
1
1 . 1
1 . 2
1 . 3
1 . 4
-1 -0 . 5 0 0 . 5 1
x
(3 -x )/3
(5 -2 *x )/5
2015-11-26 AP: MIMG02, 2015 66
(wx)Maxima alapok
● függvényábrázolás– egyszerű függvényábrázolás:
plot2d(x^2-3*x-10, [x, -6, 10]); ● GNUplot meghívása● az eredmény clipboardra
másolható és beilleszthető– ábrázolás a doku-
mentumon (.wxm file)belül:wxplot2d(x^2-3*x-10,[x, -6, 10]);
-2 0
-1 0
0
1 0
2 0
3 0
4 0
5 0
6 0
-6 -4 - 2 0 2 4 6 8 1 0
x^2-
3*x-
10
x
2015-11-26 AP: MIMG02, 2015 67
(wx)Maxima alapok
● egyenlet numerikus megoldása, ha nem sikerül meghatározni az analitikus megoldást– solve(x^7-4*x^6-5*x^5+4*x^3+x^2-9*x+2=0,x);
● eredménye az egyenlet kiírva– plot2d(x^7-4*x^6-5*x^5+4*x^3+x^2-9*x+2,[x,-10,10]);
● az egyenlet kirajzolása, a zérushelyek becslése– load(„newton”); (numerikus megoldó betöltése)– newton(x^7-4*x^6-5*x^5+4*x^3+x^2-9*x+2,-2);
(numerikus megoldás)● a newton utasítás első argumentuma a függvény, második a
becsült gyök
2015-11-26 AP: MIMG02, 2015 68
(wx)Maxima alapok
-1 . 4 e + 0 0 7
-1 . 2 e + 0 0 7
-1 e + 0 0 7
-8 e + 0 0 6
-6 e + 0 0 6
-4 e + 0 0 6
-2 e + 0 0 6
0
2 e + 0 0 6
4 e + 0 0 6
6 e + 0 0 6
-1 0 -5 0 5 1 0
x^7-
4*x^
6-5*
x^5+
4*x^
3+x^
2-9*
x+2
x
2015-11-26 AP: MIMG02, 2015 69
(wx)Maxima alapok
● többváltozós függvény ábrázolása– f(x,y):=cos(x^2+y^2); – plot3d(f(x,y),[x,-1,1],[y,-1,1]);
-1-0 . 5
0 0 . 5
1 -1
-0 . 5
0
0 . 5
1
-0 . 6
-0 . 4
-0 . 2
0
0 . 2
0 . 4
0 . 6
0 . 8
1
z
c o s ( y ^2 + x ^2 )
x
y
z
x
y
-0 . 6
-0 . 4
-0 . 2
0
0 . 2
0 . 4
0 . 6
0 . 8
1
z
c o s ( y ^2 + x ^2 )
-1 -0 . 5 0 0 . 5 1
-1
-0 . 5
0
0 . 5
1
z
2015-11-26 AP: MIMG02, 2015 70
(wx)Maxima alapok
● polinom gyöktényezőkre bontása (faktorizálása)– factor(x^2-4*x-32);
● polinom kifejtése– expand(%);
● trigonometrikus kifejezés egyszerűsítése– trigsimp(sin(x)^2+cos(x)^2);
● trigonometrikus kifejezés kifejtése– trigexpand(sin(2*x));
2015-11-26 AP: MIMG02, 2015 71
(wx)Maxima alapok
● racionális kifejezés egyszerűsítése– fullratsimp((x^2+4*x+4)/(x+2)+1/(2*x-3));
● racionális kifejezés kifejtése– ratexpand((x^2+4*x+4)/(x+5));
2015-11-26 AP: MIMG02, 2015 72
(wx)Maxima alapok
● számítás eredményének felhasználása másik számításban– solve(x^2-1=0, x); >>> eredmény: [x=-1, x=1])– %[2]; >>> eredmény: x=1– subst(%, y=5*x-2); >>> eredmény: y=3
2015-11-26 AP: MIMG02, 2015 73
(wx)Maxima alapok
● lineáris egyenlet(rendszer)ek megoldása– linsolve( [3*x+4*y=7, 2*x+4*y=13], [x,y]);– eq1: x^2 + 3*x*y + y^2 = 0;– eq2: 3*x + y = 1;– solve([eq1, eq2]);
2015-11-26 AP: MIMG02, 2015 74
(wx)Maxima alapok
● mátrixok– A: matrix([1,2],[3,4]);– B: matrix([2,2],[2,2]);– A.B;– h[i,j]:=1/(i+j);– C: genmatrix(h,3,3);– determinant(C);
2015-11-26 AP: MIMG02, 2015 75
(wx)Maxima alapok
● mátrixok– D: matrix([2,3],[5,6]);– echelon(D);– invert(D);– eigenvalues(D);– eigenvectors(D);
2015-11-26 AP: MIMG02, 2015 76
(wx)Maxima alapok
● függvény határértékének számítása– limit(sin(x)/x,x,0);
● jobboldali határérték számítása (baloldali határértéknél plus helyett minus szerepel)– limit(tan(x),x,%pi/2,plus);
● deriválás– diff(c*x^2-sin(d*x),x);
● magasabb derivált számítása– diff(x^4,x,3);
2015-11-26 AP: MIMG02, 2015 77
(wx)Maxima alapok
● határozatlan integrál meghatározása: első paraméter a függvény, második a független változó– integrate(sin(4*x-3),x);
● határozott integrál számítása: első paraméter a függvény, második a független változó, harmadik az integrálás alsó határa, negyedik a felső határ– integrate(4*sin(x),x,0,3*%pi/2);
2015-11-26 AP: MIMG02, 2015 78
(wx)Maxima alapok
● paraméter előjelére rákérdez– integrate(1/(x^2+a), x);
● paraméter előjelének előzetes beállítása (t.f.h.)– assume(a>0)$– integrate(1/(x^2+a), x);– forget(a>0)$
2015-11-26 AP: MIMG02, 2015 79
(wx)Maxima alapok
● numerikus integrálás, akkor használható, ha a program nem tud zárt alakú integrálfüggvényt meghatározni– romberg(sin(sin(x)),x,0,1);
2015-11-26 AP: MIMG02, 2015 80
(wx)Maxima alapok
● sor vagy sorozat összege– amennyiben a simpsum változó értéke igaz, a
numerikus eredmény jelenik meg– a sum
első paramétere a függvény, második a független változó, harmadik az összegzés alsó,negyedik a felső határa
– simpsum:true;– sum(1/(n^2),n,1,inf);
● sor vagy sorozat szorzata– product(1/(n^2),n,1,5);
2015-11-26 AP: MIMG02, 2015 81
(wx)Maxima alapok
● függvény közelítése Taylor-sorral, a taylor() utasítás első paramétere a függvény, második a független változó, harmadik paramétere a helyettesítési érték, ami körül történik a sorfejtés, a negyedik paraméter a közelítő polinom fokszáma– taylor(exp(x),x,0,5);
2015-11-26 AP: MIMG02, 2015 82
(wx)Maxima alapok
● a sorfejtés eredményének további felhasználásához a trunc() használandó
-2 0
0
2 0
4 0
6 0
8 0
1 0 0
1 2 0
1 4 0
1 6 0
-4 -2 0 2 4
x
1 + x + x ^2 /2 + x ^3 /6 + x ^4 /2 4 + x ^5 /1 2 0
% e ^x
2015-11-26 AP: MIMG02, 2015 83
(wx)Maxima alapok
● közönséges differenciálegyenlet megoldása– depends(y,t);– assume(omega > 0);– ode2( 'diff(y, t, 2) + omega^2 * y = 0, y, t );– ic2(%, t = 0, y = A0, 'diff(y,t) = 0 );– forget(omega >0)$
2015-11-26 AP: MIMG02, 2015 84
(wx)Maxima alapok
● programozás– ciklusok
● for a:-3 thru 26 step 7 do ldisplay(a);● s:0; for i:1 while i<=10 do s:s+i; done; s;
2015-11-26 AP: MIMG02, 2015 85
(wx)Maxima alapok
● programozás– Fibonacci számok
● fib[0]:0; fib[1]:1; fib[n]:=fib[n-1]+fib[n-2];
2015-11-26 AP: MIMG02, 2015 86
(wx)Maxima alapok
● Laplace-transzformáció– laplace(3*(1-%e^(-t/10)),t,s);
● inverz Laplace-transzformáció– ilt(1/s*3/(1+10*s),s,t);– ilt(1/(s^3+2*s^2+3*s+1),s,t); Hogyan oldható meg???
2015-11-26 AP: MIMG02, 2015 87
Maxima, a Computer Algebra System
● a Maxima saját programozási nyelvén írt .mac (batch) file-okkal lehet a programot kiegészíteni
– C:\Program Files\Maxima-verziószám\share\maxima\verziószám\share\contrib
● a Maxima Lisp nyelven íródott, ez a kód is hozzáférhető
– C:\Program Files\Maxima-verziószám\share\maxima\verziószám\share\src\*.lisp
● a komoly munkához javasolt a Maxima programozási nyelv használata
● a Lisp haladók számára ajánlott● vannak esetek, amikor mindkét nyelvre szükség
lehet a probléma megoldásához
2015-11-26 AP: MIMG02, 2015 88
Maxima, a Computer Algebra System
● a Maxima programozását bemutató anyag:● http://maxima.sourceforge.net/docs/tutorial/en/gaert
ner-tutorial-revision/Contents.htm
2015-11-26 AP: MIMG02, 2015 89
Maxima, a Computer Algebra System
● COntrol engineering with MAxima– Regelungstechnik mit Maxima– Autor: DI Dr. Wilhelm Haager, HTL St. Pölten, Abt. Elektrotechnik– http://www.austromath.at/daten/maxima/– http://www.austromath.at/daten/maxima/zusatz/coma.htm
2015-11-26 AP: MIMG02, 2015 90
COntrol engineering with MAxima
● a COMA csomag “programja” a coma.mac file● a coma.mac file elhelyezése:
– C:\Program Files\Maxima-verziószám\share\maxima\verziószám\share\contrib
● Mintapéldák, német és angol leírás
2015-11-26 AP: MIMG02, 2015 91
COntrol engineering with MAxima
● alapvető rendszervizsgálati módszerek– idő-, – frekvencia és – Laplace-operátoros tartományban
● szabályozó tervezés● állapottér módszerek (fejlesztés alatt)● néhány kiemelt téma:
– ...
2015-11-26 AP: MIMG02, 2015 92
COntrol engineering with MAxima
– tetszőleges fokszámú átviteli függvény inverz Laplace-transzformációja
– átmeneti függvény (ugrásválasz, step response)– Bode diagram és helygörbe (Nyquist diagram)– pólusok, zérusok, gyökhelygörbe (root locus plot)– stabilitásvizsgálat: stabilitás határa, Hurwitz kritérium,
stabil régiók a paramétersíkon, fázis- és erősítési tartalék
– optimalizálás és szabályozótervezés (ISE (integral of squared error) kritérium), optimális erősítés
– állapottér modell átalakítása átviteli függvénnyé, kanonikus alakok, irányíthatóság, megfigyelhetőség
2015-11-26 AP: MIMG02, 2015 94
COntrol engineering with MAxima
● inverz Laplace-transzformáció– ilt(1/(s^3+2*s^2+3*s+1),s,t); Hogyan oldható meg???– Numerikusan!
2015-11-26 AP: MIMG02, 2015 95
COntrol engineering with MAxima
● másodrendű rendszerek (ld. Rezgéstan, Elektrotechnika alapjai, Mechatronika I-II., ...)
2015-11-26 AP: MIMG02, 2015 96
COntrol engineering with MAxima
● felnyitott és zárt szabályozási körök (ld. Irányítástechnika, Mechatronika I-II., ...)
2015-11-26 AP: MIMG02, 2015 98
Numerikus analízis szoftvermegoldások
● a XX. század végétől a legtöbb algoritmust igen sok programozási nyelven implementálták
● Netlib repository (http://www.netlib.org/)– többféle rutin gyűjtemény numerikus problémák
megoldására– többségük Fortran és C nyelvű
● kereskedelmi termékek– IMSL (International Mathematics and Statistics Library)– NAG (Numerical Algorithms Group)
● ingyen alternatíva– GSL – GNU Scientific Library
2015-11-26 AP: MIMG02, 2015 99
Netlib
● karbantartók– AT&T– Bell Laboratories– University of Tennessee– Oak Ridge National Laboratory
● sok önálló program és könyvtár● a kód legnagyobb részét Fortran nyelven írták● a kód jogi helyzete nem teljesen egyértelmű, a
programok egy része public domain● ugyanakkor semmilyen licensz vagy felhasználási
feltétel nem szerepel sok programban
2015-11-26 AP: MIMG02, 2015 100
Egyéb csomagok
● BLAS (Basic Linear Algebra Subprograms)– vektor, mátrix-vektor és mátrix-mátrix műveletek
● EISPACK– sajátértékek és sajátvektorok numerikus számítása
● LAPACK (Linear Algebra PACKage)● LINPACK
– a LAPACK elődje● MINPACK
– nemlineáris egyenletrendszerek megoldása● QUADPACK
– egyváltozós függvények numerikus integrálása
2015-11-26 AP: MIMG02, 2015 101
GSL – GNU Scientific Library● “It is free software under the GNU General Public License.”● 1000+ függvény C és C++ nyelven
2015-11-26 AP: MIMG02, 2015 102
GSL – GNU Scientific Library
● Complex Numbers, Roots of Polynomials● Special Functions, Vectors and Matrices● Permutations, Sorting● BLAS Support, Linear Algebra● Eigensystems, Fast Fourier Transforms● Quadrature, Random Numbers● Quasi-Random Sequences, Random Distributions● Statistics, Histograms● N-Tuples, Monte Carlo Integration● Simulated Annealing, Differential Equations● Interpolation, Numerical Differentiation● Chebyshev Approximation, Series Acceleration● Discrete Hankel Transforms, Root-Finding● Minimization, Least-Squares Fitting● Physical Constants, IEEE Floating-Point● Discrete Wavelet Transforms, Basis splines
2015-11-26 AP: MIMG02, 2015 103
Numerikus analízis szoftvermegoldások
● néhány népszerű numerikus számítási alkalmazás● MATLAB, S-PLUS, LabVIEW, IDL (Interactive Data Language)
● ingyenes és nyílt forrású alternatívák● FreeMat, Scilab, GNU Octave, IT++ (a C++ library), R és
bizonyos Python változatok● eltérő teljesítményűek, általában gyorsak a vektor- és
mátrixműveletek, a skalár ciklusok sebessége nagyságrendekkel eltérhet
● sok CAS szintén hasznosítja a tetszőleges pontosságú aritmetikát a pontosabb eredmények eléréséhez
● táblázatkezelő programok egyszerű numerikus analízis feladatok megoldására
2015-11-26 AP: MIMG02, 2015 104
MathWorks: MATLAB(matrix laboratory)
● numerikus számítások elvégzésére alkalmas környezet és negyedik generációs programozási nyelv
● mátrix műveletek, függvények és adatok ábrázolása, algoritmusok implementálása, felhasználói felületek kialakítása, kapcsolat más nyelven (C, C++, Java, Fortran, …) írt programokkal
● MuPAD szimbolikus motor● Simulink grafikus szimulációhoz idő- és operátoros
tartományban● Model-Based Design dinamikus és beágyazott
rendszerekhez● rengeteg kiegészítő toolbox
2015-11-26 AP: MIMG02, 2015 105
MATLAB programozás
● MATLAB nyelv, M-code vagy M● dinamikusan típusos nyelv, a változókat
típusdeklaráció nélkül is lehet használni, kivéve ha szimbolikus objektumok
● Command Window: interpretált végrehajtás● MATLAB Editor: többsoros kódhoz (script), saját
függvény (function) írásához● objektum-orientált programozás (classes,
inheritance, virtual dispatch, packages, pass-by-value semantics, and pass-by-reference semantics)
2015-11-26 AP: MIMG02, 2015 106
MATLAB programozás
● értékeadás egyenlőségjellel (=)● tömböket ciklus használata nélkül is fel lehet tölteni
(mettől:mennyivel:meddig)● a tömbök és mátrixok indexelése 1-től kezdődik (a
legtöbb programozási nyelvben 0-tól)– mátrixok megadása: az elemek felsorolásával,
szóközzel vagy veszővel elválasztva, a lista szögletes zárójelek ([]) között, a pontosvessző jelzi az új sort, kerek zárójelekkel al-mátrixok is megjeleníthetők
● a pontosvesszővel (;) befejezett parancs eredménye nem kerül kiíratásra
2015-11-26 AP: MIMG02, 2015 108
MATLAB – Simulink
http://upload.wikimedia.org/wikipedia/en/thumb/e/ed/MATLAB_Simulink_screenshot_showing_thermostat_demo_simulation.png/772px-MATLAB_Simulink_screenshot_showing_thermostat_demo_simulation.png
2015-11-26 AP: MIMG02, 2015 109
MATLAB – Simulink
http://www.sccs.swarthmore.edu/users/06/adem/engin/e12/finale/images/simulink.gif
2015-11-26 AP: MIMG02, 2015 110
Versenytársak, alternatívák
● kereskedelmi– Mathematica– Maple– IDL– Metlynx
● free, open source– GNU Octave– FreeMat– Scilab– Euler Math Toolbox
(+Maxima)– WinPython, a portable scientific
Python distribution for Windows(32&64bit)
● tömb alapegységű nyelvek– APL– J– Fortran 95 és 2003– S (S-PLUS és R)
● könyvtárak– Itpp (C++)– Perl Data Language– SciPy, NumPy és
Matplotlib (Python)
2015-11-26 AP: MIMG02, 2015 112
GNU Octave
● http://www.gnu.org/software/octave/● magasszintű strukturált és interpretált
programozási nyelv numerikus számításokhoz (parancssoros és batch-jellegű végrehajtás)
● az Octave program script, függvényhívások sorozata
● mátrixalapú, MATLAB-hoz hasonló szintaktika● nem objektum-orientált, de sokféle adatstruktúrát
támogat● sok kiegészítő csomag és könyvtár
2015-11-26 AP: MIMG02, 2015 117
Euler Math Toolbox
● http://euler.rene-grothmann.de/● GNU general public license (GPL)● Euler Matrix Language● könnyen hordozhatóvá tehető CAS jellegű
alkalmazás (Euler notebook)– “Euler Math Toolbox is a system consisting of the
numerical kernel Euler and the computer algebra program Maxima. The numerical part, the GUI, and the communication with Maxima has been developed by R. Grothmann from the University of Eichstätt, Germany. Maxima is a mature open source program.”
2015-11-26 AP: MIMG02, 2015 122
Scilab
● http://www.scilab.org/● GPL-kompatibilis CeCILL licensz● nyílt forráskódú, cross-platform numerikus
számítási programcsomag és magasszintű, numerikus orientációjú programozási nyelv– interpretált programozási környezet, az alapvető
adattípus a mátrix– rengeteg toolbox– LaTeX engine
● a hasonló szintaktikájú MATLAB kód konvertálható
2015-11-26 AP: MIMG02, 2015 123
Scilab alkalmazási területek
● jelfeldolgozás, statisztikai elemzések, áramlástani szimulációk, numerikus optimálás, ...
● explicit és implicit dinamikai rendszerek modellezése és szimulációja– Scicos alapú Xcos
free csomag– folytonos és diszkrét
részrendszerek– hasonlít a Simulink
környezethez
2015-11-26 AP: MIMG02, 2015 127
Scilab-LabVIEW Gateway
https://www.scilab.org/scilab/interoperability/connection_applications/labviewhttp://www.ni.com/white-paper/5597/en/
Connecting LabVIEW with Scilab…and getting Scilab’s power through LabVIEW
2015-11-26 AP: MIMG02, 2015 128
Scilab anyagok
● Scilab Tutorials– http://www.openeering.com/scilab_tutorials
● Scilab Control Engineering Basics– http://scilab.ninja/study-modules/scilab-control-
engineering-basics/● ...
2015-11-26 AP: MIMG02, 2015 129
RTSX (Robotic Tools for Scilab/Xcos)
exec('startup_rtsx.sce',-1);rprdemo;
2015-11-26 AP: MIMG02, 2015 130
Scilab anyagok
● Scilab for very Beginners– https://www.scilab.org/
● Scilab Tutorials– http://www.openeering.com/scilab_tutorials
● Scilab Control Engineering Basics– http://scilab.ninja/study-modules/scilab-control-
engineering-basics/● ...
2015-11-26 AP: MIMG02, 2015 131
Scilab konzol
● Scilab Console– parancsok kevéssé felhasználóbarát begépelése és
végrehajtása● a Scilab parancssor (command line) jele: -->● változó deklarálás (értékadás), kifejezések, script-
ek és függvényhívások írhatók be(a scriptek és függvények ASCII text file-ok)
● parancstörténet: ↑ és ↓● értékadás:
– változónév = érték– záró ; elnyomja a kiírást
2015-11-26 AP: MIMG02, 2015 133
Scilab GUI elemei
● Launch SciNotes gomb– beépített kódszerkesztő
● Clear Console
2015-11-26 AP: MIMG02, 2015 134
Scilab GUI elemei
● Module manager - ATOMS– beépülő modulok
● Xcos● Preferences
● Demonstrations
2015-11-26 AP: MIMG02, 2015 135
Segítség
● Scilab Help Browser– help parancs vagy ? menüben Scilab Help (F1) vagy
● a help function_name parancs a function_name függvény help oldalát nyitja meg
● on-line dokumentáció– http://www.scilab.org/product/man/– Scilab Help, Scilab Wiki– Matlab® / Scilab Dictionary,– Scilab Tutorials, – Videos, Books
2015-11-26 AP: MIMG02, 2015 136
Változók
● változónév = értékvagy utasítás
● ; elnyomja a kiírást● kis- és nagybetű
különbözik● számítási művelet
eredménye azans átmeneti változóba kerül
-->a = 2 a = 2. -->A = 12; -->b = a + A b = 14.
-->(12*4)-32/8 ans = 44.
2015-11-26 AP: MIMG02, 2015 137
Workspace(a változók és függvények helye)
● parancsok– who– who_user– clear– load– save– diary– browsevar()
● Variable Browser– saját menü (File,
Filter, ?)– saját gombok (Refresh
the Variable, Modify, Delete)
– rendezés név, érték, (adat)típus és láthatóság szerint
– jobb kattintás a változóra: lehetőségek
2015-11-26 AP: MIMG02, 2015 138
Változók
● foglalt nevek– %i a képzetes egység– %pi, %e– %eps számolási
pontosság– %inf végtelen– %nan “nem szám”– %t és %f logikai értékek– %s és %z folytonos és
mintavételes átviteli függvény polinomok változói
● változó típusa– typeof(változónév)
● típusok– constant, polynomial,
function, handle, string, boolean, list, rational, state-space, sparse, boolean sparse
2015-11-26 AP: MIMG02, 2015 139
Minden mátrix (a vektor és a skalár is)
-->A=[1 2 3; 4 5 6; 7 8 9] A = 1. 2. 3. 4. 5. 6. 7. 8. 9. -->size(A) ans = 3. 3.
-->a=[10, 20, 30] a = 10. 20. 30. -->size(a) ans = 1. 3.
-->d=[124] d = 124. -->size(d) ans = 1. 1.
-->b=[100; 200; 300] b = 100. 200. 300. -->size(b) ans = 3. 1.
-->e=25 e = 25. -->size(e) ans = 1. 1.
● mátrix és vektor elemei szögletes zárójelek között
● soron belüli elválasztás szóközzel vagy vesszővel,
● sorok elválasztása pontosvesszővel
2015-11-26 AP: MIMG02, 2015 140
Inkrementális vektorok-->x=1:5 x = 1. 2. 3. 4. 5. -->t=0:0.25:2.1 t = column 1 to 5 0. 0.25 0.5 0.75 1. column 6 to 9 1.25 1.5 1.75 2.
-->kezdete=0, vege=10, pontok_szama=5,x5pont=linspace(kezdete,vege,pontok_szama) kezdete = 0. vege = 10. pontok_szama = 5. x5pont = 0. 2.5 5. 7.5 10.
● egyesével: kezdete:vége● tetszőleges lépéssel:
kezdete:lépés nagysága:vége
● lineáris felosztás: linspace● 10-es alapú logaritmikus
felosztás: logspace
2015-11-26 AP: MIMG02, 2015 141
Mátrix, vektor elemei
-->A(:,3) ans = 3. 6. 9. -->A([1 3],2) ans = 2. 8.
-->A(1,3) ans = 3. -->A(2,2:3) ans = 5. 6. -->A(1:2,2) ans = 2. 5.
-->A=[1 2 3; 4 5 6; 7 8 9] A = 1. 2. 3. 4. 5. 6. 7. 8. 9.
● mátrix(sor,oszlop)● mátrix(sorok,oszlopok)● összes elem jele :● összefüggő részsorozat pl. 2:3
2015-11-26 AP: MIMG02, 2015 142
Műveletek mátrixokkal
● alapműveletek– összeadás (+), mátrix-szorzás (*), transzponálás ('),
invertálás (inv(A)), ...– a mátrix egyes elemein is értelmezett műveletek (pl. .*)
● további műveletek: Scilab Help >> Linear Algebra
-->a=[1 2 3] a = 1. 2. 3. -->b=[4;5;6] b = 4. 5. 6.
-->ab=a*b ab = 32. -->ba=b*a ba = 4. 8. 12. 5. 10. 15. 6. 12. 18.
-->baT=ba' baT = 4. 5. 6. 8. 10. 12. 12. 15. 18. -->abElemenkent=a.*b' abElemenkent = 4. 10. 18.
2015-11-26 AP: MIMG02, 2015 143
Matlab-Scilab operátorok (kivonat)
● Scilab Help >> Matlab to Scilab Conversion Tips > Matlab-Scilab equivalents > Operators
– + (Matlab operator) — plusz– - (Matlab operator) — mínusz– ' (Matlab operator) — transzponálás– .' (Matlab operator) — transzponálás elemenként– \ (Matlab operator) — bal osztás– .\ (Matlab operator) — bal osztás elemenként– * (Matlab operator) — szorzás– .* (Matlab operator) — szorzás elemenként– ^ (Matlab operator) — hatványozás– .^ (Matlab operator) — hatványozás elemenként– / (Matlab operator) — jobb osztás– ./ (Matlab operator) — jobb osztás elemenként
2015-11-26 AP: MIMG02, 2015 144
Polinomok felírása
● felírás a független változóval és együtthatókkal közvetlen képletként– pl. átviteli függvénynél a beépített %s független
változóval
-->nevezo=2*%s^2+0.5*%s+1 nevezo = 2 1 + 0.5s + 2s
-->roots(nevezo) ans = - 0.125 + 0.6959705i - 0.125 - 0.6959705i
● a polinom gyökeit a roots(polinom) számolja
2015-11-26 AP: MIMG02, 2015 145
Polinomok felírása
● a poly(vektor,”szimbolikus változónév”,”flag”) függvénnyel– a “flag” alapértelmezett gyökök (”roots” vagy ”r”)
együtthatókkal (”coeff” vagy ”c”)
-->s=poly(0,"s") s = s -->poly([1 2 3], "s", "coeff") ans = 2 1 + 2s + 3s
-->gyokok=roots(ans) gyokok = - 0.3333333 + 0.4714045i - 0.3333333 - 0.4714045i -->poly(gyokok, "s", "roots") ans = 2 0.3333333 + 0.6666667s + s
● átviteli függvény felírásához az “s” szimbolikus változót így adjuk meg vagy a beépített %s-t használjuk (akár s=%s paranccsal s-ként)
2015-11-26 AP: MIMG02, 2015 146
Polinomok felírása
● elemi polinomokonvégzett műveletekkel -->s=poly(0,"s")
s = s -->nevezo1=poly([1 5],"s","coeff") nevezo1 = 1 + 5s -->nevezo2=poly([1 10],"s","coeff") nevezo2 = 1 + 10s -->nevezo1*nevezo2 ans = 2 1 + 15s + 50s
-->nevezo=(1+5*%s)*(1+10*%s) nevezo = 2 1 + 15s + 50s
-->coeff(nevezo) ans = 1. 15. 50.
● a coeff(polinom) az együtthatókat adja vissza
2015-11-26 AP: MIMG02, 2015 147
Racionális kifejezések
● két polinom osztásával racionális kifejezést kapunk– így adhatunk meg például átviteli függvényt
-->s=poly(0,"s") s = s -->G = 100*(1+s)/(1+0.01*s) G = 100 + 100s ---------- 1 + 0.01s
-->bode(G) !--error 96 time domain of argument #1 is not defined.
-->G = syslin('c', G) G = 100 + 100s ---------- 1 + 0.01s
-->bode(G,”rad”)
● átviteli függvény előállításához a racionális kifejezést folytonos idejű lineáris rendszerként kell definiálni
● a Bode-diagram vízszintes tengelyén rad/s legyen Hz helyett
2015-11-26 AP: MIMG02, 2015 148
Átviteli függvény-->s=poly(0,'s'); -->G1=syslin("c", 10*(1+1/(5*s))) G1 = 10 + 50s -------- 5s
-->G0=G1*G2 G0 = 2 - s -->bode([G1;G2;G0],"rad")
-->s=poly(0,'s');
-->szamlalo=1 szamlalo = 1. -->nevezo=poly([1 5],"s","coeff") nevezo = 1 + 5s -->G2=syslin("c", szamlalo, nevezo) G2 = 1 ----- 1 + 5s
● G1, G2 és G0 Bode-diagramja egy ábrán
● G0 G1 és G2 és soros eredője (szorzata)
2015-11-26 AP: MIMG02, 2015 149
Időtartománybeli szimuláció
● csim parancs folytonos idejű lineáris rendszerek időtartománybeli vizsgálatához
● [y [,x]]=csim(u,t,sl,[x0 [,tol]])– u: function, list or string (control)– t: real vector specifying times with, t(1) is the initial time (x0=x(t(1)))– sl: syslin list (SIMO linear system) in continuous time– y: a matrix such that y=[y(t(i)], i=1,..,n– x: a matrix such that x=[x(t(i)], i=1,..,n– tol: a 2 vector [atol rtol] defining absolute and relative tolerances for
ode solver (see ode)
clf()//multiple plotx=[0:0.1:2*%pi]'; // x és y koordináták oszlopvektorbanplot(x,[sin(x) sin(2*x) sin(3*x)])
2015-11-26 AP: MIMG02, 2015 150
Diagramok, rajzolás
● a diagramok sorszámozott ablakban jelennek meg
● új grafikus ablak létrehozása– xset('window', sorszám), pl. xset('window', 12)
● Scilab Help >> Graphics ● grafikus ablak (figure)
– tartalmának törlése● clf(sorszám)
– aktív grafikus ablak felosztása m*n-es mátrixnak megfelelő számú részdiagramra és a p. kiválasztása (az (i,j) pozíciójú részhez, ahol p=(i-1)*n+j
● subplot(m,n,p) vagy subplot(mnp)
2015-11-26 AP: MIMG02, 2015 151
Diagramok, rajzolás
● a grafikus ablaknak mint szülőnek több “leszármazottja” van, pl. részdiagramjai (és azok “leszármazottjai”, pl. a tengelyek), ezek rendkívül rugalmasan paraméterezhetők
● 2D-s diagram: Scilab Help >> Graphics > 2d_plot– (x,y) pontpárok ábrázolása:
● plot2d helyett hasznáható a Matlab szintaktikát jobban követő plot parancs
● 3D-s diagram: Scilab Help >> Graphics > 3d_plot● ábrák további hasznosítása
– Scilab Help >> Graphics : exporting and printing
2015-11-26 AP: MIMG02, 2015 152
Szakasz és zárt szabályozási kör
● átmeneti függvény ábrázolás● szakasz: G2=1/(1+5*s)● szabályozó: G1=10*(1+1/(5*s))● szimulációs idő: t=0:0.1:30
-->s=poly(0,'s');-->G1=syslin('c', 10*(1+1/(5*s)));-->G2=syslin("c", 1, poly([1 5], 's', 'coeff'));-->G0=G1*G2;-->t=0:0.1:30;-->plot2d([t',t'],[csim('step',t,G2)',csim('step',t,G0/(1+G0))'])
● Scilab Script (.sce) file az utasítások sorozatával
2015-11-26 AP: MIMG02, 2015 153
Példák csim eredményének ábrázolására
● plot2d-vel– t=0:0.1:30;– plot2d([t',t'],[csim('step',t,G2)',csim('step',t,G0/(1+G0))'])
● plot-tal– t=(0:0.1:30)';– [y1,x1]=csim('step',t,G2); – [y2,x2]=csim('step',t,G0/(1+G0));– plot(t,[y1',y2'])– VAGY– plot([x1,y1],[x2,y2])
size(t) ans = 301. 1.
-->size(y2) ans = 1. 301.
2015-11-26 AP: MIMG02, 2015 155
Scilab – Xcos
● szöveges● idő- és
frekvenciatartomány● alapvetően lineáris
rendszerek
● blokkorientált grafikus● időtartomány● bizonyos
nemlinearitások is
2015-11-26 AP: MIMG02, 2015 156
Xcos modell
● Sources: STEP_FUNCTION, CLOCK_c
● Continuous time systems: CLR● Sinks: CSCOPE● Commonly Used Blocks: BIGSOM_f,
MUX, TEXT_f
2015-11-26 AP: MIMG02, 2015 157
Saját függvények
● a függvény felépítésefunction [y1 ,... , ym] = fuggveny(x1,... , xn)utasításokendfunction● több függvény is tárolható egyetlen .sci text file-ban● a getf(’fuggveny_file.sci’) paranccsal betöltött
függvényeket használhatjuk, ezek a teljes workspace-t “látják”
● a változók betöltése, mentése és törlése a függvényekkel is ugyanazt csinálja
2015-11-26 AP: MIMG02, 2015 158
Adatok mentése és betöltése
● a workspace összes vagy kiválasztott adatát HDF5 formátumú (SOD, Scilab Open Data) bináris file-ba menthetjük– save(’adatfile.dat’)– save('a_es_b_adat.dat',a,b)– a formátum részletei: Scilab Help >> Files : Input/Output
functions > save format● és onnan visszatölthetjük
– load(’adatfile.dat’)– load('a_es_b_adat.dat','a','b')
● C és Fortran-szerű formázással mátrixokat szövegfile-ba írhatunk (write) és visszaolvashatunk (read)
2015-11-26 AP: MIMG02, 2015 159
Programozás
● jellegzetes programozási szerkezetek● for, end● while, end● if, then, else, end● select, case, else, end
● logikai operátorok● & és, | vagy, ~ nem
● logikai eredményű feltételek● == (egyenlő), ~= vagy <> (nem egyenlő), <, >, <=, >=
2015-11-26 AP: MIMG02, 2015 160
Szabályozástechnikai alkalmazások
● Rendszermodellek– bemenet-kimenet modellek– állapottér modellek
● Folytonos-folyamatos és szakaszos-szaggatott működés– folytonos idő (continuous time)– mintavételes (discrete time)
● Vizsgálati tartományok– időtartomány– frekvenciatartomány
2015-11-26 AP: MIMG02, 2015 161
Átviteli függvény (transfer function)
● racionális (typeof() értéke)– a folytonos idejű lineáris differenciálegyenletből
állíthatjuk elő (feltételek!, módszer!) – független változója s– számláló polinom (numerator, röviden num)– nevező polinom (denominator, röviden den) – definiálása a syslin('c',num,den) paranccsal
● a számláló és nevező polinom együtthatóit a poly függvény hívásakor növekvő hatvány szerint kell megadni
● Matlab-ban az együtthatók vektora s csökkenő hatványai szerint rendezett
– vagy közvetlenül syslin('c',b0*s/(a0+a1*s+a2*s^2)) jellegű paranccsal
2015-11-26 AP: MIMG02, 2015 162
Átviteli függvény (transfer function)
-->s=poly(0,"s");
-->num1=poly([1 0.05],"s","coeff") num1 = 1 + 0.05s -->den1=poly([1 10],"s","coeff") den1 = 1 + 10s -->G1=syslin('c',num1,den1) G1 = 1 + 0.05s --------- 1 + 10s -->typeof(G1) ans = rational
-->s=poly(0,"s");
-->G2=syslin('c',12/(1+40*s)) G2 = 12 ------ 1 + 40s -->typeof(G2) ans = rational
ALTERNATÍVÁK
2015-11-26 AP: MIMG02, 2015 163
Átviteli függvény (transfer function)
● számláló és nevező polinom– G1.num és G1.den
● zérusok (a számláló polinom gyökei) és pólusok (a nevező polinom gyökei)– roots(G1.num) és roots(G1.den)
● pólus-zérus térkép– plzr(G1) -->zerusok=roots(G1.num)
zerusok = - 20. -->polusok=roots(G1.den) polusok = - 0.1
-->G1.num ans = 1 + 0.05s -->G1.den ans = 1 + 10s
2015-11-26 AP: MIMG02, 2015 164
Állapottér modell (state space)
● több bemenetű, több kimenetű rendszerekre is ● A,B mátrix a főegyenletben, C és D a segédegyenletben
– definiálása a syslin('c',A,B,C,D) paranccsal
-->A=[0 1 0; 0 0 1; -1 -2 -3] A = 0. 1. 0. 0. 0. 1. - 1. - 2. - 3. -->B=[0; 0; 1] B = 0. 0. 1.
-->C=[1 0 0] C = 1. 0. 0. -->D=0 D = 0.
2015-11-26 AP: MIMG02, 2015 165
Állapottér modell (state space)
● több bemenetű, több kimenetű rendszerekre is ● A,B mátrix a főegyenletben, C és D a segédegyenletben
-->ss2=syslin('c',A,B,C,D) ss2 = ss2(1) (state-space system:)!lss A B C D X0 dt ! ss2(2) = A matrix = 0. 1. 0. 0. 0. 1. - 1. - 2. - 3. ss2(3) = B matrix = 0. 0. 1. ss2(4) = C matrix = 1. 0. 0.
ss2(5) = D matrix = 0. ss2(6) = X0 (initial state) = 0. 0. 0. ss2(7) = Time domain = c -->typeof(ss2) ans = state-space
2015-11-26 AP: MIMG02, 2015 166
Állapottér modell (state space)
● mátrixok az állapottér modellből– [A, B, C, D]=abcd(ss2)– A=ss2.A
● állapottér modell nyomtatása– ssprint(ss2)
-->ssprint(ss2) . | 0 1 0 | | 0 |x = | 0 0 1 |x + | 0 |u |-1 -2 -3 | | 1 | y = | 1 0 0 |x
2015-11-26 AP: MIMG02, 2015 167
tf ↔ ss
● Scilab Help >> CACSD (Computer Aided Control Systems Design) > Formal representations and conversions
-->A=[0 1; -0.125 -0.75];-->B=[0; 0; 0.125];-->C=[1 0 0];-->D=0;-->ss2=syslin('c',A,B,C,D);
-->G2=ss2tf(ss2) G2 = 0.125 ----------------- 2 0.125 + 0.75s + s
2015-11-26 AP: MIMG02, 2015 168
tf ↔ ss-->G1=syslin('c',1/(1+6*s+8*s^2)) G1 = 1 ----------- 2 1 + 6s + 8s
ss1(4) = C matrix = 0.7071068 0. ss1(5) = D matrix = 0. ss1(6) = X0 (initial state) = 0. 0. ss1(7) = Time domain = c
-->ss1=tf2ss(G1) ss1 = ss1(1) (state-space system:) !lss A B C D X0 dt ! ss1(2) = A matrix = 0. 0.5 - 0.25 - 0.75 ss1(3) = B matrix = 0. 0.3535534
2015-11-26 AP: MIMG02, 2015 169
Jellemző ábrák: Nyquist-diagram
● nyquist(G2,%f) (csak pozitív frekvenciákra)● nyquist(G2,strcat(['(',pol2str(G2.num),')/(',pol2str(G2.den),')']),%f) (az átviteli függvény a felirat)
2015-11-26 AP: MIMG02, 2015 170
Jellemző ábrák: Bode-diagram
● bode(G2,"rad") (a vízszintes tengelyen körfrekvencia, az alapértelmezett mennyiség Hz!)
● gainplot(G2) ● phaseplot(G2)
2015-11-26 AP: MIMG02, 2015 171
Frekvenciaátviteli függvény helyettesítési értékei
● horner(mibe,mit)helyettesítési érték számítás● phasemag a fázisszög [°] és az erősítés [dB]
->G=syslin('c',1/(1+0.2*%s)) G = 1 ------- 1 + 0.2s -->G_omega5 = horner(G, 5*%i) G_omega5 = 0.5 - 0.5i -->[phi,dB]=phasemag(G_omega5) dB = - 3.0103 phi = - 45.
2015-11-26 AP: MIMG02, 2015 172
Átmeneti függvény és súlyfüggvény
● csim: lineáris rendszer szimulációja, időtartománybeli válasz meghatározása
● [y [,x]]=csim(u,t,sl,[x0 [,tol]])– t=0:0.1:20;– [yStep]=csim('step', t, G2);– [yImpulse]=csim('impulse', t, G2);– plot(t,yStep);– plot(t,yStep,'b-'),xgrid(),xtitle('Átmeneti függvény','t','y');
– plot(t',[yStep;yImpulse]')– plot(t,yStep,'r-o',t,yImpulse,'b:x')
2015-11-26 AP: MIMG02, 2015 173
Átmeneti függvény és súlyfüggvényplot(t,yStep,'r-o',t,yImpulse,'b:x'),xgrid(),xtitle('Átmeneti függvény és súlyfüggvény','t','y')
2015-11-26 AP: MIMG02, 2015 174
Átmeneti függvény és súlyfüggvényplot2d(t,[yStep', yImpulse'],[1,2])e=gce();e.children(1).thickness=2;e.children(2).thickness=2;e.children(2).line_style=2;h1=captions(e.children,['átmeneti függvény';'súlyfüggvény'],'in_upper_left');xtitle('Átmeneti függvény és súlyfüggvény','t','y'); xgrid();
2015-11-26 AP: MIMG02, 2015 175
Szabályozási kör vizsgálata(cél az alapeszközök bemutatása)
● Scilab használati módjai● konzolos változat● GUI változat● Scilab-LabVIEW Gateway
● a LabVIEW grafikus környezetében használható Control Design and Simulation Module● a Scilab/Matlab szöveges részéhez hasonló “offline”
elemkészlete a menükben Control & Simulation >> Control Design alatt érhető el
2015-11-26 AP: MIMG02, 2015 176
Szabályozási kör vizsgálata(cél az alapeszközök bemutatása)
● szerepel a MathScript RT ● külön GUI-val a LabVIEW, Tools menü, MathScript
Window... kiválasztásával nyíló ablakban● és LabVIEW Block Diagram-on használható MathScript
Node formájában● az Xcos/Simulink grafikus rendszernek
megfeleltethető a LabVIEW Simulation elemkészlet● a Block Diagram oldalon menüben Control & Simulation
>> Simulation alatt érhető el
2015-11-26 AP: MIMG02, 2015 177
Matematikai modellek:szakasz (irányítandó folyamat)
szabályozóvisszacsatoló ágban lévő érzékelő
2015-11-26 AP: MIMG02, 2015 178
A példában szereplő rendszer
● átviteli függvények● soros kapcsolás: átviteli függvények szorzata● párhuzamos kapcsolás: átviteli függvények összege● negatív visszacsatolás: előrevezető ág eredője osztva
(1 + a felnyitott kör eredője)
2015-11-26 AP: MIMG02, 2015 180
Scilab: átviteli függvényeks=%s;G_szakasz=syslin('c',1/(1+5*s)^2)G_szabalyozo=syslin('c',100*(1+5*s)/(1+0.005*s))G_visszacsatolas=syslin('c',1,1)G_felnyitott=G_szabalyozo*G_szakasz*G_visszacsatolasW_zart=G_szabalyozo*G_szakasz/(1+G_felnyitott)
G_felnyitott = 4000 -------------- 2 40 + 200.2s + s W_zart = 4000 ---------------- 2 4040 + 200.2s + s
G_szakasz = 1 ------------- 2 1 + 10s + 25s
G_szabalyozo = 100 + 500s ---------- 1 + 0.005s
G_visszacsatolas = 1 - 1
2015-11-26 AP: MIMG02, 2015 181
xset('window',0)bode([G_szakasz; G_szabalyozo; G_felnyitott], ['szakasz','szabályozó','felnyitott kör'], "rad")
Scilab: Bode-diagram
2015-11-26 AP: MIMG02, 2015 182
xset('window',1)t_szakasz=0:0.1:40;y_szakasz=csim('step',t_szakasz,G_szakasz);subplot(211),plot2d(t_szakasz,y_szakasz)xgrid()xtitle('Szakasz átmeneti függvénye','t','y')
t_zart=0:0.01:0.3;y_zart=csim('step',t_zart,W_zart);subplot(212),plot2d(t_zart,y_zart)xgrid()xtitle('Zárt kör átmeneti függvénye','t','y')
Scilab: átmeneti függvények
2015-11-26 AP: MIMG02, 2015 184
Scilab: tartalékok
f [Hz]!!!
[fazistartalek,f_fazistartalek]=p_margin(G_felnyitott)[erositesi_tartalek,f_erositesi_tartalek]=g_margin(G_felnyitott)show_margins(G_felnyitott)
f_fazistartalek = 3.1672971 fazistartalek = 84.893367 f_erositesi_tartalek = [] erositesi_tartalek = Inf
2015-11-26 AP: MIMG02, 2015 196
Átviteli függvény előállítás “kézzel”
lehet mintavételes(diszkrét idejű)
2015-11-26 AP: MIMG02, 2015 202
LabVIEW MathScript Window% számláló és nevező polinommal definiált átviteli függvény% CSÖKKENŐ s hatványok szerint kell megadni az együtthatókat, hasonlóan a Matlab-hoz!G_szakasz=tf([1],[25 10 1])
% az s független változós=tf('s') % Átviteli függvény definiálása racionális kifejezéskéntG_szabalyozo=100*(1+5*s)/(1+0.005*s)G_visszacsatolas=1
% Eredő átviteli függvények soros kapcsolással (series) és negatív visszacsatolással (feedback)G_eloremeno=series(G_szabalyozo,G_szakasz)G_felnyitott=series(G_eloremeno,G_visszacsatolas)W_zart=feedback(G_eloremeno,G_visszacsatolas)
2015-11-26 AP: MIMG02, 2015 203
% Külön ábrázolt Bode-diagramokfigure(1)bode([G_szakasz, G_szabalyozo, G_felnyitott])grid
2015-11-26 AP: MIMG02, 2015 204
% Együtt ábrázolt Bode-diagramokfigure(2)bode(G_szakasz, G_szabalyozo, G_felnyitott)grid
2015-11-26 AP: MIMG02, 2015 205
% Tartalékok ábrázolásafigure(3)margin(G_felnyitott)
% Tartalékok értéke[erositesi_tartalek, fazistartalek, omega_erositesi_tartalek, omega_fazistartalek]=margin(G_felnyitott)
erositesi_tartalek =
Inf
fazistartalek =
84.8934
omega_erositesi_tartalek =
NaN
omega_fazistartalek =
19.9007
2015-11-26 AP: MIMG02, 2015 206
% Szakasz átmeneti függvényefigure(4)step(G_szakasz)title('Szakasz átmeneti függvénye')grid
2015-11-26 AP: MIMG02, 2015 207
% Zárt kör átmeneti függvényefigure(5)step(W_zart)title('Zárt kör átmeneti függvénye')grid
2015-11-26 AP: MIMG02, 2015 213
GNU Octave
G_szakasz=tf([1],[25 10 1])
s=tf('s')
G_szabalyozo=100*(1+5*s)/(1+0.005*s)
G_visszacsatolas=1
G_eloremeno=series(G_szabalyozo,G_szakasz)
G_felnyitott=series(G_eloremeno,G_visszacsatolas)
W_zart=feedback(G_eloremeno,G_visszacsatolas)
2015-11-26 AP: MIMG02, 2015 215
GNU Octaveoctave> margin(G_felnyitott)octave> [erositesi_tartalek, fazistartalek, omega_et, omega_ft] = margin(G_felnyitott)
erositesi_tartalek = Inffazistartalek = 84.893omega_et = NaNomega_ft = 19.901
top related