Riešenie obyčajných diferenciálnych rovníc a sústav pomocou funkcií DSolve a NDsolve
a vizualizácia výsledkov pomocou Plot[Evaluate[ ]]
Príklad 1. Vyriešime lineárnu diferenciálnu rovnicu prvého rádu y' = - x y s neznámou funkciou y[x]. Získame výraz pre všeobecné riešenie obsahujúci konštantu C[1]. V druhom riadku uchováme riešenie v premennej ' u ' , jeho výberom zo zoznamu použitím operátora [[ ]].
DSolve[y'[x]== -x*y[x], y[x],x]
u=y[x] /.%[[1]]
Príklad 2. Nájdeme partikulárne riešenie dosadením vybranej hodnoty za konštantu C[1] a výsledok zobrazíme pomocou funkcie Plot.
w=u /.C[1]->1
g1=Plot[w,{x,-5,5}]
Príklad 3. Rovnica z príkladu 1 je Cauchyho začiatočnou úlohou , ak stanovíme začiatočnú podmienku pre hodnotu riešenia y[x] v danom bode, napríklad pre x = 0 je y = -2. Riešenie zobrazíme na vhodnom intervale.
DSolve[ {y'[x]== -x*y[x],y[0]==-2}, y[x],x] (* Compare the syntax of DSolve with Example 1*)
w1=y[x] /.%[[1]] (* Store the solution in w1 *)
Plot[w1,{x,0,5}]
Príklad 4. Tú istú jednoduchú úlohu z príkladu 3 môžeme vyriešiť numericky použitím funkcie NDSolve. Systém použije túto funkciu automaticky, keď sa nedá nájsť analytické riešenie
vo formálnom tvare výrazu s premennou x, alebo je tento výraz príliš komplikovaný. Takto sa dajú riešiť takmer všetky základné úlohy, pričom výsledok je zapísaný ako skupina čísel, ktoré
systém Mathematica podľa potreby interpoluje.
V prvom riadku je približné riešenie sústavy na určenom intervale,
v druhom riadku je hodnota hľadanej funkcie y v bode x = 1.2 a v treťom riadku je presná hodnota vypočítaná z nájdeného výrazu a uložená ako w1. Rozdiel je na siedmom desatinnom miste.
NDSolve[ {y'[x]==-x* y[x],y[0]==-2}, y,{x,0,2}]
y[1.5] /.%
w1 /. x->1.5
Príklad 5. Zobrazenie grafu riešenia a hodnota funkcie y[x] v bode x = 0.5.
NDSolve[ {y'[x]== y[x],y[0]==-2}, y,{x,0,2}]
Plot[ Evaluate[y[x]/.%],{x,0,2}]
y[0.5] /.%%
Príklad 6. Riešenie jednoduchého problému - sústava dvoch obyčajných diferenciálnych rovníc a grafy získaných riešení.
u1= y'[x]== z[x]
u2= z'[x] == -y[x]
u10= y[0]==0
u20= z[0]==1
NDSolve[{u1,u2,u10,u20}, {y ,z }, {x,0,Pi}]
g3=Plot[ Evaluate[y[x] /.%], {x,0,Pi}]
g4=Plot[ Evaluate[z[x] /.%%], {x,0,Pi}]
Príklad 7. Súčasné zobrazenie oboch grafov.
Show[g3,g4]
Created by Mathematica (December 21, 2007)