# product of functions

I just started using SageMath and I am trying to do something simple but I cannot figure it out.

I have a Gaussian function

mu, sigma, x, N = var('mu, sigma, x, N')
P(x) = 1/sqrt((2*pi*sigma^2))*exp(-(x-mu)^2/(2*sigma^2))


and I want to calculate the product of N such functions.

I tried

f = lambda x, N: prod([P for x in range(1, N)])
f(x, N)


and I got the error:

TypeError: unable to convert N to an integer


I works if I choose N to be some number, but I would like to get a symbolic expression output.

edit retag close merge delete

A symbolic product in SageMath is currently not implemented, but you could take a logarithm and use a symbolic sum.

( 2020-04-13 15:04:14 +0100 )edit
1

In fact it is! I opened

to make this more discoverable.

( 2020-04-16 09:04:35 +0100 )edit

Sort by ยป oldest newest most voted

In Sage, sum serves both for Python sums and for symbolic sums, but for products we have prod and product.

Declare an extra symbolic variable k, and instead of

f = lambda x, N: prod([P for x in range(1, N)])


use

f = lambda x, N: product(P, k, 1, N)


P(x) = 1/sqrt((2*pi*sigma^2))*exp(-((x-mu)/sigma)^2/2)

more