• Ei tuloksia

Moniulotteinen Newtonin menetelmä

3.2 Epälineaariset yhtälöryhmät

3.2.2 Moniulotteinen Newtonin menetelmä

Edellä Newtoninmenetelmääsovellettiinyhden muuttujan yhtälöissä. Sitävoidaan

kuitenkin käyttää myös useamman muuttujan yhtälöiden ja yhtälöryhmien ratk

ai-suissa. Oletetaanesimerkiksi, ettäfunktio

F (x) = 0

onuseammanmuuttujan

yhtä-löryhmä

,jonkanollakohtaaapproksimoidaanNewtoninmenetelmällä.Moniulotteisen

nolla-kohdan löytämiseksi yhtälö (12) on kuitenkin täydennettävä moniulotteiseen

muo-toon, eli jokaiselle funktiolle lasketaan tangettiviivan sijasta tangenttitaso ja

funk-tiosta onlaskettavatangentti sen jokaisen muuttujanmukaan.

g i (x) = f i (x (k) )+ ∂f i

Kyseinen yhtälövoidaan esittäämyös muodossa [17℄

G k (x) = f (x (k) ) +

, missä matriisi

J (x)

tunnetaan Jaobianmatriisina. Tangenttitasojen yhtymäkoh-tien

x

selvittämiseksi 0-tasossavoidaan asettaa

G k (x) = 0

, ja yhtälö (15) saa

muo-don

x = x (k) − f(x (k) ) J (x (k) )

ja yleisemminpätevänä iteraatioyhtälönäse voidaan esittää muodossa

x (k+1) = x (k) − f (x (k) )

J(x (k) ) .

(16)

Yhtälön(16)mukaanlaskettunaJaobianmatriisistatäytyisikuitenkinlaskea

kään-teismatriisi, joka on aikaa vievää ja yhtälö kannattaa ennemmin kertoa Jaobian

matriisilla.

J(x (k) )(x (k+1) − x (k) ) = −f(x (k) )

(17)

Saatuyhtälöryhmä(17)onkätevämpijanopeampiratkaista,josyhtälöönsijoitetaan

y (k) = x (k+1) − x (k)

(18)

ja yhtälöryhmä (17) saa muodon

J (x (k) )(y (k) ) = −f(x (k) ).

(19)

Kyseessäonlineaarinenyhtälöryhmä,jokavoidaanratkaistaesimerkiksijotakin

suo-raa menetelmä, kuten Gaussin eliminointiakäyttäen. Yhtälöryhmän ratkaisun

jäl-keensaatutulos

y (k)

voidaansijoittaayhtälöön(18)javaiheen

(k+1)

approksimaatio saadaan lasketuksi. Tämän jälkeen tulokseksi saatu approksimaatio sijoitetaanyhä

uudelleen yhtälöön (17), kunnes approksimaatioon niintarkka,kuin ontarpeen.

TeoreettisestitarkasteltunaNewtoninmenetelmäsaattaavaikuttaahyvinkin

mo-nimutkaiseltamenetelmältäepälineaaristenyhtälöryhmienratkaisemiseksi.

Käytän-nössä Newtoninmenetelmä eikuitenkaan olekovinkaan monimutkainen ja pieni

ai-heenmukainenesimerkkiosoittaasenparhaiten.Oletetaanesimerkiksi,että

ratkais-tavana on kuvan 8 mukaisesta epälineaarisesta piiristä muodostettu epälineaarinen

yhtälöryhmä.

f (v 1 , v 2 , v 3 , i 3 ) =

YhtälöryhmänlinearisoimiseksionyhtälöryhmästälaskettavaJaobianmatriisi,

jo-ka voidaan laskea yhtälön (15) mukaisesti ja Jaobian matriisinyleiseksi muodoksi

saadaan

Ennen Newtoninmenetelmän soveltamista onratkaisullekuitenkin vielä asetettava

alkuarvaus, joka onhyvä asettaanollapisteeseen

x (0) = (0, 0, 0, 0).

Tämän jälkeen ensimmäisen approksimaation laskemiseen voidaan käyttääyhtälöä

J(x (0) )y (0) = −f (x (0) )

Kyseisen yhtälöryhmän ratkaisuksi saatu tulos,

y (0) =

2.260870, 1.391304, 0.695652, 0.695652

sijoitetaan lausekkeeseen(18) ja ensimmäisen approksimaationarvoksisaadaan,

x (1) = x (0) + y (0) =

2.260870, 1.391304, 0.695652, 0.695652

.

Saatu tulos voidaan sijoittaa uudelleen yhtälöön(19)

J(x (1) )y (1) = −f (x (1) )

ja toisen approksimaationarvoksi saadaan

x (2) = x (1) + y (1) = (2.525094, 1.787640, 2.413108, 0.893820).

Tätä voidaantoistaa yhä uudelleen, mutta jo neljännessä iteraatiossa saatu tulos

x (4) = (2.55, 1.83, 2.58, 0.91)

, onlähtöarvojen tarkkuuksienmukainen.

Luvussa 3.2.2 Newtonin menetelmää käytettiin epälineaaristen yhtälöryhmien

rat-kaisussa. Yhtälöryhmien ratkaisussa tarvittiin Jaobinmatriisia,jokavoitiinlaskea

epälineaarisesta yhtälöryhmästä. Piirin linearisointi vastaa Newtonin menetelmää

lähes täysin, mutta piirin linearisoinnissa Jaobian matriisia ei lasketa

epälineaa-risesta yhtälöryhmästä, vaan se muodostetaan linearisoidusta piiristä. Menetelmä

lähtee liikkeelle Newtoninmenetelmäntavoinalkuarvauspisteestäja piiri

linearisoi-daan kyseisessä pisteessä. Esimerkiksi jos tarkastellaan kuvan 8 mukaisesta piiriä

ja sen ainoata epälineaarista komponenttia, virtariippuvaista virtalähdettä, jonka

virtaa

i 2 3

kuvaava yhtälö voidaan linearisoida yhtälön (12) mukaisesti. Tulokseksi saatu tangenttiyhtälö

g(x) = 2x 0 (x − x 2 0 ) + x 0

kuvaa virtalähteen käyttäytymistä pisteen

x 0 = i (0) 3

läheisyydessä. Luvun 3.2.2 mukaisessa esimerkissäalkuarvaus ase-tettiin kyseisen arvon kohdalla arvoon

i (0) 3 = 0

. Asettamalla nyt sama alkuarvaus saadaantangenttiyhtälöksi

g(x) = 0

,elipisteessä

i (0) 3 = 0

linearisoitupiirionkuvan 9 mukainen.

Kuva9: Kuvan8 mukainen piirilinearisoitunapisteessä

i (0) 3 = 0

Piirinlinearisoinnintuloksenasaadusta lineaarisestapiiristävoidaanmuodostaa

f (v 1 , v 2 , v 3 , i 3 ) =

 

 

 

 

 

 

 

 

v 2 − v 1

1 + v 2 1 − 2 = 0

v 2 − v 3

4 + v 2 1 v 1 + v 2 2 = 0

v 3 − v 2

4 + v 4 3 = 0

v 2

2 − i 3 = 0

,jostavoidaanhavaita,että sevastaatäysinluvussa 3.2.2esitetynesimerkin

ensim-mäisen approksimaatiovaiheen mukaista yhtälöryhmää. Yhtälöryhmän ratkaisusta

saadaan ensimmäisen iteraation arvo

i (1) 3

ja piiri voidaan linearisoida saadulla ar-vollataas uudelleen. Tätä toistetaan yhä uudelleen kuten Newtonin menetelmässä,

kunnes tulos on riittäväntarkka.

3.2.4 Jyrkän kasvun menetelmä (Steepest Desent method)

Piirin linearisointija Newtonin menetelmä ovat, sekä nopeita, että tarkkoja

mene-telmiäepälineaaristenyhtälöryhmienratkaisussa.Neovatkuitenkintarkkuudestaan

ja nopeudestaan huolimatta toiminnaltaanepävarmoja. Niiden toiminnan varmuus

riippuu hyvin pitkälti alkuarvauksesta ja mitä lähempänä alkuarvaus on ratkaisua,

sitävarmempiane toiminnaltaanovat.Joskus alkuarvausvoiollaliianhuonoratk

ai-sun löytämiseksi ja sen takia ne tarvitsevatkin tuekseen laskentamenetelmän, jota

voidaan käyttää paremman alkuarvauksen tuottamiseen. Tällaiseksi

menetelmäk-si sopii hyvin jyrkän kasvun menetelmä. Jyrkän kasvun menetelmä ei kuitenkaan

ole toiminnaltaan yhtä nopea ja yksinkertainen ratkaisumenetelmä kuin Newtonin

menetelmäon jasen takiaalkuarvausta kannattaakin tarkentaa sillävainparin

ite-raationverran. Nopeankasvunmenetelmälähtee Newtoninmenetelmäntavoin

liik-keellealkuarvauksesta,muttaratkaisuaeilähdetäetsimäänsuoraanyhtälöryhmästä

(14) vaan yhtälöryhmästä johdetusta funktiosta [18℄

g(x 1 , x 2 , ..., x n ) =

n

X

i=0

[f i (x 1 , x 2 , ..., x n )] 2

(20)

, jonka nollakohta on samassa pisteessä kuin yhtälöryhmän (14) ratkaisu.

Nolla-kohdan selvittämiseksi on ensin laskettava suunta, johon funktion (20) arvo lähtee

∇g(x) =

∂g(x)

∂x

1

, ∂g(x)

∂x

2

, ..., ∂g(x)

∂x

n

t

Funktion gradienttikertookuitenkin vasta suurimman muunnoksen suunnan jasen

takia on vielä laskettava kuinka suurella kertoimella

α > 0

alkuarvauksen arvoa kannattaa muuttaa.

x (n+1) = x (n) − αz = x (n) − α ∇g(x (n) )

|∇g(x (n) )|

(21)

Kyseisen

α

muuttujan arvo voitaisiinlaskea suoraanyhtälöstä

h(α) = g

x (n) − α ∇g(x (n) )

|∇g(x (n) )|

(22)

, mutta arvon suoramäärittelydierentiaalin avullaolisikuitenkin todennäköisesti

liian työlästä. Sen takia funktion (20) käyttäytymistä alkuarvauksen läheisyydessä

kannattaa vainapproksimoida.Approksimointionnistuu parhaiten Newtonin

inter-polaation toisenasteen polynomin avulla

P (α) = g(x (n) ) + h 1 α + h 3 α(α − α 2 )

(23)

, missä

h 1 = g(x (n) − α 2 z) − g(x (n) − α 1 z) α 2 − α 1

h 3 = h 2 − h 1 α 3 − α 1

h 2 = g(x (n) − α 3 z) − g(x (n) − α 2 z) α 3 − α 2

jajokainterpoloifunktion(22)pisteissä

α 1 , α 2

ja

α 3

.Kyseisetkolmefunktion(22)

in-terpolaatiopistettäonvalittavasiten,ettäehdot

α 1 = 0

,

h(α 3 ) < h(α 1 )

ja

α 2 = α 3 /2

toteutuvat.Näin ollen

α 1

onaina arvoltaan0 ja

α 3

onalkuarvaus, jokavalitaan si-tenettäehtototeutuu

h(α 3 ) < h(α 1 )

.Tämänjälkeenvielälopuksiviimeinenkerroin

α 2

sijoitetaanarvojen

α 1

, sekä

α 3

puoliväliinja koska

α 1 = 0

niin voidaan suoraan

laskea

α 2 = α 3 /2

. Kyseiset arvot määrittelevätfunktion (23) ja paras yhtälön (21)

α α P (α ) = 0 α α

ja

α 3

parempi on se, joka tuo yhtälölle (22) pienemmän arvon. Paremman arvon

määrittelemisenjälkeen parempisijoitetaanyhtälöön(21) jaiteraationseuraava

ar-vo voidaan laskea. Tämän jälkeen lasketaan taas paras

α

:n arvo, sekä sen avulla

seuraavaniteraationarvo ja tätä toistetaan kunnes haluttu tarkkuus saavutetaan.

Elektroniikkapiirien käyttäytymistä voidaan analysoida usealla eri tavalla. Näitä

analysointitapoja ovat mm. tasavirta-, vaihtovirta-, transientti-, herkkyys- ja

häi-riöanalyysi. Nimensä mukaisesti jokainen näistä on kehitetty tietyn tilanteen

simu-loimistavarten.Tässätyössä kehitettyohjelmaosaasoveltaatasavirta-,

vaihtovirta-ja transienttianalyysejä.

4.1 Tasavirta-, eli DC-analyysi

Analogistenelektroniikkapiirienkäyttäytymisen simulointialoitetaantavallisesti

ai-natasavirta-analyysistä.Analyysinavullasaadaanselvillepiirinoperaatiopiste.T

asavirta-analyysissä kaikki lähteet on tasavirtaisia, joten piirin jännitteet tai virrat eivät

muutu ajan myötä ja energiaa varaavat komponentit voidaan korvata. Esimerkiksi

kondensaattorinläpikulkevavirtaonriippuvainensen yliolevanjännitteen

muutok-sista

i = C dv

dt

(24)

ja koskajännite on aina vakio.

i = C dv

dt = C · 0 = 0

Eli kondensaattorin läpiei kulje koskaan virtaja se voidaan korvata virtalähteellä,

joka ei tuota virtaa ollenkaan, eli

i = 0

A. Induktoria sen sijaan ei voi korvata

virtalähteellä, sillä sen yli oleva jännite on riippuvainen sen läpi kulkevan virran

muutoksista

v = L di

dt

(25)

ja koskavirta onaina vakio

v = L di

dt = L · 0 = 0

Eli induktorinyli olevajännite onaina nolla ja se voidaan korvata jännitelähteellä,

yhtälöt. Yhtälötvoidaanmuodostaaesimerkiksisolmupisteanalyysinmukaisesti.

Li-neaarisesta piiristä muodostetut yhtälöt ovat lineaarisia ja niiden ratkaisemiseen

voidaan käyttää sekä suoria, että iteratiivisia menetelmiä.Työssä toteutettu

ohjel-maratkaisee lineaariset yhtälöryhmättavallisesti suoria menetelmiä kuten Gaussin

eliminointia ja LU-hajotelmaa soveltaen, mutta käyttää myös iteratiivisia

menetel-miä, kun ratkaisun nopeus on ratkaisun tarkkuutta merkitsevämpi tekijä.

Epäline-aarisista piireistä muodostetut yhtälöt ratkaistaan sen sijaan vain iteratiivisia

me-netelmiä käyttäen. Ohjelmassa ne yritetään aluksiratkaista Newtonin menetelmän

avulla, mutta jos iteraatioissa saadut tulokset lähtevät hajaantumaan sovelletaan

jyrkän kasvun menetelmää muutaman iteraationverran ja lopuksi arvoa

tarkenne-taan Newtonin menetelmänavulla.

4.2 Vaihtovirta- eli AC-analyysi

Tasavirta-analyysin jälkeen tiedossa on jo piirin operaatiopiste, eli piirin kaikkien

kytkentäpisteidenjännitteettunnetaan.Tämänjälkeenonuseinvieläsaatava

selvil-lepiirintaajuusriippuvuus,elimitenvaihtovirtaisenjavakaansignaalintaajuus

vai-kuttaa piirin käyttäytymiseen. Kyseinen analysointionnistuu vaihtovirta-analyysin

avulla.Vaihtovirta-analyysinsuorittamisenehtonaonkuitenkin,ettäkaikkien

piiris-sä olevien vaihtovirtaisten lähteiden signaalitovat sinusoidaalisiaja niiden taajuus

on sama. Vaihtovirta-analyysi aloitetaan luvussa 4.1 esitellyn tasavirta-analyysin

mukaisesti. Operaatiopisteen laskemisen jälkeen esimerkiksi diodit korvataan

ope-raatiopisteen mukaan lasketuilla sijaiskytkennöillä. Myös taajuusriippuvaiset

kom-ponentitkorvataan kuvan10 mukaisillalinearisoiduillasijaiskytkennöillä.

(a)Kondesaattorinsijaiskytkentä (b)Induktorinsijaiskytkentä

Kuva10: Taajuusriippuvaisten komponenttien sijaiskytkennät

analyysissä. Ainoana erona tavalliseen tasavirta-analyysin voidaan pitää sitä, että

kun tasavirta-analyysissä yhtälöt muodostettiin kokonaan reaalisista arvoista niin

vaihtovirta-analyysissämukana on myös kompleksisia arvoja. Ohjelman toiminnan

laajentaminentasavirta-analyysistävaihtovirta-analyysiineituoohjelman

koodauk-seen kovin suuria muutoksia. Vaihtovirta-analyysin toteuttamiseksi ohjelmaan on

vain lisättävä mahdollisuus piensignaalimallin luomiseen sekä kompleksisten

arvo-jen käsittelyyn.

4.3 Transienttianalyysi

Vaihtovirta- ja tasavirta-analyysissä analysoidaan miten piiri käyttäytyy vakaassa

tilassa. Piiri ei kuitenkaan aina ole vakaassa tilassa. Piirissä voi esiintyä

häiriösig-naaleja,jotkahäiritsevätjamuuttavatpiirinkäyttäytymistä.Vaikkahäiriösignaaleja

ei olisi, niin piiri ei kuitenkaan saavuta vakaata tilaa välittömästi virran

kytkemi-senjälkeen.Piirinsuunnittelussaonotettavahuomioonmyösmahdollisetepävakaat

tilatjatutkittavamitenpiiriniissäkäyttäytyy.Epävakaidentilojensimulointiin

käy-tetään aikakehitys eli transienttianalyysiä, joka tutkii miten piirin käyttäytyminen

muuttuu aikakehityksen myötä. Resistiivisissä piireissä aikakehityksen tutkiminen

on melko helppoa ja tavallisesti niiden aikakehitys voidaan hahmottaa jo nopealla

päättelyllä, sillä niissä kaikki piirin arvot hetkellä

t

ovat suoraan riippuvaisia läh-teiden arvoista hetkellä

t

. Resistiivisillä piireillä ei kuitenkaan ole kovinkaan laaja sovellettavuus ja sen takia usein käytetään myös energiaavaraavia komponentteja,

kutenkondesaattoreitajainduktoreita,joissajännitteenjavirranvälinenriippuvuus

on lineaarisen sijasta dierentiaalinen (24), (25). Kyseiset yhtälöt voidaan esittää

myös integraalisessamuodossa

v(t) = 1 C

ˆ t

−∞

i(t)dt

(26)

i(t) = 1 L

ˆ t

−∞

v (t)dt

(27)

ja ne osoittavat, että kondensaattorin jännite, sekä induktorin virta hetkellä

t

on

t

malla integraalin esimerkiksi väleille

[−∞, t 0 ]

ja

[t 0 , t]

voidaan yhtälöt (26) ja (27)

Kyseisissä yhtälöissä välin

[−∞, t 0 ]

määrätty integraali laskee esimerkiksi konden-saattorille,mikäjännitekondensaattorissaonhetkellä

t 0

.Elivälin

[−∞, t 0 ]

määrätty

integraalivoidaankorvatamuuttujalla

v (t 0 )

,joskyseisen hetken jännitetunnetaan.

Sama pätee myös induktorinvirralleja saadaan

v(t) = v (t 0 ) + 1

Hetken

t o

arvojakutsutaanalkuarvoiksijatavallisestiohjelmankäyttäjäasettaa ky-seisetarvottaisittenohjelmaasettaanepiirinoperaatiopisteenarvojenmukaan.

Al-kuarvojen laskemisen taiasettamisen jälkeen yhtälöissä (28), (29) onkummassakin

vielä yksi tuntematonarvo, joka onmäärätylläintegraalillamääriteltävä.

Integraa-lintarkkalaskeminen symbolisestionhaastavaaetenkintietokoneellaja usein

muu-tenkin mahdotonta. Tietokoneella määrätyn integraalin arvoa kannattaakin vain

approksimoida mahdollisimman tarkasti. Approksimointi onnistuu numeerisen

in-tegroinnin avulla. Numeeriseen integrointiin on olemassa useita eri menetelmiä ja

niidentarkkuudetvaihtelevatfunktion mukaan. Tärkeätäonkin valitaainakullekin

funktiolleparhaiten sopivaeli tarkin menetelmä.

Transienttianalyysi aloitetaantasavirta-analyysillä,jos ohjelman käyttäjä eiole

asettanutalkuarvoja.Operaatiopisteenlaskemiseksikaikkienergiariippuvaiset

kom-ponentit korvataan tasavirta-analyysin mukaisilla sijaiskytkennöillä.

Operaatiopis-teen laskemisella saadaan selville piirin alkuarvot eli yhtälöiden (28), (29) arvot

v(t 0 ) i(t 0 )

Kuva 12:Eulerin implisiittinenmenetelmä

ponentit korvataan numeerisen integrointimenetelmän mukaisillasijaiskytkennöillä

ja hetken

t 0 + δt

arvojen approksimaatio voidaan laskea. Tämän jälkeen sijaiskyt-kennät suoritetaan ajankohdan

t 0 + δt

arvojen mukaisesti ja hetken

t 0 + 2δt

arvot

voidaan laskea. Näin jatketaan kunnes

t 0 + nδt

on määrätyn integraalin ylärajan mukainen.

4.3.1 Eulerin menetelmät

Eulerin menetelmiin perustuvat numeeriset integroinnit ovat yksinkertaisia ja ne

antavat tarkan tuloksen vainvakiofunktioilla.Eulerin menetelmät perustuvat

deri-vaatan perusmääritelmään.

dy(t)

dt = lim

h → 0

y(t + h) − y(t)

h

Muuttamalla raja-arvo

h

nollasta poikkeavaksi voidaan derivaatan perusmääritel-mää approksimoida hieman

dy(t)

dt ≈ lim

h → δt

y(t + h) − y(t)

h ≈ y(t + δt) − y(t) δt

ja saadunyhtälön avullafunktion

y(t + δt)

arvoa voidaan approksimoida,kun arvo

y(t)

tunnetaan.

y(t + δt) ≈ y(t) + δt dy(t)

dt

(30)

Menetelmä tunnetaan nimellä Eulerineksplisiittinen menetelmä ja seetenee kuvan

11mukaisesti.Yhtälöllä(30) voidaan siisapproksimoidamyösmäärätynintegraalin

arvoa hetkellä

t + δt

, mutta tällöin derivaatta

dy(t)/dt

on integroitava funktio ja esimerkiksi kondensaattorin jänniteyhtälön (28) arvoa hetkellä

t + δt

voidaan

ap-proksimoidayhtälöllä [9℄

v(t + δt) = v(t) + δt i(t)

C

(31)

, missä

i(t)/C = dv(t)/dt

. Kyseisestä yhtälöstä (31) voidaan päätellä, että

het-kellä

t + δt

kondensaattori käyttäytyy kuin se olisi jännitelähde, jonka jännite on

v(t) + δti(t)/C

. Tämäntakiakondensaattorivoidaan korvata kuvan13b mukaisella

jännitelähteellä. Myös induktori voidaan korvata, mutta se korvataan yhtälön (32)

mukaisella ja kuvassa 13d esitetyllä virtalähteellä[9℄.

i(t + δt) ≈ i(t) + δt

L v(t)

(32)

Sijaiskytkentöjen jälkeen piirin arvot voidaan laskea ja niistä voidaan johtaa

approksimaationseuraavanvaiheen

t 0 + 2δt

sijaiskytkennät.

v (t 0 + 2δt) ≈ v(t 0 + δt) + δt i(t 0 + δt) C i(t 0 + 2δt) ≈ i(t 0 + δt) + δt v(t 0 + δt)

L

Tämänjälkeenpiirinarvotanalysoidaan uudelleenjaniistäasetetaan taasuudet

si-jaiskytkennät.Tätätoistetaan

n

kertaakunnes

t 0 +nδt = t 1

,elimäärätynintegraalin

()Induktori (d)Induktorinsijaiskytkentä

Kuva13:KondensaattorijainduktorisekäniidenEulerineksplisiittisenmenetelmän

sijaiskytkennät

ylärajaon saavutettu.

Eulerin eksplisiittisessä menetelmässäkäytettävätsijaiskytkennät tuottavat

jos-kusongelmiaanalysointiin.Ongelmiasyntyy esimerkiksi,josmontasilmukkaan

kyt-kettyäkondensaattoriakorvataanjännitelähteillä,jolloinjännitelähteetkäytännössä

aiheuttavat oikosulun. Kuvan 12mukaisestieteneväEulerin implisiittinen

menetel-mä tuo tällaisiin tilanteisiin korjauksen, silläimplisiittisessä menetelmässä

approk-simointisuoritetaan yhtälön (30) sijastayhtälöllä

y(t + δt) ≈ y(t) + δt dy(t + δt) dt

, jostavoidaan edelleen johtaa kondensaattorin

v(t + δt) ≈ v(t) + δt i(t + δt) C

ja induktorinsijaiskytkentöjä kuvaavat yhtälöt [9℄.

i(t + δt) ≈ i(t) + δt v (t + δt)

L

Theveninmalli

Kuva 14: Kondensaattori ja sen Eulerin implisiittisen menetelmän mukaiset

sijais-kytkennät

(a)Induktori (b)InduktorinTheveninmalli ()InduktorinNortoninmalli

Kuva15:Eulerin implisiittisenmenetelmänsijaiskytkennät induktorille

saattorinjännite

v(t + δt)

onriippuvainensamanajankohdan

t +δt

virrasta

i(t +δt)

,

kun taas eksplisiittisessä menetelmässä ne ovat riippuvaisiaeri ajankohdan

arvois-ta.Tämäntakiaimplisiittisessämenetelmässäkondensaattorinsijaiskytkentänä

voi-daan yhden jännitelähteen sijastakäyttääkuvan 14b mukaista kytkentää, missä on

kytkettynä sarjaan, sekäjännitelähde

v(t)

, että vastus

δt/C

. Kyseisellekytkennälle onolemassasitävastaava kuvan14 mukainen Nortoninkytkentä.Vastaavat

sijais-kytkennät induktorilleovatkuvissa 15b ja 15.

4.3.2 Puolisuunnikassääntö

Eulerin menetelmät ovat yhden pisteen menetelmiä, eli määrätyn integraalin arvo

approksimoidaanjokaisessavaiheessavainyhdenfunktion arvonavulla.

Eksplisiitti-sessä käytettiin arvoa

y(t)

,kun taasimplisiittisessä käytettiin arvoa

y(t + δt)

.

Puo-käytetään arvojen

dy(t)/dt

ja

dy(t + δt)/dt

keskiarvoa [9℄.

y(t + δt) ≈ y(t) + δt 2

dy(t) dt + δt

2

dy(t + δt) dt

Kyseisestäyhtälöstä johdetutkuvien17,18mukaisetsijaiskytkennätovatkin

ikään-kuin Eulerin eksplisiittisenja implisiittisenmenetelmän sijaiskytkentöjen

yhdistel-mä. Puolisuunnikassäännön mukainen integrointietenee kuvan16mukaisestija

ku-vasta voidaan havaita, että approksimointimyötäilee hyvin funktiota.

Puolisuunni-kassääntöonkin tarkkamenetelmä jaksollisillefunktioille.

malli

()KondensaattorinNortoninmalli

Kuva17: Kondensaattorija sen puolisuunnikassäännön mukaiset sijaiskytkennät

(a)Induktori (b)InduktorinTheveninmalli

()InduktorinNortoninmalli

Kuva18: Induktori jasen puolisuunnikassäännön mukaiset sijaiskytkennät

Oliokielelläkehitetty ohjelma koostuu nimensämukaisesti oliosta.Oliot ovat

ohjel-man osia, jotkatallentavattietoa ja vuorovaikuttavat keskenään. Ne muodostetaan

useimmiten käytännön käsitteiden mukaan. Piirisimulaatio-ohjelmassa tällaisia

kä-sitteitä ovat mm. kytkentäväli, kytkentäpiste ja komponentti.Tässä luvussa

tutus-tutaankin minkälaisin olioluokin ja algoritmein tässä työssä kehitetty

simulaatio-ohjelma onkehitetty.

5.1 Piirin topologia

Piirinkytkentöjentutkiminenjakäsittelyonohjelmantärkeimpiäaihealueita,koska

sitäsovelletaankaikistaenitenohjelmansuorittamisenaikana.Seonmyös

ohjelman-osa, jokakannattaa kehittääohjelman matemaattisenkoneiston ohella

ensimmäise-nä, silläkaikkimuut ohjelmanosatovatniistäriippuvaisia.Kytkentöjen tutkimiseen

on olemassa lukuisia eri menetelmiä, mutta valtaosa niistä on kuitenkin kehitetty

juurikytkentöjentutkimistajatulkitsemistaeikämuokkaamistavarten.Esimerkiksi

mm. SPICEssäkinkäytetty kytkentämatriisi[10℄onkäytännöllinenmenetelmä,kun

tarkoituksena onmuodostaasolmupisteyhtälöitä. Yksinkertaistusalgoritmeissaseei

kuitenkaan olekovin käytännöllinen, kunpiirin kytkentöjä myös muunnellaan.

Yk-sinkertaistamista varten täytyikin kehittää aivan oma menetelmä, jossa piirin

kyt-kentöjä tulkitaanja muokataanolionavulla.Kyseistä menetelmäävoidaansoveltaa

myös yhtälöidenmuodostamisessa.

5.1.1 Kytkentämatriisi

Tietokoneohjelmissa piirin kytkentöjen tulkitsemiseen käytetään usein ns.

kytken-tämatriisia

M

, jossa on oma rivi

i

jokaista piirin kytkentäpistettä

i

ja oma

sara-ke

k

jokaista piirin komponenttia

e k

varten. Matriisin

M

arvot

M ik

määräytyvät sen mukaanonkokyseessä kytkentäpisteeseensaapuvavaikytkentäpisteestälähtevä

kytkentä [21℄.

+1

,jos kytkentä onpisteeseen saapuva

−1 ,

jos kytkentä onpisteestä lähtevä

0

,jos kytkentää eiole

(33)

Näin ollen piirin jokaisesta kytkennästä on tehtävä päätös mihin pisteeseen se on

saapuva ja mistä seonlähtevä. Passiivisillakomponenteillakytkennän suunnalla ei

olemitäänmerkitystä.Lähteilläsuuntasen sijaankannattaa kuitenkin merkitä

vir-talähteenvirransuunnanjajännitelähteennapojen

− → +

mukaisesti.Käytännössä tämäonnistuuparhaitensuuntakytkentäkaavionavulla,jossaonmääriteltyjokaisen

kytkennänsuunta.Esimerkiksikuvan19mukaisestakytkentäkaaviostamuodostettu

suunnattu kytkentäkaavio voisiollakuvan20mukaisen suunnatunkytkentäkaavion

mukainen, jostamuodostettu kytkentämatriision:

M =

5.1.2 Kytkentäoliot

Luvussa 5.1.1esiteltykytkentämatriisivoidaankorvata oliokielessäolioluokan

avul-la. Tähän soveltuu esimerkiksi kuvan 21a mukainen olioluokka. Kyseinen

olioluok-ka kehitettiin nimenomaan yksinkertaistusta varten ja sen avulla

yksinkertaistus-ta voidaan nopeuttaa huomattavasti. Yksinkertaistus nopeutuu, silläkyseinen olio

ei sisällä nolla-alkioita kuten kytkentämatriisi. Kytkentämatriisin nolla-alkiot ovat

oikeastaan turhia, sillä ne kertovat vain kytkennöistä, joita ei ole olemassa.

Kyt-kentöjä käsitellään olioluokan avulla myös toisin, kun kytkentämatriisi käsittelee

kytkentöjä kytkentäpistein ja komponentein, niinolioluokka Kytkentäpisteet

käsit-telee kytkentöjä pelkästään kytkentäpistein. OlioluokanKytkentäpisteet

attribuut-tiin

viereisetpisteet

merkitään vain kaikki kyseisen kytkentäpisteen viereiset kyt-kentäpisteet ja esimerkiksi kuvan 20 mukaisen suunnatun kytkentäkaavion

maa-doituspisteestä muodostetun olion

viereisetpisteet

muuttuja olisi

{1, 3, 4}

. Kuvan

21b mukaista olioluokkaa apuna käyttäen kyseisten arvojen avulla voidaan viitata

kytkentäväli-olioista muodostettuuntaulukkoonja tutkia esimerkiksi kytkentävälin

[0, 1]

tai

[3, 0]

ominaisuuksia. Vaikka kyseinen olioluokka on kehitetty

yksinkertais-tusta varten, voidaan sitä käyttää apuna myös solmupisteanalyysin mukaisia

yhtä-löitämuodostettaessa.EsimerkiksiKCL-yhtälöidenmuodostaminenonnistuuhyvin

yksinkertaisesti ja samankaltaisesti kuin käytännössä. Yhtälöiden

muodostamises-sa tarvitsee vain tutkia KCL-pisteiden attribuuttia viereisetpisteet, jonka arvoista

saadaan selville miltäväleiltä kunkin KCL-pisteen yhtälöt muodostetaan.

Kytken-kentäpiste kentäväli

Kuva21: Kytkentöjä käsittelevätolioluokat

lopultaKCL-yhtälöt muodostetaan komponenttien arvojen mukaan.

5.2 Piirin komponentit ja niiden ominaisuudet

Piirin komponentit listataan ohjelmassa kytkentäväleittäin olioluokan

Kytkentävä-li attribuuttiin komponentit. Komponentteja on kuitenkin olemassamonenlaisia ja

ohjelmanonuseinsaatavaselville,mikäkomponenttionkyseessä. Joskusohjelmalle

riittää,ettäsesaaselvilleonkokyseessä aktiivinenvaipassiivinenkomponentti.

Ky-seinen tieto riittääusein esimerkiksi, kunohjelman täytyy saada selvilleonko jokin

väliyksinkertaistettavissa.Tietosiitä,ettäonkokomponenttipassiivinenvai

aktiivi-neneikuitenkaanoleainariittävä,silläesimerkiksi aktiivisiakomponenttejaon

ole-massa monenlaisia. Niitäovatesimerkiksi kaikki lähteet, jotka taas voivattaas olla

riippuvaisia, tasavirtaisia taivaihtovirtaisia. Myös ohjelman komponentteja

kuvaa-vat olioluokat muodostetaan näiden käsitteiden jakautumisen, sekä tarkentumisen

mukaan ja tarkentamista jatketaan niinkauan kunnes käsite ei ole enää abstrakti.

Kuvan22 mukainen periytyvyyskaavio osoittaa mitenohjelman komponenttiluokat

periytyvät.Komponenttiluokistakaikkeinylimpääntallennetaankaikille

komponen-teille ominaisetpiirteetkuten kytkentäväli,niiden yliolevajännite, sekäniiden läpi

kulkevavirta.Tietoa komponentinominaisuuksistatarkennetaansitä mukaan mitä

tarkempi käsite onkyseessä.

5.3 Ohjelman matemaattiset muuttujat

Ohjelmassa käsitellään paljon matemaattisia muuttujia, joita käsitellään joko

nu-onyksinkertaista,silläsiihen riittääkäytetynohjelmointikielenjavan

perusmuuttu-jat. Java eikuitenkaan olekovin matemaattinen kieli,eikäsiinä oleperusmuuttujia

lausekkeiden käsittelyä varten. Tämän takia lausekkeiden symboliseen käsittelyyn

onluotava omat tietorakenteet.

Kuvan 23 mukainen matemaattisten olioluokkien periytyvyys luo

mahdollisuu-denkäsitelläkaikkiaohjelmassatarvittaviamuuttujia.Kyseisenluokkakaavion

olio-luokkien avulla komponenttien arvoja voidaan käsitellä symbolisesti funktioina ja

kyseisetfunktiotvoivatollayksittäisiälineaarisiataiepälineaarisiamuuttujia,mutta

nevoivatollamyösmuuttujistajaoperaattoreistamuodostuviakokonaisia

lausekkei-ta.Mahdollisuuskäsitelläkokonaisialausekkeitasymbolisestihelpottaamm.

symbo-lisenderivaatanlaskemisessa, silläkokonaisenlausekkeen derivointimääräytyy siinä

olevien operaattorien ja muuttujien mukaan.

5.4 Ohjelman matemaattiset algoritmit

5.4.1 Gaussin eliminointialgoritmi

Liitteen A mukainen Gaussin eliminoinnin pohjalta kehitetty algoritmi on

suhteel-lisen tarkka, sillä laskutoimituksen virhe syntyy vain pyöristysvirheistä.

Pyöristys-virheetkin voidaan minimoida käyttäen skaalattua Gaussin eliminointia [5℄. T

ark-kuudestaan huolimattaGaussin eliminoinninpohjaltakehitetty algoritmiei ole,

jo-ka tilanteessase oikealaskentamenetelmä yhtälöryhmänratkaisemiseksi, silläseon

laskentateholtaanmelkovaativa.Algoritmionvaativuudeltaanluokkaa

O(n 3 )

,joten

laskentatoimituksien määrä kasvaanopeasti muuttujienmääränkasvaessa.

5.4.2 LU-hajotelman algoritmi

Matriisien

L

ja

U

alkioiden laskemiseen on olemassa useita eri algoritmeja, kuten Doolittlen, Croutin ja Gaussin algoritmi. Näistä Gaussin algoritmi on useimmiten

käytännöllisin, koska se sallii matriisien täydellisen muokkaamisen hajotelman

las-kemisen edetessä [12℄. LU-hajotelman laskemiseen tarkoitettu Gaussin algoritmin

eduksi voidaan laskea myös se, että sen suorittamiseen tarvitaanvainniitä

algorit-meja,joitakäytetäänmyösGaussineliminointialgoritmissa.Sekäitsehajotelman

te-keminen,ettämyösyhtälöryhmänratkaiseminenonnistuuGaussineliminoinnissa

so-velletuillaeteenpäin eliminointija taaksepäin sijoitusalgoritmeilla.LU-hajotelman

algoritmieisiispaljonpoikkeaGaussineliminoinnissakäytetyistäalgoritmeista.

Niil-läonkuitenkinvaativuuseroja.Vaativuuserojasyntyy,josratkaistavana on

Niil-läonkuitenkinvaativuuseroja.Vaativuuserojasyntyy,josratkaistavana on