我想要计算一个简单函数的50次跟自己的卷积。
函数就是 f[x_] = PDF[BernoulliDistribution[0.7], x] ,只有在两点上有值。
我用了DiscreteConvolve来解决问题。
我的算法如下:
f[x_] = PDF[BernoulliDistribution[0.7], x]
g[x_] = PDF[BernoulliDistribution[0.7], x]
convi[n_] := {Do[g[ x[i] ] = DiscreteConvolve[ f[x[i - 1]] , g[x[i - 1]] , x[i - 1] , x[i] ], {i, 1, n}], g[x[n]]}[[2]]
convi[50]
如果计算15次倒是没有问题,但是50次却一个通宵都跑不出来。
请问有什么思路可以优化吗?
或者能讨论一下为何效率如此低吗?(我朋友说用matlab一小会儿就能跑出来结果了)
(我知道答案就是PDF[BinomialDistribution[50, 0.7]],我知道可以用傅立叶变换等其他方式得到结果,但是老师说一定要用卷积才行)
感谢!!
函数就是 f[x_] = PDF[BernoulliDistribution[0.7], x] ,只有在两点上有值。
我用了DiscreteConvolve来解决问题。
我的算法如下:
f[x_] = PDF[BernoulliDistribution[0.7], x]
g[x_] = PDF[BernoulliDistribution[0.7], x]
convi[n_] := {Do[g[ x[i] ] = DiscreteConvolve[ f[x[i - 1]] , g[x[i - 1]] , x[i - 1] , x[i] ], {i, 1, n}], g[x[n]]}[[2]]
convi[50]
如果计算15次倒是没有问题,但是50次却一个通宵都跑不出来。
请问有什么思路可以优化吗?
或者能讨论一下为何效率如此低吗?(我朋友说用matlab一小会儿就能跑出来结果了)
(我知道答案就是PDF[BinomialDistribution[50, 0.7]],我知道可以用傅立叶变换等其他方式得到结果,但是老师说一定要用卷积才行)
感谢!!