Úpravy výrazů

Následuje ukázka několika užitečných funkcí pro úpravu výrazů, zejména polynomů, racionálně lomených funkcí.

>    B:=a+b;

B := a+b

>    B^3;

(a+b)^3

Roznásobení výrazu.

>    expand(B^3);

a^3+3*a^2*b+3*a*b^2+b^3

A zpět na součin.

>    factor(%);

(a+b)^3

Rozklad na součin nefunguje pokud kořeny polynomu nejsou celá čísla

>    factor(x^2+5*x+5);

x^2+5*x+5

Musíme použít další argument real .

>    factor(x^2+5*x+5,real);

(x+3.618033989)*(x+1.381966011)

Pokud jsou kořeny komplexní, musíme použít complex .  

>    factor(x^2+5*x+7,real);

>    factor(x^2+5*x+7,complex);

x^2+5.000000000*x+7.000000000

(x+2.500000000+.8660254038*I)*(x+2.500000000-.8660254038*I)

Definujme jiný polynom.

>    pol:=a^4-8*a^2*(b-3*a)+b^2*(2*a-b*a^2-a^2);

pol := a^4-8*a^2*(b-3*a)+b^2*(2*a-a^2*b-a^2)

Sloučení koeficientů jednotlivých mocnin proměnné b . Ne vždy však jsou tyto seřazeny sestupně.

>    collect(pol,b);

-a^2*b^3+(2*a-a^2)*b^2-8*a^2*b+a^4+24*a^3

K tomu pak slouží příkaz sort . Zde to vyšlo, ale viz. následující příklad.  

>    sort(%,b);

-a^2*b^3+(2*a-a^2)*b^2-8*a^2*b+a^4+24*a^3

>    vyraz:=expand((a-x)*(x+b)*(c+x));

>    sort(vyraz,x);

nebo ještě.

>    sort(collect(vyraz,x),x);

vyraz := a*x*c+a*x^2+a*b*c+a*b*x-x^2*c-x^3-x*b*c-x^2*b

-x^3-c*x^2-b*x^2+a*x^2-b*c*x+a*c*x+a*b*x+a*b*c

-x^3+(-c-b+a)*x^2+(-b*c+a*c+a*b)*x+a*b*c

Příkaz coeff  vybere zadanou mocninu vybrané proměnné.

>    coeff(pol,b,2);

2*a-a^2

K určení stupně polynomu slouží příkaz degree .

>    degree(pol,a);

>    degree(pol,b);

4

3

Definujme racionální výraz.

>    R:=(x+2)*(x+4)/((x+1)*(x+3));

R := (x+2)*(x+4)/(x+1)/(x+3)

Expand funguje jen na čitatele

>    expand(R);

1/(x+1)/(x+3)*x^2+6/(x+1)/(x+3)*x+8/(x+1)/(x+3)

Vypsání čitatele racionálního výrazu

>    numer(R);

(x+2)*(x+4)

Vypsání jmenovatele

>    denom(R);

(x+1)*(x+3)

Takto expand roznásobí zvlášť čitatele a zvlášť jmenovatele.

>    expand(numer(R))/expand(denom(R));

(x^2+6*x+8)/(x^2+4*x+3)

Vytvoření funkce pro expandování racionálních výrazů

>    ex:=z->expand(numer(z))/expand(denom(z));

ex := proc (z) options operator, arrow; expand(numer(z))/expand(denom(z)) end proc

>    ex(R);

(x^2+6*x+8)/(x^2+4*x+3)

Rozklad zpět na součin. Faktor funguje i na racionální výrazy (pouze v zaákladním tvaru - ne s real ani complex).

>    factor(%);

(x+2)*(x+4)/(x+1)/(x+3)

Definice výrazu

>    H:=x/(x+1)+1/(x-1);

H := x/(x+1)+1/(x-1)

a jeho zjednošení pomocí funkce simplify .

>    simplify(H);

(x^2+1)/(x^2-1)

Pro racionální lomené funkce je často výhodné použití příkazu normal .

>    normal(H);

(x^2+1)/(x+1)/(x-1)

Zpět na začátek sekce .