Řešení algebraických rovnic

>    restart;

Rovnice o jedné neznámé.

>    solve(2*x+3=5);

1

Pokud nespecifikujeme rovnici, ale výraz, potom je řešena rovnice výraz=0.

>    solve(2*x+3);

-3/2

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);

rovnice := 1/R = 1/R1+1/R2

reseni := R1*R2/(R2+R1)

Výpočet kořenů polynomu - přesné.

>    solve(x^2+x+1);

-1/2+1/2*I*3^(1/2), -1/2-1/2*I*3^(1/2)

Výsledky jako desetinná čísla dostaneme pomocí evalf

>    evalf(solve(x^2+x+1));

-.5000000000+.8660254040*I, -.5000000000-.8660254040*I

nebo pokud je jeden z koeficientů desetinné číslo

>    solve(x^2+x+1.);

-.5000000000+.8660254038*I, -.5000000000-.8660254038*I

Někdy se bez numerického řešení neobejdeme.

>    solve(x^4+5*x^3-x^2+x-101);

RootOf(_Z^4+5*_Z^3-_Z^2+_Z-101,index = 1), RootOf(_Z^4+5*_Z^3-_Z^2+_Z-101,index = 2), RootOf(_Z^4+5*_Z^3-_Z^2+_Z-101,index = 3), RootOf(_Z^4+5*_Z^3-_Z^2+_Z-101,index = 4)
RootOf(_Z^4+5*_Z^3-_Z^2+_Z-101,index = 1), RootOf(_Z^4+5*_Z^3-_Z^2+_Z-101,index = 2), RootOf(_Z^4+5*_Z^3-_Z^2+_Z-101,index = 3), RootOf(_Z^4+5*_Z^3-_Z^2+_Z-101,index = 4)

Pak použijeme opět příkaz evalf ,

>    evalf(solve(x^4+5*x^3-x^2+x-101));

2.414844692, -.8379442916+2.566261227*I, -5.738956108, -.8379442916-2.566261227*I

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);

-5.738956108, 2.414844692

Takto už vrátí i komplexní řešení.

>    fsolve(x^4+5*x^3-x^2+x-101,x,complex);

-5.738956108, -.8379442916-2.566261227*I, -.8379442916+2.566261227*I, 2.414844692

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);

2.414844692

Soustava lineárních algebraických rovnic.

>    solve({2*x-y=3, 2-3*x=y});

{x = 1, y = -1}

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});

{y = 2-3*x, a = -(-5+3*x)/x, x = x}

>    vysledky:=solve({a*x-y=3, 2-3*x=y},{x,y});

vysledky := {x = 5/(a+3), y = (2*a-9)/(a+3)}

Není vhodné ...

>    x_vysl:=rhs(vysledky[1]);

x_vysl := 5/(a+3)

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);

x_vysl := 5/(a+3)

y_vysl := (2*a-9)/(a+3)

podil_yx := 2/5*a-9/5

Zpět na začátek sekce .