Zjednodušování a úpravy výrazů
Zde ukážeme některé přikazy pro zjednodušování výrazů a funkcí. Jedním ze základních příkazů je simplify .
>
simplify(x^3/x^2);
simplify(cos(x)^2+sin(x)^2);
Někdy je nutno přidat parametry (viz help).
>
simplify((x^y)^z);
simplify((x^y)^z,`symbolic`);
Mnohdy však je nuttné uvést i podmínky pro zjednodušení.
> g:=sqrt(x^2);
> simplify(g);
> simplify(g,assume=real);
> simplify(g,assume=positive);
Lze definovat podmínku pro proměnnou i globálně, což se potom projeví i ve značení.
>
sqrt(x^2);
simplify(%);
>
assume(x>0);
simplify(%%);
> x:='x';
Podmínkou pro výsledek může být i rozsah hodnot.
>
simplify(arcsin(sin(x)));
simplify(%,assume=RealRange(-Pi/2,Pi/2));
simplify(%,`arctrig`,`symbolic`);
Pro úpravu a zjednodušování racionálních funkcí slouží příkaz normal , jehož některé vlastnosti zde ukážeme.
> normal( 1/x+x/(x+1) );
> normal( 1/x+x/(x+1), expanded );
Při prvním čtení lze vynechat -- Normal
Dále uvedeme ještě několik příkladů, v nichž použijeme funkce combine , expand , a convert .
>
convert(cos(x),exp);
normal(%);
>
normal(combine(%%));
simplify(%);
> expand(cos(3*x+y));
>
combine(%);
%=convert(%,tan);
Mnohé další úpravy je možné provést známou funkcí convert , jejíž něktré vlastnosti byly uz ukázány v minulém výkladu. Na tomto místě zmíníme ještě další užitečnou informaci. Budeme-li chtít vyčíslit složitý polynom vysokého stupně, potom se vyplatí uptavit jeho tvar podle následující jednoduché ukázky.
> sort(expand(p1^2));
>
### WARNING: persistent store makes one-argument readlib obsolete
readlib(cost)(%);
Error, could not find `cost` in the library
>
convert(%%,'horner');
codegen[cost](%);