在SymPy中能找到从U(0,1)到X的变换表达式吗?你知道吗
import sympy.stats as stat
import sympy as sp
x = sp.Symbol('x')
p = sp.Piecewise( (x + 1, (-1. <= x) & (x <= 0)), (1 - x, (x >= 0) & (x <=1 )), (0, True) )
X = stat.ContinuousRV(x, p, Interval(-1, 1))
cdf = stat.cdf(X)(x)
# Where to go from here?
stat.sample(X)
# TypeError: object of type 'ConditionSet' has no len()
sympy/stats中的示例/crv.py公司你知道吗
def sample(self):
172 """ A random realization from the distribution """
--> 173 icdf = self._inverse_cdf_expression()
174 return icdf(random.uniform(0, 1))
如何从自定义分段中找到反向cdf表达式? 我手拿:1-sqrt(2-2u)
有没有可能换个图书馆?你知道吗
一个问题是cdf是一个嵌套的分段对象。这些应该用
piecewise_fold
折叠起来。(旁白:你的p
公式有一个浮点数1.
,我用1
代替了它,使SymPy的生活更轻松。)现在
inv
是不幸的是,SymPy没有放弃第二个解决方案,这显然超出了间隔
(0, 1)
。但至少第一个是正确的。你知道吗您仍然不能将它用于
stat.sample
,因此任何采样都必须直接编码。除此之外还有两点:SymPy不是一个特别有效的采样工具,因为它是一个数字任务。在NumPy中,这种特定(三角形)分布的采样是一条直线:
SymPy还内置了Triangular,这并不是说它有助于采样。你知道吗
相关问题 更多 >
编程相关推荐