O
-- the domain of order terms (Landau
symbols)O
(f, x = x0)
represents the Landau symbol
O(f, x -> x0).
O(f <, x = x0, y = y0...>)
f |
- | an arithmetical expression
representing a function in x , y etc. |
x, y... |
- | the variables: identifiers |
x0, y0... |
- | the limit points: arithmetical expressions |
an element of the domain O
.
g := O(f, x = x0, y = y0, ...)is a function in these variables with the following property: there exists a constant c and a neighborhood of the limit point (x0, y0, ...) such that abs(g) <= c*abs(f) for all values (x, y, ...) in that neighborhood.
Typically, Landau symbols are used to denote the
order terms (``error terms'') of series expansions. Note, however, that
the series expansions produced by asympt
, series
, and taylor
represent order terms as a
part of the data structures Series::Puiseux
and Series::gseries
; they do
not use the domain O
.
x = x0
, y = y0
etc.,
f
is regarded as a function of the specified variables.
All other identifiers contained in f
are regarded as
constant parameters.
If no variables and limit points are specified, then all identifiers
in f
are used as variables, each tending to the default
limit point 0.
indets
. The limit
points may be queried with the function O::points
.+
, -
,
*
, /
, and ^
are overloaded for
order terms.f
. Univariate polynomial expressions are
reduced to the leading monomial of the expansion around the limit
point. In multivariate polynomial expressions, all terms are discarded
that are divisible by lower order terms. For non-polynomial
expressions, only integer factors are removed.For polynomial expressions, certain simplifications occur:
>> O(x^4 + 2*x^2), O(7*x^3), O(x, x = 1)
2 3 O(x ), O(x ), O(1, x = 1)
A zero limit point is not printed on the screen:
>> O(1), O(1, x = 1), O(x^2/(y + 1), x = 0, y = -1, z = PI)
/ 2 \ | x | O(1), O(1, x = 1), O| -----, z = PI, y = -1 | \ y + 1 /
The arithmetical operations are overloaded for order terms:
>> 7*O(x), O(x^2) + O(x^13), O(x^3) - O(x^3), O(x^2)^2 + O(x^4)
2 3 4 O(x), O(x ), O(x ), O(x )
For multivariate polynomial expression, higher order terms are discarded if they are divisible by lower order terms:
>> O(15*x*y^2 + 3*x^2*y + x^2*y^2)
2 2 O(5 x y + x y)
>> O(x + x^2*y) = O(x)*O(1 + x*y)
O(x) = O(x)
We demonstrate how to access the variables and the limit points of an order term:
>> a := O(x^2*y^2)
2 2 O(x y )
>> indets(a) = O::indets(a), O::points(a)
{x, y} = {x, y}, {x = 0, y = 0}
>> delete a: