## `O` -- the domain of order terms (Landau symbols)

#### Introduction

`O``(f, x = x0)` represents the Landau symbol O(f, x -> x0).

#### Call(s)

`O(f <, x = x0, y = y0...>)`

#### Parameters

`f` | - | an arithmetical expression representing a function in `x`, `y` etc.
`x, y...` | - | the variables: identifiers
`x0, y0...` | - | the limit points: arithmetical expressions

#### Returns

an element of the domain `O`.

#### Related Functions

`asympt`, `limit`, `series`, `taylor`

#### Details

- Mathematically, for a function f in the variables (x, y, ..), the Landau symbol

      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`.

- With the equations `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.

- Presently, only finite limit points are admissible.
- Variables tending to 0 are not printed on the screen.
- The variables of an order term may be obtained with the function `indets`. The limit points may be queried with the function `O::points`.
- The arithmetical operations `+`, `-`, `*`, `/`, and `^` are overloaded for order terms.
- Automatic simplifications are currently restricted to polynomial expressions `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.

#### Example 1

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 )

#### Example 2

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)

#### Example 3

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:

#### Changes

- no changes

Do you have questions or comments?
Copyright © SciFace Software GmbH & Co. KG 2000