Python中的随机微积分库

15 投票
5 回答
4144 浏览
提问于 2025-04-15 15:09

我在找一个Python库,想用它来计算一些随机分析的东西,比如我定义的扩散过程的(条件)期望。我看过simpy(simpy.sourceforge.net),但感觉它不能满足我的需求。

这个是为了快速原型开发和实验用的。

在Java中,我曾经用过一个(现在已经不活跃了的)库,网址是http://martingale.berlios.de/Martingale.html,效果还不错。

这个问题本身并不难,但有很多繁琐的事情需要处理(比如高效的内存使用、变量减少技术等等)。

理想情况下,我希望能写出类似这样的代码(只是举个例子):

def my_diffusion(t, dt, past_values, world, **kwargs):
    W1, W2 = world.correlated_brownians_pair(correlation=kwargs['rho'])
    X = past_values[-1]
    sigma_1 = kwargs['sigma1']
    sigma_2 = kwargs['sigma2']
    dX = kwargs['mu'] * X * dt + sigma_1 * W1 * X * math.sqrt(dt) + sigma_2 * W2 * X * X * math.sqrt(dt)
    return X + dX

X = RandomProcess(diffusion=my_diffusion, x0 = 1.0)
print X.expectancy(T=252, dt = 1./252., N_simul= 50000, world=World(random_generator='sobol'), sigma1 = 0.3, sigma2 = 0.01, rho=-0.1)

有没有人知道除了在numpy中重新实现之外,还有其他的选择吗?

5 个回答

0

我认识一个人,他使用 Sundials 来解决随机的常微分方程(ODE)和偏微分方程(PDE)问题,不过我对这个库了解得不够多,所以不能确定它是否适合你的情况。这个库有Python的接口,可以在这里找到

1

我在Python中见过最接近这个的就是PyMC,它是一些马尔可夫链蒙特卡洛算法的实现。

1

你有没有看看 sage 呢?

撰写回答