## `numeric::indets` -- search for indeterminates

#### Introduction

`numeric::indets``(object)` returns a set of the indeterminates contained in `object`.

#### Call(s)

`numeric::indets(object)`

#### Parameters

`object` | - | an arbitrary MuPAD object

#### Returns

A set of indeterminates is returned, if the argument is an object of some basic data type of the kernel. The empty set is returned, if the object is from some library domain.

#### Related Functions

`indets`

#### Details

- This is an auxiliary routine used by `numeric::polyroots`, `numeric::quadrature`, `numeric::realroots`, `numeric::solve` to find indeterminates.
- It recursively searches the operands of `object` for indeterminates. In particular, the search is applied to the elements of lists, sets, arrays, tables, etc.
- Following objects are regarded as indeterminates: identifiers, indexed identifiers and the indeterminates of `DOM_POLY` objects. Also coefficients of such polynomials are searched for indeterminates.
- Following objects are not regarded as indeterminates: the numerical constants `PI` and `EULER` (of type `Type::ConstantIdents`) and zero operands of expressions and subexpressions (i.e., the function names in unevaluated function calls such as `f(2)`). Also integration variables in unevaluated calls of `int` and `numeric::quadrature` and summation indices in unevaluated calls of `sum` are not considered.
- An object of a library domain, characterized by

             domtype(extop(object, 0)) = DOM_DOMAIN,

  is not searched for indeterminates. The empty set is returned. Cf. example 3.

#### Example 1

Identifiers, indexed identifiers are regarded as indeterminates:

    >> numeric::indets([{a + b*PI}, sin(c + sqrt(2) + EULER),
                        table(1 = d - cos(e), 2 = f + 0.1*I),
                        array(1..2, [g, h]), F(i[2], i[2]),
                        D([1], G)(j[1]), k[3 + L[4]]])

                 {a, b, c, d, e, f, g, h, i[2], j[1], k[L[4] + 3]}

Both indeterminates as well as symbolic coefficients are considered in polynomials of domain type `DOM_POLY`:

    >> numeric::indets(poly(a[1]*x^2 + a[2]*x +a, [x, y]))

                               {a, x, y, a[1], a[2]}

#### Example 2

The zero operands of unevaluated function calls such as `f(..)` or `exp(..)` are not regarded as indeterminates:

    >> numeric::indets(f(a + exp(b) + PI + EULER))

                                      {a, b}

Integration variables and summation indices are not regarded as indeterminates:

    >> numeric::indets({int(f(x), x = a..b),
                        sum(f(i), i = c..infinity)})

                                     {a, b, c}

#### Example 3

Only objects of basic kernel types such as lists, sets, arrays, tables, expressions etc. are searched. This does not include matrices of domain type `matrix` or various polynomial types:

    >> numeric::indets(Dom::Matrix()([a,b])),
       numeric::indets(Dom::DistributedPolynomial()(x^2 +a*x))

                                      {}, {}

#### Changes

- new function

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