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

Calling Sequence


Coefficients(p, x, N, onlynonzero)


Parameters


p



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

x



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

N



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

onlynonzero



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





Description


•

The Coefficients command extracts the coefficients of x in the polynomial p, where x and p can involve anticommutative variables. Coefficients is a onecommand 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 nonzero 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.



Examples


>

Setup(mathematicalnotation = true);

$\left[{\mathrm{mathematicalnotation}}{=}{\mathrm{true}}\right]$
 (1) 
First set theta as an identifier to work with type/anticommutative variables (see Setup)
>

Setup(anticommutativepre = theta);

$\mathrm{*\; Partial\; match\; of\; \text{'}}{}\mathrm{anticommutativepre}{}\mathrm{\text{'}\; against\; keyword\; \text{'}}{}\mathrm{anticommutativeprefix}{}\text{'}$
 
$\mathrm{\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_\_}$
 
$\left[{\mathrm{anticommutativeprefix}}{=}\left\{{\mathrm{\theta}}\right\}\right]$
 (2) 
>

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

${a}{}{{\mathrm{\theta}}}_{{1}}{}{{\mathrm{\theta}}}_{{2}}{+}{b}$
 (3) 
The following three input lines have the same meaning, returning a sequence with all the coefficients
>

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

${b}{,}{a}{}{{\mathrm{\theta}}}_{{2}}$
 (4) 
>

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

${b}{,}{a}{}{{\mathrm{\theta}}}_{{2}}$
 (5) 
>

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

${b}{,}{a}{}{{\mathrm{\theta}}}_{{2}}$
 (6) 
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);

${a}{}{{\mathrm{\theta}}}_{{2}}$
 (8) 
Computing the coefficient or the 1st power of an anticommutative variable is the same as differentiating with respect to it
${a}{}{{\mathrm{\theta}}}_{{2}}$
 (9) 
>

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

${}{a}{}{{\mathrm{\theta}}}_{{1}}$
 (10) 
${}{a}{}{{\mathrm{\theta}}}_{{1}}$
 (11) 
The coefficient of a product: note the change in sign when you reverse the order of the anticommutative variables in the coefficient productvariable
>

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]]);

${b}{,}{0}{,}{0}{,}{a}$
 (14) 
>

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

${b}{,}{0}{,}{0}{,}{a}$
 (15) 
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,
Hence,
>

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, MiniCourse Computer Algebra for Physicists, product, relation, Setup, tcoeff, type/anticommutative


Compatibility


•

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


