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]]

{{y[x] ^(-x^2/2) C[1]}}

^(-x^2/2) C[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}]

^(-x^2/2)

[Graphics:HTMLFiles/index_4.gif]

⁃Graphics⁃

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}]

{{y[x]  -2 ^(-x^2/2)}}

-2 ^(-x^2/2)

[Graphics:HTMLFiles/index_8.gif]

⁃Graphics⁃

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

RowBox[{{, RowBox[{{, RowBox[{y, , TagBox[RowBox[{InterpolatingFunction, [, RowBox[{Ro ... owBox[{{, RowBox[{0., ,, 2.}], }}], }}], ,, <>}], ]}], False, Editable -> False]}], }}], }}]

RowBox[{{, RowBox[{-, 0.649305}], }}]

RowBox[{-, 0.649305}]

RowBox[{RowBox[{{, RowBox[{-, 0.649305}], }}], }]

RowBox[{RowBox[{-, 0.649305}], }]

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] /.%%

RowBox[{{, RowBox[{{, RowBox[{y, , TagBox[RowBox[{InterpolatingFunction, [, RowBox[{Ro ... owBox[{{, RowBox[{0., ,, 2.}], }}], }}], ,, <>}], ]}], False, Editable -> False]}], }}], }}]

[Graphics:HTMLFiles/index_16.gif]

⁃Graphics⁃

RowBox[{{, RowBox[{-, 3.29745}], }}]

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}]

y^′[x] z[x]

z^′[x]  -y[x]

y[0] 0

z[0] 1

RowBox[{{, RowBox[{{, RowBox[{RowBox[{y, , TagBox[RowBox[{InterpolatingFunction, [, Ro ... {, RowBox[{0., ,, 3.14159}], }}], }}], ,, <>}], ]}], False, Editable -> False]}]}], }}], }}]

[Graphics:HTMLFiles/index_24.gif]

⁃Graphics⁃

[Graphics:HTMLFiles/index_26.gif]

⁃Graphics⁃

Príklad 7. Súčasné zobrazenie oboch grafov.

Show[g3,g4]

[Graphics:HTMLFiles/index_28.gif]

⁃Graphics⁃


Created by Mathematica  (December 21, 2007)