subs - Maple Programming Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Programming : Operations : Substitution : subs

subs

substitute subexpressions into an expression

 

Calling Sequence

Parameters

Description

Thread Safety

Examples

Compatibility

Calling Sequence

subs(x=a,expr)

subs(s1,...,sn,expr)

subs[eval](x=a,expr)

subs[eval](s1,...,sn,expr)

subs[inplace](x=a,expr)

subs[inplace](s1,...,sn,expr)

Parameters

x

-

expression

a

-

expression

expr

-

expression

s1, ..., sn

-

equations, sets or lists of equations, or tables

Description

• 

The first form of the subs command substitutes a for x in the expression expr. Note that this command is similar to the eval command. Simple applications of replacing a symbol by a value in a formula should normally be done with the eval command. Differences between the two commands are highlighted in the examples later.

• 

The second general form of the subs command makes the substitutions specified by first arguments in the last argument expr. Each of s1, ..., sn must be an equation, a list or set of equations, or a table. The substitutions are performed sequentially starting with s1. The substitutions within one set, list, or table are performed simultaneously.

• 

When the substitutions are specified by an equation, or a list or set of equations, every occurrence of the left-hand side of an equation that appears in expr is replaced by the right-hand side of the equation.

• 

When the substitutions are specified as a table, every occurrence of an index of the table that appears in expr is replaced by the corresponding entry of the table.

• 

If there are multiple substitutions for the same expression within a list of substitutions, the first one is used. If the substitutions are specified by a set, the one that would appear first if the set were printed is used. (It is not possible for a table to contain multiple substitutions for the same expression.)

• 

If a list, set, or table contains substitutions for both an expression and also for sub-expressions thereof, the former takes precedence when the expression is encountered in expr.

• 

Note that only subexpressions in expr that correspond to operands (ops) of a Maple object are matched.  This is termed "syntactic substitution".  A more powerful substitution is available using the algsubs command.

• 

The inplace option only applies when substituting into a table or rtable (such as Array, Matrix, or Vector) with no indexing function. When inplace is specified, the input table or rtable is updated in-place. The result is the updated original expr table or rtable, rather than a copy.

• 

The action of substitution is not followed by evaluation by default. There are two ways of achieving a full evaluation:

– 

The eval command performs a full evaluation but takes care to delay substitutions which are not mathematically safe, as shown in the examples later.

– 

The eval option to subs also performs a full evaluation while keeping the semantics the same as for subs. This option should be used with care.

• 

The options eval and inplace can be given together in the index as an expression sequence, and they can be specified in either order.

Thread Safety

• 

The subs command is thread-safe as of Maple 15.

• 

For more information on thread safety, see index/threadsafe.

Examples

Examples showing simple substitution of the form x=a for an expression expr.

subsx=2,x2+x+1

7

(1)

subsx=r13,3xlnx3

3r13lnr

(2)

subssinx=y,sinx1sinx

y1y

(3)

 

The following examples show the difference between subs and algsubs, where the algsubs command substitutes subexpressions into an expression.

subsa+b=y,a+b+c2

a+b+c2

(4)

algsubsa+b=y,a+b+c2

y+c2

(5)

subsa2=y,a3

a3

(6)

algsubsa2=y,a3

ya

(7)

 

The substitutions within a set or a list are performed simultaneously.

subsx=y,y=x,x,y

y,x

(8)

subsx=y,y=x,x,y

y,x

(9)

 

Substitutions can be specified using a table.

ttable:taα:tbβ:

subst,ax+b

αx+β

(10)

When the substitutions are in a sequence, they are applied one at a time, akin to the following:

subsx=y,y=x,x,y

x,x

(11)

subsx=y,x,y

y,y

(12)

subsy=x,

x,x

(13)

 

If there are multiple substitutions on the same expression, the first one is used.

subsx=0,x=2,ⅇx

ⅇ0

(14)

simplify

1

(15)

If there are substitutions on both an expression and sub-expressions thereof, the former is used.

subsgx=G,fgx=F,a+fgx

a+F

(16)

 

As shown in the following example, evaluation does not follow substitution by default.

subsy=0,siny

sin0

(17)

The option eval for subs can be used to perform a full evaluation while not altering the semantics for subs.

subsevaly=0,siny

0

(18)

 

Alternatively, you can use the eval command:

sinyy=0|sinyy=0

0

(19)

 

The following calls to subs and subs[eval] will return an error since Maple does simultaneous substitution in all parameters. (However, eval will work correctly.)

ppiecewisex=0,1,sinxx

p1x=0sinxxotherwise

(20)

subsx=0,p

Error, numeric exception: division by zero

subsevalx=0,p

Error, numeric exception: division by zero

px=0|px=0

1

(21)

 

Here is an example where subs[eval] is more effective than eval (since eval sometimes delays substitutions which involve dummy variables):

∫sfxⅆxs=signumfx|∫sfxⅆxs=signumfx

sfxⅆxs=signumfx|sfxⅆxs=signumfx

(22)

subsevals=signumfx,∫sfxⅆx

signumfxfxⅆx

(23)

Compatibility

• 

The eval option was introduced in Maple 2015.

• 

For more information on Maple 2015 changes, see Updates in Maple 2015.

• 

The subs command was updated in Maple 2018.

• 

The s1 parameter was updated in Maple 2018.

See Also

algsubs

applyrule

eval

limit

op

subsop