Riešenie rovníc a sústav rovníc v systéme Mathematica
pomocou príkazových funkcií
Solve, Eliminate, Reduce, FindRoot
Príkazová funkcia Solve[ ] sa vždy snaží nájsť exaktné riešenie rovníc aplikovaním presných matematických pravidiel. Ak sa riešenie nepodarí nájsť, potom treba použiť niektorú z funkcií NSolve, Eliminate, Reduce, FindRoot, ...
Príklad 1. Riešenie kvadratickej rovnice môžeme uložiť do premenných x1 a x2.
Verifikácia obsahu premenných x1, x2 :
Príklad 2. Riešenie rovnice vyššieho rádu môžeme uložiť do premennej 'z'. Hodnotu koreňov rovnice môžeme priradiť ľubovoľným iným premenným, napr. hodnotu tretieho koreňa premennej x3 a hodnotu piateho koreňa premennej x5.
Hodnota riešení s presnosťou na 12 desatinných miest:
N[x3,12]
N[x5,12]
Príklad 3. Príkaz Solve nenájde exaktné riešenie rovnice . Numerické riešeni poskytne príkaz NSolve[ ]. Rovnica má dva reálne korene a šesť komplexných koreňov.
Príklad 4. Riešenie goniometrických rovníc sa nedá vždy nájsť.
Solve[Cos[x]== a, x]
Solve[Cos[x]== 2x , x]
Príklad 5. Pri hľadaní rešenia druhej rovnice z predchádzajúceho príkladu treba použiť Newtonovu iteračnú metódu, ktorá je realizovaná príkazom FindRoot[ ].
Prvý odhad riešenia sa dá urobiť pomocou grafu funkcie cos x = 2x, ktorej nulový bod je v okolí bodu 0, preto x0=0.
Plot[Cos[x]-2x,{x,-5,5}]
FindRoot[Cos[x]== 2x, {x,0}]
Príklad 6. Analogicky sa dá nájsť riešenie sústavy dvoch rovníc, korene uložíme v premenných а, b :
f = 3x + y-5
g =-x + 2y+1
Solve[{f==0,g==0},{x,y}] (* In the first curly brackets we indicate the list of equations *)
(* and in the second curly brackets the list of unknowns x,y *)
N[%]
a= x/. %[[1]]
b= y/. %%[[1]]
Príklad 7. Overenie riešenia substitúciou:
a
b
f /. {x->a,y->b}
g /. {x->a,y->b}
1.57143
0.285714
0.
0.
Príklad 8. Riešenie parametrickej sústavy:
Solve[{c*x + y==0, 3x + (1+c)y == 1}, {x,y}]
Príklad 9. Riešenie sústavy dvoch rovníc. Niekedy je výstup veľmi dlhý, napr. riešením uvedeného príkladu sú 4 popísané stránky vzorcov, a môže byť často bezcenným. Ak ho chceme skryť/zobraziť, stačí dvakrát ťuknúť na hranatú zátvorku označujúcu bunku v pravej časti obrazovky.
Numerické hodnoty koreňov sú:
Príklad 10. Riešenie sústavy dvoch rovníc s neznámymi x, y. Rovnice môžeme uložiť ako výrazy ur1 a ur2. Pre znak rovnosti musíme použiť symbol == namiesto obyčajného symbolu =. Použitím funkcie Solve nedostaneme exaktne všetky korene, ktoré sú riešením sústavy, systém nájde najlepšie možné riešenie, v ktorom je y vyjadrené v závislosti od neznámej hodnoty x. V tomto prípade je vhodné použiť funkciu pre numerický zápis výsledku, pričom špeciálne jedna hodnota koreňov je uložená v premených x3 a y3, a môžeme ju neskôr v prípade potreby použiť.
Príklad 11. Pri riešení komplikovaných rovníc je niekedy užitočné najprv rovnice zjednodušiť, napríklad elimináciou niektorých premenných. V sústave z príkladu 10 eliminujeme v jednej rovnici ' x ' a v druhej ' y '. Výsledkom sú dve rovnice šiesteho stupňa jednej premennej ' y ' a ' x '.
opr1=Eliminate[{ur1,ur2},x]
opr2=Eliminate[{ur1,ur2},y]
Príklad 12. Riešenie rovníc z predchádzajúceho príkladu v takom prípade vyžaduje, aby sme príslušné nájdené hodnoty neznámych x a y spárovali.
rey=N[Solve[opr1,y]]
rex=N[Solve[opr2,x]]
Problém sa dá vyriešiť nasledujúcim spôsobom: vyberieme niektorú hodnotu z riešenia x z druhého riadku, napr. druhú, a dosadíme ju do jednej z pôvodných rovníc. Získanú rovnicu riešime vzhľadom na ' y ' a získame tak zodpovedajúcu hodnotu riešenia. Výsledkom je: { x = - 8.5107, y = 36.2737 }.
x2=x/.rex[[2]]
ur11=ur1 /. x->x2
N[Solve[ur11,y ]]
Príklad 13. Systém Mathematica rieši aj homogénne sústavy rovníc. Nasledujúca sústava troch rovníc s tromi neznámymi má exaktné riešenie.
Príklad 14. Všetky rôzne tvary riešenia kvadratickej rovnice s parametrami a, b, c poskytne príkaz Reduce. Výsledky zobrazí pomocou logických operátorov || (logický súčet) a && (logický súčin).
Ak parametrom priradíme čiselné hodnoty, výsledok vyzerá inak:
Príklad 15. Riešenie príkladu 10 pomocou funkcie Reduce. Keďže riešením je komplikovaný logický výraz, môžeme použiť operátor ; (bodkočiarka), aby sme zabránili jeho výpisu. Zobrazíme iba numerickú hodnotu výsledku.
Reduce[{ur1, ur2},{x,y}];
N[%]
Príklad 16. Riešenie sa dá nájsť aj numericky, odhadom prvej približnej hodnoty koreňa. Pri voľbe reálneho čísla dostávame reálny koreň, pri odhade v tvare komplexného čísla, najbližší koreň komplexný.
FindRoot[{ur1,ur2},{x,-1},{y,-1}]
FindRoot[{ur1,ur2},{x,-0.1+i},{y,i}]
Príklad 17. Vyjadrenie jednej hodnoty pomocou druhej.
f1=Reduce[ur1,y]
f2=Reduce[ur2,y]
Created by Mathematica (December 21, 2007)