Řešení algebraických rovnic
> | restart; |
Rovnice o jedné neznámé.
> | solve(2*x+3=5); |
Pokud nespecifikujeme rovnici, ale výraz, potom je řešena rovnice výraz=0.
> | solve(2*x+3); |
Symbolická rovnice. Musíme specifikovat pro jakou proměnnou chceme znát řešení.
> | rovnice:=1/R=1/R1+1/R2; |
> | reseni:=solve(rovnice,R); |
Výpočet kořenů polynomu - přesné.
> | solve(x^2+x+1); |
Výsledky jako desetinná čísla dostaneme pomocí evalf
> | evalf(solve(x^2+x+1)); |
nebo pokud je jeden z koeficientů desetinné číslo
> | solve(x^2+x+1.); |
Někdy se bez numerického řešení neobejdeme.
> | solve(x^4+5*x^3-x^2+x-101); |
Pak použijeme opět příkaz evalf ,
> | evalf(solve(x^4+5*x^3-x^2+x-101)); |
nebo příkaz allvalues , který, pokud je to možné, vrátí přesná řešení (výsledek je v tomto případě skryt, zkuste si ho vypsat).
> | allvalues(RootOf(_Z^4+5*_Z^3-_Z^2+_Z-101)): |
Pro přímé numercké řešení existuje příkaz fsolve , který má několik voleb (viz. help). V tomto případě vrátí pouze reálná řešení.
> | fsolve(x^4+5*x^3-x^2+x-101); |
Takto už vrátí i komplexní řešení.
> | fsolve(x^4+5*x^3-x^2+x-101,x,complex); |
Lze použít i rozsah hodnot, pro které má být řešení hledáno.
> | fsolve(x^4+5*x^3-x^2+x-101,x=1..3); |
Soustava lineárních algebraických rovnic.
> | solve({2*x-y=3, 2-3*x=y}); |
Pokud je v soustavě víc neznámých, musím specifikovat pro které neznámé požaduji řešení
> | solve({a*x-y=3, 2-3*x=y}); |
> | vysledky:=solve({a*x-y=3, 2-3*x=y},{x,y}); |
Není vhodné ...
> | x_vysl:=rhs(vysledky[1]); |
Přiřazení výsledků do nových proměnných
> | x_vysl:=subs(vysledky,x); |
> | y_vysl:=subs(vysledky,y); |
případně podíl proměnných atd.
> | podil_yx:=subs(vysledky,y/x); |
Zpět na začátek sekce .