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, or sets or lists of equations

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 or a list or set of equations. The substitutions are performed sequentially starting with s1. The substitutions within a set or list are performed simultaneously; if there are multiple substitutions on the same name, the first one is used.

• 

Every occurrence of the left-hand side of a substitution equation that appears in expr is replaced by the right-hand side of the equation. 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 an rtable (such as Array, Matrix, or Vector) with no indexing function. When inplace is specified, the input rtable is updated in-place.  The result is the updated original expr 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 also 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 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

3r1/3lnr

(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)

 

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

(10)

subsx=y,x,y

y,y

(11)

subsy=x,

x,x

(12)

 

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

subsx=0,x=2,ⅇx

ⅇ0

(13)

simplify

1

(14)

 

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

subsy=0,siny

sin0

(15)

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

subs[eval]y=0,siny

0

(16)

 

Alternatively, you can use the eval command:

sinyy=0|sinyy=0

0

(17)

 

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

p{1x=0sinxxotherwise

(18)

subsx=0,p

Error, numeric exception: division by zero

subs[eval]x=0,p

Error, numeric exception: division by zero

px=0|px=0

1

(19)

 

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

(20)

subs[eval]s=signumfx,∫sfxⅆx

∫signumfxfxⅆx

(21)

Compatibility

• 

The subs command was updated in Maple 2015.

• 

The eval option was introduced in Maple 2015.

• 

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

See Also

algsubs

applyrule

eval

limit

op

subsop