algsubs - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


algsubs

substitute subexpressions into an expression

 

Calling Sequence

Parameters

Description

Examples

Calling Sequence

algsubs(a = b, f)

algsubs(a = b, f, v)

algsubs(a = b, f, v, options)

Parameters

a, b

-

algebraic expressions

f

-

any expression

v

-

name or list or set of names

Description

• 

The function algsubs performs an algebraic substitution, replacing occurrences of a with b in the expression f.  It is a generalization of the subs command, which only handles syntactic substitution. The purpose of algsubs can be seen from these five examples where subs fails.

algsubs( s^2=1-c^2, s^3 );

c2+1s

(1)

algsubs( a+b=d, 1+a+b+c );

1+d+c

(2)

algsubs( a*b=c, 2*a*b^2-a*b*d );

2bcdc

(3)

algsubs( a*b/c=d, 2*a*b^2/c );

2db

(4)

algsubs( a^2=0, exp(2-a+a^2/2-a^3/6) );

ⅇ2a

(5)
• 

Where the expression being replaced has more than one variable, the result is ambiguous. For example, should algsubs(a+b=c, 2*a+b) return 2cb or a+c? What should algsubs(a+b=c, a+Pi*b) return? Should algsubs(x*y^2=c, x*y^4) return cy2 or c2x? The algsubs command provides two modes for breaking ambiguities, an exact mode and a remainder mode (the default).

  

Both modes depend on the ordering of the variables that appear in a. This can be set to a specific ordering by specifying the variables v in a list as a third argument. If the variables are not explicitly given, the set of indeterminates in a, b which are functions and names defines the variables and their order. Also, the result is collected in the variables given.

  

Both modes require that monomials in a divide monomials in f for a substitution to occur. A monomial u in a divides a monomial v in f if for each variable x in u, then either 0<degreeu,xdegreev,x or degreev,xdegreeu,x<0.

  

For example, the monomial x2y2 divides the monomial x3y2 but not xy2 or x2y.

  

Note: The algsubs command currently works only with integer exponents.

  

Note that the requirement for monomials in a to divide monomials in f means that the negative powers of u in the following example are not substituted, and must be handled separately as shown.

f := a/u^4+b/u^2+c+d*u^2+e*u^4;

fau4+bu2+c+du2+eu4

(6)

algsubs(u^2=v,f);

ev2+dv+c+bu2+au4

(7)

algsubs(1/u^2=1/v,f);

eu4+du2+cv2+bv+av2

(8)
  

Hence, to substitute for both positive and negative powers.

algsubs(u^2=v,algsubs(1/u^2=1/v,f));

ev4+dv3+cv2+bv+av2

(9)
• 

If the option remainder is specified, or no option is specified, a generalized remainder is computed. If the leading monomial of a divides the leading monomial of f then the leading monomial of f is replaced with the appropriate value, and this is repeated until the leading monomial in f is less than the leading monomial in a.

• 

If the option exact is specified, then if the value a being replaced is a sum of terms ai, and the value f it is replacing is the sum of terms fi, then the replacement is made if and only if each monomial ai divides fi and sumai=csumfi that is, the coefficients must all be the same. For example, algsubs( x^2+2*y=z, 3*x^2+6*y ) succeeds with c=3 but algsubs(x^2+2*y=z, 3*x^2+3*y) fails.

• 

The algsubs command goes recursively through the expression f. Unlike the subs command it does not substitute inside indexed names, and function calls are applied to the result of a substitution. Like subs, it does not expand products or powers before substitution. Hence algsubs( x^2=0, (x+1)^3 ) yields x+13.

Examples

algsubsa+b=c&comma;expa+b+d

&ExponentialE;c+d

(10)

algsubsPVT=R&comma;P2VT2PR

PR+RPT

(11)

algsubss+1t=y&comma;s+1t+13s2t

y+131ty

(12)

fsinx3cosxsinx2+cosx2sinx+cosx3

fsinx3cosxsinx2+cosx2sinx+cosx3

(13)

algsubssinx2=1cosx2&comma;f

2cosx3+sinxcosx

(14)

Truncating polynomials

fexpandu+w1w3

fu3+3u2w3u2w+3uw26u+3uw2+w33w+3w1w3

(15)

algsubsu2=0&comma;f

w63w4+3w21w3+3w42w2+1uw2

(16)

algsubsu2=0&comma;f&comma;u&comma;w

3uw26u+3uw2+w33w+3w1w3

(17)

algsubs1w2=0&comma;f&comma;u&comma;w

u3+3u2w3u2w+3uw26u+w33w+3w

(18)

algsubsuw=0&comma;f

u33u2w6u+3uw2+w33w+3w1w3

(19)

algsubsuw=0&comma;f

u3+3u2w+3uw26u+w33w+3w1w3

(20)

Ambiguous cases

f2a+b

f2a+b

(21)

algsubsa+b=c&comma;f&comma;a&comma;b

2cb

(22)

algsubsa+b=c&comma;f&comma;b&comma;a

a+c

(23)

algsubsa+b=c&comma;f&comma;exact

2a+b

(24)

fa1+a21xa1+a2+a1ya1+a2a2a1+a2z

fa1+a21xa1+a2+a1ya1+a2a2a1+a2z

(25)

algsubsa1+a2=p&comma;f

xp1p+ya2+ppa2pz

(26)

algsubsa1+a2=p&comma;f&comma;exact

xp1p+ya1pa2pz

(27)

See Also

applyrule

simplify

simplify/siderels

subs