Nemlineáris hálózatok Dr. Horváth Péter, BME HVT 2015. október 31. 1. feladat Félvezető diódák (mint nemlineáris ellenállások) egyszerű modellezésére használatos az alábbi alakú u i karakterisztika: ) i = I s (e u/nu T 1, ahol I s az ún. záróirányú telítési áram, u T = kt e az elekronikából ismert termikus feszültség (szobahőmérsékleten 26 mv), N pedig egy, a konkrét eszközre jellemző dimenzió nélküli állandó. Határozzuk meg az alábbi hálózatban a dioda munkapontját, ha N = 1, és I s = 0,1 µa! Octave/Matlab segítségével! Ellenőrizzük a megoldást grafikusan! Saját Newton-iterációval! Saját Octave/Matlab programmal! 50Ω 100Ω i N 30V 100Ω u N 50Ω A hálózat maradékát helyettesítő Thévenin-generátor paraméterei: U T h = 5000 mv, R b = 33,3 Ω. A Thévenin-ekvivalennsel felrajzolhatjuk a hálózatot: R b U T h u N in Egy lehetséges kanonikus hálózati egyenletrszer egyszerűen az alábbi (lineáris) hurokegyenlet és a dióda fenti karakterisztikája együttesen: i N R b + u N U T h = 0. A két egyenletből [mv, ma, Ω] koherens egységrszerben ) I s (e u N /Nu T 1 R b + u N U T h = 0, F (u N ) = 33,3 10 4 ( ) e u N /26 1 + u N 5000 = 0. 1
1.1. Megoldás Octave/Matlab segítségével Nemlineáris algebrai egyenlet numerikus megoldására az fzero függvény szolgál. Ennek első argumentumaként megadhatunk egy névtelen függvényt, aminek a gyökét keressük, a második argumentum pedig a kezdeti tipp, ahonnan a függvény elkezdi iteratívan keresni a függvény gyökeit. Esetünkben ezt kvázi találomra 500 mv-ra választjuk. >> sol_un = fzero(@(un) 1e-4*(exp(uN/26)-1)*33.3+uN-5000, 500) sol_un = 367.7849 >> sol_in=1e-4*(exp(sol_un/26)-1) sol_in = 139.1056 Vagyis a dióda munkaponti feszültsége 367,8 mv, árama 139,1 ma. Ellenőrzésképpen a munkaegyenes és a karakterisztika egy ábrán ábraázolható. A Thévenin-generátor rövidzárási árama I z = U T h /R b = 150 ma, ez a munkaegyenes u = 0 értékhez tartozó pontja, az i = 0-hoz pedig u = U T h tartozik. >> u=linspace(0, 400); >> plot(u, 1e-4*(exp(u/26)-1), [0 5000], [150 0], sol_un, sol_in, rx ) 400 350 300 250 i [ma] 200 150 100 50 0 0 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 u [mv] 1.2. Saját Newton-iteráció A Newton Raphson-módszerhez szükségünk van a függvény deriváltjára, a F (u N )-re: az iterációs formula pedig F (u N ) = df (u N) du N = 1 26 33,4 10 4 e u N /26 + 1 = 1,282 10 4 e u N /26 + 1, u (k+1) N = u (k) N 1.3. Számítás Octave-ben ( F ( F u (k) N u (k) N ) ) = u (k) ) 33,3 10 4 (e u(k) N /26 1 + u N 5000 N 1,282 10 4 e u(k) N /26 + 1 unk = 1000; %kezdeti tipp for k = 1:100, % max 100 iteracio utan kiszallunk, ha nem konvergal unk1 = unk - (1e-4*(exp(unk/26)-1)*33.3+unk-5000)/(1.282e-4*exp(unk/26)+1); if(abs(unk1 - unk) < 1e-4) break; % ha konvergalt, akkor megszakitjuk a szamitast
k unk1 unk = unk1;
2. feladat Az alábbi hálózatban az ideális erősítő visszacsatoló hálózatában egy ún. található. A diódákat ez előző feladatbeli nemlineáris karakterisztika írja le. (a) Állítsunk elő az u 2 feszültségre vonatkozó egyenletet! antiparallel kapcsolású diódapár (b) Határozzuk meg Newton-Raphson eljárással az u 2 (t) időfüggvényét, ha u s (t) = 2 cos ωt V, R 1 = 10 kω, és R 2 = 2,5 kω illetve ha R 2 = 10 kω, és legyen I s = 1 na! (c) Határozzuk meg numerikusan az u 2 feszültség értékét u s amplitúdójának függvényében, ha u s 3 V és 3 V között változik! u N2 i N2 i N1 u N1 R 2 u s (t) R 1 + u 2 (a) Az erősítő mindkét bemenete nulla potenciálú, ha az alsó csomópontot választjuk referenciának. Fontos hangsúlyozni, hogy a hálózat rezisztív. Egyszerű, rezisztív hálózatokra vonatkozó csomóponti potenciálokkal számolunk. A hálózatra vonatkozó kanonikus egyenletek: 0 u s R 1 + 0 u 2 R 2 + i N1 i N2 = 0 u N1 = 0 u 2 = u 2 u N2 = (0 u 2 ) = u 2 ) i N1 = I s (e u N1/u T 1 ) i N2 = I s (e u N2/u T 1 A karakterisztikákat közvetlenül beírhatjuk az első egyenletbe, ezzel megkaptuk u 2 meghatározásához szükséges nemlineáris egyenletet (ami szerencsére csak egyváltozós, bár két nemlineáris elemünk van.) u s + u ( ) ( ) 2 I s e u2/u T 1 + I s e u2/u T 1 = 0 R 1 R 2 (b) A Newton-iterációhoz szükséges összefüggések: F (u 2 ) = u s + u ( ) ( ) 2 I s e u2/u T 1 + I s e u2/u T 1 R 1 R 2 Az iteráció maga: u (k+1) 2 = u (k) 2 F (u 2 ) = 2 cos ωt R 1 1 R 2 + I s u T e u2/u T + I s u T e u2/u T ( ) ) + u(k) 2 R 2 I s e u(k) 2 /u T 1 + I s (e u(k) 2 /u T 1 1 R 2 + Is u T e u(k) 2 /u T + I s u T e u(k) 2 /u T
Valamivel kulturáltabb kifejezéseket kapunk, ha behelyettesítjük a és összefüggéseket: sinh(x) = ex e x 2 (sinh(x)) = cosh(x) u (k+1) 2 = u (k) 2 2 cos ωt/r 1 + u (k) 2 /R 2 + 2I s sinh(u (k) 2 /u T ) 1 R 2 + 2Is u T cosh(u (k) 2 /u T ) (c) A programban [mv, kω, µa] koherens egységrszerben (I s = 0,1) számolunk. clear close all R1 = 10; R2 = 2.5; Is = 0.001; ut = 26; usv=-3000:20:3000; u2v1 = zeros(1, length(usv)); u2v2 = zeros(1, length(usv)); for ii = 1:length(usv) u2v1(ii) = fzero(@(u2) usv(ii)/r1 + u2/r2 + 2*Is * sinh(u2/ut), 500); R2 = 10; for ii = 1:length(usv) u2v2(ii) = fzero(@(u2) usv(ii)/r1 + u2/r2 + 2*Is * sinh(u2/ut), 500); plot(usv, u2v1, usv, u2v2, usv, -usv, k:, usv, -usv/4, k:, LineWidth, 2) axis([-3000 3000-400 400]) leg ( R_2 = 2,5k, R_2=10k ) xlabel( u_s [mv] ) ylabel( u_2 [mv] ) grid 400 300 R 2 = 2,5k R 2 =10k 200 100 u 2 [mv] 0 100 200 300 400 3000 2000 1000 0 1000 2000 3000 u s [mv] Az áramkör egy ún. lágy (soft) limiterként viselkedik. A kapott eredmény szemléletesen magyarázható. A diódák nélkül az áramkör egy invertáló erősítő lenne, R 2 /R 1 erősítéssel. Ha a diódák is az áramkörben vannak, akkor u s növekedésével az 1. dióda egyre jobban kinyit, dinamikus ellenállása egyre kisebb. A dióda dinamikus ellenállása párhuzamosan kapcsolódik R 2 -vel, vegyis csökkenti az effektív visszacsatolás mértékét, ezzel az erősítést is. Végső soron u 2 értékét a dióda nyitófeszültsége korlátozza. Ha u s negatív, akkor értelemszerűen a másik dióda kezd nyitni, ez biztosítja az I. és III. síknegyedbeli szimmetriát.
3. feladat Az ábrán vázolt hálózatban [V, ma, kω, µf, ms] egységekben C = 0,5 µf, C 1 << C, u s (t) = 7 + ũ s (t), a nemlineáris ellenállás karakterisztikája i N = { 5u N u N < 1, 5/u N u N > 1. (a) Határozzunk meg feltételt R és R 1 értékeire, amely mellett a nemlineáris ellenállásnak az u N = 5, i N = 1 egy munkapontja! Határozzuk meg a többi munkapontot is! (b) A C 1 kondenzátort figyelmen kívül hagyva állapítsuk meg a munkapontok stabilitásának feltételét! (c) Állapítsuk meg a munkapontok stabilitásának feltételét C 1 -et is figyelembe véve! R R 1 u s C u N C 1 i N (a) (R + R 1 )i N + u N = 7 alapján a megadott munkapontra (R + R 1 ) + 5 = 7, R + R 1 = 2 a feltétel. A Thévenin-ekvalens paraméterei: U T h = 7, R b = R + R 1 = 2. 6 i N in = U(u N ) 4 2 2 4 6 8 A másik két munkapontból a lineáris szakaszra eső: 5u N 2 + u N = 7 vagyis u N1 = 0,636 és i N1 = 3,182. A hiperbolára eső pedig 5/u N 2 + u N = 7, u 2 N 7u N + 10 = 0, vagyis u N2 = 2 és i N2 = 2,5. (A másik gyök a már ismert 3. munkapontot adja.) u N
(b) Mivel feszültségvezérelt karakterisztika áll relkezésre, a dinamikus konduktanciák határozhatók meg könnyen: Az 1. munkapontra G d1 = di N(u N ) du N = 5, un1 a 2. munkapontra a 3. munkapontra G d2 = di N(u N ) du N G d3 = di N(u N ) du N = 5 un2 u 2 N un2 = 5 un3 u 2 N un3 = 1,25, = 0,2. R 2 R ũ s C ũ N G d C 1 ĩ N A munkapont akkor és csak akkor stabil, ha az adott munkapontban a linearizált rszer aszimptotikusan stabil. Mivel a linearizált hálózat elsőrű, elegő a sajátérték meghatározásához a kondenzátor felől benézve a dezaktivizált kétpólus eredő ellenállását meghatározni: ) R b = (2 R + 1Gd R = R 2 R + 1/G d. 2 + 1/G d R b > 0 esetén a munkapont stabilis. Az 1. munkapontra ez biztosan teljesül (csak pozitív ellenállások, passzív a kétpólus). A 3. munkapontra R b = R 2 R + 1/G d = R 3 R 2 + 1/G d 3 szintén teljesül bármilyen R > 0 értékre. A 2. munkapont esetén viszont R b = R 2 R + 1/G d = R 1,2 R, 2 + 1/G d 1,2 vagyis csak 0 < R < 1,2 mellett stabilis a munkapont, 1,2 < R < 2-re viszont labilis.
4. feladat Vizsgáljuk meg az előző feladatban megállapított munkapontok stabilitását, ha a szaggatottan bejelölt C 1 kapacitást is figyelembe vesszük (C 1 << C, ún. szórt kapacitás)!
5. feladat Legyen egy nemlineáris kondenzátor töltés-feszültség karakterisztikájára a 0 < u N < 0,5V tartományra érvényes közelítő összefüggés q = 2 10 10 0,5(0,5 u N ) C, 0 < u N < 0,5V ahol u N a kétpólus feszültsége ([u N ] = V ) az ábrán látható referenciairánnyal. R u s u N (a) Határozzuk meg a nemlienáris kondenzátor dinamikus kapacitását a feszültség függvényében a 0 < u N < 0,5 V tartományban! (b) Számítsuk ki a nemlineáris elem áramát, ha a forrás feszültségének időfüggvénye u s (t) = u s + ũ s (t) = (0,2 + 0,01 cos ω 0 t)v, ω 0 = 2πMrad/s és R = 1 kω! Megoldás: (a) A dinamikus kapacitás C(u N ) = dq(u N) du N ( ) 0,5 = 100 pf, un 0,5 u N 0 < u N < 0,5V. (b) A linearizált modell: R ũ s ũ N C d A dinamikus kapacitás a munkapontban C d = C(0,2) = 129,1pF a körben folyó áram a munkapontban a változó összetevőkre fazorokkal felírva ([mv, kω, µa, nf, µs, Mrad/s] koherens egységrszerben Ĩ N (jω) = Ũ s (jω) 10e j0 = R + 1/jωC d 1 + 1/j2π0,1291 = 10 1 1,233j = 6,3e0,8894j ahonnan i N (t) = ĩ N (t) = 6,3 cos(ω 0 t + 0,8894) µa, mert az áram állandó összetevője zérus.
6. feladat Egy soros rezgőkörben L = 250 mh, C = 1 µf, R = 10 Ω. A rezgőkört feszültségforrás gerjeszti. A válasz a tekercs árama. Írjuk fel az előrelépő és hátralépő Euler-sémát a kör ugrásválaszára! Implementáljuk a módszereket, és vessük össze a számított értékeket az analitikus megoldással! ahonnan az állapotváltozós normálalak u c + Li L + Ri L u s = 0 i L = Cu c, u c = 1 C i L i L = 1 L u c R L i L + 1 L u s. 6.1. Előrelépő Euler-séma u c (t r + h) = u c (t r ) + hu c(t r ) = u c (t r ) + h 1 C i L(t r ) ( 1 i L (t r +h) = i L (t r )+hi L(t r ) = i L (t r )+h L u s(t r ) 1 L u c(t r ) R ) ( L i L(t r ) = i L (t r ) 1 hr ) + h L L (u s(t r ) u c (t r )) 6.2. Hátralépő Euler-séma u c (t r + h) = u c (t r ) + hu c(t r + h) = u c (t r ) + h 1 C i L(t r + h) ( 1 i L (t r + h) = i L (t r ) + hi L(t r + h) = i L (t r ) + h L u s(t r + h) 1 L u c(t r + h) R ) L i L(t r + h) ( i L (t r + h) 1 + hr ) = i L (t r ) + h L L u s(t r + h) h L u c(t r + h) Átrezhetjük úgy, hogy Ax = b alakú lineáris egyenletrszert kapjunk: [ ] [ ] [ ] 1 h C uc (t r + h) u h L 1 + hr = c (t r ) i L L (t r + h) i L (t r ) + h L u s(t r + h) A jobb oldalon t = (t r + h)-ban ismert mennyiségek, a bal oldalon t = (t r + h)-ban kiszámítandó mennyiségek szerepelnek. Mivel a megoldandó feladat lineáris, ezért a visszalépő Euler-séma ugyan implicit, de lineáris egyenletrszerre vezető problémára vezet, amelyet minden időlépésnél meg kell oldanunk. Ebben az esetben az egyenletrszert zárt alakban megoldva explicit formulához juthatnánk, azonban ezt nem tesszük meg, a későbbiekben, amikor nemlineáris problémákkal szembesülünk, nem is fogjuk tudni megtenni. 6.3. Zárt alakú megoldás G(s) I L (s) = 1 s 1 R + sl + 1/sC [V, ma, kω, H, µf, ms] koherens egységrszerben számolva I L (s) = 1 0,25s 2 + 0,01s + 1 g(t) i L (t) = ε(t)2e 0,02t sin(1,999t)
6.4. Megoldás Octave-ban clear close all R = 0.01; C = 1; L = 0.25; h = 0.002; % ms t = 50; % ms % elorelepo uce = 0; ile = 0; ilev = zeros(1, t/h); % ebbe a vektorba "mentjuk" il(t) ertekeit for ts = 1:t/h, % ts: az idolepes indexe ilev(ts) = ile; %il-t megjegyezzuk uce_tr = uce; % kesobb kelleni fog a tr-beli ertek uce = uce + h/c*ile; % uc(tr+h) kiszamitasa % il(tr+h) kiszamitasa: ile = ile*(1-h*r/l) + h/l*(1-uce_tr); % us = 1, mert ugrasvalaszt szamolunk ilev(ts+1) = ile; %il-t megjegyezzuk % visszalepo ucv = 0; ilv = 0; ilvv = zeros(1, t/h); for ts = 1:t/h, ilvv(ts) = ilv; res = [1 -h/c; h/l 1+h*R/L]\[ucv; ilv + h/l*1]; ucv = res(1); ilv = res(2); ilvv(ts+1) = ilv; % az utolso erteket se felejtsuk tarolni %abrazolas tv = 0:h:50; plot(tv, 2.002*exp(-0.02*tv).*sin(1.999*tv), tv, ilev, x,tv, ilvv, r+ ) leg( analitikus, elorelepo, visszalepo )
7. feladat Az alábbi hálózatban a forrás feszültsége a t = 0 időpillanattól kezdve ismert, u c (0) = 0, a dióda karakterisztikája pedig az 1. feladatbelivel megegyezik. A rszer válasza a kondenzátor feszültsége. (a) Állítsuk elő a hálózat állapotegyenletének egy kanonikus alakját! (b) Állítsuk elő az állapotegyenlet normálalakját, ha ez lehetséges! (c) Állítsuk elő az előrelépő Euler-módszer sémáját! (d) Állítsuk elő a hátralépő Euler-módszer sémáját! (e) Számítsuk ki a rszer válaszát az Octave/Matlab ode45függvényével u s (t) = 0,3V ε(t) gerjesztésre, ha R = 2 kω és C = 1 µf! (f) Számítsuk ki a rszer válaszát az előrelépő Euler-sémával u s (t) = 0,3V ε(t) gerjesztésre, ha R = 2 kω és C = 1 µf! (g) Írjunk programot a kondenzátor feszültségének, mint válaszjelnek az kiszámítására, ha u s (t) = 0,05ε(t)[2 + sin(ω 0 t)] sin(50ω 0 t), és R = 1 kω! i N u s u N u c C R 7.1. Megoldás (a) Az állapotváltozó u c. A dióda katódjára felírható csomóponti egyenlet: Továbbá Cu c i N + u c R = 0, u c = 1 RC u c + 1 C i N u N = u s u c, és ismerjük a dióda áramára vonatkozó explicit karakterisztikát, i N = I(u N ). Utóbbi három egyenlet az állapotegyenlet kanonikus alakja. (b) A három egyenlet összevetésével előállítható az állapotváltozós normálalak. u c = 1 RC u c + 1 C I(u N ) u c = 1 RC u c + 1 C I(u s u c ). (c) Az előrelépő Euler-séma h időlépéssel előállítható az állapotegyenlet normálalakjából: [ u c (t r + h) u c (t r ) + h u c(t r ) = u c (t r ) + h 1 RC u c(t r ) + 1 ] C I(u s(t r ) u c (t r )) [ u c (t r + h) u c (t r ) 1 h ] + h RC C I [u s(t r ) u c (t r )] (1)
(d) A hátralépő Euler-séma: [ u c (t r + h) u c (t r ) + h u c(t r + h) = u c (t r ) + h 1 RC u c(t r + h) + 1 ] C I(u s(t r + h) u c (t r + h)) [ u c (t r + h) 1 + h ] = u c (t r ) + h RC C I [u s(t r + h) u c (t r + h)]. Mivel ez az egyenlet u c -re vonatkozóan egy (implicit) nemlineáris algebrai egyenlet, minden időlépésre meg kell oldanunk numerikusan. Itt is lehetőség van a Newton-Raphson eljárás alkalmazására. Vezessük be az ismeretlenre az u c = u c (t r +h), a gerjesztésre az u = u s (t r +h) rövid jelöléseket, a nemlineáris karakterisztika deriváltját pedig jelöljük I (u N ) = di(u N )/ du N -nel! A megoldandó egyenlet nullára redukálva: F (u c ) u c (t r ) + h [ C I [u u c] u c 1 + h ], RC a Newton-iterációhoz szükséges derivált pedig F (u c ) = df (u c) du c A Newton-iteráció explicit alakja ezzel u (k+1) c = u (k) c F (u(k) c ) F (u (k) c ) = u(k) = ( 1) h C I [u u c ] c + [ 1 + h ]. RC [ ] u c (t r ) + h C I u u (k) [ h C I c u u (k) c u (k) [ ] c 1 + h RC ] ] + [ 1 + h RC (Egyszerű összevonási lépések, ill. a karakterisztikák behelyettesítése után teljesebb alakot kapnánk.) A dióda karakterisztikájának deriváltja: I (u N ) = di(u N )/ du N = I s u T e u/u T. Az Euler-algoritmus minden egyes időlépésére elvégezzük az u c (t r + h)-beli értékéne kiszámítására szolgáló fenti iterációt, amíg u (k+1) c u (k) c egy előírt korlátnál (pl. 10 6 ) kisebb nem lesz. Azután h-val előretekerjük az időt, u c (t r + 2h) kiszámításához, és így tovább. (e) Az alábbi Octave/Matlab-kód az egyik beépített diff. egyenlet-megoldó függvényt, az ode45-öt használja, amely az Euler-sémákkal ellentétben egy többlépéses (emiatt ugyanakkora időlépésre általában pontosabb) séma. A megoldandó diff. egyenletet egy függvény-"handle" segíségével adjuk meg (célja hasonló a C-beli függvényre mutató pointerhez), és a diff. egyenletet reprezentáló függvénybe kell beépítenünk a gerjesztést is. option = odeset( RelTol, 1e-6, AbsTol, 1e-8); [t, x] = ode45(@dioda_de, [0 20], 0, option); plot(t, x, + ); xlabel( t [ms] ) ylabel( u_c [V] ) grid on A differenciálegyenletet kódoló függvény: function duc = dioda_de(t, uc) R = 2; C = 1; w0 = 1; duc = -1/(R*C)*uc + 1/C * dioda_kar(0.05 * (2+sin(w0*t))*sin(50*w0*t) - uc); A függvény hívja a dióda karakterisztikáját leíró függvényt is: function in = dioda_kar(un) in = 1e-4*(exp(un/0.026)-1); (f) Az alábbi Octave/Matlab-kód az (1) sémát valósítja meg, ha u s = 1 V konstans gerjesztés. [V, ma, kω, µf, ms] koherens egységrszerben számolunk.
C = 1; R = 2; % a forrasfeszultseg us = 0.3; % a dioda parameterei: Is = 1e-4; % 1e-7 ua ut = 0.026; % 26 mv h=1e-3; % idolepes tr = 0; t = 1.5; % ms; a [0, t] intervallumban szamolunk uc = 0; % kezdeti ertek ucv = [uc]; t = [0]; while tr < t, uc = uc*(1-h/(r*c)) + h/c * Is*(exp((us-uc)/0.026)-1); ucv = [ucv uc]; % bar vektort menet kozben atmeretezni nem szep dolog! tr = tr + h; t = [t tr]; plot(t, ucv, LineWidth, 3) xlabel( t [ms] ) ylabel( u_c(t) [V] ) axis tight (g) A gerjesztés tkp. egy amplitúdómodulált jel, ahol a jel körfrekvenciája 1 krad/s, a vivőfrekvencia pedig 50 krad/s. Az alábbi eredmény azt demonstrálja, hogy a fenti elrezés (az ún. burkolódetektor, envelope detector) a C kapacitás megfelelő megválasztása mellett alkalmas az amplitúdómodulált jel demodulálására. Az R ellenállás a terhelést (pl. nagyimpedanciás fejhallgatót) reprezentál. A demoduláció egy példa arra, hogy bizonyos alkalmazásokban az eszközök nemlinearitását kihasználjuk, hiszen lineáris rszer válasza nem tartalmazhat más frekvenciájú összetevőt, csak olyat, ami a gerjesztésben is szerepel. clear close all C =.5; R = 2; % a dioda parameterei: Is = 1e-4; % 1e-7 ua ut = 0.026; % 26 mv h=1e-4; % idolepes tr = 0; t = 20; % ms; a [0, t] intervallumban szamolunk uc = 0; % kezdeti ertek ucv = [uc]; t = [0]; usv = [0]; w0 = 1; while tr < t, us = 0.05*((2+sin(w0*tr))*sin(50*w0*tr)); uc = uc*(1-h/(r*c)) + h/c * Is*(exp((us-uc)/0.026)-1); ucv = [ucv uc]; % vektort menet kozben atmeretezni nem szep dolog! usv = [usv us]; tr = tr + h; t = [t tr]; plot(t, ucv, t, 0.01*usv) leg( uc, us ) xlabel( t [ms] ) ylabel( u_c(t) [V] ) axis tight
x 10 3 6 uc us 5 4 u c (t) [V] 3 2 1 0 1 0 2 4 6 8 10 12 14 16 18 20 t [ms] (h) *A visszalépő Euler-sémát megvalósító Octave/Matlab-kód: clear close all C =.5; R = 2; w0 = 1; % krad/s % a dioda parameterei: Is = 1e-4; % 1e-7 ua ut = 0.026; % 26 mv h=1e-3; % idolepes tr = 0; % ez lesz a futo idovaltozo t = 15; % ms; a [0, t] intervallumban szamolunk ntstep = t/h; % az idolepesek szama uc = 0; % kezdeti ertek ucv = zeros(1, ntstep); % ebben jegyezuk meg az eredmenyt t = zeros(1, ntstep); % itt pedig az idolepeseket uc(1) = 0; t(1) = 0; for tstep = 2:ntstep, tr = tr + h; % eloretekerjuk az orat h-val % a forrasfeszultseg us = 0.05*((2+sin(w0*(tr)))*sin(50*w0*(tr))); % Newton-iteracio uck = uc; % az aktualis idolepesre az elso "tipp" legyen az elozo idolepes eredmenye uck1 = 1e6; for iter=1:200, uck1 = uck + (uc + h/c*dioda_kar(us - uck) - uck*(1+h/r/c))./(h/c*is/ut*exp((us-uck)/ut) + 1+h/R/C); if abs(uck - uck1) < 1e-8 break uck = uck1; uc = uck1; % az aktualis idolepesben ez a kondenzator feszultsege, az N-R iteracio eredmenye ucv(tstep) = uc; % taroljuk tombben az eredmenyt t(tstep) = tr; plot(t, ucv, LineWidth, 1) xlabel( t [ms] )
ylabel( u_c(t) [V] ) axis tight
8. feladat Az ábrán látható hálózat az ún. Chua-féle áramkör. A hálózatban nincs forrás, csak a dinamikus elemek kezdeti értékei hajtják azt. (a) Adjuk meg az állapotváltozós leírás kanonikus alakját a bejelölt referenciairányokkal! (b) Adjuk meg az állapotváltozós leírás normálalakját! (c) Szimuláljuk a rszert az alábbi elemértékekkel: L = 1/7 H, G = 0,7 S, C 1 = 1/9 F, C 2 = 1 F. Legyenek a kezdeti értékek: u c1 (0) = 2,286 V, u c2 (0) = 0,222 V, i L (0) = 1,81 A! (d) Vizsgáljuk meg, hogyan változnak a trajektóriák, ha a kezdeti értékeket, illetve G értékét kismértékben megváltoztatjuk! G i L L u c2 C 2 u c1 C 1 u N i N i N 0,5 S 1 0,8 S u N 3 2 1 1 2 3 1 0,5 S (a) Az állapotváltozós leírás kanonikus alakjának felírásához pl. a csomóponti potenciálok módszerét használhatjuk. Ha az alsó csomópont a referencia, akkor u c1 : C 1 u c1 + G(u c1 u c2 ) + i N = 0 u c2 : i L + C 2 u c2 + G(u c2 u c1 ) = 0 u c2 = Li L. Innen a kanonikus alak: u c1 = G C 1 u c1 + G C 1 u c2 1 C 1 i N u c2 = G C 2 u c1 G C 2 u c2 + 1 C 2 i L i L = 1 L u c2 i N = g(u N ) (b) Esetünkben meg tudjuk adni az állapotváltozós leírás normálalakját is, a nemlineáris karakterisztika behelyettesítésével. Mivel u N = u c1, ezért i N = g(u c1 ), és a normálalak: u c1 = G u c1 + G u c2 1 g(u c1 ) C 1 C 1 C 1 u c2 = G u c1 G u c2 + 1 i L C 2 C 2 C 2 i L = 1 L u c2
(c) Bár használhatnánk saját (pl. az előző feladatoknál is használt Euler-féle) sémákat, érdemes megismerni a Matlab/Octave által használt numerikus differenciálegyenlet-megoldó sémákat. Példaként az ode45 variánst mutatjuk be. A számítást levezénylő szkript: clear close all options = odeset( RelTol,1e-4, AbsTol,[1e-6 1e-6 1e-6]); [T,X] = ode45(@chua_de,[0 1000],[-2.286.222 1.81],options); plot(x(:,1), X(:,2)) xlabel( u_{c1} ) ylabel( u_{c2} ) figure plot3(x(:,1), X(:,2), X(:,3)) figure plot(x(:,1)) A megoldandó differenciálegyenletet kódoló függvény: function dx = chua_de(t, x) dx = zeros(3,1); L = 1/7; G = 0.7; C1 = 1/9; C2 = 1; dx(1) = -G/C1 * x(1) + G/C1 * x(2) - 1/C1 * chua_nl(x(1)); % uc1 dx(2) = G/C2 * x(1) - G/C2 * x(2) + 1/C2 * (x(3)); % uc2 dx(3) = -1/L * x(2); % il Végül a nemlineáris ellenállás karakterisztikáját visszaadó függvény: function in = chua_nl(un) m1 = -0.8; m0 = -.5; % szakaszonkenti megadas %in = zeros(1,length(un)); %in(un >= -1 & un <= 1) = Ga * un(un >= -1 & un <= 1); %in(un > 1 ) = Gb * un(un > 1) + Ga - Gb; %in(un < -1) = Gb * un(un < -1) + Gb - Ga; % trukkos megoldas: in = m0 * un + 0.5*(m1-m0)*(abs(un+1)-abs(un-1)); 0.4 0.3 0.2 0.1 u c2 0 0.1 0.2 0.3 0.4 2.5 2 1.5 1 0.5 0 0.5 1 1.5 2 2.5 u c1