algsubs - Maple Help

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