Programiranje u fizici
- 9. DEO -

GOTOVE BIBLIOTEKE ZA REŠAVANJE DIFERENCIJALNIH JEDNAČINA I INTEGRALA

Za programski jezik python postoji značajan broj gotovih biblioteka sa funkcijama za rešavanje diferencijalnih jednačina i integrala. U ovom delu biće demonstrirana upotreba biblioteke scipy.integrate i njene funkcije odeint za numeričko rešavanje diferencijalnih jednačina.

1.    Upotreba odeint funkcije

Za primenu odeint funkcije neophodno je definisati tri argumenta – jednačinu koja se rešava (desna strana jednakosti diferencijalne jednačine), početnu vrednost i vrednosti promenjlive u u čijoj zavisnosti se rešava diferencijalna jednačina. Primena odeint funkcije će biti demonstrirana na primeru RL kola. 

Podsećanja radi, diferencijalna jednačina koja reguliše ponašanje ovog kola je:

$$\frac{di}{dt} = \frac{V}{L} – \frac{i \cdot R}{L} = \frac{1}{L} (V – i \cdot R)$$

dok je njeno egzaktno rešenje:

$$i = \frac{V}{R} (1-e^{{-\frac{R}{L} \cdot t}})$$

Primer 9.1. – Program za rešavanje diferencijalne jednačine matematičkog klatna u vakuumu Ojler-Kromerovom metodom

U suštini, forma programa je ista kao i u prethodnim slučajevima kada je korišćena neka od aproksimativnih formula. Konkretno, u prethodnim primerima, postojala je for petlja, pomoću koje su se računale aproksimativne vrednosti. U slučaju kada se koristi neka od gotovih funkcija, nema potrebe za pomenutom petljom, jer gotova funkcija to sve radi automatski.

Pored korišćenja gotove funkcije za aproksimativno računanje diferencijalne jednačine, postoji još jedna mala razlika u odnosu na prethodne programe. To je činjenica da pri definisanju početne funkcije (koja je zapravo desna strana jednakosti diferencijalne jednačine), pored \(i\) figuriše i \(t\) (linija 5 u poslednjem primeru). Ovo možda deluje malo zbunjujuće, jer u return delu (linija 6) nema promenljive \(t\), međutim to je parametar koji je neophodan funkciji odeint kako bi “znala” u zavisnosti od ečga se računa \(i\).

U sledećem primeru će biti predstavljen program kojim se upoređuju performanse Ojlerovog metoda, unapređenog Ojlerovog metoda i metoda implementiranog u odeint funkciji.

Primer 9.2. Poređenje performansi Ojlerovog, unapređenog Ojlerovog i metoda implementiranog u odeint funkciji

Poslednji primer sadrži više metoda rešavanja diferencijalne jednačine. Forma je identična kao u prethodnim poglavljima, uz napomenu da se za svaki od aproksimativnih metoda koje rešavamo upotrebom petlje definiše poseban skup početnih vrednosti \(i\). Tako je početni skup vrednosti \(i\) za Ojlerov metod nazvano \(i_{ojler}\), dok je za unapredjeni Ojlerov metod nazvano \(i_{uojler}\).

Vidi se da primena odeint funkcije daje superiorne rezultate, jer se rešenje tim metodom bukvalno preklapa sa egzaktnim rešenjem. Tek višestrukim zumiranjem grafika vidi se malo odstupanje odeint metoda od egzaktnog rešenja, što se ostavlja čitaocima za proveru.