Ask Your Question

Juan Simoes's profile - activity

2017-03-27 14:11:44 +0200 received badge  Notable Question (source)
2017-03-27 14:11:44 +0200 received badge  Popular Question (source)
2012-10-15 14:29:01 +0200 commented answer Probability space valued functions

It solved my problem, thank you very much!

2012-10-15 14:27:56 +0200 marked best answer Probability space valued functions

First off, the var('x') is not useful; the lambda functions will ignore that, I think.

Secondly, your first syntax was right; entropy was a property of the whole probability space. There isn't any room in the syntax for your variable, though, so this isn't possible in exactly this way.

Is this sufficient?

sage: S=[-1,0,1] 
sage: P = [(1,lambda x:x)]
sage: P.append((0,lambda x:1.-2.*x))
sage: P.append((-1,lambda x:x))
sage: Sp = lambda x: DiscreteProbabilitySpace(S,dict([(a,b(x)) for (a,b) in P ]))
sage: Sp(0)
Discrete probability space defined by {0: 1.00000000000000, 1: 0, -1: 0}
sage: Sp(0).entropy()
0.000000000000000
sage: Sp(.5).entropy()
1.00000000000000
sage: Sp(.3).entropy()
1.57095059445467

I assume that this one doesn't make sense since it's not actually a probability distribution - maybe we should look for that in this code...

sage: Sp(1).entropy()
4.53236014182719*I
2012-10-15 14:27:56 +0200 received badge  Scholar (source)
2012-10-15 14:27:51 +0200 received badge  Supporter (source)
2012-10-15 12:47:32 +0200 received badge  Editor (source)
2012-10-15 12:46:16 +0200 asked a question Probability space valued functions

I am trying to define a FiniteProbabilitySpace whose probabilities depend on a value x:

var('x')
S=[-1,0,1]
P={}
P[1] = lambda x: x
P[-1] = lambda x: x
P[0] = lambda x: 1.-2*x
Sp = DiscreteProbabilitySpace(S,P)

Then if I say Sp.entropy(), I get the result:

TypeError: bad operand type for unary -: 'function'

which seems logic, I did not determine x. But if I say Sp(0).entropy(), I get:

TypeError: Unable to convert x (='<function<lambda>at0xa65d2a8>') to real number.

I do not understand this. Is it possible to do what I want?

Thank you very much!