REDUCE

11.4 Asymptotic Commands

In expansions of polynomials involving variables that are known to be small, it is often desirable to throw away all powers of these variables beyond a certain point to avoid unnecessary computation. The command let may be used to do this. For example, if only powers of x up to x^7 are needed, the command

        let x^8 = 0;

will cause the system to delete all powers of x higher than 7.

CAUTION: This particular simplification works differently from most substitution mechanisms in REDUCE in that it is applied during polynomial manipulation rather than to the whole evaluated expression. Thus, with the above rule in effect, x^10/x^5 would give the result zero, since the numerator would simplify to zero. Similarly x^20/x^10 would give a Zero divisor error message, since both numerator and denominator would first simplify to zero.

The method just described is not adequate when expressions involve several variables having different degrees of smallness. In this case, it is necessary to supply an asymptotic weight to each variable and count up the total weight of each product in an expanded expression before deciding whether to keep the term or not. There are two associated commands in the system to permit this type of asymptotic constraint. The command weight takes a list of equations of the form

\(\langle \)kernel form\(\rangle \) = \(\langle \)number\(\rangle \)

where \(\langle \)number\(\rangle \) must be a positive integer (not just evaluate to a positive integer). This command assigns the weight \(\langle \)number\(\rangle \) to the relevant kernel form. A check is then made in all algebraic evaluations to see if the total weight of the term is greater than the weight level assigned to the calculation. If it is, the term is deleted. To compute the total weight of a product, the individual weights of each kernel form are multiplied by their corresponding powers and then added.

The weight level of the system is initially set to 1. The user may change this setting by the command

wtlevel \(\langle \)number\(\rangle \);

which sets \(\langle \)number\(\rangle \) as the new weight level of the system. \(\langle \)number\(\rangle \) must evaluate to a positive integer. wtlevel will also allow nil as an argument, in which case the current weight level is returned.


Hosted by Download REDUCE Powered by MathJax