This is machine translation

Translated by Microsoft
Mouseover text to see original. Click the button below to return to the English verison of the page.

Note: This page has been translated by MathWorks. Please click here
To view all translated materals including this page, select Japan from the country navigator on the bottom of this page.


Numerical approximation of products

MuPAD® notebooks are not recommended. Use MATLAB® live scripts instead.

MATLAB live scripts support most MuPAD functionality, though there are some differences. For more information, see Convert MuPAD Notebooks to MATLAB Live Scripts.


numeric::product(f, i = a .. b)
numeric::product(f, i in RootOf(p, <x>))
numeric::product(f, i = RootOf(p, <x>))
numeric::product(f, i in {x1, x2, …})
numeric::product(f, i = {x1, x2, …})


numeric::product(f, i = a..b) computes a numerical approximation of .

numeric::product (f, i = RootOf(p,x)) computes a numerical approximation of the product of f over the roots of the polynomial p.

numeric::product(f, i in { x1, x2, …}) computes a numerical approximation of .

The call numeric::product(...) is equivalent to calling the float attribute of product via float ( hold( product )(...)), float ( freeze( product )(...)) or product::float(...).

If there are other symbolic parameters in f, apart from the variable i, a symbolic call to numeric::product is returned. Numerical expressions such as , etc. are accepted and converted to floating-point numbers.


For finite products, numeric::product just returns _mult ( float(f) $ i=a..b). Cf. Example 3.

The call numeric::product(f, i = { x1, x2, …}) computes numerical approximations of x[1], x[2] etc., substitutes these values into f(i) and multiplies the results.

The calls numeric::product(f, i in { x1, x2, …}) and numeric::product(f, i = { x1, x2, …}) are equivalent.

The call numeric::product (f, i in RootOf(p, x)) computes numerical approximations of all roots of p, substitutes these values into f(i) and multiplies the results. Cf. Example 2.

The calls numeric::product(f, i in RootOf(p, x)) and numeric::product(f, i = RootOf(p, x)) are equivalent.

Environment Interactions

The function is sensitive to the environment variable DIGITS, which determines the numerical working precision and influences the maximum number of steps used in the computation.


Example 1

We demonstrate some equivalent calls for numerical products:

numeric::product(1+1/k^2, k = 1..infinity),
float(hold(product)(1+1/k^2, k = 1..infinity)),
float(freeze(product)(1+1/k^2, k = 1..infinity)),
product::float(1+1/k^2, k = 1..infinity);

product fails to find a closed form for the following product:

product(1 - 1/4^k, k = 1..infinity);

float implicitly uses numeric::product to compute a numerical approximation:


The exact value of the following infinite product is :

numeric::product(exp((-1)^(k+1)*k^(-1/2)), k = 1..infinity)
 = float(exp((1-sqrt(2))*zeta(1/2)))

Example 2

We calculate an approximation of the product over the roots of a polynomial:

numeric::product(sin(r), r = RootOf(x^2 - PI^2/4, x))

If the polynomial expression contains additional indeterminates, a symbolic call to numeric::product is returned:

numeric::product(r+PI, r = RootOf(x^8 + c*x - PI^2/4, x))

Example 3

numeric::product can also be used to compute finite products:

numeric::product(1-1/k^2, k = 2..10^n) $ n in { 2, 3, 4 }

However, since numeric::product uses _mult internally anyway, it is more efficient to call _mult directly:

_mult(float(1-1/k^2) $ k = 2..10^n) $ n in { 2, 3, 4 }

Example 4

The following product is returned symbolically because it contains the additional indeterminate k:

numeric::product(1-1/n^k, n = 2..infinity)



An arithmetical expression depending on i


The product index: an identifier or indexed indentifier

a, b

integers or satisfying ab


A univariate polynomial expression in x



x1, x2, …

numerical expressions

Return Values

floating-point number or a symbolic expression of type numeric::product.


Infinite products are calculated by summing the series via numeric::sum.

numeric::product uses numeric::polyroots to calculate numerical approximations to the roots of a polynomials.

See Also

MuPAD Functions

Was this topic helpful?