Maple Professional
Maple Academic
Maple Student Edition
Maple Personal Edition
Maple Player
Maple Player for iPad
MapleSim Professional
MapleSim Academic
Maple T.A. - Testing & Assessment
Maple T.A. MAA Placement Test Suite
Möbius - Online Courseware
Machine Design / Industrial Automation
Aerospace
Vehicle Engineering
Robotics
Power Industries
System Simulation and Analysis
Model development for HIL
Plant Modeling for Control Design
Robotics/Motion Control/Mechatronics
Other Application Areas
Mathematics Education
Engineering Education
High Schools & Two-Year Colleges
Testing & Assessment
Students
Financial Modeling
Operations Research
High Performance Computing
Physics
Live Webinars
Recorded Webinars
Upcoming Events
MaplePrimes
Maplesoft Blog
Maplesoft Membership
Maple Ambassador Program
MapleCloud
Technical Whitepapers
E-Mail Newsletters
Maple Books
Math Matters
Application Center
MapleSim Model Gallery
User Case Studies
Exploring Engineering Fundamentals
Teaching Concepts with Maple
Maplesoft Welcome Center
Teacher Resource Center
Student Help Center
algsubs - substitute subexpressions into an expression
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 );
algsubs( a+b=d, 1+a+b+c );
algsubs( a*b=c, 2*a*b^2-a*b*d );
algsubs( a*b/c=d, 2*a*b^2/c );
algsubs( a^2=0, exp(2-a+a^2/2-a^3/6) );
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 or ? What should algsubs(a+b=c, a+Pi*b) return? Should algsubs(x*y^2=c, x*y^4) return or ? 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 or .
For example, the monomial divides the monomial but not or .
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;
algsubs(u^2=v,f);
algsubs(1/u^2=1/v,f);
Hence, to substitute for both positive and negative powers.
algsubs(u^2=v,algsubs(1/u^2=1/v,f));
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 , and the value f it is replacing is the sum of terms , then the replacement is made if and only if each monomial divides and that is, the coefficients must all be the same. For example, algsubs( x^2+2*y=z, 3*x^2+6*y ) succeeds with but algsubs(x^2+2*y=z, 3*x^2+3*y) fails.
The algsubs command goes recursively through the expression . 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 .
Examples
Truncating polynomials
Ambiguous cases
See Also
applyrule, simplify, simplify/siderels, subs
Download Help Document