Ask Your Question
1

product of functions

asked 5 years ago

vaskunito gravatar image

updated 5 years ago

slelievre gravatar image

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.

Preview: (hide)

Comments

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

rburing gravatar imagerburing ( 5 years ago )
1

In fact it is! I opened

to make this more discoverable.

slelievre gravatar imageslelievre ( 5 years ago )

1 Answer

Sort by » oldest newest most voted
1

answered 5 years ago

slelievre gravatar image

updated 5 years ago

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)

Also, check your expression for P. Maybe you want this instead:

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

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 5 years ago

Seen: 848 times

Last updated: Apr 16 '20