extract all coefficients of a multivariate polynomial involving commutative and anticommutative variables - Maple Programming Help

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Physics : Physics/Coefficients

Physics[Coefficients] - extract all coefficients of a multivariate polynomial involving commutative and anticommutative variables

Calling Sequence

Coefficients(p, x, N, onlynonzero)




algebraic expression, or relation between them, or a set or list of them



variable, can be a name, function, product, power, or a list of them



optional, default to all, can be an integer, or a range of integers (n..m), or any of the keywords leading, trailing, all; indicates whether to compute all the coefficients or some or only one



optional, can be true or false (default), to receive only the coefficients not equal to zero in the returned sequence



The Coefficients command extracts the coefficients of x in the polynomial p, where x and p can involve anticommutative variables. Coefficients is a one-command generalization of coeff, coeffs, lcoeff and tcoeff, that works with commutative and anticommutative variables in equal footing.


The first argument, p, can also be a relation between polynomials, or a set or list of them, in which case Coefficients maps itself over the elements of the relation, set or list. For example, if p is an equation, then Coefficients(p, x) returns the equation obtained by computing Coefficients(lhs(p), x) = Coefficients(rhs(p), x), where lhs(p) and rhs(p) respectively represent the left and right hand sides of p.


The second argument, x, can be a name, function, product, power, or a list of them. When x is a power, say as in a^n, Coefficients(p, x) returns the same as Coefficients(p, a, n), that is the coefficient of the nth power.


The third argument, N, is optional, and indicates whether to extract all the coefficients (default behavior when N is not given, this is as coeffs) or the one of the Nth power when N is an integer (this is how coeff works), or the leading or trailing coefficient (pass N as the corresponding word, this produces the equivalent of lcoeff and tcoeff results), or a sequence of coefficients when N is a range of integers. The case N = all is then equivalent to the range case N = lower_degree .. higher_degree.


Unlike coeff and coeffs, when x is a single variable and more than one coefficient is requested (for example, you call Coefficients with just two arguments, or with a third argument as a range), Coefficients returns the sequence of coefficients in ascending order, including those that are equal to 0. To receive only the non-zero coefficients use the optional argument onlynonzero.


When x is a product, say a * b, Coefficients(p, a * b, N) returns the equivalent of taking a * b as an atomic object, that is the same as seq(Coefficients(Coefficients(p, a, n), b, n), n in N). In all cases when N is omitted it is assumed equal to all. Note that when a and b are anticommutative, Coefficients(p, a*b) returns the same as - Coefficients(p, b*a); likely, Coefficients(a*b, a) = - Coefficients(b*a, a).


When x is a list, say [a, b], Coefficients(p, [a, b], N) returns the equivalent of recursively computing the coefficients with respect to each of the elements of the list, that is the same as op(map(Coefficients, [Coefficients(p, a, N)], b, N)). Note that when a and b are anticommutative, Coefficients(p, [a, b]) returns the same as - Coefficients(p, [b, a]); likely, Coefficients(a*b, [a, b]) = - Coefficients(b*a, [a, b]).


Related to extracting coefficients, to compute the Degree of an expression with respect to anticommutative variables use the PDEtools:-Library:-Degree command.



Setup(mathematicalnotation = true);



First set theta as an identifier to work with type/anticommutative variables (see Setup)

Setup(anticommutativepre = theta);

* Partial match of 'anticommutativepre' against keyword 'anticommutativeprefix'




a*theta[1]*theta[2] + b;



The following three input lines have the same meaning, returning a sequence with all the coefficients

Coefficients((3), theta[1]);



Coefficients((3), theta[1], all);



Coefficients((3), theta[1], 0..1);



When the third argument is an integer, Coefficients returns the coefficient of the corresponding power

Coefficients((3), theta[1], 0);



Coefficients((3), theta[1], 1);



Computing the coefficient or the 1st power of an anticommutative variable is the same as differentiating with respect to it

diff((3), theta[1]);



Coefficients((3), theta[2], 1);



diff((3), theta[2]);



The coefficient of a product: note the change in sign when you reverse the order of the anticommutative variables in the coefficient product-variable

Coefficients((3), theta[1] * theta[2]);



Coefficients((3), theta[2] * theta[1]);



The coefficients of a list of variables - note the zeros in the output

Coefficients((3), [theta[1], theta[2]]);



Coefficients((3), [theta[1], theta[2]], all);



To receive only the nonzero coefficients use the onlynonzero optional argument

Coefficients((3), [theta[1], theta[2]], onlynonzero);



The leading and trailing coefficients

Coefficients((3), [theta[1], theta[2]], leading);



Coefficients((3), [theta[2], theta[1]], trailing);



When the third argument, N, is an integer, and the second argument is a list, the coefficients are computed recursively;

Coefficients((3), [theta[1], theta[2]], 0);



When N is equal to 1, this is also equivalent to differentiation

Coefficients((3), [theta[1], theta[2]], 1);



diff((3), [theta[1], theta[2]]);



Reversing the order of the anticommutative variables in the list,

Coefficients((3), [theta[2], theta[1]], 1);



diff((3), [theta[2], theta[1]]);



When the variables are anticommutative, their square is zero,





Coefficients((3), [theta[1], theta[2]], 2);




See Also

coeff, coeffs, lcoeff, PDEtools:-Library:-Degree, Physics, Physics conventions, Physics examples, Physics Updates, Tensors - a complete guide, Mini-Course Computer Algebra for Physicists, product, relation, Setup, tcoeff, type/anticommutative



The Physics[Coefficients] command was introduced in Maple 16.


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