python可以计算复杂积分吗_python中二重积分的正确计算

我试图用scipy计算一个二重积分。被积函数有点复杂,因为它包含一些概率分布,以加权x和y的每个值的可能性(就像一个混合模型)。以下代码的计算结果为负数,但它应被[0,1]绑定。另外,计算大约需要半个小时。在

我有两个问题。在

1)有没有更好的方法来计算这个积分?在

2)这个负值从何而来?对我来说,最大的问题是如何加快计算速度,因为我可以在我的代码中找到导致我以后自己负的错误。在from scipy import stats

from scipy.integrate import dblquad

import itertools

p= [list whose entries are each different stats.beta(a,b) distributions]

def integrand(x,y):

delta=x-y

marg=0

for distA,distB in itertools.permutations(p,2):

first=distA.pdf(x)

second=distB.pdf(y)

weight1=0

weight2=0

for distC in p:

if distC == distA:

continue

w1=distC.cdf(x)-distC.cdf(y)

if weight1 == 0:

weight1=w1

else:

weight1=weight1*w1

marg+=(first*weight1*second)

I=delta*marg

return I

expect=dblquad(integrand,0,1,lambda x: 0, lambda x: x)

这本质上是问两点之间的最大距离在分布向量中的期望值是多少。积分的极限是y∊[0,x]和x∊[0,1]。这给了我-.49,估计的积分误差在10e-10级,所以它不应该是由于积分方法。在

我已经和这件事斗争了一段时间了,感谢你的帮助。谢谢。在

编辑:更正了打字错误

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值