Documentation |
Definite and indefinite products
This functionality does not run in MATLAB.
product(f, i) product(f, i = a .. b) product(f, i = RootOf(p, <x>)) product(f, i in RootOf(p, <x>)) product(f, i in {x_{1}, x_{2}, …})
product(f, i) computes the indefinite product of f(i) with respect to i, i.e., a closed form g such that .
product(f, i = a..b) tries to find a closed form representation of the product .
product (f, i = RootOf(p, x)) computes the product of f(i) over the roots of the polynomial p.
product(f, i in { x_{1}, x_{2}, …}) computes the product .
product serves for simplifying symbolic products. It should not be used for multiplying a finite number of terms: if a and b are integers of type DOM_INT, the call _mult(f $ i = a..b) is more efficient than product(f, i = a..b).
product(f, i) computes the indefinite product of f with respect to i. This is an expression g such that .
It is implicitly assumed that i runs through integers only.
product(f, i = a..b) computes the definite product with i running from a to b. It is implicitly assumed that a ≤ b; it is an error if this is inconsistent.
a and b must not be numbers other than integers.
If b-a is an integer, the explicit product f(a) f(a + 1) … f(b) is returned if it has no more than 1000 factors.
product (f, i = RootOf(p, x)) computes the definite product with i running through the roots of the polynomial p in x according to their multiplicity, i.e., the number of factors is equal to the degree of p.
The calls product (f, i = RootOf(p, x)) and product (f, i in RootOf(p, x)) are equivalent.
The system returns a symbolic product call if it cannot compute a closed form representation of the product.
Each of the following two calls computes the product 1 2 3 4 5:
product(i, i = 1..5) = _mult(i $ i = 1..5)
However, using _mult is usually more efficient when the boundaries are integers of type DOM_INT.
There is a closed form of this definite product from 1 to n:
product(i, i = 1..n)
Since the upper boundary is a symbolic identifier, _mult cannot handle this product:
_mult(i $ i = 1..n)
The corresponding indefinite product is:
product(i, i)
The indefinite and the definite product of 2 i + 1 are:
product(2*i + 1, i)
product(2*i + 1, i = 1..n)
The boundaries may be symbolic expressions or as well:
product(i^2/(i^2 - 1), i = 2..infinity)
The system cannot find closed forms of the following two products and returns symbolic product calls:
delete f: product(f(i), i)
product((1 + 2^(-i)), i = 1..infinity)
An approximation can be computed numerically via float:
float(%)
Alternatively, you can call numeric::product directly. This is usually more efficient, since it skips the symbolic computations performed by product:
numeric::product((1 + 2^(-i)), i = 1..infinity)
Some products over the roots of a polynomial:
product(1 + 1/x, x = RootOf(x^2 - 5*x + 6))
product(r+c, r = RootOf(x^3 + a*x^2 + b*x + c, x))
The multiplicity of roots is taken into account:
product(x+2, x in RootOf(x^5))
MuPAD^{®} finds closed forms for products of rational expressions. In other cases, a symbolic call to product is returned:
product(sin(r), r = RootOf(x^2 - PI^2/4, x))
An approximation can be computed numerically via float:
float(%)
Some products over elements of a set:
product(x+2, x in {2,4,8})
product(a*x, x in {3, b, 5})
Identical objects appear only once in a set. Therefore, the second a in the following example has no effect on the result:
product(-x, x in {a,a,7,b})
f |
An arithmetical expression depending on i |
i |
The product index: an identifier or indexed indentifier |
a, b |
The boundaries: arithmetical expressions |
p |
A polynomial expression in x |
x |
Indeterminate |