A função opsubst
similar à função subst
, excepto que
opsubst
somente faz substituições para as operações em uma expressões. Em geral,
quando f for um operador em uma expressão e, substitui g
por f na expressão e.
Para determinar o operador, opsubst
escolhe inflag
para verdadeiro ( true ). Isso significa que
opsubst
substitui para a forma de operador interna, não para a mostrada,
na expressão.
Exemplos:
(%i1) load ("opsubst")$ (%i2) opsubst(f,g,g(g(x))); (%o2) f(f(x)) (%i3) opsubst(f,g,g(g)); (%o3) f(g) (%i4) opsubst(f,g[x],g[x](z)); (%o4) f(z) (%i5) opsubst(g[x],f, f(z)); (%o5) g (z) x (%i6) opsubst(tan, sin, sin(sin)); (%o6) tan(sin) (%i7) opsubst([f=g,g=h],f(x)); (%o7) h(x)
Internamente, Maxima não usa os operadores de negação unária, divisão, ou de subtração; dessa forma:
(%i8) opsubst("+","-",a-b); (%o8) a - b (%i9) opsubst("f","-",-a); (%o9) - a (%i10) opsubst("^^","/",a/b); a (%o10) - b
A representação interna de -a*b é *(-1,a,b); dessa forma
(%i11) opsubst("[","*", -a*b); (%o11) [- 1, a, b]
Quando o operador não for um símbolo Maxima, geralmente alguma outra função sinalizará um erro:
(%i12) opsubst(a+b,f, f(x)); Improper name or value in functional position: b + a -- an error. Quitting. To debug this try debugmode(true);
Todavia, operadores subscritos são permitidos:
(%i13) opsubst(g[5],f, f(x)); (%o13) g (x) 5
Para usar essa função escreva primeiramente load("opsubst")
.