# Substituce

r:(sin(x)^2-1)/(sin(x)-1);

rat(r);

subst(0,x, cos(x)*(sin(x)+x^2+1));

Subst je čistě syntaktická substituce.

Ekvivalentí zápis je i

subst(x=0, cos(x)*(sin(x)+x^2+1));

expression:1+tan(x)^2;

subst(sin(x)/cos(x),tan(x), expression);

subst(1-cos(x)^2,sin(x)^2,%);

ratsimp(%);

Posloupnost substitucí

subst([tan(x)=sin(x)/cos(x), sin(x)^2=1-cos(x)^2], expression);

ratsimp(%);

subst([a=b, b=c, c=a], a+2*b+3*c);

load("lrats");

lratsubst([a=b, b=c, c=a], a+2*b+3*c);

expr1:x*y+z; expr2:x*y*z; expr3:(x*y)^2;

subst(soucin,x*y, expr1);

subst(soucin,x*y, expr2);

ratsubst(soucin,x*y, expr2);

Ratsubst si všímá i matematického významu výrazu.

subst(soucin,x*y, expr3);

ratsubst(soucin,x*y, expr3);

vyraz:a+b+c;

subst(d,a+b, vyraz);

ratsubst(d,a+b, vyraz);

p:a+2*b+3*c;

ratsubst(d,a+b,p);

lratsubst(a+b=d,p);

Opsubs provádí substituci pouze za operátory.

load ("opsubst");

opsubst(f,g,g(g(x)));

opsubst([f=g,g=h],f(x));

vyraz:(x^2+2*x+1)^2+(x^2-2*x+1)^2;

map(factor, vyraz);

soucin:(x^2+y^2+2*x*y) * ((x+y)^2+1);

subst(x+y=z, soucin);

factor(%);

subst(z=x+y, %);

vyraz:(x+y)^2+1/(x+y)^2;

rat(vyraz);

subst(x+y=z, vyraz);

rat(%);

subst(z=x+y,%);