Számítógépes szimuláció

Dr. Aradi, Petra

Gräff, József

Dr. Lipovszki, György

A tananyag a TÁMOP-4.1.2.A/1-11/1-2011-0042 azonosító számú „ Mechatronikai mérnök MSc tananyagfejlesztés ” projekt keretében készült. A tananyagfejlesztés az Európai Unió támogatásával és az Európai Szociális Alap társfinanszírozásával valósult meg.

Az egyes fejezetek szerzői:

Dr. Aradi Petra egyetemi docens, BME-MOGI (1.1, 1.5, 1.6, 1.11, 2.1, 2.4, 4. fejezetek)

Gräff József mestertanár, BME-MOGI (1.3.1, 1.9, 1.10, 7.1, 7.2, 7.3 fejezetek)

Dr. Lipovszki György egyetemi docens, BME-MOGI (1.2, 1.3.2, 1.3.3, 1.4, 1.7, 1.8, 2.2, 2.3, 2.5, 3.1, 3.2, 3.3, 3.4, 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 6.1, 6.2, 6.3, A1.1, A1.2, B1.1, B1.2, B1.3, B1.4, C1.1, C1.2, C1.3, C1.4, C1.5 fejezetek)

Kézirat lezárva: 2014 február

Lektorálta: Tóth Bertalan

A kiadásért felel a(z): BME MOGI

Felelős szerkesztő: BME MOGI

2014


Tartalom
1. Időben folytonos működésű rendszerek
1.1. Rendszerleírási módok
1.1.1. Rendszer leírás időtartományban
1.1.1.1. Differenciálegyenlet (lineáris, állandó együtthatós)
1.1.1.2. Az állapottér-leírási mód
1.1.1.2.1. Általános, lineáris MIMO állapottér modell
1.1.1.2.2. Kanonikus alakú állapottér modell előállítása
1.1.1.2.3. P vagy I jellegű, többtárolós SISO rendszer
1.1.2. Frekvenciatartomány
1.1.2.1. Exponenciális alakú frekvenciaátviteli függvény
1.1.2.2. Polinomiális alakú frekvenciaátviteli függvény
1.1.2.3. Zérus–pólus–erősítés alakú frekvenciaátviteli függvény
1.1.3. Rendszerek leírása Laplace tartományban
1.1.3.1. Polinomiális átviteli függvény
1.1.3.2. Zérus-pólus-erősítés alakú átviteli függvény
1.1.3.3. Differenciálegyenlet-megoldás Laplace-operátoros tartományban
1.1.3.4. Az állapottér modell Laplace-operátoros tartományban
1.1.4. Jellegzetes állapottér modell struktúrák
1.1.4.1. Fázisváltozós alak
1.1.4.2. Az irányíthatósági normálalak
1.1.4.3. A megfigyelhetőségi normálalak
1.1.4.4. A modális alak
1.2. Alapelemek (objektumok, blokkok, műveletek)
1.2.1. Műveleti erősítő
1.2.2. Negatív visszacsatolású műveleti erősítő
1.2.3. Jelek összeadása
1.2.4. Időfüggő jel szorzása konstanssal
1.2.5. Jel integrálása idő szerint
1.2.6. Jelkésleltetés (Padé-közelítés)
1.2.7. Nemlineáris elemek
1.3. Alapelemek összekapcsolása
1.3.1. Integrálást vagy differenciálást alkalmazunk a differenciálegyenlet megoldásához
1.3.1.1. Hibával terhelt értékű függvények esete
1.3.1.2. Numerikus hibák
1.3.1.3. Összehasonlító mintapélda megoldása differenciáló és integráló algoritmussal
1.3.2. Átviteli függvények számítási blokkdiagramjának meghatározása
1.3.2.1. Arányos típusú átviteli függvények számítási blokkdiagramjának meghatározása PT1, PT2
1.3.2.2. Integráló típusú átviteli függvények számítási blokkdiagramjának meghatározása IT1, IT2
1.3.2.3. Differenciáló típusú átviteli függvények számítási blokkdiagramjának meghatározása DT1, DT2
1.3.2.4. Előretartó-késleltető tag (Lead–lag compensator) számítási blokkdiagramjának meghatározása
1.3.3. Alapelemek különböző összekapcsolásából keletkező részrendszerek
1.3.3.1. Alapelemek összekapcsolásánál alkalmazott műveletek
1.3.3.2. Alapelemek soros összekapcsolásából keletkező részrendszer
1.3.3.3. Alapelemek párhuzamos összekapcsolásából keletkező részrendszer
1.3.3.4. Alapelemek negatív visszacsatolt összekapcsolásából keletkező részrendszer
1.4. Átviteli függvény számítási blokkdiagramjának megvalósítása
1.4.1. Átviteli függvény számítási blokkdiagramja soros kapcsolású részelemekkel
1.4.2. Átviteli függvény számítási blokkdiagramja párhuzamos kapcsolású részelemekkel
1.4.3. Átviteli függvény megvalósítása közvetlen programozással
1.4.4. Átviteli függvény megvalósítása M-programozással
1.4.5. Állapottér módszer számítási blokkdiagramjának meghatározása SISO rendszereknél
1.4.6. Állapottér-leírás, állapottér-reprezentációk kapcsolata
1.5. Rendszer-transzformációk
1.5.1. Átviteli függvény (tf) transzformációk {ss2tf,  zp2tf}
1.5.1.1. Átviteli függvény állandósult állapotbeli erősítése
1.5.1.2. zp2tf: zérus-pólus-erősítés alakú átviteli függvény alakból transzformáció polinomiális alakú átviteli függvény alakba
1.5.1.3. ss2tf: transzformáció állapottér modell alakból, polinomiális alakú átviteli függvény alakba
1.5.2. Zérus-pólus-erősítés függvény (zp) transzformációk, {tf2zp,  ss2zp}
1.5.2.1. Zérus-pólus függvény erősítése (K)
1.5.2.2. tf2zp: transzfomáció polinomiális alakú átviteli függvényből zérus-pólus-erősítés alakú átviteli függvénybe
1.5.2.3. ss2zp: átalakítás állapottér modellből zérus-pólus-erősítés alakú átviteli függvénybe
1.5.3. Állapottér (ss) transzformációk, {tf2ss,  zp2ss}
1.5.3.1. tf2ss: transzformáció polinomiális alakú átviteli függvényből állapottér modellbe
1.5.3.2. zp2ss: átalakítás zérus-pólus-erősítés alakú átviteli függvényből állapottér modellbe
1.6. Több bemenetű és több kimenetű rendszerek (MIMO) leírása
1.6.1. Átviteli mátrix {G(s)}
1.6.1.1. A SISO rendszer
1.6.1.2. A MISO rendszer
1.6.1.3. A SIMO rendszer
1.6.1.4. A MIMO rendszer
1.6.2. Az állapottér módszer
1.7. Folytonos rendszerek megvalósítása műveleti erősítő áramkörökkel
1.7.1. Átviteli függvény megvalósítása
1.7.2. Analóg számítógép
1.7.2.1. Az elektronikus, analóg számítógépek műveleti egységei
1.7.2.2. Az analóg számítógép szerkezeti felépítése
1.7.2.3. Az analóg számítógép programozása
1.7.2.4. Amplitúdó–léptékezés
1.7.2.5. Időléptékezés
1.7.2.6. Valós idejű futás (a műveleti erősítő frekvenciaátviteli korlátai)
1.8. Folytonos rendszerek szimulációja digitális számítógéppel
1.8.1. Folytonos bemeneti jelek és rendszerek mintavételezése
1.8.1.1. A folytonos bemeneti jelek mintavételezése
1.8.1.2. Folytonos rendszerek mintavételezése
1.8.2. Rendszerek digitális számítógépen történő futtatása
1.8.3. Az alapelemek megvalósítása
1.8.3.1. Jelkomponensekkel végzett aritmetikai műveletek
1.8.3.2. A jel integrálása idő szerint az adott mintavételi időpontban
1.8.3.3. Jelkésleltetés
1.8.3.4. Nemlineáris elemek
1.8.4. Alapelemek összekapcsolása
1.9. Numerikus differenciálás és integrálás
1.9.1. Numerikus differenciálás
1.9.1.1. Idő szerinti differenciálás szemléletes megközelítése
1.9.1.2. Alapgondolat Taylor sor alkalmazásához
1.9.1.3. Általános, hibatagot szolgáltató eljárás
1.9.2. Numerikus integrálás
1.9.2.1. Szemléletes megközelítés
1.9.2.2. Alapgondolat Taylor sor alkalmazására
1.9.2.3. Általános, hibatagot is szolgáltató eljárások - szimmetrikus formulák
1.9.2.3.1. Trapéz formula
1.9.2.3.2. Simpson formula
1.9.2.3.3. Newton-féle 3/8-os formula
1.9.2.3.4. Szimmetrikus 4-lépéses formula
1.9.2.4. Általános, hibatagot is szolgáltató eljárások - Adams-Bashforth formulák
1.9.2.4.1. Elsőrendű Adams-Bashforth integrátor
1.9.2.4.2. Másodrendű Adams-Bashforth integrátor
1.9.2.4.3. Harmadrendű Adams-Bashforth integrátor
1.9.2.4.4. Negyedrendű Adams-Bashforth integrátor
1.9.2.5. Általános, hibatagot is szolgáltató eljárások - Adams-Moulton formulák
1.9.2.5.1. Elsőrendű Adams-Moulton integrátor
1.9.2.5.2. Másodrendű Adams-Moulton integrátor
1.9.2.5.3. Harmadrendű Adams-Moulton integrátor
1.9.2.5.4. Negyedrendű Adams-Moulton integrátor
1.9.2.6. Runge-Kutta módszer
1.9.2.6.1. Elsőrendű Runge‑Kutta
1.9.2.6.2. Másodrendű Runge‑Kutta
1.9.2.6.3. Harmadrendű Runge‑Kutta
1.9.2.6.4. Negyedrendű Runge‑Kutta
1.9.2.6.5. Runge‑Kutta módszer általánosítása
1.9.2.7. Az integrálformulák csoportosítása
1.10. Differenciálegyenletek numerikus megoldása
1.10.1. Megoldás negyedrendű Runge-Kutta módszerrel
1.10.1.1. Tartályos feladat megoldása (Runge-Kutta módszerrel)
1.10.1.2. Rezgő rendszer megoldása(Runge-Kutta módszerrel)
1.10.2. Megoldás másodrendű Adams-Bashforth integrátorokkal
1.10.2.1. Tartályos feladat megoldása (Adams-Bashforth integrátorokkal)
1.10.2.2. Rezgő rendszer megoldása (Adams-Bashforth integrátorokkal)
1.10.3. Megoldás másodrendű Adams-Moulton integrátorokkal
1.10.3.1. Tartályos feladat megoldása (Adams-Moulton integrátorokkal)
1.10.3.2. Rezgő rendszer megoldása (Adams-Moulton integrátorokkal)
1.10.4. Megoldás másodrendű prediktor – korrektor módszerrel
1.10.4.1. Tartályos feladat megoldása (másodrendű prediktor – korrektor módszerrel)
1.10.4.2. Rezgő rendszer megoldása (másodrendű prediktor – korrektor módszerrel)
1.10.5. Megoldás másodrendű vegyes módszerrel
1.10.6. Hibabecslés módszerei
1.10.7. Változó lépésköz alkalmazhatósága
1.10.8. A különböző módszerek összehasonlítása
1.11. Frekvenciatartománybeli vizsgálatok
1.11.1. A Bode-diagram
1.11.1.1. A közelítő Bode–diagram
1.11.1.1.1. Nulladrendű számláló, nulladrendű nevező
1.11.1.1.2. Nulladrendű számláló és egy zérusértékű pólus
1.11.1.1.3. Egy nullaértékű zérus és nulladrendű nevező
1.11.1.1.4. Nulladrendű számláló és egy pólus
1.11.1.1.5. Egy zérus és nulladrendű nevező
1.11.1.1.6. Nulladrendű számláló és két pólus
1.11.1.1.7. Két zérus és nulladrendű nevező
1.11.2. A Nyquist diagram
1.11.3. A Nichols–diagram
1.11.4. A pólus–zérus diagram
1.11.5. A gyökhelygörbe
2. Mintavételes rendszerek szimulációja
2.1. Impulzusátviteli függvény és a mintavételes állapottér leírási mód
2.1.1. Differenciaegyenlet előállítása
2.1.1.1. Előrehaladó differencia
2.1.1.2. Hátrahaladó differencia
2.1.1.3. Trapéz–módszer
2.1.2. Diszkrét idejű állapottér modell
2.1.3. Mintavételezés, Z–transzformáció
2.1.4. A Z–transzformáció tulajdonságai
2.1.5. Mintavételezett jelek Z-transzformációja
2.1.6. Mintavételes és folytonos rendszerek összekapcsolása, tartószervek (ZOH, FOH)
2.1.6.1. A nulladrendű tartószerv
2.1.6.2. Elsőrendű tartószerv
2.1.7. Mintavételezett adatokkal működő folytonos rendszer diszkrét modellje
2.1.8. Inverz Z–transzformáció
2.1.8.1. Táblázatból való visszakereséssel
2.1.8.2. Résztörtekre bontással
2.1.8.3. Sorba fejtéssel
2.1.8.4. Inverz Z-transzformáció diszkrét konvolúcióval
2.1.9. Impulzusátviteli függvény
2.1.9.1. Impulzusátviteli függvény z pozitív hatványaival G(z)
2.1.9.2. Impulzusátviteli függvény z negatív hatványaival G(z-1)
2.1.9.3. G(z) átalakítása G(z-1) alakra
2.1.9.4. 1G(z-1) átalakítása G(z) alakra
2.2. Mintavételes rendszerek alapelemei
2.2.1. Mintavételes rendszerek alapműveletei
2.2.2. Időbeni eltolást végző elem (shift művelet) megvalósítása mintavételes rendszerekben
2.2.3. Időbeni késleltetés megvalósítása mintavételes rendszerekben
2.2.4. Mintavételes rendszerek nemlineáris elemei
2.3. Mintavételes alapelemek összekapcsolása
2.3.1. Az impulzusátviteli függvény (SISO rendszer) megvalósítása digitális számítógépen
2.3.1.1. Az impulzusátviteli függvény megvalósítása soros kapcsolású alapelemekkel
2.3.1.2. Az impulzusátviteli függvény megvalósítása párhuzamos kapcsolású alapelemekkel
2.3.1.3. Impulzusátviteli függvény megvalósítása közvetlen programozással
2.3.1.4. Impulzusátviteli függvény megvalósítása M programozással
2.4. Állapottér leírású (MIMO) rendszer megvalósítása
2.4.1. Az impulzusátviteli függvény meghatározása mintavételes állapottér mátrixok segítségével
2.4.2. Mintavételes állapottér mátrixok meghatározása az impulzusátviteli függvény segítségével
2.5. Transzformációk a mintavételes rendszerekben
2.5.1. Az impulzusátviteli függvény (tf) transzformációi
2.5.1.1. Az impulzusátviteli függvény állandósult állapotbeli erősítése
2.5.1.2. Impulzusátviteli függvény transzformációja zérus-pólus-erősítés alakból polinomiális alakba
2.5.1.3. Impulzusátviteli függvény transzformációja állapottér modell alakból polinomiális alakba
2.5.2. Zérus-pólus-erősítés függvény (zp) transzformációi
2.5.2.1. Zérus-pólus függvény erősítése (Kd)
2.5.2.2. Polinomiális alakú impulzusátviteli függvény átalakítása zérus-pólus-erősítés alakúvá
2.5.2.3. Állapottér modell alakú impulzusátviteli függvény átalakítása zérus-pólus-erősítés alakúvá
2.5.3. Állapottér (ss) transzformációk
2.5.3.1. Átalakítás polinomiális alakú impulzusátviteli függvényből állapottér modellbe
2.5.3.2. Átalakítás zérus-pólus-erősítés alakú impulzusátviteli függvényből állapottér modellbe
3. A diszkrét esemény szimulátor
3.1. A DES LabVIEW programrendszer
3.1.1. Miért szükséges a LabVIEW programrendszer kiegészítése Diszkrét Esemény Objektumokkal?
3.1.2. Mi szükséges ahhoz, hogy egy Diszkrét Esemény Szimulátort létrehozzunk?
3.1.2.1. Szimulációs idő és eseménykezelés
3.1.2.2. Véletlen szám generátorok
3.1.2.2.1. Jelölések
3.1.2.2.2. A leggyakoribb folytonos eloszlásfüggvények
3.1.2.2.3. Egyenletes eloszlás (Uniform Distribution)
3.1.2.2.4. Normális eloszlás (Normal Distribution)
3.1.2.2.5. Háromszög eloszlás (Triangle Distribution)
3.1.2.2.6. Exponenciális eloszlás (Exponential Distribution)
3.1.2.2.7. Erlang eloszlás (Erlang Distribution)
3.1.2.2.8. Empirikus eloszlás (Empirical Distribution)
3.1.2.2.9. Általános eloszlás függvény definiálása
3.1.2.3. Diszkrét Esemény objektum típusok
3.1.2.4. Diszkrét Esemény Objektumok összekapcsolása
3.1.2.5. Diszkrét Esemény Objektum kimeneti statisztikai adatai
3.1.3. Első mintapélda: Az M/M/1 rendszer modellje a LabVIEW DES rendszerben
3.1.3.1. A rendszermodell leképezése
3.1.3.2. A Source objektum felépítése és feladata
3.1.3.3. A Sink objektum felépítése és feladata
3.1.3.4. A Buffer objektum felépítése és feladata
3.1.3.5. A Machine objektum felépítése és feladata
3.1.3.5.1. Az Entity objektum felépítése és feladata (Entitás objektum)
3.1.4. Második mintapélda: Több kimeneti pont egyesítésének biztosítása (Join művelet)
3.1.4.1. A Join objektum felépítése és feladata
3.1.5. Harmadik mintapélda: Több bemeneti pontból történő választás biztosítása megadott szabály szerint (Select művelet)
3.1.5.1. A Selector objektum felépítése és feladata
3.1.6. Negyedik mintapélda: Több entitás elhelyezése egy másik (Package) entitásban (Pack művelet), illetve több entitás kibontása egy másik (Package) entitásból (UnPack művelet)
3.1.6.1. A Pack objektum felépítése és feladata
3.1.6.2. Az UnPack objektum felépítése és feladata
3.2. A szimulációs rendszer objektumainak közös tulajdonságai (Global Variables)
3.2.1. Az "ObjectList" globalis változók
3.2.2. A "TaskList" globalis változók
3.3. A szimulációs rendszer eljárásai
3.4. A szimulációs program továbbfejlesztésének lehetőségei
3.4.1. További statisztikai számítások beépítése a DES objektumokba
3.4.2. Új attribútumok létesítése és hatásuk beépítése a DES objektumokba
3.4.3. Új DES objektumtípusok létrehozása
4. Lágy számítási módszerek alkalmazása a szimulációban (Soft Computing)
4.1. Neurális hálózatok
4.1.1. Mesterséges neuron, a számítás alapegysége
4.1.1.1. McCulloch–Pitts (MCP) neuron
4.1.1.2. Perceptron
4.1.1.3. ADELINE
4.1.1.4. Továbblépés, a kimenet számítása
4.1.2. Előrecsatolt neurális hálózat
4.1.2.1. Backpropagation
4.1.3. Radiális bázisfüggvényes hálózat
4.2. Fuzzy halmazok, fuzzy logika
4.2.1. Klasszikus logika, hagyományos halmazok
4.2.2. A fuzzy halmazok tulajdonságai
4.2.3. Fuzzy halmazműveletek
4.2.3.1. Hagyományos halmazműveletek kiterjesztése
4.2.3.2. Fuzzy halmazművelet csoportok
4.2.4. Relációk
4.2.5. Fuzzy szabályalapú rendszerek
4.2.5.1. Nyelvi változók, módosítók
4.2.5.2. Fuzzifikálás
4.2.5.3. Fuzzy szabálybázis, fuzzy következtetés
4.2.5.4. Defuzzifikálás
4.3. Komplex rendszerek
5. Optimum kereső módszerek
5.1. Az optimalizáló eljárások általános jellemzői
5.1.1. Az optimalizáló eljárások típusai
5.1.1.1. Determinisztikus vagy sztochasztikus problémát megoldó eljárások
5.1.1.2. Kísérletező vagy matematikai eljárások
5.1.1.3. Statikus vagy dinamikus eljárások
5.1.1.4. Direkt (numerikus) vagy indirekt (analitikus) módszerek
5.1.1.5. Paraméter- vagy függvény-optimalizáló eljárások
5.1.1.6. Korlátozott vagy korlátozás nélküli optimalizáló eljárások
5.1.2. Hegymászó stratégiák
5.1.2.1. Egydimenziós stratégiák
5.1.2.1.1. Szimultán módszerek
5.1.2.1.2. Egyenlő távolságú keresés
5.1.2.1.3. Sorrendi módszerek
5.1.2.2. A minimum bekerítése (Boxing in the Minimum)
5.1.2.2.1. Tartományosztó módszerek
5.1.2.2.2. Fibonacci sor szerinti keresés
5.1.2.2.3. Aranymetszés alapú keresés
5.1.2.2.4. Bolzano módszer
5.1.2.3. Interpolációs módszerek
5.1.2.3.1. Regula-falsi iteráció
5.1.2.3.2. Newton-Raphson iteráció
5.1.2.3.3. Lagrange interpoláció
5.1.2.3.4. Hermit interpoláció
5.1.3. Többdimenziós stratégiák
5.1.3.1. Direkt keresési stratégiák
5.1.3.2. Koordináta stratégia
5.1.3.3. Hook és Jeeves pattern stratégiája
5.1.3.4. Rosenbrock stratégiája: forgó koordináták
5.1.3.5. Davies, Swann és Campey stratégiája (DSC stratégia)
5.1.3.6. Nelder és Mead szimplex stratégiája
5.1.3.7. Box komplex stratégiája
5.1.4. Gradiens stratégiák
5.1.4.1. Powell stratégiája: konjugált irányok
5.1.4.2. Newton stratégiák
5.1.4.3. Davidson-Fletcher-Powell módszer (Kvázi Newton stratégia, Variable Metric Strategy)
5.1.5. Random (véletlenszerű) stratégiák
5.1.6. Evolúciós módszerek
5.1.6.1. Szimulált hőkezelés
5.1.6.2. Evolúciós algoritmusok (EA)
5.1.6.2.1. Evolúciós stratégiák (ES=Evolution Strategies)
5.1.6.2.2. Az egyszerű Evolúciós Stratégia
5.1.6.2.3. Az evolúciós stratégiák típusai
5.1.6.2.4. Egymásba ágyazott evolúciós stratégiák
5.1.6.2.5. Genetikus algoritmusok (GA)
5.1.6.2.6. Evolúciós programozás (EP)
5.1.6.2.7. Genetikus programozás (GP)
5.2. Genetikus algoritmusok
5.2.1. Genetikai alapok
5.2.2. A genetikus algoritmus
5.2.3. A genetikus algoritmusok működési mechanizmusa
5.2.3.1. A sémaelmélet
5.2.3.2. Az építőelem-elmélet
5.2.4. A genetikus algoritmusok típusai
5.2.4.1. A gének ábrázolása
5.2.4.1.1. Bináris ábrázolásmód
5.2.4.1.2. Valós ábrázolásmód
5.2.4.1.3. Permutációs ábrázolásmód
5.2.4.1.4. Speciális ábrázolásmódok
5.2.4.2. Fitness számítás
5.2.4.3. Szelekció
5.2.4.3.1. Rulett kerék szelekció
5.2.4.3.2. Versenyeztető algoritmus
5.2.4.3.3. Rangsor alapú szelekció
5.2.4.3.4. Boltzmann szelekció
5.2.4.4. Kereső operátorok
5.2.4.4.1. Mutáció
5.2.4.4.2. Mutáció bináris ábrázolás esetén
5.2.4.4.3. A valós ábrázolás mutációs operátorai
5.2.4.4.4. Mutációs operátorok permutációs ábrázolásmód esetén
5.2.4.4.5. Rekombináció
5.2.4.4.6. Bináris keresztezés
5.2.4.4.6.1. Egypontos keresztezés:
5.2.4.4.6.2. K-pontos keresztezés:
5.2.4.4.6.3. Egyenletes keresztezés (uniform crossover):
5.2.4.4.6.4. A valós ábrázolásmódnál alkalmazott keresztezési módszerek
5.2.4.4.6.5. Heurisztikus keresztezés (WRIGHT 1994)
5.2.4.4.6.6. Szimplex keresztezés (RENDERS és BERSINI 1994)
5.2.4.4.6.7. Geometriai keresztezés (MICHALEWITZ 1996)
5.2.4.4.7. A permutációs ábrázolásmód keresztező eljárásai
5.2.4.4.7.1. DAVIS sorrendi keresztezése (Order crossover, OX)
5.2.4.4.7.2. Részleges megfeleltetésű keresztezés (Partially mapped crossover PMX)
5.2.4.4.7.3. SYSWERDA sorrendi keresztezése (Order crossover-2)
5.2.4.4.7.4. Élkeresztezés
5.2.4.5. Korlátkezelési technikák
5.2.4.5.1. Büntetőfüggvények
5.2.4.5.2. Statikus büntetőfüggvények
5.2.4.5.3. Dinamikus büntetőfüggvények
5.2.4.5.4. Adaptív büntetőfüggvények
5.2.4.5.5. Dekódolók alkalmazása korlátozás céljából
5.2.4.5.6. Egyéb technikák
5.2.4.5.6.1. Javító algoritmusok
5.2.4.5.6.2. Korlátokat betartó operátorok alkalmazása
5.2.5. A populáció szerkezete
5.2.5.1. Életfeltételeket alkalmazó módszerek (Niching methods)
5.2.5.2. Fajkialakító módszerek (Speciation methods)
5.2.5.3. Sziget- vagy áttelepedési modellek (Island or Migration modells)
5.2.5.4. Diffúziós vagy celluláris modellek
5.3. A genetikus algoritmusok speciális területei
5.3.1. Multikritériumú optimalizálás
5.3.2. Önadaptációs eljárások
5.3.3. Metaevolúciós megközelítés
5.4. A genetikus algoritmusok előnyei és hátrányai
5.4.1. Robosztusság
5.4.2. Lokális és globális szélsőérték
5.4.3. További előnyök
5.4.4. Hátrányok
5.5. A genetikus algoritmus alkalmazásának területei
5.6. PI kompenzáció paraméter optimalizálása genetikus algoritmussal
5.6.1. A feladat leírása
5.6.2. A feladat megoldása
5.6.3. Adatreprezentáció
5.6.4. Fitness számítás
5.6.5. Az alkalmazott operátorok
5.6.5.1. Szelekció
5.6.5.2. Rekombináció
5.6.5.3. Mutáció
5.6.6. Korlátok kezelése
5.6.7. Program kezelési leírása
5.6.8. A program futási eredményei
5.6.8.1. A mutációs valószínűség hatása a keresés hatékonyságára
5.6.8.2. A szelekciós nyomást befolyásoló hatványkitevő hatása a keresésre
5.7. Az utazó ügynök probléma megoldása genetikus algoritmussal
5.7.1. A feladat leírása
5.7.2. A feladat megoldása
5.7.3. Adat reprezentáció
5.7.4. Fitness számítás
5.7.5. Az alkalmazott operátorok
5.7.5.1. Szelekció
5.7.5.2. Rekombináció
5.7.5.3. Mutáció
5.7.6. Korlátok kezelése
5.7.7. Program kezelési leírás
5.7.8. Futási eredmények
5.7.8.1. Véletlenszerű elhelyezés esetén az eredmények:
6. Rendszer-identifikáció (mérési adatok alapján)
6.1. Rendszerstruktúra-becslés
6.1.1. Arányos típusú tagok átmeneti függvényei
6.1.2. Integráló típusú tagok átmeneti függvényei
6.1.3. Differenciáló-tárolós típusú tagok átmeneti függvényei
6.1.4. Identifikáció nem egységugrás bemeneti vizsgáló jel esetén
6.2. A rendszerparaméter becslése (időtartománybeli) mérési adatok alapján
6.3. Rendszerparaméter becslése mintapélda
7. Numerikus módszerek
7.1. Hibajelenségek közelítő módszerek esetén
7.1.1. Kiegyszerűsödés
7.1.2. Kiejtés
7.1.3. Numerikus instabilitás
7.1.4. Rosszul kondicionáltság
7.2. Egyváltozós függvények gyökkeresése
7.2.1. Intervallum keresés
7.2.1.1. Grafikus módszer
7.2.1.2. Analitikus módszer
7.2.2. Általános gyökkereső algoritmusok
7.2.2.1. Intervallum-felezés
7.2.2.2. Húrmódszer (regula falsi)
7.2.2.3. Iteráció
7.2.2.4. Érintőmódszer (Newton-Raphson módszer)
7.2.3. Gyökkereső algoritmusok polinomok esetében
7.2.3.1. Horner-séma
7.2.3.2. Polinomok osztása polinommal
7.2.3.3. Primitív gyökök kezelése
7.2.3.4. Harmadfokú egyenlet megoldása: Cardano-formula
7.2.3.5. A többszörös gyökök eltüntetése
7.2.3.6. A gyököket tartalmazó intervallum meghatározása
7.2.3.7. Valós gyökök száma egy adott intervallumban
7.2.3.8. Gyökök keresése közelítő módszerrel
7.3. Többváltozós függvények gyökkeresése
7.3.1. Lineáris egyenletrendszer – Gauss elimináció
7.3.1.1. Mátrix invertálás
7.3.1.2. Független egyenletek kiválogatása - bázisfaktorizáció
7.3.2. Lineáris egyenletrendszer – iteráció
7.3.3. Nemlineáris egyenletrendszerek megoldási módszerei
7.3.3.1. Egyszerű iteráció
7.3.3.2. Az érintőmódszer általánosítása
A. Dinamikus rendszerek szimulációs eszközei - LabVIEW Control Design Module
A.1. Modell létrehozása
A.1.1. Modell létrehozása (Model Construction) alpaletta:
A.1.1.1. Állapottér modell létrehozása
A.1.1.2. Átviteli függvény (Transfer Function) létrehozása
A.1.1.3. Elsőrendű rendszer (PT1) átviteli függvényének létrehozása
A.1.1.4. Másodrendű rendszer (PT2) átviteli függvényének létrehozása
A.1.1.5. A jelet időben Pade közelítéssel késleltető rendszer (PTh) átviteli függvényének létrehozása
A.1.2. Modell-információk (Model Information) alpaletta
A.1.3. Modell-átalakítás (Model Conversion) alpaletta
A.1.3.1. Modell átalakítása állapottér modell alakra (Convert to State-Space Models.vi)
A.1.3.2. Modell átalakítása átviteli függvény alakra (Convert to Transfer Function Model.vi)
A.1.3.3. Időben folytonos modell átalakítása mintavételes modellé (Convert Continuous to Discrete.vi)
A.1.4. Modell-összekapcsolás (Model Interconnection) alpaletta
A.1.4.1. Modellek párhuzamos kapcsolása (CD Parallel.vi)
A.1.4.2. Modellek soros kapcsolása (CD Series.vi)
A.1.4.3. Modellek visszacsatolt összekapcsolása egységnyi visszacsatolási tényezővel (CD Unit Feedback.vi)
A.2. A modell vizsgálata időtartományban és frekvenciatartományban
A.2.1. Modell időtartománybeli vizsgálata (Time Response) alpaletta
A.2.1.1. Egységugrás bemenetre adott válaszfüggvény (CD Step Response.vi)
A.2.1.2. Egységimpulzus bemenetre adott válaszfüggvény (CD Impulse Response.vi)
A.2.1.3. Kezdeti értékkel rendelkező rendszer válaszfüggvénye (CD Initial Response.vi)
A.2.1.4. Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvénye (CD Linear Simulation.vi)
A.2.2. Dinamikus rendszermodell frekvenciatartománybeli vizsgálata (Frequency Response) alpaletta
A.2.2.1. Dinamikus rendszermodell Bode frekvenciafüggvénye (CD Bode.vi)
A.2.2.2. Dinamikus rendszermodell Nyquist frekvenciafüggvénye (CD Nyquist.vi)
A.2.2.3. Dinamikus rendszermodell Bode frekvenciafüggvényének erősítési és fázistartaléka (CD Gain and Phase Margin.vi)
A.2.3. Modell dinamikus tulajdonságai (Dynamic Characteristic) alpaletta
A.2.3.1. Rendszermodell pólusainak és zérusainak elhelyezkedése (CD Pole-Zero Map.vi)
A.2.3.2. Rendszermodell állandósult állapotbeli erősítése (CD DC Gain.vi)
B. Dinamikus rendszerek szimulációs eszközei – a LabVIEW Simulation Module
B.1. Modell létrehozása
B.1.1. Jelgenerátorok (Signal Generation)
B.1.1.1. Step Signal Generation (Ugrás függvény)
B.1.1.2. Pulse Signal (Négyszögjel függvény)
B.1.1.3. Ramp Signal (Sebességugrás függvény)
B.1.1.4. Signal Generator (Jelgenerátor)
B.1.1.5. Chirp Signal (Végigsöprő szinusz jelgenerátor)
B.1.1.6. Simulation Time (A szimuláció aktuális időpontja)
B.1.2. Jelaritmetika (Signal Arithmetics)
B.1.2.1. A Gain (Erősítés függvény)
B.1.2.2. A Summation (Összegzés függvény)
B.1.2.3. A Multiplication (Szorzás függvény)
B.1.3. Jelmegjelenítési elemek (Graph Utilities)
B.1.3.1. Sim Time Waveform (Szimulációs jel időfüggvényének kirajzolása)
B.1.3.2. Buffer XY Graph (az XY grafikon adatainak tárolása függvény)
B.1.4. Folytonos lineáris rendszerek (Continuous Linear Systems)
B.1.4.1. Integrator (Idő szerinti integrálás függvény)
B.1.4.2. Derivative (Idő szerinti differenciálási függvény)
B.1.4.3. Transport Delay (Jelkésleltetési függvény)
B.1.4.4. State Space (Állapottér modell)
B.1.4.5. Transfer Function (Átviteli függvény modell)
B.1.5. Folytonos nemlineáris rendszerek (Nonlinear Systems)
B.1.5.1. Dead Zone (Kotyogás függvény)
B.1.5.2. Friction (Súrlódás függvény)
B.1.5.3. Quantizer (Érték-diszkretizáló függvény)
B.1.5.4. Rate Limiter (Sebességkorlát függvény)
B.1.5.5. Relay (Relé függvény)
B.1.5.6. Saturation (Telítődés függvény)
B.1.5.7. Switch (Kapcsoló függvény)
B.1.6. Mintavételes lineáris rendszerek (Discrete Linear Systems)
B.1.6.1. Discrete Unit Delay (Mintavételes egységnyi késleltetés függvény)
B.1.6.2. Discrete Zero-Order Hold (Mintavételes nulladrendű tartó függvény)
B.1.6.3. Discrete First-Order Hold (Mintavételes elsőrendű tartó függvény)
B.1.6.4. Discrete State-Space (Mintavételes állapottér modell)
B.1.6.5. Discrete Transfer Function (Mintavételes impulzus-átviteli függvény modell)
B.1.7. Táblázattal megadott szimulációs paraméterek (Lookup Tables)
B.1.7.1. Lookup Table 1D (Egydimenziós táblázati függvény)
B.1.7.2. Lookup Table 2D (Kétdimenziós táblázati függvény)
B.2. Modellelemek összekapcsolása
B.3. Almodell (Subsytem) létrehozása
B.4. A szimulációs modell vizsgálata időtartományban
B.4.1. A modell vizsgálata időtől független (off-line) futtatási módban
B.4.2. A modell vizsgálata időtől függő (on-line) futtatási módban
C. Dinamikus rendszerek szimulációs eszközei (LabVIEW MathScript RT Module)
C.1. Bevezetés a LabVIEW programnyelvbe
C.1.1. Adatfolyam programozás
C.1.2. Grafikus programozás
C.1.3. Kapcsolat a külvilággal
C.1.4. A LabVIEW MathScript RT Module
C.2. LabVIEW MathScript RT Module alkalmazása
C.3. LabVIEW MathScript
C.3.1. Bevezetés
C.3.1.1. Hogyan indítsuk el a MathScript programot LabVIEW környezetben?
C.3.2. Programozási segítség
C.3.3. Mintapéldák
C.3.4. Hasznos utasítások
C.3.4.1. Függvények hívása a MathScript-ben
C.3.4.2. Felhasználó által definiált függvények a MathScript-ben (User-Defined Functions)
C.3.4.3. Scripts
C.3.5. Programozási struktúrák
C.3.5.1. If-else utasítás
C.3.5.2. Switch és case utasítás
C.3.5.3. For ciklus (véges számú végrehajtás)
C.3.5.4. While cilus (feltételtől függő számú végrehajtás)
C.3.6. Rajzolás (Plotting )
C.4. Lineáris algebrai mintapéldák (Linear Algebra)
C.4.1. Vektorok (Vectors)
C.4.2. Mátrixok (Matrix)
C.4.2.1. Transzponálás (Transpose)
C.4.2.2. Főátlóelemek (Diagonal)
C.4.2.3. Mátrixszorzás (Matrix Multiplication)
C.4.2.4. Mátrixösszeadás és -kivonás (Matrix Addition)
C.4.2.5. Mátrix determinánsa (Matrix Determinant)
C.4.2.6. Inverz mátrix (Inverse Matrix)
C.4.3. Sajátértékek (Eigenvalues)
C.4.4. Lineáris egyenletrendszer megoldása (Solving Linear Equations)
C.5. Irányítás-tervezés és szimuláció
C.5.1. Állapottérmodellek és átviteli függvények
C.5.1.1. PID (Arányos-integráló-differenciáló szabályozó)
C.5.1.2. Állapottérmodell (State-space model)
C.5.1.2.1. Átviteli függvény (Transfer function)
C.5.1.3. Elsőrendű arányos rendszer PT1 (First Order Systems)
C.5.1.4. Másodrendű arányos rendszer PT2 (Second Order Systems)
C.5.2. A Kapcsolat (connect) függvényosztály
C.5.2.1. Soros kapcsolat (series)
C.5.3. Az Átalakítás (convert) függvényosztály
C.5.3.1. Padé approximáció (Padé-approximation)
C.5.4. Frekvenciaválasz analízis (Frequency Response Analysis)
C.5.4.1. Bode diagram (Bode Diagram )
C.5.5. Időtartománybeli válaszfüggvények (Time Response)
C.5.5.1. Egységugrásra adott válaszfüggvény (step )
C.6. A MathScript blokk a LabVIEW programban (MathScript Node)
C.6.1. MathScript blokkok átvitele számítógépek között (Transferring MathScript Nodes between Computers)
C.6.2. Mintapéldák
Irodalomjegyzék
Tárgymutató
Az ábrák listája
1.1. Mechanikai rendszer (ütköző) szerkezeti vázlata
1.2. Az átviteli függvény szétcsatolása az irányíthatósági normálalak felírásához
1.3. Az irányíthatósági normálalak szimulációs diagramja (b n =0)
1.4. A megfigyelhetőségi normálalak szimulációs diagramja (b n = 0)
1.5. A modális alak szimulációs diagramja (n különböző valós pólus)
1.6. A modális alak szimulációs diagramja (n-2 különböző valós pólus és egy konjugált komplex gyökpár esetén)
1.7. A modális alak szimulációs diagramja (n-r különböző és r azonos valós pólus esetén)
1.8. Az ideális műveleti erősítő bemeneti (ZBE) és kimeneti impedanciája (ZKI) valamint erősítési tényezője (A)
1.9. A valóságos műveleti erősítő Bode frekvencia diagramja (amplitúdó)
1.10. A valóságos műveleti erősítő (hő)teljesítmény leadása a hőmérséklet függvényében
1.11. Az ideális műveleti erősítő szimbóluma
1.12. Negatív visszacsatolású műveleti erősítő
1.13. Negatív visszacsatolású, jelösszegző műveleti erősítő
1.14. Az összegző elem jelölése a blokkdiagramban
1.15. Az együttható-potenciométer jelölése blokkdiagramban
1.16. Az együttható-potenciométer villamos kapcsolása
1.17. Jelösszegző integrátor elem kapcsolási rajza
1.18. Az integrátor jelölése blokkdiagramban
1.19. Jelkésleltetést megvalósító elem kapcsolási rajza
1.20. A bemeneti jel differenciálásának és integrálásának összehasonlítása
1.21. Egytömegű csillapított lengőrendszer
1.22. A pontos érték összehasonlítása a numerikus differenciálást és integrálást alkalmazó algoritmussal
1.23. A PT1 tag számítási blokkdiagramja
1.24. A PT2 tag számítási blokkdiagramja (1. verzió)
1.25. A másodrendű tag (PT2) számítási blokkdiagramja (2. verzió)
1.26. Az IT1 tag számítási blokkdiagramja
1.27. Az IT2 tag számítási blokkdiagramja
1.28. A DT1 tag számítási blokkdiagramja
1.29. A DT2 tag számítási blokkdiagramja
1.30. Az előretartó-késleltető tag számítási blokkdiagramja
1.31. Átviteli függvények soros kapcsolásának eredő átviteli függvénye
1.32. Átviteli függvények párhuzamos kapcsolásának eredő átviteli függvénye
1.33. Átviteli függvények negatív visszacsatolt kapcsolásának eredő átviteli függvénye
1.34. Átviteli függvény számítását megvalósító blokkdiagram soros kapcsolású elemekkel
1.35. Átviteli függvény számítását megvalósító blokkdiagram sorosan kapcsolt elemekkel (mintapélda)
1.36. Az átviteli függvény számítását megvalósító blokkdiagram párhuzamos kapcsolású elemekkel
1.37. Az átviteli függvény számítását megvalósító blokkdiagram párhuzamosan kapcsolt elemekkel (mintapélda)
1.38. Az átviteli függvény számítását megvalósító blokkdiagram közvetlen programozással
1.39. Az átviteli függvény számítását megvalósító blokkdiagram közvetlen programozással (mintapélda)
1.40. Az átviteli függvény számítását megvalósító blokkdiagram M-programozással
1.41. Átviteli függvény számítását megvalósító blokkdiagram M-programozással (mintapélda)
1.42. Az átviteli függvény számítását megvalósító blokkdiagram állapottér-leírással
1.43. Az átviteli függvény számítása állapottér-leírással (LabVIEW mintapélda)
1.44. Az átviteli függvény számítását megvalósító blokkdiagram állapottér-leírással (LabVIEW mintapélda adatok)
1.45. Az átviteli függvény számítását megvalósító blokkdiagram állapottér-leírással (LabVIEW mintapélda diagram panel)
1.46. Az irányíthatósági állapottér alak blokkdiagramja
1.47. A diagonális állapottér alak blokkdiagramja
1.48. Gépkocsi lengéscsillapító rendszer szerkezeti vázlata
1.49. A rugó alrendszer szerkezeti vázlata
1.50. A rugó alrendszer differenciálegyenletét megvalósító blokkvázlat
1.51. A tömeg alrendszer szerkezeti vázlata
1.52. A tömeg alrendszer differenciálegyenletét megvalósító blokkvázlat
1.53. A csillapítás alrendszer szerkezeti vázlata
1.54. A csillapítás alrendszer szerkezeti vázlata
1.55. A teljes gépkocsi lengéscsillapító rendszer differenciálegyenletének blokkdiagramja
1.56. A teljes rendszer blokkdiagramja az egyszerűsítés első lépése után
1.57. A teljes rendszer blokkdiagramja az egyszerűsítés második lépése után
1.58. A teljes rendszer blokkdiagramja az egyszerűsítés harmadik lépése után
1.59. A teljes rendszer analóg számítógépi blokkdiagramja
1.60. A gépkocsi lengéscsillapító rendszer szimulációjának eredménye
1.61. A modellezés folyamata a modellek csoportosításával
1.62. Az analóg számítógép programozói előlapjának kialakítása
1.63. Alulmintavételezés okozta látszólagos frekvencia jelensége
1.64. Aktuális jel frekvencia-komponensei
1.65. A jel frekvencia-komponensei és a látszólagos frekvenciák
1.66. A különböző mintavételi frekvenciák hatása
1.67. Valós pólus által szolgáltatott átmeneti függvény
1.68. A konjugált komplex póluspár origótól mért távolsága (R)
1.69. Folytonos rendszer számítási blokkdiagramja (LabVIEW környezetben)
1.70. A műveletvégző elem a számítási blokkdiagramban (végrehajtása a k·h időpontban történik)
1.71. A bemenő jeleket előjelesen összegző blokk (végrehajtása a k·h időpontban történik)
1.72. A bemenő jelet C konstanssal szorzó blokk (végrehajtása a k·h időpontban történik)
1.73. Az integrátor jelölése blokkdiagramban (végrehajtása a k·h időpontban történik)
1.74. Jelkésleltetés megvalósítása memória indexeléssel
1.75. Jelkésleltetés megvalósítása Padé-közelítéssel (n=5)
1.76. Jelkésleltetés megvalósítása Padé-közelítéssel (n=20)
1.77. Egy bemenetű,  egy kimenetű nemlineáris elem
1.78. Egy bemenetű,  több kimenetű nemlineáris elem (hiszterézises relé)
1.79. A Lookup Table 1D (egydimenziós táblázatos függvény) interpolációs metódusa
1.80. A Lookup Table 2D (kétdimenziós táblázatos függvény) interpolációs metódusa  - a bemenő jelek x(t) és y(t)
1.81. A mintapéldában szereplő differenciálegyenlet megoldásának számítási blokkdiagramja
1.82. A meredekség közelítése két oldalról
1.83. A derivált közelítése húrral
1.84. A derivált közelítése csak a „jelen” és a „múlt” értékeit felhasználva
1.85. A Bolzano tétel geometriai szemléltetése
1.86. A trapéz formula (másodrendű Adams-Moulton) grafikusan
1.87. A másodrendű Adams-Bashforth formula grafikusan
1.88. A harmadrendű Adams-Moulton formula grafikusan
1.89. A harmadrendű Adams-Bashforth formula grafikusan
1.90. A szimmetrikus formulák kiinduló felosztása
1.91. Az Adams-Bashforth formulák kiinduló felosztása
1.92. Az Adams-Moulton formulák kiinduló felosztása
1.93. Egytömegű csillapított rezgőrendszer
1.94. Másodrendű Adams-Bashforth változó lépésközzel
1.95. Kettős inga jelölésekkel
2.1. A folytonos átviteli függvény átalakítása impulzusátviteli függvénnyé
2.2. Az u(t) mintavételezése és tartása nulladrendű tartóval (ZOH)
2.3. Az impulzusátviteli függvény
2.4. Mintavételes bemeneti és kimeneti jelek értékei az előrelépéses differenciaegyenletben
2.5. Mintavételes bemeneti és kimeneti jelek értékei a visszalépéses differenciaegyenletnél
2.6. Műveletvégző elem a számítási blokkdiagramban (végrehajtása a k. pillanatban történik)
2.7. A bemenő jeleket előjelesen összegző blokk (végrehajtása a k·h időpontban történik.)
2.8. A bemenő jel szorzása C konstanssal (végrehajtása a k·h időpontban történik.)
2.9. Az x új [k] bemenő jel beléptetése az időbeni eltolás tömbbe(végrehajtása a k·h időpontban történik.)
2.10. A mintavételes késleltető elem blokkdiagramja (végrehajtása a k·h időpontban történik.)
2.11. Egy mintavételi időt késleltető elem szimbóluma
2.12. Impulzusátviteli függvény felbontása soros kapcsolású elemekre
2.13. A mintavételes elsőrendű tag számítási blokkdiagramja (1. verzió)
2.14. A mintavételes elsőrendű tag számítási blokkdiagramja (2. verzió)
2.15. Mintavételes másodrendű tag számítási blokkdiagramja
2.16. Az impulzusátviteli mintapélda megvalósítása soros kapcsolású elemekkel
2.17. A mintavételes impulzusátviteli függvény felbontása párhuzamos kapcsolású elemekre
2.18. Az impulzusátviteli mintapélda megvalósítása párhuzamos kapcsolású elemekkel
2.19. Az impulzusátviteli függvény megvalósítása közvetlen programozással
2.20. Impulzusátviteli mintapélda megvalósítása közvetlen programozással
2.21. Az impulzusátviteli mintapélda megvalósítása M programozással
2.22. Az impulzusátviteli függvény megvalósítása állapottér leírással
2.23. Az impulzusátviteli függvény számítása állapottér leírással (LabVIEW mintapélda)
2.24. Az impulzusátviteli függvény számítása állapottér leírással (LabVIEW mintapélda adatok)
2.25. Az impulzusátviteli függvény számítását megvalósító blokkdiagram állapottér leírással (LabVIEW mintapélda diagram panel)
2.26. A sys_poly_d impulzusátviteli függvény egységugrás bemenetre adott válaszfüggvénye
2.27. A sys_zpk_d impulzusátviteli függvény egységugrás bemenetre adott válaszfüggvénye
3.1. A szimulációs rendszer általános blokkdiagramja
3.2. A Task objektum tulajdonságai
3.3. A TaskList objektum felépítése és tulajdonságai
3.4. A sűrűségfüggvény diagramja és két pontja közé esés valószínűsége
3.5. A sűrűségfüggvény (kék) és eloszlásfüggvénye (piros)
3.6. Az egyenletes eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)
3.7. A normális eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)
3.8. A háromszög eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)
3.9. Az exponenciális eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)
3.10. Az Erlang eloszlás (k=2) sűrűségfüggvénye (kék)
3.11. Az Erlang eloszlás (k=3) sűrűségfüggvénye (kék)
3.12. Az Erlang eloszlás (k=5) sűrűségfüggvénye (kék)
3.13. Az empirikus eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)
3.14. A DES objektum tulajdonságai
3.15. Az ObjectList objektum felépítése és tulajdonságai
3.16. A Source objektum bemenő és kimenő paraméterei
3.17. A Sink objektum bemenő és kimenő paraméterei
3.18. A Buffer objektum bemenő és kimenő paraméterei
3.19. Source Objektum bemeneti paraméterei
3.20. Buffer Objektum bemeneti paraméterei
3.21. A Macine objektum bemenő és kimenő paraméterei
3.22. A Machine Objektum bemeneti paraméterei
3.23. Sink Objektum bemeneti paraméterei
3.24. M/M/1 rendszer modellje
3.25. M/M/1 rendszer blokkdiagramja
3.26. Az első mintapélda  (M/M/1) modell Diagram Panel-je
3.27. Az első mintapélda  (M/M/1) model Front Panel-je
3.28. A Source objektum kimeneti paraméterei
3.29. A Buffer objektum kimeneti paraméterei
3.30. Machine Objektum kimeneti paraméterei
3.31. A Sink objektum kimeneti paraméterei
3.32. A Join objektum bemenő és kimenő paraméterei
3.33. A Második mintapélda LabVIEW DES Diagram Panelje
3.34. A Selector objektum bemenő és kimenő paraméterei
3.35. A Harmadik mintapélda LabVIEW DES Diagram Panelje
3.36. A Pack objektum bemenő és kimenő paraméterei
3.37. Az UnPack objektum bemenő és kimenő paraméterei
3.38. A Negyedik mintapélda LabVIEW DES Diagram Panelje
3.39. Az ObjectList globalis változó értékei az M/M/1 modell futása után
3.40. A TaskList globalis változó értékei az M/M/1 modell futása után
4.1. Két bemenetű McCulloch–Pitts neuron
4.2. Két bemenetű AND (logikai és) McCulloch–Pitts neuronnal
4.3. Két bemenetű OR (logikai vagy) McCulloch–Pitts neuronnal
4.4. Két bemenetű XOR (kizáró vagy) egyetlen McCulloch–Pitts neuronnal
4.5. Két bemenetű AND NOT egyetlen McCulloch–Pitts neuronnal
4.6. Két bemenetű XOR (kizáró vagy) kétrétegű McCulloch–Pitts hálózattal
4.7. AND (logikai és) perceptron határvonal és súlyvektor
4.8. AND (logikai és) perceptron rosszul felvett határvonal és súlyvektor
4.9. AND (logikai és) perceptron rosszul felvett határvonal és súlyvektor
4.10. AND (logikai és) perceptron rosszul felvett határvonal és súlyvektor
4.11. AND (logikai és) perceptron helyesen felvett határvonal és súlyvektor
4.12. AND (logikai és) perceptron tanítása során felvett határvonalak és súlyvektorok
4.13. Aktiváló függvények
4.14. Előrecsatolt neurális hálózat két rejtett réteggel
4.15. Előrecsatolt neurális hálózat kimeneti hibája
4.16. Radiális bázisfüggvényes hálózat kimeneti hibája
4.17. Aktiváló függvények
4.18. Az ötnél kisebb valós számok halmaza
4.19. A valós számok halmazán értelmezett „körülbelül öt” fuzzy halmaz
4.20. Hagyományos és fuzzy halmaz
4.21. Hagyományos halmazműveletek
4.22. Fuzzy halmaz tartója, magja és α-vágata
4.23. Szokványos fuzzy halmazműveletek
4.24. Bemenet és kimenet fuzzy felosztása
4.25. Nyelvi változó fuzzy reprezentációja és nyelvi módosítók
4.26. Fuzzifikálás
4.27. Mamdani implikáció szabályonként
4.28. Larsen implikáció szabályonként
4.29. Mamdani max-min módszer
4.30. Larsen max-prod módszer
4.31. A kimeneti összetett fuzzy halmaz maximális értékével kapcsolatos deffuzifikációs módszerek
4.32. Néhány kimeneti összetett fuzzy halmaz alatti területtel kapcsolatos deffuzifikációs módszer
5.1. Tartományosztó keresés a Fibonacci sor alapján
5.2. Regula-falsi iteráció
5.3. Lagrange interpoláció
5.4. Pattern stratégia
5.5. Szimplex stratégia
5.6. Konjugált irányok stratégiája
5.7. A szimulált hűtés algoritmusa
5.8. Az Evolúciós algoritmus
5.9. Az Evolúciós Stratégia algoritmus
5.10. Genetikus algoritmus
5.11. A DNS felépítése
5.12. A genetikus algoritmus általános folyamatábrája
5.13. Rulett kerék szelekció
5.14. Egypontos keresztezés
5.15. Mutáció
5.16. A sémaelmélet
5.17. Bináris ábrázolásmód
5.18. Valós ábrázolásmód
5.19. Permutációs ábrázolásmód
5.20. A rulettkerék szelekció algoritmusa
5.21. A mutáció algoritmusa
5.22. Mutációs operátorok permutációs ábrázolásmód esetén
5.23. A bináris keresztezés algoritmusa
5.24. A maszkelőállító algoritmus (Egypontos keresztezés)
5.25. A maszkelőállító algoritmus (K pontos keresztezés)
5.26. Bináris keresztezés
5.27. A maszkelőállító algoritmus (Egyenletes keresztezés)
5.28. Sorrendi keresztezés
5.29. Részleges megfeleltetésű keresztezés
5.30. Sorrendi keresztezés
5.31. Élkeresztezés
5.32. Korlátozás a paraméterek transzformációjával
5.33. Egyszerű genetikus algoritmus
5.34. Niche-éket alkalmazó algoritmus
5.35. Fajkialakító algoritmus
5.36. Migrációs modell
5.37. Diffúziós modell
5.38. Az optimalizáló eljárások összehasonlítása
5.39. A szabályozási kör blokkdiagramja
5.40. Az alapjel, a szabályozott jellemző és a hibaintegrál
5.41. A keresés folyamatábrája
5.42. Az egyedek ábrázolása
5.43. A szabályozott szakasz LabVIEW programja
5.44. Korlátozott kimeneti függvény
5.45. A program felhasználói felülete
5.46. A kapott eredmények
5.47. Bode-diagram
5.48. Adat reprezentáció
5.49. A program felhasználói felülete
5.50. Az egyedek körvonal menti elhelyezés esetén
5.51. Az útvonalhosszak változása a generáció sorszámának függvényében
5.52. Az egyedek véletlenszerű elhelyezés esetén
5.53. Az útvonalhosszak változása a generáció sorszámának függvényében
5.54. Az utazó ügynök feladat megoldása 1000 kiindulási pont esetén
6.1. A PT1 egytárolós arányos tag átmeneti függvénye
6.2. A PT2 kéttárolós arányos tag átmeneti függvénye (két valós pólus)
6.3. A PT3 háromtárolós arányos tag átmeneti függvénye (három valós pólus)
6.4. A PT2 kéttárolós arányos tag átmeneti függvénye (két konjugált komplex pólus)
6.5. A PT1 egytárolós holtidős arányos tag átmeneti függvénye
6.6. Az I integráló tag átmeneti függvénye
6.7. Az IT1 integráló egytárolós tag átmeneti függvénye (egy valós pólus)
6.8. Az IT2 integráló kéttárolós tag átmeneti függvénye (két valós pólus)
6.9. Az IT3 integráló háromtárolós tag átmeneti függvénye (három valós pólus)
6.10. Az IT2 integráló kéttárolós tag átmeneti függvénye (két konjugált komplex pólus)
6.11. Az IT1 integráló tárolós holtidős tag átmeneti függvénye
6.12. A DT1 differenciáló egytárolós tag átmeneti függvénye (egy valós pólus)
6.13. A DT2 differenciáló kéttárolós tag átmeneti függvénye (két valós pólus)
6.14. A DT3 differenciáló háromtárolós tag átmeneti függvénye (három valós pólus)
6.15. A DT2 differenciáló kéttárolós tag átmeneti függvénye (két konjugált komplex pólus)
6.16. A DT1 differenciáló egytárolós holtidős tag átmeneti függvénye
6.17. Az ymért[k.h] - yidentifikált[k.h] funkcionál elemei
6.18. A PT3 háromtárolós arányos tag átmeneti függvénye (három valós pólus)
6.19. A PT3 típusú tag paraméter-keresése genetikus algoritmussal
6.20. A PT3 típusú tag paraméter-keresésének költségfüggvénye
7.1. Az ex-et kétféleképpen számoló LabVIEW program
7.2. A Bolzano-tétel grafikus szemléltetése
7.3. A Bolzano-tétel megfordításának grafikus szemléltetése
7.4. Az intervallum-felezés grafikus szemléltetése
7.5. A húrmódszer szemléltetése
7.6. 0<g’(x)<1
7.7. -1<g’(x)<0
7.8. g’(x)>1
7.9. g’(x)<-1
7.10. g’(x)=-1
7.11. Az érintő módszer
7.12. Az érintőmódszer, amikor kilépünk az intervallumból
7.13. Az érintőmódszer, amikor körbe járunk
7.14. A polinom gyökkereső program képernyőképe
7.15. Mechanizmus geometriája
A.1. A Rendszertervezés és Szimuláció (Control Design & Simulation) paletta
A.2. A Szabályozó tervezés (Control Design) paletta
A.3. A Szabályozó tervezés (Control Design) paletta
A.4. Modell létrehozása (Model Construction) alpaletta
A.5. Állapottér modell létrehozása (CD Construct State-Space Model.VI) program ikonja
A.6. Állapottér modell létrehozása (CD Construct State-Space Model.VI) program segítség (Help) információs ablaka
A.7. Az Állapottér modell numerikus vagy szimbolikus adatokkal történő feltöltése
A.8. Állapottér modell numerikus adatokkal történő feltöltése és az adatok kiírása blokk diagram
A.9. Az Állapottér modell numerikus adatokkal történő feltöltése, és az adatok megjelenítése a front panelen
A.10. A SISO (Single Input, Single Output) állapottér modell numerikus adatokkal történő feltöltése
A.11. A SIMO (Single Input, Multiple Output) állapottér modell numerikus adatokkal történő feltöltése
A.12. A MISO (Multiple Input, Single Output) állapottér modell numerikus adatokkal történő feltöltése
A.13. A MIMO (Multiple Input, Multiple Output) állapottér modell numerikus adatokkal történő feltöltése
A.14. Átviteli függvény modell létrehozása (CD Construct Transfer Function Model.VI) program ikonja
A.15. Átviteli függvény modell létrehozása (CD Construct Transfer Function Model.VI) program segítség (Help) információs ablaka
A.16. Az Átviteli függvény modell numerikus adatokkal történő feltöltése és az adatok kiírása blokkdiagram
A.17. Az Átviteli függvény modell numerikus adatokkal történő feltöltése és az adatok kiírása front panel
A.18. Az Átviteli függvény modell szimbolikus adatokkal történő feltöltése és az adatok kiírása blokkdiagram
A.19. Az Átviteli függvény modell szimbolikus adatokkal történő feltöltése és az adatok kiírása front panel
A.20. Az egytárolós tag modelljének létrehozása (CD Construct Special TF Model.VI) program ikonja
A.21. Az egytárolós tag modelljének létrehozása (CD Construct Special TF Model.VI) program segítség (Help) információs ablaka
A.22. A másodrendű tag modelljének létrehozása (CD Construct Special TF Model.VI) program ikonja
A.23. A másodrendű tag modelljének létrehozása (CD Construct Special TF Model.VI) program segítség (Help) információs ablaka
A.24. Az időbeni késleltetést megvalósító tag modelljének létrehozása (CD Construct Special TF Model.VI) program ikonja
A.25. Az időbeni késleltetést megvalósító tag modelljének létrehozása (CD Construct Special TF Model.VI) program segítség (Help) információs ablaka
A.26. A Modell-információ (Model Information) alpaletta
A.27. A Modell-átalakítás (Model Conversion) alpaletta
A.28. A Modell átalakítása állapottér modell alakra (CD Convert to State-Space Model.vi) program ikonja
A.29. A Modell átalakítása állapottér modell alakra (CD Convert to State-Space Model.vi) program segítség (Help) információs ablaka
A.30. Átviteli függvény alakból állapottér modell létrehozása blokkdiagram
A.31. Átviteli függvény alakból állapottér modell létrehozása front panel
A.32. Modell átalakítás átviteli függvény alakra (CD Convert to Transfer Function Model.vi) program ikonja
A.33. Modell átalakítás átviteli függvény alakra (CD Convert to Transfer Function Model.vi) program segítség (Help) információs ablaka
A.34. Állapottér modell alakból átviteli függvény létrehozása blokkdiagram
A.35. Állapottér modell alakból átviteli függvény létrehozása front panel
A.36. Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal (CD Convert Continuous to Discrete.vi) program ikonja
A.37. Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal (CD Convert Continuous to Discrete.vi) program segítség (Help) információs ablaka
A.38. Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal blokkdiagram
A.39. Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal front panel
A.40. Modell összekapcsolás (Model Interconnection) alpaletta
A.41. Modellek párhuzamos kapcsolása (CD Parallel.vi) program ikonja
A.42. Modellek párhuzamos kapcsolása (CD Parallel.vi) program segítség (Help) információs ablaka
A.43. Modellek párhuzamos kapcsolása blokkdiagram
A.44. Modellek párhuzamos kapcsolása front panel
A.45. Modellek soros kapcsolása (CD Series.vi) program ikonja
A.46. Modellek soros kapcsolása (CD Series.vi) program segítség (Help) információs ablaka
A.47. Modellek soros kapcsolása blokkdiagram
A.48. Modellek soros kapcsolása front panel
A.49. Modellek visszacsatolt összekapcsolása (CD Feedback.vi) program ikonja
A.50. Modellek visszacsatolt összekapcsolása (CD Feedback.vi) program segítség (Help) információs ablaka
A.51. Modellek visszacsatolt összekapcsolása blokkdiagram
A.52. Modellek visszacsatolt összekapcsolása front panel
A.53. A Rendszertervezés (Control Design) paletta
A.54. Időtartománybeli válaszfüggvény (Time Response) alpaletta
A.55. Az egységugrás bemenetre adott válaszfüggvény (CD Step Response.vi) program ikonja
A.56. Az egységugrás bemenetre adott válaszfüggvény (CD Step Response.vi) program segítség (Help) információs ablaka
A.57. Az egységugrás bemenetre adott válaszfüggvény (időfüggvény) meghatározása blokkdiagram
A.58. Egységugrás bemenetre adott válaszfüggvény (időfüggvény) meghatározása front panel
A.59. Az egységimpulzus bemenetre adott válaszfüggvény (CD Impulse Response.vi) program ikonja
A.60. Az egységimpulzus bemenetre adott válaszfüggvény (CD Impulse Response.vi) program segítség (Help) információs ablaka
A.61. Egységimpulzus bemenetre adott válaszfüggvény (időfüggvény) meghatározása blokkdiagram
A.62. Egységimpulzus bemenetre adott válaszfüggvény (időfüggvény) meghatározása front panel
A.63. A kezdeti értékkel rendelkező rendszer válaszfüggvényének (CD Initial Response.vi) program ikonja
A.64. A kezdeti értékkel rendelkező rendszer válaszfüggvényének (CD Initial Response.vi) program segítség (Help) információs ablaka
A.65. A kezdeti értékkel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása blokkdiagram
A.66. A kezdeti értékkel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása front panel
A.67. Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének meghatározása (CD Linear Simulation.vi) program ikonja
A.68. Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének meghatározása (CD Linear Simulation.vi) program segítség (Help) információs ablaka
A.69. Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása blokkdiagram
A.70. Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása front panel
A.71. Modell létrehozása (Model Construction) alpaletta
A.72. A Bode frekvenciafüggvény (CD Bode.vi) program ikonja
A.73. A Bode frekvenciafüggvény (CD Bode.vi) program segítség (Help) információs ablaka
A.74. A Bode frekvenciafüggvény meghatározása blokkdiagram
A.75. A Bode frekvenciafüggvény meghatározása front panel
A.76. A Nyquist frekvenciafüggvény (CD Nyquist.vi) program ikonja
A.77. A Nyquist frekvenciafüggvény (CD Nyquist.vi) program segítség (Help) információs ablaka
A.78. A Nyquist frekvenciafüggvény meghatározása blokkdiagram
A.79. A Nyquist frekvenciafüggvény meghatározása front panel
A.80. A Bode frekvenciafüggvényének erősítés és fázis tartaléka (CD Gain and Phase Margin.vi) program ikonja
A.81. Bode frekvenciafüggvényének erősítés és fázis tartaléka (CD Gain and Phase Margin.vi) program segítség (Help) információs ablaka
A.82. A Bode frekvenciafüggvényének erősítés és fázistartalékának meghatározása blokkdiagram
A.83. A Bode frekvenciafüggvényének erősítés és fázistartalékának meghatározása front panel
A.84. A Modell dinamikus tulajdonságai (Dynamic Characteristic) alpaletta
A.85. A rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározását végző (CD Pole-Zero Map.vi) program ikonja
A.86. A rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározását végző (CD Pole-Zero Map.vi) program segítség (Help) információs ablaka
A.87. A rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározása blokkdiagram
A.88. A rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározása front panel
A.89. A rendszermodell állandósult állapotban megvalósuló erősítésének értékét meghatározó (CD Pole-Zero Map.vi) program ikonja
A.90. A rendszermodell állandósult állapotban megvalósuló erősítésének értékét meghatározó (CD Pole-Zero Map.vi) program segítség (Help) információs ablaka
A.91. A rendszermodell állandósult állapotban megvalósuló erősítés értékének meghatározása blokkdiagram
A.92. A rendszermodell állandósult állapotban megvalósuló erősítés értékének meghatározása front panel
B.1. A Rendszertervezés és Szimuláció (Control Design & Simulation) paletta
B.2. A Szimuláció (Simulation) paletta
B.3. Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra a Szimuláció (Simulation) palettán
B.4. Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra a diagram panelen
B.5. Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra kiszolgálását biztosító ablak (szimulációs paraméterek) a diagram panelon
B.6. Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra kiszolgálását biztosító ablak (időzítési paraméterek) a diagram panelon
B.7. A Szimuláció (Simulation) paletta alpalettái
B.8. A Jelgenerátorok (Signal generation) paletta elemei
B.9. Az Ugrás függvény (Step Signal) paraméter-beállító ablaka
B.10. Az Ugrás függvény (Step Signal) ikonjának megjelenési formái
B.11. A Pulse Signal (Négyszögjel függvény) paraméter-beállító ablaka
B.12. A Ramp Signal (Sebességugrás függvény) paraméter-beállító ablaka
B.13. A Signal Generator (Jelgenerátor) paraméter-beállító ablaka
B.14. A Chirp Signal (Végigsöprő szinusz jelgenerátor) paraméter-beállító ablaka
B.15. A Jelaritmetika (Signal Arithmetics) paletta elemei
B.16. A Gain (Erősítés függvény) paraméter-beállító ablaka
B.17. A Summation (Összegzés függvény) paraméter-beállító ablakai (különböző ikon megjelenési formákhoz)
B.18. A Multiplication (Szorzás függvény) paraméter-beállító ablakai (különböző ikon megjelenési formákhoz)
B.19. A Jelmegjelenítési elemek (Graph Utilities) paletta elemei
B.20. A Buffer XY Graph (XY grafikon adatainak tárolása függvény) blokkbemeneti adatstruktúrája
B.21. A Buffer XY Graph (az XY grafikon adatainak tárolása függvény) blokk paraméter-beállító ablaka
B.22. A Folytonos lineáris rendszerek (Continuous Linear Systems) paletta elemei
B.23. Az Integrator (Idő szerinti integrálás függvény) paraméter-beállító ablaka
B.24. Az Integrator (Idő szerinti integrálás függvény) limit type (korlátozás típusa) paraméterének értékei
B.25. Az Integrator (Idő szerinti integrálás függvény) reset type (újraindítás típusa) paraméterének értékei
B.26. A Transport Delay (Jelkésleltetési függvény) paraméter-beállító ablaka
B.27. A State Space (Állapottér modell) paraméter-beállító ablaka
B.28. A MIMO State Space (Állapottér modell) paraméter-beállító ablaka
B.29. A State Space (Állapottér modell) kezdeti állapotainak beállítása
B.30. A Transfer Function (Átviteli függvény modell) paraméter-beállító ablaka
B.31. A MIMO Transfer Function Matrix (Átviteli függvény modell mátrix) paraméter-beállító ablaka
B.32. A Folytonos nemlineáris rendszerek (Nonlinear Systems) paletta elemei
B.33. A Dead Zone (Kotyogás függvény) paraméter-beállító ablaka
B.34. A Friction (Súrlódás függvény) paraméter-beállító ablaka
B.35. A Quantizer (Érték-diszkretizáló függvény) paraméter-beállító ablaka
B.36. A Rate Limiter (Sebességkorlát függvény) paraméter-beállító ablaka
B.37. A Relay (Relé függvény) paraméter-beállító ablaka
B.38. A Saturation (Telítődés függvény) paraméter-beállító ablaka
B.39. A Switch (Kapcsoló függvény) paraméter-beállító ablaka
B.40. A Mintavételes lineáris rendszerek (Discrete Linear Systems) paletta elemei
B.41. A Discrete Unit Delay (Mintavételes egységnyi késleltetés függvény) paraméter-beállító ablaka
B.42. A Discrete Zero-Order Hold (Mintavételes nulladrendű tartó függvény) paraméter-beállító ablaka
B.43. A Discrete First-Order Hold (Mintavételes elsőrendű tartó függvény) paraméter-beállító ablaka
B.44. Discrete State-Space (Mintavételes állapottér modell) paraméter-beállító ablaka
B.45. MIMO Discrete State-Space (Mintavételes állapottér modell) paraméter-beállító ablaka
B.46. Discrete State-Space (Mintavételes állapottér modell) kezdeti állapotainak beállítása
B.47. Discrete Transfer Function (Mintavételes impulzus-átviteli függvény modell) paraméter-beállító ablaka
B.48. MIMO Transfer Function Matrix (Átviteli függvény modell mátrix) paraméter-beállító ablaka
B.49. A Táblázattal megadott szimulációs paraméterek (Lookup Tables) paletta elemei
B.50. A Lookup Table 1D (Egydimenziós táblázati függvény) interpolációs metódusa
B.51. A Lookup Table 1D (Egydimenziós táblázati függvény) paraméter-beállító ablaka
B.52. A Lookup Table 1D (Egydimenziós táblázati függvény) Method (Függvényközelítési eljárás) paraméter-beállító legördülő menüje
B.53. A Lookup Table 1D (Egydimenziós táblázati függvény) Method paraméter = Interpolate (közelítés)
B.54. A Lookup Table 1D (Egydimenziós táblázati függvény) Method paraméter = Below (alulról közelítés)
B.55. A Lookup Table 2D (kétdimenziós táblázati függvény) interpolációs metódusa a bemenő jelek x(t) és y(t)
B.56. A Lookup Table 2D (Kétdimenziós táblázati függvény) paraméter-beállító ablaka
B.57. A Lookup Table 2D (Kétdimenziós táblázati függvény) Method (Függvényközelítési eljárás) paraméter-beállító legördülő menüje
B.58. A Lookup Table 2D (Kétdimenziós táblázati függvény) Method paraméter = Interpolate (közelítés)
B.59. A Lookup Table 2D (Kétdimenziós táblázati függvény) Method paraméter = Nearest (legközelebbi)
B.60. Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (soros kapcsolás)
B.61. Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (párhuzamos kapcsolás)
B.62. Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (negatív visszacsatolásos kapcsolás)
B.63. Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek paraméterének kereten kívüli megadása
B.64. A Szabályozó tervezés (Control Design) és az Irányítás és szimulációs hurokban (Control & Simulation Loop) programok közötti modellkonverziót megvalósító VI-ok
B.65. PID szabályzó és szakasz programja
B.66. PID szabályzó alprogram blokkjainak kijelölése
B.67. Szimulációs alprogram létrehozása a kijelölt blokkokból és összekötésekből
B.68. A létrehozott új szimulációs alprogram (Subsystem1)
B.69. A létrehozott új szimulációs alprogram (Subsystem1) kiszolgáló ablaka
B.70. A létrehozott új szimulációs alprogram (Subsystem1) front panelja
B.71. A létrehozott új szimulációs alprogram (Subsystem1) diagram panelja
B.72. A szimulációs mintapélda (PID szabályzó) blokkjainak összekapcsolása
B.73. A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei
B.74. A Szimulációs keret paraméterablakának Timing Parameters (Időzítési paraméterek) fül beállított értékei, nem időszinkronizált futásnál
B.75. A Szimulációs keret paraméterablakának Timing Parameters (Időzítési paraméterek) fül beállított értékei, időszinkronizált futásnál
B.76. A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei, időfüggetlen futtatás
B.77. A Szimulációs keret paraméterablakának Timing Parameters fül paraméterei, időfüggetlen futtatás
B.78. A mintapélda front panelje a program futása után, időfüggetlen futtatás
B.79. A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei, időszinkronizált futtatás
B.80. A Szimulációs keret paraméterablakának Timing Parameters (Időzítési paraméterek) fül beállított értékei, időszinkronizált futtatás
B.81. A mintapélda front panelje a program futása után, időszinkronizált futtatás
C.1. A LabVIEW képernyője az indítás után
C.2. A MathScript program elindítása
C.3. A MathScript program indulási képernyője
C.4. A MathScript programszerkesztő ablak (Script)
C.5. A MathScript programváltozók ablaka (Variables)
C.6. A MathScript program korábbi utasítások ablaka (HIstory)
C.7. A MathScript program Segítség ablaka
C.8. Saját függvény létrehozása és ellenőrzése MathScript-ben
C.9. Saját függvény működésének ellenőrzése
C.10. Script működésének ellenőrzése
C.11. Új script létrehozása a File menüből
C.12. Az új script ablaka a képernyőn
C.13. A plot(x,y) függvény alkalmazásának eredménye
C.14. A mesh(X,Y,f) függvény alkalmazásának eredménye
C.15. Bode diagram (amplitúdó, fázis)
C.16. Amplitúdó- és fázistartatalék számítások
C.17. Bode diagram az amplitúdó- és fázistartalékkal
C.18. Egységugrás bemenetre adott válaszfüggvény
C.19. A MathScript blokk a LabVIEW programban
C.20. A MathScript blokk elérhetősége a LabVIEW programban (1)
C.21. A MathScript blokk elérhetősége a LabVIEW programban (2)
C.22. A MathScript segítségnyújtó (help) ablaka
C.23. MathScript mintapéldák
C.24. MathScript alkalmazási mintapélda (diagram panel)
C.25. MathScript ”zeta.m” állomány tartalma
C.26. MathScript alkalmazási mintapélda (front panel)
C.27. Windows DLL függvényeinekhívása MathScript-ben
C.28. LabVIEW MathScript fájl létrehozása (az eredmény)
C.29. LabVIEW MathScript fájl létrehozása (első lépés)
C.30. LabVIEW MathScript blokk kimeneti változó létrehozása
C.31. A program eredménye
C.32. Az x vektor „grafikus” ábrázolása
A táblázatok listája
1.1. A bemeneti / kimeneti jel és deriváltjaik frekvenciaátviteli függvényei
1.2. Az állapotváltozók és a deriváltjaik időfüggvényei
1.3. Az állapotváltozók és a deriváltjaik időfüggvényei
1.4. Az állapotváltozók és idő szerinti deriváltjaik Laplace-függvényei
1.5. Számítási algoritmus a mintapéldához differenciálással
1.6. Számítási eredmények a mintapéldához differenciálással
1.7. Számítási algoritmus a mintapélda megoldásához differenciálással
1.8. Számítási algoritmus a mintapélda megoldásához integrálással
1.9. Rendszer-transzformációs utasítások
1.10. Analóg számítógépek műveleti egységei
1.11. A Padé-közelítés együtthatói
1.12. A mintapélda műveleteinek sorrendje definiáláskor
1.13. A mintapélda műveleteinek (egyik) kiszámíthatósági sorrendje
1.14. Harmadrendű integrálási formák összehasonlítása
1.15. Tartály feladat megoldásának lépései (Runge-Kutta módszer)
1.16. Tartály feladat megoldásának eredményei (Runge-Kutta módszer)
1.17. Rezgő rendszer megoldásának lépései (Runge-Kutta módszerrel)
1.18. Rezgő rendszer megoldásának eredményei (Runge-Kutta módszerrel)
1.19. Tartályos feladat megoldása (Adams-Bashforth integrátorokkal)
1.20. Tartályos feladat eredményei (Adams-Bashforth integrátorokkal)
1.21. Rezgő rendszer megoldása (Adams-Bashforth integrátorokkal)
1.22. Rezgő rendszer megoldása (Adams-Bashforth integrátorokkal)
1.23. Rezgő rendszer megoldása (Adams-Bashforth integrátorokkal)
1.24. Tartályos feladat megoldása (Adams-Moulton integrátorokkal)
1.25. Tartályos feladat eredményei (Adams-Moulton integrátorokkal)
1.26. Rezgő rendszer megoldása (Adams-Moulton integrátorokkal)
1.27. Tartályos feladat megoldása (másodrendű prediktor-korrektor módszerrel)
1.28. Tartályos feladat megoldása prediktorral (másodrendű prediktor-korrektor módszerrel)
1.29. Tartályos feladat megoldása korrektorral (másodrendű prediktor-korrektor módszerrel)
1.30. Rezgő rendszer megoldása (másodrendű prediktor-korrektor módszerrel)
1.31. Rezgő rendszer eedményei (másodrendű prediktor-korrektor módszerrel)
1.32. Másodrendű rendszerek megoldása vegyes módszerrel
1.33. Másodrendű rendszerek eredményei vegyes módszerrel
2.1. A Z-transzformáció tulajdonságainak összefoglalása
2.2. Időben folytonos jelek Laplace- és Z- transzformáltja
2.3. Folytonos rendszerek impulzusátviteli függvényei
2.4. G(z -1 ) számláló együtthatói G(z) számláló együtthatóiból
2.5. G(z -1 ) nevező együtthatói G(z) nevező együtthatóiból
2.6. G(z) számláló együtthatói G(z -1 ) számláló együtthatóiból
2.7. G(z) nevező együtthatói G(z -1 ) nevező együtthatóiból
3.1. A szimulációs rendszer eljárásai
4.1. AND (logikai és) tanító adatai
4.2. AND w = (1,5; 0,5) és b=-0,75 esetén
4.3. AND w = (0,5; 0,5) súlytényezőkkel és a b=0,75 esetén
4.4. AND w = (1,5; 1,5) súlytényezőkkel és a b=-0,75 esetén
4.5. AND w = (1,5; 0,5) súlytényezőkkel és a b=-1,75 esetén
4.6. Szigmoid függvények
4.7. Radiális bázisfüggvény típusok
4.8. Negálás, diszjunkció és konjunkció p és q logikai változókra
4.9. Duális t-norma párok
4.10. Implikáció p és q logikai változókra
5.1. PI szabályozó behangolása - bementi adatok
5.2. Mutáció hatásvizsgálata  - bementi adatok
5.3. Mutáció hatásvizsgálata - eredmények
5.4. Mutáció hatásvizsgálat eredmények
5.5. A program bementi adatai
7.1. Összegzés alternáló sor esetén
7.2. ex közelítése Taylor sorral, kétféle számítási módszerrel
7.3. A numerikus instabilitás szemléltetése rekurzív sorral
7.4. Intervallum-felezés képletekkel táblázatkezelőben
7.5. Intervallum-felezés értékekkel táblázatkezelőben
7.6. Húrmódszer képletekkel táblázatkezelőben
7.7. Húrmódszer értékekkel táblázatkezelőben
7.8. Divergens iteráció képletekkel táblázatkezelőben
7.9. Divergens iteráció értékekkel táblázatkezelőben
7.10. Konvergensé tett iteráció képletekkel táblázatkezelőben
7.11. Konvergensé tett iteráció értékekkel táblázatkezelőben
7.12. Az érintőmódszer képletekkel táblázatkezelőben
7.13. Az érintőmódszer értékekkel táblázatkezelőben
7.14. Az érintőmódszer többszörös gyök esetén lassabban konvergál
7.15. Egy polinom összes gyökének megkeresésére szolgáló algoritmus
7.16. Nemlineáris egyenletrendszer megoldása iterációs módszerrel, amikor divergens a közelítés
7.17. Nemlineáris egyenletrendszer megoldása javított konvergenciájú iterációval
7.18. Nemlineáris egyenletrendszer megoldása Newton-Raphson módszerrel
B.1. Szimulációs paraméterek (Simulation Parameters)
B.2. Időzítési paraméterek (Timing Parameters)
C.1. Gyakran használt utasítások
C.2. MathScript CDT függvényosztályok
C.3. MathScript / construct függvények
C.4. MathScript / connect függvények
C.5. MathScript / convert függvények
C.6. MathScript / timeresp függvények

1. fejezet - Időben folytonos működésű rendszerek

Tartalom
1.1. Rendszerleírási módok
1.1.1. Rendszer leírás időtartományban
1.1.1.1. Differenciálegyenlet (lineáris, állandó együtthatós)
1.1.1.2. Az állapottér-leírási mód
1.1.1.2.1. Általános, lineáris MIMO állapottér modell
1.1.1.2.2. Kanonikus alakú állapottér modell előállítása
1.1.1.2.3. P vagy I jellegű, többtárolós SISO rendszer
1.1.2. Frekvenciatartomány
1.1.2.1. Exponenciális alakú frekvenciaátviteli függvény
1.1.2.2. Polinomiális alakú frekvenciaátviteli függvény
1.1.2.3. Zérus–pólus–erősítés alakú frekvenciaátviteli függvény
1.1.3. Rendszerek leírása Laplace tartományban
1.1.3.1. Polinomiális átviteli függvény
1.1.3.2. Zérus-pólus-erősítés alakú átviteli függvény
1.1.3.3. Differenciálegyenlet-megoldás Laplace-operátoros tartományban
1.1.3.4. Az állapottér modell Laplace-operátoros tartományban
1.1.4. Jellegzetes állapottér modell struktúrák
1.1.4.1. Fázisváltozós alak
1.1.4.2. Az irányíthatósági normálalak
1.1.4.3. A megfigyelhetőségi normálalak
1.1.4.4. A modális alak
1.2. Alapelemek (objektumok, blokkok, műveletek)
1.2.1. Műveleti erősítő
1.2.2. Negatív visszacsatolású műveleti erősítő
1.2.3. Jelek összeadása
1.2.4. Időfüggő jel szorzása konstanssal
1.2.5. Jel integrálása idő szerint
1.2.6. Jelkésleltetés (Padé-közelítés)
1.2.7. Nemlineáris elemek
1.3. Alapelemek összekapcsolása
1.3.1. Integrálást vagy differenciálást alkalmazunk a differenciálegyenlet megoldásához
1.3.1.1. Hibával terhelt értékű függvények esete
1.3.1.2. Numerikus hibák
1.3.1.3. Összehasonlító mintapélda megoldása differenciáló és integráló algoritmussal
1.3.2. Átviteli függvények számítási blokkdiagramjának meghatározása
1.3.2.1. Arányos típusú átviteli függvények számítási blokkdiagramjának meghatározása PT1, PT2
1.3.2.2. Integráló típusú átviteli függvények számítási blokkdiagramjának meghatározása IT1, IT2
1.3.2.3. Differenciáló típusú átviteli függvények számítási blokkdiagramjának meghatározása DT1, DT2
1.3.2.4. Előretartó-késleltető tag (Lead–lag compensator) számítási blokkdiagramjának meghatározása
1.3.3. Alapelemek különböző összekapcsolásából keletkező részrendszerek
1.3.3.1. Alapelemek összekapcsolásánál alkalmazott műveletek
1.3.3.2. Alapelemek soros összekapcsolásából keletkező részrendszer
1.3.3.3. Alapelemek párhuzamos összekapcsolásából keletkező részrendszer
1.3.3.4. Alapelemek negatív visszacsatolt összekapcsolásából keletkező részrendszer
1.4. Átviteli függvény számítási blokkdiagramjának megvalósítása
1.4.1. Átviteli függvény számítási blokkdiagramja soros kapcsolású részelemekkel
1.4.2. Átviteli függvény számítási blokkdiagramja párhuzamos kapcsolású részelemekkel
1.4.3. Átviteli függvény megvalósítása közvetlen programozással
1.4.4. Átviteli függvény megvalósítása M-programozással
1.4.5. Állapottér módszer számítási blokkdiagramjának meghatározása SISO rendszereknél
1.4.6. Állapottér-leírás, állapottér-reprezentációk kapcsolata
1.5. Rendszer-transzformációk
1.5.1. Átviteli függvény (tf) transzformációk {ss2tf,  zp2tf}
1.5.1.1. Átviteli függvény állandósult állapotbeli erősítése
1.5.1.2. zp2tf: zérus-pólus-erősítés alakú átviteli függvény alakból transzformáció polinomiális alakú átviteli függvény alakba
1.5.1.3. ss2tf: transzformáció állapottér modell alakból, polinomiális alakú átviteli függvény alakba
1.5.2. Zérus-pólus-erősítés függvény (zp) transzformációk, {tf2zp,  ss2zp}
1.5.2.1. Zérus-pólus függvény erősítése (K)
1.5.2.2. tf2zp: transzfomáció polinomiális alakú átviteli függvényből zérus-pólus-erősítés alakú átviteli függvénybe
1.5.2.3. ss2zp: átalakítás állapottér modellből zérus-pólus-erősítés alakú átviteli függvénybe
1.5.3. Állapottér (ss) transzformációk, {tf2ss,  zp2ss}
1.5.3.1. tf2ss: transzformáció polinomiális alakú átviteli függvényből állapottér modellbe
1.5.3.2. zp2ss: átalakítás zérus-pólus-erősítés alakú átviteli függvényből állapottér modellbe
1.6. Több bemenetű és több kimenetű rendszerek (MIMO) leírása
1.6.1. Átviteli mátrix {G(s)}
1.6.1.1. A SISO rendszer
1.6.1.2. A MISO rendszer
1.6.1.3. A SIMO rendszer
1.6.1.4. A MIMO rendszer
1.6.2. Az állapottér módszer
1.7. Folytonos rendszerek megvalósítása műveleti erősítő áramkörökkel
1.7.1. Átviteli függvény megvalósítása
1.7.2. Analóg számítógép
1.7.2.1. Az elektronikus, analóg számítógépek műveleti egységei
1.7.2.2. Az analóg számítógép szerkezeti felépítése
1.7.2.3. Az analóg számítógép programozása
1.7.2.4. Amplitúdó–léptékezés
1.7.2.5. Időléptékezés
1.7.2.6. Valós idejű futás (a műveleti erősítő frekvenciaátviteli korlátai)
1.8. Folytonos rendszerek szimulációja digitális számítógéppel
1.8.1. Folytonos bemeneti jelek és rendszerek mintavételezése
1.8.1.1. A folytonos bemeneti jelek mintavételezése
1.8.1.2. Folytonos rendszerek mintavételezése
1.8.2. Rendszerek digitális számítógépen történő futtatása
1.8.3. Az alapelemek megvalósítása
1.8.3.1. Jelkomponensekkel végzett aritmetikai műveletek
1.8.3.2. A jel integrálása idő szerint az adott mintavételi időpontban
1.8.3.3. Jelkésleltetés
1.8.3.4. Nemlineáris elemek
1.8.4. Alapelemek összekapcsolása
1.9. Numerikus differenciálás és integrálás
1.9.1. Numerikus differenciálás
1.9.1.1. Idő szerinti differenciálás szemléletes megközelítése
1.9.1.2. Alapgondolat Taylor sor alkalmazásához
1.9.1.3. Általános, hibatagot szolgáltató eljárás
1.9.2. Numerikus integrálás
1.9.2.1. Szemléletes megközelítés
1.9.2.2. Alapgondolat Taylor sor alkalmazására
1.9.2.3. Általános, hibatagot is szolgáltató eljárások - szimmetrikus formulák
1.9.2.3.1. Trapéz formula
1.9.2.3.2. Simpson formula
1.9.2.3.3. Newton-féle 3/8-os formula
1.9.2.3.4. Szimmetrikus 4-lépéses formula
1.9.2.4. Általános, hibatagot is szolgáltató eljárások - Adams-Bashforth formulák
1.9.2.4.1. Elsőrendű Adams-Bashforth integrátor
1.9.2.4.2. Másodrendű Adams-Bashforth integrátor
1.9.2.4.3. Harmadrendű Adams-Bashforth integrátor
1.9.2.4.4. Negyedrendű Adams-Bashforth integrátor
1.9.2.5. Általános, hibatagot is szolgáltató eljárások - Adams-Moulton formulák
1.9.2.5.1. Elsőrendű Adams-Moulton integrátor
1.9.2.5.2. Másodrendű Adams-Moulton integrátor
1.9.2.5.3. Harmadrendű Adams-Moulton integrátor
1.9.2.5.4. Negyedrendű Adams-Moulton integrátor
1.9.2.6. Runge-Kutta módszer
1.9.2.6.1. Elsőrendű Runge‑Kutta
1.9.2.6.2. Másodrendű Runge‑Kutta
1.9.2.6.3. Harmadrendű Runge‑Kutta
1.9.2.6.4. Negyedrendű Runge‑Kutta
1.9.2.6.5. Runge‑Kutta módszer általánosítása
1.9.2.7. Az integrálformulák csoportosítása
1.10. Differenciálegyenletek numerikus megoldása
1.10.1. Megoldás negyedrendű Runge-Kutta módszerrel
1.10.1.1. Tartályos feladat megoldása (Runge-Kutta módszerrel)
1.10.1.2. Rezgő rendszer megoldása(Runge-Kutta módszerrel)
1.10.2. Megoldás másodrendű Adams-Bashforth integrátorokkal
1.10.2.1. Tartályos feladat megoldása (Adams-Bashforth integrátorokkal)
1.10.2.2. Rezgő rendszer megoldása (Adams-Bashforth integrátorokkal)
1.10.3. Megoldás másodrendű Adams-Moulton integrátorokkal
1.10.3.1. Tartályos feladat megoldása (Adams-Moulton integrátorokkal)
1.10.3.2. Rezgő rendszer megoldása (Adams-Moulton integrátorokkal)
1.10.4. Megoldás másodrendű prediktor – korrektor módszerrel
1.10.4.1. Tartályos feladat megoldása (másodrendű prediktor – korrektor módszerrel)
1.10.4.2. Rezgő rendszer megoldása (másodrendű prediktor – korrektor módszerrel)
1.10.5. Megoldás másodrendű vegyes módszerrel
1.10.6. Hibabecslés módszerei
1.10.7. Változó lépésköz alkalmazhatósága
1.10.8. A különböző módszerek összehasonlítása
1.11. Frekvenciatartománybeli vizsgálatok
1.11.1. A Bode-diagram
1.11.1.1. A közelítő Bode–diagram
1.11.1.1.1. Nulladrendű számláló, nulladrendű nevező
1.11.1.1.2. Nulladrendű számláló és egy zérusértékű pólus
1.11.1.1.3. Egy nullaértékű zérus és nulladrendű nevező
1.11.1.1.4. Nulladrendű számláló és egy pólus
1.11.1.1.5. Egy zérus és nulladrendű nevező
1.11.1.1.6. Nulladrendű számláló és két pólus
1.11.1.1.7. Két zérus és nulladrendű nevező
1.11.2. A Nyquist diagram
1.11.3. A Nichols–diagram
1.11.4. A pólus–zérus diagram
1.11.5. A gyökhelygörbe

1.1. Rendszerleírási módok

A modellek egyik legegyszerűbb csoportosítása a fizikai és matematikai modellek megkülönböztetése. A fizikai modell alatt a rendszer valamiféle fizikai megvalósítását értjük, matematikai modellnek pedig a matematika eszközkészletével – általában egyenletekkel vagy egyenletrendszerekkel – megadott leképezést nevezzük.

Az alábbiakban egy bemenetű, egy kimenetű rendszerekkel foglalkozunk, a több bemenetű, több kimenetű rendszerekről később esik szó. Az angol szakirodalomban elterjedt SISO (Single Input Single Output) rövidítéssel szokás ezekre a rendszerekre hivatkozni, ahogyan ezt a továbbiakban tesszük.

A teljesség kedvéért az összes vonatkozó rövidítést felsoroljuk:

  • egy bemenetű, egy kimenetű rendszer: SISO (Single Input Single Output)

  • több bemenetű, több kimenetű rendszer: MIMO (Multiple Input Multiple Output)

  • egy bemenetű, több kimenetű rendszer: SIMO (Single Input Multiple Output)

  • több bemenetű, egy kimenetű rendszer:MISO (Multiple Input Single Output)

A bemenetet u, a kimenetet y betűvel jelöljük. Attól függően, hogy milyen tartományban (idő, frekvencia vagy Laplace-operátoros), vagyis milyen független változó szerint végezzük vizsgálatainkat, kisbetűs és nagybetűs jelöléssel egyaránt találkozunk. Amennyiben a jel egykomponensű, skalárként adjuk meg, a több be- és/vagy kimenetű rendszereknél viszont vektorként kezeljük ezeket a jeleket.

A matematikai modelleket több szempont szerint csoportosíthatjuk, ezek közül néhány:

  • statikus (más szóval stacionárius, vagyis időben állandósult viselkedésű) és dinamikus (időben változó),

  • lineáris és nemlineáris,

  • koncentrált paraméterű és elosztott paraméterű, valamint a két véglet közötti, összekapcsolt, koncentrált paraméterű részmodellekből álló, feldaraboltnak nevezhető modell,

  • determinisztikus és sztochasztikus,

  • folytonos és nem folytonos (az időtől függő jel értelmezési tartománya és értékkészlete szerint egyaránt beszélhetünk folytonosságról vagy annak hiányáról).

Ebben a részben időben változó (dinamikus) és a jelek értelmezési tartománya szerint folytonos idejű rendszerekkel foglalkozunk, bár nem minden esetben időtartományban. A vizsgált rendszerek, ha külön nem említjük lineárisak és determinisztikusak. A modellalkotás módszereivel más anyag foglalkozik, ezért a modell részletességét (koncentrált, illetve elosztott paraméterű, esetleg feldarabolt) adottnak tekintjük. Amennyiben a vizsgált rendszer tartalmaz statikus matematikai modellel (algebrai egyenlettel) leírható elemeket, például nemlinearitást, azok matematikai modelljét a megfelelő helyen említjük.

1.1.1. Rendszer leírás időtartományban

Az időtartománybeli leírásban a független változó a t betűvel jelölt idő. Időtartományban a dinamikus rendszer bemenet–kimenet kapcsolatát differenciálegyenlet adja meg. Ha a modellben célunk a belső állapotok figyelembe vétele, a dinamikus rendszert állapottér modelljével írhatjuk le. Az állapottér modell felépítésénél fogva alkalmas több bemenetű, több kimenetű rendszerek leírására is. Az állapottér modell kanonikus alakját a bemenetek/kimenetek leírásából (differenciálegyenletből) formális matematikai módszerrel is előállíthatjuk.

Ebben a leképezésben nem biztos, hogy a tényleges fizikai állapotok változását követjük, lehetséges, hogy csupán a matematikai formalizmussal előállított, fizikai mennyiséggel állapotváltozó értelemben össze nem rendelhető mennyiségeket vizsgálunk. A differenciálegyenletet és az állapottér modellt nemlineáris rendszerekre is felírhatjuk, azonban sok esetben közelítésként linearizáljuk a modellt.

1.1.1.1. Differenciálegyenlet (lineáris, állandó együtthatós)

Az általános nemlineáris, ám koncentrált paraméterű és determinisztikus jelekkel leírható, időben és a jelek értékkészlete szerint is folytonos, egy bemenetű, egy kimenetű rendszer y(t) kimenete a rendszer struktúrájától, az u(t) gerjesztéstől és a kezdeti feltételektől függ. Ha egy képletben szeretnénk összefoglalni (a kezdeti feltételeket nem feltüntetve), a rendszer struktúrájának megfelelően szerepeltetnünk kell a bemenő és a kimenő jel deriváltjait is az f nemlineáris függvény független változói között

 

(1.1)

A lineáris, idővariáns (LTV = Linear Time Variant), dinamikus SISO rendszereket időtartományban közönséges, időtől függő együtthatós, lineáris, inhomogén differenciálegyenlettel adhatjuk meg. A differenciálegyenlet matematikában megszokott paraméteres alakjában a bal oldalon az y(t ) kimenő jel és deriváltjai szerepelnek időtől függő együtthatókkal szorozva, a jobb oldalon az u(t ) bemenő jel szerepel hasonlóan megadva:

 

(1.2)

Lineáris, időinvariáns (LTI, Linear Time Invariant), dinamikus SISO rendszerek időtartománybeli leképezése közönséges, állandó együtthatós, lineáris, inhomogén (K.Á.L.I.) differenciálegyenlettel történik. A K.Á.L.I. differenciálegyenlet matematikában megszokott paraméteres alakjában a baloldalon az y(t) kimenő jel és deriváltjai szerepelnek állandó együtthatókkal szorozva, a jobb oldalon pedig az u(t) bemenő jel szerepel hasonló formában:

 

(1.3)

A műszaki gyakorlatban elterjedtebb az időállandós alak, amelyből az arányos viselkedésű rendszer állandósult állapotbeli viselkedésére (erősítésére) egyszerűen következtethetünk, mivel a kimenő és a bemenő jel közvetlenül összehasonlítható.

 

(1.4)

A formálisan előállított időállandós alak a paraméteresnél kevésbé általános, hiszen a kimenő jel oldalán az integráló és a bemenő jel oldalán a differenciáló hatást nem tudjuk figyelembe venni, hiszen (y(t ) és u(t ) együtthatója egy).

Integráló jellegű rendszernél a kimenő jel együtthatója zérus.

 

(1.5)

Differenciáló jellegű rendszernél a bemenő jel együtthatója zérus.

 

(1.6)

A megvalósítható rendszerekre érvényes az n<=m összefüggés, vagyis a bemenő jel oldalán nem szerepelhet magasabb derivált, mint a kimenő jel oldalán.

A magasabb rendű differenciálegyenlet kezelése nehézkes, a rendszer belső állapotairól (a tárolók töltöttségéről) nem, vagy csak hosszadalmas számításokkal tájékozódhatunk.

1.1.1.2. Az állapottér-leírási mód

Az állapottér modell a differenciálegyenlettel szemben folyamatosan tájékoztat a bonyolultabb rendszerek belső állapotairól. Az állapottér modellben az állapotváltozók minden időpillanatban megadják az extenzív mennyiségekkel (pl. anyag, energia, töltés) jellemezhető tárolók töltöttségét. Az állapotváltozókat oszlopvektorként adjuk meg, esetleg tömörebb leíráshoz transzponált sorvektor formában. Az állapotváltozók száma megegyezik a rendszerben lévő különböző energiatárolók számával.

 

(1.7)

Mivel a SISO rendszer a MIMO speciális esete, az általánosság érdekében először a MIMO rendszer állapottér modelljét írjuk fel. A rendszer bemeneteinek száma m, a kimenetek száma p, az állapotváltozók száma n.

Az általános MIMO állapottér modellben két alapvető összefüggést definiálunk. Az állapotegyenlet az állapotváltozók változását az állapotváltozók korábbi értéke és a bemenetek segítségével adja meg.

 

(1.8)

Az állapottér modellben nem olyan közvetlen a kimenet–bemenet kapcsolat, mint a differenciálegyenlet esetén, szükségünk van tehát egy második egyenletre, ami az állapotváltozókon keresztül megadja a kimenő jelek értékét. Ezt az egyenletet kimeneti vagy kicsatolási egyenletnek nevezzük.

 

(1.9)

1.1.1.2.1. Általános, lineáris MIMO állapottér modell

A fenti két egyenlet (1.8 és 1.9) az általános, nemlineáris MIMO rendszerre vonatkozik. A lineáris, időtől függő együtthatós (LTV) MIMO rendszerre vonatkozó állapottér modell két egyenlete mátrixos alakban

 

(1.10)

 

(1.11)

A lineáris, időinvariáns (LTI, azaz állandó együtthatós) MIMO rendszerre vonatkozó állapottér modell két egyenlete tömören

 

(1.12)

 

(1.13)

és kifejtve

 

(1.14)

 

(1.15)

SISO rendszerben egy bemenet (m=1) és egy kimenet (p=1) van az n állapotváltozó mellett. Emiatt a mátrix n elemű oszlopvektorrá, a mátrix n elemű sorvektorrá, a mátrix pedig skalárrá alakul, az rendszermátrix marad n x n méretű.

 

(1.16)

 

(1.17)

Mátrixos formában, az említett vektorokkal és a skalárral

 

(1.18)

 

(1.19)

1.1.1.2.2. Kanonikus alakú állapottér modell előállítása

A K.Á.L.I. differenciálegyenletből formálisan felírhatjuk a fázistér modellnek is nevezett, kanonikus alakú állapottér modellt. Ugyan a mindennapi gyakorlatban az így felírt egyenleteket is állapottér modellnek nevezzük, az elnevezés nem feltétlenül helyes, hiszen a formálisan előállított állapotváltozók (pontosabban fázisváltozók) nem feltétlenül felelnek meg a korábban állapotváltozóként definiált tárolók töltöttségnek.

Tekintsük az (1.1. ábra - Mechanikai rendszer (ütköző) szerkezeti vázlata) ábrán látható egyszerű mechanikai rendszer, egy ütköző differenciálegyenletét és abból a fázistér modell előállítását. Az F(t) erővel gerjesztett m tömeget párhuzamosan kapcsolt k rugó és b csillapítás rögziti a falhoz. Kimenetként keressük a tömeg vízszintes x(t ) elmozdulását!

Mechanikai rendszer (ütköző) szerkezeti vázlata
1.1. ábra - Mechanikai rendszer (ütköző) szerkezeti vázlata


A mechanikai modellt leképező differenciálegyenlet a fizikai mennyiségekre jellemző jelölésekkel (x(t ) elmozdulás, F(t ) erő, m tömeg, b csillapítási tényező, k rugómerevség):

 

(1.20)

Az állapottér (fázistér) modell előállításához fejezzük ki a differenciálegyenletből (1.20) a legmagasabb deriváltat:

 

(1.21)

Az állapotváltozók (fázisváltozók) száma megegyezik a legmagasabb derivált fokszámával, jelen esetben az állapotváltozók vektora kételemű:

 

(1.22)

Első állapotváltozónak a kimenő jelet választjuk, másodiknak a kimenő jel első deriváltját. (Magasabb rendű rendszernél természetesen a további deriváltak is állapotváltozók lesznek, egészen a második legnagyobb fokszámú deriváltig.)

 

(1.23)

 

(1.24)

Ezzel a választással az első állapotváltozó deriváltja megegyezik a második állapotváltozóval, ez utóbbi deriváltja pedig a differenciálegyenletből kifejezett legmagasabb (most második) deriválttal azonos. A választott kimenő jel (elmozdulás) pedig az első állapotváltozó értékével egyenlő.

 

(1.25)

 

(1.26)

 

(1.27)

Az állapottér modell mátrixos alakja:

 

(1.28)

 

(1.29)

A fenti másodrendű differenciálegyenlet általános paraméteres alakban:

 

(1.30)

Az állapottér modell a differenciálegyenletből származó általános jelölésekkel:

 

(1.31)

 

(1.32)

1.1.1.2.3. P vagy I jellegű, többtárolós SISO rendszer

A két energiatárolós ütköző állapottér modelljéhez hasonlóan állíthatjuk elő a több energiatárolós arányos (legfeljebb integráló) rendszerek állapottér modelljét. Az ilyen rendszerek differenciálegyenletében a jobb oldalon egyedül a bemenő jel együtthatója különbözik nullától.

Arányos viselkedésű rendszer esetén, a homogén oldalon a kimenő jel és a tárolók számának megfelelő derivált szerepel. Egyszeres integráló tulajdonságú rendszer egyenletéből hiányzik a kimenő jel (együtthatója nulla).

 

(1.33)

Az előbb bemutatott állapotváltozó választás szerint a kimenő jelet első állapotváltozónak, az egyre magasabb deriváltjait - egészen a második legmagasabbig - a többi állapotváltozónak választva, most is ki tudjuk fejezni a legmagasabb deriváltat (az utolsó állapotváltozó deriváltját) a többi állapotváltozó és a bemenő jel lineáris kombinációjaként. Ezzel elő tudjuk állítani a rendszer állapotegyenletét

 

(1.34)

A kicsatolási egyenlet rendkívül egyszerű, a kimenő jel megegyezik az elsőként választott állapotváltozóval:

 

(1.35)

A megvalósítható rendszerekben érvényes, hogy a kimenő jel oldalán a deriváltak szám nem lehet kevesebb a bemenő jel oldalán lévő deriváltak számánál, m≤n. Később látunk példát megvalósítható, nem zérus együtthatójú, bemenő jel oldali deriváltakat tartalmazó differenciálegyenletű rendszer állapottér modelljének felírására.

A Laplace-operátoros tartományba átalakított differenciálegyenlet segítségével tudjuk felírni a bemenő jel egy vagy több deriváltját is tartalmazó differenciálegyenlettel modellezhető rendszerek állapottér (fázistér) modelljét.

Az állapottér modell előnye a differenciálegyenlettel szemben különösen a (számító) gépesített megoldásnál szembetűnő, hiszen elsőrendű differenciálegyenletet könnyebb megoldani a magasabb rendűnél, és a számítógépek kimondottan alkalmasak ismétlődő feladatok végrehajtására, vagyis könnyen megbirkóznak az egyenletrendszerek megoldásával.

1.1.2. Frekvenciatartomány

A frekvenciatartománybeli vizsgálatokkal a rendszer különböző frekvenciájú, harmonikus gerjesztésre adott válaszát határozzuk meg. Lineáris rendszereknél a tranziensek lecsengése után a harmonikus gerjesztő jellel azonos frekvenciájú harmonikus válaszfüggvény amplitúdójában és/vagy fázisában térhet el a gerjesztő jeltől. Nemlineáris rendszerek esetén a helyzet bonyolultabb, a probléma kezelésére később látunk módszereket, addig is lineáris rendszerekkel foglalkozunk.

Tulajdonképpen a harmonikus gerjesztő jel és az arra adott harmonikus válasz is időfüggvény, tehát alkalmazhatnánk a differenciálegyenlet-megoldás megszokott módszereit.

Célszerű azonban a frekvenciaátviteli függvény bevezetésével időtartomány helyett frekvenciatartományban vizsgálódnunk. (A differenciálegyenlet-megoldás módszerei természetesen nemlineáris rendszereknél is használhatók, bár nem feltétlenül létezik analitikus megoldás.)

Az általános ω körfrekvenciájú, U 0 amplitúdójú harmonikus gerjesztő jelet komplex függvényként adjuk meg, mégpedig Euler- vagy más néven exponenciális alakban. A gerjesztés és a válasz frekvenciatartománybeli vizsgálatoknál nem lehet akármilyen, hanem csak harmonikus függvény, ezt a jelölésben is külön érzékeltetjük. A továbbiakban a harmonikus időfüggvényeket az jelöléssel különböztetjük meg a tetszőleges u(t) időfüggvényektől.

A harmonikus gerjesztés algebrai alakjában megjelenik a két harmonikus függvény (sin és cos).

 

(1.36)

Lineáris rendszer harmonikus gerjesztésre adott harmonikus válasza a gerjesztő jel ω (kör)frekvenciájától függő Y 0 (ω) amplitúdóban és az ugyancsak a gerjesztő jel körfrekvenciájától függő φ(ω) fázistolásban térhet el.

 

(1.37)

1.1.2.1. Exponenciális alakú frekvenciaátviteli függvény

A lineáris rendszereknél értelmezhető G() frekvenciaátviteli függvény a harmonikus gerjesztésre adott harmonikus válasz, és a harmonikus gerjesztés hányadosaként előállított komplex függvény.

 

(1.38)

Bár a frekvenciaátviteli függvény formálisan két időfüggvény hányadosa, az időtől mégsem függ, csak a gerjesztő jel (kör)frekvenciájától! Erről könnyen meggyőződhetünk, ha behelyettesítünk a definiáló összefüggésbe:

 

(1.39)

Az egyszerűsítésből kiderül, hogy a frekvenciaátviteli függvény két lényeges információt hordoz. A frekvenciafüggő amplitúdó viszonyt (átviteli tényezőt) és a szintén frekvenciafüggő fázistolást, amiből megtudhatjuk, hogy a tranziensek lecsengése után az adott frekvenciájú bemenő jel amplitúdója hányszorosára változik, és mekkora fáziseltérése lesz a gerjesztéshez képest.

A komplex számok terminológiája szerint a frekvenciafüggő amplitúdó viszony a frekvenciaátviteli függvény abszolút értéke, a frekvenciafüggő fázistolás pedig az argumentuma.

 

(1.40)

 

(1.41)

1.1.2.2. Polinomiális alakú frekvenciaátviteli függvény

A komplex alakú harmonikus gerjesztés és harmonikus válasz idő szerinti deriváltjait behelyettesítve a (K.Á.L.I. ) differenciálegyenletbe (1.3), a frekvenciaátviteli függvény polinomiális alakját kapjuk.

1.1. táblázat - A bemeneti / kimeneti jel és deriváltjaik frekvenciaátviteli függvényei

Bemeneti jel

Kimeneti jel

……

……


A fentiek alapján megállapíthatjuk, hogy a komplex alakú harmonikus jelek idő szerinti deriválása jω-val való szorzásnak felel meg. Ahányadik deriváltat kell előállítanunk, a jelet jω annyiadik hatványával kell megszoroznunk.

Ha a K.Á.L.I differenciálegyenletbe (1.3) az általános gerjesztés és válasz helyett a harmonikust írjuk

 

(1.42)

majd helyettesítjük az előbb előállított deriváltakat

 

(1.43)

a harmonikus jelet mindkét oldalon kiemelhetjük

 

(1.44)

A frekvenciaátviteli függvény definícióját (1.38) alkalmazva

 

(1.45)

1.1.2.3. Zérus–pólus–erősítés alakú frekvenciaátviteli függvény

A polinomiális frekvenciaátviteli függvényt átalakíthatjuk úgy, hogy a számlálóból és a nevezőből is kiemeljük a legmagasabb jω hatványok együtthatóját (a számlálóból b m -et, a nevezőből a n -t):

 

(1.46)

A számláló és nevező polinomot felírhatjuk gyöktényezős alakban:

 

(1.47)

A számláló (i = 1,2, . . . ,m) gyökeit (zérusok) és a nevező (k = 1,2, . . . ,n) gyökeit (pólusok) egyszerűen ábrázolhatjuk a komplex számsíkon, ha felírjuk a frekvenciaátviteli függvény zérus–pólus–erősítés alakját (1.48).

 

(1.48)

1.1.3. Rendszerek leírása Laplace tartományban

Az időtartományból Laplace–operátoros tartományba való áttérésnek számos oka lehet. Ezek egyike, hogy a K.Á.L.I. differenciálegyenlet időtartománybeli megoldását operátoros tartományban, algebrai egyenlet megoldásával válthatjuk ki. Az algebrai egyenlet megoldása ugyan egyszerűbb, de gondoskodnunk kell az idő- és operátoros tartomány közötti oda és vissza transzformációról, ami a rendelkezésre álló Laplace–transzformációs táblázatok alkalmazásával viszonylag egyszerűen megvalósítható.

Formálisan az s = jω helyettesítéssel származtathatjuk a G(s) átviteli függvényt a G(jω) frekvenciaátviteli függvényből, azonban ez csak harmonikus gerjesztés és az arra adott harmonikus válasz esetén érvényes. Amennyiben kiterjesztjük vizsgálatainkat periodikus, majd nem periodikus (végtelen periódusidejűnek tekintett) jelek kezelésére, a Fourier–sorfejtés, a Fourier–transzformáció, valamint a Laplace–transzformáció alkalmazására kényszerülünk.

A rendszervizsgálatokban előforduló nem periodikus jelek Laplace–transzformáltja előállítható, sőt táblázatok állnak rendelkezésünkre rengeteg időfüggvény–Laplace transzformált függvény párral. Ha a Laplace–transzformációt, mint féloldalas (az integrálás alsó határa helyett 0), () függvénnyel súlyozott Fourier–transzformációt tekintjük, akár magunk is előállíthatjuk különböző időfüggvények Laplace-transzformáltját (és természetesen inverz transzformációval a megfelelő időfüggvényeket is).

A Laplace–transzformáció segítségével bevezethetjük a G(s) átviteli függvényt, ami a rendszer differenciálegyenlettel és frekvenciaátviteli függvénnyel egyenértékű matematikai modellje.

1.1.3.1. Polinomiális átviteli függvény

Az átviteli függvényt a differenciálegyenlet (1.3) mindkét oldalának zérus kezdeti feltételek melletti Laplace-transzformálásával állíthatjuk elő

 

(1.49)

Ezután a baloldalról kiemelhetjük a kimenő jel Y(s), a jobb oldalról a bemenő jel U(s) Laplace-transzformáltját

 

(1.50)

majd ezek hányadosaként állíthatjuk elő az átviteli függvény polinomiális alakját

 

(1.51)

1.1.3.2. Zérus-pólus-erősítés alakú átviteli függvény

Ahogy a frekvenciaátviteli függvénynél már láttuk, a polinomiális átviteli függvényt átalakíthatjuk úgy, hogy a számlálóból és a nevezőből is kiemeljük a legmagasabb s hatványok együtthatóját:

 

(1.52)

A számláló és nevező polinomjait felírhatjuk gyöktényezős alakban:

 

(1.53)

Bevezetve a K = b m /a n erősítés, a zérus polinom és a pólus polinom jelölést, az átviteli függvény zérus–pólus–erősítés (ZPK) alakja:

 

(1.54)

1.1.3.3. Differenciálegyenlet-megoldás Laplace-operátoros tartományban

A K.Á.L.I. differenciálegyenlet megoldásához az időtartománybeli differenciálás Laplace–operátoros tartománybeli megfelelőjére van szükségünk.

 

(1.55)

 

(1.56)

Zérus kezdeti feltétel esetén az időtartománybeli deriválás megfelelője Laplace–operátoros tartományban az s operátorral való szorzás.

1.1.3.4. Az állapottér modell Laplace-operátoros tartományban

Ha az állapottér modellt időtartományban írjuk fel, a fentiek értelmében bármilyen differenciálegyenlet (differenciálegyenlet–rendszer) Laplace–transzformációval algebrai egyenletté (algebrai egyenletrendszerré) alakítható, a megoldás inverz Laplace–transzformálásával pedig megkapjuk az eredeti differenciálegyenlet (differenciálegyenlet–rendszer) megoldását.

Korábban láttuk, hogy az n-ed rendű közönséges, állandó együtthatós, lineáris differenciálegyenlet formálisan átalakítható állapottér modellé, ha a jobb oldalon csak a gerjesztés szerepel, a bemenő jel deriváltjai nem. Ha a differenciálegyenlet gerjesztés oldala m-ed rendű, az átviteli függvény segítségével írjuk fel az állapottér modellt. A jobb oldali deriváltak az átviteli függvény számlálójában s hatványok formájában szerepelnek.

Bővítsük a polinomiális átviteli függvényt az alábbiak szerint, az első állapotváltozó X 1 (s) Laplace–transzformáltjának bevezetésével! A polinomok hányadosát két sorba kapcsolt rendszer átviteli függvényeként értelmezve, és felhasználva az átviteli függvény definíciójából, hogy sorba kapcsolt rendszerek eredő átviteli függvénye az egyes rendszerek átviteli függvényének szorzata, az alábbi össefüggéshez jutunk:

 

(1.57)

Nézzük meg először a bal oldali átviteli függvényből a differenciálegyenlet segítségével létrehozható állapottér modellt!

 

(1.58)

Keresztbe szorzással és inverz Laplace–transzformációval egy u(t ) bemenetű, x 1 (t ) kimenetű rendszer differenciálegyenletét kapjuk:

 

(1.59)

 

(1.60)

 

(1.61)

A korábban ismertetett módon kifejezzük a differenciálegyenletből a legmagasabb deriváltat:

 

(1.62)

A további állapotváltozókat a megszokott módon, a megelőző állapotváltozó deriválásával állítjuk elő

 

(1.63)

majd ezeket helyettesítjük az imént kifejezett legmagasabb deriváltba:

 

(1.64)

A fentiek alapján felírhatjuk a rendszer állapotegyenletét:

 

(1.65)

Folytassuk a másik átviteli függvény átalakításával!

 

(1.66)

Keresztbe szorzással és inverz Laplace–transzformációval egy x 1 (t ) bemenetű, y(t ) kimenetű rendszer differenciálegyenletét kapjuk:

 

(1.67)

 

(1.68)

Ebbe az egyenletbe is behelyettesíthetjük a korábban bevezetett állapotváltozókat:

 

(1.69)

Az n-ed rendű differenciálegyenletből adódóan legfeljebb n állapotváltozót használhatunk a fenti egyenletben, így érvényes az nm+1 egyenlőtlenség, ami szigorúbb a megvalósítható differenciálegyenletnél említett nm feltételnél. Az n = m+1 feltétel kizárja (az egyébként nem megvalósítható) differenciáló jellegű rendszerek állapottér modelljének felírását.

Az nm+1 feltétel teljesülése esetén felírhatjuk az állapottér modell második részét, a kicsatolási egyenletet az inverz Laplace-transzformáció alkalmazásával:

 

(1.70)

Az nm+1 feltételt teljesítő differenciálegyenletből származtatható állapottér modell:

 

(1.71)

 

(1.72)

Az általános SISO LTI állapottér modell b és c vektora különbözik a differenciálegyenlet jobb oldalán álló, csak az u(t ) bemenő jelet tartalmazó differenciálegyenletből képzett állapottér modelltől.

Ha ismert a SISO rendszer állapottér modellje, a gerjesztés és a kezdeti feltételek, az állapottér modell Laplace–transzformálásával is kiszámíthatjuk a kimenő jelet időtartományban.

A számítás során a rendszer átviteli függvényét is előállítjuk.

Az általános SISO LTI állapottér modell két egyenlete mátrixos formában (1.71 és 1.72), Laplace–transzformálásához az állapotváltozó vektor Laplace–transzformáltja , a bemenő jel , a kimenő jel . Az állapottér modell elemei (jelen esetben mátrix, b és c vektor és d skalár) a transzformáció során nem változik. Az állapotváltozók Laplace–transzformáltját az állapotváltozókra vonatkozó kezdeti feltételek figyelembevételével írjuk fel, .

 

(1.73)

 

(1.74)

Az állapotegyenletből (1.73) kifejezhetjük az állapotváltozók vektorát. Amennyiben az állapotváltozók kezdeti értéke zérus (), a számítás valamelyest egyszerűsödik.

 

(1.75)

 

(1.76)

Az így kifejezett állapotváltozó vektort behelyettesíthetjük a kicsatolási egyenletbe, hogy megkapjuk a kimenő jel Laplace–transzformáltját:

 

(1.77)

A kapott kifejezés jobb oldalán kiemelhetjük a bemenő jel Laplace–transzformáltját, és elosztjuk vele az egyenlet mindkét oldalát, hogy megkapjuk a SISO rendszer átviteli függvényét az állapottér modell segítségével:

 

(1.78)

Természetesen nemcsak zérus kezdeti feltételeknél használhatjuk a Laplace-transzformációs megoldást. Ekkor a deriválás Laplace-transzformációs szabályában meghatározott módon kell figyelembe vennünk a t = 0 időpillanatbeli kezdeti értékeket.

1.1.4. Jellegzetes állapottér modell struktúrák

Külön elnevezéssel illetjük az adott struktúrájú mátrixokból felépülő állapottér modelleket.

További vizsgálatainkban, a differenciálegyenletben azonos fokszámú a kimenő jel és a bemenő jel oldala (ennek megfelelően az átviteli függvényben azonos fokszámú a számláló és a nevező), ami a korábban ismertetett nm megvalósíthatósági feltételből az egyenlőségnek felel meg.

A rendszer bemenet–kimenet leképezése maga a differenciálegyenlet, ha mindkét oldal legmagasabb deriváltja az n-edik

 

(1.79)

illetve az ezzel egyenértékű átviteli függvény

 

(1.80)

A kanonikus alakú állapottér modellt korábban már említettük, itt részletesen bemutatjuk, hogyan jutunk el a differenciálegyenlet együtthatóiból egyszerűen felírható fázisváltozós alakú állapottér modell mátrixaihoz.

A közvetlen és párhuzamos programozás módszerével további állapottér reprezentációkhoz juthatunk, akár a differenciálegyenletből, akár az átviteli függvényből indulva. Az így kapott állapottér modellek nem feltétlenül tartalmazzák az átviteli függvényben lévő összes pólust. Ha az átviteli függvény egy vagy több zérusa megszünteti a megfelelő pólusokat, vagyis csökken az átviteli függvény fokszáma, akkor az állapottér modellben ezek a kiejtett gyökök nem jelennek meg. Az egyszerűsítéssel megszüntetett gyökök kérdése a rendszer irányíthatóságához és megfigyelhetőségéhez kapcsolódik - ez utóbbi pedig az analóg számítógépes szimulációban kap szerepet az állapotváltozók kezdeti értékének meghatározásában.

A különböző állapottér modell struktúrák között lineáris transzformációk ( a transzformációs mátrix) teremtenek kapcsolatot.

A fázisváltozós (kanonikus) alakot a differenciálegyenletből formális módszerekkel állítjuk elő. A kísérő alakok (companion form) közé tartozik az irányíthatósági normálalak és a megfigyelhetőségi normálalak. A kísérő alakok jellemzői az rendszermátrix egy sorát vagy egy oszlopát kitöltő karakterisztikus polinom-együtthatók (vagyis a differenciálegyenlet homogén oldalán lévő kimenő jel és deriváltjai együtthatói). A modális alakban (modal form) az rendszermátrix diagonális, a főátlóban a karakterisztikus polinom egyszeres gyökei (a rendszer pólusai) szerepelnek. Amennyiben van többszörös pólus, a rendszermátrix a „majdnem diagonális” Jordan–alakot ölti.

1.1.4.1. Fázisváltozós alak

A fázistér modell korábbi formális bevezetésével  (a kimenő jelet választva első állapotváltozónak, majd deriváltjait rendre a következőknek) a fázisváltozós alakot (phase variable canonical form) kapjuk.

A levezetés áttekinthetőségét segítendő, az első lépésben olyan rendszerrel foglalkozunk, ahol a bemenő jel deriváltjainak együtthatója zérus.

 

(1.81)

Az állapotváltozókat és deriváltjaikat az alábbi szabályszerűség szerint írhatjuk fel

1.2. táblázat - Az állapotváltozók és a deriváltjaik időfüggvényei

Állapotváltozók

Állapotváltozók idő szerinti deriváltja

……

……


Az állapotegyenlet

 

(1.82)

A kicsatolási egyenlet rendkívül egyszerű, a kimenő jel megegyezik az elsőként választott állapotváltozóval:

 

(1.83)

Ahhoz, hogy kiterjeszthessük a leírást olyan rendszerre is, ahol a bemenő jel oldalán is szerepelnek deriváltak, a már megismert módon csatoljuk szét a differenciálegyenletet, ezúttal időtartományban!

 

(1.84)

A v(t ) változó bevezetésével a szétcsatolással kapott két differenciálegyenlet

 

(1.85)

 

(1.86)

Írjuk fel az állapotváltozókat (és deriváltjaikat) a megszokott módon az új v(t ) kimenő jellel

1.3. táblázat - Az állapotváltozók és a deriváltjaik időfüggvényei

Állapotváltozók

Állapotváltozók idő szerinti deriváltja

……

……


Az n-edik állapotváltozó deriváltját a megszokott módon fejezzük ki a differenciálegyenletből

 

(1.87)

A kicsatolási egyenletet az v(t) előbb kifejezett legmagasabb (n-edik) deriváltjának az eredeti differenciálegyenlet szétcsatolásával kapott második egyenletbe való helyettesítésével állítjuk elő.

 

(1.88)

Mátrixos alakban

 

(1.89)

 

(1.90)

 

(1.91)

 

(1.92)

 

(1.93)

Az igen gyakori b n = 0 esetben, a kicsatolási egyenlet alakja könnyen megjegyezhetővé válik.

 

(1.94)

Ezzel b n = 0 (vagyis nm) esetén a SISO LTI rendszer fázisváltozós (ph a phase variable kifejezésből származó rövidítés) kanonikus alakú állapottér modell mátrixai.

 

(1.95)

 

(1.96)

 

(1.97)

 

(1.98)

Ha a n = 1, még egyszerűbbek a mátrixok.

1.1.4.2. Az irányíthatósági normálalak

Az irányíthatósági normálalakot (controllable canonical form) a közvetlen programozás módszerével állíthatjuk elő az átviteli függvény polinomiális alakjából (1.51) vagy az ezzel ekvivalens differenciálegyenletből (1.3). A következőkben feltételezzük, hogy a kezdeti feltételek mindegyike zérus.

 

(1.99)

A rendszert szétcsatolhatjuk két sorba kapcsolt átviteli függvény eredőjére. Az egyik egységnyi számlálójú, a másik egységnyi nevezőjű, a kettő között egy V (s) kisegítő változó bevezetésével teremthetünk formálisan kapcsolatot.

 

(1.100)

A két átviteli függvény:

 

(1.101)

 

(1.102)

Ezt a szétcsatolást blokkdiagramon is ábrázolhatjuk (1.2. ábra - Az átviteli függvény szétcsatolása az irányíthatósági normálalak felírásához).

Az átviteli függvény szétcsatolása az irányíthatósági normálalak felírásához
1.2. ábra - Az átviteli függvény szétcsatolása az irányíthatósági normálalak felírásához


Az U(s) bemenetet tartalmazó átviteli függvényből keresztbe szorzással kialakuló egyenletet akár differenciálegyenletté is alakíthatnánk, de most maradunk Laplace–operátoros tartományban

 

(1.103)

V(s)-t és deriváltjait választva állapotváltozóknak (és rögtön felírva az állapotváltozók deriváltját)

1.4. táblázat - Az állapotváltozók és idő szerinti deriváltjaik Laplace-függvényei

Állapotváltozók

Az állapotváltozók idő szerinti deriváltjainak Laplace-függvénye

……

……


A keresztbe szorzással előállított egyenletből kifejezhetjük a legmagasabb deriváltnak megfelelő s n V (s) elemet

 

(1.104)

és felírhatjuk az állapotváltozók segítségével is

 

(1.105)

Az állapotegyenletet mátrixos alakban, Laplace–operátoros tartományban felírva a fázisváltozós alakkal egyező struktúrát kapunk:

 

(1.106)

A szétcsatolással kapott G 2 (s) második átviteli függvényt megszorozva V (s)-sel, kifejezhetjük az Y (s) kimenetet, V (s) és deriváltjai lineáris kombinációjaként

 

(1.107)

V (s) és deriváltjai helyére a választott állapotváltozókat beírva

 

(1.108)

Az s·X n (s) helyére az első átviteli függvényből kifejezett képletet írhatjuk

 

(1.109)

Rendezés után

 

(1.110)

a kicsatolási egyenletet kapjuk

 

(1.111)

A közvetlen programozás módszerével előállított irányíthatósági normálalak megegyezik az előző részben ismertetett fázisváltozós alakkal.

Differenciálegyenletből (vagy átviteli függvényből) igen gyakran az egyenlet analóg számítógépes (szimulációs) megoldásának blokkvázlata (algoritmusa) alapján állítjuk elő az állapottér modellt. Az analóg számítógépekkel később részletesebben foglalkozunk, itt csupán a szükséges alapokat tekintjük át.

A szimulációs diagramnak is nevezhető ábra az analóg számítógép műveleti egységeinek (integrátor, összegző, előjelfordító, szorzó) megfelelő szimbólumokból épül fel. A bemenő jelek előállításáról függvénygenerátorokkal gondoskodhatunk, bár ez jelenleg nem lényeges, hiszen a szimulációs diagramot csupán az állapottér modell felírásához használjuk, nem pedig az analóg számítógép programozásához.

Az analóg számítógép időtől függő jelekkel dolgozik, azonban a szemléletességen nem változtat, ha Laplace–operátoros tartományban írjuk fel a jeleket és az integrálás operátoros tartománybeli megfelelőjét, 1/s-t írjuk a megfelelő blokkokba. Eltekintünk továbbá az analóg számítógépes kapcsolásokban használt műveleti erősítővel megvalósított elemek előjelfordító tulajdonságától. Szintén nem foglalkozunk az állandóval való szorzás és az összegzés analóg számítógépes megvalósításával, hanem a hatásvázlatokban előforduló jelképeket használjuk.

Példánkban (a fázisváltozós alaknál már alkalmazott b n = 0 esetre) a közvetlen programozáshoz n darab integrátort kapcsolunk sorba. Az első integrátor bemenete a legmagasabb deriváltnak megfelelő s n ·V(s), kimenete s n-1 ·V(s). A sorban utolsó integrátor kimenete V (s).

A szétcsatolásból származó első átviteli függvényből kifejezett s n ·V(s) jelet a képletben szereplő elemek összegzésével állíthatjuk el

Az irányíthatósági normálalak szimulációs diagramja (b n =0)
1.3. ábra - Az irányíthatósági normálalak szimulációs diagramja (b n =0)


A szimulációs diagramon (1.3. ábra - Az irányíthatósági normálalak szimulációs diagramja (b n =0)) szereplő integrátorok kimenetét választva állapotváltozónak, a fázisváltozós alakkal egyező irányíthatósági normálalak mátrixok könnyen felírhatók.

 

(1.112)

 

(1.113)

 

(1.114)

 

(1.115)

Az irányíthatósági normálalak a modern irányítástechnikában az irányíthatóság vizsgálatában és biztosításában igen fontos rendszerleírási mód.

1.1.4.3. A megfigyelhetőségi normálalak

A megfigyelhetőségi normálalak (observer canonical form) szintén igen fontos a modern irányítástechnikában. Felírásához ugyancsak az átviteli függvényből (1.51) indulunk ki. Az átviteli egyenletből kifejezzük a kimenő jel s n ·Y(s) formában megadott legmagasabb deriváltját

 

(1.116)

Osszuk végig mindkét oldalt s n -el, és az a n együtthatóval az osztást vigyük be a zárójel mögé!

 

(1.117)

A zárójelek feloldása után

 

(1.118)

Végezzünk integrálást a Laplace–operátoros tartományban és osztást az s operátorral. Ezzel az s hatványok szerint alakíthatjuk tovább a kifejezést

 

(1.119)

Az egyenletnek (b n = 0 feltételezésével) megfelelő analóg számítógépes program szimulációs diagramja (1.4. ábra - A megfigyelhetőségi normálalak szimulációs diagramja (b n = 0)) szintén n egymás után kapcsolt integrátorból épül fel.

A megfigyelhetőségi normálalak szimulációs diagramja (b n = 0)
1.4. ábra - A megfigyelhetőségi normálalak szimulációs diagramja (b n = 0)


Az integrátorok kimenetét úgy választva állapotváltozóknak, hogy az első integrátor kimenete az első állapotváltozó, a második integrátor kimenete a második állapotváltozó, és így tovább, a diagramban jobbról balra haladva először a kicsatolási egyenletet kapjuk meg.

 

(1.120)

majd pedig felírhatjuk az állapotváltozók differenciálegyenletét

 

(1.121)

 

(1.122)

 

. . . . . . . . .

 
 

(1.123)

 

(1.124)

Most már egyszerűen felírhatjuk a megfigyelhetőségi normálalak állapottér mátrixait.

 

(1.125)

 

(1.126)

 

(1.127)

 

(1.128)

A megfigyelhetőségi normálalak lineáris, dinamikus rendszerek számítógépes szimulációjában is nagyon jól használható, mivel a rendszer kezdeti feltételeit is könnyen figyelembe tudjuk venni. Ez az alak a rendszer megfigyelhetőségével áll kapcsolatban, ami azt jelenti, hogy az összes állapotváltozó hatással van a rendszer kimenetére és fordítva, a rendszer kimenete és az állapotegyenlet ismeretében az állapotváltozókat bármelyik időpillanatban rekonstruálhatjuk. Ha t = 0-ban végezzük el a számításokat, a kimenő jel és deriváltjai kezdeti értékei segítségével meghatározhatjuk az állapotváltozók kezdeti értékeit.

1.1.4.4. A modális alak

A párhuzamos programozás módszerével állítjuk elő a modális kanonikus alakot (szétcsatolt alakot) és ennek speciális esetét a Jordan–féle kanonikus alakot.

Amennyiben a rendszer n-edfokú karakterisztikus egyenletének n különböző valós gyöke van, és feltételezzük, hogy n > m, az átviteli függvény zérus–pólus–erősítés alakját (1.54) résztörtekre bontással írjuk fel

 

(1.129)

Az átviteli függvény ilyenkor n darab, párhuzamosan kapcsolt, egytárololós, arányos tag eredője. Az egyes egytárolós tagok az integrátor pólusértékkel való visszacsatolásával adják meg az állapotváltozókat, a visszacsatolás bemenő jele a rendszer u(t) bemenő jele, kimenete pedig az állapotváltozó. A résztörtekre bontásból származó k állandóval szorozva az állapotváltozót, majd összegezve ezeket a szorzatokat, megkapjuk a rendszer y(t ) kimenő jelét. A rendszer szimulációs diagramján (1.5. ábra - A modális alak szimulációs diagramja (n különböző valós pólus)) most is n integrátor szerepel.

A modális alak szimulációs diagramja (n különböző valós pólus)
1.5. ábra - A modális alak szimulációs diagramja (n különböző valós pólus)


 

(1.130)

 

(1.131)

 

(1.132)

 

(1.133)

Amennyiben a rendszer n-edfokú karakterisztikus egyenletének n-2 különböző valós gyöke és egy konjugált komplex gyökpárja van, az átviteli függvény zérus–pólus–erősítés alakját (1.54) résztörtekre bontással úgy írjuk fel, hogy a konjugált komplex p1=α+j•β és p2=α-j•β gyökpárt egy másodrendű taggal helyettesítjük.

 

(1.134)

Az egyszeres gyököknek megfelelő tagokat az imént bemutatott párhuzamos programozással adjuk meg. A másodrendű nevezőjű tagot a közvetlen programozás módszerével kezeljük, akár irányíthatósági, akár megfigyelhetőségi normálalakban felírva (1.6. ábra - A modális alak szimulációs diagramja (n-2 különböző valós pólus és egy konjugált komplex gyökpár esetén)).

A modális alak szimulációs diagramja (n-2 különböző valós pólus és egy konjugált komplex gyökpár esetén)
1.6. ábra - A modális alak szimulációs diagramja (n-2 különböző valós pólus és egy konjugált komplex gyökpár esetén)


 

(1.135)

 

(1.136)

 

(1.137)

 

(1.138)

Amennyiben a rendszer n-edfokú karakterisztikus egyenletének egyik gyöke r–szeres valós, a többi n-r pedig különböző valós gyök, és feltételezzük, hogy n > m, az átviteli függvény zérus–pólus–erősítés alakját (1.54) ismét résztörtekre bontással írjuk fel.

 

(1.139)

A szimulációs diagramban (1.7. ábra - A modális alak szimulációs diagramja (n-r különböző és r azonos valós pólus esetén)) a különböző valós gyökökhöz tartozó ábrarészlet megegyezik az (1.5. ábra - A modális alak szimulációs diagramja (n különböző valós pólus)) ábra felépítésével. Az r-szeres pólusnak megfelelő x 1 , x 2 ,…,x r állapotváltozók sorban egy–egy, a p 1 pólussal visszacsatolt integrátor kimenete. A résztörtekből számított k 1, k 2 ,   ,k r konstansokkal súlyozva a megfelelő állapotváltozókat, megkapjuk a többszörös gyök y(t ) kimenő jelben szereplő részét.

A modális alak szimulációs diagramja (n-r különböző és r azonos valós pólus esetén)
1.7. ábra - A modális alak szimulációs diagramja (n-r különböző és r azonos valós pólus esetén)


 

(1.140)

 

(1.141)

 

(1.142)

 

(1.143)

1.2. Alapelemek (objektumok, blokkok, műveletek)

A folytonos rendszerek áramköri megvalósításai napjainkban is megkülönböztetett jelentőségűek. Bár mintavételes rendszerekkel egyre egyszerűbben és olcsóbban valósíthatók meg azok a funkciók, amelyeket régebben csak analóg áramkörökkel voltak megvalósíthatók. A folytonos (analóg) rendszerek műveleti egységei olyan alapműveleteket valósítanak meg a rendszerépítésben, amelyeket hasonló funkcióval, de mintavételes interpretációban alkalmaznak a digitális rendszerekben.

A folytonos rendszer áramköri elemekkel történő megvalósításához tekintsük az (1.144) egyenlettel leírt folytonos, lineáris állandó együtthatós differenciálegyenletet:

 

(1.144)

ahol

 

a 0 ..a n

a differenciálegyenlet kimenő jelének és deriváltjainak együtthatói,

 

b 0 ..b m

a differenciálegyenlet bemenő jelének és deriváltjainak együtthatói,

 

y(t)

a rendszer kimenő jele,

 

n

a kimenő jel legmagasabb deriváltjának fokszáma,

 

u(t)

a rendszer bemenő jele,

 

m

a bemenő jel legmagasabb deriváltjának fokszáma,

 

t

időváltozó.

A differenciálegyenletben a következő alapműveletek szerepelnek:

  • jelkomponensek összeadása (kivonása = mínusz egyszeres érték hozzáadása),

  • jelkomponensek szorzása állandó értékkel (az együtthatókkal),

  • jelkomponensek idő szerinti derivált értékének meghatározása.

Az alapelemek fizikai megvalósításánál a jelek idő szerinti derivált értékének meghatározása – a műveleti erősítő tápfeszültségei, mint jelkorlátok miatt – nehézségbe ütközik. A derivált értékek meghatározásának másik problémája, hogy mivel a bemeneti jel változásának sebességével arányos a kimeneti jel nagysága, ezért a nagyobb frekvenciájú jeleket jobban erősítik a differenciáló tagok, mint az alacsony frekvenciájú jelkomponenseket. Ez azt jelenti, hogy a differenciáló tagok nem a hasznos jelet, hanem elsősorban a hasznos jelen lévő nagyfrekvenciás zajokat erősítik. Ezen tulajdonságuk alapján nem alkalmasak a folytonos rendszerek időfüggő tagjának megvalósítására.

A folytonos rendszerek áramköri megvalósításánál a differenciálhányadosokat megadó differenciáló tagok helyett, azok inverz függvényét, a jel idő szerinti integráljainak értékét alkalmazzák.

1.2.1. Műveleti erősítő

Az ideális műveleti erősítő a következő tulajdonságokkal rendelkezik (1.8. ábra - Az ideális műveleti erősítő bemeneti (ZBE) és kimeneti impedanciája (ZKI) valamint erősítési tényezője (A)):

  • végtelen bemeneti impedancia

ZBE = ,

  • végtelen sávszélesség

fband = ,

  • végtelen erősítés

A = ,

  • nulla kimeneti impedancia

ZKI = 0,

  • nulla teljesítményfelvétel

P = 0.

A kimeneti feszültség értéke a nem invertáló (+) és az invertáló (-) bemeneteken a föld potenciálhoz képest megjelenő feszültségkülönbség értéke a differencia feszültség szorzata az erősítéssel, amelyet a műveleti erősítő a feszültségvezérelt feszültséggenerátor értékeként jelenít meg a kimeneten. Mivel a ideális műveleti erősítő bemeneti ellenállása végtelen értékű, a műveleti erősítő nem tereheli azt az áramkört, amelyhez hozzákapcsoltuk. Az ideális műveleti erősítő nulla ellenállása pedig azt jelenti, hogy a kimeneti feszültség teljes egészében a műveleti erősítőhöz kapcsolódó következő áramkörön jelenik meg.

Az ideális esetben a műveleti erősítő végtelen sávszélessége azt jelenti, hogy az erősítő a nullától (egyenfeszültség) a végtelen frekvenciáig terjedő frekvenciájú jeleket azonos mértékben erősíti.

Az ideális műveleti erősíő végtelen feszültség erősítésére (A) azt teszi lehetővé, hogy az alapelem (a műveleti erősítőt) negatív visszacsatolásos áramkörben történő alkalmazása esetén a nagy erősítés miatt alapvetően a visszacsatoló ágban szereplő impedancia határozza meg a visszacsatolás mértékét. Ezzel a lehetőséggel rendkívül egyszerűvé válik tetszőleges tulajdonsággal rendelező átviteli tulajdonságú tag előállítása, mert a frekvenciafüggő erősítés értékét a visszacsatoló ágban elhelyezett impedancia és a bemenetre kapcsolt impedancia hányadosa határozza meg.

Az ideális műveleti erősítő bemeneti (ZBE) és kimeneti impedanciája (ZKI) valamint erősítési tényezője (A)
1.8. ábra - Az ideális műveleti erősítő bemeneti (ZBE) és kimeneti impedanciája (ZKI) valamint erősítési tényezője (A)


A valóságos műveleti erősítő a következő paraméterértékekkel rendelkezik (ua 741 típusú műveleti erősítő):

  • bemeneti impedancia  (ZBE) a műveleti erősítő szimmetrikus bemeneti ellenállása. Jellemző értéke bipoláris tranzisztoros bemeneti fokozat esetén néhány MΩ,

    FET tranzisztoros bemenet esetén néhány TΩ.

  • sávszélesség  azt a frekvenciát jelenti, ahol visszacsatolatlan erősítő erősítése 3 dB-t csökken a névleges frekvencián mért erősítéshez képest. Jellemzően 5-10 Hz körüli érték.

    fband =

    5-10 Hz (felnyitott körerősítés esetén)

     

    1MHz (egységnyi negatív, visszacsatolt körerősítés esetén)

    A valóságos műveleti erősítő Bode frekvencia diagramja (amplitúdó)
    1.9. ábra - A valóságos műveleti erősítő Bode frekvencia diagramja (amplitúdó)


  • erősítés (A) megadja, hogy a bemenetekre kapcsolt feszültséget (az invertáló és nem invertáló bemenet feszültségének a különbségét) az erősítő külső visszacsatolás nélkül hányszorosára erősíti a kimenetén, névleges terhelés mellett. Ez az érték általában 100 dB körüli (néhány 100 000 szeres), különleges kapcsolásokkal elérhető 170 dB feletti erősítés is.

  • kimeneti impedancia  (Z KI ) a műveleti erősítő aszimmetrikus kimeneti ellenállása. Visszacsatolás nélkül az értéke néhány 10 Ω és néhány 100 Ω között szokott lenni a végerősítő fokozat kivitelétől függően.

  • teljesítményfelvétel  P = kb. 500mW (melynek az eszköz aktuális hőmérséklete a paramétere).

A valóságos műveleti erősítő (hő)teljesítmény leadása a hőmérséklet függvényében
1.10. ábra - A valóságos műveleti erősítő (hő)teljesítmény leadása a hőmérséklet függvényében


Az ideális műveleti erősítő szimbóluma
1.11. ábra - Az ideális műveleti erősítő szimbóluma


1.2.2. Negatív visszacsatolású műveleti erősítő

A valós műveleti erősítő műszaki paraméterei alapján a nagy értékű, nyílthurkú erősítés (A) lehetővé teszi, hogy az U diff bemeneti feszültség értéke a kivezérlés teljes tartományában közelítőeg nulla értékű legyen. Minél nagyobb értékű az A erősítés, ez a közelítés annál jobb feltételekkel valósul meg.

Az (1.12. ábra - Negatív visszacsatolású műveleti erősítő) ábrán egy negatív visszacsatolású műveleti erősítővel megvalósított kapcsolást láthatunk. Az erősítő felépítésénél a műveleti erősítő kimenete és az invertáló bemenet között egy ellenállás (R v ), a bemenet és a műveleti erősítő invertáló bemenete között szintén egy ellenállás (R b ) található. Az ellenállások számértékének kisebb a jelentősége, mint az ellenállásértékek arányának. Bemeneti és visszacsatoló ellenállásként általában 10kOhm – 1MOhm értékek közötti ellenállások szerepelhetnek.

Negatív visszacsatolású műveleti erősítő
1.12. ábra - Negatív visszacsatolású műveleti erősítő


A nagy értékű, felnyitott körű erősítés eredményeként () az invertáló és a nem invertáló bemenetek közelítőleg azonos (föld)potenciálon vannak, aminek az a következménye, hogy így a műveleti erősítő invertáló bemenetére felírható a következő csomóponti egyenlet:

 

(1.145)

amelyet rendezve a kimenő jelre a következő összefüggést kapjuk:

 

(1.146)

Ebből a negatív visszacsatolású erősítő erősítése

 

(1.147)

A negatív erősítési tényező azt jelenti, hogy az így kialakított erősítő a bemeneti jel előjelét is megfordítja az erősítés mellett.

Az erősítés értékét, mint látható, az ellenállások aránya határozza meg a nagy értékű nyilthurkú erősítés miatt.

Az ellenállások segítségével kialakított erősítő kapcsolásoknál jelentős szerepe van annak a kapcsolásnak, amelynél a visszcsatoló és a bemeneti ellenállás azonos értékű. Ez az előjel fordító kapcsolás , amely a rendszer analóg műveleti elemekből kialakított blokkdiagramjánál biztosítja a jel előjelhelyes műveletvégzését.

1.2.3. Jelek összeadása

A műveleti erősítő nem invertáló bemenetére nemcsak egy bemenettel csatlakoztathatunk, hanem a nem invertáló bemeneti csomópont befolyó áramát több bemeneti feszültség és a hozzá tartozó bemeneti ellenállás hozhatja létre. Ez biztosítja a jelek összegzését .

Negatív visszacsatolású, jelösszegző műveleti erősítő
1.13. ábra - Negatív visszacsatolású, jelösszegző műveleti erősítő


A műveleti erősítő invertáló bemenetére felírt csomóponti egyenlet ebben az esetben (1.13. ábra - Negatív visszacsatolású, jelösszegző műveleti erősítő):

 

(1.148)

amelyet rendezve a kimenő jelre a következő összefüggést kapjuk:

 

(1.149)

 

(1.150)

Az A 1 = -R v /R b1 az U be1 jelhez tartozó erősítési tényező, míg az A 2 = -R v /R b2 az U be2 jelhez tartozó erősítés értéke. Bár az erősítésértékek különbözők lehetnek az egyes bemeneteken, a kimeneten megtörténik a bemeneti jelek összegzése.

A jelek összegzését végző elem jelölése a blokkdiagramban az (1.14. ábra - Az összegző elem jelölése a blokkdiagramban) ábrán látható.

Az összegző elem jelölése a blokkdiagramban
1.14. ábra - Az összegző elem jelölése a blokkdiagramban


1.2.4. Időfüggő jel szorzása konstanssal

Ha egy időfüggő jelet konstans értékkel szorzunk meg , akkor eredményként a jel időbeni lefutásával azonos, a jel időpillanatonkénti értékében pedig a konstans értékszerese jelenik meg kimeneti jelként. Jel konstans értékkel való szorzásához együttható-potenciométert alkalmazunk, amelynek erősítési tényezője nulla(0) és egy (1) értékekek között állítható be.

Egynél nagyobb erősítési igény esetén az együttható-potenciométer után kapcsolt negatív visszacsatolású erősítő segítségével növeljük meg az erősítés mértékét, általában 10-, 100-szoros erősítés alkalmazásával.

Az együttható-potenciométer jelölését blokkvázlatban az (1.15. ábra - Az együttható-potenciométer jelölése blokkdiagramban) ábra mutatja.

Az együttható-potenciométer jelölése blokkdiagramban
1.15. ábra - Az együttható-potenciométer jelölése blokkdiagramban


Az (1.15. ábra - Az együttható-potenciométer jelölése blokkdiagramban) ábrán látható ”a” paraméter az együttható-potenciométer leosztása.

Az együttható-potenciométer villamos kapcsolása
1.16. ábra - Az együttható-potenciométer villamos kapcsolása


Az együttható-potenciométer bemenete és kimenete nem cserélhető fel a villamos hálózatban, mivel a bemeneti jelnek az egész ellenállásértékre, a leosztott kimenetnek pedig a potenciométer csúszkájára kell csatlakoznia. Ha fordított módon kapcsoljuk a hálózatba az együttható-potenciométert, a leosztás nagyságát másképpen kell meghatározni, illetve a csúszka nulla állapotánál rövidre zárjuk a bemeneti jelet.

1.2.5. Jel integrálása idő szerint

Az integrátor elem abban tér el a jelösszegző elemtől, hogy a visszacsatoló ágban egy C kapacitású kondenzátort helyezünk el. Az erősítő kapcsolásban ebben az esetben a visszacsatoló impedancia értéke a kondenzátor Laplace-operátoros impedanciája Z c .

 

(1.151)

Jelösszegző integrátor elem kapcsolási rajza
1.17. ábra - Jelösszegző integrátor elem kapcsolási rajza


A műveleti erősítő invertáló bemenetére felírt csomóponti egyenlet Laplace-operátoros tartományban:

 

(1.152)

amelyet a kimenő jelre rendezve a következő összefüggést kapjuk:

 

(1.153)

Ha a következő jelöléseket bevezetjük:

 

(1.154)

 

(1.155)

Az A i1 az U be1 jelhez tartozó integrálási erősítési tényező, míg az A i2 az U be2 jelhez tartozó integrálási erősítés értéke.

A kimenő jel a fentiek alapján

 

(1.156)

Az integrálási erősítésértékek különbözőek lehetnek az egyes bemeneteken, a kimeneten a bemeneti jelek összegzése történik meg.

A Laplace-operátoros alakból visszatérve időtartományba (inverz Laplace-transzformációval), felírhatjuk a kimenő jel időfüggvényét:

 

(1.157)

A kétbenentű integrátor jelölése a blokkdiagramban az (1.18. ábra - Az integrátor jelölése blokkdiagramban) ábrán látható.:

Az integrátor jelölése blokkdiagramban
1.18. ábra - Az integrátor jelölése blokkdiagramban


Az (1.18. ábra - Az integrátor jelölése blokkdiagramban) ábrán az integrátor szimbólikus jelölésénél a kimenet kezdeti értéke a t=0 időpillanatban látható. Ez az érték az U ki kimeneti feszültség kezdeti értékét állítja be a t =0 időpillanatban, hogy ettől a kezdeti értéktől történjék az integrálás. A megadott kezdeti érték a visszacsatoló kondenzátoron t =0 pillanatban beállítandó feszültség értéke, amely egyben a kimenő feszültség is t =0-ban.

1.2.6. Jelkésleltetés (Padé-közelítés)

Tetszőleges nagyságú késleltetés megvalósítása villamos áramkör segítségével nagy kapacitású (Farad) tároló elemeket igényel. A jelenlegi technikai lehetőségek kb. 100 Farad nagyságú, néhány Volt maximális feszültségű kapacitív elemek alkalmazását teszik lehetővé. Nagyobb feszültség értékekhez csak néhány 1000 mikroFarad kapacitású tároló elem áll rendelkezésre.

A fenti korlátozások, illetve az áramköri magvalósítás Padé-közelítő jelege miatt, valódi jelkésleltetést nagyon ritkán alkalmaznak .

Az (1.19. ábra - Jelkésleltetést megvalósító elem kapcsolási rajza) ábrán egy, az irodalomban található jelkésleltető kapcsolást mutatunk be, amely lehetővé teszi kis értékű késleltetés megvalósítását, ha a műveleti erősítő erősítésének beállításával nagy sávszélességet biztosítunk (egységnyi erősítéssel).

Jelkésleltetést megvalósító elem kapcsolási rajza
1.19. ábra - Jelkésleltetést megvalósító elem kapcsolási rajza


Az (1.9. ábra - A valóságos műveleti erősítő Bode frekvencia diagramja (amplitúdó)) ábrán látható áramkör Padé-közelítést valósít meg, és nagyon kis nagyságrendű (ns) késleltetést képes biztosítani. Az áramkör a következő operátoros átviteli függvényt valósítja meg,

 

(1.158)

ahol τ = 2.R.C.  A jobb oldalon álló kifejezés a következő formában írható fel:

 

(1.159)

Az (1.9. ábra - A valóságos műveleti erősítő Bode frekvencia diagramja (amplitúdó)) ábrán látható kapcsolást a következő értékekkel megvalósították : Rb=Rv=249 Ohm

C=63pF és R=95.3 Ohm, a műveleti erősítő típusa pedig CLC428. Ezekkel az elemekkel elért késleltetés 11.9 ns értékű.

1.2.7. Nemlineáris elemek

A digitális számítógépek napjainkban történő tömeges alkalmazása mellett egyre inkább elvesztik a jelentőségüket azok az analóg áramkörökkel megvalósított nemlineáris tulajdonságú áramkörök , amelyek korábban a nemlineáris szimulációs elemek alkalmazásának egyetlen útját jelentették.

Ezen elemek alkalmazási lehetőségeit a digitális számítógéppel megvalósított időváltozós differenciálegyenlet megoldó algoritmusoknál ismertetjük.

1.3. Alapelemek összekapcsolása

A folytonos rendszerek differenciálegyenletének megoldásához a korábbi fejezetben bemutatott alapelemeket kell összekapcsolnunk, hogy így biztosítsuk a differenciálegyenlet kiszámítási algoritmusát minden időpillanatban. A folytonos, analóg alapelemek alkalmazásával valóban folytonos megoldást kapunk, míg a digitális számítógépes megvalósításnál csak a mintavételi időpillanatokban határozhatjuk meg kimenő jelet (jeleket).

1.3.1. Integrálást vagy differenciálást alkalmazunk a differenciálegyenlet megoldásához

Ha csak analitikus függvényekről lenne szó, akkor egyértelmű a válasz: differenciálást, hiszen a derivált függvény előállítására minden esetben eredményesen alkalmazható szabályok vannak. Az integrálásnál azonban könnyen találhatunk olyan, a gyakorlatban is nagy jelentőségű függvényeket, melyeknek nem létezik a primitív függvénye (pl. , ami a valószínűség számítás egyik alapfüggvénye).

A számítógépes szimuláció során általában differenciálegyenleteket kell megoldanunk közelítő módszerekkel. A későbbiekben a megoldásokról még részletesebben is lesz szó, most csak két gondolatmenetet mutatunk be. Az egyik esetben a legmagasabb rendű deriváltat, a másik esetben pedig éppen fordítva, a legalacsonyabb azaz nulladrendű deriváltat fejezzük ki a megoldandó differenciálegyenletből.

Tekintsük az egyenletet (ahol i=0…n és j=0…m), amelyből a kimenő jel legalacsonyabb deriváltjának kifejezése:

 

(1.160)

ahol k=1…n,

illetve a kimenő jel legmagasabb deriváltjának kifejezése

 

(1.161)

ahol l=0…n-1.

A megoldás során az első esetben sorozatos differenciálással , a második esetben pedig integrálással tudjuk az ismeretlen függvényt, illetve annak deriváltjait előállítani.

A differenciálegyenlet megoldása során általában numerikus módszereket használunk, és ekkor egészen más következtetésre juthatunk, mint analitikus esetben .

A megoldást a következőkben több oldalról is bemutatjuk.

1.3.1.1. Hibával terhelt értékű függvények esete

Az egyik esetben a döntő különbséget az okozza, hogy míg a differenciálás pontbeli műveletként értelmezhető, addig az integrálás egy intervallumon van definiálva. Amennyiben a vizsgálandó függvény nem pontosan ismert, mert például mérési hibákat vagy numerikus közelítésből adódó hibákat tartalmaz, akkor például az (1.20. ábra - A bemeneti jel differenciálásának és integrálásának összehasonlítása) ábrán látható esetek fordulhatnak elő:

A bemeneti jel differenciálásának és integrálásának összehasonlítása
1.20. ábra - A bemeneti jel differenciálásának és integrálásának összehasonlítása


A szaggatott vonal a pontos értékek alapján rajzolt görbe, a „hullámos” pedig a közelítő adatsor felhasználásával készült. Mint látható, a differenciálás esetén a keresett érték és a közelítés eltérése olyan mértékű, hogy az eredmény használhatatlan. Az integrálás esetén vannak hibák, de ezek mértéke kezelhetővé tehető, ha a téglalapok számát növeljük. A differenciálás esetén azonban ez sem segít!

1.3.1.2. Numerikus hibák

A differenciálás esetén gondot okoz a kiegyszerűsödés jelensége [1]. Ennek a lényege, hogy közel azonos számok különbsége esetén sok értékes jegyet veszítünk. Nézzük például a szinusz függvény értékét az 1 illetve az 1+10-5 helyen, valamint a két helyettesítési érték különbségét!

 

 

Az idő szerinti differenciálhányados közelítő értékét több módszerrel is előállíthatjuk.

Közelítő formulát kaphatunk a Taylor-sorok felhasználásával is.

Ilyenek például a következők:

 

(1.162)

 

(1.163)

 

(1.164)

 

(1.165)

 

(1.166)

Mindegyik formulában az a közös, hogy a számláló esetén zérushoz tart. Ekkor a kivonások miatt az értékes jegyek „elvesznek”, így tulajdonképpen a számábrázolás pontossága csökken. Egy‑egy közelítés esetén ez még nem nagy probléma, de a szimuláció során nagy ismétlésszámú ciklusokkal dolgozunk, és ekkor a hiba halmozódása fatális következményekkel jár (csak igen ritkán fordul elő olyan eset, amikor nincs belőle probléma).

Az előzőekben leírt problémák numerikus idő szerinti integrálás során nem lépnek fel. A közelítő formulák látszólag hasonlóak, de ekkor tulajdonképpen egy súlyozott átlag meghatározásáról van szó, ezért a kiegyszerűsödés sem lép fel.

Illusztrációként álljon itt három egyszerű integráló összefüggés!

 

téglány (Euler) integrálás

(1.167)

 

trapéz integrálás

(1.168)

 

Adams-Bashforth integrálás

(1.169)

1.3.1.3. Összehasonlító mintapélda megoldása differenciáló és integráló algoritmussal

Illusztrációként tekintsük az egytömegű csillapított lengőrendszert (1.21. ábra - Egytömegű csillapított lengőrendszer), ahol m=1[kg];   k=3 ;   s=2 ; és a gerjesztés pedig: F=2[N], egységugrás alakú!

Egytömegű csillapított lengőrendszer
1.21. ábra - Egytömegű csillapított lengőrendszer


A rendszert a következő differenciálegyenlettel lehet leírni:

 

(1.170)

melynek pontos megoldása:

 

(1.171)

Először differenciálással oldjuk meg a feladatot. Ekkor az 1.3.1. szakasz - Integrálást vagy differenciálást alkalmazunk a differenciálegyenlet megoldásához fejezetben leírtaknak megfelelően átalakított egyenlet:

 

(1.172)

Ha az explicit megközelítést választjuk, akkor az (1.166) összefüggést kell alkalmazni. A számítások elkezdése azonban nehézségekbe ütközik, hiszen a formula három különböző időpontbeli érték ismeretét kívánja meg, és ez kezdetben nem áll rendelkezésünkre. „Kegyes csalással” a pontos megoldásból számolhatók ki a hiányzó értékeket az első három lépés esetén (Ezt általában nem ismerjük, de most csak az a cél, hogy a módszer használhatatlanságát illusztráljuk!).

Ennek megfelelően az (1.5. táblázat - Számítási algoritmus a mintapéldához differenciálással) táblázatban lehet az algoritmust összefoglalni (ahol a fizikai mennyiségeket paraméteresen jelöltük).

1.5. táblázat - Számítási algoritmus a mintapéldához differenciálással

i

0

1

2

3

i


A számításokat táblázatkezelő rendszerrel végeztük el. Az „eredményeket” az (1.6. táblázat - Számítási eredmények a mintapéldához differenciálással) táblázat tartalmazza esetén.

1.6. táblázat - Számítási eredmények a mintapéldához differenciálással

0

0

0

2

0,1

0,009056

0,172213

1,465248

0,2

0,032859

0,296821

1,043819

0,3

0,045159

0,459227

0,532002

0,4

-0,0212

-0,04954

2,191014

0,5

11,34291

-1,84356

-15,1551

0,6

-408,038

285,0984

-37,2193

0,7

12383,25

-10655

7200,46

0,8

-350205

326072,8

-277806

0,9

9593721

-9256578

8582296

1,0

-2,6E+08

2,54E+08

-2,4E+08


Az eredményekből jól látszik, hogy semmi közük nincs a valóságos értékekhez! A lépésköz változtatásával a helyzet nem javul! A táblázat első 3 sora tartalmazza a pontos értékeket.

Sokkal jobb eredményhez juthatunk, ha implicit megközelítéssel élünk. Ekkor az (1.163) összefüggés mellett szükségünk van még a második differenciálhányados közelítő képletére is:

 

(1.173)

Ezeket behelyettesítve a differenciálegyenletbe, és alkalmazva az jelölést a következő alakhoz jutunk:

 

(1.174)

Ebből kifejezhető az elmozdulás következő időpillanatbeli értéke:

 

(1.175)

Most már összeállíthatjuk az algoritmust leíró táblázatot (1.7. táblázat - Számítási algoritmus a mintapélda megoldásához differenciálással), amelyben az1.165. összefüggést fogjuk alkalmazzuk. Az első lépéseknél itt is van egy kis gond (hiányoznak értékek), de ezt az egyszerű differenciahányados alkalmazásával át lehet hidalni.

1.7. táblázat - Számítási algoritmus a mintapélda megoldásához differenciálással

i

0

1

2

i


Az integrálásnál csak az egyszerűbben megvalósítható explicit eljárással foglalkozunk, így az átalakított differenciálegyenlet:

 

(1.176)

Az algoritmust most is célszerű táblázatban (1.8. táblázat - Számítási algoritmus a mintapélda megoldásához integrálással) összefoglalni (az 1.167, 1.168. és 1.169. összefüggések alkalmazásával):

1.8. táblázat - Számítási algoritmus a mintapélda megoldásához integrálással

i

0

1

2

i


A számításokat most is táblázatkezelő programmal végeztük el. Az (1.22. ábra - A pontos érték összehasonlítása a numerikus differenciálást és integrálást alkalmazó algoritmussal) ábrán látszik, hogy az integrálás eredménye és a pontos érték egy vonalvastagságon belül helyezkedik el, azonban helyenként eltér tőle.

A pontos érték összehasonlítása a numerikus differenciálást és integrálást alkalmazó algoritmussal
1.22. ábra - A pontos érték összehasonlítása a numerikus differenciálást és integrálást alkalmazó algoritmussal


Összefoglalva megállapíthatjuk, hogy integrálással könnyebben, pontosabb eredményt értünk el. Természetesen egyetlen példából a pontosságra vonatkozóan általánosítani nem szabad. Az algoritmus előállítása azonban az implicit technika miatt sokkal munkaigényesebb. Amennyiben -et nem lehet kifejezni zárt alakban, akkor az algoritmust még ki kell egészíteni egy gyökkereső módszerrel is (lásd a 7. fejezet - Numerikus módszerek fejezetet)!

1.3.2. Átviteli függvények számítási blokkdiagramjának meghatározása

A differenciálegyenlettel leírt folytonos rendszer számítási blokkdiagramjának meghatározásával a rendszer megoldását biztosítjuk minden egyes mintavételi (számítási) időpontban, tetszőleges bemenő jel esetén.

Az arányos időállandóval rendelkező rendszerek jellemzője, hogy a differenciálegyenlet tartalmazza mind a bemenő jelet, mind pedig a kimenő jelet. A tároló tulajdonságot a kimenő jel derivált értékeinek darabszáma határozza meg, így első kimeneti jel deriváltat tartalmazó rendszert egytárolósnak nevezzük. A kimeneti jel magasabb deriváltjait tartalmazó rendszerek tárolóinak száma megegyezik a kimenő jel legmagasabb (idő szerinti) deriváltjának fokszámával. Más megfogalmazásban, a rendszer tárolóinak darabszámát a folytonos rendszer karakterisztikus polinomjának fokszáma határozza meg.

A differenciálhányadosok legmagasabb fokszámának meghatározásánál a nulladik (0.) derivált érték maga a jel, míg a negatív kitevőjű derivált értékek integrálási műveletet jelölnek.

 

(1.177)

 

(1.178)

 

(1.179)

A folytonos rendszerek időfüggő differenciálegyenletének megoldásához ki kell fejeznünk a kimenő jel legmagasabb deriváltjának értékét. A megoldáshoz felhasználható alapelemek (integrátorok, összeadók és együttható-szorzóelemek) segítségével létre kell hoznunk a számításokat elvégző blokkdiagramot.

Ezzel a blokk diagrammal nemcsak egy bemenő jelhez vagy bemenő jel típushoz tartozó egyedi megoldást kapunk meg, hanem az összes bemenő jel esetén megkapjuk a rendszer válaszát az adott bemenő jelre. Más szavakkal, a differenciálegyenlet számítási blokkdiagramja a rendszer viselkedését írja le nem csak egy adott bemeneti jelhez tartozó partikuláris megoldást.

A számítási blokkdiagram meghatározásánál alapvető szempontok a folytonos rendszert leíró paraméterek ( differenciálegyenlet-együtthatók ) egyszerű változtatási lehetősége és a blokkdiagram felépítéséhez alkalmazott elemek számának minimalizálása . A felhasznált elemek minimalizálása még azokba az időkbe nyúlik vissza, amikor a számítási blokkdiagramot analóg számítógépi elemekből építették fel, és nem volt közömbös, hogy a kapcsoláshoz hány darab műveletvégző elemet alkalmaznak (teljesítményfelvétel, meghibásodás szempontjából).

Az F(y(t), u(t),t) folytonos, lineáris állandó együtthatós differenciálegyenlet általános alakja:

 

(1.180)

ahol

 

a 0 ..a n

a differenciálegyenlet kimenő jelének és deriváltjainak együtthatói,

 

b 0 ..b m

a differenciálegyenlet bemenő jelének és deriváltjainak együtthatói,

 

y(t)

a rendszer kimenő jele,

 

n

a kimenő jel legmagasabb deriváltjának fokszáma,

 

u(t)

a rendszer bemenő jele ,

 

m

a bemenő jel legmagasabb deriváltjának fokszáma,

 

t

időváltozó.

Ezt a részletesen kifejtett alakot tömörebben is felírhatjuk a következő formában

 

(1.181)

 

(1.182)

Ha ebből az alakból kifejezzük a kimenő jel legmagasabb idő szerinti deriválját, egy olyan általános számítási formulát kapunk, amely folytonos és mintavételes rendszerek esetén egyaránt alkalmazható. Mintavételes rendszeren a folytonos rendszer digitális számítógéppel történő számítását értjük.

 

(1.183)

A számítási blokkdiagram létrehozásának következő lépése, hogy a kimenő jel legmagasabb deriváltjának integrálásával létrehozzuk az alacsonyabb fokszámú deriváltakat, és ezeket is felhasználjuk a legmagasabb derivált kiszámításához.

A számítási blokkdiagram analóg működésű elemekkel történő megvalósításánál az alacsonyabb fokszámú derivált értékek kiszámítását valamint a legmagasabb derivált meghatározásához szükséges jeleket az analóg működésű elemek biztosítják.

Digitális számítógépes megvalósításnál ez nem lehetséges, mert ezzel egy algebrai hurkot hozzunk létre. Az algebrai hurok olyan számítási képlet, amelynél a kiszámítandó mennyiség saját maga is részt vesz saját értékének a meghatározásában, egy bemeneti komponensként. Ezt nem lehet megvalósítani, ezért a számítási képletben egy késleltetést alkalmazunk a kiszámítandó változóra, amely így egy mintavételi időlépéssel korábbi értéket alkalmaz a számítás során. Ezzel egy kismértékű időbeni elcsúszást okozunk, hiszen a k. időpillanatbeli jelértéket egy (k-1). időpillanatbeli értékkel határozzuk meg, de másképp nem végezhetnénk el a számítást.

Analóg áramkörökkel megvalósított integráló tag a bemeneti jelen előjelfordítást végez. Hogy ezt a specialitást ne kelljen a blokkdiagramba továbbvinnünk, és folyamatosan a jelek előjelfordítását figyelnünk, a mintapéldákban olyan integráló tagot alkalmazzuk, amely nem forít előjelet. Ha a rendszer megvalósítását analóg áramkörökkel végezzük természtesen a jelek előjelfordítását is számba kell vennünk!

1.3.2.1. Arányos típusú átviteli függvények számítási blokkdiagramjának meghatározása PT1, PT2

Az arányos típusú tagok (P = Proportional) jellemző tulajdonsága, hogy rendszerleíró differenciálegyenletükben szerepelnek a bemenő és kimenő jelek valamint a kimenő jel deriváltjai. A kimenő jel deriváltjainak darabszáma alapján kapjuk meg, hogy az adott rendszer hány darab tárolóval rendelkezik.

Az egytárolós, arányos tag (PT1) átviteli függvénye :

 

(1.184)

Az egytárolós, arányos tag (PT1) differenciálegyenlete:

 

(1.185)

 

(1.186)

 

(1.187)

Az egytárolós, arányos tag (PT1) számítási blokkdiagramja:

A PT1 tag számítási blokkdiagramja
1.23. ábra - A PT1 tag számítási blokkdiagramja


A kéttárolós, arányos tag (PT2) átviteli függvénye (1. verzió):

 

(1.188)

A kéttárolós, arányos tag (PT2) differenciálegyenlete (1. verzió):

 

(1.189)

 

(1.190)

 

(1.191)

A kéttárolós, arányos tag (PT2) számítási blokkdiagramja (1. verzió):

A PT2 tag számítási blokkdiagramja (1. verzió)
1.24. ábra - A PT2 tag számítási blokkdiagramja (1. verzió)


Másodrendű tag (PT2) átviteli függvénye (2. verzió):

 

(1.192)

Másodrendű tag (PT2) differenciálegyenlete (2. verzió)::

 

(1.193)

 

(1.194)

 

(1.195)

mindkét oldalt integrálva az idő szerint a következő egyenletet kapjuk:

 

(1.196)

Másodrendű tag (PT2) számítási blokkdiagramja (2. verzió):

A másodrendű tag (PT2) számítási blokkdiagramja (2. verzió)
1.25. ábra - A másodrendű tag (PT2) számítási blokkdiagramja (2. verzió)


1.3.2.2. Integráló típusú átviteli függvények számítási blokkdiagramjának meghatározása IT1, IT2

Az integráló típusú tagok (I = Integrate) jellemző tulajdonsága, hogy rendszerleíró differenciálegyenletükben nem szerepel a kimenő jel. Szerepelnek viszont a kimenő jel magasabb deriváltjai. A kimenő jel deriváltjainak darabszáma alapján kapjuk meg, hogy az adott rendszer hány darab tárolóval rendelkezik.

Az egytárolós, integráló tag (IT1) átviteli függvénye :

 

(1.197)

Az egytárolós, integráló tag (IT1) differenciálegyenlete:

 

(1.198)

 

(1.199)

 

(1.200)

Az egytárolós, integráló tag (IT1) számítási blokkdiagramja:

Az IT1 tag számítási blokkdiagramja
1.26. ábra - Az IT1 tag számítási blokkdiagramja


A kéttárolós, integráló tag (IT2) átviteli függvénye :

 

(1.201)

A kéttárolós, integráló tag (IT2) differenciálegyenlete:

 

(1.202)

 

(1.203)

 

(1.204)

A kéttárolós, integráló tag (IT2) számítási blokkdiagramja:

Az IT2 tag számítási blokkdiagramja
1.27. ábra - Az IT2 tag számítási blokkdiagramja


1.3.2.3. Differenciáló típusú átviteli függvények számítási blokkdiagramjának meghatározása DT1, DT2

A differenciáló típusú tagok (D = Differential) jellemző tulajdonsága, hogy rendszerleíró differenciálegyenletükben nem szerepel a bemenő jel, csak a bemeneti jel idő szerinti differenciálhányadosa. A rendszer bemenetén csak a bemeneti jelet tudjuk megadni, a differenciálhányadosát azonban nem. Ezért, a rendszert számító blokkdiagramban a bemenő jelből elő kell állítani a bemeneti jel derivált értékét, de ehhez a művelethez csak integráló tulajdonságú tagot alkalmazhatunk.

Szerepelnek még az ilyen típusú rendszerekben a kimenő jel magasabb deriváltjai is, amelyek darabszáma alapján tudjuk megállapítani, hogy az adott rendszer hány darab tárolóval rendelkezik.

Az egytárolós, differenciáló tag (DT1) átviteli függvénye:

 

(1.205)

Az egytárolós, differenciáló tag (DT1) differenciálegyenlete:

 

(1.206)

 

(1.207)

 

(1.208)

 

(1.209)

Az egytárolós, differenciáló tag (DT1) számítási blokkdiagramja:

A DT1 tag számítási blokkdiagramja
1.28. ábra - A DT1 tag számítási blokkdiagramja


A kéttárolós, differenciáló tag (DT2) átviteli függvénye:

 

(1.210)

A kéttárolós, differenciáló tag (DT2) differenciálegyenlete:

 

(1.211)

 

(1.212)

 

(1.213)

 

(1.214)

 

(1.215)

A kéttárolós, differenciáló tag (DT2) számítási blokkdiagramja:

A DT2 tag számítási blokkdiagramja
1.29. ábra - A DT2 tag számítási blokkdiagramja


1.3.2.4. Előretartó-késleltető tag (Lead–lag compensator) számítási blokkdiagramjának meghatározása

Az előretartó-késleltető tag (Lead-Lag) átviteli függvénye:

 

(1.216)

Az előretartó-késleltető tag (Lead-Lag) differenciálegyenlete:

 

(1.217)

 

(1.218)

 

(1.219)

 

(1.220)

Az előretartó-késleltető tag (Lead-Lag) számítási blokkdiagramja:

Az előretartó-késleltető tag számítási blokkdiagramja
1.30. ábra - Az előretartó-késleltető tag számítási blokkdiagramja


1.3.3. Alapelemek különböző összekapcsolásából keletkező részrendszerek

Nagyméretű, több blokkból álló rendszerek hálózatának megvalósításához nyújtanak segítséget a következő algoritmusok, amelyek több rendszertechnikai blokk összekapcsolásának eredményét adják meg folytonos és mintavételes rendszereknél. A mintapéldákat folytonos rendszerek esetén mutatjuk be, de az algoritmusok változatlan formában alkalmazhatók mintavételes rendszerek blokkjai esetén is.

1.3.3.1. Alapelemek összekapcsolásánál alkalmazott műveletek

A G(s) átviteli függvény számlálójával (numerator) és nevezőjével (denominator), mint polinomokkal végezhetünk műveleteket: polinomok összeadását, kivonását és szorzását. Ezeket a műveleteket a következő módon valósíthatjuk meg:

Polinomok összeadása

 

(1.221)

ahol

 

R

a polinomok összeadásával létrehozott eredő polinom, melynek fokszáma = max(n,m),

 

i

= 0..max(n,m) a művelet indexének értéke,

 

P

az első összeadandó polinom,

 

n

a P polinom fokszáma,

 

Q

a második összeadandó polinom,

 

m

a Q polinom fokszáma.

A polinomok összeadásával keletkezett polinom (R) fokszáma az összeadandó polinomok fokszáma közül a nagyobb lesz.

Polinomok kivonása

 

(1.222)

ahol

 

R

a polinomok kivonásával létrehozott eredő polinom, melynek fokszáma = max(n,m),

 

i

= 0..max(n,m) a művelet indexének értéke,

 

P

a kisebbítendő polinom,

 

n

a P polinom fokszáma,

 

Q

a kivonandó polinom,

 

m

a Q polinom fokszáma.

A polinomok kivonásával keletkezett polinom (R) fokszáma a kisebbítendő és kivonandó polinomok fokszáma közül a nagyobbal egyezik meg.

Polinomok szorzása

 

(1.223)

ahol

 

R

a polinomok szorzásával létrehozott eredő polinom, melynek fokszáma = n+m,

 

P

az első szorzandó polinom,

 

i

= 0..n  a P polinom indexének értéke,

 

Q

a második szorzandó polinom,

 

j

= 0..m  a Q polinom indexének értéke.

A bemutatott polinom műveletek segítségével lehetőségünk van az átviteli függvény alakban megadott részrendszerek tetszőleges topológiával történő összekapcsolására. Minden bonyolult felépítésű rendszer topológia felbontható a részelemek soros, párhuzamos és visszacsatolt kapcsolásából kialakított részhálózatokra, amelyek a felsorolt műveletekkel ismét összekapcsolhatók. Eredményül a bonyolult felépítésű topológia megadott bemenet és kimenet közötti átviteli függvényét kapjuk.

A következő fejezetekben bemutatjuk az alapelemek három alapszintű összekapcsolásával létrejövő részrendszereket (átviteli függvényeket).

1.3.3.2. Alapelemek soros összekapcsolásából keletkező részrendszer

Két alapelem soros kapcsolását az (1.31. ábra - Átviteli függvények soros kapcsolásának eredő átviteli függvénye) ábrán láthatjuk.

Átviteli függvények soros kapcsolásának eredő átviteli függvénye
1.31. ábra - Átviteli függvények soros kapcsolásának eredő átviteli függvénye


Az ábrán használt jelölések:

 

C(s)

átviteli függvény,

 

G(s)

átviteli függvény,

 

U(s)

a bemenő jel Laplace-transzformáltja,

 

Y(s)

a kimenő jel Laplace-transzformáltja.

A soros kapcsolás eredő átviteli függvénye (G serial (s))

 

(1.224)

 

(1.225)

ahol

 

G serial (s)[num]

a soros kapcsolás eredő átviteli függvényének számlálója,

 

G serial (s)[den]

a soros kapcsolás eredő átviteli függvényének nevezője,

 

C(s)[num]

az átviteli függvény számlálója,

 

C(s)[den]

az átviteli függvény nevezője,

 

G(s)[num]

az átviteli függvény számlálója,

 

G(s)[den]

az átviteli függvény nevezője.

1.3.3.3. Alapelemek párhuzamos összekapcsolásából keletkező részrendszer

Két alapelem párhuzamos összekapcsolását az (1.32. ábra - Átviteli függvények párhuzamos kapcsolásának eredő átviteli függvénye) ábrán láthatjuk.

Átviteli függvények párhuzamos kapcsolásának eredő átviteli függvénye
1.32. ábra - Átviteli függvények párhuzamos kapcsolásának eredő átviteli függvénye


Az ábrán szereplő jelölések:

 

C(s)

átviteli függvény,

 

G(s)

átviteli függvény,

 

U(s)

a bemenő jel Laplace-transzformáltja,

 

Y(s)

a kimenő jel Laplace-transzformáltja.

A párhuzamos kapcsolás eredő átviteli függvénye (G parallel (s)):

 

(1.226)

 

(1.227)

 

(1.228)

ahol

 

G parallel (s)[num]

a párhuzamos kapcsolás eredőátviteli függvényének számlálója,

 

G parallel (s)[den]

a párhuzamos kapcsolás eredő átviteli függvényének nevezője,

 

C(s)[num]

az átviteli függvény számlálója,

 

C(s)[den]

az átviteli függvény nevezője,

 

G(s)[num]

az átviteli függvény számlálója,

 

G(s)[den]

az átviteli függvény nevezője.

1.3.3.4. Alapelemek negatív visszacsatolt összekapcsolásából keletkező részrendszer

Két alapelem negatív visszacsatolt kapcsolását az (1.33. ábra - Átviteli függvények negatív visszacsatolt kapcsolásának eredő átviteli függvénye) ábrán láthatjuk.

Átviteli függvények negatív visszacsatolt kapcsolásának eredő átviteli függvénye
1.33. ábra - Átviteli függvények negatív visszacsatolt kapcsolásának eredő átviteli függvénye


Az (1.33. ábra - Átviteli függvények negatív visszacsatolt kapcsolásának eredő átviteli függvénye) ábra jelölései:

 

C(s)

átviteli függvény,

 

G(s)

átviteli függvény,

 

U(s)

a bemenő jel Laplace-transzformáltja,

 

Y(s)

a kimenő jel Laplace-transzformáltja.

A negatív visszacsatolt kapcsolás eredő átviteli függvénye (G closed_loop (s)):

 

(1.229)

 

(1.230)

 

(1.231)

 

(1.232)

ahol

 

G closed_loop (s)[num]

a negatív visszacsatolt kapcsolás eredő átviteli függvényének számlálója,

 

G closed_loop (s)[den]

a negatív visszacsatolt kapcsolás eredő átviteli függvényének nevezője,

 

C(s)[num]

az átviteli függvény számlálója,

 

C(s)[den]

az átviteli függvény nevezője,

 

G(s)[num]

az átviteli függvény számlálója,

 

G(s)[den]

az átviteli függvény nevezője.

1.4. Átviteli függvény számítási blokkdiagramjának megvalósítása

Átviteli függvényeket megvalósító rendszereinkben a leggyakrabban egy bemenetű és egy kimenetű (SISO) rendszereket készítünk. Ezek a következő átviteli függvényalakkal rendelkeznek:

 

(1.233)

ahol

 

U(s)

a bemenő jel Laplace-transzformáltja,

 

m

az átviteli függvény számlálójában előforduló legmagasabb s hatvány,

 

Y(s)

a kimenő jel Laplace-transzformáltja,

 

n

az átviteli függvény nevezőjében előforduló legmagasabb s hatvány.

Az átviteli függvény megvalósíthatóságához teljesülnie kell az m<=n feltételnek!

1.4.1. Átviteli függvény számítási blokkdiagramja soros kapcsolású részelemekkel

A G(s) átviteli függvény számítási blokkdiagramjának megvalósításához létrehozhatunk olyan alakot, amelynél az egyszerűen számítható részelemek soros kapcsolásával alakítjuk ki a bonyolult felépítésű átviteli függvényt.

 

(1.234)

ahol

PT1 típusú tag

 

(1.235)

Előretartó-késleltető típusú tag

 

(1.236)

PT2 típusú tag (2. verzió)

 

(1.237)

Átviteli függvény számítását megvalósító blokkdiagram soros kapcsolású elemekkel
1.34. ábra - Átviteli függvény számítását megvalósító blokkdiagram soros kapcsolású elemekkel


Az egyes alaptagok számítási blokkdiagramjának kialakítását az 1.3.2. szakasz - Átviteli függvények számítási blokkdiagramjának meghatározása fejezetben mutattuk be.

Mintapélda:

Határozzuk meg a következő átviteli függvény számítási blokkdiagramját sorosan kapcsolt részrendszerekkel!

 

(1.238)

Az átviteli függvényt sorosan kapcsolt részrendszerekre bontjuk fel, amelynek egyik lehetséges megoldása szerepel a következő függvényként.

 

(1.239)

 

(1.240)

 

(1.241)

Átviteli függvény számítását megvalósító blokkdiagram sorosan kapcsolt elemekkel (mintapélda)
1.35. ábra - Átviteli függvény számítását megvalósító blokkdiagram sorosan kapcsolt elemekkel (mintapélda)


1.4.2. Átviteli függvény számítási blokkdiagramja párhuzamos kapcsolású részelemekkel

A G(s) átviteli függvény számítási blokkdiagramjának megvalósításához létrehozhatunk olyan alakot is, amelynél egyszerűen számítható részelemek párhuzamos kapcsolásával alakítjuk ki az összetett átviteli függvényt.

 

(1.242)

ahol

PT1 típusú tag

 

(1.243)

Előretartó-késleltető típusú tag

 

(1.244)

PT2 típusú tag (2. verzió)

 

(1.245)

Az egyes alaptagok számítási blokkdiagramjának kialakítását az 1.3.2. szakasz - Átviteli függvények számítási blokkdiagramjának meghatározása fejezetben mutattuk be.

Az átviteli függvény számítását megvalósító blokkdiagram párhuzamos kapcsolású elemekkel
1.36. ábra - Az átviteli függvény számítását megvalósító blokkdiagram párhuzamos kapcsolású elemekkel


Mintapélda:

Határozzuk meg a következő átviteli függvény számítási blokkdiagramját párhuzamosan kapcsolt részrendszerekkel!

 

(1.246)

Az átviteli függvényt párhuzamosan kapcsolt részrendszerekre bontjuk fel, amelynek egyik megoldása szerepel a következő összefüggésben.

 

(1.247)

 

(1.248)

 

(1.249)

Az átviteli függvény számítását megvalósító blokkdiagram párhuzamosan kapcsolt elemekkel (mintapélda)
1.37. ábra - Az átviteli függvény számítását megvalósító blokkdiagram párhuzamosan kapcsolt elemekkel (mintapélda)


1.4.3. Átviteli függvény megvalósítása közvetlen programozással

A G(s) átviteli függvény számítási blokkdiagramját úgy is megvalósíthatjuk, hogy számlálót olyan nulla(0) értékű együtthatókkal egészítjük ki, amelyek lehetővé teszik az azonos s hatványkitevőjű számítási elemek párosítását. Az algoritmus segítségével az adott átviteli függvény megvalósításához minimális számú integráló elemet alkalmazunk.

 

(1.250)

Az átviteli függvény alakból kapjuk:

 

(1.251)

Mindkét oldalt -el szorozva a következő összefüggést kapjuk:

 

(1.252)

ahol  k = nm.

Ha az egyenlet jobb oldalát kiegészítjük b i =0 együtthatójú tagokkal ahol   i = m+1, m+2, …. n;  akkor a következő egyenlet írható fel:

 

(1.253)

amelyből  az an-el  mindkét oldalt elosztva a következő egyenlőséget kapjuk:

 

(1.254)

amelyből

 

(1.255)

( b n , b n-1 , ….. b n-k =0, ahol  k = n-m-1)

A közvetlen programozás blokkdiagramja:

Az átviteli függvény számítását megvalósító blokkdiagram közvetlen programozással
1.38. ábra - Az átviteli függvény számítását megvalósító blokkdiagram közvetlen programozással


Mintapélda:

Határozzuk meg a következő átviteli függvény számítási blokkdiagramját közvetlen programozással!

 

(1.256)

 

(1.257)

Az átviteli függvény számítását megvalósító blokkdiagram közvetlen programozással (mintapélda)
1.39. ábra - Az átviteli függvény számítását megvalósító blokkdiagram közvetlen programozással (mintapélda)


1.4.4. Átviteli függvény megvalósítása M-programozással

A G(s) átviteli függvény számítási blokkdiagramját a leggyakrabban az M-programozási alak alkalmazásával valósítjuk meg. Ezt a függvényszámítási algoritmust alkalmazzuk a digitális számítógépen megvalósított folytonos rendszerek szimulációjánál, illetve a digitális szűrők számításánál. Az algoritmus segítségével az adott átviteli függvény megvalósításához minimális számú integráló elemet alkalmazunk.

 

(1.258)

Megvalósítható rendszereknél  .

A számlálót és nevezőt elosztva sn-el, kapjuk a következő alakot:

 

(1.259)

amelyből

 

(1.260)

ahol

 

(1.261)

 

(1.262)

mivel ezért

 

(1.263)

Az M-programozás blokkdiagramja:

Az átviteli függvény számítását megvalósító blokkdiagram M-programozással
1.40. ábra - Az átviteli függvény számítását megvalósító blokkdiagram M-programozással


az ábrán:

 

a jel idő szerinti (k)-ik integráltjának időfüggvénye.

Mintapélda:

Határozzuk meg a következő átviteli függvény számítási blokkdiagramját M-programozással!

 

(1.264)

 

(1.265)

 

(1.266)

 

(1.267)

Az M-programozás mintapélda blokkdiagramja:

Átviteli függvény számítását megvalósító blokkdiagram M-programozással (mintapélda)
1.41. ábra - Átviteli függvény számítását megvalósító blokkdiagram M-programozással (mintapélda)


ahol

 

a jel idő szerinti (k)-ik integráltjának időfüggvénye k=1,2,3.

1.4.5. Állapottér módszer számítási blokkdiagramjának meghatározása SISO rendszereknél

Az F(y(t), u(t),t) lineáris, állandó együtthatós differenciálegyenlet (SISO rendszer)

 

(1.268)

leírása állapottér alakban a következő egyenletek segítségével valósítható meg.

 

(1.269)

ahol

 

az állapottér-leírási mód mátrixai,

 

u(t)

a bemenő jel,

 

y(t)

a kimenő jel,

 

az állapotváltozók vektorának idő szerinti deriváltja,

 

x (t)

az állapotváltozók vektora.

Ebből felírhatjuk az állapottér alakkal meghatározott kimenő jel számítási blokkdiagramját az állapotmátrixok és az állapotvektor segítségével.

Az állapotvektor egyes elemeinek meghatározása a következő módon történik a rendszerleíró Az F(y(t), u(t), t) differenciálegyenlet együtthatóinak alkalmazásával:

 

(1.270)

állapotváltozó választásával a többi állapotváltozót a következő módon választva,

 

(1.271)

 

(1.272)

 

 
 

 
 

(1.273)

 

(1.274)

 

(1.275)

A rendszerleíró differenciálegyenletből meghatározhatjuk az állapottér mátrixokat.

 

 
 

 

Az átviteli függvény számítását megvalósító blokkdiagram állapottér-leírással
1.42. ábra - Az átviteli függvény számítását megvalósító blokkdiagram állapottér-leírással


Mintapélda:

Határozzuk meg a következő átviteli függvény számítási blokkdiagramját állapottér programozással!

 

(1.276)

 

(1.277)

 

(1.278)

 

(1.279)

Az együtthatók értékeivel (b 3 = b 2 = 0):

 

(1.280)

 

(1.281)

Az átviteli függvény számítása állapottér-leírással (LabVIEW mintapélda)
1.43. ábra - Az átviteli függvény számítása állapottér-leírással (LabVIEW mintapélda)


Az átviteli függvény számítását megvalósító blokkdiagram állapottér-leírással (LabVIEW mintapélda adatok)
1.44. ábra - Az átviteli függvény számítását megvalósító blokkdiagram állapottér-leírással (LabVIEW mintapélda adatok)


Az átviteli függvény számítását megvalósító blokkdiagram állapottér-leírással (LabVIEW mintapélda diagram panel)
1.45. ábra - Az átviteli függvény számítását megvalósító blokkdiagram állapottér-leírással (LabVIEW mintapélda diagram panel)


1.4.6. Állapottér-leírás, állapottér-reprezentációk kapcsolata

Az állapottér típusú rendszerleírást általánosan alkalmazzuk több-bemenetű és több kimenetű rendszerek vizsgálatához, illetve időfüggő vagy nemlineáris rendszerparaméterek esetén.

Egy rendszer leírásához szükséges állapotváltozókat egy differenciálegyenlettel leírt rendszer kimeneti jelének és deriváltjainak lineáris kombinációjából állíthatjuk elő. Ennek alapján ugyanazon rendszer leírásához végtelen sok állapottér alak tartozik, hiszen a kimenő jelből és deriváltjaiból végtelen sok kombináció állítható elő. Ez a tisztán matematikai megközelítés az állapotváltozók kiválasztásához a mérnöki gyakorlatban praktikus szempontok figyelembevételével módosul.

A legfontosabb szempont az állapotváltozók megválasztásánál, hogy mérhetők, illetve befolyásolhatók legyenek. További szempont, hogy a kiválasztott állapotváltozók segítségével meghatározott rendszerkimeneti adatok egyszerűen értelmezhetők legyenek, illetve egyszerűen lehessen őket meghatározni az állapotváltozókkal.

A modellezéskor létrehozott állapotváltozós rendszer szimulációs algoritmusának adott szempontok szerinti megvalósításához ezért szükség van arra, hogy az állapotváltozókat és ezzel együtt az egész korábbi állapotváltozókkal leírt rendszeregyenleteket (mátrixokat) egy új állapotváltozó vektorral leírt rendszer-egyenletrendszerbe transzformáljuk.

Ezt a transzformációt valósítja meg az állapotváltozós rendszerek transzformációs mátrixa (  ), amely a kiindulási rendszer állapotvektorából az áttranszformált rendszer állapotvektorába ( x trans ) viszi át az állapotmennyiségeket az alábbi módon:

 

(1.282)

ahol   n x n méretű nem szinguláris transzformációs mátrix, és .

Ha az   x  állapotvektor az mátrixokkal leírt állapottér-reprezentációhoz tartozik, azaz

 

(1.283)

akkor meghatározhatjuk az állapotvektorhoz az

 

(1.284)

egyenletekben szereplő mátrixokat.

Mivel , ezt behelyettesítve az 1.284 egyenletbe kapjuk, hogy

 

(1.285)

azaz

 

(1.286)

tehát

 

(1.287)

Az  és   mátrixok közötti fenti kapcsolatot hasonlósági transzformációnak nevezzük. Azt mondhatjuk, hogy egy rendszer adott dimenziós állapottér-reprezentációi egymásból hasonlósági transzformációval megkaphatók. [4.]

A következőkben felírjuk az irányíthatósági alak előállítását biztosító (controllability) transzformációs mátrix összefüggését:

 

(1.288)

ahol az irányíthatósági mátrix

 

(1.289)

és egy n x n dimenziós Toeplitz-mátrix:

 

(1.290)

amelynek elemei a karakterisztikus egyenlet együtthatói:

 

(1.291)

Ekkor az irányíthatósági állapottér alak az 1.287 összefüggések alapján:

 

(1.292)

Az irányíthatósági állapottér alak blokkdiagramja:

Az irányíthatósági állapottér alak blokkdiagramja
1.46. ábra - Az irányíthatósági állapottér alak blokkdiagramja


Egy állapottér-reprezentáció diagonális alakjának előállításához a következő transzformációs mátrixot kell alkalmazni:

 

(1.293)

és egy n x n dimenziós Vandermonde-mátrix:

 

(1.294)

ahol értékek

 

(1.295)

a karakterisztikus egyenlet gyökei i = 1..n.

Ekkor a diagonális állapottér alak az 1.287 összefüggések alapján:

 

(1.296)

A diagonális állapottér alak blokkdiagramja:

A diagonális állapottér alak blokkdiagramja
1.47. ábra - A diagonális állapottér alak blokkdiagramja


Az ábrán a b i együtthatók a (diagonális) mátrix elemei, a c i értékek pedig a (diagonális) mátrix elemei. [4.]

1.5. Rendszer-transzformációk

Ebben a fejezetben a korábban ismertetett matematikai rendszerleírások, vagyis az átviteli függvény polinomiális és zérus-pólus-erősítés alakja, valamint az állapottér-leírás közötti áttérések matematikai alapjaival foglalkozunk. Az m-script alapú programrendszerekben, így a MATLAB® programban (Control System Toolbox) és számos hasonló rendszerben (pl. GNU Octave signal csomag, NI LabVIEWMathScript, Scilab CACSD (Computer Aided Control System Design) utasításkészlet) az említett háromféle matematikai modell angol elnevezéséből származó két (esetleg három) betűs rövidítéseket használnak.

  • sos: second-order section , átviteli függvénnyel adott másodrendű rendszerek sorba kapcsolt eredője (GNU Octave,MATLAB,MathScript)

  • ss: state space , állapottér modell (GNU Octave,MATLAB,MathScript, Scilab)

  • tf: transfer function , polinomiális alakú átviteli függvény (GNU Octave, MATLAB, MathScript, Scilab)

  • zp: zero-pole(-gain), zérus-pólus-erősítés alakú átviteli függvény (GNU Octave, MATLAB)

  • zpk: zero-pole(-gain) , zérus-pólus-erősítés alakú átviteli függvény (MATLAB,Math-Script)

Az egyes modellek közötti transzformációt biztosító függvények elnevezése ezeket a rövidítéseket használja úgy, hogy először szerepel az eredeti rendszer, ezt követi az angol to (-ba, -be) helyettesítésére gyakran használt 2 (MathScript-ben _to_), végül pedig a célrendszer formátuma.

1.9. táblázat - Rendszer-transzformációs utasítások


A MATLAB®-ban előforduló utasítások listája:

  • zp2tf,

  • ss2tf,

  • tf2zp,

  • ss2zp,

  • tf2ss,

  • zp2ss,

  • ss2ss (különböző struktúrájú állapottér modellek közötti áttérésre).

Természetesen a GNU Octave, MathScript és Scilab környezetben (és a nem említett többiben) nem feltétlenül szerepel az összes említett utasítás, viszont vannak a MATLAB®-ból hiányzó, azonban kifejezetten hasznosnak számító egyéb konverziós lehetőségek.

1.5.1. Átviteli függvény (tf) transzformációk {ss2tf,  zp2tf}

A függvény három paramétere a zérusok Z-vel jelölt vektora, a pólusok P-vel jelölt vektora és a K skalár erősítési tényező. A függvény két visszatérési értéke a számláló polinom (num) és a nevező polinom (den). Konjugált komplex gyökpár esetén természetesen a gyökpár mindkét elemének szerepelni kell a bemenet megfelelő (zérus, pólus) polinomjában.

[num,den] = ZP2TF(Z,P,K)

MATLAB-ban SISO rendszer esetén a két bemenő polinomot oszlopvektorként kell megadni.

A függvény s csökkenő hatványai szerint adja meg a számláló és a nevező együtthatóit.

>_> zerusok = [-2; -0.4], polusok = [-1-2i; -1+2i; -5], erosites = 10
zerusok =
-2.0000
-0.4000
polusok =
-1.0000 - 2.0000i
-1.0000 + 2.0000i
-5.0000
erosites =
10
 
 
>_> [szamlalo, nevezo]=zp2tf(zerusok, polusok, erosites)
szamlalo =
0 10 24 8
nevezo =
1 7 15 25
>_>

GNU Octave-ban:

>_> zerusok = [-2; -0.4], polusok = [-1-2i; -1+2i; -5], erosites = 10
zerusok =
-2.00000
-0.40000
polusok =
-1 - 2i
-1 + 2i
-5 + 0i
erosites = 10
 
 
>_> [szamlalo, nevezo]=zp2tf(zerusok, polusok, erosites)
szamlalo =
10 24 8
nevezo =
1 7 15 25
>_>

NI LabVIEWMathScript-ben:

>_>zerusok = [-2; -0.4], polusok = [-1-2i; -1+2i; -5], erosites = 10
zerusok =
-2
-0.4
polusok =
-1 - 2i
-1 + 2i
-5 + 0i
erosites =
10
 
 
>_>[szamlalo, nevezo]=zpk_to_tf(zerusok, polusok, erosites)
szamlalo =
10 24 8
nevezo =
1 7 15 25

Scilab-ban nincs zp2tf jellegű utasítás, kis kerülővel tudjuk meghatározni zérusokból, pólusokból és erősítésből a számláló és nevező polinomot, aminek együtthatói az előző példákkal ellentétben s növekvő hatványai szerint rendezettek:

-->zerusok = [-2; -0.4], polusok = [-1-2*%i; -1+2*%i; -5], erosites = 10
zerusok =
- 2.
- 0.4
polusok =
- 1. - 2.i
- 1. + 2.i
- 5.
erosites = 10.
-->s=poly(0,"s"), szamlalo_polinom=erosites*poly(zerusok,"s","roots"), nevezo_polinom=s =
s
szamlalo_polinom =
2
8 + 24s + 10s
nevezo_polinom =
2 3
25 + 15s + 7s + s
-->szamlalo=coeff(szamlalo_polinom), nevezo=coeff(nevezo_polinom)
szamlalo = 8. 24. 10.
nevezo = 25. 15. 7. 1.

1.5.1.1. Átviteli függvény állandósult állapotbeli erősítése

Az átviteli függvényt s növekvő hatványai szerint felírva

 

(1.297)

és a Laplace-transzformáció végérték tételét alkalmazva

 

(1.298)

Ha a bemenő jel 1(t), akkor állandósult állapotban az egységnyi nagyságú bemenő jelre adott válaszfüggvényből megkapjuk A p_folytonos -t, a G(s) átviteli függvény állandósult állapotbeli erősítését.

 

(1.299)

A G(s) átviteli függvényben – mind a számlálóban, mind a nevezőben – az s és s magasabb kitevős hatványai mind a nulla (0) értékhez tartanak.

 

(1.300)

A G(s) átviteli függvény állandósult állapotbeli erősítése (A p_folytonos ) az s nulladfokú számláló- és nevezőbeli polinomiális együtthatóinak hányadosa.

Az állandósult állapotbeli erősítés meghatározása LabVIEW MathScript-ben:

 

dcgain (sys)

(1.301)

ahol

 

dcgain

az állandósult állapotbeli erősítés meghatározása függvény elnevezése,

 

sys

a vizsgált rendszer átviteli függvénye LabVIEW Matscript-ben (átviteli függvény vagy állapotváltozós alak).

Mintapélda:

Egy polinomiális alakú átviteli függvénnyel megadott rendszer állandósult erősítési tényezőjét szeretnénk meghatározni.

A h a mintavételi időtartam, amely folytonos rendszer esetén nulla (0.0).

NUM=[1]
DEN=[1, 5, 6, 5]
h=0.0
sys_poly=tf(NUM, DEN, h)
Ap_folytonos=dcgain(sys_poly)
 
 
 
>>
NUM =
 
           1     
 
DEN =
 
           1      5      6      5     
 
h =
 
           0     
 
Transfer Function  
 
Input:1 Output:1
 
            1,000             
------------------------------
1,000s^3+5,000s^2+6,000s+5,000
 
 
Continuous-time model.
Ap_folytonos =
 
           0.2     

1.5.1.2. zp2tf: zérus-pólus-erősítés alakú átviteli függvény alakból transzformáció polinomiális alakú átviteli függvény alakba

A zérus-pólus-erősítés átviteli függvény a következő alakú:

 

(1.302)

Az átalakításnál a gyöktényezős alakban felírt számlálóból s hatványainak megfelelő polinomiális alakot hozunk létre, majd a számláló polinom minden együtthatóját megszorozzuk a zérus-pólus-erősítés alakú átviteli függvény K erősítési tényezővel.

Hasonlóan elvégezzük a nevező s hatványainak megfelelő polinom előállítását is. Ezek után rendelkezésünkre állnak a polinomiális alakú átviteli függvény együtthatói.

 

(1.303)

A zérus-pólus-erősítés alakú átviteli függvényből a polinomiális alakú átviteli függvény alakba az átalakítás LabVIEW MathScript-ben a következő függvénnyel történik:

 

[d, e] = zpk_to_tf (a, b, c)

(1.304)

ahol

 

zpk_to_tf

a zérus-pólus-erősítés alakú átviteli függvényből a polinomiális alakú átviteli függvénnyé való átalakítást végző függvény neve LabVIEW MatScript-ben,

 

a

a zérus-pólus-erősítés alakú átviteli függvény zérusai,

 

b

a zérus-pólus-erősítés alakú átviteli függvény pólusai,

 

c

a zérus-pólus-erősítés alakú átviteli függvény erősítése (K), amely skalár érték,

 

d

a polinomiális alakú átviteli függvény számlálójában az s hatványok együtthatói,

 

e

a polinomiális alakú átviteli függvény nevezőjében az s hatványok együtthatói.

Mintapélda:

Egy zérusaival, pólusaival és erősítési tényezőjével megadott átviteli függvényt sys_zpk-t szeretnénk átalakítani polinomiális átviteli függvény alakra sys_poly-ra.

A h a mintavételi időtartam, amely folytonos rendszer esetén nulla (0.0).

zeros=[1,  2,  1]
poles=[-1,  -2,  -3]
k = 3
h=0.0
 
sys_zpk=zpk(zeros, poles, k,  h)
[NUM, DEN] = zpk_to_tf(zeros, poles, k)
sys_poly=tf(NUM, DEN, h)
 
 
 
>>
zeros =
 
           1      2      1     
 
poles =
 
          -1     -2     -3     
 
k =
 
           3     
 
h =
 
           0     
 
Zero-Pole-Gain Model  
 
Input:1 Output:1
 
3,000(s-1)^2  (s-2) 
--------------------
 (s+1) (s+2) (s+3)  
 
 
Continuous-time model.
NUM =
 
           3      -12      15     -6      
 
DEN =
 
           1       6       11      6      
 
Transfer Function  
 
Input:1 Output:1
 
3,000s^3-12,000s^2+15,000s-6,000
--------------------------------
1,000s^3+6,000s^2+11,000s+6,000 
 
 
Continuous-time model.
 

1.5.1.3. ss2tf: transzformáció állapottér modell alakból, polinomiális alakú átviteli függvény alakba

Az állapottér alakban felírt rendszer a Laplace-transzformáció után a következő egyenleteket eredményezi:

 

(1.305)

 

(1.306)

Az állapotegyenletből (1.305) kifejezhetjük az állapotváltozók vektorát. Amennyiben az állapotváltozók kezdeti értéke zérus (), a számítás egyszerűsödik.

 

(1.307)

 

(1.308)

Az így kifejezett állapotváltozó vektort behelyettesíthetjük a kicsatolási egyenletbe, hogy megkapjuk a kimenő jel Laplace–transzformáltját:

 

(1.309)

A kapott kifejezés jobb oldalán kiemelhetjük a bemenő jelet U(s)-t, és eloszthatjuk vele az egyenlet mindkét oldalát, hogy megkapjuk a SISO rendszer átviteli függvényét az állapottér modell segítségével:

 

(1.310)

A állapottér alakú rendszerfüggvényből a polinomiális alakú átviteli függvény alakba az átalakítás LabVIEW MathScript-ben a következő függvénnyel történik:

 

[e, f] = ss_to_tf (a, b, c, d)

(1.311)

ahol

 

ss_to_tf

az állapottér alakú függvényből, a polinomiális alakú átviteli függvényre való átalakítást végző függvény neve LabVIEW MatScript-ben,

 

a

az állapottér alakú függvény mátrixa,

 

b

az állapottér alakú függvény mátrixa,

 

c

az állapottér alakú függvény mátrixa,

 

d

az állapottér alakú függvény mátrixa,

 

e

a polinomiális alakú átviteli függvény számlálójában az s hatványok együtthatói,

 

f

a polinomiális alakú átviteli függvény nevezőjében az s hatványok együtthatói.

Mintapélda:

Állapottér alakban mátrixokkal megadott rendszert szeretnénk átalakítani polinomiális átviteli függvény alakra, a sys_poly-ra (LabVIEW MathScript-ben).

A h a mintavételi időtartam, amely folytonos rendszer esetén nulla (0.0).

A=[ 0,  1,  0 
    0,  0,  1
   -5, -6, -5]
B =[0;  0;  1]
C =[1,  0,  0]
D =[0]
h=0.0
 
[NUM, DEN]=ss_to_tf(A, B, C, D, h)
sys_poly=tf(NUM, DEN)
 
 
 
>>
A =
 
           0      1      0     
           0      0      1     
          -5     -6     -5     
 
B =
 
           0     
           0     
           1     
 
C =
 
           1      0      0     
 
D =
 
           0     
 
h =
 
           0     
 
NUM =
 
           1     
 
 
DEN =
 
           1      5      6      5     
 
Transfer Function  
 
Input:1 Output:1
 
            1,000             
------------------------------
1,000s^3+5,000s^2+6,000s+5,000
 
 
Continuous-time model.
 

1.5.2. Zérus-pólus-erősítés függvény (zp) transzformációk, {tf2zp,  ss2zp}

1.5.2.1. Zérus-pólus függvény erősítése (K)

Az átviteli függvényt s hatványaival felírva

 

(1.312)

majd meghatározva a számláló m darab és a nevező n darab gyökét, felírhatjuk a G(s) átviteli függvény gyöktényezős alakját. Mivel a gyökök meghatározásánál a legmagasabb fokú tagok együtthatóinak mind a számlálóban mind pedig a nevezőben 1-nek kell lennie. Így a számlálóból és a nevezőből ki kell emelni a legmagasabb s hatványok együtthatóit - ezek hányadosa lesz K, az erősítés értéke.

 

(1.313)

 

(1.314)

1.5.2.2. tf2zp: transzfomáció polinomiális alakú átviteli függvényből zérus-pólus-erősítés alakú átviteli függvénybe

A polinomiális alakú átviteli függvény a következő függvénnyel írható le:

 

(1.315)

Az átalakításnál kiemeljük a számlálóból és a nevezőből s legmagasabb hatványainak együtthatóit b m -et és a n -et. A pólus-zérus-erősítés átviteli függvény K erősítési tényezőjének előállítását az 1.5.2.1. szakasz - Zérus-pólus függvény erősítése (K) pontban ismertettük. Ezután meghatározzuk a számláló és a nevező gyökeit, és felírjuk az átviteli függvény gyöktényezős alakját a K erősítési tényezővel.

 

(1.316)

A polinomiális alakú átviteli függvényből zérus-pólus-erősítés átviteli függvény alakba az következő függvénnyel történik az átalakítás LabVIEW MathScript-ben:

 

[c, d, e] = tf_to_zpk (a, b)

(1.317)

ahol

 

tf_to_zpk

a polinomiális alakú átviteli függvényből zérus-pólus-erősítés alakú átviteli függvény alakba az átalakítást végző függvény neve LabVIEW MatScript-ben,

 

a

a polinomiális alakú átviteli függvény számlálójában az s hatványok együtthatói,

 

b

a polinomiális alakú átviteli függvény nevezőjében az s hatványok együtthatói,

 

c

a zérus-pólus-erősítés alakú átviteli függvény zérusai,

 

d

a zérus-pólus-erősítés alakú átviteli függvény pólusai,

 

e

a zérus-pólus-erősítés alakú átviteli függvény erősítése (K), amely skalár érték.

Mintapélda:

Egy polinomiális átviteli függvényt, sys_poly-t szeretnénk átalakítani zérusaival, pólusaival és erősítési tényezőjével megadott átviteli függvény alakra (sys_zpk) (LabVIEW MathScript-ben).

A h a mintavételi időtartam, amely folytonos rendszer esetén nulla (0.0).

NUM=[1,  2]
DEN=[1,  2,  3]
h=0.0
 
sys_poly=tf(NUM, DEN, h)
[zeros, poles, k] = tf_to_zpk(NUM, DEN)
sys_zpk=zpk(zeros, poles, k, h)
 
 
 
>>
NUM =
 
           1      2     
 
DEN =
 
           1      2      3     
 
h =
 
           0     
 
Transfer Function  
 
Input:1 Output:1
 
    1,000s+2,000     
---------------------
1,000s^2+2,000s+3,000
 
 
Continuous-time model.
zeros =
 
          -2     
 
poles =
 
          -1 + 1.4142i    
          -1 - 1.4142i    
 
k =
 
           1     
 
Zero-Pole-Gain Model  
 
Input:1 Output:1
 
       1,000(s+2)         
--------------------------
(s+1-1.4142i)(s+1+1.4142i)
 
 
Continuous-time model.

1.5.2.3. ss2zp: átalakítás állapottér modellből zérus-pólus-erősítés alakú átviteli függvénybe

Az (1.310) egyenlettel megadtuk, hogyan lehet állapottér alakból polinomiális átviteli függvény alakba átalakítani a rendszerleíró egyenletet. Ebben az esetben is ezt kell alkalmaznunk, majd az előző (1.5.2.2. szakasz - tf2zp: transzfomáció polinomiális alakú átviteli függvényből zérus-pólus-erősítés alakú átviteli függvénybe ) fejezetben bemutatott eljárással meghatározhatjuk a polinomiális alakból a zérus-pólus-erősítés átviteli függvény alakot.

Mintapélda:

Állapottér alakban, mátrixokkal megadott rendszert szeretnénk átalakítani zérus-pólus-erősítés alakú átviteli függvény alakra (sys_zpk-ra) (LabVIEW MathScript-ben).

A h a mintavételi időtartam, amely folytonos rendszer esetén nulla (0.0).

A=[ 0,  1,  0 
    0,  0,  1
   -5, -6, -5]
B =[0;  0;  1]
C =[1,  0,  0]
D =[0]
h=0.0
 
[zeros, poles, k]=ss_to_zpk(A, B, C, D, h)
sys_zpk=zpk(zeros, poles, k, h)
 
 
 
>>
A =
 
           0      1      0     
           0      0      1     
          -5     -6     -5     
 
B =
 
           0     
           0     
           1     
 
C =
 
           1      0      0     
 
D =
 
           0     
 
h =
 
           0     
 
zeros =
 
          empty matrix 0 by 1
 
poles =
 
          -0.6214 + 0.9719i    
          -0.6214 - 0.9719i    
          -3.7573 + 0i         
 
k =
 
           1     
 
 
 
 
Zero-Pole-Gain Model  
 
Input:1 Output:1
 
                     1,000                     
-----------------------------------------------
(s+3.7573) (s+0.6214-0.9719i)(s+0.6214+0.9719i)
 
 
Continuous-time model.
 

1.5.3. Állapottér (ss) transzformációk, {tf2ss,  zp2ss}

 

1.5.3.1. tf2ss: transzformáció polinomiális alakú átviteli függvényből állapottér modellbe

A polinomiális alakú átviteli függvényből a fázisváltozós alakú állapottér modell létrehozását az 1.4.5. szakasz - Állapottér módszer számítási blokkdiagramjának meghatározása SISO rendszereknél fejezetben mutattuk be. Ezt a számítási eljárást alkalmazva állapottér meghatározáshoz, alkalmas modellt hozhatunk létre.

Mintapélda:

Polinomiális átviteli függvény alakról hozzunk létre állapottér alakú mátrixokat amellyel leírjuk a vizsgált rendszert (LabVIEW MathScript-ben)!

A h a mintavételi időtartam, amely folytonos rendszer esetén nulla (0.0).

NUM=[1]
DEN=[1,  5,  6,  5]
h=0.0
 
sys_poly=tf(NUM, DEN, h)
[A, B, C, D]=tf_to_ss(NUM, DEN)
 
 
>>
NUM =
 
           1     
 
DEN =
 
           1      5      6      5     
 
h =
 
           0     
 
Transfer Function  
 
Input:1 Output:1
 
            1,000             
------------------------------
1,000s^3+5,000s^2+6,000s+5,000
 
 
Continuous-time model.
A =
 
          -5     -6     -5     
           1      0      0     
           0      1      0     
 
B =
 
           1     
           0     
           0     
 
C =
 
           0      0      1     
 
D =
 
           0     

1.5.3.2. zp2ss: átalakítás zérus-pólus-erősítés alakú átviteli függvényből állapottér modellbe

Ennél az átalakítási módszernél felhasználunk korábban bemutatott transzformációs eljárásokat. Első lépésben a zérus-pólus-erősítés alakú átviteli függvényből polinomiális átviteli függvény alakot hozunk létre, majd alkalmazzuk az 1.5.3.1. szakasz - tf2ss: transzformáció polinomiális alakú átviteli függvényből állapottér modellbe fejezetben bemutatott eljárást.

Mintapélda:

Zérus-pólus-erősítés alakú átviteli függvényből hozzunk létre állapottér alakú mátrixokat, melyekkel a vizsgált rendszert írjuk le (LabVIEW MathScript-ben)!

A h a mintavételi időtartam, amely folytonos rendszer esetén nulla (0.0).

zeros=[-1,    -2,    -1]
poles=[-1.4,  -2.4,  -3]
k = 3
h=0.0
 
sys_zpk=zpk(zeros, poles, k,  h)
[A, B, C, D] = zpk_to_ss(zeros, poles, k)
 
 
 
>>
zeros =
 
          -1     -2     -1     
 
poles =
 
          -1.4     -2.4     -3       
 
k =
 
           3     
 
h =
 
           0     
 
Zero-Pole-Gain Model  
 
Input:1 Output:1
 
 3,000(s+1)^2  (s+2)  
----------------------
(s+1.4) (s+2.4) (s+3) 
 
 
Continuous-time model.
A =
 
          -6.8       -14.76     -10.08     
           1          0          0         
           0          1          0         
 
B =
 
           1     
           0     
           0     
 
C =
 
          -8.4       -29.28     -24.24     
 
D =
 
           3     
 

1.6. Több bemenetű és több kimenetű rendszerek (MIMO) leírása

A lineáris rendszerek leírásában a differenciálegyenlet és a (polinomiális) átviteli függvény egymásból formális átalakítással felírhatók, ezért a differenciálegyenletek helyett a matematikailag kényelmesebben kezelhető átviteli függvényekkel dolgozunk.

A több bemenetű, több kimenetű (MIMO = Multiple Input Multiple Output) lineáris rendszerek matematikai leírása során m–bemenetű (), p–kimenetű (), időben állandó paraméterű rendszerekre szorítkozunk. Természetesen a digitális számítógépes szimulációban az alább ismertetett levezetésekre építve, akár a paraméterek változását is könnyen kezelhetjük.

Lineáris MIMO rendszerekben az egyes bemenetek és kimenetek kapcsolatát egy–egy átviteli függvény (vagy differenciálegyenlet, illetve akár állapottér modell) segítségével adhatjuk meg.

1.6.1. Átviteli mátrix {G(s)}

A MIMO rendszerekre értelmezett átviteli mátrix bevezetéséhez a SISO rendszertől kezdve végignézzük, hogyan befolyásolja a bemenetek és kimenetek számának növekedése az átviteli tulajdonság leírását.

1.6.1.1. A SISO rendszer

SISO rendszer esetén egy u(t ) bemenet és az egy y(t ) kimenet között a korábban (1.3) paraméteres differenciálegyenlettel megadott kapcsolat:

 

(1.318)

A kimenő jel és a bemenő jel Laplace–transzformáltja (Y (s) illetve U(s)) hányadosaként előállítható a G(s) átviteli függvény (1.51 egyenlet) a differenciálegyenletnél kényelmesebb, „kevesebb helyet foglaló”, ugyanakkor azzal teljesen egyenértékű rendszerleírás

 

(1.319)

Az átviteli függvény polinomiális alakban rövidebben is felírható, a num(s) számláló (az angol numerator szóból) és a den(s) nevező (az angol denominator szóból) polinom hányadosaként. (A különböző matematikai programokban gyakori a num és den használata.)

 

(1.320)

Ebből az alakból szorzással kifejezhetjük a kimenet Y(s) Laplace–transzformáltját:

 

(1.321)

1.6.1.2. A MISO rendszer

MISO vagyis több bemenetű, egy kimenetű rendszer esetén minden egyes bemenethez felírhatunk egy átviteli függvényt ugyanazzal a kimenettel:

 

(1.322)

 

(1.323)

 

………

 
 

(1.324)

Ahhoz, hogy csak egy bemenet hatását vegyük egyszerre figyelembe, az összes többi bemenő jel értékét nullára kell állítanunk. A továbbiakban ennek jelölését mellőzzük.

 

(1.325)

 

(1.326)

 

………

 
 

(1.327)

Az összes bemenet hatását az egyes bemenetek hatásának egyenkénti figyelembevételével határozhatjuk meg (szuperpozíció).

 

(1.328)

Mátrixos alakban kifejezve a kimenetet tovább egyszerűsíthetjük összefüggésünket

 

(1.329)

1.6.1.3. A SIMO rendszer

SIMO vagyis egy bemenetű, több kimenetű rendszerben minden egyes kimenethez felírhatunk egy átviteli függvényt:

 

(1.330)

 

(1.331)

 

…..

 
 

(1.332)

Mátrixos alakra hozva, ismét tömöríthetjük a kifejezést.

 

(1.333)

1.6.1.4. A MIMO rendszer

Az előzőek kombinációjával felírhatjuk az m–bemenetű (), p–kimenetű () rendszer átviteli függvényét (helyesebben átviteli mátrixát).

 

(1.334)

Az átviteli mátrix i-edik sora az i-edik kimenet előállításáért felel. Az átviteli mátrix () k-adik oszlopa a k-adik bemenet hatását mutatja a kimeneteken.

 

(1.335)

Az m–elemű oszlopvektor formában felírt bemenetek és a p–elemű oszlopvektorba foglalt kimenetek felhasználásával tovább egyszerűsödik a MIMO rendszer Laplace–operátoros tartománybeli átviteli függvénye.

 

(1.336)

1.6.2. Az állapottér módszer

Az általános lineáris, időtől független, n állapotváltozót tartalmazó az m–bemenetű (), p–kimenetű () MIMO rendszer állapotér modelljét (1.12 és 1.13 egyenletekkel) sokkal egyszerűbb felírni, mint az előzőekben levezetett átviteli függvényt, hiszen az állapottér modell mátrixegyenletei önmagukban hordozzák a több bemenet és kimenet közötti kapcsolat kezelését.

Az állapotegyenlet

 

(1.337)

A kicsatolási egyenlet:

 

(1.338)

Természetesen, ahogyan korábban láttuk a SISO rendszer állapottér modelljénél, itt is felírhatjuk mátrixegyenletként az állapotegyenletet és a kicsatolási egyenletet.

 

(1.339)

 

(1.340)

Laplace–transzformáció után

 

(1.341)

 

(1.342)

Zérus kezdeti értékek ( x (0) = 0 ) feltételezésével, az mátrix méretével egyező méretű egységmátrix felhasználásával az állapotegyenletből kifejezhetjük az állapotváltozók vektorát

 

(1.343)

 

(1.344)

Az így kifejezett állapotváltozó vektort behelyettesíthetjük a kicsatolási egyenletbe, hogy megkapjuk a kimenő jel vektor Laplace–transzformáltját:

 

(1.345)

A kapott kifejezés jobb oldalán kiemelhetjük a bemenő jel vektor Laplace–transzformáltját

 

(1.346)

Ebből aztán formálisan előállíthatjuk a MIMO rendszer G(s) átviteli mátrixát

 

(1.347)

Az inverz mátrix számításához használhatjuk az alábbi formulát

 

(1.348)

A fenti kifejezés nevezőjében szereplő kifejezésből felírhatjuk a MIMO rendszer karakterisztikus egyenletét (melynek gyökei a rendszer pólusai)

 

(1.349)

Természetesen nemcsak zérus kezdeti feltételeknél használhatjuk a Laplace–transzformációs megoldást. Ekkor a deriválás Laplace–transzformációs szabályában meghatározott módon kell figyelembe vennünk a t = 0 időpillanatbeli kezdeti értékeket.

 

(1.350)

 

(1.351)

 

(1.352)

 

(1.353)

A helyettesítés után kapott kifejezés első része a semleges kezdeti állapotú gerjesztett rendszer válasza, a második rész a valamilyen kezdeti állapotban lévő, magára hagyott rendszer válasza.

 

(1.354)

1.7. Folytonos rendszerek megvalósítása műveleti erősítő áramkörökkel

1.7.1. Átviteli függvény megvalósítása

Adott egy gépkocsi lengéscsillapítójának szerkezeti vázlata, amely egy tömegből, egy rugóból és egy csillapításból áll (1.48. ábra - Gépkocsi lengéscsillapító rendszer szerkezeti vázlata).

A bemenő jel a gerjesztés, a rugó szabad végének sebessége, a kimenő jel  pedig a tömeg sebessége.

Mintapélda:

Írjuk fel a rendszert leíró differenciálegyenletet, készítsük el a rendszer blokkvázlatát és átviteli függvényét. Adott bemenő jel esetén készítsük el a rendszer analóg számítógépes szimulációs modelljét! (A gravitációs gyorsulást nem vesszük figyelembe!)

Az egyes elemek paramétereinek jelölése (1.48. ábra - Gépkocsi lengéscsillapító rendszer szerkezeti vázlata):

 

c

a rugómerevségi együttható [N/m],

 

m

tömeg [kg],

 

d

csillapítási tényező [N*s/m].

Gépkocsi lengéscsillapító rendszer szerkezeti vázlata
1.48. ábra - Gépkocsi lengéscsillapító rendszer szerkezeti vázlata


A megoldásban először a rendszert alrendszerekre bontjuk, felírjuk az egyes alrendszerek differenciálegyenleteit, és elkészítjük blokkvázlatukat.

Rugó alrendszer

A rugó alrendszer szerkezeti vázlata
1.49. ábra - A rugó alrendszer szerkezeti vázlata


A rugóerő differenciálegyenlete az időtartományban,

 

(1.355)

illetve Laplace-transzformált tartományban

 

(1.356)

A rugó alrendszer differenciálegyenletét megvalósító blokkvázlat
1.50. ábra - A rugó alrendszer differenciálegyenletét megvalósító blokkvázlat


Tömeg alrendszer

A tömeg alrendszer szerkezeti vázlata
1.51. ábra - A tömeg alrendszer szerkezeti vázlata


A tömegre ható erők differenciálegyenlete időtartományban

 

(1.357)

 

(1.358)

illetve a kimenő jel Laplace-transzformáltja

 

(1.359)

A tömeg alrendszer differenciálegyenletét megvalósító blokkvázlat
1.52. ábra - A tömeg alrendszer differenciálegyenletét megvalósító blokkvázlat


Csillapítás alrendszer

A csillapítás alrendszer szerkezeti vázlata
1.53. ábra - A csillapítás alrendszer szerkezeti vázlata


A csillapításra ható erő egyenlete időtartományban

 

(1.360)

illetve Laplace-transzformált tartományban

 

(1.361)

A csillapítás alrendszer szerkezeti vázlata
1.54. ábra - A csillapítás alrendszer szerkezeti vázlata


A teljes lengéscsillapitó rendszer blokkvázlatát a részrendszerek blokkvázlatainak összekapcsolásával lehet meghatározni.

A teljes gépkocsi lengéscsillapító rendszer differenciálegyenletének blokkdiagramja
1.55. ábra - A teljes gépkocsi lengéscsillapító rendszer differenciálegyenletének blokkdiagramja


A rendszer átviteli függvénye meghatározható a rendszer blokkvázlatának egyszerűsítésével. A blokkvázlat egyszerűsítésének lépései:

A belső visszacsatolás kiküszöbölése.

A teljes rendszer blokkdiagramja az egyszerűsítés első lépése után
1.56. ábra - A teljes rendszer blokkdiagramja az egyszerűsítés első lépése után


Az előremenő ágban lévő soros tagok összevonása.

A teljes rendszer blokkdiagramja az egyszerűsítés második lépése után
1.57. ábra - A teljes rendszer blokkdiagramja az egyszerűsítés második lépése után


A negatív visszacsatolás kiküszöbölése.

A teljes rendszer blokkdiagramja az egyszerűsítés harmadik lépése után
1.58. ábra - A teljes rendszer blokkdiagramja az egyszerűsítés harmadik lépése után


A rendszer átviteli függvénye

 

(1.362)

Amely egyszerűsítés után a következő alakú lesz:

 

(1.363)

A rendszert leíró differenciálegyenlet leírásának módja a következő:

  • felírjuk az alrendszerekre jellemző differenciálegyenleteket, és ezekből építjük fel az elemek összekapcsolásával a teljes rendszert.

A teljes rendszer differenciálegyenlete:

 

(1.364)

 

(1.365)

A kezdeti feltételek legyenek a következő értékek:

 

(1.366)

A bemenő jel időfüggvénye legyen a következő függvény:

 

(1.367)

A rendszer differenciálegyenletéből kifejezhetjük a kimenő jel legmagasabb deriváltját.

Így a kimenő jel legmagasabb deriváltját kifejező egyenlet tartalmazni fogja a bemenő jelet és deriváltjait, illetve a kimenő jel alacsonyabb rendű deriváltjait.

A következő egyenletben megadjuk az egyes változók és konstansok értékeinek elnevezését.

 

(1.368)

Ezekkel a változó és konstans elnevezésekkel létrehozhatunk egy blokkdiagramot, amelynél meghatározhatjuk a kimenő jel legmagasabb deriváltértékét (D2VM).

A kimenő jel alacsonyabb deriváltjait integráló típusú blokkal valósítjuk meg, és a legmagasabb derivált értékének meghatározásánál a megfelelő együttható konstanssal történő szorzatértékeket alkalmazzuk.

Ha a differenciálegyenletben a bemenő jel idő szerinti derivált értékei is szerepelnek, akkor a teljes rendszer differenciálegyenletének mindkét oldalát integráljuk, addig amíg csak a bemeneti jel, illetve annak idő szerinti integráljai szerepelnek. Mivel ezeket elő tudjuk állítani.

Ügyeljünk arra, hogy a műveleti erősítővel megvalósított áramköröknél az erősítési és integrálási erősítési tényezők előjelet fordítanak !

A teljes rendszer analóg számítógépi blokkdiagramja
1.59. ábra - A teljes rendszer analóg számítógépi blokkdiagramja


A gépkocsi lengéscsillapító rendszerében a különböző paramétereknek számértéket adva, meghatározhatjuk a rendszer viselkedését egységugrás bemeneti jel esetén.

Válasszuk a következő paraméterértékeket!

 

m = 1 kg

 
 

d = 1 N.s/m

 
 

c =1 N/m

 
 

dt =0,02 s

 
 

t_max =25 s

 

Ezekkel a paraméterekkel a szimuláció eredménye az (1.60. ábra - A gépkocsi lengéscsillapító rendszer szimulációjának eredménye) ábrán látható.:

A gépkocsi lengéscsillapító rendszer szimulációjának eredménye
1.60. ábra - A gépkocsi lengéscsillapító rendszer szimulációjának eredménye


1.7.2. Analóg számítógép

A modell a valóságos rendszer - vizsgálat szempontjából - lényeges tulajdonságait kiemelő, a kevésbé fontosakat elhanyagoló, egyszerűsített mása. A modellalkotás során csak a vizsgálatban meghatározó tulajdonságokkal foglalkozunk. Természetesen a modell finomítása során új tulajdonságokat is bekapcsolhatunk a vizsgálatba, a korábbiak közül pedig elhanyagolhatjuk a „mégsem annyira fontosakat”. A modellezés folyamata a valóságos rendszer - vizsgálat szempontjából - lényeges tulajdonságainak felismerése és valamilyen formájú leképezése.

Absztrahált (elvonatkoztatott) modellnek nevezzük a vizsgált jelenség absztrakció eszközeivel előállított, legtöbbször verbális, esetleg grafikus vázlattal kiegészített leképezését. A rendszermodell az absztrahált modell alapján előállított fizikai (homológ és analóg) vagy matematikai modell.

A modellezés folyamata a modellek csoportosításával
1.61. ábra - A modellezés folyamata a modellek csoportosításával


Szimulációnak nevezzük a rendszermodell működtetését, a modellen végzett kísérletsorozatot. A kísérletek során a modell struktúráját általában nem változtatjuk. Fizikai modell esetén analóg vagy homológ szimulációról beszélünk. A matematikai modellen végzett vizsgálatokat nem nevezzük „matematikai szimulációnak”, hanem a számolást végző gép jellege alapján analóg és digitális szimulációt különböztetünk meg.

A szekunder analóg modell a matematikai modell alapján elkészített, az eredeti rendszerrel csupán a bemenetek és kimenetek közötti matematikai kapcsolat szempontjából analóg fizikai modell, amelynek nincs köze a rendszer struktúrájához. Az ilyen eszközt a rendszeregyenletet (matematikai modellt) megoldó „ analóg számítógépnek  nevezhetjük, a fizikai megvalósítástól (villamos, mechanikai, hidraulikus stb.) függetlenül. Leggyakrabban elektromos/elektronikus elemekből építik fel a rendszeregyenlet megoldása szempontjából lényeges műveleti egységeket. A modell változóit (állapotjelzőit) időben és értékkészletben egyaránt folytonos analóg villamos jelekkel valósítjuk meg. Szükségünk van a jelek összeadását (és kivonását), állandóval való szorzását, idő szerinti integrálását biztosító elemekre. Differenciáló áramkört azért nem használunk, mert a differenciálás a zajokat felerősíti, szemben a zajelnyomó hatású integrálással. A modellbeli nem-linearitások kezelésére különböző áramköröket (pl. exponenciális függvény, logaritmus függvény, jeleket szorzó), valamint függvénygenerátorokat is építhetünk. Az igazán hatékony elektronikus analóg számítógépek létrehozása a tranzisztor alapú műveleti erősítők megjelenéséhez és elterjedéséhez köthető. Az analóg számítógépek jellegzetessége a párhuzamos működés, hátránynak tekinthető a korlátozott pontosság és a holtidő elektronikus megvalósításának nehézsége. (Hidraulikus analóg számítógépeknél a holtidő megvalósítása megfelelő térfogatú, összekötő csövekkel lehetséges.)

Az elektronikus elemekből épített analóg számítási blokkok paramétereinek változtatása sokkal egyszerűbben megoldható pl. potenciométerek segítségével, mint egy transzlációs mechanikai elemeket használó analóg gépnél, ahol rugókat, csillapításokat, tömegeket kell cserélni hasonló helyzetben. Az elektronikus áramkörök általában magasabb frekvencián is működhetnek, mint a modellezett rendszer, ezért a szimulációs vizsgálatok a rendszeren végzett valós idejű kísérleteknél gyorsabban adnak eredményt. A mechanikai rendszerekkel szemben viszont hátránynak számít, hogy az elektronikus kapcsolásokban a (dinamikus) jeltartomány korlátozottabb. A jelek mellett megjelenő zajokra szintén figyelni kell, a jel–zaj viszony szempontjából szintén „érzékenyebbek” az elektronikus analóg számítógépek. Az elektronikus analóg számítógépek pontossága nemcsak számítási egységeitől függ, hanem az elektromos összeköttetésektől és a megfelelő tápellátástól is. Az analóg számítógépek által szolgáltatott eredmények pontossága nemcsak a kijelzők pontosságától függ, hanem a függvénygenerátor áramköröktől is, ami általában néhány tizedes jegy pontosságú. Mivel feszültségjelekkel egyszerűbb dolgozni, mint áramjelekkel, az analóg számítógépek leggyakrabban az előbbiekkel működnek.

Az elektronikus analóg számítógépek kiválóan használhatók differenciálegyenlettel és állapottér modellel adott rendszerek szimulációs vizsgálatára.

Azért említjük mégis az analóg számítógépeket ilyen részletesen, mert a (megfelelő számítási teljesítményű) digitális számítógépek elterjedésekor, az analóg gépek működését utánzó programozási nyelvekhez (Fortran, Algol, BASIC, stb.) kiegészítéseket, szimulációs nyelveket, majd önálló szimulációs programokat készítettek. A CSSL (Continuous System Simulation Language, folytonos rendszer szimulációs nyelv) szabványon alapuló megoldások blokkorientált (blokkdiagram–alapú) vagy egyenletalapú nyelv. Közös jellemzőjük a modell leírásához szükséges nyelvi elemkészlet, az ezeket összekapcsoló „nyelvtan”, a programhibák észlelése a felhasználó szimulációs modelljében, a modell fordítása a számítógép által végrehajtható gépi kódra. Röviden, a CSSL nyelvek szimulációs feladatok implementálására és végrehajtására alkalmasak, a szimuláció eredményeinek ábrázolásával és tárolásával. Hasonlóság, egyenletmegoldásnál az analóg számítógéphez hasonló elvek szerint. A digitális számítógépes szimulátorokból természetesen hiányoznak az analóg számítógépes megvalósítási korlátok (többek között a műveleti erősítős blokkok előjelfordító tulajdonsága). A digitális számítógépek viszont jellemzően soros működésűek, ezért az egyenletek (blokkok) összekapcsolása szigorúan meghatározza a modell számítási sorrendjét.

1.7.2.1. Az elektronikus, analóg számítógépek műveleti egységei

1.10. táblázat - Analóg számítógépek műveleti egységei

Műveleti egység

Működési leírás

Együttható potenciométer

A változtatható ellenállásával a bemenő jel nulla és egy közötti osztását biztosítja.

Előjelfordító

Egyetlen egységnyi erősítésű műveleti erősítő, mínusz egyszeresre változtatja a bemenő feszültség értékét.

Összegző

A bemenetére kapcsolt jelek súlyozott összegét állítja elő. Elektronikus analóg számítógépnél a súlytényezők általában tíz hatványaival adhatók meg, és a kimenet előjelet vált.

Az együttható potenciométerrel együtt tetszőleges állandó értékkel történő szorzás biztosítható.

Integrátor

Az összegzőhöz hasonlóan működik, a bemenetek súlyozott összegét integrálja és előjelet fordít.

Az integrátor kezdeti értéke („kezdeti töltöttsége”) beállítható.

Nemlineáris kimenet–bemenet kapcsolatok

Alkalmazása is szükséges lehet, megvalósításukra külön áramkörök szükségesek.

A teljesség igénye nélkül

  • küszöbérték beállítása,

  • nemlineáris  függvény közelítése,

  • abszolút érték előállítása,

  • a jelérték korlátozása,

  • holtjáték,

  • hiszterézis,

  • a digitális jelekkel kapcsolatot teremtő D/A (digitális analóg) átalakító.

Logaritmikus áramkörök

Alkalmazhatók például két jel összeszorzására (pl. két-síknegyedes szorzó), exponenciális áramkör (pl. hatványozás megvalósítására), logaritmus számítása.


1.7.2.2. Az analóg számítógép szerkezeti felépítése

Az analóg számítógép egy olyan, folytonos áramköröket tartalmazó berendezés, amellyel differenciálegyenletek megoldását lehet megvalósítani. A differenciálegyenlet megoldása úgy történik, hogy a differenciálegyenlet analóg műveleti elemekből elkészített blokkdiagramját felépítjük az analóg számítógép előlapjára kivezetett elemek segítségével. Erre a villamos kapcsolásra bocsájtjuk a bemeneti jel időfüggvényét, és a vizsgált kimeneteken lemérjük, és tároljuk a kimeneti jel(ek) időfüggvényét.

A berendezés nagyszámú integrátort, összegzőt és együttható potenciométert tartalmaz, amelyek segítségével a vizsgált blokkdiagram könnyen összeállítható. Az összeállított kapcsolás „tárolására” az előlap olyan kialakítású, hogy a huzalozott összeköttetéseket tartalmazó előlapot egyszerűen le lehessen venni, és a egy másik előlappal helyettesíteni.

Ez azt jelenti, hogy adott differenciálegyenlet megoldását biztosító blokkdiagramot az előlapon megvalósított fizikai összekapcsolással „programoztuk”.

Az analóg számítógép programozói előlapjának kialakítása
1.62. ábra - Az analóg számítógép programozói előlapjának kialakítása


Az analóg számítógéppel történő differenciálegyenlet megoldás üzemmódjai a következők:

  • Alaphelyzetbe állítás

    Ebben az üzemmódban lehetőség van az integrátorok kezdeti feltételeinek beállítására. Ezek meghatározzák, hogy a differenciálegyenletet milyen kezdeti feltételekkel oldjuk meg.

  • Számítás (vagy futtatás)

    Ebben az üzemmódban a bemenő jel időbeni változása alapján a differenciálegyenletként felépített áramkör a benne lévő integrátorok töltésével (kisütésével) megvalósítja ugyanazokat,  a diffenciálegyenlet megoldását jelentő, állapotváltozásokat, amelyet az analitikus megoldás időfüggvényként adna meg.

    A differenciálegyenlet megoldásaként az egyik műveleti elem kimenetén egy villamos jelet kapunk, amelyet az előlapon elhelyezett műszerrel közvetlenül mérni tudunk (villamos feszültségként), vagy egy rajzoló vagy adattároló berendezésre eljuttatva rögzíteni tudjuk.

  • Tartás

    Ebben az üzemmódban „befagyagyasztjuk” az analóg számítógép működését. Ezt a legegyszerűbben úgy érhetjük el, ha ebben az üzemállapotban az integrátor áramkörök bemeneteit megszakítjuk, így a műveleti erősítő kimenete és a bemenete között elhelyezkedő, adott feszültségre feltöltött kondenzátor marad csak az áramkörben, amely a nagy értékű bemeneti ellenálláson keresztül nem tud kisülni.

A differenciálegyenlet analóg számítógéppel történő megoldásánál

  • az időléptékezés célja , hogy a lassú folyamatokat a segítségével „felgyorsíthassuk”, illetve a gyors folyamatokat „lelassíthassuk”.

  • az amplitúdó-léptékezés feladata , hogy a szimulációban szereplő összes jel értéke „beleférjen” az analóg számítógép műveleti elemeinek maximális és minimális tápfeszültség-tartományába.

1.7.2.3. Az analóg számítógép programozása

A programozáshoz a matematikai modellt (differenciálegyenlet, átviteli függvény vagy állapottér modell) jelfolyam gráfon vagy tömbvázlaton (másképp hatásvázlaton) ábrázoljuk. A vázlat a jellegzetes műveleteket (állandóval szorzást, összegzést, integrálást) tünteti fel. Az integrátorok számát a rendszermodell rendszáma (legmagasabb derivált vagy a karakterisztikus egyenlet fokszáma, illetve állapotváltozók száma) határozza meg. A „szimulációs diagramok” az állapottér modell különböző alakjait bemutató fejezetben közvetlenül programozhatók.

A vázlat segíthet a fizikai megvalósításhoz szükséges számítógépelemek (pl. előjelfordítók, együttható potenciométerek) számát minimalizálni.

1.7.2.4. Amplitúdó–léptékezés

Az folytonos (analóg) áramkörökkel megvalósított differenciálegyenlet megoldásaként megjelenő villamos jel egyik problémája, hogy nem vehet fel tetszőleges értéket. A műveleti erősítőkkel megvalósított áramkörben a kimeneti jel maximális és minimális értékét az áramkör tápfeszültségei határozzák meg.

Ez azt jelenti, hogy bár a differenciálegyenlet megoldásaként jelentkező érték abszolút értéke nagyobb, mint a megfelelő előjelű tápfeszültség értéke, de az eszköz működéséből eredően ez nem lehetséges, ezért a kimenő jel a tápfeszültség értékét veszi fel és nem változik. Ez helytelen megoldást eredményez, amit el kell kerülni.

A megoldás, hogy a vizsgált kimenetre megállapítjuk a maximális kimeneti jelértéket. Majd a tápfeszültség maximális értékével egy szorzó konstanst határozunk meg, amellyel a maximális kimenő jel esetén is csak a tápfeszültség értékét érjük el.

Amplitúdó–léptékezést azért használunk, hogy az analóg számítógép maximális jeltartományát használhassuk. Tulajdonképpen normálásról van szó, az x gépi változó értékét és a hozzá tartozó U feszültséget maximális értékükhöz (x max és U max ) viszonyítva normáljuk.

 

(1.369)

Ezzel a dimenziótlanítással a differenciálegyenletet mértékegységek nélküli alakra, relatív egységekre írjuk át. A kezdeti értékek beállításánál is alkalmaznunk kell a választott amplitúdó–léptéket.

Az amplitúdó–léptékezés segítségével a számítógép teljes működési feszültségtartományát ki tudjuk használni.

1.7.2.5. Időléptékezés

Az időléptékezés megfelelő értékét a rendszeregyenlet dinamikai sajátságai (időállandói és az ezekből számított vizsgálati időtartam), valamint a számítógép elemeinek frekvenciaátviteli tulajdonságai ismeretében határozhatjuk meg. A gyors (pl. 1–10 MHz frekvenciatartományban) működő integrált áramkörök miatt is sokszor lassítanunk kell a számítást az értékelhető eredmények eléréséhez. Legegyszerűbb a t független változójú differenciálegyenlet időléptékét megváltoztatni, a τ gépi idő megfelelő megválasztásával. Ehhez a rendszer valós idejű működése szempontjából megállapított t max vizsgálati időt és a számítógép választott τ max maximális futásidejét kell aránypárral összekapcsolnunk.

 

(1.370)

A k t időlépték a maximális futásidő és a maximális „valós idő” hányadosa

 

(1.371)

Ezzel a valós idő és a gépi idő kapcsolata

 

(1.372)

 

(1.373)

 

(1.374)

 

(1.375)

Az egynél nagyobb időlépték a valós időhöz képest lassítást, a kisebb pedig gyorsítást jelent. Az időlépték hatása az x(t) jel deriváltjaira

 

(1.376)

 

(1.377)

 

………

 
 

(1.378)

A derivált kezdeti értékeknél is megfelelően figyelembe kell venni az időléptékezés hatását. Az időléptékezést az amplitúdó–léptékezés előtt kell elvégezni, mert az időlépték a maximális jelnagyságot (amplitúdót) megnövelheti.

1.7.2.6. Valós idejű futás (a műveleti erősítő frekvenciaátviteli korlátai)

A műveleti erősítőkből azért építjük fel az adott differenciálegyenletet megvalósító áramkört, hogy valamilyen valós jelszűrési, jelfeldolgozási műveletet valósítsunk meg a segítségével. Mivel a műveleti erősítők rendelkeznek saját frekvenciaátviteli tulajdonsággal, nem mindegy, hogy az erősítő milyen üzemmódban működik.

A műveleti erősítők nagyon alacsony (kb. 10 Hz) frekvenciáig tudják a maximális erősítésüket biztosítani, ennél nagyobb frekvenciájú bemenő jelek esetén az erősítés nagysága rohamosan csökken. Egységnyi erősítés esetén mérhetjük az úgynevezett zárthurkú határfrekvenciát, amely az μa 741-es műveleti erősítő esetén 1 MHz.

A műveleti erősítő frekvencia jelleggörbéje alapján (1.9. ábra - A valóságos műveleti erősítő Bode frekvencia diagramja (amplitúdó)) lehetőség van arra, hogy nagyobb erősítésű, de kisebb sávszélességű erősítőt alkalmazzunk.

Ha nagy erősítésre és nagy sávszélességre van szükség, mindenképpen ajánljuk, hogy több fokozatból álló, kisebb erősítésértékű erősítőkből építsük fel a szükséges erősítő fokozatot, amelynek erősítő elemenként megvan az előírt sávszélessége.

1.8. Folytonos rendszerek szimulációja digitális számítógéppel

Az időben folytonos differenciálegyenlettel leírt rendszerek digitális számítógéppel történő meghatározása csak úgy lehetséges, ha a folytonos bemeneti és kimeneti jel helyett mintavételezett jeleket alkalmazunk, és a mintavételezési időpontok közötti időtartamban a számításoknál gondoskodunk a jelek időbeni folytonosságáról.

Az időben folytonos differenciálegyenlet mintavételezési pontokban történő megoldására két eljárás lehetséges.

  • Az egyik megoldásnál olyan kis mintavételezési időtartamot alkalmazunk, amellyel a differenciálegyenletben, illetve a bemenő jelben szereplő legmagasabb frekvenciájú Fourier-komponens 50-100-szoros frekvenciájával mintavételezünk. Ez a nagy mintavételezési frekvencia (nagyon kicsiny mintavételezési időtartam) gyakorlatilag megteremti a digitális számítógépben a folytonos rendszer számítási feltételeit . A számításnál alkalmazott rendszerelemek az analóg áramkörökkel megvalósított programozási elemek mintavételes megfelelői (mintavételes integrátorok, összegzők, illetve szorzó elemek), a differenciálegyenletet pedig hasonló blokk diagrammal építjük fel, mint az analóg elemekből felépített differenciálegyenlet megoldásánál.

  • A második megoldás során a mintavételezési törvény alapján meghatározott (a még szükséges, de a lehető legnagyobb) mintavételezési időtartammal létrehozzuk a rendszer differenciálegyenletéből a rendszer differenciaegyenletét . Az időben folytonos differenciálegyenlet mintavételes impulzusátviteli függvényének vagy mintavételes állapottér modelljének paramétereit a Z-transzformáció segítségével határozzuk meg. A Z-transzformáció tulajdonsága, hogy különböző mintavételi időtartam alkalmazása esetén, különböző együtthatókkal rendelkező differenciaegyenletet eredményez. Ennél a számítási eljárásnál a rendszer mintavételi időpontjaiban határozzuk meg a rendszert leíró differenciaegyenlet állapotváltozóinak új értékét, az állapotváltozók és a bemenő jel korábbi mintavételi értékének a segítségével.

1.8.1. Folytonos bemeneti jelek és rendszerek mintavételezése

Az analóg, folytonos műveleti elemek költségei és felhasználásuk hátrányai miatt a kis- és középfrekvenciás alkalmazásoknál (0..1 MHz) a rendszer-differenciálegyenletek megvalósítása digitális számítógépeken, mikroprocesszorokon vagy ezekkel egyenértékű logikai-aritmetikai műveletek végzésére alkalmas áramkörökön (FPGA = Field Programmable Gate Array) történik. Ezért kiemelt jelentősége van az időben folytonos differenciálegyenletek digitális számítógépen történő megvalósításának.

A digitális számítógépek működéséből eredően ezek az eszközök csak mintavételesen képesek feldolgozni a folytonos jeleket, mivel a két mintavételezés közötti időtartamban végzik el a feldolgozási műveleteket.

A mintavételezés segítségével olyan sűrűséggel végezzük el a számításokat, hogy az eredmények szempontjából nem lehet különbséget tenni egy valóban folytonos és egy mintavételezett rendszeren meghatározott eredmény között.

1.8.1.1. A folytonos bemeneti jelek mintavételezése

A digitális számítógép működési elvéből következően folytonos jeleket nem tud közvetlenül feldolgozni, hanem a jel adott pillanatban vett értéke (mintavételezési érték) segítségével véges, a számításhoz szükséges időtartam segítségével határozza meg a vizsgált rendszer következő állapotát. A kimeneti jel nagyságát az állapotváltozók értékei alapján szintén a mintavételi időpontban számítja ki.

A bemeneti jelet tehát mintavételeznünk kell, mégpedig úgy, hogy a mintavételezett jelből a folytonos bemeneti jel a lehető kisebb torzítással legyen rekonstruálható.

A jelek mintavételezési időtartamára vonatkozóan a Shannon-tétel ad útmutatást, amely eredeti alakjában kimondja, ha egy folytonos időfüggvény u(t) nem tartalmaz egy megadott frekvenciájú komponensnél magasabb frekvenciájú komponenst, azaz a jel sávkorlátozott, akkor jel mintavételezéséhez alkalmazható mintavételezési időtartam a legmagasabb frekvenciájú komponens kétszerese.

Más szavakkal ez azt jelenti, hogy sávkorlátozott jel rekonstrukciója tökéletesen megvalósítható megszámlálható mintavételi jel értékből, ha a sávszélesség értéke nem nagyobb, mint a mintavételi sebesség fele (a másodpercenkénti minták száma).

Ha a jelhez tartozó sávkorlát túlságosan magas, (vagy végtelen értékű) akkor a mintavételezett jel értékekből történő rekonstrukciónál megjelenik az aliasing jelenség .

Az „aliasing” jelenség egy olyan ál-rekonstrukciós jel megjelenése ugyanahhoz a mintavételi jelsorozathoz, amely ugyanazokban a mintavételi pontokban jelentkezik, mint az eredeti mintavételezett jel, de annál jóval kisebb frekvenciájú.

Alulmintavételezés okozta látszólagos frekvencia jelensége
1.63. ábra - Alulmintavételezés okozta látszólagos frekvencia jelensége


Az (1.63. ábra - Alulmintavételezés okozta látszólagos frekvencia jelensége) ábrán jól látható, hogy az alul-mintavételezett jelnek van egy alacsonyabb frekvenciájú komponense is, ahol az eredeti tíz periódusból csak kettő látszik. Ha megnöveljük a mintavételi frekvenciát, ezzel megnöveljük a mintavételi pontok számát is az adott időtartam alatt. A nagyobb mintavételezési frekvencia az eredeti analóg jel egy jobb, több információt tartalmazó átalakítása, a kisebb frekvenciájú mintavételezéshez képest. Meg lehet adni egy olyan mintavételi frekvenciát, amellyel a mintavételezett jelben lévő maximális frekvenciát is mindig pontosan elő tudjuk állítani alulmintavételezés (aliasing) nélkül, ez az úgynevezett Nyquist-frekvencia . A Nyquist-frekvencia megegyezik az alkalmazott mintavételi frekvencia felével, amelyet a következő képlettel írhatunk le:

 

(1.379)

ahol

 

f N

a Nyquist frekvencia,

 

f s

a  mintavételi frekvencia (sampling frequency).

Az olyan jelek, amelyeknek bizonyos frekvencia-komponensei a Nyquist-frekvencia felett vannak, vonalasnak, szaggatottnak látszanak a tényleges és a Nyquist-frekvencia között. A Nyquist-frekvencia feletti komponensek Nyquist-frekvencia alatt látszanak a vonalas jelben. Például, ha egy frekvencia-komponens  közé esik, akkor   frekvenciaként jelentkezik.

Az 1.64. ábra - Aktuális jel frekvencia-komponensei és 1.65. ábra - A jel frekvencia-komponensei és a látszólagos frekvenciák) ábra mutatja be az alulmintavételezés jelenségét.

Az (1.64. ábra - Aktuális jel frekvencia-komponensei) ábra a bejövő jel frekvencia-komponenseit és a mintavételi frekvenciát (f s ), amely 100 Hz, mutatja.

Aktuális jel frekvencia-komponensei
1.64. ábra - Aktuális jel frekvencia-komponensei


Az (1.65. ábra - A jel frekvencia-komponensei és a látszólagos frekvenciák) ábra a bejövő jel látszólagos és a tényleges frekvencia-komponenseit mutatja.

A jel frekvencia-komponensei és a látszólagos frekvenciák
1.65. ábra - A jel frekvencia-komponensei és a látszólagos frekvenciák


Az (1.65. ábra - A jel frekvencia-komponensei és a látszólagos frekvenciák) ábra szerint alatti komponensek helyesen vannak mintavételezve - például, F1 jó helyen van. A Nyquist-frekvencia feletti frekvenciájú komponensek viszont máshol látszódnak. Például az  F2, F3 és F4 frekvencia-komponensek 30 Hz-en, 40 Hz-en és 10 Hz-en látszanak külön-külön.

A látszólagos frekvencia értéke egyenlő a mintavételi frekvencia legközelebbi egész számú többszöröse, és a bejövő frekvencia különbségének abszolút értékével.

 

(1.380)

ahol

 

AF

a látszólagos frekvencia, ( Alias Frequency ),

 

CIMSF

a mintavételi frekvencia legközelebbi egész számú többszöröse

( Closest Integer Multiple of the Sampling Frequency ),

 

IF

a bejövő frekvencia  ( Input Frequency ).

Például, az F 2 , F 3 és F 4 -ből származó látszólagos frekvenciákat meghatározhatjuk a következő képletek szerint:

 

(1.381)

A mintavételi frekvencia növelése az alulmintavételezés elkerüléséhez úgy történik, hogy a Shannon mintavételi elv szerint, a mintavételi frekvenciának a mintavételezett jel maximális frekvencia-komponensének legalább a duplájának kell lennie, hogy elkerüljük a látszólagos frekvenciák jelenségét.

Az (1.66. ábra - A különböző mintavételi frekvenciák hatása) ábra különböző mintavételi frekvenciákkal történt mintavételezések hatását mutatja.

A különböző mintavételi frekvenciák hatása
1.66. ábra - A különböző mintavételi frekvenciák hatása


Az (1.66. ábra - A különböző mintavételi frekvenciák hatása) ábra szerinti A esetben az mintavételi frekvencia egyenlő a mintavételezett szinusz hullám frekvenciájával. mértékegysége minta/másodperc. mértékegysége periódus/másodperc. Tehát A esetben 1 mintavételi érték 1 periódusnak felel meg. A leképezett hullámforma az eredeti jel látszólagos frekvenciáját mutatja be, amely egy egyenfeszültség (minden mintavételezésnél állandó értékű jel).

Az (1.66. ábra - A különböző mintavételi frekvenciák hatása) ábra szerinti B esetben , azaz 7 minta esik 4 periódusra.

A B esetben tehát a mintavételi gyakoriság növelésére emelkedik a hullámfrekvencia. Azonban a látszólagos frekvencia kisebb, mint az eredeti jel frekvenciája , 4 helyett csak 3 periódus jelenik meg.

Az (1.66. ábra - A különböző mintavételi frekvenciák hatása) ábra szerinti C esetben  a mintavételi gyakoriság -re való növelésére a digitalizált hullámformát helyes frekvenciával kapjuk. A periódusok száma az eredeti jellel azonos. A C esetben az előállított hullámforma pontosabb leképezése az eredeti szinusz hullámnak, mint A vagy B esetben. Ha a mintavételi gyakoriságot kellő mértékben f fölé növeljük, például -re, azaz 10 minta/periódusra, akkor megfelelően és precízen mintavételeztük a jelet.

Az (1.66. ábra - A különböző mintavételi frekvenciák hatása) ábra szerinti D esetben a mintavételi frekvencia tízszerese az eredeti jel frekvenciájának, amelynek eredménye látható az ábrán.

Gyakorlatban a periódusonkénti minták száma 10-től 25-ös értékig vehet fel értéket. A 10 mintavétel/periódus egy minőségileg már elfogadható mintavételi sűrűséget jelent, a 25 mintavétel/periódus egy nagyon jó minőségű mintavételezési sűrűség.

Ennél az értéknél (25) nagyobb mintavétel/periódus érték alkalmazása mintavételes rendszerek számításánál indokolatlanul megnöveli a rendszer ugyanolyan minőségű analíziséhez szükséges számításának időtartamát.

1.8.1.2. Folytonos rendszerek mintavételezése

A folytonos jelek mintavételezésénél a jelben – illetve annak Fourier-transzformáltjában – megjelenő legmagasabb frekvenciakomponens alapján határozzuk meg a jel pontos rekonstrukcióját biztosító mintavételi frekvenciát és ebből a mintavételi időtartamot.

A módszert úgy tudjuk alkalmazni a rendszert leíró differenciálegyenletek esetében, hogy a mintavételezési szabályokat, a differenciálegyenletből előállított állapottér modell sajátértékeire alkalmazzuk. Más szavakkal megállapítjuk a differenciálegyenlet időállandóit (T k  k=1..n), és ezek alapján meghatározhatjuk a rendszer mintavételezéséhez szükséges időtartam nagyságát.

A szimulált rendszer időállandóit a sajátértékekből a következő képlettel állíthatjuk elő:

 

(1.382)

ahol

 

T k

a rendszer k. időállandója,

 

α k

a rendszer k. sajátértéke.

Valós pólus által szolgáltatott átmeneti függvény
1.67. ábra - Valós pólus által szolgáltatott átmeneti függvény


Egy rendszer helyes mintavételezéséhez a rendszer legkisebb időállandója által előállított jelértéket is az időállandó alatt 4-10-szer kell mintavételezni, hogy a legkisebb időállandóval befolyásolt jel viselkedését is rekonstruálni tudjuk.

 

(1.383)

ahol

 

h

a differenciálegyenlet mintavételezéséhez ajánlott mintavételezési időtartam,

 

T min

a differenciálegyenlet karakterisztikus egyenletének (nevező polinomjának) legkisebb időállandója.

Az eddig bemutatott módszer jól alkalmazható, ha mintavételezendő rendszernek csak valós pólusai vannak, amelyek egyszerűen átalakíthatók valós időállandókká, és leválaszthatjuk közülük a legkisebbet.

Ha a rendszernek vannak konjugált komplex pólusai is, akkor az ezek által meghatározott kimeneti jelkomponensek helyes mintavételezéséhez a konjugált komplex pólus (p k ) abszolút értékét kell alkalmazni . A konjugált komplex pólusok polárkoordinátabeli sugarának abszolút értéke a pólus valós és képzetes részéből meghatározott Pitagoraszi távolság.

 

(1.384)

ahol

 

R

a polár koordinátabeli sugár értéke – a pólus távolsága az origótól,

 

Re

a pólus Descartes-koordinátabeli valós koordinátája,

 

Im

a pólus Descartes-koordinátabeli képzetes koordinátája.

A konjugált komplex póluspár origótól mért távolsága (R)
1.68. ábra - A konjugált komplex póluspár origótól mért távolsága (R)


Az így meghatározott R (sugárértékeket) most már ugyanúgy alkalmazhatjuk, mint a valós pólusokat. A valós pólusok és az R sugárértékek abszolút értékeinek sorrendbe állítása alapján megállapíthatjuk a maximális abszolút értékű pólust. Ennek alkalmazásával pedig meghatározhatjuk a javasolt mintavételi időtartamot az (1.383) képlet alapján.

A mintavételi időtartam meghatározásában nem alkalmazzuk a vizsgált rendszer átviteli függvényében szereplő zérusokat, mert azok nem befolyásolják a rendszer dinamikáját.

1.8.2. Rendszerek digitális számítógépen történő futtatása

Egy folytonos rendszer digitális számítógépen történő szimulációjához meg kell határozni a számítások elvégzéséhez szükséges mintavételi időt. A mintavételi időnek figyelembe kell vennie, hogy a lehető legjobban közelítse a folytonos rendszer dinamikai tulajdonságait, valamint a bemeneti jel legmagasabb frekvenciájú komponensét is mintavételezze.

Ehhez a következő lépésekben kell a mintavételi időtartamot beállítani:

  • meg kell határozni a vizsgált bemeneti jel helyes mintavételezéséhez szükséges mintavételi időt , (dt bemeneti_jel ) valamint a

  • a vizsgált rendszer mintavételezéséhez szükséges mintavételi idő nagyságát (dt rendszer ).

A két mintavételi frekvencia értéke közül a kisebbiket kell alkalmazni a további számításokhoz (dt).

Ahhoz, hogy a digitális számítógépen a mintavételezéssel történő számítás közben megvalósítsuk a „folytonos rendszer számítási feltételeit”, a bemeneti jel, illetve a vizsgált rendszer segítségével meghatározott mintavételi frekvencia értékének többszörösét kell alkalmazni mintavételi frekvenciaként.

 

(1.385)

 

(1.386)

ahol

 

f max_bemeneti_jel

a folytonos bemeneti jelben előforduló legmagasabb frekvenciájú komponens,

 

dt bemeneti_jel

a folytonos bemeneti jel digitális számítógépen történő számításánál javasolt mintavételi idő,

 

f sample_bemeneti_jel

a folytonos bemeneti jel vizsgálatához alkalmazott mintavételi frekvencia.

Ugyanígy kell megállapítanunk a számított rendszer differenciálegyenletének legpontosabb számítását megvalósító mintavételi időtartam értékét is.

 

(1.387)

 

(1.388)

ahol

 

α max_rendszer

a folytonos rendszer legnagyobb abszolút értékű pólusa,

 

dt rendszer

a folytonos rendszer digitális számítógépen történő számításánál javasolt mintavételi idő,

 

f sample_rendszer

a folytonos rendszer vizsgálatához alkalmazott mintavételi frekvencia.

Ezekből meghatározható a javasolt mintavételi időtartam (dt) értéke, amelyet a két korábban meghatározott mintavételi érték közül a kisebb értékű, osztva egy 4-től 10-ig választott értékkel.

 

(1.389)

Ennél a mintavételi frekvenciánál olyan kicsi a mintavételi időlépés (dt) nagysága, hogy a vizsgált rendszer következő állapotát, a mintavételes bemeneti jelérték valóságos impulzusközelítési értékeként számítjuk.

Általánosabb megfogalmazásban a folytonos rendszerben, illetve a bemenő jelben előforduló legmagasabb frekvenciájú komponens 40 ÷ 100-szorosát alkalmazzuk mintavételi frekvenciaként.

A mintavételes időpontokban a számított jelek értékének meghatározásánál numerikus integráló algoritmust alkalmazunk a rendszer-differenciálegyenlet megoldásánál, amelynek integrálási hibája a mintavételezési időtartam függvénye. Minél kisebb a mintavételi időtartam annál kisebb az integrálási hiba. Azoknál a szimulációs rendszereknél, amelyek automatikus lépésköz beállító algoritmussal rendelkeznek, az integrálási hiba maximálisan megengedett értéke alapján állítják be a szükséges mintavételezési időtartamot (dt) .

A vizsgált rendszer differenciálegyenletének megoldásaként (adott bemenő jelre) olyan kimeneti jeleket kapunk, amelyeknek a mintavételi időpontokban felvett értéke a numerikus integráló tagok kimeneti értékeinek kombinációjaként jelenik meg.

A vizsgált folytonos rendszer digitális számítógépen történő számításához létre kell hoznunk egy olyan struktúrát, amely a dt szimulációs időlépéssel t max időtartamig (a számítás végértékéig ) meghatározza a rendszer minden egyes időpillanatbeli állapotváltozó értékét.

Folytonos rendszer számítási blokkdiagramja (LabVIEW környezetben)
1.69. ábra - Folytonos rendszer számítási blokkdiagramja (LabVIEW környezetben)


Az (1.69. ábra - Folytonos rendszer számítási blokkdiagramja (LabVIEW környezetben)) ábrán látható blokkdiagram egy While Loop-ban valósítja meg a folytonos rendszer számítását (szimulációját), amelynél elsőként megtörténik a TIME blokk végrehajtása az adott mintavételi időpontban, majd ezután következik az összes többi műveletvégző blokk végrehajtása a „Rendszer számítási modelljének blokkjában”.

A TIME blokknak két bemeneti paramétere van a számítás időlépése (mintavételi időtartama = dt) és a számítás befejezésének időpontja (t max ). Ezekből, illetve a While Loop ciklusváltozójával meghatározza a számítás időpontját, azaz, hogy az adott paraméterekkel melyik számítási időpontnál tart (t). Ezt az időpontértéket globális változó segítségével az összes a „Rendszer számítási modelljének blokkjában” szereplő számítási blokkhoz eljuttatja, hogy az adott időpontra vonatkozó számításokat elvégezhessék a blokkban szereplő elemek.

A „Rendszer számítási modelljének blokkjában” a számítást végző blokkok (eljárások) végrehajtási sorrendjét az adatfolyam-programozás szabályai adják meg.

Az adatfolyam-programozás szabályai a következők:

  • Egy számítást végző blokk (eljárás) végrehajtása akkor kezdődhet el, ha minden bemeneti paramétere megérkezett a blokkhoz (eljáráshoz).

  • Egy éppen számítást végző blokk (eljárás) kimenetén csak akkor jelenhetnek meg az eredmények (kimeneti értékek), ha az éppen számítást végző blokkban már minden számítást elvégeztünk.

Ezekkel az egyszerű szabályokkal tetszőleges mélységű, egymásba ágyazott blokk (eljárás) struktúrát létrehozhatunk, amely megvalósítja a folytonos rendszer számításához szükséges feladatok (egy lehetséges) kiszámításának sorrendjét, adott mintavételi időpontban.

Abban az esetben, ha szöveges típusú programozási nyelvet alkalmaztunk a számításokhoz, az adatfolyam-programozás szerinti eljárás kiszámítási sorrendet nekünk kell biztosítani. Matlab programkörnyezetben mi adjuk meg a számítást végző program utasításainak sorrendjével a kiszámítás sorrendjét. A Simulink-ben maga a (Simulink) program határozza meg a blokkok (eljárások) kiszámítási sorrendjét, hasonlóan történik a LabVIEW-ban is az adatfolyam-programozás szabályai szerint.

1.8.3. Az alapelemek megvalósítása

Az 1.2. szakasz - Alapelemek (objektumok, blokkok, műveletek) fejezetben bemutattuk az időben folytonos differenciálegyenlettel leírt rendszer analóg áramköri elemekkel történő megvalósításához szükséges alapelemeket. Ebben a fejezetben bemutatjuk a lineáris, állandó együtthatós (LTI= Linear Time Invariant) differenciálegyenlettel leírt rendszer digitális számítógépen történő megvalósításához szükséges számítógépes elemeket (algoritmusokat).

A folytonos rendszer áramköri elemekkel történő megvalósításához tekintsük az1.3 egyenlettel leírt időben folytonos állandó együtthatós differenciálegyenletet:

 

(1.390)

ahol

 

a 0 ..a n

a differenciálegyenlet kimenő jelének és deriváltjainak együtthatói,

 

b 0 ..b m

a differenciálegyenlet bemenő jelének és deriváltjainak együtthatói,

 

y(t)

a rendszer kimenő jele,

 

n

a kimenő jel legmagasabb deriváltjának fokszáma,

 

u(t)

a rendszer bemenő jele,

 

m

a bemenő jel legmagasabb deriváltjának fokszáma,

 

t

időváltozó.

A differenciálegyenletben a következő alapműveletek szerepelnek:

  • a jelkomponensek összeadása, kivonása, szorzása, osztása,

  • a jelkomponensek idő szerinti derivált értékeinek meghatározása.

Az alapelemek számítógépes megvalósításánál a jelek idő szerinti derivált értékeinek meghatározása és alkalmazása helyett, azok inverz függvényét a jel idő szerinti integráljainak értékét alkalmazzák a rendszer számítási blokkjának megvalósításánál.

1.8.3.1. Jelkomponensekkel végzett aritmetikai műveletek

A műveletvégző elem a számítási blokkdiagramban (végrehajtása a k·h időpontban történik)
1.70. ábra - A műveletvégző elem a számítási blokkdiagramban (végrehajtása a k·h időpontban történik)


Az „ M ” művelet a folytonos rendszer differenciálegyenletének digitális számítógépes megoldásánál a következő lehet

  • összeadás ( + ),

  • kivonás ( - ),

  • szorzás ( * ),

  • osztás ( / ).

A két bemenet, az u1[k] és az u2[k], a rendszer differenciálegyenletében a k. mintavételi időpontokban megjelenő jelek értéke.

A műveleti elem nem hisztórikus tulajdonságú , azaz a bemeneteire érkezett adatokból egyik értéket sem tárolja a további számításokhoz.

A számítási blokkdiagramokban néhány oyan műveletvégző elem és szimbólum is megtalálható, amelyek nem az (1.70. ábra - A műveletvégző elem a számítási blokkdiagramban (végrehajtása a k·h időpontban történik)) ábrán látható általános leírási formátumúak.

Ezek a következők:

A bemenő jeleket előjelesen összegző blokk (végrehajtása a k·h időpontban történik)
1.71. ábra - A bemenő jeleket előjelesen összegző blokk (végrehajtása a k·h időpontban történik)


Az (1.71. ábra - A bemenő jeleket előjelesen összegző blokk (végrehajtása a k·h időpontban történik)) ábrán látható műveletvégző egyég a következő műveletet végzi el, ahol a bemenetek jelszorzó tulajdonságát (előjelét) is megadhatjuk:

 

(1.391)

A bemenő jelet C konstanssal szorzó blokk (végrehajtása a k·h időpontban történik)
1.72. ábra - A bemenő jelet C konstanssal szorzó blokk (végrehajtása a k·h időpontban történik)


Az (1.72. ábra - A bemenő jelet C konstanssal szorzó blokk (végrehajtása a k·h időpontban történik)) ábrán látható műveletvégző egyég a következő műveletet végzi el végzi el, ahol c konstans érték:

 

(1.392)

1.8.3.2. A jel integrálása idő szerint az adott mintavételi időpontban

Ahogyan azt a korábbi fejezetekben bemutattuk, a rendszer differenciálegyenletének numerikus megoldása differenciáló tulajdonságú blokkok alkalmazásával számos előnytelen számítási jellemzővel rendelkezik. Ezeket úgy foglalhatjuk össze, hogy a differenciáló tulajdonságú tagok bemeneti jel zaj összetevőit jobban felerősítik a hasznos jelkomponenshez képest, illetve a differenciahányados meghatározásánál a számok számítógépbeli lebegőpontos ábrázolásából adódóan számítási pontossági problémák merülnek fel.

Ezen megfontolások alapján a rendszerek digitális számítógépes megoldásánál az idő szerinti differenciálás helyett numerikus integrálási eljárásokat alkalmazunk.

Az integráló elem hisztórikus tulajdonságú (vannak belső állapotváltozói és tárolja ezek korábbi értékeit), azaz a pillanatnyi kimeneti értéket befolyásolja, hogy milyenek voltak korábbi bemeneti mintavételi értékek.

A t=0 időpillanatban beállíthatjuk az állapotváltozók úgynevezett kezdeti értékét .

Számos numerikus integrálási algoritmus létezik, melyek közül hármat emeltünk ki, amelyek a leggyakrabban szerepelnek a szimulációs rendszerekben:

  • téglány vagy Euler integrátor,

  • trapéz vagy másodrendű Adams-Moulton integrátor,

  • másodrendű Adams-Bashforth integrátor.

A téglány (Euler) integrátort a következő függvényt valósítja meg:

 

(1.393)

ahol

 

y [k]

– az integrál értéke a mintavételi időpontban,

 

y [k-1]

– az integrál értéke az előző mintavételi időpontban,

 

u[k-1]

– az integrálandó függvény értéke az előző mintavételi időpontban,

 

dt

– az integrálási lépésköz.

Ez az integrátor csak egyetlen állapotváltozóval rendelkezik, ezért csak egy időpillanatbeli értékről tud információt tárolni. Felépítéséből adódóan alkalmazható változó lépésközű integrálási algoritmus megvalósítására, valamint alkalmas arra, hogy a k=0 időpillanatban el tudjuk indítani a számításainkat.

Mivel hisztórikus (emlékező) tulajdonságú elem, a k=0 értékhez megadhatjuk a kimeneti érték kiindulási állapotát – a kezdeti értéket (IC = Initial Condition).

A trapéz vagy másodrendű Adams-Moulton integrátor nál a következő függvény határozza meg az integrál értékét:

 

(1.394)

ahol

 

y [k]

– az integrál értéke a mintavételi időpontban,

 

y [k-1]

– az integrál értéke az előző mintavételi időpontban,

 

u [k]

– az integrálandó függvény értéke az aktuális mintavételi időpontban,

 

u [k-1]

– az integrálandó függvény értéke az előző a mintavételi időpontban,

 

dt

– az integrálási lépésköz.

Az Adams-Moulton integrátorok igen jó pontosságúak, egyetlen hátrányuk, hogy nem tudnak időben előre haladni, ezért vagy más integrátorokkal együtt alkalmazzuk őket, vagy kívülről kell biztosítani az időléptetést. Mivel hisztórikus (emlékező) tulajdonságú elem, a k=0 értékhez megadhatjuk a kimeneti érték kiindulási állapotát – a kezdeti értéket.

Az Adams-Bashforth integrátor számítási algoritmusát a következő összefüggést valósítja meg:

 

(1.395)

ahol

 

y [k]

– az integrál értéke a mintavételi időpontban,

 

y [k-1]

– az integrál értéke az előző mintavételi időpontban,

 

u [k-1]

– az integrálandó függvény értéke az előző mintavételi időpontban,

 

u [k-2]

– az integrálandó függvény értéke a két időlépéssel ezelőtti mintavételi időpontban,

 

dt

– az integrálási lépésköz.

Az Adams-Bashforth integrátorok az Adams-Moulton-nal közel azonos pontosságú integrátorok. Amint az a képletből is látszik, az integrál értékét előre megjósolják a rendelkezésre álló adatokból.

A három integrálási eljárás előnyös tulajdonságait úgy használhatjuk ki, hogy a különböző számítási időlépésekben különböző integrálási algoritmust alkalmazunk.

A téglány (Euler) integrátort általában a szimuláció első lépésében (k=1) használjuk, mert önindító tulajdonságú. A második és további lépésekben már trapéz, vagy Adams-Bashforth integrátor t célszerű alkalmazni, mert pontosabbak, illetve ezektől a lépésektől áll rendelkezésükre minden szükséges, korábbi bemeneti mintavételi adat.

A numerikus integrálási algoritmus jelölése a blokkdiagramban az (1.73. ábra - Az integrátor jelölése blokkdiagramban (végrehajtása a k·h időpontban történik)) ábrán látható:

Az integrátor jelölése blokkdiagramban (végrehajtása a k·h időpontban történik)
1.73. ábra - Az integrátor jelölése blokkdiagramban (végrehajtása a k·h időpontban történik)


Az integrátor szimbólikus jelölésénél a kimenet értéke a k=0 mintavételi időpontban az y[0] bemenettel megadott, úgynevezett kezdeti érték , egyébként pedig az integrálási algoritmussal a k. időpillanatban meghatározott érték.

A bemutatott integrálási algoritmusok mindegyikében az integrátor kimeneti jele a korábbi bemenetek által létrehozott részintegrál értékeinek összegét is tartalmazza. Tehát az integrátorok altuális kimeneti értéke „emlékszik arra”, hogy milyen korábbi bemeneti értékek voltak, amelyek létrehozták a jelenlegi kimeneti értéket.

1.8.3.3. Jelkésleltetés

Az időbeni jelkésleltetés megvalósítása digitális számítógéppel két módon lehetséges.

Az első megoldásnál mintavételi időpontonként tároljuk egy vektor típusú adatstruktúrában a bemeneti jel mintavételi értékeit. Amikor a bemeneti adaton adott késleltetést szeretnénk megvalósítani, akkor az adatok mintavételi időnként tárolt adataiból N d eltolással olvassuk ki az adatokat. Az N d értékét az aktuális mintavételi idő felhasználásával a következő összefüggés adja meg:  

 

(1.396)

ahol

 

T delay [k]

– a jelkésleltetés időtartama az aktuális mintavételi időpontban,

 

N d [k]

– a késleltetés szorzószáma dt-vel a mintavételi időlépéssel a mintavételi időpontban,

 

dt

– a számítás lépésköze.

Az ilyen típusú késleltető elem bemeneti jel értékeket tartalmazó vektor struktúrája nem lehet végtelen hosszúságú, ezért ennél az alkalmazásnál úgynevezett gyűrű típusú memóriát hozunk létre, amelynek jellemzője, hogy az elemek elérési indexe a legutolsó elem után az első elemnél folytatódik. Ezzel a memóriakezelési megoldással csak meghatározott mértékű késleltetést lehet megvalósítani, amely a vektor típusú adatstruktúra elérhető maximális memóriaindexének függvénye.

Jelkésleltetés megvalósítása memória indexeléssel
1.74. ábra - Jelkésleltetés megvalósítása memória indexeléssel


A második megoldás a – korábban már bemutatott (1.2.6. szakasz - Jelkésleltetés (Padé-közelítés)) – Padé-közelítés megvalósítása digitális számítógépes környezetben.

 

(1.397)

 

(1.398)

ahol

 

c k

– a Padé-közelítés együtthatója,

 

τ

– a késleltetés időtartama,

 

n

– a Padé-közelítés fokszáma.

A Padé-közelítés együtthatóit az első 5 taghoz az (1.11. táblázat - A Padé-közelítés együtthatói) táblázat tartalmazza.

1.11. táblázat - A Padé-közelítés együtthatói

Az approximáció

fokszáma

k együttható

c együttható

n=1

k=0

n=1

k=1

n=2

k=2

n=3

k=3

n=4

k=4

n=5

k=5


Jelkésleltetés megvalósítása Padé-közelítéssel (n=5)
1.75. ábra - Jelkésleltetés megvalósítása Padé-közelítéssel (n=5)


Jelkésleltetés megvalósítása Padé-közelítéssel (n=20)
1.76. ábra - Jelkésleltetés megvalósítása Padé-közelítéssel (n=20)


Ahogy az ábrákról látható, a Padé-közelítés a jelkésleltetés (holtidő) megvalósításában különböző nagyságú túllendülésekkel valósítja meg a bemeneti jel (u(t)) késleltetését a kimeneti jelben (y(t)), illetve a közelítés pontossága függ a Padé-közelítés fokszámától.

1.8.3.4. Nemlineáris elemek

Bár jegyzetünkben alapvetően lineáris, állandó együtthatós differenciálegyenletekkel leírható, vagy ezekre visszavezethető rendszerek számításának bemutatásával foglalkozunk, előfordul azonban, hogy a lineáris közelítést bizonyos elemeknél nem tudjuk biztosítani. Ezek a rendszerelemek olyan nemlineáris tulajdonságot valósítanak meg, amelyet nem lehet, vagy túlságosan sok számítással megvalósítható közelítéssel lehetne csak munkapontonként linearizálni.

A nemlineáris tulajdonságú rendszerelemek a műszaki gyakorlatban két nagy csoportba sorolhatók, amelyek a következők:

  • egy bemenetű, egy kimenetű nemlineáris elemek,

  • egy bemenetű, több kimenetű nemlineáris elemek.

A következő ábrákon olyan függvényeket mutatunk be, amelyek egy bemenettel és egy kimenettel, valamint több kimenettel rendelkeznek.

Egy bemenetű,  egy kimenetű nemlineáris elem
1.77. ábra - Egy bemenetű,  egy kimenetű nemlineáris elem


Egy bemenetű,  több kimenetű nemlineáris elem (hiszterézises relé)
1.78. ábra - Egy bemenetű,  több kimenetű nemlineáris elem (hiszterézises relé)


A nemlineáris elemek adott bemeneti jelértékhez tartozó kimenetét szintén két módon határozhatjuk meg. Ha ismerjük a nemlineáris viselkedést megvalósító függvényt, akkor megadhatjuk ezt a nemlinearitást meghatározó matematikai összefüggést. Ekkor a rendszeregyenlet számítása során meghatározhatjuk az adott bemeneti paraméterhez tartozó kimeneti jel értékét. Ezzel leírási móddal tetszőleges függvényt (négyzetgyökös, logaritmikus, trigonometrikus vagy más függvényt) meg lehet valósítani.

Az (1.78. ábra - Egy bemenetű,  több kimenetű nemlineáris elem (hiszterézises relé)) ábrán egy olyan függvény látható, amely ugyanazon bemeneti értékhez több kimeneti értéket rendel. A kimeneti értékek közül az jelenik meg kimeneten, amely közelebb van az egy lépéssel korábban felvett függvényértékhez.

Megállapítható, hogy számítógépes környezetben tetszőleges függvénnyel leírható számítási elem megvalósítható, ha ismerjük a függvény leírásához szükséges algoritmust.

Nemlineáris rendszerelem megvalósításakor gyakran előfordul, hogy a függvény leírásához szükséges algoritmust nem ismerjük, csak a megvalósítandó függvény értékeit és az őket definiáló bemeneti jel értékét. A definiáló pontokkal megadott függvényt úgynevezett függvényadat-táblázat elem ( Lookup Table ) segítségével alakítjuk át a teljes alkalmazási tartományban aktuális értékkel rendelkező függvénnyé. Ezt úgy valósítjuk meg, hogy azoknál a bemeneti értékeknél, amelyeknél nem rendelkezünk függvényérték ponttal, a bemeneti érték két szomszédos függvény értékéből lineáris interpolációval határozzuk meg a szükséges függvényértéket, ahogy az a (1.79. ábra - A Lookup Table 1D (egydimenziós táblázatos függvény) interpolációs metódusa) ábrán látható.

A Lookup Table 1D (egydimenziós táblázatos függvény) interpolációs metódusa
1.79. ábra - A Lookup Table 1D (egydimenziós táblázatos függvény) interpolációs metódusa


Az eljárás két vagy több bemeneti paraméter esetén is megvalósítható, ilyenkor az interpoláció és a kimeneti függvényérték meghatározása a bemeneti változók számának megfelelő dimenziójú hipersíkban történik, a rendelkezésre álló függvényértékek felhasználásával.

A Lookup Table 2D (kétdimenziós táblázatos függvény) interpolációs metódusa  - a bemenő jelek x(t) és y(t)
1.80. ábra - A Lookup Table 2D (kétdimenziós táblázatos függvény) interpolációs metódusa  - a bemenő jelek x(t) és y(t)


1.8.4. Alapelemek összekapcsolása

Folytonos rendszerek digitális számítógépen történő számításához az egyes alapelemeket (integrátor, összeadó, szorzó elem) megvalósító alprogramokat olyan sorrendben kell végrehajtani, hogy ezzel előállítsunk egy adatfolyam-programozás számítási sorrendet.

Az elemek összekapcsolásának művelete nem más, mint az egyes blokkok kimeneti értékének meghatározása, amelyhez más blokkok - korábban kiszámított - értékeit alkalmazzuk a blokk bemeneti paramétereként. Ezzel létrehozunk egy kapcsolatot, az egyik alkalmazott blokk kimeneti paramétere és számítási blokkunk egyik bemeneti paramétere között. Az összes kapcsolat létrehozása hasonló módon történik a számítási blokkok kimeneteinek meghatározásával.

Az egyes alapelemek programbeli leírásához meg kell adnunk, hogy az elem milyen kimeneti értéket határoz meg, és ehhez milyen bemeneti paramétereket igényel. Például, a következő definíció egy integráló típusú alapelem szöveges programozással megvalósított leírását mutatja be:

 

dy = INTEGRALAS (d2y, dy0);

(1.399)

ahol

 

INTEGRALAS ()

az integrálási eljárás elnevezése,

 

dy

az integráló elem kimenetének értéke a számítási időpillanatban,

 

d2y

az integráló elem bemenetének értéke a számítási időpillanatban,

 

dy0

az integráló elem kimenetének (kezdeti) értéke t=0 időpillanatban.

Egy differenciálegyenlet megoldását, a fentihez hasonló kimenő jel definíciók sorozata adja meg, amelyben szerepelnek a többi alapelemek is.

Minden elemtípusból tetszőleges mennyiségű elemet alkalmazhatunk a feladat leírásához.

Nem biztos, hogy az egyenletek sorozata kiszámítható lesz az adatfolyam-programozás szabályai szerint abban a sorrendben, ahogy a szimulációt végző személy megadja az egyes egyenleteket. A számítást végző programnak tehát képesnek kell lennie, hogy „átrendezze” a szövegben megadott elemek kiszámítási sorrendjét egy valóságban is kiszámítható sorrenddé.

A következő mintapéldában egy egytárolós, arányos tag differenciálegyenletének kiszámítási blokkdiagramját rajzoltuk fel. A differenciálegyenlet a következő elemekből áll:

 

(1.400)

A differenciálegyenlet megoldásához a következő (elemkimeneti) értékeket kell meghatároznunk (a program készítője által definiált sorrendben):

1.12. táblázat - A mintapélda műveleteinek sorrendje definiáláskor

Utasítás sorrend a definíciónál

Utasítás

 

1. utasítás

b0 =KONSTANS (b0_értéke);

(1.401)

2. utasítás

a0=KONSTANS (a0_értéke);

(1.402)

3. utasítás

a1=KONSTANS (a1_értéke);

(1.403)

4. utasítás

y_k=INTEGRALAS (dy_dt, y0);

(1.404)

5. utasítás

b0u=SZORZAS (b0, u_k);

(1.405)

6. utasítás

a0y=SZORZAS (a0, y_k-1);

(1.406)

7. utasítás

b0u_a0y=KIVONAS (b0u, a0y);

(1.407)

8. utasítás

dy_dt=OSZTAS (b0u_a0y, a1);

(1.408)

9. utasítás

y_k-1=SHIFT (y_k);

(1.409)


Az (1.401)-től az (1.409)-ig leírt egyenletekben minden számítási blokk kimenetét meghatároztuk, de a kiszámítási sorrend nem egyezik meg az egyenletek leírási sorrendjével. Vegyük például az (1.404)-es INTAGRALAS elnevezésű elemet, amelynek a jelenlegi kiszámítási sorrendben még nincs meg a bemeneti értéke, amikor kiszámítjuk, mert azt csak a (1.408) egyenletnek megfelelő lépésben fogjuk meghatározni.

Az (1.13. táblázat - A mintapélda műveleteinek (egyik) kiszámíthatósági sorrendje) táblázat az egyik kiszámíthatósági sorrendnek megfelelően átrendezett függvénysorrendet mutatja be.

1.13. táblázat - A mintapélda műveleteinek (egyik) kiszámíthatósági sorrendje

Kiszámít-hatósági

sorrend

Művelet

Eredeti sorrend

Megjegyzés

1.

b0 =KONSTANS (b0_értéke);

1. utasítás

 

2.

a0=KONSTANS (a0_értéke);

2. utasítás

 

3.

a1=KONSTANS (a1_értéke);

3. utasítás

 

4.

y_k_1=SHIFT (y_k);

9. utasítás

Az y_k_1 értéket az előző lépésben szereplő y_k érték alkalmazásával számítjuk ki.

5.

b0u=SZORZAS (b0, u_k);

5. utasítás

 

6.

a0y=SZORZAS (a0, y_k-1);

6. utasítás

 

7.

b0u_a0y=KIVONAS (b0u, a0y);

7. utasítás

 

8.

dy_dt=OSZTAS (b0u_a0y, a1);

8. utasítás

 

9.

y_k=INTEGRALAS (dy_dt, y0);

4. utasítás

 

ahol

 

u_k

az adott számítási időlépésben a bemenő jel értéke,

 

y_k

az adott számítási időlépésben a kimenő jel értéke,

 

y_k_1

az egy számítási időlépéssel korábbi y_k kimenő jel értéke,

 

SHIFT

művelet, amely a bemeneti paramétereként szereplő változó (y_k) egy időlépéssel korábbi értékét adja meg kimeneti értékként.

A leírásban azért szerepel, hogy a kiszámíthatóság egyik megoldását mutattuk be , mert az egyes blokkokkal más sorrendben is létrehozhatunk teljes kiszámíthatósági sorrendet!

Az egyenletek kiszámíthatóság szerinti sorba rendezése tulajdonképpen az adatfolyam-programozás megvalósítása a számítás elvégzéséhez rendelkezésre álló blokkok kiszámítási sorrendjének kialakításával. Ez a művelet a szövegtípusú programozási nyelvekben a program sorainak „átrendezésével” történik, természetesen az egyes sorok kezdetére mutató pointerek segítségével. Grafikus programozási nyelvek, mint például a Simulink vagy a LabVIEW, alkalmazásakor a kiszámíthatósági sorrend megállapítása a program futása során automatikusan végbemegy. Ezért például a Matlab-ban helytelen sorrendben leírt műveleti sorrend, amely így helytelen eredményt ad, a Simulink-ben a felhasználó „tudta nélkül” átrendeződik, és így a helyes sorrendben történik a számítás.

A mintapéldában szereplő differenciálegyenlet megoldásának számítási blokkdiagramja
1.81. ábra - A mintapéldában szereplő differenciálegyenlet megoldásának számítási blokkdiagramja


1.9. Numerikus differenciálás és integrálás

1.9.1. Numerikus differenciálás

1.9.1.1. Idő szerinti differenciálás szemléletes megközelítése

Kezdjük a legegyszerűbb esettel, egy pontban határozzuk meg a derivált közelítő értékét. Mint az olvasók nyilvánvalóan tudják, a derivált értéke a függvény adott pontjához húzott érintőjének meredekségével egyezik meg. Ezt mindkét oldalról közelíthetjük (1.82. ábra - A meredekség közelítése két oldalról):

 

(1.410)

A meredekség közelítése két oldalról
1.82. ábra - A meredekség közelítése két oldalról


Amennyiben az y(t) függvényt ismerjük és (1.410) igaz, akkor a függvényt egyszer differenciálhatónak nevezzük. Ekkor egyszerűbb az ismert függvény deriváltját előállítani, és abba behelyettesíteni.

Más a helyzet, ha a függvényt csak pontjaiban ismerjük, például mérés eredményeként kaptuk. Ekkor interpolációs polinomot fektethetünk a pontokra, majd azt deriválhatjuk.

Nézzünk egy egyszerű esetet. Három alappontra illesszünk polinomot, ahol a pontok legyenek ekvidisztánsak (azonos lépésközűek), és a ti-re szimmetrikusan helyezkedjenek el. Ekkor a polinomot a következő egyenlettel írhatjuk le:

 

(1.411)

A három ismert pontot behelyettesítve, egy lineáris egyenletrendszer kapunk, melyet megoldva az a, b és c paraméterek meghatározhatók. Nekünk csak a deriváltra lesz szükségünk, így c-t nem szükséges meghatározni, hiszen nem tartalmazza!

Az egyenletrendszer a következő:

 

(1.412)

 

(1.413)

 

(1.414)

Adjuk össze (1.412)-t és (1.414)-t:

 

(1.415)

Vonjuk ki (1.415)-ből (1.413) kétszeresét, majd fejezzük ki a-t:

 

(1.416)

 

(1.417)

Térjünk vissza a kiinduló egyenletekhez, és vonjuk ki (1.414)-ből (1.412)-t, majd helyettesítsük be (1.417)-ot azaz a-t, végül fejezzük ki b-t:

 

(1.418)

 

(1.419)

 

(1.420)

Végül helyettesítsük be a-t és b-t a deriváltat közelítő polinomba:

 

(1.421)

 

(1.422)

Hosszas számításunk eredménye tulajdonképpen egy húr egyenlete lett (1.83. ábra - A derivált közelítése húrral).

A derivált közelítése húrral
1.83. ábra - A derivált közelítése húrral


A módszert több pontra alkalmazva kapjuk a következő (nyílván pontosabb) közelítéseket:

 

(1.423)

 

(1.424)

Ezeket és az ehhez hasonló formulákat közönséges- és parciális differenciálegyenlet közelítő megoldásainak meghatározásánál is szokták alkalmazni, ilyen például a véges differenciák módszere, bár akkor a független változó általában az x, ami térbeli pozíciót jelöl. Jelen jegyzet témái közé az időben, és nem a térben lejátszódó folyamatok vizsgálata tartozik, ezért is használjuk függetlenváltozónak a t-t. Ekkor azonban – ha t i -vel az aktuális idő pillanatot jelöljük – a t i +Δt, t i +2Δt, stb. időpillanatbeli értékek még nem állnak rendelkezésünkre, hiszen az a JÖVŐ. Az interpolációs technika ekkor is alkalmazható, csak az alappontokat kell másképpen – nem t i -re szimmetrikusan – megválasztani. A következőkben ismét egy egyszerű esetet vizsgáljunk meg.

A derivált közelítése csak a „jelen” és a „múlt” értékeit felhasználva
1.84. ábra - A derivált közelítése csak a „jelen” és a „múlt” értékeit felhasználva


A kiinduló állapotot az (1.84. ábra - A derivált közelítése csak a „jelen” és a „múlt” értékeit felhasználva) ábra mutatja. Határozzuk meg a derivált közelítő formuláját a t i és a t i +Δt pontokban. A kiinduló egyenletrendszer most:

 

(1.425)

 

(1.426)

 

(1.427)

Vonjuk ki (1.425)-ből és (1.426)-ből (1.427)-at:

 

(1.428)

 

(1.429)

Ha (1.429) kétszeresét kivonjuk (1.428)-ből, akkor a-t könnyen kifejezhetjük:

 

(1.430)

Most (1.429) négyszeresét kivonjuk (1.428)-ből, majd fejezzük ki b-t:

 

(1.431)

Határozzuk meg először -t:

 

(1.432)

 

(1.433)

Ugyanebből az interpolációs polinomból kaphatunk becslést -re is:

 

(1.434)

 

(1.435)

Ezeket az összefüggéseket már használtuk az 1.3.1.3. szakasz - Összehasonlító mintapélda megoldása differenciáló és integráló algoritmussal fejezetben. Az eddig bemutatott módszer szemléletes, könnyen érthető, azonban nem biztosít lehetőséget a hiba megbecslésére. A következőkben ezt a hiányosságot is megszüntetjük a Taylor sorok felhasználásával.

1.9.1.2. Alapgondolat Taylor sor alkalmazásához

Írjuk fel y(t) t i körüli Taylor sorát a maradék taggal:

 

(1.436)

Keressük -t a következő alakban:

 

(1.437)

Az (1.436) alkalmazásával írjuk fel -et, -t és-et, majd helyettesítsük be (1.437)‑be:

 

(1.438)

 

(1.439)

 

(1.440)

 

(1.441)

Az (1.437) és (1.441) összevetéséből adódik a következő egyenletrendszer:

 

(1.442)

 

(1.443)

 

(1.444)

A megoldás pedig és .

A közelítő összefüggés ennek megfelelően:

 

(1.445)

Mivel csodák nincsenek, ez az összefüggés megegyezik (1.422)-el. Kihasználhatjuk azonban azt, hogy a számításainkhoz a Taylor sort vettük igénybe, és annak maradéktagja ismert, így becslést kaphatunk a hibára! Helyettesítsünk be most (1.445)-ba a maradéktaggal kiegészített értékeket:

 

(1.446)

Az (1.446)-ből a hibatag könnyedén kiolvasható. Hozzuk könnyebben kezelhető, egyszerűbb alakra.

Állítás:

 

.

(1.447)

ahol

Aki ismeri a Bolzano-Darboux tételt , az a következő gondolatmenetet kihagyhatja. Vezessük be a következő függvényt:

 

(1.448)

Helyettesítsünk be (1.448)-be ξ-t és ς -t, majd írjuk fel a szorzatukat:

 

(1.449)

 

(1.450)

 

(1.451)

Bolzano tétele alapján azonban ha egy folytonos függvény valamely intervallumának két szélén ellentétes előjelű, akkor az intervallumban biztosan van legalább egy zérus hely. Esetünkben, mivel a feltétel teljesül. Legyen η a zérus hely. Ekkor -ből állításunk adódik! A differenciáló formula ezután a következő alakban írható fel:

 

(1.452)

A Bolzano tétel geometriai szemléltetése
1.85. ábra - A Bolzano tétel geometriai szemléltetése


A most ismertetett módszerrel előállítható a második derivált közelítése is.

Keressük -t a következő alakban:

 

(1.453)

 (1.436) alkalmazásával írjuk fel -et, -t és-et, majd helyettesítsük be (1.453)‑be:

 

(1.454)

 

(1.455)

 

(1.456)

 

(1.457)

Az (1.453) és (1.457) összevetéséből adódik a következő egyenletrendszer:

 

(1.458)

 

(1.459)

 

(1.460)

A megoldás pedig és . A közelítő összefüggés ennek megfelelően:

 

(1.461)

Ezt az összefüggés már használtuk az 1.3.1.3. szakasz - Összehasonlító mintapélda megoldása differenciáló és integráló algoritmussal pontban. Ismét kihasználhatjuk azonban azt, hogy a számításainkhoz a Taylor sort vettük igénybe, és annak maradéktagja ismert, ezért annak felhasználásával becslést kaphatunk a hibára. Helyettesítsünk be (1.461)‑be a maradéktaggal kiegészített értékeket:

 

(1.462)

Az (1.462)-ból a hibatag most is könnyedén kiolvasható. Ezt az előző példánál bemutatott levezetésben alkalmazott módszerrel tudjuk ezúttal is egyszerűbb alakra hozni, így a differenciáló formula végleges alakja:

 

(1.463)

1.9.1.3. Általános, hibatagot szolgáltató eljárás

Az előző pontban bemutatott módszert általánosíthatjuk, ily módon a közelítő formulák előállítása egyszerűbbé szinte automatikussá válik.

Legyen adott a függvény az (t 0 ,y 0 ), (t 1 ,y 1 ),…(t 2m ,y 2m ) ekvidisztáns pontpárokkal, azaz t i+1 -t i t, i=0,1,2…2m esetén. Keressük a közelítő formulát

 

(1.464)

alakban, ahol legyen O. Fejezzük ki az itt szereplő függvényértékeket a következő Taylor sorral:

 

,

(1.465)

majd helyettesítsünk be:

 

(1.466)

Hogy a hibára vonatkozó feltételünket teljesíteni tudjuk, válasszuk meg az első 2m+1 tagot úgy, hogy az n-ediket kivéve legyen zérus, az n. pedig legyen egyenlő a keresett deriválttal:

 

(1.467)

A c r konstansokra így 2m+1 darab egyenletet kaptunk, melynél az együtthatómátrix determinánsa Vandermonde típusú, így az egyenletrendszer mindig egyértelműen megoldható:

 

(1.468)

A közelítés hibájára becslést [33.] első – de az n.-nél nagyobb indexű – nem zérus értékű tagjából kapjuk, felhasználva a Taylor sorok maradéktagjára vonatkozó összefüggést, és a Bolzano-Darboux tételt:

 

(1.469)

Mintapélda:

Határozzuk meg az első deriváltra vonatkozó összefüggést O nagyságrendű hiba esetén!

A kiírásnak megfelelően n=1. Mivel a hiba nagyságrendje 2, így 2m-n+1=2, amiből m=1 adódik. Ennek megfelelően az egyenletrendszer:

 

(1.470)

 

(1.471)

 

(1.472)

Az egyenletrendszer megoldása, és a közelítő formula:

 

(1.473)

 

(1.474)

Határozzuk meg a hiba becslésére vonatkozó közelítést:

 

(1.475)

Mintapélda:

Határozzuk meg a második deriváltra vonatkozó összefüggést, ha m=1!

Az előző példához hasonlóan most is három egyenletet kell felírni, és csak a jobb oldalukon térnek el:

 

(1.476)

 

(1.477)

 

(1.478)

Az egyenletrendszer megoldása, és a közelítő formula:

 

(1.479)

 

(1.480)

Határozzuk meg a hiba becslésére vonatkozó közelítést:

 

(1.481)

Természetesen le lehet vezetni az előzőekben látottaknál kisebb hibataggal rendelkező közelítéseket is, de azok nagyobb számítási igénnyel rendelkeznek:

 

; hiba becslés:

(1.482)

Általában a kívánt pontosságot nem egy bonyolultabb formula alkalmazásával célszerű elérni, hanem a kisebb intervallum megválasztásával.

Az itt bemutatott módszer által előállított formulák a differenciahányados helyére szimmetrikusan elhelyezkedő pontokat használnak. Természetesen lehet ettől eltérő összefüggéseket is keresni (lásd. (1.435)), ekkor azonban a kiinduló összefüggésben (1.464) kell az összegzés határait módosítani.

1.9.2. Numerikus integrálás

Egy függvény határozott integrálásakor tulajdonképpen a függvény alatti területet szeretnénk meghatározni. Ha az y(t) függvénynek ismerjük az Y(t) primitív függvényét, akkor egyszerű a dolgunk:

 

(1.483)

A primitív függvény azonban nem mindig áll a rendelkezésünkre, vagy mert a matematikai ismereteink nem elégségesek a meghatározásához, vagy mert nem lehet előállítani. Ekkor numerikus módszereket alkalmazunk. Az idők során nagyon sok különböző elvű integrálási formulát állítottak fel. Hogy éppen mikor melyiket alkalmazzuk, az több dologtól függ, például az integrálandó függvény tulajdonságaitól, megadásának módjától, a megkívánt pontosságtól, stb.

A következőkben néhány elterjedten használt módszerrel és származtatásukkal ismerkedhetünk meg. A későbbiekben ez jól felhasználható annak eldöntésére is, hogy mikor melyiket alkalmazzuk.

A differenciálszámításhoz hasonlóan itt is több lépcsőre bontjuk az ismertetést. Az első rész tartalmazza a szemléletes megközelítést, a második a Taylor sorokon alapuló, de egyszerű módszert, és végül a harmadik az általános eljárást, több esetre is.

1.9.2.1. Szemléletes megközelítés

Nézzünk most néhány esetet, egyszerűbb, nem általános módon, amikor hiba becslésre nincs lehetőségünk. Legyen adott az integrálandó y függvény az ekvidisztáns t i -2 , t i -1 , t i , t i +1 pontokban rendre y i -2 , y i -1 , y i , y i +1 értékkel. Az integrált az [t i , t i +1 ] intervallumban keressük az ismert pontokra fektetett különböző fokszámú interpolációs polinomokkal.

Az első esetben csak az i és i+1 indexű pontokat használjuk:

A trapéz formula (másodrendű Adams-Moulton) grafikusan
1.86. ábra - A trapéz formula (másodrendű Adams-Moulton) grafikusan


Fektessünk egyenest a két ponton keresztül, majd végezzük el az integrálást:

 

(1.484)

A t i +1 -t i t helyettesítés bevezetése után a jól ismert trapéz formulát kapjuk:

 

.

(1.485)

Ez az összefüggés sokféle módon levezethető. Az itt bemutatott előállítás – és annak általánosítása esetén – az un. interpolációs formulákat kaphatjuk. Az elnevezés magától értetődő, hiszen egy interpolációs polinom felhasználásával állítottuk elő a formulát. Ekkor a trapéz formulát másodrendű Adams-Moulton formulának is hívhatjuk.

A második esetben csak az i és i-1 indexű pontokat használjuk (1.86. ábra - A trapéz formula (másodrendű Adams-Moulton) grafikusan), fektessünk egyenest a két ponton keresztül, majd végezzük el az integrálást:

 

(1.486)

Alkalmazzuk most is a t i +1-t i t helyettesítést:

 

(1.487)

A másodrendű Adams-Bashforth formula grafikusan
1.87. ábra - A másodrendű Adams-Bashforth formula grafikusan


Az így kapott formulát másodrendű Adam-Bashforth integrátornak hívjuk. Az ilyen típusú integrátorokra jellemző, hogy az integrálást a tartópontokon kívüli területen végzik el, ezért az „extrapolációs” jelzőt is elterjedten használjuk.

A következő esetben csak az i-1,i és i+1 indexű pontokra támaszkodunk:

A harmadrendű Adams-Moulton formula grafikusan
1.88. ábra - A harmadrendű Adams-Moulton formula grafikusan


Fektessünk parabolát a pontokon keresztül, majd végezzük el az integrálást. A feladat megoldásához a Maxima nevű ingyenes programot használtuk, mellyel a következő egyenletrendszert oldottuk meg, majd az eredményeket felhasználva integráltunk:

 

(1.488)

(%i1)    e1:yip1=a*(ti+dt)^2+b*(ti+dt)+c$
(%i2)    e2:yi=a*(ti)^2+b*(ti)+c$
(%i3)    e3:yim1=a*(ti-dt)^2+b*(ti-dt)+c$
(%i4)    globalsolve: true$
(i%5)    solve([e1,e2,e3],[a,b,c])$
(i%6)    integrate(a*t^2+b*t+c,t,ti,ti+dt)$
(i%7)    radcan(%);

          5 dt yip1 – dt yim1 + 8 dt yi
(o%7)   --------------------------------
                       12

Az eredmény átírva a megszokott jelölésekre, és -t kiemelve a harmadrendű interpolációs Adams-Moulton féle formulát adja:

 

(1.489)

A következő esetben mozdítsuk visszafelé a pontokat, azaz csak az i-2, i-1 és i indexűeket használjuk:

A harmadrendű Adams-Bashforth formula grafikusan
1.89. ábra - A harmadrendű Adams-Bashforth formula grafikusan


Fektessünk most is parabolát a pontokon keresztül, majd végezzük el az integrálást. A feladat megoldásához újra a Maxima nevű programot használtuk, mellyel a következő egyenletrendszert oldottuk meg, majd az eredményeket felhasználva integráltuk:

 

(1.490)

 
(%i1)    e1:yi=a*(ti)^2+b*(ti)+c$
(%i2)    e2:yim1=a*(ti-dt)^2+b*(ti-dt)+c$
(%i3)    e3:yim2=a*(ti-2*dt)^2+b*(ti-2*dt)+c$
(%i4)    globalsolve: true$
(i%5)    solve([e1,e2,e3],[a,b,c])$
(i%6)    integrate(a*t^2+b*t+c,t,ti,ti+dt)$
(i%7)    radcan(%);
 
         5 dt yim2 – 16 dt yim1 + 23 dt yi
(o%7)     --------------------------------
                        12

Az eredmény átírva a megszokott jelölésekre, és -t kiemelve a harmadrendű extrapolációs Adams-Bashforth féle formulát adja:

 

(1.491)

1.9.2.2. Alapgondolat Taylor sor alkalmazására

A következőkben mindig közelítő meghatározására fogunk törekedni. Írjuk fel y(t) ti körüli Taylor sorát a maradék taggal [12.] :

 

(1.492)

Legyen a közelítő formula alakja a következő:

 

,

(1.493)

ahol a hibatag. Írjuk fel -t és -t a Taylor sor (1.492) segítségével, majd helyettesítsük be (1.493)-ba:

 

, ahol

(1.494)

 

(1.495)

Határozzuk meg -t úgy, hogy y(t)-t csak az első két tagjával vesszük figyelembe, hiszen -ben is csak ezek a tagok szerepelnek:

 

(1.496)

 

(1.497)

(1.495) és (1.497) összevetéséből a következő egyenletrendszer adódik:

 

(1.498)

Ennek megoldása , így a közelítő formula alakja:

 

(1.499)

A közelítés hibája pedig:

 

(1.500)

Eredményül a trapéz formulát kaptuk. Végezzük el a számítást akkor is, ha

 

(1.501)

A számítás menete eleinte ugyanaz mint a trapéz formulánál volt, csak a hibatagok eltérőek, mivel itt két különböző intervallum van:

 

, ahol

(1.502)

 

(1.503)

 

, ahol

(1.504)

 

(1.505)

Ennek megoldása és , így a közelítő formula alakja:

 

(1.506)

A közelítés hibája most is a következőképpen írható fel:

 

(1.507)

A hibatag most nem írható fel olyan egyszerűen. A numerikus deriválásnál leírt módszer azonban – kisebb módosítással – itt is alkalmazható. Állítás:

 

ahol .

(1.508)

Vezessük be a következő függvényt:

 

(1.509)

Helyettesítsünk b e (1.509)-be ξ-t és ς -t, majd írjuk fel a szorzatukat:

 

(1.510)

Bolzano tétele alapján azonban ha egy folytonos függvény valamely intervallumának két szélén ellentétes előjelű, akkor az intervallumban biztosan van legalább egy zérus hely. Esetünkben, mivel a feltétel teljesül. Legyen η a zérus hely. Ekkor -ből állításunk adódik. Vissza kell még helyettesíteni (1.507)‑ba:

 

(1.511)

Eredményünk a másodrendű Adams-Bashforth integrál formula.

1.9.2.3. Általános, hibatagot is szolgáltató eljárások - szimmetrikus formulák

Ebben, és a következő három fejezetben [8.] a független változó x lesz, jelezve, hogy az itt bemutatott formulák általánosan is használhatók.

Feladatunk a következő: egy adott [a,b] intervallumon szeretnénk meghatározni egy tetszőleges függvény integrálját. Bontsuk az intervallumot q egyenlő hosszúságú részre. Bontsuk tovább ezen intervallumokat n egyenlő hosszúságú részre, így végül n*q=m darab szakaszhoz jutottunk. Olyan formulát keresünk, amely a q darab intervallumon külön-külön megadja a közelítést, felhasználva az ezen belüli n+1 függvényértéket.

A szimmetrikus formulák kiinduló felosztása
1.90. ábra - A szimmetrikus formulák kiinduló felosztása


Legyen adott az integrálandó függvény explicit alakban, azaz y=f(x). Tegyük fel, hogy létezik az [a,b] intervallumon a Riemann‑integrálja, továbbá, hogy létezik az x i pontokra felírt konvergens Taylor‑sora, ahol

 

(1.512)

Keressük a közelítő formulát

 

(1.513)

alakban, ahol y i+k =f(x i+k ), n nem negatív egész szám. Felhasználjuk még az integrálandó függvény x i+p körül felírt Taylor‑sorát, ahol :

 

(1.514)

Írjuk fel a [x i , x i+n ] intervallumon vett integrál hibáját:

 

(1.515)

Helyettesítsük az f(x) függvényt mindenhol a Taylor‑sorával, kivéve a x i+p helyet:

 

(1.516)

Cseréljük fel az integrált és a szummát, majd vigyünk minden x-től független tagot az integráljel elé, valamint használjuk ki, hogy x i+k -x i+p = x i +kh- x i -ph=(k-p)h, és cseréljük fel a két szummát:

 

(1.517)

Végezzük el az integrálást:

 

(1.518)

Vonjuk össze a két szummát, és emeljünk ki:

 

(1.519)

Ezzel egy olyan összefüggéshez jutottunk, amely alkalmas mind a formulában szereplő c együtthatók meghatározására, mind a közelítés hibájának becslésére.

Az együtthatókat úgy kapjuk, hogy a felírt összefüggés első n+1 tagját nullának vesszük, így az n+1 darab c együttható meghatározásához éppen n+1 darab egyenletet írhatunk fel. A maradék, azaz az integrál közelítéssel elkövetett hiba, viszont az x i+p körül felírt Taylor‑sor maradéktagjából határozható meg:

 

 
 

 
 

(1.520)

ahol .

Ebből már könnyen meghatározható a hiba formulája:

 

(1.521)

Vegyük észre azonban, hogy ez a (1.519) összefüggés első nem zérus tagjával egyezik meg.

1.9.2.3.1. Trapéz formula

Legyen n=1 és p=0, valamint m=2q, ahol q pozitív egész. Ekkor az első n+1=2 tag a következő:

 

(1.522)

Az egyenletek rendezése után a következő egyenletrendszert kapjuk:

 

(1.523)

A két együttható tehát: . Határozzuk még meg a közelítés hibáját:

 

(1.524)

Ezek után a közelítő formula egy intervallumra:

 

,

(1.525)

és a teljes [a,b] intervallumra:

 

(1.526)

1.9.2.3.2. Simpson formula

Legyen n=2 és p=0, valamint m=2q, ahol q pozitív egész. Ekkor az első n+1=3 tag a következő:

 

(1.527)

Az egyenletrendszert megoldva kapjuk: . Határozzuk még meg a közelítés hibáját. j=3 esetén zérust kapunk, ezért j=4 adja az eredményt:

 

(1.528)

Ezek után a közelítő formula egy intervallumra:

 

,

(1.529)

és a teljes [a,b] intervallumra:

 

(1.530)

1.9.2.3.3. Newton-féle 3/8-os formula

Legyen n=3 és p=0, valamint m=3q, ahol q pozitív egész. Ekkor az első n+1=4 tag a következő:

 

(1.531)

Az egyenletrendszert megoldva kapjuk: . Határozzuk még meg a közelítés hibáját:

 

(1.532)

Ezek után a közelítő formula egy intervallumra:

 

,

(1.533)

és a teljes [a,b] intervallumra:

 

(1.534)

1.9.2.3.4. Szimmetrikus 4-lépéses formula

Legyen n=4 és p=0, valamint m=4q, ahol q pozitív egész. Ekkor az első n+1=5 tag a következő:

 

(1.535)

Az egyenletrendszert megoldva kapjuk: . Határozzuk még meg a közelítés hibáját. j=5 esetén zérust kapunk, ezért j=6 adja az eredményt:

 

(1.536)

Ezek után a közelítő formula egy intervallumra:

 

,

(1.537)

és a teljes [a,b] intervallumra:

 

(1.538)

1.9.2.4. Általános, hibatagot is szolgáltató eljárások - Adams-Bashforth formulák

Az integrálandó függvény értékeit n darab egymástól egyenlő távolságra (Δx) lévő pontban ismerjük. Határozzuk meg az integrál közelítő értékét a következő Δx intervallumon az ismert függvényértékek segítségével. Mivel itt csak a megelőző függvényértékekre támaszkodunk, szokás ezeket a formulákat prediktor formuláknak is nevezni.

Az Adams-Bashforth formulák kiinduló felosztása
1.91. ábra - Az Adams-Bashforth formulák kiinduló felosztása


Legyenek adottak az integrálandó függvény értékei az x0, x1, ..., x n- 1 pontokban, azaz f(x0), f(x1), ... f(x n- 1). Tegyük fel, hogy létezik az [a,b] intervallumon a függvény  Riemann‑integrálja, továbbá, hogy létezik az x i pontokra felírt konvergens Taylor‑sora, ahol

 

(1.539)

Keressük a közelítő formulát

 

(1.540)

alakban, ahol y i-k =f(x i-k ), és i=n-1. Felhasználjuk még az integrálandó függvény x i körül felírt Taylor‑sorát:

 

(1.541)

Írjuk fel az [x i , x i+1 ] intervallumon vett integrál hibáját:

 

(1.542)

Helyettesítsük az f(x) függvényt mindenhol a Taylor‑sorával, kivéve az x i helyet:

 

(1.543)

Cseréljük fel az integrált és a szummát, majd vigyünk minden x-től független tagot az integráljel elé, valamint használjuk ki, hogy x i-k -x i = x i -kh- x i =-kh, és cseréljük fel a két szummát:

 

(1.544)

Végezzük el az integrálást:

 

(1.545)

Vonjuk össze a két szummát, és emeljünk ki:

 

(1.546)

Ezzel egy olyan összefüggéshez jutottunk, amely alkalmas mind a formulában szereplő c együtthatók meghatározására, mind a közelítés hibájának becslésére.

Az együtthatókat úgy kapjuk, hogy a felírt összefüggés első n tagját nullának vesszük, így az n darab c együttható meghatározásához éppen n darab egyenletet írhatunk fel. A maradék, azaz az integrál közelítéssel elkövetett hiba, viszont az x i körül felírt Taylor‑sor maradéktagjából határozható meg:

 

 
 

(1.547)

ahol .

Ebből már könnyen meghatározható a hiba formulája:

 

(1.548)

Vegyük észre azonban, hogy ez a (1.546) összefüggés első nem zérus tagjával egyezik meg.

1.9.2.4.1. Elsőrendű Adams-Bashforth integrátor

Legyen n=1. Ekkor az első tag a következő:

 

(1.549)

Az együttható tehát: c0=h. Határozzuk még meg a közelítés hibáját:

 

(1.550)

Ezek után a közelítő formula:

 

.

(1.551)

1.9.2.4.2. Másodrendű Adams-Bashforth integrátor

Legyen n=2. Ekkor az első két tag a következő:

 

(1.552)

Az egyenletrendszert megoldva kapjuk:. Határozzuk még meg a közelítés hibáját:

 

(1.553)

Ezek után a közelítő formula:

 

.

(1.554)

1.9.2.4.3. Harmadrendű Adams-Bashforth integrátor

Legyen n=3. Ekkor az első három tag a következő:

 

(1.555)

Az egyenletrendszert megoldva kapjuk:. Határozzuk még meg a közelítés hibáját:

 

(1.556)

Ezek után a közelítő formula:

 

.

(1.557)

1.9.2.4.4. Negyedrendű Adams-Bashforth integrátor

Legyen n=4. Ekkor az első négy tag a következő:

 

(1.558)

Az egyenletrendszert megoldva kapjuk:.

Határozzuk még meg a közelítés hibáját:

 

(1.559)

Ezek után a közelítő formula:

 

.

(1.560)

1.9.2.5. Általános, hibatagot is szolgáltató eljárások - Adams-Moulton formulák

Az integrálandó függvény értékeit n darab egymástól egyenlő távolságra (Δx) lévő pontban ismerjük. Határozzuk meg az integrál közelítő értékét az utolsó Δx intervallumon az ismert függvényértékek segítségével.

Az Adams-Moulton formulák kiinduló felosztása
1.92. ábra - Az Adams-Moulton formulák kiinduló felosztása


Legyenek adottak az integrálandó függvény értékei az x1, x2, ..., x n pontokban, azaz f(x1), f(x2), ... f(x n ). Tegyük fel, hogy létezik az [a,b] intervallumon a függvény Riemann‑integrálja, továbbá, hogy létezik az x i pontokra felírt konvergens Taylor‑sora, ahol

 

(1.561)

Keressük a közelítő formulát

 

(1.562)

alakban, ahol y i-k+ 1 =f(x i-k+ 1 ), és i=n-1. Felhasználjuk még az integrálandó függvény x i körül felírt Taylor‑sorát:

 

(1.563)

Írjuk fel az [x i , x i+1 ] intervallumon vett integrál hibáját:

 

(1.564)

Helyettesítsük az f(x) függvényt mindenhol a Taylor‑sorával, kivéve az x i helyet:

 

(1.565)

Cseréljük fel az integrált és a szummát, majd vigyünk minden x-től független tagot az integráljel elé, valamint használjuk ki, hogy x i-k+ 1 -x i = x i +h-kh-x i =(1-k)h, és cseréljük fel a két szummát:

 

(1.566)

Végezzük el az integrálást:

 

(1.567)

Vonjuk össze a két szummát, és emeljünk ki:

 

(1.568)

Ezzel egy olyan összefüggéshez jutottunk, amely alkalmas mind a formulában szereplő c együtthatók meghatározására, mind a közelítés hibájának becslésére.

Az együtthatókat úgy kapjuk, hogy a felírt összefüggés első n tagját nullának vesszük, így az n darab c együttható meghatározásához éppen n darab egyenletet írhatunk fel. A maradék, azaz az integrál közelítéssel elkövetett hiba, viszont az x i körül felírt Taylor‑sor maradéktagjából határozható meg:

 

 
 

(1.569)

ahol .

Ebből már könnyen meghatározható a hiba formulája:

 

(1.570)

Vegyük észre azonban, hogy ez az (1.568) összefüggés első nem zérus tagjával egyezik meg.

1.9.2.5.1. Elsőrendű Adams-Moulton integrátor

Legyen n=1. Ekkor az első tag a következő:

 

(1.571)

Az együttható tehát: c0=h. Határozzuk még meg a közelítés hibáját:

 

(1.572)

Ezek után a közelítő formula:

 

.

(1.573)

1.9.2.5.2. Másodrendű Adams-Moulton integrátor

Legyen n=2. Ekkor az első két tag a következő:

 

(1.574)

Az egyenletrendszert megoldva kapjuk:. Határozzuk még meg a közelítés hibáját:

 

(1.575)

Ezek után a közelítő formula:

 

.

(1.576)

1.9.2.5.3. Harmadrendű Adams-Moulton integrátor

Legyen n=3. Ekkor az első három tag a következő:

 

(1.577)

Az egyenletrendszert megoldva kapjuk:. Határozzuk még meg a közelítés hibáját:

 

(1.578)

Ezek után a közelítő formula:

 

.

(1.579)

1.9.2.5.4. Negyedrendű Adams-Moulton integrátor

Legyen n=4. Ekkor az első négy tag a következő:

 

(1.580)

Az egyenletrendszert megoldva kapjuk:. Határozzuk még meg a közelítés hibáját:

 

(1.581)

Ezek után a közelítő formula:

 

.

(1.582)

1.9.2.6. Runge-Kutta módszer

A Runge‑Kutta módszer alapvetően eltér az eddigiektől, nem elegendő az integrálandó függvény csak pontjaiban ismerni, hanem teljes egészében adottnak kell lennie. Így tulajdonképpen differenciálegyenletet oldunk meg.

Legyen az integrálandó függvény y’=f(x,y), és a kezdeti feltétel y(x0)=y0. A megoldás során h>0 lépéstávolsággal fogunk haladni, és rendre meghatározzuk az y i =y(x i ) függvényértékeket, ahol

 

(1.583)

Az n-ed rendű Runge‑Kutta módszer alkalmazása során minden i-edik lépésnél a függvényérték megváltozását, azaz Δy i =y i+ 1-y i –t határozzuk meg. Ehhez felhasználjuk a k i,q korrekciós tagokat, ahol

 

(1.584)

A függvényérték megváltozását ezen korrekciós tagok súlyozott számtani középértékeként állítjuk elő:

 

(1.585)

Feladatunk ezután az, hogy a (1.584)–ben szereplő A, és a (1.585)–ben szereplő α konstansokat meghatározzuk. Ehhez a függvény növekményét felírjuk y(x i ) Taylor-sorával, valamint a növekmény (1.585) alakját az f(x,y) függvény kétváltozós Taylor-sorával. A kétféle alakot a h n -t tartalmazó tagokig bezárólag egyenlőnek tekintjük. Az így kapott egyenletrendszerből határozzuk meg a hiányzó konstansokat. Ebből még az is következik, hogy közelítésünk pontossága O(h n+ 1) lesz.

A továbbiakban az egyszerűség kedvéért az i indexet elhagyjuk, valamint f(x,y)-t f-el jelöljük.

Írjuk fel először a növekmény Taylor-sorát:

 

(1.586)

Állítsuk elő a deriváltakat (csak a harmadikig, mert a későbbiekben csak eddig fogjuk használni):

 

(1.587)

Most behelyettesítéssel a növekményre a következő alakot kapjuk:

 

(1.588)

Ezután állítsuk elő a növekményben szereplő k tagokat a kétváltozós Taylor-sor

 

(1.589)

alakját felhasználva, a h 3 –t tartalmazó tagokig:

 

(1.590)

1.9.2.6.1. Elsőrendű Runge‑Kutta

Legyen n=1. Ekkor a növekmény két alakja:

 

(1.591)

Ebből α1=1, azaz

 

(1.592)

Ez az alak megegyezik az Euler‑Cauchy‑féle törtvonalmódszernél, valamint a véges differenciák módszerének legegyszerűbb változatánál használt formulával.

1.9.2.6.2. Másodrendű Runge‑Kutta

Legyen n=2. Ekkor a növekmény két alakja:

 

(1.593)

Ebből a következő egyenletek adódnak:

 

.

(1.594)

Látható, hogy az utolsó két egyenlet megegyezik, tehát több megoldás is van. Válasszuk A2-t 1-nek, így

 

(1.595)

adódik. Így a közelítő formula:

 

(1.596)

Érdemes megvizsgálni milyen alakot ölt a formula akkor, ha a differenciálegyenletünk nem függ y-tól, csak x-től, azaz y’=f(x). Ekkor

 

(1.597)

ami azonban a trapéz formula!

1.9.2.6.3. Harmadrendű Runge‑Kutta

Legyen n=3. Ekkor a növekmény két alakja (1.588) és (1.590) összefüggésekből pontosan meghatározható. Ezek alapján a következő egyenletek adódnak:

 

(1.598)

Rendezés után az egyenletrendszer:

 

(1.599)

Látható, hogy a 7. és a 8. egyenlet megegyezik. A 2. és a 3. egyenletből a következő új egyenletet nyerjük:

 

(1.600)

Ezt behelyettesítve 5.-be és 6.-ba azt kapjuk, hogy ezek megegyeznek 4.-el. Ezek után a következő öt egyenlet marad:

 

(1.601)

Mivel hét ismeretlenünk van, de csak öt egyenletünk, így két paramétert felvehetünk. Legyen A3=1. Ekkor az egyenletrendszerünk a következő alakot ölti:

 

(1.602)

Végül legyen Így a megoldandó egyenletrendszer:

 

(1.603)

Meghatározva a paramétereket kapjuk, hogy:

 

(1.604)

A közelítő formula:

 

(1.605)

1.9.2.6.4. Negyedrendű Runge‑Kutta

Már a harmadrendű Runge‑Kutta formula előállítása is meglehetősen bonyolult volt, ezért a negyedrendű előállításától tekintsünk el. Mint ahogy harmadrendűnél már láttuk, úgy itt is vannak szabadon választható paraméterek, ennek megfelelően a negyedrendű Runge‑Kutta formulának is többféle alakja állítható elő. Mivel alkalmazása igen elterjedt, ezért szerepeljen itt is a leggyakrabban alkalmazott (a legkevesebb számítást igénylő) alakja:

 

(1.606)

Érdemes megvizsgálni milyen alakot ölt a formula akkor, ha a differenciálegyenletünk nem függ y-tól, csak x-től, azaz y’=f(x). Ekkor

 

(1.607)

ami azonban megegyezik a Simpson formulával.

1.9.2.6.5. Runge‑Kutta módszer általánosítása

A Runge‑Kutta módszer alkalmazható elsőrendű differenciál-egyenletrendszerek esetén is. Ekkor a megoldandó feladat a következő:

 

(1.608)

A leggyakrabban használt negyedrendű Runge‑Kutta formula ebben az esetben:

 

(1.609)

1.9.2.7. Az integrálformulák csoportosítása

Ettől a fejezettől kezdve a független változónak ismét a t-t használjuk, mert sokszor fontos lesz, hogy időben lejátszódó folyamatok vizsgálatához megfelelő formulákat keresünk, alkalmazunk.

Az előző fejezetekben néhány közelítő integrál típus származtatását láthattuk. Természetesen ezektől akár lényegesen is eltérő jellegű összefüggéseket is találhatunk különböző szakkönyvekben, de számunkra ezek lesznek később fontosak.

A csoportosítás szempontjai különbözőek lehetnek. Számunkra először az lesz lényeges, hogy hány h=Δt hosszúságú intervallumból származnak azok a pontok amelyek segítségével egy lépésnyit haladhatunk az időben! Az egyértelműség kedvéért álljanak itt sorban a harmadrendű alakok:

1.14. táblázat - Harmadrendű integrálási formák összehasonlítása

Simpson

harmadrendű

Adams-Bashforth

harmadrendű

Adams-Moulton

harmadrendű

Runge-Kutta


A Simpson formula kilóg a sorból, mert az integrálási intervalluma kétszeres hosszúságú a többiekhez képest, de könnyedén átalakíthatjuk a következőképpen:

 

(1.610)

Egylépéses formulák nak nevezzük azokat, amelyek csak egy Δt hosszúságú intervallumból veszik az értéket az integrál közelítéséhez. Ebbe természetesen beleértjük azt is, ha a jobb illesztés miatt az intervallum belső pontjait is figyelembe veszik. A fenti táblázatból könnyedén kiolvasható, hogy ilyen a Simpson, és a harmadrendű Runge-Kutta. Általánosan elmondható, hogy egylépésesek a szimmetrikus-, és a Runge-Kutta féle formulák. A másik két csoport a többlépéses integrátorok csoportjába tartozik, bár legegyszerűbb eseteik – az elsőrendű Adams-Bashforth (1.551), az elsőrendű Adams-Moulton (1.573) és a másodrendű Adams‑Moulton (1.576) – az egylépéses formulák szabályainak is megfelel!

Összefoglalva:

Egylépéses

Többlépéses

Szimmetrikus

Adams-Bashforth

Runge-Kutta

Adams-Moulton

A szimulációk során előfordulhatnak olyan esetek is, amikor a leíró differenciálegyenlet, vagy annak egyes részei nem állnak rendelkezésünkre analitikus formában, mert például adott mintavételezési idővel készített mérés eredményein alapulnak. Ekkor nem, vagy csak nehézkesen (pl. interpolációval kiegészítve) alkalmazhatók azok az összefüggések, amelyek az intervallumok belső pontjaira is építenek. Ennek megfelelően készült a következő táblázat:

Folytonos

Mintavételes

Szimmetrikus

Adams-Bashforth

Runge-Kutta

Adams-Moulton

Az időben lejátszódó folyamatok vizsgálatánál fontos szempont az is, hogy az integrálási módszer használ-e a időponthoz képest „újabb” értékeket is. Folytonos esetben ez nem szokott gondot okozni, mintavételes esetekben azonban igen, hiszen az összefüggés által megkívánt érték még nem áll a rendelkezésünkre!

Csak jelen és múlt

Jövő is

Adams-Bashforth

Szimmetrikus

 

Adams-Moulton

 

Runge-Kutta

1.10. Differenciálegyenletek numerikus megoldása

A következőkben példákon keresztül mutatunk be néhány megoldási lehetőséget. A közölt módszerek egyaránt alkalmazhatók lineáris és nemlineáris rendszerek esetén is. Az alkalmazott integrálási metódusoknak megfelelően lehet majd eldönteni, hogy az adott módszer alkalmas-e mintavételes rendszer esetén is, vagy csak folytonosnál használható!

A megoldások lépéseit minden esetben táblázatos formában közöljük, és ahol szükséges a számítási sorrendet nyilak fogják mutatni. Ezek a táblázatok bármilyen táblázatkezelővel létrehozhatók, és a számításokat el lehet végeztetni. Természetesen, ha sok időlépésre van szükségünk, akkor korlátokba ütközhetünk, mivel egy időlépés általában egy sornak felel meg.

Nézzük milyen eszközök, értékek állnak rendelkezésünkre a megoldás elkészítéséhez. Első lépésként minden esetben szükségünk van a leíró differenciálegyenletre, amely például a következő alakú:

 

, ahol k=0…n és j=0…m

(1.611)

Ezt írjuk fel úgy, hogy a legmagasabb rendű deriváltat fejezzük ki:

 

ahol l=0…n-1

(1.612)

Egy differenciálegyenlet felfogható egy adott pillanatban/helyzetben igaz egyenletnek is, tehát

 

,

(1.613)

illetve

 

(1.614)

Minden differenciálegyenletben szerepel az ismeretlen függvény deriváltja, amely és a függvény közti kapcsolatot integrálással lehet megteremteni.

A megoldáshoz tehát rendelkezésre állnak:

  • differenciálegyenlet(ek),

  • integrálási formulák,

  • kezdeti feltétel(ek).

A kezdeti feltételek olyanok, hogy egy híján megadják az ismeretlen függvény, és deriváltjai kezdeti értékeit. Ezt a differenciálegyenlet megfelelő átalakításával könnyedén meghatározhatjuk:

 

  ahol    l=0…,kf-1,kf+1,…,n

(1.615)

Általában az ismeretlen kezdeti érték a legmagasabb derivált értéke, így még külön számításra sincs szükségünk, használhatjuk (1.612)-t. Most még valami olyan kellene, ami -et, illetve ugyanezen időponthoz tartozó deriváltjait előállítja. Ha megnézzük az integrál formulákat, akkor azt látjuk, hogy éppen ilyen, vagy ilyen alakúvá tehetők (lásd (1.610)-t). Ezek segítségével tudjuk a következő időpillanathoz tartozó értékeket meghatározni. Ha ez így még nem érthető, akkor a feladatok mindenképpen segíteni fognak, csak akkor majd vissza kell ide térni, és értelmezni az egyes lépéseket.

Az első feladat modellje egy nemlineáris elsőrendű differenciálegyenlet lesz:

adva van egy nyitott tartály, amelyből az alján elhelyezett csövön keresztül folyik ki a folyadék. A tartály keresztmetszete mindenhol állandó, legyen A. Feladatunk a tartályban a folyadékszint változásának nyomon követése (az aktuális folyadékszint meghatározása) a folyamat során. Veszteségmentes szabad kifolyás esetén a kiömlő folyadék sebessége: , ahol h a folyadék szint magassága a tartályban. A kiáramló folyadék mennyisége Δt alatt:, ahol d a cső átmérője. Amennyiben a tartályt egy „nagyon vastag” csőnek tekintjük, akkor a tartályra felírható összefüggés itt is sebesség*keresztmetszet*Δt, így a tároló folyadékszintjének változása Δt alatt:, ahol a folyadékszint változásának sebessége. A felírható differenciálegyenlet tehát előjelesen:

 

,

(1.616)

A kezdeti feltétel pedig: h(0)=h 0 . A numerikus számításokat a következő adatokkal fogjuk elvégezni: d=5 cm= 0,05 m; A=1 m2; h 0 =10 m.

Az analitikus megoldás:

 

(1.617)

azaz

 

(1.618)

A második feladat modellje egy állandó-együtthatós-, másodrendű-, inhomogén-, közönséges differenciálegyenlet lesz:

Egytömegű csillapított rezgőrendszer
1.93. ábra - Egytömegű csillapított rezgőrendszer


Határozzuk meg az ábrán látható egytömegű gerjesztett rendszer mozgását leíró jellemzők értékeit. A rendszert leíró differenciálegyenlet a következő:

 

(1.619)

A numerikus számításokat a következő adatokkal fogjuk elvégezni:

 

 

.

Az analitikus megoldás (magyarázatok nélkül, csak a főbb lépéseket megadva):

 

(1.620)

1.10.1. Megoldás negyedrendű Runge-Kutta módszerrel

1.10.1.1. Tartályos feladat megoldása (Runge-Kutta módszerrel)

A leíró egyenlet éppen olyan alakra van rendezve, ahogy nekünk szükséges, azaz a legmagasabb rendű derivált van kifejezve. Mindenféle magyarázkodás helyett álljon itt az algoritmust leíró táblázat, amely a számításokat soronként, azon belül balról jobbra kell elvégezni, és ha valamilyen érték még nem áll rendelkezésünkre (pl. k 1 h 1 meghatározásakor), akkor az előző sorban lévő értéket használjuk.

Mintapélda:

1.15. táblázat - Tartály feladat megoldásának lépései (Runge-Kutta módszer)

idő

h

k 1

k 2

k 3

k 4

 


Táblázatkezelővel Δt= 1 [s] esetén:

1.16. táblázat - Tartály feladat megoldásának eredményei (Runge-Kutta módszer)

idő

h

hp

k1

k2

k3

k4

pontos

különbs.

0

10

-0,028

-0,028

-0,027

-0,027

-0,027

10

0

1

9,9725

-0,027

-0,027

-0,027

-0,027

-0,027

9,9725

0

2

9,9451

-0,027

-0,027

-0,027

-0,027

-0,027

9,9451

0

3

9,9177

-0,027

-0,027

-0,027

-0,027

-0,027

9,9177

0

4

9,8903

-0,027

-0,027

-0,027

-0,027

-0,027

9,8903

0

5

9,863

-0,027

-0,027

-0,027

-0,027

-0,027

9,863

0

6

9,8357

-0,027

-0,027

-0,027

-0,027

-0,027

9,8357

-1E-14

7

9,8084

-0,027

-0,027

-0,027

-0,027

-0,027

9,8084

-2E-14

8

9,7812

-0,027

-0,027

-0,027

-0,027

-0,027

9,7812

-2E-14

9

9,754

-0,027

-0,027

-0,027

-0,027

-0,027

9,754

-2E-14

10

9,7269

-0,027

-0,027

-0,027

-0,027

-0,027

9,7269

-2E-14

11

9,6998

-0,027

-0,027

-0,027

-0,027

-0,027

9,6998

-3E-14


Mint látható, a közelítésünk rendkívül pontos lett. Ennek az az oka, hogy a pontos megoldás egy másodfokú polinom, a Runge-Kutta módszer pedig (a származtatása miatt) a legfeljebb harmadfokú megoldásokat pontosan követi!

1.10.1.2. Rezgő rendszer megoldása(Runge-Kutta módszerrel)

A Runge-Kutta módszerek alapvetően elsőrendű differenciálegyenletekre lettek kidolgozva, de szerencsére alkalmazhatók egyenletrendszerek esetén is. Esetünkben tehát át kell írni az egyenletet egyenletrendszerré[2].

Mintapélda:

Vezessük be a következő új változókat:

 

(1.621)

Ezek felhasználásával az egyenletrendszer és a kezdeti feltételek a következőképpen írhatók fel:

 

(1.622)

vagy mátrixos alakban:

 

(1.623)

A könnyebb áttekinthetőség kedvéért álljon itt a negyedrendű Runge-Kutta formula időtől függő, egyenletrendszerre érvényes, az itteni jelöléseknek megfelelő változata:

 

(1.624)

Foglaljuk össze a számítás menetét táblázatban is. A vektorok, és az egyenlet mérete miatt csak két részben fér el a táblázat, és ezért, valamint a könnyebb beazonosíthatóság miatt a cellákba indexelve beírtam a változókat.

Az indexek jelentése:

  • utolsó: megegyezik az idő indexével, azaz ennyiedik Δt intervallumban vagyunk,

  • utolsó előtti: a vektor index, csak 1 vagy 2 lehet

  • k esetén az első: 1, 2, 3 vagy 4.

1.17. táblázat - Rezgő rendszer megoldásának lépései (Runge-Kutta módszerrel)

idő

    

idő


A táblázat alapján a számítások most is elvégezhetők tetszőleges táblázatkezelővel. Legyen a lépésköz Δt=0,1s. Az y és yp oszlopban a pontos értékek vannak, ezeket kell összevetni x‑el és xp-vel. Az utolsó két oszlop a különbségeket mutatja a pontos és a közelítő számítás között. Mint látható, itt sokkal nagyobb (bár még mindig elfogadható) az eltérés, mint a tartályos feladatnál.

1.18. táblázat - Rezgő rendszer megoldásának eredményei (Runge-Kutta módszerrel)

idő

vektor index

x

xp

k1

k2

k3

k4

y

yp

kül y

kül yp

0

1

0

0

0

0,013

0,011

0,023

0

0

0

0

0

2

0

10

0,5

0,45

0,453

0,406

    

0,05

1

0,012

0,452

0,023

0,033

0,032

0,041

0,012

0,452

-3,7E-07

-1,1E-07

0,05

2

0,452

8,119

0,406

0,362

0,365

0,323

    

0,1

1

0,044

0,816

0,041

0,049

0,048

0,055

0,044

0,816

-7,4E-07

3,5E-08

0,1

2

0,816

6,464

0,323

0,285

0,287

0,251

    

0,15

1

0,092

1,102

0,055

0,061

0,061

0,066

0,092

1,102

-1,1E-06

3,5E-07

0,15

2

1,102

5,018

0,251

0,217

0,22

0,188

    

0,2

1

0,153

1,321

0,066

0,071

0,07

0,074

0,153

1,321

-1,4E-06

7,9E-07

0,2

2

1,321

3,763

0,188

0,159

0,161

0,134

    

0,25

1

0,223

1,481

0,074

0,077

0,077

0,08

0,223

1,481

-1,7E-06

1,3E-06

0,25

2

1,481

2,682

0,134

0,109

0,111

0,088

    

0,3

1

0,3

1,591

0,08

0,082

0,081

0,083

0,3

1,591

-2E-06

1,9E-06

0,3

2

1,591

1,759

0,088

0,067

0,068

0,049

    

0,35

1

0,381

1,659

0,083

0,084

0,084

0,085

0,381

1,659

-2,2E-06

2,4E-06

0,35

2

1,659

0,978

0,049

0,031

0,033

0,016

    

0,4

1

0,465

1,691

0,085

0,085

0,085

0,085

0,465

1,691

-2,4E-06

2,9E-06

0,4

2

1,691

0,326

0,016

0,001

0,003

-0,01

    

0,45

1

0,55

1,694

0,085

0,084

0,084

0,084

0,55

1,694

-2,5E-06

3,4E-06

0,45

2

1,694

-0,21

-0,01

-0,02

-0,02

-0,03

    

1.10.2. Megoldás másodrendű Adams-Bashforth integrátorokkal

Ezeket a módszereket extrapolációs módszereknek is szokás nevezni.

A feladatokat a másodrendű Adams-Bashforth integrál formula felhasználásával szeretnénk megoldani. A megoldás menetéről már volt szó az 1.10. szakasz - Differenciálegyenletek numerikus megoldása fejezet elején. Az eddigiekhez az ott leírtak elegendőek voltak, most azonban más a

 helyzet, mert az extrapolációs (és az interpolációs) módszerek nem önindítók ! Mit is jelent ez? A gondot az okozza, hogy kezdetben (a számítások „elindításánál”) csak a kezdeti értéket ismerjük, a többlépéses módszerek azonban több pontra illesztett interpolációs polinomból származnak, így egynél több értékre van szükségük. A megoldás az, hogy az első időlépésnél a „legegyszerűbb” extrapolációs módszert alkalmazzuk, ez a jól ismert téglány szabály. Lépésről - lépésre emeljük az interpolációs pontok számát, hiszen mindig eggyel több pont áll rendelkezésünkre.

A módszer hátránya, hogy a kezdeti pontatlanabb közelítés miatt viszonylag nagy hibával kezdjük a közelítést. Ezen probléma megoldására több eljárás is létezik.

A teljesség igénye nélkül nézzünk néhány gyakrabban használtat [14.] :

  • az első Δt hosszú időlépést két Δt/2 hosszúságúra bontjuk, majd így kezdjük el a számítást. A hibatagokban Δt hatványai szerepelnek, így a felezéssel az un. képlethibát csökkentjük. (lehet kissebeket is lépni, de általában nem érdemes)

  • az első lépéseknél egylépéses formulát (pl. Runge-Kutta) használunk. Ha számítógép programot készítünk a szimulációs számítások elvégzésére, akkor joggal merül fel, hogyha már megírtuk az egylépéses módszerhez az eljárást, akkor számoljunk így is tovább! Az esetek többségében a programok (kényelmi okokból) így is tesznek, bár a többlépéses módszerek számítási igénye azonos pontosság esetén kisebb.

A következő példákban nem használunk ilyen finomításokat, elfogadjuk, hogy az indítás hibákkal terhelt!

Az algoritmus extrapolációs esetben a következő lépésekből áll:

  1. a differenciálegyenletből kifejezzük az ismeretlen kezdeti értékű mennyiséget, és meghatározzuk (a táblázat első sora kész)

  2. kifejezzük a legmagasabb rendű deriváltat, legyen ez az n.

  3. közelítő integrálással meghatározzuk az n-1. deriváltat a táblázat előző soraira támaszkodva,

  4. hasonlóképpen meghatározzuk az n-2. deriváltat, és így tovább, egészen a nullad rendűig

  5. meghatározzuk a legmagasabb rendű derivált értékét, és ezzel kész ez a sor is, tehát léptünk az időben Δt-t

a c) ponttól folytatjuk ciklikusan, amíg a kívánt időpontig, eseményig el nem jutunk

1.10.2.1. Tartályos feladat megoldása (Adams-Bashforth integrátorokkal)

Mintapélda:

Az előzőek alapján leírt algoritmus alapján készült el a következő táblázat, ahol a nyilak a számítási sorrendet mutatják:

1.19. táblázat - Tartályos feladat megoldása (Adams-Bashforth integrátorokkal)

idő

h


Táblázatkezelővel Δt= 1 [s] esetén:

1.20. táblázat - Tartályos feladat eredményei (Adams-Bashforth integrátorokkal)

idő

h

hp

pontos

különbség

0

10

-0,0275

10

0

1

9,9725

-0,02746

9,9725

1,89E-05

2

9,9451

-0,02743

9,9451

1,89E-05

3

9,9176

-0,02739

9,9177

1,88E-05

4

9,8903

-0,02735

9,8903

1,88E-05

5

9,8629

-0,02731

9,863

1,88E-05

6

9,8357

-0,02727

9,8357

1,88E-05

7

9,8084

-0,02724

9,8084

1,87E-05

8

9,7812

-0,0272

9,7812

1,87E-05

9

9,754

-0,02716

9,754

1,87E-05

10

9,7269

-0,02712

9,7269

1,87E-05

11

9,6998

-0,02708

9,6998

1,86E-05


A közelítésünk sokkal pontatlanabb, mint a Runge-Kutta módszer esetén volt, de ez természetes is, hiszen negyedrendű módszert hasonlítunk másodrendűhöz. Ha azonban azt vizsgáljuk, hogy elegendően pontos-e ez is, akkor arra a következtetésre juthatunk, hogy nagyon is, hiszen egy 10 m magas folyadékoszlop esetén az eltérés kisebb, mint 0,02 mm! A táblázat méretéből is látszik, hogy mindezt az eredményt sokkal kevesebb számítással értük el!

1.10.2.2. Rezgő rendszer megoldása (Adams-Bashforth integrátorokkal)

Mintapélda:

Az algoritmust most is foglaljuk táblázatba:

1.21. táblázat - Rezgő rendszer megoldása (Adams-Bashforth integrátorokkal)

idő


Táblázatkezelővel Δt= 0,01 [s] esetén:

1.22. táblázat - Rezgő rendszer megoldása (Adams-Bashforth integrátorokkal)

idő

y

yp

ypp

pontos y

pontos yp

pontos ypp

kül y

kül yp

0

0

0

10

0

0

10

0

0

0,01

0

0,1

9,6

0,0005

0,098

9,6049

0,0005

-0,002

0,02

0,0015

0,194

9,2146

0,0019

0,1921

9,2193

0,0004

-0,002

0,03

0,0039

0,2842

8,8387

0,0043

0,2824

8,8432

0,0004

-0,002

0,04

0,0072

0,3707

8,4721

0,0076

0,369

8,4765

0,0004

-0,002

0,05

0,0113

0,4536

8,1146

0,0117

0,452

8,1189

0,0003

-0,002

0,06

0,0163

0,533

7,7663

0,0166

0,5314

7,7704

0,0003

-0,002

0,07

0,022

0,6089

7,4268

0,0223

0,6074

7,4308

0,0003

-0,001

0,08

0,0285

0,6815

7,0961

0,0287

0,6801

7,1

0,0003

-0,001


A közelítés most is pontatlanabb, még akkor is, ha a lépésközt kisebbre választottuk, mint a Runge-Kutta módszer esetén. Megállapíthatjuk azonban, hogy az eltérés nem nő, azaz a nagyobb hiba fő oka az első lépéskörüli pontatlanságokból adódott. Mint már szó volt róla, ennek a hibának a csökkentésére több lehetőség is van, ezek közül nézzük meg a kezdeti intervallum csökkentés hatását:

1.23. táblázat - Rezgő rendszer megoldása (Adams-Bashforth integrátorokkal)

idő

y

yp

ypp

pontos y

pontos yp

pontos ypp

kül y

kül yp

0

0

0

10

0

0

10

0

0

0,005

0

0,05

9,8

1E-04

0,05

9,801

0,0001

-5E-04

0,01

4E-04

0,099

9,604

5E-04

0,098

9,605

0,0001

-5E-04

0,02

0,002

0,193

9,218

0,002

0,192

9,219

9E-05

-4E-04

0,03

0,004

0,283

8,842

0,004

0,282

8,843

7E-05

-4E-04

0,04

0,008

0,369

8,476

0,008

0,369

8,477

6E-05

-3E-04

0,05

0,012

0,452

8,118

0,012

0,452

8,119

4E-05

-3E-04


A két táblázat összehasonlításából is látszik, hogy a hiba jelentősen csökkent.

1.10.3. Megoldás másodrendű Adams-Moulton integrátorokkal

Ezeket a módszereket interpolációs módszereknek is szokás nevezni [10.] , [14.] . A megoldás menete során itt is jelentkezik az önindítás problémája, amit az előző fejezetben leírt módszerrel (eleinte alacsonyabb rendű, majd lépésről-lépésre egyre magasabb rendű formulákat alkalmazunk) tudunk kezelni. Ennél nagyobb gondot okoz azonban az, hogy az integrál formula egy „jövőbeli” azaz i+1 indexű elemet is tartalmaz, amit még nem ismerünk. Ha az előző fejezetben leírt gondolatmenetet alkalmazzuk, akkor egy egyenletrendszert kell megoldanunk minden iterációs lépés során. Ez az egyenletrendszer a következőképpen néz ki másodrendű formulák esetén:

 

(1.625)

Mint látható, n+1 darab egyenletünk van n+1 ismeretlenhez. Ha az egyenlet lineáris, akkor az egyenletrendszer lineáris, különben nem. Lineáris egyenletrendszer esetén biztosan, ellenkező esetben pedig csak ritkán tudunk általános megoldást előállítani. Ha nem sikerül zárt alakban meghatározni a megoldást, akkor csak általános, numerikus megoldások jöhetnek szóba. Ebben az esetben nem szokás ezt az interpolációs módszert alkalmazni, mert (mint majd látni is fogjuk) ugyan jóval pontosabb, mint az extrapolációs, de sokkal nagyobb a számítás igényel!

1.10.3.1. Tartályos feladat megoldása (Adams-Moulton integrátorokkal)

Mintapélda:

A feladatunk most egy nemlineáris eset vizsgálata, de szerencsére csak elsőrendű a differenciálegyenlet, így két egyenletből fog állni csak az egyenletrendszer:

 

(1.626)

A következőkben nézzük a megoldást, magyarázatok nélkül:

 

(1.627)

A differenciálegyenletből látszik, hogy , mivel K is és is pozitív. A gyökjel alatt négyzeténél nagyobb érték van, tehát ha a ±-ból a kivonást választjuk, az eredmény biztosan nem lesz pozitív. Ezek után következzen a szokásos táblázat:

1.24. táblázat - Tartályos feladat megoldása (Adams-Moulton integrátorokkal)

idő

h


A táblázatból látszik, hogy másodrendű integrál formulák esetén az önindítás problémája nem lép fel.

A közelítő számításokat most is 1 másodperces lépésközzel végeztük el. A következő táblázat tartalmazza az eredményeket. Mint látható, a közelítés kimutatható hiba nélkül adja az analitikus megoldás alapján számított értékeket:

1.25. táblázat - Tartályos feladat eredményei (Adams-Moulton integrátorokkal)

idő

h

hp

pontos

különbség.

0

10

-0,0275

10

0

1

9,9725

-0,02746

9,9725

0

2

9,9451

-0,02743

9,9451

0

3

9,9177

-0,02739

9,9177

0

4

9,8903

-0,02735

9,8903

0

5

9,863

-0,02731

9,863

0

6

9,8357

-0,02727

9,8357

0

7

9,8084

-0,02724

9,8084

0

8

9,7812

-0,0272

9,7812

0


1.10.3.2. Rezgő rendszer megoldása (Adams-Moulton integrátorokkal)

Mintapélda:

Mivel a rendszert leíró differenciálegyenlet másodrendű, három egyenletünk lesz. A rendszer lineáris, az együtthatók állandók, így az egyenletrendszer is lineáris lesz:

 

(1.628)

A megoldást a Maxima nevű programmal elvégezve:

 

(1.629)

Táblázatos összefoglalásra most nincs is szükség, hiszen az eredmények pontosan egy‑egy sort jelentenek. A számításokat – hogy az összehasonlítás egyszerűbb legyen – itt is 0,01 másodperces lépésközzel végeztük el, mint az Adams-Bashforth integrál formulák esetén:

1.26. táblázat - Rezgő rendszer megoldása (Adams-Moulton integrátorokkal)

idő

y

yp

ypp

pontos y

pontos yp

pontos ypp

kül y

kül yp

0

0

0

10

0

0

10

0

0

0,01

0,00049

0,098024

9,60484

0,000493

0,098016

9,604852

3,25E-06

-8E-06

0,02

0,001941

0,192145

9,21929

0,001947

0,192129

9,219313

6,35E-06

-1,6E-05

0,03

0,004314

0,282457

8,843208

0,004323

0,282434

8,843244

9,29E-06

-2,3E-05

0,04

0,007572

0,369056

8,476455

0,007584

0,369025

8,476502

1,21E-05

-3,1E-05

0,05

0,011677

0,452032

8,118889

0,011692

0,451995

8,118948

1,47E-05

-3,8E-05

0,06

0,016595

0,531479

7,770369

0,016612

0,531434

7,77044

1,72E-05

-4,5E-05

0,07

0,022289

0,607484

7,430754

0,022309

0,607433

7,430837

1,96E-05

-5,1E-05

0,08

0,028727

0,680138

7,099903

0,028749

0,68008

7,099997

2,18E-05

-5,7E-05

0,09

0,035876

0,749525

6,777675

0,0359

0,749462

6,77778

2,38E-05

-6,4E-05

0,1

0,043702

0,815733

6,463928

0,043728

0,815664

6,464045

2,58E-05

-7E-05


Az eredmények összevetéséből látható, hogy az extrapolációs módszernél sokkal pontosabb, a Runge-Kutta azonban itt is kisebb hibával dolgozik, bár ismét fel kell hívnunk a figyelmet, hogy az negyedrendű módszer!

1.10.4. Megoldás másodrendű prediktor – korrektor módszerrel

Mindkét előző módszernek vannak előnyei és hátrányai. Az extrapolációs módszer könnyen megvalósítható, csak az önindítással van gond, az interpolációs pedig pontos, csak sokkal munkaigényesebb. Próbáljuk meg a kettőt együtt használni! Az interpolációs módszernél az volt a gond, hogy a következő időpillanatbeli értékre volt szüksége (i+1), az extrapolációs pedig éppen azt állítja elő. Ha most kétszer integrálunk, azaz először az extrapolációssal megbecsüljük a következő értéket ( prediktor ), majd ezt felhasználva az interpolációssal pontosítunk ( korrektor ), és így egy jobb közelítő értéket kapunk. A módszer tovább javítható úgy, hogy a korrektorral iterációt végzünk [11.] . Ez néha abszolút pontos eredményt szolgáltat (ilyen a tartályos feladatunk), máskor azonban nem tud lényegesen javítani (ezt láthatjuk a rezgő rendszer esetében).

1.10.4.1. Tartályos feladat megoldása (másodrendű prediktor – korrektor módszerrel)

Mintapélda:

A fentiek alapján ismét összeállíthatunk egy táblázatot, ahol a p és c felsőindexek a prediktort, illetve a korrektort jelzik:

1.27. táblázat - Tartályos feladat megoldása (másodrendű prediktor-korrektor módszerrel)

idő

h

    


A számításokat ismét 1 másodperces lépésközzel végeztük el, így az eredmények:

1.28. táblázat - Tartályos feladat megoldása prediktorral (másodrendű prediktor-korrektor módszerrel)

idő

h

hp

hp

hpp

hc

hcp

pontos

különbség

0

10

-0,028

    

10

0

1

9,9725

-0,027

9,972

-0,027

9,9725

-0,027

9,97252

-1E-08

2

9,9451

-0,027

9,945

-0,027

9,9451

-0,027

9,94507

-3E-08

3

9,9177

-0,027

9,918

-0,027

9,9177

-0,027

9,91767

-4E-08

4

9,8903

-0,027

9,89

-0,027

9,8903

-0,027

9,8903

-5E-08

5

9,863

-0,027

9,863

-0,027

9,863

-0,027

9,86297

-7E-08

6

9,8357

-0,027

9,836

-0,027

9,8357

-0,027

9,83568

-8E-08

7

9,8084

-0,027

9,808

-0,027

9,8084

-0,027

9,80842

-9E-08

8

9,7812

-0,027

9,781

-0,027

9,7812

-0,027

9,7812

-1E-07

9

9,754

-0,027

9,754

-0,027

9,754

-0,027

9,75402

-1E-07


Ugyanezen módszerrel, de a korrektor eredményeit újra felhasználva pontosabb eredményt kapunk:

1.29. táblázat - Tartályos feladat megoldása korrektorral (másodrendű prediktor-korrektor módszerrel)

idő

h

hp

hp

hpp

hc

hcp

hc2

hc2p

pontos

különbs.

0

10

-0,0275

      

10

0

1

9,97252

-0,0275

9,9725

-0,0275

9,97252

-0,0275

9,97252

-0,0275

9,97252

8,962E-12

2

9,94507

-0,0274

9,9451

-0,0274

9,94507

-0,0274

9,94507

-0,0274

9,94507

1,791E-11

3

9,91767

-0,0274

9,9177

-0,0274

9,91767

-0,0274

9,91767

-0,0274

9,91767

1,789E-11

4

9,8903

-0,0273

9,8903

-0,0273

9,8903

-0,0273

9,8903

-0,0273

9,8903

1,786E-11


Ez utóbbi táblázatot nem azért számoltuk ki, mert az előző pontossága nem volt elegendő, hanem csak azért, hogy igazoljuk azon állításunkat, hogy így pontosabb eredményt kapunk. Az iterációt folytatva a hiba nagyságrendje 10-16 lesz, ami megegyezik a legelterjedtebb lebegőpontos számtípus – a double – számábrázolási pontosságával.

1.10.4.2. Rezgő rendszer megoldása (másodrendű prediktor – korrektor módszerrel)

Mintapélda:

Az előzőhöz hasonlóan most is az Adams-Bashforth szerint kezdünk, majd Adams‑Molutonnal pontosítunk. A táblázat nem férne el a szokásos formájában, ezért transzponáljuk:

1.30. táblázat - Rezgő rendszer megoldása (másodrendű prediktor-korrektor módszerrel)

idő

 

 

 

 

 

 


A számításokat – hogy az összehasonlítás egyszerűbb legyen – itt is 0,01 másodperces lépésközzel végeztük el, mint az Adams-Bashforth integrál formulák esetén:

1.31. táblázat - Rezgő rendszer eedményei (másodrendű prediktor-korrektor módszerrel)

idő

pontos

pontos

pontos

kül

kül

0

      

0

0

10

0

0

10

0

0

0,01

0

0,1

9,6

0,0005

0,098

9,605

0,0005

0,098

9,605

0,00049

0,098016

9,6048516

-6,6E-06

1,6E-05

0,02

0,002

0,192

9,219

0,002

0,192

9,219

0,002

0,192

9,219

0,00195

0,192129

9,219313

-3,1E-06

7,7E-06

0,03

0,0043

0,282

8,843

0,0043

0,282

8,843

0,0043

0,282

8,843

0,00432

0,282434

8,8432435

3,6E-07

-5E-07

0,04

0,0076

0,369

8,477

0,0076

0,369

8,476

0,0076

0,369

8,476

0,00758

0,369025

8,4765023

3,6E-06

-9E-06

0,05

0,0117

0,452

8,119

0,0117

0,452

8,119

0,0117

0,452

8,119

0,01169

0,451995

8,1189482

6,7E-06

-2E-05

0,06

0,0166

0,531

7,77

0,0166

0,531

7,77

0,0166

0,531

7,77

0,01661

0,531434

7,77044

9,6E-06

-2E-05

0,07

0,0223

0,607

7,431

0,0223

0,607

7,431

0,0223

0,607

7,431

0,02231

0,607433

7,4308367

1,2E-05

-3E-05

0,08

0,0288

0,68

7,1

0,0287

0,68

7,1

0,0287

0,68

7,1

0,02875

0,68008

7,0999969

1,5E-05

-4E-05

0,09

0,0359

0,749

6,778

0,0359

0,75

6,778

0,0359

0,75

6,778

0,0359

0,749462

6,7777799

1,8E-05

-5E-05

0,1

0,0437

0,816

6,464

0,0437

0,816

6,464

0,0437

0,816

6,464

0,04373

0,815664

6,464045

2E-05

-5E-05


Az eredmények összevetése után azt állapíthatjuk meg, hogy körülbelül az interpolációs módszer pontosságát hozza. Ha az iterációt tovább folytatnánk, akkor itt nem lenne olyan látványos további javulás mint a tartályos feladatnál, a hiba csak kb. feleződne.

1.10.5. Megoldás másodrendű vegyes módszerrel

Mintapélda:

A következő módszer csak másod-, vagy magasabb rendű differenciálegyenletek esetén alkalmazható, mert legalább kétszeri integrálást feltételez. Nem igényel semmilyen előkészületet hasonlóan az extrapolációs módszerhez, mivel annak továbbfejlesztett változata. Lényege, hogy az első integrálás mindig Adams-Bashforth, a második, harmadik, stb., pedig Adams-Moulton. Azért van lehetőség erre, mert az Adams-Bashforth már előállítja az Adams‑Moulton számára szükséges i+1. értéket [9.] . Nézzük mindezt táblázatos formában:

1.32. táblázat - Másodrendű rendszerek megoldása vegyes módszerrel

idő


Az előzőekben már láttuk, hogy az interpolációs módszereknél az indításkor viszonylag nagy hibát szedünk össze, mert csak elsőrendű formulával kezdhetünk. Vannak módszerek, amelyekkel ezen lehet javítani, de számításigényesek. Esetünkben a második integráltól kezdve már egy pontosabb, másodrendű formulát tudunk alkalmazni. Nézzük ezek után a számításokat táblázatosan is:

1.33. táblázat - Másodrendű rendszerek eredményei vegyes módszerrel

idő

y

yp

ypp

pontos y

pontos yp

pontos ypp

kül y

kül yp

0

0

0

10

0

0

10

0

0

0,01

0,0005

0,1

9,596875

0,000493

0,098016

9,604852

-7E-06

-0,002

0,02

0,00197

0,194

9,211876

0,001947

0,192129

9,219313

-2E-05

-0,002

0,03

0,00436

0,284

8,836161

0,004323

0,282434

8,843244

-4E-05

-0,002

0,04

0,00763

0,371

8,469767

0,007584

0,369025

8,476502

-5E-05

-0,002

0,05

0,01175

0,453

8,11255

0,011692

0,451995

8,118948

-6E-05

-0,002

0,06

0,01669

0,533

7,76437

0,016612

0,531434

7,77044

-7E-05

-0,001

0,07

0,02239

0,609

7,425084

0,022309

0,607433

7,430837

-9E-05

-0,001

0,08

0,02884

0,681

7,094553

0,028749

0,68008

7,099997

-1E-04

-0,001

0,09

0,036

0,751

6,772636

0,0359

0,749462

6,77778

-0,0001

-0,001

0,1

0,04384

0,817

6,459191

0,043728

0,815664

6,464045

-0,0001

-0,001


Az összehasonlításból azt láthatjuk, hogy jobb, mint az extrapolációs, rosszabb, mint az interpolációs. Természetesen egy példa alapján merészség általános következtetést levonni, de az eredmény azt adja, amit várhattunk, hiszen egy pontosabb (kisebb hibataggal rendelkező) formulával cseréltük le az Adams-Bashforth féle összefüggést.

1.10.6. Hibabecslés módszerei

Egy közelítő módszer mindig tartalmaz hibát, ez természetes. Azonban fontos tudnunk azt is, hogy körülbelül mekkora ez a hiba (pontosan meghatározni sosem tudjuk, hiszen akkor módosítva vele a közelítést megkapnánk a pontos értékeket). Az integrál formulák levezetésnél fontos szempont volt, hogy a hibatagot is meg tudjuk határozni, mert ez szolgálhat a becslés alapjául.

Általánosságban elmondhatjuk, hogy a következő felépítésű összefüggéseket kaptunk:

Többlépéses n. rendű formulák:

Egylépéses n. rendű formulák:

A probléma többlépéses esetben a ξ-vel van, hiszen értékét nem ismerjük, az egylépéses módszereknél pedig a constans határozható meg nehézkesen [14.] .

A hiba becslésénél másképpen járunk el egylépéses-, és másképpen többlépéses módszerek esetén [14.] . Ha egylépéses formulát (Runge-Kutta) választottunk, akkor a szokásos eljárás az, hogy két különböző (általában Δt és Δt/2) lépésközzel is elvégezzük a számítást. Jelölje y l és y k a két azonos időponthoz tartozó közelítő értéket, ahol k=2l, azaz y l -t határoztuk meg Δt lépésközzel, y k -t pedig fele akkorával. Legyen továbbá Y az ehhez az időponthoz tartozó pontos érték. Feltételezve, hogy a hibatagban szereplő constans (jelöljük C-vel) közel azonos, a következő egyenletrendszert kapjuk:

 

(1.630)

Látható, hogy két ismeretlen (Y,C) van, így az egyenletrendszer megoldható. Minket elsősorban a hiba érdekel, ezért azt fogjuk kifejezni. A magyarázatokat mellőzve a megoldás a következő:

 

(1.631)

Vegyük azonban észre, hogy lehetőséget kaptunk egy pontosabb közelítő érték meghatározására is (Richardson ötlete alapján [8.] ):

 

(1.632)

amit felhasználva negyedrendű esetben például

Ugyanez a gondolatmenet alkalmazható többlépéses esetben is, de ott elkerülhetjük azt, hogy két különböző lépésközzel számoljuk végig az egyenletet, így nyerve két közelítést. A többlépéses módszereknél mindig elő tudunk állítani két eltérő közelítést, a prediktort és a korrektort! Innentől kezdve a hibabecslést az előzőekben leírtak szerint végezhetjük el, figyelembe véve, hogy a hibatag másmilyen szerkezetű:

 

(1.633)

Feltételezzük, hogy a derivált értékek közel egyenlők, és jelöljük őket D-vel. Ekkor az egyenletrendszer a következő alakú:

 

(1.634)

ahol Y a pontos érték y p a közelítés prediktorral, y c pedig a közelítés korrektorral. Az ismeretlenek most Y és D. A két hiba érték közül határozzuk meg a korrektorét:

 

(1.635)

A hibabecslés felhasználásával most is előállíthatunk egy pontosabb közelítést:

 

(1.636)

Másodrendű esetben , így a hibatag, illetve a közelítés:

 

(1.637)

1.10.7. Változó lépésköz alkalmazhatósága

A szimulációs feladatok egyik legnagyobb problémája a megfelelő lépésköz meghatározása, beállítása [14.] . A számítások előtt célszerű meghatározni egy lépésenkénti elfogadható hiba mértéket. Az előző pontban összefüggéseket határoztunk meg a hiba becslésére, így lehetőségünk van eldönteni, hogy az adott lépésköz megfelelő-e, vagy célszerű megváltoztatni. Természetesen a nagyobb lépésköz gyorsabb számítást eredményez, azonban a hiba nőni fog.

Az egylépéses módszerek esetén a lépésköz megváltoztatása nem okoz gondot, hiszen a számítások semmilyen formában sem tartalmazzák az előző lépés adatait, csak eredményét. Éppen ezen tulajdonságuk miatt önindítóak is!

Más a helyzet a többlépéses eljárásokkal. Ott a formulák levezetésénél is kihasználtuk, hogy minden intervallum azonos hosszúságú. Nincs problémánk akkor, ha csak a legegyszerűbb összefüggéseket (A-B1, A-M1, A-M2 azaz trapéz) alkalmazzuk, hiszen ezek csak egy intervallumot használnak. Változtatás során általában felezni, vagy kétszerezni szoktuk az intervallumot. A kétszerezés nem okoz gondot, mert az ekkor felhasználandó értékek rendelkezésre állnak. A felezéssel már más a helyzet, mivel ekkor két eddig használt időpont közötti értékre lenne szükségünk.

Ilyenkor több dolgot is tehetünk:

  • úgy járunk el, mint az első lépésnél, bár ekkor elveszítjük azt a tudást, amit az jelent, hogy vannak az előző időszakból értékeink,

  • interpoláció segítségével állítjuk elő a szükséges közbenső értékeket. Ekkor célszerű Hermit-féle interpolációt alkalmazni, mert az még az ismert derivált értékeket is felhasználja, így jobban közelíti a függvényt.

Abban az esetben, ha csak másodrendű közelítést alkalmazunk, akkor a következő módon is eljárhatunk [9.] (a módszer természetesen magasabb rendű esetre is általánosítható): az 1.9.1.1. szakasz - Idő szerinti differenciálás szemléletes megközelítése fejezetben leírt módszernél ne használjuk ki, hogy a lépésköz állandó, hanem tekintsük két ismert, de eltérő értéknek. Így felírva az egyenes egyenletét, és elvégezve az integrálást egy némileg bonyolultabb összefüggést kapunk:

 

(1.638)

Másodrendű Adams-Bashforth változó lépésközzel
1.94. ábra - Másodrendű Adams-Bashforth változó lépésközzel


Ezt az összefüggést használva lehetőségünk nyílik tetszésszerinti új intervallum hossz alkalmazására, már csak a hibát kell valahogy megbecsülni. Az előző pontban leírt számításokat itt is elvégezhetjük, ha feltesszük, hogy hibatag a következő alakú:

 

(1.639)

A részleteket mellőzve a végeredmények:

 

(1.640)

Vegyük észre, hogyha az összefüggésekben a két különböző intervallumhosszt egyenlővé tesszük, akkor az előző pontban meghatározott formulákat kapjuk.

1.10.8. A különböző módszerek összehasonlítása

Amikor döntenünk kell, hogy az adott feladathoz milyen módszer válasszunk, sok szempontot kell figyelembe venni. Az elsődleges, hogy az adott eljárás alkalmas legyen a feladat kezelésére.

Alapvetően a következő esetek fordulhatnak elő:

  • egyenlet vagy egyenletrendszer

  • lineáris, vagy nemlineáris a rendszer.

Az ismertetésre került módszerek mindegyike alkalmas egyenletrendszerek kezelésére is, erre a Runge-Kutta esetén külön is felhívtuk a figyelmet. A többieknél csak az az egyetlen feltétel, hogy a kezdeti értékekből megtudjuk határozni a hiányzó kezdeti értékeket, másképpen mondva, a legmagasabb rendű deriváltakat úgy tudjuk kifejezni, hogy az értékeik kiszámíthatóak legyenek. A linearitás egyik módszernél sem volt feltétel, hiszen a tartályos feladat nem lineáris, és mindegyikkel megoldható volt. Az interpolációs módszer esetén okozhat nehézséget a nemlineáris rendszer, de ott is kezelhető, csak nemlineáris egyenletrendszert kell megoldanunk minden időlépés esetén. A fentiek illusztrálására nézzünk egy példát.

Mintapélda:

Legyen ez egy – az alábbi ábrán látható – kettősinga.

Kettős inga jelölésekkel
1.95. ábra - Kettős inga jelölésekkel


A levezetést mellőzve a leíró differenciálegyenlet-rendszer a következő[internet]:

 

(1.641)

A kezdeti feltételek általában . Meg kell még határoznunk értékét. A fenti két egyenletből fejezzük ki például -t úgy, hogy ne függjön -tól, majd ‑t tetszőlegesen:

 

(1.642)

az így kapott alakú egyenletek segítségével most már az összes ismertetett módszerrel megoldható a differenciálegyenlet-rendszer.

Másik fontos szempont a módszer választásánál, hogy stabil-e a közelítő módszer [11.] , [14.] . Fel kell hívnunk a figyelmet arra, hogy most nem a vizsgálandó fizikai rendszer stabilitásáról van szó, hanem a matematikai közelítő módszeréről. Többek között azért csak ezeket a módszereket mutattuk be, mert nincs stabilitási problémájuk. Praktikusan ez azt jelenti, hogyha a feladatunk megoldása során nem követtünk el hibát, és mégsem jók az eredmények („elszáll” a program), akkor csak a lépésközt választottuk túl nagyra. A számítási idő minimalizálása miatt természetesen törekszünk arra, hogy a lépésköz a lehető legnagyobb legyen. Próbáljuk úgy értelmezni az eredményt, mintha egy mérendő jel lenne. Ekkor a Shannon elv alapján szokták a mintavételezési időt meghatározni, amelyet a 1.8.1.1. szakasz - A folytonos bemeneti jelek mintavételezése fejezetben mutattunk be. Mivel a közelítésekben még sok más „zavaró hatás” is érvényesül (pl. képlet hiba), célszerű legalább a huszadát választani az elméleti mintavételezési időnek!

Ha már szóba kerültek a mintavételes rendszerek, használhatóak-e ott is ezek a módszerek? A többlépéses, állandó lépésközű módszerek mind, hiszen azok csak a Δt távolságú „pontokra” támaszkodnak, mintavételes esetben pedig nincsenek is máshol értékeink.

A számítás ideje sok mindentől függ. Fontos tudnunk, hogy az előírt hibát milyen lépésközzel tudja biztosítani a módszer, hiszen ettől függ, hogy hány időlépés alatt érünk el a kívánt időponthoz. A pontosságra nézve jó támpontot adhatnak az előzőekben közölt mintapéldák. Fel kell azonban hívnunk a figyelmet arra, hogy ilyen kevés példa alapján csak óvatos következtetéseket lehet levonni! (A Runge-Kutta és az interpolációs módszer is abszolút pontosan közelítette a tartályos feladatot, de csak azért, mert az analitikus megoldás egy másodfokú polinom.)

A szerzők rengeteg szimulációs példa vizsgálata után (csak házi feladatból volt több ezer) azonban elmondhatják, hogy a rezgő rendszernél látott arányok a tapasztalatoknak megfelelőek. A Runge-Kutta látszólagos fölényét az adja, hogy az egyetlen negyedrendű módszer. Ebből adódóan a hibatagja kisebb, tehát nagyobb lépésközzel lehet számolni, azaz összességében kevesebb pontban kell csak meghatározni az értékeket. Ezzel szemben áll azonban a lényegesen nagyobb számítási igénye [6.] . Egy program számítási igényét alapvetően a szorzások, osztások számával szokás mérni. Maguk az integrálási formulák viszonylag kevés műveletből állnak, és minél magasabb rendűek, annál több számítást igényelnek. Az igazi különbséget az okozza, hogy a megoldandó differenciálegyenlet mekkora számítási igényű, hányszor kell kiszámítani egy időlépéshez. Mint látható, míg a többlépéses módszerek csak egy új értéket várnak időlépésenként, az egylépésesnek negyedrendű esetben négy számításra van szüksége. Még inkább kiemeli ennek jelentőségét az, hogy a differenciálegyenletben lehetnek függvények (pl. négyzetgyök, szinusz, logaritmus, stb.), amelyek meghatározása sokkal időigényesebb mivel iterációval, vagy (általában Csebisev) polinommal határozzák meg az értéküket.

A már említett több ezer házi feladatban döntően (99,9%) a 1.10.5. szakasz - Megoldás másodrendű vegyes módszerrel fejezetben ismertetett vegyes módszert alkalmazták a hallgatók, mert az egyik legkönnyebben programozható, viszonylag pontos és minden esetben (nemlineáris, mintavételes) is használható.

1.11. Frekvenciatartománybeli vizsgálatok

A harmonikus analízis a harmonikus gerjesztésű rendszerek állandósult állapotú (vagy legalább a tranziensek lecsengése utáni) vizsgálatát jelenti. A korábban bevezetett rendszermodell, a frekvenciaátviteli függvény (1.38) közvetlen kapcsolatot teremt a rendszer harmonikus gerjesztésre adott válasza és a harmonikus gerjesztés között.

A frekvenciaátviteli függvény ábrázolásmódjai a harmonikus gerjesztő jel teljes körfrekvencia-tartományában leképezik a frekvenciaátviteli függvény két információját, a frekvenciafüggő átviteli tényezőt és a szintén frekvenciafüggő fázistolást. Előfordul, hogy az ábrázolásra az „negatív körfrekvencia- tartományban” is szükségünk van. Ha nem keressük a negatív körfrekvencia értelmét, matematikai formalizmussal számolhatunk vele.

A periodikus jelek közelíthetők harmonikus jelek lineáris kombinációjával. Tehát a Fourier–sor kiválasztott elemeinek megfelelő számú (és körfrekvenciájú) harmonikus gerjesztésre adott válasza meghatározható, és a válaszok összegzésével előállítható a periodikus jelre adott válasz.

1.11.1. A Bode-diagram

A Bode–diagramon (pontosabban diagram–páron) rendezett vetületben ábrázoljuk az egyes gerjesztő jel körfrekvencia értékekhez tartozó frekvenciafüggő átviteli tényezőt és fázistolást.

A gerjesztő jel teljes körfrekvencia-tartományát a vízszintes tengelyen tízes alapú logaritmikus skálán adjuk meg. A tengelyen általában a tényleges körfrekvenciaértéket tüntetjük fel, ritkábban fordul elő a körfrekvencia tízes alapú logaritmusa.

Az ábrázoláshoz a frekvenciaátviteli függvény exponenciális alakját (1.39) használjuk. A felső diagram függőleges tengelyén a frekvenciaátviteli függvény A 0 abszolút értékét, a B[dB]=20·log·A 0 összefüggéssel decibelbe átváltva ábrázoljuk. Az alsó diagramra az általában fokban, ritkábban radiánban adott fázistolást rajzoljuk. A Bode–diagram pontjainak számításánál célszerű a vízszintes tengelyen választott körfrekvencia-tartományt logaritmikusan felosztani.

A bemenet–kimenet alakú matematikai modellel (differenciálegyenlet, frekvenciaátviteli függvény, átviteli függvény) adott rendszer Nyquist–diagram ábrázolása könnyen algoritmizálható, az állapottér modellel adott rendszer esetén célszerű visszatérni a bemenet–kimenet leképezések valamelyikére.

1.11.1.1. A közelítő Bode–diagram

A gyors közelítő ábrázolására kiválóak a töréspontokban kapcsolódó, különböző meredekségű egyenesekkel megrajzolható, közelítő Bode–diagramok. Néhány alapelem segítségével bármilyen frekvenciaátviteli függvényt felírhatunk ezen „alaptagok” soros eredőjeként, és így pillanatok alatt felvázolhatjuk a frekvenciaátviteli tulajdonságokat közelítő Bode–diagramon.

A közelítő Bode amplitúdó menet alapján a frekvenciaátviteli függvény is könnyen felírható az alapelemek soros eredőjeként. Ezt a hatékony, közelítő ábrázolást soros kompenzációval történő szabályozásoknál tudjuk kihasználni.

A választott (nem feltétlenül megvalósítható, de számítás és rajzolás szempontjából praktikus) alapegységeket a frekvenciaátviteli függvény számláló- és nevezőbeli gyökei alapján, az alábbiak szerint definiálhatjuk:

  1. nulladrendű (konstans) számláló és nevező (arányos vagy P tag) ,

  2. konstans számláló, egy nullaértékű pólus (integráló vagy I tag),

  3. egy nullaértékű zérus, konstans nevező (ideális, azaz nem megvalósítható differenciáló vagy D tag),

  4. konstans számláló és egy pólus (elsőrendű késleltetésű vagy egytárolós arányos tag, P-T1),

  5. egy zérus és konstans nevező (párhuzamosan kapcsolt arányos és ideális differenciáló tag, PD),

  6. konstans számláló és két pólus (másodrendű késleltetésű vagy kéttárolós arányos tag, P-T2),

  7. két zérus és konstans nevező.()

1.11.1.1.1. Nulladrendű számláló, nulladrendű nevező

Más néven arányos vagy P–tag.

 

(1.643)

 

(1.644)

 

(1.645)

Amplitúdó-diagramja

[dB] magasságú vízszintes,

Fázisdiagramja

0o magasságú vízszintes,

1.11.1.1.2. Nulladrendű számláló és egy zérusértékű pólus

Más néven integráló vagy I–tag.

 

(1.646)

 

(1.647)

 

(1.648)

Amplitúdó-diagramja

-20 [dB/dekád] meredekségű egyenes, amely a 0 dB-es tengelyt az ω = 1/T i  pontban metszi,

Fázisdiagramja

-90o magasságú vízszintes egyenes.

1.11.1.1.3. Egy nullaértékű zérus és nulladrendű nevező

Más néven ideális ( nem megvalósítható ) differenciáló vagy D–tag.

Formálisan a D-tag frekvenciaátviteli függvénye az I-tag frekvenciaátviteli függvényének reciproka.

 

(1.649)

 

(1.650)

 

(1.651)

Amplitúdó-diagramja

+20 dB/dekád meredekségű egyenes, amely a 0dB-es tengelyt az ω =1/T d pontban metszi,

Fázisdiagramja

+90o magasságú vízszintes egyenes.

1.11.1.1.4. Nulladrendű számláló és egy pólus

Egytárolós arányos vagy P–T 1 tag. A közelítő Bode–diagram felrajzolása szempontjából az egységnyi erősítésű, egytárolós, arányos tagot használjuk. Ez azt jelenti, hogy a számlálóban és a nevezőben szereplő konstans értékek egyenlőek: b 0 = a 0 . Ettől eltérő esetben, az egytől különböző A p erősítésértéket sorba kapcsolt arányos (P) tagként vesszük figyelembe. Az alábbi képletben a b 0 = a 0  feltételezéssel élünk.

 

(1.652)

 

(1.653)

 

(1.654)

Amplitúdó-diagramja

az ω = 1/T 1 töréspontig a 0 dB-es tengelyen haladó vízszintes, utána -20 dB/dekád meredekségű egyenes,

Fázisdiagramja

az ω = 1/T 1  törésponttól 1 dekáddal balra (ω = 0.1/T 1 ) ér véget a 0o-os vízszintes, ezt követi két dekádon keresztül (ω = 10/T 1 -ig) a -45o/dekád meredekségű egyenes, majd -90o magasságú vízszintes, -45o a töréspontban.

1.11.1.1.5. Egy zérus és nulladrendű nevező

Párhuzamosan kapcsolt arányos és ideális differenciáló tag, jele PD.

A közelítő Bode–diagram felrajzolása szempontjából egységnyi erősítésű, arányos taggal használjuk.

Ez azt jelenti, hogy a számlálóban és a nevezőben lévő konstans értéke megegyezik: b 0 = a 0 . Ettől eltérő esetben, az egytől különböző A p erősítésértéket sorba kapcsolt arányos (P) tagként vesszük figyelembe. Az alábbi képletben a b 0 = a 0  feltételezéssel élünk.

Formálisan az egységnyi erősítésű PD–tag frekvenciaátviteli függvénye az egységnyi erősítésű P-T 1 tag frekvenciaátviteli függvényének reciproka.

 

(1.655)

 

(1.656)

 

(1.657)

Amplitúdó-diagramja

az ω = 1/T d töréspontig a 0 dB-es tengelyen haladó vízszintes, utána +20 dB/dekád meredekségű egyenes,

Fázisdiagramja

az ω = 1/T d  törésponttól 1 dekáddal balra (ω = 0.1/T d ) ér véget a 0o -os vízszintes, ezt követi két dekádon keresztül (ω = 10/T d -ig) a +45/dekád meredekségű egyenes, majd +90o magasságú vízszintes, +45o a töréspontban.

1.11.1.1.6. Nulladrendű számláló és két pólus

Kéttárolós, arányos vagy P–T 2 tag. A közelítő Bode–diagram felrajzolása szempontjából az egységnyi erősítésű, kéttárolós arányos tagot használjuk. Ez azt jelenti, hogy a számlálóban és a nevezőben lévő konstansok értéke azonos: b 0 = a 0 . Ettől eltérő esetben, az egytől különböző A p erősítésértéket sorba kapcsolt arányos (P) tagként vesszük figyelembe. Az alábbi képletben a b 0 = a 0  feltételezéssel élünk.

 

(1.658)

 

(1.659)

 

(1.660)

A csillapítási tényező értéke alapján a nevező polinom gyökeloszlása háromféle lehet:

  • ha , a másodfokú egyenletnek két különböző valós gyöke van, a tag felírható két eltérő időállandójú, egytárolós, arányos tag soros eredőjeként: (1+T 1 jω)(1+T 2 jω)

  • ha , a másodfokú egyenletnek két azonos valós gyöke van, a tag felírható két azonos időállandójú, egytárolós, arányos tag soros eredőjeként: (1+T 1 )2

  • ha , a másodfokú egyenlet megoldása konjugált komplex gyökpár, a két energiatárolót nem tudjuk „szétválasztani”, maradnunk kell az eredeti leírásnál.

Amplitúdó-diagramja

a csillapítási tényező értéke alapján háromféle lehet:

  • ha , a nagyobb időállandó (legyen ez T1) reciproka az első töréspont, a kisebb időállandóé pedig a második töréspont ω = 1/T 2 , az első töréspontig a 0 dB-es tengelyen haladó vízszintes egyenes, utána -20 dB/dekád meredekségű egyenes a második töréspontig, majd ezt követően -40 dB/dekád meredekségű egyenes,

  • ha , az ω = 1/T 1 töréspontig a 0 dB-es tengelyen haladó vízszintes, utána -40 dB/dekád meredekségű egyenes,

  • ha , az ω = 1/T 1 töréspontig a 0 dB-es tengelyen haladó vízszintes, utána -40 dB/dekád meredekségű egyenes, esetén a töréspontban magasságú „tüske”.

Fázisdiagramja

a csillapítási tényező értéke alapján háromféle lehet:

  • ha , a két egytárolós, arányos tag korábban megadott fázismenetét kell összegezni,

  • ha , az ω 1/T 1 törésponttól 1 dekáddal balra (ω 0.1/T 1 ) ér véget a 0o-os vízszintes, ezt követi két dekádon keresztül (ω 10/T 1 -ig) a -90o/dekád meredekségű egyenes, majd -180o magasságú vízszintes, -90o a töréspontban,

  • ha , az pontig a 0dB-es tengelyen haladó vízszintes, utána ferde egyenes az pontig a -180o eléréséig, majd végig -180o magasságú vízszintes, az ω = 1/T0 töréspontban -90o.

1.11.1.1.7. Két zérus és nulladrendű nevező

Formálisan az egységnyi erősítésű P–T 2 –tag frekvenciaátviteli függvényének reciproka. Az előzőekhez hasonlóan itt is feltételezzük, hogy a számlálóban és a nevezőben lévő konstans értékek egyenlők: b 0 = a 0 . Ettől eltérő esetben, az egytől különböző A p erősítésértéket sorba kapcsolt arányos (P) tagként vesszük figyelembe.

 

(1.661)

 

(1.662)

 

(1.663)

A „csillapítási tényező” értéke alapján a számláló polinom gyökeloszlása háromféle

lehet:

  • ha , a másodfokú egyenletnek két különböző valós gyöke van, a tag felírható két eltérő differenciálási idejű, arányos differenciáló tag soros eredőjeként: (1+T d1 j·ω) (1+T d2 j·ω)

  • ha , a másodfokú egyenletnek két azonos valós gyöke van, a tag felírható két azonos differenciálási idejű, arányos differenciáló tag soros eredőjeként: (1+T d ·jω)2

  • ha , a másodfokú egyenlet megoldása konjugált komplex gyökpár, maradnunk kell az eredeti leírásnál

Amplitúdó-diagramja

a csillapítási tényező értéke alapján háromféle lehet:

  • ha , a nagyobb időállandó (legyen ez T d1 ) reciproka az első töréspont, a kisebb időállandóé pedig a második töréspont, ω = 1/T d2 , az első töréspontig a 0 dB-es tengelyen haladó vízszintes egyenes, utána +20 dB/dekád meredekségű egyenes a második töréspontig, ezt követően +40 dB/dekád meredekségű egyenes,

  • ha , az ω = 1/T d töréspontig a 0 dB-es tengelyen haladó vízszintes, utána +40 dB/dekád meredekségű egyenes,

  • ha , az ω = 1/T d1 töréspontig a 0 dB-es tengelyen haladó vízszintes, utána +40 dB/dekád meredekségű egyenes, esetén a töréspontban nagyságú negatív „tüske”.

Fázisdiagramja

a csillapítási tényező értéke alapján háromféle lehet:

  • ha , a két arányos differenciáló tag (PD) korábban megadott fázismenetét kell összegezni,

  • ha , az ω 1/T d törésponttól 1 dekáddal balra (ω 0.1/T d ) ér véget a 0o-os vízszintes, ezt követi két dekádon keresztül (ω 10/T d -ig) a +90o/dekád meredekségű egyenes, majd +180o magasságú vízszintes, +90o a töréspontban,

  • ha , az pontig a 0dB-es tengelyen haladó vízszintes, utána ferde egyenes az pontig a +180o eléréséig, majd végig +180o magasságú vízszintes, az ω = 1/T0 töréspontban +90o.

1.11.2. A Nyquist diagram

A helygörbe (Nyquist–diagram, vektordiagram) a frekvenciaátviteli függvény ω körfrekvenciával paraméterezett leképezése a komplex számsíkon, az ω értékekhez rendelhető komplex vektorok végpontjának összessége. Természetesen a komplex értékek algebrai alakban (valós és képzetes rész), valamint exponenciális (Euler–) alakban egyaránt megadhatók. A „tükörkép” diagram, vagyis az tartománybeli leképezés a „normál” tartománybeli diagram valós tengelyre való tükrözésével egyszerűen előállítható. A bemenet–kimenet alakú matematikai modellel (differenciálegyenlet, frekvenciaátviteli függvény, átviteli függvény) adott rendszer Nyquist–diagram ábrázolása könnyen algoritmizálható. Az állapottér modellel adott rendszer esetén célszerű visszatérni a bemenet–kimenet leképezések valamelyikére

  • MATLAB-ban,

  • Octave-ban,

  • Scilab-ban,

  • LabVIEW-ban az NIMathScript RT-ben,

  • LabVIEW-ban a Control Design Toolkit-tel,

  • LabVIEW-ban készített saját VI-al.

1.11.3. A Nichols–diagram

A Nichols–diagramon a frekvenciaátviteli függvény (1.39) két, a Bode–diagram két részén, a körfrekvencia függvényben ábrázolt információját jelenítjük meg. A vízszintes tengelyen a (kör)frekvenciafüggő fázistolás, a függőleges tengelyen a decibelben megadott, szintén (kör)frekvenciafüggő amplitúdó viszony szerepel. A görbe a Nyquist–diagramhoz hasonlóan az ω körfrekvencia értékével paraméterezett.

A bemenet–kimenet alakú matematikai modellel (differenciálegyenlet, frekvenciaátviteli függvény, átviteli függvény) adott rendszer Nichols–diagram ábrázolása könnyen algoritmizálható, az állapottér modellel adott rendszer esetén célszerű visszatérni a bemenet–kimenet leképezések valamelyikére.

1.11.4. A pólus–zérus diagram

A pólus–zérus diagramon a zérus–pólus(–erősítés) alakú átviteli (1.54) vagy frekvenciaátviteli függvény (1.48) számlálóbeli (zérusok) és nevezőbeli (pólusok) gyökeit ábrázoljuk a komplex számsíkon.

1.11.5. A gyökhelygörbe

A gyökhelygörbe a rendszer gyökeinek (zérusainak és pólusainak) komplex számsíkbeli elhelyezkedését ábrázolja egy paraméter értékváltozását követve. Gyakran alkalmazzák szabályozási körök vizsgálatára, a nyílt hurkú erősítést (körerősítést) használva paraméterként.



[1]  A numerikus hibákról részletesebben a 7.1. szakasz - Hibajelenségek közelítő módszerek esetén fejezet szól.

[2]  Például állapottér modell

2. fejezet - Mintavételes rendszerek szimulációja

Tartalom
2.1. Impulzusátviteli függvény és a mintavételes állapottér leírási mód
2.1.1. Differenciaegyenlet előállítása
2.1.1.1. Előrehaladó differencia
2.1.1.2. Hátrahaladó differencia
2.1.1.3. Trapéz–módszer
2.1.2. Diszkrét idejű állapottér modell
2.1.3. Mintavételezés, Z–transzformáció
2.1.4. A Z–transzformáció tulajdonságai
2.1.5. Mintavételezett jelek Z-transzformációja
2.1.6. Mintavételes és folytonos rendszerek összekapcsolása, tartószervek (ZOH, FOH)
2.1.6.1. A nulladrendű tartószerv
2.1.6.2. Elsőrendű tartószerv
2.1.7. Mintavételezett adatokkal működő folytonos rendszer diszkrét modellje
2.1.8. Inverz Z–transzformáció
2.1.8.1. Táblázatból való visszakereséssel
2.1.8.2. Résztörtekre bontással
2.1.8.3. Sorba fejtéssel
2.1.8.4. Inverz Z-transzformáció diszkrét konvolúcióval
2.1.9. Impulzusátviteli függvény
2.1.9.1. Impulzusátviteli függvény z pozitív hatványaival G(z)
2.1.9.2. Impulzusátviteli függvény z negatív hatványaival G(z-1)
2.1.9.3. G(z) átalakítása G(z-1) alakra
2.1.9.4. 1G(z-1) átalakítása G(z) alakra
2.2. Mintavételes rendszerek alapelemei
2.2.1. Mintavételes rendszerek alapműveletei
2.2.2. Időbeni eltolást végző elem (shift művelet) megvalósítása mintavételes rendszerekben
2.2.3. Időbeni késleltetés megvalósítása mintavételes rendszerekben
2.2.4. Mintavételes rendszerek nemlineáris elemei
2.3. Mintavételes alapelemek összekapcsolása
2.3.1. Az impulzusátviteli függvény (SISO rendszer) megvalósítása digitális számítógépen
2.3.1.1. Az impulzusátviteli függvény megvalósítása soros kapcsolású alapelemekkel
2.3.1.2. Az impulzusátviteli függvény megvalósítása párhuzamos kapcsolású alapelemekkel
2.3.1.3. Impulzusátviteli függvény megvalósítása közvetlen programozással
2.3.1.4. Impulzusátviteli függvény megvalósítása M programozással
2.4. Állapottér leírású (MIMO) rendszer megvalósítása
2.4.1. Az impulzusátviteli függvény meghatározása mintavételes állapottér mátrixok segítségével
2.4.2. Mintavételes állapottér mátrixok meghatározása az impulzusátviteli függvény segítségével
2.5. Transzformációk a mintavételes rendszerekben
2.5.1. Az impulzusátviteli függvény (tf) transzformációi
2.5.1.1. Az impulzusátviteli függvény állandósult állapotbeli erősítése
2.5.1.2. Impulzusátviteli függvény transzformációja zérus-pólus-erősítés alakból polinomiális alakba
2.5.1.3. Impulzusátviteli függvény transzformációja állapottér modell alakból polinomiális alakba
2.5.2. Zérus-pólus-erősítés függvény (zp) transzformációi
2.5.2.1. Zérus-pólus függvény erősítése (Kd)
2.5.2.2. Polinomiális alakú impulzusátviteli függvény átalakítása zérus-pólus-erősítés alakúvá
2.5.2.3. Állapottér modell alakú impulzusátviteli függvény átalakítása zérus-pólus-erősítés alakúvá
2.5.3. Állapottér (ss) transzformációk
2.5.3.1. Átalakítás polinomiális alakú impulzusátviteli függvényből állapottér modellbe
2.5.3.2. Átalakítás zérus-pólus-erősítés alakú impulzusátviteli függvényből állapottér modellbe

2.1. Impulzusátviteli függvény és a mintavételes állapottér leírási mód

Az impulzusátviteli függvény mintavételes rendszerekben megfelel a folytonos időben használt átviteli függvénynek. Az impulzusátviteli függvény formális definíciója hasonlít az átviteli függvényéhez, a kimenő jel transzformáltját kell elosztanunk a bemenő jel transzformáltjával.

Átviteli függvény esetén Laplace–transzformáltak,

 

(2.1)

impulzusátviteli függvénynél Z-transzformált értékek hányadosáról van szó, adott h mintavételi időtartam mellett.

 

(2.2)

2.1.1. Differenciaegyenlet előállítása

A K.Á.L.I. differenciálegyenlet h mintavételi időtartammal differenciaegyenletté alakítható. Az átalakításhoz az idő szerinti differenciálhányadosok közelítése szükséges. Az x(t) folytonos idejű jel idő szerinti első deriváltját többféle numerikus módszerrel közelíthetjük. Mindegyik közelítésnél felhasználjuk a z = e s·h operátort, hogy a Laplace–operátoros tartománybeli s operátorral való szorzási műveletet (idő szerinti differenciálás műveletét) megvalósítsuk a h mintavételi időtől függő z operátorral.

2.1.1.1. Előrehaladó differencia

Az előrehaladó differencia (Euler–módszer) a k·h pillanatbeli idő szerinti differenciálhányados értéket a (k+1h időpillanatbeli érték segítségével adja meg.

 

(2.3)

A z eltolás operátor felhasználásával az idő szerinti differenciálásnak megfelelő közelítés

 

(2.4)

Más módszerrel, bevezetve a függvényt

 

(2.5)

Az alábbi helyettesítéssel és Laplace-transzformációval

 

(2.6)

 

(2.7)

Figyelembe véve, hogy

 

(2.8)

Kapjuk a z és s operátor kapcsolatát az előrehaladó differencia-közelítésnél

 

(2.9)

Ebből

 

(2.10)

2.1.1.2. Hátrahaladó differencia

Hátrahaladó differencia módszer a k·h pillanatbeli idő szerinti differenciálhányados értékét a (k-1)·h időpillanatbeli érték segítségével adja meg

 

(2.11)

A z eltolás operátor felhasználásával a differenciálásnak megfelelő közelítés

 

(2.12)

A másik módszerrel

 

(2.13)

Laplace transzformációval és s helyettesítésével

 

(2.14)

Átrendezve

 

(2.15)

A z és s operátor kapcsolata hátrahaladó differencia-közelítésnél

 

(2.16)

Ebből

 

(2.17)

2.1.1.3. Trapéz–módszer

Trapéz–módszer (Tustin–féle bilineáris transzformáció)  

 

(2.18)

Laplace transzformációval és s helyettesítésével

 

(2.19)

Átrendezve

 

(2.20)

A z és s operátor kapcsolata trapéz módszer-közelítésnél

 

(2.21)

Ebből

 

(2.22)

2.1.2. Diszkrét idejű állapottér modell

Ha a folytonos idejű állapotegyenletet digitális számítógéppel szeretnénk megoldani, át kell alakítanunk diszkrét idejűvé. Feltételezzük, hogy az u (t) vektorbeli bemenő jelek csak a diszkrét k·h időpillanatokban változtatják meg értéküket.

A folytonos állapotegyenlet,

 

(2.23)

diszkrét idejű állapotegyenletében

 

.

(2.24)

az idő szerinti differenciálhányadost közelíthetjük a következő differenciahányadossal

 

(2.25)

A folytonos idejű állapotegyenlet megoldása

 

(2.26)

Feltételezve, hogy két mintavételi időpont között a bemenő jel értéke nem változik, a 2.26. egyenletet felírhatjuk a (k+1). és a k. időpillanatra

 

(2.27)

 

(2.28)

A második egyenlet -szeresét kivonva az első egyenletből, és a helyettesítéssel

 

(2.29)

Átrendezés után a diszkrét idejű állapotegyenletet kapjuk

 

(2.30)

A folytonos kicsatolási egyenlet formája:

 

,

(2.31)

a diszkrét idejű kicsatolási egyenlet pedig a következő alakú:

 

.

(2.32)

A diszkrét idejű állapottér modell kapcsolata a folytonos idejű állapottér modellel

 

(2.33)

 

(2.34)

 

(2.35)

 

(2.36)

A mátrix kitevőjű exponenciális függvény meghatározása.

 

(2.37)

  • Ha rendelkezésünkre áll a folytonos rendszer állapottér leírású alakban, akkor a Z-transzformációt a megadott h mintavételi időtartammal, a 2.33 és a 2.34 képletek alkalmazásával is elvégezhetjük.

  • A végtelen sor eleme k=70 indexértéknél az 1/70! értéke 10-100 nagyságrendű, tehát a végtelen sor helyett elegendő véges indexértékig számolni a sor elemeit.

2.1.3. Mintavételezés, Z–transzformáció

Az időben folytonos jel mintavételezését elképzelhetjük egy kapcsoló segítségével. A kapcsoló h időközönkénti bekapcsolásával (majd azonnali kikapcsolásával) a jelből impulzussorozat jellegű mintákat gyűjtünk. A mintavételezett jel értékét a következő mintavételi időpontig fenntartja az úgynevezett tartószerv, amely a mintavételezett jelet minden időpillanatban rendelkezésre álló folytonos jellé alakítja. A legegyszerűbb tartószerv a nulladrendű tartószerv (ZOH = Zero Order Hold), amely a mintavételezett jel értékét változatlanul tartja a következő mintavételezésig.

A h időközönkénti mintavételezést biztosító egységimpulzusokból (δ(t )) álló jelsorozatként adott mintavevő időfüggvénye

 

(2.38)

Az x(t) folytonos jelből az x*(t) mintavételezett jelsorozatot előállító összefüggés tulajdonképpen moduláció, az impulzussorozat amplitúdóját moduláljuk az x(t ) jellel

 

(2.39)

Mivel a rendszervizsgálatok során leggyakrabban a < 0 tartományban zérusértékű jelekkel foglalkozunk, a mintavételezett jelet definiáló összefüggés

 

.

(2.40)

Az előző egyenlet második részének Laplace–transzformáltja

 

(2.41)

Bevezetve a h idővel való eltolásnak megfelelő

 

(2.42)

operátort, felírhatjuk az x(t ) jel Z-transzformáltját

 

(2.43)

Mivel a Z-transzformáció során csak a jel mintavételi időpillanatbeli (t=k·h) értékeivel foglalkozunk, felírható

 

(2.44)

Az inverz Z-transzformációval nem tudjuk a teljes x(t) jelet visszaállítani, mivel csak a t=k·h mintavételi időpontokban ismerjük az értékeit.

2.1.4. A Z–transzformáció tulajdonságai

Szorzás konstanssal:

 

(2.45)

Linearitás:

 

(2.46)

Szorzás -val {ahol a konstans érték}:

 

(2.47)

Eltolási tétel:

 

(2.48)

 

(2.49)

Kezdeti érték tétele:

 

(2.50)

 

(2.51)

ha     akkor  

Végérték tétele:

 

(2.52)

 

(2.53)

 

(2.54)

 

(2.55)

 

(2.56)

ha     akkor  

A komplex átalakítás tétele:

 

(2.57)

2.1. táblázat - A Z-transzformáció tulajdonságainak összefoglalása

Időtartományban

Z-transzformált tartományban

=

=


2.1.5. Mintavételezett jelek Z-transzformációja

2.2. táblázat - Időben folytonos jelek Laplace- és Z- transzformáltja

x(t)

x(s)

{x[n·h]}

x(z)

1

 

1

 

Tuschák Róbert: Szabályozástechnika 3. Füzet;  (1988)


2.1.6. Mintavételes és folytonos rendszerek összekapcsolása, tartószervek (ZOH, FOH)

Az x*(t) h időközönként mintavételezett jel, melynek értékei csak a k·h , k = 0,1,2, . . . időpillanatokban állnak rendelkezésre. Ahhoz, hogy ezt a jelet egy folytonos idejű rendszerben alkalmazni tudjuk, folytonos idejűvé kell alakítanunk. Ezt a feladatot egy tartószerv elnevezésű eszközzel lehet megvalósítani.

Elméletileg tetszőleges rendű tartószervet létre lehet hozni, de a szükséges korábbi értékek nagy száma és a realizálás (számítás) bonyolultsága miatt, leggyakrabban nulladrendű, esetleg elsőrendű tartószervet használunk.

2.1.6.1. A nulladrendű tartószerv

A nulladrendű tartószerv (ZOH = Zero Order Hold) segítségével a mintavételezett jelből úgy állítunk el folytonos idejű jelet, hogy a k. mintavételi időpillanatbeli értéket a (k+1). mintavételi időpillanatbeli érték megérkezéséig tartjuk. Rövid, nulla meredekségű függvénydarabokkal (vízszintesekkel) közelítjük az eredeti jelet. A visszaállított jel h mintavételi idő szélességű impulzusok (a k. pillanatban k·h magasságú téglalapok) sorozata.

A t=0 időpillanatban működésbe lépő, h ideig működő nulladrendű tartószerv időfüggvénye két egységugrással írható fel. Az első 1(t) egységugrás t=0-ban kezdődik. A második egységugrás negatív értékű, h idővel később kezdődik és amplitúdója -1 érték.

A nulladrendű tartószerv időfüggvénye

 

,

(2.58)

és ennek Laplace–transzformáltja

 

(2.59)

Mivel a nulladrendű tartószerv bemenete Dirac–impulzus, a fenti Laplace–transzformált egyben a nulladrendű tartószerv átviteli függvénye (2.60)

 

(2.60)

A nulladrendű tartószerv frekvencia-átviteli függvénye (2.61) s =jω formális helyettesítéssel

 

(2.61)

2.1.6.2. Elsőrendű tartószerv

Az elsőrendű tartószerv (FOH = First Order Hold) a jel (k+1). időpillanatbeli értékét becsüli és a k. időpillanatbeli értékből a becsült értékbe vezető egyenessel közelíti a k. és a (k+1). időpillanat közötti folytonos értékeket. A módszer a (k+1). időpillanatbeli érték becsléséhez a már rendelkezésre álló (k-1). és k. időpillanatbeli értékeket összekötő egyenes meredekségét (a differenciahányadost) alkalmazza. A k. időpillanatbeli értékből ezzel a meredekséggel induló egyenes h idővel későbbi értéke adja a jel (k+1)·h időpillanatbeli közelítő értékét. Amikor megjelenik a jel tényleges (k+1)·h időpillanatbeli értéke, az elsőrendű tartószerv függőleges vonallal köti össze az azonos időpillanatbeli közelítő és valós jelértékeket.

Az elsőrendű tartószerv átviteli függvénye

 

(2.62)

2.1.7. Mintavételezett adatokkal működő folytonos rendszer diszkrét modellje

A folytonos differenciálegyenlettel leírt rendszerek mintavételi időtartamának megállapítását a 1.8.1.2. szakasz - Folytonos rendszerek mintavételezése fejezetben leírt elvek figyelembevételével kell megállapítani, a vizsgált rendszerben még figyelembe vett legkisebb időállandó segítségével.

Mintavételezett adatokkal működő folytonos rendszer általános felépítését a 2.1. ábra - A folytonos átviteli függvény átalakítása impulzusátviteli függvénnyé mutatja be. Az átalakítandó rendszert a G(s) időben folytonos átviteli függvénnyel írjuk le. A bementi jel, egy mintavételes jel u[kh] amelyet például egy számítógépes irányító rendszer bocsájt ki. A folytonos rendszer időben folytonos jelet igényel bemeneti jelként. A tartószerv (jelformáló) a mintavételezett jelet időben folytonos jellé alakítja, és az u[kh] mintavételes jelből, időben folytonos m(t) jelet hoz létre.

A folytonos átviteli függvény átalakítása impulzusátviteli függvénnyé
2.1. ábra - A folytonos átviteli függvény átalakítása impulzusátviteli függvénnyé


A mintavételezési időnél az m[t=kh]-nak egyenlőnek kell lennie az u[kh]-val. A mintavételezési pontok között egy tartószervvel polinomiális n-ed rendű extrapolációt alkalmazhatunk, amelyet a következő függvénnyel írhatunk le:

 

,    

(2.63)

ahol

 

k·h

a k. mintavételezési időpont,

 

τ

a két mintavételezés közötti folytonos jel független változója, ,

 

n

a közelítés fokszáma.

A legegyszerűbb és a leggyakrabban alkalmazott tartószerv a nullarendű tartószerv (ZOH = Zero Order Hold), amelynél

 

(2.64)

Az u(t) mintavételezése és tartása nulladrendű tartóval (ZOH)
2.2. ábra - Az u(t) mintavételezése és tartása nulladrendű tartóval (ZOH)


Ahogyan a (2.2. ábra - Az u(t) mintavételezése és tartása nulladrendű tartóval (ZOH)) ábrán látható, a tartószerv kimenete m(t) függ az időben folytonos u(t) jeltől.

 

(2.65)

Az előző egyenlet Laplace-transzformáltja a következő lesz

 

(2.66)

Fontos, hogy az összefüggés a mintavételezett jel időben folytonos Laplace-transzformáltja

 

(2.67)

Tehát, a nullarendű tartószerv (ZOH) átviteli függvényét a fennmaradó tört írja le, ezért a tartószerv átviteli függvénye:

 

(2.68)

A diszkrét idejű átviteli függvény, amelyet impulzusátviteli függvénynek is nevezünk, tulajdonképpen a GZOH(s) nulladrendű tartószerv átviteli függvénye és a folyamat átviteli függvénye G(s) szorzatának Z-transzformáltja.

Ez az impulzusátviteli függvény a folytonos átviteli függvénnyel leírt rendszer transzformáltja mintavételes alakba a megadott h mintavételi időtartammal.

 

(2.69)

A diszkrét idejű rendszer impulzusátviteli függvényének blokkdiagramját (2.3. ábra - Az impulzusátviteli függvény) ábra mutatja

Az impulzusátviteli függvény
2.3. ábra - Az impulzusátviteli függvény


Egy mintavételes rendszer Z-transzformáltját a kimeneti jel Z-transzformáltjának Y(z) és a bemeneti jel Z-transzformáltjának U(z) hányadosaként definiáljuk, adott mintavételi időtartamnál.

 

(2.70)

Megjegyzés:

Ha összehasonlítjuk a mintavételezett, időben folytonos jelek U(s) és a diszkrét idejű jelek U(z) Laplace-transzformáltjait

 

(2.71)

és

 

(2.72)

ismét megkapjuk az összefüggést a Laplace- és a Z-transzformáció közötti kapcsolatra

 

(2.73)

és

 

(2.74)

Fontos még megjegyezni, hogy

 

(2.75)

ahol

 

folytonos időben h értékű késleltetés Laplace-transzformáltja.

A 2.3. táblázat - Folytonos rendszerek impulzusátviteli függvényei a folytonos átviteli függvénnyel leírt rendszerek Z-transzformált impulzusátviteli függvényét adja meg adott h mintavételezési időtartammal.

2.3. táblázat - Folytonos rendszerek impulzusátviteli függvényei

G(s)

G(z)

,       

Tuschák Róbert: Szabályozástechnika 3. Füzet; (1988)


2.1.8. Inverz Z–transzformáció

2.1.8.1. Táblázatból való visszakereséssel

Ilyenkor a 2.2. táblázat - Időben folytonos jelek Laplace- és Z- transzformáltja x(z) oszlopát alkalmazzuk bementként, és az x(t) időfüggvényt határozzuk meg a táblázatból.

2.1.8.2. Résztörtekre bontással

A számítások eredményeként általában a kimenő jel Z-transzformáltját határozzuk meg, amely az Y(z). Az Y(z) a számítások elvégzése után általában egy számláló és nevező polinom z független változóval. Ha a számlálót és a nevezőt is gyöktényezős alakban írjuk fel a következő kifejezést kapjuk:

 

(2.76)

Ezt bonthatjuk fel a nevező (Y(z)) gyökei () szerint felírt résztörtekre.

 

(2.77)

alakra hozzuk, ahol

 

a számláló polinom gyökei (zérusai),

 
 

a nevező polinom gyökei (pólusai),

 
 

állandók.

 

A meghatározott együtthatók segítségével a megoldás időtartományban

 

(2.78)

 

(2.79)

alakú lesz.

Egy tag rekurzív formulává történő visszaalakításánál az alakú kifejezésben az értékek a meghatározó paraméterek, n pedig az elemek száma.

A résztörtekre bontás a nevező többszörös gyökei (pólusai) esetén is alkalmazható, ilyenkor a reziduum tétel segítségével határozzuk meg a függvényt.

2.1.8.3. Sorba fejtéssel

Az Y(z) függvényt, amely általában egy számláló (NUM(z)) és egy nevező (DEN(z)) polinomok hányadosaként jelenik meg, z-1 hatványsorba fejtjük.

 

(2.80)

A z-1 hatványsor együtthatói a diszkrét számsorozat mintavételi időpontokban felvett értékeit adják. Ha Y(z) racionális törtfüggvény, a sorfejtést a számláló nevezővel való osztásával végezhetjük.

2.1.8.4. Inverz Z-transzformáció diszkrét konvolúcióval

A mintavételes rendszereknél a diszkrét konvolúciós összeget ugyanúgy alkalmazhatjuk az inverz Z-transzformáció meghatározásához, mint a folytonos rendszereknél a konvolúciós integrált az inverz Laplace-transzformáció esetén.

Az inverz Z-transzformációhoz alkalmazzuk az Y(z) függvényt, amelyet bontsunk fel két Z-transzformált függvény szorzatára, (amelyek egyszerűbbek Y(z)-nél)!

 

(2.81)

Így Y(z) kifejezhető, a szorzatban szereplő Y 1 (z) és Y 2 (z) függvények z-1 hatványaival felírt sorainak sorozatával.

 

(2.82)

A két függvénysor összeszorzásával a következő függvényt kapjuk:

 

(2.83)

Az y[k] általánosan felírható függvénye időtartományban:

 

(2.84)

ami nem más, mint y 1 [k] és y 2 [k] diszkrét konvolúció függvénye.

Ezt az inverz Z-transzformációs eljárást akkor érdemes alkalmazni, ha az y 1 [k] és y 2 [k] már eleve idősorozatként áll rendelkezésünkre.

A diszkrét konvolúciót általánosan a következő összefüggéssel határozhatjuk meg:

 

(2.85)

A * a konvolúciós szorzat, amelynek definícióját a 2.84 képlettel adtuk meg.

2.1.9. Impulzusátviteli függvény

A G(s) átviteli függvényű rendszer impulzusátviteli függvényét az egységimpulzusra adott válasz, a súlyfüggvény (impulzusválasz) segítségével is felírhatjuk. A g(t) súlyfüggvény az átviteli függvény inverz Laplace–transzformáltja (mivel a Dirac–delta Laplace transzformáltja egy).

 

(2.86)

A k·h mintavételi időpillanatokban tekintsük a súlyfüggvény értékeit, és helyettesítsük be a Z-transzformáció definíciós összefüggésébe (2.44)

 

(2.87)

Stabil rendszerek impulzusátviteli függvényében a végtelen sor (2.87) konvergens. Sorba kapcsolt impulzusátviteli függvénnyel adott elemek eredő impulzusátviteli függvényét az impulzusátviteli függvények szorzásával adhatjuk meg. Ugyanez mintavételes rendszereknél nem feltétlenül igaz, mindig tekintettel kell lennünk a mintavevő(k) elhelyezésére.

2.1.9.1. Impulzusátviteli függvény z pozitív hatványaival G(z)

A mintavételes rendszerek leírásánál megvalósított állandó együtthatós differenciaegyenlet időben előrelépéses felírási móddal a következő alakban adható meg

 

(2.88)

ahol

 

a 0d …a nd

az előrelépéses differenciaegyenlet kimenő jelének időben eltolt értékeihez tartozó együtthatók,

 

b 0d …b md

az előrelépéses differenciaegyenlet bemenő jelének időben eltolt értékeihez tartozó együtthatók,

 

y[(k+i)·h]

a rendszer kimenő jele a (k+i)·h időpillanatban,

 

n

a kimenő jel legnagyobb időbeni eltolásának indexe,

 

u[(k+j)·h]

a rendszer bemenő jele a (k+j)·h időpillanatban,

 

m

a bemenő jel legnagyobb időbeni eltolásának indexe,

 

h

mintavételi időtartam [idő dimenzió],

 

k

az aktuális számítási időpont indexe (t=k·h).

Mintavételes bemeneti és kimeneti jelek értékei az előrelépéses differenciaegyenletben
2.4. ábra - Mintavételes bemeneti és kimeneti jelek értékei az előrelépéses differenciaegyenletben


Az időben előrelépéses differenciaegyenlethez a bemeneti és a kimeneti jelek adott mintavételi időpontbeli értékeit a (2.4. ábra - Mintavételes bemeneti és kimeneti jelek értékei az előrelépéses differenciaegyenletben) ábrán láthatjuk. Az ábrán látható, hogy a számításhoz (k-n)·h időponttal korábbi állapotból a bemenő és a kimenő jel mintavételes értékei valóban „előre lépnek” az időben.

Az impulzusátviteli függvényt a rendszer előrelépéses differenciaegyenletének Z- transzformációjával (a 2.49 összefüggés szerint az időbeni eltolás Z-transzformációjával), a korábbi bementi és kimeneti jelértékeket nullának feltételezve felírhatjuk, hogy

 

(2.89)

ahol

 

az előrelépéses differenciaegyenlet kimenő jelének időben eltolt értékeihez tartozó együtthatók,

 

az előrelépéses differenciaegyenlet bemenő jelének időben eltolt értékeihez tartozó együtthatók,

 

n

a nevezőben z legnagyobb pozitív hatványkitevője,

 

m

a számlálóban z legnagyobb pozitív hatványkitevője,

 

h

mintavételi időtartam [idő dimenzió].

Fizikailag megvalósítható rendszereknél a számláló és a nevező legmagasabb hatványkitevőjű tagjai között igaznak kell lennie a következő relációnak .

2.1.9.2. Impulzusátviteli függvény z negatív hatványaival G(z-1)

Ha a differenciaegyenletet a jelenlegi időponthoz képest időben visszalépő értékek segítségével írjuk fel, akkor a differenciaegyenlet visszalépéses algoritmusát kapjuk.

Az állandó együtthatós differenciaegyenlet időben visszalépéses felírási móddal

 

(2.90)

ahol

 

a visszalépéses differenciaegyenlet kimenő jelének időben eltolt értékeihez tartozó együtthatók,

 

a visszalépéses differenciaegyenlet bemenő jelének időben eltolt értékeihez tartozó együtthatók,

 

y[(k-i)·h]

a rendszer kimenő jele a (k-i)·h időpillanatban,

 

n

a kimenő jel legnagyobb időbeni eltolásának indexe,

 

u[(k-j)·h]

a rendszer bemenő jele a (k-j)·h időpillanatban,

 

m

a bemenő jel legnagyobb időbeni eltolásának indexe,

 

h

mintavételi időtartam [idő dimenzió],

 

k

az aktuális számítási időpont indexe (t=k·h).

Mintavételes bemeneti és kimeneti jelek értékei a visszalépéses differenciaegyenletnél
2.5. ábra - Mintavételes bemeneti és kimeneti jelek értékei a visszalépéses differenciaegyenletnél


A impulzusátviteli függvényt felírhatjuk a rendszer visszalépéses differenciaegyenletének Z-transzformációjával a 2.48 összefüggés szerint a időbeni eltolás Z-transzformációjával.

 

(2.91)

ahol

 

a visszalépéses differenciaegyenlet kimenő jelének időben eltolt értékeihez tartozó együtthatók,

 

a visszalépéses differenciaegyenlet bemenő jelének időben eltolt értékeihez tartozó együtthatók,

 

n

a kimenő jel legnagyobb időbeni eltolásának indexe; a nevezőben z legnagyobb pozitív hatványkitevője,

 

m

a bemenő jel legnagyobb időbeni eltolásának indexe, a számlálóban z legnagyobb pozitív hatványkitevője,

 

h

mintavételi időtartam [idő dimenzió].

2.1.9.3. G(z) átalakítása G(z-1) alakra

Egy vizsgált mintavételes rendszer előrelépéses differenciaegyenlete alapján felírható impulzusátviteli függvény (adott mintavételi időtartamnál), amely számlálóbeli valamint nevezőbeli polinom-együtthatókkal rendelkezik.

Fizikailag megvalósítható rendszernél teljesülnie kell a következő relációnak .

 

(2.92)

Ugyanez a mintavételes rendszer visszalépéses differenciaegyenlete alapján szintén felírható egy impulzusátviteli függvény (adott mintavételi időtartamnál), amely számlálóbeli és nevezőbeli polinom-együtthatókkal rendelkezik. A számlálóban lévő együtthatókat -től -ig kiegészítettük olyan együtthatókkal, amelyek nem szerepeltek a korábban felírt visszalépéses differenciaegyenlet algoritmusban, most viszont fontos szerepük lesz.

 

(2.93)

Mivel ugyanarról a mintavételes rendszerről van szó, a két impulzusátviteli függvénynek ugyanarra a bemenő jelsorozatra ( u[k] ) ugyanazt  a kimenő jelsorozatot ( y[k] ) kell kiadnia. Ezen feltétel biztosításához a pozitív hatványkitevőjű G(z) impulzusátviteli függvény együtthatóiból a következő módon kell a G(z -1 ) impulzusátviteli függvény együtthatóit képeznünk.

A G(z) impulzusátviteli függvény nevezőjének legmagasabb fokú z tagjával elosztjuk a számlálót és a nevezőt is, az így létrejövő átviteli függvény z negatív hatványai szerint fogja leírni az impulzusátviteli függvényt. Az együtthatók értékadását a (2.4. táblázat - G(z -1 ) számláló együtthatói G(z) számláló együtthatóiból és a 2.5. táblázat - G(z -1 ) nevező együtthatói G(z) nevező együtthatóiból) táblázat tartalmazza.

2.4. táblázat - G(z -1 ) számláló együtthatói G(z) számláló együtthatóiból

….

….


2.5. táblázat - G(z -1 ) nevező együtthatói G(z) nevező együtthatóiból

….


Mintapélda:

Határozzuk meg a következő G(z) impulzusátviteli függvényből a G(z -1 ) impulzusátviteli függvényt!

 

(2.94)

Megoldás:

A G(z) impulzusátviteli függvény legmagasabb nevezőbeli z hatványával, z 2 -el elosztva a számlátót és a nevezőt a közetkező impulzusátviteli függvényt kapjuk:

 

(2.95)

2.1.9.4. 1G(z-1) átalakítása G(z) alakra

Egy vizsgált mintavételes rendszer visszalépéses differenciaegyenlete alapján felírható impulzusátviteli függvény (adott mintavételi időtartamnál), amely számlálóbeli

és nevezőbeli polinom-együtthatókkal rendelkezik.

A mintavételes rendszer differenciaegyenlete:

 

(2.96)

Ugyanez a mintavételes rendszer előrelépéses differenciaegyenlete alapján szintén felírható egy impulzusátviteli függvény (adott mintavételi időtartamnál), amely számlálóbeli és nevezőbeli polinom-együtthatókkal rendelkezik. A számlálóban lévő együtthatókat -től -ig kiegészítettük olyan együtthatókkal, amelyek nem szerepeltek a korábban felírt előrelépéses differenciaegyenlet algoritmusban, most viszont fontos szerepük lesz.

 

(2.97)

Mivel ugyanarról a mintavételes rendszerről van szó, a két impulzusátviteli függvénynek ugyanarra a bemenő jelsorozatra ( u[k] ) ugyanazt  a kimenő jelsorozatot ( y[k] ) kell kiadnia. Ezen feltétel biztosításához a negatív hatványkitevőjű G(z -1 ) impulzusátviteli függvény együtthatóiból a következő módon kell a G(z) impulzusátviteli függvény együtthatóit képeznünk.

Határozzuk meg a G(z -1 ) impulzusátviteli függvény nevezőjének legnagyobb abszolút értékű, negatív kitevőjét (n<0 érték)! Ezt követően osszuk el a számlálót és a nevezőt is z n -el! Így létrejön az az átviteli függvény, amely z pozitív hatványai szerint fogja leírni az impulzusátviteli függvényt. Az együtthatók értékadását a (2.6. táblázat - G(z) számláló együtthatói G(z -1 ) számláló együtthatóiból és a 2.7. táblázat - G(z) nevező együtthatói G(z -1 ) nevező együtthatóiból) táblázat tartalmazza.

2.6. táblázat - G(z) számláló együtthatói G(z -1 ) számláló együtthatóiból

….

….


2.7. táblázat - G(z) nevező együtthatói G(z -1 ) nevező együtthatóiból

….


Mintapélda:

Határozzuk meg a következő G(z -1 ) impulzusátviteli függvényből G(z) impulzusátviteli függvényt:

 

(2.98)

Megoldás:

A G(z) impulzusátviteli függvény nevezőjének legmagasabb abszolút értékű kitevője = 2-vel. A számlátót és a nevezőt szorozva z +2 -el a közetkező függvényt kapjuk:

 

(2.99)

2.2. Mintavételes rendszerek alapelemei

A mintavételes rendszereket leíró differenciaegyenletben a következő alapműveletek szerepelnek:

  • jelkomponensek összeadása, kivonása,

  • jelkomponensek szorzása, osztása állandó értékkel (az együtthatókkal),

  • jelkomponensek eltolása időben korábbi irányba egy mintavételi időtartammal.

Az alapelemek fizikai megvalósításánál a digitális rendszertechnika alapelemeket alkalmazva logikai áramkörökkel, programozható logikai áramkörrel (FPGA), illetve (mikro)számítógépes algoritmussal valósíthatjuk meg a műveleteket.

A differenciaegyenlet alapműveleteinek hardveres megvalósítása

Az összeadás, kivonás, szorzás és osztás műveletét ezeknél a számításoknál alapvetően lebegőpontos számokkal kell megvalósítani. Ezeknek a műveleteknek a megvalósítása logikai áramkörökkel bonyolult, mivel nagyszámú logikai áramkört tartalmazó kapcsolást eredményez, amely költség, méretek és teljesítményigény szempontjából sokkal drágább, bonyolultabb például a (mikro)számítógépes „szoftveres” megvalósításnál.

Az aritmetikai műveletek logikai áramkörökkel történő megvalósítása napjainkban programozható logikai áramkörök segítségével történik. Ezeket az áramköröket Programozható Logikai Tömböknek (angol elnevezése FPGA = Field Programable Gate Array ) nevezzük és nagyszámú, több millió „alapelemet” tartalmaznak, amelyek egy program segítségével tetszőleges kialakítású logikai áramkör megvalósítását biztosítják. Így az alapelemek összekapcsolásával létrehozhatunk ciklusutasítást, feltételes végrehajtást, aritmetikai műveleteket méghozzá úgy, hogy a megvalósított műveletek úgy jönnek létre, mintha egy számítógépes programból létrehoztuk volna az adott algoritmust megvalósító logikai áramkört. Ezek a logikai áramkörökkel megvalósított műveletek, nem sorban egymás után hajtódnak végre, mint soronként egymás után végrehajtott mikroszámítógépes utasításoknál, hanem minden számítási blokkban párhuzamosan működnek. Ezért ezekkel a programozható logikai áramkörökkel megvalósított műveletek, ugyanolyan bonyolultságú algoritmus esetén, sokkal gyorsabban futnak (50…200-szor), mintha a feladatot egy nagy sebességű mikroszámítógépen futtatnánk.

Természetesen a Programozható Logikai Tömbök segítségével létre lehet hozni a mintavételes rendszerek differenciaegyenletének számításához még szükséges úgynevezett shift regisztereket (számértékeket tartalmazó tömböket) is, amelyeknél egy ciklusutasításban elvégzett értékátadással megvalósítható az adatok mintavételi értékeinek mozgatása meghatározott irányban.

Az FPGA áramkörök alkalmazása napjainkban egyre szélesebb körű. A párhuzamos, több szálon futó programozás biztosításához és az elkészített program teszteléséhez egyre több fejlesztőeszköz áll rendelkezésre.

A differenciaegyenlet alapműveleteinek szoftveres megvalósítása

A mintavételes rendszerek jelfeldolgozási feladatainak megoldásában jelenleg az a gyakorlat, hogy az adatok beolvasását, feldolgozását és visszajuttatását a valós rendszerbe, egy (vagy több) különböző szerkezeti felépítésű mikroszámítógép segítségével valósítják meg. A mikroszámítógépek alapvetően egész típusú aritmetikával, és ezek végrehajtását biztosító utasításokkal rendelkeznek.

Szükség van tehát a számításoknál alapvető igényként megjelenő lebegőpontos számítási műveletek létrehozására.

Ez történhet nagy szóhosszúságú, egész típusú adatokban virtuális tizedespont kijelöléssel és az így kialakított számábrázolási formátumban az összes művelet elvégzésével. Ez a számábrázolási forma kihasználja az összes „gépi utasítás szinten” rendelkezésre álló aritmetikai műveletet, és a szokásos számalkalmazási tartományban megfelelő pontossággal valósítja meg a műveleteket.

Az igazi megoldást az jelenti, hogy a jelfeldolgozásra alkalmazott processzor gépi kódú utasításaiként megvalósítjuk a lebegőpontos adatfeldolgozás műveleteit. Alapműveletekről van szó: összeadás, kivonás, szorzás és osztás, melyeket általában egy magas szintű programozási nyelv (leggyakrabban C programnyelvi) környezetében biztosítanak a fejlesztők számára. Majd az elkészült jelfeldolgozó programot lefordítják az adott processzor  (mikroprocesszor) gépi kódú (natív) utasításaira.

A mintavételezett jelek (bemenő és kimenő jel) tömbjein végzett műveleteket (mintavételezett értékek léptetését (shiftelését) szintén megvalósíthatjuk az adott processzor (mikroprocesszor) utasításait alkalmazó magas szintű nyelven.

2.2.1. Mintavételes rendszerek alapműveletei

Ebben a részben áttekintjük a mintavételes rendszerek azon alapműveleteit, amelyeket  a mintavételes rendszer differenciaegyenletének digitális számítógépes megoldásánál alkalmazunk.

Műveletvégző elem a számítási blokkdiagramban (végrehajtása a k. pillanatban történik)
2.6. ábra - Műveletvégző elem a számítási blokkdiagramban (végrehajtása a k. pillanatban történik)


A (2.6. ábra - Műveletvégző elem a számítási blokkdiagramban (végrehajtása a k. pillanatban történik)) ábrán szereplő „ M ” művelet a következők közül kerülhet ki:

  • összeadás ( + ),

  • kivonás ( - ),

  • szorzás ( * ),

  • osztás ( / ).

A két bementi érték (u1[k] és u2[k]) a rendszer differenciaegyenletében a mintavételi időpontokban megjelenő jelek értéke a k. mintavételi időpontban.

A műveleti elem nem hisztórikus tulajdonságú , vagyis a bemeneteire érkezett adatokból nem tárolja egyik értéket sem a további számításokhoz.

A számítási blokkdiagramokban néhány oyan műveletvégző elem és szimbólum is található, amelyek nem a (2.6. ábra - Műveletvégző elem a számítási blokkdiagramban (végrehajtása a k. pillanatban történik)) ábrán látható általános leírási formátumúak. Ezek a következők:

A bemenő jeleket előjelesen összegző blokk (végrehajtása a k·h időpontban történik.)
2.7. ábra - A bemenő jeleket előjelesen összegző blokk (végrehajtása a k·h időpontban történik.)


A (2.7. ábra - A bemenő jeleket előjelesen összegző blokk (végrehajtása a k·h időpontban történik.)) ábrán látható műveletvégző egyég a következő műveletet végzi el, ahol a bementek jelszorzó tulajdonságát (előjelét) is megadhatjuk:

 

(2.100)

A bemenő jel szorzása C konstanssal (végrehajtása a k·h időpontban történik.)
2.8. ábra - A bemenő jel szorzása C konstanssal (végrehajtása a k·h időpontban történik.)


A (2.8. ábra - A bemenő jel szorzása C konstanssal (végrehajtása a k·h időpontban történik.)) ábrán látható műveletvégző egyég a következő műveletet végzi el, ahol c konstans érték:

 

(2.101)

2.2.2. Időbeni eltolást végző elem (shift művelet) megvalósítása mintavételes rendszerekben

A mintavételes rendszer differenciaegyenletében a bemenő és kimenő jelek adott mintavételi időpontokban felvett értékeket tartalmazó tömbök. A tömbben szereplő jelértékeket minden mintavételi időpontban megszorozzuk a differenciaegyenlet megfelelő indexű jeleinek együtthatóival, majd kifejezzük a kimenő jel legnagyobb mintavételezési eltolási értékét y[k·h]-t (visszalépéses differenciaegyenlet felírás esetén). Ez a megoldás jellegre nagyon hasonlít a folytonos differenciálegyenletek számítási egyenletének meghatározására, ahol a kimenő jel legnagyobb idő szerinti differenciálértékét fejezzük ki a kimenő jel, alacsonyabb fokú deriváltjaival és a bemenő jellel valamint annak idő szerinti deriváltjaival.

A mintavételes rendszer visszalépéses differenciaegyenletének rekurzív számítási algoritmusa , a megadott mintavételes bemenő jelsorozatra a következő:

 

(2.102)

A számítások elvégezhetőségéhez olyan műveletvégző elemeket – shift regisztereket – kell alkalmaznunk, amelyek biztosítják, hogy a bemenő és a kimenő jel értékei minden mintavételi időpontban egy indexértékkel változtassák meg a pozíciójukat. Ez csak úgy valósítható meg, hogy a legrégebben tárolt adatot megszüntetjük, a felszabaduló helyre pedig a (2.9. ábra - Az x új [k] bemenő jel beléptetése az időbeni eltolás tömbbe(végrehajtása a k·h időpontban történik.)) ábrán bemutatott művelet végrehajtási sorrendjében átmásoljuk a korábbi adatokat, és a k·h időpontnál megüresedett helyre bemásoljuk a jel aktuális értékét. A bemenő jelnél az u[k·h] értéket a bemeneti jelek mintavételezett értékeit tartalmazó shift regiszterbe, a kimenő jelnél pedig a 2.102 egyenlettel meghatározott, y[k·h] kimenő jel értéket a kimeneti jelek mintavételezett értékeit tartalmazó shift regiszterbe másoljuk.

Az x új [k] bemenő jel beléptetése az időbeni eltolás tömbbe(végrehajtása a k·h időpontban történik.)
2.9. ábra - Az x új [k] bemenő jel beléptetése az időbeni eltolás tömbbe(végrehajtása a k·h időpontban történik.)


Az időbeni eltolás elem (shift művelet) hisztórikus tulajdonságú , azaz pillanatnyi kimeneti értékét meghatározza, hogy milyenek voltak a korábbi bementi értékek. A t=0 időpillanatban (k=0 mintavételezési indexértéknél) beállíthatjuk az időbeni eltolás elem összes állapotváltozójának (tárolt tömbelemének) kezdeti értékét .

2.2.3. Időbeni késleltetés megvalósítása mintavételes rendszerekben

Mintavételes rendszerekben az időbeni késleltetés csak a mintavételi időtartam egész számú többszöröse lehet, hiszen csak a mintavételi időpontokban történik meg a rendszer differenciaegyenletével új kimeneti jelérték meghatározása. Az időbeni késleltetést egy shift regiszter segítségével valósíthatjuk meg, amelynél egy paraméterrel (késleltetési index) megadjuk, hogy a bemeneti jel hány mintavételi időtartammal késleltetett értékét szeretnénk kimeneti adatként megkapni. A shift regiszter működését megvalósító programnak figyelembe kell vennie, hogy a késleltetési index nem lehet nagyobb, mint a shift regiszter mérete (a vektor lefoglalt elmeinek száma), vagyis annak maximális indexű késleltetett eleme.

A mintavételes késleltető elem blokkdiagramja (végrehajtása a k·h időpontban történik.)
2.10. ábra - A mintavételes késleltető elem blokkdiagramja (végrehajtása a k·h időpontban történik.)


A mintavételezett adatok a (2.10. ábra - A mintavételes késleltető elem blokkdiagramja (végrehajtása a k·h időpontban történik.)) ábrán bemutatott módon az x be [k] bemeneti értékkel juttatják be a késleltető elembe adataikat, és a késleltetési index elnevezésű paraméterrel megadott indexű elemet olvassuk ki x ki [k] kimeneti adatként. Mivel az adatok időbeni eltolása (shiftelése) csakis a mintavételezéskor történik, a bementi jel késleltetése a késleltetési index szorzata a h mintavételi idővel. Ha nagyobb késleltetésre van szükségünk, több késleltető elemet kapcsolhatunk sorba, hogy az előírt késleltetési időtartamot megvalósítsuk.

Ha a késleltetési index=1 a bemeneti mintavételes jelet egy mintavételi időtartammal, h-val késleltetjük, amelynek ábrázolása a számítási blokkdiagramban a (2.11. ábra - Egy mintavételi időt késleltető elem szimbóluma) ábrán látható.

Egy mintavételi időt késleltető elem szimbóluma
2.11. ábra - Egy mintavételi időt késleltető elem szimbóluma


2.2.4. Mintavételes rendszerek nemlineáris elemei

A mintavételes nemlineáris elemek típusait az 1.8.3.4. szakasz - Nemlineáris elemek fejezetben részletesen bemutattuk.

2.3. Mintavételes alapelemek összekapcsolása

2.3.1. Az impulzusátviteli függvény (SISO rendszer) megvalósítása digitális számítógépen

2.3.1.1. Az impulzusátviteli függvény megvalósítása soros kapcsolású alapelemekkel

Az impulzusátviteli függvény pozitív z hatványkitevőkkel:

 

(2.103)

Ha a számlálót és a nevezőt is osztjuk z n -el, a G(z -1 )-et kapjuk:

 

(2.104)

A számlálót és a nevezőt z csökkenő hatványai szerinti sorban felírva:

 

(2.105)

Bevezetve azt a jelölésmódot, amelynél az együtthatók indexei a z negatív hatványkitevőt is megjelenítik, G(z -1 )-re a következő összefüggést kapjuk:

 

(2.106)

Impulzusátviteli függvény felbontása soros kapcsolású elemekre
2.12. ábra - Impulzusátviteli függvény felbontása soros kapcsolású elemekre


A 2.12. ábra - Impulzusátviteli függvény felbontása soros kapcsolású elemekre az impulzusátviteli függvény soros kapcsolású elemekre való felbontását mutatja, ahol

 

q

a sorba kapcsolt elemek darabszáma.

Ez alapján a G(z -1 ):

 

(2.107)

ahol

  • a mintavételes elsőrendű tag átviteli függvénye (1. verzió):

     

    (2.108)

  • a mintavételes elsőrendű tag átviteli függvénye (2. verzió):

     

    (2.109)

    illetve

  • a mintavételes másodrendű tag átviteli függvénye:

     

    (2.110)

Az egyes tagok megvalósítása:

A mintavételes elsőrendű tag impulzusátviteli függvénye (1. verzió):

 

(2.111)

A mintavételes elsőrendű tag differenciaegyenlete (1. verzió):

 

(2.112)

amelyből

 

(2.113)

A mintavételes elsőrendű tag számítási blokkdiagramja (1. verzió):

A mintavételes elsőrendű tag számítási blokkdiagramja (1. verzió)
2.13. ábra - A mintavételes elsőrendű tag számítási blokkdiagramja (1. verzió)


A mintavételes elsőrendű tag impulzusátviteli függvénye (2. verzió):

 

(2.114)

A mintavételes elsőrendű tag differenciaegyenlete (2. verzió):

 

(2.115)

amelyből

 

(2.116)

A mintavételes elsőrendű tag számítási blokkdiagramja (2. verzió):

A mintavételes elsőrendű tag számítási blokkdiagramja (2. verzió)
2.14. ábra - A mintavételes elsőrendű tag számítási blokkdiagramja (2. verzió)


A mintavételes másodrendű tag impulzusátviteli függvénye:

 

(2.117)

A mintavételes másodrendű tag differenciaegyenlete:

 

(2.118)

amelyből

 

(2.119)

A mintavételes másodrendű tag számítási blokkdiagramja:

Mintavételes másodrendű tag számítási blokkdiagramja
2.15. ábra - Mintavételes másodrendű tag számítási blokkdiagramja


Mintapélda:

Határozzuk meg a következő impulzusátviteli függvény szimulációs blokkdiagramját!

 

(2.120)

Megoldás:

 

(2.121)

 

(2.122)

 

(2.123)

 

(2.124)

 

(2.125)

A mintapélda számítási blokkdiagramja:

Az impulzusátviteli mintapélda megvalósítása soros kapcsolású elemekkel
2.16. ábra - Az impulzusátviteli mintapélda megvalósítása soros kapcsolású elemekkel


2.3.1.2. Az impulzusátviteli függvény megvalósítása párhuzamos kapcsolású alapelemekkel

A mintavételes impulzusátviteli függvény felbontása párhuzamos kapcsolású elemekre
2.17. ábra - A mintavételes impulzusátviteli függvény felbontása párhuzamos kapcsolású elemekre


A 2.16. ábra - Az impulzusátviteli mintapélda megvalósítása soros kapcsolású elemekkel a mintavételes impulzusátviteli függvény párhuzamos kapcsolású elemekre való felbontását , ahol

 

p

a párhuzamosan kapcsolt elemek darabszáma

Ekkor:

 

(2.126)

ahol

  • a mintavételes elsőrendű tag átviteli függvénye (1. verzió):

     

    (2.127)

  • a mintavételes elsőrendű tag átviteli függvénye (2. verzió):

     

    (2.128)

    illetve

  • a mintavételes másodrendű tag átviteli függvénye:

     

    (2.129)

Mintapélda:

Határozzuk meg a következő impulzusátviteli függvény szimulációs blokkdiagramját:

 

(2.130)

Megoldás:

 

(2.131)

átalakítva z -1 hatványaira

 

(2.132)

 

(2.133)

 

(2.134)

 

(2.135)

A mintapélda számítási blokkdiagramja:

Az impulzusátviteli mintapélda megvalósítása párhuzamos kapcsolású elemekkel
2.18. ábra - Az impulzusátviteli mintapélda megvalósítása párhuzamos kapcsolású elemekkel


2.3.1.3. Impulzusátviteli függvény megvalósítása közvetlen programozással

A G(z) impulzusátviteli függvény számítási blokkdiagramját akarjuk meghatározni

 

(2.136)

A számlálót kiegészítjük bm+1..bn  elemekkel, amelyek mindegyike 0.0 értékű:

 

(2.137)

Ha a számlálót és a nevezőt is elosztjuk z n -el, a következő G(z -1 ) függvényt kapjuk:

 

(2.138)

A számlálót és a nevezőt z csökkenő hatványai szerinti sorban felírva:

 

(2.139)

Bevezetve azt a jelölésmódot, amelynél az együtthatók indexei a z negatív hatványkitevőt is megjelenítik, a G(z -1 )-re a következő összefüggést kapjuk

 

(2.140)

 

(2.141)

 

(2.142)

Kifejezzük Y(z -1 )-et, amely a kimenő jelének mintavételes értéke a k·h-ik időpontban (ez a késleltetés nélküli kimenő jel értéke)

 

(2.143)

Inverz Z-transzformáció után a rendszer differenciaegyenlete

 

(2.144)

A differenciaegyenlet számítási blokkdiagramja a (2.19. ábra - Az impulzusátviteli függvény megvalósítása közvetlen programozással) ábrán látható.

Az impulzusátviteli függvény megvalósítása közvetlen programozással
2.19. ábra - Az impulzusátviteli függvény megvalósítása közvetlen programozással


Mintapélda:

Határozzuk meg a következő impulzusátviteli függvény szimulációs blokkdiagramját!

 

(2.145)

Megoldás:

A G(z) függvényt átalakítva z -1 hatványaira

 

(2.146)

Az inverz Z-transzformációt elvégezve a differenciaegyenlet

 

(2.147)

A mintapélda számítási blokkdiagramja:

Impulzusátviteli mintapélda megvalósítása közvetlen programozással
2.20. ábra - Impulzusátviteli mintapélda megvalósítása közvetlen programozással


2.3.1.4. Impulzusátviteli függvény megvalósítása M programozással

A G(z) impulzusátviteli függvény számítási blokkdiagramját akarjuk meghatározni M programozással

 

(2.148)

A számlálót kiegészítjük bm+1..bn  elemekkel, amelyek mindegyike 0.0 értékű.

 

(2.149)

Ha a számlálót és a nevezőt is elosztjuk z n -el a következő G(z -1 ) függvényt kapjuk

 

(2.150)

A számlálót és a nevezőt z csökkenő hatványai szerinti sorban felírva

 

(2.151)

Bevezetve azt a jelölésmódot, amelynél az együtthatók  indexei a z negatív hatványkitevőt is megjelenítik, a G(z -1 )-re a következő összefüggést kapjuk

 

(2.152)

Egy új bevezetett változóval M(z -1 )-vel kifejezzük Y(z -1 )-t:

 

(2.153)

ahol

 

(2.154)

 

(2.155)

így

 

(2.156)

Mintapélda:

Határozzuk meg a következő impulzusátviteli függvény szimulációs blokkdiagramját!

 

(2.157)

Megoldás:

A G(z) függvényt átalakítva  z-1 hatványaira

 

(2.158)

 

(2.159)

 

(2.160)

 

(2.161)

Az inverz Z-transzformáció után az y[k] és az m[k] jelek az időtartományban

 

(2.162)

 

(2.163)

A mintapélda számítási blokkdiagramja:

Az impulzusátviteli mintapélda megvalósítása M programozással
2.21. ábra - Az impulzusátviteli mintapélda megvalósítása M programozással


2.4. Állapottér leírású (MIMO) rendszer megvalósítása

2.4.1. Az impulzusátviteli függvény meghatározása mintavételes állapottér mátrixok segítségével

A mintavételes állapottér leírású rendszer

 

(2.164)

ahol

 

a mintavételes állapottér leírási mód mátrixai,

 

u [k]

a bemenő jelek vektora,

 

y [k]

a kimenő jelek vektora,

 

x [k]

az állapotváltozók vektora,

 

k

a mintavételezési idő indexe (t=k*h).

Az impulzusátviteli függvény z pozitív hatványai szerint felírt alakja:

 

(2.165)

Az impulzusátviteli függvény a mintavételes állapottér mátrixokkal a következő egyenletekből határozható meg:

 

(2.166)

 

(2.167)

 

(2.168)

 

(2.169)

 

(2.170)

meghatározása a következő végtelen sor segítségével történik:

 

(2.171)

ahol

 

-hez  (+végtelenhez) tart.

 
 

(2.172)

 

(2.173)

 

(2.174)

ahol

 

a folytonos rendszer állapottér mátrixai.

2.4.2. Mintavételes állapottér mátrixok meghatározása az impulzusátviteli függvény segítségével

A z pozitív hatványaival felírt impulzusátviteli függvény

 

(2.175)

Állítsuk elő ebből a rendszer differenciaegyenletét inverz Z-transzformációval!

 

(2.176)

A kimenő jelet y[k]-t választva állapotváltozóként

 

(2.177)

és a bemenő jel együtthatóit kiegészítve b m+1 ..b n -ig 0.0 értékű együtthatókkal, a mintavételes állapottér egyenlet leírási mód (fázisváltozós kanonikus formában):

 

(2.178)

 

(2.179)

 

 
 

 
 

(2.180)

 

(2.181)

 

(2.182)

A kimenő jel pedig a következő formulával adható meg

 

(2.183)

A mintavételes állapottér leírási mód mátrixos formában

 

(2.184)

 

(2.185)

A mintavételes állapottér rendszer számítási blokkdiagramja

Az impulzusátviteli függvény megvalósítása állapottér leírással
2.22. ábra - Az impulzusátviteli függvény megvalósítása állapottér leírással


Mintapélda:

Határozzuk meg a következő impulzusátviteli függvény szimulációs blokkdiagramját!

 

(2.186)

Megoldás:

A z pozitív hatványkitevőivel felírva az impulzusátviteli függvény:

 

(2.187)

A z tartományból visszatérve a mintavételes időtartományba, a mintavételes állapottér egyenlet a következő alakú lesz:

 

(2.188)

 

(2.189)

 

(2.190)

Mátrixos alakban

 

(2.191)

 

(2.192)

Az impulzusátviteli függvény együtthatóinak behelyettesítésével a mintavételes állapotegyenlet:

 

(2.193)

 

(2.194)

Az impulzusátviteli függvény számítása állapottér leírással (LabVIEW mintapélda)
2.23. ábra - Az impulzusátviteli függvény számítása állapottér leírással (LabVIEW mintapélda)


Az impulzusátviteli függvény számítása állapottér leírással (LabVIEW mintapélda adatok)
2.24. ábra - Az impulzusátviteli függvény számítása állapottér leírással (LabVIEW mintapélda adatok)


Az impulzusátviteli függvény számítását megvalósító blokkdiagram állapottér leírással (LabVIEW mintapélda diagram panel)
2.25. ábra - Az impulzusátviteli függvény számítását megvalósító blokkdiagram állapottér leírással (LabVIEW mintapélda diagram panel)


2.5. Transzformációk a mintavételes rendszerekben

2.5.1. Az impulzusátviteli függvény (tf) transzformációi

2.5.1.1. Az impulzusátviteli függvény állandósult állapotbeli erősítése

Az impulzusátviteli függvényt z növekvő hatványai szerint felírva

 

(2.195)

A Z-transzformáció végérték tételét alkalmazva

 

(2.196)

Ha a bemenő jel 1(t), akkor állandósult állapotban az egységnyi nagyságú bemenő jelre adott válaszfüggvényből megkapjuk A p_mintavételes -t, a G(z) impulzusátviteli függvény állandósult állapotbeli erősítését.

 

(2.197)

A G(z) impulzusátviteli függvényben – mind a számlálóban, mind a nevezőben – az z és z magasabb kitevős hatványai mind az egy (1) értékhez tartanak, ezért

 

(2.198)

A G(z) impulzusátviteli függvény állandósult állapotbeli erősítése (A p_mintavételes ) az impulzusátviteli függvény számlálója együtthatóinak összege, osztva a nevező együtthatóinak összegével.

Az állandósult állapotbeli erősítés meghatározására LabVIEW MathScript-ben a dcgain() függvény használható:

 

dcgain (sys),

(2.199)

ahol

 

dcgain

az állandósult állapotbeli erősítés meghatározása függvény elnevezése,

 

sys

a vizsgált rendszer átviteli függvénye LabVIEW Matscript-ben (impulzusátviteli függvény vagy mintavételes állapotváltozós alak).

Mintapélda:

Egy polinomiális alakú impulzusátviteli függvénnyel megadott rendszer állandósult erősítési tényezőjét szeretnénk meghatározni.

A h a mintavételi időtartam, amely mintavételes rendszer esetén nem nulla!

NUM=[1]
DEN=[1, -0.5, 0.6, -0.5]
h=0.3
 
sys=tf(NUM, DEN, h)
Ap_mintaveteles=dcgain(sys)
 
 
 
>>
NUM =
 
           1     
 
DEN =
 
           1       -0.5      0.6     -0.5     
 
h =
 
           0.3     
 
Transfer Function  
 
Input:1 Output:1
 
            1,000             
------------------------------
1,000z^3-0,500z^2+0,600z-0,500
 
 
 
Sampling time:  0,300000
 
Ap_mintaveteles =
 
           1.6667     
 

2.5.1.2. Impulzusátviteli függvény transzformációja zérus-pólus-erősítés alakból polinomiális alakba

A zérus-pólus-erősítés impulzusátviteli függvény a következő alakú:

 

(2.200)

Az átalakításnál a gyöktényezős alakban felírt számlálóból z hatványainak megfelelő polinomiális alakot hozunk létre, majd a számlálóban szereplő polinom minden együtthatóját megszorozzuk a zérus-pólus-erősítés alakú impulzusátviteli függvény K d erősítési tényezővel.

Hasonlóan elvégezzük a nevező z hatványainak megfelelő polinom előállítását is, ezek után rendelkezésünkre állnak a polinomiális alakú impulzusátviteli függvény együtthatói.

 

(2.201)

A zérus-pólus-erősítés alakú impulzusátviteli függvényből a polinomiális alakú impulzusátviteli függvény alakba az átalakítás következő LabVIEW MathScript függvénnyel végezhető el:

 

[d, e] = zpk_to_tf (a, b, c),

(2.202)

ahol

 

zpk_to_tf

a zérus-pólus-erősítés alakú impulzusátviteli függvényből a polinomiális alakú impulzusátviteli függvény átalakítást végző függvény neve LabVIEW MatScript-ben,

 

a

a zérus-pólus-erősítés alakú impulzusátviteli függvény zérusai,

 

b

a zérus-pólus-erősítés alakú impulzusátviteli függvény pólusai,

 

c

a zérus-pólus-erősítés alakú impulzusátviteli függvény erősítése (Kd), amely skalár érték,

 

d

a polinomiális alakú impulzusátviteli függvény számlálójában a z hatványok együtthatói,

 

e

a polinomiális alakú impulzusátviteli függvény nevezőjében a z hatványok együtthatói.

Mintapélda:

Egy zérusaival, pólusaival és erősítési tényezőjével megadott impulzusátviteli függvényt sys_zpk_d-t szeretnénk átalakítani polinomiális impulzusátviteli függvény alakra sys_poly_d-re.

A h a mintavételi időtartam, amely mintavételes rendszer esetén nem nulla!

zeros_d=[0.26]
poles_d=[0.1,  0.2,  0.33]
k_d = [1]
h=0.3
 
sys_zpk_d=zpk(zeros_d, poles_d, k_d,  h)
[NUM_d, DEN_d] = zpk_to_tf(zeros_d, poles_d, k_d)
sys_poly_d=tf(NUM_d, DEN_d, h)
step(sys_poly_d, 5)
sys_zpk_d = zpk(zeros_d, poles_d, k_d,  h)
[NUM_d, DEN_d] = zpk_to_tf(zeros_d, poles_d, k_d)
sys_poly_d=tf(NUM_d, DEN_d, h)
step(sys_poly_d, 5)
 
 
zeros_d =
 
           0.26     
 
poles_d =
 
           0.1       0.2       0.33     
 
k_d =
 
           1     
 
h =
 
           0.3     
 
Zero-Pole-Gain Model  
 
Input:1 Output:1
 
     1,000(z-0.26)       
-------------------------
(z-0.1) (z-0.2) (z-0.33) 
 
 
 
Sampling time:  0,300000
 
NUM_d =
 
           1        -0.26     
 
DEN_d =
 
           1          -0.63        0.119      -0.0066     
 
Transfer Function  
 
Input:1 Output:1
 
         1,000z-0,260         
------------------------------
1,000z^3-0,630z^2+0,119z-0,007
 
 
 
Sampling time:  0,300000
 
 

A sys_poly_d impulzusátviteli függvény egységugrás bemenetre adott válaszfüggvénye
2.26. ábra - A sys_poly_d impulzusátviteli függvény egységugrás bemenetre adott válaszfüggvénye


2.5.1.3. Impulzusátviteli függvény transzformációja állapottér modell alakból polinomiális alakba

Az állapottér alakban felírt rendszer Z-transzformáció után a következő egyenleteket eredményezi:

 

(2.203)

 

(2.204)

Az állapotegyenletből (2.203) kifejezhetjük az állapotváltozók vektorát. Amennyiben az állapotváltozók kezdeti értéke zérus (), a számítás egyszerűsödik.

 

(2.205)

 

(2.206)

Az így kifejezett állapotváltozó vektort behelyettesíthetjük a kicsatolási egyenletbe, hogy megkapjuk a kimenő jel Laplace–transzformáltját:

 

(2.207)

A kapott kifejezés jobb oldalán kiemelhetjük a bemenő jel U(z)-t és eloszthatjuk vele az egyenlet mindkét oldalát, hogy megkapjuk a SISO rendszer impulzusátviteli függvényét az állapottér modell segítségével:

 

(2.208)

Mintapélda:

Állapottér alakban mátrixokkal megadott rendszert szeretnénk átalakítani polinomiális impulzusátviteli függvény alakra sys_poly_d-re (LabVIEW MathScript-ben).

A h a mintavételi időtartam, amely mintavételes rendszer esetén nem nulla!

 

Ad = [ 0.9843,   0.2799,   0.0277;
      -0.1386,   0.818,    0.1413;
      -0.7065,  -0.9865,   0.1114]
Bd =[0.0031
     0.0277
     0.1413]
Cd = [1,  0,  0]
Dd = [0]
h=0.3
 
sys_ss_d = ss(Ad, Bd, Cd, Dd, h)
[sys_poly_d] = tf(sys_ss_d)
 

 

 

>>
Ad =
 
           0.9843      0.2799      0.0277     
          -0.1386      0.818       0.1413     
          -0.7065     -0.9865      0.1114     
 
Bd =
 
           0.0031     
           0.0277     
           0.1413     
 
Cd =
 
           1      0      0     
 
Dd =
 
           0     
 
h =
 
           0.3     
 
State Space Model  
 
a
 
  0.9843   0.2799   0.0277
  -0.1386  0.818    0.1413
  -0.7065  -0.9865  0.1114
         
b
 
  0.0031
  0.0277
  0.1413
        
c
 
  1  0  0
   
d
 
  0
   
 
Sampling time:  0,300000
 
 
 
 
 
Transfer Function  
 
Input:1 Output:1
 
    0,003z^2+0,009z+0,001     
------------------------------
1,000z^3-1,914z^2+1,204z-0,223
 
 
 
Sampling time:  0,300000

2.5.2. Zérus-pólus-erősítés függvény (zp) transzformációi

2.5.2.1. Zérus-pólus függvény erősítése (Kd)

Az impulzusátviteli függvényt z pozitív hatványaival felírva

 

(2.209)

Meghatározva a számláló m darab és a nevező n darab gyökét, felírhatjuk a G(s) impulzusátviteli függvény gyöktényezős alakját. Mivel a gyökök meghatározásánál a legmagasabb fokú tagok együtthatóinak mind a számlálóban, mind pedig a nevezőben 1-nek kell lennie. Így a számlálóból és a nevezőből ki kell emelni a legmagasabb z hatványok együtthatóit- ezek hányadosa lesz K d az erősítés értéke.

 

(2.210)

 

(2.211)

2.5.2.2. Polinomiális alakú impulzusátviteli függvény átalakítása zérus-pólus-erősítés alakúvá

A polinomiális alakú impulzusátviteli függvény a következő függvénnyel írható le:

 

(2.212)

Az átalakításnál kiemeljük a számlálóból és a nevezőből z legmagasabb hatványainak együtthatóit b md -et és a nd -et. A pólus-zérus-erősítés impulzusátviteli függvény K d erősítési tényezője, melynek meghatározását a 2.5.2.1. szakasz - Zérus-pólus függvény erősítése (Kd) fejezetben ismertettük. Ezután meghatározzuk a számláló és a nevező gyökeit, és felírjuk az impulzusátviteli függvény gyöktényezős alakját a K d erősítési tényezővel.

 

(2.213)

A polinomiális alakú impulzusátviteli függvényből zérus-pólus-erősítés impulzusátviteli függvény alakba az következő függvénnyel történik az átalakítás LabVIEW MathScript-ben:

 

[c, d, e] = tf_to_zpk (a, b)

(2.214)

ahol

 

tf_to_zpk

a polinomiális alakú impulzusátviteli függvény függvényből zérus-pólus-erősítés alakú impulzusátviteli függvény alakba az átalakítást végző függvény neve,

 

a

a polinomiális alakú impulzusátviteli függvény számlálójában az z hatványok együtthatói,

 

b

a polinomiális alakú impulzusátviteli függvény nevezőjében az z hatványok együtthatói,

 

c

a zérus-pólus-erősítés alakú impulzusátviteli függvény zérusai,

 

d

a zérus-pólus-erősítés alakú impulzusátviteli függvény pólusai,

 

e

a zérus-pólus-erősítés alakú impulzusátviteli függvény erősítése (Kd), amely skalár érték.

Mintapélda:

Egy polinomiális impulzusátviteli függvényt sys_poly_d-t szeretnénk átalakítani zérusaival, pólusaival és erősítési tényezőjével megadott impulzusátviteli függvény alakra sys_zpk_d-re (LabVIEW MathScript-ben).

A h a mintavételi időtartam, amely mintavételes rendszer esetén nem nulla!

NUM_d = [0.14,  0.256]
DEN_d = [0.8,  0.72,  0.3]
h=0.3
 
sys_poly_d = tf(NUM_d, DEN_d, h)
[zeros_d, poles_d, kd] = tf_to_zpk(NUM_d, DEN_d)
sys_zpk=zpk(zeros_d, poles_d, kd, h)
 
 
 
>>
NUM_d =
 
           0.14       0.256     
 
DEN_d =
 
           0.8       0.72      0.3      
 
h =
 
           0.3     
 
Transfer Function  
 
Input:1 Output:1
 
    0,140z+0,256     
---------------------
0,800z^2+0,720z+0,300
 
 
 
Sampling time:  0,300000
 
zeros_d =
 
          -1.8286     
 
poles_d =
 
          -0.45 + 0.4153i    
          -0.45 - 0.4153i    
 
kd =
 
           0.175     
 
 
Zero-Pole-Gain Model  
 
Input:1 Output:1
 
        0,175(z+1.8286)         
--------------------------------
(z+0.45-0.4153i)(z+0.45+0.4153i)
 
 
 
Sampling time:  0,300000
 
 

 

2.5.2.3. Állapottér modell alakú impulzusátviteli függvény átalakítása zérus-pólus-erősítés alakúvá

A 2.208 egyenlettel megadtuk, hogyan lehet állapottér alakból polinomiális impulzusátviteli függvény alakba átalakítani a rendszerleíró egyenletet. Ebben az esetben is ezt kell alkalmaznunk. Az előző 2.5.2.2. szakasz - Polinomiális alakú impulzusátviteli függvény átalakítása zérus-pólus-erősítés alakúvá fejezetben bemutatott eljárással meghatározhatjuk a impulzusátviteli függvény polinomiális alakjából a zérus-pólus-erősítés impulzusátviteli függvény alakot.

Mintapélda:

Állapottér alakban mátrixokkal megadott rendszert szeretnénk átalakítani zérus-pólus-erősítés alakú impulzusátviteli függvény alakra sys_zpk_d-re (LabVIEW MathScript-ben).

A h a mintavételi időtartam, amely mintavételes rendszer esetén nem nulla!

 
Ad =[ 0,  1,  0 
      0,  0,  1
     -5, -6, -5]
Bd = [0;  0;  1]
Cd = [1,  0,  0]
Dd = [0]
h=0.3
 
[zeros_d, poles_d, kd]=ss_to_zpk(Ad, Bd, Cd, Dd,  h)
sys_zpk_d=zpk(zeros_d, poles_d, kd,  h)
 
 
 
>>
Ad =
 
           0      1      0     
           0      0      1     
          -5     -6     -5     
 
 
Bd =
 
           0     
           0     
           1     
 
Cd =
 
           1      0      0     
 
Dd =
 
           0     
 
h =
 
           0.3     
 
zeros_d =
 
          empty matrix 0 by 1
 
poles_d =
 
          -0.6214 + 0.9719i    
          -0.6214 - 0.9719i    
          -3.7573 + 0i         
 
kd =
 
           1     
 
Zero-Pole-Gain Model  
 
Input:1 Output:1
 
                     1,000                     
-----------------------------------------------
(z+3.7573) (z+0.6214-0.9719i)(z+0.6214+0.9719i)
 
 
 
Sampling time:  0,300000
 
 

2.5.3. Állapottér (ss) transzformációk

2.5.3.1. Átalakítás polinomiális alakú impulzusátviteli függvényből állapottér modellbe

A polinomiális alakú impulzusátviteli függvényből a fázisváltozós alakú állapottér modell létrehozását a 2.5.3.1. szakasz - Átalakítás polinomiális alakú impulzusátviteli függvényből állapottér modellbe fejezetben mutattuk be. Ezt a számítási eljárást alkalmazva állapottér számításra alkalmas modellt hozhatunk létre.

Mintapélda:

Polinomiális impulzusátviteli függvény alakról hozzunk létre állapottér alakú mátrixokat, melyekkel  leírjuk a vizsgált rendszert (LabVIEW MathScript-ben)!.

A h a mintavételi időtartam, amely mintavételes rendszer esetén nem nulla!

NUM_d = [0.445]
DEN_d = [0.132,  0.512,  0.36,  0.5]
h=0.3

sys_poly_d = tf(NUM_d, DEN_d, h)
[Ad, Bd, Cd, Dd] = tf_to_ss (NUM_d,  DEN_d)
 
 
 
>>
NUM_d =
 
           0.445     
 
DEN_d =
 
           0.132      0.512      0.36       0.5       
 
h =
 
           0.3     
 
Transfer Function  
 
Input:1 Output:1
 
            0,445             
------------------------------
0,132z^3+0,512z^2+0,360z+0,500
 
 
 
Sampling time:  0,300000
 
Ad =
 
          -3.8788     -2.7273     -3.7879     
           1           0           0          
           0           1           0          
 
Bd =
 
           1     
           0     
           0     
 
Cd =
 
           0           0           3.3712     
 
Dd =
 
           0     
 

2.5.3.2. Átalakítás zérus-pólus-erősítés alakú impulzusátviteli függvényből állapottér modellbe

Ennél az átalakítási eljárásnál felhasználunk korábban bemutatott transzformációs eljárásokat. Első lépésben a zérus-pólus-erősítés alakú impulzusátviteli függvényből polinomiális impulzusátviteli függvény alakot hozunk létre, majd alkalmazzuk a 2.5.3.1. szakasz - Átalakítás polinomiális alakú impulzusátviteli függvényből állapottér modellbe fejezetben bemutatott eljárást.

Mintapélda:

A zérus-pólus-erősítés alakú impulzusátviteli függvényből hozzunk létre állapottér alakú mátrixokat, melyekkel leírjuk a vizsgált rendszert (LabVIEW MathScript-ben)!

A h a mintavételi időtartam, amely mintavételes rendszer esetén nem nulla!

zeros_d = [-0.123,    0.32,    -0.1]
poles_d = [+0.4,  +0.456,  +0.3]
kd = 3
h=0.3
 
sys_zpk_d = zpk(zeros_d, poles_d, kd,  h)
[Ad, Bd, Cd, Dd] = zpk_to_ss(zeros_d, poles_d, kd)
step(sys_zpk_d, 10)
 
 
 
>>
zeros_d =
 
          -0.123      0.32      -0.1       
 
poles_d =
 
           0.4        0.456      0.3       
 
kd =
 
           3     
 
h =
 
           0.3     
 
Zero-Pole-Gain Model  
 
Input:1 Output:1
 
3,000(z+0.123) (z-0.32) (z+0.1) 
--------------------------------
   (z-0.4) (z-0.456) (z-0.3)    
 
 
 
Sampling time:  0,300000
 
Ad =
 
           1.156      -0.4392      0.0547     
           1           0           0          
           0           1           0          
 
Bd =
 
           1     
           0     
           0     
 
 
Cd =
 
           3.177      -1.4948      0.1524     
 
Dd =
 
           3     
 
 

A sys_zpk_d impulzusátviteli függvény egységugrás bemenetre adott válaszfüggvénye
2.27. ábra - A sys_zpk_d impulzusátviteli függvény egységugrás bemenetre adott válaszfüggvénye


3. fejezet - A diszkrét esemény szimulátor

Tartalom
3.1. A DES LabVIEW programrendszer
3.1.1. Miért szükséges a LabVIEW programrendszer kiegészítése Diszkrét Esemény Objektumokkal?
3.1.2. Mi szükséges ahhoz, hogy egy Diszkrét Esemény Szimulátort létrehozzunk?
3.1.2.1. Szimulációs idő és eseménykezelés
3.1.2.2. Véletlen szám generátorok
3.1.2.2.1. Jelölések
3.1.2.2.2. A leggyakoribb folytonos eloszlásfüggvények
3.1.2.2.3. Egyenletes eloszlás (Uniform Distribution)
3.1.2.2.4. Normális eloszlás (Normal Distribution)
3.1.2.2.5. Háromszög eloszlás (Triangle Distribution)
3.1.2.2.6. Exponenciális eloszlás (Exponential Distribution)
3.1.2.2.7. Erlang eloszlás (Erlang Distribution)
3.1.2.2.8. Empirikus eloszlás (Empirical Distribution)
3.1.2.2.9. Általános eloszlás függvény definiálása
3.1.2.3. Diszkrét Esemény objektum típusok
3.1.2.4. Diszkrét Esemény Objektumok összekapcsolása
3.1.2.5. Diszkrét Esemény Objektum kimeneti statisztikai adatai
3.1.3. Első mintapélda: Az M/M/1 rendszer modellje a LabVIEW DES rendszerben
3.1.3.1. A rendszermodell leképezése
3.1.3.2. A Source objektum felépítése és feladata
3.1.3.3. A Sink objektum felépítése és feladata
3.1.3.4. A Buffer objektum felépítése és feladata
3.1.3.5. A Machine objektum felépítése és feladata
3.1.3.5.1. Az Entity objektum felépítése és feladata (Entitás objektum)
3.1.4. Második mintapélda: Több kimeneti pont egyesítésének biztosítása (Join művelet)
3.1.4.1. A Join objektum felépítése és feladata
3.1.5. Harmadik mintapélda: Több bemeneti pontból történő választás biztosítása megadott szabály szerint (Select művelet)
3.1.5.1. A Selector objektum felépítése és feladata
3.1.6. Negyedik mintapélda: Több entitás elhelyezése egy másik (Package) entitásban (Pack művelet), illetve több entitás kibontása egy másik (Package) entitásból (UnPack művelet)
3.1.6.1. A Pack objektum felépítése és feladata
3.1.6.2. Az UnPack objektum felépítése és feladata
3.2. A szimulációs rendszer objektumainak közös tulajdonságai (Global Variables)
3.2.1. Az "ObjectList" globalis változók
3.2.2. A "TaskList" globalis változók
3.3. A szimulációs rendszer eljárásai
3.4. A szimulációs program továbbfejlesztésének lehetőségei
3.4.1. További statisztikai számítások beépítése a DES objektumokba
3.4.2. Új attribútumok létesítése és hatásuk beépítése a DES objektumokba
3.4.3. Új DES objektumtípusok létrehozása

A Diszkrét Események Szimulációja (DES) abból a modellezési igényből ered, hogy a folyamatosan működő rendszerek mellett vannak olyan rendszerek, amelyek csak időszakosan működnek . Az ilyen típusú rendszerek állapotának megváltoztatását a rendszert ért diszkrét (csak az adott időpontban ható) események befolyásolják.

Az ilyen típusú rendszerek események időpontjától eltérő időpontokban nem változtatják állapotukat!

(Időben) diszkrét eseménynek nevezzük azt a bemeneti jelet, amely egy várható időpillanatban fog jelentkezni, de a pontos időpontja nem adható meg. Ebből már látszik, hogy ezekben a szimulációs modellekben az események véletlenszerűen jelennek meg, illetve a véletlenszerűségüknek mindig van valamilyen jellegzetessége.

Ilyen jellegzetesség például az, hogy az egymás után megjelenő események közötti időtartam milyen valószínűségi sűrűség függvénynek felel meg. Ilyen valószínűségi sűrűség függvények lehetnek például normál eloszlás, exponenciális vagy más típusú sűrűség eloszlás , amely ebben az esetben azt adja meg, hogy az események közötti időtartam milyen valószínűséggel jelenhet meg következő eseményidőpontként. Ezeket az eseményeket időpont szerint rendezve kell tárolni, hogy így biztosítsuk a végrehajtás időbeni sorrendjét. Az egyes események más további eseményeket hozhatnak létre, amelyeknek bele kell kerülniük az események időpontjait tartalmazó listába. Ez lesz a Feladatok listája (TaskList) .

Az események és azok valószínűségi változók szerinti működése mellett további nagyon fontos elem az ilyen típusú szimulátoroknál, hogy magát az eseményt vagy az esemény megjelenéseként modellezett tulajdonságokat egy virtuális vagy valóságos elemként jelenítjük meg. Ezt az elemet entitásnak (Entity) nevezzük.

Például egy diszkrét esemény szimulációs rendszermodell lehet, amikor egy autógyárban az autók összeszerelésének folyamatát vizsgáljuk. Ebben az esetben az entitások az egyes autóalkatrészek , amelyekből részrendszereket és végül a teljes autót összeszereljük. A rendszermodell célja, hogy a segítségével megállapítsuk, mennyi idő alatt készül el az összeszerelés (a legrosszabb késleltetési feltételeket számításba véve).

Hasonlóan ilyen ”anyagként” megjelenő entitás van abban a közlekedési diszkrét esemény szimulációs modellben, amelyben egy városi közlekedés egyes útvonalainak forgalmát szimuláljuk, az út forgalmi átbocsájtó képességével (szélesség, sávok száma, a felület minősége) és az aktuális forgalom tulajdonságaival (speciális eseményekkel karambol, útlezárás stb,). Ebben az esetben a forgalomban résztvevő autók az entitások .

A forgalmi rendszermodell vizsgálatának az a célja, hogy a legforgalmasabb időszakban is biztosítsuk az egyes útvonalakon a megfelelő sebességű forgalmat, amelyet a forgalmi lámpák átkapcsolási programjainak változtatásával, valamint rendőri útelterelésekkel valósíthatunk meg.

Más területről vett mintapéldával a számítógép hálózatok egyes elemei közötti adatforgalom (lásd Internet) szintén véletlenszerűen megjelenő eseményekkel modellezhetők. Itt az egyes hálózatbeli számítógépelemek között továbbított - adott hosszúságú kezdeti azonosító résszel, információs tartalommal rendelkező adatcsoport- adatcsomag az entitás elem . Egy ilyen adatcsomag eljuttatása egyik csomópontból egy másik hálózatbeli csomópontba a hálózat topológiájától, a hálózat egyes elemeinek üzemkész állapotától és az információ átbocsájtó képességétől függ. A rendszermodell segítségével a számítógép hálózat egyes csomópontjai közötti átlagos információ-késleltetési időtartamot lehet meghatározni.

Visszatérve az entitáshoz, ebben az esetben az az adatcsomag, amelyet mint csomagot juttatunk el a hálózat csomópontjaiba nem tekinthető konkrét „anyagnak”. A feladat megfogalmazása szerint viszont ezekkel a nem anyagi jellegű adatcsomagokkal lehet modellezni az egyes csomópontokban a rendelkezésre álló tároló helyek foglaltságát, illetve az egyes átviteli vonalak villamos jeltovábbító tulajdonságait, figyelembe véve a jeltovábbítás sebességét.

Következő mintapéldánkban eljutunk az entitások másik csoportjához, amikor az entitás nem anyag, hanem információ . A rendszermodell ebben az esetben egy repülőtéri csomagfelvételi rendszer, amelynél meg kell mondanunk, hogy az utasforgalom „hosszú várakozást elkerülő” lebonyolításához adott időszakban hány darab csomagfelvevő ablaknak kell működnie. Ez biztosítja ugyanis, hogy az utasok elérjék az egyes repülőgépjáratokat. Alapvetően nem tudjuk, hogy adott időszakban hány darab utas érkezik, illetve milyen ezeknek az utasoknak a „csomagfeladási szokása” (rövid vagy hosszú időtartammal adják fel csomagjaikat az utazás megkezdése előtt), ezért egy olyan rendszermodellt kell létrehozni, amely az egyes utasok csomagfeladási szándéka közötti időtartam alapján nyitja ki vagy zárja be a csomagfelvételi ablakokat. Az entitás tehát az az információ (időtartam) amely megadja, hogy milyen sűrűséggel érkeznek az utasok.

Az egyes események „természetes véletlenségét” azaz a valós állapothoz legjobban hasonlító véletlenszerű viselkedését speciális tulajdonságú véletlenszám generátorok segítségével állíthatjuk elő. Ezen speciális tulajdonságú véletlenszám generátorok „őseleme” az az egyenletes eloszlású véletlenszám generátor , amely azonos valószínűséggel generálja a különböző véletlen számokat adott értékhatár között.

Ez azt jelenti, hogy ha például létrehozunk egy [0..1] értékhatárokkal rendelkező egyenletes eloszlású véletlenszám sorozatot és az értékekből egy hisztogramot rajzolunk, akkor nagyszámú adat esetén a hisztogram minden értékhatár között (hozzávetőleg) azonos nagyságú oszloppal fog rendelkezni. Ebből az egyenletes eloszlású véletlenszám generátorból tetszőleges sűrűségfüggvénnyel rendelkező véletlenszám gerátort lehet létrehozni, ezek leírását a 3.1.2.2. szakasz - Véletlen szám generátorok fejezetben mutatjuk be.

Egy diszkrét esemény szimulátor modell megvalósításának következő lépése, hogy fel kell írni a rendszermodell egyenleteit. Alapvetően állapottér modellből indulhatunk ki, amelynek állapotváltozói és ezek alapján számított kimeneti jelei csak az események időpontjában változnak. Az állapottér modell a néhány elemet tartalmazó rendszerek esetén is nagyon bonyolult, mert az állapotegyenletek időfüggőek, és együtthatóik valószinűségi változók sűrűségfüggvényei alapján keletkeznek a számítás időpillanatában.

Ennek következtében a rendszermodellt ezeknél a rendszereknél alapelemek és ezek összekapcsolásával magvalósított számítási programmal hozzuk létre.

Ez azt jelenti, hogy a diszkrét események leírásához szükséges alapelemeket ( Source (Forrás), Buffer (Tároló), Machine (Munkavégző elem), Sink (Nyelő) ), objektumokként definiáljuk, a rendszer modellben ezekből a különböző típusú objektumokból tetszőleges mennyiséget alkalmaznak.

Az diszkrét esmények rendszer modelljében felhasznált elemek mindegyike (a Tároló és a Nyelő objektum kivételével) rendelkezik olyan véletlenszám generálási képességgel, amellyel adott valószínűségi változó szerinti eloszlásfüggvényt képesek szimulálni.

Ilyen feldata van a Source (Forrás) objektumnak, amely meghatározott időközönként egy entitást bocsájt ki, ezzel egy (anyag vagy információ tulajdonságú) új eseményt hoz létre. Ez az esemény végighalad a rendszermodell egyes (nem mindegyik) elemén, és ezekben az elemekben különböző okok miatt várakozni kényszerül.

A Buffer (Tároló) elemben lehetőség van a folyamatosan érkező entitásokat átmeneti tárolására. Ez az autóipari példát véve azt jelenti, hogy az összeszereléshez megérkezett alkatrészeket azok beszereléséig tárolni kell. Nem mindegy, hogy az alkatrész tárolása egy raktárban történik, vagy az összeszerelés helyén (ahol erre általában nem áll rendelkezésre elegendő hely), és csak akkor szállítjuk az összeszereléshez a megfelelő mennyiségű alkatrészt, ha azt a megérkezéskor azonnal be is szerelik. A tároló elem ezt az átmeneti tárolási műveletet modellezi.

A repülőtéri csomagbeadási rendszerben az utasok várakozási sora az a tároló (hely), ahol eseményre (csomagbeadásra) várakozó csomagokat átmenetileg tároljuk a check-in-re várakozó utasok sorában.

Ugyanilyen tároló tulajdonságú elemek találhatók a számítógépes hálózati rendszerben is, ahol egy művelet végrehatási feltételének létrejöttéig átmenetileg tárolni kell az információ csomagot.

A Machine (Munkavégző elem) modellezési feladata, hogy az entitáson vagy az entitással elvégzett műveletek szükséges időtartamát modellezze. Ez a gyakorlatban azt jelenti, hogy egy adott típusú véletlen szám generátor segítségével meghatározza a művelet végrehajtásához szükséges időtartamot és elhelyez egy „új eseményt” az események listájában, hogy csak akkor fogalkozzon vele ismét a rendszer (addig nem), amikor már elvégezte a rá bízott feladatot.

Egyszerűen megfogalmazva a Munkavégző elem egy véletlen időtartammal késlelteti az entitás továbbhaladását.

Az autóipari összeszerelésnél ezzel az elemmel tudjuk modllezni az összeszerelés időtartamát, a forgalmi rendszer vizsgálatánál az út megtételéhez szükséges időtartamot, a csomagbeadási rendszernél pedig, hogy mennyi idővel korábban kell megérkeznünk a repülőtérre, hogy a csomagunkat fel tudjuk adni, és ne késsük le a repülőgép indulási időpontját.

A Sink (Nyelő) elem feladata, hogy az entitást, amelyen minden feladatot elvégeztünk eltávolítsa a rendszerből.

Az autó összeszerelését befejezve a kész autó el kell vinni az összeszerelés helyéről, és el kell juttatni egy másik rendszerbe, amely a tárolását végzi. A forgalmi rendszer példában a jármű megérkezik a célállomásra ezzel a feladat befejeződőtt megadott helyről megadott helyre eljuttatta a járművet (áruval, utassal…). A repülőtéri csomagbeadási rendszernél megtörtént a csomag beadása, az eljárás befejeződött, jöhet a következő feladat az útlevélellenőrzés. Az informatikai rendszernél hasonlóan az eddigi példákhoz az információ csomag megérkezése az adott csomópontba a feladat elvégzését (befejezését) jelenti.

Ha ezeket az elemtípusokat a vizsgált rendszermodell követelményeinek megfelelően összekapcsoljuk, akkor az így létrejött (számítási) hálózat segítségével tulajdonképpen a rendszer vizsgálathoz szükséges rendszeregyenleteket valósítjuk meg.

A rendszer modellezése tehát hasonlóan a blokk-orientált rendszermodellezéshez úgy történik, hogy elemi tulajdonságú modellelemek segítségével nagy bonyolultságú modellt hozunk létre, amelyben az ismétlődő feladatokat alprogramok segítségével tudjuk leírni.

Más (nyelvi) megfogalmazásban az alapelemekből és ezek összekapcsolásából létrejött rendszermodellt állapotgépnek is szokták nevezni, mivel a véges állapotok között történő állapotátmenetek megvalósításához szükséges időtartamokat modellezi.

A felsorolt feladatokat kezelő és megoldó eszközt, amelyek entitások forgalmát valósítja meg adott típusú elemekből összekapcsolt hálózatban, és meghatározza az entitások adott pontok közötti átjutásának időtartamát Diszkrét Esemény Szimulátornak (DES) nevezzük.

A DES olyan szimulációs keretprogram, amellyel lehetőségünk van a DES rendszermodell elemeinek és ezek összekapcsolásának leírására. A rendszermodellben megjelenő eseményeket idő sorrendben tárolunk, és biztosított az aktuális esemény hatásainak meghatározása a különböző modellelemekben. A modell a véletlen eseményeket az adott esemény valószínűségi sűrűségfüggvényének típusával és annak aktuális paramétereivel írja le.

A DES szimulátor tehát egy olyan rendszermodellezési eljárás, amely időben valószínűségi változók szerint változó együtthatójú egyenletekkel írható le. Ezeket az egyenleteket nagyon nehezen lehetne függvények formájában megadni, mivel az adott bemeneti események esetén történő számításokat (valószínűségi változók feltételezett értékeivel) csak a végeredmény bizonyos hibával történő közelítéseként lehet meghatározni.

A DES szimulátor segítségével olyan eredményeket tudunk meghatározni, amelyeknek van várható értéke és szórása, valamint a koincidencia tényező megadásával megkapjuk az eredmények várható értékének határait is.

A LabVIEW DES diszkrét események megadott tulajdonságú blokkok segítségével leírható folyamatának szimulációja (diszkrét sztochasztikus állapotváltozókkal leírható folyamatok szimulációjának keretrendszere).

A keretrendszer segítségével több, egymástól független, párhuzamos, eseményekkel vezérelt folyamat szimulációja valósítható meg, amelyek között információforgalom lehetséges.

A keretrendszerben megengedett az objektumok soros, párhuzamos és visszacsatolásos összekapcsolása , tetszőleges mennyiségű és mélységű kapcsolattal.

A keretrendszer objektumorientált felépítésű. Mind a folyamat szimulálására szolgáló különböző tulajdonságú blokkok, mind pedig a információt hordozó entitások azonos felépítésű objektumok.

A keretrendszerrel készített programok alprogramként is elmenthetők . A megvalósított alprogramokat tetszőleges számban, tetszőleges bemeneti paraméterekkel alkalmazhatjuk a szimulációs programban.

A szimulációs keretrendszer a következő programstruktúrában működik:

A szimulációs rendszer általános blokkdiagramja
3.1. ábra - A szimulációs rendszer általános blokkdiagramja


3.1. A DES LabVIEW programrendszer

3.1.1. Miért szükséges a LabVIEW programrendszer kiegészítése Diszkrét Esemény Objektumokkal?

A LabVIEW programrendszert alapvetően időben diszkrét azonos (idő)lépésközű adatok mérésére, analízisére és megjelenítésére fejlesztették ki. Számos eljárással rendelkezik, amelyek megkönnyítik az adatok adott feltételek szerinti mérését, időbeni és jelszint alapján történő triggerelés alkalmazásával. Az analízishez szintén széleskörű eljáráskönyvtár áll rendelkezésre, amely lehetővé teszi, hogy akár idő-, akár frekvencia tartományban részletes jelanalízist valósítsunk meg. A programrendszer tehát alapvetően folytonos jelek digitális számítógéppel történő mintavételes feldolgozását képes elvégezni.

Rendelkezik olyan eljárásokkal is, amelyek segítik a sorok elemeinek kezelését: a (sor (queue) objektum létrehozása, új elem betöltése a sorba, elem kivétele a sorból, sor objektum megszüntetése. Ezek az eljárások, illetve még néhány a párhuzamos programozást segítő eljáráscsomagból (Notifier operations, Semaphore operations, Occurences) alapvetően nem olyan objektumok és eljárások, amelyekből könnyen össze lehetne állítani egy diszkrét eseményszimulációs modellt.

Ezért indítottunk el egy olyan fejlesztési irányt, amely az oktatás és a kutatás számára biztosít olyan objektumtípusokat, amelyekkel egyszerűen össze lehet állítani tetszőleges bonyolultságú, diszkrét eseménymodellt.

3.1.2. Mi szükséges ahhoz, hogy egy Diszkrét Esemény Szimulátort létrehozzunk?

3.1.2.1. Szimulációs idő és eseménykezelés

A legfontosabb feladat egy DES rendszerben az időpont adattal rendelkező esemény objektumok (Task) létrehozása, megadott feltételek szerint tárolása, illetve eltávolítása a rendszerből, ha az adott esemény már lezajlott. Az egyes esemény-objektumokat egy olyan másik objektumnak (TaskList) kell megfelelő módon tárolnia, és a megadott feltételek szerint szervezni a működését. A különböző DES rendszerek megvalósításánál különböző számú és feladatú eseménylista szerepelhet. A LabVIEW-ban megvalósított DES rendszerben egyetlen ilyen lista van, amely tartalmazza a szimulációs modellben keletkezett összes eseményt, idő szerinti növekvő sorrendben. Minden új esemény a növekvő idősorrend megtartásával, az idő szerinti megfelelő helyre kerül az esemény-objektumok listájában.

A Task objektum tulajdonságai
3.2. ábra - A Task objektum tulajdonságai


A TaskList objektum felépítése és tulajdonságai
3.3. ábra - A TaskList objektum felépítése és tulajdonságai


3.1.2.2. Véletlen szám generátorok

A szimulációs modellben különböző időzítési feladatok megoldásához számos véletlen szám generátor típus működését kell biztosítani a LabVIEW DES rendszerben. A véletlen szám generátorok a LabVIEW-ban elérhető 0 és 1 között egyenletes eloszlású véletlen szám generátorra épülnek. Ez a véletlen szám generátor az alapja a Constant, Uniform, Exponential, Normal, Triangle és a User Defined eloszlású véletlen szám generátor típusoknak. A véletlen szám generátorok meghívásukkor az adott eloszlás típusnak megfelelő paraméteres véletlen számot állítanak elő. Igény esetén további véletlen szám generátor típusok is készíthetők, amelyek problémamentesen illeszthetők a már korábban kifejlesztett modellelemekhez.

3.1.2.2.1. Jelölések

Sűrűség (Density) függvény=

f(x) > 0,         minden x-re

(3.1)

Eloszlás (Distribution)=

(3.2)

Átlag (Mean)

(3.3)

Szórás (Variance)

(3.4)

Annak a valószínűsége, hogy  x   A és B közé esik:

 

(3.5)

ahol

 

Pr()

valószínűség-függvény

 

f(x)

sűrűségfüggvény

 

A,B

x értékek

A sűrűségfüggvény diagramja és két pontja közé esés valószínűsége
3.4. ábra - A sűrűségfüggvény diagramja és két pontja közé esés valószínűsége


Sűrűségfüggvény meghatározása az eloszlásfüggvényből:

 

(3.6)

ahol

 

x

aktuális érték

 

f(x)

sűrűségfüggvény

 

F(x)

eloszlásfüggvény

A sűrűségfüggvény (kék) és eloszlásfüggvénye (piros)
3.5. ábra - A sűrűségfüggvény (kék) és eloszlásfüggvénye (piros)


Az eloszlásfüggvény meghatározása a sűrűségfüggvény segítségével:

 

(3.7)

ahol

 

x

aktuális érték

 

f(x)

sűrűségfüggvény

 

F(x)

eloszlásfüggvény

3.1.2.2.2. A leggyakoribb folytonos eloszlásfüggvények
  1. Egyenletes eloszlás (Uniform Distribution)

  2. Normál eloszlás (Normal Distribution)

  3. Háromszög eloszlás (Triangle Distribution)

  4. Exponenciális eloszlás (Exponential Distribution)

  5. Erlang eloszlás (Erlang Distribution)

  6. Empirikus eloszlás (Empirical Distribution)

3.1.2.2.3. Egyenletes eloszlás (Uniform Distribution)

Az egyenletes eloszlásnál a megadott minimum és maximum értékek között minden érték előfordulásának valószínűsége azonos. Ilyen valószínűségi változó típus (diszkrét értékekkel) a dobókockával dobott érték, ahol minden oldal előfordulásának valószínűsége azonos érték 1/6-od.

Az egyenletes eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)
3.6. ábra - Az egyenletes eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)


Az egyenletes eloszlás definíciós függvényei:

Sűrűség (Uniform Density) =

(3.8)

Eloszlás (Uniform Distribution) =

(3.9)

Átlag (Uniform Mean)=

(3.10)

Szórás (Uniform Variance)=

(3.11)

3.1.2.2.4. Normális eloszlás (Normal Distribution)

A normális eloszlás a valószínűségszámításban meghatározó szerepe van. A gyakorlatban előforduló számos valószínűségi változó normális eloszlású, vagy normális eloszlással közelíthető. Ha egy kísérlet kimenetelét nagyszámú, egymástól kevéssé függő vagy függetlenül ható körülmény befolyásolja úgy, hogy az egyes tényezők hatásai összeadódnak, akkor normális eloszlású valószínűségi változót kapunk.

A normális eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)
3.7. ábra - A normális eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)


A normális eloszlás definíciós függvényei:

Sűrűség (Normal Density)=

(3.12)

Eloszlás (Normal Distribution)=

NEM  LÉTEZIK  ZÁRT  ALAKBAN!

 

Átlag (Normal Mean)

(3.13)

Szórás (Normal Variance)

(3.14)

3.1.2.2.5. Háromszög eloszlás (Triangle Distribution)

A normális eloszlású valószínűségi változó, egyik közelítése.

A háromszög eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)
3.8. ábra - A háromszög eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)


A háromszög eloszlás definíciós függvényei:

Sűrűség (Triangle Density)=

(3.15)

Eloszlás (Triangle Distribution)=

(3.16)

Átlag (Triangle Mean)=

(3.17)

Szórás (Triangle Variance)=

(3.18)

ahol

 

Minimum érték (Minimum)

= a

 

Szokásos érték (Usual)

= c

 

Maximum érték (Maximum)

= b

3.1.2.2.6. Exponenciális eloszlás (Exponential Distribution)

Exponenciális eloszlásúnak tekinthetők bizonyos időtartamok. Például gépek véletlenszerű meghibásodásáig eltelt időtartam; várakozási idő; radioaktív atomok elbomlásáig eltelt idő. Az exponenciális eloszlás "örökifjú" tulajdonságú: ha egy egyed bizonyos kort megért, akkor úgy tekinthető, mintha akkor született volna, nem hat rá az öregedés.

Az exponenciális eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)
3.9. ábra - Az exponenciális eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)


Az exponenciális eloszlás definíciós függvényei:

Sűrűség (Exponential Density)=

(3.19)

Eloszlás (Exponential Distribution) =

(3.20)

Átlag (Exponential Mean)

(3.21)

Szórás (Exponential Variance)

(3.22)

3.1.2.2.7. Erlang eloszlás (Erlang Distribution)

Az Erlang eloszlás egy kevert stratégiát alkalmazó eloszlásfüggvény.

Ha K=1, akkor az eloszlás pontosan a negatív exponenciális eloszlás függvényére hasonlít.

Ha K tart a végtelenhez, akkor az eloszlás közelít a normál eloszlás alakjához.

Az Erlang eloszlás definíciós függvényei:

Sűrűség (Erlang Density)=

(3.23)

Eloszlás (Erlang Distribution)=

(3.24)

Átlag (Erlang Mean)=

(3.25)

Szórás (Erlang Variance)=

(3.26)

ahol

 

k

a felhasználó által felvett pozitív egész érték, amely az eloszlásfüggvény alakját

határozza meg.

Az Erlang eloszlás (k=2) sűrűségfüggvénye (kék)
3.10. ábra - Az Erlang eloszlás (k=2) sűrűségfüggvénye (kék)


Az Erlang eloszlás (k=3) sűrűségfüggvénye (kék)
3.11. ábra - Az Erlang eloszlás (k=3) sűrűségfüggvénye (kék)


Az Erlang eloszlás (k=5) sűrűségfüggvénye (kék)
3.12. ábra - Az Erlang eloszlás (k=5) sűrűségfüggvénye (kék)


3.1.2.2.8. Empirikus eloszlás (Empirical Distribution)

Kísérleti úton, mérési eredmények alapján megállapított valószínűségi sűrűség függvény alkalmazásának lehetőségét biztosítja. Az adott értékhatárokhoz tartozó valószínűségek öszegének 1.0-nak kell lennie. Ezt a valószínűségeket feldolgozó algoritmus normálással valósítja meg. A következő ábrán (3.13. ábra - Az empirikus eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)) bemutatott sűrűségfüggvénynél az 1.1 - 1.2 körötti értékek kiválasztásának valószínűsége nulla(0) értékű, (mert ilyen érték is lehet).

Az empirikus eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)
3.13. ábra - Az empirikus eloszlás sűrűségfüggvénye (kék) és eloszlásfüggvénye (piros)


Az empirikus eloszlás definíciós függvényei:

Sűrűség (Empirical Density)=

f(x)  táblázattal van megadva

(3.27)

Eloszlás (Empirical Distribution)=

F(x)  integrál érték a táblázat alapján

(3.28)

Átlag (Empirical Mean)=

az f(x)  táblázatból számítással

(3.29)

Szórás (Empirical Variance)=

az f(x)  táblázatból számítással

(3.30)

3.1.2.2.9. Általános eloszlás függvény definiálása
  • Az általános eloszlás függvény generálásához 0..1 közötti egyenletes eloszlású véletlen szám generátor szükséges.

  • Létrehozzuk a kívánt ELOSZLÁSFÜGGVÉNY-t, -> minden bemenő értékhez megadjuk annak előfordulási valószinűségét. Nulla valószínűséget is megadhatunk!

  • Képezzük ennek az eloszlásfüggvénynek az INVERZ FÜGGVÉNYÉT (analitikusan, numerikusan, táblázatosan).

  • A véletlen szám generátort az inverz függvény független változójaként alkalmazva, létrehoztuk a tetszőleges eloszlású véletlen szám generátort.

3.1.2.3. Diszkrét Esemény objektum típusok

A legfontosabb elemek a DES szimulátorban a különböző feladatot ellátó alap-objektumok. Ezek biztosítják, hogy segítségükkel felépíthessük a különböző szimulációs modelleket. A LabVIEW-DES szimulációs rendszerben alapvetően öt alapobjektum szerepel, amelyek alapjai más bonyolultabb működést megvalósító DES objektumoknak.

Az alapobjektumoknak biztosítania kell az anyag-, illetve információ mozgást megjelenítő Entity objektumok kibocsátását, fogadását, átmeneti tárolását, továbbhaladásának késleltetését és ha minden feladatot elvégzett, akkor a megszüntetését. A DES rendszer működését biztosító Entity objektumokon kívül vannak még olyan objektumok, amelyek megadott (időbeni) eloszlás szerinti Entity kibocsájtást végeznek, ezek a Source objektumok. Az Entity objektumok fogadását, és átmeneti tárolását a Buffer objektumok végzik, amelyek véges tárolási kapacitással képesek átmenetileg raktározni az Entitás-okat. A következő objektum a Machine, amely a bementére érkezett Entitást - megadott időbeni eloszlás szerint - képes magában tartani (késleltetni a továbbhaladását), és ezzel különböző időtartamokkal jellemzett műveletek időszükségleteit képes modellezni. Azokat az Entitásokat, amelyek elvégezték összes feladatukat és el kell távolítani a szimulációs modellből egy Sink típusú objektumba vezetünk, amelynek az a feladata, hogy a bemenetére érkezett Entitást kivegye az objektumok listájából, és megszüntesse, hogy ne végezhessen további feladatot.

A LabVIEW DES rendszerben az objektumok nevét két elemből állítja össze a rendszer. Minden objektum rendelkezik egy saját, önálló, egyedi névvel, illetve minden objektumnak van egy olyan névparamétere, amely megadja, hogy melyik másik objektum tartalmazza őt. Ezzel megoldással lehet az Entity objektumok vándorlását nyomon követni és adminisztrálni. Az egyedi névből (Name) és az úgynevezett (Container Object Name) tároló objektum névből képzi a rendszer az objektumok számára azt a teljes nevet (Full Name), amelyből mindig megállapítható, hogy az Entity objektum melyik másik objektumban vagy objektumokban tartózkodik. Ennek az a következménye, hogy a diszkrét események kezelését végző alap objektumoknak is rendelkezniük kell egy Container Object Name paraméterrel, amely egy Container objektumtól kapja az adatot. A Container objektumnak nincs más szerepe csak az, hogy az alapobjektumok számára a Container Object Name értéket biztosítsa.

Az előbbiekben felsorolt objektumokat összefoglalóan DES Object-nek nevezzük. Ezekből az objektumokból épülnek fel a DES szimulációs rendszerben a modellek.

A DES objektum tulajdonságai
3.14. ábra - A DES objektum tulajdonságai


Az ObjectList objektum felépítése és tulajdonságai
3.15. ábra - Az ObjectList objektum felépítése és tulajdonságai


3.1.2.4. Diszkrét Esemény Objektumok összekapcsolása

A DES modell objektumainak bemenetét és kimenetét a szimulációs modell felépítésének megfelelően össze kell kötni. Így lehet elkészíteni azt az objektumokból álló hálózatot, amely egy adott feladat elvégzését biztosítja. A LabVIEW grafikus programozású rendszerben ezt úgy valósítottuk meg, hogy az egyes DES modell alapobjektumok egy bemenettel és egy kimenettel rendelkeznek, amelyeket adattípusuknak megfelelően ”azonos típusú” adatvezetékkel lehet (kell) összekapcsolni. A szimulációt végző keretrendszer első lépésként egyedi azonosítókkal (ID Number) látja el a modellben szereplő DES objektumokat, majd megállapítja, hogy melyik kimenet, melyik bemenethez van kapcsolva. Itt jegyezzük meg, hogy minden DES alapobjektum egy adat (Entity) bemenettel és egy adat (Entity) kimenettel rendelkezik. Ha egy adatkimeneti csatornát egynél több DES objektum adatbemeneti csatornájához kapcsolunk, akkor a DES objektumok foglaltsági állapota határozza meg, hogy az Entity melyek DES objektum bemeneti csatornájához kerül (jut el). Ha mindegyik DES objektum készen áll a beérkező Entity fogadására, akkor az objektumok (fizikai) definiálásának sorrendje határozza meg, hogy melyik DES objektumhoz kerül az entitás. Természetesen ezen a "vezetékes" összekapcsolási módon kívül a kiválasztást biztosító (kiegészítő) objektumok segítségével tetszőleges stratégia szerinti bemeneti csatorna kiválasztást - ezzel feldolgozási irányt (DES objektum választást) - tudunk megvalósítani.

3.1.2.5. Diszkrét Esemény Objektum kimeneti statisztikai adatai

A DES alapobjektumok rendelkeznek egy bemeneti és egy kimeneti paraméterrekorddal. A bemeneti paraméterek a DES objektum működését határozzák meg, míg a kimeneti paraméterek DES objektum típusától függő statisztikai adatokat szolgáltatnak az adott objektum működéséről.

A Source objektum által szolgáltatott adatok (3.16. ábra - A Source objektum bemenő és kimenő paraméterei):

  • TimeNow

  • Time of Next Launching

  • Time Step

  • Index of ObjectList

  • Content Object Index

  • Number of Created Objects

  • Status Time Parameters (Time duration in Idle, Busy, Blocked, Failed, Paused state)

  • Status of Source (The possible states are: Idle, Busy, Blocked, Failed, Paused)

  • Full Name

A Buffer objektum által szolgáltatott adatok (3.18. ábra - A Buffer objektum bemenő és kimenő paraméterei):

  • TimeNow

  • Index of ObjectList

  • Content of Buffer

  • Indexes of Content Objects

  • Used Buffer Capacity [%]

  • Status Time Parameters (Time duration in Idle, Busy, Blocked, Failed, Paused state)

  • Status of Buffer (The possible states are: Idle, Busy, Blocked, Failed, Paused)

  • Full Name

A Machine objektum által szolgáltatott adatok (3.21. ábra - A Macine objektum bemenő és kimenő paraméterei):

  • TimeNow

  • Time of Next Launching

  • Time Step

  • Index of ObjectList

  • Content Object Index

  • Utilization [%]

  • Histogram of States

  • Pie Chart of States

  • Status Time Parameters (Time duration in Idle, Busy, Blocked, Failed, Paused state)

  • Status of Buffer (The possible states are: Idle, Busy, Blocked, Failed, Paused)

  • Full Name

A Sink objektum által szolgáltatott adatok (3.17. ábra - A Sink objektum bemenő és kimenő paraméterei):

  • TimeNow

  • Index of ObjectList

  • Last Content Object Index

  • Number of Sinked Objects

  • Status of Sink (The possible states are: Idle, Busy, Blocked, Failed, Paused)

  • Full Name

A fentieken kívül minden DES objektum rendelkezik egy kétdimenziós dinamikus indexhatárú tömbváltozóval, amelynek string változók az elemei (User Attribute). Ezekbe az index-szel elérhető rekeszekbe helyezhető el az egyes DES objektumokhoz tartozó, és a szimulációs program futása közben keletkezett tetszőleges adat, amely a program futása közben (is) lekérdezhető. Ez a megoldás biztosítja, hogy az egyes DES objektumok képesek statisztikai adatok meghatározásához szükséges információkat gyűjteni, amelyeket folyamatosan kiértékelhetnek a futás közben vagy a szimuláció befejeztével.

3.1.3. Első mintapélda: Az M/M/1 rendszer modellje a LabVIEW DES rendszerben

Az M/M/1 rendszermodell a négy alapobjektum összekapcsolásával valósítható meg a LabVIEW DES rendszerben, úgy hogy a modell elemeit a LabVIEW DES objektumokra képezzük le ( 3.16. ábra - A Source objektum bemenő és kimenő paraméterei , 3.17. ábra - A Sink objektum bemenő és kimenő paraméterei , 3.18. ábra - A Buffer objektum bemenő és kimenő paraméterei , 3.21. ábra - A Macine objektum bemenő és kimenő paraméterei ). A rendszermodellben az Entity kibocsájtást biztosító elemnek a LabVIEW DES Source objektuma feleltethető meg. Hasonlóképpen a sor a Buffer objektummal, a kiszolgálási művelet a Machine objektum segítségével, míg az Entity eltávolítása a Sink objektummal képezhető le. A következő lépésként a 3.1.2.4. szakasz - Diszkrét Esemény Objektumok összekapcsolása fejezetben leírtaknak meg felelően a DES objektumokat össze kell kapcsolni egy futtatható modellé (lásd  3.26. ábra - Az első mintapélda  (M/M/1) modell Diagram Panel-je).

A numerikus számítások elvégzéséhez azonban a LabVIEW proram diagram paneljén keresztül minden objektumot el kell látnunk a bemeneti paraméterek beállítását biztosító rekorddal valamint az eredmények (statisztikai adatok) megjelenítését lehetővé tevő úgynevezett kimeneti paraméterek rekorddal (lásd a 3.1.3.2. szakasz - A Source objektum felépítése és feladata fejezetben).

3.1.3.1. A rendszermodell leképezése

Egy diszkrét esemény szimulációs feladatot megvalósító hálózatot alapelemekből építjük fel, amelyek lehetővé teszik tetszőleges topológia megvalósítását.

3.1.3.2. A Source objektum felépítése és feladata

A Source objektum különböző függvénytípusokkal meghatározott időtartamonként Entity objektumokat bocsát ki.

A Source objektum működése során a kibocsájtott entitás objektumokat elküldi a kimenetéhez kapcsolódó objektumhoz. Amennyiben az nem képes fogadni az entitást, akkor a következő számítási műveletnél a Source objektum megváltoztatja az állapotát és Blocked állapotba kerül. Blokkolt állapotban ismételten megpróbálja az entitást elküldeni a kimenetéhez kapcsolódó objektumnak.

A Source objektum kimenetéhez nem csupán egy, hanem több objektum bemenet is kapcsolódhat. Ilyenkor a Source objektum a kapcsolódó objektumok definiálási sorrendjében próbálkozik az entitás objektum átadásával. A Source objektum kimenetéhez kapcsolódó objektumok indexeinek segítségével tetszőleges kibocsátási stratégia valósítható meg. A Source objektum bemeneti paraméterének rekordját kötelező definiálni!

Az objektum bemenő és kimenő paraméterei a következő ábrán (3.16. ábra - A Source objektum bemenő és kimenő paraméterei) láthatók:

A Source objektum bemenő és kimenő paraméterei
3.16. ábra - A Source objektum bemenő és kimenő paraméterei


3.1.3.3. A Sink objektum felépítése és feladata

A Sink objektum szünteti meg (nyeli el) az Entity objektumokat.

A Sink objektum működése során a bemenetére érkezett Entity objektumokról megállapítja, hogy tartalmaznak-e más Entity objektumokat. Ezt követően megvizsgálja, hogy a tartalmazott Entity objektumok tartalmaznak-e további Entity objektumokat, mindaddig amíg olyan objektumokat talál, amelyek már nem tartalmaznak más objektumot. Az így ”felderített” Entity objektumok indexeit (az összes gyermekobjektumot) egy verem (stack) típusú memóriában helyezi el, és kitörli az objektumok listájából. Legvégül csupán az az entitás objektum marad, amely a bemeneti csatornán érkezett, és amelyet szintén töröl az objektumok listájából a Sink objektum.

A objektum törlése az objektumok listájáról azt jelenti, hogy megszüntetjük az elnevezését (nulla hosszúságú szöveg típusú konstans lesz a neve).

A Sink objektumnak nincs kimenete.

A Sink objektum bemeneti csatornáját kötelező bekötni, bemeneti paraméterének rekordját kötelező definiálni!

Az objektum bemenő és kimenő paraméterei a következő ábrán (3.16. ábra - A Source objektum bemenő és kimenő paraméterei) láthatók:

A Sink objektum bemenő és kimenő paraméterei
3.17. ábra - A Sink objektum bemenő és kimenő paraméterei


3.1.3.4. A Buffer objektum felépítése és feladata

A Buffer objektum biztosítja a munkavégző objektumok (Entity-k) átmeneti tárolását, amíg az anyag- vagy információáramban a tároló objektum után kapcsolódó objektum munkavégzésre alkalmassá nem válik.

A Buffer objektum a működése során a bemenetére érkezett Entity objektumokat megpróbálja azonnal a kimenethez kapcsolt objektumhoz továbbítani. Ha ez nem sikerül, akkor átmenetileg tárolja őket.

A Buffer objektum kimenetéhez nem csupán egy, hanem több objektumbemenet is kapcsolódhat. Ilyenkor a Buffer objektum a kapcsolódó objektumok definiálási sorrendjében próbálkozik a kimenetén lévő Entity objektum átadásával.

A Buffer objektum kimenetéhez kapcsolódó objektumok indexeinek segítségével tetszőleges kibocsátási stratégia valósítható meg.

A Buffer objektum bemeneti csatornáját kötelező bekötni, és a bemeneti paraméterének rekordját kötelező definiálni!

Az objektum bemenő és kimenő paramétereit a 3.18. ábra - A Buffer objektum bemenő és kimenő paraméterei tartalmazza:

A Buffer objektum bemenő és kimenő paraméterei
3.18. ábra - A Buffer objektum bemenő és kimenő paraméterei


A DES objektumok közül, a Buffer objektum példáján keresztül, amelynek van bementi és kimeneti adatcsatornája is, bemutatjuk a paraméter együtteseket és azok beállítását. A korábban már bemutatott alapobjektumok hasonló felépítéssel rendelkeznek, csak egyes esetekben a bemeneti adat csatorna (Source) más esetben pedig a kimeneti adatcsatorna funkció hiányzik (Sink), bár a csatorna fizikailag rendelkezésre áll.

A Buffer objektum a következő bementi paraméterekkel rendelkezik (3.20. ábra - Buffer Objektum bemeneti paraméterei):

  1. Container Object Name:  String változó, amely a Buffer objektum tároló objektumának nevét tartalmazza.

  2. Buffer Object Name:  A Buffer objektum saját nevét tárolja.

  3. Buffer Object Input Parameters: A Buffer objektum bemenő paraméterei (Capacity, Enabled Staus of Buffer, Type of Queue).

  4. Input Channel:  Két egész típusú adatból álló rekord, amely a Data változójában megadja annak az Entity objektumnak az index-ét, amely arra vár, hogy a Buffer objektum átvegye a hozzá kapcsolódó objektumtól. Ha a Data értéke nulla vagy negatív az azt jelenti, hogy az Input Channel üres, nem tartalmaz semmilyen adatot. Ha a Data érték pozitív, akkor ez egy létező Entity objektum index-ét tárolja. A Channel Index változó megadja, hogy az Entity melyik csatornáról érkezett.

A Buffer Objektum kimeneti paraméterei pedig a következők (3.29. ábra - A Buffer objektum kimeneti paraméterei):

  1. Index of ObjectList:  Pozitív egész típusú érték, amely megadja az objektum indexét az ObjectList/DES Objects vektorban.

  2. Full Name:  String változó, amely a Buffer objektum tároló objektumának nevét és a Buffer objektum saját nevét tartalmazza.

  3. Buffer Object Output Parameters: A Buffer objektum kimenő paraméterei (TimeNow, Content of Buffer, Index of Content Objects, Status of Buffer, Command in Simulation, Full Name, Status Time Parameters, Used Buffer Capacity [%]).

  4. Output Channel: Két egész típusú adatból álló rekord, amely a Data változójában megadja annak az Entity objektumnak az indexét, amely arra vár, hogy a Buffer objektum átadja a hozzá kapcsolódó objektumnak. Ha a Data értéke nulla vagy negatív az azt jelenti, hogy az Input Channel üres, nem tartalmaz semmilyen adatot. Ha a Data érték pozitív, akkor ez egy létező Entity index-et jelől.

    A Channel Index változó megadja, hogy az Entity melyik csatornáról érkezett.

A Source, Machine, Sink és Container alapobjektumok hasonló felépítésűek, mint az előzőleg bemutatott Buffer objektum. Az objektumok összekapcsolását a (3.26. ábra - Az első mintapélda  (M/M/1) modell Diagram Panel-je) ábrán láthatjuk, ahol az Entity létrehozását egy "Source1" elnevezésű objektum valósítja meg.

A következő ábrákon (3.19. ábra - Source Objektum bemeneti paraméterei , 3.20. ábra - Buffer Objektum bemeneti paraméterei , 3.22. ábra - A Machine Objektum bemeneti paraméterei , 3.23. ábra - Sink Objektum bemeneti paraméterei ) bemutatjuk az M/M/1 modell DES objektumainak bemeneti paraméterértékeit.

Source Objektum bemeneti paraméterei
3.19. ábra - Source Objektum bemeneti paraméterei


A Source objektum exponenciális eloszlású eloszlásfüggvénnyel (EXPONENTIAL (Mean)) hoz létre "Apple" elnevezésű Entity-ket, amelyek a szimuláció kezdő időpontjától létrejönnek (First Creation Time), a Source objektum nem korlátozza a kibocsátott Entity-k darabszámát, mivel a Maximum Batch Size paraméter végtelen (Inf = Infinity) értékű. A bementi paraméterekként szereplő egyéb számértékek más eloszlásfüggvények esetén szerepelnek bemeneti értékeikkel. A program alkalmazója a CONSTANT(Value) eloszlás érték választása esetén a Value bemenő paramétere értéket a szimuláció alatt dinamikusan változtathatja és így tetszőleges eloszlásfüggvényt valósíthat meg. Az Enabled Status of Source kombinált lista segítségével három lehetséges objektumállapotot (Enabled, Failed, Paused) választhat ki. Az Enabled állapotban a DES objektum minden számítást elvégez, a Failed állapotban nem végez semmiféle számítást, mivel az állapot azt jelzi, hogy meghibásodott, míg a Pause üzemállapotban a berendezés hibátlan állapotban van, de nem végez műveletet, hanem arra vár, hogy azonnal működésbe lépjen egy meghibásodott (párhuzamosan működő) DES objektum feladatának elvégzésére.

Buffer Objektum bemeneti paraméterei
3.20. ábra - Buffer Objektum bemeneti paraméterei


A Buffer objektum bemeneti pataméterei között megtaláljuk az objektum által tárolható Entity-k darabszámát (Capacity), valamint a Buffer objektum típusát Type of Queue, amely egy kombinált listából kiválasztható három lehetséges típus valamelyike. A kiválasztható Buffer típusok: First In First Out, Last In First Out és a Using Entity Priority (ahol az Entity a System Attribute paraméterében tárolt érték alapján távozik a tárolóból).

Az Enabled Status of Buffer kombinált lista három lehetséges objektumállapotot (Enabled, Failed, Paused) választhat ki. Az állapotok jelentése megegyezik a Source objektumnál leírtakkal.

3.1.3.5. A Machine objektum felépítése és feladata

A Machine objektum különböző, függvénytípusokkal meghatározott időtartamú műveletet végez az Entity objektumon.

A Machine objektum a működése során a bemenetére érkezett Entity objektumok továbbhaladását késlelteti a műveleti idővel. A műveleti időt különböző eloszlásfüggvény segítségével határozhatjuk meg. Ha a műveleti idő letelt, a Machine objektum megpróbálja az Entity objektumot a kimeneti csatornáján a kimenethez kapcsolódó modellobjektumnak átadni. Ha ez nem sikerül Blocked (Blokkolt) állapotba kerül és minden egyes számítási ciklusnál újra próbálkozik, hogy az ”elkészült Entity-től megszabaduljon”. Amíg blokkolt állapotban van addig nem fogad újabb entitás objektumot a bemeneti csatornáján.

A Machine objektum kimenetéhez nem csupán egy, hanem több objektum bemenet is kapcsolódhat. Ilyenkor a Machine objektum a kapcsolódó objektumok definiálási sorrendjében próbálkozik az Entity objektum átadásával.

A Machine objektum kimenetéhez kapcsolódó objektumok indexeinek segítségével tetszőleges kibocsátási stratégia valósítható meg.

A Machine objektum bemeneti csatornáját kötelező bekötni, bemeneti paraméterének rekordját kötelező definiálni!

Az objektum bemenő és kimenő paramétereit a következő ábrán (3.21. ábra - A Macine objektum bemenő és kimenő paraméterei) láthatjuk:

A Macine objektum bemenő és kimenő paraméterei
3.21. ábra - A Macine objektum bemenő és kimenő paraméterei


A Machine Objektum bemeneti paraméterei
3.22. ábra - A Machine Objektum bemeneti paraméterei


A Machine objektum bementi pataméterei között megtalálható a Distribution paraméter, amely egy kombinált lista típusú adatelem, amelyből kiválasztható értékek a következők:

  • CONSTANT(Value),

  • EXPONENTIAL(Mean),

  • NORMAL(Mean, Deviation),

  • TRIANGLE(Minimum, Usual, Maximum),

  • UNIFORM(Minimum, Maximum).

A felsorolásból látható, hogy az egyes eloszlások a bementi paraméterek közötti numerikus értékekből csak meghatározott elnevezésű értékeket alkalmaznak. Így könnyen és pontosan beállíthatók az egyes eloszlástípusokhoz tartozó bementi paraméterek.

Az Enabled Status of Machine kombinált lista három lehetséges objektumállapotot (Enabled, Failed, Paused) választhat ki. Az állapotok jelentése megegyezik a Source objektumnál leírtakkal.

Sink Objektum bemeneti paraméterei
3.23. ábra - Sink Objektum bemeneti paraméterei


A Sink objektum egyetlen bemeneti paraméterrel rendelkezik, amely megadja, az objektum állapotát a szimulációs modell számára.

A DES objektumok állapota a szimulációs modellben dinamikusan (programfutás közben is) változtatható, így kézi vagy programmal előírt objektumállapotokat definiálhatunk egy előírt vagy vizsgált működési mód esetén

A 3.26. ábra - Az első mintapélda  (M/M/1) modell Diagram Panel-je bemutatja a modell elemeinek összekapcsolását az úgynevezett Diagram Panelon, amely grafikus programozás segítségével valósítja meg az egyes elemek bemenő és kimenő adatvezetékeinek összekötését. Ez a programrészlet elsősorban azt szemléltati, hogy a DES objektumok hogyan kapják meg bemenő paramétereiket, és hogyan valósul meg az egyes objektumok összekapcsolása.

A 3.27. ábra - Az első mintapélda  (M/M/1) model Front Panel-je ábrán egy olyan Front Panel képet mutatunk be, amely DES Objektumok kimenő paraméteradatainak felhasználásával különösebb probléma nélkül kialakítható. Az egyes objektumok kimeneti adatai, mint ahogy az a (3.19. ábra - Source Objektum bemeneti paraméterei , 3.20. ábra - Buffer Objektum bemeneti paraméterei , 3.22. ábra - A Machine Objektum bemeneti paraméterei , 3.23. ábra - Sink Objektum bemeneti paraméterei ) ábrákon látható, egyetlen adatstruktúrában - egy rekordban - jelennek meg (melynek a LabVIEW elnevezése cluster).

M/M/1 rendszer modellje
3.24. ábra - M/M/1 rendszer modellje


M/M/1 rendszer blokkdiagramja
3.25. ábra - M/M/1 rendszer blokkdiagramja


Az első mintapélda  (M/M/1) modell Diagram Panel-je
3.26. ábra - Az első mintapélda  (M/M/1) modell Diagram Panel-je


Az első mintapélda  (M/M/1) model Front Panel-je
3.27. ábra - Az első mintapélda  (M/M/1) model Front Panel-je


A 3.27. ábra - Az első mintapélda  (M/M/1) model Front Panel-je bemutatja az M/M/1 modell eredményeit egy meghatározott idejű futás után. Az ábra bal oldalán látható, hogy a szimuláció időtartama alatt a Source objektum 972 Entity-t hozott létre, amelyből a Sink objektumot megjelenítő négyszög belsejében lévő Produced felirat alatt szereplő numerikus kijelzőben 967 Entity kezeléséről, és a szimulációs folyamatból történt kilépéséről kapunk tájékoztatást. A létrehozott és a már kilépett Entity-k darabszámának különbsége azok az Entity-k, amelyek a szimuláció befejezése után valamelyik objektumban vannak (maradtak). Erről kapunk tájékoztatást a Sink objektum megjelenítője alatt elhelyezkedő numerikus kijelzőn, amely Work in Process Objects feliratú.

A Front panelen szerepelnek még egyéb információs kijelzők, amelyek megadják a szimuláció lefutásának valós időtartamát Real Time [sec], valamint az adott számítógépen a szimuláció és az eltelt valós idő hányadosát, azaz a szimuláció sebességi faktorát a Simulation Time / Real Time kijelzőben.

A ábrán (3.27. ábra - Az első mintapélda  (M/M/1) model Front Panel-je) szereplő Status of xxx kombinált lista értékei a szimulációt megelőzően beállíthatók a működési feltételeknek megfelelő értékekre, illetve ennél a modellnél a szimuláció időtartama alatt kézzel megváltoztathatók. Hasonlóan, a szimuláció megkezdése előtt beállíthatók az eloszlás (Distribution) kombinált lista kiválasztott értéke, és ennek paramétere beállítható a Mean Time of xxx beállító (knob) objektumokon. A jelenlegi beállítás mind a Source, mind pedig a Machine objektumnál EXPONENTIAL(9) eloszlás, amely 9.0 átlagértékű exponenciális eloszlást jelent.

A következő ábrákon az M/M/1 modellben szereplő objektumok kimenő paramétereinek rekordjait láthatjuk, a szimulációs program adott időtartamú futásának befejezése után.

A Source objektum kimeneti paraméterei
3.28. ábra - A Source objektum kimeneti paraméterei


A Source objektum kimenő paraméterei az előző ábrán (3.28. ábra - A Source objektum kimeneti paraméterei) láthatók. Ez az objektum indítja útjára azokat a véletlenszám generátorral időzitett Entity objektumokat, amelyek végighaladnak a szimulációs modell különböző objektumain, és azokban várakoznak bizonyos események bekövetkezésére.

A TimeNow kijelző azt mutatja, hogy a szimuláció 9322-ik időegységének megfelelő időpontban vagyunk (ez volt a szimuláció időtartama).

A Time of Next Lauching változóban azt az időpontot láthatjuk (szimulációs időegységben), amely megmondja, mikor kell a Source objektumnak legközelebb egy Entity-t kibocsátania (erre már nem kerül sor, mert a szimuláció befejeződött ).

A TimeStep érték megmutatja, hogy a kiválasztott eloszlásfüggvény szerint mekkora volt a legutolsó időlépés nagysága. Ez azt is jelenti, hogy a Source objektum a (Time of Next Lauching - TimeStep) értéknek megfelelő időpontban bocsájtotta ki a legutolsó Entity-t.

Az Index of ObjectList kijelző a Source objektum indexét adja meg az ObjectList objektumban.

A közvetlen mellette szereplő Content Object Index pedig azt jelzi, hogy jelenleg nincs létrehozott objektum a Source objektumban (amit nem tudott eddig még továbbadni a hozzá kapcsolt objektum bemenetéhez). Az

Entity at Output kapcsoló akkor kerülne át az ON (bekapcsolt) állapotba, ha volna Entity a Source objektumban. Jelenleg nincs, így a kapcsoló állapota OFF.

A Number of Created Objects kijelzőből megkapjuk, hány darab Entity-t hozott eddig létre a Source objektum. A 3.18. ábra - A Buffer objektum bemenő és kimenő paraméterei jobb oldalán található az a vektor, amelynek elnevezése Staus Time Parameters, melynek értékei megmutatják, az adott vektorelem adott állapotokban eltöltött időtartamainak értékeit.

A Source objektum működésének teljes időtartama alatt alapvetően Idle állapotban van. Kivétel egyedül az az eset, amikor az előzetesen meghatározott időpontban létrejött Entity-t nem tudja még ugyanabban a szimulációs lépésben továbbadni az adatkimenetéhez kapcsolódó objektumnak (jelen esetben a Buffer objektumnak). Ez olyan olyan okból történhet csak meg, hogy a Source objektum kimenetéhez kapcsolódó objektum nem képes fogadni a számára felajánlott új Entity-t. Ebben a példában ez csak akkor történik meg, ha a Buffer objektum tele van, azaz kapacitásának megfelelő Entity-t tartalmaz.

Ilyenkor a Source objektum Blocked állapotba kerül, a Staus Time Parameters vektor In Blocked State feliratú eleme pedig megmutatja, hogy a Soure objektum mennyi időt (időtartamot) töltött a Blocked állapotban.

A diszkrét esemény szimulációs rendszerek szempontjából a blokkolt állapot(ok) minimalizálása vagy megszüntetése a tervezés elérendő célja!

A Source objektum a szimulációs rendszer működése során soha nem kerülhet In Busy State állapotba, mivel működésének alapja, hogy nem végez semmilyen műveletet az Entity-ken. A Source objektum meghibásodott állapotban eltöltött időtartamát az In Failed State, a készenléti állapotban eltöltött időt pedig az In Paused State, vektor elemben szereplő időtartam adja meg.

A Status of Source combobox megadja az adott szimulációs időpillanatban (TimeNow) a Source objektum állapotát. Az objektum lehetséges állpotai: Idle, Busy, Blocked, Failed, Paused. Az állapotok jelentését a korábbiakban ismertettük.

A Command in Simulation kombinált lista a szimulációs program futási állapotát adja meg, lehetséges állpotai a következők:

Initiation

Ebben a programállapotban történik meg a modellben szereplő DES objektumok egyedi ID Number értékeinek automatikus hozzárendelése. Ez az ID Number lesz a továbbiakban az objektum (azonosító) indexe az objektumok listájában.

Clear Inputs

Ebben az állapotban az egyes DES objektumok bemeneteinek és kimeneteinek nulla értékkel történő feltöltése valósul meg. Ebben az állapotban az egyes objektumok bemenetén és kimenetén nincs egyetlen pozitív egész számmal mint index-szel jelzett objektum sem.

Calculate

Ebben az üzemállapotban történik meg az azonosító index-szel ellátott összekapcsolt objektumok segítségével a szimulációs program futtatása. Minden egyes esemény időpillanatban a szimulációs rendszer megvizsgálja minden objektum állapotát, és ha szükséges állapotváltoztatást hajt végre. Számos ilyen állapot megváltoztató művelet van, amelyeknek közös vonása, hogy egy adott objektum állapot változása (például a bemeneten új Entity fogadása) hatással van a hozzá kapcsolódó objektumra is így annak állapotát is át kell állítania. Az Entity forgalom kényelmes biztosításához az Entity-k, mint minden más DES objektum rendelkeznek állapot értékkel. Az Entity-k Idle állapotban vannak, ha valmelyik DES objektum kimeneti adat csatornájában arra várnak, hogy a kimenethez kapcsolódó objektum "átvegye" őket. Az Entity-k Busy állapotba kerülnek, ha valamelyik objektum átvette őket, az Index of Container Object attributumuk pedig megadja, hogy melyik DES objektumban vannak.

A Full Name kijelzőben láthatjuk a DES objektum teljes nevét. Ez tartalmazza annak a Container típusú objektumnak a nevét amelyhez a Source objektum tartozik, illetve hozzákapcsolva megjelenik az objektum saját elnevezése is. A változó a családnevekben megszokott elnevezési metódust követi, azaz minden DES objektumnak van egy "családneve" ez itt a Container Full Name, illetve minden DES objektumnak van egy saját neve. A (3.28. ábra - A Source objektum kimeneti paraméterei) ábrán ez úgy jelenik meg, hogy a Source1 elnevezésű Source objektumnak, amelynek a ContainerName bemenetéhez egy olyan Container objektum kapcsolódik, amelynek Main # Model a teljes neve (Full Name), a saját teljes neve (a Full Name)  Main # Model # Source1 lesz.

A Buffer objektum kimeneti paraméterei
3.29. ábra - A Buffer objektum kimeneti paraméterei


A Buffer objektum kimenő paraméterei a fenti ábrán (3.29. ábra - A Buffer objektum kimeneti paraméterei) láthatók. Az objektum átmenetileg tárolni képes azokat az Entity objektumokat, amelyek a bemenetére érkeznek. A beérkezett Entity objektumokat a beérkezés pillanatában megpróbálja a kimeneti csatornáján továbbküldeni, ha azonban ez nem sikerül, akkor tárolja az objektumot.

A Time Now kijelző itt is azt mutatja, hogy a szimuláció 9322-ik időegységének megfelelő időpontban vagyunk (ez volt a szimuláció befejezési időpontja).

A Content of Buffer kijelző megadja hogy hány darab Entity van éppen ebben pillanatban a Buffer objektumban.

Az Index of Content Objects string változóban adja meg azoknak az Entity-iknek az ObjectList-beli indexét, amelyek éppen a Buffer objektumban tartózkodnak.

A Status of Buffer valamint a Command in Simulation kombinált listák azonos kiválasztási (kijelzési) értékeket tartalmaznak, mint ahogy azt már a Source objektumnál leírtuk. A feladatuk is teljesen azonos, mint ahogy azt már korábban leírtuk.

A Status of Buffer kijelző a Buffer objektum aktuális állapotát adja meg (Idle, Busy, Blocked, Failed, Paused).

A Command in Simulation combobox kijelző pedig a szimulációs program által végzett aktuális műveletet jelzi ki (Initiation, Clear Inputs, Calculate).

A Status Time Parameters vektor elemei megmutatják, hogy a Buffer objektum mennyi időt (időtartamot) töltött az egyes állapotokban (In Idle State, In Busy State, In Blocked State, In Failed State, In Paused State).

A Buffer objektum működésekor alapvetően csak négy állapotban lehet az Idle, Blocked, Failed és a Paused állapotban.

  • Az Idle állapot azt jelenti a Buffer objektumnál, hogy nem tartalmaz semmilyen Entity objektumot.

  • A Blocked állapotba akkor kerül a Buffer objektum, ha a benne lévő Entity objektumot(kat) nem tudja a továbbadni a kimenetéhez kapcsolódó DES objektumnak.

  • A Failed állapot azt jelenti, hogy a Buffer objektum meghibásodott, és nem képes Entity-ket fogadni a bemenetén, illetve nem képes a benne elhelyezkedő Entity-ket a kimenetén kibocsájtani.

  • A Paused állapotban lévő Buffer objektum minden egysége működőképes, de biztonsági tartalékként szerepel a szimulációs modellben, hogy egy vele párhuzamosan működő (ugyanahhoz a bemenethez és ugyanahhoz kimenethez kapcsolódó) Buffer objektumot helyettesítse, ha az meghibásodik.

Machine Objektum kimeneti paraméterei
3.30. ábra - Machine Objektum kimeneti paraméterei


A Machine objektum kimenő paraméterei a fenti ábrán (3.30. ábra - Machine Objektum kimeneti paraméterei) láthatók. Az objektum egy meghatározott időtartamig (TimeStep) nem engedi tovább haladni azt az Entity objektumot, amelyet a bemeneti csatornájáról beolvasott.

A Full Name kijelzőben láthatjuk az DES objektum teljes nevét. A Time Now kijelző azt mutatja, hogy a szimuláció 9322. időegységének megfelelő időpontban vagyunk (ez volt a szimuláció befejezési időpontja).

A Time of Next Lauching változóban azt az időpontot láthatjuk (szimulációs időegységben), amely megmondja mikor kell a Machine objektumnak legközelebb kibocsájtania a benne tárolt Entity-t.

A TimeStep érték pedig megmutatja, hogy a kiválasztott eloszlásfüggvény szerint mekkora volt a legutolsó időlépés nagysága. Ez azt is jelenti, hogy a Machine objektum a (Time of Next Lauching - TimeStep) értéknek megfelelő időpontban bocsátotta ki a legutolsó Entity-t.

Az Index of ObjectList kijelző a Machine objektum index-ét adja meg az ObjectList objektumban.

A közvetlen alatta elhelyezkedő Content Object Index pedig azt jelzi, hogy melyik indexszel rendelkező Entity objektum van most a Machine objektumban.

Az Entity at Input kapcsoló azért van bekapcsolt (felső) állapotban, mert a bemeneti adatcsatornában várakozik egy Entity, hogy azt a Machine objektum beolvassa.

Az Entity at Output kapcsoló akkor kerülne át a bekapcsolt (felső) állapotba, ha a kimeneti adatcsatornában arra várakozna egy Entity, hogy a Machine objektum kimenetéhez kapcsolódó másik objektum átvegy azt.

A Utilization [%]műszer megmutatja a Machine objektum (hasznos) kihasználtságának nagyságát. Ez a számérték a Busy állapotban eltöltött időtartam osztva az összes eddig eltelt szimulációs idővel áll elő.

A 3.30. ábra - Machine Objektum kimeneti paraméterei jobb oldalán található Staus Time Parameters vektor, amelynek feliratai megmutatják, hogy az adott vektor elem melyik állapotban eltöltött időtartam értéket mutatja.

A Machine objektum

  • Idle állapotban van, ha nincs benne Entity objektum,

  • Busy állapotban van, ha van benne egy Entity objektum,

  • Blocked állapotba kerül, már elkészült a TimeStep paraméterrel megadott időtartamú művelettel, de nem tudja továbbadni a kimenetéhez kapcsolódó DES objektumnak, mert az nem képes fogadni azt,

  • In Failed State a Machine objektum meghibásodott állapotban eltöltött időtartamát adja meg,

  • In Paused State időtartam pedig a készenléti állapotban eltöltött időtartamot adja meg.

A Status Time Parameters, vektorban lévő információt jelenítik meg grafikus formában a Histogram of States és a Pie Chart of States kijelzők.

A Status of Machine kombinált lista megadja az adott szimulációs időpillanatban (TimeNow) a Machine objektum állapotát. Az objektum lehetséges állpotai: Idle, Busy, Blocked, Failed, Paused. Az állapotok jelentését a korábbiakban ismertettük.

A Command in Simulation kombinált lista kijelző pedig a szimulációs program által végzett aktuális műveletet mutatja (Initiation, Clear Inputs, Calculate).

A Sink objektum kimeneti paraméterei
3.31. ábra - A Sink objektum kimeneti paraméterei


A Sink objektum kimenő paraméterei a fenti ábrán (3.31. ábra - A Sink objektum kimeneti paraméterei) láthatók. Az objektum fogadja és kilépteti a szimulációs rendszerből azokat az Entity objektumot, amelyekkel elvégeztük az összes szükséges feladatot, és meg kell szüntetnünk őket.

A Full Name kijelzőben láthatjuk a DES objektum teljes nevét.

A Time Now kijelző azt mutatja, hogy a szimuláció melyik időpontjában vagyunk.

A Last Content Object Index kijelzőben annak az Entity objektumnak az indexét kapjuk meg, amely legutoljára tartózkodott a Sink objektumban.

A Number of Sinked Object kijelzőben láthatjuk a Sink objektumban eddig az időpontig kiléptetett Entity objektumok számát.

Az Entity at Input kapcsoló azért van kikapcsolt (alsó) állapotban, mert a bemeneti adatcsatornában nem várakozik Entity, hogy azt a Sink objektum beolvassa.

A Status of Sink kombinált lista megadja az adott szimulációs időpillanatban (TimeNow) a Sink objektum állapotát. Az objektum lehetséges állpotai: Idle, Busy, Blocked, Failed, Paused. Az állapotok jelentését a korábbiakban ismertettük.

A Command in Simulation kombinált lista kijelző pedig a szimulációs program által végzett aktuális műveletet jelzi ki (Initiation, Clear Inputs, Calculate).

A szimulációs programot a (3.27. ábra - Az első mintapélda  (M/M/1) model Front Panel-je) ábrán látható értékbeállító és kiválasztó elemek segítségével a vizsgált üzemállapotnak megfelelő bemeneti paraméterekre kell beállítani, és elvégezni a futtatást meghatározott időtartamig. A szimulációs program futásának befejeztével megkapjuk azokat az akkumulált statisztikai értékeket, amelyeket a szimulációs program a teljes futási időtartam alatt gyűjtött. Természetesen olyan szimulációs értékeket is figyelemmel kísérhetünk, amely pillanatnyi értéke (maximuma, minimuma) fontos a szimulációs program futása során. Ezekhez a LabVIEW program számos kijelző objektumot bocsájt rendelkezésre, amelyekkel a kívánt stílusú kijelzés könnyen megvalósítható.

3.1.3.5.1. Az Entity objektum felépítése és feladata (Entitás objektum)

Az objektum szabadon felhasználható munkavégző objektumként. Az DES objektum felépítése lehetővé teszi, hogy modell vagy munkavégző objektum legyen belőle. A DES objektum típusa határozza meg, hogy milyen feladatot lát el az illető objektum.

Az Entity objektumot a LabVIEW DES rendszerben csak a Source tipusú objektumok bocsátják ki.

Programozástechnikailag a programozó önállóan is létrehozhat Entity objektumot, de ennek kezelésével és működésének szervezésével olyan sok, egymással szervesen összefüggő feladat van, hogy nem célszerű alkalmazni.

Az Entity objektumok lehetnek anyagi tulajdonsággal rendelkező elemek, például egy gyártási, összeszerelési folyamatban, lehetnek személyek, akik különböző képesítéssel rendelkeznek, és így a munkafolyamatban történő részvélelüket időzíteni és logisztikailag szervezni kell.

Lehetnek Entity objektumok személyek, akiknek adott feltételek melletti forgalmát vagy különböző típusú kiszolgálását kell biztositani.

Az Entity objektum modellbeli megjelenésére és szerepére vonatkozóan még számos példát lehet találni. Összefoglalóan arról a szimulációs objektumról van szó, amely egy adott fizikai ponton belép a szimulációs folyamatba, haladása során különböző okok miatt várakozni kényszerül, majd egy adott fizikai ponton kilép a szimulációs folyamatból.

Az Entity áthaladása a szimulációs rendszeren számos kapcsolatot (statisztikai információt) jelent azokkal az objektumokkal, amelyeken útja során találkozott. A szimulációs rendszeren áthaladó Entity objektumok szintén értékes, egyedi statisztikai adatokat gyűjthetnek arról a rendszerről, amelyen áthaladtak.

3.1.4. Második mintapélda: Több kimeneti pont egyesítésének biztosítása (Join művelet)

3.1.4.1. A Join objektum felépítése és feladata

A Join objektumnak több bemenete és egy kimenete van, amelyek közül egyik bemeneti paraméterével (Join Input Channel Index = Bemeneti csatornaválasztó index) képes kiválasztani, hogy melyik bemenettől fogadja az entitás objektumot.

A Joint objektum több mint egy bemeneti csatornával rendelkezik (bemeneti csatornák vektorával). A kiválasztott csatornáján a bemenetére érkezett Entity objektumot megpróbálja azonnal a kimenethez kapcsolt objektumhoz továbbítani. Ha ez nem sikerül, akkor átmenetileg tárolja az entitást.

A Join objektumból a tárolt entitások First In First Out (Első beérkező első távozó), stratégia alapján távoznak.

A Join objektum kimenetéhez nem csupán egy, hanem több objektumbemenet is kapcsolódhat. Ilyenkor a Join objektum a kapcsolódó objektumok definiálási sorrendjében próbálkozik a kimenetén lévő entitás objektum átadásával. A Join objektum kimenetéhez kapcsolódó objektumok indexeinek segítségével tetszőleges kibocsátási stratégia valósítható meg.

A Join objektum bemeneti csatornáját kötelező bekötni, a bemeneti paraméterének rekordját kötelező definiálni!

Az objektum bemenő és kimenő paraméterei a következő ábrán (3.32. ábra - A Join objektum bemenő és kimenő paraméterei) láthatók:

A Join objektum bemenő és kimenő paraméterei
3.32. ábra - A Join objektum bemenő és kimenő paraméterei


A Második mintapélda LabVIEW DES Diagram Panelje
3.33. ábra - A Második mintapélda LabVIEW DES Diagram Panelje


A Második mintapélda a Join objektum működését mutatja be a fenti ábrán (3.33. ábra - A Második mintapélda LabVIEW DES Diagram Panelje). A két azonos felépítésű Source, Buffer és Machine objektumokból álló vonal által kibocsájtott Entity sorozat kerül a Join1 elnevezésű objektum bemeneteihez. Az objektum (jelenleg) 50-50%-os valószínűséggel választ a két lehetséges bemeneti csatornája közül, és a csatornánál lévő Entity objektumot viszi tovább a Machine3 elnevezésű műveletvégző objektumhoz.

3.1.5. Harmadik mintapélda: Több bemeneti pontból történő választás biztosítása megadott szabály szerint (Select művelet)

3.1.5.1. A Selector objektum felépítése és feladata

A Selector objektumnak több kimenete és egy bemenete van, amelyek közül egyik bemeneti paraméterével (Selector Channel Index = Kimeneti csatornaválasztó index) képes kiválasztani, hogy melyik kimeneti csatornájához továbbítsa a kimeneténél lévő entitás objektumot.

A Selector objektum több mint egy kimeneti csatornával rendelkezik (kimeneti csatornák vektorával). A kiválasztott kimeneti csatornáján megpróbálja, átadni a bemenethez érkezett és átvett entitás objektumot. Ha ez nem sikerül akkor átmenetileg tárolja az entitást.

A Selector objektumból a tárolt entitások First In First Out (Első beérkező első távozó) stratégia alapján távoznak.

A Selector objektum minden egyes kimeneti csatornájához KÖTELEZŐEN EGY MODELLOBJEKTUMOT KELL KAPCSOLNI!

A Selector objektum kimenetéhez kapcsolódó objektumok indexeinek segítségével tetszőleges kibocsátási stratégia valósítható meg.

A Selector objektum bemeneti csatornáját kötelező bekötni, bemeneti paraméterének rekordját kötelező definiálni!

Az objektum bemenő és kimenő paraméterei a következő ábra (3.34. ábra - A Selector objektum bemenő és kimenő paraméterei) szemlélteti:

A Selector objektum bemenő és kimenő paraméterei
3.34. ábra - A Selector objektum bemenő és kimenő paraméterei


A Harmadik mintapélda LabVIEW DES Diagram Panelje
3.35. ábra - A Harmadik mintapélda LabVIEW DES Diagram Panelje


A Harmadik mintapélda a Selector objektum működését mutatja be a fenti ábrán (3.35. ábra - A Harmadik mintapélda LabVIEW DES Diagram Panelje). A bemeneten (az ábra bal oldalán) elhelyezkedő Source objektum által kibocsájtott Entity-ket a Selector objektum két kimeneti csatornája közül az egyikhez továbbítja, amelynek indexét bementi paraméterként adhatjuk meg.

A Selector objektum kimeneti csatornáihoz két azonos felépítésű Buffer, Machine és Sink objektumokból álló vonal csatlakozik, amelyekben az Entity sorozat feldolgozása folytatódik. A Selector objektum (jelenleg) 50-50%-os valószínűséggel választ a két lehetséges kimeneti csatornája közül.

3.1.6. Negyedik mintapélda: Több entitás elhelyezése egy másik (Package) entitásban (Pack művelet), illetve több entitás kibontása egy másik (Package) entitásból (UnPack művelet)

3.1.6.1. A Pack objektum felépítése és feladata

A Pack az objektumnak két bemenete és egy kimenete van. Az első bemeneten (Channel_0) keresztül jut be a becsomagolandó objektumok, míg a második bemeneten (Channel_1) a csomag (doboz) objektum. A becsomagolás művelete úgy történik, hogy először egy csomag (doboz) objektumnak kell megérkeznie, majd ezután várakozik az objektum, amíg a becsomagolandó mennyiségű Entity meg nem érkezik. A becsomagolandó Entity-ket elhelyezi a csomag (doboz) objektumban, majd továbbküldi az így módosított csomag (doboz) objektumot.

A Pack objektum speciális kialakítású Join objektum, amely két bemeneti csatornával rendelkezik (bemeneti csatornák vektorával). Az objektumban a becsomagolás minden műveletét egy szekvenciális logikai program biztosítja, amely a kívánt műveleteknek megfelelően vezérli a Pack objektum bemeneteit és kimeneteit. Ennél az objektumnál volt szükség olyan bemeneti és kimeneti csatornákat engedélyező kapcsolók kialakítására, amelyeket ebben a program verzióban az összes más modellobjektumnál is megvalósítottunk.

A Pack objektum csatorna definiálási és kezelési feladatához a következő bemeneti paraméter áll rendelkezésre: Packed Quantity Request (Az összecsomagolás darabszám igénye), pozitív, egész szám, amellyel az összecsomagolt Entity-k darabszámát adjuk meg.

A Pack objektum kimenetéhez nem csupán egy, hanem több objektumbemenet is kapcsolódhat. Ilyenkor a Pack objektum a kapcsolódó objektumok definiálási sorrendjében próbálkozik a kimenetén lévő összecsomagolt entitás objektum átadásával.

A Pack objektum kimenetéhez kapcsolódó objektumok indexeinek segítségével tetszőleges kibocsátási stratégia valósítható meg.

A Pack objektum minden bemeneti csatornáját kötelező bekötni, a bemeneti paraméterének rekordját kötelező definiálni!

Az objektum bemenő és kimenő paraméterei a következő ábrán (3.36. ábra - A Pack objektum bemenő és kimenő paraméterei) láthatók:

A Pack objektum bemenő és kimenő paraméterei
3.36. ábra - A Pack objektum bemenő és kimenő paraméterei


3.1.6.2. Az UnPack objektum felépítése és feladata

Az Unpack objektumnak egy bemenete és két kimenete van. Az első kimeneten (Channel_0) keresztül jutnak ki a kicsomagolt objektumok, míg a második kimeneten (Channel_1) a csomag (doboz) objektum. A kicsomagolás művelete úgy történik, hogy először egy csomag (doboz) objektumnak kell megérkeznie, majd ezután az objektum kicsomagolja a csomag objektumban lévő Entity-ket, és átmenetileg tárolja őket. A kicsomagolt entitásokat folyamatosan eltávolítja az első kimenetén (Channel_0), majd amikor mindegyik eltávozott, a csomag (doboz) objektumot eltávolítja a második kimenetén (Channel_1).

Az Unpack objektum speciális kialakítású Selector objektum két kimeneti csatornával (kimeneti csatornák vektorával). A kiválasztott kimeneti csatornákon keresztül a bemenethez érkezett és átvett összecsomagolt entitás objektumból kicsomagolt entitásokat megpróbálja a kiválasztott kimenethez kapcsolt objektumhoz továbbítani. Ha ez nem sikerül, akkor átmenetileg tárolja a kicsomagolt Entity-ket és a csomag Entity-t.

Az Unpack objektum kimeneti csatorna definiálási és kezelési feladataihoz nem állnak rendelkezésre bemeneti paraméterek.

Az Unpack objektumból a tárolt entitások a First In First Out (Első beérkező első távozó) stratégia alapján távoznak. Az Unpack objektum minden egyes kimeneti csatornájához egy modellobjektum kapcsolható! Az Unpack objektum kimenetéhez kapcsolódó objektumok indexeinek segítségével tetszőleges kibocsátási stratégia valósítható meg.

Az Unpack objektum bemeneti csatornáit kötelező bekötni, a bemeneti paraméterének rekordját kötelező definiálni!

Az objektum bemenő és kimenő paramétereit a következő ábra (3.37. ábra - Az UnPack objektum bemenő és kimenő paraméterei) szemlélteti:

Az UnPack objektum bemenő és kimenő paraméterei
3.37. ábra - Az UnPack objektum bemenő és kimenő paraméterei


A Negyedik mintapélda LabVIEW DES Diagram Panelje
3.38. ábra - A Negyedik mintapélda LabVIEW DES Diagram Panelje


A Negyedik mintapélda a Pack és UnPack objektumok működését mutatja be a fenti ábrán (3.38. ábra - A Negyedik mintapélda LabVIEW DES Diagram Panelje). A két azonos felépítésű Source, Buffer és Machine objektumokból álló vonal által kibocsájtott Entity sorozat kerül a Pack1 elnevezésű objektum bemeneteihez. A bemenetek közül az elsőhöz a becsomagolandó Entity objektumokat kell vezetnünk, míg a második bementhez a csomag objektumokat. Addig ameddig nem érkezik egy csomag objektum, nem lehet elkezdeni a becsomagolást. A Pack objektum bementi paramétere megadja, hogy hány darab objektumot kell becsomagolni egy csomagba.

A 3.38. ábra - A Negyedik mintapélda LabVIEW DES Diagram Panelje bal oldalán helyezkednek el a csomag és a becsomagolandó objektum Entity kibocsájtó és feldolgozó elemei. A LabVIEW egyik alapvető programozási lehetősége, hogy tetszőleges mennyiségú LabVIEW ikon egy alprogrammá vonható össze. Így az ábrán az alsó részen megvalósított alprogram ugyanaz a feladatot látja el, mint a felső részen elemekből összeállított Entity kezelő rendszer.

Ebben az egyszerű példában az összecsomagolt objektumokat egy UnPack objektummal azonnal szét is bontjuk és külön-külön Sink objektumokkal semmistjük meg az összecsomagolt objektumokat és a csomagokat, amelyekben össze voltak csomagolva.

3.2. A szimulációs rendszer objektumainak közös tulajdonságai (Global Variables)

3.2.1. Az "ObjectList" globalis változók

A következő ábrán (3.39. ábra - Az ObjectList globalis változó értékei az M/M/1 modell futása után) látható ObjectList globális változó minden eleme elérhető a szimuláció során bármelyik eljárásból. A szimulációs modell tulajdonképpen az ObjectList globalis változóban (3.39. ábra - Az ObjectList globalis változó értékei az M/M/1 modell futása után Az ObjectList objektum felépítése és tulajdonságai) épül fel a DES Objects vektorban úgy, hogy megadjuk a szimulációs modellben szereplő DES objektumok típusát és bemenő paramétereit (mint ahogyan az a (3.10. ábra - Az Erlang eloszlás (k=2) sűrűségfüggvénye (kék)) ábrán látható a Buffer objektum esetén). A LabVIEW program által biztosított grafikus programozási lehetőséges segítségével létrehozzuk azt a DES objektumkapcsolást, amelyet szeretnénk megvizsgálni. A LabVIEW DES kijelző rekordjait vagy egyéb, a LabVIEW rendszerben alkalmazott kijelző típusokat felhasználva megtervezzük, és megvalósítjuk a számított mennyiségek kijelzését. Majd következik a szimulációs program futtatása, ahol a különböző DES objektumok információkat olvasnak ki más (tetszőleges) DES objektumok aktuális állpotáról, és meghatározott feltételek teljesülése esetén meg is vátoztatják azokat. Az ObjectList globalis változó tehát egy olyan állapottároló rendszer, amelynek állapotai és ezek változtatásai jelentik a szimulációs program futását.

Az ObjectList globalis változó értékei az M/M/1 modell futása után
3.39. ábra - Az ObjectList globalis változó értékei az M/M/1 modell futása után


Néhány adminisztrációs feladatot ellátó változó szerepel még az ObjectList változó attributumai között (3.39. ábra - Az ObjectList globalis változó értékei az M/M/1 modell futása után), amelyek minden DES Objektum számára adnak a működéshez szükséges értéket. Az ObjectList változók a következők:

Az Index of Last Model Object  megadja a DES Objects vektorban azt az index értéket, amelyen pillanatnyilag nincs működő (élő) Entity objektum

A Maximum Index of ObjectList  megadja, hogy a méretét dinamikusan változtatni képes DES Objects vektor milyen maximális indexű elemet képes még tárolni. Erre azért van szükség, mert a jelentős számítási idő takarítható meg azzal, hogy a szimuláció alatt ugyanazon a helyen szerepel a DES Objects vektor.

Az Input # for Inputless Objects  a DES objektumok mindegyike azonos felépítésű. Ahhoz, hogy megkülönböztethető legyen a Source objektum típus, amelynek nincs bemenete egy olyan konstans értéket adunk meg bemeneti darabszám értékként, amely jelenti, hogy ezt a bemenetet nem kell (valós) bemenetként kezelni.

A Separator of Name  karakter, amelyet az egyes névkomponensek elválasztásához használunk.

A Delimiter of List  karaktert, a DES objektumok indexeinek elválasztó karaktereként használjuk.

Az Identity Number  egy olyan egész szám, amely minden új DES objektum születésekor eggyel megnöveli az értékét.

A Possible Number of Objects in Model  megadja, hogy a szimulációs modell futásának meghatározott pillanatában hány darab DES objektumot használunk a futtatáshoz. Lehetséges, hogy ezek a DES objektumok nem hézagmentesen töltik fel a DES Objects vektort.

Az ObjectList Enabled  egy logikai érték, amely FALSE értéke esetén megtiltja, hogy a DES Objects vektor elemeinek értékét megváltoztatssuk

# of Rows of SYSTEM Attributes  a szimulációs rendszer által használt, a DES objektumhoz tartozó egyedi rendszertulajdonságok tároló elemének maximális sorindexe.

# of Columns of SYSTEM Attributes  a szimulációs rendszer által használt, a DES objektumhoz tartozó egyedi rendszertulajdonságok tároló elemének maximális oszlopindexe.

# of Rows of USER Attributes  a szimulációs rendszerben a felhasználó által programozható, a DES objektumok egyedi paramétertárolási lehetőségét biztosító elem maximális sorindexe.

# of Columns of USER Attributes  a szimulációs rendszerben a felhasználó által programozható, a DES objektumok egyedi paramétertárolási lehetőségét biztosító elem maximális oszlopindexe.

DES Objects vektor attribútumait progamozástechnikai okokból nem egy objektumban, hanem az attribútumok számának megfelelő globálisan elérhető vektorelemben tárolja a szimulációs rendszer. A DES Objects vektor attribútumai, melyek mindegyikének maximális index-e a Maximum Index of ObjectList globális változóban megadott érték, a következők:

  • ShiftMemory (All Inputs Are Zero).vi  a szimulációs rendszerben az egyes DES objektumok összekapcsolódásának feltérképezésére szolgáló globális változó, amely egy TRUE logikai értéket ad, ha minden bemenet értéke nulla.

  • ShiftMemory (All Inputs Arrived).vi  a szimulációs rendszerben az egyes DES objektumok összekapcsolódásának feltérképezésére szolgáló változó. Logikai értéket tartalmaz, amely megadja, hogy az adott DES objektum minden bemenetéhez megérkezett a hozzá kapcsolódó DES objektum információja.

  • ShiftMemory (Borning Time of Object).vi  lebegőpontos számérték, amely megadja, hogy az adott DES objektum melyik szimulációs időpillanatban született meg, amelytől részt vesz a modell működésében. A szimulációs modell alapelemeinek ezen paramétere 0.0 értékű. Ezt a paramétert elsősorban az Entity típusú DES objektumok korának megállapítására használjuk, amelyből átfutási és tartózkodási időtartamok határozhatók meg.

  • ShiftMemory (Connected Input Object Indexes).vi  stringlista, amely megadja, hogy az adott DES objektum bemenetéhez mely más objektumok kapcsolódnak. A lista a bemenethez kapcsolódó DES objektumok indexét tárolja, ahol listapozició a bemenet sorszámát (bemenet indexét) adja meg.

  • ShiftMemory (Connected Output Object Indexes).vi  stringlista, amely megadja, hogy az adott DES objektum kimenetéhez milyen más objektumok kapcsolódnak. A lista a kimenethez kapcsolódó DES objektumok indexét tárolja, ahol listapozició a kiment sorszámát (kimenet indexét) adja meg.

  • ShiftMemory (Entry Time into Container Object).vi  lebegőpontos változó, amely megadja, hogy az adott objektum mikor lépett be egy olyan DES objektumba, amely tárolni vagy késleltetni fogja a továbbhaladását a szimuláció során.

  • ShiftMemory (First Calculation).vi  logikai változó, amely megadja, hogy az adott objektummal még nem végeztünk soha műveletet a szimuláció során. Értéke akkor TRUE, ha az első számítást végezzük vele.

  • ShiftMemory (Full Name).vi  string változó, amely tartalmazza a DES objektum teljes nevét. Ezt elsősorban az objetum név alapján történő keresésekor alkalmazzuk.

  • ShiftMemory (Index of Container Object).vi  egész típusú változó, amely megadja annak a DES objektumnak az indexét, amelyben az DES objektumunk (általában Entity) éppen tartózkodik.

  • ShiftMemory (Indexes of Content Objects).vi  string változó, amely egy objektumlistával megadja azoknak az objektumoknak az indexét, amelyek az adott objektumban vannak (ehhez tartoznak) ebben a pillanatban.

  • ShiftMemory (Input).vi  vektor típusú változó, amely megadja, hogy az adott DES objektum bemeneténél milyen indexszel rendelkező Entity típusú DES objektumok várakoznak.

  • ShiftMemory (Output).vi  vektor típusú változó, amely megadja, hogy az adott DES objektum kimeneténél milyen indexszel rendelkező Entity típusú DES objektumok várakoznak.

  • ShiftMemory (Object Type).vi  kombinált lista típusú változó, amely megadja, hogy az adott DES objektum milyen típusú. A lehetséges típusok:

    1. EMPTY,

    2. CONTAINER,

    3. ENTITY,

    4. SOURCE,

    5. BUFFER,

    6. MACHINE,

    7. SINK, JOIN,

    8. SELECTOR,

    9. PACK,

    10. UNPACK.

  • ShiftMemory (Status of Input Channel).vi  logikai változó, amely megadja, hogy a DES objektum bemenetein a forgalom engedélyezett vagy sem. Értéke logikai igaz (TRUE), ha a csatorna zárt (Closed), logikai hamis (FALSE), ha a csatorna nyitott.

  • ShiftMemory (Status of Output Channel).vi  logikai változó, amely megadja, hogy DES objektum kimenetein a forgalom engedélyezett vagy sem. Értéke logikai igaz (TRUE), ha a csatorna zárt (Closed) logikai hamis (FALSE), ha a csatorna nyitott.

  • ShiftMemory (Status of Object).vi  kombinált lista típusú változó, amely megadja, hogy az adott DES objektum milyen állapotban van. A lehetséges állapotok: IDLE, BUSY, BLOCKED, FAILED, PAUSED.

  • ShiftMemory (System Attributes).vi  vektor típusú, egész változó értékeket tartalmazó struktúra, amely az egyes DES objektumokhoz rendelt rendszertulajdonságokat tartalmazza. A rendszertulajdonságokhoz a program felhasználója is korlátozás nélkül hozzáférhet, és bővitheti azokat.

  • ShiftMemory (Terminate Time).vi  lebegőpontos változó, amely megadja, hogy az adott DES objektum mikor fejezi be az éppen aktuálisan végzett műveletet.

  • ShiftMemory (Time in Statuses).vi  lebegőpontos vektor típusú változó, amely megadja, hogy az adott szimulációs időpillnatig az adott DES objektum mennyi időt tötött a különböző állapotokban (Idle, Busy, Blocked, Failed, Paused állapotokban).

  • ShiftMemory (Time of Tasks).vi  rekord típusú vektor, amely tartalmazza a szimulációs program futása során keletkezett feladatok időpont (Time od Task), feladatsorszám (TaskNumber) és a küldő DES objektum index (Index of Sender Object) értékeit.

  • ShiftMemory (User Attributes).vi  mátrix típusú string változókat tartalmazó struktúra, amely az egyes DES objektumokhoz rendelt felhasználói tulajdonságokat tartalmazza. A felhasználói tulajdonságok segítségével a program felhasználója az egyes DES objektumokhoz tetszőleges statisztikai számítások alapját jelentő értékeket rendelhet (program segítségével).

3.2.2. A "TaskList" globalis változók

A következő ábrán (3.40. ábra - A TaskList globalis változó értékei az M/M/1 modell futása után) látható TaskList globális változó minden eleme elérhető a szimuláció során bármelyik eljárásból. A szimulációs modell futása során az egyes DES objektumok a Task Objects rekordokból álló vektor elemeiben helyezik el a DES modell működéséhez szükséges eseményeket (Tasks). Azért, hogy a program futása ne legyen lassú egy újabb eseményt a Task Objects vektor első szabad helyére helyezi el a program és sorrendkereső program állapítja meg az események időbeni végrehajtásának listáját úgy, hogy közben a Task Objects vektorban nem történik adatmozgatás.

A TaskList globalis változó értékei az M/M/1 modell futása után
3.40. ábra - A TaskList globalis változó értékei az M/M/1 modell futása után


A TaskList globális változó elemei a következők (3.40. ábra - A TaskList globalis változó értékei az M/M/1 modell futása után):

Maximum Index In TaskList  megadja a ShiftMemory (Time of Tasks).vi vektorban maximálisan tárolhat események (Tasks) számát.

Index of Next Free Place on the Time of Tasks  egész típusú indexérték, amely megadja a következő szabad hely indexét a ShiftMemory (Time of Tasks).vi vektorban.

TimeNow  lebegőpontos változó, amely megadja a szimulációs program futásának aktuális időpontját.

Delimiter of TaskList  string típusú változó, amely azt a stringértéket adja meg, amelyet elválasztó karakersorként használunk az események listájában (TaskList).

Empty Value in TaskList  lebegőpontos változó, amely lehetővé teszi, hogy a ShiftMemory (Time of Tasks).vi vektorban a nem használt események időpontját egy soha elő nem forduló értékkel például negatív időpont értékkel töltsük fel.

Command in Simulation kombinált lista kijelző, amely megjeleníti a szimulációs program által végzett aktuális műveletet (Initiation, Clear Inputs, Calculate).

TaskList Enabled?  logikai típusú változó, amely FALSE értéke esetén megtiltja, hogy a ShiftMemory (Time of Tasks).vi  vektorelemek értékeit megváltoztassuk.

Calculation Blocked?  logikai típusú változó, amelynek szerepe, hogy biztosítsa a szimulációs program folyamatos futását.

TaskList  string típusú változó, amely a ShiftMemory (Time of Tasks).vi vektor elemeinek időrendi végrehajtást biztosítja. Maga a TaskList string az esemény (Task) indexeit tartalmazza a végrahajtás sorrendjében.

Az itt felsorolt globális változokat tetszőleges újabb elemekkel lehet bővíteni, azonban az új változók adatainak feldolgozásáról, illetve az egyes DES alapelemekben történő (újra) programozásáról külön gondoskodni kell.

3.3. A szimulációs rendszer eljárásai

3.1. táblázat - A szimulációs rendszer eljárásai

Az eljárás elnevezése

Leírás

  

Objektumkezelő függvények

 

Clear Content of Objects.vi

Az ObjectList tartalmának törlése.

Delete an Object by Index.vi

Az ObjectList objektumból egy objektum törlése indexe alapján.

Delete an Object Index from Content Objects List.vi

Az objektumban tárolt objektumok indexei közül kitöröl egyet.

Delete Packed Objects.vi

Összecsomagolt Entity objektum minden elemének kitörlése.

Get User Attribute.vi

Felhasználói attributum értékének megadása.

Has Object Arrivived.vi

Vizsgálat, hogy a bemeneti csatornán van-e DES Objektum?

Index of Object by Name.vi

A teljes név alapján megkeresi az objektum indexét az ObjectList-ben.

Input Channel Enable.vi

Engedélyezi/letiltja az adott bemeneti csatorna adatforgalmát.

Input ChannelS Enable.vi

Engedélyezi/letiltja a bemeneti csatornák adatforgalmát.

Insert an Object into ObjectList

Létrehoz egy új objektumot az ObjectLis-ben.

Insert Index AS FIRST into Content Objects List by Priority .vi

Az objektumban tárolt objektumok indexei elé beszúr egy új indexet prioritással.

Insert Index AS FIRST into Content Objects List.vi

Az objektumban tárolt objektumok indexei elé beszúr egy új indexet.

Insert Index AS LAST into Content Objects List.vi

Az objektumban tárolt objektumok indexei után beszúr egy új indexet.

Last Index of Content Objects List.vi

Megadja az objektumban tárolt objektumok indexei közül a legutolsót.

  

Entity műveletek

 

Entity is Idle.vi

Az Entity objektum állpotát vizsgálja meg a függvény.

Entity Number Copy.vi

Az adott Entity-ről N darab másolatot készít az eljárás.

Entity System Attribute Setting.vi

Az Entity-hez rendelt rendszerváltozó értékét állítja be.

  

Task kezelő függvények

 

Clear Content of TaskList.vi

A TaskList tartalmának törlése.

Continue of Simulate.vi

A szimuláció folytatásának vizsgálata.

Delete a Task by Index.vi

A TaskList objektumból egy Task törlése az indexe alapján.

Insert a Task into TaskList.vi

Egy Task beszúrása a TaskList objektumba.

Task at Index.vi

A TaskList objektum adott indexénél elhelyezkedő Task paraméterei.

  

Eloszlás függvények

 

Exponential Distribution.vi

Exponenciális eloszlásfüggvény

Empirical Distribution.vi

Empirikus eloszlásfüggvény

Normal Distribution.vi

Normál eloszlásfüggvény

Triangle Distribution.vi

Háromszög eloszlásfüggvény

Uniform Distribution.vi

Egyenletes eloszlásfüggvény

  

Egyéb eljárások

 

Choose.vi

Két csatornából megadott valószínűséggel választ ki egyet.

Next Empty Place Index in ObjectList.vi

A következő üres hely indexének meghatározása az ObjectList-ben

Object Parameters.vi

Az ObjectList adott indexénél elhelyezkedő objektum paramétereit adja meg.

Piechart.vi

Tortadiagramot rajzol.

Real Output Channels Series (Selector Object).vi

A fizikai és logikai csatorna összerendezést valósítja meg.

Set System Attribute.vi

Az adott objektumrendszer változóinak értékbeállító eljárása.

Set User Attribute.vi

Az adott objektum felhasználói változóinak értékbeállító eljárása.

Status Histogram.vi

Állapot hisztogramot rajzol.

Input Connection Control.vi

A bemenethez csatlakozó objektum indexét állapítja meg.

Used Objects.vi

Az ObjectListben a használt objektumok térképét adja meg.


3.4. A szimulációs program továbbfejlesztésének lehetőségei

3.4.1. További statisztikai számítások beépítése a DES objektumokba

A LabVIEW DES rendszer objektumaiba jelenleg beépített statisztikai számítások minden nehézség nélkül további számításokkal egészíthetők ki. Ezekhez nem kell feltétlenül a már elkészült objektumokba belenyúlni, hanem a legcélravezetőbb eljárás, ha az új igényekkel ”körülépitünk” egy már meglévő alapobjektumot, és a bemeneti valamint a kimeneti Entity áram(ok) ellenőrzésével, valamint az Entity objektumok által mért és tárolt időtartaminformációk segitségével tetszőleges statisztikai vizsgálatot végezhetünk el. A rendszer továbbfejlesztéseként már készültek olyan új objektumok, amelyekkel a bementi és kimeneti csatorna választást lehet megadott eloszlással megvalósítani.

3.4.2. Új attribútumok létesítése és hatásuk beépítése a DES objektumokba

Nagyon egyszerűen megvalósítható újabb minden DES objektumban szereplő attribútum létrehozása, amely nem más, mint az attribútum adattípusának megfelelő vektor. Ennek inicializálásáról és egy DES objektumbeli feladatáról újabb program részekkel a felhasználónak kell gondoskodnia. Általánosan elmondható, hogy az objektum attribútumokat a szimulációs rendszer Calculate üzemállapotában olvassuk ki illetve valamilyen számítás elvégzése után itt kapnak új értéket.

A szimulációs rendszer jelenlegi változatába már bele vannak építve az Entity objektumok pozícióját, sebességét, és gyorsulását valamint elfordulási szögét, szögsebességét és forgási tengelyének pozícióját tárolni képes attribútumok. Ezek algoritmusokkal történő kiszolgálására azonban ebben a verzióban már nem volt lehetőség.

3.4.3. Új DES objektumtípusok létrehozása

Ha teljesen új feladat megoldására kívánunk új DES objektumot létrehozni, akkor mindig célszerű megvizsgálni, hogy az új objektum milyen rendszertechnikai kapcsolással hozható létre már meglévő DES objektum(ok) felhasználásával. Ilyenkor az új DES objektum feladatait kell beprogramoznunk a három programfutási állapotban (Initiation, Clear Inputs, Calculate), úgy hogy az Entity áramot, illetve az új DES objektum állapotainak változásait az elvégzett műveletek alapján folyamatosan tároljuk az objektum attribútumaiban.

Ha teljesen új, korábban még nem létezett DES objektumot kíván a felhasználó kifejleszteni, akkor célszerű tanulmányoznia a korábban már elkészített alapobjektumokat.

4. fejezet - Lágy számítási módszerek alkalmazása a szimulációban (Soft Computing)

A műszaki (és egyéb területekhez, így biológiához, gazdaságtudományhoz, társadalomtudományhoz stb. tartozó) problémák egy részét analitikusan vagy numerikus módszerek, algoritmusok alkalmazásával meg tudjuk oldani. A megoldáshoz szükségünk lehet (esetleg akár nagy teljesítményű) számítógépre, a beprogramozott algoritmusok futtatására.

A különböző felismerési feladatok (pl. alakfelismerés), a természetes nyelvi szövegek értelmezése vagy akár a komolyabb, rengeteg elágazást kínáló stratégiai játékok algoritmizált, gépesíthető megoldása komoly kihívás. Általános jellemzőjük a megoldás „nehézsége”, amihez az ember szakértelme, tapasztalatai, intelligenciája, intuíciója szükséges, ugyanakkor nem várunk abszolút legjobb megoldást, megelégszünk egy igényeinknek éppen megfelelő „jó” megoldással. Lehetnek ugyan könnyen megfogalmazható problémák, de vagy nincs megoldó algoritmusunk vagy az algoritmus számítási igényeit reálisan nem tudjuk eszközökkel biztosítani, nagyon hosszú ideig (akár a „végtelenségig”) tartana.

Ha nincs hatékony algoritmus, a problémamegoldáshoz a hagyományostól eltérő módszerekre, „intelligens” modellezési és számítási eljárásokra szorulunk. Lágy számítási (soft computing, SC) módszernek nevezzük a hagyományos „kemény” számításnak is nevezhető eljárásokkal ellentétben a határozatlanságot, bizonytalanságot, pontatlanságot, részigazságot és közelítést kezelő, általában biológiai inspirációjú eljárásokat és ezek összekapcsolását.

A „kemény számítások”szabályai szigorúak. A feladat megoldásához szükséges eljárás adott, csakúgy, mint a bemenetek és a kimenetek. A pontos adatok és a jól meghatározott szabályok biztosítják az eredmény pontosságát, nélkülöznek bárminemű bizonytalanságot. A számítás ismétlése mindig ugyanazt az eredményt adja, ha a bemenetek és a számítási szabályok változatlanok.

Ezzel ellentétben a lágy számítások többszöri futtatásra többféle megoldást adnak ugyanarra a feladatra. Ezek közül biztosan lehet a célnak legjobban megfelelőt választani. A soft computing alábbi definícióját L.A. Zadeh – a fuzzy halmazok megálmodója – 1994-ben adta. „A soft computing nem elvek és technikák homogén egysége, hanem különböző – egymástól akár igen távoli – módszerek együttes használata a vezérelvnek megfelelően. A soft computing legfőbb célja (a cikk írásakor) kiaknázni a pontatlanság és bizonytalanság elviselését a kezelhetőség, robosztusság (határozottság, erőteljesség) és alacsony megoldási költség biztosítása érdekében.

A soft computing fő elemei a fuzzy logika, neurális számítások és valószínűségi érvelés, utóbbiba beleértve a genetikus algoritmusokat, a hihetőségi hálókat, kaotikus rendszereket és a tanuláselmélet bizonyos részeit.

A fuzzy logika, neurális számítások és valószínűségi érvelés együttműködésében a fuzzy logika foglalkozik leginkább a pontatlansággal és közelítő érveléssel, a neurális számítások tanulással és görbeillesztéssel, a valószínűségi érvelés pedig a bizonytalansággal és a hihetőség terjesztésével.”

Zadeh definíciója óta jelentősen bővült a soft computing módszerek csoportja, ezt azonban a magyar WikiPedia Lágy számítási modell szócikke az írás pillanatában még nem tükrözi. Az angol Soft computing szócikk sokkal részletesebb csoportosítást ad

  • (mesterséges) neurális hálózatok, angolul (Artificial) Neural networks, rövidítve (A)NN

    • Perceptron

  • Support Vector Machines (SVM)

  • fuzzy logika, angolul Fuzzy logic, rövidítve FL

  • evolúciós számítási módszerek, angolul Evolutionary computation, rövidítve, az alábbi részletekkel

    • evolúciós algoritmuosk, angolul Evolutionary algorithms

    • genetikus algoritmusok, angolul Genetic algorithms, rövidítve GA

    • differenciális evolúció, angolul Differential evolution

  • metaheurisztikus és raj (például méhraj) intelligencia, angolul Metaheuristic and Swarm Intelligence

    • hangyakolónia optimalizálás, angolul Ant colony optimization

    • részecske-raj alapú optimálás, angolul Particle swarm optimization

    • tűzlégy algoritmus, angolulFirefly algorithm

  • valószínűség alapú ötletek, angolul Ideas about probability, beleértve az alábbit:

    • Bayes-hálózat, angolul Bayesian network

  • káoszelmélet, angolul Chaos theory

A soft computing módszerek alkalmazási területe igen széles, szimulációban egyebek között komplex rendszerek leírására, rendszerek struktúrájának azonosítására, optimalizálásra használhatók.

4.1. Neurális hálózatok

A (mesterséges) neurális hálózatokat a biológiai neurális hálózatok szerkezete és működése inspirálta. Az emberi agy egymással összekapcsolt neuronjai adták az ötletet, hogy egyszerű számítási egységekből épített hálózatokkal próbáljunk megoldást találni hagyományos algoritmusokkal nehezen vagy egyáltalán nem megoldható feladatokra. Az összetett feladatokhoz, például képfelismeréshez, mozgáskoordinációhoz szükséges „számításokat”, sőt ezt megelőzően a tanulási folyamatot próbáljuk utánozni a szekvenciális működésű számítógépeken mesterséges neurális hálózat építésével és tanításával.

Az emberi (és természetesen állati) agyműködési alapegysége az elektromosan ingerelhető idegsejt (neuron).

Az átlagos idegsejt sejttestből, axonból és dendritekből épül fel. Központi részét, a sejttestet utánozzuk az egyszerű számításokat (súlyozott összegzés és függvényérték számítás) végző mesterséges neuronnal. A neuron egyetlen kimenete az (emberben akár 1 méter hosszú), gyakran százfelé ágazó axon szállítja a „kiszámított” értéket a többi kapcsolódó idegsejt felé. A dendritek is a sejttestből ágaznak ki akár több száz mikrométerre és többször elágazva dendritfákat képeznek. A szinapszisok teremtenek kapcsolatot az idegsejtek között, legnagyobb részük az egyik idegsejt axonját kapcsolja egy másik dendritjéhez. Léteznek különleges kapcsolatok is, így dendrit nélküli neuronok, axon nélküliek, axont axonnal vagy dendritet dendrittel összekötő szinapszisok.

Az emberi agy kb. 85·109 neuronjából hozzávetőleg 20·109 működik a magasabb rendű agykérgi központokban. A felnőtt ember agyában becslések szerint 1-5-ször 1014 szinapszis van. Az agykérgi szinapszisok száma köbcentiméterenként nagyjából 109. Az idegsejt villamos és kémiai jelek segítségével dolgozza fel és továbbítja az információt. A neuronok közötti elektromos jel 100 m/s sebességgel halad, majd az információ általában kémiai, ritkábban elektromos jelek formájában jut a szinapszisokon keresztül a többi idegsejthez. A kémiai jelátvitelű szinapszisokban a pre- és posztszinaptikus (axon-dendrit) rés 30 nanométer körüli, az oda-vissza haladásra képes neurotranszmitter diffúziójával, (csak egy irányban) jut át az információ. Az elektromos szinaptikus kapcsolatban az axon-dendrit távolság hozzávetőleg egy nagyságrenddel kisebb, a jelátvitel sokkal gyorsabb, az ingerület oda-vissza haladhat. A kapcsolatban résztvevő idegsejtek száma szerintmonoszinaptikus (egy idegsejt egy másikat informál) vagy poliszinapsztikus. A szinapszis serkentő és gátló jellegű lehet, előbbin áthalad, utóbbin elakad az ingerület. Serkentő szinapszisra érkező ingerület összeadódik (szummáció) és „erősebbként” halad tovább. Gátló kapcsolat esetén, ha a serkentő mellett gátló neurotranszmitter is képződik, a jelentősebb hatásnak megfelelően „akad el” vagy halad tovább az impulzus. Az ingerület a szinapszisokban divergensen vagy konvergensen haladhat tova. Előbbinél szétterjed, egy preszinaptikus neuron több posztszinaptikusnak adja át az ingerületet. Utóbbi esetben a több neuronról érkező ingerület összeadódik.

A neuronok alapvetően binárisan működnek, a neuron vagy kiad egy impulzsut, szakszóval „tüzel” vagy „nem tüzel”. Tüzelés után mondhatni újra kell töltődnie, a következő jel csak bizonyos – tipikusan 1 milliszekundum – idő után indulhat, vagyis a tüzelési frekvencia 1 kHz vagy kevesebb. A biológiai neurális hálózatok tehát ugyan kisebb órajellel működnek, mint a korszerű számítógépek, azonban hatékonyságuk a párhuzamos, elosztott működésű, (a férgek néhány száz, a patkány ezer körüli, a rovarok milliós, a macska milliárdnyi stb.) elemi egységének és az ezek közötti nagyságrendekkel nagyobb számú kapcsolatnak köszönhetően sokkal nagyobb. Egy neuron átlagosan néhány 100–1000 más neuronhoz kapcsolódva igen összetett rövid– és hosszú hatótávolságú kapcsolatokat és sok visszacsatolást tartalmazó hálózatot alkot.

Ezzel szemben egy digitális számítógép ugyan sokkal nagyobb tempóban, de jellemzően sorban egymás után hajtja végre a műveleteket. A számítógépek műveletvégzését irányító központi órajelhez hasonló, a neuronokat szinkronizáltan „működtető” órajel a természetes neurális hálózatokban nincsen. Az idegsejtek (együtt)működését a szinapszisok határozzák meg. Szinapszisok „eltávolítása” vagy újak „hozzáadása” a hálózat struktúráját és ezen keresztül műveletvégzését változtatja. Gyakran mondjuk, hogy a szinapszisok felelősek az információtárolásért, bár szükséges lehet egyéb szempontok (pl. a jelek közötti időzítés) figyelembevételére is.

Az állatvilág egyik csodálatraméltó jellemzője a tanulás és megjegyzés képessége, emlékezés múltbeli eseményekre és a tapasztalatok alapján a viselkedés változtatása.

A neurális hálózatokat hardverként is próbálták és próbálják utánozni, ám gyakoribb a szoftveres megoldás. A mesterséges neuron több bemenetű, egy kimenetű, egyszerű számítási egység. A mesterséges neurális hálózatok egy vagy több ilyen elemi egységből épülnek fel.

A neuronok között továbbított jelek binárisak, esetleg nulla és egy közötti értéket vehetnek fel. A szinapszisoknak megfelelő kapcsolatot numerikus súlytényezők (connection weight) biztosítják.

Az elemi egységek lehetnek rétegekbe szervezettek vagy alkothatnak laza, észlelhető szervezettség nélküli hálózatot. Ehhez kapcsolódik, hogy a neurális hálózat az elemek összekapcsolása szempontjából lehet egyirányú (feedforward neural network, FFNN) vagy tartalmazhat visszacsatolásokat (recurrent neural network, RNN).

A hálózatműködése időbeli viselkedés alapján a gyakoribb diszkrét (discrete-time neural network, DTNN) vagy folytonos idej ű (continuous-time neural network, CTNN). Előbbi típus kiváló adatok csoportosítására és függvény approximációra, utóbbit például folyamatosan változó jeleket igénylő irányítási rendszerekben alkalmazzák.

A neurális hálózatok tanítására – leggyakrabban a súlytényezők hangolására, ritkábban a struktúra módosítására – is sokféle módszert fejlesztettek (és fejlesztenek), utánozva a biológiai tanulási mechanizmusokat. A tanítási módszerek két nagy csoportja a felügyelt (supervised learning) és az önálló (felügyelet nélküli, unsupervised), bár vannak egyértelműen egyik csoportba sem sorolható eljárások. Felügyelt tanítás (tanárral tanulás) esetén a hálózatba vezetett bemenet vektorhoz kimenet vektor tartozik, azaz adott bemenethez ismert a várt kimenet. Ilyenkor a tanítás célja a hálózat által számított kimenet (a tanuló) és az elvárt (a tanár) közötti különbség (hiba) csökkentése. A felügyelet nélküli tanulás (kritkussal tanulás) folyamán nincs minden bemenet vektorhoz kimenetünk. Az önállóság természetesen ebben az esetben nem teljesen helytálló, hiszen valamiféle visszajelzésre (alkalmankénti kritikára) szükség van a tanulás során. Erre a tanítási módszerre is jellemző az eredmények ellenőrzése, azonban nem minden számítási (idő)lépésben, hanem csak bizonyos tanulási idő elteltével.

4.1.1. Mesterséges neuron, a számítás alapegysége

Ahogyan idegsejt is többféle van, mesterséges neuron modellből is jó néhány készült.

4.1.1.1. McCulloch–Pitts (MCP) neuron

Warren McCulloch és Walter Pitts 1943-ban „A Logical Calculus of Ideas Immanent in Nervous Activity” című cikkükben írták le a róluk elnevezett bináris jelekkel működő McCulloch–Pitts neuront. Ha bemeneteinek súlyozott összege eléri az ingerküszöb értékét, a neuron tüzel, kimenete egy, különben nulla. A neuron n darab bemenetét x k -val jelöljük, ahol k=1, 2, …, n. Az egyes bemenetekhez tartozó, összesen szintén n darab súlytényező jele w k . A w k >0 súlytényező a serkentő, a w k <0 gátló hatást fejez ki, a biológiai analógiát követve. A MCP neuron sajátsága az azonos súlytényező az összes serkentő bemenetnél.

Természetesen ha hálózatba kapcsoljuk az MCP neuronokat, a különböző neuronokhoz vezető ágak nem szükségszerűen azonos súlyúak. A neuron y kimenetét egy ideális relének megfelelő jelleggörbéjű aktiváló függvénnyel határozzuk meg. Az aktiváló függvényben lévő b ingerküszöb (bias) értéke megakadályozza a neuron tüzelését, ha bármely gátló (negatív súlyú) bemenet értéke nem nulla. A b ingerküszöb értékét gyakran egy x 0 =1 értékű fiktív bemenettel és a hozzárendelt w 0 =-b súlytényezővel vesszük figyelembe. A neuron kimenetét egy időlépés alatt számítjuk. Ha az MCP neuron összes bemenete nulla, a küszöbérték határozza meg, hogy a neuron tüzel-e, egy jelenik-e meg a kimenetén. (Az aktiváló függvényt emlegetik „átviteli függvényként” is, ez azonban nem azonos a lineáris rendszerek átviteli függvényével!)

Egy két bemenetű MCP neuron (4.1. ábra - Két bemenetű McCulloch–Pitts neuron) egyenlete

 

(4.1)

Két bemenetű McCulloch–Pitts neuron
4.1. ábra - Két bemenetű McCulloch–Pitts neuron


McCulloch–Pitts neuronnal megpróbálhatjuk leképezni a 16 lehetséges két bemenetű (x 1 , x 2 ) logikai függvényt. Az AND (logikai és) kapcsolat (4.2. ábra - Két bemenetű AND (logikai és) McCulloch–Pitts neuronnal) és az OR (logikai vagy) függvény (4.3. ábra - Két bemenetű OR (logikai vagy) McCulloch–Pitts neuronnal) MCP neuronos megvalósítása viszonylag egyszerűen meghatározható.

Két bemenetű AND (logikai és) McCulloch–Pitts neuronnal
4.2. ábra - Két bemenetű AND (logikai és) McCulloch–Pitts neuronnal


Két bemenetű OR (logikai vagy) McCulloch–Pitts neuronnal
4.3. ábra - Két bemenetű OR (logikai vagy) McCulloch–Pitts neuronnal


Az XOR (kizáró vagy) kapcsolat egy MCP neuronos utánzása (4.4. ábra - Két bemenetű XOR (kizáró vagy) egyetlen McCulloch–Pitts neuronnal) hosszadalmas próbálkozással sem sikerül.

Két bemenetű XOR (kizáró vagy) egyetlen McCulloch–Pitts neuronnal
4.4. ábra - Két bemenetű XOR (kizáró vagy) egyetlen McCulloch–Pitts neuronnal


4.1.1.2. Perceptron

A McCulloch–Pitts neuron egyik korlátja az egyszerűsége. Kizárólag bináris bemeneteket és kimeneteket kezel, csak az ideális relé jellegű aktiváló függvényt használja, és nem teszi lehetővé a serkentő bemenetek eltérő súlyozását. 1949-ben Donald Hebb „The Organization of Behavior” című könyvében javasolta a később Hebb–szabálynak nevezett neurális hálózat tanulási módot. Ha egy „A” idegsejt axonja elég közel van a „B” neuron ingerléséhez és ismételten hozzájárul utóbbi tüzeléséhez, valamiféle növekedés vagy metabolikus változás zajlik le egyik vagy mindkét sejtben. E változás „A” hatékonyabb közreműködése a „B” tüzelését kiváltó egyik sejtként. Hebb nem csupán azt gondolta, hogy két neuron együttes tüzelése erősíti kettejük kapcsolatát, hanem ez egyben a tanuláshoz és emlékezéshez szükséges egyik alapművelet.

Hebb ötlete a McCulloch–Pitts mesterséges neuron módosítását igényelte. A változás a bemenetek önálló súlyozása, vagyis az egységnyi bemenet az összes bemenet súlyozott összegében kisebb vagy nagyobb szerepet játszhat.

Frank Rosenblatt a McCulloch–Pitts neuront és Hebb javaslatát alapul véve alkotta meg az első perceptront és mutatta be 1962-es „Principles of Neurodynamics” című könyvében. Ez a Hebbi értelemben, a bemenetek súlyozásával tanulásra képes perceptron lett a későbbi neurális hálózatok alapja.

A perceptron (akár folytonos értékű) bemeneteihez különböző súlyok rendelhetők, sőt a perceptron „megtanulhatja” egyik–másik bemenet a többinél „erősebb” súlyozását. Az n bemenetű perceptron bemeneteinek (akár bemenetenként eltérő súllyal) előállított összege a b (inger)küszöb értékével összegezve

 

(4.2)

A σ aktiváló függvény a küszöbértékkel kiegészített súlyozott összeggel számolja a neuron

kimenetét.

 

(4.3)

A „küszöb–logikát” használó MCP neuron σ aktiváló függvénye a „mindent vagy semmit” biológiai elvet követve ideális relével közelíthető. Mivel a b ingerküszöböt a súlyozott összeg mellett vettük figyelembe (az ott bemutatotthoz képest ellentétes előjellel), a relé a bemenő jel 0 értékénél kapcsol.

 

(4.4)

Hiába a sok változtatás az eredeti McCulloch–Pitts neuronon, egy perceptron sem alkalmas például az XOR-t és a hasonló lineárisan nem szétválasztható függvényeket utánozni. A nehézségeket valamelyest leküzdhetővé tette a neurális hálózatok bevezetése. A perceptront tekinthetjük McCulloch–Pitts neuronok hálózatának is, hiszen egy bemeneti rétegből, és az egy vagy több kimenetet változtatható súlytényezőkkel „összekötő rétegből” áll. A bemenetek asszociációs egységnek nevezett előfeldolgozókon keresztül jutnak a tényleges feldolgozást végző neuronhoz. Az asszociációs egységek a bemenetben bizonyos „mintázatokat” érzékelnek, hasonlóan biológiai ötletadójukhoz (a látóterünkben megjelenő képeken pl. az élek felismerése). Minden asszociációs egység tulajdonképpen MCP neuron, ami a bemenetek bizonyos felismert mintázatára 1 értékű kimenetet ad, egyébként pedig nullát. Az asszociációs egységek a perceptron összes bemenete közül bizonyos számút kapnak, nem feltétlenül az összeset. Valamennyi asszociációs egység kimenete a következő rétegben lévő egyetlen McCulloch–Pitts neuron bemenete. E MCP neuron kimenete pedig a perceptron kimenete. Az említett 16 lehetséges logikai függvény közül az egyetlen MCP neuronnal megvalósítható AND NOT két példánya és az OR (logikai vagy) segítségével kétrétegű MCP neurális hálózattal tudjuk leképezni az XOR függvényt (4.6. ábra - Két bemenetű XOR (kizáró vagy) kétrétegű McCulloch–Pitts hálózattal).

Az AND NOT az x 1 bemenet AND (logikai és) kapcsolata az x 2 bemenet negáltjával, vagyis ellentettjével (4.5. ábra - Két bemenetű AND NOT egyetlen McCulloch–Pitts neuronnal).

Két bemenetű AND NOT egyetlen McCulloch–Pitts neuronnal
4.5. ábra - Két bemenetű AND NOT egyetlen McCulloch–Pitts neuronnal


Két bemenetű XOR (kizáró vagy) kétrétegű McCulloch–Pitts hálózattal
4.6. ábra - Két bemenetű XOR (kizáró vagy) kétrétegű McCulloch–Pitts hálózattal


Ha végignézzük a bemutatott logikai függvények (x 1 , x 2 ) számsíkbeli leképezését a logikai igaz (1) értéknek megfeleltetett fekete ponttal és a logikai hamis (0) fehér pontjával, észrevehetjük, hogy a lineárisan szétválaszthatókat egyrétegű MCP neurális hálózattal tudjuk megvalósítani (4.2. ábra - Két bemenetű AND (logikai és) McCulloch–Pitts neuronnal, 4.3. ábra - Két bemenetű OR (logikai vagy) McCulloch–Pitts neuronnal és 4.5. ábra - Két bemenetű AND NOT egyetlen McCulloch–Pitts neuronnal). A lineárisan nem szétválasztható ponteloszlást mutató XOR egyrétegű hálózattal (4.4. ábra - Két bemenetű XOR (kizáró vagy) egyetlen McCulloch–Pitts neuronnal) nem képezhető le, csak kétrétegűvel (4.6. ábra - Két bemenetű XOR (kizáró vagy) kétrétegű McCulloch–Pitts hálózattal).

A perceptron tanulási szabállyal az n bemenetű neuron súlytényezőit (a b küszöbértéket állandó 1 értékű bemenet súlytényezőjének tekintve) úgy tudjuk módosítani, hogy a rendelkezésre álló lineárisan szétválasztható minták között lehetséges határvonalak egyikét megkapjuk.

A perceptron tanulási szabályban használt elemek:

  • a neuron bemenetei:

  • a neuron súlytényezői:

  • a súlytényezőhöz tartozó bemenet

  • a neuron által számított súlyozott összeg:

  • a neuron kimenete:

  • a w súlyvektorra merőleges határvonal egyenlete:

  • a t darab tanulási adat párok formájában áll rendelkezésünkre, ahol , az i-edik bemenet vektor és o i az i-edik kimenet

  • a tanulási adatokkal kiszámíthatjuk az i-edik adatnál a neuron kimenete és a tanulandó kimenet különbségét, a hibát: , ahol y i az i-edik tanulási bemenettel számított kimenet

A módosított súlytényezőket és küszöbértéket az i -edik tanuló adatnál a korábbi w és b értékekből az alábbiak szerint számoljuk

 

(4.5)

 

(4.6)

Határozzuk meg az AND (logikai és) függvényt leképező két bemenetű perceptron súlytényezőit és küszöbértékét!

A tanító adatok a (4.1. táblázat - AND (logikai és) tanító adatai) táblázatban szerepelnek. Szemléletes a logikai és leképezése az (x 1 , x 2 ) számsíkon, a logikai igaz (1) értéknek megfeleltetett fekete ponttal és a logikai hamis (0) fehér pontjával (4.7. ábra - AND (logikai és) perceptron határvonal és súlyvektor).

4.1. táblázat - AND (logikai és) tanító adatai

sorszám

bemenet

kimenet

1

[0 0]

0

2

[0 1]

0

3

[1 0]

0

4

[1 1]

1


A határoló egyenest válasszuk úgy, hogy a (0; 1,5) és (1,5; 0) ponton menjen át. A határvonal egyenlete így x 2 = -x 1 +1,5. Erre merőleges súlyvektort választunk, például a w =(2; 2) értékűt. A határvonal egy pontját, például az (1,5; 0)-t és a választott súlyvektort használhatjuk a b küszöbérték meghatározására, hiszen a határvonalhoz 0 kimenet tartozik.

 

(4.7)

A w =(2; 2) súlytényezőkkel és a b=-3 küszöbértékkel felírhatjuk a határvonal egyenletét.

 

(4.8)

A logikai igaz értékhez tartozó (a 4.7. ábra - AND (logikai és) perceptron határvonal és súlyvektor ábrán sötéttel jelölt) terület határvonalhoz viszonyított helyzetét egy biztosan ide tartozó pont, például a (2;2) mint bemenet helyettesítésével határozhatjuk meg.

AND (logikai és) perceptron határvonal és súlyvektor
4.7. ábra - AND (logikai és) perceptron határvonal és súlyvektor


AND (logikai és) perceptron rosszul felvett határvonal és súlyvektor
4.8. ábra - AND (logikai és) perceptron rosszul felvett határvonal és súlyvektor


Ha először nem megfelelő határvonalat és erre merőleges súlyvektort választunk, a perceptron tanulási szabállyal eljutunk egy megfelelő megoldáshoz.

Válasszuk a láthatóan (4.8. ábra - AND (logikai és) perceptron rosszul felvett határvonal és súlyvektor) rossz, (0; 1,5) és (0,5; 0) ponton áthaladó határvonalat! Az erre merőleges súlyvektor legyen w = (1,5; 0,5)! A (0; 1,5) pontot helyettesítve

 

(4.9)

A relé jelleg ű aktiváló függvény bemenete ezzel

 

(4.10)

A négy tanító adattal végigszámolva az alábbi eredményt kapjuk (4.2. táblázat - AND w = (1,5; 0,5) és b=-0,75 esetén). A w = (1,5; 0,5) súlytényezőkkel és a b=-0,75 küszöbértékkel felírhatjuk a határvonal egyenletét.

 

(4.11)

4.2. táblázat - AND w = (1,5; 0,5) és b=-0,75 esetén

sorszám

bemenet

kimenet o

számított z

számított y

hiba e=o-y

1

[0 0]

0

-0,75

0

0

2

[0 1]

0

-0,25

1

0

3

[1 0]

0

0,75

1

-1

4

[1 1]

1

1,25

1

0


A (4.2. táblázat - AND w = (1,5; 0,5) és b=-0,75 esetén) táblázatból kiderül, hogy a 3. tanító adatnál hibás eredményt kapunk, e 3 =-1. A perceptron tanítási szabály alkalmazásával a harmadik tanító adatra újraszámoljuk a súlyvektort és a küszöbértéket.

 

(4.12)

 

(4.13)

A w = (0,5; 0,5) súlytényezőkkel és a b=0,75 küszöbértékkel felírhatjuk a határvonal egyenletét.

 

(4.14)

AND (logikai és) perceptron rosszul felvett határvonal és súlyvektor
4.9. ábra - AND (logikai és) perceptron rosszul felvett határvonal és súlyvektor


Az újraszámolt értékekkel ellenőrizzük az egyes tanító adatokat (4.3. táblázat - AND w = (0,5; 0,5) súlytényezőkkel és a b=0,75 esetén).

4.3. táblázat - AND w = (0,5; 0,5) súlytényezőkkel és a b=0,75 esetén

sorszám

bemenet

kimenet o

számított z

számított y

hiba e=o-y

1

[0 0]

0

-1,75

0

0

2

[0 1]

0

-1,25

0

0

3

[1 0]

0

-1,25

0

0

4

[1 1]

1

-0,75

0

1


A (4.3. táblázat - AND w = (0,5; 0,5) súlytényezőkkel és a b=0,75 esetén) táblázatból kiderül, hogy most a 4. tanító adatnál kapunk hibás eredményt, e 4 =-1. A perceptron tanítási szabály alkalmazásával a negyedik tanító adatra újraszámoljuk a súlyvektort és a küszöbértéket.

 

(4.15)

 

(4.16)

A w = (0,5; 0,5) súlytényezőkkel és a b=-0,75 küszöbértékkel felírhatjuk a határvonal egyenletét.

 

(4.17)

AND (logikai és) perceptron rosszul felvett határvonal és súlyvektor
4.10. ábra - AND (logikai és) perceptron rosszul felvett határvonal és súlyvektor


Az újraszámolt értékekkel ismét ellenőrizzük az egyes tanító adatokat (4.4. táblázat - AND w = (1,5; 1,5) súlytényezőkkel és a b=-0,75 esetén).

4.4. táblázat - AND w = (1,5; 1,5) súlytényezőkkel és a b=-0,75 esetén

sorszám

bemenet

kimenet o

számított z

számított y

hiba e=o-y

1

[0 0]

0

-0,75

0

0

2

[0 1]

0

0,75

1

-1

3

[1 0]

0

0,75

1

-1

4

[1 1]

1

2,25

1

0


Ez a súlyvektor és küszöbérték sem jó, a második és harmadik adatra egyaránt hibás eredményt kapunk. Válasszuk ki a második adatsort és alkalmazzuk erre a perceptron tanulási szabályt e 2 =-1 felhasználásával! (Természetesen dolgozhatnánk a harmadik értékkel is.)

 

(4.18)

 

(4.19)

Az újraszámolt értékekkel ismét ellenőrizzük az egyes tanító adatokat (4.5. táblázat - AND w = (1,5; 0,5) súlytényezőkkel és a b=-1,75 esetén).

4.5. táblázat - AND w = (1,5; 0,5) súlytényezőkkel és a b=-1,75 esetén

sorszám

bemenet

kimenet o

számított z

számított y

hiba e=o-y

1

[0 0]

0

-1,75

0

0

2

[0 1]

0

-1,25

0

0

3

[1 0]

0

-0,25

0

0

4

[1 1]

1

0,25

1

0


A negyedik lépésben végre hibátlan eredményt kaptunk! A w = (1,5; 0,5) súlytényezőkkel és a b=-1,75 küszöbértékkel felírhatjuk a határvonal egyenletét.

 

(4.20)

AND (logikai és) perceptron helyesen felvett határvonal és súlyvektor
4.11. ábra - AND (logikai és) perceptron helyesen felvett határvonal és súlyvektor


A négy egymást követő lépés eredménye a (4.12. ábra - AND (logikai és) perceptron tanítása során felvett határvonalak és súlyvektorok) ábrán látható. Ha a harmadik lépés után a hibát eredményező tanító adatok közül nem a másodikat, hanem a harmadikat választjuk, további lépések szükségesek a megfelelő határvonal meghatározásához.

AND (logikai és) perceptron tanítása során felvett határvonalak és súlyvektorok
4.12. ábra - AND (logikai és) perceptron tanítása során felvett határvonalak és súlyvektorok


A ma használt neurális hálózatok az MCP neuronból és a perceptronból erednek, azonban sokkal összetettebb feladatok megoldására alkalmasak, mint bármelyik elődjük.

4.1.1.3. ADELINE

Az ADALINE (ADAptive LInear NEuron, adaptív lineáris neuron vagy későbbi nevén ADAptive LINear Element, adaptív lineáris elem) egyrétegű neurális hálózatot Bernard Widrow és Marcian Edward Hoff építette 1960-ban. A McCulloch-–Pitts neuronon alapuló ADALINE súlyokat, ingerküszöböt és összegzést tartalmaz, aktiváló függvényt azonban nem. A súlytényezők módosítása a tanulási fázisban a bemenetek súlyozott összege alapján történik. A perceptronban ez az összeg az aktiváló függvénybe kerül és így adja a neuron súlytényezők módosításához használt kimenetét. A neuron y kimenetét az x bemenet vektor w -vel súlyozott összegéből és a b állandóból kapjuk.

 

(4.21)

A b értéket is tekinthetjük az x 0 =1 állandó értékű bemenet w 0 súlytényezőjének.

 

(4.22)

Az ADALINE tanítása a súlytényezők véletlenszerű felvételével kezdődik. A tanítás epoch nevű (szó szerint fordítva korszak, értelme szerint a teljes tanítási adatsorozaton végighaladó) egységekben zajlik, egy epoch alatt az összes (i=1,2,…, t) tanítási adatot (bemenet vektor–kimenet párt) megkapja a neuron. A súlytényezők módosítása a számított kimenet és a tanítási adatban megadott kimenet különbsége alapján történik. A Widrow-Hoff más néven Delta-szabály a súlyokat a legkisebb négyzetek módszere szerint változtatja.

A tanításhoz használt t bemenet vektorunkkal és a pillanatnyilag érvényes w súlytényezőkkel állítjuk elő a neuron kimenetét az összes (t) tanítási adatra.

Az i-edik (i=1,2,…, t) tanítási adatra felírhatjuk a várt o i  és a számított y i kimenet e i különbségét az tanító bemenet vektor segítségével

 

(4.23)

Az összes tanító bemenet hibájából előállíthatjuk a teljes négyzetes hibát

 

(4.24)

A négyzetre emelés pozitívvá teszi a hibát és a nagyobb eltérést jobban hangsúlyozza. Az ½ szorzótényező a későbbi számítást (deriválás) könnyíti meg. A hiba minimalizálásához gradiens módszert használunk. A j+1-edik számítási lépéshez az alábbiak szerint határozzuk meg a súlytényezőket a j pillanatbeli súlyok segítségével

 

(4.25)

Az η tanulási ráta bevezetésével, a hibafüggvény gradiensének megfelelő elemével (parciális deriválttal) írhatjuk fel a súlytényező változását

 

(4.26)

A parciális derivált a fentiek alapján

 

(4.27)

Ezzel a súlytényező változása

 

(4.28)

Így a módosított (a következő, j+1-edik számítási lépésben használt) k -adik súlytényező (k=0, 1, 2, …, n)

 

(4.29)

Az adaptív szűrőkben (pl. zaj eltávolításra) ma is gyakran alkalmazott Delta–szabály (Widrow–Hoff szabály) a súlytényező módosítását a neuron kimenet előírttól eltérése és a súlytényező korábbi értéke alapján, az η tanulási ráta segítségével számolja.

4.1.1.4. Továbblépés, a kimenet számítása

A neuronok működését tovább „finomíthatjuk” a küszöbérték logikánál fokozatosabb átmenetet biztosító aktiváló függvények, így szakaszonként lineáris függvény (telítődés nemlinearitás) és a különböző szigmoid függvények használatával.

Ha a neuron kimenetét a relé be- vagy kikapcsolt állapota között fokozatosan változó (nulla és egy közötti) értékkel szeretnénk inkább megadni, szigmoid jellegű aktiváló függvényt használunk.

A szigmoid korlátos, differenciálható valós függvény, értelmezési tartománya a valós számok halmaza, értékkészlete a valós számok körében értelmezett [0, 1] zárt intervallum. Derivált függvénye harang alakú. Határértéke z→-∞ esetén nulla, z→+∞ -nél egy, mindkét határértéknél vízszintes érintővel. A σ(z) szigmoid függvény kielégíti a

 

(4.30)

differenciálegyenletet, amit peremérték feladatként kezelve harmadik paraméterként c 3 is megjelenik a megoldásban. A differenciálhatóság a neurális hálózat tanításánál kap szerepet.

Néhány jellegzetes szigmoid függvény képlete szerepel a (4.6. táblázat - Szigmoid függvények) táblázatban. A [0; 1] értékkészletre normált aktiváló függvények a (4.13. ábra - Aktiváló függvények) ábrán láthatók. (Előfordul természetesen [-1; 1] értékkészlet ű aktivációs függvény is bizonyos neurális hálózatokban.)

4.6. táblázat - Szigmoid függvények

Képlet

Elnevezés

ahol c>0

logisztikai függvény, bár gyakran ezt hívják szigmoidnak a neurális hálózatokkal foglalkozók

arcus tangens függvény

tangens hiperbolicus függvény

a (Gauss–féle) hibafüggvény

példa algebrai függvényre

másik példa algebrai függvényre


Aktiváló függvények
4.13. ábra - Aktiváló függvények


A talán leggyakrabban használt és a neurális hálózatokkal foglalkozók körében szigmoidnak

nevezett (egyébként logisztikai függvény) aktiváló függvény (c>0)

 

(4.31)

A gépi számítás egyszerűsítése érdekében a neuron bemeneteit és a hozzájuk tartozó súlyokat vektorként kezeljük. A b küszöbértéket x 0 =1 állandó értékű, w 0 =b súlytényezőjű bemenetnek tekintve az n bemenetű neuron n+1 bemenetűvé válik.

 

(4.32)

Ha oszlopvektorként kezeljük a bemeneteket ( x ) és a súlytényezőket ( w ), az n bemenetű neuronban képzett z súlyozott összeg tömörebben írható

 

(4.33)

Biológiai analógia értelmezhető, ha a neuron y kimenetét bizonyos időtartam alatti átlagos tüzelési frekvenciának tekintjük, a neuron tényleges kimeneti impulzusával szemben. A bemenetek súlyozott összegét az aktiváló függvényen átvezető neuron modell diszkrét idejű használatra alkalmas, hiszen a kimenet meghatározása egy számítási (idő)lépés alatt történik.

A kimenetre vonatkozó τ időállandóval jellemezhető egytárolós arányos tulajdonság hozzáadásával a neuron modell folytonos idejűvé alakítható.

 

(4.34)

4.1.2. Előrecsatolt neurális hálózat

A többrétegű neurális hálózatok jelölésében a bemeneteket négyzettel (□), a neuronokatkörrel (○) jelöljük. A bemenetek és a kimenetek között lehetnek rejtett rétegek is. A bemenet-neuron és neuron-neuron összeköttetéseket irányított vonalakkal (nyilakkal) kötjük össze. A rétegekbe szervezett, előrecsatolt neurális hálózatban a bemeneteket és az azonos rétegben lévő neuronokat függőlegesen egymás alá rajzoljuk, a nyilak balról jobbra mutatnak (4.14. ábra - Előrecsatolt neurális hálózat két rejtett réteggel). (Ha a rétegeket vízszintesen ábrázoljuk, a nyilak természetesen függőleges irányúak.) A rétegek számítása egymás után történik, balról jobbra, a rétegen belüli neuronoké pedig felülről lefelé.

A neuronok (inger)küszöb értékét a korábbiak szerint nulladik (egyértékű) bemenet súlytényezőjeként vesszük figyelembe, ezt az x 0 =1 bemenetet nem mindig tüntetjük fel az ábrán, de a számítások során mindenképpen szerepel. A rejtett rétege(ke)t tartalmazó hálózat minden rétegében hasonlóképpen be kell vezetnünk egy ingerküszöbnek megfelelő, állandó egységnyi kimenetű, fiktív nulladik neuront.

A súlytényezőket a megfelelő nyilak fölé rajzolhatjuk, felső indexük a réteg azonosítója zárójelben (a rejtett réteg sorszáma vagy o a kimeneti rétegnél), az alsó index az adott rétegben lévő neuron sorszáma és a megelőző rétegben lévő neuron sorszáma. A számítás során gondoskodnunk kell arról, hogy a bemeneti és a rejtett rétegek nulladik neuronja mindig egységnyi értékű legyen.

Előrecsatolt neurális hálózat két rejtett réteggel
4.14. ábra - Előrecsatolt neurális hálózat két rejtett réteggel


Az első rejtett rétegbeli k 1 neuron bemeneteinek súlyozott összege mátrixos formában

 

(4.35)

Tömörebben

 

(4.36)

Az első rejtett réteg kimenetét az aktiváló függvénnyel határozhatjuk meg

 

(4.37)

A második rejtett rétegbeli k 2 neuron bemeneteinek súlyozott összege mátrixos formában

 

(4.38)

Tömörebben

 

(4.39)

A második rejtett réteg kimenetét is az aktiváló függvénnyel határozzuk meg

 

(4.40)

A kimeneti rétegbeli m neuron bemeneteinek súlyozott összege mátrixos formában

 

(4.41)

Tömörebben

 

(4.42)

A kimeneti réteg neuronjainak kimenetét is az aktiváló függvénnyel határozzuk meg

 

(4.43)

Az i-edik tanító adat x i bemenete a hálózat kimenetén az előzőek alapján meghatározható y i (o) kimenetet eredményezi. A tanító adatban szereplő o i kimenet és a hálózat számított y i (o) kimenete alapján meghatározhatjuk az i-edik tanító adattal kapott hibát. A hiba alapján hangolhatjuk (taníthatjuk) a neurális hálózatot a tanító adatok pontos felismerésére.

 

(4.44)

A kötelező bemeneti réteg és kimeneti réteg között gyakran csak egy rejtett réteget használunk. Több rejtett réteg számítástechnikailag bonyolítja a neurális hálózatot, emellett már egyetlen – természetesen elegendő neuronból álló – rejtett réteg is elegendő bármilyen folytonos függvény közelítésére. A megfelelő számú rejtett rétegbeli neuron rendkívül lényeges, ugyanakkor egyáltalán nem egyszerű meghatározni a szükséges mennyiséget. Túl kevés neuronnal a hálózat nem közelíti megfelelően a megadott kimenetet. Ha viszont a szükségesnél többet használunk, „túltaníthatjuk” a hálózatot, így az csak a néhány tanító mintával működik, más bemenetekkel nem. Általánosan igaz, hogy a rejtett neuronok száma elsősorban a tanító minták számától függ (nyilván több minta több neuront igényel), továbbá a kimeneti függvény bonyolultságától (összetettebb függvény közelítéséhez több neuron szükséges).

4.1.2.1. Backpropagation

A backpropagation (hiba visszavezetés) tanítási módszer a neurális hálózat kimeneti rétegében jelentkező hiba visszajuttatása a rejtett réteg neuronjaihoz, a rejtett neuronok súlytényezőinek módosítása a hiba alapján. Feltehető, hogy a rejtett réteg neuronjai is hibával számolnak, azonban ez a hiba közvetlenül nem érhető el. A backpropagation tulajdonképpen a Delta-szabály általánosítása nemlineáris aktiváló függvényekre és többrétegű hálózatokra.

Egyetlen n bemenetű, aktiváló függvény nélküli neuron egyetlen y kimenete csupán az x bemenet vektortól és a w súlyvektortól függ.

 

(4.45)

Az { x j ; oj} (j=1, 2, …, t) tanító adatokra a várt és számított kimenet négyzetes hibája (ahol x j,i a j-edik tanító adatsor i-edik eleme, i=0, 1, 2, .., n) csupán a súlyoktól függ

 

(4.46)

Az E( w ) hibafüggvény globális minimumát keressük,mert ez azt jelenti, hogy a neuron kimenete a tanító adatban lévő kimenettől a lehető legkevésbé tér el. A gradiens módszerrel határozzuk meg a hibafüggvény ∇E gradiensét.

 

(4.47)

A k-adik parciális derivált kifejtve

 

(4.48)

Az η tanulási ráta bevezetésével a k-adik súlytényező változása

 

(4.49)

A súlytényező módosítás másképpen is felírható, ha nem az egész tanító adatsorozatra ellenőrizzük a kimeneti hibát, hanem külön-külön tanító adatonként (sztochasztikus frissítési szabály). A kifejezés az összegzéstől eltekintve hasonlít az előbbihez

 

(4.50)

(Esetünkben a sztochasztikus és a nem sztochasztikus súlymódosítási szabály ugyanazt eredményezi.)

A aktiváló függvény bevezetésével a hibafüggvény

 

(4.51)

A k-adik parciális derivált kifejtve (a láncszabály alkalmazásával)

 

(4.52)

A aktiváló függvény deriváltja kielégíti az alábbi egyenletet

 

(4.53)

Ezzel

 

(4.54)

Az helyettesítést alkalmazva a j-edik tanító adattal számított kimenetre a sztochasztikus szabály egy neuron súlytényezőinek módosítására

 

(4.55)

A j -edik tanító adattal a neuron kimenetére számított hibáját jelöljük δ j -vel

 

(4.56)

Ha csak a 4.15. ábra - Előrecsatolt neurális hálózat kimeneti hibája ábra kimeneti rétegében van egyetlen neuron, annak hibáját és a súlytényezők módosítását az előzőek alapján tudjuk számolni. Ha viszont a hibát a rejtett hálózat felé szeretnénk visszajuttatni, további összefüggéseket kell felírnunk. A rejtett rétegbeli neuronra ugyanúgy fel kell írnunk az aktiváló függvénnyel és bemenetei súlyozott összegével a kimenet értékét, majd ezt „beágyazva” a hibafüggvénybe, a rejtett rétegbeli neuron súlytényezői módosításához szükséges δ értékeket is ki tudjuk számolni a láncszabály alkalmazásával. A számítás eredményeképpen a kimeneten jelentkező hibával visszafelé haladva, rétegenként tudjuk módosítani a neuronok valamennyi súlytényezőjét.

Előrecsatolt neurális hálózat kimeneti hibája
4.15. ábra - Előrecsatolt neurális hálózat kimeneti hibája


A hibát visszavezető (backpropagation) algoritmus lépései

  1. a súlytényezők inicializálása kis véletlen értékekkel

  2. az iteráció ismétlése a leállítási feltétel teljesüléséig

    1. minden (j=1, 2, …, t) tanító adat x j bemenetét vezessük a neurális hálózatra és határozzuk meg az y j ( o ) kimenetet

    2. a kimeneti réteg összes (i=1, 2, …, m) neuronjára számítsuk ki a neuron δ j ( o ) hibáját (rendre az összes tanító adatra, a képletben azonban nem szerepel a tanító adat j indexe az egyszerűség kedvéért)

    3. a kimenetet megelőző rejtett réteg összes (h) neuronjára számítsuk ki a neuron δ h ( rejtett réteg ) hibáját (rendre az összes tanító adatra, a képletben azonban nem szerepel a tanító adat j indexe az egyszerűség kedvéért)

    4. a további rejtett rétegek neuronjainak hibáját hasonlóan határozzuk meg, az összegzésben a kimeneti helyett a vizsgált réteget követő réteg neuronjainak hibáját és a megfelelő súlytényezőket alkalmazva

    5. a módosított súlytényezőket a kifejezéssel számítjuk, ahol w ( a,b ) az előző réteg b-edik neuronját a vizsgált réteg a-adik neuronjával összekötő súlytényező, y b az előző réteg b-edik neuronjának kimenete

  3. leállítási feltétel lehet az iterációk száma, a tanító adatokra számított összesített hiba adott küszöbérték alá csökkenése vagy ha az egyes iterációk között a hiba nem csökken lényegesen

4.1.3. Radiális bázisfüggvényes hálózat

A radiális bázisfüggvényes (radial basis function, RBF) hálózat a lineáris neurális hálózatok egyik típusa. Az RBF neurális hálózatban (4.16. ábra - Radiális bázisfüggvényes hálózat kimeneti hibája) egy rejtett réteg van, azonban az előzőektől eltérően a rejtett réteg neuronjainak nincs súlytényezőjük. A rejtett rétegben a megszokott aktiváló függvény helyett radiálisan szimmetrikus bázisfüggvényt használunk, Gauss–, multikvadratikus, inverz multikvadratikus, Cauchy– vagy akár B–spline függvényeket.

A rejtett rétegben az előzőekhez hasonlóan elhelyezhetünk egy állandó kimenetű y 0 ( RBF ) virtuális neuront, hogy a kimeneti neuron ingerküszöbnek megfelelő súlytényezőjét használni tudjuk a vektoros számításban.

A kimeneti réteg a már korábban megismert felügyelt tanulásával szemben a rejtett réteg nem felügyelt tanítású, sőt a backpropagation tanítás globalitásával szemben az RBF hálózat rejtett rétege lokálisan tanul. A globális tanulás a hálózat összes neuronjára kiterjed minden lépésben, a lokális tanulás csak a neuronok bizonyos körzetét érinti minden lépésben. Az RBF hálózat tanítása kétlépéses. Először az RBF függvények paramétereit határozzuk meg valamilyen nem felügyelt tanítási módszerrel, ezután kerül sor a rejtett és a kimeneti réteg közötti súlyok állítására a hibanégyzet minimalizálásával, felügyelt tanítással. Az radiális bázisfüggvények középpontja a bemenet vektorok maximális aktivizáló hatását, a szélességek a középpont körüli sugarakat (a bázisfüggvény területét) jellemzik.

Radiális bázisfüggvényes hálózat kimeneti hibája
4.16. ábra - Radiális bázisfüggvényes hálózat kimeneti hibája


A RBF valós értékű függvény, értéke csak az origótól (esetleg a c középponttól) mért távolságtól függ, a norma általában az Euklideszi távolság.

 

(4.57)

 

(4.58)

Az n bemenetű, m radiális bázisfüggvényes rejtett rétegű, egy kimenetű RBF hálózat működését leíró egyenlet

 

(4.59)

ahol φ j a j-edik rejtett neuron radiális bázisfüggvénye, c j a hozzá tartozó középpont, w j a szintén ide tartozó, a rejtett és kimeneti réteg közötti súlytényező, w 0 a rejtett rétegben lévő állandóan egységnyi kimenetű virtuális neuron súlytényezője (mondhatni az y kimenet eltolása).

||⋅|| az Euklideszi norma, az x =[x 1 x 2 x n ] T bemenet vektorra

 

(4.60)

Néhány tipikus – a szemléltetés érdekében egy változós – radiális bázisfüggvény (4.17. ábra - Aktiváló függvények)

4.7. táblázat - Radiális bázisfüggvény típusok

Függvény

Leírás

c középpontú, r sugarú Gauss-függvény

c középpontú, r sugarú multikvadratikus függvény

c középpontú, r sugarú inverz multikvadratikus függvény

c középpontú, r sugarú Cauchy-függvény


Aktiváló függvények
4.17. ábra - Aktiváló függvények


A bázisfüggvények kiválasztása függhet a megoldandó feladattól, de általában tetszőleges.

Talán leggyakoribb a Gauss–függvény használata.

A Gauss-függvényű RBF hálózatot felírhatjuk a klasszikus idősor jelölésekkel

 

(4.61)

ahol a kimeneti neuron m+1 bemenetéhez tartozó súlytényezők vektora

 

(4.62)

a rejtett réteg m (RBF) neuronjának (időfüggőként felírt) kimenete

 

(4.63)

a j-edik Gauss RBF függvény, c j (n elemű) középponttal és r j sugárral

 

(4.64)

Az RBF hálózat t időpillanatbeli bemenete

 

(4.65)

Az RBF hálózat tanításához az { x k (T) , o k } tanító adatokat (k=1, 2, …, T, t helyett, mert azzal most az időt jelöljük) használjuk. A tanítás során meg kell határoznunk a rejtett rétegben lévő RBF neuronok számát, minden egyes bázisfüggvény középpontját és sugarát, valamint a kimeneti réteghez vezető súlytényezőket.

Néhány módszerben ezeket a lépéseket külön hajtjuk végre, másokban egyszerre. A hálózat paramétereinek (középpontok, sugarak, súlytényezők) „hangolására” különböző technikák közül választhatunk.

A tanítás egyik lehetséges módja az alábbi.

  1. A tanítás első lépése a rejtett réteg RBF neuronjainak felvétele, m meghatározása. Általános, hogy annyi RBF neuront használunk, amennyi tanuló adat áll rendelkezésünkre, m=T

  2. Minden egyes bázisfüggvény középpontját a megfelelő tanító adatnak választjuk, c j = x j (T) , j=1, 2, …, m

  3. Kényelmi szempontból választhatjuk az összes bázisfüggvény sugarát egységnyinek, r j =1, j=1, 2, …, m

  4. A kimeneti réteg RBF neuronokhoz kapcsolódó súlytényezőit egyenlővé tesszük a tanító adatokban szereplő kimenetekkel. w j =o j , j=1, 2, …, m. Az állandó egy értékű bemenethez tartozó w 0 súlytényezőt nullának választjuk, azaz a kimeneti neuron ingerküszöbét (eltolását) nullára állítjuk.

  5. A T tanító adatra kiszámítjuk az RBF hálózat T elemű y oszlopvektorát. Ennek j-edik eleme

  6. A súlytényezők meghatározására a korábban már ismertetett hiba (vagyis a várt és a számított kimenet eltérése) négyzetének minimalizálását használhatjuk.

A j-edik súlytényező módosításához az E hiba w j szerinti parciális deriváltját használhatjuk a korábban ismertetett módszerhez hasonlóan.

Ez az alapalgoritmussal értelmezi az RBF hálózatműködését és a tanítás feladatát.

Lehetőségek a rejtett réteg neuronjainak paraméterezésére (számuk, középpontjuk, sugaruk):

  • Az összes tanító adathoz egy-egy RBF neuron választása, a neuron középpontjának a megfelelő tanító bemenetet rendelve. A módszer kis adathalmazokra megfelelő. Több adatnál, különösen online jelfeldolgozási feladatok megoldására, ahol az idő előrehaladtával sokasodnak az adatok, rendszerezettebb megoldás szükséges.

  • A feladattól igencsak függő lehetőség az adathalmaz véletlenszerű mintavételezése, természetesen megfelelő számú adatot választva RBF neuron középpontnak. A probléma jellegéhez illeszkedve több adatot kell választani például a határokon vagy ott, ahol a közelítendő függvény erősen nemlineáris. Mivel általában előre nem ismerjük az adateloszlást, a módszer nem a legjobb, erősen problémafüggő.

  • A mintapéldában szereplő kétlépéses módszerrel (RBF választás, majd súlyok hangolása) szemben egy lépésben is választhatunk RBF neuron középpontokat és a kimeneti réteghez vezető súlytényezőket. A középpontokat egy nagyobb halmazból regresszióval, ortogonális legkisebb négyzetek módszerével határozhatjuk meg, kiejtve a felesleges adatokat. A módszer hasonló a bemutatott legkisebb négyzetek módszeréhez, azaz a hibanégyzet minimalizálásához.

  • A k-közép csoportosítás (k-means clustering) az adatok magas sűrűségű területei (csoportjai) közelébe helyezi a középpontokat. Mivel néhány feladattípusnál egyéb adatterületeken (például a a különböző csoportok közötti, adatokban egyébként ritka határterületeken) is szükségünk van középpontokra, a módszer nem eredményez megfelelő hálózatot.

  • A konstruktív tanulás, más néven az ellenőrzötten növekvő sejtstruktúrák módszere egy kis RBH hálózat inicializálásával és tanításával kezdődik. A tanító adatokból származó hiba alapján döntünk új RBF neuron beillesztéséről. Az új hálózaton is végigfuttatjuk a tanító adatokat és ellenőrizzük a hibát. A neuron beillesztő eljárást addig folytatjuk, amíg a hiba elegendően kicsire nem csökken.

  • Az RBF hálózatok egyik előnye, hogy a rejtett rétegbeli RBF neuronok középpontjának tanításához nincs szükség hiba visszaterjesztésre, a kimeneti réteg súlytényezői egyszerűen a legkisebb négyzetek módszerével módosíthatók. Ennek ellenére felmerülhet a felügyelt tanítás alkalmazása a rejtett RBF neuronok tanítására a kimeneti hiba valamiféle visszavezetésével.

  • A kimeneti réteg súlytényezőinek meghatározása a hálózat többi paraméteréhez képest viszonylag egyszerű. Az kimeneti réteg súlyát offline és online módszerekkel határozhatjuk meg. Az offline módszerek közé tartozik a legkisebb négyzetek módszere. Online megoldás az adaptív legkisebb közép négyzet (Least Mean Square, LMS) algoritmus és a rekurzív legkisebb négyzetek módszere (Recursive Least Squares, RLS).

Az RBF hálózatok egyik alkalmazási területe az idősor modellezés, az F(x): Rn → R funkcionális leképezéssel adott y(t) jel online becslése

 

(4.66)

4.2. Fuzzy halmazok, fuzzy logika

Bizonyos komplex rendszerek leírására és megoldására nincsenek hatékony (számítógépesíthető) algoritmusaink. A komplexitás leginkább a rendszerről rendelkezésünkre álló információ mennyiségéből és minőségéből eredő bizonytalanság miatt jelentkezik. Az emberi felfogóképesség korlátozott mennyiségű információ egyidejű befogadására és feldolgozására képes, mégis képesek vagyunk összetett rendszerekről fogalmat alkotni, következtetéseket levonni. Ennek matematikaileszköze a fuzzy logika módszereit alkalmazó közelítő következtetés (approximate reasoning).

A fuzzy logika, a fuzzy halmazok elmélete a kétértelműségből (ambiguity), pontatlanságból (imprecision) és az információ hiányából adódó bizonytalanság kezelésére alkalmas matematikai eszköz.

Lotfi A. Zadeh 1965-ös „Fuzzy Sets” című cikkében írta le először a nem éles határú halmazokat. A hagyományos (crisp névvel is illetett) halmazok esetén az elem vagy beletartozik a halmazba, vagy nem. A halmazba tartozás mértéke egy, a másik eset nulla értékkel jellemezhető 4.18. ábra - Az ötnél kisebb valós számok halmaza), vagy a klasszikus logika fogalmait kölcsönözve igaz és hamis adja meg, hogy egy elem az adott halmazba tartozik--e vagy sem. A színek közül a fehér jelezheti a halmazba tartozást, fekete pedig a halmazon kívüliséget.

Az ötnél kisebb valós számok halmaza
4.18. ábra - Az ötnél kisebb valós számok halmaza


A fuzzy halmazokba tartozás számszerű mértékét a nulla és egy közötti értéket felvehető tagsági függvénnyel adjuk meg (4.19. ábra - A valós számok halmazán értelmezett „körülbelül öt” fuzzy halmaz). A logika fogalmaival a fuzzy halmazba tartozás mértéke az igaz és hamis között részleges igazságként adható meg teljesen, kevésbé, közepesen, alig, egyáltalán nem jellegű fogalmakkal. A fehér és fekete színek között a különböző szürke árnyalatokat feleltethetjük meg a fuzzy halmazba tartozás mértékének.

A valós számok halmazán értelmezett „körülbelül öt” fuzzy halmaz
4.19. ábra - A valós számok halmazán értelmezett „körülbelül öt” fuzzy halmaz


A (4.19. ábra - A valós számok halmazán értelmezett „körülbelül öt” fuzzy halmaz) ábrán a hagyományos halmaz Venn-diagramja mellett két fuzzy halmaz szerepel. A hagyományos halmaz elemeit az alaphalmazon értelmezett halmazba tartozás mértékét diagramon ábrázolva 0 vagy 1 értékű, négyszögimpulzus jellegű a függvény. Fuzzy halmazokat a halmazba tartozás [0,1] intervallumba eső mértékét leképező szakaszonként lineáris vagy folytonos függvénnyel ábrázolunk.

Hagyományos és fuzzy halmaz
4.20. ábra - Hagyományos és fuzzy halmaz


Az X alaphalmazon értelmezett A: X → {0 ; 1}, más jelöléssel A = {x | xA } hagyományos halmaz karakterisztikus („tagsági”) függvénye

 

(4.67)

Az X alaphalmazon értelmezett A: X → [0 ; 1] fuzzy halmaz tagsági függvénye

 

(4.68)

Zadeh 1965-ös áttörést jelentő cikkétől az elmélet gyorsan és folyamatosan fejlődik. Az 1970-es évek közepétől Japánban megjelentek a fuzzy logikához kapcsolódó szabadalmak és gyakorlati alkalmazások. Ehhez kicsit később csatlakoztak az alapvetően az arisztotelészi kétértékű logikán nevelkedett szakemberek, így Európában, az Amerikai Egyesült Államokban és a világ más részein is egyre több a fuzzy alkalmazás. Nagyon összetett, teljesen esetleg nem is érthető vagy szubjektív megítélésű rendszerek modellezése és az emberi érékelést, következtetést, döntést mindenképpen igénylő folyamatok a fuzzy logika fő alkalmazási területei.

A fuzzy halmazok és fuzzy logika ismertetése előtt tekintsük át a klasszikus kétértékű logika és a hagyományos halmazok alapfogalmait.

4.2.1. Klasszikus logika, hagyományos halmazok

A klasszikus kétértékű logikában (Boole-algebra) a logikai változó igazságértéke 0 (hamis) vagy 1 (igaz), az igazságértékek halmaza két elemű: {0,1}. Egy unáris és két bináris alapműveletet értelmezünk (p és q jelű logikai változókkal)

  • az egy logikai változóra értelmezhető negálás: ¬p

  • a két logikai változó közötti VAGY kapcsolat (diszjunkció): pq

  • a két logikai változó közötti ÉS kapcsolat (konjunkció): pq

A logikai összefüggéseket gyakran igazságtáblán (4.8. táblázat - Negálás, diszjunkció és konjunkció p és q logikai változókra) szemléltetjük.

4.8. táblázat - Negálás, diszjunkció és konjunkció p és q logikai változókra

p

q

¬ p

p q

p q

0

0

1

0

0

0

1

1

1

0

1

0

0

1

0

1

1

0

1

1


A fenti három alapművelet felhasználásával a többi kétváltozós logikai alapművelet (implikáció, ekvivalencia stb.) előállítható. Bármely logikai állítás értéke igaz vagy hamis lehet, számokkal 0 vagy 1.

Az állítás lehet

  • egy logikai változó (pl. p)

  • egy logikai változó negáltja (pl. ¬p)

  • VAGY kapcsolatban lévő két logikai változó: pq

  • ÉS kapcsolatban lévő két logikai változó: pq

  • a fentiek kombinációjából felépített összetett logikai kifejezés (pl. (¬p) ∧ (pq)

Összetett logikai kapcsolat (állítás) igazságértékét az alkotó logikai változók igazságértékén keresztül értékeljük ki a logikai műveletek alkalmazásával, a „belülről kifelé” szabály betartásával.

A klasszikus logikai műveletek tulajdonságai (p, q és r jelű logikai változókkal)

  • kommutativitás: p∧q = q∧pés p∨q = q∨p

  • asszociativitás: p∧(q∧r) = (p∧q)∧r és p∨(q∨r) = (p∨q)∨r

  • disztributivitás: p∧(q∨r) = (p∧q)∨(p∧r) és p∨(q∧r) = (p∨q)∧(p∨r)

  • egységelem: p∧1 = p

  • nullelem: p∨0 = p

  • elnyelési tulajdonság: p∧0 = 0 és p∨1 = 1

  • idempotencia: p∧p = p és p∨p = p

  • involució: ¬(¬p) = p

  • De Morgan azonosságok: ¬(p∧q) = ¬p∨¬q és ¬(p∨q) = ¬ p∧¬q

  • a harmadik kizárásának elve: p∨¬ p = 1

  • az ellentmondás elve: p∧¬p = 0

A hagyományos halmazok esetén a halmazba tartozás egyértelműen eldönthető, igennel vagy nemmel. Bármilyen (pl. az A) halmazt mindig valamilyen (X) alaphalmazon értelmezhetünk (4.18. ábra - Az ötnél kisebb valós számok halmaza és 4.19. ábra - A valós számok halmazán értelmezett „körülbelül öt” fuzzy halmaz). Az xX alaphalmazbeli elem (X alaphalmazon értelmezett) A halmazba tartozását xA-val jelöljük. Ha az xA elem nem tartozik az A halmazba, jele xA.

Szükségünk van az üres halmaz, a halmazok egyenlősége, a részhalmaz és a hatványhalmaz fogalmára.

Az üres halmaznak (∅) nincs eleme.

Az A és B halmaz egyenlő (A = B), ha elemeik azonosak. Ha ez nem teljesül, a két halmaz nem egyenlő: AB.

A és B tetszőleges halmazok esetén A részhalmaza B-nek, ha B tartalmazza A összes elemét:  AB = { ∀ xX  | ha xA ,akkor xA}.

Ha AB, de AB (B-nek van legalább egy eleme, ami nem eleme A-nak), akkor A halmaz a B valódi részhalmaza AB).

X hatványhalmaza tartalmazza X összes részhalmazát: ℘ (X) = { A | A ⊆ X }.

Hagyományos halmazokon értelmezhető műveletek

  • negálás, komplemensképzés (jele felülvonás vagy aposztróf): A’!Szintaktikai hiba, { = { x | x ∉ A }

  • két halmaz metszete, ÉS kapcsolat, konjunkció (jele ∩): AB = { x | xA xB}

  • két halmaz uniója, VAGY kapcsolat, diszjunkció (jele ∪): AB = { x | xA xB}

  • két halmaz különbsége (jele \): A\B = { x | xA xB}

A halmazműveletek tulajdonságai (az X alaphalmazon értelmezett A, B és C halmazokkal)

  • kommutativitás: AB = BA és AB = BA

  • asszociativitás: A ∩ (BC) = (AB) ∩ C és A ∪ (BC) = (AB) ∪ C

  • disztributivitás: A ∩ (BC) = (AB) ∪ (AC ) és $ A ∪ (BC) = (AB) ∩ (AC)

  • egységelem: AX = A

  • nullelem: A ∪ ∅ = A

  • elnyelési tulajdonság: A ∩ ∅ = ∅ és AX = X

  • idempotencia: AA = A és AA = A

  • involució: (A’)’ = A

  • De Morgan azonosságok: (AB)’ = A’B’ és (AB)’ = A’B’

  • a harmadik kizárásának elve: AA’ = X

  • az ellentmondás elve: AA’ = ∅

Hagyományos halmazműveletek
4.21. ábra - Hagyományos halmazműveletek


A klasszikus logika és a hagyományos halmazok közötti kapcsolatot a halmazok definiáló összefüggésében és karakterisztikus egyenletükben találjuk, ahol a klasszikus logika írásmódját alkalmazzuk.

A χ A (x) és χ B (x) karakterisztikus függvénnyel matematikai összefüggésként (többféleképpen is) le tudjuk írni a halmazműveleteket (4.21. ábra - Hagyományos halmazműveletek).

  • negálás, komplemensképzés (jele felülvonás vagy aposztróf): χ A’ (x) = 1 - χ A (x) vagy χ A’ (x) = (1 – (χ A (x))2)½

  • két halmaz metszete, ÉS kapcsolat, konjunkció (jele ∩): χ A (x) ∩ χ B (x) = min (χ A (x), χ B (x)) vagy χ A (x) ∩ χ B (x)  =  χ A (xχ B (x)

  • két halmaz uniója, VAGY kapcsolat, diszjunkció (jele ∪): χ A (x) ∪ χ B (x) = max (χ A (x), χ B (x)) vagy χ A (x) ∪ χ B (x) =  χ A (x) + χ B (x) -  χ A (xχ B (x)

AB is kifejezhető a karakterisztikus függvényekkel: ABχ A (x) ≤  χ B (x)

4.2.2. A fuzzy halmazok tulajdonságai

A hagyományos halmaz [0,1] értékkészletű karakterisztikus függvényét terjeszti ki a fuzzy halmazokon értelmezett tagsági függvény a {0,1} intervallumra. Az X alaphalmazon értelmezett A fuzzy halmaz tagsági függvénye

 

(4.69)

Fuzzy halmaz megadási lehetőségei különböző jellegű halmazok esetén (a leggyakrabban használtak)

  • x 1 , x 2 , … , x n X n diszkrét elemből álló A fuzzy halmaz két jelölése

  • szakaszonként lineáris, trapéz alakú tagsági függvény (és speciális esete a háromszög)ahol a < b < c < d a trapéz négy csúcsának vízszintes koordinátája (háromszögnél b=c) és 0 < λ ≤1 a tagsági függvény maximális magassága

  • szakaszonként exponenciális tagsági függvény, a trapéz (és háromszög) „legömbölyített” változata

  • az intervallum fuzzy halmazt két (akár „szögletes”, akár „gömbölyded”) tagsági függvény adja meg úgy, hogy a fuzzy halmazba tartozó minden alaphalmazbeli értékhez két tagsági érték, egy alsó és egy felső tartozik

  • singleton vagyis egyetlen x 0 X pontban egy, máshol nulla értékű tagsági függvénnyel adott fuzzy halmaz

A fuzzy halmaz magassága (az angol height rövidítéséből) a μ A tagsági értékek legnagyobbika (supremum), egy szám

 

(4.70)

A fuzzy halmaz normális, azaz magassága egy, hgt(A) = 1, ha létezik xA elem, hogy μ A (x)=1.

A szubnormális fuzzy halmaz magassága hgt(A) < 1.

A szubnormális fuzzy halmaz normalizálható, ha az összes tagsági értéket elosztjuk a halmaz hgt(A) magasságával.

 

(4.71)

A fuzzy halmaz tartójának vagy hordozójának (support) nevezzük az alaphalmaz hagyományos részhalmazát, ahol a fuzzy halmaz tagsági érték nem zérus

 

(4.72)

A fuzzy halmaz magjának (core vagy kernel) nevezzük az alaphalmaz hagyományos részhalmazát, ahol a fuzzy halmaz tagsági értéke egy

 

(4.73)

A fuzzy halmaz α-vágatának (α-cut) nevezzük az alaphalmaz hagyományos részhalmazát, ahol a fuzzy halmaz tagsági értéke legalább α ∈ [0,1]

 

(4.74)

Érvényes a core(A) = 1 - cutα(A) összefüggés, a supp(A) = 0 - cutα(A) viszont nemmindig igaz.

Fuzzy halmaz tartója, magja és α-vágata
4.22. ábra - Fuzzy halmaz tartója, magja és α-vágata


A fuzzy halmaz erős vagy szigorú α-vágatának (strict α-cut) nevezzük az alaphalmaz hagyományos részhalmazát, ahol a fuzzy halmaz tagsági értéke nagyobb α-nál.

 

(4.75)

Szinthalmaznak nevezzük az A fuzzy halmaz összes lehetséges egymástól különböző α-vágatát tartalmazó halmazt valamely xX -re

 

(4.76)

Felbontásnak (decomposition) nevezzük az A fuzzy halmaz megadását összes lehetséges α -vágatával. Az α -vágatok α -szorosának uniójaként definiált felbontás

 

(4.77)

A μ A tagsági függvény unimodális ha pontosan egy globális vagy lokális maximuma van.

A fuzzy halmaz konvex, ha μ A tagsági függvénye unimodális. Másképpen

 

(4.78)

Még ha a fuzzy halmaz konvex is, tagsági érték függvénye nem feltétlenül konvex.

A fuzzy halmaz nem konvex, ha μ A tagsági függvénye multimodális, azaz több lokális maximuma van.

Fuzzy számnak (fuzzy number) nevezzük a valós számok halmazán értelmezett folytonos tagsági függvényű, konvex, normalizált fuzzy halmazt.

A fuzzy halmaz (skaláris) számosságának (cardinality) nevezzük a halmazelemek tagsági függvény értékének összegét

 

(4.79)

A hagyományos halmaz számossága elemeinek számával egyenlő, amit a karakterisztikus függvénnyel is felírhatunk a fuzzy halmaz számosságához hasonlóan

 

(4.80)

A fuzzy számosság a skalár számossághoz hasonlóan értelmezhető, értéke azonban az fcard(A) fuzzy szám. Az A fuzzy halmaz Λ A szinthalmazában megtalálható valamennyi α értékre az α-vágat (hagyományos) halmaz számosságához rendeli α értékét

 

(4.81)

Fuzzy részhalmaz (AB)

 

(4.82)

Az X alaphalmaz tagsági függvénye μX(x) = 1, az ∅ üres halmazé μ∅(x) = 0 $. A hagyományos halmazokhoz hasonlóan ∅ ⊆ A és AX.

Fuzzy halmazok egyenlősége (A = B, a hagyományos halmazokhoz hasonlóan, vagyis AB és AA)

 

(4.83)

4.2.3. Fuzzy halmazműveletek

4.2.3.1. Hagyományos halmazműveletek kiterjesztése

A hagyományos halmazok karakterisztikus függvénnyel definiált egyik matematikai művelet megfeleltetését terjesszük ki fuzzy halmazokra az alábbiak szerint (ezeket nevezzük szokványos fuzzy halmazműveleteknek)

  • negálás, komplemensképzés (jele felülvonás vagy aposztróf): μ A’ (x) = 1 – μ A (x)

  • két halmaz metszete, ÉS kapcsolat, konjunkció (jele ∩): μ A’ (x) ∩ μ B’ (x) = min(μ A’ (x), μ B’ (x))

  • két halmaz uniója, VAGY kapcsolat, diszjunkció (jele ∪): μ A’ (x) ∪ μ B’ (x) = max(μ A’ (x), μ B’ (x))

Szokványos fuzzy halmazműveletek
4.23. ábra - Szokványos fuzzy halmazműveletek


A De Morgan azonosságok teljesülnek

 

(4.84)

A harmadik kizárásának elve nem teljesül minden esetben

 

(4.85)

A levezetés alapján kiderül, hogy a harmadik kizárása csak akkor teljesül, ha A hagyományos halmaz és μA’(x) = ∅ (üres halmaz) vagy μA’(x) = X (az alaphalmaz).

Az ellentmondás elve sem teljesül minden esetben

 

(4.86)

A levezetés alapján kiderül, hogy az ellentmondás elve csak akkor teljesül, ha A hagyományos halmaz és és μA’(x) = ∅ (üres halmaz) vagy μA’(x) = X (az alaphalmaz).

4.2.3.2. Fuzzy halmazművelet csoportok

Fuzzy halmazokkal kapcsolatos művelteket a hagyományos halmazokon definiált három alapművelet kiterjesztéseként az alábbi függvények segítségével értelmezzük.

  • negálás: N: [0,1] → [0,1], függvénnyel

  • metszet: T: [0,1] × [0,1] → [0,1], függvénnyel

  • unió: S: [0,1] × [0,1] → [0,1], függvénnyel

Negálás a klasszikus kétértékű komplemensképzés kiterjesztése.

Ha teljesül az első két feltétel, az N függvényt negálásnak nevezzük, ha a harmadik és negyedik feltétel is teljesül, a negálás szigorú, az ötödik feltételt is kielégítőt pedig erősnek nevezzük.

  1. N(0)=1 és N(1)=0 (a hagyományos negálás)

  2. Minél nagyobb egy elem tagsági értéke az A halmazban, annál kisebb legyen A’-ban. Emiatt N nem növekvő függvény: x 1 x 2 N(x 1 ) ≥ N(x s )

  3. N szigorúan csökkenő

  4. N folytonos

  5. N involutív: N(N(x))  = x $

Néhány gyakori fuzzy negálás

  • szokványos, egyből kivonással

  • szigorú, de nem erős

  • θ küszöbértékes

  • cos függvényes

  • Sugeno-féle parametrikus osztály, λ > -1

  • Yager-féle parametrikus osztály, λ ∈ (0,∞)

Metszet (konjunkció), fuzzy t-norma (trianguláris norma) a klasszikus kétértékű konjunkció kiterjesztése.

Ha teljesülnek az alábbi feltételek, a T függvényt konjunkciónak nevezzük.

  • a hagyományos halmazoknál az egységelemre vonatkozó X ∩ A = A megfelelője T(μ X (x), μ A (x)) = T(1, μ A (x)) = μ A (x)

  • a hagyományos halmazoknál értelmezett A ∩ B = B ∩ A kommutativitás megfelelője T(μ A (x), μ B (x)) = T(μ B (x), μ A (x))

  • a hagyományos halmazoknál értelmezett „Ha A ⊆ B, akkor A∩C ⊆ B∩C” monotonitás megfelelője, hogy T nem csökkenő függvény, vagyis T(μ A (x), μ C (x)) ≤ T(μ B (x), μ C (x)), ha μ A (x) ≤ μ B (x)

  • a hagyományos halmazoknál értelmezett A∩(B∩C) = (A∩B)∩C asszociativitás megfelelője T(μ A (x), T(μ B (x), μ C (x))) = T(T(μ A (x), μ A (x)), μ C (x))

Néhány gyakori t-norma

  • minimum (Gödel--norma)

  • szorzat

  • Łukasiewicz t-norma

  • drasztikus t-norma

  • nilpotens minimum (nilpotens jelentése: ∀ μ A (x) ∈ (0,1) esetén ∃ μ B (x) ∈ (0,1), hogy μ A (x) és μ B (x) ∈ (0,1) t-normája nulla értékű)

  • Hamacher-szorzat

  • Schweizer-Klar t-norma, λ ∈ R \{0}

  • Yager t-norma, λ ∈ (0, ∞)

Unió (diszjunkció), fuzzy s-norma vagy t-konorma (trianguláris norma konormája) a klasszikus kétértékű diszjunkció kiterjesztése.

Ha teljesülnek az alábbi feltételek, az S függvényt diszjunkciónak nevezzük.

  1. a hagyományos halmazoknál az üres halmazra vonatkozó ∅ ∪ A = A megfelelője S(μ (x), μ A (x)) = S(0, μ A (x)) = μ A (x)

  2. a hagyományos halmazoknál értelmezett A ∪ B = B ∪ A kommutativitás megfelelője S(μ A (x), μ B (x)) = S(μ B (x), μ A (x))

  3. a hagyományos halmazoknál értelmezett „Ha A ⊆ B, akkor A∪C ⊆ B∪C” monotonitás megfelelője, hogy S nem csökkenő függvény, vagyis S(μ A (x), μ C (x)) ≤ S(μ B (x), μ C (x)), ha μ A (x) ≤ μ C (x)

  4. a hagyományos halmazoknál értelmezett A∪(B∪C) = (A∪B)∪C asszociativitás megfelelője S(μ A (x), S(μ B (x), μ C (x))) = S(S(μ A (x), μ B (x)), μ C (x))

Néhány gyakori s-norma (másnéven t-konorma)

  • maximum (a minimum konormája)

  • valószínűségi összeg (a szorzat konormája)

  • korlátos összeg (a Łukasiewicz t-norma konormája)

  • drasztikus t-konorma

  • nilpotens maximum

  • Hamacher-szorzat konormája

  • Schweizer-Klar t-konorma, λ ∈ R \{0}

  • Yager t-konorma, λ ∈ (0, ∞)

De Morgan hármasnak nevezzük azt a {T,S,N} hármast, ahol T t-norma, S t-konorma, N szigorú negálás és fennáll a két De Morgan azonosság.

  • Zadeh-féle:

  • szorzat:

  • Łukasiewicz-féle:

Duális t-norma pár T és S normája a szokványos „1-”negálással kielégíti a De Morgan azonosságokat.

4.9. táblázat - Duális t-norma párok

∩: t-norma

: t-konorma (s-norma)


Az intervallum értékű fuzzy halmazokra, a μA(x)=[ μA,alsó(x), μA,felső(x)] és a μB(x)=[ μB,alsó(x), μB,felső(x)] intervallum tagsági függvénnyel adott A és B halmazra külön kell értelmeznünk a halmazműveleteket (pl. a {min, max, 1-} hármassal)

  • metszet

  • unió

  • negálás

4.2.4. Relációk

Először a hagyományos halmazokon értelmezhető relációkat tekintjük át, majd ezeket kiterjesztjük fuzzy halmazokra.

Két halmaz Descartes-szorzata (direkt szorzata) az összes olyan rendezett pár halmaza, ahol a pár első eleme az egyik, második eleme a másik halmaz eleme.

 

(4.87)

Több halmaz Descartes-szorzata az összes olyan rendezett szám n-es halmaza, ahol az első elem az első, a második elem a második, …, az n-edik elem az n-edik halmaz eleme.

 

(4.88)

Ha az összes halmaz azonos, X 1 = X 2 = … = X n = X, akkor Descartes-szorzatuk jele X n .

Reláció két halmaz között (bináris reláció) a két halmaz X×Y Descartes-szorzatának R X×Y X×Y részhalmaza. xX és yy relációját kétféleképpen jelöljük (x,y) ∈ R X×Y vagy x(R X×Y )y.

 

(4.89)

A véges n-elemű X = {x 1 , x 2 , …, x n } és a véges m-elemű Y = {y 1 , y 2 , …, y m } halmaz X×Y Descartes-szorzatán értelmezett R X×Y , röviden R részhalmazt, a két halmaz közötti bináris relációt n×m méretű, r ij ∈ {0,1} elemekből álló mátrix adja meg

 

(4.90)

ahol i=1, 2, …, n és j=1, 2, …, m.

A reláció inverze az Y×X Descartes-szorzaton értelmezett R -1 Y×X reláció, karakterisztikus függvénnyel

 

(4.91)

Relációk kompozíciója két bináris reláció, PX×YX×Y és QY×ZY×Z kapcsolata, az X×Z Descartes-szorzaton értelmezett RX×ZX×Z reláció, ha létezik yY, amire (x,y) ∈ PX×Y és (y,z) ∈ QY×Z

 

(4.92)

A kompozíció tulajdonságai

 

(4.93)

 

(4.94)

 

(4.95)

Véges sok halmaz közötti reláció megadja, hogy az egyes halmazok elemei kapcsolatban vannak-e egymással vagy sem.

A halmazok közötti reláció az n halmaz X 1 × X 2 × … × X n Descartes-szorzatának RX1×X2×…×XnX 1 × X 2 × … × X n részhalmaza. x 1 X 1 , x 2 X 2 , …, x n X n (x1, x2, …, xn) ∈ RX1×X2×…×Xn -el jelöljük. Használhatjuk még a reláció karakterisztikus függvényét is

 

(4.96)

Bináris (két halmaz közötti) fuzzy reláció véges halmazok esetén az n-elemű X = {x1, x2, …, xn} és a véges m-elemű Y = {y1, y2, …, ym} halmaz X×Y = {x1, x2, …, xn}×{y1, y2, …, ym} Descartes-szorzatán értelmezett RX×Y, röviden R részhalmaz. Az R relációt az n×m méretű tagsági mátrix adja meg

 

(4.97)

ahol r ij = μ R (xi, yj) ∈ [0,1], i=1, 2, …, n és j=1, 2, …, m. Szokás még páros gráfként ábrázolni a véges halmazok között értelmezett bináris fuzzy relációt.

A bináris fuzzy reláció tekinthető a függvényfogalom kiterjesztésének, megadhatjuk az értelmezési tartománynak, értékkészletnek és inverz függvénynek megfelelő fogalmakat.

A reláció értelmezési tartománya (domain) a dom(R) ⊆ X fuzzy részhalmaz, tagsági függvénye az xX értékekre

 

(4.98)

A reláció értékkészlete (range) a ran(R) ⊆ Y fuzzy részhalmaz, tagsági yY értékekre

 

(4.99)

A reláció inverze az Y×X Descartes-szorzaton értelmezett R -1 Y×X fuzzy reláció, tagsági függvénye

 

(4.100)

A véges halmazok közötti bináris fuzzy reláció tagsági mátrixát invertálva kapjuk az inverz reláció tagsági mátrixát.

Minden R bináris fuzzy relációra igaz, hogy (R-1)-1 = R.

Két fuzzy reláció kompzíciójához többféleképpen rendelhetünk tagsági függvényt.

A PX×YX×Y és QY×ZY×Z fuzzy reláció kompozíciója az X×Z Descartes-szorzaton értelmezett RX×ZX×Z reláció, ha létezik yY, amire (x,y) ∈ PX×Y és (y,z) ∈ QY×Z

Az egyik legelterjedtebb módszer a Zadeh-féle max-min kompozíció.

 

(4.101)

A max-prod kompozícióban a min helyett szorzás szerepel

 

(4.102)

Gyakran használjuk a max-average kompozíciót is, ahol az eredeti min helyett átlag (average) szerepel

 

(4.103)

A fuzzy kompozíció általános alakját a T t-norma és az S s-norma (t-konorma) segítségével így írhatjuk fel

 

(4.104)

Véges sok halmaz közötti fuzzy reláció az egyes halmazok elemei közötti összerendeltség mértékét adja meg.

Az n darab X 1 , X 2 , …, X n halmaz közötti fuzzy reláció a μ R (x1, x2, …, xn) tagsági függvénnyel jellemzett fuzzy halmaz

 

(4.105)

Az R (pontosabban R X1 × X2 ×…× Xn ) fuzzy reláció bármelyik cutα(R) α-vágata „hagyományos” reláció ugyanezen halmazok között.

Vetület (projekció), vagyis az n-dimenziós tér (információvesztéssel járó) vetítése n-nél kisebb dimenziós térre.

Jelöljük az X 1 × X 2 × … × X n alaphalmazok Descartes-szorzataként értelmezett alaphalmaz elemeit vektorral

 

(4.106)

magát az alaphalmazt pedig X × vektorral (a felső indexben a Descartes-szorzat szimbólumával)

 

(4.107)

Az m<n dimenziós térre vett, hasonlóképpen vektorként jelölt y vetületet a sorozatként értelmezett x vektor részsorozatának nevezzük és y x -el jelöljük, ha x elemeinek csak egy részét tartalmazza.

Ha például a k-adik elemet hagyjuk el a vetítés során

 

(4.108)

Ekkor a csökkentett dimenziójú alaphalmazt X × mintájára az X × vektorral jelöljük

 

(4.109)

Az fuzzy reláció fuzzy relációra vett vetületét (projekcióját) az -on értelmezett szintén fuzzy relációval jellemezzük, tagsági függvénye

 

(4.110)

Véges számosságú X × esetén sup helyett max is használható.

Hengeres kiterjesztés, vagyis az m-dimenziós tér kiterjesztése m-nél nagyobb dimenziós (korábban nem definiált dimenziókat tartalmazó) térre.

Az előző példa szerint (ahol a k-adik elem hiányzik) az X ×-ban megtalálható, de az X ×\ Y ×-ből hiányzó dimenzió az X k alaphalmazzal jellemezhető.

Az fuzzy reláció fuzzy relációra vett hengeres kiterjesztésének nevezzük az jelölésű, X ×-en értelmezett, szintén fuzzy relációt minden x vektorra, amire y x -el. A hengeres kiterjesztés fuzzy reláció tagsági függvénye

 

(4.111)

A hengeres kiterjesztés eredménye a vizsgált RY× projekcióval kompatibilis legnagyobb fuzzy reláció. Ez a hengeres kiterjesztés az adott projekcióval kompatibilisek között a legkevésbé specifikus.

Egy fuzzy relációt közelíthetünk az egyes dimenzióira vett vetületei hengeres kiterjesztésének metszetével. Ez az összes vetület ismeretében is általában csak közelítheti a vizsgált relációt.

Kompozíció alkalmazásával határozhatjuk meg a B Y fuzzy halmazt az RX×Y fuzzy reláció és az A X fuzzy halmaz ismeretében. Fuzzy szabályalapú rendszerekben a következmény (B) meghatározására a szabályt (R reláció) és a megfigyelést (A) használjuk.

Az A és R kompozíciójaként előállítható a B = AR fuzzy halmaz.

  • Első lépés A kiterjesztése az X×Y Descartes-szorzatra

  • Ezután a reláció és a kiterjesztés metszetét állítjuk elő

  • Végül az eredményt $ Y $-ra vetítjük

Így az A X fuzzy halmaz és az RX×Y reláció ismeretében a kompozícióval meghatározott B fuzzy halmaz

 

(4.112)

A B fuzzy halmaz tagsági függvénye, min metszet művelettel és a vetítés max (sup) műveletével

 

(4.113)

Aggregációs operátorokra is szükségünk lesz a fuzzy szabályrendszerek kiértékelésénél.

Az függvényt aggregációs operátonak nevezzük, ha

Aggregációs operátor

  • a T(a)=a feltételt kielégítő T(a,b) t-normák

  • az S(a)=a feltételt kielégítő S(a,b) S-normák

  • a súlyozott számtani közép

  • a súlyozott mértani közép

  • az (x 1 , x 2 , …, x n ) szám n-es csökkenő sorrendbe rendezésével előállított vektor, ahol i=1, 2, …, n és , valamint a w = [w 1 , w 2 , …, w n ] súlyvektor skaláris szorzata adja a w súlyvektorhoz tartozó rendezett súlyozott átlagot (ordered, weighted average, owa)

4.2.5. Fuzzy szabályalapú rendszerek

A fuzzy szabályalapú rendszerek szabályait természetes nyelvi kifejezésekkel fogalmazzuk meg ha-akkor kapcsolatokként. Az emberi tudásból nyert, fuzzy halmazként kezelt nyelvi változókkal (pl.nagyon gyors, hideg, közepesen erős) leírt szabályokat fuzzy relációkként dolgozzuk fel.  A szabálybázisban lévő szabályok alapján következtetéssel határozzuk meg a bemenetekhez (megfigyelésekhez) tartozó kimeneteket (következtetéseket).

Fuzzy szabályalapú rendszereket igen gyakran használunk irányítási feladatok megoldására is. Az első fuzzy következtető algoritmust a kompozíciós következtetést (Compositional Rule of Inference, CRI) L.A.Zadeh készítette 1973-ban. Az első működő fuzzy logikai irányítást (erősen nemlineáris gőzgép irányítása) E.H.Mamdani és S.Assilian szintén 1973-ban közölte. Azóta egyre több helyen találkozunk fuzzy elveket követő irányítási rendszerekkel (pl. mosógép, fényképezőgép, földalatti, lift, hogy csak néhányat említsünk.)

Zadeh 1973-as következtető módszere a nagy bonyolultságú rendszereket nyelvi változókkal (fuzzy halmazok) és „HA-AKKOR” szabályokkal írja le. A szabályok értékelése magas dimenziójú fuzzy relációkkal, bonyolult, számításigényes módszerrel történik. Ezt egyszerűsítette Mamdani 1975-ös modelljében. A Zadeh-féle n-dimenziós relációként leképezett szabályok helyett Mamdani n darab egydimenziós relációból indul ki. A reláció-vetületek hengeres kiterjesztésének metszetét használja, ezzel erősen csökken a számításigény.

A fuzzy szabályalapú (irányítási) rendszerek egységei:

  • a tudásbázis a fuzzy szabályokba foglalt (emberi megfigyelésen alapuló) „tudással” és a fuzzifikáláshoz, defuzzifikáláshoz szükséges adatokkal

  • a numerikus bemeneteket fuzzy halmazokra leképező fuzzifikáló egység az illeszkedés vagyis halmazba tartozás mértékét határozza meg

  • a döntéshozó vagy következtető modul határozza meg a szabályok alapján a kimenet(ek)hez tartozó fuzzy halmaz(oka)t

  • a defuzzifikáló a következtetés eredményeképpen kapott fuzzy halmazokat az itányítandó folyamat számára kezelhető numerikus értékekké alakítja

4.2.5.1. Nyelvi változók, módosítók

A fuzzy szabályalapú rendszerekben használt nyelvi kifejezések az ember (szakértő, üzemeltető) által megfogalmazott, jó értelemben bizonytalan kifejezéseket az általában számítógépen megvalósított fuzzy rendszer számára értelmezhetően írják le. A nyelvi kifejezésekben lévő nyelvi változókat nyelvi módosítókkal és műveletekkel kapcsoljuk össze. A nyelvi (lingvisztikai) változókat az alaphalmazra vonatkoztatott fuzzy halmazokként definiáljuk. Egy nyelvi változó több értéket vehet fel, mindegyiket egy fuzzy halmaz képez le (pl. a hőmérséklet mint nyelvi változó lehetséges értékei hideg, hűvös, kellemes, meleg, forró).

A V (variable) nyelvi változót öt jellemzője határozza meg, V = (N, G, T, X, M):

  • N (name) a V nyelvi változó neve

  • G (grammar) a nyelvtan

  • T(N) (terms) a nyelvi értékek nevéből a nyelvtan alapján képzett halmaz

  • X az alaphalmaz

  • M (mapping) leképezés, a nyelvi érték és a fuzzy halmaz összerendelésének szemantikai szabálya

Példa nyelvi változóra a (4.24. ábra - Bemenet és kimenet fuzzy felosztása) ábrán szereplő hőmérséklet: N=hőmérséklet, T(N)={hideg, hűvös, kellemes, meleg, forró}, X=[0°C, 100°C] és a hőmennyiség: N=hőmennyiség, T(N)={ negatív nagy, negatív kics, nulla, kicsi, nagy}, Y = [-100 %, 100 %].

Bemenet és kimenet fuzzy felosztása
4.24. ábra - Bemenet és kimenet fuzzy felosztása


Nyelvi módosító például a legalább és legfeljebb, ezekkel – és társaikkal – a fuzzy halmazokat módosíthatjuk, ezt szemléltetik a (4.25. ábra - Nyelvi változó fuzzy reprezentációja és nyelvi módosítók) ábrán szereplő legalább hűvös és legfeljebb meleg módosított nyelvi értékek.

Nyelvi változó fuzzy reprezentációja és nyelvi módosítók
4.25. ábra - Nyelvi változó fuzzy reprezentációja és nyelvi módosítók


A nagyon módosítóval a kis tagsági értékeket tudjuk tovább csökkenteni, a összefüggéssel, „szűkítjük”, koncentráljuk a fuzzy halmazt (concentrate).

A kis tagsági értékeket növeli a összefüggésű, fuzzy halmazt „szélesítő” módosító, ritkíto (dilute), a többé-kevésbé.

Az értékkészlet felénél, 0,5-nél nagyobb tagsági értékeket (kontrasztot) erősítő, a kisebbeket gyengítő összefüggés (intensify) afokozottan módosító

 

(4.114)

Nyelvi módosítónak tekinthetjük tulajdonképpen a komplemensképzéssel (negálással) leképezhető nem fuzzy halmazműveletet is, az 1- művelettel például (4.25. ábra - Nyelvi változó fuzzy reprezentációja és nyelvi módosítók).

Nyelvi változókat határozunk meg a bemenetekhez (megfigyelésekhez) és kimenetkehez (következtetésekhez). A nyelvi változóhoz tartozó alaphalmazt nyelvi értékekre (és a hozzájuk tartozó tagsági függvényre) kell bontanunk tapasztalataink vagy a rendszermodell alapján. E fuzzy felosztás eredményét elsődleges fuzzy halmazoknak nevezzük.

Az egyes bemenetekhez és kimenetekhez tartozó elsődleges fuzzy halmazok száma határozza meg a maximálisan kialakítható fuzzy szabályok számát. (Például egy öt nyelvi értékű bemenettel és egy három nyelvi értékkel adott kimenettel jellemzett SISO rendszerben ötször három, azaz tizenöt szabályt írhatunk fel.) Minél több részre osztjuk az egyes nyelvi változókat, annál több szabályt írhatunk fel. A szabályok számának növelése persze emeli a számítási igényt, bár nem feltétlenül szükséges az összes lehetséges szabályt használni.

A kompozíciós következtetéshez (CRI) az alaphalmazokat teljesen lefedő ún. „fedő” fuzzy felosztás szükséges, hogy biztosíthassuk a minden lehetőséget lefedő „sűrű” fuzzy szabályrendszert.

A nyelvi módosítókkal a nyelvi változóhoz tartozó nyelvi értékek jellegét (és esetleg számát) befolyásolhatjuk.

4.2.5.2. Fuzzifikálás

A fuzzifikálás tulajdonképpen „életlenítés”, a szabálybázis számszerű (akár egyelemű hagyományos halmaznak is tekinthető) bemenő változóit fuzzy tagsági értékké alakítja, elmossa a halmaz éles határát. A fuzzifikáló az érkező bemenő változót összekapcsolja a megfelelő fuzzy nyelvi változóval és megkeresi, hogy a bemenő jel érték a változó melyik fuzzy halmazába tartozik (eredményez pozitív tagsági értéket). Természetesen ha a bemenet bizonytalansággal nem terhelt, egyértékű fuzzy halmazzá alakíthatjuk (csak az adott bemeneti értékhez tartozik egy tagsági érték, a többi alaphalmazbeli értékhez pedig nulla). Ha a zajos adatról statisztikai információnk van, a zajt sűrűségfüggvényével jellemezhetjük, egyszerűbb azonban a görbe helyett háromszögesített tagsági függvénnyel dolgozni.

Például a (4.24. ábra - Bemenet és kimenet fuzzy felosztása) ábrán látható hőmérséklet nyelvi változóra leképezve a 14°C értéket, megállapíthatjuk, hogy mind a hideg, mind a hűvös fuzzy halmazba nullától különböző tagsági értékkel tartozik.

A (4.26. ábra - Fuzzifikálás) ábráról le tudjuk olvasni az egyes halmazokba tartozás mértékét a választott 14°C hőmérsékletnél

  • μ hideg (14°C) = 0.8

  • μ hűvös (14°C) = 0.2

  • μ kellemes (14°C) = 0

  • μ meleg (14°C) = 0

  • μ forró (14°C) = 0

Fuzzifikálás
4.26. ábra - Fuzzifikálás


A megfigyelések (bemenetek) és következtetések (kimenetek) alaphalmazát szükség esetén normalizálhatjuk. A folytonos alaphalmaz diszkretizálása („mintavételezése”) a számítási igényt csökkentheti, ha ezzel nem csökkentjük a fuzzifikálás pontosságát. A mintavételezés lehet a lényeges tartományokban sűrűbb, az adatok szempontjából kevésbé informatív részeken ritkább.

4.2.5.3. Fuzzy szabálybázis, fuzzy következtetés

A deduktív következtetésben a szabályokat logikai deduktív szabálynak, implikációnak tekintjük. A hozzárendelési megközelítésben a szabályokat feltételes hozzárendelésként (conditional assignment) kezeljük, fuzzy függvényekkel dolgozunk, hasonlóan a procedurális programozási nyelvekhez. Mindkét módszerben először a kimeneti (következmény) fuzzy halmazt minden egyes szabályra, majd ezek aggregálásával egyetlen globális következmény (kimenet) fuzzy halmazt állítunk elő.

Elképzelhető, hogy egy bemenet bizonyos értéke két vagy esetleg több szabály teljesülését (elterjedt szóhasználattal tüzelését) váltja ki. Az is lehet, hogy ebben a két vagy több szabályban egymástól eltérő, szélsőséges esetben ellentmondó következmények szerepelnek – ez nem feltétlenül jelent problémát a végső eredmény meghatározásánál.

Feltétel azonban, hogy minél nagyobb az adott bemenetre a szabályból meghatározható illeszkedési mérték, a szabály annál erősebben hat a kimenetre.

A fuzzy szabálybázisban HA – AKKOR (IF – THEN) szabályokban foglaljuk össze a bemenetek (megfigyelések) és kimenetek (következtetések) nyelvi változókkal és esetleg módosítókkal adott kapcsolatait.

A fuzzy szabályokat fuzzy reláció formájában is megfogalmazhatjuk. Jelölje X a példában (4.24. ábra - Bemenet és kimenet fuzzy felosztása) szereplő hőmérséklet bemenet alaphalmazát, Y a hőmennyiség kimenetét, a köztük definiálható R i relációkat az X×Y Descartes-szorzaton értelmezhetjük.

A példában szereplő fuzzy halmazzal adott hőmérséklet nyelvi változó bemenet öt, a szintén öt fuzzy halmazzal adott hőmennyiség nyelvi változó kimenet (4.24. ábra - Bemenet és kimenet fuzzy felosztása) elméletileg összesen 5⋅5 = 25 szabállyal kapcsolható össze.

 

{A1 = hideg, A2 = hűvös, A3 = kellemes, A4 = meleg, A5 = forró}

(4.115)

 

{B1 = nagy, B2 = kicsi, B3 = nulla, B4 = negatív kicsi, B5 = negatív nagy}

 

Ezek közül a hőmérsékletet és a rendszerbe juttatandó hőmennyiséget összekapcsoló értelmes szabályok

  1. HA a hőmérséklet hideg, AKKOR a hőmennyiség nagy

    R 1 : IF xA 1 THEN yB 1

  2. HA a hőmérséklet hűvös, AKKOR a hőmennyiség kicsi

    R 2 : IF xA 2 THEN yB 2

  3. HA a hőmérséklet kellemes, AKKOR a hőmennyiség nulla

    R 3 : IF xA 3 THEN yB 3

  4. HA a hőmérséklet meleg, AKKOR a hőmennyiség negatív kicsi

    R 4 : IF xA 4 THEN yB 4

  5. HA a hőmérséklet forró, AKKOR a hőmennyiség negatív nagy

    R 5 : IF xA 5 THEN yB 5

Minden fuzzy szabály (reláció) felírható R i : (X×Y) → [0,1] alakban, ahol i = 1, 2, …, n a fuzzy szabály sorszáma, xX egy hőmérséklet érték, yY egy hőmennyiség érték, A3 az X, B i az Y alaphalmazon értelmezett nyelvi értéknek megfelelő (nem feltétlenül i-edik) fuzzy halmaz, $ I : ([0,1]× [0,1]) → [0,1] fuzzy következtetés (implikáció) vagy t-norma.

 

(4.116)

 

(4.117)

Fuzzy következtetést (implikációt) használunk A-ból következik B, másképpen AB, HA A, AKKOR B esetben.

Klasszikus kétértékű logikában a HA p, AKKOR q implikáció kétváltozós logikai függvény igazságtáblája (4.10. táblázat - Implikáció p és q logikai változókra) és néhány ekvivalens felbontás logikai alapműveletekkel (∧, ∨ és ¬)

 

(4.118)

4.10. táblázat - Implikáció p és q logikai változókra

p

q

p p

0

0

1

0

1

1

1

0

0

1

1

1


A fuzzy implikációk nem ekvivalensek egymással, négy nagy családba tartozhatnak, ezeket T(a,b) jelű t-normával, S(a,b) s-normával és N(a) negálással írjuk fel:

  • fuzzy leképezése

  • fuzzy leképezése, ahol a max mögött lévő (px) és q a logikai kifejezés értéke számként (0 vagy 1)

  • fuzzy leképezése

  • fuzzy leképezése

Néhány gyakori fuzzy implikáció az R5: IF xA THEN yB szabályra

  • Zadeh implikáció

  • Łukasiewicz implikáció

  • Kleene-Dienes implikáció

Az AB (A és B egyidejű teljesülése) esetén használhatjuk a t-normás implikációkat, például az alábbiakat.

Mamdani (min) implikáció (4.27. ábra - Mamdani implikáció szabályonként)

 

(4.119)

Mamdani implikáció szabályonként
4.27. ábra - Mamdani implikáció szabályonként


Larsen (prod) implikáció (4.28. ábra - Larsen implikáció szabályonként)

 

(4.120)

Larsen implikáció szabályonként
4.28. ábra - Larsen implikáció szabályonként


Több bemenet vagy több szabály egyidejű teljesülése esetén szükség lehet az aggregációs (összekapcsolási) műveletekre. Ezzel több bemenet esetén a szabályok lehetséges maximális száma ugrásszerűen nőhet, a kiértékelés mindkét esetben számításigényesebb lehet.

Ha ismerjük az IF xA i THEN yB i fuzzy szabályt és tudjuk, hogy xA’, kompozícióval megtalálhatjuk azt a B’ fuzzy halmazt, amire yB’ kielégíti a szabályt (az R relációt)

 

(4.121)

Több (n) szabály egyidejű teljesülése esetén az implikáció relációkat egyesítjük, célszerűen metszet (t-norma) felhasználásával

 

(4.122)

Tagsági függvénye a max t-normával

 

(4.123)

Konjunkciós kapcsolat esetén az aggregált relációt unióval állítjuk elő

 

(4.124)

Tagsági függvénye a max s-normával

 

(4.125)

A 4.27. ábra - Mamdani implikáció szabályonként és 4.28. ábra - Larsen implikáció szabályonként ábrán a hőmérséklet-hőmennyiség kapcsolatú mintapéldában két egyszerre „tüzelő” fuzzy szabály kiértékelése látható. A Mamdani-módszerben (4.27. ábra - Mamdani implikáció szabályonként) az összetartozó bemenet (fuzzy halmaz) és a megfelelő szabály (reláció) kompozíciója alapján a szabályban szereplő kimenet megfelelő módosítását a min t-normával határozzuk meg (4.29. ábra - Mamdani max-min módszer) külön-külön mindkét tüzelő szabálynál.

Mamdani max-min módszer
4.29. ábra - Mamdani max-min módszer


A Larsen-módszerben (4.28. ábra - Larsen implikáció szabályonként) min helyett a prod t-norma szerepel, a szabályban szereplő kimenet fuzzy halmaz „tetejének levágása” helyett „összenyomása” történik. (4.30. ábra - Larsen max-prod módszer).

Larsen max-prod módszer
4.30. ábra - Larsen max-prod módszer


Mindkét módszerben közös az egyszerre érvényes szabályok kimenetének aggregációja, erre a max s-normát használják (4.29. ábra - Mamdani max-min módszer és 4.30. ábra - Larsen max-prod módszer).

A többi következési, szabálykiértékelési módszer is hasonló elveket követ. Az aktuális bemenet és a megfelelő fuzzy szabály megfigyelés részéhez illeszkedés mértékével általában t-normával mintegy súlyozza a következmény fuzzy halmazt. A több szabály együttes tüzeléséből származó eredményt aggregációval, általában s-normával kapcsoljuk össze. A következtető egység aggregált kimenete általában nem konvex és nem normált fuzzy mennyiség.

A Takagi-Sugeno-Kang fuzzy modell célja, hogy adott bemenet-kimenet adathalmazból szisztematikusan generálhassunk fuzzy szabályokat. A Takagi-Sugeno-Kang módszer kombináció művelete az előzőekhez képest más elvű, nem fuzzy mennyiséget eredményez, közelebb áll a neurális hálózatoknál megismert elvekhez, hiszen a szabály kiértékelése során közvetlenül egy crisp függvényt állítunk elő.

A Mamdani- és Larsen módszernél a szabályok kiértékelésének eredménye fuzzy mennyiség. A példákban (4.29. ábra - Mamdani max-min módszer és 4.29. ábra - Mamdani max-min módszer) szereplő következmény terület több módosított („levágott tetejű” vagy „összenyomott”) fuzzy halmaz összetétele. Ebből kell sokszor egyetlen (crisp) értéket, vagyis egy jelelmző számot előállítanunk.

4.2.5.4. Defuzzifikálás

Bizonyos esetekben, például amikor az emberi kezelőt kell tájékoztatnunk, elegendő a nyelvi változó nyelvi értéke mint kimenet. Sokszor azonban egyetlen számmá kell alakítanunk a következtetés után kapott, esetenként összetett fuzzy mennyiségeket. Ezt a számot úgy kell kiválasztanunk, hogy a lehető legjobban jellemezze az eredményt. A defuzzifikálás, vagyis az életlen határúság megszüntetése számos módszerrel lehetséges.

Az alábbi képletekben jelölje μ OUT (y) az Y kimeneti alaphalmazon értelmezett összetett eredményhalmzt, y* ∈  pedig pedig a defuzzifikálással kapott crisp értéket!

Tipikus defuzzifikáló eljárások

  • a maximális értékkel kapcsolatos módszerek (4.31. ábra - A kimeneti összetett fuzzy halmaz maximális értékével kapcsolatos deffuzifikációs módszerek)

    • a maximális érték (amennyiben csak egy ilyen van), vagyis az eredményhalmaz „legmagasabb” pontjáthoz tartozó érték (Height)

      a maximumok (a maximális értéknek megfelelő α-vágat) első értéke (First of Maxima, FOM)

    • a maximumok (a maximális értéknek megfelelő α-vágat) utolsó értéke (Last of Maxima, LOM)

    • a maximumok (a maximális értéknek megfelelő α-vágat) középső értéke, számtani közepe (Mean of Maxima vagy Middle of Maxima, MOM)

      A kimeneti összetett fuzzy halmaz maximális értékével kapcsolatos deffuzifikációs módszerek
      4.31. ábra - A kimeneti összetett fuzzy halmaz maximális értékével kapcsolatos deffuzifikációs módszerek


  • a kapott összetett tagsági függvény alatti területtel kapcsolatos módszerek (4.32. ábra - Néhány kimeneti összetett fuzzy halmaz alatti területtel kapcsolatos deffuzifikációs módszer)

    • a terület súlypontjának megfelelő érték a vízszintes tengelyen, vagyis a területet két egyenlő részre osztó függőleges (Center of Area, COA, Centroid módszer)

    • legalább két konvex részterület esetén ha az összetett halmaznak legalább két konvex az eredmény fuzzy halmazokból mint egyes lemezterületekekből előállított egyesített tömegközéppont (Center of Gravity, COG)

    • szimmetrikus elemi fuzzy halmazokból álló összetett halmaznál az egyes összetevők y a középső maximális értékét az illető halmaz magasságával súlyozzuk és ezek átlaga adja a defuzzifiált értéket (Weighted Average, WA)

    • az eredményben szereplő fuzzy halmazok algebrai összegén alapuló gyors módszer az összegek közepe (Center of Sums, COS), itt az n darab kimeneti halmaz (n=1, 2, .., k) uniója helyett algebrai összeget képzünk (az a módszer a metsző területeket többször veszi figyelembe)

    • legalább két konvex részterület esetén a μ OUT. max (y) tagsági függvénynel jellemzett legnagyobb konvex részterület tömegközéppontja (Center of Largest Area, COLA)

      Néhány kimeneti összetett fuzzy halmaz alatti területtel kapcsolatos deffuzifikációs módszer
      4.32. ábra - Néhány kimeneti összetett fuzzy halmaz alatti területtel kapcsolatos deffuzifikációs módszer


4.3. Komplex rendszerek

A lágy számítási módszerek mindegyike más területen hatékony. Fuzzy modellt gyakran használunk, ha a rendszer matematikai modelljét nem vagy csak igen nehezen tudjuk előállítani. A fuzzy logikán alapuló szabályalapú vagy következtető rendszerek a jó értelemben bizonytalan, nem teljes információt hordozó adatokon alapuló érvelésben és következtetésben erősek. A neurális hálózatok előnyös tulajdonsága az adaptivitás. A paraméterek (legtöbbször súlytényezők) automatikus hangolásával mintafelismerési, döntési, szabályozási, (állapot)becslői feladatukat optimálisan hajtják végre. Alkalmazkodóképességük a rendszer vagy a környezeti körülmények változását is képesek követni.

Viszont ezek a módszerek – saját erősségük mellett – nem rendelkeznek a másik nyújtotta előnyökkel, így célszerű kombinálni őket, mindegyiket arra használva, amire a legalkalmasabb. A fuzzy rendszerek bizonytalan információk alapján vonnak le következtetéseket, de az ehhez szükséges szabályokat nem tudják automatikusan előállítani és finomítani. A neurális hálózatok mintafelismerést biztosító működésüket nem tudják „megmagyarázni”, algoritmizálni, szabályokként megadni. Az egyes módszerek korlátai megfelelő kombinációjukkal leküzdhetők.

Az adott feladat szempontjából fontos technikák ötvözetének elnevezése tükrözi összetevőiket, így neurális fuzzy rendszerekről (Neuro-Fuzzy System, NFS), valamint fuzzy neurális hálózatokról (Fuzzy Neural Network, FNN) beszélünk a módszerek kombinálásakor. Ezek a rendszerek szinergikusan ötvözik a fuzzy rendszerek emberihez hasonló következtetési képességeit a neurális rendszerek hálózatos felépítésével és tanulási képességével.

A neuro-fuzzy rendszerek tulajdonképpen univerzális approximátorok, közvetlenül értelmezhető HA-AKKOR (IF-THEN) szabályokkal. A lingvisztikai fuzzy modellezés neuro-fuzzy rendszerekben a fuzzy komponensek neurális támogatottságú előállításával és hangolásával foglalkozik. Ez igen gyakran a Mamdani modellnek megfelelő fuzzy rendszer pontosítását jelenti. A másik neuro-fuzzy megközelítés a pontosságot részesíti előnyben, főképpen a Takagi-Sugeno-Kang (TSK) modell felhasználásával.

Az egyik – talán legáltalánosabb – megközelítés szerint a neuro-fuzzy rendszer alapja a neurális hálózatok elméletéből ismert tanulási algoritmussal tanított fuzzy szabályalapú rendszer. A tanítási eljárást lokális információkra alkalmazzák, a teljes fuzzy rendszerben is csak lokális módosításokat eredményezve (pl. fuzzy nyelvi változóhoz tartozó tagsági függvények hangolása).

E felfogás szerint a neuro-fuzzy rendszer háromrétegű, előrecsatolt neurális hálózat. Az első rétegben vannak a fuzzy rendszer bemeneti változói, a rejtett réteg képezi le a fuzzy szabályokat, a harmadik rétegben találjuk a fuzzy kimeneti változókat. A fuzzy halmazok (fuzzy) súlytényezőkként jelennek meg. Tulajdonképpen ez nem más, mint a fuzzifikáció, fuzzy következtetés (szabály kiértékelés) és defuzzifikáció megvalósítása többrétegű előrecsatolt hálózatokkal. Ez a felépítés persze nem kötelező ahhoz, hogy a fuzzy rendszerben/rendszerhez tanuló algoritmust alkalmazzunk, de mindenképpen kényelmes, hiszen követi az adatok hagyományos fuzzy rendszerbeli útját, kiegészítve a modellen belüli tanulás képességével. (Előfordulnak ötrétegű hálózatok is, ahol a második és az utolsó előtti réteg neuronjai felelnek meg a tagsági függvényeknek.)

A neuro-fuzzy rendszer a tanulás előtt, közben és utána is fuzzy szabályok rendszere. A modell (szabálybázis) létrehozása lehetséges teljességgel a tanító adatok alapján vagy a fuzzy szabályok előzetes ismeretével.

A neuro-fuzzy rendszer egy n dimenziós, a tanító adatokkal részben definiált, tulajdonképpen ismeretlen függvényt közelít. A fuzzy szabályok a tanító adatok prototípusainak tekinthetők, hiszen csak bizonyos bemenet-kimenet kapcsoaltokat képeznek le a lehetségesek közül.

Neuro-fuzzy jelzővel illethejük az előbb ismertetett összekapcsolt hálózatként megvalósított fuzzy szabályalapú rendszerek mellett egyebek között az alábiakat.

  • Tanított radiális bázisfüggvényes (RBF) hálózatból származó fuzzy szabályok.

  • A neurális hálózat tanító paramétereinek fuzzy logika alapú beállítása.

  • A hálózat méretének növelése fuzzy kritériumok alapján.

  • A fuzzy tagsági függvények létrehozása neurális hálózatokkal.

5. fejezet - Optimum kereső módszerek

Tartalom
5.1. Az optimalizáló eljárások általános jellemzői
5.1.1. Az optimalizáló eljárások típusai
5.1.1.1. Determinisztikus vagy sztochasztikus problémát megoldó eljárások
5.1.1.2. Kísérletező vagy matematikai eljárások
5.1.1.3. Statikus vagy dinamikus eljárások
5.1.1.4. Direkt (numerikus) vagy indirekt (analitikus) módszerek
5.1.1.5. Paraméter- vagy függvény-optimalizáló eljárások
5.1.1.6. Korlátozott vagy korlátozás nélküli optimalizáló eljárások
5.1.2. Hegymászó stratégiák
5.1.2.1. Egydimenziós stratégiák
5.1.2.1.1. Szimultán módszerek
5.1.2.1.2. Egyenlő távolságú keresés
5.1.2.1.3. Sorrendi módszerek
5.1.2.2. A minimum bekerítése (Boxing in the Minimum)
5.1.2.2.1. Tartományosztó módszerek
5.1.2.2.2. Fibonacci sor szerinti keresés
5.1.2.2.3. Aranymetszés alapú keresés
5.1.2.2.4. Bolzano módszer
5.1.2.3. Interpolációs módszerek
5.1.2.3.1. Regula-falsi iteráció
5.1.2.3.2. Newton-Raphson iteráció
5.1.2.3.3. Lagrange interpoláció
5.1.2.3.4. Hermit interpoláció
5.1.3. Többdimenziós stratégiák
5.1.3.1. Direkt keresési stratégiák
5.1.3.2. Koordináta stratégia
5.1.3.3. Hook és Jeeves pattern stratégiája
5.1.3.4. Rosenbrock stratégiája: forgó koordináták
5.1.3.5. Davies, Swann és Campey stratégiája (DSC stratégia)
5.1.3.6. Nelder és Mead szimplex stratégiája
5.1.3.7. Box komplex stratégiája
5.1.4. Gradiens stratégiák
5.1.4.1. Powell stratégiája: konjugált irányok
5.1.4.2. Newton stratégiák
5.1.4.3. Davidson-Fletcher-Powell módszer (Kvázi Newton stratégia, Variable Metric Strategy)
5.1.5. Random (véletlenszerű) stratégiák
5.1.6. Evolúciós módszerek
5.1.6.1. Szimulált hőkezelés
5.1.6.2. Evolúciós algoritmusok (EA)
5.1.6.2.1. Evolúciós stratégiák (ES=Evolution Strategies)
5.1.6.2.2. Az egyszerű Evolúciós Stratégia
5.1.6.2.3. Az evolúciós stratégiák típusai
5.1.6.2.4. Egymásba ágyazott evolúciós stratégiák
5.1.6.2.5. Genetikus algoritmusok (GA)
5.1.6.2.6. Evolúciós programozás (EP)
5.1.6.2.7. Genetikus programozás (GP)
5.2. Genetikus algoritmusok
5.2.1. Genetikai alapok
5.2.2. A genetikus algoritmus
5.2.3. A genetikus algoritmusok működési mechanizmusa
5.2.3.1. A sémaelmélet
5.2.3.2. Az építőelem-elmélet
5.2.4. A genetikus algoritmusok típusai
5.2.4.1. A gének ábrázolása
5.2.4.1.1. Bináris ábrázolásmód
5.2.4.1.2. Valós ábrázolásmód
5.2.4.1.3. Permutációs ábrázolásmód
5.2.4.1.4. Speciális ábrázolásmódok
5.2.4.2. Fitness számítás
5.2.4.3. Szelekció
5.2.4.3.1. Rulett kerék szelekció
5.2.4.3.2. Versenyeztető algoritmus
5.2.4.3.3. Rangsor alapú szelekció
5.2.4.3.4. Boltzmann szelekció
5.2.4.4. Kereső operátorok
5.2.4.4.1. Mutáció
5.2.4.4.2. Mutáció bináris ábrázolás esetén
5.2.4.4.3. A valós ábrázolás mutációs operátorai
5.2.4.4.4. Mutációs operátorok permutációs ábrázolásmód esetén
5.2.4.4.5. Rekombináció
5.2.4.4.6. Bináris keresztezés
5.2.4.4.6.1. Egypontos keresztezés:
5.2.4.4.6.2. K-pontos keresztezés:
5.2.4.4.6.3. Egyenletes keresztezés (uniform crossover):
5.2.4.4.6.4. A valós ábrázolásmódnál alkalmazott keresztezési módszerek
5.2.4.4.6.5. Heurisztikus keresztezés (WRIGHT 1994)
5.2.4.4.6.6. Szimplex keresztezés (RENDERS és BERSINI 1994)
5.2.4.4.6.7. Geometriai keresztezés (MICHALEWITZ 1996)
5.2.4.4.7. A permutációs ábrázolásmód keresztező eljárásai
5.2.4.4.7.1. DAVIS sorrendi keresztezése (Order crossover, OX)
5.2.4.4.7.2. Részleges megfeleltetésű keresztezés (Partially mapped crossover PMX)
5.2.4.4.7.3. SYSWERDA sorrendi keresztezése (Order crossover-2)
5.2.4.4.7.4. Élkeresztezés
5.2.4.5. Korlátkezelési technikák
5.2.4.5.1. Büntetőfüggvények
5.2.4.5.2. Statikus büntetőfüggvények
5.2.4.5.3. Dinamikus büntetőfüggvények
5.2.4.5.4. Adaptív büntetőfüggvények
5.2.4.5.5. Dekódolók alkalmazása korlátozás céljából
5.2.4.5.6. Egyéb technikák
5.2.4.5.6.1. Javító algoritmusok
5.2.4.5.6.2. Korlátokat betartó operátorok alkalmazása
5.2.5. A populáció szerkezete
5.2.5.1. Életfeltételeket alkalmazó módszerek (Niching methods)
5.2.5.2. Fajkialakító módszerek (Speciation methods)
5.2.5.3. Sziget- vagy áttelepedési modellek (Island or Migration modells)
5.2.5.4. Diffúziós vagy celluláris modellek
5.3. A genetikus algoritmusok speciális területei
5.3.1. Multikritériumú optimalizálás
5.3.2. Önadaptációs eljárások
5.3.3. Metaevolúciós megközelítés
5.4. A genetikus algoritmusok előnyei és hátrányai
5.4.1. Robosztusság
5.4.2. Lokális és globális szélsőérték
5.4.3. További előnyök
5.4.4. Hátrányok
5.5. A genetikus algoritmus alkalmazásának területei
5.6. PI kompenzáció paraméter optimalizálása genetikus algoritmussal
5.6.1. A feladat leírása
5.6.2. A feladat megoldása
5.6.3. Adatreprezentáció
5.6.4. Fitness számítás
5.6.5. Az alkalmazott operátorok
5.6.5.1. Szelekció
5.6.5.2. Rekombináció
5.6.5.3. Mutáció
5.6.6. Korlátok kezelése
5.6.7. Program kezelési leírása
5.6.8. A program futási eredményei
5.6.8.1. A mutációs valószínűség hatása a keresés hatékonyságára
5.6.8.2. A szelekciós nyomást befolyásoló hatványkitevő hatása a keresésre
5.7. Az utazó ügynök probléma megoldása genetikus algoritmussal
5.7.1. A feladat leírása
5.7.2. A feladat megoldása
5.7.3. Adat reprezentáció
5.7.4. Fitness számítás
5.7.5. Az alkalmazott operátorok
5.7.5.1. Szelekció
5.7.5.2. Rekombináció
5.7.5.3. Mutáció
5.7.6. Korlátok kezelése
5.7.7. Program kezelési leírás
5.7.8. Futási eredmények
5.7.8.1. Véletlenszerű elhelyezés esetén az eredmények:

Ha egy feladatot csak egyféleképpen tudunk végrehajtani, akkor nincs lehetőségünk az optimalizálásra. Ha nem tudjuk, hogy megoldható-e a feladat, akkor a további kutatás és a megoldás megtalálása lehet a célunk. Ha azonban két vagy több megoldás áll rendelkezésünkre, és választanunk kell közülük valamilyen előírt szempont szerint, akkor már optimalizálási feladatról beszélünk.

5.1. Az optimalizáló eljárások általános jellemzői

Az optimalizálási feladatoknál azokat a független tulajdonságokat, melyek megkülönböztetik egymástól az egyes megoldásokat, paramétereknek nevezzük. Ahhoz, hogy a megoldási lehetőségek között dönteni tudjunk, szükségünk van egy mennyiségi változóra, ezt a függő változót célfüggvénynek nevezzük.

Különböző célfüggvényekhez különböző optimális rendszerparaméter-értékek tartoznak. Más megfogalmazásban, a rendszer optimális működése mindig egy célfüggvény szerinti optimalizálás eredményeként születik meg. Ha például a rendszer leggyorsabb működését szeretnénk elérni, akkor a célfüggvénynek nem szabad foglalkoznia a feladat megoldásához szükséges energia felhasználásával. Ha viszont a rendszer gazdaságos működésére optimalizálunk, akkor kompromisszumot kell kötnünk a működési sebesség csökkentésével, hogy a felhasznált energia (a lehetőségeket figyelembe véve) a legkisebb legyen.

Az optimum vagy optimális megoldás a paraméterek azon értékeinél jelentkezik, ahol a célfüggvény minimális vagy maximális értéket vesz fel, a probléma típusától függően.

Gyakran a legnehezebb feladat egy „jó” célfüggvény meghatározása, a másik probléma pedig a keresés stratégiájának kiválasztása. Még akkor is nehéz maradhat az optimum megtalálása ha a célfüggvény matematikailag pontosan meghatározott, mert a számítások elvégzéséhez korlátozott idő áll rendelkezésünkre.

5.1.1. Az optimalizáló eljárások típusai

5.1.1.1. Determinisztikus vagy sztochasztikus problémát megoldó eljárások

  • Determinisztikus esetben az optimalizálandó rendszer nem tartalmaz ismeretlen vagy véletlenszerű elemeket.

  • Ha a rendszerben az események véletlenszerűen, de valamilyen törvényszerűséggel leírható formában következnek be (és nem lehet kiküszöbölni a véletlenszerűséget), akkor a problémát sztochasztikusnak nevezzük. Ez azt jelenti, hogy a rendszerben véletlen tényezők is vannak.

5.1.1.2. Kísérletező vagy matematikai eljárások

  • A kísérletező eljárásokat olyan esetekben használjuk, amikor nem ismert a célfüggvény, ezért a valós tárgyon vagy annak modelljén kell kísérleteznünk. A szisztematikus keresés több változó esetén nagyon költséges, a véletlenszerű pedig megbízhatatlan, ezért az algoritmusnak a két módszert ötvözve, szisztematikusan kell hasznosítania az előző kísérletekből származó információkat.

  • A matematikai eljárások a rendszer matematikai modelljén végzik az optimalizálást úgy, hogy a következő lépést az előző lépések eredményeinek segítségével határozzák meg.

5.1.1.3. Statikus vagy dinamikus eljárások

  • A statikus módszerek esetében az optimum az időtől független.

  • A dinamikus optimalizálás feladata egy adott célfüggvény szerinti optimális állapot fenntartása a változó körülmények között. Így az optimalizáló algoritmusnak folyamatosan működnie kell.

5.1.1.4. Direkt (numerikus) vagy indirekt (analitikus) módszerek

  • Direkt eljárásoknak nevezzük azokat a módszereket, melyek az optimumot lépések sorozatán át úgy érik el, hogy a célfüggvény értékét lépésről-lépésre javítják.

  • Az indirekt esetben az eljárás a célfüggvény szerinti optimális megoldást, tesztek és próbálkozások nélkül, egy lépésben határozza meg, például a célfüggvény adott paraméter szerinti változásának (deriváltjának) segítségével.

5.1.1.5. Paraméter- vagy függvény-optimalizáló eljárások

  • Paraméter-optimalizálónak nevezzük az eljárást akkor, ha a célfüggvény és a független paraméterek is skaláris mennyiségek.

  • A függvény-optimalizáló eljárásnál a meghatározandó változók maguk is paraméterek függvényei, ezért a célfüggvény értéke is függvény.

5.1.1.6. Korlátozott vagy korlátozás nélküli optimalizáló eljárások

  • Korlátokat akkor használunk, ha azt akarjuk, hogy az eljárás az optimumot csak egy meghatározott intervallumban keresse, ennek oka lehet például az, hogy a célfüggvény értéke egyes helyeken nem határozható meg, és ezeket a pontokat el akarjuk kerülni. A korlátok egyik fajtája a büntetőfüggvény, ez a módszer a büntetett esemény bekövetkezésekor a célfüggvény értékét úgy módosítja, hogy az kedvezőtlenebb esetet jelentsen.

5.1.2. Hegymászó stratégiák

A hegymászó stratégiák olyan matematikai módszerek, amelyek nem diszkrét, nem sztochasztikus, és többnyire korlátozó feltételek nélküli függvények optimumkeresésére alkalmasak. Nevüket onnan kapták, hogy egy bekötött szemű hegymászóhoz hasonlóan, tapogatva keresik az utat a völgyből a csúcs felé. A hegymászó stratégiák az alkalmazott algoritmus következtében nem mindig képesek megtalálni a globális szélsőértéket, a legközelebbi lokális szélsőértékhez konvergálnak.

A hegymászó stratégiákat a mérnöki gyakorlatban azokban az esetekben alkalmazzák, ahol az analitikus módszerek nem használhatók:

  • A célfüggvény és deriváltjai nem folytonosak.

  • Nehézségek adódnak a differenciálok meghatározásakor.

  • Az egyenletek megoldása nem vezet mindig a globális szélsőértékhez.

  • A rendszert általánosan leíró, nemlineáris egyenletek, nem oldhatók meg közvetlenül.

Az optimalizálási feladatot, minimumkeresésként megfogalmazva, a következő egyenlet segítségével írhatjuk le:

 

(5.1)

ahol

   

 

a célfüggvény,

 

a paramétervektor,

 

a szélsőérték,

 

a paramétervektor az optimális esetben.

5.1.2.1. Egydimenziós stratégiák

Egydimenziós esetben a célfüggvény csak egy paramétertől függ, ami az optimumkeresés legegyszerűbb esete. A többdimenziós stratégiák gyakran ezeket az egyszerű eljárásokat alkalmazzák a különböző paraméterirányokban.

5.1.2.1.1. Szimultán módszerek

A szimultán eljárásoknál egyszerre több ponton vizsgáljuk a célfüggvény értékét, melyekben a számítások párhuzamosan végezhetők. Azt, hogy a célfüggvény szélsőértéke milyen távol esik a vizsgált pontoktól, a pontok száma és helyzete határozza meg.

5.1.2.1.2. Egyenlő távolságú keresés

Az [a,b] intervallumban, egymástól egyenlő távolságra, N darab pontot veszünk fel. Az N megválasztásánál vigyázni kell arra, hogy elegendően nagyszámú pontot vegyünk fel ahhoz, hogy a minták használható pontossággal adják vissza a célfüggvény alakját.

A felvett pontoknál kiszámoljuk a célfüggvény értékeket, és a minimális (maximális) célfüggvény értékű pontot tekintjük optimumnak.

Ebben az esetben a bizonytalansági tartomány mérete (a paraméter pontossága):

 

(5.2)

5.1.2.1.3. Sorrendi módszerek

Ha a próbákat egymás után végezzük, akkor lehetőségünk van a közbenső eredményeket felhasználni a következő próba helyének meghatározása során. A legtöbb sorrendi módszer csak akkor képes a célfüggvény globális szélsőértékét megtalálni, ha a vizsgálatot annak közelében kezdjük, egyébként a keresés lokális szélsőértéket is eredményezhet. Ha a célfüggvény egyetlen minimummal, (maximummal) rendelkezik, akkor ezzel a problémával nem kell számolnunk.

5.1.2.2. A minimum bekerítése (Boxing in the Minimum)

Az eljárás az pontból kiindulva, s lépésközzel haladva (), sorra meghatározza a célfüggvény értékeket. A megfelelő irány kiválasztásához az első lépés után megvizsgálja a függvényértéket, ha , akkor az ellenkező irányban megy tovább ().

Az iteráció befejezésének feltétele: a célfüggvény-érték növekedése, .

Az algoritmus sebességének növelése érdekében a lépésköz változtatásának többféle módszerét dolgozták ki:

  • BEVERIDGE és SCHECHTER (1970) algoritmusa minden esetben, amíg , a lépés nagyságát kétszeresére növeli:, így éri el, hogy a jó irányban egyre gyorsabban haladjon.

  • ROSENBROCK és BERMAN (1960) eljárása minden sikertelen keresés esetén, egy állandóval szorozva, csökkenti a lépés nagyságát, így az optimum közelében lelassít.

  • DIXON (1972) kombinálta a két előző módszert, a lépésközt siker esetén növelte, sikertelenség esetén pedig csökkentette, így az előzőeknél is gyorsabb eljárást kapott.

5.1.2.2.1. Tartományosztó módszerek

Ezek a módszerek a kezdeti keresési tartományt minden lépésben úgy csökkentik, hogy résztartományokra osztják azt, és ezek közül kiválasztva az egyiket, erre ismétlik meg az eljárást. A módszer exponenciálisan közelít a szélsőértékhez.

5.1.2.2.2. Fibonacci sor szerinti keresés

Ezt a tartományosztó eljárást KIEFER mutatta be 1953-ban. A módszer a Fibonacci sor segítségével határozza meg a lépések nagyságát.

Tartományosztó keresés a Fibonacci sor alapján
5.1. ábra - Tartományosztó keresés a Fibonacci sor alapján


A Fibonacci sor :

Ha a keresési intervallum

 

(5.3)

és az osztások száma N, akkor a lépésköz:

 

, ahol:

(5.4)

Ez alapján az új pontok:

 

(5.5)

A következő iterációs lépéshez kiválasztunk két pontot ():

 

Ha:      akkor: 

(5.6)

 

Ha:      akkor: 

(5.7)

Az eljárást -ig folytatjuk, mert a következő lépésben a pontok már egybeesnének .

5.1.2.2.3. Aranymetszés alapú keresés

Ez a módszer a Fibonacci keresés módosítása úgy, hogy ahol és vagyis az aranymetszés arányával egyenlő (5.4 egyenlet). Így a lépések száma megnő, de nem kell a Fibonacci sort kiszámolni és tárolni.

5.1.2.2.4. Bolzano módszer

Ha van két pontunk (), melyekben a célfüggvény meredeksége ellenkező előjelű, akkor a szélsőérték a pontok által meghatározott tartományon belül van. A következő lépésben megfelezhetjük a tartományt úgy, hogy pontok felezőpontjánál megvizsgálva az értékeket, az közül azt helyettesítjük -val, amelyik meredeksége megegyező előjelű a célfüggvény pontban vett meredekségének előjelével. Így a tartományt határoló pontok meredekségei továbbra is ellenkező előjelűek maradnak, vagyis a szélsőérték az új tartományon is belül esik.

5.1.2.3. Interpolációs módszerek

Ha a célfüggvénynek nemcsak az értékét, hanem a meredekségét is felhasználjuk, akkor az előzőekben bemutatott eljárásoknál gyorsabban konvergáló módszert kaphatunk.

5.1.2.3.1. Regula-falsi iteráció

Míg a Bolzano módszer csak a célfüggvény deriváltjainak előjelét használja fel, addig ez az eljárás a deriváltértékeket is, így gyorsabban képes elérni az optimumot.

Adott két pont: , és az függvények értékei.

Az új pontot a következő egyenlettel kaphatjuk meg:

 

(5.8)

Ha lineáris, akkor , tehát egy lépésben kapjuk meg a megoldást.

Ha és különböző előjelű, akkor a Bolzano módszernél leírtak alapján választjuk ki az új pontokat. Ha mind a három pontban egyezik a célfüggvény meredekségének előjele, akkor azt helyettesíti amelyiknél nagyobb (5.2. ábra - Regula-falsi iteráció).

Regula-falsi iteráció
5.2. ábra - Regula-falsi iteráció


Az optimum csak akkor található meg biztosan, ha a kezdőpontokat a minimum közelében vesszük fel, egyébként az iteráció a maximumhoz is vezethet.

5.1.2.3.2. Newton-Raphson iteráció

Ehhez az eljáráshoz szükség van a célfüggvény másodrendű deriváltjainak értékeire is, melyek felhasználásával tovább csökken az iterációs lépésszám. A vizsgált pont, a deriváltak értékei:

 

 

A rekurziós formula:

 

(5.9)

Az eljárás hátrányai:

  • Ha a deriváltakat numerikus differenciálás alapján kapjuk, akkor a hatékonyság romlik, különösen a minimum közelében, ahol nagyon kis értékeket vesz fel.

  • A minimumot, maximumot és az inverziós pontot nem tudja egymástól megkülönböztetni.

  • Másodfokúnál nagyobb célfüggvény esetén az iteráció divergens is lehet, a konvergencia feltétele minden x-re.

5.1.2.3.3. Lagrange interpoláció

Ennek a módszernek csak a célfüggvény értékekre van szüksége. Az eljárás a függvény három pontjára () egy parabolát illeszt, a negyedik pontot () a parabola minimuma határozza meg. A következő iterációs lépéshez az előző lépés négy pontja közül kiválasztott három pontot használ (). A pontok helyzetüktől és célfüggvény-értéktől függően kerülnek kiválasztásra. Az eljárás a célfüggvény és a parabola hasonlóságát használja ki, így hatékonysága is az egyezés mértékétől függ.

Lagrange interpoláció
5.3. ábra - Lagrange interpoláció


5.1.2.3.4. Hermit interpoláció

Ez az eljárás a Lagrange interpolációhoz hasonlóan működik, de parabola helyett egy harmadfokú függvényt használ próbafüggvényként. Az új pont meghatározásához két pontot, a pontok célfüggvény értékeit és meredekségüket használja fel. A hatékonyság itt is a függvények hasonlóságától függ.

5.1.3. Többdimenziós stratégiák

A többdimenziós keresési esetekben a keresett változók növekedésével a keresési tér nagysága exponenciálisan nő. Ha gyorsítani akarjuk a keresést, akkor azt csak a megbízhatóság rovására tehetjük, vagy olyan módszerek alkalmazásával, melyek a célfüggvény értékein kívül más információkat is felhasználnak.

A különböző módszereket a felhasznált információ jellege alapján csoportosíthatjuk:

  • Direkt keresési eljárások , melyek csak a függvényértékekkel számolnak.

  • A Gradiens módszerek az elsőrendű deriváltakat is felhasználják.

  • A Newton módszereknek a másodrendű deriváltakra is szükségük van.

A többdimenziós eljárások rekurziós formulája általában az alábbi egyenleten alapul, amely a következő vizsgálandó pontot határozza meg:

 

(5.10)

ahol

   

 

a paramétervektor,

 

a lépés nagysága,

 

pedig az iránya.

Az egyes eljárások a lépés nagyságának és irányának megválasztásában különböznek.

5.1.3.1. Direkt keresési stratégiák

A direkt keresési eljárások nem alkotnak modellt a célfüggvényről, a kereséshez csak a függvényértékeket veszik igénybe. Az irányokat és a lépésnagyságokat heurisztikusan vagy valamilyen más módszerrel határozzák meg. Mivel megvan az esélye, hogy a függvényérték nem fog minden lépésben javulni, az eljárásnak tudnia kell kezelni a hibák előfordulását.

5.1.3.2. Koordináta stratégia

Ez az eljárástípus a legrégibb a többdimenziós keresőeljárások közül, számos variációja létezik, és több elnevezése is van: a változók egymás utáni változtatása; párhuzamos, tengely menti keresés; egy lépés, egy változó módszer; ciklikus, hegymászó koordinátastratégia; Gauss-Seidel stratégia.

A módszer alapötlete eredetileg a lineáris algebrából származik, először itt alkalmazta GAUSS és SEIDEL lineáris egyenletrendszerek megoldására.

Az eljárás az (5.10) egyenlet paramétereit egymástól függetlenül változtatja minden iterációs lépésben. A lépés irányát, azaz hogy melyik koordinátatengely mentén, melyik irányban keressen, akkor változtatja meg, ha a célfüggvény értéke romlik. A lépés nagysága lehet állandó, de alkalmazhatunk Fibonacci keresést, Lagrange interpolációt vagy más egydimenziós keresési módszert is az új pont helyzetének meghatározására.

Abban az esetben, ha csak a koordinátáktól eltérő irányokban érhetünk el eredményt, a módszer nem működik. Gyors megoldást csak akkor kaphatunk, ha a határfelületek koncentrikusak. Kimutatták azt is, hogy egy eredménytelen keresés az egyik irányban, a másik irányú keresést eredményessé teheti, ezt a jelenséget egyes módszerek fel is használják.

A stratégia gyorsításának egyik lehetősége az irányok kiválasztási sorrendjének módosítása. Az irány kiválasztására a ciklikus módszer helyett alkalmazhatjuk például azt a stratégiát, hogy mindig azt az irányt választjuk, amelyik mentén legnagyobb a célfüggvény értékének változása, vagy a legnagyobb lépést tudjuk megtenni.

5.1.3.3. Hook és Jeeves pattern stratégiája

Ezt az eljárást HOOK és JEEVES 1961-ben dolgozták ki, eredetileg automatikus kísérleti alkalmazás céljából, ma már azonban széles körben numerikus paraméter-optimalizáló eljárásként használják.

Az algoritmus kétféle lépésből áll. Az első egy felfedező (explorációs) lépés, amely a koordinátatengelyek irányában lépve (pattern vagy mintavevő lépés) a pont környezetében számítja ki a célfüggvény értékeket. Ha talál egy jobb értékű pontot, akkor innen keres tovább a következő irány mentén. A lépések: (5.4. ábra - Pattern stratégia) a 0. pontból az x-tengely irányában lép az 1. pontba, ami jobb, tehát negatív irányba már nem is kell visszalépnie. Ezután az y-tengely mentén lép a 2. pontba, mivel ez rosszabb mint az 1. ezért a 3.-at is megvizsgálja, ami már jobb lesz. Az explorációs lépések után következik az extrapoláció, ez az iterációs ciklus kezdeti és végső pontja által meghatározott irányban hajt végre egy lépést, a 0. kezdőpont és a 3. utolsó pont alapján lép a 4. pontba.

Pattern stratégia
5.4. ábra - Pattern stratégia


Ezután a következő iterációs ciklus mintavevő lépései jönnek, az 5.-be lépve rögtön eredményt ér el, de az y-irányban nincs további javulás (6.,7.). A 3. és 5. pont közül az utóbbi a jobb, ezért az extrapolációs lépéssel a 8.-ba jutunk. A következő explorációnál nem talál kedvezőbb pontot (9.,10.,11.,12.), de mivel a 8. jobb az 5.-nél a 13. pontba extrapolál. További lépéseken át eljut a 15.-be, de ez rosszabb mint a 8. így vissza kell lépnie ide (18.). Ezután egyik irányban sem talál már jobb pontot, ezért felezi a lépés nagyságát.

Az extrapolációs lépés nagyságát a keresés sebességének növelése érdekében, az eredményektől függően változtatja.

Konvex és folytonosan differenciálható célfüggvény esetén a módszer konvergens. Előnyei az egyszerű számítási műveletek és a kis tárolókapacitás igény.

5.1.3.4. Rosenbrock stratégiája: forgó koordináták

ROSENBROCK a koordinátastratégiát a tengelyek forgatásával egészítette ki, így elérte, hogy a keresési irányok már nem korlátozottak, az algoritmus mégis a tengelyek mentén keres. A módszer lényege, hogy az egyik tengelyt a legkedvezőbb irányba forgatja és az elforgatott koordináta-rendszer tengelyei mentén keres tovább. Egy sikeres lépés után növeli a lépés nagyságát, sikertelen után pedig csökkenti, és az ellenkező irányba fordul. Ezt az eljárást addig folytatja, míg sikert nem ér el mindegyik koordinátairányban. Ezután ismét a tengelyek forgatása következik. Az iteráció befejezésének feltételét a transzformáció elvégzése előtt vizsgálja.

5.1.3.5. Davies, Swann és Campey stratégiája (DSC stratégia)

SWANN 1964-ben ROSENBROCK módszerét kombinálta az egydimenziós kereső eljárásokkal, a stratégiának többféle változata is létrejött.

Az algoritmus a kezdőpontból kiindulva, minden koordináta mentén egy egydimenziós keresést hajt végre, és az így kapott eredmények segítségével határozza meg a következő lépés legkedvezőbb irányát. Ezután a koordinátatengelyek forgatása következik úgy, hogy azok a tengelyek nem változhatnak, melyek mentén nem sikerült egy meghatározott nagyságú lépést megtenni. Ezzel a feltétellel biztosítjuk, hogy az eljárás továbbra is az egész paraméterteret vizsgálja.

5.1.3.6. Nelder és Mead szimplex stratégiája

A szimplex stratégiák az eddig leírt módszerektől nagyban eltérnek, az eljárás alapötlete (SPENDLEY, HEXT és HIMSWORTH, 1962), hogy az egy időben vizsgálandó pontok számát, amennyire csak lehet, csökkentsük le. Ez a szám BROOKS és MICKEY (1961) szerint, n dimenziós esetben n+1.

Az egyszerű szimplex eljárás az n számú paraméter által meghatározott térben n+1 pontot vesz fel egymástól egyenlő távolságban - ezt a csoportot nevezzük szimplexnek. Az iteráció első lépésében a felvett pontokban kiszámoljuk a célfüggvény értékeit, majd a legrosszabb értékű pontot a többi pont középpontjára vett tükörképével helyettesítjük. Az eljárás azon a feltételezésen alapul, hogy az új pont az eddigieknél jobb célfüggvény értéket fog eredményezni.

Szimplex stratégia
5.5. ábra - Szimplex stratégia


Ha az egyik pont a minimum közelébe esik, akkor az új pont a legrosszabb is lehet - ebben az esetben a második legrosszabbat kell tükrözni. Ha a pontok távolságát nem változtatjuk, akkor az eljárás egy idő után stagnálni kezd, a szimplex a legjobb pont körül forog, ekkor további eredményt a távolság felezésével kaphatunk. NELDER és MEAD módszere abban különbözik az alapötlettől, hogy a szimplex nagyságát és alakját minden lépésben úgy módosítja, hogy az a legjobban illeszkedjen a körülményekhez.

Az eljárást akkor fejezzük be, ha az egyes pontok függvényértékei közötti eltérés egy előre meghatározott érték alá csökken.

Sok változó esetén az eljárás robosztus és megbízható, de ugyanakkor költséges is, n+1 paramétervektort kell tárolni és a paraméterek számának növelésével a számításigény is nő.

5.1.3.7. Box komplex stratégiája

BOX 1965-ben a korlátokkal bővített optimumkeresési esetre módosította a szimplex stratégiát. A fő különbség a két eljárás között a használt pontok nagyobb számában és abban jelentkezik, hogy a pontok halmazát minden tükrözéskor bővíti. Így akadályozza meg, hogy az eljárás, a keresési térnek csak egy résztartományát vizsgálja.

A kezdőpont kijelölése után a többi pontot véletlenszerűen határozza meg. Ha átlép egy korlátot egy új pont létrehozásakor, akkor lépésenként haladva a már létrehozott pontok által meghatározott középpont felé, az első engedélyezett pontra cseréli ki azt.

Ezután tükrözi a legrosszabb pontot, mint a szimplex stratégiánál, de a korlátokat itt is figyelembe veszi.

Mivel az eljárás több pontot használ, így a tárolókapacitás-igénye is nagyobb.

5.1.4. Gradiens stratégiák

A gradiens módszer CAUCHY (1847), KANTOROVICH (1940, 1945), LEVENBERG (1944) és CURRY (1944) munkája nyomán alakult ki, eredetileg egyenletek és egyenletrendszerek megoldására alkalmazták. Az eddigi módszerek vagy csak meghatározott irányokban vizsgálták a célfüggvény értékeit, vagy az előző lépések eredményeiből következtetve határozták meg a következő lépés irányát. A gradiens stratégiák olyan hegymászó algoritmusok, amelyek a döntéshez felhasználják a parciális deriváltakat is, így mindig abban az irányban lépnek tovább, amelyikben a függvény meredeksége a legnagyobb. Ezt az irányt a célfüggvény gradiense határozza meg. Az eljárás az eddigi módszereknél sokkal gyorsabban képes a szélsőértéket elérni, alkalmazhatóságának feltétele a célfüggvény folytonossága és a parciális deriváltak létezése.

Az egyes gradiens stratégiák abban különböznek egymástól, hogy a meghatározott irányban milyen módszerrel lépnek, és mennyire pontosan követik a gradiens által meghatározott útvonalat. Ez alapján rövid- és hosszúlépésű algoritmusokat különböztethetünk meg.

A gradiens stratégiák a lépés nagyságának meghatározására különböző módszereket használnak, a legegyszerűbb esetben alkalmazhatunk állandó lépésközt, de az új pont helyzetének meghatározására bármelyik egydimenziós keresőmódszert is felhasználhatjuk. Ha azt a lépéshosszt választjuk, amelyiknél a függvény értéke a legkedvezőbb, akkor az eljárást a leghosszabb lépés módszerének nevezzük.

Az eljárások egyik hátránya, hogy nem tudják megkülönböztetni a lokális és a globális minimumot. Ennek kiküszöbölésére különböző módszereket kell alkalmaznunk, például több, véletlenszerűen kiválasztott pontból is elindíthatjuk a keresést.

A befejezés feltételét megkaphatjuk az egyes lépések közti függvényérték-eltérések vagy a gradiens vektor hosszának vizsgálatából is.

5.1.4.1. Powell stratégiája: konjugált irányok

A legjelentősebb ötlet a gradiens eljárás konvergenciális nehézségeinek kiküszöbölésére HESTENS-től és STIEFEL-től (1952) származik, a módszert konjugált irányok vagy gradiensek néven ismerjük.

A irányok szempontjából konjugáltak, ha pozitív definit mátrix (az összes sajátértéke pozitív), és minden esetre. A konjugált irányok egymástól lineárisan függetlenek. Ha A-t az I egységmátrixszal helyettesítjük, akkor a vektorok ortogonálisak lesznek. Ha az mátrixot használjuk a irányok meghatározásához, akkor egy négyzetes függvény szélsőértékét ezekben az irányokban végrehajtott egydimenziós keresésekkel kaphatjuk. Iterációhoz jól használható közelítést kapunk abban az esetben is, ha a célfüggvény nem négyzetes. Az eljárás a másodrendű deriváltakat is felhasználja. A konjugált irányok alkalmazásán alapuló eljárásokat azért soroljuk mégis a gradiens módszerek közé, mert nem közvetlenül ugyan, de a gradienst használják fel a kereséshez.

Konjugált irányok stratégiája
5.6. ábra - Konjugált irányok stratégiája


Konjugált vektorokat a másodrendű deriváltak ismerete nélkül is létrehozhatunk, a másodrendű deriváltakra következtethetünk például, a gradiens változásából is.

POWELL módszere kétparaméteres esetre (5.6. ábra - Konjugált irányok stratégiája) először a koordinátairányokban alkalmazott keresésekkel meghatároz két vektort (), majd a másodrendű deriváltak becslésével vektor mellé kiszámít egy új vektort. A következő iterációban már a irányok mentén keres.

5.1.4.2. Newton stratégiák

A Newton stratégiák azt a tényt használják fel, hogy ha egy függvény számtalanszor differenciálható, akkor egy pontjában az értéke felírható egy másik pontbeli függvény és derivált értékekkel, a következő Taylor-sor szerint:

 

(5.11)

 

(5.12)

A módszer analitikus, az egyenlettel a szélsőérték helye egy lépésben kiszámítható. Első ránézésre nagyon egyszerűnek tűnik ez az egy lépésben történő számítás, de tulajdonképpen egy egyenletrendszer megoldását takarja.

Az egyenletrendszer nem oldható meg mindig, és a megoldás lehet minimum, maximum és nyeregpont is, a globális szélsőérték se garantált, megtalálása a kezdőpont kiválasztásától függ.

A Newton stratégiák általában csak a másodrendű deriváltakat használják az iterációs számításban, BIGGS (1971, 1973) kidolgozott egy eljárást, amely magasabb rendű deriváltakat is alkalmaz.

Az iterációs egyenlet másodrendű esetben:

 

(5.13)

vagy más alakban

 

(5.14)

Ezt az eljárást néha másodrendű gradiens módszernek is nevezik, ahol: a keresési irány és a lépéshossz, a valódi lépéshosszt természetesen tartalmazza.

A következő iterációhoz az előzőben kapott pontot használjuk. Az iterációt addig folytatjuk, amíg a célfüggvény értékének változása egy meghatározott érték alá nem csökken. Az eljárás gyorsításához azt az ötletet alkalmazhatjuk, hogy ritkábban számítjuk újra a másodrendű deriváltakat és több iterációhoz is ugyanazt az értéket használjuk.

A módszer továbbfejlesztett változatai az eljárás megbízhatóságának növelését a gyors konvergencia megtartásával együtt érik el.

5.1.4.3. Davidson-Fletcher-Powell módszer (Kvázi Newton stratégia, Variable Metric Strategy)

A kvázi Newton módszerek nem használják a másodrendű deriváltakat, hanem az elsőrendű deriváltak változásából becslik azokat. Az ötlet DAVIDON-től (1959) származik, gyakorlati módszerré FLETCHER és POWELL (1963) alakította.

Az eljárás rekurziós formulája:

 

(5.15)

 

(5.16)

 

,

(5.17)

ahol

   

 

az egységmátrix

 

pedig a korrekciós mátrix:

 

(5.18)

ahol: , .

5.1.5. Random (véletlenszerű) stratégiák

Az eddigi fejezetekből kimaradtak azok az eljárások, melyek nem determinisztikus, hanem valószínűségi szabályok alapján változtatják a paramétereket.

Általános gyakorlat az optimalizáló módszereknél a véletlen döntések alkalmazása, ha a determinisztikus szabályok nem érik el a kívánt eredményt, vagy zsákutcába vezetnek.

A random módszerekről az általános vélemény az, hogy sokkal költségesebbek, és a gondosan kidolgozott determinisztikus szabályokkal mindig jobb eredményt érhetünk el. Ez nincs így, a véletlenszerűség nem tetszőlegességet jelent, létrehozhatunk olyan véletlenszerű döntéseket, melyek speciális elvárásoknak is megfelelnek. Néhány esetben pedig csak a véletlenszerűség alkalmazásával juthatunk eredményre.

A hegymászó algoritmusokat véletlenszerű döntések alkalmazásával módosíthatjuk, például a keresési irányok kiválasztásánál. Sokszor használják a véletlen döntéseket az eljárások idő előtti befejeződésének kiküszöbölésére is, mert ezek minden esetben alkalmazhatók.

Számos javaslat létezik a globális szélsőérték elérésére, kiegészítő heurisztikus szabályok alkalmazásával, például az intervallum több részre osztásával, és az egyes intervallumokon kapott eredmények összehasonlításával. A másik, és néha az egyetlen, módszer a véletlenszerűen kiválasztott kezdőpontok alkalmazása, majd a kapott szélsőértékek összehasonlítása.

Megfigyelték, hogy egyes determinisztikus eljárásoknál a pontatlanság nemhogy csökkentené, hanem növeli a hatékonyságot, ezért ezt a módszert alkalmazták, ami tulajdonképpen a véletlenszerűség felhasználása.

Az eddigi módszerek mind determinisztikus eljárások módosításai voltak, a tiszta random stratégia létjogosultságát az igazolja, hogy komplikált esetekben még ma is használják egyszerű Monte-Carlo módszer néven. Az eljárás egyenlő valószínűséggel kiválasztja a pontokat, kiszámítja a célfüggvény értékeket és a legkisebb (legnagyobb) értéket választja optimumnak. Ha a módszert összehasonlítjuk a rácsmódszerrel (a paramétertérben egy rács pontjaiban számítja ki a függvényértékeket), akkor azt az eredményt kapjuk, hogy a két eljárás egyenértékű (a felvett pontok száma egyenlő), ha a random keresésnél megelégszünk a szélsőérték megtalálásának 63%-os valószínűségével. Ha azt akarjuk, hogy 90%-os valószínűséggel találjuk meg a szélsőértéket, akkor több mint 2-szer annyi pontot kell felvennünk, mint a rácsos keresésnél. Ez azért van így, mert a véletlenül felvett pontok nagyon közel is eshetnek egymáshoz. Az eljárást javíthatja, ha a tartományt résztartományokra osztva, mindegyikben csak egy pontot veszünk fel (BROOKS). Ha az optimum helyéről valamilyen feltételezésünk van, akkor ott kisebb résztartományokat felvéve sűríthetjük a pontokat (INDELSOHN, 1964).

Javulás érhető el, ha a random eljárást sorrendi működéssel módosítjuk, például az első N pont után a keresést egy kisebb térre szűkítjük. A kúszó (creeping) módszer (BROOKS 1958) másképpen teszi az eljárást szekvenciálissá. Egy pontot felvesz, a többit pedig úgy kapja, hogy a felvett pont koordinátáit valamilyen valószínűségeloszlás-függvény alapján kapott véletlen számmal eltolja. A pontok közül a legkedvezőbb függvényértékűt választja ki, és a következő lépésben ez a pont lesz a véletlenszerűen kiválasztott ponthalmaz középpontja.

Ha az élőlényeket megfigyeljük szembeötlő, hogy mennyire alkalmazkodtak a környezetükhöz, sok esetben a biológiai struktúrák, még a legmodernebb technikai rendszereket is felülmúlják. Ezekből a megfigyelésekből sokan arra a következtetésre jutottak, hogy a természet képes optimális megoldásokat találni a jelentkező problémákra.

A fajok keletkezésének elmélete szerint, minden élőlény egy hosszú fejlődési folyamat eredménye, amit evolúciónak nevezünk. A megfigyelések alapján azt kell feltételeznünk, hogy az optimális, vagy legalábbis egy jól alkalmazkodó organizmus kifejlesztése az evolúció sajátja, vagyis az evolúció rendelkezik egy optimalizáló stratégiával. A természetnek ez a stratégiája hasonlóságot mutat az eddigi optimalizáló eljárásokkal, az evolúcióban a variáció a véletlen változásokban jelenik meg, míg a szelekció a jobban alkalmazkodott egyedeket részesíti előnyben. Ezt a hasonlóságot legtöbbször a random eljárásokkal mutatják ki, mert a mutáció leginkább véletlenszerű változásokkal magyarázható.

Az evolúció hatékonysága azonban nem magyarázható az egyszerű random kereséssel, azt kell feltételeznünk, hogy ez egy sorrendi eljárás, ami az előző esetek eredményeit felhasználva halad az optimum felé.

5.1.6. Evolúciós módszerek

A természetben megfigyelhető struktúrák és folyamatok lemásolásának szándéka, a technikai problémák megoldásának céljából, egyidős a mérnöki tevékenységgel. Az evolúciós módszerek eljövetelét a bionika tudományának megjelenése jelezte, mely a természet problémamegoldó módszereit ülteti át a mérnöki gyakorlatba. Az evolúció által létrehozott megoldásokat a kutatók gyakran találták optimálisnak. Több tudós (ASHBY, 1960; BREMERMANN, 1963; RECHENBERG, 1964; FOGEL, OWENS és WALSH 1965; HOLLAND 1975) is kidolgozott olyan módszereket melyek a természetben megfigyelhető folyamatokat modellezik [21.] .

5.1.6.1. Szimulált hőkezelés

Ez az eljárás is a természetből meríti a keresés alapötletét. A fémek hőkezelését megfigyelve láthatjuk, hogy a kristályszerkezet és ezzel a fizikai tulajdonságok megváltoztatását az anyag felmelegítésével és különböző sebességű lehűtésével érhetjük el. Minél lassabb a lehűlés annál több ideje van az atomoknak, hogy rendezett kristályrácsban helyezkedjenek el, vagyis elérjék az energiaminimumot. Ha túl gyors a folyamat, akkor csak egy lokális energiaminimumú állapot fog létrejönni.

KIRKPATRICK, GELATT, VECCHI (1983) és CERNY (1985) publikáltak ezen a megfigyelésen alapuló optimalizáló módszereket, amelyeket szimulált hőkezelési eljárásoknak nevezzük.

Az algoritmusok - az optimum keresése közben - bizonyos valószínűséggel elfogadnak egy rosszabb lépést is, így az eljárás képes megszökni a lokális szélsőértékekből. Az alkalmazott valószínűséget az idő múlásával csökkentjük, egyre kevesebb hibát engedélyezve, ezzel modellezve a hűtési folyamatot.

A rosszabb állapot elfogadásának valószínűsége:

 

(5.19)

ahol

   

a paramétervektor,

 

a valószínűség-eloszlás normalizálására szolgáló állandó,

 

 

a célfüggvény értéke,

 

a Boltzmann állandó,

 

a hőmérséklet.

A hőmérséklet változtatására különböző terveket alkalmazhatunk, így befolyásolva a keresés folyamatát. [21.]

A szimulált hőkezelő eljárás egy lehetséges algoritmusa:

A szimulált hűtés algoritmusa
5.7. ábra - A szimulált hűtés algoritmusa


5.1.6.2. Evolúciós algoritmusok (EA)

Az evolúciós számítás vagy evolúciós algoritmus (evolutionary computation, evolutionary algorithm) elnevezést, a különböző eljárások egységbe foglalására alkották. A módszerek három nagy csoportra oszthatók, ezek a genetikus algoritmusok (genetic algorithms), az evolúciós stratégiák (evolution strategies) és az evolúciós programozás (evolutionary programming). Ezen módszerek közös jellemzői, hogy mindegyik a reprodukciót, a véletlen variációt, a versengést és a kiválasztást alkalmazza a populáció egyedein. Ez a négy művelet az evolúció működésének alapja [25.] .

Az evolúciós algoritmusok közös tulajdonságai:

  • A populációnak, vagyis az egyedek összességének kollektív tanulási mechanizmusát használják fel a kereséshez. Minden egyed egy keresési pontot reprezentál a paramétertérben. Az egyes egyedek által elért eredmények a többiek számára is hozzáférhetők, információt cserélnek egymás közt. Egyéb információkat is szolgáltathatnak, például az algoritmus működési paramétereinek változtatásához.

  • Az egyedek leszármazottjait, véletlenszerűséget felhasználó eljárásokkal hozza létre. A mutáció az egyedek hibás másolása, a rekombináció új egyed létrehozása, két vagy több egyedből nyert részleges információk felhasználásával.

  • Az egyedekhez a populáció többi tagjának felhasználásával egy jellemző, a fitness érték rendelhető. Ezeket az értékeket össze lehet hasonlítani, és döntést lehet hozni arról, hogy melyik egyed életképesebb. Ezen érték alapján a szelekciós eljárás egy jobb egyedet nagyobb valószínűséggel választ az utódok létrehozására vagy a túlélésre, mint egy rosszabbat.

A fitness (fitnesz) fogalma a neo-darwinista evolúciós elméletből származik. Ez a mérőszám mutatja meg, hogy a populáció többi tagjához viszonyítva az egyed mennyire sikeres. Ettől a tulajdonságtól függ a szaporodás esélye és a túlélés sikere. Kiszámításának módja lehet például maximumkeresés esetén, az egyed célfüggvény értékének osztása a populáció célfüggvény értékeinek összegével.

Az evolúciós algoritmusok három csoportja ezeket az elemeket különböző módon és különböző szerkezetben alkalmazza. Az eljárás egy lehetséges általános formája a következő:

Az Evolúciós algoritmus
5.8. ábra - Az Evolúciós algoritmus


5.1.6.2.1. Evolúciós stratégiák (ES=Evolution Strategies)

Az első evolúciós stratégiát 1964-ben RECHENBERG és SCHWEFEL alkotta meg kísérleti optimalizáló módszerként. Az eljárást áramlástani tulajdonságok javításához használták. Létrehozására azért volt szükség, mert az addigi módszerek mindig elakadtak egy lokális minimumban. Ez az eljárás volt a mára kifejlesztett evolúciós stratégiák őse.

5.1.6.2.2. Az egyszerű Evolúciós Stratégia

Az algoritmus csak két egyeddel dolgozik, az utód létrehozásához, rekombinációt nem, csak mutációt alkalmaz. A szelekció determinisztikus, mindig a legjobb egyed a túlélő. A mutáció az egyedek paramétereit egymástól függetlenül, véletlenszerűen változtatja meg egy valószínűségeloszlás-függvény segítségével kapott véletlen szám hozzáadásával.

Az eljárás algoritmusa:

Az Evolúciós Stratégia algoritmus
5.9. ábra - Az Evolúciós Stratégia algoritmus


Az algoritmuson különböző változtatásokat végrehajtva, megjelentek a több szülőt és utódot használó, többtagú stratégiák is.

5.1.6.2.3. Az evolúciós stratégiák típusai

Az evolúciós stratégiákat egyaránt csoportosíthatjuk az eljárásban alkalmazott egyed és utódszám valamint a következő generáció egyedeinek kiválasztása alapján

Az algoritmusokat egy rövidített jelöléssel nevezték el. Az egyszerű evolúciós stratégia jelölése például: (1+1) ES, ahol a zárójelben az egyedszám és az egy iteráció alatt létrehozott utódok száma szerepel, a + jel pedig arra utal, hogy a következő generációba az előző generáció egyedei és az utódok közül egyaránt választhat.

Ez alapján létezik (μ+1) ES és (μ+λ) ES, ahol μ az egyedszám, λ pedig az utódok száma. A (μ,λ) ES rövidítésben a + jel helyett egy vessző található, ami arra utal, hogy a következő generáció egyedeit csak az utódok közül választja ki az algoritmus [21.] [25.] .

5.1.6.2.4. Egymásba ágyazott evolúciós stratégiák

Ezek olyan speciális evolúciós stratégiák melyek több algoritmust (szintén evolúciós stratégiák) futtatnak egyszerre, mindegyiket külön populáción, és ezeket az algoritmusokat az eljárás egyedekként kezeli. Az egyes algoritmusok rangsorolásához a populációk egyedeinek átlagértékét veszi alapul. Ez a módszer felhasználható például a belső algoritmusok paramétereinek javítására. Ebben az esetben a külső eljárás által optimalizált paraméterek a belső eljárások futását befolyásoló változók [25.] .

5.1.6.2.5. Genetikus algoritmusok (GA)

Ma a genetikus algoritmusok a leginkább elterjedt és legnépszerűbb evolúciós stratégiák. Az első eljárásokat 1975-ben JOHN HOLLAND és munkatársai fejlesztették ki.  Kutatásaik fő célja a természetben található adaptív rendszerek leírása és a természet lényeges mechanizmusait alkalmazó mesterséges rendszerek (programok) fejlesztése volt. Főleg a természetes rendszerek robosztusságát (széles problémakörön való alkalmazhatóságát) kívánták a technikai rendszerekben is megteremteni.

Az első eljárás (HOLLAND eredeti algoritmusa) minden ciklusban csak egy utódot hozott létre, és azt a populációba egy véletlenül kiválasztott egyed helyére illesztette be. Ez a módszer csak a reprodukciónál alkalmazott az egyedek eredményességétől (fitness) függő szelekciót.

A módszernek számos változata alakult ki - az egyes változatok különbözhetnek egymástól az egyedek ábrázolásában (bit, valós, permutációs), a velük dolgozó operátorokban vagy a populáció szerkezetében. Léteznek speciális eljárások is, mint például az egyszerre több szempont szerint optimalizáló és a párhuzamos futású algoritmusok.

A genetikus algoritmus egy lehetséges változata:

Genetikus algoritmus
5.10. ábra - Genetikus algoritmus


A genetikus algoritmusok elterjedésének okai az egyszerű eljárás, a hatékonyság és a széles körben való alkalmazhatóság.

5.1.6.2.6. Evolúciós programozás (EP)

Az evolúciós programozást LAWRENCE FOGEL dolgozta ki 1964-ben, a mesterséges intelligencia megközelítésének új módszereként. A stratégia egyedekként a probléma különböző megoldási módjait, véges állapotú rendszereket (Finite State Machine, FSM), használ. Az eljárás nemcsak a problémát megoldó algoritmusok paramétereit, hanem azok egyéb építőelemeit is módosíthatja.

Az 1980-as évek vége óta az evolúciós algoritmusok elterjedésével az evolúciós programozást több területen is sikeresen alkalmazták: a neurális hálózatok tervezésénél, betanításánál és optimalizálásánál, optimális útvonal meghatározási problémáknál, az automatikus szabályozásoknál, a játékelméletben valamint az interaktív mesterséges intelligenciák területén is [17.] [25.] .

5.1.6.2.7. Genetikus programozás (GP)

Ezt az újfajta eljárást JOHN KOZA alkotta meg 1989-ben. Az ő ötlete az volt, hogy az adott probléma megoldására ne evolúciós programot készítsünk, hanem a lehetséges számítógépprogramok keresési terén alkalmazzunk egy evolúciós algoritmust. Így nemcsak egy már létező algoritmus paramétereinek optimális beállítását kereshetjük, hanem a probléma megoldására alkalmas programok (algoritmusok) között kereshetjük az optimális esetet [17.] .

Mivel a genetikus programozási algoritmus egyedei programok, az alkalmazott mutációs, rekombinációs és szelekciós operátorok is speciálisak, programokként kezelhetők és maguk is fejlődhetnek.

A számítógépprogramok fejlesztésének ezen új módszere azért jelentős, mert megváltoztathatja a problémamegoldásról alkotott képünket, és az eddig emberközpontú módszerek mellé új eszközt ad a fejlesztők kezébe [17.] [25.] .

5.2. Genetikus algoritmusok

5.2.1. Genetikai alapok

A genetikai kód megfejtése és univerzalitásának felismerése óta sokat foglalkoznak a kódrendszer kialakulásának problémáival. Ennek ellenére kérdéses még a keletkezés mechanizmusa és az is, hogy miért éppen ez a típus fejlődött ki.

Ha az evolúciót nemcsak biológiai folyamatként, hanem természeti törvényszerűségek működéseként értelmezzük, és alanyai közé a génekkel még nem rendelkező, egyszerűbb formákat is besoroljuk, akkor magyarázatot találhatunk a genetikai kód kialakulására. A kutatók szerint az egyedek a kémiai körfolyamatok kapcsolódásával keletkeztek, és mivel ezek a folyamatok befolyásolták egymás fennmaradási valószínűségét, verseny alakult ki köztük, ami egyre bonyolultabb szerveződések keletkezését eredményezte. Végül létrejött az egyednek egy olyan funkciója, a replikáció, amely másolással biztosította az elért előnyök fennmaradását és az egyed elterjedését. A szelekció, a fennmaradásért folytatott verseny hatására, a replikáció egyre pontosabbá vált, végül megjelent a közel 100%-os másolást, az identikus replikációt lehetővé tevő genetikai kód. A teljesen megegyező másolatot létrehozó mechanizmus azért nem alakul ki, mert ez már hátrányt jelentene, megakadályozná az új megoldások kialakulását.

Az identikus replikáció következtében lehetővé vált a legkülönbözőbb szelekciós előnyt jelentő változások rögzítése az egyedekben. A nem-identikus replikáció fázisában az egyes egyedek nagyfokú variabilitása miatt az evolúciót elsősorban a divergencia jellemezte, az identikus replikáció megjelenésével csökkent a variabilitás, a szelekció hatására egyfajta szabályozási konvergencia következett be. Ez a konvergencia idézi elő a környezetükhöz alkalmazkodott egyedek kialakulását.

A többsejtűek megjelenésével lehetővé vált az utódok rekombinációval történő létrehozása. Ez a folyamat a szülőegyedek genetikai információinak közös felhasználásával hozza létre az utódot. A rekombináció lehetővé teszi a szülők kedvező tulajdonságainak átörökítését, és így egy mindkét szülőnél sikeresebb egyed létrejöttét.

A DNS felépítése
5.11. ábra - A DNS felépítése


Az egyed felépítéséhez szükséges információt a DNS-lánc kódolja, ez a genotípus, az egyed megjelenési formája pedig a fenotípus. A genotípus és a fenotípus nem határozzák meg egymást egyértelműen, több genotípusnak is lehet ugyanaz a fenotípusa, és egy genotípus több megjelenési formát is eredményezhet, mert egyes tulajdonságok az egyedfejlődéstől is függenek.

A DNS-ben az információt hordozó legkisebb egység a nukleotid, melynek négy típusa a guanin, citozin, adenin és a timin. A nukleotidok 3-as csoportjai alkotják a géneket, melyek a 20-féle aminosav létrehozására szolgáló utasítást kódolják.

A genetikai kód a sejtben kromoszómákba csomagolva található. Kereszteződéskor a két szülő kromoszómája rekombinálódik, így jön létre az utód genotípusa.

A mutáció a kromoszóma megváltozása valamilyen külső hatásra vagy hibás másolás eredményeképpen, például a sejtek osztódásakor.

5.2.2. A genetikus algoritmus

A genetikus algoritmus az egyedeket bitsorokkal ábrázolja, ez a bitsor az egyed genetikai kódja, a genotípusa. A bitek csoportjai - a gének - kódolják a paramétereket, vagyis a fenotípust. A paraméterekkel meghatározható a célfüggvény értéke, melynek segítségével számíthatjuk az egyedek fitness értékeit. A keresést a szelekciós nyomás felhasználásával a kereső operátorok: a keresztezés és a mutáció végzik.

Az algoritmus folyamatábrája:

A genetikus algoritmus általános folyamatábrája
5.12. ábra - A genetikus algoritmus általános folyamatábrája


Az eljárás fő lépései az új egyedek létrehozása, a célfüggvény érték és fitness számítása és az új populáció létrehozása. A rulett kerék szelekciós eljárás (5.13. ábra - Rulett kerék szelekció) a populáció egyedeihez, fitness értékükkel arányos nagyságú körcikkeket rendel és azt választja ki, amelyik tartományába esik a kerületen véletlenszerűen meghatározott pont. Az egyedeket a körön összekeverve helyezi el, ezzel is növelve a változatosságot.

Rulett kerék szelekció
5.13. ábra - Rulett kerék szelekció


Egypontos keresztezés
5.14. ábra - Egypontos keresztezés


Az egyedek létrehozása a kiválasztott szülők keresztezésével történik (5.14. ábra - Egypontos keresztezés), majd az utódra alkalmazzuk a mutációs operátort (5.15. ábra - Mutáció).

Mutáció
5.15. ábra - Mutáció


Ezután kiszámítjuk az új egyedek függvényértékeit, és létrehozzuk az új populációt. Ahhoz hogy az egyedek száma változatlan maradjon, a régi populáció egy részét helyettesítenünk kell az utódokkal.

5.2.3. A genetikus algoritmusok működési mechanizmusa

A genetikus algoritmusok az evolúciót a genetika által leírt folyamatok segítségével modellezik. Megtaláljuk bennük a mutáció, a rekombináció és a szelekció elemeit is. Ezek mellett a fitness fogalmát is felhasználják.

A fitness az egyedek összehasonlítására szolgáló, egyedre jellemző érték, amely alapján döntést lehet hozni arról, hogy melyik egyed jelent kedvezőbb megoldást.

5.2.3.1. A sémaelmélet

A sémaanalízist JOHN HOLLAND 1975-ben dolgozta ki, a genetikus algoritmusok működésének egy lehetséges magyarázataként. Az ő elképzelése szerint a bonyolult problémák legegyszerűbben úgy oldhatók meg, ha részproblémákra bontjuk őket. A genetikus algoritmusoknál jelentkező legkisebb részfeladat a kód legkisebb részének, bitsor esetén egy bitnek, a meghatározása.

A sémaelmélet
5.16. ábra - A sémaelmélet


A séma a genetikai kódok olyan halmaza, melyben egyes helyeken azonos bitek vannak, a nem határozott biteket pedig csillaggal jelöljük. A sémaelmélet kimondja, hogy az alacsonyrendű sémák egyre magasabb rendűeket alkotnak, miközben folyamatosan javul a megoldás. Ha az egyik sémával leírható egyedek jobb célfüggvény értékeket adnak, akkor a szelekció ezeket az egyedeket részesíti előnyben, így a séma uralkodóvá válik a populációban, végül az összes egyed egyforma lesz, az optimális megoldást adva.

5.2.3.2. Az építőelem-elmélet

Az építőelem-elmélet azt mondja ki, hogy a genetikus algoritmus az alacsonyrendű sémákból építi fel az egyre magasabb rendűeket, így alkotva meg az elemekből a rekombináció segítségével a megoldást.

A genetikus algoritmusok működésének leírására egyelőre nem létezik egy teljesen kidolgozott elmélet. Egyes kutatók rámutatnak arra, hogy a mutáció és rekombináció együttes alkalmazása befolyásolja egymás eredményességét, és ez nemcsak javulást, hanem romlást is jelenthet.

A működés leírásához további kutatásokra van szükség mind az elméletben, mind a számítógépes kísérletek terén. Egy másik probléma, az ábrázolásmód típusa is megoldásra vár. Ez felveti a kérdést, hogy a binárisan vagy a valósan kódolt génekkel lehet-e nagyobb hatékonyságot elérni.

5.2.4. A genetikus algoritmusok típusai

A genetikus algoritmusok felépítéséből következően, a módszert sokféleképpen módosíthatjuk. Lehetőségünk van az egyes elemeket egymástól függetlenül változtatni, egyszerűbb vagy bonyolultabb szerkezeteket és ezekkel dolgozó eljárásokat alkalmazni.

Ebben a fejezetben sorra vesszük az algoritmus egyes elemeit és bemutatjuk ezek főbb típusait.

5.2.4.1. A gének ábrázolása

A megoldandó probléma paramétereit az algoritmusnak valamilyen formában ábrázolnia kell, és az ábrázolás módját mindig a feladat határozza meg. A lehetséges ábrázolási módok közül azt kell választanunk, amely a paraméterteret úgy képezi le, hogy az algoritmus a lehető leghatékonyabban működhessen.

5.2.4.1.1. Bináris ábrázolásmód

A legtöbb genetikus algoritmus a változókat bitek, 1-esek és 0-ák, sorával ábrázolja, egy kódoló és dekódoló algoritmus felelteti meg egymásnak a paramétertér és a bitek által meghatározott keresési tér pontjait.

Bináris ábrázolásmód
5.17. ábra - Bináris ábrázolásmód


Mivel a bitek tere véges számú pontot ábrázolhat, a dekódoló eljárásnak a paramétertérből ki kell választania ezeket a pontokat. Leggyakoribb a lineáris dekódoló eljárás alkalmazása, amely a pontokat egymástól egyenlő távolságra osztja el egy tartományon belül. Az ábrázolás pontosságát a tartomány nagysága és a bitek száma együtt határozza meg.

5.2.4.1.2. Valós ábrázolásmód

A valós értékeket alkalmazó eljárások a paramétereket nem bitek soraként, hanem valós értékekkel ábrázolják. Ebben az esetben nincsen szükség kódolásra, viszont speciális mutációs és rekombinációs eljárásokat kell alkalmaznunk.

Valós ábrázolásmód
5.18. ábra - Valós ábrázolásmód


Az egyes kutatók eltérő véleménnyel vannak a valós és a bináris kódolás előnyeiről és hátrányairól. GOLDBERG (1989) szerint a lehető legkisebb jelkészletet kell használni, mert így jöhetnek létre a legegyszerűbb sémák. A másik vélemény a valós számok alkalmazását részesíti előnyben, FOGEL és STAYTON (1994) szerint a sémák számának növelése nem szükségszerűen hasznos, sőt káros, így nincs értelme valós szám optimalizálási problémánál a paramétervektoron kívüli más ábrázolás alkalmazásának.

MICHALEWITZ (1992) kísérleti példákon keresztül hasonlítja össze a két ábrázolási módot, és azt a következtetést vonja le, hogy a valós ábrázolással nagyobb hatékonyság érhető el.

5.2.4.1.3. Permutációs ábrázolásmód

A kombinatorikai problémáknál a paramétertér pontjainak, véges számú elemek különböző sorrendjei felelnek meg. Ahogyan a kutatók permutációs problémákkal kezdtek foglalkozni, nyilvánvalóvá vált, hogy ezek az eddigi esetektől eltérő ábrázolásmódot és genetikai operátorokat igényelnek.

Permutációs ábrázolásmód
5.19. ábra - Permutációs ábrázolásmód


Az ábrázolás egyik lehetősége a permutációk hozzárendelése egy számhoz (bitsorhoz). Ebben az esetben azonban nem tudunk hatékony operátorokat alkalmazni és az ábrázolásmód sem illeszkedik a problémához.

Az egyedek ábrázolásához jobb módszer a permutációban szereplő tagok indexeinek felhasználása - ebben az esetben a DNS egész számokból álló sor.

Kombinatorikai feladatra klasszikus példa az utazó ügynök probléma, ahol meghatározott számú pontot, mindegyiket egyszer érintve, kell körbejárni, és a kiindulási pontba visszatérni.

A permutációs ábrázolásmódot az utazó ügynök probléma segítségével az 5.19. ábra - Permutációs ábrázolásmód szemlélteti.

5.2.4.1.4. Speciális ábrázolásmódok
  • Mátrix ábrázolásmód: A permutációs ábrázolás olyan változata, amelynél az algoritmus célja nem a sorrend, hanem az egyes elemek egymáshoz képesti elhelyezkedésének meghatározása.

  • Véges állapot ábrázolás: A véges állapotú rendszerek létrehozására használt algoritmusokban alkalmazzák.

  • Vegyes ábrázolás: Valós értékeket és biteket is tartalmazó ábrázolásmód.

  • Intronok alkalmazása: A kód tartalmaz olyan részleteket is (intron), melyeknek nincs jelentése. Ez a módszer az építőelemek keletkezésének megkönnyítését célozza.

  • Összekevert genetikus algoritmusok (Messy genetic algorithms): A paramétereket két változó kódolja, az egyik az értékét, a másik pedig a helyét határozza meg a DNS-en belül.

  • Diploid ábrázolás: Egy paraméter értékét több változó is meghatározhatja, de a domináns változó hatása érvényesül.

5.2.4.2. Fitness számítás

Ahhoz, hogy az algoritmus a populáció fejlődését elő tudja idézni, szükségünk van egy célfüggvényre. A célfüggvény értékét a paraméterek változtatásával, a probléma típusától függően minimalizálni vagy maximalizálni szándékozunk.

A célfüggvény meghatározásakor figyelembe kell venni a következőket:

  • A célfüggvénynek az optimalizálni kívánt mértékeket kell kifejeznie.

  • Valamilyen szabályszerűséget kell mutatnia az ábrázolási térben.

  • Megfelelő információt kell szolgáltatnia a szelekciós nyomás alkalmazhatóságához.

A fitness függvény az egyedeket sikerességük, vagyis a célfüggvény eredménye alapján értékeli. A célfüggvény értékeket egy nemnegatív intervallumra képezi le, gyakran alkalmazva skálázó függvényt is a szelekciós nyomás növelése érdekében.

A fitness függvény:

 

(5.20)

ahol

   

 

a célfüggvény,

 

a skálázó függvény,

 

az i. egyed paramétervektora.

A leggyakrabban alkalmazott skálázó függvények:

  • Lineáris skálázás alkalmazásakor a következő függvényt használjuk:

     

    (5.21)

    ahol , ha maximalizálás , ha minimalizálás a cél, β pedig az aktuális generáció legrosszabb célfüggvény értéke.

  • Szigma skálázás (GOLDBERG 1989) a célfüggvény értékek eloszlásán alapul:

    Haakkor , egyébként

     

    (5.22)

    ahol

       

     

    a célfüggvény értékek középértéke,

     

    az átlagos eltérés, c=2 konstans.

    Ennél a módszernél a szelekciós nyomást az értékek szórása is befolyásolja.

  • Hatványozáson alapuló fitness számítás :

     

    (5.23)

    ahol

       

    k  

    problémától függő paraméter.

  • Bolzmann számítás olyan hatványozó, skálázó eljárás, amely a szimulált hőkezelésnél alkalmazott módszerrel T-t folyamatosan csökkentve növeli a szelekciós nyomást:

     

    (5.24)

5.2.4.3. Szelekció

A szelekció az evolúciós algoritmusok egyik fő operátora, alkalmazásának két célja lehet, az egyik a szülők kiválasztása az új egyedek létrehozásához, a másik a következő generációba kerülő, túlélő egyedek meghatározása. Egyes eljárások csak az egyik, míg mások mindkét művelethez felhasználják.

A jó és a rossz megoldások megkülönböztetésére a fitness szolgál A szelekció alapötlete, hogy egy jobb fitness értékű egyed kiválasztásának nagyobb legyen a valószínűsége, mint egy rosszabbnak. A rosszabb egyed kiválasztásának is van esélye, ez biztosítja, hogy az eljárás kimozduljon egy lokális szélsőértékből.

5.2.4.3.1. Rulett kerék szelekció

A szelekciós algoritmusok közül ez az eljárás a legegyszerűbb, az egyes egyedekhez fitness értékükkel arányosan rendeli hozzá a rulett kerék kerületének egy részét. A nagyobb fitness értékű egyed arányosan nagyobb helyet kap, ezért amikor véletlenszerűen kiválasztunk egy kerületi pontot, a nagyobb fitness-szel rendelkező egyedet nagyobb eséllyel kapjuk eredményül. A véletlenszerűség növelésének érdekében az egyedeket a keréken összekeverve helyezzük el (5.13. ábra - Rulett kerék szelekció).

A szelekció általános algoritmusa a következő:

A rulettkerék szelekció algoritmusa
5.20. ábra - A rulettkerék szelekció algoritmusa


5.2.4.3.2. Versenyeztető algoritmus

Ennél az eljárásnál n darab egyedet véletlenszerűen választunk ki, majd ezek részt vesznek egy versenyben, és a győztes lesz az algoritmus kimenete. A versenyeztetés egyik módja a fitness értékek összehasonlítása, vagyis a determinisztikus kiválasztás. Ennél a módszernél az eredmény kialakulására nincs hatással a fitness skálázása és eltolása, ezért ezek alkalmazása szükségtelen.

A módszer további felhasználási lehetősége a párhuzamos genetikus algoritmusoknál jelentkezik. Az eljárás könnyen beilleszthető a párhuzamos struktúrába, mert nincs szüksége globális számításokra, ezért a versenyek egymástól függetlenül folyhatnak.

5.2.4.3.3. Rangsor alapú szelekció

A rangsorba rendezés lehet a megoldás azokban az estekben, amikor a célfüggvény értéke vagy csak pontatlanul, vagy egyáltalán nem határozható meg. Ilyenkor az algoritmus nem a célfüggvény értéket számítja ki, hanem valamilyen más módszer szerint rendezi rangsorba az egyedeket. Ezután az egyes egyedekhez a sorrend alapján rendeli a fitness értékeket, a hozzárendelt értékek változhatnak lineárisan, exponenciálisan vagy más módon is.

5.2.4.3.4. Boltzmann szelekció

Az eljárás a szimulált hőkezelésnél megismert módszer alapján (5.19 egyenlet), határozza meg a kiválasztott egyedet, így adva esélyt egy alacsonyabb fitness értékű egyednek is.

5.2.4.4. Kereső operátorok

A genetikus algoritmus fontos része az új egyedek létrehozása. Ezt a feladatot a genetikus operátorok végzik a már létező egyedek felhasználásával. Ezeknek a műveleteknek két fő típusa van: az egyik a mutáció, a másik a rekombináció. A mutáció a genetikus kód véletlenszerű, általában kismértékű, megváltoztatásával módosítja az egyedet. A rekombináció pedig új egyedet hoz létre több szülő felhasználásával.

A tapasztalatok azt mutatják, hogy az egyedek ábrázolásmódja mellet, az alkalmazott operátorok határozzák meg az algoritmus működésének hatékonyságát. Az operátorok és a reprezentáció között szoros kapcsolat áll fenn, amely meghatározza az alkalmazható elemek típusait.

5.2.4.4.1. Mutáció

Kezdetekben a mutációt a genetikus algoritmusok területén csak a rekombinációt kiszolgáló, háttéroperátorként kezelték, de ma már a kutatók egy önmagában is hatékony keresőműveletnek fogadják el.

A mutáció általános algoritmusa:

A mutáció algoritmusa
5.21. ábra - A mutáció algoritmusa


5.2.4.4.2. Mutáció bináris ábrázolás esetén

Ha az egyedek ábrázolása bitekkel történik, akkor az eljárás minden bitet egy meghatározott valószínűséggel billent át (5.15. ábra - Mutáció).

5.2.4.4.3. A valós ábrázolás mutációs operátorai

Valós ábrázolásnál minden paramétert egy valós szám ábrázol, ebben az esetben speciális mutációs eljárásra van szükség. A paramétereket egy véletlen számmal módosítjuk, ezt a számot különböző módszerekkel határozhatjuk meg.

5.2.4.4.4. Mutációs operátorok permutációs ábrázolásmód esetén

A permutációs ábrázolásmódú egyedek operátorai az eddigiektől eltérő elveket alkalmaznak. Olyan egyedet kell létrehozniuk, amely szintén permutáció lesz, és a megfelelő mértékű változást kell elérniük.

Ha például az egyedek geometriai pontok sorrendjét határozzák meg, és a gének ezeknek a pontoknak az indexei, akkor két pontot kiválasztva, a köztük lévő pontok sorrendjét megfordíthatjuk, a két kiválasztott pontot felcserélhetjük, vagy egy pontot kivéve a sorból két másik pont közé illeszthetjük. A megfelelő módszer alkalmazásához mindig figyelembe kell venni a probléma sajátosságait, hogy az operátor akkora változást idézzen elő az egyedben, amekkorára szükség van. A különböző problémáknál a permutációk különböző tulajdonságai lényegesek, egy útvonal problémánál a szomszédosság, míg egy sorrendi problémánál a helyzet a fő tulajdonság.

Mutációs operátorok permutációs ábrázolásmód esetén
5.22. ábra - Mutációs operátorok permutációs ábrázolásmód esetén


A mutációs operátorok egyéb típusai az egyedek ábrázolási módjaitól függően alakultak ki. Léteznek például véges állapotú rendszereket, faszerkezeteket és egyéb adatszerkezeteket módosító algoritmusok is.

5.2.4.4.5. Rekombináció

A biológiai rendszerekben a kereszteződés két kromoszóma között végbemenő bonyolult folyamat. A kromoszómák azonos helyein törések keletkeznek, és mielőtt ezeket kijavítaná a sejt, a megfelelő kromoszómadarabok helyet cserélhetnek. Ez a genetikai anyag rekombinációját eredményezi, és növeli a populáció változatosságát.

Az evolúciós algoritmusoknál ezt a mechanizmust a keresztező (crossover) eljárások valósítják meg, melyek az egyedeket leíró génsorokból, a megfelelő részsorokat felhasználva, hozzák létre az utódot meghatározó kódot.

5.2.4.4.6. Bináris keresztezés

Az első keresztező eljárást HOLLAND hozta létre, amely három lépésből állt: először kiválasztott két szülőt, majd meghatározta a keresztezési pontokat (keresztezési maszk), végül a szétvágott részekből két utódot hozott létre. Ez a keresztező eljárás csak egy meghatározott valószínűséggel adott a szülőktől eltérő utódokat.

A bináris keresztezés általános algoritmusa:

A bináris keresztezés algoritmusa
5.23. ábra - A bináris keresztezés algoritmusa


Az alkalmazott maszk generálására többféle módszert is alkottak, a leggyakoribb algoritmusok a következők:

5.2.4.4.6.1. Egypontos keresztezés:

A szülőket két részre osztja, és ezeket a részeket cseréli fel egymással (5.14. ábra - Egypontos keresztezés).

A maszkot előállító eljárás:

A maszkelőállító algoritmus (Egypontos keresztezés)
5.24. ábra - A maszkelőállító algoritmus (Egypontos keresztezés)


5.2.4.4.6.2. K-pontos keresztezés:

A szülőket k+1 részre osztja, majd ezekből hozza létre az utódokat (5.26. ábra - Bináris keresztezés).

A maszkot előállító eljárás:

A maszkelőállító algoritmus (K pontos keresztezés)
5.25. ábra - A maszkelőállító algoritmus (K pontos keresztezés)


Bináris keresztezés
5.26. ábra - Bináris keresztezés


5.2.4.4.6.3. Egyenletes keresztezés (uniform crossover):

Minden pont meghatározott valószínűséggel () származhat, egyik vagy másik szülőtől (5.26. ábra - Bináris keresztezés).

Az algoritmus:

A maszkelőállító algoritmus (Egyenletes keresztezés)
5.27. ábra - A maszkelőállító algoritmus (Egyenletes keresztezés)


5.2.4.4.6.4. A valós ábrázolásmódnál alkalmazott keresztezési módszerek

A valós elemekből álló vektorokat többféle módon is lehet keresztezni. Az eljárások két fő típusa a bináris módszereket és a numerikus műveleteket alkalmazó algoritmusok. A bites ábrázolásnál alkalmazott módszerek könnyen adaptálhatók valós vektorokra is.

Az aritmetikai rekombinációs algoritmusok az előzőektől eltérő elven működnek, az utód génjeit matematikai műveletekkel állítják elő, a szülők génjeiből.

A leggyakoribb aritmetikai keresztező operátorok:

Átlagoló aritmetikus operátorok:

A leszármazott génjeit a szülők génjeinek átlaga határozza meg:

 

(5.25)

 

(5.26)

ahol

   

az utód paramétervektora,

 

 

a szülők paramétervektorai

 

az alkalmazott súlyozási együtthatók.

5.2.4.4.6.5. Heurisztikus keresztezés (WRIGHT 1994)

Az eljárás a két szülőt (), melyekre igaz, hogy nem rosszabb mint , egy 0-1 közötti véletlen szám felhasználásával, a következő egyenlet alapján keresztezi:

 

(5.27)

Ez az operátor a célfüggvény értékeket használja fel a keresési irány és lépésnagyság meghatározására.

5.2.4.4.6.6. Szimplex keresztezés (RENDERS és BERSINI 1994)

Az operátor darab szülőt használ fel, melyek közül a legrosszabb fitness értékű. Az eljárás először kiszámolja az pontok középpontját -t, majd erre tükrözi -t. Az egyenlet:

 

(5.28)

 

(5.29)

5.2.4.4.6.7. Geometriai keresztezés (MICHALEWITZ 1996)

Az eljárás a szülők megfelelő génjeinek geometriai középértékét számítja.

Két szülő esetére az egyenlet:

 

(5.30)

ahol

 

az n darab génnel rendelkező szülők paramétervektorai.

5.2.4.4.7. A permutációs ábrázolásmód keresztező eljárásai

Permutációs ábrázolás esetén az eddig megismert módszerek nem alkalmazhatók. Olyan operátorokra van szükségünk, melyek amellett, hogy szintén permutációt adnak eredményül, a probléma megoldását is elősegítik.

Permutációs operátorokat elsőként DAVIS, GOLDBERG és LINGLE definiáltak 1985-ben.

5.2.4.4.7.1. DAVIS sorrendi keresztezése (Order crossover, OX)

Az eljárás menete: vegyünk két permutációt, az egyik a vágandó sor, a másik a kitöltő! Az első permutációból véletlenszerűen válasszunk ki egy szakaszt (8,7,3), és másoljuk át az utód ugyanazon részére! A maradék helyeket a második szülőből töltsük fel a sorrendet betartva, de a már felhasznált pontokat kihagyva (5.28. ábra - Sorrendi keresztezés)!

Az utód az első szülőtől relatív sorrendi, abszolút helyzeti és szomszédsági, míg a másodiktól csak relatív sorrendi információkat örököl.

Sorrendi keresztezés
5.28. ábra - Sorrendi keresztezés


5.2.4.4.7.2. Részleges megfeleltetésű keresztezés (Partially mapped crossover PMX)

Ezt az operátort GOLDBERG és LINGLE alkották meg 1985-ben. Az eljárás a sorrendi keresztezésnél megismert módszertől abban különbözik, hogy a második szülőtől származó pontokat más módon helyezi el (5.29. ábra - Részleges megfeleltetésű keresztezés).

Az S1 szülőtől átmásolt CDE részlet után (5.29. ábra - Részleges megfeleltetésű keresztezés – 1.), először azokat a pontokat helyezi el az U utódban, melyek még nem szerepelnek benne, és az S2 szülőnél azokon a helyeken vannak, melyeket az utódnál már betöltöttünk, ezek a b és az a pontok. A b pont elhelyezése úgy történik, hogy megnézi, melyik pont van az S1-ben a helyén, ez a D pont, ezután arra a helyre teszi a b pontot, amit a d foglal el az S2-ben (5.29. ábra - Részleges megfeleltetésű keresztezés -2.).

Az a pont elhelyezése: a helyén S1-ben E van, de e helyén U-ban már C; ezért tovább kell folytatni a módszert: c helye U-ban még üres, tehát ide kerül a (5.29. ábra - Részleges megfeleltetésű keresztezés – 3.).

A maradék helyeket az S2-ből ugyanazon a helyen található pontokkal tölti fel (5.29. ábra - Részleges megfeleltetésű keresztezés - 4.).

Részleges megfeleltetésű keresztezés
5.29. ábra - Részleges megfeleltetésű keresztezés


Sorrendi keresztezés
5.30. ábra - Sorrendi keresztezés


5.2.4.4.7.3. SYSWERDA sorrendi keresztezése (Order crossover-2)

Ez a módszer véletlenszerűen kiválaszt K pontot az első szülőből, megkeresi ezek helyét a másodikban, és a K pontot a második szülőben elfoglalt helyekre, de az első szülőben meghatározott sorrendben, helyezi el az utódban. A maradék pontokat a második szülőből közvetlenül másolja át az utódba.

5.2.4.4.7.4. Élkeresztezés

Az élkeresztező eljárás az utazó ügynök problémához készített speciális operátor. Az algoritmus a permutációk szomszédsági tulajdonságait veszi figyelembe, mert ez határozza meg egy útvonal hosszát.

Az eljárás először kifejezi a szülőkből a szomszédsági információkat, és tárolja őket egy táblázatban, tulajdonképpen egy mindkét szülő éleit tartalmazó gráfot rajzol fel. Ezután a táblázat (gráf) alapján egy új egyedet (útvonalat) hoz létre.

Az új egyedet létrehozó eljárás többször is zsákutcába juthat az útvonal keresése közben - az 5.31. ábra - Élkeresztezés egy lehetséges utódot mutat.

Élkeresztezés
5.31. ábra - Élkeresztezés


5.2.4.5. Korlátkezelési technikák

A korlátok fontos részét képezik minden probléma megfogalmazásának, többféle formában jelentkezhetnek: lehetnek szabályok, algebrai kifejezések, adatösszefüggések és egyéb meghatározások is.

A korlátok határozzák meg a keresési terület azon részét, amelyen belül a megoldások számunkra használhatók, megfelelőek a probléma megoldására.

A következő alfejezetekben a korlátok megvalósításának különböző módszereit mutatjuk be a genetikus algoritmusok területén.

5.2.4.5.1. Büntetőfüggvények

A büntetőfüggvényeket a hegymászó algoritmusok már évtizedek óta alkalmazzák korlátos optimalizálási problémáknál. Alapvetően két típusuk van: a külső büntetőfüggvények a nem-megfelelő megoldásokat, a belső büntetőfüggvények pedig a megfelelőket büntetik. A belső büntetőfüggvények alkalmazásának ötlete onnan származik, hogy korlátos esetekben az optimum gyakran a lehetséges és nem lehetséges megoldások határán van, alkalmazásával pedig gyorsíthatjuk az optimum elérését.

A külső büntetőfüggvényeket alapvetően három csoportra oszthatjuk:

  • A korlát büntetőfüggvények csak a határvonalon található megoldásokat büntetik, az ezen kívül esőket nem.

  • A részleges büntetőfüggvények a megfelelő megoldások határának közelében is alkalmaznak büntetést.

  • A globális büntetőfüggvények a nem megfelelő megoldásokat büntetik.

5.2.4.5.2. Statikus büntetőfüggvények

A legegyszerűbb módszer, a korlátot átlépő megoldást egy konstans értékkel büntetni. Ekkor a büntetett célfüggvény a célfüggvény és a büntetőpont összege lesz (minimumkeresés esetén). Több korlát esetén a büntető függvény:

 

(5.31)

ahol a büntetett célfüggvény, a célfüggvény, m a korlátok száma, C pedig a büntetőpont. Ha az egyed átlépte az i. korlátot, akkor , ha nem akkor .

A módszernek létezik olyan változata is, amely a korláttól való távolság függvényében határozza meg a büntetés nagyságát.

5.2.4.5.3. Dinamikus büntetőfüggvények

A büntetőfüggvények alkalmazásakor a nem megfelelő megoldások megjelenését is megengedjük, de a keresés végén már nem akarjuk, hogy a megoldás is ilyen legyen.

Ezt úgy érhetjük el, ha a keresés közben a büntetőpontok nagyságát folyamatosan növeljük, így kezdetben több, nem megfelelő megoldás jelenik meg, de ezek száma az idő múlásával csökken.

5.2.4.5.4. Adaptív büntetőfüggvények

Az adaptív módszerek a keresőalgoritmus aktuális hatékonyságára jellemző adatokat is használnak a büntetőpontok meghatározásánál. Így a büntetőpontok nagyságát az eljárás hatékonyságától teszik függővé.

5.2.4.5.5. Dekódolók alkalmazása korlátozás céljából

A dekódolók a problémát más módon közelítik meg - a nem megfelelő megoldásokat kizárják a keresési térből úgy, hogy egy másik ábrázolási tér elemeit rendelik hozzá a megengedett megoldások teréhez.

A dekódolónak teljesítenie kell a következő feltételeket:

  • Minden megoldáshoz hozzárendelhető egy pont a dekóder ábrázolási teréből.

  • A dekóder ábrázolási terének minden pontja egy megoldást reprezentál.

  • Minden megoldást azonos számú pont határoz meg a dekóder ábrázolási terében.

A hatékonyság érdekében figyelembe kell venni a következő szempontokat:

  • A transzformációt gyors számításokkal lehessen végrehajtani.

  • A dekóder ábrázolási terében történő kis változások az eredeti ábrázolási térben is kis változásokat jelentsenek.

Korlátozás a paraméterek transzformációjával
5.32. ábra - Korlátozás a paraméterek transzformációjával


5.2.4.5.6. Egyéb technikák
5.2.4.5.6.1. Javító algoritmusok

Ezek az algoritmusok az esetlegesen létrejövő hibás megoldásokat egy javító eljárás segítségével alakítják át. A javító algoritmusok alkalmazása nagymértékben megnövelheti a keresés időigényét.

5.2.4.5.6.2. Korlátokat betartó operátorok alkalmazása

Ezek a genetikus algoritmusok olyan speciális operátorokat alkalmaznak, melyek problémafüggő tudást felhasználva tartják meg az egyedek megfelelőségét. Mivel a korlátokat „megértő” eljárások nem hoznak létre hibás egyedeket, a keresés korlátok nélküli esetté alakul.

5.2.5. A populáció szerkezete

A populáció azoknak az egyedeknek a csoportja, melyek között a keresőeljárás kapcsolatokat létrehozva, a populáció egészét felhasználja a megoldáshoz.

Az egyszerű populációs modelltől eltérő egyéb szerkezeteket attól függően csoportosíthatjuk, hogy a genetikus algoritmus milyen kapcsolatokat enged meg az egyes egyedek között.

5.2.5.1. Életfeltételeket alkalmazó módszerek (Niching methods)

Megfigyelhetjük, hogy a természetben az egyes fajok különböző életkörülményekhez alkalmazkodtak, így a többi fajtól elkülönülve, őket kiszorítva használják fel az erőforrásokat. Ez a kiszorítás nem feltétlenül térbeli jelentésű, az egyes fajok specializálódhatnak egy erőforrás kihasználására vagy problémamegoldó módszer alkalmazására is. Ezeket az egymástól elhatárolt, az egyedek csoportjai által elfoglalt életterületeket nevezi az irodalom niche-nek.

A genetikus algoritmusok területén alkalmazva a niche-ket elérhetjük, hogy az algoritmus a lokális optimumokhoz tartozó megoldásokat is megtalálja. Az eljárás egyik megvalósítási módja a fitness megosztás, amely az egyes egyedek között elosztja egy adott terület fitness értékét. Így limitálja az egyedek számát a megoldások környezetében, ezáltal nem tud az összes egyed a globális szélsőérték köré csoportosulni (5.31. ábra - Élkeresztezés).

Egyszerű genetikus algoritmus
5.33. ábra - Egyszerű genetikus algoritmus


Niche-éket alkalmazó algoritmus
5.34. ábra - Niche-éket alkalmazó algoritmus


Fajkialakító algoritmus
5.35. ábra - Fajkialakító algoritmus


5.2.5.2. Fajkialakító módszerek (Speciation methods)

A módszer ötlete abból a megfigyelésből ered, hogy a niche-ket alkalmazó eljárások nem tudnak egyenlő mértékben koncentrálni az egyes lokális optimumokra, és egyenlő hatékonysággal keresni az összes szélsőértéket. Ennek az a magyarázata, hogy az utódok létrehozásához az algoritmus különböző niche-hez tartozó egyedeket is választhat, így mindkét lokális szélsőérték szempontjából rossz egyed jön létre.

A fajkialakító módszerek ezt a problémát úgy küszöbölik ki, hogy csak az egymáshoz hasonló, közeli egyedek hozhatnak létre utódokat. Ha a hasonlóság feltételét megfelelően határozzuk meg, akkor a keletkező egyed is ugyanazon optimum közelében marad (5.35. ábra - Fajkialakító algoritmus).

Az életfeltételeket alkalmazó és a fajkialakító modelleket a multikritériumú optimalizálási eseteknél is alkalmazzák. Ezek a feladatok egyidejűleg több célfüggvény szerinti optimalizálást követelnek meg.

A következő modelleket a párhuzamos genetikus algoritmusok területén alkalmazzák. Ezeknél a módszereknél a populáció felosztása az eljárás sebességének növelését célozza.

5.2.5.3. Sziget- vagy áttelepedési modellek (Island or Migration modells)

A szigetmodellek a populációt több alpopulációra bontják, és ezek között úgy létesítenek kapcsolatot, hogy bizonyos időközönként az egyedek meghatározott csoportját kicserélik köztük. Az alpopulációkon egymástól függetlenül, általában külön mikroprocesszorok végzik a számításokat (5.36. ábra - Migrációs modell).

Migrációs modell
5.36. ábra - Migrációs modell


5.2.5.4. Diffúziós vagy celluláris modellek

Mivel az egyedek létrehozása és célfüggvényük kiszámítása egymástól független, ezért párhuzamosan is történhet. A diffúziós modellek esetében az egyes egyedeken végzett műveleteket külön mikroprocesszorok végzik, így még az előzőnél is nagyobb sebességnövekedés érhető el (5.37. ábra - Diffúziós modell).

Diffúziós modell
5.37. ábra - Diffúziós modell


5.3. A genetikus algoritmusok speciális területei

5.3.1. Multikritériumú optimalizálás

Ha a probléma megoldásához egyszerre több egymással ellentétes célt tűzünk ki, és ezek függvényei az egyedek teljesen eltérő tulajdonságait mérik, akkor multikritériumú optimalizálási feladatról beszélünk. Ebben az esetben a problémának rendszerint nincs egyértelmű megoldása, csak nem alárendelt, alternatív megoldásai, melyet pareto-optimális halmaznak nevezünk.

A multikritériumú optimalizáló eljárásokat alapvetően három csoportba sorolhatjuk:

  • Egyszerű összegző módszerek: a célfüggvények eredményeiből, egy összegző függvény alapján számítják azokat az értékeket, melyekre az optimalizálást végzik.

  • Populáció alapú módszerek: az egyes számítási ciklusokban a célfüggvényeket felváltva alkalmazzák az optimalizáláshoz, vagy a különböző szempontok szerint több rangsort állítanak fel.

  • Pareto-optimumon alapuló módszerek: a pareto-dominancia definíciójának direkt felhasználásával állítanak fel rangsort.

5.3.2. Önadaptációs eljárások

A keresőeljárás hatékonyságát a stratégia paraméterei nagymértékben befolyásolják - ilyenek például a mutációs és a rekombinációs valószínűségek. Az önadaptációt alkalmazó keresőalgoritmusok ezeket a paramétereket a megoldandó probléma paramétereihez hasonlóan optimalizálják az adott keresési feladatra. A stratégia jellemzőit optimalizáló eljárás paramétereit és ezzel a tanulási sebességet a felhasználónak kell meghatároznia.

5.3.3. Metaevolúciós megközelítés

Ez a módszer azt a célt tűzi ki, hogy megtalálja a leghatékonyabb evolúciós algoritmust egy bizonyos feladat megoldásához. Az optimális keresőalgoritmus megtalálásához nemcsak a paramétereket, hanem az operátorok típusait is módosítja.

5.4. A genetikus algoritmusok előnyei és hátrányai

A genetikus algoritmusok áttekintése után, alkalmazásuk szempontjából hasznos, ha megismerjük az előnyeiket és hátrányaikat az egyéb eljárásokhoz viszonyítva.

5.4.1. Robosztusság

Az evolúciós algoritmusok fő tulajdonsága a robosztusságuk, ami azt jelenti, hogy szinte minden probléma megoldására egyformán jó eredménnyel alkalmazhatók.

Az optimalizáló eljárások összehasonlítása
5.38. ábra - Az optimalizáló eljárások összehasonlítása


Ennek ellenére egy konkrét feladatra létrehozott speciális keresőeljárással nagyobb hatékonyságot érhetünk el. Abban az esetben, ha ismerünk ilyen optimalizáló módszert, akkor érdemes ezt alkalmaznunk. Ha nem ismerünk, akkor az evolúciós módszerek alkalmazása hatékonyabb megoldás, mint a véletlenszerű keresőeljárások használata.

5.4.2. Lokális és globális szélsőérték

A hegymászó eljárásokkal ellentétben a genetikus algoritmusok a lokális szélsőértékekkel rendelkező célfüggvények esetében is mindig a globális szélsőértékhez tartanak. Egyes típusaikkal egyszerre kaphatjuk meg a globális és lokális szélsőértékeket is.

5.4.3. További előnyök

  • Diszkrét és folytonos problémáknál egyaránt használhatók.

  • A különböző adatreprezentációk segítségével a problémák széles területére alkalmazhatók.

  • Kevés információra van szükségük a problémáról, csak a célfüggvény értékekkel dolgoznak.

  • Egyszerű algoritmusuk miatt könnyen alkalmazhatók minden problémára és könnyen hibridizálhatók.

  • Az eljárások párhuzamos számításokra bonthatók, könnyen párhuzamosíthatók.

  • Egyes problémákra nem ismerünk más megoldást.

5.4.4. Hátrányok

  • A genetikus algoritmusok alkalmazásához nagy gyakorlat szükséges, a hatékonyan működő eljárás paramétereinek beállításához sok kísérletezésre van szükség.

  • A genetikus algoritmusban alkalmazott operátok kiválasztása és a megfelelő algoritmus-szerkezet meghatározása sem könnyű.

  • Az eljárás hátránya még a számítások költségessége, ez a szempont azonban az egyre gyorsabb számítógépek megjelenésével veszít a jelentőségéből.

5.5. A genetikus algoritmus alkalmazásának területei

  • Csomagok összeállítása meghatározott paraméterekkel (pl.: adott térfogattal vagy tömeggel).

  • Útvonal meghatározás: (pl.: több lehetséges útvonal közül a legrövidebb meghatározása.

  • Minimális költségű útvonal meghatározása kommunikációs rendszerekben.

  • Integrált áramköri chip optimális rajzolatának tervezése.

  • Paraméterkeresés tetszőleges alakú görbék közelítéséhez.

  • Ütemezési feladatok megoldása (scheduling problémák).

  • Robotok tanítása (pl.: lépegető robotmozgás tanítása).

  • Aktív zajszűrés, (a szűrő paramétereinek folyamatos hangolása, struktúrájának változtatása).

  • Mesterséges intelligencia: neurális hálók és fuzzy logikák paramétereinek megkeresése.

  • Gazdasági optimumszámítások (pl.: nyereség/erőforrás arány maximalizálása).

  • Beszédfelismerés, alakfelismerés, képfeldolgozás, mesterséges látás (adott minták alapján, tanuló struktúrák paramétereinek meghatározása).

5.6. PI kompenzáció paraméter optimalizálása genetikus algoritmussal

5.6.1. A feladat leírása

A feladat egy szabályozási kör (5.39. ábra - A szabályozási kör blokkdiagramja) szabályozó paramétereinek beállítása úgy, hogy a szabályozott jellemző () a lehető legpontosabban kövesse az alapjelet ().

A szabályozott szakasz () egy holtidős arányos egytárolós tag (PHT1):

 

(5.32)

A szabályozó () pedig egytárolós integráló tag (PI):

 

(5.33)

A szabályozási kör blokkdiagramja
5.39. ábra - A szabályozási kör blokkdiagramja


A feladat tehát és meghatározása úgy, hogy és jelek abszolút eltérésének integrálértéke adott időtartamra a lehető legkisebb legyen.

Az alapjel, a szabályozott jellemző és a hibaintegrál
5.40. ábra - Az alapjel, a szabályozott jellemző és a hibaintegrál


A keresés folyamatábrája
5.41. ábra - A keresés folyamatábrája


5.6.2. A feladat megoldása

A feladat megoldásához genetikus algoritmust alkalmazunk. Az eljárás a paraméterek (Ap, Ti) optimális értékének meghatározásához célfüggvényként az alapjel és a kimeneti jel abszolút eltérésének integrálértékét használja fel (5.38 egyenlet). Az algoritmus folyamatábrája az előző ábrán (5.41. ábra - A keresés folyamatábrája) látható.

A kezdeti populáció egyedeinek létrehozása és a célfüggvény értékek kiszámítása után kezdődik a keresőciklus. A fitness kiszámítását követően az algoritmus létrehozza az új egyedeket, majd beilleszti őket a populációba, ezután újból a fitness számítás jön.

A programot LabVIEW környezetben fejlesztettük, ami segítette a kezelőfelület kialakítását, míg a számítások egy részét Delphi-ben készített eljárásokkal valósítottuk meg.

5.6.3. Adatreprezentáció

A paraméterek ábrázolása bitsorokkal történik, így egyszerű keresőoperátorokat használhatunk, de a bitek által meghatározott keresési tér és a paramétertér között kódoló eljárást kell alkalmaznunk.

A paramétereket egyenként 16 biten ábrázoljuk, az így elérhető pontosság:

 

-re: ,

(5.34)

 

-re: .

(5.35)

Az egyedek ábrázolása
5.42. ábra - Az egyedek ábrázolása


A dekódolás egyenletei:

 

(5.36)

 

(5.37)

ahol az egyed i.-edik génje jobbról, pedig a paraméterek minimális és maximális értékei.

5.6.4. Fitness számítás

A megoldások értékeléséhez szükségünk van egy célfüggvényre, ez a (5.38) egyenlettel meghatározott integrálérték. Az integrál nagyságát szimuláció segítségével számítjuk, a TUTSIM modul felhasználásával (genopt.llbszabszak.vi, 5.43. ábra - A szabályozott szakasz LabVIEW programja).

A szabályozott szakasz LabVIEW programja
5.43. ábra - A szabályozott szakasz LabVIEW programja


A célfüggvény:

 

(5.38)

Mivel a feladat minimumkeresés, a célfüggvény értékeket ellentettjükre kell változtatnunk és hozzáadnunk a maximális értéket. A szelekciós nyomás növelése érdekében, hatványozáson alapuló, skálázó függvényt alkalmazunk.

A fitness függvény:

 

(5.39)

ahol a populáció legnagyobb célfüggvény értéke, az i. egyed célfüggvény értéke, pedig a programban szabadon megválasztható hatványkitevő.

5.6.5. Az alkalmazott operátorok

A programban az egyedek száma 2-től 100-ig, az utódok száma 1-től 100-ig változtatható, és az egyedeket tömbben tároljuk. Az 5.41. ábra - A keresés folyamatábrája belső ciklusában alkalmazott operátorok végzik a tulajdonképpeni keresést az új egyedek létrehozásával.

5.6.5.1. Szelekció

A szelekciós eljárás a populáció tagjai közül két szülőt választ ki a rulettkerék szelekciót alkalmazva (5.13. ábra - Rulett kerék szelekció). A forráskódban található eljárás (paropt.dllprocedure select) az első szülő meghatározása után egy tőle különböző második szülőt is kiválaszt.

5.6.5.2. Rekombináció

A szülők meghatározása után a keresztező eljárás (paropt.dllprocedure crossover) létrehoz egy utódot. Ehhez k-pontos keresztezést alkalmaz 4 keresztezési ponttal.

5.6.5.3. Mutáció

Az utód létrehozása után a mutációs eljárás (paropt.dllprocedure mutate) az új egyed minden bitjét, egy a programban meghatározható valószínűséggel változtatja meg.

5.6.6. Korlátok kezelése

Az eljárás egy előre meghatározott tartományban keresi a paraméterértékeket. Ezt a tartományt a felhasználónak kell megadnia úgy, hogy a szimulációnak minden esetben legyen megoldása.

Lehetőségünk van a kimeneti jelet egy általunk meghatározott tartományban tartani, amihez statikus büntetőfüggvényt alkalmazunk. A programban a felhasználó egyaránt beállíthatja a korlátokat és a büntető konstans nagyságát.

Korlátos esetben a fitness számításához (5.39 egyenlet) a célfüggvény értékek () helyett a büntetett célfüggvény értéket használjuk:

 

(5.40)

ahol C a büntető konstans.

Korlátozott kimeneti függvény
5.44. ábra - Korlátozott kimeneti függvény


5.6.7. Program kezelési leírása

A programot a LabVIEW alkalmazás segítségével futtathatjuk, a genopt.llb állomány megnyitásával. A kezelőfelületet az 5.45. ábra - A program felhasználói felülete mutatja.

A program felhasználói felülete
5.45. ábra - A program felhasználói felülete


Az 1. keretben a diagramok a szabályozott jellemző időbeli viselkedését ábrázolják. Az első az éppen létrehozott új egyedet a második pedig az eddigi legjobbat jeleníti meg.

A 2. keretben a grafikonok a generáció sorszámának függvényében ábrázolják a legjobb egyed és a populáció átlagos integrálértékeit.

5.6.8. A program futási eredményei

A program működésének vizsgálatához a következő paramétereket használjuk:

5.1. táblázat - PI szabályozó behangolása - bementi adatok

As

Ts [s]

Th [s]

tsim [s]

dt [s]

0,4

20

1

100

0,06


Az alapjel egységugrás függvény. A szabályozott jellemzőt korlátok segítségével tartjuk az alapjel alatt. A kapott rendszer átmeneti függvénye:

A kapott eredmények
5.46. ábra - A kapott eredmények


A felnyitott kör átviteli függvénye:

 

(5.41)

A Bode-diagram tiszta integráló jelleget mutat az erősítés diagramon:

Bode-diagram
5.47. ábra - Bode-diagram


5.6.8.1. A mutációs valószínűség hatása a keresés hatékonyságára

A vizsgálathoz a következő állandó paramétereket vesszük fel:

5.2. táblázat - Mutáció hatásvizsgálata  - bementi adatok

Egyedszám

Utódszám

Szelekció hatványa

[s]

[s]

[s]

[s]

16

6

2

0,4

20

1

100

0,06


A mutáció valószínűségét változtatva a következő eredményeket kapjuk:

5.3. táblázat - Mutáció hatásvizsgálata - eredmények

M: mutáció

I: integrál

A legjobb egyed integrálértéke a generáció sorszámának függvényében

A populáció átlagos integrálértéke a generáció sorszámának függvényében

M=0,01

I=4,07

M=0,03

I=2,71

M=0,04

I=2,53

M=0,05

I=2,69

M=0,5

I=2,77


A mutációs valószínűség növelésével az eljárás hamarabb talál jobb megoldásokat, gyorsabb lesz a keresés. Az értékeket egy határon túl növelve a keletkező egyedek nagyobb szórást mutatnak, így csökken az esélye annak, hogy minden lépésben egy jobb egyedet találjon. A túl kicsi és a túl nagy értékek is rontják a hatásfokot.

5.6.8.2. A szelekciós nyomást befolyásoló hatványkitevő hatása a keresésre

Az előző vizsgálatban alkalmazott paramétereket megtartva és a mutációs valószínűséget 0,04-nek választva a szelekciós nyomást változtatjuk:

5.4. táblázat - Mutáció hatásvizsgálat eredmények

n: kitevő

I: integrál

A legjobb egyed integrálértéke a generáció sorszámának függvényében

A populáció átlagos integrálértéke a generáció sorszámának függvényében

n=1

I=2,87

n=2

I=2,9

n=2,25

I=2,53

n=2,5

I=2,58

n=3

I=2,72


A szelekciós nyomás növelése gyorsítja az optimum elérését. Túl nagy érték alkalmazása esetén azonban, már korán leszűkül a keresési terület, így lassulhat az eljárás, különösen lokális optimummal is rendelkező célfüggvény esetén.

A keresés paramétereinek meghatározása nem könnyű feladat, erre az egyik módszer a próbálgatás és a tapasztalatok felhasználása, egy másik érdekes lehetőség az evolúciós algoritmusok alkalmazása.

5.7. Az utazó ügynök probléma megoldása genetikus algoritmussal

5.7.1. A feladat leírása

Az utazó ügynök probléma célja egy olyan útvonal meghatározása, amely az érinteni kívánt koordinátapontok mindegyikén egyszer és csak is egyszer halad keresztül, és a kezdőpontba tér vissza, és eközben a lehető legrövidebb utat járja be. Ez a feladat NP-nehézségű (NP = nem-determinisztikus (nem polinomiális) függvénnyel meghatározható idő), ami azt jelenti, hogy a probléma nem oldható meg pontosan, egy függvénnyel meghatározott időn belül.

A megoldás nemcsak elméleti szempontból jelentős, a gyakorlatban megoldandó feladatok egy része visszavezethető erre a problémára.

Jelen esetben, egy kétdimenziós térben (síkban) elhelyezett pontokat összekötő útvonalat kell meghatároznunk.

5.7.2. A feladat megoldása

A feladat megoldásához genetikus algoritmust alkalmazunk, az útvonalban szereplő pontok optimális sorrendjének meghatározásához, célfüggvénynek pedig az útvonal hosszát használjuk. A keresés folyamatábrája megegyezik az (5.41. ábra - A keresés folyamatábrája) ábrával. A program LabVIEW és Delphi környezetben készült - a kezelőfelület kialakítását a LabVIEW, míg a gyors működés elérését a Delphi segítette.

5.7.3. Adat reprezentáció

A feladat megoldásait a pontok sorrendje adja. Ezt a sorrendet ábrázolja az egyedek DNS-e az egyes pontokat indexeikkel jelölve. A gének így pozitív egész számok lehetnek, minden számnak egyszer és csak egyszer kell szerepelnie a DNS-ben (5.48. ábra - Adat reprezentáció).

Adat reprezentáció
5.48. ábra - Adat reprezentáció


5.7.4. Fitness számítás

A célfüggvény a pontok által meghatározott útvonal élhosszainak összege (5.42 egyenlet).

 

(5.42)

ahol a DNS-ben i-edik helyen található pont indexe, pedig a két pont által meghatározott él hossza.

A célfüggvény alapján számítjuk a fitness értékeket, hatványozó-skálázó függvényt alkalmazva:

 

(5.43)

ahol n értékét a programban szabadon megválaszthatjuk.

A fitness értékeket számító eljárás: Tsp.dllprocedure fitcomp.

5.7.5. Az alkalmazott operátorok

A programban az egyedek száma 2-től 100-ig, az utódok száma 1-től 100-ig változtatható, az ügynök által meglátogatott városok számát 1 és 1000 között adhatjuk meg, és az egyedeket tömbben tároljuk. A keresést az alkalmazott operátorok végzik.

5.7.5.1. Szelekció

A szelekciós eljárás két szülőt választ ki a rulettkerék módszerrel (5.13. ábra - Rulett kerék szelekció). A forráskódban található eljárás: Tsp.dllprocedure select.

5.7.5.2. Rekombináció

A szülők kiválasztása után a keresztező eljárás (Tsp.dllprocedure crossover) létrehozza az utódot. Ehhez sorrendi keresztezést alkalmazunk (5.28. ábra - Sorrendi keresztezés)

5.7.5.3. Mutáció

Az utód létrehozása után a mutációs eljárás (Tsp.dllprocedure mutate) módosítja az új egyedet. Erre a célra szomszédsági mutációt alkalmazunk, két pontot véletlenszerűen kiválasztva a DNS-ben, felcseréljük a köztük levő génszakaszt (5.22. ábra - Mutációs operátorok permutációs ábrázolásmód esetén).

5.7.6. Korlátok kezelése

Az algoritmusban alkalmazott operátorok, csak olyan egyedeket hoznak létre, amelyek megfelelnek a megoldásokkal szemben támasztott követelményeknek. Így a korlátokat betartó eljárások nem hoznak létre hibás egyedeket, a keresés korlátok nélküli esetté alakul.

5.7.7. Program kezelési leírás

A programot a LabVIEW alkalmazás segítségével futtathatjuk, a Tsp.vi állományt elindítva. A felhasználói felületet a (5.32. ábra - Korlátozás a paraméterek transzformációjával) mutatja.

A program felhasználói felülete
5.49. ábra - A program felhasználói felülete


A pontok elhelyezésére kétféle lehetőségünk van, a kör mentén történő elhelyezés a helyes működés megállapítását segíti, a véletlenszerű pedig egy általános feladat megoldásának képességét ellenőrzi.

A beállításokat, a helyes működés érdekében, csak a keresés leállítása után változtathatjuk.

5.7.8. Futási eredmények

A működés vizsgálatához a következő adatokat használjuk:

5.5. táblázat - A program bementi adatai

Egyedszám

Utódszám

Városok száma

Mutáció valószínűsége ( m )

Hatványkitevő ( n )

40

16

70

0,5

2


A pontokat körvonal mentén elhelyezve a következő futtatási eredményeket kapjuk:

Az egyedek körvonal menti elhelyezés esetén
5.50. ábra - Az egyedek körvonal menti elhelyezés esetén


Az útvonalhosszak változása a generáció sorszámának függvényében
5.51. ábra - Az útvonalhosszak változása a generáció sorszámának függvényében


A program 7100 generáció, azaz 113640 egyed létrehozása után találja meg a legrövidebb utat, míg az összes lehetséges egymástól különböző egyed száma darab.

Egy egyed összes meghatározására 1 msec számítási időt feltételezve a teljes számítási idő szükséglet 1,736*1095 sec, amely körülbelül. 0,55 1085 év.

(1 év = 3,1536 107 sec)

5.7.8.1. Véletlenszerű elhelyezés esetén az eredmények:

Az egyedek véletlenszerű elhelyezés esetén
5.52. ábra - Az egyedek véletlenszerű elhelyezés esetén


Az útvonalhosszak változása a generáció sorszámának függvényében
5.53. ábra - Az útvonalhosszak változása a generáció sorszámának függvényében


A megoldást 2540 generáció után éri el, a legrövidebb út 717,1 egység, az eljárás szempontjából a véletlenszerű elhelyezés könnyebb feladatot jelent, mint a speciális, körvonal menti esetben.

A legrövidebb útvonalhosszt meghatározó egyed 1000 pont esetén az 50.-ik és a 140000.-ik generációban:

Az utazó ügynök feladat megoldása 1000 kiindulási pont esetén
5.54. ábra - Az utazó ügynök feladat megoldása 1000 kiindulási pont esetén


6. fejezet - Rendszer-identifikáció (mérési adatok alapján)

Egy rendszer matematikai modelljét eddig fizikai megfontolások és kísérletek alapján létrehozott differenciálegyenlettel írtuk le. A differenciálegyenlet a modellek többségénél koncentrált paraméterű egyenletként jelent meg, ami azt jelentette, hogy a fizikai modellnek nem voltak olyan geometriai méretekből adódó paramétermódosító hatásai, amelyek szerepet játszottak volna a differenciálegyenlet együtthatóinak értékében.

A fizikai megfontolások alapján történő rendszer feldarabolás részrendszerekre, és ezen részrendszerek matematikai modelljének létrehozása, majd a részmodellek blokkdiagram- műveletekkel történő összekapcsolása a modellezés általánosan alkalmazott módszere.

Számos esetben a vizsgálandó rendszer szerkezetileg zárt felépítése nem teszi lehetővé, hogy részrendszerekre bontsuk, csak egy egészként vizsgálhatjuk a rendszerünket. A rendszer bementi jeleként tetszőleges időfüggvényt megadhatunk, és ezek hatására megjelenő kimenő jeleket tudjuk érzékelni, de magáról a vizsgált rendszerről, annak belső szerkezetéről nem áll rendelkezésre több információ. Ilyen esetben, amikor a vizsgált rendszerről csak bemeneti és ezekhez a bemenetekhez tartozó kimeneti mérési adatok állnak rendelkezésre a matematikai modell meghatározásához, rendszer-identifikációról beszélünk.

A rendszer-identifikáció segítségével tehát olyan matematikai modellt hozhatunk létre, melynek felépítése ugyanazon bementi és az ehhez tartozó kimeneti jelhez az egyik lehetséges (legjobb) megoldás. Helyesebben ugyanahhoz a bemeneti és kimeneti jelhez több matematikai modellt is létrehozhatunk, amelyek mindegyike meghatározható nagyságú hibaértékkel, de teljesíti a feltételeket.

A rendszer-identifikáció feladata, hogy kiválassza az adott válaszfüggvény előállításához szükséges legegyszerűbb felépítésű differenciálegyenletet. A legegyszerűbb felépítés az időváltozós, állandó együtthatós differenciálegyenletnél olyan alak, amelyben a bemenetek és kimenetek deriváltjainak fokszámai (a rendszer minden feladatrészének teljesítése mellett) minimális értékek. Ez egyben azt is jelenti, hogy megtörténik a feladat megoldásához szükséges minimális számú paraméter - differenciálegyenlet együttható – meghatározása.

Ha ideális esetben sikerülne a pontos differenciálegyenlet-struktúrát meghatároznunk, és ezt túlbecsülnénk, azaz a szükséges differenciálegyenlet fokszámoknál magasabb értékeket vennénk fel, akkor azok az együtthatók, amelyek a magasabb fokszámhoz tartoznak közelítően nullaértékűek, mivel nem vesznek részt a kimenő jel létrehozásában.

Az identifikációnál tehát meghatározó a vizsgált időváltozós differenciálegyenlet-struktúra fokszámainak helyes vagy közelítően helyes becslése. A magasabb fokszámú első becslés alapvetően nem jelent problémát, ezt sokkal több számítás követi, ha szükséges fokszámokat alábecsüljük, és ezekkel keressük a megoldást - általában siker nélkül vagy nagyon rossz jel azonossággal érünk célba.

6.1. Rendszerstruktúra-becslés

A vizsgált rendszer matematikai modelljének helyes felépítéséhez a bemeneti és az erre válaszként kapott kimeneti jel grafikus megjelenítését kell megvizsgálnunk és az ebből levont következtetések alapján rendszerstruktúra javaslatot hozhatunk létre.

Általában a rendszert vizsgáló bementi jelként egységugrás bemenetet alkalmazunk, amely arányos típusú rendszereknél a kiindulási állapotból az egységugrás jel hatására létrejövő új állapotba viszi át a rendszert. Ha a rendszer stabil, akkor egy korábbi állandósult állapotból a bemenő jel hatására létrejövő újabb állandósult állapotba kerül.

A rendszerstruktúra-becslés szempontjából számunkra a kimeneti jel egyik állapotból másik állapotba történő átmenetének időtartama alatt lejátszódó jelenségek – az úgynevezett tranziens viselkedés - a meghatározó. Ebből tudunk következtetést levonni a vizsgált rendszer (alapvető) típusára, illetve pólusainak elhelyezkedésére.

Az átmeneti függvényből megállapítható, hogy a vizsgált rendszer arányos, integráló vagy differenciáló típusú. Erre mutatunk be a következőken néhány példát.

A példák elsősorban azt a célt szolgálják, hogy a segítségükkel megállapíthassuk, hogy egységugrás bemenő jel és ehhez tartozó kimeneti jel esetén milyen átviteli függvény típussal próbálkozhatunk, hogy sikeres identifikációt valósítsunk meg.

Ezek a mintapéldák a legegyszerűbb eseteket mutatják be, ezektől jelentősen eltérő kimenő jelalak vagy nem egységugrás bemenő jel esetén a modellezőnek saját belátása szerint kell felvennie az identifikált rendszer struktúráját. Ez nagyon nagy tapasztalatot igénylő feladat, amely sok intuíciót is tartalmaz.

A következő alfejezetekben az alapvető átviteli függvénytípusok esetén mutatjuk be az egységugrásra adott válaszokat, és megadjuk azt is, hogy milyen átviteli függvényt ábrázoltunk. Ezzel szeretnénk elősegíteni, hogy adott átviteli függvényhez tartozó jelalak és annak időbeni lefutása mintaként szolgáljon a jelalak azonosításához és a sikeres struktúra kiválasztáshoz. Más paraméterértékekkel pedig a vizsgálandó jelalakhoz legközelebb eső jelalakot tudjuk előállítani.

A holtidőt tartalmazó tag átmeneti függvényéből le kell választani a holtidő okozta jelkésleltetést, és csak a késleltetés nélküli jelet kell identifikálni. A kimeneti jelkésleltetésből - lineáris rendszer esetén - egyértelműen meghatározható a jelkésleltető tag időkésleltetési paramétere (TH=holtidő).

6.1.1. Arányos típusú tagok átmeneti függvényei

Az arányos vagy P típusú (proporcionális) rendszer tulajdonsága, hogy az egységugrás bemenő jelre arányos erősítésének megfelelő kimenő jellel válaszol. A tranziens állapotot az határozza meg, hogy hány darab nevezőbeli valós vagy konjugált komplex pólussal rendelkezik. A kimeneti jel a bementi egységugráshoz képest egy késleltetést szenvedhet, amelynek időtartamát leolvashatjuk a kimenő jel diagramjáról.

A arányos tagok jellemzője, hogy egy állandósult értékből az egységugrás bemenő jel hatására egy újabb állandósult állapotba (értékre) mennek át a tranziens állapot lezajlása után.

A PT1 egytárolós arányos tag átviteli függvénye:

 

(6.1)

A PT1 egytárolós arányos tag átmeneti függvénye
6.1. ábra - A PT1 egytárolós arányos tag átmeneti függvénye


A PT2 kéttárolós arányos tag átviteli függvénye (két valós pólus esetén):

 

(6.2)

A PT2 kéttárolós arányos tag átmeneti függvénye (két valós pólus)
6.2. ábra - A PT2 kéttárolós arányos tag átmeneti függvénye (két valós pólus)


A PT3 háromtárolós arányos tag átviteli függvénye (három valós pólus esetén):

 

(6.3)

A PT3 háromtárolós arányos tag átmeneti függvénye (három valós pólus)
6.3. ábra - A PT3 háromtárolós arányos tag átmeneti függvénye (három valós pólus)


A PT2 kéttárolós arányos tag átviteli függvénye (két konjugált komplex pólus esetén):

 

(6.4)

A PT2 kéttárolós arányos tag átmeneti függvénye (két konjugált komplex pólus)
6.4. ábra - A PT2 kéttárolós arányos tag átmeneti függvénye (két konjugált komplex pólus)


A PT1 egytárolós holtidős arányos tag átviteli függvénye:

 

(6.5)

A PT1 egytárolós holtidős arányos tag átmeneti függvénye
6.5. ábra - A PT1 egytárolós holtidős arányos tag átmeneti függvénye


6.1.2. Integráló típusú tagok átmeneti függvényei

Az integráló vagy I típusú (integráló) rendszer tulajdonsága, hogy az egységugrás bemenő jelre integrálási erősítésének megfelelő meredekségű kimenő jellel válaszol. A tranziens állapotot az határozza meg, hogy hány darab nevezőbeli valós vagy konjugált komplex pólussal rendelkezik. A kimeneti jel ilyenkor egy időkésleltetést szenved a nevezőbeli pólus nélküli kimeneti jelalakhoz képest, amelynek időtartama meghatározható.

Az I integráló tag átviteli függvénye:

 

(6.6)

Az I integráló tag átmeneti függvénye
6.6. ábra - Az I integráló tag átmeneti függvénye


Az IT1 integráló egytárolós tag átviteli függvénye (egy valós pólus esetén):

 

(6.7)

Az IT1 integráló egytárolós tag átmeneti függvénye (egy valós pólus)
6.7. ábra - Az IT1 integráló egytárolós tag átmeneti függvénye (egy valós pólus)


Az IT2 integráló kéttárolós tag átviteli függvénye (két valós pólus esetén):

 

(6.8)

Az IT2 integráló kéttárolós tag átmeneti függvénye (két valós pólus)
6.8. ábra - Az IT2 integráló kéttárolós tag átmeneti függvénye (két valós pólus)


Az IT3 integráló háromtárolós tag átviteli függvénye (három valós pólus esetén):

 

(6.9)

Az IT3 integráló háromtárolós tag átmeneti függvénye (három valós pólus)
6.9. ábra - Az IT3 integráló háromtárolós tag átmeneti függvénye (három valós pólus)


Az IT2 integráló kéttárolós tag átviteli függvénye (két konjugált komplex pólus esetén):

 

(6.10)

Az IT2 integráló kéttárolós tag átmeneti függvénye (két konjugált komplex pólus)
6.10. ábra - Az IT2 integráló kéttárolós tag átmeneti függvénye (két konjugált komplex pólus)


Az IT1 integráló egytárolós holtidős tag átviteli függvénye:

 

(6.11)

Az IT1 integráló tárolós holtidős tag átmeneti függvénye
6.11. ábra - Az IT1 integráló tárolós holtidős tag átmeneti függvénye


6.1.3. Differenciáló-tárolós típusú tagok átmeneti függvényei

Mivel ideális differenciáló tag (nevezőbeli pólussal nem rendelkező deriváló tag) nem valósítható meg a differenciáló tagok tárolós változataival foglalkozunk. A differenciáló-tárolós vagy DT típusú (differenciáló-tárolós) rendszer tulajdonsága, hogy az egységugrás bemenő jelre differenciálási és tároló tulajdonsága hányadosának megfelelő kezdő amplitúdójú kimenő jellel válaszol. A tranziens állapotot az határozza meg, hogy hány darab nevezőbeli valós vagy konjugált komplex pólussal rendelkezik.

DT1 differenciáló egytárolós tag átviteli függvénye (egy valós pólus esetén):

 

(6.12)

A DT1 differenciáló egytárolós tag átmeneti függvénye (egy valós pólus)
6.12. ábra - A DT1 differenciáló egytárolós tag átmeneti függvénye (egy valós pólus)


A DT2 differenciáló kéttárolós tag átviteli függvénye (két valós pólus esetén):

 

(6.13)

A DT2 differenciáló kéttárolós tag átmeneti függvénye (két valós pólus)
6.13. ábra - A DT2 differenciáló kéttárolós tag átmeneti függvénye (két valós pólus)


A kimeneti jel a bementi egységugráshoz képest egy késleltetést szenvedhet, amelynek időtartamát leolvashatjuk a kimenő jel diagramjáról.

A DT3 differenciáló háromtárolós tag átviteli függvénye (három valós pólus esetén):

 

(6.14)

A DT3 differenciáló háromtárolós tag átmeneti függvénye (három valós pólus)
6.14. ábra - A DT3 differenciáló háromtárolós tag átmeneti függvénye (három valós pólus)


A DT2 differenciáló kéttárolós tag átviteli függvénye (két konjugált komplex pólus esetén):

 

(6.15)

A DT2 differenciáló kéttárolós tag átmeneti függvénye (két konjugált komplex pólus)
6.15. ábra - A DT2 differenciáló kéttárolós tag átmeneti függvénye (két konjugált komplex pólus)


A DT1 differenciáló egytárolós holtidős tag átviteli függvénye:

 

(6.16)

A DT1 differenciáló egytárolós holtidős tag átmeneti függvénye
6.16. ábra - A DT1 differenciáló egytárolós holtidős tag átmeneti függvénye


6.1.4. Identifikáció nem egységugrás bemeneti vizsgáló jel esetén

A korábbi fejezetekben bemutattuk, hogy melyek azok a jelalak típusok, amelyek a leggyakrabban várhatók az alaptagok vizsgálatánál. Gyakran előfordul azonban, hogy az identifikációt nem ilyen, matematikailag egyértelműen leírható, bemenő jel segítségével kell elvégeznünk, hanem bemenő jelként más (matematikailag) leírható függvény szerepel, vagy nem is tudjuk matematikailag leírni a bementi jel alakját, csak mérési adatokból dolgozhatunk.

Ilyen esetben csak meghatározott időpillanatokban áll rendelkezésünkre a bemenő jel értéke mérési eredményként, illetve ugyanezen időpillanatban a kimeneti jel értéke is.

Matematikai úton adott időpillanatokban rendelkezésre álló, időben diszkrét adatokból számos eljárás segítségével meghatározható az identifikálandó rendszer struktúrája és paraméterei. Ezen eljárások közül mutatja be az egyiket a következő fejezet.

6.2. A rendszerparaméter becslése (időtartománybeli) mérési adatok alapján

A következő paraméterbecslési eljárás tetszőleges bemeneti és kimeneti jelalak mellett alkalmazható.

Az eljárás sikeres működéséhez a következő adatoknak kell rendelkezésre állnia:

  • mintavételi időpontok értékei,

  • a identifikálandó rendszer bemeneti jelének értékei a mintavételi időpontokban,

  • a identifikálandó rendszer kimeneti jelének értékei a mintavételi időpontokban,

  • az identifikálandó rendszer struktúrájának pataméterei:

    • a differenciálegyenlet kimenő jeleinek legmagasabb derivált fokszáma,

    • a differenciálegyenlet bemenő jeleinek legmagasabb derivált fokszáma.

A differenciálegyenlet együtthatóinak paraméterbecslési eljárása a következő:

  1. Tetszőleges szimulációs környezetben létre kell hoznunk az identifikálandó rendszer struktúrájának paramétereivel egy időváltozós differenciálegyenlet modelljét.

    A differenciálegyenlet általános alakja:

     

    (6.17)

    ahol

     

    F

    a differenciálegyenlet együtthatóinak függvénye,

     

    y (0) (t)

    a rendszer kimenő jele,

     

    y (k) (t)

    a rendszer kimenő jelének idő szerinti k. deriváltja;     k = 0..n,

     

    u (0) (t)

    a rendszer bemenő jele,

     

    u (k) (t)

    a rendszer bemenő jelének idő szerinti k. deriváltja;     k = 0..m,

     

    t

    az időváltozó.

    A következő alakban keressük a differenciálegyenletet:

     

    (6.18)

    ahol

     

    a 0 (t)..a n (t)

    a differenciálegyenlet kimenő jelének és deriváltjainak együtthatói,

     

    b 0 (t)..b m (t)

    a differenciálegyenlet bemenő jelének és deriváltjainak együtthatói,

     

    y(t)

    a rendszer kimenő jele,

     

    u(t)

    a rendszer bemenő jele,

     

    t

    az időváltozó.

  2. Meg kell határoznunk a differenciálegyenlet kimeneti és bementi jelének valamint deriváltjaik együtthatóinak várható minimális és maximális értékét.

    Ezek az értékek lesznek a genetikus algoritmusban a paraméter-keresés határai. (Ha nem tudunk pontos értéket megállapítani a minimális vagy maximális értékre, vegyünk fel nagy abszolút értékű kezdeti értékeket!)

     

    (a i_min - a i_max ),

    i = 0..n

     

    (b j_min - b j_max ),

    j = 0..m

  3. Egy genetikus algoritmus populációjának minden eleméhez paraméterekként definiáljuk a differenciálegyenlet keresett együtthatóit!

  4. A mintavételi időpontokban határozzuk meg a bemenő jel értékeivel és a genetikus algoritmussal kiválasztott populáció-elem paramétereivel a kimeneti jelet (yidentifikált[k.h])! Az eljárást végezzük el a genetikus algoritmus populációjának minden elemére!

  5. A genetikus algoritmus populációjának elemeire jósági (fitness) függvényeként határozzuk meg a következő funkcionált (6.17. ábra - Az ymért[k.h] - yidentifikált[k.h] funkcionál elemei, (6.17))!

     

    (6.19)

    Az ymért[k.h] - yidentifikált[k.h] funkcionál elemei
    6.17. ábra - Az ymért[k.h] - yidentifikált[k.h] funkcionál elemei


    Az Fi jósági (fitness) értékekből meg kell határozni a minimális jósági értékhez tartozó elemet genetikus algoritmus segítségével. Ha adott pontossággal minimalizáltuk a funkcionál értékét, a mért értékek és az identifikált értékek különbségeinek abszolút értékei minden mérési pontban minimális értékűek, és az összegük is minimális lesz.

  6. Eredményként megkapjuk a populáció azon elemét, amelynél a jósági (fitness) érték minimális. Ennek az elemnek a genetikus algoritmus paraméterei – a differenciálegyenlet együtthatói – lesznek azok az értékek, amelyekkel ugyanazon bemenő jelértékek mellett a kimenő jelhez legjobban hasonlító kimenő jelet kapjuk. Ennél az elemnél valósul meg, hogy a mért kimeneti jel legjobban hasonlít az adott differenciálegyenlet paraméterekkel kiszámított kimeneti jeléhez.

6.3. Rendszerparaméter becslése mintapélda

A paraméterbecslés bemutatásához mérjük le, és adjuk meg adatfájlban egy PT3 háromtárolós arányos tag átmeneti függvényét, amelynek átviteli függvénye a következő:

 

(6.20)

A PT3 háromtárolós arányos tag átmeneti függvénye (három valós pólus)
6.18. ábra - A PT3 háromtárolós arányos tag átmeneti függvénye (három valós pólus)


A feladat megoldásához alkalmazott genetikus algoritmus programban a génparaméterek a következő átviteli függvény paramétereket jelölik a 6.20 képletből:

Genes [0] = T1 időállandó

(T1min=0,1 s

T1max=100 s),

Genes [1] = T2 időállandó

(T2min=0,1 s

T2max=100 s),

Genes [2] = T3 időállandó

(T3min=0,1 s

T3max=100 s),

Genes [3] = A erősítés

(Amin=0,01

Amax=10 ).

A megadott génparaméter-kiosztással a genetikus algoritmus program futtatása után az eredmény a következő ábrán (6.19. ábra - A PT3 típusú tag paraméter-keresése genetikus algoritmussal) látható.

A PT3 típusú tag paraméter-keresése genetikus algoritmussal
6.19. ábra - A PT3 típusú tag paraméter-keresése genetikus algoritmussal


Az algoritmus a kiindulási értékként magadott populációszámot exponenciálisan csökkenti a az iterációk során a megadott minimális értékig. A továbbiakban ezzel a minimális számú, de eddig legjobb tulajdonságúnak ítélt egyeddel folytatja a paraméter-keresést.

A költségfüggvény értékét az egyes iterációknál szintén megtekinthetjük a Display of Cost Function diagramon.

A következő ábrán (6.20. ábra - A PT3 típusú tag paraméter-keresésének költségfüggvénye) a költségfüggvényt (Cost Function) meghatározó alprogram futási eredményeit láthatjuk. A hibaértékek összege (Summa of Errors) kis abszolút értékű negatív szám. Mivel a genetikus algoritmussal maximális értéket határozunk meg, ezért a 6.19 képlettel kiszámított hibaértékek összege függvényt megszoroztuk mínusz 1-el, hogy így továbbra is - a maximum érték keresésével - a negatív értékek minimumát határozza meg az algoritmus.

A paraméterbecslés költségfüggvényének eredménye a következő ábrán (6.20. ábra - A PT3 típusú tag paraméter-keresésének költségfüggvénye) látható.

A PT3 típusú tag paraméter-keresésének költségfüggvénye
6.20. ábra - A PT3 típusú tag paraméter-keresésének költségfüggvénye


A genetikus algoritmus leállítási feltétele, hogy a futtatás során megadott számú esetben (Max # in range) az algoritmus már ne változtasson a legjobbnak ítélt paraméterértékeken.

7. fejezet - Numerikus módszerek

7.1. Hibajelenségek közelítő módszerek esetén

Azt, hogy a számítógép nem úgy számol, mint az ember papíron mindenki tudja tapasztalatból. Az ebből következő jelenségekkel (legalábbis egy részükkel) fogunk foglalkozni ebben a fejezetben.

Nézzünk néhány fogalmat:

Képlethiba : a közelítő összefüggés hibája, amit általában csak becsülni tudunk. Ilyen például a trapéz integrál hibatagja.

Kerekítési hiba : a számítógép számábrázolásából adódik. Leginkább úgy szokás magyarázni, hogy -al, hiszen a számítógép véges hosszú számábrázolással dolgozik (például a PC-ken double típus esetén 15 értékes jegyet használhatunk).

Öröklött hiba : a közelítő algoritmusok számítások sorozatából állnak. A számítások csak (kerekítési, esetleg képlet) hibával végezhetők el, így az eredmény nem pontos. Az így kapott pontatlan érték hibáját örökségként, mint a kiinduló adat részét kapja a következő számítás.

Az előzőekben már szó volt a különböző hibákról, de mi is az pontosan, és milyen fajtái lehetnek? Ha a közelítő értéke x, akkor a hiba x-a. Beszélhetünk abszolút hibáról és relatív hibáról .

Az előző definíciókban többször volt szó a számítógép számábrázolásáról. PC esetén egy double típusú számot nyolc bájton tárol a számítógép. A nyolc bájt összesen féle értéket vehet fel, azaz ennyiféle valós számot ismer ebben az esetben a rendszer. Tehát mivel csak véges számú számot tud megkülönböztetni, a számítógépen ábrázolható számok halmaza véges, így az algebra legelemibb szabályai sem teljesülnek!

Nézzünk ezekre néhány – talán mellbevágó – példát, ahol a számábrázolás az egyszerűség kedvéért 10 jegyű (PC esetén a lebegőpontos számoknál 7, 15 és 19 jegy lehet)

  1. A matematikai tanulmányaink szerint , de ez számítógép használata esetén nem mindig igaz. Abban az esetben például, ha , akkor a baloldal értéke 1010 mivel – a 10 értékes jegy miatt – 1010+4=1010, a jobboldalé pedig 1010+10, mivel 4+4 kerekítve 10 és már éppen befér az utolsó értékes jegy helyére.

  2. Nézzük meg, hogy hány gyöke van például a 2x+2=2 egyenletnek! A klasszikus matematika azt mondja az algebra alaptétele szerint, hogy csak egy gyök van és az az x=0. Helyettesítsünk be azonban számítógéppel bármely 10-10-nél kisebb értéket, és azt kapjuk, hogy teljesül az egyenlőség. Ebből azonban az következik, hogy ennek az elsőfokú egyenletnek a számítógépen rengeteg (de nem végtelen számú, lásd ábrázolható számok halmaza) megoldása van!

  3. Végül – bár még lehetne más példákat is mutatni – hány valós gyöke van a következő egyenletnek: ? Minden matematikán pallérozódott elme rávágja, hogy egy, mégpedig . Igen ám, de mivel a köbgyök nem számítható ki pontosan a számítógéppel, a visszahelyettesítés után azt látjuk, hogy nem elégíti ki az egyenletet, azaz nincs valós gyök!

A numerikus közelítő módszerek alkalmazásánál állandó küzdelmet folytatunk az ilyen és ehhez hasonló anomáliák elhárítására. Mivel nagyon sok jó szimulációs program létezik, elmondhatjuk, hogy a „harc” általában emberi „győzelemmel” végződik. Nézzünk meg a következőkben néhány főbb jelenséget, amelyekre programok írásakor (néha alkalmazásakor is) ügyelnünk kell:

  • Kiegyszerűsödés,

  • Kiejtés,

  • Numerikus instabilitás,

  • Rosszul kondicionáltság.

7.1.1. Kiegyszerűsödés

Ez a jelenség akkor fordul elő, ha két, közel azonos számot vonunk ki egymásból. Ilyenkor az eredmény sokkal kevesebb értékes jegyből fog állni, ami információvesztést jelent. A deriváltak numerikus közelítésénél is ez e jelenség okozza a legtöbb gondot.

Oldjuk meg a következő másodfokú egyenletet:

 

(7.1)

Visszahelyettesítés után x1-nél nullát, x2-nél -3,4⋅10-7-ot kapunk. A kiegyszerűsödés jelensége a kivonásnál, azaz x2meghatározásánál jelentkezik. Próbáljuk meg másképpen előállítani ezt a gyököt, kihasználva, hogy van egy viszonylag pontos, másik megoldásunk! Ismert a másodfokú egyenlet gyökei és együtthatói közötti következő összefüggés:

 

(7.2)

Ennek felhasználásával az új x2 érték 0,00000666666666696296, ami visszahelyettesítés esetén már szintén nullát eredményez. Ez a hiba ugyan nem jelentős, de könnyűszerrel el tudtuk tüntetni, és egy esetleges „öröklődési folyamatban” jobb, ha minél pontosabb értékkel kezdünk.

Nézzünk egy másik példát, ahol a jelenség ugyanaz, csak a javítás más (bár végül ugyanaz jön ki)! Legyen most a másodfokú egyenlet , és (hogy ne kelljen olyan hosszú számokkal bajlódni) az értékes jegyek száma csak négy! A számítás a következő:

 

(7.3)

A pontos értékek 139,9928 és 0,007143, amiből a relatív hibák rendre 6,6⋅10-4 és 2,85⋅10-1, ami közel 30%-os eltérés! Ha azonban az

 

(7.4)

összefüggésben a helyére 70-et, b helyére pedig 4899-et írunk és elvégezzük a számítást, akkor sokkal pontosabb értéket kapunk:

 

(7.5)

Látható, hogy ez csak az utolsó értékes jegyben tér el a „pontos” megoldástól.

Az előző két példa is mutatta, hogy sokszor viszonylag egyszerű eszközökkel lehet tenni a kiegyszerűsödés ellen.

7.1.2. Kiejtés

A kiejtés általában sorok összegzésekor fordul elő, akkor ha a részösszegek számításkor a kiegyszerűsödés jelenségével találkozunk. Tulajdonképpen úgy is felfoghatjuk, mint az előző fejezetben tárgyalt fogalom általánosítását.

Leggyakrabban alternáló (változó előjelű) sorok összegzésekor találkozunk vele. Szemléltetésként nézzük a következő példát! Az ex függvény nulla körüli Taylor sora (MacLaurin sor) a következő:

 

(7.6)

Amikor az x kitevő negatív, alternáló sort kell összegeznünk. Kis x-ek esetén nem is szokott gond lenni, de a nagyobbaknál nem a függvényértékhez konvergál a sorozat. Táblázatkezelővel végeztünk számításokat e-22 esetén. A táblázat első oszlopában az összeg i indexe, a másodikban a hozzá tartozó tört értéke szerepel. Az utolsó két oszlopban az részösszegek láthatók, de a harmadikban – a képletnek megfelelően – fentről lefelé, a negyedikben pedig lentről felfelé számítva. Mivel a számításokat n=100-ig végeztük el, ezért a táblázatnak csak az elejét és a végét közöljük (7.1. táblázat - Összegzés alternáló sor esetén).

7.1. táblázat - Összegzés alternáló sor esetén

i

TAYLOR tagok

LE

FEL

0

1

1

-7,04756E-08

1

-22

-21

-1,00000007

2

242

221

20,99999993

3

-1774,66667

-1553,666667

-221,0000001

4

9760,666667

8207

1553,666667

5

-42946,9333

-34739,93333

-8207

6

157472,0889

122732,1556

34739,93333

80

3,46008E-12

-8,47404E-08

2,71951E-12

81

-9,3978E-13

-8,47413E-08

-7,40574E-13

82

2,52135E-13

-8,4741E-08

1,99202E-13

83

-6,6831E-14

-8,47411E-08

-5,29333E-14

98

3,82873E-23

-8,47411E-08

3,16508E-23

99

-8,5083E-24

-8,47411E-08

-6,63646E-24

100

1,87182E-24

-8,47411E-08

1,87182E-24


A táblázatban szürke háttérrel jelöltük az összegek számított végeredményét. Látható, hogy a két érték kissé ugyan, de eltér egymástól - ami azonban a legnagyobb gond, hogy mindkettő negatív, ami lehetetlen! A pontos érték: 2,789468E-10. A példa helyes megoldása egyébként nem okoz gondot, mert számoljuk ki e22 értékét, majd vegyük a reciprokát! Mivel ez nem alternáló sor, az összegzéssel sem lesz bajunk, megkapjuk a pontos értéket. Ez a lehetőség azonban nem minden alternáló sor esetén adott. Mindig meg kell próbálnunk olyan – az adott feladatnak megfelelő – változatot előállítani, ahol a kiejtés jelensége nem áll fenn.

Az előző feladatban nemcsak az okozta az eltérést, hogy az előjel változott, hanem az is, hogy az összeadandók nagyságrendje nagyon különböző volt. Ilyen esetekben – ha csak módunk van rá – először a kisebb adatokat adjuk össze, úgy haladjunk a nagyobbak felé. Ennek a gondolatmenetnek az indoklását a 7.1. szakasz - Hibajelenségek közelítő módszerek esetén részben, az A. pont alatt találhatjuk meg. Ezért is végeztük el az összegzést az előző feladat esetében két irányban, bár itt nem segíthetett, mert a nagy értékek valahol a sorozat közben voltak. Ha az összeadás előtt nagyság szerint rendezzük a sort, majd úgy adjuk össze, akkor sem lesz jobb a helyzet, mert az eredmény zérus (bár legalább nem negatív).

A következő példa ugyan nem kiejtés, de abban is az ex sorozat összegzésével foglalkozunk. A program LabVIEW-ban készült. A képernyőképeket mutatja a 7.1. ábra - Az ex-et kétféleképpen számoló LabVIEW program.

Az ex-et kétféleképpen számoló LabVIEW program
7.1. ábra - Az ex-et kétféleképpen számoló LabVIEW program


A kétféle számítás közötti különbség csak meghatározásának módjában van. A felső esetben egy-egy külön ciklussal határozzuk meg a számlálót és a nevezőt, majd az eredményeket osztjuk el. Ekkor azonban a faktoriális számítással előbb-utóbb gondok lesznek, mert túl gyorsan nő az értéke, és nem fog „beleférni” a változója értéktartományába. A másik esetben – ugyan sokkal többet kell osztani – pontos eredményt kapunk, mert kihasználjuk, hogy a számláló és nevező ugyanannyi szorzást tartalmaz, így a feladatot visszavezetjük törtek szorzására:

 

(7.7)

Ennek az algoritmusnak az eredményeként garantáltan nem lesz túlcsordulás, a szorzásnál pedig a nagyságrendi különbség nem okoz adatvesztést, mint a kivonás esetében. Az eredményeket a 7.2. táblázat - ex közelítése Taylor sorral, kétféle számítási módszerrel foglalja össze (a fejlécek a programban használt jelöléseket tartalmazzák).

7.2. táblázat - ex közelítése Taylor sorral, kétféle számítási módszerrel

x

n

hiba 1

hiba 2

1

18

-1,3⋅10-9

0

2

18

-3,9⋅10-4

-1,3⋅10-9

2

24

3,5⋅10-3       ?

0

3

18

-0,41

-7,17⋅10-8

3

24

48,47       ?

-5,2⋅10-13

3

27

-1278,52       ?

0


A kérdőjelek a nyilvánvaló anomáliákat jelzik, ahol a hibának csökkeni kellene, és ehelyett nő. x=3 esetben elfogadhatatlan értékeket kapunk!

7.1.3. Numerikus instabilitás

A számítások során – mint arra már utaltunk az öröklött hibánál – a kerekítési hiba tovább terjed. Instabilitásról akkor beszélünk, ha a közbenső hibák nagymértékben befolyásolják az eredményt.

Nézzük például a következő sort, melynek tagjai:

 

(7.8)

A kezdeti érték a következő integrálból határozható meg:

 

(7.9)

A sorozat tagjait rekurzív képlettel állíthatjuk elő – parciális integrálást alkalmazva – a következőképpen:

 

(7.10)

Bizonyítható, hogy a sorozat határértéke zérus, azaz .

Számoljuk ki az első húsz értéket táblázatkezelő programmal! Az eredmény egy olyan sorozat, amely eleinte az elvártnak megfelelő értékeket veszi fel, majd „elszáll” (instabilitás). Érdekes azonban, hogyha visszafelé dolgozunk, akkor jó eredményt kapunk. Ez a következőt jelenti: feltesszük, hogy például a huszadik tag már olyan közel esik a határértékhez, hogy közelítőleg megegyezik vele, így értéke legyen nulla.

A rekurziós formulából rendezéssel a következő alak is előállítható:

 

(7.11)

Ennek segítségével visszafelé is számolhatunk egészen a nulladik tagig. Ezeket az adatokat tartalmazza a harmadik oszlop a (7.3. táblázat - A numerikus instabilitás szemléltetése rekurzív sorral) táblázatban.

7.3. táblázat - A numerikus instabilitás szemléltetése rekurzív sorral

n

y n

vissza

0

1,718282

1,718282

1

1

1

2

0,718282

0,718282

3

0,563436

0,563436

4

0,464536

0,464536

5

0,3956

0,3956

6

0,344685

0,344685

7

0,30549

0,30549

8

0,274362

0,274362

9

0,249028

0,249028

10

0,228002

0,228002

11

0,210265

0,210265

12

0,1951

0,1951

13

0,181983

0,181983

14

0,170519

0,170524

15

0,160496

0,160426

16

0,150348

0,15146

17

0,162363

0,143465

18

-0,20425

0,135914

19

6,599099

0,135914

20

-129,264

0


7.1.4. Rosszul kondicionáltság

Egy feladatot akkor hívunk rosszul kondicionáltnak, ha a paramétereinek csekély megváltoztatása az eredmény nagymértékű módosulását eredményezi. Ilyen kismértékű változás a számítástechnikában szinte mindig előfordul, elég csak a kerekítési hibákra gondolnunk.

Tekintsük a következő egyenletet:

 

(7.12)

Ennek nyilvánvaló valós megoldása az x=1. Mi a helyzet akkor, ha a polinom nulladfokú tagja kismértékben (10-6) megváltozik? Ekkor az egyenlet a következő lesz:

 

(7.13)

Ennek valós megoldása x=1,1. Az eredményváltozás tehát 10%-nyi, pedig a paraméter csak 0,0001%-al változott. Ugyanezt tapasztalhatjuk a komplex gyökök vizsgálatakor is.

A feladatok kondicionáltságával foglalkozunk még a lineáris egyenletrendszerek tárgyalásánál is.

7.2. Egyváltozós függvények gyökkeresése

A következőkben az egyváltozós egyenletek gyökkeresési módszereivel foglalkozunk. A polinomokat külön kezeljük.

7.2.1. Intervallum keresés

A későbbiekben majd látni fogjuk, hogy a legnagyobb probléma olyan intervallum meghatározása, amelyben biztosan van gyök. Annak eldöntése, hogy egy adott intervallumban van-e gyök már egyszerűbb, mert alkalmazható Bolzano tétele. Egyszerűen megfogalmazva:

ha egy folytonos függvénynek két pontban eltérő az előjele, akkor a két pont között biztosan van gyök (7.2. ábra - A Bolzano-tétel grafikus szemléltetése). A tétel megfordítása nem igaz (7.3. ábra - A Bolzano-tétel megfordításának grafikus szemléltetése).

A Bolzano-tétel grafikus szemléltetése
7.2. ábra - A Bolzano-tétel grafikus szemléltetése


A Bolzano-tétel megfordításának grafikus szemléltetése
7.3. ábra - A Bolzano-tétel megfordításának grafikus szemléltetése


7.2.1.1. Grafikus módszer

Ábrázoljuk a függvényt, és a grafikon alapján elkülöníthetjük a gyököket tartalmazó intervallumokat. Mindez valós gyökök esetén – főleg a mai számítástechnikai eszközökkel – roppant egyszerű. Ha komplex gyököket keresünk, akkor az f(z)=0 egyenletre alkalmazzuk a következő módszert:

  • az egyenletben minden számot, változót írjunk fel a komplex szám algebrai alakjával (z=x+iy),

  • a függvényt válaszuk szét valós és képzetes részre (f(z)=u(x,y)+iv(x,y)), így az eredeti egyenletet helyettesíthetjük az u(x,y)=0 és v(x,y)=0 egyenletekkel,

  • ábrázoljuk mindkét egyenletet az x,y síkon, a görbék metszéspontjai a gyökhelyek!

7.2.1.2. Analitikus módszer

Olyan módszerről, amely egy tetszőleges függvény esetén megadja a gyököket tartalmazó intervallumot, nem tudunk. Általában a következőket tesszük:

  • a számegyenes egy akkora intervallumát jelöljük ki, ahol a számunkra érdekes gyököket sejtjük (ne törekedjünk pontosságra, legyünk „bőkezűek”),

  • bontsuk kisebb intervallumokra, és ezeket ellenőrizzük a Bolzano-tétel alapján, reménykedve, hogy a (7.3. ábra - A Bolzano-tétel megfordításának grafikus szemléltetése) ábrán láthatóhoz hasonlóan nem kerülünk el fontos gyököt.

7.2.2. Általános gyökkereső algoritmusok

A következő módszereket azonos példával fogjuk szemléltetni. A megoldandó egyenlet a következő:

 

(7.14)

7.2.2.1. Intervallum-felezés

Talán ez a legegyszerűbb módszer. Előnye, hogy mindig használható, a gyök tetszőleges pontosságú megközelítésére biztosít lehetőséget. Hátránya a közelítés sebessége.

Legyen adott az f(x)=0 egyenlet, ahol f(x) folytonos függvény, és a 1 valamint b 1 , ahol f(a 1 )‑nek és f(b 1 )-nek ellentétes az előjele, azaz f(a 1 )⋅f(b 1 )<0. Vegyük fel c 1 -et az a 1 b 1 intervallum felező pontjaként, azaz:

 

.

(7.15)

A két félintervallum közül válasszuk azt, ahol teljesül a Bolzano-tétel, azaz

 

(7.16)

Az algoritmus tetszőlegesen sokáig folytatható, így egyre jobb közelítést nyerhetünk. Ha például 10 lépésben közelítünk, akkor az eredeti intervallum hosszának már csak 210-en, azaz 1024-ed része lesz az új intervallum hossza. Másképpen, mivel 1024≈103, ezért kb. hárommal több pontos tizedesünk lesz, tehát minden újabb pontos tizedes jegy meghatározásához kb. három iterációs lépésre van szükség. Természetesen ennél gyorsabb módszerek is léteznek, de akkor az f(x) függvénynek bizonyos követelményeknek meg kell felelnie.

Az intervallum-felezés grafikus szemléltetése
7.4. ábra - Az intervallum-felezés grafikus szemléltetése


A példa megoldását táblázatkezelővel 7.4. táblázat - Intervallum-felezés képletekkel táblázatkezelőben tartalmazza, míg az eredményeket a (7.5. táblázat - Intervallum-felezés értékekkel táblázatkezelőben) táblázatban tanulmányozhatjuk.

7.4. táblázat - Intervallum-felezés képletekkel táblázatkezelőben
 

A

B

C

D

E

F

G

1

i

a

b

c

f(a)

f(b)

f(c)

2

1

-1

1

=(A2+B2)/2

=cos(A1)+A2

=cos(B2)+B2

=cos(C2)+C2

3

2

=ha(E2*G2<0;B2;D2)

=ha(E2*G2<0;D2;C2)

=(A2+B2)/2

=cos(A1)+A2

=cos(B2)+B2

=cos(C2)+C2


7.5. táblázat - Intervallum-felezés értékekkel táblázatkezelőben

i

a

b

c

f(a)

f(b)

f(c)

1

-1

1

0

-0,46

1,54

1

2

-1

0

-0,5

-0,46

1

0,378

3

-1

-0,5

-0,75

-0,46

0,378

-0,018

4

-0,75

-0,5

-0,625

-0,018

0,378

0,186

5

-0,75

-0,625

-0,6875

-0,018

0,186

0,085

6

-0,75

-0,6875

-0,7188

-0,018

0,085

0,034

7

-0,75

-0,7188

-0,7344

-0,018

0,034

0,008

8

-0,75

-0,7344

-0,7422

-0,018

0,008

-0,005

9

-0,7422

-0,7344

-0,7383

-0,005

0,008

0,001

35

-0,7391

-0,7391

-0,7391

-1E-10

5E-11

-5E-11

36

-0,7391

-0,7391

-0,7391

-5E-11

5E-11

-2E-12


7.2.2.2. Húrmódszer (regula falsi)

Az algoritmus lépései sokban hasonlítanak az előzőekben leírt intervallum-felezéshez, csak a c k pontok meghatározása történik másként. Most az a 1 ,f(a 1 ) valamint a b 1 ,f(b 1 ) pontokon át fektessünk egy egyenest (ami a függvénynek egy „húrja”), és ennek az x tengellyel való metszéspontja legyen c 1 . Ezt az értéket úgy is tekinthetjük, mint a gyök egy közelítő értékét, bár tudjuk, hogy az érték „hamis”, azaz „false” (innen a módszer elnevezése is). Ha az eredményt nem tarjuk elég pontosnak, akkor a két intervallum közül az előzőekben leírtak szerint választunk, majd egy újabb húr segítségével pontosítunk. A módszer tetszőlegesen sokáig folytatható, tehát a közelítés pontossága határtalanul fokozható, csak kellően türelmesnek kell lennünk. Egy idő után általában már csak az intervallum egyik oldalán lesz változás, ettől a húrok alig változnak, tehát a közelítés „lelassul”. Számos módszer van, amely ezen a problémán próbál segíteni (például minden n-edik lépésnek egy intervallum-felezést iktatunk be).

Nézzük most az előzőekben szövegesen leírt módszert egyenletekkel, a 7.4. ábra - Az intervallum-felezés grafikus szemléltetése jelöléseit használva! Írjuk fel a két ponton átmenő egyenes egyenletét

 

,

(7.17)

majd határozzuk meg a metszéspontot, azaz y=0 helyen x=c 1 értékét:

 

(7.18)

 

(7.19)

A következő lépés az új intervallum meghatározása. Eljárhatunk az intervallum-felezésnél ismertetett módon is, de néha alkalmazhatunk feltételek nélküli rekurziót is. Abban az esetben, ha az -ben – tehát nincs inflexiós pont, azaz a görbe homorú, vagy domború – az új intervallum meghatározása egyértelmű. Nézzük például az ábrán látható esetet! Ekkor az egyenes mindig a görbe fölött fog haladni, tehát a tengelyt mindig „előbb” metszi, mint a görbe, azaz az intervallumnak mindig az „ a ” vége fog mozogni. Jelöljük ekkor b 1 -et c -1 -gyel, a 1 -et c 0 -val:

 

.

(7.20)

Mivel az új intervallumok esetén c 0 =c 1 , majd c 1 =c 2 helyettesítéseket alkalmazunk, ezért a rekurziós összefüggés a következőképpen írható fel:

 

.

(7.21)

Kérdés most, hogy mi a teendő akkor, ha a görbe nem ilyen helyzetű. A rekurziós módszer mindig alkalmazható, ha . Ekkor a -1-es indexűnek azt a pontot kell választani, amelynek előjele megegyezik a második derivált előjelével.

A húrmódszer szemléltetése
7.5. ábra - A húrmódszer szemléltetése


A példa megoldása táblázatkezelővel a (7.6. táblázat - Húrmódszer képletekkel táblázatkezelőben) táblázatban látható.

7.6. táblázat - Húrmódszer képletekkel táblázatkezelőben
 

A

B

C

D

E

F

G

1

i

a

b

c

f(a)

f(b)

f(c)

2

1

-1

1

=C2-F2*(B2-A2)/(F2-E2)

=cos(A1)+A2

=cos(B2)+B2

=cos(C2)+C2

3

2

**

**

=(A2+B2)/2

=cos(A1)+A2

=cos(B2)+B2

=cos(C2)+C2


A B3 és a C3 cellák tartalma megegyezik az intervallum-felezésnél leírtakkal. Az eredményeket a 7.7. táblázat - Húrmódszer értékekkel táblázatkezelőben tartalmazza.

7.7. táblázat - Húrmódszer értékekkel táblázatkezelőben

i

a

b

c

f(a)

f(b)

f(c)

1

-1

1

-0,5403

-0,4597

1,5403

0,3173

2

-1

-0,5403

-0,728

-0,4597

0,31725

0,0185

3

-1

-0,728

-0,7385

-0,4597

0,01849

0,0009

4

-1

-0,7385

-0,7391

-0,4597

0,00093

5E-05

5

-1

-0,7391

-0,7391

-0,4597

4,7E-05

2E-06

6

-1

-0,7391

-0,7391

-0,4597

2,3E-06

1E-07

7

-1

-0,7391

-0,7391

-0,4597

1,2E-07

6E-09

8

-1

-0,7391

-0,7391

-0,4597

5,9E-09

3E-10

9

-1

-0,7391

-0,7391

-0,4597

2,9E-10

1E-11


Mint látható, sokkal gyorsabban közelítette a gyököt, mint az intervallum-felezés, bár ezt általánosan nem lehet garantálni!

7.2.2.3. Iteráció

Az eddigi módszerek minden esetben a gyököt közelítették, de néha kissé lassan. A következőkben két olyan módszert nézünk meg, amelyek nem mindig konvergensek, de vagy nagyon könnyen használhatók, vagy nagyon gyorsan adnak eredményt.

Az első módszer az iteráció. Az egyenlet sokszor f(x)=0 alakban adott, és a gyököt az [a,b] intervallumban keressük. Ilyen esetben a következőképpen kell átalakítanunk az egyenletet:

 

(7.22)

Most képezzük a következő sorozatot:

 

(7.23)

Az így kapott x0, x1, …, x n számsorozat (ha konvergál) az f(x) egyenlet gyökéhez tart, hiszen ha x a sorozat határértéke, akkor:

 

(7.24)

A következőkben nézzük meg grafikusan, milyen esetek fordulhatnak elő!

0<g’(x)<1
7.6. ábra - 0<g’(x)<1


-1<g’(x)<0
7.7. ábra - -1<g’(x)<0


g’(x)>1
7.8. ábra - g’(x)>1


g’(x)<-1
7.9. ábra - g’(x)<-1


g’(x)=-1
7.10. ábra - g’(x)=-1


Az előző ábrákból is leolvasható, hogy konvergenciára csak akkor számíthatunk, ha g(x) meredeksége kisebb, mint 45°, azaz abban az intervallumban, ahol a gyököt keressük. Az egyszerű iterációt előszeretettel használják, mert rendkívül könnyen alkalmazható akár egy táblázatkezelővel is.

A mintapéldánk (7.14. egyenlet) esetén az iteráció nem működne, mert a derivált értéke:

 

(7.25)

A gondot az okozza, hogy a függvényünk túl „meredek”. Ha egy alkalmas konstanssal megszorozzuk, akkor a zérus helye nem változik, de a meredeksége igen, hiszen:

 

(7.26)

Nézzük, milyen feltétel van f-re:

 

(7.27)

Legyen , ahol igaz, hogy , azaz M az első derivált maximális, vagy – negatív esetben – minimális értékével egyezik meg az adott intervallumon. Most, ha , akkor a konvergencia feltétele:

 

(7.28)

ami mindig teljesül, hiszen M nagyobb, vagy egyenlő, mint a derivált, ezért a tört értéke egynél kisebb! Írjuk fel még az így kapott iterációs alakot:

 

(7.29)

Nézzük először az eredeti példa megoldását képletekkel (7.8. táblázat - Divergens iteráció képletekkel táblázatkezelőben), majd pedig értékekkel (7.9. táblázat - Divergens iteráció értékekkel táblázatkezelőben)!

7.8. táblázat - Divergens iteráció képletekkel táblázatkezelőben
 

A

B

C

D

1

i

x

f(x)

g(x)

2

1

-0,73

=cos(B2)+B2

=C2+B2

3

2

=D2

=cos(B3)+B3

=C3+B3


7.9. táblázat - Divergens iteráció értékekkel táblázatkezelőben

i

x

f(x)

g(x)

0

-0,73

0,01517

-0,7148

1

-0,71483

0,04038

-0,6744

2

-0,67444

0,10661

-0,5678

3

-0,56783

0,27524

-0,2926

4

-0,2926

0,6649

0,3723

5

0,372304

1,3038

1,6761

6

1,6761

1,57099

3,24709

7

3,247091

2,25265

5,49974


Ahogy azt vártuk, az x i sorozat divergens. Mivel az függvény maximuma akkor lesz, ha a szinusz értéke -1, így az M=2. Ebből α-ra -0,5 adódik. Az átalakított egyenletet tartalmazza a 7.10. táblázat - Konvergensé tett iteráció képletekkel táblázatkezelőben, valamint a megoldást értékekkel szemlélteti a 7.11. táblázat - Konvergensé tett iteráció értékekkel táblázatkezelőben.

7.10. táblázat - Konvergensé tett iteráció képletekkel táblázatkezelőben
 

A

B

C

D

1

i

x

α*f(x)

g(x)

2

1

-0,73

=-(cos(B2)+B2)/2

=C2+B2

3

2

=D2

=-(cos(B3)+B3)/2

=C3+B3


7.11. táblázat - Konvergensé tett iteráció értékekkel táblázatkezelőben

i

x

α *f(x)

g(x)

0

-1

0,22985

-0,77015

1

-0,77015

0,02617

-0,74398

2

-0,74398

0,0041

-0,73988

3

-0,73988

0,00066

-0,73921

4

-0,73921

0,00011

-0,73911

5

-0,73911

1,8E-05

-0,73909

6

-0,73909

2,9E-06

-0,73909


Mint látható, a konvergencia viszonylag gyors.

7.2.2.4. Érintőmódszer (Newton-Raphson módszer)

Legyen most adott az f(x)=0 egyenlet, és tudjuk, hogy az [a,b] intervallumban van gyöke! Legyen , és helyettesítsük a függvényt az x 0 -nál húzott érintőjével. Az érintő és az x tengely metszéspontját (x 1 ) tekintsük a gyök egy közelítésének! Az eljárás folytatásaként tegyünk mindent ugyan így, csak most az x 1 értékkel! Írjuk fel az egyenleteket és az összefüggéseket a 7.11. ábra - Az érintő módszer alapján! Az egyenes egyenlete:

 

,

(7.30)

vagy másképpen:

 

(7.31)

Az x tengellyel való metszéspontban y=0, így x kifejezhető:

 

(7.32)

Az eljárás folytatásaként írhatjuk, hogy:

 

(7.33)

Vegyük észre, hogy ez az összefüggés és a 7.29 egyenlet nagyon hasonlít egymásra, az ott szereplő M tulajdonképpen az itteni nevezőben lévő derivált maximális értéke! Gyanítható ezek után, hogy az érintő módszer konvergenciájával nem lesz gond. Ez általában így is van. Ha elég közel vesszük fel a kezdeti x0 pontot a gyökhöz, akkor majdnem mindig konvergens a közelítés. A gond az, hogy általában fogalmunk sincs, hogy hol a gyök, örülünk, ha egy intervallumra sikerül leszűkíteni a keresést! Alkalmazása során általában meg szoktak adni egy maximális iteráció számot is.

Az érintő módszer
7.11. ábra - Az érintő módszer


Miért használják mégis? Például azért, mert komplex gyökök meghatározására is alkalmas, vagy azért, mert ha konvergens, akkor majdnem mindig „másodrendűen” gyors, azaz:

 

,

(7.34)

ahol x a gyök, C pedig egy állandó érték. Ez azt jelenti, hogy lépésenként általában megduplázódik a helyes jegyek száma a gyökközelítő értékében. Nézzük meg most a megszokott példánkat a (7.12. táblázat - Az érintőmódszer képletekkel táblázatkezelőben és 7.13. táblázat - Az érintőmódszer értékekkel táblázatkezelőben) táblázatokban!

7.12. táblázat - Az érintőmódszer képletekkel táblázatkezelőben
 

A

B

C

D

1

i

x

f(x)

f’(x)

2

1

-1

=cos(B2)+B2

=-sin(B2)+1

3

2

=B2-C2/D2

=cos(B3)+B3

=-sin(B3)+1


7.13. táblázat - Az érintőmódszer értékekkel táblázatkezelőben

i

x

f(x)

f'(x)

0

-1

-0,46

1,84147

1

-0,7504

-0,019

1,6819

2

-0,7391

-5E-05

1,67363

3

-0,7391

-3E-10

1,67361

4

-0,7391

0

1,67361


A (7.13. táblázat - Az érintőmódszer értékekkel táblázatkezelőben) táblázatban szereplő számsor mindennél jobban illusztrálja a konvergencia sebességét! Milyen problémák léphetnek fel mégis, mikor lehet gond? Például, ha az érintő mentén kilépünk az [a,b] intervallumból (7.12. ábra - Az érintőmódszer, amikor kilépünk az intervallumból), vagy szerencsétlenül választjuk meg a kezdőértéket: , és . Ekkor , és így . A számítást tovább folytatva: . Látható, hogy körbe-körbe járunk (7.13. ábra - Az érintőmódszer, amikor körbe járunk)!

Az érintőmódszer, amikor kilépünk az intervallumból
7.12. ábra - Az érintőmódszer, amikor kilépünk az intervallumból


Az érintőmódszer, amikor körbe járunk
7.13. ábra - Az érintőmódszer, amikor körbe járunk


A konvergenciával kapcsolatban azonban nemcsak rosszat mondhatunk. Azt várnánk, hogy nem működik az eljárás, ha a gyök például egy minimumhely is egyben, hiszen ott a derivált értéke zérus. A deriválttal pedig osztunk! Nem szabad elfelejtenünk, hogy a gyököt csak közelítjük, de sosem érjük el, így a derivált sem lesz nulla a közelítés közben. Az [a,b] intervallumban lehet szélsőértékhely, de akkor könnyen úgy járhatunk, hogy kilépünk az intervallumból, hasonlóan, mint az a (7.13. ábra - Az érintőmódszer, amikor körbe járunk) ábrán is látható. Arra mindenképpen ügyeljünk, hogy a közelítést ne indítsuk minimum-, vagy maximumhelyről! Az előzőek illusztrálására nézzük meg, hogy az függvény gyökét hogyan közelíti a módszer (7.14. táblázat - Az érintőmódszer többszörös gyök esetén lassabban konvergál)!

7.14. táblázat - Az érintőmódszer többszörös gyök esetén lassabban konvergál

x

f(x)

f'(x)

1

1

2

0,5

0,25

1

0,25

0,0625

0,5

0,125

0,015625

0,25

0,0625

0,003906

0,125

0,03125

0,000977

0,0625

0,015625

0,000244

0,03125

0,007813

6,1E-05

0,015625

0,003906

1,53E-05

0,007813


Mint látható, a konvergencia itt is megvan, csak sokkal lassabb. Bizonyítható, hogy többszörös gyökök esetén a gyököt közelítése csak lineáris.

A módszer egy utolsó érdekessége, hogy segítségével könnyedén készíthetünk gyökvonó algoritmust. Legyen az egyenletünk az . Ennek zérus helye nyilvánvalóan: . Ekkor a közelítő formula:

 

.

(7.35)

Speciálisan, ha k=2, akkor négyzetgyökvonásra a következő összefüggést kapjuk:

 

.

(7.36)

7.2.3. Gyökkereső algoritmusok polinomok esetében

Mivel egy polinomot is kezelhetünk függvényként, az előző fejezetben közölt gyökkereső eljárások itt is alkalmazhatók. Miért tárgyaljuk mégis külön a polinomok esetét? Mert a polinomok esetén általában nem csak egy adott környezetbe eső gyökre van szükségünk (például szimuláció interpolációs formulákkal), hanem az összesre, beleértve a komplex gyököket is (gondoljunk csak a rendszerek stabilitásának vizsgálatára)!

Célunk tehát olyan algoritmus bemutatása, amellyel egy polinom összes gyökét meghatározhatjuk. Több lehetséges módszer is létezik, azonban ebben a fejezetben egy általunk megvalósított, többszörösen tesztelt eljárás lépéseit ismertetjük. A programot Microsoft Excelben azaz Visual Basic for Applications nyelven készítettük el - a későbbiekben ennek néhány alapelemét be is mutatjuk.

A program ablaka a (7.14. ábra - A polinom gyökkereső program képernyőképe) ábrán látható.

A polinom gyökkereső program képernyőképe
7.14. ábra - A polinom gyökkereső program képernyőképe


7.15. táblázat - Egy polinom összes gyökének megkeresésére szolgáló algoritmus

Index

Teendő

Alkalmazott eljárások

1.

Triviális gyökök (0, ±1) kigyűjtése, osztás gyöktényezővel

Horner-séma

Polinomosztás

2.

A maradék polinom fokszáma<4

Igen: megoldás analitikusan, és vége

Nem: tovább a következő pontra

Elsőfokú megoldó képlet,

Másodfokú megoldó képlet,

Cardano-formula

3.

A főegyüttható legyen egy, és csak egyszeres gyökök legyenek (gyökök multiplicitásának eltüntetése)

Vektor osztása skalárral,

Polinomosztás

4.

Valós gyökök kigyűjtése

 

4. a

Gyököket tartalmazó intervallum meghatározása

 

4. b

Valós gyökök száma

Sturm-lánc,

Polinomosztás

4. c

A gyök közelítése

Horner-séma,

Érintőmódszer

4. d

Az eredeti polinom osztása a gyöktényezővel ahányszor csak lehet (többszörös gyökök)

Polinomosztás

4. e

Lásd 2.

 

4. f

Vissza 4. c-re, amíg el nem fogynak a valós gyökök

 

5.

Komplex gyökök meghatározása

 

5. a

Intervallum keresés

 

5. b

Gyökkeresés

Komplex érintőmódszer

5. c

Az eredeti polinom osztása másodfokú gyöktényezővel ahányszor csak lehet (többszörös gyökök)

Polinomosztás

5. d

Lásd 2.

 

5. e

Vissza 5. a-ra

 

7.2.3.1. Horner-séma

Az egyik leggyakoribb tevékenység, amit egy polinommal el kell végeznünk, hogy meghatározzuk egy adott helyen a helyettesítési értékét. A Horner-séma ennek a számításnak a műveletek számára optimalizált eljárása, azaz itt kell a legkevesebbet számolnunk. Gyakorlatilag csak egy átrendezésről van szó.

Legyen az egyenletünk

 

(7.37)

alakú.

Ekkor átrendezhetjük a következő alakra:

 

(7.38)

Példaként nézzük azt az egyenletet, amely a (7.14. ábra - A polinom gyökkereső program képernyőképe) ábrán is szerepel:

 

(7.39)

Valós x esetén a következő függvény valósítja meg az eljárást:

Function BehelyValos(x AsDouble, n AsInteger, a() AsDouble) AsDouble
' a() az együttható vektor
' n a polinom fokszáma
Dim i AsInteger, y AsDouble
y = a(n) ' a legmagasabb fokú tag együtthatója
For i = n - 1 To 0 Step -1
If a(i) <> 0 Then         ' ellentetes elojellel megegyeznek
  If Abs(1 + y * x / a(i)) < 0.0000000000001 Then
    y = 0 ' a numerikus hibák csökkentésére
Else
    y = y * x + a(i)
End If
Else
  y = y * x ' mert a(i)=0
End If
Next i
BehelyValos = y
End Function

Komplex esetben eljárást kellett írni, mert két visszaadott érték van. A program listája a következő:

Sub BehelyKomplex0(xr AsDouble, xi AsDouble, n AsInteger, a() AsDouble,_
ByRef yr AsDouble, ByRef yi AsDouble)
' a() az együttható vektor
' n a polinom fokszáma
' xr x reális része; xi x imaginárius része
' y az eredmény
' yr y reális része; yi y imaginárius része
Dim i AsInteger, y AsDouble
yr = a(n)
yi = 0
For i = n - 1 To 0 Step -1
If a(i) <> 0 Then
If Abs(1 + (yr * xr - yi * xi) / a(i)) < 0.0000000000001 Then
    y = 0
Else
    y = yr * xr - yi * xi + a(i)
End If
Else
  y = yr * xr - yi * xi
End If
If yi * xr <> 0 Then
If Abs(1 + yr * xi / yi / xr) < 0.0000000000001 Then
    yi = 0
Else
    yi = yr * xi + yi * xr
End If
Else
  yi = yr * xi + yi * xr
End If
yr = y
Next i
End Sub

7.2.3.2. Polinomok osztása polinommal

Az eljárás teljes mértékben a megszokott kézi módszert követi, ami tulajdonképpen az általános iskolákban tanított osztás általánosítása. Ismétlésként álljon itt egy példa:

 

(7.40)

Az osztás eredménye, és a maradék (18) is kiadódott. Az ezt megvalósító programkód pedig a következő:

Sub PolDiv(n As Integer, m As Integer, _
ByRef a() As Double, ByRef b() As Double, ByRef c() As Double)
' a/b=c, ahol a, b és c a polinomok együtthatóit tartalmazó vektorok
' a 0. fokú tag a vektor 0 elemében van
' ha van maradék, akkor a-ban lesz
Dim i As Integer, j As Integer
ReDim c(n - m)
For i = n - m To 0 Step -1
c(i) = a(i + m) / b(m)
For j = 0 To m
If j = 0 Then
a(i + m - j) = 0
Else
If a(i + m - j) <> 0 Then
If Abs(1 - c(i) * b(m - j) / a(i + m - j)) < 0.0000000001 Then
a(i + m - j) = 0 ' a különbség közel nulla
Else
a(i + m - j) = a(i + m - j) - c(i) * b(m - j)
End If
Else
a(i + m - j) = -c(i) * b(m - j) ' mert a(i+m-j)=0
End If
  End If
Next j
Next i
End Sub

7.2.3.3. Primitív gyökök kezelése

Az egyszerűen, szinte ránézésre meghatározható gyökökről van szó ebben a fejezetben. Ilyen például, ha a 7.37. egyenletben a0 értéke zérus. Ekkor biztosan van olyan gyök, amely nulla, és a polinom fokszáma csökkenthető. A későbbi eljárásoknál fontos lesz, hogy az egyenlet nulladfokú tagja nem lehet zérus, mert osztunk vele!

Általában ritkán fordul elő, hogy egy polinomnak az 1 gyöke, de könnyen ellenőrizhető, és lehet, hogy a későbbiekben a közelítések során nem tudnánk pontosan előállítani. Az 1 akkor gyök, ha a polinom együtthatóinak összege zérus, hiszen behelyettesítéskor minden x hatvány helyére 1 kerül! Ha az 1 gyök, akkor az egyenletet osszuk el gyöktényezővel!

Hasonló a helyzet a -1-el is, de ekkor a páros kitevőjű tagok együtthatóinak összege fog megegyezni a páratlan kitevőjű tagok együtthatóinak összegével, hiszen a párosaknál a behelyettesítés eredményeként az x hatvány 1 lesz, a páratlanoknál pedig -1. Ha a -1 gyök, akkor az egyenletet osszuk el gyöktényezővel!

Természetesen ne feledkezzünk meg arról, hogy mindegyik primitív gyök többszörös gyök is lehet, tehát az eljárást addig kell folytatni, amíg mindet meg nem kapjuk. Ha szerencsénk van, a fokszám csökkenés miatt nem is kell közelítő módszert alkalmaznunk.

7.2.3.4. Harmadfokú egyenlet megoldása: Cardano-formula

A pontosság miatt (mivel a közelítő eljárások csak „közelítenek”) hacsak lehet, szeretjük az egyenlet megoldását valamilyen képletből megkapni. Az első- és a másodfokú esetet mindenki ismeri, de a harmadfokút már nem. Ennek megoldását – ugyan nem ő találta ki, csak ő publikálta – Gerolamo Cardanoról nevezték el. Van azonban valami, ami nem alaptalanul viseli az ő nevét: a kardántengely.

Ennyi technika történet után térjünk vissza a matematikához! Az általános harmadfokú egyenlethez nem létezik megoldó képlet, csak olyan változatához, amelyben nem szerepel másodfokú tag:

 

.

(7.41)

Az általános egyenletből azonban ez az alak mindig előállítható a teljes négyzethez hasonló eljárással, csak itt természetesen köbről van szó. Ekkor az átszámítás a következő módon végezhető el:

 

(7.42)

Az (7.41) egyenlet megoldása:

 

(7.43)

ahol

 

(7.44)

 

(7.45)

Mint látható, ezt a számítást elvégezni nem olyan egyszerű, mint a másodfokú egyenlet gyökeit meghatározni. Érdekeség talán, hogy abban az esetben, ha a megoldás három valós gyökből áll, már u és v meghatározása során is komplex számokat kapunk! Sokszor nem is bajlódnak vele, inkább közelítő módszert alkalmaznak. Mi nem így tettünk, itt a programkód:

Sub harmadfoku(s As Integer, ByRef a() As Double)
' s annak a sornak a száma, ahová a gyököt ki kell írni
' a az együttható vektor
Dim p As Double, q As Double, u As Double, v As Double, diszkr As Double
Dim uabsz As Double, fi As Double
Ifa(3) = 0 Then
Call masodfoku(s, a)
Else ' az egyenlet átalakítása z^3+p*z+q=0 -ra
kesz = True
p = (3 * a(1) - a(2) * a(2)) / 3
q = a(0) - a(2) * a(2) * a(2) / 27 - a(2) / 3 * p
If p = 0 Then ' z^3+q=0
  p = Sgn(-q) * (Abs(q)) ^ (1 / 3)
' gyökök kiírása az eredménylapra
Range("F" + Szam(s)).Value = p - a(2) / 3
s = s + 1
Range("F" + Szam(s)).Value = -p / 2 - a(2) / 3
Range("G" + Szam(s)).Value = 3 ^ 0.5 * p / 2
s = s + 1
Range("F" + Szam(s)).Value = -p / 2 - a(2) / 3
Range("G" + Szam(s)).Value = -3 ^ 0.5 * p / 2
Exit Sub
End If
If q = 0 Then ' z^3+p*z=0 => z=0 => x=-B/3/A, de A=1
Range("F" + Szam(s)).Value = -a(2) / 3
a(0) = a(1) - 2 * a(2) * a(2) / 9
a(1) = 2 / 3 * a(2)
a(2) = 1
Call masodfoku(s + 1, a)
Exit Sub
End If
diszkr = q * q / 4 + p * p * p / 27
If diszkr < 0Then ' a valós gyök meghatározása
fi = Sqr(Abs(q * q / 4 + p * p * p / 27))
  uabsz = (q * q / 4 + fi * fi) ^ (1 / 6)
fi = (1 - Sgn(-q)) / 2 * 3.1415926536 + Atn(fi / (-q / 2))
  u = 2 * uabsz * Cos(fi / 3) - a(2) / 3 / a(3)
Else ' diszkr > 0, az egyetlen valós gyök meghatározása
fi = -q / 2 + Sqr(diszkr)
  u = Sgn(fi) * Abs(fi) ^ (1 / 3)
  v = -p / 3 / u
  u = u + v - a(2) / 3
End If
v = Round(u) ' egész megoldások pontosítása
If Abs(((u + a(2)) * u + a(1)) * u + a(0)) > _
Abs(((v + a(2)) * v + a(1)) * v + a(0)) Then u = v
Range("F" + Szam(s)).Value = u
a(0) = a(1) + u * (u + a(2))
a(1) = u + a(2)
a(2) = 1
Call masodfoku(s + 1, a)
End If 'harmadfokú-e
End Sub

7.2.3.5. A többszörös gyökök eltüntetése

Több oka is van annak, hogy szeretnénk előállítani egy olyan polinomot, amelynek az eredeti polinom minden gyöke a megoldása, egyszeres multiplicitással. Az egyik ok, hogy ez nyilvánvalóan fokszámcsökkenéssel jár, és lehet, hogy nem is lesz szükségünk közelítő (azaz pontatlanabb) módszer alkalmazására. A másik ok, hogy – a későbbiekben ismertetésre kerülő – a valós gyökök számát meghatározó módszer csak ilyen esetben működik.

Legyen adott az f(x) polinom, melynek főegyütthatója (a n ) egy[3], és amelynek s darab különböző gyöke (x i ) van, rendre α i multiplicitással. Ekkor a polinom gyöktényezős alakja a következő:

 

.

(7.46)

A polinom deriváltja előállítható a következő alakban:

 

,

(7.47)

ahol egyszeres gyökök esetén α i -1=0, így az adott gyök nem szerepel a szorzatban. Legyen g(x) (7.46) és (7.47) legnagyobb közös osztója, azaz:

 

(7.48)

Látható, hogy lesz a keresett csak egyszeres gyököket tartalmazó polinom. A g(x) polinomot az ún. Euklidesz-féle algoritmussal lehet előállítani. Állítsuk elő az f(x) és deriváltja hányadosát (q0(x)) és az osztás maradékát (r1(x))! Ekkor felírható a következő egyenlőség:

 

(7.49)

Folytassuk, és készítsünk egy sorozatot mindaddig, amíg a maradék nullává nem válik:

 

(7.50)

Bizonyítható, hogy r k (x) lesz a legnagyobb közös osztó, azaz g(x). Most már csak p(x) meghatározása van hátra:

 

(7.51)

Az algoritmust megvalósító programrészlet a következő:

……………
'a az eredeti polinom együtthatói
Call Derivalt1(n, a, bb)'bb a derivált együtthatót tartalmazza
Call AegyenloB(n, aa, a) ' az eredeti tömb aa-ba
i = n ' a polinom fokszáma
j = n - 1 ' a derivált fokszáma
Do
Call PolDiv(i, j, aa, bb, cc)
Call PolFokszam(i, aa) ' a maradék fokszáma
' aa-t es bb-t fel kell cserélni, valamint a fokszámaikat is
Call AegyenloB(i, cc, aa)
Call AegyenloB(j, aa, bb)
Call AegyenloB(i, bb, cc)
k = i
i = j
j = k
LoopUntil (k = 0) And (cc(0) = 0) ' osztás, amíg a maradék 0nem lesz
Call AegyenloB(n, bb, a)      ' az eredeti polinom bb-be
Call PolDiv(n, i, bb, aa, cc) ' osztva a legnagyobb közös osztóval
k = n - i
Call PolFokszam(k, cc)
' cc-ben csak egyszeres gyökök vannak, fokszáma=k
……………

7.2.3.6. A gyököket tartalmazó intervallum meghatározása

A következőkben igazolás nélkül közlünk egy olyan eljárást, amellyel intervallum határozható meg a gyökök abszolút értékére. Legyen adott a 7.37. alakú egyenlet. Tegyük fel, hogy a n és a0 nem zérus. Határozzuk meg a következő értékeket:

 

(7.52)

Bizonyítható, hogy az egyenlet minden gyökére igaz a következő egyenlőtlenség:

 

(7.53)

Az algoritmust megvalósító eljárás a következő:

Sub GyokInterv(n As Integer, ByRef a() As Double, _
ByRef al As Double, ByRef fel As Double)
Dim ak1 As Double, ak2 As Double
Dim i As Integer
ak1 = Abs(a(0))
ak2 = Abs(a(1))
For i = 1 To n - 1
If Abs(a(i)) > ak1 Then ak1 = Abs(a(i))
If Abs(a(i + 1)) > ak2 Then ak2 = Abs(a(i + 1))
Next i
fel = 1 + ak1 / Abs(a(n))
al = 1 / (1 + ak2 / Abs(a(0)))
End Sub

7.2.3.7. Valós gyökök száma egy adott intervallumban

Az algoritmusnak a n =1 főegyütthatójú, csak egyszeres gyököket tartalmazó polinomra van szüksége. Ilyet mi már elő tudunk állítani.

Az eljárás két részből áll. Az első részben egy polinomokból álló sorozatot (Sturm-lánc) kell meghatározni. Az algoritmus emlékeztet az Euklideszi algoritmusra, mert itt is polinomosztással kell dolgoznunk, csak a kiinduló két polinom lesz más, és az osztási maradék mínusz egyszeresére lesz szükségünk. Nézzük ezek után a számítás leírását, ahol p(x) a (7.51) szerint előállított k-ad fokú polinom:

 

(7.54)

Az így előállított p0(x),…, p k (x) polinomsorra lesz szükségünk. Ha egy [a,b] intervallumban szeretnénk megtudni a valós gyökök számát, akkor állítsuk elő a p0(a),…,p k (a) sorozatot, hagyjuk ki belőle az esetleges nullákat, majd számoljuk meg, hogy p0(a)-tól p k (a)-ig hány előjelváltás volt. Az így kapott értéket jelöljük v a -val. Hasonlóan járjunk el b-vel is, az eredmény legyen v b . Bizonyítható, hogy az [a,b]-ben lévő valós gyökök száma megegyezik a v a -v b különbséggel.

A következő két eljárás az algoritmus egy lehetséges megvalósítására mutat példát. Vegyük észre, hogy az előző pontban bemutatott intervallumkereső eljárás két intervallumot – egyet a pozitív számokra, egyet a negatívokra – adott. Ez a magyarázata, hogy az eljárások két darabszámot állítanak elő:

Function ElojelValtas(n As Integer, a() As Double) As Integer
Dim s As String, i As Integer
' Megszámolja, hogy az a-ban levő sorozatban hány előjelváltás van.
' A nulla nem számít.
s = ""
' a számokat az előjelükkel helyettesíti, a nullát kihagyja
For i = 0 To n
Select Case Sgn(a(i))
Case 1: s = s + "+"
Case -1: s = s + "-"
End Select
Next i
Do While InStr(s, "++") > 0 'az ismétlődések kiszűrése
i = InStr(s, "++")
s = DeleteStr(s, i, 1)
Loop
Do While InStr(s, "--")> 0 ' az ismétlődések kiszűrése
i = InStr(s, "--")
s = DeleteStr(s, i, 1)
Loop ' csak +-+- szerű elemek maradnak a sorozatban
ElojelValtas = Len(s) - 1
EndFunction

SubValosDb(n As Integer, ByRef a() As Double, _
ByRef negdb As Integer, ByRef pozdb As Integer)
Dim aa() As Double, bb() As Double, cc() As Double
Dim al As Double, fel As Double
Dim v1() As Double, v2() As Double, v3() As Double, v4() As Double
Dim i As Integer, j As Integer, k As Integer, L As Integer
Dim vege As Boolean
' Sturm-féle gyökszámlálás
' A két intervallum szélein vizsgál.
' A tömbökben a Sturm-sorozat helyettesítési értékei vannak.
ReDim v1(n)
ReDim v2(n)
ReDim v3(n)
ReDim v4(n)
Call GyokInterv(n, a, al, fel)
v1(0) = BehelyValos(fel, n, a)
v2(0) = BehelyValos(al, n, a)
v3(0) = BehelyValos(-fel, n, a)
v4(0) = BehelyValos(-al, n, a)
Call AegyenloB(n, aa, a)
i = n
L = 2
Call Derivalt1(n, a, bb)
j = n - 1
Call PolFokszam(j, bb)
v1(1) = BehelyValos(fel, j, bb) ' a derivált helyettesítési értékei
v2(1) = BehelyValos(al, j, bb)
v3(1) = BehelyValos(-fel, j, bb)
v4(1) = BehelyValos(-al, j, bb)
vege = False
Do
Call PolDiv(i, j, aa, bb, cc)
Call PolFokszam(i, aa)
Call NegalA(i, aa)
v1(L) = BehelyValos(fel, i, aa)
v2(L) = BehelyValos(al, i, aa)
v3(L) = BehelyValos(-fel, i, aa)
v4(L) = BehelyValos(-al, i, aa)
L = L + 1
If i = 0 Then vege = True
Call AegyenloB(i, cc, aa)
Call AegyenloB(j, aa, bb)
Call AegyenloB(i, bb, cc)
k = i
i = j
j = k
Loop Until vege
L = L - 1
pozdb = ElojelValtas(L, v2) - ElojelValtas(L, v1)
negdb = ElojelValtas(L, v3) - ElojelValtas(L, v4)
End Sub

7.2.3.8. Gyökök keresése közelítő módszerrel

Közelítő módszernek az érintőmódszert választottuk. Mint láttuk, az eljárás általában konvergens, de ha rossz helyről indulunk, akkor körbe-körbe járhat. A másik probléma, hogy kiléphet az intervallumból kevésbé zavaró, mert akkor is talál gyököt, csak másikat. Mivel mi minden gyököt szeretnénk megkeresni, és a sorrend nem számít, ezzel a „hibával” nem foglalkozunk. A körbe-körbe járás csak speciális esetben fordul elő, ezért a kezdeti értékét véletlenszám-generátor felhasználásával úgy állítottuk elő, hogy még a feltétel is teljesüljön. Ha ezer lépés után sem elég pontos a közelítés, akkor a program átvált az intervallumfelezésre.

A valós esetet megvalósító programrészlet a következő:

Call GyokInterv(k, cc, al, fel)
al = -al
fel = -fel
' első derivált cv, nv
Call Derivalt1(k, cc, cv)
nv = k - 1
Call PolFokszam(nv, cv)
' második derivált cvv, nvv
Call Derivalt1(nv, cv, cvv)
nvv = nv - 1
Call PolFokszam(nvv, cvv)
' megfelelő kezdeti érték keresése ->sign(f)=sign(f")
j = 0
Do
If negdb > 0 Then
x = (fel - al) * Rnd + al
Else
x = (-al + fel) * Rnd - fel
End If
j = j + 1
If j = 25 Then
al = al / 1.1
fel = 1.1 * fel
j = 0
End If
Loop UntilSgn(BehelyValos(x, k, cc)) = Sgn(BehelyValos(x, nvv, cvv))
' megoldás érintővel
x0 = x
j = 0
Do
x = x0 - BehelyValos(x0, k, cc) / BehelyValos(x0, nv, cv)
If (Abs(1-x/x0)<epsz) And (Abs(BehelyValos(x, k, cc)) < epsz) ThenExit Do
x0 = x
j = j + 1
If j = 1000 Then
x = IntervFelezes(al, fel, k, cc)
Exit Do
End If
Loop
Range("F" + Szam(gysz)).Value = x
If x < 0Then
negdb = negdb - 1
Else
pozdb = pozdb - 1
End If
gysz = gysz + 1
bb(1) = 1
bb(0) = -x
Call PolDiv(k, 1, cc, bb, aa) ' osztás a gyöktényezővel
k = k - 1
Call PolFokszam(k, aa)
Call AegyenloB(k, cc, aa)

Hasonlóan jártunk el komplex esetben is, de ott az első közelítő érték valós részét választottuk véletlenszerűen, a képzetes mindig egy lett:

Call GyokInterv(k, cc, al, fel)
' elsőderivált cv, nv
Call Derivalt1(k, cc, cv)
nv = k - 1
Call PolFokszam(nv, cv)
' második derivált cvv, nvv
Call Derivalt1(nv, cv, cvv)
nvv = nv - 1
Call PolFokszam(nvv, cvv)
' megfelelő kezdeti érték keresése ->sign(f)=sign(f')
Do
xr = (fel - al) * Rnd + al
Loop Until Sgn(BehelyValos(xr, k, cc)) = Sgn(BehelyValos(xr, nvv, cvv))
' megoldás érintővel
xr0 = xr
xi = 1
xi0 = 1
Do
Call BehelyKomplex0(xr0, xi0, k, cc, yr, yi)
Call BehelyKomplex0(xr0, xi0, nv, cv, yr0, yi0)
nev = yr0 * yr0 + yi0 * yi0
xr = xr - (yr * yr0 + yi * yi0) / nev
xi = xi - (yr0 * yi - yi0 * yr) / nev
If (Abs(1 - Sqr((xi * xi + xr * xr) / (xi0 * xi0 + xr0 * xr0))) < epsz) _
And (Sqr(BehelyKomplex(xr, xi, k, cc)) < epsz) Then ExitDo
xr0 = xr
xi0 = xi
Loop
If Abs(BehelyValos(xr, k, cc)) < epsz Then
Range("F" + Szam(gysz)).Value = xr
gysz = gysz + 1
n = n - 1
bb(1) = 1
bb(0) = -xr
Call PolDiv(k, 1, cc, bb, aa)
k = k - 1
Else
Range("F" + Szam(gysz)).Value = xr
Range("G" + Szam(gysz)).Value = xi
Range("F" + Szam(gysz + 1)).Value = xr
Range("G" + Szam(gysz + 1)).Value = -xi
gysz = gysz + 2
n = n - 2
bb(2) = 1
bb(1) = -2 * xr
bb(0) = xr * xr + xi * xi
Call PolDiv(k, 2, cc, bb, aa)
k = k - 2
End If
Call PolFokszam(k, aa)
Call AegyenloB(k, cc, aa)

Mint látható, mindkét programrészben szerepel a gyöktényezővel való osztás. Valós esetben ez magától értetődő, de vajon mi a helyzet a komplex gyökök esetén? Ha megtaláltunk egy komplex gyököt, akkor igazából kettőt találtunk, mert a konjugáltja is gyök. Legyen például a gyök. Ekkor behelyettesítve egy 7.37. egyenletbe, majd a valós és képzetes részeket szétválogatva:

 

(7.55)

Az egyenlőség nyilván csak akkor állhat fenn, ha mind a valós, mind pedig a képzetes rész zérus. Mivel gyököt helyettesítettünk be, ez nyilván így is van. Abban az esetben, ha a konjugáltat írjuk az egyenletbe, akkor csak annyi változik, hogy a képzetes rész előjele ellentétes lesz:

 

(7.56)

Azonban az előzőekben leírtak miatt ez is kielégíti az egyenletet, tehát a konjugált is gyök. Ezek után lehetőségünk van egyszerre két gyöktényezővel osztani. Ennél is jobb azonban a helyzet, mert:

 

(7.57)

Azaz egy valós együtthatójú másodfokú polinommal oszthatunk.

7.3. Többváltozós függvények gyökkeresése

7.3.1. Lineáris egyenletrendszer – Gauss elimináció

Egy n egyenletet és ismeretlent tartalmazó lineáris egyenletrendszert sokféleképpen lehet megadni. A klasszikus (7.58), a mátrixos részletes (7.59) és a mátrixos tömör (7.60) írásmód közül választhatunk.

 

(7.58)

 

(7.59)

 

(7.60)

A lineáris egyenletrendszereket általában Gauss-eliminációval szoktuk megoldani. Ennek lényege a következő: az első egyenlet -szeresét hozzáadjuk a másodikhoz. Ennek hatására a második egyenlet első együtthatója zérus lesz. Hasonlóan folytatjuk az eljárást, az első egyenlet -szeresét adjuk hozzá az i. egyenlethez. Ha az összes egyenlettel elvégeztük ezt az összegzést, akkor az x 1 ismeretlen az első egyenlet kivételével mindenhol eltűnik. Most a második egyenlettel csináljuk ugyanezt minden nála nagyobb sorszámú sorra, azaz például a második egyenlet -szeresét adjuk az i. sorhoz. Az eljárást addig folytatjuk, amíg a következő struktúrájú egyenletrendszert nem kapjuk:

 

(7.61)

A betűk „kalapozására” azért volt szükség, mert az együtthatók – az első egyenlet kivételével – megváltoznak. Az így kapott egyenletrendszerből a megoldás már könnyűszerrel előállítható, hiszen az utolsóban csak egy ismeretlen van, tehát . Az utolsó előttiegyenletben eredetileg két ismeretlen van, ebből x n értékét már ismerjük, tehát ez is meghatározható. Az eljárást így folytatva visszafelé, az összes gyököt meg tudjuk határozni.

Az elmondottak bemutatására nézzük a következő konkrét példát:

 

(7.62)

vagy mátrixos alakban:

 

(7.63)

Az egyszerűség kedvéért az együttható mátrixot és az egyenlet jobb oldalát egy nx(n+1)‑szeres mátrixba szoktuk összefoglalni, és így számolunk:

 

(7.64)

Az első sor -szeresét adjuk hozzá a második sorhoz. A harmadik sor esetén ez a szorzótényező -7:

 

(7.65)

A következő – és esetünkben egyben az utolsó – lépésként a második egyenletet vonjuk ki a harmadikból:

 

(7.66)

Ezzel a rendezés végére értünk, most már csak ki kell fejezni a megoldásokat. Az x 3 az utolsó egyenletből kiolvasható:3. Ezt a másodikba behelyettesítve x 2 =2, majd az első egyenletből x 1 =1.

Most térjünk vissza az általános esethez! Mikor lehet gondunk az eljárás során? Akkor ha, például a j. sort akarjuk hozzáadni az alatta állókhoz, de az a jj érték zérus. Ekkor keresnünk kell alatta olyan sort, ahol a j. oszlopban nincs nulla, és azzal felcserélhetjük. Ha nem találtunk ilyen sort, akkor az egyenlet nem oldható meg! Matematikából már megtanították mindenkinek, hogy egy lineáris egyenletrendszer akkor nem oldható meg, ha az együttható mátrixának determinánsa nulla. Nézzünk meg most ezzel a „félbehagyott” egyenletrendszerrel mi a helyzet.

Az egyenlet együttható mátrixa a következő alakú:

 

(7.67)

Kezdjünk hozzá a determináns meghatározásához! Ha az első oszlop szerint fejtjük ki, akkor ott csak egy nullától különböző érték van, ezért a determinánsszámítást visszavezetjük egy eggyel kisebb dimenziójú esetre, azaz a11-szer a hozzá tartozó aldetermináns. Ezt az eljárást addig folytathatjuk, amíg el nem érjünk a j. aldeterminánst, de ott az első oszlop minden értéke zérus. Ebből adódóan a determináns értéke is zérus!

Egy nagyméretű egyenletrendszer megoldása sok számítást igényel. Közben a kerekítési és egyéb hibák csak halmozódnak. Ennek következménye lehet az, hogy egy jól elkészített program is hibás eredményt ad. Ilyen probléma akkor szokott előfordulni, ha az együttható mátrix rosszul kondicionált. A kondíció mérőszáma: , ahol egy mátrix és inverzének normáját szorozzuk össze. Ha nagy a kondíciószám, akkor a számítási hibák jelentős eltérést fognak okozni. Ilyen hiba nemcsak a számítógépek pontatlanságának következménye, hanem – a műszaki életben igen gyakori – méréseknél elkövetett pontatlanságokból is adódhat. Nézzük például a következő egyenletrendszert:

 

(7.68)

Az egyenletrendszer megoldása x=y=1. Ha két értéket kismértékben megváltoztatunk:

 

(7.69)

akkor a megoldások nagymértékben eltérnek az előzőtől: x=0 és y=2. Ennél a példánál szemléletesen is látható az eltérés, hiszen a két egyenletet tekinthetjük egy-egy egyenes egyenletének, a megoldás pedig a metszéspontjuk. Mint az egyenletekből is látszik, az egyenesek meredeksége majdnem megegyezik, azaz a meredekség csekély módosítása is jelentősen elmozdítja a metszéspontot.

Mátrix normából többféle is létezik. A vektorhosszhoz leginkább az un. Euklideszi norma áll közel, melynek definíciója a következő:

 

(7.70)

A kondíciószám meghatározásával, értékelésével kapcsolatban két probléma is felmerül:

  • mennyi a nagy érték,

  • hogyan határozom meg pontosan az inverz mátrixot, ha rosszul kondicionált a mátrixom? („róka fogta csuka” helyzet)

Lehet adni más jellegű – bár kevésbé egzakt – definíciót, vagyis rosszul kondicionált az a mátrix, amely közel van az „invertálhatatlansághoz”, azaz a szingularitáshoz. Ha az előző példában az együtthatómátrix egyetlen, nem egész paraméterét kerekítjük (1‰), máris szinguláris (nulla determinánsú) mátrixot kaptunk.

Egyenletrendszer esetében könnyű meggyőződnünk arról, hogy a megoldás megfelelő-e, hiszen csak vissza kell helyettesíteni. Ha megoldás nem megfelelő, akkor próbálkozhatunk ún. főelem-kiválasztással. Részleges főelem-kiválasztás esetén nem az első egyenlettel fogjuk az alatta levők első paraméterét kinullázni, hanem azzal, ahol az első paraméter abszolút értéke maximális, azaz . Ilyenkor a két egyenletet felcseréljük, és folytatjuk az eljárást. Az újabb kinullázások során hasonlóan járunk el.

Teljes főelem-kiválasztás esetén annyiban módosul az eljárás, hogy a teljes maradék mátrixban keressük a legnagyobb abszolút értékű elemet, azaz ha a j. sornál tartunk, akkor . Most nemcsak a sorokat, hanem az oszlopokat is cserélni kell.

Ez annyiban nehezíti a dolgunkat, hogy az ismeretlenek sorrendje is megváltozik. Ekkor egy segédvektort kell létrehozni, amiben nyilvántarthatjuk, hogy melyik ismeretlen most melyik oszlopban található.

Ha a főelem-kiválasztás sem segít, akkor általában iterációs módszerekhez folyamodunk. A lineáris egyenletrendszerek iterációs megoldásának módszereit a 7.3.2. szakasz - Lineáris egyenletrendszer – iteráció fejezetben tárgyaljuk.

7.3.1.1. Mátrix invertálás

A klasszikus matematikai módszer nagyon jól használható a mátrixokkal kapcsolatos tételek bizonyítására, de gyakorlatilag használhatatlan számítógépes algoritmusként. Egy 12x12-es mátrix invertálása esetén a tárigény kevéssel nagyobb, mint double (8 bájt helyigényű) számábrázolás esetén. Több különböző numerikus módszer is ismert a mátrix invertálásra, melyek közül most egy olyat tárgyalunk, amely végeredményben nagyon hasonlít a Gauss-eliminációnál megismert algoritmusra.

Az eljárás alapgondolatát nézzük meg egy konkrét példán! Legyen az invertálandó mátrixunk a következő:

 

(7.71)

Szorozzuk meg -t a következő transzformációs mátrixszal:

 

(7.72)

Az eredmény:

 

(7.73)

Tulajdonképpen az első sor -4-szeresét hozzáadtuk a második sorhoz. A transzformációs mátrix valójában egy módosított egységmátrix, amely a Gauss-eliminációnál már ismertetett szorzót tartalmazza abban a pozícióban, ahová nullát szeretnénk kapni. Hasonlóan kaphatunk egy következő mátrixot is és így tovább, mindaddig, amíg a szorzat eredménye egységmátrix nem lesz:

 

(7.74)

A szorzat legyen egyenlő -vel. Azt látjuk, hogy , azaz az egységmátrix. Ez azonban csak úgy lehet, ha . Ha kezdetben felvettünk volna egy az -val azonos dimenziójú egységmátrixot, és sorba megszoroztuk volna a transzformációs mátrixokkal, akkor megkaptuk volna az inverz mátrixot. A szorzások azonban – mint láttuk – tulajdonképpen sorműveletek voltak, éppen úgy, mint a Gauss-eliminációnál. Összefoglalva, az algoritmus főbb lépései az alábbiakban láthatók:

  • hozzunk létre az invertálandó () mátrixszal azonos méretű egységmátrixot,

  • sorozatos sorműveletekkel alakítsuk át az mátrixot felső háromszög mátrixszá, mint a Gauss eliminációnál, és minden sorműveletet végezzünk el az egységmátrixon is,

  • ismételt sorműveletekkel nullázzuk ki a főátló feletti részt is, és tegyünk ugyanígy az egységmátrixszal is,

  • az mátrixban már csak a főátlóban vannak nem nulla értékek, ezért osszuk végig a sorokat a főátló elemeivel (az eredeti egységmátrixban is), így végül megkapjuk ‑ban az egységmátrixot, az eredeti egységmátrix helyén pedig az inverz mátrixot.

Az algoritmust megvalósító Basic nyelvű függvények a következők:

Function Csere(n As Integer, i As Integer, ByRef a() As Double, _
ByRefinv() As Double) As Integer
' sorokat cserél mindkét mátrixban
' n a mátrix dimenziója
' az i. sor alatt kell keresni nem nulla értékeket
' a ebből lesz egység mátrix
' inv ez volt az egységmátrix
Dim j As Integer, k As Integer, cs As Double
Csere = 1 ' nem sikerült
For j = i + 1 To n
If a(j, i) <> 0 Then Exit For
Next j
If a(j, i) = 0 Then Exit Function
For k = 1 To n
cs = a(i, k)
a(i, k) = a(j, k)
a(j, k) = cs
cs = inv(i, k)
inv(i, k) = inv(j, k)
inv(j, k) = cs
Next k
Csere = 0 ' sikerült
End Function

Function MInverz(n As Integer,a() As Double,ByRef inv() As Double) As Integer
' a mátrix dimenziója
' a az invertálandó mátrix
' inv itt lesz az inverz mátrix
Dim i As Integer, j As Integer, k As Integer
Dim sz As Double
ReDim inv(n, n)
For i = 1 To n ' kezdetben egységmátrix
inv(i, i) = 1
Next i
For i = 1 To n - 1 ' alsó háromszög kinullázása
For j = i + 1 To n
If a(i, i) = 0 Then err = Csere(n, i, a, inv)
If err <> 0 Then Exit Function
sz = -a(j, i) / a(i, i)
For k = 1 To n
  a(j, k) = a(j, k) + sz * a(i, k)
  inv(j, k) = inv(j, k) + sz * inv(i, k)
Next k
Next j
Next i
If a(n, n) = 0 Then Exit Function
For i = n To 2 Step -1 ' felső háromszög kinullázása
For j = i - 1 To 1 Step -1
sz = -a(j, i) / a(i, i)
For k = 1 To n
  a(j, k) = a(j, k) + sz * a(i, k)
  inv(j, k) = inv(j, k) + sz * inv(i, k)
Next k
Next j
Next i
For i = 1 To n ' ettől lenne az egységmátrix
sz = a(i, i)
For j = 1 To n
inv(i, j) = inv(i, j) / sz
Next j
Next i
MInverz = 0
EndFunction

Abban az esetben, ha a mátrix rosszul kondicionált, ugyanazok a lehetőségek állnak rendelkezésünkre, mint a lineáris egyenletrendszer megoldásánál. Az eljárás közben – ha szükségünk van rá – előállíthatjuk a mátrix determinánsának az értékét is. Ezt akkor tehetjük meg, amikor az eredeti mátrixunk főátlója alatt már minden nulla. Ekkor a főátló elemeit összeszorozva megkapjuk a determináns értékét.

7.3.1.2. Független egyenletek kiválogatása - bázisfaktorizáció

A gyakorlatban sokszor előfordul, hogy egy feladat megoldása során felírunk minden egyenletet, amit csak tudunk. Ekkor könnyen előfordulhat, hogy néhány egyenlet összefügg a többivel, tehát azokból előállítható. Szükségünk van tehát egy olyan módszerre, amellyel a „rengeteg” egyenletből egy olyan egyenletrendszert kapunk, amelyben már csak független egyenletek szerepelnek.

Mit is jelent az, hogy egy egyenlet független a többitől? Azt, hogy nem lehet előállítani a többiek lineáris kombinációjaként. Vegyük észre a hasonlóságot a vektorok függetlenségével! Legyenek az egyenletek együtthatói egy n elemű vektor koordinátái, és jelöljük őket v 1, v 2,… v k -val. Ha most például n=k és a v i vektorokkal minden n dimenziós vektor előállítható, akkor v i -k függetlenek és teljes bázist alkotnak. Ha azonban van olyan v j a vektorok között, amely előállítható a következőképpen:

 

,

(7.75)

akkor a vektorok összefüggőek, és nem alkotnak bázist. A bázisfaktorizáció célja az, hogy a v 1, v 2,… v k vektorokból olyan w 1, w 2,… w l vektorokat állítson elő, amelyek függetlenek, így bázist alkotnak (általánosan ).

Nézzünk egy konkrét példát! Legyen adva a háromdimenziós térben három vektor: . Ha ezek egy síkba esnek, akkor nem feszítik ki a háromdimenziós teret, azaz nem lehet tetszőleges 3-dimenziós vektort előállítani a segítségükkel. Annak eldöntése, hogy függetlenek-e ránézésre nem mindig egyszerű. Erre szolgál a bázisfaktorizáció.

Az eljárást az előző példán mutatjuk be. Hozzuk létre a sorvektorokként kezelt v 1, v 2, v 3 vektorokból az mátrixot! Végezzük el a felső háromszög mátrixszá alakítást a Gauss‑eliminációnál ismertetett módon:

 

(7.76)

Látható, hogy a harmadik vektor zérussá vált, így a bázisvektorok:

 

(7.77)

Ez a módszer általánosságban is így működik. Eredményként egy trapéz (szerencsés eseten háromszög) alakú elrendezéshez jutunk, amely már megkönnyíti az egyenletrendszer megoldását (7.78).

Természetesen előfordulhat, hogy kevesebb az egyenletünk, mint az ismeretlenek száma. Ekkor vagy fel tudunk még írni kellő számú független egyenletet, vagy marad néhány szabad paraméterünk. Az irodalomban erre a feladatra is – nevezetesen kevesebb az egyenletünk, mint az ismeretlen – sok módszer található, például az ún. projektor mátrixokra építő Purcell-módszer [8.] .

 

(7.78)

7.3.2. Lineáris egyenletrendszer – iteráció

Lineáris egyenletrendszerek megoldására, hacsak lehet, az előzőekben bemutatott közvetlen módszereket használjuk, mert általában sokkal kevesebb számítást igényelnek. Előfordulhat azonban, hogy néha nem alkalmazhatók. Elsősorban akkor van gond, ha az együttható mátrix determinánsa zérus. Szerencsére a mátrixok között az ilyenek rendkívül ritkák, annak esélye, hogy egy tetszőleges (pl. véletlenszám-generátorral előállított) mátrix szinguláris legyen, gyakorlatilag nulla (pl. lottó öttalálatos). Inkább a teljesség igénye miatt írunk röviden az iterációról is.

Mikor alkalmazzuk mégis az iterációt? Ha a nagyméretű együttható mátrix „ritka”, azaz majdnem minden eleme zérus, akkor lehetséges, hogy az iteráció során kevesebbet kell számolnunk, amennyiben kihasználjuk ezt a tulajdonságot. A másik esetről már volt szó, nevezetesen amikor a numerikus pontatlanságok, a rosszul kondicionáltság miatt a megoldás pontossága nem kielégítő.

Tekintsük ismét a klasszikus lineáris egyenletrendszert (7.60)! Ezt még át kell alakítanunk. Írjuk fel az mátrixot két mátrix különbségeként, majd rendezzük a következőképpen:

 

(7.79)

Az iteráció során egy kezdeti közelítő x 0-ból indulunk ki és ezzel a számítás menete a következőképpen alakul:

 

(7.80)

Mikor használható ez a módszer? Természetesen, ha invertálható, és ha normája kisebb, mint egy, azaz:

 

(7.81)

Ez utóbbi visszavezethető a következő feltételre:

 

(7.82)

Ez azt jelenti, hogy az együttható mátrix főátlójában lévő elemek erősen dominálnak, nagyobb abszolút értékűek, mint a sor többi elemének abszolút összege! Az iterációs eljárásoknak léteznek más változatai is (pl. Gauss-Seidel), de a konvergencia feltételekkel ott is baj szokott lenni.

7.3.3. Nemlineáris egyenletrendszerek megoldási módszerei

Ebben az alfejezetben általánosságban foglalkozunk az egyenletrendszerek megoldásával.

7.3.3.1. Egyszerű iteráció

Nemlineáris egyenletrendszereket alapvetően kétféleképpen szokás megadni:

 

(7.83)

 

(7.84)

Bármelyiket is ismerjük, a másik egyszerűen előállítható a következő helyettesítéssel:

 

(7.85)

Az iterációs sorozatot (7.84) alakból állíthatjuk elő a szokásos módon:

 

(7.86)

feltéve, hogy az x i vektorok benne maradnak ɸ értelmezési tartományában. A konvergencia feltétele, hogy:

 

.

(7.87)

Ha egy kicsit figyelmesebben megnézzük ezt a feltételt, akkor észrevehetünk egy differenciahányados szerű kifejezést is benne. Abban az esetben, ha és folytonosak, az értelmezési tartományon a feltétel így írható fel:

 

(7.88)

ahol

 

 

az ún. Jacobi mátrix. Ez már nagymértékben hasonlít az egyváltozós iterációnál megismert konvergencia feltételre. A feltétel eléggé szigorú, azaz sokszor nem elégíti ki az egyenletrendszerünk. Az egyváltozós esetben bemutatott módszer azonban – természetesen átalakítva – itt is alkalmazható. Induljunk ki a (7.83) alakból! Ekkor a részletek mellőzésével, ha x 0 az első közelítés:

 

,

(7.89)

és

 

(7.90)

Bár kicsi az esélye, de ha nem állítható elő, mert a mátrix nem invertálható, akkor próbáljunk másik kezdeti értéket választani.

Példaként nézzünk egy feladatot!. Legyen adott a (7.15. ábra - Mechanizmus geometriája) ábrán látható mechanizmus. Szeretnénk megtudni, mi lesz a C csukló pozíciója, amikor B csukló vízszintesen az x=-1, y=0 pontban van. Az adatok: egység.

Mechanizmus geometriája
7.15. ábra - Mechanizmus geometriája


A megoldáshoz két kör metszéspontját kell meghatároznunk, mivel ekkor a C pont egy (-1,0) középpontú, 5 egység sugarú, és egy D középpontú, 2 egység sugarú kör közös pontjában lesz. Az egyenletrendszer tehát a következő:

 

(7.91)

Ennek az egyenletrendszernek viszonylag könnyű előállítani a pontos megoldását, éppen ezért lesz kiváló arra, hogy a módszereket ellenőrizni tudjuk vele. A levezetés mellőzésével a megoldás:

 

(7.92)

Nézzük most a klasszikus iterációt! Ekkor az egyenletrendszer alakja:

 

(7.93)

Kezdeti értéknek válasszuk az x=1 és y=2 kiindulási adatokat. Táblázatkezelőbe behelyettesítve a (7.16. táblázat - Nemlineáris egyenletrendszer megoldása iterációs módszerrel, amikor divergens a közelítés) táblázatban látható adatokat kapjuk.

7.16. táblázat - Nemlineáris egyenletrendszer megoldása iterációs módszerrel, amikor divergens a közelítés

x

fi

1

-16

2

6

-16

220

6

399

220

208237

399

206685

208237

8,61E+10

206685

8,61E+10

8,61E+10

 

8,61E+10

 

DIVERGENS


Próbálkozzunk a javított változattal is! Ebben az esetben az

 

(7.94)

alakú egyenletrendszerre van szükségünk. A derivált mátrix pedig az Jacobi mátrix, mely most a következő:

 

(7.95)

Behelyettesítve a kezdőértéket és invertálva a mátrixot:

 

(7.96)

Most már felírhatjuk az iterációs összefüggést:

 

(7.97)

Táblázatkezelő alkalmazásával a (7.17. táblázat - Nemlineáris egyenletrendszer megoldása javított konvergenciájú iterációval) táblázatban látható eredményeket kapjuk.

7.17. táblázat - Nemlineáris egyenletrendszer megoldása javított konvergenciájú iterációval

x

kivonandó

1

-2,625

2

-1,625

3,625

0

3,625

2,382813

3,625

0

1,242188

-0,51659

3,625

0

1,758774

-0,12902

3,625

1,11E-16

1,899803

-3,1E-05

3,625

-2,2E-16

1,899834

-1,5E-06

3,625

-5,6E-17

1,899835

-7,7E-08


Az iteráció viszonylag gyors, mert tíz lépés után leállíthattuk. Meg kell azonban jegyezni, hogy nem mindegy, hogy honnan indítjuk a számítást, mert lehet divergens is a sorozat.

7.3.3.2. Az érintőmódszer általánosítása

Az érintőmódszer általánosításához az előző fejezetben bemutatott, javított iterációs módszert kell csak aktualizálni. Az mátrix meghatározása során mindig az aktuális értékeket helyettesítsük be, azaz:

 

(7.98)

Nézzük most meg ennek hatását az előző feladat esetében! A számításokat a 7.18. táblázat - Nemlineáris egyenletrendszer megoldása Newton-Raphson módszerrel tartalmazza.

7.18. táblázat - Nemlineáris egyenletrendszer megoldása Newton-Raphson módszerrel

x

f'

 

f'inverz

 

f

kivonandó

1

4

4

0,125

-0,125

-17

-2,625

2

-4

4

0,125

0,125

4

-1,625

3,625

9,25

7,25

0,125

-0,125

9,53125

0

3,625

1,25

7,25

-0,02155

0,159483

9,53125

1,314655

3,625

9,25

4,62069

0,125

-0,125

1,728318

-1,1E-16

2,310345

1,25

4,62069

-0,03382

0,250233

1,728318

0,374039

3,625

9,25

3,872612

0,125

-0,125

0,139905

-2,2E-16

1,936306

1,25

3,872612

-0,04035

0,298571

0,139905

0,036127

3,625

9,25

3,800358

0,125

-0,125

0,001305

0

1,900179

1,25

3,800358

-0,04111

0,304248

0,001305

0,000343

3,625

9,25

3,799671

0,125

-0,125

1,18E-07

0

1,899836

1,25

3,799671

-0,04112

0,304303

1,18E-07

3,1E-08

3,625

9,25

3,799671

0,125

-0,125

0

0

1,899836

1,25

3,799671

-0,04112

0,304303

0

0


A konvergencia itt – hasonlóan az egyváltozós változathoz – gyors. Annak vizsgálata azonban, hogy az adott esetben a számítások eredményre fognak-e vezetni, azaz az adott paraméterekkel az iteráció konvergens-e, eléggé bonyolult, időigényes, éppen ezért nem is szokták elvégezni. Ehelyett azt figyelik, hogy nem tartanak-e az értékek (elég, ha csak egyikük) végtelenhez.

Mint a 7.98. összefüggésből látható, minden iterációs lépésnél el kell végeznünk egy mátrix invertálását. Ennél valamivel kevesebb számítást igényel, ha az egyenletet megszorozzuk a Jacobi mátrixszal, mert akkor csak egy lineáris egyenletrendszer kell megoldanunk minden lépés során:

 

(7.99)

 

 


[3]  Ha nem ilyen, akkor osszuk el a főegyütthatóval! A gyököket ez az osztás nyilván nem érinti.

A. függelék - Dinamikus rendszerek szimulációs eszközei - LabVIEW Control Design Module

Tartalom
A.1. Modell létrehozása
A.1.1. Modell létrehozása (Model Construction) alpaletta:
A.1.1.1. Állapottér modell létrehozása
A.1.1.2. Átviteli függvény (Transfer Function) létrehozása
A.1.1.3. Elsőrendű rendszer (PT1) átviteli függvényének létrehozása
A.1.1.4. Másodrendű rendszer (PT2) átviteli függvényének létrehozása
A.1.1.5. A jelet időben Pade közelítéssel késleltető rendszer (PTh) átviteli függvényének létrehozása
A.1.2. Modell-információk (Model Information) alpaletta
A.1.3. Modell-átalakítás (Model Conversion) alpaletta
A.1.3.1. Modell átalakítása állapottér modell alakra (Convert to State-Space Models.vi)
A.1.3.2. Modell átalakítása átviteli függvény alakra (Convert to Transfer Function Model.vi)
A.1.3.3. Időben folytonos modell átalakítása mintavételes modellé (Convert Continuous to Discrete.vi)
A.1.4. Modell-összekapcsolás (Model Interconnection) alpaletta
A.1.4.1. Modellek párhuzamos kapcsolása (CD Parallel.vi)
A.1.4.2. Modellek soros kapcsolása (CD Series.vi)
A.1.4.3. Modellek visszacsatolt összekapcsolása egységnyi visszacsatolási tényezővel (CD Unit Feedback.vi)
A.2. A modell vizsgálata időtartományban és frekvenciatartományban
A.2.1. Modell időtartománybeli vizsgálata (Time Response) alpaletta
A.2.1.1. Egységugrás bemenetre adott válaszfüggvény (CD Step Response.vi)
A.2.1.2. Egységimpulzus bemenetre adott válaszfüggvény (CD Impulse Response.vi)
A.2.1.3. Kezdeti értékkel rendelkező rendszer válaszfüggvénye (CD Initial Response.vi)
A.2.1.4. Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvénye (CD Linear Simulation.vi)
A.2.2. Dinamikus rendszermodell frekvenciatartománybeli vizsgálata (Frequency Response) alpaletta
A.2.2.1. Dinamikus rendszermodell Bode frekvenciafüggvénye (CD Bode.vi)
A.2.2.2. Dinamikus rendszermodell Nyquist frekvenciafüggvénye (CD Nyquist.vi)
A.2.2.3. Dinamikus rendszermodell Bode frekvenciafüggvényének erősítési és fázistartaléka (CD Gain and Phase Margin.vi)
A.2.3. Modell dinamikus tulajdonságai (Dynamic Characteristic) alpaletta
A.2.3.1. Rendszermodell pólusainak és zérusainak elhelyezkedése (CD Pole-Zero Map.vi)
A.2.3.2. Rendszermodell állandósult állapotbeli erősítése (CD DC Gain.vi)

A LabVIEW program számos modult tartalmaz, amelyekkel egyszerűbbé válik a folytonos és mintavételes rendszerek irányítási tervezése. A programcsomagban a következő elemek találhatók:

  • Rendszertervezés (LabVIEW Control Design Module)

  • Szimulációs modul (LabVIEW Simulation Module)

  • MathScript Rt modul (LabVIEW MathScript RT Module)

  • Identifikációs eszköz (LabVIEW System Identification Toolkit)

  • PID szabályozó és Fuzzy szabályozó tervezése (LabVIEW PID and Fuzzy Logic Toolkit)

  • Matlab-LabVIEW szimulácós modell kapcsolati eszköz (LabVIEW Simulation Interface Toolkit)

Ebben a programismertetőben a Rendszertervezés (LabVIEW Control Design Module) modullal ismerkedünk meg.

Az A.1. ábra - A Rendszertervezés és Szimuláció (Control Design & Simulation) paletta bemutatja a Rendszertervezés és Szimuláció (Control Design & Simulation) palettát a LabVIEW-ban

A Rendszertervezés és Szimuláció (Control Design & Simulation) paletta
A.1. ábra - A Rendszertervezés és Szimuláció (Control Design & Simulation) paletta


Ebben az ismertetőben elsősorban a folytonos és mintavételes rendszerek átviteli függvényének és állapottér leírásának elemeit szeretnénk bemutatni.

Ha a felsorolt programcsomagok utasításait szeretné részletesen megismerni, akkor tanulmányozza a programcsomagok ismertető kézikönyvét, amelyet az ni.com/manuals Internet címen talál meg.

Az A.2. ábra - A Szabályozó tervezés (Control Design) paletta a Szabályozó tervezés (Control Design) paletta elemeit mutatja be:

A Szabályozó tervezés (Control Design) paletta
A.2. ábra - A Szabályozó tervezés (Control Design) paletta


A következő fejezetekben bemutatjuk a Szabályozó tervezés (Control Design) alpalettáiban elhelyezett műveleteket, amelyek segítségével megvalósíthatjuk a modell-definiálást, illetve a modell idő- és frekvencia-tartományban történő szimulációját.

A Szabályozó tervezés (Control Design) alpaletta elemei elsősorban adott időtartamra vonatkozó rendszervizsgálatot tesznek lehetővé. Ez azt jelenti, hogy a paletta elemeivel nem tudunk dinamikus tulajdonságú rendszerelemeket valós időben szimulálni, hanem úgynevezett futási időtartamtól független analízis feladatokat oldhatunk meg. Más szóval úgy is mondhatnánk, hogy az alpaletta elemeivel meg tudjuk tervezni a különböző dinamikus irányítási rendszerek optimális működését, de ezzel a programcsomaggal nem működtethetjük közvetlenül az irányított elemeket.

A.1. Modell létrehozása

Amikor megalkotjuk a megfelelő matematikai modellt a szimulált rendszer viselkedésének leírásához, az első lépés, hogy létrehozzuk a dinamikus rendszermodell leírását LabVIEW-ban.

A Rendszertervezés és Szimuláció (Control Design & Simulation) modulban létrehozhatunk különböző modelleket, amelyek átviteli függvény vagy állapottér leírású formában adják meg a vizsgált modell paramétereit.

A Rendszertervezés (Control Design) paletta számos alpalettát tartalmaz, amelyek a modell definiálását segítik - ezek a következők:

  • Modell létrehozása (Model Construction)

  • Információ a modellről (Model Information)

  • Modell konverzió (Model Conversion)

  • Modell összekapcsolás (Model Interconnection)

A Szabályozó tervezés (Control Design) paletta
A.3. ábra - A Szabályozó tervezés (Control Design) paletta


Az (A.3. ábra - A Szabályozó tervezés (Control Design) paletta) ábrán a modell definiálásánál leggyakrabban használt alpalettákat mutatjuk be, amelyek a következők:

A.1.1. Modell létrehozása (Model Construction) alpaletta:

Ebben az alpalettában hozhatunk létre átviteli függvényeket és állapottér modelleket.

Modell létrehozása (Model Construction) alpaletta
A.4. ábra - Modell létrehozása (Model Construction) alpaletta


A VI-ok alkalmazásával lineáris rendszermodelleket készíthetünk, és/vagy módosíthatjuk modellek paramétereit. A Modell létrehozása (Model Construction) VI-okat arra is alkalmazhatjuk, hogy elmentsük egy file-ba a modell paramétereit, és/vagy visszaolvassuk őket a file-ból, illetve hogy vizuálisan is megjelenítsük a vizsgált átviteli függvényt valamint az állapottér-paramétereket.

A modell létrehozásához leggyakrabban használt VI-ok

 

CD Construct State-Space Model.vi

 

CD Construct Transfer Function Model.vi

 

CD Construct Special TF Model.vi

A.1.1.1. Állapottér modell létrehozása

Adott a következő állapottér modell:

 

(A.1)

Az Állapottér modell létrehozása CD Construct State-Space Model.vi program segítségével állapottér modellt hozhatunk létre a LabVIEW-ban:

Állapottér modell létrehozása (CD Construct State-Space Model.VI) program ikonja
A.5. ábra - Állapottér modell létrehozása (CD Construct State-Space Model.VI) program ikonja


Állapottér modell létrehozása (CD Construct State-Space Model.VI) program segítség (Help) információs ablaka
A.6. ábra - Állapottér modell létrehozása (CD Construct State-Space Model.VI) program segítség (Help) információs ablaka


Az A, B, C és D mátrixok elemeit megadhatjuk numerikus értékekkel vagy szimbolikus formában ha az (A.5. ábra - Állapottér modell létrehozása (CD Construct State-Space Model.VI) program ikonja) ábrán látható ikon alsó kiválasztó menüje segítségével kiválasztjuk a “Numeric” vagy “Symbolic” menüpontot:

Az Állapottér modell numerikus vagy szimbolikus adatokkal történő feltöltése
A.7. ábra - Az Állapottér modell numerikus vagy szimbolikus adatokkal történő feltöltése


Mintapélda: Állapottér modell (State-Space model) létrehozása.

Állapottér modell numerikus adatokkal történő feltöltése és az adatok kiírása blokk diagram
A.8. ábra - Állapottér modell numerikus adatokkal történő feltöltése és az adatok kiírása blokk diagram


Az Állapottér modell numerikus adatokkal történő feltöltése, és az adatok megjelenítése a front panelen
A.9. ábra - Az Állapottér modell numerikus adatokkal történő feltöltése, és az adatok megjelenítése a front panelen


Az Állapottér egyenlet kiírása (CD Draw State-Space Equation.vi) programot arra használjuk, hogy a képernyőn grafikus állapottér alakban láthassuk az egyenleteket.

Mintapélda: SISO/MIMO állapottér modellek létrehozása.

SISO modell (Single Input, Single Output):

A SISO (Single Input, Single Output) állapottér modell numerikus adatokkal történő feltöltése
A.10. ábra - A SISO (Single Input, Single Output) állapottér modell numerikus adatokkal történő feltöltése


SIMO modell (Single Input, Multiple Output):

A SIMO (Single Input, Multiple Output) állapottér modell numerikus adatokkal történő feltöltése
A.11. ábra - A SIMO (Single Input, Multiple Output) állapottér modell numerikus adatokkal történő feltöltése


MISO modell (Multiple Input, Single Output):

A MISO (Multiple Input, Single Output) állapottér modell numerikus adatokkal történő feltöltése
A.12. ábra - A MISO (Multiple Input, Single Output) állapottér modell numerikus adatokkal történő feltöltése


MIMO modell (Multiple Input, Multiple Output):

A MIMO (Multiple Input, Multiple Output) állapottér modell numerikus adatokkal történő feltöltése
A.13. ábra - A MIMO (Multiple Input, Multiple Output) állapottér modell numerikus adatokkal történő feltöltése


A.1.1.2. Átviteli függvény (Transfer Function) létrehozása

Adott a következő átviteli függvény:

 

(A.2)

Az Átviteli függvény létrehozása (CD Construct Transfer Function Model.vi) program segítségével átviteli függvény modellt hozhatunk létre a LabVIEW-ban:

Átviteli függvény modell létrehozása (CD Construct Transfer Function Model.VI) program ikonja
A.14. ábra - Átviteli függvény modell létrehozása (CD Construct Transfer Function Model.VI) program ikonja


Átviteli függvény modell létrehozása (CD Construct Transfer Function Model.VI) program segítség (Help) információs ablaka
A.15. ábra - Átviteli függvény modell létrehozása (CD Construct Transfer Function Model.VI) program segítség (Help) információs ablaka


Mintapélda: Átviteli függvény (Transfer Function) létrehozása numerikus adatokkal

Az Átviteli függvény modell numerikus adatokkal történő feltöltése és az adatok kiírása blokkdiagram
A.16. ábra - Az Átviteli függvény modell numerikus adatokkal történő feltöltése és az adatok kiírása blokkdiagram


Az Átviteli függvény modell numerikus adatokkal történő feltöltése és az adatok kiírása front panel
A.17. ábra - Az Átviteli függvény modell numerikus adatokkal történő feltöltése és az adatok kiírása front panel


Az átviteli függvény megadása numerikus adatokkal olyan függvényalakot jelent, amelyben az (A.17. ábra - Az Átviteli függvény modell numerikus adatokkal történő feltöltése és az adatok kiírása front panel) ábrán szereplő számláló és nevező együtthatók értékei az s indexszel kijelölt hatványkitevőjű értékeivel vannak megszorozva.

Azaz a 0 indexű együttható az s0 értékkel  van megszorozva, az 1 indexű értékek s1 hatványával és így tovább, míg az m indexű tag az sm-ik hatványú tagjának együtthatója.

Mintapélda: Átviteli függvény (Transfer Function) létrehozása szimbolikus (képlet) adatokkal.

Az Átviteli függvény modell szimbolikus adatokkal történő feltöltése és az adatok kiírása blokkdiagram
A.18. ábra - Az Átviteli függvény modell szimbolikus adatokkal történő feltöltése és az adatok kiírása blokkdiagram


Az átviteli függvény szimbolikus elemekkel történő leírása esetén az együtthatókra a Matlab rendszerben megszokott leírási módot alkalmazzák, amely különbözik a numerikus adatok bevitelénél alkalmazott indexelési eljárástól.

Ennél az átviteli függvény leírási módnál az s legmagasabb (pozitív) hatványának együtthatóját kell a 0 indexű elembe írnunk, a következő, eggyel kisebb s hatványkitevőjű tag együtthatóját az 1 indexű elembe és így tovább egészen (m-1) indexig, ahová az átviteli függvény legkisebb  s  együtthatójú értéket kell beírnunk. Ez az átviteli függvény leírási mód a Matlab program átviteli függvény megadási metódusának felel meg.

A két átviteli függvény leírási mód:

  • Az együtthatók indexei megegyeznek a tároló vektor indexével (Ascending (LabVIEW))

  • Az együtthatók indexei fordított sorrendben jelennek meg a tároló vektor indexeinél (Descending (Mathscript))

A két átviteli függvény leírási mód közötti átváltás egyszerűen megvalósítható a Vektor elemek sorrendjének megfordítása (Reverse 1D Array.VI) program segítségével - a számláló és a nevező együtthatóinál egyaránt.

Az Átviteli függvény modell szimbolikus adatokkal történő feltöltése és az adatok kiírása front panel
A.19. ábra - Az Átviteli függvény modell szimbolikus adatokkal történő feltöltése és az adatok kiírása front panel


A gyakran használt átviteli függvények létrehozására alkalmazhatjuk a Speciális átviteli függvény létrehozása (CD Construct Special TF Model.VI) programot.

A.1.1.3. Elsőrendű rendszer (PT1) átviteli függvényének létrehozása

Az elsőrendű rendszer átviteli függvénye a következő:

 

(A.3)

ahol

 

K

az erősítési tényező [a kimeneti és a bemeneti jel dimenzióinak hányadosa]

 

T

az egytárolós rendszer időállandója [idő dimenzió]

 

T h

az egytárolós rendszer késleltetése [idő dimenzió]

Válasszuk ki a Speciális átviteli függvény létrehozása (CD Construct Special TF Model.VI) program polimorf választó menüjéből a menüpontot, hogy kijelöljük az elsőrendű rendszert!

Az egytárolós tag modelljének létrehozása (CD Construct Special TF Model.VI) program ikonja
A.20. ábra - Az egytárolós tag modelljének létrehozása (CD Construct Special TF Model.VI) program ikonja


Az egytárolós tag modelljének létrehozása (CD Construct Special TF Model.VI) program segítség (Help) információs ablaka
A.21. ábra - Az egytárolós tag modelljének létrehozása (CD Construct Special TF Model.VI) program segítség (Help) információs ablaka


A.1.1.4. Másodrendű rendszer (PT2) átviteli függvényének létrehozása

A másodrendű rendszer átviteli függvénye a következő:

 

(A.4)

ahol

 

K

az erősítési tényező [a kimeneti és a bemeneti jel dimenzióinak hányadosa]

 

ζ

a másodrendű rendszer relatív csillapítási tényezője [ ]

 

ω 0

a másodrendű rendszer csillapítatlan rezonancia körfrekvenciája [rad/idő dimenzió]

Válasszuk ki a Speciális átviteli függvény létrehozása (CD Construct Special TF Model.VI) program polimorf választó menüjéből a menüpontot, hogy kijelöljük a másodrendű rendszert!

A másodrendű tag modelljének létrehozása (CD Construct Special TF Model.VI) program ikonja
A.22. ábra - A másodrendű tag modelljének létrehozása (CD Construct Special TF Model.VI) program ikonja


A másodrendű tag modelljének létrehozása (CD Construct Special TF Model.VI) program segítség (Help) információs ablaka
A.23. ábra - A másodrendű tag modelljének létrehozása (CD Construct Special TF Model.VI) program segítség (Help) információs ablaka


A.1.1.5. A jelet időben Pade közelítéssel késleltető rendszer (PTh) átviteli függvényének létrehozása

Az időbeni késleltető rendszer átviteli függvénye a következő alakú:

 

(A.5)

ahol

 

T h

az egytárolós rendszer késleltetése [idő dimenzió]

Az időbeni késleltető rendszer átviteli függvényének egy közelítő formulája az ún. Pade approximációs formula, amely a következő alakú:

 

(A.6)

Ezt az algoritmust alkalmazza az időbeni késleltetést megvalósító rendszer átviteli függvénye megadott n érték esetén.

Válasszuk ki a Speciális átviteli függvény létrehozása (CD Construct Special TF Model.VI) program polimorf választó menüjéből a menüpontot, hogy kijelöljük az időbeni késleltetést megvalósító rendszert!

Az időbeni késleltetést megvalósító tag modelljének létrehozása (CD Construct Special TF Model.VI) program ikonja
A.24. ábra - Az időbeni késleltetést megvalósító tag modelljének létrehozása (CD Construct Special TF Model.VI) program ikonja


Az időbeni késleltetést megvalósító tag modelljének létrehozása (CD Construct Special TF Model.VI) program segítség (Help) információs ablaka
A.25. ábra - Az időbeni késleltetést megvalósító tag modelljének létrehozása (CD Construct Special TF Model.VI) program segítség (Help) információs ablaka


A.1.2. Modell-információk (Model Information) alpaletta

Ebben az alpalettában információt kapunk az alkalmazott átviteli függvény és/illetve állapottér modell paramétereiről.

A Modell-információ (Model Information) alpaletta
A.26. ábra - A Modell-információ (Model Information) alpaletta


A VI-ok alkalmazásával beállíthatjuk és/vagy lekérdezhetjük a lineáris rendszermodellek paramétereit és a rendszermodelljének elnevezését. A modell-információk között szerepelnek a rendszermodell paraméterei - a rendszer-késleltetési időtartamok, a rendszerdimenziók (számláló, nevező fokszámok, rendszermátrix dimenziók), a mintavételezési időtartam valamint a bemenetek, kimenetek és az állapotok elnevezései.

A.1.3. Modell-átalakítás (Model Conversion) alpaletta

Ebben a alpalettában lehetőségünk van arra, hogy a rendszermodell-leírás egyik formájáról másik leírási alakra transzformáljuk át a rendszermodellt.

A Modell-átalakítás (Model Conversion) alpaletta
A.27. ábra - A Modell-átalakítás (Model Conversion) alpaletta


A VI-ok alkalmazásával lehetőségünk van arra, hogy átalakítsuk a rendszermodellt az egyik leírási alakról egy másik alakra, időben folytonos leírású modellből mintavételes modellt hozzunk létre.

Ebben a alpalettában található VI-ok segítségével lehetőségünk van a Rendszertervezés modulban létrehozott modelleket átalakítani a Szimulációs modulban alkalmazható modellekké, ezen kívül a visszaalakítást is megvalósíthatjuk.

A modell átalakításhoz leggyakrabban használt VI-ok

 

CD Convert to State-Space Model.vi

 

CD Convert to Transfer Function Model.vi

 

CD Convert Continuous to Discrete.vi

Ezeket és még néhány VI-t a következőkben ismertetjük.

A.1.3.1. Modell átalakítása állapottér modell alakra (Convert to State-Space Models.vi)

A Modell átalakítása állapottér modell alakra (CD Convert to State-Space Model.vi) program ikonja
A.28. ábra - A Modell átalakítása állapottér modell alakra (CD Convert to State-Space Model.vi) program ikonja


A Modell átalakítása állapottér modell alakra (CD Convert to State-Space Model.vi) program segítség (Help) információs ablaka
A.29. ábra - A Modell átalakítása állapottér modell alakra (CD Convert to State-Space Model.vi) program segítség (Help) információs ablaka


Mintapélda: Átviteli függvény (Transfer Function) alakból állapottér modell (State Space Model) létrehozása numerikus adatokkal

Átviteli függvény alakból állapottér modell létrehozása blokkdiagram
A.30. ábra - Átviteli függvény alakból állapottér modell létrehozása blokkdiagram


Átviteli függvény alakból állapottér modell létrehozása front panel
A.31. ábra - Átviteli függvény alakból állapottér modell létrehozása front panel


A.1.3.2. Modell átalakítása átviteli függvény alakra (Convert to Transfer Function Model.vi)

Modell átalakítás átviteli függvény alakra (CD Convert to Transfer Function Model.vi) program ikonja
A.32. ábra - Modell átalakítás átviteli függvény alakra (CD Convert to Transfer Function Model.vi) program ikonja


Modell átalakítás átviteli függvény alakra (CD Convert to Transfer Function Model.vi) program segítség (Help) információs ablaka
A.33. ábra - Modell átalakítás átviteli függvény alakra (CD Convert to Transfer Function Model.vi) program segítség (Help) információs ablaka


Mintapélda: Állapottér modell (State Space Model) alakból átviteli függvény (Transfer Function) létrehozása numerikus adatokkal.

Állapottér modell alakból átviteli függvény létrehozása blokkdiagram
A.34. ábra - Állapottér modell alakból átviteli függvény létrehozása blokkdiagram


Állapottér modell alakból átviteli függvény létrehozása front panel
A.35. ábra - Állapottér modell alakból átviteli függvény létrehozása front panel


A.1.3.3. Időben folytonos modell átalakítása mintavételes modellé (Convert Continuous to Discrete.vi)

Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal (CD Convert Continuous to Discrete.vi) program ikonja
A.36. ábra - Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal (CD Convert Continuous to Discrete.vi) program ikonja


Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal (CD Convert Continuous to Discrete.vi) program segítség (Help) információs ablaka
A.37. ábra - Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal (CD Convert Continuous to Discrete.vi) program segítség (Help) információs ablaka


Mintapélda: Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal

Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal blokkdiagram
A.38. ábra - Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal blokkdiagram


Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal front panel
A.39. ábra - Időben folytonos modell átalakítása mintavételes állapottér függvény alakra adott mintavételi időtartammal front panel


A.1.4. Modell-összekapcsolás (Model Interconnection) alpaletta

Ebben az alpalettában elhelyezett alprogramokkal lehetőségünk arra van, hogy a létrehozott rendszermodelleket tetszőleges topológiával összekapcsoljuk, és így tetszőleges rendszerstruktúrát hozzunk létre.

Modell összekapcsolás (Model Interconnection) alpaletta
A.40. ábra - Modell összekapcsolás (Model Interconnection) alpaletta


A modell összekapcsolás (Model Interconnection) alpaletta VI-jait arra használjuk, hogy a különböző típusú lineáris rendszereket összekapcsoljuk egymással.

A kisméretű alapmodellek összekapcsolásával egy nagy rendszermodellt hozhatunk létre.

A modell összekapcsoláshoz leggyakrabban használt VI-ok

 

CD Parallel.vi

 

CD Series.vi

 

CD Unit Feedback.vi

Ezeket VI-okat a következőkben ismertetjük.

A.1.4.1. Modellek párhuzamos kapcsolása (CD Parallel.vi)

Modellek párhuzamos kapcsolása (CD Parallel.vi) program ikonja
A.41. ábra - Modellek párhuzamos kapcsolása (CD Parallel.vi) program ikonja


Modellek párhuzamos kapcsolása (CD Parallel.vi) program segítség (Help) információs ablaka
A.42. ábra - Modellek párhuzamos kapcsolása (CD Parallel.vi) program segítség (Help) információs ablaka


Mintapélda: Modellek párhuzamos kapcsolása.

Modellek párhuzamos kapcsolása blokkdiagram
A.43. ábra - Modellek párhuzamos kapcsolása blokkdiagram


Modellek párhuzamos kapcsolása front panel
A.44. ábra - Modellek párhuzamos kapcsolása front panel


A.1.4.2. Modellek soros kapcsolása (CD Series.vi)

Modellek soros kapcsolása (CD Series.vi) program ikonja
A.45. ábra - Modellek soros kapcsolása (CD Series.vi) program ikonja


Modellek soros kapcsolása (CD Series.vi) program segítség (Help) információs ablaka
A.46. ábra - Modellek soros kapcsolása (CD Series.vi) program segítség (Help) információs ablaka


Mintapélda: Modellek soros kapcsolása

Modellek soros kapcsolása blokkdiagram
A.47. ábra - Modellek soros kapcsolása blokkdiagram


Modellek soros kapcsolása front panel
A.48. ábra - Modellek soros kapcsolása front panel


A.1.4.3. Modellek visszacsatolt összekapcsolása egységnyi visszacsatolási tényezővel (CD Unit Feedback.vi)

Modellek visszacsatolt összekapcsolása (CD Feedback.vi) program ikonja
A.49. ábra - Modellek visszacsatolt összekapcsolása (CD Feedback.vi) program ikonja


Modellek visszacsatolt összekapcsolása (CD Feedback.vi) program segítség (Help) információs ablaka
A.50. ábra - Modellek visszacsatolt összekapcsolása (CD Feedback.vi) program segítség (Help) információs ablaka


Mintapélda:  Modellek visszacsatolt összekapcsolása.

Modellek visszacsatolt összekapcsolása blokkdiagram
A.51. ábra - Modellek visszacsatolt összekapcsolása blokkdiagram


Modellek visszacsatolt összekapcsolása front panel
A.52. ábra - Modellek visszacsatolt összekapcsolása front panel


A.2. A modell vizsgálata időtartományban és frekvenciatartományban

A dinamikus rendszermodell elkészítése után időtartományban illetve frekvenciatarto­mányban készíthetünk szimulációs futtatásokat.

A Rendszertervezés (Control Design) paletta olyan alpalettákat tartalmaz, amelyek az előkészített modell analízisét segítik, ezek a következők:

  • Modell időtartománybeli vizsgálata (Time Response)

  • Modell frekvenciatartománybeli vizsgálata (Frekvency Response)

  • Modell dinamikus tulajdonságai (Dynamic Characteristic)

A Rendszertervezés (Control Design) paletta
A.53. ábra - A Rendszertervezés (Control Design) paletta


Az (A.53. ábra - A Rendszertervezés (Control Design) paletta) ábrán a modell időtartománybeli és frekvenciatartománybeli vizsgálatánál leggyakrabban használt alpalettákat láthatjuk, melyek ismertetését a következő alfejeztetek tartalmazzák.

A.2.1. Modell időtartománybeli vizsgálata (Time Response) alpaletta

Ebben a alpalettában elhelyezett programokkal tudjuk a korábban definiált dinamikus modellek időtartománybeli válaszfüggvényét meghatározni.

Időtartománybeli válaszfüggvény (Time Response) alpaletta
A.54. ábra - Időtartománybeli válaszfüggvény (Time Response) alpaletta


A dinamikus modell időtartománybeli analíziséhez leggyakrabban használt VI-ok:

 

CD Step Response.vi

 

CD Impulse Resonse.vi

 

CD Initial Response.vi

 

CD Linear Simulation.vi

A.2.1.1. Egységugrás bemenetre adott válaszfüggvény (CD Step Response.vi)

Az elkészített rendszermodell egységugrás bemenetre adott válaszfüggvényét a CD Step Response.vi program segítségével tudjuk meghatározni.

Az egységugrás bemenetre adott válaszfüggvény (CD Step Response.vi) program ikonja
A.55. ábra - Az egységugrás bemenetre adott válaszfüggvény (CD Step Response.vi) program ikonja


Az egységugrás bemenetre adott válaszfüggvény (CD Step Response.vi) program segítség (Help) információs ablaka
A.56. ábra - Az egységugrás bemenetre adott válaszfüggvény (CD Step Response.vi) program segítség (Help) információs ablaka


Bár az egységugrásra adott válaszfüggvénynél az ikon rajza alapján úgy látszik, hogy csak állapottér leírású rendszereket képes fogadni, de ez így nem igaz. Ez az ikon, hasonlóan a továbbiakban bemutatandó programokhoz, úgynevezett polimorf tulajdonságú, azaz a bemenet „felismeri”, hogy milyen alakban leírt modellformát kapcsolunk hozzá, és ennek struktúráját és paramétereit alkalmazza futáskor.

Mintapélda: Egységugrás bemenetre adott válaszfüggvény (időfüggvény) meghatározása:

Az egységugrás bemenetre adott válaszfüggvény (időfüggvény) meghatározása blokkdiagram
A.57. ábra - Az egységugrás bemenetre adott válaszfüggvény (időfüggvény) meghatározása blokkdiagram


A blokkdiagramon láthatók az időparaméterek (Time Range), amelyek bemeneti adatként meghatározzák a szimuláció kezdő időpontját (t0), a szimuláció lépésközét (dt), illetve a szimuláció befejezésének időpontját (tf). A clusterben megjelenő negatív (-1) időadatok azt jelentik, hogy ebben az esetben a modell paraméterei alapján a program határozza meg, hogy milyen hosszúságú szimulációs időtartamot igényel az egységugrás bementre adott válaszfüggvény. Ez az érték kb. (5 - 8)*Tmax, ahol Tmax a modell nevezőjében szereplő legnagyobb időállandó. Ebben az esetben a szimulációhoz alkalmazott lépésközt is automatikusan határozza meg a program.

Ha megadott lépésközzel, kezdő és befejezési időponttal szeretnénk meghatározni a kimeneti jelet, akkor ezeket az értékeket beírva a „Time Range” cluster megfelelő elemébe, a program ezekkel a bemeneti értékekkel fut.

Egységugrás bemenetre adott válaszfüggvény (időfüggvény) meghatározása front panel
A.58. ábra - Egységugrás bemenetre adott válaszfüggvény (időfüggvény) meghatározása front panel


A.2.1.2. Egységimpulzus bemenetre adott válaszfüggvény (CD Impulse Response.vi)

Az elkészített rendszermodell egységimpulzus bemenetre adott válaszfüggvényét a CD Impulse Response.vi program segítségével tudjuk meghatározni. (Az egységimpulzus alatt az egységnyi területű impulzus időfüggvényt értjük.)

Az egységimpulzus bemenetre adott válaszfüggvény (CD Impulse Response.vi) program ikonja
A.59. ábra - Az egységimpulzus bemenetre adott válaszfüggvény (CD Impulse Response.vi) program ikonja


Az egységimpulzus bemenetre adott válaszfüggvény (CD Impulse Response.vi) program segítség (Help) információs ablaka
A.60. ábra - Az egységimpulzus bemenetre adott válaszfüggvény (CD Impulse Response.vi) program segítség (Help) információs ablaka


Mintapélda: Egységimpulzus bemenetre adott válaszfüggvény (időfüggvény) meghatáro­zása.

Egységimpulzus bemenetre adott válaszfüggvény (időfüggvény) meghatározása blokkdiagram
A.61. ábra - Egységimpulzus bemenetre adott válaszfüggvény (időfüggvény) meghatározása blokkdiagram


Egységimpulzus bemenetre adott válaszfüggvény (időfüggvény) meghatározása front panel
A.62. ábra - Egységimpulzus bemenetre adott válaszfüggvény (időfüggvény) meghatározása front panel


A.2.1.3. Kezdeti értékkel rendelkező rendszer válaszfüggvénye (CD Initial Response.vi)

Az elkészített rendszermodell kezdeti értékkel rendelkező válaszfüggvényét tudjuk a CD Initial Response.vi program segítségével meghatározni.

A bementi jel ennél az időfüggvény számításnál nulla (0) értékű. A futtatással kapott időfüggvény azt határozza meg, hogy adott kezdeti értékek (állapottér modell állapotainak kezdeti értékei) mellett milyen végértékre áll be modell kimeneti jele „végtelen idő” eltelte után. Ezzel a vizsgálattal tudjuk a modell stabilitását meghatározni, megadott kezdeti feltételek esetén.

A kezdeti értékkel rendelkező rendszer válaszfüggvényének (CD Initial Response.vi) program ikonja
A.63. ábra - A kezdeti értékkel rendelkező rendszer válaszfüggvényének (CD Initial Response.vi) program ikonja


A kezdeti értékkel rendelkező rendszer válaszfüggvényének (CD Initial Response.vi) program segítség (Help) információs ablaka
A.64. ábra - A kezdeti értékkel rendelkező rendszer válaszfüggvényének (CD Initial Response.vi) program segítség (Help) információs ablaka


Mintapélda: A kezdeti értékkel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása.

A kezdeti értékkel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása blokkdiagram
A.65. ábra - A kezdeti értékkel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása blokkdiagram


A mintapéldában szereplő rendszer egy nevezőbeli gyökkel rendelkezik, így az állapottér leírásban egy állapota van, amelynek beállíthatjuk a kezdeti értékét.

A kezdeti értékkel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása front panel
A.66. ábra - A kezdeti értékkel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása front panel


A.2.1.4. Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvénye (CD Linear Simulation.vi)

Az elkészített rendszermodell válaszfüggvényét tudjuk meghatározni tetszőleges bemeneti időfüggvény jellel a CD Linear Simulation.vi program segítségével.

Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének meghatározása (CD Linear Simulation.vi) program ikonja
A.67. ábra - Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének meghatározása (CD Linear Simulation.vi) program ikonja


Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének meghatározása (CD Linear Simulation.vi) program segítség (Help) információs ablaka
A.68. ábra - Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének meghatározása (CD Linear Simulation.vi) program segítség (Help) információs ablaka


Mintapélda: Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása.

Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása blokkdiagram
A.69. ábra - Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása blokkdiagram


A tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének meghatározása (CD Linear Simulation.vi) program bemeneti adatként egy olyan vektort kér, amely minden egyes számítási időpillanatban megadja a (bemeneti) jel értékét. Ilyen jelet előállíthatunk program segítségével, mint ahogy az a mintapéldában is látható, vagy minden egyes számítási időpillanatbeli értéket manuálisan is meghatározhatunk.

A Négyszögjel (Square Wave) bemenettel rendelkező szimulációs rész 400 bemeneti értéket határoz meg (samples) 0,005Hz frekvenciával. A szimulációs adatokat az időlépés (Delta t) paraméterrel megadott helyeken írjuk ki.

A második modellben szereplő Alapfüggvény Generátor (Basic Function Generator) a jeltípus (Signal type) megadása mellett a jel periódusidejét (Waveform Period (s)) kéri bemeneti adatként, és külön bemenet (sampling info) adja meg, hogy a számítást milyen mintavéte­lezési frekvenciával (Fs) és hány mintavételi pontban (#s) határozzuk meg.

Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása front panel
A.70. ábra - Tetszőleges bemeneti időfüggvény jellel rendelkező rendszer válaszfüggvényének (időfüggvény) meghatározása front panel


A.2.2. Dinamikus rendszermodell frekvenciatartománybeli vizsgálata (Frequency Response) alpaletta

Ebben az alpalettában elhelyezett programokkal tudjuk a korábban definiált dinamikus modellek frekvenciatartománybeli tulajdonságait meghatározni.

Modell létrehozása (Model Construction) alpaletta
A.71. ábra - Modell létrehozása (Model Construction) alpaletta


A dinamikus rendszermodell frekvenciatartománybeli analíziséhez leggyakrabban használt VI-ok:

 

CD Bode.vi

 

CD Nyquist.vi

 

CD Gain and Phase Margin.vi

A.2.2.1. Dinamikus rendszermodell Bode frekvenciafüggvénye (CD Bode.vi)

Az elkészített rendszermodell Bode frekvenciafüggvényét a CD Bode.vi program segítségével tudjuk meghatározni.

A Bode frekvenciafüggvény (CD Bode.vi) program ikonja
A.72. ábra - A Bode frekvenciafüggvény (CD Bode.vi) program ikonja


A Bode frekvenciafüggvény (CD Bode.vi) program segítség (Help) információs ablaka
A.73. ábra - A Bode frekvenciafüggvény (CD Bode.vi) program segítség (Help) információs ablaka


Mintapélda: Dinamikus rendszer Bode frekvenciafüggvényének meghatározása.

A Bode frekvenciafüggvény meghatározása blokkdiagram
A.74. ábra - A Bode frekvenciafüggvény meghatározása blokkdiagram


A Bode frekvenciafüggvény meghatározása front panel
A.75. ábra - A Bode frekvenciafüggvény meghatározása front panel


A.2.2.2. Dinamikus rendszermodell Nyquist frekvenciafüggvénye (CD Nyquist.vi)

Az elkészített rendszermodell Nyquist frekvenciafüggvényét a CD Nyquist.vi program segítségével tudjuk meghatározni.

A Nyquist frekvenciafüggvény (CD Nyquist.vi) program ikonja
A.76. ábra - A Nyquist frekvenciafüggvény (CD Nyquist.vi) program ikonja


A Nyquist frekvenciafüggvény (CD Nyquist.vi) program segítség (Help) információs ablaka
A.77. ábra - A Nyquist frekvenciafüggvény (CD Nyquist.vi) program segítség (Help) információs ablaka


Mintapélda: Dinamikus rendszer Nyquist frekvenciafüggvényének meghatározása.

A Nyquist frekvenciafüggvény meghatározása blokkdiagram
A.78. ábra - A Nyquist frekvenciafüggvény meghatározása blokkdiagram


A Nyquist frekvenciafüggvény program bemeneti adataként megadhatjuk a számítás frekvenciahatárait. Alapértelmezésben a kezdeti frekvencia (Initial freqency) és a befejezési frekvencia (Final freqency) értéke negatív érték (-1). Ezek a számértékek nem valós értékek, így ebben az esetben a program automatikusan választ a rendszermodell paraméterei (nevezőbeli gyökei) alapján frekvenciahatárokat. Ebben az esetben a program meghatározza a Nyquist diagram paramétereit –végtelen (-Inf) frekvenciától +végtelen (+Inf) frekvenciáig. Ahogy az ábrán is látható, a kezdeti frekvencia értékét nullára állítva csak a pozitív frekvenciához tartozó frekvenciafüggvényt határozzuk meg.

A Nyquist frekvenciafüggvény meghatározása front panel
A.79. ábra - A Nyquist frekvenciafüggvény meghatározása front panel


A.2.2.3. Dinamikus rendszermodell Bode frekvenciafüggvényének erősítési és fázistartaléka (CD Gain and Phase Margin.vi)

Az elkészített rendszermodell Bode frekvenciafüggvényének erősítési és fázistartalékát a CD Gain and Phase Margin.vi program segítségével tudjuk meghatározni.

A Bode frekvenciafüggvényének erősítés és fázis tartaléka (CD Gain and Phase Margin.vi) program ikonja
A.80. ábra - A Bode frekvenciafüggvényének erősítés és fázis tartaléka (CD Gain and Phase Margin.vi) program ikonja


Bode frekvenciafüggvényének erősítés és fázis tartaléka (CD Gain and Phase Margin.vi) program segítség (Help) információs ablaka
A.81. ábra - Bode frekvenciafüggvényének erősítés és fázis tartaléka (CD Gain and Phase Margin.vi) program segítség (Help) információs ablaka


Mintapélda: Dinamikus rendszer Bode frekvenciafüggvényének erősítés és fázistartalék  meghatározása.

A Bode frekvenciafüggvényének erősítés és fázistartalékának meghatározása blokkdiagram
A.82. ábra - A Bode frekvenciafüggvényének erősítés és fázistartalékának meghatározása blokkdiagram


A Bode frekvenciafüggvényének erősítés és fázistartalékának meghatározása front panel
A.83. ábra - A Bode frekvenciafüggvényének erősítés és fázistartalékának meghatározása front panel


A mintapéldában egy PID szabályozó és egy egytárolós (PT1) rendszer felnyitott körének Bode diagramját valamint az amplitúdó és fázistartalékát láthatjuk. A amplitúdó és fázistartalék dimenziója fok (°).

A legalsó diagramon a zárt szabályozási kör átviteli és átmeneti függvényét láthatjuk.

A.2.3. Modell dinamikus tulajdonságai (Dynamic Characteristic) alpaletta

Ebben a alpalettában elhelyezett programokkal tudjuk a korábban definiált dinamikus modellek számláló- és nevezőbeli gyökeit meghatározni.

A Modell dinamikus tulajdonságai (Dynamic Characteristic) alpaletta
A.84. ábra - A Modell dinamikus tulajdonságai (Dynamic Characteristic) alpaletta


A dinamikus rendszermodell tulajdonságainak meghatározásához leggyakrabban alkalmazott VI-ok

 

CD Pole-Zero Map.vi

 

CD DC Gain.vi

A.2.3.1. Rendszermodell pólusainak és zérusainak elhelyezkedése (CD Pole-Zero Map.vi)

Az elkészített rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározását végzi a CD Pole-Zero Map.vi program:

A rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározását végző (CD Pole-Zero Map.vi) program ikonja
A.85. ábra - A rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározását végző (CD Pole-Zero Map.vi) program ikonja


A rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározását végző (CD Pole-Zero Map.vi) program segítség (Help) információs ablaka
A.86. ábra - A rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározását végző (CD Pole-Zero Map.vi) program segítség (Help) információs ablaka


Mintapélda: A dinamikus rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározása.

A rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározása blokkdiagram
A.87. ábra - A rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározása blokkdiagram


A rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározása front panel
A.88. ábra - A rendszermodell számlálóban és nevezőben elhelyezkedő gyökhelyeinek meghatározása front panel


A.2.3.2. Rendszermodell állandósult állapotbeli erősítése (CD DC Gain.vi)

Az elkészített rendszermodell állandósult állapotban megvalósuló erősítésének értékét határozza meg a CD DC Gain.vi program.

A rendszermodell állandósult állapotban megvalósuló erősítésének értékét meghatározó (CD Pole-Zero Map.vi) program ikonja
A.89. ábra - A rendszermodell állandósult állapotban megvalósuló erősítésének értékét meghatározó (CD Pole-Zero Map.vi) program ikonja


A rendszermodell állandósult állapotban megvalósuló erősítésének értékét meghatározó (CD Pole-Zero Map.vi) program segítség (Help) információs ablaka
A.90. ábra - A rendszermodell állandósult állapotban megvalósuló erősítésének értékét meghatározó (CD Pole-Zero Map.vi) program segítség (Help) információs ablaka


Mintapélda: A dinamikus rendszermodell állandósult állapotban megvalósuló erősítésének értékét meghatározó program.

A rendszermodell állandósult állapotban megvalósuló erősítés értékének meghatározása blokkdiagram
A.91. ábra - A rendszermodell állandósult állapotban megvalósuló erősítés értékének meghatározása blokkdiagram


A mintapéldában egy bemenetű és egy kimenetű folytonos átviteli függvény állandósult állapotbeli erősítésének meghatározását végeztük el. A program az eredményt egy mátrixban adja meg, aminek az oka, hogy több bemenetű és több kimenetű rendszerek esetén is alkalmazható, és  ilyenkor minden bemenet és minden kimenet között meghatározza az állandósult erősítés értékeket.

A rendszermodell állandósult állapotban megvalósuló erősítés értékének meghatározása front panel
A.92. ábra - A rendszermodell állandósult állapotban megvalósuló erősítés értékének meghatározása front panel


B. függelék - Dinamikus rendszerek szimulációs eszközei – a LabVIEW Simulation Module

Tartalom
B.1. Modell létrehozása
B.1.1. Jelgenerátorok (Signal Generation)
B.1.1.1. Step Signal Generation (Ugrás függvény)
B.1.1.2. Pulse Signal (Négyszögjel függvény)
B.1.1.3. Ramp Signal (Sebességugrás függvény)
B.1.1.4. Signal Generator (Jelgenerátor)
B.1.1.5. Chirp Signal (Végigsöprő szinusz jelgenerátor)
B.1.1.6. Simulation Time (A szimuláció aktuális időpontja)
B.1.2. Jelaritmetika (Signal Arithmetics)
B.1.2.1. A Gain (Erősítés függvény)
B.1.2.2. A Summation (Összegzés függvény)
B.1.2.3. A Multiplication (Szorzás függvény)
B.1.3. Jelmegjelenítési elemek (Graph Utilities)
B.1.3.1. Sim Time Waveform (Szimulációs jel időfüggvényének kirajzolása)
B.1.3.2. Buffer XY Graph (az XY grafikon adatainak tárolása függvény)
B.1.4. Folytonos lineáris rendszerek (Continuous Linear Systems)
B.1.4.1. Integrator (Idő szerinti integrálás függvény)
B.1.4.2. Derivative (Idő szerinti differenciálási függvény)
B.1.4.3. Transport Delay (Jelkésleltetési függvény)
B.1.4.4. State Space (Állapottér modell)
B.1.4.5. Transfer Function (Átviteli függvény modell)
B.1.5. Folytonos nemlineáris rendszerek (Nonlinear Systems)
B.1.5.1. Dead Zone (Kotyogás függvény)
B.1.5.2. Friction (Súrlódás függvény)
B.1.5.3. Quantizer (Érték-diszkretizáló függvény)
B.1.5.4. Rate Limiter (Sebességkorlát függvény)
B.1.5.5. Relay (Relé függvény)
B.1.5.6. Saturation (Telítődés függvény)
B.1.5.7. Switch (Kapcsoló függvény)
B.1.6. Mintavételes lineáris rendszerek (Discrete Linear Systems)
B.1.6.1. Discrete Unit Delay (Mintavételes egységnyi késleltetés függvény)
B.1.6.2. Discrete Zero-Order Hold (Mintavételes nulladrendű tartó függvény)
B.1.6.3. Discrete First-Order Hold (Mintavételes elsőrendű tartó függvény)
B.1.6.4. Discrete State-Space (Mintavételes állapottér modell)
B.1.6.5. Discrete Transfer Function (Mintavételes impulzus-átviteli függvény modell)
B.1.7. Táblázattal megadott szimulációs paraméterek (Lookup Tables)
B.1.7.1. Lookup Table 1D (Egydimenziós táblázati függvény)
B.1.7.2. Lookup Table 2D (Kétdimenziós táblázati függvény)
B.2. Modellelemek összekapcsolása
B.3. Almodell (Subsytem) létrehozása
B.4. A szimulációs modell vizsgálata időtartományban
B.4.1. A modell vizsgálata időtől független (off-line) futtatási módban
B.4.2. A modell vizsgálata időtől függő (on-line) futtatási módban

A LabVIEW program számos modult tartalmaz, amelyekkel egyszerűbbé válik a folytonos és a mintavételes rendszerek irányítási tervezése. A programcsomagban a következő elemek találhatók:

  • Rendszertervezés (LabVIEW Control Design Module)

  • Szimulációs modul (LabVIEW Simulation Module)

  • MathScript Rt modul (LabVIEW MathScript RT Module)

  • Identifikációs eszköz (LabVIEW System Identification Toolkit)

  • PID szabályozó és Fuzzy szabályozó tervezése (LabVIEW PID and Fuzzy Logic Toolkit)

  • Matlab-LabVIEW szimulácós modell kapcsolati eszköz (LabVIEW Simulation Interface Toolkit)

Ebben a programismertetőben a Szimulációs modullal (LabVIEW Simulation Module) ismerkedünk meg.

A B.1. ábra - A Rendszertervezés és Szimuláció (Control Design & Simulation) paletta bemutatja a Rendszertervezés és Szimuláció (Control Design & Simulation) palettát a LabVIEW-ban

A Rendszertervezés és Szimuláció (Control Design & Simulation) paletta
B.1. ábra - A Rendszertervezés és Szimuláció (Control Design & Simulation) paletta


Ebben az ismertetőben elsősorban a folytonos és mintavételes rendszerek átviteli függvényének és állapottér leírásának elemeit kívánjuk bemutatni.

Ha a felsorolt programcsomagok utasításait szeretné részletesen megismerni az Olvasó, akkor tanulmányozza a programcsomagokat ismertető kézikönyveket, amelyek megtalálhatók az ni.com/manuals Internet címen.

A B.2. ábra - A Szimuláció (Simulation) paletta a Szimuláció (Simulation) palettát mutatja be.

A Szimuláció (Simulation) paletta
B.2. ábra - A Szimuláció (Simulation) paletta


Az elkövetkező fejezetekben bemutatjuk a szimulációs eszközök, alpalettáiban elhelyezett műveleteket, amelyek segítségével modelldefiniálást, illetve a modell adott időtartományban történő szimulációját valósíthatjuk meg.

A Szimuláció (Simulation) paletta elemeinek alkalmazásával tudunk valós időben mérési adatok alapján történő beavatkozást meghatározni.

A Szimuláció (Simulation) paletta elemeiből felépített szimulációs programot két üzemmódban futtathatjuk:

  • Amikor a szimulációs időlépés végrehajtási ideje nincs szinkronizálva a számítógép valós belső óragenerátorához , a szimuláció olyan sebességgel zajlik, mint amit az adott számítógép működési sebessége lehetővé tesz (processzor-órajel, felhasználható memória, számítógép-architektúra)

  • Amikor a szimulációt pontosan annyi időként futtatjuk le, mint a szimulációs időlépés. Ezt nevezzük valós idejű (real time) futásnak, ami azt jelenti, hogy minden művelet pontosan ugyanannyi ideig történik, mint ahogy az a valós rendszerben történne.

A Szimuláció (Simulation) paletta elemeinek alkalmazásával elsősorban ilyen, valós futási idejű (real time) alkalmazásokat tudunk megvalósítani, de természetesen a szimulációs modellek futhatnak úgynevezett időtartam-független (off-line) futási állapotban is, amikor a számítógép által megvalósított szimulációs sebesség eltér a valós rendszer sebességétől.

Az időtartam-független futási állapotban történő futtatásnak is van jelentősége, amikor egy valós időben gyorsan lezajló folyamatot részletesebben szeretnénk tanulmányozni, ezért kis lépésköz alkalmazásával „lelassítjuk a folyamatot”. Más esetben a rendkívül hosszú ideig zajló valós folyamatot a szimulációval „felgyorsítjuk”, és a hosszú, valós (napokig, évekig tartó) időtartamnak megfelelő vizsgálatot néhány másodperc alatt elvégezhetünk.

B.1. Modell létrehozása

A Szimuláció (Simulation) paletta bal felső sarkában látható (B.3. ábra - Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra a Szimuláció (Simulation) palettán) a While ciklushoz hasonló, a Control & Simulation Loop (Irányítás és szimulációs hurok) elnevezésű struktúra. Ez a struktúra lesz a későbbi szimulációs modell határvonala - ebben a struktúrában elhelyezett szimulációs elemek (LabVIEW VI-ok) a szimulációs keret paramétereivel fognak futni.

Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra a Szimuláció (Simulation) palettán
B.3. ábra - Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra a Szimuláció (Simulation) palettán


Nézzük meg, hogyan is néz ki egy Control & Simulation Loop struktúra, és melyek a tulajdonságai (attribute)

Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra a diagram panelen
B.4. ábra - Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra a diagram panelen


Az Irányítás és szimulációs hurok ( Control & Simulation Loop ) struktúra bal oldalán találhatók azok a szimulációs paraméterek (attribútumok), amelyek meghatározzák, hogy a szimuláció

  • milyen kezdeti időponttól induljon,

  • milyen időtartamig tartson, azaz mi legyen a szimuláció befejezési időpontja,

  • mekkora legyen a szimulációs időlépés,

  • milyen integrálási metódust alkalmazzon a szimulációs modellben található integráló elemek számításához (ebben a választásban az is megjelenik, hogy azonos lépésközű vagy változó lépésközű integrálási metódust alkalmazzon),

  • milyen nagyságú lehet az összes integrátorra a relatív és az abszolút hiba nagysága a szimuláció alatt,

  • mi történjen, ha a szimuláció egy időlépésének kiszámításához szükséges időtartam hosszabb (lett), mint az előírt szimulációs időlépés hossza.

Ehhez hasonló és még számos egyéb paraméter beállítására van lehetőség az Irányítás és szimulációs hurok ( Control & Simulation Loop ) struktúrába történő belépés előtt.

Természetesen a sok-sok bemeneti paramétert nem kell minden egyes szimulációs hurok futtatásakor egyenként megadni, hanem lehetőség van a struktúra keretére történő jobb egérgomb kattintással, majd a „ Configurate Simulation Parameters” (A szimuláció paramétereinek beállítása) menüpont kiválasztásával megnyitni a struktúra paramétereinek beállítását biztosító ablakot.

Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra kiszolgálását biztosító ablak (szimulációs paraméterek) a diagram panelon
B.5. ábra - Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra kiszolgálását biztosító ablak (szimulációs paraméterek) a diagram panelon


Az ablakban megjelenő fülek közül a szimulációs paraméterek (Simulation Parameters) fület kiválasztva elvégezhetjük a Control & Simulation Loop szimulációja alatt érvényes paraméterek beállítását. Ezek a beállított paraméterek - a szimulációs modell tárolásakor - a modellel és annak paramétereivel együtt tárolódnak.

Lássuk, hogy milyen paramétereket lehet beállítani a szimulációs paraméterek ablakban!

B.1. táblázat - Szimulációs paraméterek (Simulation Parameters)

#

Elnevezés

Feladat

1.

Szimulációs paraméterek

(Simulation Parameters)

A szimulációs alapparaméterek beállítását tudjuk ebben az ablakban beállítani.

2.

Kezdeti időpont (s)

( Initial Time (s) )

A szimuláció kezdő időpontja, másodperc (secundum) dimenzióval.

3.

A szimuláció befejezésének időpontja (s)

( Final Time (s) )

A szimuláció befejeződésének időpontja, másodperc (secundum) dimenzióval.

4.

Differenciálegyenlet megoldási metódus

( ODE Solver =O rdinary D ifferential E quation Solver )

A differenciálegyenlet megoldásnál a következő integrálási metódusokat alkalmazhatjuk. Zárójelben (variable) megjelöléssel szerepelnek a változó lépésközű eljárások. Az eredmények kiírása ezeknél is a megadott szimulációs lépésköznek megfelelő időpontonként történik.

5.

Nem megfelelő alakú számérték ( NaN = N ot A N umber) vagy végtelen érték ( Inf = Inf inite) ellenőrzésése a szimuláció során. ( Nan/Inf Check )

Ezzel a kapcsolóval (jelölőnégyzettel) lehetőségünk van, hogy előírjuk a szimulációs program megállítását, ha valamelyik szimulált érték nem megfelelő alakú számérték (pl. komplex szám valós szám helyett) vagy ha szimulált érték végtelen nagyságú.

6.

Kezdeti időlépés méret [s]

( Initial Step Size (s) )

A szimuláció időlépésének kijelölt értéke másodperc [s] dimenzióban.

Nem változó lépésközű integrálásnál az integrálás ezzel a lépésközzel történik.

Változó lépésközű integrálásnál az eredmények kiírása ezzel a lépésköz mérettel történik.

Két lépésköz között pedig a kisebb lépésközzel – tehát pontosabban érték meghatározásával történik a szimuláció.

7.

Minimális lépésköz érték [s]

(Minimum Step Size (s))

Változó lépésközű integrálási eljárás esetén a lépésköz csökkentése, amely pontosabb számítást eredményez - eddig az értékig csökkenthető.

8.

Maximális lépésköz érték [s]

(Maximum Step Size (s))

Változó lépésközű integrálási eljárás esetén a lépésköz növelése, amely gyorsabb számítást eredményez, eddig az értékig növelhető.

9.

Relatív hiba []

(Relativ Tolerance)

Elméletben az abszolút hiba osztva a valódi értékkel . Miután azonban ezt nem ismerjük, helyére osztóként a helyes érték kerül.

10.

Abszolút hiba []

(Absolute Tolerance)

Elméletben a mért és a valódi érték közötti különbség . A gyakorlatban a valódi érték helyére a helyes érték kerül.

11.

Mintavételes (idő) lépésköz értéke [s]

(Discrete Step Size (s))

Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra biztosítja a folytonos rendszerek szimulációja mellett a mintavételes rendszerek adott mintavételi időtartammal történő futtatását is. A mintavételes rendszereket az Irányítás és szimulációs hurok az itt megadott mintavételezési (idő) lépésköz értékkel határozza meg.

A mintavételezési időtartam értékét tetszőlegesen választott értékre állíthatjuk be, ha nincs bekapcsolva a Mintavételes érték automatikus kiválasztása (Auto Discrete Time) kapcsoló.

A „tetszőlegesen választott érték” meghatározásánál, figyelembe kell venni, hogy a mintavételezési időnek minimálisan 10-szer nagyobbnak kell lennie, mint a szimuláció lépésközeként megjelenő legnagyobb érték.

Ha a Mintavételes érték automatikus kiválasztása (Auto Discrete Time) kapcsoló bekapcsolt állapotban van, akkor a mintavételi időtartam megegyezik a kezdeti időlépés mérettel (Initial Step Size (s)).

12.

Mintavételes érték automatikus kiválasztása

(Auto Discrete Time)

A mintavételi idő automatikus kiválasztása esetén a mintavételi idő kiválasztása a szimulációs rendszer paraméterei alapján történik.

Általános ökölszabályként megállapítható, hogy a mintavételezési időtartam általában a kezdeti időlépés méret [s] minimum 10-szerese.


A szimuláció paramétereinek beállítása ( Configurate Simulation Parameters ) ablak második fülén az időzítési paraméterek ( Timing Parameters ) helyezkednek el, ahol be lehet állítani a paramétereket a szimuláció valós idejű futtatásához.

Ha NEM valós idejű futtatást szeretnénk megvalósítani, akkor nem kell semmilyen paramétert beállítani ebben az ablakban!

Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra kiszolgálását biztosító ablak (időzítési paraméterek) a diagram panelon
B.6. ábra - Az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra kiszolgálását biztosító ablak (időzítési paraméterek) a diagram panelon


B.2. táblázat - Időzítési paraméterek (Timing Parameters)

#

Elnevezés

Feladat

11.

Időzítési paraméterek

( Timing Parameters )

Az időzítési paraméterek kiválasztását biztosító ablak.

12.

A szimulációs hurok szinkronizálása egy időalap-generátorhoz

( Syncronize Loop to Timing Source )

Ezzel a kiválasztó elemmel (jelölőnégyzettel) lehetőségünk van a szimuláció időparamétereinek értékét összekapcsolni a valós idejű futást biztosító időalap-generátorok egyikével.

Ha a kiválasztó elem kikapcsolt állapotban van , akkor a szimuláció a számítógép tulajdonságaival meghatározott maximális sebességgel fut (off-line futás).

Ha a kiválasztó elem bekapcsolt állapotban van , akkor a számítógép összerendeli a szimulációs lépésközt az időalap-generátorok egyikével, és a szimulációs lépésközt az időgenerátorral meghatározott értékre állítja.

13.

Az időalap-generátor típusa

( Source Type )

Az időalap-generátor egyszerű PC környezetben futó LabVIEW esetén 1 kHz értékű, ami azt jelenti, hogy a legkisebb megvalósítható időlépés 1 ms nagyságú.

Külső egység hozzákapcsolásával (külső RT (Real Time) rendszer) az időalap-generátorának frekvenciaértéke megnövelhető, mivel egy külső egységnek nem kell az operációs rendszert is futtatnia, csakis az elvégzendő mérési/beavatkozási feladattal foglakozhat. Az NI külső a PC-hez hozzákapcsolható rendszerekben ez a frekvencia 1MHz. Ez az időgenerátor már 1 mikroszekundumos mintavételi időtartamot is lehetővé tesz.

14.

Az időalap-generátor elnevezése

( Source )

A kiválasztott időalap-generátor elnevezése.

15.

A mintavételezés periódusideje

( Periode )

A szimuláció lépésközeként kiválasztott érték és a kiválasztott időalap-generátor periódusidejének szorzata.

Például, ha Periode=1000 és az időalap-generátor 1 kHz frekvenciájú (1 ms periódusidejű), akkor az így kialakított mintavételezési periódusidő 1 s nagyságú lesz.

16.

A mintavételezés periódusidejének eltolása

( Offset / Phase )

Több, ugyanazon VI-ban elhelyezett Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra számítási időpontjai közötti eltérést lehet ezzel a paraméterrel megadni.

Időben a két struktúra számítási időpontjai közötti eltérés a mintavételezés periódusidejének eltolása és a kiválasztott időalap-generátor periódusidejének szorzata.

17.

Prioritás

( Priority )

Több, ugyanazon VI-ban elhelyezett Irányítás és szimulációs hurok (Control & Simulation Loop) struktúra számítási sorrendjét lehet ezzel a paraméterrel megadni.

Nagyobb pozitív számérték nagyobb prioritást jelent!

18.

Határidő

( Deadline )

Megadja azt az időtartamot, amely alatt az Irányítás és szimulációs hurok (Control & Simulation Loop) struktúrának be kell fejeznie egy iterációt.

A Határidő értéke megegyezik a mintavételezés periódus idejével, ha nem változtatjuk meg az alapállapotként beállított -1 értéket.

A Határidő paraméter értékét a szimuláció kezdő (eltolással megnövelt) időpontjától számítjuk. A Határidő értékét a beírt számérték és az időalap-generátor periódusidejének szorzatával kapjuk meg.

19.

Időtúllépés [ms]

( Timeout (ms) )

Azt az időtartamot adja meg ms-ban, amelynek letelte után a program megszakítja a szimulációt, mert működési rendellenességet észlelt.

Az Időtúllépés paraméter beállításával tudjuk megvizsgálni, hogy az összekapcsolt berendezések az Időtúllépésnél kisebb idő alatt reagálnak az őket ért hatásra. Ha az Időtúllépés-értéknél hosszabb idő alatt sem reagálnak, akkor a szimulációs program futása megszakad.

Mi okozhatja ezt a problémát?

A szimulációs rendszer blokkjai között az irányítási feladat megoldása esetén mérési adatokat szolgáltató A/D, illetve számított adatokat analóg mennyiségekké alakító D/A átalakítók szerepelnek. Ezek működési meghibásodása „késleltetheti” a számítások adott ütemben történő elvégzését.

20.

Processzor kiválasztási mód

( Processor Mode )

A Processzor kiválasztási mód lehetséges értékei:

  • Automatic (Automatikus)

  • Manual (Kézi)

Automatikus processzor kiválasztás esetén a LABVIEW kiválasztja a számítógépben erőforrásként rendelkezésre álló processzorok egyikét, hogy hajtsa végre a szimulációs időzítési feladatokat. A feladat erőforrásigénye alapján több, lassú folyamat ugyanazt a processzort használhatja. Alapértéke = -2.

Kézi processzor kiválasztás esetén egy 0-tól 255-ig terjedő szám segítségével megadhatjuk, hogy a szimulációs hurok melyik processzoron fusson.

21.

A kiválasztott processzor sorszáma

( Processor )

Automatikus processzor kiválasztás esetén, alapértéke = -2.

Kézi processzor kiválasztás esetén 0-tól 255-ig beállított érték.


Miután létrehoztuk a szimuláció keretét, felépíthetjük a dinamikus rendszermodell szimulációs programját.

Ezt a szimulációs rendszert úgy tervezték, hogy a dinamikus rendszermodell alapvető (építő) elemeiből felépített számítási blokkdiagramot létrehozzuk a szimulációs keretben , és így valósítjuk meg a számítási algoritmust.

A modellépítő elemek között találunk egyszerű és bonyolult blokkokat, de biztosak lehetünk benne, hogy minden olyan szimulációs programot felépíthetünk a segítségükkel, amely meghatározott bemenő jelre egy dinamikus modell alapján válaszfüggvényt határoz meg az időtartományban.

A felhasználható modellelemeket a Szimuláció (Simulation) palettán (B.7. ábra - A Szimuláció (Simulation) paletta alpalettái) találjuk meg funkció szerinti csoportokban.

A Szimuláció (Simulation) paletta alpalettái
B.7. ábra - A Szimuláció (Simulation) paletta alpalettái


A modell létrehozásához leggyakrabban használt alpaletták:

 

Signal Generation (Jelgenerátorok)

 

Signal Arithmetics (Jelaritmetika)

 

Graph Utilities (Jelmegjelenítési elemek)

 

Continuous Linear Systems (Folytonos lineáris rendszerek)

 

Nonlinear Systems (Folytonos nemlineáris rendszerek)

 

Discrete Linear Systems (Mintavételes lineáris rendszerek)

 

Lookup Tables (Táblázattal megadott szimulációs paraméterek)

B.1.1. Jelgenerátorok (Signal Generation)

A Jelgenerátorok palettán olyan szimulációs elemeket találunk, amelyeknek csak kimeneti jele van !

Ez azt jelenti, hogy ezeknek a blokkoknak nincs bemenő jele, hanem a bementi paraméterek alapján egy adott mintázatú kimenő jelet bocsájtanak ki.

A Jelgenerátorok (Signal generation) paletta elemei
B.8. ábra - A Jelgenerátorok (Signal generation) paletta elemei


A modell létrehozásához leggyakrabban használt alpaletták:

 

Step Signal Generation (Ugrás függvény)

 

Pulse Signal (Négyszögjel függvény)

 

Ramp Signal (Sebességugrás függvény)

 

Signal Generator (Jelgenerátor)

 

Chirp Signal (Végigsöprő szinusz jelgenerátor)

 

Simulation Time (A szimuláció aktuális időpontja)

B.1.1.1. Step Signal Generation (Ugrás függvény)

A Step Signal Generation (Ugrás függvény) definíciója a következő:

 

y(t) = kezdeti érték( initial value ) (ha t < ugrási időpont( step time ))

(B.1)

 

y(t) = végérték ( final value ) (ha t >= ugrási időpont( step time ))

ahol t az aktuális szimulációs időpont, y a generátorblokk kimenete. A jel aktuális értéke az aktuális szimulációs időponttól függ.

Az Ugrás függvény (Step Signal) paraméter-beállító ablaka
B.9. ábra - Az Ugrás függvény (Step Signal) paraméter-beállító ablaka


Az B.9. ábra - Az Ugrás függvény (Step Signal) paraméter-beállító ablaka 1. pontjánál szereplő Polimorphic Instance (Jeltípus választó) legördülő menüben beállíthatjuk, hogy csak egyetlen vagy hasonló típusú blokkokból egy vektorfüggvényt szeretnénk megvalósítani. A vektor típusú adat esetén a vektorban szereplő Ugrásfüggvény- generátorok mindegyike egyéni paraméterekkel rendelkezhet (kezdeti érték, végérték, ugrási időpont).

Az B.9. ábra - Az Ugrás függvény (Step Signal) paraméter-beállító ablaka 2. pontjánál szereplő Parameter Source (Paraméter forrás) legördülő menüben beállíthatjuk, hogy az aktuális paraméter értékét a dialógus ablakban megadott értékből (Configuration Dialog Box (Konfigurációs Dialógus ablakból)), vagy a blokk bemeneti paramétereként (Terminal (Ikon paraméterként)) szeretnénk ellátni adattal.

A Terminal (Ikon paraméterként) megjelenő bemeneti érték teljesen hasonló, mint a szokásos VI-ok bemeneti paramétere, azaz a program futása alatt tetszőleges értéket vehet fel. Ennek a bemeneti paramétertípusnak az a jelentősége, hogy a szimuláció időtartama alatt is változtathatjuk az értékét, így időben változó paraméterértékeket valósíthatunk meg.

Az B.9. ábra - Az Ugrás függvény (Step Signal) paraméter-beállító ablaka 3. pontjánál szereplő Parameters (Paraméterek) táblázatban a megfelelő paraméterre kattintva az egérrel, a B.9. ábra - Az Ugrás függvény (Step Signal) paraméter-beállító ablaka 4. pontjánál szereplő, a változó típusához aktualizálódó, a paraméter elnevezésével azonos mezőben állíthatjuk be a paraméter értékét.

Az B.9. ábra - Az Ugrás függvény (Step Signal) paraméter-beállító ablaka 5. pontjánál szereplő grafikonban tekinthetjük meg a kialakított jelalak időbeni lefutását.

Az Ugrás függvény (Step Signal) ikonjának megjelenési formái
B.10. ábra - Az Ugrás függvény (Step Signal) ikonjának megjelenési formái


A Step Signal Generation (Ugrás függvény) (és az összes további szimulációs blokk ehhez hasonlóan) a következő alakban jelenhet meg a programban. A megjelenítés formáját a blokk területére jobb egérgombbal kattintva, a megjelenő menüből az „Icon Style” menüpontnál állíthatjuk be, ahogy azt az előző ábrán (B.10. ábra - Az Ugrás függvény (Step Signal) ikonjának megjelenési formái) láthatjuk.

  • A Static ikon stílus a LabVIEW-ban szokásosan megjelenő normál ikonalak.

  • A Dynamic ikon stílusnál lehetőség van az ikon méretét megváltoztatni (növelni), és a jel alakját bemutató kép automatikusan kitölti az aktuális ikonméretet.

  • A Text Only ikon stílusnál a blokk bemenő paraméterei szöveges formában jelennek meg az ikon képében. Az ikon megmutatja azokat az értékeket, amelyek a szimulációs blokkban beállított értékkel rendelkeznek.

  • Az Express ikon stílusnál a bemeneti és kimeneti paraméterek táblázatszerűen jelennek meg. Itt is láthatók az ikonban azok az értékek, amelyek már beállított értékkel rendelkeznek.

B.1.1.2. Pulse Signal (Négyszögjel függvény)

A Pulse Signal (Négyszögjel függvény) definíciója a következő:

 

y(t) = A * negyszog

 

ahol

 

(B.2)

 

A

az amplitúdó ( amplitude ),

 

f

a frekvencia (1/ periode ) [Hz],

 

p

a jel eltolásának értéke ( offset ),

 

D

a kitöltés mértéke [0..100%] ( duty cycle ),

 

mod

modulo – maradékos osztás maradék értéke.

t az aktuális szimulációs időpont, y a generátorblokk kimenete. A jel aktuális értéke az aktuális szimulációs időponttól függ.

A Pulse Signal (Négyszögjel függvény) paraméter-beállító ablaka
B.11. ábra - A Pulse Signal (Négyszögjel függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

B.1.1.3. Ramp Signal (Sebességugrás függvény)

A Ramp Signal (Sebességugrás függvény) definíciója a következő:

 

y(t) = y(0) (ha t <= kezdeti időpont( start time ))

(B.3)

 

y(t) = y(0)+m*t (ha kezdeti időpont( start time ) < t)

ahol

 

y(0)

a kimenet kezdeti értéke t=0 időpillanatban ( initial value ),

 

m

meredekség ( slope),

 

kezdési időpon t

a sebességugrás függvény kezdő időpontja ( start time ),

ahol t az aktuális szimulációs időpont, y a generátorblokk kimenete.

Ramp Signal (Sebességugrás függvény) kimenete a kezdeti értékkel indul, és azzal a meredekség értékkel változik, amely az adott időpontban érvényes (konstans vagy a bemeneten változtatott érték).

A jel aktuális értéke az aktuális szimulációs időponttól függ.

A Ramp Signal (Sebességugrás függvény) paraméter-beállító ablaka
B.12. ábra - A Ramp Signal (Sebességugrás függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

B.1.1.4. Signal Generator (Jelgenerátor)

A Signal Generator (Jelgenerátor) különböző függvényeinek definíciója a következő:

Szinusz függvény ( Sinus ):

 

(B.4)

Négyszögjel függvény ( Pulse ):

 

y(t) = A * negyszog

(B.5)

 

(B.6)

ahol

 

mod

modulo – maradékos osztás maradék értéke.

Fűrészfog függvény ( Sawtooth ):

 

y(t) = A * fűrészfog(q)

(B.7)

 

fűrészfog(q)=

(B.8)

ahol

 

A

az amplitúdó ( amplitude ),

 

f

frekvencia ( frequency ) [Hz],

 

p

a jel eltolásának értéke ( offset ),

 

 

ahol

 

mod

modulo – maradékos osztás maradék értéke.

t az aktuális szimulációs időpont, y a generátor blokk kimenete.

A Signal Generator (Jelgenerátor) függvényei ( signal type ):

  • Sine (Szinusz függvény).

  • Square (Négyszögjel függvény).

  • Sawtooth (Fűrészfog függvény).

  • Random (Véletlen szám függvény).

A Signal Generator (Jelgenerátor) paraméter-beállító ablaka
B.13. ábra - A Signal Generator (Jelgenerátor) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

B.1.1.5. Chirp Signal (Végigsöprő szinusz jelgenerátor)

A Chirp Signal (Végigsöprő szinusz jelgenerátor) egy olyan szinuszos jelgenerátor, amely a kijelölt időtartományban megadott alsó frekvenciától egy ugyancsak megadott felső frekvenciáig változtatva a jelgenerátor frekvenciáját, szinuszos jelet bocsájt ki.

Végisöprő szinusz függvény ( Chirp Signal ):

 

(B.9)

ahol

 

f(t)

frekvencia [Hz],

 

f 0

kezdeti (alsó) frekvencia ( initial frequency ),

 

f 1

befejezési (felső) frekvencia ( target frequency ),

 

t cél  

a végigsöprés befejezési időpontja ( target time ),

 

T

a szimulációs lépések száma a szimuláció kezdési időpontja és a t cél időpont között.

t az aktuális szimulációs időpont, y a generátor blokk kimenete.

A Chirp Signal (Végigsöprő szinusz jelgenerátor) paraméter-beállító ablaka
B.14. ábra - A Chirp Signal (Végigsöprő szinusz jelgenerátor) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

B.1.1.6. Simulation Time (A szimuláció aktuális időpontja)

A blokkot a szimulációs programban elhelyezve, kimeneti értékként megkapjuk az aktuális szimulációs időpontot.

A szimulációs blokknak nincs kiszolgáló ablaka, nem lehet semmilyen paramétert beállítani hozzá!

B.1.2. Jelaritmetika (Signal Arithmetics)

A Jelaritmetika (Signal Arihmetic) palettán olyan szimulációs elemek találhatók, amelyek a jelek összeadását/kivonását és konstans értékekkel történő szorzását valósítják meg.

Gyakorlati szempontból ezeket a műveleteket a LabVIEW hasonló műveleteket megvalósító blokkjaival (+ összeadás; - kivonás; * szorzás) is elvégezhetnénk, azonban ezek a blokkok az ikonjaik kinézetével jobban illeszkednek a blokkdiagramok elemeihez.

A Jelaritmetika (Signal Arithmetics) paletta elemei
B.15. ábra - A Jelaritmetika (Signal Arithmetics) paletta elemei


A modell létrehozásához leggyakrabban használt alpaletták:

 

Gain (Erősítés függvény)

 

Summation (Összegzés függvény)

 

Multiplication (Szorzás függvény)

B.1.2.1. A Gain (Erősítés függvény)

A Gain (Erősítés függvény) segítségével konstans értékű számot, illetve ha a Paraméter forrás (Parameter Source) legördülő menüben a „Terminal”-t állítjuk, akkor pedig az aktuális szimulációs időpillanathoz rendelhető változó erősítés értéket állíthatunk be.

A Gain (Erősítés függvény) paraméter-beállító ablaka
B.16. ábra - A Gain (Erősítés függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

B.1.2.2. A Summation (Összegzés függvény)

A Summation (Összegzés függvény) segítségével definiálható számú bemenetet hozhatunk létre. A bemenetek mindegyike esetén megadható, hogy pozitív (+) vagy negatív előjellel adja hozzá a bemenetet az összegzett kimeneti értékhez. A bementeknek a modellezéskor nagyon hasznos tulajdonságuk is van, az aktivitásuk megszüntethető , azaz hozzá vannak kötve az összegző bemenethez, de a rajtuk megjelenő jel nem adódik hozzá az összegzési kimenethez.

A Summation (Összegzés függvény) paraméter-beállító ablakai (különböző ikon megjelenési formákhoz)
B.17. ábra - A Summation (Összegzés függvény) paraméter-beállító ablakai (különböző ikon megjelenési formákhoz)


A paraméterablakban látható jelek a pozitív(+) előjelet, a negatív(-) előjelet, illetve a bemenet átmeneti megszüntetését () jelölik.

A bementek tulajdonságait megváltoztathatjuk, ha az egérmutatóval a bemeneti szimbólum területére kattintunk, ekkor ciklikusan változnak az előjel és a bemenet átmeneti megszüntetése ikonok.

A bementek számára vonatkozóan a program LabVIEW 2009 verziójában nincs felső korlát, de a blokkdiagram olvashatósága miatt már tízes nagyságrendű bemenet is nehezen olvasható a diagram panelen!

B.1.2.3. A Multiplication (Szorzás függvény)

A Multiplication (Szorzás függvény) segítségével definiálható számú bemenetet hozhatunk létre. A bemenetek mindegyike esetén megadható, hogy szorzás (*) vagy osztás műveletet valósítson meg a kimeneti érték meghatározásánál. A bementeknek a modellezéskor nagyon hasznos tulajdonsága is van, az aktivitásuk megszüntethető , azaz hozzá vannak kötve a műveletet végző bemenethez, de a rajtuk megjelenő jellel nem történik műveletvégzés.

A Multiplication (Szorzás függvény) paraméter-beállító ablakai (különböző ikon megjelenési formákhoz)
B.18. ábra - A Multiplication (Szorzás függvény) paraméter-beállító ablakai (különböző ikon megjelenési formákhoz)


A paraméterablakban látható jelek a szorzást (x), az osztást (÷), illetve a bemenet átmeneti megszüntetését () jelölik.

A bementek tulajdonságait megváltoztathatjuk, ha az egérmutatóval a bemeneti szimbólum területére kattintunk, ekkor ciklikusan változnak a szorzás, az osztás és a bemenet átmeneti megszüntetése ikonok.

A bementek számára vonatkozóan a program LabVIEW 2009 verziójában nincs felső korlát, de a blokkdiagram olvashatósága miatt már tízes nagyságrendű bemenet is nehezen olvasható a diagram panelen!

B.1.3. Jelmegjelenítési elemek (Graph Utilities)

A Jelmegjelenítési elemek (Graph Utilities) palettán olyan elemek találhatók, amelyekkel lehetőségünk van a szimuláció futása közben kirajzolni a szimulációs blokkok bemenő és kimenő jeleket.

A Jelmegjelenítési elemek (Graph Utilities) paletta elemei
B.19. ábra - A Jelmegjelenítési elemek (Graph Utilities) paletta elemei


A modell létrehozásához leggyakrabban használt alpaletták:

 

Sim Time Waveform (Szimulációs időfüggvény kirajzolása)

 

Buffer XY Graph (az XY grafikon adatainak tárolása függvény)

B.1.3.1. Sim Time Waveform (Szimulációs jel időfüggvényének kirajzolása)

A Sim Time Waveform (Szimulációs jel időfüggvényének kirajzolása) blokk segítségével a szimulációban meghatározott jelek időbeli kirajzolását végezhetjük el.

A Sim Time Waveform (Szimulációs jel időfüggvényének kirajzolása) blokk definiálásakor automatikusan megjelenik a blokkdiagramban egy Waveform Chart (Hullámforma diagram), amely a blokkhoz kapcsolt jelek megjelenítését végzi.

Ha B.2. táblázat - Időzítési paraméterek (Timing Parameters) Időzítési paraméterek (Timing Parameters) 12. sorszámú paramétere, A szimulációs hurok szinkronizálása egy időalap-generátorhoz (Syncronize Loop to Timing Source) nincs bekapcsolt állapotban – nincs időszinkronizálás – akkor a blokk átmenetileg tárolja (összegyűjti) a szimuláció alatt keletkezett összes adatot, és a szimuláció befejezési időpontjának elérése után egyszerre rajzolja ki a bemenetére kapcsolt adatokat.

Ha a szimuláció időlépése szinkronizálva van egy időalap-generátorhoz , akkor a szimulációs adatok kiírása az adott valós időpontban történik, és így a szimulált rendszer jeleinek valós idejű értékeit láthatjuk a diagramon.

A blokk a megadott szimulációs időlépés egész számú többszöröseinek időpontjában rajzolja ki az adatokat!

A Sim Time Waveform (Szimulációs jel időfüggvényének kirajzolása) blokk paraméter-beállító ablaka nem tartalmaz olyan információt, amelyet érdemben be lehetne állítani. A bemeneti érték, amely skalár (egy bemenet) vagy vektor típusú lehet, automatikusan beállítódik, és meghatározott értékű a bemeneti adatstruktúra alapján.

B.1.3.2. Buffer XY Graph (az XY grafikon adatainak tárolása függvény)

A Buffer XY Graph (az XY grafikon adatainak tárolása függvény) blokk segítségével a szimulációban meghatározott jelek kirajzolását végezhetjük el úgy, hogy az egyes ábrázolási tengelyeken (2D) a bemeneti jeleket alkalmazzuk. Így az idő ezeken a diagramokon csak paraméter, és az első jel változásának függvényében ábrázoljuk a második jelet (trajektória rajzolása).

A bemeneti jel egy olyan vektorcsoport (cluster vector), amelynek egy elemét a következő ábra mutatja be:

A Buffer XY Graph (XY grafikon adatainak tárolása függvény) blokkbemeneti adatstruktúrája
B.20. ábra - A Buffer XY Graph (XY grafikon adatainak tárolása függvény) blokkbemeneti adatstruktúrája


A Buffer XY Graph (az XY grafikon adatainak tárolása függvény) blokk definiálásakor automatikusan megjelenik a blokkdiagramban egy XY Graph (XY grafikon), amely a blokkhoz kapcsolt adatstruktúra (B.20. ábra - A Buffer XY Graph (XY grafikon adatainak tárolása függvény) blokkbemeneti adatstruktúrája) megjelenítését végzi.

Ha table_AII_2 Időzítési paraméterek (Timing Parameters) 12. sorszámú paramétere, A szimulációs hurok szinkronizálása egy időalap-generátorhoz (Syncronize Loop to Timing Source) nincs bekapcsolt állapotban – nincs időszinkronizálás –, akkor a blokk átmenetileg tárolja (összegyűjti) a szimuláció alatt keletkezett összes adatot, és a szimuláció befejezési időpontjának elérése után egyszerre rajzolja ki a bemenetére kapcsolt adatokat.

Ha a szimuláció időlépése szinkronizálva van egy időalap-generátorhoz , akkor a szimulációs adatok kiírása az adott valós időpontban történik, és így a szimulált rendszer jeleinek valós idejű értékeit láthatjuk a diagramon.

A Buffer XY Graph (az XY grafikon adatainak tárolása függvény) blokk paraméter-beállító ablakában (B.21. ábra - A Buffer XY Graph (az XY grafikon adatainak tárolása függvény) blokk paraméter-beállító ablaka) a következő paramétereket állíthatjuk be:

A Buffer XY Graph (az XY grafikon adatainak tárolása függvény) blokk paraméter-beállító ablaka
B.21. ábra - A Buffer XY Graph (az XY grafikon adatainak tárolása függvény) blokk paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • a decimation (tizedelés) paraméter lehetővé teszi, hogy ne rajzoljuk ki az összes szimulációs adatot, hanem csak a decimation paraméterrel megadott sorszámú értékeket. Így a szimuláció pontos (kis lépésközű) kiszámítása mellett jelentős memóriát takaríthatunk meg a kirajzolásnál.

  • a buffer size ((adat)puffer mérete) paraméterrel adhatjuk meg az adatok tárolását végző puffer méretét. Ennyi adatot tárolunk a szimulációról. A paraméter értékét nem változtathatjuk meg a szimuláció időtartama alatt . Az alapértelmezésben beállított puffer méret 1024 adat. Ha ettől több adat keletkezik a szimulációs modell futása során, akkor csak az utolsó, a puffer mérettel megegyező adat marad meg a szimulációs adatok kirajzolásakor.

B.1.4. Folytonos lineáris rendszerek (Continuous Linear Systems)

A Folytonos lineáris rendszerek (Continuous Linear Systems) palettán találjuk meg azokat a dinamikus rendszer szimulációs elemeket, melyek segítségével blokkdiagramszerűen adhatjuk meg a differenciálegyenletek alapján felírt átviteli függvényeket valamint az állapottér modelleket.

A Folytonos lineáris rendszerek (Continuous Linear Systems) paletta elemei
B.22. ábra - A Folytonos lineáris rendszerek (Continuous Linear Systems) paletta elemei


A modell létrehozásához leggyakrabban használt alpaletták:

 

Integrator (Idő szerinti integrálás függvény)

 

Derivative (Idő szerinti differenciálási függvény)

 

Transport Delay (Jelkésleltetési függvény)

 

State Space (Állapottér modell)

 

Transfer Function (Átviteli függvény modell)

B.1.4.1. Integrator (Idő szerinti integrálás függvény)

Az Integrator (Idő szerinti integrálás függvény) egy olyan hisztórikus típusú blokk, amely a bemenő jel idő szerinti integrál értékét határozza meg az adott szimulációs időpontig.

Hisztórikus blokkoknak nevezzük azokat a szimulációs blokkokat, amelyek kimeneti jele nem csak a bemeneti jel értékétől, hanem a kimenő jel korábbi értékétől is függ.

Javaslat, hogy mindenképpen integráló blokkot alkalmazzunk, ha a folytonos differenciálegyenlet megoldásához blokkdiagramot építünk fel!

Az integrálási metódust az Irányítás és szimulációs hurok egyik paramétereként már be kellett előzőleg állítanunk. Az Irányítás és szimulációs hurok (Control & Simulation Loop) az összes integrátor számítását ugyanazzal az integrálási eljárással határozza meg.

Az Integrator (Idő szerinti integrálás függvény) paraméter-beállító ablaka
B.23. ábra - Az Integrator (Idő szerinti integrálás függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • az initial condition (kezdeti feltétel) paraméter megadja az integrátor kimeneti jelének értékét a szimuláció kezdő időpontjában. Alapértéke nulla (0).

  • a limit type (korlátozás típusa) paraméterrel adhatjuk meg az integráló blokk kimenő jelének korlátozását. Ez azt jelenti, hogy a korlátozások értékénél nagyobb/kisebb kimenő jel értéke helyett a korlátozás értékét adjuk ki kimenő jelként. A korlátozást a felső határra, az alsó határra külön-külön vagy együttesen elő lehet írni. Hasonlóan be lehet állítani, hogy az integrátor ne vegye figyelembe a korlátozásokat.

    Az Integrator (Idő szerinti integrálás függvény) limit type (korlátozás típusa) paraméterének értékei
    B.24. ábra - Az Integrator (Idő szerinti integrálás függvény) limit type (korlátozás típusa) paraméterének értékei


    • upper (korlátozás a felső határnál),

    • lower (korlátozás az alsó határnál),

    • both (korlátozás mindkét határnál),

    • none (nincs korlátozás).

  • az upper limit (felső határ) paraméter az integráló tag kimenő jelének korlátozásakor a felső határ értékét adja. Ezen határértéknél nagyobb értéket az integráló tag nem bocsájt ki, ehelyett a felső határ értékét adja ki kimenő jelként. Alapértéke nulla (0).

  • a lower limit (alsó határ) paraméter az integráló tag kimenő jelének korlátozásakor az alsó határ értéke. Ezen határértéknél kisebb értéket az integráló tag nem bocsájt ki, ehelyett a alsó határ értékét adja ki kimenő jelként. Alapértéke nulla (0).

  • az initial condition for reset (kezdeti feltétel a kimenet visszaállításához az újraindítás után) paraméter az integráló tag kimenő jelének értéke, amikor a reset (újraindítás) bemenetre visszaállítási feltétel érkezik. A szimulációs program nem használja ezt a paramétert, ha a reset type (újraindítás típusa) paraméter értéke none (nincs újraindítás). Alapértéke nulla (0).

  • a reset type (újraindítás típusa) paraméterrel adhatjuk meg az integrátor blokk újraindítását előíró feltételt

    Az Integrator (Idő szerinti integrálás függvény) reset type (újraindítás típusa) paraméterének értékei
    B.25. ábra - Az Integrator (Idő szerinti integrálás függvény) reset type (újraindítás típusa) paraméterének értékei


    • rising (újraindítás emelkedésnél) Az integrátor újraindítása, amikor az újraindítás ( reset ) jel pozitív meredekséggel metszi az x-tengelyt .

    • falling (újraindítás csökkenésnél) Az integrátor újraindítása, amikor az újraindítás ( reset ) jel negatív meredekséggel metszi az x-tengelyt .

    • either (újraindítás emelkedésnél vagy csökkenésnél) Az integrátor újraindítása, amikor az újraindítás ( reset ) jel pozitív vagy negatív meredekséggel metszi az x-tengelyt .

    • none (nincs újraindítás) Alapbeállítás. Az integrátor nem indítható újra.

  • a reset (kimenet visszaállítása az újraindítás kezdeti feltételére) paraméter érték megszabja, hogy az integrátor újrainduljon vagy sem.

  • a reset offset (a kezdeti feltétel határoló értéke a kimenet visszaállításához) paraméterrel adhatjuk meg, hogy milyen érték esetén minősítsük újraindításnak az x-tengely keresztezését a reset type (újraindítás típusa) feltételnél. Ha a következő függvény igaz értékű, akkor az x-tengely metszése is valós.

     

      sgn( reset (t–1)– reset offset (t)) ≠ sgn( reset (t)– reset offset (t))

    (B.10)

B.1.4.2. Derivative (Idő szerinti differenciálási függvény)

A Derivative (Idő szerinti differenciálási függvény) egy olyan, nem hisztórikus típusú blokk , amely a bemenő jel idő szerinti differencia értékét határozza meg az adott szimulációs időpontban.

Nem hisztórikus blokkoknak nevezzük azokat a szimulációs blokkokat, amelyek kimeneti jele csak a bemeneti jel értékétől függ.

Javaslat, hogy mindenképpen kerüljük a Derivative (Idő szerinti differenciálási függvény) alkalmazását, ha a folytonos differenciálegyenlet megoldásához blokkdiagramot építünk fel!

A Derivative (Idő szerinti differenciálási függvény) a következő időfüggvényt valósítja meg:

 

(B.11)

ahol

 

t

a szimuláció aktuális időpontja,

 

u(t)

a bemenetjel időfüggvénye,

 

y(t)

a kimenetjel időfüggvénye,

 

h

a szimuláció időlépése.

A Derivative (Idő szerinti differenciálási függvény) tipikus alkalmazása, amikor egy jel időbeni változási sebességét akarjuk meghatározni.

A differenciálegyenletek megoldásánál ez a visszalépéses differenciaszámítási mód insatbil működést okoz!

B.1.4.3. Transport Delay (Jelkésleltetési függvény)

A Transport Delay (Jelkésleltetési függvény) egy olyan, nem hisztórikus típusú blokk , amely a bemenő jel késleltetését valósítja meg egy megadott késleltetési időtartammal.

A Transport Delay (Jelkésleltetési függvény) a következő időfüggvényt valósítja meg:

 

(B.12)

ahol

 

t

a szimuláció aktuális időpontja,

 

u(t)

a bemenetjel időfüggvénye,

 

y(t)

a kimenetjel időfüggvénye,

 

Th

a blokk késleltetési időtartama.

A Transport Delay (Jelkésleltetési függvény) paramétereinek kiszolgáló ablaka a következő ábrán (B.26. ábra - A Transport Delay (Jelkésleltetési függvény) paraméter-beállító ablaka) látható.

A Transport Delay (Jelkésleltetési függvény) paraméter-beállító ablaka
B.26. ábra - A Transport Delay (Jelkésleltetési függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • az initial condition (kezdeti feltétel) paraméter megadja a Jelkésleltetési függvény kimeneti jelének értékét a szimuláció kezdő időpontjában. Alapértéke nulla (0).

  • a delay (s) (korlátozás típusa) paraméterrel adhatjuk meg a Jelkésleltetési függvény kimenő jelének késleltetését. Alapértéke egy (1) másodperc [s]. Ha a késleltetési idő alapján két mintavételezési időpont között kell a függvényértéket meghatározni, akkor a blokk extrapolálja a megfelelő értéket a két mintavételezési pont között. A késleltetés értéke csak pozitív valós szám lehet!

  • a max delay (s) (kezdeti feltétel) paraméter megadja a Jelkésleltetési függvény kimenő jelének maximális késleltetését. Alapértéke egy (1) másodperc [s].   A maximális késleltetés értéke csak pozitív valós szám lehet!

B.1.4.4. State Space (Állapottér modell)

A State Space (Állapottér modell) egy olyan hisztórikus típusú blokk , amely az adott szimulációs időpontban az állapottér modell új állapotait, és az azokhoz tartozó új kimenő jel értékeket határozza meg.

 

(B.13)

Hisztórikus blokkoknak nevezzük azokat a szimulációs blokkokat, amelyek kimeneti jele nem csak a bemeneti jel értékétől, hanem a kimenő jel korábbi értékétől is függ.

A State Space (Állapottér modell) paramétereinek kiszolgáló ablaka a következő ábrán (B.27. ábra - A State Space (Állapottér modell) paraméter-beállító ablaka) látható.

A State Space (Állapottér modell) paraméter-beállító ablaka
B.27. ábra - A State Space (Állapottér modell) paraméter-beállító ablaka


A paraméterek alaptípusát és azok beállítási módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • a State-Space (Állapottér) paraméter megadja az állapottér leírás A, B, C és D mátrixainak méretét és értékeit. Alapesetben a modell egy bemenetű és egy kimenetű állapottér modell paramétereinek megadását teszi lehetővé. Ha a bemenetre egy vektor típusú adatot kapcsolunk, akkor azonnal lehetőség van a bemenetekhez tartozó B mátrix paramétereinek megadására, és ekkor állíthatjuk be a többi kimenet értékét meghatározó C és D mátrixot is. Lehetőségünk van az állapottér modellt fájlban való tárolására, illetve a korábban tárolt állapottér modellek háttértárról való betöltésére.

    A B.28. ábra - A MIMO State Space (Állapottér modell) paraméter-beállító ablaka bemutatja a több-bemenetű és több-kimenetű (MIMO) rendszer állapottér modelljének paraméterablakát.

    A MIMO State Space (Állapottér modell) paraméter-beállító ablaka
    B.28. ábra - A MIMO State Space (Állapottér modell) paraméter-beállító ablaka


  • az initial state (x0) (kezdeti állapotok) paramétervektor megadja az állapotváltozók értékét a szimuláció kezdő időpontjában. Alapérték nulla (0) elemű vektor.

    A B.29. ábra - A State Space (Állapottér modell) kezdeti állapotainak beállítása a kezdeti állapotok beállítási lehetőségét mutatja be az állapottér modell paraméterablakában:

    A State Space (Állapottér modell) kezdeti állapotainak beállítása
    B.29. ábra - A State Space (Állapottér modell) kezdeti állapotainak beállítása


  • a reset? (újraindítás?) paraméter megadja, hogy az állapottér modell a szimuláció egy megadott pillanatában újraindítódik vagy sem.

    Az újraindítás azt jelenti, hogy a szimuláció adott időpillanatában az állapottér modell korábbi működését megszakítjuk, és új kezdeti állapotokkal, de az aktuális bemenő jellel folytatjuk tovább a szimulációt. Alapértéke nem (False).

  • a reset initial state (xr) (kezdeti állapotok újraindításkor) vektorparaméterrel adhatjuk meg az állapottér modell újraindítás utáni új állapotait.

B.1.4.5. Transfer Function (Átviteli függvény modell)

A Transfer Function (Átviteli függvény modell) egy olyan hisztórikus típusú blokk , amely az adott szimulációs időpontban egy folytonos átviteli függvénnyel leírt modell kimenő jelének értékeit határozza meg a bemenő jel alapján.

Hisztórikus blokkoknak nevezzük azokat a szimulációs blokkokat, amelyek kimeneti jele nem csak a bemeneti jel értékétől, hanem a kimenő jel korábbi értékétől is függ.

Az átviteli függvényt egy bemenet és egy kimenet esetén a következő egyenlettel írjuk le:

 

(B.14)

A Transfer Function (Átviteli függvény modell) paramétereit a következő ábrán (B.30. ábra - A Transfer Function (Átviteli függvény modell) paraméter-beállító ablaka) látható paraméter-beállító ablakban adhatjuk meg.

A Transfer Function (Átviteli függvény modell) paraméter-beállító ablaka
B.30. ábra - A Transfer Function (Átviteli függvény modell) paraméter-beállító ablaka


A paraméterek alaptípusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • a Transfer Function (Átviteli függvény modell) paraméter megadja az átviteli függvény számlálójában (numerator) és nevezőjében (denominator) s egész hatványainak együtthatóit. A 0. indexű elem s0 hatványának együtthatóját jelenti az 1. indexű elem s szorzója a 2. indexű elem s2-é és így tovább.Az átviteli függvényben nincs lehetőség kezdeti állapot megadására, vagyis minden állapotváltozó értéke nulla a szimuláció elindulásakor (t=0). Lehetőségünk van az átviteli függvény modellt fájlként tárolni, illetve korábban tárolt átviteli függvény modelleket a háttér tárolóról betölteni.

    A következő ábra a több-bemenetű és több-kimenetű (MIMO) rendszer átviteli függvény (mátrix) paraméterablakát mutatja be. Ilyen esetben minden bemenet és minden kimenet között meg kell adnunk az kimenet-bemenet pároshoz tartozó átviteli függvény együtthatóit.

    A következő ábrán (B.31. ábra - A MIMO Transfer Function Matrix (Átviteli függvény modell mátrix) paraméter-beállító ablaka) látható Input-Output Modell (Bemeneti-Kimeneti modell) mátrixában a megfelelő elemre kattintva megadhatjuk, hogy melyik kimenet és bemenet közötti átviteli függvény paramétereit láthatjuk a számláló és a nevező vektor elemeiben.

    A MIMO Transfer Function Matrix (Átviteli függvény modell mátrix) paraméter-beállító ablaka
    B.31. ábra - A MIMO Transfer Function Matrix (Átviteli függvény modell mátrix) paraméter-beállító ablaka


  • a reset? (újraindítás?) paraméter megadja, hogy az átviteli függvény modell a szimuláció egy megadott pillanatában újraindítódik vagy sem.

    Az újraindítás azt jelenti, hogy a szimuláció adott időpillanatában az átviteli függvény-modell korábbi működését megszakítjuk, és nulla (0) kezdeti állapotokkal, valamint az aktuális bemenő jellel folytatjuk tovább a szimulációt. Alapértéke nem (False).

B.1.5. Folytonos nemlineáris rendszerek (Nonlinear Systems)

A Folytonos nemlineáris rendszerek (Nonlinear Systems) palettán olyan elemek találhatók, amelyek tipikus nemlineáris tulajdonságok modelljeit írják le. Ilyenek például a kotyogás, súrlódás, telítődés függvények.

A Folytonos nemlineáris rendszerek (Nonlinear Systems) paletta elemei
B.32. ábra - A Folytonos nemlineáris rendszerek (Nonlinear Systems) paletta elemei


A modell létrehozásához leggyakrabban használt alpaletták:

 

Dead Zone (Kotyogás függvény)

 

Friction (Súrlódás függvény)

 

Quantizer (Érték-diszkretizáló függvény)

 

Rate Limiter (Sebességkorlát függvény)

 

Relay (Relé függvény)

 

Saturation (Telítődés függvény)

 

Switch (Kapcsoló függvény)

B.1.5.1. Dead Zone (Kotyogás függvény)

A Dead Zone (Kotyogás függvény) egy olyan nem hisztórikus típusú blokk , amely a bemenő jel megadott értékhatárai között nem reagál (nem ad ki kimenő jelet) majd ezután a bemenő jellel meghatározott kimenő jelértéket bocsájt ki.

A Dead Zone (Kotyogás függvény) a következő időfüggvényt valósítja meg:

 

y(t) = 0,        ha sodz <= u(t) <= eodz

(B.15)

 

y(t) = u(t)- sodz ,        ha u(t) < sodz

(B.16)

 

y(t) = u(t)- eodz ,        ha u(t) > eodz

(B.17)

ahol

t

a szimuláció aktuális időpontja,

 

u(t)

a bemeneti jel időfüggvénye,

 

y(t)

a kimeneti jel időfüggvénye,

 

sodz

start of dead zone - a holtsáv kezdete,

 

eodz

end of dead zone - a holtsáv vége.

A Dead Zone (Kotyogás függvény) paramétereinek kiszolgáló ablaka a következő ábrán (B.33. ábra - A Dead Zone (Kotyogás függvény) paraméter-beállító ablaka) látható.

A Dead Zone (Kotyogás függvény) paraméter-beállító ablaka
B.33. ábra - A Dead Zone (Kotyogás függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • a start of dead zone (a holtsáv kezdete) paraméter megadja a bemenő jel holtsávjának kezdeti értékét.

    Alapértéke -1.

  • az end of dead zone (a holtsáv vége) paraméter megadja a bemenő jel holtsávjának kezdeti értékét.

    Alapértéke +1.

B.1.5.2. Friction (Súrlódás függvény)

A Friction (Súrlódás függvény) egy olyan nem hisztórikus típusú blokk , amely a bemenő jel előjelétől függő, adott értékkel eltolt, a bemenetre lineáris függvényt valósít meg.

A Friction (Súrlódás függvény) a következő időfüggvényt valósítja meg:

 

y(t) = 0,        ha u(t)=0

(B.18)

 

y(t) = u(t) * gain + offset ,        ha u(t) > 0

(B.19)

 

y(t) = u(t) * gain + offset ,        ha u(t) < 0

(B.20)

ahol

t

a szimuláció aktuális időpontja,

 

u(t)

a bemeneti jel időfüggvénye,

 

y(t)

a kimeneti jel időfüggvénye,

 

offset

az eltolás értéke,

 

gain

az erősítés értéke.

A Friction (Súrlódás függvény) paramétereinek kiszolgáló ablaka a következő ábrán (B.34. ábra - A Friction (Súrlódás függvény) paraméter-beállító ablaka) látható.

A Friction (Súrlódás függvény) paraméter-beállító ablaka
B.34. ábra - A Friction (Súrlódás függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • az offset (eltolásérték) paraméter megadja a kimenő jel eltolásának értékét ha u(t)=0. Alapértéke +1.

  • a gain (erősítés) paraméter megadja a nullától eltérő bemenő jel erősítésének értékét. Alapértéke +1.

B.1.5.3. Quantizer (Érték-diszkretizáló függvény)

A Quantizer (Érték-diszkretizáló függvény) egy olyan nem hisztórikus típusú blokk , amely a bemenő jel értékét megadott lépcsőértékekhez (quantization interval) rendeli. Így a kimenő jel csak meghatározott kvantált értékeket vehet fel.

A Quantizer (Érték-diszkretizáló függvény) a következő időfüggvényt valósítja meg:

 

y(t) = int [ u(t) * qi ] * qi

(B.21)

ahol

t

a szimuláció aktuális időpontja,

 

u(t)

a bemeneti jel időfüggvénye,

 

y(t)

a kimeneti jel időfüggvénye,

 

qi

quantization interval - a lépcsőérték,

 

int

függvény a legközelebbi egész értéket adja meg.

A Quantizer (Érték-diszkretizáló függvény) paramétereinek kiszolgáló ablaka a következő ábrán (B.35. ábra - A Quantizer (Érték-diszkretizáló függvény) paraméter-beállító ablaka) látható.

A Quantizer (Érték-diszkretizáló függvény) paraméter-beállító ablaka
B.35. ábra - A Quantizer (Érték-diszkretizáló függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméter a következő tulajdonságú:

  • a quantization interval (lépcsőértéke) paraméter adja meg a kimenő jel lépcsőzésének értékét. Alapértéke +1.

B.1.5.4. Rate Limiter (Sebességkorlát függvény)

A Rate Limiter (Sebességkorlát függvény) egy olyan nem hisztórikus típusú blokk , amely a bemenő jel értékét megadott lépcsőértékekhez (quantization interval) rendeli. Így a kimenő jel csak meghatározott kvantált értékeket vehet fel.

A Rate Limiter (Sebességkorlát függvény) a következő időfüggvényt valósítja meg:

 

(B.22)

 

y(t) = nsr * h +y(t-h),        ha D < nsr

(B.23)

 

y(t) = psr * h +y(t-h),        ha D > psr

(B.24)

 

y(t) = u(t)        egyébként

(B.25)

ahol

t

a szimuláció aktuális időpontja,

 

h

a szimuláció lépésköze,

 

u(t)

a bemeneti jel időfüggvénye,

 

y(t)

a kimeneti jel időfüggvénye,

 

D

a jelváltozás sebessége,

 

nsr

negative slew rate - negatív meredekség határ,

 

psr

positive slew rate - pozitív meredekség határ.

A Rate Limiter (Sebességkorlát függvény) paramétereinek kiszolgáló ablaka a következő ábrán (B.35. ábra - A Quantizer (Érték-diszkretizáló függvény) paraméter-beállító ablaka) látható.

A Rate Limiter (Sebességkorlát függvény) paraméter-beállító ablaka
B.36. ábra - A Rate Limiter (Sebességkorlát függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • a negative slew rate (negatív meredekség határ) paraméter adja meg a kimenő jel negatív meredekségének határát. Alapértéke -1.

  • a positive slew rate (pozitív meredekség határ) paraméter adja meg a kimenő jel pozitív meredekségének határát. Alapértéke +1.

B.1.5.5. Relay (Relé függvény)

A Relay (Relé függvény) egy olyan hisztórikus típusú blokk , amely a bemenő jel és a kimenő jel aktuális értékétől függően bekapcsolt vagy kikapcsolt állapotba kerül. A Relé függvény úgynevezett kétértékű függvény, amelynek értékét a kimenő jel egy szimulációs lépéssel korábbi állapota határozza meg. A Relé függvény kezdeti értéke kikapcsolt (off) állapot.

A Relay (Relé függvény) a következő időfüggvényt valósítja meg:

 

y(t) = output when off ,        ha relé on állapotban van

(B.26)

 

y(t) = output when on ,        ha relé off állapotban van

(B.27)

ahol

t

a szimuláció aktuális időpontja,

 

u(t)

a bemeneti jel időfüggvénye,

 

y(t)

a kimeneti jel időfüggvénye,

 

output when off

a kimenet kikapcsolt állapotban,

 

output when on

a kimenet bekapcsolt állapotban.

A Relay (Relé függvény) paramétereinek kiszolgáló ablaka a következő ábrán (B.37. ábra - A Relay (Relé függvény) paraméter-beállító ablaka) látható.

A Relay (Relé függvény) paraméter-beállító ablaka
B.37. ábra - A Relay (Relé függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • az output when off (a kimenet kikapcsolt állapotban) paraméter adja meg a kimenő jel értékét a relé kikapcsolt állapotában. Alapértéke -10.

  • az output when on (a kimenet bekapcsolt állapotban) paraméter adja meg a kimenő jel értékét a relé bekapcsolt állapotában. Alapértéke +10.

  • a switch off point (a bemeneti jel kikapcsolási értéke) paraméter megadja a bemenő jel kikapcsolási értékét. Alapértéke -1.

  • a switch on point (a bemeneti jel bekapcsolási értéke) paraméter megadja a bemenő jel bekapcsolási értékét. Alapértéke +1.

B.1.5.6. Saturation (Telítődés függvény)

A Saturation (Telítődés függvény) egy olyan nem hisztórikus típusú blokk , amely a bemenő jel értékét megadott határértékekkel összehasonlítva nem ad ki a határértékeknél nagyobb/kisebb kimenő jelet.

A Saturation (Telítődés függvény) a következő időfüggvényt valósítja meg:

 

y(t) = upper limit ,        ha (u(t) > upper limit)

(B.28)

 

y(t) = lower limit ,        ha (u(t) < lower limit)

(B.29)

 

y(t) = u(t) egyébként

(B.30)

ahol

t

a szimuláció aktuális időpontja,

 

u(t)

a bemeneti jel időfüggvénye,

 

y(t)

a kimeneti jel időfüggvénye,

 

upper limit

felső határ,

 

lower limit

alsó határ.

A Saturation (Telítődés függvény) paramétereinek kiszolgáló ablaka a következő ábrán (B.38. ábra - A Saturation (Telítődés függvény) paraméter-beállító ablaka) látható.

A Saturation (Telítődés függvény) paraméter-beállító ablaka
B.38. ábra - A Saturation (Telítődés függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • lower limit (alsó határ) – ha a bemenő jel kisebb, mint az alsó határ értéke, akkor a blokk az alsó határ értékét adja ki kimenő jelként. Alapértéke -5.

  • upper limit (felső meredekség határ) - ha a bemenő jel nagyobb, mint a felső határ értéke, akkor a blokk a felső határ értékét adja ki kimenő jelként.  Alapértéke +5.

B.1.5.7. Switch (Kapcsoló függvény)

A Switch (Kapcsoló függvény) egy olyan nem hisztórikus típusú blokk , amely a bemenő jel értékét megadott küszöbértékekkel összehasonlítva két kimeneti értéket bocsájt ki attól függően, hogy a bementi jel kisebb vagy nagyobb, mint a küszöbjel.

A Switch (Kapcsoló függvény) a következő időfüggvényt valósítja meg:

 

y(t) = value above threshold ,        ha (u(t) > threshold)

(B.31)

 

y(t) = value below threshold ,        ha (u(t) <= threshold)

(B.32)

ahol

t

a szimuláció aktuális időpontja,

 

u(t)

a bemeneti jel időfüggvénye,

 

y(t)

a kimeneti jel időfüggvénye,

 

threshold

küszöb,

 

value above threshold

érték a küszöb feletti jel értéknél,

 

value below threshold

érték a küszöb alatti jel értéknél.

A Switch (Kapcsoló függvény) paramétereinek kiszolgáló ablaka a következő ábrán (B.39. ábra - A Switch (Kapcsoló függvény) paraméter-beállító ablaka) látható.

A Switch (Kapcsoló függvény) paraméter-beállító ablaka
B.39. ábra - A Switch (Kapcsoló függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméter a következő tulajdonságú:

  • threshold (küszöb)  - ha a bemenő jel kisebb, mint a küszöb értéke, akkor a blokk kimenete a küszöb alatti értékhez rendelt kimenő jelet adja ki. Ha a bemenő jel nagyobb, mint a küszöb értéke, akkor a blokk kimenete a küszöb feletti értékhez rendelt kimenő jelet adja ki. Alapértéke +1.

B.1.6. Mintavételes lineáris rendszerek (Discrete Linear Systems)

A Mintavételes lineáris rendszerek (Discrete Linear Systems) palettán olyan elemek találhatók, amelyekkel lehetőségünk van a mintavételes rendszerek állapottér és impulzusátviteli függvény modelljeinek definiálására.

A Mintavételes lineáris rendszerek (Discrete Linear Systems) paletta elemei
B.40. ábra - A Mintavételes lineáris rendszerek (Discrete Linear Systems) paletta elemei


A modell létrehozásához leggyakrabban használt alpaletták:

 

Discrete Unit Delay (Mintavételes egységnyi késleltetés függvény)

 

Discrete Zero-Order Hold (Mintavételes nulladrendű tartó függvény)

 

Discrete First-Order Hold (Mintavételes elsőrendű tartó függvény)

 

Discrete State-Space (Mintavételes állapottérmodell)

 

Discrete Transfer Function (Mintavételes impulzusátviteli függvénymodell)

B.1.6.1. Discrete Unit Delay (Mintavételes egységnyi késleltetés függvény)

A Discrete Unit Delay (Mintavételes egységnyi késleltetés függvény) egy olyan hisztórikus típusú blokk , amely a bemenő jel mintavételezett értékét egy mintavételi idővel később bocsájtja ki kimenő jelként.

A Discrete Unit Delay (Mintavételes egységnyi késleltetés függvény) a következő időfüggvényt valósítja meg:

 

y(0) = initial condition

(B.33)

 

y(t k ) = u(t k - sample period (s) )

(B.34)

 

t k = t i + sample skew (s) + k * sample period (s) , k =0,1,2,….

(B.35)

ahol

k

a mintavételek száma,

 

ti

a szimuláció kezdési időpontja,

 

tk

a mintavételezés időpontja,

 

tk-1

az előző mintavételezés időpontja,

 

u(tk)

a mintavételezett bemenő jel a k. mintavételi időpontban,

 

y(tk)

a mintavételezett kimenő jel a k. mintavételi időpontban,

 

initial condition

a kimenő jel értéke a k=0 mintavételi időpillanatban,

 

sample skew (s)

mintavételi meredekség [s],

 

sample period (s)

mintavételi periódus időtartam [s].

A Discrete Unit Delay (Mintavételes egységnyi késleltetés függvény) paramétereinek kiszolgáló ablaka a következő ábrán (B.41. ábra - A Discrete Unit Delay (Mintavételes egységnyi késleltetés függvény) paraméter-beállító ablaka) látható.

A Discrete Unit Delay (Mintavételes egységnyi késleltetés függvény) paraméter-beállító ablaka
B.41. ábra - A Discrete Unit Delay (Mintavételes egységnyi késleltetés függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • az initial condition (kezdeti feltétel) a kimenő jel értéke a k= 0 mintavételi időpontban. Alapértéke 0.

  • sample period (s) (a mintavételi idő) a mintavételi idő értéke másodpercben [s]. Alapértéke -1.

  • a sample skew (s) (mintavételi meredekség) paraméter értékét a mintavételi időpont meghatározásánál alkalmazzuk. Alapértéke 0.

B.1.6.2. Discrete Zero-Order Hold (Mintavételes nulladrendű tartó függvény)

A Discrete Zero-Order Hold (Mintavételes nulladrendű tartó függvény) egy olyan hisztórikus típusú blokk , amely a bemenő jel mintavételezett értékét a következő mintavételi időpontig változatlan értékkel bocsájtja ki kimenő jelként.

A Discrete Zero-Order Hold (Mintavételes nulladrendű tartó függvény) a következő időfüggvényt valósítja meg:

 

y(t i ) = u(t i ),        ha t i <= t < t i + sample skew (s)

(B.36)

 

y(t k ) = u(t k ),        ha t k <= t < t k+1

(B.37)

 

t k = t i + sample skew (s) + k * sample period (s) ,     k =0,1,2,….

(B.38)

ahol

k

a mintavételek száma,

 

ti

a szimuláció kezdési időpontja,

 

tk

a mintavételezés időpontja,

 

u(tk)

a mintavételezett bemenő jel a k. mintavételi időpontban,

 

y(tk)

a mintavételezett kimenő jel a k. mintavételi időpontban,

 

sample skew (s)

mintavételi meredekség [s],

 

sample period (s)

mintavételi periódus-időtartam [s].

A Discrete Zero-Order Hold (Mintavételes nulladrendű tartó függvény) paramétereinek kiszolgáló ablaka a következő ábrán (B.42. ábra - A Discrete Zero-Order Hold (Mintavételes nulladrendű tartó függvény) paraméter-beállító ablaka) látható.

A Discrete Zero-Order Hold (Mintavételes nulladrendű tartó függvény) paraméter-beállító ablaka
B.42. ábra - A Discrete Zero-Order Hold (Mintavételes nulladrendű tartó függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • sample period (s) (a mintavételi idő) a mintavételi idő értéke másodpercben [s]. Alapértéke -1.

  • a sample skew (s) (mintavételi meredekség) paraméter értékét a mintavételi időpont meghatározásánál alkalmazzuk. Alapértéke 0.

B.1.6.3. Discrete First-Order Hold (Mintavételes elsőrendű tartó függvény)

A Discrete First-Order Hold (Mintavételes elsőrendű tartó függvény) egy olyan hisztórikus típusú blokk , amely a bemenő jel mintavételezett értékét a következő mintavételi időpontig változatlan értékkel bocsájtja ki kimenő jelként.

A Discrete First-Order Hold (Mintavételes elsőrendű tartó függvény) a következő időfüggvényt valósítja meg:

 

y(t i ) = u(t i ), ha ( sample skew (s) < 0) és (t i <= t < t i + sample skew (s) )

(B.39)

 

vagy ha ( sample skew (s) = 0) és (t i <= t < t i + sample peroid (s)

 
 

y(t k ) = u(t k ) + m·(t- t k ), ha t k <= t < t k+1

(B.40)

 

t k = t i + sample skew (s) + k * sample period (s) , k =0,1,2,….

(B.41)

 

(B.42)

ahol

k

a mintavételek száma,

 

ti

a szimuláció kezdési időpontja,

 

tk

a mintavételezés időpontja,

 

u(tk)

a mintavételezett bemenő jel a k. mintavételi időpontban,

 

y(tk)

a mintavételezett kimenő jel a k. mintavételi időpontban,

 

sample skew (s)

mintavételi meredekség [s],

 

sample period (s)

mintavételi periódus-időtartam [s].

A Discrete First-Order Hold (Mintavételes elsőrendű tartó függvény) paramétereinek kiszolgáló ablaka a következő ábrán (B.43. ábra - A Discrete First-Order Hold (Mintavételes elsőrendű tartó függvény) paraméter-beállító ablaka) látható.

A Discrete First-Order Hold (Mintavételes elsőrendű tartó függvény) paraméter-beállító ablaka
B.43. ábra - A Discrete First-Order Hold (Mintavételes elsőrendű tartó függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • sample period (s) (a mintavételi idő) a mintavételi idő értéke másodpercben [s]. Alapértéke -1. Dimenziója másodperc [s].

  • a sample skew (s) (mintavételi meredekség) paraméter értékét a mintavételi időpont meghatározásánál alkalmazzuk. Alapértéke 0, dimenziója másodperc [s].

B.1.6.4. Discrete State-Space (Mintavételes állapottér modell)

A Discrete State-Space (Mintavételes állapottér modell) egy olyan hisztórikus típusú blokk , amely az adott szimulációs időpontban egy mintavételes állapottér modell új állapotait és az azokhoz tartozó új kimenő jelértékeket határozza meg a mintavételi időpontban.

 

(B.43)

A mintavételes állapottér modellben a jelölések a következők:

k

a mintavételezés k.· időpillanata,

 

h

a mintavételezési idő,

 

x[k]

az állapotváltozó a k·h időpillanatban,

 

x[k+1]

az állapotváltozó a (k+1)·h időpillanatban,

 

u[k]

a mintavételezett bemenő jel a k. mintavételi időpontban,

 

y[k]

a mintavételezett kimenő jel a k. mintavételi időpontban,

 

Ad, Bd, Cd, Dd

a mintavételes állapottér modell együtthatóinak mátrixai.

A Discrete State-Space (Mintavételes állapottér modell) paramétereinek kiszolgáló ablaka a következő ábrán (B.44. ábra - Discrete State-Space (Mintavételes állapottér modell) paraméter-beállító ablaka) látható.

Discrete State-Space (Mintavételes állapottér modell) paraméter-beállító ablaka
B.44. ábra - Discrete State-Space (Mintavételes állapottér modell) paraméter-beállító ablaka


A paraméterek alaptípusát és azok beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • a State-Space (Állapottér) paraméter megadja az állapottér leírás Ad, Bd, Cd és Dd mátrixainak méretét és értékeit. Alapesetben a modell egy bemenetű és egy kimenetű mintavételes állapottér modell paramétereinek megadását teszi lehetővé. Ha a bemenetre egy vektor típusú adatot kapcsolunk, akkor azonnal lehetőség van a bemenetekhez tartozó Bd mátrix paramétereinek megadására, és ekkor állíthatjuk be a többi kimenet értékét meghatározó Cd és Dd mátrixot is. Lehetőségünk van a mintavételes állapottér modellt fájlként tárolni, illetve korábban tárolt mintavételes állapottér modelleket a háttértárolóról betölteni.

    A B.45. ábra - MIMO Discrete State-Space (Mintavételes állapottér modell) paraméter-beállító ablaka a több bemenetű és több kimenetű (MIMO) mintavételes rendszer állapottér modelljének paraméterablakát mutatja be.

    MIMO Discrete State-Space (Mintavételes állapottér modell) paraméter-beállító ablaka
    B.45. ábra - MIMO Discrete State-Space (Mintavételes állapottér modell) paraméter-beállító ablaka


  • a sample period (s) (mintavételi idő = h) paraméter megadja a mintavételes szimulációs rendszer mintavételezési idejét. Alapértéke -1 (nincs megadva mintavételezési idő), dimenziója másodperc [s].

  • a sample skew (s) (mintavételi meredekség) paraméter értékét a mintavételi időpont meghatározásánál alkalmazzuk. Alapértéke 0, dimenziója másodperc [s].

  • az initial state (x0) (kezdeti állapotok) paramétervektor megadja az állapotváltozók értékét a szimuláció kezdő időpontjában. Alapértékük nulla (0) elemű vektor.

    A B.46. ábra - Discrete State-Space (Mintavételes állapottér modell) kezdeti állapotainak beállítása a kezdeti állapotok beállítási lehetőségét mutatja be az állapottér modell paraméterablakában:

    Discrete State-Space (Mintavételes állapottér modell) kezdeti állapotainak beállítása
    B.46. ábra - Discrete State-Space (Mintavételes állapottér modell) kezdeti állapotainak beállítása


  • a reset? (újraindítás?) paraméter megadja, hogy az állapottér modell a szimuláció egy megadott pillanatában újraindítódik vagy sem.

    Az újraindítás azt jelenti, hogy a szimuláció adott időpillanatában a mintavételes állapottér modell korábbi működését megszakítjuk, és új kezdeti állapotokkal az aktuális bemenő jellel folytatjuk tovább a szimulációt. Alapértéke nem (False).

  • a reset initial state (xr) (kezdeti állapotok újraindításkor) vektorparaméterrel adhatjuk meg az állapottér modell újraindítás utáni új állapotait.

B.1.6.5. Discrete Transfer Function (Mintavételes impulzus-átviteli függvény modell)

A Discrete Transfer Function (Mintavételes impulzus-átviteli függvény modell) egy olyan hisztórikus típusú blokk , amely az adott szimulációs időpontban egy folytonos átviteli függvénnyel leírt modell kimenő jelének értékeit határozza meg a bemenő jel alapján.

A Mintavételes impulzus-átviteli függvényt egy bemenet és egy kimenet esetén a következő egyenlettel írjuk le:

 

(B.44)

A Discrete Transfer Function (Mintavételes impulzus-átviteli függvény modell) paramétereit a B.47. paraméterbeállító ablakban adhatjuk meg.

Discrete Transfer Function (Mintavételes impulzus-átviteli függvény modell) paraméter-beállító ablaka
B.47. ábra - Discrete Transfer Function (Mintavételes impulzus-átviteli függvény modell) paraméter-beállító ablaka


A paraméterek alaptípusát és azok beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • a Transfer Function (Átviteli függvény modell) paraméter megadja az átviteli függvény számlálójában (numerator) és nevezőjében (denominator) s egész hatványainak együtthatóit. A 0. indexű elem s0 hatványának együtthatóját jelenti, az 1. indexű elem s szorzója, a 2. indexű elem s2-é és így tovább.Az átviteli függvényben nincs lehetőség kezdeti állapot megadására, vagyis minden állapotváltozó értéke nulla a szimuláció elindulásakor (t=0). Lehetőségünk van az átviteli függvény modellt fájlként tárolni, illetve korábban tárolt átviteli függvény modelleket a háttértárolóról betölteni.

    A B.48. ábra - MIMO Transfer Function Matrix (Átviteli függvény modell mátrix) paraméter-beállító ablaka a több bemenetű és több kimenetű (MIMO) rendszer átviteli függvény (mátrix) paraméterablakát mutatja be. Ilyen esetben minden bemenet és minden kimenet között meg kell adnunk az kimenet-bemenet pároshoz tartozó átviteli függvény együtthatóit.

    Az ábrán látható Input-Output Modell (Bemeneti-Kimeneti modell) mátrixában a megfelelő elemre kattintva megadhatjuk, hogy melyik kimenet és bemenet közötti átviteli függvény paramétereit láthatjuk a számláló és a nevező vektor elemeiben.

    MIMO Transfer Function Matrix (Átviteli függvény modell mátrix) paraméter-beállító ablaka
    B.48. ábra - MIMO Transfer Function Matrix (Átviteli függvény modell mátrix) paraméter-beállító ablaka


  • a sample period (s) (mintavételi idő = h) paraméter megadja a mintavételes szimulációs rendszer mintavételezési idejét. Alapértéke -1 (nincs megadva mintavételezési idő), dimenziója másodperc [s].

  • a sample skew (s) (mintavételi meredekség) paraméter értékét a mintavételi időpont meghatározásánál alkalmazzuk. Alapértéke 0, dimenziója másodperc [s].

  • a reset? (újraindítás?) paraméter megadja, hogy az állapottér modell a szimuláció egy megadott pillanatában újraindítódik vagy sem.

    Az újraindítás azt jelenti, hogy a szimuláció adott időpillanatában a mintavételes állapottér modell korábbi működését megszakítjuk, és új kezdeti állapotokkal az aktuális bemenő jellel folytatjuk tovább a szimulációt. Alapértéke nem (False).

B.1.7. Táblázattal megadott szimulációs paraméterek (Lookup Tables)

A Táblázattal megadott szimulációs paraméterek (Lookup Tables) palettán olyan elemek találhatók, amelyekkel lehetőségünk van a szimulációban táblázatosan megadott adatokat feldolgozni. Ezek a blokkok a táblázatban megadott függvényértékek esetén meghatározható interpolációs értékeket adják meg.

A Táblázattal megadott szimulációs paraméterek (Lookup Tables) paletta elemei
B.49. ábra - A Táblázattal megadott szimulációs paraméterek (Lookup Tables) paletta elemei


A modell létrehozásához leggyakrabban használt alpaletták:

 

Lookup Table 1D (Egydimenziós táblázati függvény)

 

Lookup Table 2D (Kétdimenziós táblázati függvény)

B.1.7.1. Lookup Table 1D (Egydimenziós táblázati függvény)

A Lookup Table 1D (Egydimenziós táblázati függvény) nem hisztórikus típusú blokk , amely diszkrét pontokban megadott bemenő jel és a hozzájuk rendelt kimenő jel alapján interpolációt valósít meg, hogy azokban a pontokban is meghatározhassa a kimenő jel értékét, amelyekben az nincs megadva.

A Lookup Table 1D (Egydimenziós táblázati függvény) a következő ábrán (B.50. ábra - A Lookup Table 1D (Egydimenziós táblázati függvény) interpolációs metódusa) látható időfüggvényt valósítja meg.

A Lookup Table 1D (Egydimenziós táblázati függvény) interpolációs metódusa
B.50. ábra - A Lookup Table 1D (Egydimenziós táblázati függvény) interpolációs metódusa


Az ábrán az

 

x(t)

a bemenő jel a szimulációs időpontban,

 

y(t)

a kimenő jel a szimulációs időpontban.

A Lookup Table 1D (Egydimenziós táblázati függvény) paramétereinek beállító ablaka a következő ábrán (B.51. ábra - A Lookup Table 1D (Egydimenziós táblázati függvény) paraméter-beállító ablaka) látható.

A Lookup Table 1D (Egydimenziós táblázati függvény) paraméter-beállító ablaka
B.51. ábra - A Lookup Table 1D (Egydimenziós táblázati függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • Method (Függvényközelítési eljárás) a megadott pontok alapján a közelítés módja.

    A Lookup Table 1D (Egydimenziós táblázati függvény) Method (Függvényközelítési eljárás) paraméter-beállító legördülő menüje
    B.52. ábra - A Lookup Table 1D (Egydimenziós táblázati függvény) Method (Függvényközelítési eljárás) paraméter-beállító legördülő menüje


    Néhány jellemző közelítési eljárás kimenő jeleinek ábráját mutatjuk be a következő ábrákon.

    A Lookup Table 1D (Egydimenziós táblázati függvény) Method paraméter = Interpolate (közelítés)
    B.53. ábra - A Lookup Table 1D (Egydimenziós táblázati függvény) Method paraméter = Interpolate (közelítés)


    A Lookup Table 1D (Egydimenziós táblázati függvény) Method paraméter = Below (alulról közelítés)
    B.54. ábra - A Lookup Table 1D (Egydimenziós táblázati függvény) Method paraméter = Below (alulról közelítés)


  • Lookup Table (a függvénydefiniáló pontok táblázata)  - ezek a pontkoordináták adják meg a függvény „ismert pontjait”. Az itt nem szereplő bementi értékekhez a Method (Metódus) menüben megadott közelítési eljárással történik a közelítő függvény alapján a kimenő jel közelítő értékének meghatározása.

B.1.7.2. Lookup Table 2D (Kétdimenziós táblázati függvény)

A Lookup Table 2D (Kétdimenziós táblázati függvény) nem hisztórikus típusú blokk , amely diszkrét pontokban megadott bemenő jelek és a hozzájuk rendelt kimenő jelek alapján interpolációt valósít meg, hogy azokban a pontokban is meghatározhassa a kimenő jel értékét, amelyekben az nincs megadva.

A Lookup Table 2D (Kétdimenziós táblázati függvény) a következő ábrán (B.55. ábra - A Lookup Table 2D (kétdimenziós táblázati függvény) interpolációs metódusa a bemenő jelek x(t) és y(t)) tanulmányozható időfüggvényt valósítja meg.

A Lookup Table 2D (kétdimenziós táblázati függvény) interpolációs metódusa a bemenő jelek x(t) és y(t)
B.55. ábra - A Lookup Table 2D (kétdimenziós táblázati függvény) interpolációs metódusa a bemenő jelek x(t) és y(t)


Az ábrán

 

x(t)

az első bemenő jel a szimulációs időpontban,

 

y(t)

a második bemenő jel a szimulációs időpontban,

 

z(t)

az interpolált kimenő jel a szimulációs időpontban,

A Lookup Table 2D (Kétdimenziós táblázati függvény) paramétereinek beállító ablaka a következő ábrán (B.56. ábra - A Lookup Table 2D (Kétdimenziós táblázati függvény) paraméter-beállító ablaka) látható.

A Lookup Table 2D (Kétdimenziós táblázati függvény) paraméter-beállító ablaka
B.56. ábra - A Lookup Table 2D (Kétdimenziós táblázati függvény) paraméter-beállító ablaka


A paraméterek típusát és beállításuk módját a Step Signal Generation (Ugrás függvény) fejezetben részletesen ismertettük.

A Parameters (Paraméterek) listában található paraméterek a következő tulajdonságúak:

  • Method (Függvényközelítési eljárás) a megadott pontok alapján a közelítés módja.

    A Lookup Table 2D (Kétdimenziós táblázati függvény) Method (Függvényközelítési eljárás) paraméter-beállító legördülő menüje
    B.57. ábra - A Lookup Table 2D (Kétdimenziós táblázati függvény) Method (Függvényközelítési eljárás) paraméter-beállító legördülő menüje


    Néhány jellemző közelítési eljárás kimenő jeleinek ábráját mutatjuk be a következő ábrákon.

    A Lookup Table 2D (Kétdimenziós táblázati függvény) Method paraméter = Interpolate (közelítés)
    B.58. ábra - A Lookup Table 2D (Kétdimenziós táblázati függvény) Method paraméter = Interpolate (közelítés)


    A Lookup Table 2D (Kétdimenziós táblázati függvény) Method paraméter = Nearest (legközelebbi)
    B.59. ábra - A Lookup Table 2D (Kétdimenziós táblázati függvény) Method paraméter = Nearest (legközelebbi)


  • Lookup Table (a függvénydefiniáló pontok táblázata)  - ezek a pontkoordináták adják meg a függvény „ismert pontjait”. Az itt nem szereplő bementi értékekhez a Method (Metódus) menüben megadott közelítési eljárással történik a közelítő függvény alapján a kimenő jel közelítő értékének meghatározása.

B.2. Modellelemek összekapcsolása

A LabVIEW-ban minden programozási elem egy objektum , amely rendelkezik attribútumokkal (saját változókkal), metódusokkal (eljárásokkal, amelyeket csak az objektum adataival hajthatunk végre), valamint eventekkel (eseményekkel). Az Irányítás és szimulációs hurok (Control & Simulation Loop) is egy ilyen objektum.

A korábban definiált szimulációs alaptagok csak az Irányítási és szimulációs hurok által rendelkezésükre bocsájtott paraméterekkel valamint a blokkban elhelyezve képesek számolni! Önállóan nem használhatók, mint LabVIEW VI-ok.

Ez azt is jelenti, hogy a szimulációs blokkoknak mindig egy Irányítás és szimulációs hurok (Control & Simulation Loop) belsejében kell elhelyeznünk. Ennek az a következménye, hogy egy Irányítás és szimulációs hurok összes időzítési paraméterének beállítása után tetszőleges bonyolultságú modellt építhetünk fel a szimulációs keretben.

Ez a szimulációs hurok párhuzamosan működtethető más hasonló tulajdonságú szimulációs hurkokkal, ezért egyszerre, egy időben, több szimulációs hurok is futtatható, amelyek globális változókon keresztül értékeket is átadhatnak egymásnak.

Az Irányítás és szimulációs hurok (Control & Simulation Loop) egyik különleges grafikai tulajdonsága a többi LabVIEW programelemmel szemben, hogy az összekötő vezetékeknek van adatfolyam iránya, amelyet minden vezetéken egy nyíl jelöl. Az elemek összekötése, illetve az összekötés törlése teljesen hasonló módon történik, mint minden más LabVIEW programban. A B.60. ábra - Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (soros kapcsolás) a szimulációs blokkban elhelyezett elemek összekötését mutatja be.

Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (soros kapcsolás)
B.60. ábra - Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (soros kapcsolás)


Az (B.60. ábra - Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (soros kapcsolás)) ábrán a szimulációs blokkok soros kapcsolását láthatjuk. A blokkok polimorf tulajdonsága alapján minden szimulációs blokk képes skalár (egyváltozós) vagy vektor típusú adatokkal számítást végezni. Így a Signal Generator kimenő jeléből és a Transfer Function kimenő jeléből egy vektort hoztunk létre és ezt juttatjuk el a Simulation Time Waveform blokkba, amely az adatokat az idő függvényében egy ábrába rajzolja.

Szimulációs blokkok párhuzamos kapcsolására látunk példát a következő ábrán (B.61. ábra - Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (párhuzamos kapcsolás)).

Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (párhuzamos kapcsolás)
B.61. ábra - Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (párhuzamos kapcsolás)


A harmadik példa (B.62. ábra - Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (negatív visszacsatolásos kapcsolás)) szimulációs blokkok visszacsatolással történő összekapcsolására mutat mintapéldát. Ebben az esetben is a megvalósítandó modell blokkdiagramját kell bemásolnunk a szimulációs keretbe:

Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (negatív visszacsatolásos kapcsolás)
B.62. ábra - Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek összekapcsolása (negatív visszacsatolásos kapcsolás)


Az eddig bemutatott példákban a szimulációs blokkok paramétereit kézi adatbevitellel adtuk meg. Lehetőség van azonban arra is, hogy a szimulációs paramétereket egy a szimulációs blokkon kívül elhelyezett számítással adjuk meg, és a kiszámított paramétert juttassuk el a szimulációs programunkba. Hogy láthassuk, melyik bementhez kapcsoljuk a kiszámított paramétert, a külső paraméterrel ellátott blokk megjelenítését váltsuk át a jobb oldali egér gombbal az „Icon Style” menüpontnál „Text Only” menüponttal a szimulációs blokk paramétereinek szöveges megjelenítésére.

Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek paraméterének kereten kívüli megadása
B.63. ábra - Az Irányítás és szimulációs hurokban (Control & Simulation Loop) elhelyezett elemek paraméterének kereten kívüli megadása


Külső paraméterátadást a Szabályozó tervezés (Control Design) rendszerből is megvalósíthatunk. Ilyenkor szükséges a Szabályozó tervezés (Control Design) programban tárolt átviteli függvény, állapottér alakot az Irányítás és szimulációs hurokban (Control & Simulation Loop) alkalmazott átviteli függvény és állapottér alakra áttranszformálni.

Hasonlóan szükséges lehet, hogy a Irányítás és szimulációs hurokban (Control & Simulation Loop) létrehozott modellezési elemek paramétereit juttassuk el a Szabályozó tervezés (Control Design) programba. Ezeket a feladatokat a következő ábrán (B.64. ábra - A Szabályozó tervezés (Control Design) és az Irányítás és szimulációs hurokban (Control & Simulation Loop) programok közötti modellkonverziót megvalósító VI-ok) látható VI-ok oldják meg, amelyek a Szabályozó tervezés (Control Design) programban a Model Conversion (Modell konverzió) alpaletta elemei között találhatók.

A Szabályozó tervezés (Control Design) és az Irányítás és szimulációs hurokban (Control & Simulation Loop) programok közötti modellkonverziót megvalósító VI-ok
B.64. ábra - A Szabályozó tervezés (Control Design) és az Irányítás és szimulációs hurokban (Control & Simulation Loop) programok közötti modellkonverziót megvalósító VI-ok


B.3. Almodell (Subsytem) létrehozása

A szimulációs modellekben gyakran vannak olyan részek (blokkdiagram részletek), amelyek megismétlődnek a modellben csak más paraméter értékkel. Jó lenne, ha ezeket a kis blokkdiagram részleteket tárolhatnánk, mint egy alprogramot és a különböző helyeken a megfelelő bemeneti paraméterekkel beillesztenénk a modellbe.

Másik gyakorlati igény a modellépítésnél, hogy a nagyon sok blokkból álló részletes modellt funkcionális blokkokból építhessük fel, illetve mi határozzuk meg, hogy mely elemek (blokkok) tartoznak az adott funkcionális blokkba. Ez az igény is azt jelenti, hogy a szimulációs modell blokkdiagramjának bizonyos részét egy alprogramba szeretnénk tárolni.

Vegyünk egy egyszerű példát, amelyben egy szabályozott szakaszhoz PID szabályozót építünk (B.65. ábra - PID szabályzó és szakasz programja).

PID szabályzó és szakasz programja
B.65. ábra - PID szabályzó és szakasz programja


Kék kerettel jelöltük meg a PID szabályozóhoz tartozó programrészt, ebből szeretnénk egy szimulációs alprogramot készíteni. A szimulációs alprogram létrehozása eltér a „normál” VI alprogram létrehozásától!

Az egérmutatóval jelöljük ki azokat a blokkokat és összekötéseket, amelyeket szeretnénk elhelyezni a szimulációs alprogramba.

PID szabályzó alprogram blokkjainak kijelölése
B.66. ábra - PID szabályzó alprogram blokkjainak kijelölése


Ezután az Edit menüben válasszuk ki a Create Simulation Subsystem (Szimulációs alprogram létrehozása) menüpontot

Szimulációs alprogram létrehozása a kijelölt blokkokból és összekötésekből
B.67. ábra - Szimulációs alprogram létrehozása a kijelölt blokkokból és összekötésekből


A létrehozott új szimulációs alprogram (Subsystem1)
B.68. ábra - A létrehozott új szimulációs alprogram (Subsystem1)


Ha a létrehozott alprogram területére kattintunk az egérgombbal, megjelenik az újonnan készített alprogram kiszolgáló ablaka. Az új szimulációs blokk teljesen ugyanolyan kezelési felülettel rendelkezik, mint a többi szimulációs blokk.

A létrehozott új szimulációs alprogram (Subsystem1) kiszolgáló ablaka
B.69. ábra - A létrehozott új szimulációs alprogram (Subsystem1) kiszolgáló ablaka


Ha az újonnan létrehozott alprogram területére kattintunk a jobb egérgombbal a megjelenő felugró menüből kiválaszthatjuk az Open Subsystem (Nyisd meg a alprogramot) menüpontot. Ekkor megjelenik az elkészített alprogram front panelja, amely a következő ábrán (B.70. ábra - A létrehozott új szimulációs alprogram (Subsystem1) front panelja) látható alakú.

A létrehozott új szimulációs alprogram (Subsystem1) front panelja
B.70. ábra - A létrehozott új szimulációs alprogram (Subsystem1) front panelja


A létrehozott új szimulációs alprogram (Subsystem1) diagram panelja
B.71. ábra - A létrehozott új szimulációs alprogram (Subsystem1) diagram panelja


A szimulációs program tetszőlegesen kijelölt blokkcsoportjából létrehozhatunk újabb alprogramokat. Az alprogramok tartalmazhatnak korábban készített alprogramokat is. Így lehetőségünk van adott feladatot elvégző, egymáshoz tartozó szimulációs programrészek egy blokkban történő egyesítésére, és jól áttekinthető modell készítésére.

B.4. A szimulációs modell vizsgálata időtartományban

A szimuláció működésének bemutatására a következő ábrán (B.72. ábra - A szimulációs mintapélda (PID szabályzó) blokkjainak összekapcsolása) látható szabályozási kör szimulációs programját vizsgáljuk meg.

A szimulációs mintapélda (PID szabályzó) blokkjainak összekapcsolása
B.72. ábra - A szimulációs mintapélda (PID szabályzó) blokkjainak összekapcsolása


A szimulációs mintapélda szimulációs kereténél beállított paraméterek a következő ábrán (B.73. ábra - A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei) tanulmányozhatók.

A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei
B.73. ábra - A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei


A szimulációs paraméterek ablakban beállított érték a következők:

  • A szimulációs program nulla (0) szimulációs kezdeti időponttól 20 s időtartamig számítja ki a keretben felépített modellt bementi és kimeneti jeleit.

  • A folytonos rendszerek szimulációjában alkalmazott integrálási formula állandó lépésközű Runge-Kutta4 (negyedrendű) eljárás.

  • A szimulációs adatokat 0,001 s mintavételi időpontokban fogjuk kirajzolni.

A Szimulációs keret paraméterablakának Timing Parameters (Időzítési paraméterek) fül beállított értékei, nem időszinkronizált futásnál
B.74. ábra - A Szimulációs keret paraméterablakának Timing Parameters (Időzítési paraméterek) fül beállított értékei, nem időszinkronizált futásnál


Az időzítési ablakban beállított paraméterek közül a legfontosabb az Syncronize Loop to Timing Source (A szimulációs hurok szinkronizálása egy időalap-generátorhoz) jelölőnégyzet állapota. Ha ez a jelölőnégyzet kijelölt állapotban van, akkor a szimuláció időlépése a SourceType (Időalap forrásnál) kijelölt frekvencia periódusideje és a Period (Periódus) paraméternél kijelölt számérték szorzata.

Az ábrán (B.74. ábra - A Szimulációs keret paraméterablakának Timing Parameters (Időzítési paraméterek) fül beállított értékei, nem időszinkronizált futásnál ) szereplő adatokkal ez az időtartam 1 kHz-es időalapnál megfelel 1 ms-os időalap-generátor periódusidőnek, amely a szimulációs keret periódus paraméterével (1000) megszorozva 1000 ms = 1 s időtartamot jelent.

Ez az időtartam telik el két szimulációs lépésköz között, függetlenül attól, hogy a szimulációs lépésköz milyen értékű.

Ha valóságos időszinkronizációt szeretnénk megvalósítani, akkor a szimulációs időlépés időtartamát (Step Size (s)) és a szinkronizációs időalap és a szimulációs keret „Periódus” paraméterével meghatározott értékeknek meg kell egyeznie.

Ez azt jelenti, hogy időszinkronizált futás esetén a következő ábrán (B.75. ábra - A Szimulációs keret paraméterablakának Timing Parameters (Időzítési paraméterek) fül beállított értékei, időszinkronizált futásnál ) látható időzítési paramétereket kell beállítanunk.

A Szimulációs keret paraméterablakának Timing Parameters (Időzítési paraméterek) fül beállított értékei, időszinkronizált futásnál
B.75. ábra - A Szimulációs keret paraméterablakának Timing Parameters (Időzítési paraméterek) fül beállított értékei, időszinkronizált futásnál


B.4.1. A modell vizsgálata időtől független (off-line) futtatási módban

Az elkészített szimulációs program időtől független futtatása azt jelenti, hogy a szimuláció időlépése (StepSize (s)) nincs semmiféle kapcsolatban a valós idővel, és a szimulációs program futási sebessége csak a számítógép sebességétől (órajelének frekvenciájától és operatív memória nagyságától) függ.

A szimulációs keret ebben az esetben a következő ábrán (B.76. ábra - A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei, időfüggetlen futtatás ) tanulmányozható paramétereket tartalmazza.

A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei, időfüggetlen futtatás
B.76. ábra - A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei, időfüggetlen futtatás


A Szimulációs keret paraméterablakának Timing Parameters fül paraméterei, időfüggetlen futtatás
B.77. ábra - A Szimulációs keret paraméterablakának Timing Parameters fül paraméterei, időfüggetlen futtatás


Időfüggetlen szimulációs programfuttatás esetén a program elindítása után addig nem látjuk az eredményeket, amíg a teljes szimuláció le nem fut. Ez a szimuláció kezdő időpontjától a szimuláció befejezési időpontjáig elvégzett összes szimulációs adatra vonatkozik. Ezután a grafikus megjelenítőkön és az indikátorelemeken lesznek láthatók a szimuláció eredményei.

A szimulációs program futtatása után a front panel a következő ábrán (B.78. ábra - A mintapélda front panelje a program futása után, időfüggetlen futtatás ) látható formában jelenik meg.

A mintapélda front panelje a program futása után, időfüggetlen futtatás
B.78. ábra - A mintapélda front panelje a program futása után, időfüggetlen futtatás


B.4.2. A modell vizsgálata időtől függő (on-line) futtatási módban

A szimulációs mintapélda szimulációs kereténél beállított paraméterek ( időtől függő) időszinkronizált működés esetén a következő ábrán (B.79. ábra - A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei, időszinkronizált futtatás ) követhetők nyomon.

A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei, időszinkronizált futtatás
B.79. ábra - A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei, időszinkronizált futtatás


A Szimulációs keret paraméterablakának Timing Parameters (Időzítési paraméterek) fül beállított értékei, időszinkronizált futtatás
B.80. ábra - A Szimulációs keret paraméterablakának Timing Parameters (Időzítési paraméterek) fül beállított értékei, időszinkronizált futtatás


A szimuláció óragenerátorának frekvenciája 1 kHz. A Periode = 1, ami 1/1kHz = 1 ms időtartammal, 1 ms-os mintavételi időt jelent, ugyanazt az értéket, mint a Step Size (s) a (B.79. ábra - A Szimulációs keret paraméterablakának Simulation Parameters (Szimulációs paraméterek) fül beállított értékei, időszinkronizált futtatás ) ábrán.

Ez azt jelenti, hogy a mintavételi időlépés és a beállított időlépés azonos érték, tehát a szimuláció időszinkronban fog futni, azaz 1 ms a szimulációs modell számításban 1 ms alatt fog lezajlani.

A szimulációs program futtatása után a front panel a következő ábrán (B.81. ábra - A mintapélda front panelje a program futása után, időszinkronizált futtatás ) látható formában jelenik meg.

A mintapélda front panelje a program futása után, időszinkronizált futtatás
B.81. ábra - A mintapélda front panelje a program futása után, időszinkronizált futtatás


A front panelen megjelelő ábra a valós idővel szinkronizálva jelenik meg, azaz az ábrán csak annyi időadatot látunk, mint az addig eltelt szimulációs idő. Az ábrán éppen a 11. és 12. másodperc között jártunk a szimulációval, amikor megállítottuk a számításokat.

C. függelék - Dinamikus rendszerek szimulációs eszközei (LabVIEW MathScript RT Module)

Tartalom
C.1. Bevezetés a LabVIEW programnyelvbe
C.1.1. Adatfolyam programozás
C.1.2. Grafikus programozás
C.1.3. Kapcsolat a külvilággal
C.1.4. A LabVIEW MathScript RT Module
C.2. LabVIEW MathScript RT Module alkalmazása
C.3. LabVIEW MathScript
C.3.1. Bevezetés
C.3.1.1. Hogyan indítsuk el a MathScript programot LabVIEW környezetben?
C.3.2. Programozási segítség
C.3.3. Mintapéldák
C.3.4. Hasznos utasítások
C.3.4.1. Függvények hívása a MathScript-ben
C.3.4.2. Felhasználó által definiált függvények a MathScript-ben (User-Defined Functions)
C.3.4.3. Scripts
C.3.5. Programozási struktúrák
C.3.5.1. If-else utasítás
C.3.5.2. Switch és case utasítás
C.3.5.3. For ciklus (véges számú végrehajtás)
C.3.5.4. While cilus (feltételtől függő számú végrehajtás)
C.3.6. Rajzolás (Plotting )
C.4. Lineáris algebrai mintapéldák (Linear Algebra)
C.4.1. Vektorok (Vectors)
C.4.2. Mátrixok (Matrix)
C.4.2.1. Transzponálás (Transpose)
C.4.2.2. Főátlóelemek (Diagonal)
C.4.2.3. Mátrixszorzás (Matrix Multiplication)
C.4.2.4. Mátrixösszeadás és -kivonás (Matrix Addition)
C.4.2.5. Mátrix determinánsa (Matrix Determinant)
C.4.2.6. Inverz mátrix (Inverse Matrix)
C.4.3. Sajátértékek (Eigenvalues)
C.4.4. Lineáris egyenletrendszer megoldása (Solving Linear Equations)
C.5. Irányítás-tervezés és szimuláció
C.5.1. Állapottérmodellek és átviteli függvények
C.5.1.1. PID (Arányos-integráló-differenciáló szabályozó)
C.5.1.2. Állapottérmodell (State-space model)
C.5.1.2.1. Átviteli függvény (Transfer function)
C.5.1.3. Elsőrendű arányos rendszer PT1 (First Order Systems)
C.5.1.4. Másodrendű arányos rendszer PT2 (Second Order Systems)
C.5.2. A Kapcsolat (connect) függvényosztály
C.5.2.1. Soros kapcsolat (series)
C.5.3. Az Átalakítás (convert) függvényosztály
C.5.3.1. Padé approximáció (Padé-approximation)
C.5.4. Frekvenciaválasz analízis (Frequency Response Analysis)
C.5.4.1. Bode diagram (Bode Diagram )
C.5.5. Időtartománybeli válaszfüggvények (Time Response)
C.5.5.1. Egységugrásra adott válaszfüggvény (step )
C.6. A MathScript blokk a LabVIEW programban (MathScript Node)
C.6.1. MathScript blokkok átvitele számítógépek között (Transferring MathScript Nodes between Computers)
C.6.2. Mintapéldák

A LabVIEW program számos modult tartalmaz, amelyekkel egyszerűbbé válik a folytonos és mintavételes rendszerek irányításának tervezése. A programcsomagban a következő elemek találhatók:

  • Rendszertervezés (LabVIEW Control Design Module)

  • Szimulációs modul (LabVIEW Simulation Module)

  • MathScript Rt modul (LabVIEW MathScript RT Module)

  • Identifikációs eszköz (LabVIEW System Identification Toolkit)

  • PID szabályozó és Fuzzy szabályozó tervezése (LabVIEW PID and Fuzzy Logic Toolkit)

  • Matlab-LabVIEW szimulácós modell kapcsolati eszköz (LabVIEW Simulation Interface Toolkit)

Ebben a részben a LabVIEW MathScript RT modullal ismerkedünk meg.

Mi a LabVIEW program?

A LabVIEW (betűszavakat, betűket kiemelve az angol elnevezésből Laboratory Virtual Instrumentation Engineering Workbench) egy programozási és fejlesztői környezet, egy vizuális programozási nyelv a National Instruments-től A grafikus nyelvet „G” nyelvnek nevezik.

Mi a MATLAB program?

A MATLAB egy programozási eszköz a műszaki számítások elvégzéséhez - számítások és megjelenítés egy integrált környezetben. A MATLAB egy rövidítés, amely a MATrix LABoratory-ból jött létre, így a program nagyon alkalmas mátrix elrendezésű adatokkal törénő műveletek elvégzére, valamint lineáris algebrai problémák megoldására. A MATLAB számos eszköz dobozt (toolbox) ajánl különböző területekre, így irányítás tervezésre (Control Design), képfeldolgozásra (Image Processing), digitális jelfeldolgozásra (Digital Signal Processing) valamint még számos egyéb területre.

Mi a MathScript program?

A MathScript egy magas szintű, szöveg-alapú programozási nyelv. A MathScript mintegy 800 beépített függvényt tartalmaz, és szintaxisa teljesen megegyezik a MATLAB-ban alkalmazottal. A MATLAB-hoz hasonlóan ebben a környezetben is lehet felhasználó által készített .m fájlokat létrehozni.

A MathScript a LabVIEW egy hozzáadott modulja, de nem szükséges a LabVIEW programozását ismerni, azért hogy használhassuk a MathScriptet. Ha szeretnénk alkalmazni a (beépített vagy a felhasználó által készített) MathScript függvényeket, mint a LabVIEW program egy részét, és kombinálni a grafikus és szöveg típusú programozást, akkor alkalmazhatjuk a MathScript struktúrát.

A Mathlab beépített függvényeihez különböző kiegészítő modulok és eszközök (toolkit) adhatók hozzá. A LabVIEW Irányítás Tervezés és Szimuláció modul (Control Design and Simulation Module) és a Digitális Szűrő tervezés Eszköz (Digital Filter Design Toolkit) számos ilyen .m fájlt hoz létre telepítésekor.

További információkat a következő Internet címen találunk a MathScript-ről: http://www.ni.com/labview/mathscript.htm

C.1. Bevezetés a LabVIEW programnyelvbe

A LabVIEW (a hosszú angol elnevezésből Laboratory Virtual Instrumentation Engineering Workbench rövidítve) egy programozási és fejlesztői környezet, egy vizuális programozási nyelv a National Instruments-től. A grafikus nyelvet „G” nyelvnek nevezik. Legelső verziója egy Apple Macintosh számítógépre készült 1986-ban. A LabVIEW-t általánosan használják adatgyűjtésre, berendezések irányítására valamint ipari automatizálásra különböző operációs rendszerekben, amelyek a következők: Microsoft Windows, különböző UNIX verziók, LINUX és Mac OS X. A legutolsó LabVIEW verzió a LabVIEW 2013 amelyet 2013 augusztusában bocsájtottak ki. További információk a National Instruments honlapján, a www.ni.com oldalon találhatók.

A LabVIEW nagyszámú kiegészítő programot (add.on) és eszközkészletet (toolkit) ajánl a különböző feladatú programok fejlesztéséhez.

C.1.1. Adatfolyam programozás

A LabVIEW által alkalmazott programozási nyelv, amelyet G nyelvnek is nevezünk – egy adatfolyam programozási nyelv. A végrehajtás sorrendjét a program grafikus blokk diagramjának struktúrája határozza meg (ez a LabVIEW „forráskód”), amelyben a programozó a különböző funkciójú blokkokat vezetékekkel kapcsolja össze. Ezek a vezetékek továbbítják a kiszámított értéket, és bármelyik blokk azonnal végrehajtódik, amint minden bemeneti adata megérkezik.

A G nyelv alkalmas a blokkok (struktúrák) párhuzamos működtetésére. A többprocesszoros lehetőséget és többszálon működő programszervezést automatikusan kihasználja a beépített program ütemező, amely az operációs rendszer szálai között kapcsolgat, amikor a blokkot a végrehajtáshoz előkészíti.

C.1.2. Grafikus programozás

A LabVIEW a felhasználói kiszolgáló felület - az elnevezése front (előlap) panel – szervesen hozzákapcsolódik a programfejlesztéshez. A LabVIEW programokat/alprogramokat virtuális berendezésnek VI-nak nevezzük az angol elnevezés – virtual instrument- kezdőbetűiből.

Minden VI-nak három fő része van: a front panel, a diagram panel és az ikon konnektor. Az ikon konnektor feladata, hogy megjelenítse a VI-t egy blokk diagramban, ahol ez a VI meghívódik egy feladat végrehajtására.

A vezérlők (controls) és a megjelenítők (indicators) a front panelen biztosítják a program kezelőjének, hogy megadjon egy bemeneti adatot, vagy megjelenítsen egy kiszámított értéket a futó VI-ból.

A front panel ezen kívül programozási felületként is szolgál. Egy virtuális berendezés (.VI) vagy programként fut, ebben az esetben a front panel a programozó felé felhasználói felületként szolgál, vagy egy másik VI blokk diagramjában szerepel végrehajtandó blokként, ahol az ikon konnektor segítségével viszi be a kiszámítandó blokkba a bemeneti adatokat, majd ugyanezen ikon konnektoron keresztül olvassa ki az eredményeket. Ez azt is magában foglalja, hogy a VI-ok egyszerűen tesztelhetők, mielőtt elhelyeznénk őket egy nagyobb program blokk diagramjába alprogramként.

A grafikus programozás szintén előnyös lehetőséget biztosít olyan „nem-programozó” típusú alkalmazóknak is, akik bizonyos, előre megírt VI-okat egyszerűen csak le akarnak emelni az eszközök palettájáról és be akarnak építeni a saját programjukba. A LabVIEW programozói környezet, amely számos példát és dokumentumot tartalmaz, egyszerűvé teszi, hogy kis alkalmazásokat (VI-okat) gyorsan elkészítsünk.

Ez valóban előny az egyik oldalról, de ugyanakkor egy bizonyos veszély is, hogy alábecsüljük a szakértelmünket, amely egy jó minőségű „G” program előállításához szükséges. A komplex algoritmusok esetén, illetve a nagyméretű adatkezelésnél nagyon fontos, hogy a programozónak részletes, biztos tudása legyen a speciális LabVIEW szintaxisról és a memória felhasználás rejtelmeiről. A legbonyolultabb LabVIEW fejlesztői rendszer is kínál lehetőséget, hogy egyéni alkalmazásokat készítsünk.

Továbbá, lehetséges olyan elosztott alkalmazást készíteni, amely az ügyfél/kiszolgáló sémán keresztül kommunikál, és amelyet mindkét oldalon könnyű létrehozni a „G” kód párhuzamos működése miatt.

C.1.3. Kapcsolat a külvilággal

A LabVIEW előnye más fejlesztői rendszerek mellett, hogy egyre nagyobb mennyiségű támogatás ad az egyre nagyobb mennyiségű hardvereszköz alkalmazásához. Eszközmeghajtó programokat biztosít a világon létező, szinte összes mérőberendezéshez és információs vonalhoz, amelyek kiszolgáló felülete szabványos programokkal működve kommunikál a hardver berendezésekkel.

A javasolt eszközmeghajtók nagyon sok programozási időt takarítanak meg.

További információkért érdemes felkeresni a http://ni.com Internet oldalt.

C.1.4. A LabVIEW MathScript RT Module

A LabVIEW MathScript RT Module egy hozzáadott modul a LabVIEW programhoz.

A LabVIEW rendszer a MathScript RT Module segítségével a következő feladatok megoldására lesz képes:

  • Alkalmazhatunk felhasználói ”.m” file-okat az NI valós idejű hardverekhez.

  • Újra felhasználhatunk sok-sok programot, amelyet „The MathWorks, Inc. MATLAB®” programmal korábban létrehoztunk.

  • Fejleszthetünk saját ”.m” fájlokat egy interaktív, utasítássor végrehajtó programmal.

  • Elhelyezhetjük a kifejlesztett ”.m” kódokat a LabVIEW programban a MathScipt végrehajtó blokk alkalmazásával.

C.2. LabVIEW MathScript RT Module alkalmazása

A LabVIEW MathScript program két felületen keresztül hajthat végre utasításokat:

  • A LabVIEW MathScript interaktív ablakban (LabVIEW MathScript Interactive Window) vagy a

  • MathScript blokkban (MathScript Node) elhelyezett utasításokkal a LabVIEW programban.

A LabVIEW MathScript RT Module kiegészíti a LabVIEW tradicionális grafikus programozási rendszerét a legfrisebb fejlesztésű jelfeldolgozási és jelanalízis programokkal. A LabVIEW MathScript RT Module felgyorsítja ezek és más egyéb feladatok végrahajtási sebességét azzal, hogy lehetővé teszi a felhasználó számára ugyanabban a fejlesztői környezetben a szöveges vagy grafikus, vagy ezek kombinációjával megvalósított programfejlesztést. Mindehhez még felhasználhatók a legjobb LabVIEW programok és a több ezer publikált ”.m” fájlok a webről, a különböző könyvekből vagy saját fejlesztésből.

A LabVIEW MathScript RT Module képes olyan programok futtatására, amely a jelenlegi MathScript szintaxist alkalmazza, de alkalmas arra is, hogy a korábbi verziók örökölt MathScript műveleteit is végrehajtsa.

A LabVIEW MathScript RT Module szintén képes végrehajtani bizonyos utasításokat, amelyeket más szöveg típusú nyelven írtak, mint például MATLAB programnyelven. A LabVIEW MathScript RT Module támogatja a MATLAB-ban megvalósított programozási struktúrák többségét, és a szintaxis is teljesen hasonló.

A MathScript RT végrehajtó programot (engine) alkalmazzuk, hogy végrehajtsunk olyan programrészeket, amelyeket a MathScript ablakban (MathScript Windows) vagy a MathScript blokkban (MathScript Node) helyeztünk el.

További részleteket találhatunk a http://zone.ni.com/devzone/cda/tut/p/id/3257 Internet címen.

C.3. LabVIEW MathScript

C.3.1. Bevezetés

Követelmény: MathScript RT Module

Hogyan indítsuk el a MathScript programot LabVIEW környezetben? Először telepítenünk kell a LabVIEW rendszert, majd ezután a LabVIEW MathScript RT Module-t. Amikor a szükséges programokat telepítettünk a számítógépre, a LabVIEW megnyitása után elindíthatjuk a MathScript programot.

C.3.1.1. Hogyan indítsuk el a MathScript programot LabVIEW környezetben?

Amikor a szükséges programokat telepítettük, a MatScript elindítását a LabVIEW indításával kell elkezdenünk.

A LabVIEW képernyője az indítás után
C.1. ábra - A LabVIEW képernyője az indítás után


A MathScript-et a LabVIEW indító ablakának (Getting Started) Tools menüjéből a MathScript Window...: menüponttal indíthatjuk el.

A MathScript program elindítása
C.2. ábra - A MathScript program elindítása


A LabVIEW MathScript Window egy interaktív adatbeviteli/megjelenítő ablak, amelyekben megadhatunk ”.m” utasításfájlokat, és azonnal megtekinthetjük az eredményeket, a programban szereplő változók értékeit és a korábban végrehajtott utasításokat.

Az ablak tartalmaz egy utasításablakot is, amely lehetővé teszi, hogy sorról sorra utasításokat adjunk meg gyors számítások elvégzéséhez, az utasítások szintaktikájának ellenőrzéséhez vagy tanuláshoz. Alternatívaként az utasítások egy csoportját (egy sornál hosszabb utasítást) végrehajthatunk a program szerkesztő ablakában (script editor window).

(C.3. ábra - A MathScript program indulási képernyője)

A MathScript program indulási képernyője
C.3. ábra - A MathScript program indulási képernyője


Ahogy fut a program, a változói folyamatosan frissülnek ebben az ablakban, hogy szövegesen vagy grafikus formában megtekinthessük az eredményeket valamint a korábbi utasítások ablakában visszanézhetjük, hogy milyen utasításokat hajtott végre korábban.

A korábbi utasításokat bemutató ablakban megtekinthetők az algoritmus fejlesztésének lépései, továbbá a vágólapon keresztül lehetőség van ismételten felhasználni a korábban végrehajtott utasításokat.

A LabVIEW MathScript Window-t arra is használhatjuk, hogy begépeljünk egy utasítássort vagy megadjunk egy utasításcsoportot, amelyet az egyszerű szövegszerkesztő ablakban állítottunk elő, vagy betöltöttük egy szöveg típusú állományból, illetve egy másik szövegszerkesztőből.

A LabVIEW MathScript Window azonnal megjeleníti az eredményeket különböző alakban, szövegesen vagy grafikusan.

Mintapéldák a különböző ablaktípusokra a (C.4. ábra - A MathScript programszerkesztő ablak (Script), C.5. ábra - A MathScript programváltozók ablaka (Variables) és C.6. ábra - A MathScript program korábbi utasítások ablaka (HIstory)) ábrákon láthatók.

A MathScript programszerkesztő ablak (Script)
C.4. ábra - A MathScript programszerkesztő ablak (Script)


A MathScript programváltozók ablaka (Variables)
C.5. ábra - A MathScript programváltozók ablaka (Variables)


A MathScript program korábbi utasítások ablaka (HIstory)
C.6. ábra - A MathScript program korábbi utasítások ablaka (HIstory)


C.3.2. Programozási segítség

Begépelhetjük a segítségkérést az utasítás ablakba

>>help

Vagy ettől pontosabb kérésmegadással:

>>help plot

Az utasításablakban megjelenő segítségkérésre a LabVIEW Segítség ablakának a keresett témához kapcsolódó része jelenik meg. (C.7. ábra - A MathScript program Segítség ablaka)

A MathScript program Segítség ablaka
C.7. ábra - A MathScript program Segítség ablaka


C.3.3. Mintapéldák

Azt tanácsolom az Olvasónak, hogy dolgozza fel az összes LabVIEW MathScript mintapéldát ebből a leírásból, hogy gyakorlatot szerezzen a program használatában és szintaxisának megismerésében. Minden mintapélda ebben a leírásban ugyanilyen keretben jelenik meg

>>
…

Az utasításokat az utasításablakba (Command Window) kell beírni.

A ”>>” szimbólum fogja jelezni, hogy az ezt következő szöveg egy utasítás, amelyet az utasítás ablakba kell beírni.

Mintapélda: Mátrixok

Definiáljuk MathScript-ben a következő mátrixot:

 

(C.1)

A megadás formája:

>> A = [1 2;0 3]

vagy

>> A = [1,2;0,3]

Ha például meg akarjuk határozni a következő számítás eredményét

 

a+b ahol a=4; és b=3;

(C.2)

akkor a következő utasításokat kell begépelni:

>>a=4
>>b=3
>>a+b

A MathScript a következő választ adja a kimeneti ablakban (Output Window):

ans =
    7

A MathScript egyszerű módon definiálja a kezdőértékkel feltöltött vektorokat: “init:increment:terminator”, ahol (init=kezdőérték; increment=növekmény; terminator= végérték). Például:

>> array = 1:2:9

array =
1 3 5 7 9

Az utasítás definiálja a változó nevét, amely most array (vagy hozzárendel egy új értéket a már létező array változóhoz). A vektor típusú array változó, a következő értékeket fogja tartalmazni: 1, 3, 5, 7 és 9.

Az array elnevezésű változó első elemének értéke az (init=kezdőérték), minden további vektorelemnél az elem értéke növekedni fog 2-vel (increment=növekmény) amíg el nem éri (vagy túl nem lépi) a 9-et, a végértéket (terminator= végérték).

A növekmény értékét elhagyhatjuk, a nyelv szintaxisa ebben az esetben 1-el helyettesíti a növekmény értékét.

>> ari = 1:5

ari =
     1 2 3 4 5

Az utasítás hozzárendelte az 1-től 5-ig értékeket az ari vektor megfelelő indexű elemihez, úgy hogy növekményként automatikusan 1-et alkalmazott.

Megjegyezzük, hogy az indexelés a MathScript-ben eggyel (1) kezdődik, ami a matematikában általános megállapodás. Ez azonban nem általános a programozási nyelvekben, ahol a mátrixok indexelése gyakran nullával (0) kezdődik.

A mátrixok definiálása úgy történik, hogy az egyes indexek maximális értékét vesszővel vagy szóköz karakterrel választjuk el egymástól, és pontosvesszőt használunk az egyes sorok elválasztására. A mátrixelemek listáját szögletes zárójelek közé írjuk.

A zárojeleket () használjuk, hogy elérjük a mátrix egyes elemeit vagy almátrixát (amelyeket szintén alkalmazhatunk, amikor függvényeket adunk meg az argumentumlistában)

>> A = [16 3 2 13; 5 10 11 8; 9 6 7 12; 4 15 14 1]
A =
16 3 2 13
5 10 11 8
9 6 7 12
4 15 14 1

>> A(2,3)

ans =
    11

Az indexek egy halmaza adható meg például a "2:4" kifejezéssel, amely a következő értéklistát jelenti:[2, 3, 4]. Például ha szeretnénk egy almátrixot kijelölni a 2. sortól a 4. ig és a 3. oszloptól a 4. ig, akkor a következő utasítást kell írnunk:

>> A(2:4,3:4)

ans =
    11    8
    7    12
    14    1

Egy négyzetes egységmátrix könnyen megadható az eye függvény segítségével, valamint a zeros és ones függvényekkel tetszőleges méretű nullával vagy eggyel feltöltött mátrixot létrehozhatunk:

>> eye(3)
ans =
    1   0   0
    0   1   0
    0   0   1

>> zeros(2,3)
ans =
    0   0   0
    0   0   0

>> ones(2,3)
ans =
    1   1   1
    1   1   1

C.3.4. Hasznos utasítások

Néhány gyakran alkalmazott utasítást a (C.1. táblázat - Gyakran használt utasítások) táblázatban gyűjtöttünk csokorba.:

C.1. táblázat - Gyakran használt utasítások

Utasítás

Leírás

eye(x)

x sorú és oszlopú egységmátrix,

ones(x), ones(x,y)

x sorú és y oszlopú, egységnyi elemeket tartalmazó mátrix,

zeros(x), zeros(x,y)

x sorú és y oszlopú, zérus elemeket tartalmazó mátrix,

size(A)

az A mátrix dimenzióinak értéke,

A’

az A mátrix inverz mátrixa.


C.3.4.1. Függvények hívása a MathScript-ben

A MathScript több mint 800 beépített függvényt tartalmaz.

Mintapélda : Beépített függvények

Adott egy vektor:

>>x=[1 2 5 6 8 9 3]

› Keressük meg az x vektor átlagértékét!

› Keressük meg az x vektor minimum értékét!

› Keressük meg az x vektor maximum értékét!

A feladatok megoldását szolgáltató MathScript kód a következő:

x=[1 2 5 6 8 9 3]
mean(x)
min(x)
max(x)

[ Mintapélda vége]

C.3.4.2. Felhasználó által definiált függvények a MathScript-ben (User-Defined Functions)

A MathScript beépített függvényei mellett számos esetben szükséges, hogy saját magunk hozzunk létre függvényeket.

Ahhoz, hogy saját függvényt hozzunk létre a MathScript-ben, alkalmazzuk a következő szintaxist:

function  output = function_name (inputs)
% documentation
…

A (C.8. ábra - Saját függvény létrehozása és ellenőrzése MathScript-ben) ábrán láthatók a függvénydefiniálás egyes lépései a MathScript-ben.

Saját függvény létrehozása és ellenőrzése MathScript-ben
C.8. ábra - Saját függvény létrehozása és ellenőrzése MathScript-ben


Saját függvény működésének ellenőrzése
C.9. ábra - Saját függvény működésének ellenőrzése


C.3.4.3. Scripts

Az alprogram (script) a MatScript utasítások sorozata, amelyet egy feladat megoldásánál akarunk végrehajtani. Amikor létrehoztuk az alprogramot, (scriptet), eltárolhatjuk azt egy ”.m” fájlban későbbi felhasználásra.

Script működésének ellenőrzése
C.10. ábra - Script működésének ellenőrzése


Egyszerre több script ablakot is nyitva tarthatunk a program szerkesztéséhez, amelyeket a New Script Editor (Új scriptszerkesztő) paranccsal hozhatunk létre a File menüből:

Új script létrehozása a File menüből
C.11. ábra - Új script létrehozása a File menüből


A menüválasztás a (C.12. ábra - Az új script ablaka a képernyőn) ábrán látható ablakot eredményezi.

Az új script ablaka a képernyőn
C.12. ábra - Az új script ablaka a képernyőn


C.3.5. Programozási struktúrák

Ez a fejezet bemutatja a MathScript-ben alkalmazható alapvető programstruktúrákat.

A programozási struktúrák a következők:

  • If-else utasítás

  • Switch és case utasítás

  • For ciklus

  • While ciklus

C.3.5.1. If-else utasítás

Az if (ha) utasítás kiszámít egy logikai kifejezést és végrehajtja az utasítások egy csoportját, ha a logikai kifejezés igaz. Az utasítás tartalmazhat egy else (egyébként) ágat is, amelyet a kifejezés hamis értéke esetén hajt végre a program. Az end (vége) utasítás a feltételes utasítás befejezését jelenti, mint a feltételes utasítás utolsó eleme. Az utasítások egyes csoportjait a négy if alapelem határolja – nincsenek zárójelek vagy kapcsos zárójelek.

Mintapélda : If-Else utasítás

Próbáljuk ki a következő MathScript kódsorozatot:

n=5
if n > 2
    M = eye(n)
elseif n < 2
    M = zeros(n)
else
    M = ones(n)
end

[ Mintapélda vége]

C.3.5.2. Switch és case utasítás

A switch (kapcsoló) az utasítások egy csoportját hajtja végre, amelyet egy érték vagy egy kifejezéssel meghatározott változó értékével jelölünk ki.

A case (eset) kulcsszó határolja az egyes csoportokat. A switch struktúra csak a kiválasztott eset (case) utasításait hajtja végre.

Az utasítást egy end (vége) utasítás zárja be, mint a struktúra utolsó utasítása.

Mintapélda : Switch és case utasítás

Próbáljuk ki a következő MathScript kódsorozatot:

n=2
switch(n)
case 1
    M = eye(n)
case 2
    M = zeros(n)
case 3
    M = ones(n)
end

[ Mintapélda vége]

C.3.5.3. For ciklus (véges számú végrehajtás)

A for cikus meghatározott számszor ismétli az utasítások egy csoportjának végrehajtását. A legutolsó utasításként szereplő end (vége) utasítás az utasításcsoport határolója.

Mintapélda : For ciklus

Próbáljuk ki a következő MathScript kódsorozatot:

m=5
for n = 1:m
r(n) = rank(magic(n));
end
r

[ Mintapélda vége]

C.3.5.4. While cilus (feltételtől függő számú végrehajtás)

A while ciklus egy logikai változó értékétől függően ismétli az utasítások egy csoportjának végrehajtását (akár végtelenszer is!). A legutolsó utasításként szereplő end (vége) utasítás az utasításcsoport határolója.

Mintapélda : While ciklus

Próbáljuk ki a következő MathScript kódsorozatot:

m=5;
while m > 1
    m = m - 1;
    zeros(m)
end

[ Mintapélda vége]

C.3.6. Rajzolás (Plotting )

Ez a fejezet bemutatja, hogy hogyan hozhatunk létre rajzokat a MathScript-ben. A mintapéldák feldolgozásával megismerkedünk az alapvető rajzoló utastásokkal.

Mintapélda : Rajzolás 2D (Plotting )

A plot (rajzolás) függvényt arra használjuk, hogy két vektorból x-ből és y-ból egy grafikont hozzunk létre. A MathScript kód a (C.13. ábra - A plot(x,y) függvény alkalmazásának eredménye) ábrán látható szinusz függvényt hozza létre.

x = 0:pi/100:2*pi;
y = sin(x);
plot(x,y)

A plot(x,y) függvény alkalmazásának eredménye
C.13. ábra - A plot(x,y) függvény alkalmazásának eredménye


[ Mintapélda vége]

Mintapélda : Rajzolás 3D (Plotting )

Háromdimenziós grafikus felület ábrája készíthető a surf, plot3 vagy a mesh rajzoló utasításokkal.

[X,Y] = meshgrid(-10:0.25:10,-10:0.25:10);

f = sinc(sqrt((X/pi).^2+(Y/pi).^2));
mesh(X,Y,f);
axis([-10 10 -10 10 -0.3 1])

xlabel('{\bfx}')
ylabel('{\bfy}')
zlabel('{\bfsinc} ({\bfR})')
hidden off

A fenti MathScript kód a (C.14. ábra - A mesh(X,Y,f) függvény alkalmazásának eredménye) ábrán látható 3D-s rajzot hozza létre.

A mesh(X,Y,f) függvény alkalmazásának eredménye
C.14. ábra - A mesh(X,Y,f) függvény alkalmazásának eredménye


[ Mintapélda vége]

C.4. Lineáris algebrai mintapéldák (Linear Algebra)

A Linear Algebra (lineáris algebra) a matematikai utasítások csoportja, amely lehetővé teszi a mátrixok és vektorok, valamint vektorterek (más elvezéssel lineáris terek), lineáris térképek (más néven lineáris transzformációk) és lineáris egyenletrendszerek tanulmányozását.

C.4.1. Vektorok (Vectors)

Adott egy x vektor:

 

(C.3)

Mintapélda : vektorok

Adott a következő vektor

 

(C.4)

>> x=[1; 2; 3]
x =
    1
    2
    3

Az x vektor transzponáltja (transpose):

>> x'
ans =
    1  2  3

[ Mintapélda vége]

C.4.2. Mátrixok (Matrix)

Adott egy A mátrix:

 

(C.5)

Mintapélda : mátrixok

Adott a következő mátrix:

 

(C.6)

>> A=[0 1;-2 -3]
A =
    0    1
    -2  -3

[ Mintapélda vége]

C.4.2.1. Transzponálás (Transpose)

Az A mátrix transzponáltja:

 

(C.7)

Mintapélda : transzponálás

Adott a következő mátrix:

 

(C.8)

>> A'
ans =
    0   -2
    1   -3

[ Mintapélda vége]

C.4.2.2. Főátlóelemek (Diagonal)

Az A mátrix diagonális (főátlóbeli elemei) egy vektort alkotnak

 

(C.9)

Mintapélda : diagonál

Keressük meg az A mátrix diagonális elemeit:

>> diag(A)
ans =
    0
    -3

[ Mintapélda vége]

C.4.2.3. Mátrixszorzás (Matrix Multiplication)

Adottak az és a matrixok és

 

(C.10)

ahol

 

(C.11)

Mintapélda : mátrixszorzás

>> A=[0 1;-2 -3]
A =
    0     1
    -2   -3

>> B=[1 0;3 -2]
B =
    1     0
    3    -2

>> A*B
ans =
    3      -2
    -11   6

[ Mintapélda vége]

Megjegyzés!

 

(C.12)

C.4.2.4. Mátrixösszeadás és -kivonás (Matrix Addition)

Adottak az és a matrixok és

 

(C.13)

ahol

 

(C.14)

Mintapélda : mátrixok összadása és kivonása

>> A=[0 1;-2 -3]
A =
    0     1
    -2   -3

>> B=[1 0;3 -2]
B =
    1     0
    3    -2

>> A+B
ans =
    1     1
-5

>> A-B
ans =
    -1     1
    -5     1

[ Mintapélda vége]

C.4.2.5. Mátrix determinánsa (Matrix Determinant)

Egy négyzetes mátrix determinánsát a következő módon jelöljük:

 

(C.15)

Ha van egy 2x2 mátrixunk:

 

(C.16)

Akkor a mátrix determinánsát a következő módon kapjuk

 

(C.17)

Mintapélda : determináns

Határozzuk meg a determináns értékét:

A =
    0    1
    -2   -3

>> det(A)
ans =
    2

Megjegyezzük, hogy

 

(C.18)

 

(C.19)

Határozzuk meg a determináns értékét:

>> det(A*B)
ans =
    -4

>> det(A)*det(B)
ans =
    -4

>> det(A')
ans =
    2
>> det(A)
ans =
    2

[ Mintapélda vége]

C.4.2.6. Inverz mátrix (Inverse Matrix)

Egy négyzetes mátrix inverz mátrixát a következő módon jelöljük:

 

(C.20)

ha

 

(C.21)

Ha van egy 2x2 mátrixunk:

 

(C.22)

Az inverz mátrixot a következő módon kapjuk

 

(C.23)

Mintapélda : inverz mátrix

A =
    0    1
    -2  -3

>> inv(A)
ans =
    -1.5000   -0.5000
     1.0000      0.0000

[ Mintapélda vége]

C.4.3. Sajátértékek (Eigenvalues)

Adott egy négyzetes mátrix, melynek sajátérték vektorát a következő módon számítjuk:

 

(C.24)

ahol

 

a sajátértékek vektora

Mintapélda : sajátértékek

Keressük meg a sajátértékeket:

A =
    0     1
    -2   -3

>> eig(A)
ans =
    -1
     -2

[ Mintapélda vége]

C.4.4. Lineáris egyenletrendszer megoldása (Solving Linear Equations)

Adott a következő lineáris egyenletrendszer:

 

(C.25)

melynek megoldása:

 

(C.26)

(Feltételezzük, hogy A inverze létezik.)

Mintapélda : Lineáris egyenletrendszer megoldása

Oldjuk meg a következő egyenletet,

 

(C.27)

amit felírhatunk a következő formában is

 

(C.28)

A lineáris egyenlet megoldása a következő:

A =
    1     2
     3    4

>> b=[5;6]
b =
    5
    6

>> x=inv(A)*b
x =
    -4.0000
     4.5000

A MathScript-ben alkalmazható a ”x=A\b” forma, amely ugyanazt az eredményt adja. Ez a szinataxis akkor is alkalmazható, amikor A mátrix inverze nem létezik.

Illegális művelet nem négyzetes mátrix esetén:

>> A=[1 2;3 4;7 8]

>> x=inv(A)*b
??? Error using ==> inv
Matrix must be square.

>> x=A\b
x =
    -3.5000
    4.1786

[ Mintapélda vége]

C.5. Irányítás-tervezés és szimuláció

Amennyiben a LabVIEW MathScript lehetőségeit irányítás-tervezési feladatok megoldására szeretnénk használni, teleptenünk kell a LabVIEW program egy további eszközkészletét az Irányítás tervezés és szimulációs modult (Control Design and Simulation Module) a korábban telepített MathScript RT Module-hoz.

Az Irányítás-tervezés és szimuláció MathScript RT Module függvényeit alkalmazhatjuk lineáris szabályozási körök tervezéséhez, analíziséhez és szimulációjához úgy, hogy közben egy szöveg típusú nyelvet használunk. A következő rész bemutatja az Irányítás-tervezés és szimuláció MathScript RT Module azon függvényosztályait és utasításait, amelyeket a LabVIEW MathScript támogat.

Az Irányítás-tervezés eszközkészlet MathScript függvényeinek alkalmazásához segítséget kapunk, ha a MathScript utasítás ablakába begépeljük a ”help cdt” utasítást.

A (C.2. táblázat - MathScript CDT függvényosztályok) táblázatban összefoglaltuk a létező függvényosztályokat.

C.2. táblázat - MathScript CDT függvényosztályok

Függvény osztály

Leírás

cdops

Aritmetikai operátorfüggvények

cdplots

Diagram XY síkon

cdsolvers

Egyenletmegoldó függvények

connect

Modell-összekapcsolási függvények

construct

Modell-konstrukciós függvények

convert

Modell-átalakító függvények

dynchar

Dinamikus karakterisztika függvények

frqrsp

Frekvencia válasz függvények

info

Modell-információs függvények

reduce

Modellméretet(bonyolultságot) csökkentő függvények

ssanals

Állapottér-analízis függvények

ssdesign

Állapot-visszacsatolás tervezési függvények

timeresp

Időtartománybeli analízis függvények


A továbbiakban néhány függvényosztályt és függvényt részletesebben is bemutatunk.

C.5.1. Állapottérmodellek és átviteli függvények

A MathScript számos függvényt ajánl arra, hogy definiáljuk, illetve kezeljük az állapottérmodelleket és az átviteli függvényeket.

Függvényosztály neve : contruct (Modell-konstrukciós függvények)

Függvényosztály leírása :

A függvényosztályban szereplő függvényeket arra használjuk, hogy lineáris, állandó eggyütthatós rendszermodelleket hozzunk létre, és átalakítsuk azokat a különböző modellmegjenési formákra.

A következő függvényeket lehet alkalmazni a contruct (Modell konstrukciós függvények) osztályban:

C.3. táblázat - MathScript / construct függvények

Függvény

Leírás

drandss

Mintavételes állapottér rendszer létrehozása véletlenszerűen felvett paraméterekkel

drandtf

Mintavételes rendszer létrehozása véletlenszerűen felvett paraméterekkel impulzusátviteli függvény alakban

drandzpk

Mintavételes rendszer létrehozása véletlenszerűen felvett paraméterekkel zérus-pólus függvény alakban

pid

Folytonos PID szabályozó modell létrehozása

randss

Folytonos állapottér rendszer létrehozása véletlenszerűen felvett paraméterekkel

randtf

Folytonos rendszer létrehozása véletlenszerűen felvett paraméterekkel impulzusátviteli függvény alakban

ss

Folytonos állapottér rendszer létrehozása vagy állapottér alakra történő átalakítása

sys_filter

Létrehoz egy mintavételes szűrőt impulzusátviteli függvény alakban

sys_order1

Folytonos, egytárolós rendszer létrehozása átviteli függvény alakban

sys_order2

Folytonos, kéttárolós rendszer létrehozása átviteli függvény alakban

tf

Folytonos átviteli függvény létrehozása vagy átviteli függvény alakra történő átalakítása

zpk

Folytonos zérus-pólus függvény létrehozása vagy zérus-pólus függvény alakra történő átalakítása


A továbbiakban néhány példát mutatunk be, hogy miként alkalmazzuk az osztály leggyakrabban használt függvényeit.

C.5.1.1. PID (Arányos-integráló-differenciáló szabályozó)

Jelenleg az arányos-integráló-differenciáló (PID) szabályozó algoritmus a leggyakrabban használt szabályozó algoritmus az iparban.

A PID szabályozóban meg kell adni egy szabályozott jellemzőt és egy alapjelértéket. A szabályozott jellemző az a rendszerparaméter, amelyet szabályozni szeretnénk, nyomás vagy folyadékáram nagysága, az alapjel pedig az az előírt érték, amelyre a szabályozás történik.

A PID szabályozó meghatározza a szabályozó kimeneti értékét olyanokat, mint fűtési teljesítmény vagy szeleppozíció. A szabályozó kimeneti jelét a szabályozott szakaszra bocsájtva, azonnal elkezdődik a szabályozott jellemző értékének közeledése az alapjel értékéhez.

A PID szabálozó a következő módon számítja a bevatkozást, u(t)-t:

 

(C.29)

ahol

 

K c

A szabályozó erősítése,

 

T i

Integrálási idő,

 

T d

Deriválási idő.

és az e(t) a szabályozási eltérés:

 

(C.30)

 

SP

alapértéke (Setpoint)

 

PV

szabályozott jellemző (Process Variable)

Függvény : pid

Leírás :

Ez a függvény létrehoz egy arányos-integráló-differenciáló (PID) szabályozó modellt, párhuzamos, soros vagy elméleti (academic) alakban.

MIntapélda :

Kc = 0.5;
Ti = 0.25;
SysOutTF = pid(Kc, Ti, 'academic');

[ Mintapélda vége]

C.5.1.2. Állapottérmodell (State-space model)

Az állapottérmodell a redszert leíró differenciálegyenlet-rendszer egy struktúrált megjelenési formája.

Egy lineáris állapottérmodell:

 

(C.31)

ahol az x(t) az állapotok vektora, u(t) pedig a bemenetek vektora. Az A mátrix elnevezése rendszermátrix, amely minden esetben négyzetes mátrix.

Mintapélda :

A differenciálegyenlet-rendszer:

 

(C.32)

átírva állapottér alakba:

 

(C.33)

Függvény : ss

Leírás :

Ez a függvény létrehoz egy folytonos vagy mintavételes, lineáris rendszermodellt állapottér formában. Ez a függvény szintén alkalmazható arra, hogy átalakítsuk az átviteli függvény vagy zérus-pólus-erősítés modellt állapottér alakra.

Mintapélda :

% Létrehozunk egy állapottérmodellt
A = eye(2)
B = [0; 1]
C = B'
SysOutSS = ss(A, B, C)


% Átalakítjuk a zérus-pólus-erősítés modellt állapottér alakra
z = 1
p = [1, -1]
k = 1
SysIn = zpk(z, p, k)
SysOutSS = ss(SysIn)

[ Mintapélda vége]

C.5.1.2.1. Átviteli függvény (Transfer function)

A lineáris rendszer átviteli függvényét a kimeneti jel és a bemeneti jel Laplace transzformáltjainak hányadosával definiáljuk.

Függvény : tf

Leírás :

Ez a függvény létrehoz egy folytonos vagy mintavételes, lineáris rendszermodellt átviteli függvény alakban. Ez a függvény szintén alkalmazható arra, hogy átalakítsuk az állapottér- vagy zérus-pólus-erősítés modellt átviteli függvény alakra.

Mintapélda :

>>s = tf('s')

Ez az utasítás megadja, hogy egy folytonos átviteli függvényt kívánunk definiálni ( s / 1). Ha begépeltük ezt az utasítást, használhatjuk a LabVIEW MathScript függvényeket ezen az átviteli függvényen, hogy megkapjunk egy zérus-pólus-erősítés vagy egy átviteli függvény modellt.

SysOutZPK = 4*(s + 2) / (s + 1)

Ez a mintapélda egy zérus-pólus-erősítés modellt hoz létre 4-szeres erősítéssel és két nevezőbeli gyökkel a -2 és a -1 helyen.

SysOutTF = (3*(s*s*s) + 2) / (4*(s*s*s*s) + 8)

Ez a mintapélda egy átviteli függvény modellt hoz létre, amely a következő alakú:

 

(C.34)

[ Mintapélda vége]

C.5.1.3. Elsőrendű arányos rendszer PT1 (First Order Systems)

A következő függvény egy elsőrendű arányos rendszert definiál:

 

(C.35)

ahol

 

K

erősítés,

 

T

időállandó [s],

 

τ

késleltetési idő [s].

Függvény : sys_order1

Leírás :

Ez a függvény létrehoz egy elsőrendű arányos rendszermodellt, amely egy erősítés, egy időállandó és egy késleltetési idő paramétert tartalmaz. A függvényt arra is alkalmazhatjuk, hogy állapottérmodellt vagy átviteli függvény modellt hozzunk létre a kimeneti paraméterektől függően, amelyeket mi adunk meg.

Bemeneti paraméterek :

 

K

Megadja az erősítés mátrixot. K egy valós értékeket tartalmazó mátrix.

 

tau

Megadja az időállandó értékét másodpercben, amely a modellkimenet számára szükséges, hogy az állandósult érték 63%-át elérje. Alapértéke 0.

 

delay

Megadja a modell kimeneti válaszának késleltetési idejét másodpercben. Alapértéke 0.

Mintapélda :

K = 0.5;
tau = 1.5;
SysOutTF = sys_order1(K, tau, delay);

[ Mintapélda vége]

C.5.1.4. Másodrendű arányos rendszer PT2 (Second Order Systems)

A következő függvény egy másodrendű arányos rendszert definiál:

 

(C.36)

ahol

 

K

erősítés,

 

ζ

(zeta) a relatív csillapítási tényező [],

 

a csillapítatlan rezonancia frekvencia [rad/s].

Függvény : sys_order2

Leírás :

Ez a függvény létrehoz egy másodrendű arányos rendszermodellt, amely egy erősítés, egy relatív csillapítási tényező és egy csillapítatlan rezonancia frekvencia paramétert tartalmaz. A függvényt arra is alkalmazhatjuk, hogy állapottérmodellt vagy átviteli függvény modellt hozzunk létre a kimeneti paraméterektől függően, amelyet mi adunk meg.

Mintapélda :

Amely megmutatja, hogy miként használjuk a sys_order2 függvényt:

dr = 0.5
wn = 20
[num, den] = sys_order2(wn, dr)
SysTF = tf(num, den)
[A, B, C, D] = sys_order2(wn, dr)
SysSS = ss(A, B, C, D)

[ Mintapélda vége]

C.5.2. A Kapcsolat (connect) függvényosztály

Leírás :

A függvényosztály elemeit arra használjuk, hogy különböző topológiájú hálózatba kapcsoljunk össze rendszermodelleket.

A (C.4. táblázat - MathScript / connect függvények) táblázatban megtekinthetők a connect függvényosztályban rendelkezésre álló különböző függvények.

C.4. táblázat - MathScript / connect függvények

Függvény

Leírás

append

Összefűzi a rendszermodelleket

diag

Olyan rendszermodellt hoz létre, amelynek diagonális elemei másolatai egy másik modellnek

feedback

Két rendszermodellt összekapcsol visszacsatolt hurok struktúrában

hconcat

Horizontálisan öszekapcsol két vagy több rendszermodellt

parallel

Két rendszermodellt párhuzamosan kapcsol

series

Két rendszermodellt sorosan kapcsol

vconcat

Vertikálisan öszekapcsol két vagy több rendszermodellt


C.5.2.1. Soros kapcsolat (series)

Leírás :

Ez a függvény összekapcsol két rendszermodellt soros kapcsolásban, hogy létrehozza a SysSer eredő rendszermodellt azzal a bementi és kimeneti összekapcsolásokkal, amelyet definiált. A bemeneti modellek lehetnek folytonos vagy mintavételes modellek megadott mintavételi idővel.

Mintapélda :

SysIn_1 = tf([1, 1], [1 -1, 3])
SysIn_2 = zpk([1], [1, -1], 1)
SysSer = series(SysIn_1, SysIn_2)

[ Mintapélda vége]

C.5.3. Az Átalakítás (convert) függvényosztály

Leírás :

A függvényosztály elemeit arra használjuk, hogy átalakítsuk a folytonos rendszermodelleket mintavételes modellé vagy fordítva a mintavételes modellekből folytonos modelleket hozzunk létre, és újra mintavételezzük a mintavételes modellt. A függvényosztály elemeivel létrehozhatunk késleltetéseket egy rendszermodellben.

A (C.5. táblázat - MathScript / convert függvények) táblázatban tanulmányozhatók a convert függvényosztályban rendelkezésre álló különböző függvények.

C.5. táblázat - MathScript / convert függvények

Függvény

Leírás

c_to_d

Folytonos rendszermodellt mintavételes rendszermodellé transzformál megadott mintavételi idővel.

d_to_c

Mintavételes rendszermodellt (megadott mintavételi idővel), folytonos rendszermodellé transzformál.

d_to_d

Új mintavételezési időhöz kiszámítja a korábbi mintavételezési idővel felírt rendszermodellt.

delay_to_z

Késleltetést hoz létre a mintavételes rendszerben.

distributedelay

Minimalizálja a szállítási késleltetést a rendszermodellben.

pade

Létrehoz egy folytonos késleltetést a Pade approximáció alkalmazásával.

polycoef

Megadja, hogy az átviteli függvény együtthatói növekvő vagy csökkenő sorrendben legyenek felírva.

ss_to_ss

Állapottranszformációt alkalmaz a rendszermodellre.


C.5.3.1. Padé approximáció (Padé-approximation)

A késleltetés átviteli függvénye:

 

(C.37)

Néhány helyzetben ezt az exponenciális kifejezést helyettesíteni kell egy közelítéssel, például a Padé közelítéssel:

 

(C.38)

Függvény : pade

Leírás :

Ez a függvény egy időkésleltetést hoz létre a rendszermodellben a Pade approximáció segítségével.

Az időkésleltetést a bemeneten és a kimeneten a set függvény segítségével állíthatjuk be.

Arra szintén alkalmazhatjuk a függvényt, hogy meghatározzuk a számlálóban és a nevezőben szereplő polinom együtthatóit, amelyek létrehozzák a késleltetést.

Mintapélda :

SysCon = zpk(1, 3.2, 6)
SysCon = set(SysCon, 'inputdelay', 6, 'outputdelay', 1.1)
SysDel = pade(SysCon, 2)
delay = 1.2
order = 3
[num, den] = pade(delay, order)

[ Mintapélda vége]

C.5.4. Frekvenciaválasz analízis (Frequency Response Analysis)

A dinamikus rendszer frekvenciaválasza egy frekvenciafüggő függvény, amely kifejezi, hogy adott frekvenciájú és adott amplitúdójú szinuszos jel hogyan jut keresztül a vizsgált rendszeren.

A frekvenciaválasz nagyon fontos eszköz, amellyel a szűrő kapcsolásokat, illetve szabályozási köröket vizsgálhatunk.

A frekvenciaválaszt meghatározhatjuk kisérletileg (méréssel), illetve az átviteli függvény modell alapján.

Egy rendszer frekvenciaválaszát a rendszer bementére adott szinuszos jel kimeneten megjelenő állandosult állapotbeli értékével adjuk meg. Amikor egy lineáris, állandó együtthatós rendszer állandósult állapotban van, akkor a kimenő jelben csak az amplitúdó (A) és fázistolás () tér el a bemeneti jel azonos paramétereitől.

Ha van egy bemeneti jelünk:

 

(C.39)

A kimeneti jel állandósult állapotban a következő lesz:

 

(C.40)

Az A és a frekvencia függvényei: A = A(ω) és =(ω)

Így az átviteli függvényből:

 

(C.41)

kaphatjuk:

 

(C.42)

Ahol H(jω) a rendszer frekvenciaválasza, amelyet az átviteli függvényből kapunk s=jω helyettesítéssel.

C.5.4.1. Bode diagram (Bode Diagram )

A Bode diagramok nagyon hasznosak a frekvenciaválasz analízisében. A Bode diagram 2 diagramot tartalmaz, a Bode amplitúdó diagramot A(ω) és a Bode fázistolás diagramot (ω).

Az A(ω)-tengely dB-ben (deciBell) van skálázva, ahol x érték deciBell értékét a következő függvénnyel határozzuk meg:

 

(C.43)

A (ω)-tengelyen fokokban (nem radiánokban) adjuk meg a fázistolás értékét.

Függvény : bode

Leírás :

Ez a függvény létrehozza (megrajzolja) a vizsgált rendszer Bode amplitúdó és Bode fázis diagramját. Ezt a függvényt arra is alkalmazhatjuk, hogy egy modell frekvenciafüggvényének amplitúdó- és fázisértékét meghatározza egy megadott frekvencián. Ha nem adjuk meg a kimenet értékét, a függvény kirajzolja a Bode függvényeket.

Mintapélda :

Átviteli függvényünk a következő:

 

(C.44)

Ennek az átviteli függvénynek szeretnénk megrajzolni a Bode diagramjait:

Bode diagram (amplitúdó, fázis)
C.15. ábra - Bode diagram (amplitúdó, fázis)


A MathScript-ben ezt kell beírnunk:

num=[1];
den=[1,1];
H1=tf(num,den)
bode(H1)

[ Mintapélda vége]

Függvény : margin

Leírás :

Ez a fügvény meghatározza és/vagy megrajzolja egy egybementű és egykimenetű (SISO) rendszermodell legkisebb amplitúdó- és fázistartalék értékét.

A rendszer fázistartalékát azon a frekvenciaértéken határozzuk meg, amelynél az amplitúdó függvény metszi a 0 dB-es tengelyt. (amplitudóvágási frekvencia = ω c )

 

(C.45)

ahol ω c -t a rendszer sávszélességének is nevezzük.

Az amplitudótartalék értékét azon a frekvenciaértéken határozzuk meg, amelynél a fázisfüggvény metszi a -180o-os tengelyt. (fázisvágási frekvencia = ω 180 )

 

(C.46)

Mintapélda :

Adott a következő rendszer:

 

(C.47)

Meg akarjuk rajzoltatni a Bode diagramot, és megkeresni a metszési frekvenciákat a MathScript segítségével.

A következő függvényeket fogjuk használni: tf, bode, margins és margin. A következő mennyiségeket határozzuk meg a MatScript-el.

  • gmf erősítés határfrekvencia (gain margin frequency) [rad/s]. Az erősítés határfrekvencia azt frekvenciát jelenti, ahol a modell fázisdiagramja metszi a -180o-os tengelyt.

  • gm a rendszer erősítéstartaléka (gain margins).

  • pmf fázishatárfrekvencia (phase margin frequenciy), [rad/s]. A fázis határfrekvencia azt frekvenciát jelenti, ahol a modell amplitúdó-diagramja metszi a 0 dB-es tengelyt.

  • pm a rendszer fázistartaléka (phase margin).

Amplitúdó- és fázistartatalék számítások
C.16. ábra - Amplitúdó- és fázistartatalék számítások


A (C.17. ábra - Bode diagram az amplitúdó- és fázistartalékkal) ábrán láthatjuk a Bode diagramot a metszési frekvenciákkal valamint az erősítés- és fázistartalékokkal, amelyet a program rajzolt meg:

Bode diagram az amplitúdó- és fázistartalékkal
C.17. ábra - Bode diagram az amplitúdó- és fázistartalékkal


[ Mintapélda vége]

C.5.5. Időtartománybeli válaszfüggvények (Time Response)

Függvényosztály : timeresp (Válaszfüggvény időtartományban)

Leírás :

A válaszfüggvények időtartománybeli meghatásozását arra használjuk, hogy lineáris rendszerek szimulációját valósítsuk meg tetszőleges bemenő jelre, valamint, hogy időtartománybeli diagramokat készítsünk egységugrás, impulzus valamint kezdeti feltétellel rendelkező rendszerhez.

A (C.6. táblázat - MathScript / timeresp függvények) táblázatban megtekinthetők a timeresp függvényosztályban rendelkezésre álló függvények.

C.6. táblázat - MathScript / timeresp függvények

Függvény

Leírás

impulse

Meghatározza a rendszermodell impulzusválaszra adott időfügvényét.

initial

Meghatározza a rendszermodell kimeneteinek időfügvényét, ha rendszermodell állapotai rendelkeznek kezdeti feltételekkel.

lsim

Meghatározza a rendszermodell tetszőleges bementi jelre adott kimeneti időfügvényét.

randvector

Létrehoz egy vagy két véletlen vektort.

step

Meghatározza a rendszermodell egységugrásra adott időfügvényét.


C.5.5.1. Egységugrásra adott válaszfüggvény (step )

Leírás :

Ez a függvény megrajzolja a rendszermodell egységugrásra adott válaszfüggvényét. Arra is használhatjuk, hogy meghatározzuk az egységugrásra adott válaszfüggvény pontjainak koordinátáit. Ha a modell állapottér alakban van, akkor arra is használhatjuk, hogy meghatározzuk az egyes állapotok egységugrás bemenetre adott válaszfüggvényét. Ez a függvény feltételezi, hogy a számításoknál a rendszer kezdeti állapotai zero (0) értékűek. Ha nem adja meg a kimeneti változó elnevezését, akkor egy diagramot hoz létre.

Mintapélda :

Adott a következő rendszer:

 

(C.48)

A step függvény alkalmazásával kirajzoljuk a rendszer egységugrás bemenetre adott válaszfüggvényét. Az eredmény a (C.18. ábra - Egységugrás bemenetre adott válaszfüggvény) ábrán látható.

Egységugrás bemenetre adott válaszfüggvény
C.18. ábra - Egységugrás bemenetre adott válaszfüggvény


A MathScript kód:

H = tf([1, 1], [1, -1, 3])
step(H)

[ Mintapélda vége]

C.6. A MathScript blokk a LabVIEW programban (MathScript Node)

A MathScript blokk (MathScript Node) egy kombinált szöveg típusú és grafikus programozási lehetőséget biztosít LabVIEW-ban. A C.19. ábra - A MathScript blokk a LabVIEW programban ábra bemutatja a MathScript blokkot, amelyet a kék négyszög keret reprezentál. A MathScript blokkot úgy használjuk, hogy belegépeljük a végrehajtandó utasításokat, vagy beolvassuk a végrehajtandó kódot egy ”.m” fájlból.

A MathScript blokk a LabVIEW programban
C.19. ábra - A MathScript blokk a LabVIEW programban


Megadhatunk névvel rendelkező bemeneteket és kimeneteket a MathScript blokk keretén, ezzel biztosítva az adatforgalmat a grafikus LabVIEW környezet és a szöveges MathScript kód között.

Hozzárendelhetjük az ”.m” fájlban tárolt program script változóit a LabVIEW változóihoz azzal, hogy egyszerűen összehuzalozzuk a MathScript változóit a LabVIEW változókkal. Ezután a változók átadják aktuális értéküket a másik program-interpretáció változóinak. Így a szöveg típusú ”.m” fájlokok elérhetik a LabVIEW szolgáltatásait és megfordítva.

A MathScript blokkot a LabVIEW Function palettájáról a Programming > Structures (1) ikonoknál találjuk(C.20. ábra - A MathScript blokk elérhetősége a LabVIEW programban (1)).

A MathScript blok a LabVIEW Function palettájáról a Mathamatics > Scripts & Formulas (2) ikonoknál is megtalálható (C.21. ábra - A MathScript blokk elérhetősége a LabVIEW programban (2)).

A MathScript blokk elérhetősége a LabVIEW programban (1)
C.20. ábra - A MathScript blokk elérhetősége a LabVIEW programban (1)


A MathScript blokk elérhetősége a LabVIEW programban (2)
C.21. ábra - A MathScript blokk elérhetősége a LabVIEW programban (2)


Ha lenyomjuk a Ctrl+H billentyűket, megtekinthetjük a MathScript segítségnyújtó (help) ablakát (C.22. ábra - A MathScript segítségnyújtó (help) ablaka).

A MathScript segítségnyújtó (help) ablaka
C.22. ábra - A MathScript segítségnyújtó (help) ablaka


A Részletezett segítség (Detailed help) hivatkozásra kattintva (C.22. ábra - A MathScript segítségnyújtó (help) ablaka) még több információt kapunk a MathScript blokk működéséről.

Használhatjuk az NI Example Finder (Példa keresőt) is, hogy további példákat találjunk a MathScript alkalmazására (C.23. ábra - MathScript mintapéldák).

MathScript mintapéldák
C.23. ábra - MathScript mintapéldák


C.6.1. MathScript blokkok átvitele számítógépek között (Transferring MathScript Nodes between Computers)

Ha egy MathScript blokkban egy felhasználó által definiált függvény hívunk, a LabVIEW az alapéretlemezett keresési könyvtárat használja, hogy meghívja a megadott ”.m” fájlt. Miután beállítottuk az alapértelmezett keresési könyvtárlistát, és mentjük a VI-t, amely tartalmazza a MathScript blokkot, nem kell újra konfigurálnunk a MathScript keresési listát, amikor megnyitjuk a VI-t egy másik számítógépen. Ekkor a LabVIEW megkeresi az ”.m” állomány könyvtárát, amely a legutolsó programmentéskor tartalmazta a fájlt. Összesítve csak néhány relatív könyvtárat kell módosítanunk a VI és az ”.m” fájl kapcsolatában.

C.6.2. Mintapéldák

Mintapélda : A MathScript blokk használatára:

MathScript alkalmazási mintapélda (diagram panel)
C.24. ábra - MathScript alkalmazási mintapélda (diagram panel)


Itt van egy mintapélda hogyan használhatjuk a MathScript blokkot. A blokk bal oldalán köthetjük be a bemeneti változókat és jobb oldalán a kimeneti változókat. A blokk keretén jobb egérbillentyűvel kattintva hozhatjuk létre a változókat, ha a felbukkanó menüből kiválasztjuk az “Add Input” vagy “Add Output” menüpontokat.

MathScript ”zeta.m” állomány tartalma
C.25. ábra - MathScript ”zeta.m” állomány tartalma


MathScript alkalmazási mintapélda (front panel)
C.26. ábra - MathScript alkalmazási mintapélda (front panel)


[ Mintapélda vége]

Mintapélda : Windows DLL függvényeinek hívása MathScript-ben:

Windows DLL függvényeinekhívása MathScript-ben
C.27. ábra - Windows DLL függvényeinekhívása MathScript-ben


[ Mintapélda vége]

Mintapélda : ”.m” fájlok használata MathScript blokkban:

A LabVIEW MathScript-et arra használjuk, hogy létrehozzunk vele egy ”.m” fájlt (de létrehozhatjuk ugyanezt a programscriptet a MATLAB-al is) (C.28. ábra - LabVIEW MathScript fájl létrehozása (az eredmény)).

LabVIEW MathScript fájl létrehozása (az eredmény)
C.28. ábra - LabVIEW MathScript fájl létrehozása (az eredmény)


Egy korábban megírt scriptet úgy olvashatunk be, hogy a MathScript blokk keretén a jobb oldali egérbillentyűvel kattintva kiválaszthatjuk az Import (Behozás) menüpontot, és kijelöljük azt az ”.m” fájlt, amit be akarunk másolni a blokkba.

LabVIEW MathScript fájl létrehozása (első lépés)
C.29. ábra - LabVIEW MathScript fájl létrehozása (első lépés)


Ha a MathScript blokk keretén a jobb oldali egérbillentyűvel kattintunk, kiválaszhatjuk az Add Output (Hozz létre egy új kimeneti változót) menüpontot. Ezután a változó területén kattintva a jobb oldali egérbillentyűvel válasszuk ki a Create Indicator (Hozz létre kimeneti változót a Front panelen) menüpontot!

Blokk diagram :

LabVIEW MathScript blokk kimeneti változó létrehozása
C.30. ábra - LabVIEW MathScript blokk kimeneti változó létrehozása


A program eredménye a futtatás után (Kattintsunk a Run gombra!):

A program eredménye
C.31. ábra - A program eredménye


Ha például hozzáadjuk a plot(x) utasítást a MathScript blokkhoz, a (C.32. ábra - Az x vektor „grafikus” ábrázolása) ábrán látható ablak jelenik meg.

Az x vektor „grafikus” ábrázolása
C.32. ábra - Az x vektor „grafikus” ábrázolása


[ Mintapélda vége]

Irodalomjegyzék

[1.] Chi-Tsong-Chen. Analog And Digital Control System Design. Sounders College Publishing. 2006.

[2.] Chi-Tsong-Chen. Linear System Theory and Design. Oxford University Press. 1999.

[3.] Gajic, Zoran. Modern Control Systems Engineering. 1996.

[4.] Bokor, József és Gáspár, Péter. Irányítástechnika járműdinamikai alkalmazásokkal. TYPOTEX kiadó. 2008. ISBN 978 963 279 001 5.

[5.] Kovács, Jenő. Számítógépes irányítás. Oulu University; Egyetemi jegyzet. 2009.

[6.] LabVIEW Control Design User Manual. 2009.

[7.] Mandal, Ajit K.. Introduction to Control Engineering. New Age International Publishers. 2006.

[8.] Bajcsay, Pál. Numerikus analízis. Tankönyvkiadó. Budapest . 1986.

[9.] Gräff, J.. Multiple step Integrators using variable interval. Proceedings of the third conference on mechanical engineering. Bdapest . Vol. 2. p. 490-494. 2002.

[10.] Henrici, Peter. Numerikus Analízis. Műszaki Könyvkiadó. Budapest . 1985.

[11.] Hamming, R.W.. Numerical Methods for Scientists and Engineers. McGraw-Hill Book Company. New York . 1973.

[12.] Kis, Ottó és Kovács, Margit. Numerikus módszerek. Műszaki Könyvkiadó. Budapest . 1973.

[13.] Ralston, Anthony. Bevezetés a numerikus analízisbe. Műszaki Könyvkiadó. Budapest . 1969.

[14.] Varga, László. Közönséges differenciálegyenletek numerikus módszerei. Tankönyvkiadó. Budapest . 1976.

[15.] Derhán, Dénes. Optimalizáló eljárás készítése genetikus algoritmus alkalmazásával. BME diplomaterv. 2002.

[16.] Mann, K. F., Tang, K. S., és Kwong, S.. Genetic Algorithms Concepts and Designs. Springer. 1999.

[17.] Michalewicz, Zbigniew. Genetic Algorithms + Data Structures = Evolution Programs. Springer. 1992.

[18.] Csányi, Vilmos. Evolúciós rendszerek. Gondolat Könyvkiadó. Budapest . 1988.

[19.] Buckles, Bill P. és Frederik, E. Petry. Genetic Algorithms. IEEE Computer Society Press. Los Alamitos, California .

[20.] Elie, Sanchez, Shibata, Takanori, és Zadeh, Lotfi A.. etic Algorithms and Fuzzy Logic Systems. World Scientific.

[21.] Schwefel, Hans-Paul. Evolution and Optimum Seeking. John Wiley &amp; Sons, Inc. New York . 1995.

[22.] Wilde, Douglas James. Optimum Seeking Methods. Prentice Hall, Inc.. Englewood Cliffs, N. Y . 1964.

[23.] Faber, Malte és Proops, John L. R.. Evolution, Time, Production and the Environment. Springer-Verlag. Berlin . 1994.

[24.] Goldberg, David E.. Genetic Algorithms in Search Optimization and Machine Learning. Addison-Wesley Publishing Company. New York . 1989.

[25.] Bäck, Thomas, Fogel, David B., és Michalewicz, Zbigniew. Handbook of Evolutionary Computation, Institute of Physics Publishing Bristol. Philadelphia and Oxford University Press New York. Oxford . 1997.

[26.] Michigan State University Genetic Algorithms Research and Applications Group (GARAGe) http://garage.cps.msu.edu/.

[28.] University of Illinois, Illinois Genetic Algorithms Laboratory (IlliGAL) http://www-illigal.ge.uiuc.edu/index.php3.

[29.] Natural Selection, Inc. http://www.natural-selection.com/.

[30.] Universität Dortmund, Lehrstuhl für Systemanalyse http://ls11-www.informatik.uni-dortmund.de/.

[31.] Hamming, R.W.. Numerical methods for engineers and scientists. 1986.

[32.] Henrici, Peter. Numerikus analízis. Műszaki könyvkiadó. Budapest . 1985.

[33.] Kis, Ottó és Kovács, Margit. Numerikus módszerek. Műszaki könyvkiadó. Budapest . 1973.

[34.] Obádovics, J.Gyula és Szarka, Zoltán. Felsőbb matematika. Scolar kiadó. Budapest . 1999.

[35.] Retter, Gyula. Fuzzy, neurális, genetikus, kaotikus rendszerek (Lágy számítási módszerek). Akadémiai Kiadó. 2006.

[36.] Retter, Gyula. Kombinált fuzzy, neurális, genetikus rendszerek (Kombinált lágy számítások). INVEST-MARKETING Bt.. 2008.

[37.] Borgulya, István. Neurális hálók és fuzzy rendszerek. Dialog Campus K.. 1998.

[38.] Horváth, Gábor. Neurális hálózatok és műszaki alkalmazásaik. Műegyetemi Kiadó. 1995.

[39.] Kóczy, T. László és Tikk, Domonkos. Fuzzy Rendszerek. Typotex Kft.. 2002.

[40.] Várkonyiné Kóczy, Annamária. Genetikus algoritmusok. Typotex Kft.. 2002.

[41.] Didier, Dubois, Francesc, Esteva, Lluis, Godo, és Henri, Prade. Fuzzy-set based logics - An history-oriented presentation of their main developments. Dans : Handbook of The history of logic. Elsevier - The many valued and nonmonotonic turn in logic. Vol. 8. p. 325-449. 2007.

[42.] Sujit, Nath Pant és Keith, E. Holbert. Fuzzy Logic in Decision Making and Signal Processing http://enpub.fulton.asu.edu/powerzone/fuzzylogic/.

[43.] Fullér, Robert. Neural Fuzzy Systems, http://users.abo.fi/rfuller/ln1.pdf.

Tárgymutató

A

abszolút hiba, Hibajelenségek közelítő módszerek esetén
Adams-Bashforth, Szemléletes megközelítés, Alapgondolat Taylor sor alkalmazására
Adams-Bashforth integrálás, Numerikus hibák
Adams-Bashforth integrátor, A jel integrálása idő szerint az adott mintavételi időpontban, Szemléletes megközelítés
Adams-Moulton, Szemléletes megközelítés
Adams-Moulton integrátor, A jel integrálása idő szerint az adott mintavételi időpontban, Szemléletes megközelítés
adatfolyam-programozás szabályai, Rendszerek digitális számítógépen történő futtatása
alapelemek összekapcsolása, Alapelemek összekapcsolása
alapelemek soros összekapcsolása, Alapelemek soros összekapcsolásából keletkező részrendszer
algebrai hurok, Átviteli függvények számítási blokkdiagramjának meghatározása
állandósult állapotbeli erősítés, Átviteli függvény állandósult állapotbeli erősítése, Az impulzusátviteli függvény állandósult állapotbeli erősítése
állapotegyenlet, P vagy I jellegű, többtárolós SISO rendszer, Az állapottér módszer
állapotér modell, Az állapottér módszer
állapottér fázisváltozós alak, Fázisváltozós alak
állapottér irányíthatósági normálalak, Az irányíthatósági normálalak
állapottér modell, Az állapottér-leírási mód, Az állapottér modell Laplace-operátoros tartományban
állapottér módszer számítási blokkdiagram, Állapottér módszer számítási blokkdiagramjának meghatározása SISO rendszereknél
állapottér reprezentációk, Állapottér-leírás, állapottér-reprezentációk kapcsolata
alternáló sorok, Kiejtés
amplitúdó léptékezés, Amplitúdó–léptékezés
amplitúdó-léptékezés, Az analóg számítógép szerkezeti felépítése
analitikus megoldás, Integrálást vagy differenciálást alkalmazunk a differenciálegyenlet megoldásához
analóg számítógép, Analóg számítógép
analóg számítógép műveletek, Az analóg számítógép szerkezeti felépítése
analóg számítógép programozása, Az analóg számítógép programozása
analóg szimuláció, Analóg számítógép
arányos típusú tagok, Arányos típusú átviteli függvények számítási blokkdiagramjának meghatározása PT1, PT2
átviteli függvény, Rendszerek leírása Laplace tartományban
átviteli függvény megvalósítása, Átviteli függvény megvalósítása
átviteli függvény polinomiális alakja, Polinomiális átviteli függvény
átviteli függvény zérus–pólus–erősítés (ZPK) alakja, Zérus-pólus-erősítés alakú átviteli függvény
átviteli mátrix, Átviteli mátrix {G(s)}

E

egyenletek kiszámíthatósági sorrendje, Alapelemek összekapcsolása
egylépéses formula, Az integrálformulák csoportosítása, Megoldás másodrendű Adams-Bashforth integrátorokkal, Hibabecslés módszerei, Változó lépésköz alkalmazhatósága, A különböző módszerek összehasonlítása
egytárolós arányos tag, Arányos típusú átviteli függvények számítási blokkdiagramjának meghatározása PT1, PT2
egytárolós differenciáló tag, Differenciáló típusú átviteli függvények számítási blokkdiagramjának meghatározása DT1, DT2
egytárolós integráló tag, Integráló típusú átviteli függvények számítási blokkdiagramjának meghatározása IT1, IT2
együttható-potenciométer, Időfüggő jel szorzása konstanssal
előjel fordító kapcsolás, Negatív visszacsatolású műveleti erősítő
előrehaladó differencia, Előrehaladó differencia
előretartó-késleltető tag (Lead-Lag), Előretartó-késleltető tag (Lead–lag compensator) számítási blokkdiagramjának meghatározása
elosztott paraméterű rendszer, Rendszerleírási módok
elsőrendű tartószerv, Elsőrendű tartószerv
eltolás operátor, Előrehaladó differencia
energiatárolós rendszer, P vagy I jellegű, többtárolós SISO rendszer
erősítés, Műveleti erősítő
erősítési tényező, Negatív visszacsatolású műveleti erősítő
Euklidesz-féle algoritmus, A többszörös gyökök eltüntetése, Valós gyökök száma egy adott intervallumban
Euler integrátor, A jel integrálása idő szerint az adott mintavételi időpontban
Euler–módszer, Előrehaladó differencia
extrapolációs módszer, Szemléletes megközelítés, Megoldás másodrendű Adams-Bashforth integrátorokkal, Megoldás másodrendű Adams-Moulton integrátorokkal, Rezgő rendszer megoldása (Adams-Moulton integrátorokkal), Megoldás másodrendű prediktor – korrektor módszerrel, Megoldás másodrendű vegyes módszerrel

I

ideális műveleti erősítő, Műveleti erősítő
idő szerinti differenciálhányados, Numerikus hibák
idő szerinti integrálás, Numerikus hibák
időbeni késleltetés, Időbeni késleltetés megvalósítása mintavételes rendszerekben
időléptékezés, Az analóg számítógép szerkezeti felépítése, Időléptékezés
impulzusátviteli függvény, Folytonos rendszerek szimulációja digitális számítógéppel, Impulzusátviteli függvény és a mintavételes állapottér leírási mód, Impulzusátviteli függvény
impulzusátviteli függvény z negatív hatványaival, Impulzusátviteli függvény z negatív hatványaival G(z-1)
impulzusátviteli függvény z pozitív hatványaival, Impulzusátviteli függvény z pozitív hatványaival G(z)
integráló típusú tag, Integráló típusú átviteli függvények számítási blokkdiagramjának meghatározása IT1, IT2
integrátor, Jel integrálása idő szerint
integrátor jelölése, Jel integrálása idő szerint
interpolációs formula, Szemléletes megközelítés, Megoldás másodrendű Adams-Bashforth integrátorokkal, Megoldás másodrendű Adams-Moulton integrátorokkal, Megoldás másodrendű prediktor – korrektor módszerrel, Rezgő rendszer megoldása (másodrendű prediktor – korrektor módszerrel), Megoldás másodrendű vegyes módszerrel, A különböző módszerek összehasonlítása
inverz mátrix, Lineáris egyenletrendszer – Gauss elimináció, Mátrix invertálás
inverz Z–transzformáció, Táblázatból való visszakereséssel
iteráció, Intervallum-felezés, Iteráció, Lineáris egyenletrendszer – Gauss elimináció, Lineáris egyenletrendszer – iteráció, Egyszerű iteráció, Az érintőmódszer általánosítása

K

kanonikus alakú állapottér modell előállítása, Kanonikus alakú állapottér modell előállítása
képlethiba, Hibajelenségek közelítő módszerek esetén
kerekítési hiba, Hibajelenségek közelítő módszerek esetén
kéttárolós arányos tag, Arányos típusú átviteli függvények számítási blokkdiagramjának meghatározása PT1, PT2
kéttárolós differenciáló tag, Differenciáló típusú átviteli függvények számítási blokkdiagramjának meghatározása DT1, DT2
kéttárolós integráló tag, Integráló típusú átviteli függvények számítási blokkdiagramjának meghatározása IT1, IT2
kezdeti érték, A jel integrálása idő szerint az adott mintavételi időpontban, Időbeni eltolást végző elem (shift művelet) megvalósítása mintavételes rendszerekben
kicsatolási egyenlet, P vagy I jellegű, többtárolós SISO rendszer, Az állapottér módszer
kiegyszerűsödés, Hibajelenségek közelítő módszerek esetén, Kiegyszerűsödés, Kiejtés
kiegyszerűsödés jelensége, Numerikus hibák
kiejtés, Hibajelenségek közelítő módszerek esetén, Kiejtés
kimeneti impedancia, Műveleti erősítő
komplex gyöktényező, Gyökök keresése közelítő módszerrel
koncentrált paraméterű rendszer, Rendszerleírási módok
konvergencia feltétel, Iteráció, Lineáris egyenletrendszer – iteráció, Egyszerű iteráció
konvergencia sebesség, Érintőmódszer (Newton-Raphson módszer)
korrektor, Megoldás másodrendű prediktor – korrektor módszerrel, Hibabecslés módszerei
közvetlen programozás, Impulzusátviteli függvény megvalósítása közvetlen programozással
közvetlen programozású rendszer, Átviteli függvény megvalósítása közvetlen programozással

M

M programozás, Impulzusátviteli függvény megvalósítása M programozással
M-programozási alakú rendszer, Átviteli függvény megvalósítása M-programozással
MacLaurin sor, Kiejtés
megfigyelhetőségi normálalak, A megfigyelhetőségi normálalak
megoldás differenciálással, Integrálást vagy differenciálást alkalmazunk a differenciálegyenlet megoldásához
megoldás integrálással, Integrálást vagy differenciálást alkalmazunk a differenciálegyenlet megoldásához
MIMO, Rendszerleírási módok, Több bemenetű és több kimenetű rendszerek (MIMO) leírása
MIMO rendszer, A MIMO rendszer
mintavételes állapottér mátrixok, Az impulzusátviteli függvény meghatározása mintavételes állapottér mátrixok segítségével
mintavételes állapottér modell, Folytonos rendszerek szimulációja digitális számítógéppel
mintavételes jel kezdeti érték tétele, A Z–transzformáció tulajdonságai
mintavételes jel végérték tétele, A Z–transzformáció tulajdonságai
mintavételes rendszer, A különböző módszerek összehasonlítása
mintavételes rendszer transzformációk, Az impulzusátviteli függvény állandósult állapotbeli erősítése
mintavételes rendszerek alapelemei, Mintavételes rendszerek alapelemei
mintavételezés időtartama, A folytonos bemeneti jelek mintavételezése
mintavételezett jelek Z transzformációja, Mintavételezett jelek Z-transzformációja
mintavételi idő, Rendszerek digitális számítógépen történő futtatása
MISO rendszer, A MISO rendszer
modális kanonikus alak, A modális alak

S

sávszélesség, Műveleti erősítő
Shannon-tétel, A folytonos bemeneti jelek mintavételezése
shift művelet, Időbeni eltolást végző elem (shift művelet) megvalósítása mintavételes rendszerekben
shift regiszter, Mintavételes rendszerek alapelemei
SIMO rendszer, A SIMO rendszer
Simpson formula, Simpson formula, Negyedrendű Runge‑Kutta, Az integrálformulák csoportosítása
SISO, Rendszerleírási módok
SISO rendszer, A SISO rendszer
soros kapcsolású alapelemek, Az impulzusátviteli függvény megvalósítása soros kapcsolású alapelemekkel
soros kapcsolású részrendszerek, Átviteli függvény számítási blokkdiagramja soros kapcsolású részelemekkel
ss2tf, ss2tf: transzformáció állapottér modell alakból, polinomiális alakú átviteli függvény alakba, Impulzusátviteli függvény transzformációja állapottér modell alakból polinomiális alakba
ss2zp, ss2zp: átalakítás állapottér modellből zérus-pólus-erősítés alakú átviteli függvénybe
ss_to_tf, ss2tf: transzformáció állapottér modell alakból, polinomiális alakú átviteli függvény alakba
ss_to_zpk, Állapottér modell alakú impulzusátviteli függvény átalakítása zérus-pólus-erősítés alakúvá
Sturm lánc, Gyökkereső algoritmusok polinomok esetében
Sturm-, Valós gyökök száma egy adott intervallumban
súlyfüggvény, Impulzusátviteli függvény
számábrázolás, Hibajelenségek közelítő módszerek esetén, Mátrix invertálás
számítás végértéke, Rendszerek digitális számítógépen történő futtatása
számítási blokkdiagram, Átviteli függvények számítási blokkdiagramjának meghatározása, Rendszerek digitális számítógépen történő futtatása
szingularitás, Lineáris egyenletrendszer – Gauss elimináció, Lineáris egyenletrendszer – iteráció
szorzás konstans értékkel, Időfüggő jel szorzása konstanssal