FreeMat



    Obsah 4. kapitoly


    4. Riešenie rovníc
    4.1. Základy práce s mnohočlenmi
    4.2. Riešenie lineárnych algebraických rovníc
    4.3. Riešenie obyčajných diferenciálnych rovníc



    4. Riešenie rovníc




    4.1. Základy práce s mnohočlenmi

    Matematika a mnohočleny patria k sebe. Mnohočleny, tiež polynómy, sú vo FreeMat-e podporované v mnohých smeroch a práca s nimi je obsiahnutá v jadre systému. V prípade, že príkazy pre prácu s polynómmi v jadre FreeMat-u nestačia, je možné využiť doplnkové knižnice z programovacieho jazyka Python. Prehľad základných príkazov pre prácu s polynómami je uvedený v tabuľke 14.


Tabuľka 14 – Základné príkazy pre prácu s polynómmi


    Definíciu polynómu uskutočníme zápisom jeho koeficientov v poradí od najvyššej mocniny ku najmenšej do vektoru, tieto hodnoty samozrejme nemusia byť celočíselné (viď obr. 23). Zujímavá je schopnosť FreeMat-u vytvoriť z koreňov polynómu spätne vektor koeficientov (obr. 24). Toto opätovné vytvorenie polynómu je nejednoznačnou úlohou. Ak máte pri prvom člene mnohočlena iné číslo ako 1, je potrebné návratovú hodnotu funkcie „poly“ vynásobiť týmto číslom.


Obr. 23 – Definovanie polynómu




Obr. 24 – Spätné vytvorenie polynómu




    4.2. Riešenie lineárnych algebraických rovníc

    Metódy riešenia sústavy lineárnych algebraických rovníc delíme na dve veľké skupiny:
  • metódy priame = hľadanie presného riešenia bez zaokrúhľovania rôzne varianty Gaussovej eliminačnej metódy)
  • metódy iteračné = výsledkom je istá aproximácia riešenia po konečnom počte iterácií
    Priama metóda riešenia:
    Vzhľadom na elektrotechnické zameranie bude problematika vysvetlená nasledovne:

\begin{equation} R * I = U_b \end{equation} \begin{equation} G * U = I_b \end{equation}

    R – normálna, regulárna matica sústavy (odporová, vodivostná, ...)
    I - je vektor hľadaného riešenia (hľadané prúdy resp. napätia)
    Ub – vektor známych pravých strán (budiace napätia resp. prúdy)
    Ako vyplýva zo zápisu, hľadanými hodnotami sú buď hodnoty prúdov vo vetvách obvodu alebo napätia. Riešenie jednoduchej sústavy si ukážeme na jednoduchom príklade.
    Príklad:

Je daný obvod na obr.25. Vypočítajte I1 - červená šípka, I2 – zelená šípka a I3 – modrá šípka. U1 = U2 = 5 V, R1 = 10 Ω, R2 = 50 Ω.



Obr. 25 – Obvod k príkladu


    Riešenie:
  1. Zostavíme si obvodové rovnice pre jednotlivé slučky:
    \begin{equation} I_1 + I_2 - I_3 = 0 \end{equation} \begin{equation} (R_1 + R_2) * I_1 - R_1 * I_2 = U_1 \end{equation} \begin{equation} R_1 * I_2 + (R_1 + R_2) * I_3 = U_2 \end{equation}
  2. Teda nám vzniknú tri matice:
  3. \begin{equation} \begin{pmatrix} 1 & 1 & -1 \\ 60 & 10 & 0 \\ 0 & 10 & 60 \end{pmatrix} * \begin{pmatrix} I_1 \\ I_2 \\ I_3 \end{pmatrix} = \begin{pmatrix} 0 \\ 5 \\ 5 \end{pmatrix}\end{equation}

  4. Zadefinujeme matice vo FreeMat-e a keďže platí A*x=b a x=A\b (viď príkazy pre prácu s maticami v predošlej kapitole), tak v našom prípade I = R\U, pričom I, R, U predstavujú príslušné matice (obr.26).


Obr. 26 – Riešenie príkladu vo FreeMat-e


    Výsledok je správny, nakoľko v uzle medzi zdrojmi sa stretáva kladné aj záporné napätie rovnakej veľkosti a navzájom sa ruší, čiže cez stredný odpor naozaj prúd v našom ideálnom prípade (nakoľko sme zanedbali vnútorné odpory zdrojov, odpory vodičov a tiež možnosť ich rôznej dĺžky, všetky prvky v schéme považujeme za ideálne) nebude tiecť. Prúd bude tiecť len vonkajšou slučkou. Zapojenie sa správa ako mostík vo vyváženom stave. Spomeňte si koľko miesta v zošite/na papieri a času by zabralo vypočítať zložitejšie príklady manuálne :).



    4.3. Riešenie obyčajných diferenciálnych rovníc

    Táto časť sa venuje numerickému riešeniu obyčajných diferenciálnych rovníc (ODE – ordinary differetial equation). Obyčajnou diferenciálnou rovnicou rozumieme rovnicu, v ktorej vystupuje jedna alebo viac derivácií jednej závisle premennej. Nezávisle premennú v elektrotechnickej oblasti najčastejšie tvorí čas t. Ak chceme riešiť obyčajnú diferenciálnu rovnicu vo FreeMat-e, je v jadre k dispozícii jediná numerická metóda ODE45. Základnú rovnicu musíme prepísať z rovnice n-tého rádu na n rovníc prvého rádu, teda na ekvivalentný systém, teda z:

\begin{equation} y^{(n)} = f(t,y,y',y'',y''', ... , y^{(n - 1)}) \end{equation}

    dostaneme:

\begin{equation} y_1^' = y_2 \end{equation} \begin{equation} y_2^' = y_3 \end{equation} \begin{equation} \vdots \end{equation} \begin{equation} y_n^' = f(t, y_1, y_2, ... , y_n)\end{equation}

    Riešenie obecne pozostáva z troch krokov:
  1. vytvorenie m-súboru, v ktorom bude zápis vlastnej diferenciálnej rovnice, vždy vo formáte sústavy obyčajných diferenciálnych rovníc prvého rádu
  2. riešenie metódou ODE45, teda Runge – Kutta metódou, a zápis syntaxe príkazu
  3. vykreslenie výsledku riešenia
    Ako viete z matematiky, je potrebné definovať počiatočné podmienky!
    Príklad:

Sériový rezonančný obvod je v čase t=0 pripojený na zdroj jednosmerného napätia. Počiatočné

    podmienky sú A1 = 0,02 a A2 = -0,02. Diferenciálna rovnica pre priebeh prúdu má tvar:

\begin{equation} i_1'' + 10^3 * i_1' + 10^9 * i_1 = 0\end{equation}

    Riešenie:
  1. Do Command Window napíšeme príkaz „edit“, čím spustíme editor zdrojových kódov
  2. Zapíšeme do súboru text ako je na obr. 27.
  3. Z ponuky menu v hornej lište vyberieme File/Save as... (Súbor/uložiť ako...) a uložíme súbor ako RLC.m (najlepšie do priečinku Work). Je nutné si uvvedomiť, že v RLC.m je diferenciálna rovnica napísaná ako sústava dvoch rovníc:
  4. \begin{equation} i_1' = i_2\end{equation} \begin{equation} i_2' = - 10^3 * i_2 - 10^9 * i_1\end{equation}

  5. Vytvoríme ďalší skript príkazov (je možné písať aj priamo do Command Window, ale pre názornosť postupnosti príkazov je použitý skript) napíšeme príkazy ako na obr. 28.
  6. Dostaneme výsledok v podobe grafu (obr.29)
    Z obr. 28 je zrejmé použitie štruktúry options, ktorá nastavuje dodatočné parametre pre výpočet funkciou ode45. Syntax tejto štruktúry je options = odeset(‘parameter1’, hodnota_parametra1, ‘parameter2’,hodnota_parametra2,…). Parametrami môžu byť:
'AbsTol' – Absolútna tolerancia, prednastavené je 1e-6.
'RelTol' – Relatívna tolerancia, prednastavené je 1e-3.
'MaxStep' – maximálna veľkosť kroku, prednastavené je časová oblasť/10.
'InitialStep' – Veľkosť počiatočného kroku, prednastavené je MaxStep/100.
'Stepper' – Obídenie Fehlbergovho integrátora.
'Events' – Zabezpečenie funkcie pri nejakej udalosti.
'Projection' – Zabezpečenie projekčnej funkcie.


Obr. 27 – Zdrojový kód RLC.m


    Ako je možné si všimnúť z obr. 28, funkcia plot je použitá pre vykreslenie


Obr. 28 – Príkazy pre vyvolanie funkcie z RLC.m




Obr. 29 – Graf riešenia diferenciálnej rovnice